法律声明

版权所有 杭州海康威视数字技术股份有限公司2021。保留一切权利。 本文档的任何部分，包括文字、图片、图形等均归属于杭州海康威视数字技术股份有限公司或其关联公司（以下简称“海康威视”）。未经书面许可，任何单位或个人不得以任何方式摘录、复制、翻译、修改本手册的全部或部分。除非另有约定，海康威视不对本手册提供任何明示或默示的声明或保证。

责任声明 在法律允许的最大范围内，本文档是“按照现状”提供，可能存在瑕疵或错误。海康威视不对本文档提供任何形式的明示或默示保证，包括但不限于适销性、质量满意度、适合特定目的、不侵犯第三方权利等保证；亦不对使用或是分发本文档导致的任何特殊、附带、偶然或间接的损害进行赔偿，包括但不限于商业利润损失、系统故障、数据或文档丢失产生的损失。


概述

设备网络SDK是基于设备私有网络通信协议开发的，为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务器、解码器、报警主机、网络存储等产品服务的配套模块，用于远程访问和控制设备软件的二次开发。

设备网络SDK主要功能

图像预览, 文件回放和下载, 云台控制, 布防/撤防, 语音对讲, 日志管理, 解码卡, 远程升级, 远程重启/关闭, 格式化硬盘, 参数配置(系统配置, 通道配置, 串口配置, 报警配置, 用户配置), 多路解码器, 智能设备功能和获取设备能力集等。

适用于但不仅限于以下产品型号：

\1. 编解码设备

DVR：DS-9100、DS-8100、DS-8000-S、DS-8800、DS-7800、DS-7300、DS-7200、DS-7100、DS-7000等系列，包括-ST、-SH、-SE、-SN、-RT、-RH、-XT等； NVR：DS-96000、DS-9600、DS-9500、DS-8600、DS-7900、DS-7800、DS-7700、DS-7600、DS-7100等系列，包括-I、-F、-K、-E、-H、-ST、-XT、-SN、-SE、-SNH、-SHT、-S、-SH、-RT等； XVR：DS-9000HQH-SH、DS-8100HQH(/HGH)-SH、DS-8000HQH-SH、DS-7300HQH(/HGH)-SH、DS-7200HQH(/HGH)-SH、DS-8800HQH(/HGH)(/HUH)-SH(/Fx)、DS-7900HQH(/HGH)(/HUH)-SH(/Fx)、DS-7800HQH(/HGH)(/HUH)-SH(/Ex/Fx)、DS-7100HGH-E1(/F1)等； HDVR(混合型DVR)：DS-9000、DS-8000-ST、DS-7600H-ST/-S系列等； 编码器：DS-6700、DS-6600、DS-6500(-JX)、DS-6100、DS-6401HFH系列视频服务器、DS-6000系列编/解码器等； 解码器：DS-6300D(-JX)、DS-6400HD(-JX/-T)、DS-6500D(-T)等

\2. 网络摄像机, 网络球机

网络摄像机：标清、高清、红外、热成像、鱼眼等，如DS-2CD7xx、DS-2CD71xx、DS-2CD72xx、DS-2CD8xx、DS-2CD81xx、DS-2CD82xx、DS-2CD84xx、DS-2CD83xx、DS-2CD11xx、DS-2CD12xx、DS-2CD13xx、DS-2CD20xx、DS-2CD21xx、DS-2CD22xx、DS-2CD23xx、DS-2CD24xx、DS-2CD25xx、DS-2CD26xx、DS-2CD27xx、DS-2CD28xx、DS-2CD29xx、DS-2CD2Axx、DS-2CD2Cxx、DS-2CD2Dxx、DS-2CD2Txx、DS-2CD2Qxx、DS-2CD30xx、DS-2CD31xx、DS-2CD32xx、DS-2CD33xx、DS-2CD34xx、DS-2CD39xx、DS-2CD3Txx、DS-2CD3Qxx、DS-2CD40xx、DS-2CD41xx、DS-2CD42xx、DS-2CD4Axx、DS-2CD62xx、DS-2CD63xx、DS-2CD64xx、DS-2CD65xx等 网络球机：标清、高清、红外等，如DS-2DF86xx、DS-2DF85xx、DS-2DF82xx、DS-2DF72xx、DS-2DF71xx、DS-2DE71xx、DS-2DE73xx、DS-2DE72xx、DS-2DM72xx、DS-2DM71xx、DS-2DF1-7xx、DS-2DF66xx、DS-2DF62xx、DS-2DF1-6xx、DS-2DE51xx、DS-2DE52xx、DS-2DE53xx、DS-2DM52xx、DS-2DF52xx、DS-2DC52xx、DS-2DC51xx、DS-2DF1-5xx、DS-2DE45xx、DS-2DE42xx、DS-2DE41xx、DS-2DF1-4xx、DS-2DM1-7xx、DS-2DM1-6xx、DS-2DM1-5xx等 一体化网络摄像机：DS-2ZCN3007、DS-2ZCN3006、DS-2DZ216MF、DS-2DZ2116、DS-2ZCN2006、DS-2ZCN2007、DS-2ZMN2007、DS-2ZMN2006等 智能交通摄像机(抓拍机)：(i)DS-2CD93xx、(i)DS-2CD92xx、(i)DS-2CD91xx、DS-2CD9xx、DS-TCG225、DS-TCG113等系列

\3. 智能设备

异常行为识别、ATM防护、自动跟踪、客流量统计、 人脸抓拍、智能交通事件、VQD视频质量诊断等

\4. 其他IP设备

CVR、报警主机、门禁、可视对接、LCD拼接屏、IP模块等

设备网络SDK包含网络通讯库、播放库等功能组件，我们提供Windows和Linux两个版本的SDK，各自所包含的组件如下：

Windows下设备网络SDK：

网络通讯库 | 外部接口 | HCNetSDK.h | 头文件 |
 |  | HCNetSDK.lib | LIB库文件 |
 |  | HCNetSDK.dll | DLL库文件 |
 | 核心组件 | HCCore.lib | LIB库文件 |
 |  | HCCore.dll | DLL库文件 |
组件库 | 设备配置核心组件 | HCCoreDevCfg.dll | DLL库文件 | HCNetSDKCom文件夹
 | 预览组件 | HCPreview.lib | LIB库文件 | HCNetSDKCom文件夹
 |  | HCPreview.dll | DLL库文件 | HCNetSDKCom文件夹
 | 回放组件 | HCPlayBack.dll | DLL库文件 | HCNetSDKCom文件夹
 | 语音组件 | HCVoiceTalk.dll | DLL库文件 | HCNetSDKCom文件夹
 | 报警组件 | HCAlarm.lib | LIB库文件 | HCNetSDKCom文件夹
 |  | HCAlarm.dll | DLL库文件 | HCNetSDKCom文件夹
 | 显示组件 | HCDisplay.dll | DLL库文件 | HCNetSDKCom文件夹
 | 行业应用管理配置组件 | HCIndustry.dll | DLL库文件 | HCNetSDKCom文件夹
 | 维护管理配置组件 | HCGeneralCfgMgr.lib | LIB库文件 | HCNetSDKCom文件夹
 |  | HCGeneralCfgMgr.dll | DLL库文件 | HCNetSDKCom文件夹
RTSP通讯库 |  | StreamTransClient.dll | DLL库文件 | HCNetSDKCom文件夹
转封装库 |  | SystemTransform.dll | DLL库文件 | HCNetSDKCom文件夹
字符转码库 |  | libiconv2.dll | DLL库文件 | HCNetSDKCom文件夹
模拟能力集 |  | LocalXml.zip | XML文件包 |
帧分析库 |  | AnalyzeData.dll | DLL库文件 | HCNetSDKCom文件夹
语音对讲库 |  | AudioIntercom.dll | DLL库文件 | HCNetSDKCom文件夹
播放库 | 核心库文件 | PlayM4.h、WindowsPlayM4.h | 头文件 |
 |  | PlayCtrl.lib | LIB库文件 |
 |  | PlayCtrl.dll | DLL库文件 |
 | 视频渲染库 | SuperRender.dll | DLL库文件 |
 |  | D3DX9_43.dll | DLL库文件 |
 | 音频渲染库 | AudioRender.dll | DLL库文件 |
 |  | OpenAL32.dll | DLL库文件 |
 | 小鹰眼库 | EagleEyeRender.dll | DLL库文件 |
 | GPU硬解码库 | HWDecode.dll | DLL库文件 |
 | 鱼眼库 | MP_Render.dll | DLL库文件 |
 | 图像增强库（只支持win32） | MP_VIE.dll | DLL库文件 |
 | 测温信息抓图库 | YUVProcess.dll | DLL库文件 |
 | 鱼眼和鹰眼依赖库 | D3DCompiler_43.dll | DLL库文件 |

Linux下设备网络SDK库：

网络通讯库 | 外部接口 | HCNetSDK.h | 头文件 |
 |  | libhcnetsdk.so | SO库文件 |
 | 核心组件 | libHCCore.so | SO库文件 |
组件库 | 设备配置核心组件 | libHCCoreDevCfg.so | SO库文件 | HCNetSDKCom文件夹
 | 预览组件 | libHCPreview.so | SO库文件 | HCNetSDKCom文件夹
 | 回放组件 | libHCPlayBack.so | SO库文件 | HCNetSDKCom文件夹
 | 语音组件 | libHCVoiceTalk.so | SO库文件 | HCNetSDKCom文件夹
 | 报警组件 | libHCAlarm.so | SO库文件 | HCNetSDKCom文件夹
 | 显示组件 | libHCDisplay.so | SO库文件 | HCNetSDKCom文件夹
 | 行业应用管理配置组件 | libHCIndustry.so | SO库文件 | HCNetSDKCom文件夹
 | 维护管理配置组件 | libHCGeneralCfgMgr.so | SO库文件 | HCNetSDKCom文件夹
hpr库 |  | libhpr.so | SO库文件 |
RTSP通讯库 |  | libStreamTransClient.so | SO库文件 | HCNetSDKCom文件夹
转封装库 |  | libSystemTransform.so | SO库文件 | HCNetSDKCom文件夹
字符转码库 |  | libiconv2.so | SO库文件 | HCNetSDKCom文件夹
帧分析库 |  | libanalyzedata.so | SO库文件 | HCNetSDKCom文件夹
OpenSSL库 | OpenSSL库 | libssl.so | so库文件 |
 | OpenSSL依赖库 | libcrypto.so | so库文件 |
播放库 | 核心库文件 | PlayM4.h、LinuxPlayM4.h | 头文件 |
 |  | libPlayCtrl.so | 头文件 |
 | 视频渲染库 | libSuperRender.so | SO库文件 |
 | 音频渲染库 | libAudioRender.so | SO库文件 |

本版本的设备网络SDK开发包中包含以上各个组件，HCNetSDK.dll、HCCore.dll必须加载，其他组件，用户可以根据需要选择其中的一部分或者全部，以下将对各个组件在SDK中的作用和使用条件分别说明。

网络通讯库：设备网络SDK的主体，主要用于网络客户端与各类产品之间的通讯交互，负责远程功能调控, 远程参数配置及码流数据的获取和处理等。设备网络 SDK V5.0针对产品应用业务进行细化，对之前版本的SDK的功能模块进行组件化，其中外部接口（HCNetSDK.dll）仍然保持和设备网络SDK V4.x版本保存一致(向下兼容)，其他单独的业务功能（预览、回放等）可以加载单独的模块组件，多个业务功能也可以组合使用。更新SDK时，HCNetSDK.dll、HCCore.dll以及HCNetSDKCom文件夹下的功能组件库文件都需要更新加载，且HCNetSDKCom文件夹名不能修改。

hpr库：网络通讯库的依赖库，Linux SDK使用时和网络通讯库同时加载。

RTSP通讯库：支持RTSP传输协议的网络库，当需要对支持RTSP协议的产品进行取流等操作时就必须加载该项组件。

转封装库：库的功能可以分为两种：一种是将标准码流转换成采用本公司封装格式的码流。当用户需要对支持RTSP协议的产品捕获采用本公司封装格式的码流数据时(即当设置NET_DVR_RealPlay_V40接口中的回调函数捕获数据或者调用NET_DVR_SetRealDataCallBack接口捕获数据时)必须加载该组件。另一种功能是能将标准码流转换成其他格式的封装，如3GPP, PS等。例如，当用户需要对支持RTSP协议的产品实时捕获指定封装格式的码流数据(对应的SDK接口为NET_DVR_SaveRealData)时必须加载该项组件。

字符转换库：电脑字符集和设备字符集不一致时，SDK内部需要进行字符编码转换，SDK默认使用libiconv库进行类型转换。如果用户不想使用libiconv编码库，可以调用NET_DVR_SetSDKLocalCfg(类型: NET_SDK_LOCAL_CFG_TYPE_BYTE_ENCODE)设置字符转码回调函数，将用户自己的字符编码接口告知SDK，然后SDK将使用用户提供的字符编码接口进行字符串处理。

模拟能力集：如果需要获取设备能力集（NET_DVR_GetDeviceAbility），可以调用NET_DVR_SetSDKLocalCfg启用模拟能力集，此时需要加载LocalXml.zip（要求和网络通讯库放在同一个目录下）。

语音对讲库：用于语音对讲时通过声卡采集数据并按照指定的编码格式编码码流或者解码播放音频码流数据（不带封装格式的码流数据）。V4.2.2.5及以前版本SDK均采用windows API实现相关功能。之后版本默认使用语音对讲库的方式，通过接口NET_DVR_SetSDKLocalCfg可以选择之前的windows API模式。OpenAL32.dll为依赖库，语音对讲库模式下必须加载。音频编解码目前仅Win32版本SDK支持。Linux系统下无语音对讲、语音广播、音频编解码功能，仅支持语音转发接口。

帧分析库：用于分析视音频帧数据，调用NET_DVR_SetESRealPlayCallBack、NET_DVR_SetPlayBackESCallBack设置裸码流回调函数等接口时，必须加载该库文件。

OpenSSL库：用于登录以及敏感信息加密，必须加载该库文件。

播放库：主要用于对实时码流数据进行解码显示(实现预览功能)和对录像文件进行回放解码等。用户如果需要在SDK内部进行对实时流和录像码流播放显示时(即NET_DVR_RealPlay_V40接口的第二个结构体参数的播放句柄设置成有效句柄时)必须加载该组件，而如果用户仅需要用网络通讯库捕获到数据后再外部自行处理就不需要加载该组件，这种情况下用户在外部自行解码将更灵活，可参见播放库SDK开发包里面的《播放器SDK编程指南》。


SDK支持的系统说明

Windows 32位设备网络SDK：

  • Windows 8/Windows 7/Vista/XP以及Windows Server 2012/2008/2003

Windows 64位设备网络SDK：

  • Windows 10/Windows 8/Windows 7以及Windows Server 2012/2008

Linux 32位设备网络SDK：

  • GCC版本要求大于等于4.1.2

  • 支持系统：CentOS 5.4、Redhat AS5.4 、ubuntu 9.10、Fedora12及以上版本

Linux 64位设备网络SDK：

  • GCC版本要求大于等于4.1.2

  • 支持系统：CentOS 5.4、Redhat AS5.4 、SUSE10及以上版本


C++开发指南

VS2013 C++集成方法简介

目录

  • VS2013 C++集成方法简介
    • 目录
    • 一、创建工程
      • 1.1 新建项目
      • 1.2 添加源文件
      • 1.3 添加头文件
      • 1.4 添加库文件（.lib文件）
      • 1.5 静态加载动态dll库
    • 二、编译设置
      • 2.1 输出目录及文件配置
      • 2.2 Debug和Realease编译配置
      • 2.3 Win32和Win64版本配置
    • 三、常见报错
      • 3.1 error C2664
      • 3.2 error C4996

一、创建工程

1.1 新建项目

文件--新建--项目，选择Visual C++ --win32--win32控制台应用程序，输入项目名称和地址，点击确定。单击下一步，在附加选项中选择空项目，点击完成。

1.2 添加源文件

点击解决方案资源管理器中源文件--添加--新建项--选择C++文件（.CPP），修改名称和位置，点击添加。

1.3 添加头文件

添加VS2013自带的头文件：解决方案资源管理器--外部依赖项--右键单机要添加的头文件--包括在项目中

添加自己定义的头文件：解决方案资源管理器--右键单机头文件--添加--新建项（选择头文件.h文件）/现有项

1.4 添加库文件（.lib文件）

右键项目名称--属性--链接器--常规--附加库目录，选择你lib文件所在的文件夹，然后在链接器--输入--附加依赖项中，填写你所需要的lib文件的文件名，例如HCNetSDK.lib。

1.5 静态加载动态dll库

使用设备网络SDK开发时，需要将【库文件】里的HCNetSDK.dll库文件和HCCore.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll等依赖库全部拷贝到exe可执行程序的同一目录下。【HCNetSDKCom文件夹】（包含里面的功能组件dll库文件）需要和HCNetSDK.dll、HCCore.dll一起加载，放在同一个目录下，且HCNetSDKCom文件夹名不能修改。

二、编译设置

2.1 输出目录及文件配置

右键项目名称--属性--配置属性--常规： 输出目录为你生成的文件存放的地址；中间目录是你编译时候产生的一些文件；目标文件名默认和项目名称相同，你可以在目标文件名中直接修改。

也可以直接在链接器--常规中修改生成的文件名和地址，例如.\bin\Realplay.exe, 即生成在bin目录下的Realplay的exe文件。

2.2 Debug和Realease编译配置

在属性页左上角配置里可以选择Debug和Release的版本，可以分别配置编译环境。

2.3 Win32和Win64版本配置

在属性页右上角配置管理器--活动解决方案平台--新建--键入或选择新平台可以选择你win32或者x64的版本，进行配置。 注意：不同版本使用的库文件不同，配置需要重新设置。

三、常见报错

3.1 error C2664

右键项目名称--属性--配置属性--常规--项目默认值--字符集--使用多字节字符集

3.2 error C4996

右键项目名--属性--C/C++--预处理器--预处理器定义--添加：_CRT_SECURE_NO_WARNINGS


Java开发指南

IDEA Java集成方法介绍

目录

  • IDEA Java集成方法介绍
    • 目录
    • 一、概述
    • 二、Windows系统集成SDK
      • 2.1 创建JNA工程
      • 2.2 结构体、接口重定义
      • 2.3 方法调用
    • 三、 Linux系统集成SDK
      • 3.1 动态库环境配置
      • 3.2 创建JNA工程
      • 3.3 结构体、接口重定义
      • 3.4 方法调用

一、概述

由于我司提供的设备网络SDK是封装的动态链接库（Windows的dll或者Linux的so），各种开发语言对接SDK，都是通过加载动态库链接，调用动态库中的接口实现功能模块对接，因此，设备网络SDK的对接不区分开发语言，而且对接的流程和对应的接口都是通用的，各种语言调用动态库的方式有所不同。本文重点介绍java开发语言如何对接设备网络SDK。

目前我司提供的java语言开发的demo是通过JNA的方式调用动态链接库中的接口，JNA(Java Native Access)框架是SUN公司主导开发的开源java框架，是建立在JNI的基础上的一个框架，JNA框架提供了一组java工具类用于在运行期间动态访问动态链接库（native library：如Window的dll、Linux的so），实现在java语言中调用C/C++语言封装的接口，java开发人员只需要在一个java接口中描述目标native library的函数与结构，JNA将自动实现Java接口到native function的映射，而不需要编写任何Native/JNI代码，大大降低了Java调用动态链接库的开发难度。相比于JNI的方式，JNA大大简化了调用本地方法的过程，使用很方便，基本上不需要脱离Java环境就可以完成。JNA调用C/C++的过程大致如下：

二、Windows系统集成SDK

我司提供的动态库目前有Windows系统的dll和Linux系统的so，两种系统加载动态库和JNA环境搭建有一些差别，但是，SDK接口的调用和功能模块的实现是一致的，下文中详细介绍Windows系统下创建工程集成SDK的流程。

2.1 创建JNA工程

本节中演示的Demo工程创建使用的是Intellij IDEA（版本：IntelliJ IDEA Community Edition 15.0.2），其他集成开发环境的工程创建过程也都是类似的，demo以java project为例进行说明，其他java工程的创建同样可以参考此流程。另外动态库的位数要与java环境的JDK的位数一致，演示demo选择64位的JDK_1.8。选用的是Windows 64位设备网络SDK开发包中动态库。

  1. 首先新建一个java工程，导入jna.jar包，demo中的jna.jar版本为3.0.9。本文中导入jar包的方式是离线的方式，根据需求也可以使用在线的方式导入jar包。由于jna版本的不同，后续在实现调用动态库的接口的过程中，会有一些差别。

  1. 自定义接口，自定义一个接口HCNetSDK，继承Library 或 StdCallLibrary。默认的是继承Library ，如果动态链接库里的函数是以stdcall方式输出的，那么就继承StdCallLibrary。接口内部需要一个公共静态常量：INSTANCE，通过这个常量，就可以获得这个接口的实例，从而使用接口的方法，也就是调用外部dll/so的函数。INSTANCE常量通过 Native.loadLibrary() API函数获得，（新版本的jna中，常量是通过Native.load()函数获取的）该函数有2个参数：

1）第一个参数是动态链接库dll/so的全路径名称（可以是绝对路径或者相对路径），本demo采用的是绝对路径。

2）第二个参数是自定义接口的Class类型。JNA通过这个Class类型，根据指定的.dll/.so文件，动态创建接口的实例。该实例由JNA通过反射自动生成。

// SDK接口说明,HCNetSDK.dll
public interface HCNetSDK extends StdCallLibrary {

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("E:\\DEMO_TEST\\JAVA_Demo\\JNA_TEST\\lib\\HCNetSDK.dll", HCNetSDK.class);

    // 动态库中结构体、接口描述

}

// 播放库函数声明,PlayCtrl.dll
public interface PlayCtrl extends StdCallLibrary{

    PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("E:\\DEMO_TEST\\JAVA_Demo\\JNA_TEST\\lib\\PlayCtrl.dll", PlayCtrl.class);
    // 播放库中结构体，接口描述
}

2.2 结构体、接口重定义

dll和so是C/C++语言函数的集合和容器，与Java中的接口概念吻合，所以JNA把dll文件和so文件看成一个个接口。在JNA中定义一个接口就是相当于了定义一个DLL/SO文件的描述文件，该接口代表了动态链接库中发布的所有函数，对于程序不需要的函数，可以不在接口中声明。接口中使用的函数必须与链接库中的函数原型保持一致，因为C/C++的类型与Java的类型是不一样的，动态库中的C/C++的数据类型必须转换成java对应类型，这就是类型映射(Type Mappings)。默认的类型映射可以参考JNA官网的类型映射表。

本文以设备初始化SDK--用户登录--用户注销--释放SDK过程为例，实现此过程所需的结构体、宏定义都需要重新编写，接口函数需要重新声明。

  1. 结构体转换

HCNetSDK.h中NET_DVR_USER_LOGIN_INFO结构体的定义：

//C++中NET_DVR_USER_LOGIN_INFO结构体定义
typedef struct{
    char sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN];
    BYTE byUseTransport;  // 是否启用能力集透传，0--不启用透传，默认，1--启用透传
    WORD wPort;
    char sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN];
    char sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN];
    fLoginResultCallBack cbLoginResult;
    void *pUser;
    BOOL bUseAsynLogin;
    BYTE byProxyType;   // 0:不使用代理，1：使用标准代理，2：使用EHome代理
    BYTE byUseUTCTime;  // 0-不进行转换，默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间，SDK完成平台本地时间与设备时区的转换
    BYTE byLoginMode;   // 0-Private 1-ISAPI 2-自适应
    BYTE byHttps;       // 0-不适用tls，1-使用tls 2-自适应
    LONG iProxyID;      // 代理服务器序号，添加代理服务器信息时，相对应的服务器数组下表值
    BYTE byVerifyMode;  // 认证方式，0-不认证，1-双向认证，2-单向认证；认证仅在使用TLS的时候生效;
    BYTE byRes3[119];
}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO;

// 宏定义
#define NET_DVR_DEV_ADDRESS_MAX_LEN 129
#define NET_DVR_LOGIN_USERNAME_MAX_LEN 64
#define NET_DVR_LOGIN_PASSWD_MAX_LEN 64

Java中没有结构体（struct）这种数据类型，JNA为我们提供了Structure这个类，只要继承该类，就可实现java结构体。NET_DVR_USER_LOGIN_INFO结构体需要在HCNetSDK接口中进行重定义，定义方式如下：

// SDK接口说明,HCNetSDK.dll
public interface HCNetSDK extends StdCallLibrary {

    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("E:\\DEMO_TEST\\JAVA_Demo\\JNA_TEST\\lib\\HCNetSDK.dll", HCNetSDK.class);

    // 动态库中结构体、接口描述
    public static class NET_DVR_USER_LOGIN_INFO extends Structure{
        public byte[] sDeviceAddress = new byte[NET_DVR_DEV_ADDRESS_MAX_LEN];
        public byte byUseTransport;
        public short wPort;
        public byte[] sUserName = new byte[NET_DVR_LOGIN_USERNAME_MAX_LEN];
        public byte[] sPassword = new byte[NET_DVR_LOGIN_PASSWD_MAX_LEN];
        public FLoginResultCallback cbLoginResult;
        public Pointer pUser;
        public boolean bUseAsynLogin;
        public byte byProxyType;   // 0:不使用代理，1：使用标准代理，2：使用EHome代理
        public byte byUseUTCTime;  // 0-不进行转换，默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间，SDK完成平台本地时间与设备时区的转换
        public byte byLoginMode;   // 0-Private 1-ISAPI 2-自适应
        public byte byHttps;       // 0-不适用tls，1-使用tls 2-自适应
        public int iProxyID;    // 代理服务器序号，添加代理服务器信息时，相对应的服务器数组下表值
        public byte byVerifyMode;  // 认证方式，0-不认证，1-双向认证，2-单向认证；认证仅在使用TLS的时候生效;
        public byte[] byRes2 = new byte[119];

        // 结构体中重写getFieldOrder方法，FieldOrder顺序要和结构体中定义的顺序保持一致
        @Override
        protected List getFieldOrder(){
            return  Arrays.asList("sDeviceAddress","byUseTransport","wPort","sUserName","sPassword",                                                               "cbLoginResult","pUser","bUseAsynLogin","byProxyType","byUseUTCTime",
                                  "byLoginMode","byHttps","iProxyID","byVerifyMode","byRes2");
        }

    }

    // 常量（宏）定义
    public static final int NET_DVR_DEV_ADDRESS_MAX_LEN = 129;
    public static final int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64;
    public static final int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64;
}
  1. 接口转换

HCNetSDK.h中接口定义：

/******************************** SDK接口函数声明 *********************************/

// 初始化SDK，调用其他SDK函数的前提
NET_DVR_API BOOL __stdcall NET_DVR_Init();

// 启用日志文件写入接口
NET_DVR_API BOOL __stdcall NET_DVR_SetLogToFile(DWORD nLogLevel ,char* strLogDir, BOOL bAutoDel);

// 返回最后操作的错误码
NET_DVR_API DWORD __stdcall NET_DVR_GetLastError();

// 释放SDK资源，在程序结束之前调用
NET_DVR_API BOOL __stdcall NET_DVR_Cleanup();

// 登录接口
NET_DVR_API LONG __stdcall NET_DVR_Login_V40(
    LPNET_DVR_USER_LOGIN_INFO pLoginInfo,
    LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo );

// 用户注销
NET_DVR_API BOOL __stdcall NET_DVR_Logout(LONG lUserID);

// 回调函数声明，登录状态回调函数
typedef void (CALLBACK *fLoginResultCallBack) (
    LONG lUserID, DWORD dwResult,
    LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo ,
    void* pUser );

在HCNetSDK接口中声明的方法要和开发包中HCNetSDK.h的头文件中声明的函数对应上，其中方法名、参数列表、返回值都要和HCNetSDK.h中的函数对应，上述HCNetSDK.h头文件的函数转换到java中声明，如下所示:

// SDK接口说明,HCNetSDK.dll
public interface HCNetSDK extends StdCallLibrary {

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("E:\\DEMO_TEST\\JAVA_Demo\\JNA_TEST\\lib\\HCNetSDK.dll", HCNetSDK.class);

    /*** API函数声明 ***/

    // 初始化SDK，调用其他SDK函数的前提
    boolean NET_DVR_Init();

    // 启用日志文件写入接口
    boolean NET_DVR_SetLogToFile(int bLogEnable , String  strLogDir, boolean bAutoDel);

    // 返回最后操作的错误码
    int NET_DVR_GetLastError();

    // 释放SDK资源，在程序结束之前调用
    boolean NET_DVR_Cleanup();

    // 登录接口
    int NET_DVR_Login_V40(NET_DVR_USER_LOGIN_INFO pLoginInfo, NET_DVR_DEVICEINFO_V40 lpDeviceInfo);

    // 用户注销
    boolean NET_DVR_Logout(int lUserID);

    // 回调函数申明
    public static interface FLoginResultCallback extends StdCallCallback{

    // 登录状态回调函数
    public int invoke(int lUserID,int dwResult,NET_DVR_DEVICEINFO_V30 lpDeviceinfo,Pointer pUser);
    }
}

2.3 方法调用

经过上述的操作，JNA工程已经创建完成，结构体和函数也在HCNetSDK接口类中进行了转换，后续就可以在主类中实现调用，本文以实现用户注册功能模块为例，说明接口调用的流程，其余功能模块的实现流程可以参考文档中介绍的接口调用流程。登录模块的接口调用流程如图所示。

主类中实现此流程的代码如下所示：

package com.test;
/**
 * @author test
 * @create 2021-02-07-15:53
 */
public class jna_test {
    // 接口的实例，通过接口实例调用外部dll/so的函数
    static HCNetSDK hCNetSDK = HCNetSDK.INSTANCE;

    // 用户登录返回句柄
    static int lUserID;
    int iErr = 0;

    public static void main(String[] args) throws InterruptedException {
        jna_test test01 = new jna_test();
        // 初始化
        boolean initSuc = hCNetSDK.NET_DVR_Init();
        if (initSuc != true) {
            System.out.println("初始化失败");
        }
        // 打印SDK日志
        hCNetSDK.NET_DVR_SetLogToFile(3, ".\\SDKLog\\", false);
        // 用户登陆操作
        test01.Login_V40("192.168.1.64",(short)8000,"admin","test12345");
        /*
        *实现SDK中其余功能模快
        */
        Thread.sleep(5000);
        //用户注销，释放SDK
        test01.Logout();
    }
    /**
     *
     * @param m_sDeviceIP 设备ip地址
     * @param wPort       端口号，设备网络SDK登录默认端口8000
     * @param m_sUsername 用户名
     * @param m_sPassword 密码
     */
    public void Login_V40(String m_sDeviceIP,short wPort,String m_sUsername,String m_sPassword) {
        /* 注册 */
        // 设备登录信息
        HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();

        // 设备信息
        HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();
        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
        m_strLoginInfo.wPort =wPort ;
        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
        // 是否异步登录：false- 否，true- 是
        m_strLoginInfo.bUseAsynLogin = false;
        // write()调用后数据才写入到内存中
        m_strLoginInfo.write();

        lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
        if (lUserID == -1) {
            System.out.println("登录失败，错误码为" + hCNetSDK.NET_DVR_GetLastError());
            return;
        } else {
            System.out.println("登录成功！");

            // read()后，结构体中才有对应的数据
            m_strDeviceInfo.read();
            return;
        }
    }
    //设备注销 SDK释放
    public void Logout() {
        if (lUserID>=0)
        {
            if (hCNetSDK.NET_DVR_Logout(lUserID) == false) {
                System.out.println("注销失败，错误码为" + hCNetSDK.NET_DVR_GetLastError());
            }
            System.out.println("注销成功");
            hCNetSDK.NET_DVR_Cleanup();
            return;
        }
        else{
            System.out.println("设备未登录");
            hCNetSDK.NET_DVR_Cleanup();
            return;
        }
    }
}

三、 Linux系统集成SDK

我司提供的动态库目前有Windows系统的dll和Linux系统的so，两种系统加载动态库和JNA环境搭建有一些差别，但是，SDK接口的调用和功能模块的实现是一致的，下文中详细介绍Linux系统如何创建工程集成SDK的流程。

3.1 动态库环境配置

Linux系统的动态库是so文件，动态库的环境配置和Windows系统不同，目前提供两种方式配置动态库环境：

（1）方法一

使用系统默认的加载库路径，在系统的/usr/lib文件中加入你Java工程所需要使用的so文件，然后将HCNetSDKCom文件夹下的组件库也复制到/usr/lib目录，HCNetSDKCom文件夹中的组件库不要随意更换路径进行替换。CentOS 64位需拷贝/usr/lib64下。

（2）方法二

通过配置LD_LIBRARY_PATH环境变量加载库文件，进入系统的/etc/profile目录，加上你自己的Java工程所需要的so文件的路径；/home/用户名/lib（例如：/home/jx/lib）路径下保存的是库文件，如下所示：

保存退出后调用命令使环境变量生效；

进入/etc/ld.so.conf，加上你自己的Java工程所需要的so文件的路径，如下所示；

保存退出后调用ldconfig命令使配置生效。

3.2 创建JNA工程

Linux系统下创建JNA工程操作流程和Windows系统一样，具体的细节部分有些差别，本节重点介绍与Windows系统下的不同点。

自定义一个接口HCNetSDK，前文Windows系统集成中，接口HCNetSDK继承StdCallLibrary，Linux系统下自定义接口HCNetSDK继承Library。Linux系统下so文件命名要有前缀lib。这是因为jna在找so文件的时候，要匹配前缀为lib的so文件。另外，Native.loadLibrary() 这个方法中第一个参数填写库文件的路径，只需要填上库文件的名称即可，不必加前缀lib。

// SDK接口说明,libhcnetsdk.so
public interface HCNetSDK extends Library {
    // 调用linux下面的so文件
    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("/home/Desktop/JavaDemoLinux64/lib/libhcnetsdk.so", HCNetSDK.class);

    // 动态库中结构体、接口描述

}

// 播放库函数声明,libPlayCtrl.so
public interface PlayCtrl extends Library{
    PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary("/home/Desktop/JavaDemoLinux64/lib/libPlayCtrl.so", PlayCtrl.class);

    //播放库中结构体，接口描述

}

3.3 结构体、接口重定义

结构体、宏定义、接口的转换都是和Windows系统下转换的方式一致，其中，回调函数的声明方式与Windows系统下有一些差别，回调函数的转换声明方式如下所示：

/******************************** SDK接口函数声明 *********************************/
// C++中回调函数声明
// 登录状态回调函数
typedef void (CALLBACK *fLoginResultCallBack) (LONG lUserID, DWORD dwResult, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo , void* pUser);

// 报警回调函数
typedef void (CALLBACK *MSGCallBack)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char* pAlarmInfo, DWORD dwBufLen, void* pUser);

// 报警回调函数
typedef BOOL (CALLBACK *MSGCallBack_V31)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char* pAlarmInfo, DWORD dwBufLen, void* pUser);

Windows系统下回调函数的转换声明都是要继承StdCallCallback，Linux系统下回调函数需要继承Callback。

// SDK接口说明,libhcnetsdk.so
public interface HCNetSDK extends Library {
    // 调用linux下面的so文件,注意，这里只要写hcnetsdk就可以了，不要写lib/hcnetsdk，也不要加后缀
    HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("hcnetsdk", HCNetSDK.class);

    // 动态库中结构体、接口描述

    // 回调函数申明
    public static interface FLoginResultCallback extends Callback{
        // 登录状态回调函数
        public int invoke(int lUserID,int dwResult,NET_DVR_DEVICEINFO_V30 lpDeviceinfo,Pointer pUser);
    }

    // 报警回调函数
    public static interface FMSGCallBack extends Callback {
        public void invoke(int lCommand, NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser);
    }

    // 报警回调函数
    public static interface FMSGCallBack_V31 extends Callback {
        public boolean invoke(int lCommand, NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser);
    }

}

3.4 方法调用

Linux和Window两个版本中接口调用的方式、功能实现的流程都是一致，具体的功能模块实现流程中，调用的接口会存在一些差别，本节重点介绍两种系统在对接时候接口调用差异。在SDK初始化之前，需要调用设置SDK初始化参数接口NET_DVR_SetSDKInitCfg，该接口主要是设置库文件的加载路径，详细的接口说明如下：

（1） HCNetSDKCom文件夹如果和libhcnetsdk.so、libhpr.so、libHCCore文件、可执行文件不在同级目录，或者加载失败，可以调用NET_DVR_SetSDKInitCfg（将enumType类型赋值为2，lpInBuff对应结构体NET_DVR_LOCAL_SDK_PATH）设置组件库所在路径。

（2）libcrypto.so、libcrypto.so.1.0.0和libssl.so是开源库，如果库文件加载失败，可以调用NET_DVR_SetSDKInitCfg（将enumType类型赋值为3，lpInBuff对应libcrypto.so所在的路径字符串）、NET_DVR_SetSDKInitCfg（将enumType类型赋值为4，lpInBuff对应libssl.so所在的路径字符串）指定下这些库文件加载路径。

初始化完成后，就可以调用登录模块的接口实现登陆，和Windows系统下接口流程类似，其余功能模块的实现流程可以参考文档中介绍的接口调用流程。

/******************************** 初始化 ********************************/
// 这里是库的绝对路径，请根据实际情况修改，注意改路径必须有访问权限
// 设置libcrypto.so所在路径
String strPath1 = "/home/test/lib/libcrypto.so";
HCNetSDK.BYTE_ARRAY ptrByteArray1 = new HCNetSDK.BYTE_ARRAY(256);
System.arraycopy(strPath1.getBytes(), 0, ptrByteArray1.byValue, 0, strPath1.length());
ptrByteArray1.write();
hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArray1.getPointer());
// 设置libssl.so所在路径
HCNetSDK.BYTE_ARRAY ptrByteArray2 = new HCNetSDK.BYTE_ARRAY(256);
String strPath2 = "/home/test/lib/libssl.so";
System.arraycopy(strPath2.getBytes(), 0, ptrByteArray2.byValue, 0, strPath2.length());
ptrByteArray2.write();
hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArray2.getPointer());
// 设置HCNetSDKCom组件库所在路径,注意只设置到HCNetSDKCom的上一层，我们SDK会从设置的路径下寻找HCNetSDKCom文件夹的
String strPathCom = "/home/test/lib/";
HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH();
System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length());
struComPath.write();
hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer());

// 初始化
boolean initSuc = hCNetSDK.NET_DVR_Init();
if (!initSuc) {
    System.out.println("初始化失败");
}
// 打印日志
hCNetSDK.NET_DVR_SetLogToFile(3, ".\\SDKLog\\", false);


CSharp开发指南

VS2013 C#集成方法介绍

目录

  • VS2013 C#集成方法介绍
    • 目录
    • 一、概述
    • 二、工程搭建
      • 2.1 创建winform工程
      • 2.2 接口、结构体重定义
      • 2.3 方法调用
    • 三、常见问题
      • 3.1 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
      • 3.2 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

一、概述

由于我司提供的设备网络SDK是封装的动态链接库（Windows的dll或者Linux的so），各种开发语言对接SDK，都是通过加载动态库链接，调用动态库中的接口实现功能模块对接，因此，设备网络SDK的对接不区分开发语言，而且对接的流程和对应的接口都是通用的，各种语言调用动态库的方式有所不同。本文重点介绍C#开发语言如何对接设备网络SDK。

二、工程搭建

我司提供的C#demo是winform工程，使用DllImport方式加载封装好的.dll动态库，从而调用动态库里封装好的方法。本文档使用Visual Studio 2013工具，使用.NET Framework 4.5集成环境来创建工程，其他版本的VS工具和.NET Farmework环境也是类似的，供参考。

2.1 创建winform工程

打开Visual Studio 2013工具，在文件--新建--项目，选择Visual C#，选择Windows 窗体应用程序。

选择左侧工具厢按钮，添加相应的控件，如button按钮、Textbox文本框等等，为后续执行SDK代码做好准备。

需要注意的是，程序编译环境位数于加载的SDK动态库位数需要保持一致。可以右键项目，在属性--生成--目标平台，选择对应的位数。如果是”Any CPU”则加载的库文件需要和操作系统位数一致（64位操作系统下加载64位库文件，32位操作系统下加载32位库文件），如果是“X86”则只能加载32位的SDK动态库，如果是“X64”则只能加载64位的SDK动态库。

本文以64位程序编译环境为例，选用的是Windows 64位设备网络SDK开发包中动态库。

2.2 接口、结构体重定义

我司提供的SDK，相关功能接口已经封装在动态链接库中，第三方程序对接，只需将动态库加载进工程之中，直接调用动态库事先定义的接口、结构体即可。C#语言提供了DllImport方法加载第三方动态库。

我们右键项目--添加--新建项，在Visual C#项选择类，创建一个HCNetSDK.cs的类。DllImport是System.Runtime.InteropServices命名空间下的一个属性类，因此要使用DllImport，必须在HCNetSDK.cs类中在先导入这个类“using System.Runtime.InteropServices;”。

之后可以在HCNetSDK.cs类中，添加程序所使用到的接口、结构体、宏定义等定义。因为C/C++的类型与C#的数据类型是不一样的，动态库中的C/C++的数据类型必须转换成C#对应类型。

如下所示是C#和C++定义的部分类型对应关系，供参考：

后面以设备初始化SDK--用户登录--用户注销--释放SDK过程为例，实现此过程所需的结构体、宏定义都需要重新编写，接口函数需要重新声明。

（1）接口转换：

HCNetSDK.h中接口定义：

/******************************** SDK接口函数声明 *********************************/

// 初始化SDK，调用其他SDK函数的前提
NET_DVR_API BOOL __stdcall NET_DVR_Init();

// 启用日志文件写入接口
NET_DVR_API BOOL __stdcall NET_DVR_SetLogToFile(DWORD nLogLevel ,char* strLogDir, BOOL bAutoDel);

// 返回最后操作的错误码
NET_DVR_API DWORD __stdcall NET_DVR_GetLastError();

// 释放SDK资源，在程序结束之前调用
NET_DVR_API BOOL __stdcall NET_DVR_Cleanup();

// 登录接口
NET_DVR_API LONG __stdcall NET_DVR_Login_V40(
    LPNET_DVR_USER_LOGIN_INFO pLoginInfo,
    LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo );

// 用户注销
NET_DVR_API BOOL __stdcall NET_DVR_Logout(LONG lUserID);

// 回调函数声明，登录状态回调函数
typedef void (CALLBACK *fLoginResultCallBack) (
    LONG lUserID, DWORD dwResult,
    LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo ,
    void* pUser );

在HCNetSDK.cs类中声明的方法要和开发包中HCNetSDK.h的头文件中声明的函数对应上，其中方法名、参数列表、返回值都要和HCNetSDK.h中的函数对应，上述HCNetSDK.h头文件的函数转换到C#中声明，如下所示:

using System;
using System.Runtime.InteropServices;

namespace LoginTest
{
    public class HCNetSDK
    {
        #region HCNetSDK.dll function definition
        // function definition
        /* The SDK initialization function */

        // 初始化SDK，调用其他SDK函数的前提
        [DllImport(@"HCNetSDK.dll")]
        public static extern bool NET_DVR_Init();

        // 启用日志文件写入接口
        [DllImport(@"HCNetSDK.dll")]
        public static extern bool NET_DVR_SetLogToFile(int nLogLevel, IntPtr strLogDir, bool bAutoDel);

        // 返回最后操作的错误码
        [DllImport(@"HCNetSDK.dll")]
        public static extern uint NET_DVR_GetLastError();

        // 释放SDK资源，在程序结束之前调用
        [DllImport(@"HCNetSDK.dll")]
        public static extern bool NET_DVR_Cleanup();

        // 登录接口
        [DllImport(@"HCNetSDK.dll")]
        public static extern int NET_DVR_Login_V40(ref NET_DVR_USER_LOGIN_INFO pLoginInfo, ref NET_DVR_DEVICEINFO_V40 lpDeviceInfo);

        // 用户注销
        [DllImport(@"HCNetSDK.dll")]
        public static extern bool NET_DVR_Logout(int lUserID);

        // 回调函数声明，登录状态回调函数
        public delegate void LoginResultCallBack(int lUserID, uint dwResult, ref NET_DVR_DEVICEINFO_V30 lpDeviceInfo, IntPtr pUser);
        #endregion
    }
}

（1）结构体转换：

以HCNetSDK.h中NET_DVR_USER_LOGIN_INFO结构体的定义为例：

// C++中NET_DVR_USER_LOGIN_INFO结构体定义
typedef struct{
    char sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN];
    BYTE byUseTransport;  // 是否启用能力集透传，0--不启用透传，默认，1--启用透传
    WORD wPort;
    char sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN];
    char sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN];
    fLoginResultCallBack cbLoginResult;
    void *pUser;
    BOOL bUseAsynLogin;
    BYTE byProxyType;   // 0:不使用代理，1：使用标准代理，2：使用EHome代理
    BYTE byUseUTCTime;  // 0-不进行转换，默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间，SDK完成平台本地时间与设备时区的转换
    BYTE byLoginMode;   // 0-Private 1-ISAPI 2-自适应
    BYTE byHttps;       // 0-不适用tls，1-使用tls 2-自适应
    LONG iProxyID;      // 代理服务器序号，添加代理服务器信息时，相对应的服务器数组下表值
    BYTE byVerifyMode;  // 认证方式，0-不认证，1-双向认证，2-单向认证；认证仅在使用TLS的时候生效;
    BYTE byRes3[119];
}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO;

// 宏定义
#define NET_DVR_DEV_ADDRESS_MAX_LEN 129
#define NET_DVR_LOGIN_USERNAME_MAX_LEN 64
#define NET_DVR_LOGIN_PASSWD_MAX_LEN 64

在HCNetSDK.cs类中声明的结构体、宏定义值等要和开发包中HCNetSDK.h的头文件中声明的方式对应上，其中字段顺序、所占字节大小等内容都需要和HCNetSDK.h中的声明方式对应，如下所示:

#region HCNetSDK.dll structure definition

[StructLayout(LayoutKind.Sequential)]
public struct NET_DVR_USER_LOGIN_INFO
{
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_DEV_ADDRESS_MAX_LEN, ArraySubType = UnmanagedType.I1)]
    public byte[] sDeviceAddress;
    public byte byUseTransport;
    public ushort wPort;
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_LOGIN_USERNAME_MAX_LEN, ArraySubType = UnmanagedType.I1)]
    public byte[] sUserName;
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = NET_DVR_LOGIN_PASSWD_MAX_LEN, ArraySubType = UnmanagedType.I1)]
    public byte[] sPassword;
    public LoginResultCallBack cbLoginResult;
    public IntPtr pUser;
    public bool bUseAsynLogin;
    public byte byProxyType; //0:不使用代理，1：使用标准代理，2：使用EHome代理
    public byte byUseUTCTime;    //0-不进行转换，默认,1-接口上输入输出全部使用UTC时间,SDK完成UTC时间与设备时区的转换,2-接口上输入输出全部使用平台本地时间，SDK完成平台本地时间与设备时区的转换
    public byte byLoginMode; //0-Private, 1-ISAPI, 2-自适应
    public byte byHttps;    //0-不适用tls，1-使用tls 2-自适应
    public uint iProxyID;    //代理服务器序号，添加代理服务器信息时，相对应的服务器数组下表值
    public byte byVerifyMode;  //认证方式，0-不认证，1-双向认证，2-单向认证；认证仅在使用TLS的时候生效;
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 119, ArraySubType = UnmanagedType.I1)]
    public byte[] byRes3;
}

public const int NET_DVR_DEV_ADDRESS_MAX_LEN = 129; //device address max length
public const int NET_DVR_LOGIN_USERNAME_MAX_LEN = 64;   //login username max length
public const int NET_DVR_LOGIN_PASSWD_MAX_LEN = 64; //login password max length

#endregion

2.3 方法调用

经过上述的操作，Winform工程已经创建完成，结构体和函数也在HCNetSDK.cs接口类中进行了转换，后续就可以在工程中实现调用，本文以实现用户注册功能模块为例，说明接口调用的流程，其余功能模块的实现流程可以参考开发包中《设备网络SDK使用手册》中详细的接口调用流程和接口参数说明。登录模块的接口调用流程如图所示：

双击之前2.1章节，添加的登录按钮，在对应按钮单击响应函数中添加注册接口的相关代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LoginTest
{
    public partial class Form1 : Form
    {
        private uint iLastErr = 0;
        private Int32 m_lUserID = -1;
        private HCNetSDK.NET_DVR_USER_LOGIN_INFO struLogInfo;
        private HCNetSDK.NET_DVR_DEVICEINFO_V40 DeviceInfo;
        private string str;

        HCNetSDK.LoginResultCallBack LoginCallBack = null;

        public Form1()
        {
            InitializeComponent();
            //初始化SDK
            bool m_bInitSDK = HCNetSDK.NET_DVR_Init();
            if (m_bInitSDK == false)
            {
                MessageBox.Show("NET_DVR_Init error!");
                return;
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBoxIP.Text == "" || textBoxPort.Text == "" ||
    textBoxUserName.Text == "" || textBoxPassword.Text == "")
            {
                MessageBox.Show("Please input IP, Port, User name and Password!");
                return;
            }
            if (m_lUserID < 0)
            {
                struLogInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();

                //从textBox文本框读取字符串，转成byte数组之后，赋值给结构体对象中对应字段
                //设备IP地址或者域名
                byte[] byIP = System.Text.Encoding.Default.GetBytes(textBoxIP.Text);
                struLogInfo.sDeviceAddress = new byte[129];
                byIP.CopyTo(struLogInfo.sDeviceAddress, 0);

                //设备用户名
                byte[] byUserName = System.Text.Encoding.Default.GetBytes(textBoxUserName.Text);
                struLogInfo.sUserName = new byte[64];
                byUserName.CopyTo(struLogInfo.sUserName, 0);

                //设备密码
                byte[] byPassword = System.Text.Encoding.Default.GetBytes(textBoxPassword.Text);
                struLogInfo.sPassword = new byte[64];
                byPassword.CopyTo(struLogInfo.sPassword, 0);

                struLogInfo.wPort = ushort.Parse(textBoxPort.Text);//设备服务端口号

                if (LoginCallBack == null)
                {
                    LoginCallBack = new HCNetSDK.LoginResultCallBack(cbLoginCallBack);//注册回调函数
                }
                struLogInfo.cbLoginResult = LoginCallBack;
                struLogInfo.bUseAsynLogin = false; //是否异步登录：0- 否，1- 是

                DeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();

                //登录设备 Login the device
                m_lUserID = HCNetSDK.NET_DVR_Login_V40(ref struLogInfo, ref DeviceInfo);
                if (m_lUserID < 0)
                {
                    iLastErr = HCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_Login_V40 failed, error code= " + iLastErr; //登录失败，输出错误号
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                    //登录成功
                    MessageBox.Show("Login Success!");
                    button1.Text = "登出";
                }

            }
            else
            {
                //注销登录 Logout the device
                if (!HCNetSDK.NET_DVR_Logout(m_lUserID))
                {
                    iLastErr = HCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_Logout failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }
                m_lUserID = -1;
                button1.Text = "登录";
            }
            return;
        }

        public void cbLoginCallBack(int lUserID, uint dwResult, ref HCNetSDK.NET_DVR_DEVICEINFO_V30  lpDeviceInfo, IntPtr pUser)
        {
            string strLoginCallBack = "登录设备，lUserID：" + lUserID + "，dwResult：" + dwResult;
        }

    }
}

最后，在程序执行前，把我们SDK中相关动态库拷贝到程序目录下。路径应为DllImport方法中指定的路径（可以使用相对路径或者绝对路径），确保路径正确，即可正常运行。

SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、HCNetSDKCom文件夹、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll、等文件均要加载到程序里面，【HCNetSDKCom文件夹】（包含里面的功能组件dll库文件）需要和HCNetSDK.dll、HCCore.dll一起加载，放在同一个目录下，且HCNetSDKCom文件夹名不能修改。

三、常见问题

3.1 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

报错截图如下：

这个错误就是程序的编译环境位数和实际加载的动态库位数不匹配导致的。可以右键项目，在属性-生成-目标平台，选择对应的位数。如果是”Any CPU”则加载的库文件需要和操作系统位数一致（64位操作系统下加载64位库文件，32位操作系统下加载32位库文件），如果是“X86”则只能加载32位的SDK动态库，如果是“X64”则只能加载64位的SDK动态库。

3.2 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

报错截图如下：

这个是因为DllImport加载动态库接口的时候，路径和实际路径不匹配导致的。

DllImport加载的时候，可以使用绝对路径或者相对路径，示例如下：

        [DllImport(@"..\HCNetSDK.dll")]
        public static extern bool NET_DVR_Init();

        [DllImport(@"F:\\LoginTest\LoginTest\bin\HCNetSDK.dll")]
        public static extern bool NET_DVR_Init();

如果使用相对路径的话，路径是相对于如下截图中，输出路径所对应的路径的，所以请检查下路径是否正确。


预览录像抓图模块流程

实时预览录像抓图

实时预览，从设备获取实时流数据和解码显示，支持TCP、UDP、MULTICAST网络传输模式，应用层协议支持私有协议和RTSP协议，码流类型可以选择主码流、子码流、第三码流等。

录像，本模块介绍的是客户端录像，从设备获取码流数据保存成录像，保存在PC本地磁盘中。

抓图，本模块介绍的是客户端抓图，设备抓图或者预览抓图，抓取JPEG或者BMP图片保存在PC本地磁盘。

目录

  • 实时预览录像抓图
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

图中虚线框部分的模块是与预览模块相关，必须在启动预览后才能调用，这些模块之间是并列的关系，各自完成相应的功能。实时预览支持TCP、UDP、MULTICAST网络传输模式，应用层协议支持私有协议和RTSP协议，码流类型可以选择主码流、子码流、第三码流等。设备码流类型详细介绍可以参考“帮助”->“常见问题解答”中的2.1。

  • 预览实时流解码有两种方式：
    ##方式一##：预览接口NET_DVR_RealPlay_V40中预览参数的播放窗口句柄（hPlayWnd）赋值为有效句柄，则由SDK自动实现解码显示功能。在初始化SDK和注册设备两步骤后，直接调用启动预览和停止预览接口即可。正常开启预览之后可以调用NET_DVR_RigisterDrawFun注册画图回调函数（仅Windows版本支持），回调获取窗口DC，然后用户可以自己在窗口表层绘图或者写字。如果预览的码流是音视频复合流，也可以调用声音预览控制相关接口实现打开或者关闭声音、客户端音量控制等功能，相关接口有：NET_DVR_OpenSound、NET_DVR_CloseSound、NET_DVR_OpenSoundShare、NET_DVR_CloseSoundShare、NET_DVR_Volume等。
    ##方式二##：预览接口NET_DVR_RealPlay_V40中预览参数的播放窗口句柄（hPlayWnd）可以设置为空值，直接设置回调函数，或者调用预览接口之后，通过NET_DVR_SetRealDataCallBack、NET_DVR_SetStandardDataCallBack设置回调函数，回调获取实时流数据（前两个接口设置的回调获取的是PS封装的码流，后者获取的是标准RTP封装的码流）之后用户后续自己处理，比如二进制流方式写入文件保存成录像或者调用播放库解码显示等操作。
  • 客户端录像，相关接口有：NET_DVR_SaveRealData（录像文件为PS封装格式）、NET_DVR_SaveRealData_V30（可以选择PS封装格式或者3GPP封装格式）、NET_DVR_StopSaveRealData。也可以设置实时流回调函数，回调获取码流数据之后，用户自己保存文件。
  • 强制I帧/刷新帧：由于解码必须从I帧开始，所以预览期间开启录像或者回调的码流解码之前可以调用NET_DVR_RemoteControl(命令:NET_DVR_MAKE_I_FRAME)强制设备相关码流生成一个I帧，以改善录像延时问题。码流编码类型为Smart264时则调用NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Streaming/channels//refreshFrame)刷新帧，强制设备生成一个深P帧。
  • 客户端抓图，有设备抓图和预览抓图两种方式：
    ##设备抓图##：SDK发送抓图命令给设备，设备抓取JPEG图片之后回传给SDK，需要设备支持且受到设备性能限制。相关接口：NET_DVR_CaptureJPEGPicture(直接存成图片文件)、NET_DVR_CaptureJPEGPicture_NEW(图片数据存放在缓冲区中)。
    ##预览抓图##：预览时播放库从解码码流里面抓取图片，抓图分辨率跟码流分辨率一致，必须先启动预览，支持BMP和JPEG抓图模式。预览实时流解码使用“方式一”时，相关接口：NET_DVR_SetCapturePictureMode(设置抓图模式)、NET_DVR_CapturePictureBlock_New(阻塞抓图且数据存放在缓冲区中)、NET_DVR_CapturePictureBlock(阻塞抓图且直接存成文件)、NET_DVR_CapturePicture(非阻塞抓图且直接存成文件)。预览实时流解码使用“方式二”时，需要用户自己调用播放库SDK相关抓图接口进行抓图，具体请参考播放库编程指南。
  • 异常消息回调：可以调用NET_DVR_SetExceptionCallBack_V30设置异常消息回调，预览非阻塞方式判断预览连接是否成功或者预览过程中网络异常、重连，可以回调获取对应的异常消息类型：EXCEPTION_PREVIEW、EXCEPTION_RECONNECT、PREVIEW_RECONNECTSUCCESS等。
  • 码流相关参数配置：
    ##压缩参数##：预览码流的分辨率、码率、码流类型（复合流、视频流）、音视频编码类型等由设备当前通道配置决定，可以调用NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG)获取和设置。
    ##图像参数##：视频上叠加的通道名称、OSD时间等显示使能、属性等，可以通过NET_DVR_GetDVRConfig(命令:NET_DVR_GET_PICCFG_V40)、NET_DVR_SetDVRConfig(命令:NET_DVR_SET_PICCFG_V40)获取和设置。
    ##字符叠加参数##：该功能跟画图回调函数不同，是配置的设备端的字符叠加参数，设备编码时叠加到码流图像里，预览、录像、抓图的图像里面都会叠加配置的字符，相关参数可以通过NET_DVR_GetDVRConfig(命令:NET_DVR_GET_SHOWSTRING_V30)、NET_DVR_SetDVRConfig(命令:NET_DVR_SET_SHOWSTRING_V30)获取和设置。
  • 实时预览时，设备通道预览连接数有限，不同的设备限制不尽相同，由设备性能决定，例如： DS-91xxHF-ST、DS-90xxHF-ST、DS-96xxN-ST、DS-80xxHF-ST、DS81xxHF/HE-ST、DS-73xxHF-ST系列，每台设备最多支持128路同时连接，单个通道最多支持路数也为128。 DS-81xxHF/HE/HC/HS/HL-S等系列设备每个通道最多支持6路同时连接，每台设备最多支持24路同时连接。 DS-90xxHF-S（H）、DS-81xxHF-S(H)混合型硬盘录像机每个通道最多支持6路同时连接，每台设备最多支持64路同时连接。 DS-2CD72xx、DS-2DF82xx等网络摄像机和网络球机的通道最多支持6路同时连接。

二、示例代码

下面示例代码为预览两种实时流解码方式的C++示例代码，仅供参考。

  1. 方式一(由SDK实现解码显示)
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include <time.h>
using namespace std;

typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW GetConsoleWindowAPI;

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
    char tempbuf[256] = {0};
    switch(dwType)
    {
    case EXCEPTION_RECONNECT:    //预览时重连
        printf("----------reconnect--------%d\n", time(NULL));
    break;
    default:
    break;
    }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  //设置异常消息回调函数
  NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

  //---------------------------------------
  // 获取控制台窗口句柄
  HMODULE hKernel32 = GetModuleHandle("kernel32");
  GetConsoleWindowAPI = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");

  //---------------------------------------
  // 注册设备
  LONG lUserID;

  //登录参数，包括设备地址、登录用户、密码等
  NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
  struLoginInfo.bUseAsynLogin = 0; //同步登录方式
  strcpy(struLoginInfo.sDeviceAddress, "10.13.35.229"); //设备IP地址
  struLoginInfo.wPort = 8000; //设备服务端口
  strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
  strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

  //设备信息, 输出参数
  NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

  lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
  if (lUserID < 0)
  {
      printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
      NET_DVR_Cleanup();
      return;
  }

  //---------------------------------------
  //启动预览并设置回调数据流
  LONG lRealPlayHandle;
  HWND hWnd = GetConsoleWindowAPI();     //获取窗口句柄
  NET_DVR_PREVIEWINFO struPlayInfo = {0};
  struPlayInfo.hPlayWnd = hWnd;         //需要SDK解码时句柄设为有效值，仅取流不解码时可设为空
  struPlayInfo.lChannel     = 1;       //预览通道号
  struPlayInfo.dwStreamType = 0;       //0-主码流，1-子码流，2-码流3，3-码流4，以此类推
  struPlayInfo.dwLinkMode   = 0;       //0- TCP方式，1- UDP方式，2- 多播方式，3- RTP方式，4-RTP/RTSP，5-RSTP/HTTP
  struPlayInfo.bBlocked     = 1;       //0- 非阻塞取流，1- 阻塞取流

  lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, NULL, NULL);
  if (lRealPlayHandle < 0)
  {
      printf("NET_DVR_RealPlay_V40 error\n");
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  Sleep(10000);
  //---------------------------------------
  //关闭预览
  NET_DVR_StopRealPlay(lRealPlayHandle);
  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();

  return;
}
  1. 方式二（由用户自行处理回调得到的码流数据，此处以软解显示为例，代码中带有PlayM4_的函数请参见播放库SDK开发包里面的《播放器SDK编程指南》）
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include "plaympeg4.h"
#include <time.h>
using namespace std;

typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW GetConsoleWindowAPI;

LONG lPort = -1; //全局的播放库port号

void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void* dwUser)
{
    HWND hWnd=GetConsoleWindowAPI();

    switch (dwDataType)
    {
    case NET_DVR_SYSHEAD: //系统头
        if (lPort >= 0)
        {
            break;  //该通道取流之前已经获取到句柄，后续接口不需要再调用
        }

        if (!PlayM4_GetPort(&lPort))  //获取播放库未使用的通道号
        {
            break;
        }
        //m_iPort = lPort; //第一次回调的是系统头，将获取的播放库port号赋值给全局port，下次回调数据时即使用此port号播放
        if (dwBufSize > 0)
        {
            if (!PlayM4_SetStreamOpenMode(lPort, STREAME_REALTIME))  //设置实时流播放模式
            {
                break;
            }

            if (!PlayM4_OpenStream(lPort, pBuffer, dwBufSize, 1024*1024)) //打开流接口
            {
                break;
            }

            if (!PlayM4_Play(lPort, hWnd)) //播放开始
            {
                break;
            }
        }
        break;
    case NET_DVR_STREAMDATA:   //码流数据
        if (dwBufSize > 0 && lPort != -1)
        {
            if (!PlayM4_InputData(lPort, pBuffer, dwBufSize))
            {
                break;
            }
        }
        break;
    default: //其他数据
        if (dwBufSize > 0 && lPort != -1)
        {
            if (!PlayM4_InputData(lPort, pBuffer, dwBufSize))
            {
                break;
            }
        }
        break;
    }
}

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
    char tempbuf[256] = {0};
    switch(dwType)
    {
    case EXCEPTION_RECONNECT:    //预览时重连
    printf("----------reconnect--------%d\n", time(NULL));
    break;
    default:
    break;
    }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  //设置异常消息回调函数
  NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

  //---------------------------------------
  // 获取控制台窗口句柄
  HMODULE hKernel32 = GetModuleHandle("kernel32");
  GetConsoleWindowAPI = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");

  //---------------------------------------
  // 注册设备
  LONG lUserID;

  //登录参数，包括设备地址、登录用户、密码等
  NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
  struLoginInfo.bUseAsynLogin = 0; //同步登录方式
  strcpy(struLoginInfo.sDeviceAddress, "10.13.35.229"); //设备IP地址
  struLoginInfo.wPort = 8000; //设备服务端口
  strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
  strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

  //设备信息, 输出参数
  NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

  lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
  if (lUserID < 0)
  {
      printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
      NET_DVR_Cleanup();
      return;
  }

  //---------------------------------------
  //启动预览并设置回调数据流
  LONG lRealPlayHandle;

  NET_DVR_PREVIEWINFO struPlayInfo = {0};
  struPlayInfo.hPlayWnd     = NULL;         //需要SDK解码时句柄设为有效值，仅取流不解码时可设为空
  struPlayInfo.lChannel     = 1;       //预览通道号
  struPlayInfo.dwStreamType = 0;       //0-主码流，1-子码流，2-码流3，3-码流4，以此类推
  struPlayInfo.dwLinkMode   = 0;       //0- TCP方式，1- UDP方式，2- 多播方式，3- RTP方式，4-RTP/RTSP，5-RSTP/HTTP
  struPlayInfo.bBlocked     = 1;       //0- 非阻塞取流，1- 阻塞取流

  lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, g_RealDataCallBack_V30, NULL);
  if (lRealPlayHandle < 0)
  {
      printf("NET_DVR_RealPlay_V40 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  Sleep(10000);
  //---------------------------------------
  //关闭预览
  NET_DVR_StopRealPlay(lRealPlayHandle);

  //释放播放库资源
  PlayM4_Stop(lPort);
  PlayM4_CloseStream(lPort);
  PlayM4_FreePort(lPort);

  //注销用户
  NET_DVR_Logout(lUserID);
  NET_DVR_Cleanup();

  return;
}


录像回放和下载模块流程

录像查找、回放和下载

录像文件查找、回放、下载接口，针对的是设备本地的录像文件，比如网络硬盘录像机的本地硬盘或者网络摄像机安装的SD卡里面的录像文件，而不是保存在PC上的录像文件。所以调用相关接口之前请先确认设备本地是否正常安装了存储设备、是否有录像。

目录

  • 录像查找、回放和下载
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

该流程介绍查找、回放、下载设备本地（比如网络硬盘录像机的本地硬盘、网络摄像机或者网络球机的SD卡）中的录像文件，不支持查找客户端PC上的录像文件。

  • 按文件回放或下载需要通过查找录像文件功能先获取文件名等信息，相关接口：NET_DVR_FindFile_V50、NET_DVR_FindNextFile_V50、NET_DVR_FindClose_V30等。
  • 文件名回放和下载：根据获取到的文件名进行回放或下载，相关接口：NET_DVR_PlayBackByName、NET_DVR_GetFileByName。在调用了回放或下载的接口后，还必须调用控制接口（NET_DVR_PlayBackControl_V40）的开始播放命令（NET_DVR_PLAYSTART）。
  • 按时间回放或下载文件：用户可以无需调用查找录像文件的相关接口，只需要指定开始和结束时间即可，相关接口：NET_DVR_PlayBackByTime_V50、NET_DVR_GetFileByTime_V40，将按照指定时间范围内最近的有录像的时间段开始回放或下载。如果指定时间段内没有录像文件，按时间回放或下载接口不会返回失败，回放数据或下载文件为0KB，因此用户可以在回放和下载之前通过查找录像文件的相关接口获取文件的开始和结束时间后，再按这个时间范围指定回放或下载接口中的时间参数，避免没有录像数据。 注意，调用回放和下载接口之后，必须调用控制接口NET_DVR_PlayBackControl_V40（命令：NET_DVR_PLAYSTART）控制开始回放或下载。按时间回放和下载不支持获取0~100中间的进度，也不支持设置进度。
  • 回放或下载文件时，在调用控制接口（NET_DVR_PlayBackControl_V40）的开始播放命令（NET_DVR_PLAYSTART）之前，可以调用控制接口（NET_DVR_PlayBackControl_V40）的设置转码类型的命令（NET_DVR_SET_TRANS_TYPE）。这样回放回调函数或下载获取的录像数据为转封装之后的数据，支持的转封装格式有：PS、TS、RTP。
  • 事件录像查找：设备端配置录像计划需要为事件录像，通过移动侦测 、报警输入、异常行为识别等报警事件联动录像，然后SDK才能调用接口根据事件查找录像文件，相关接口：NET_DVR_FindFileByEvent_V50、NET_DVR_FindNextEvent_V50、NET_DVR_FindClose_V30。
  • 智能后检索：Smart智能搜索，设备端不要求配置事件录像，定时录像、手动录像都可，录像之后设备根据智能报警信息从录像里面搜索报警相关录像数据，相关接口：NET_DVR_SmartSearch_V40、NET_DVR_SearchNextInfo、NET_DVR_StopSearch。

二、示例代码

下面示例代码为录像文件查找、下载、回放的C++示例代码，仅供参考。

  1. 查找录像文件并下载
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int saveRecordFile(int userId, char * srcfile, char * destfile)
{
    int bRes = 1;
    int hPlayback = 0;

    //按文件下载
    if ((hPlayback = NET_DVR_GetFileByName(userId, srcfile, destfile)) < 0)
    {
        printf("GetFileByName failed. error[%d]\n", NET_DVR_GetLastError());
        bRes = -1;
        return bRes;
    }

    //开始下载
    if (!NET_DVR_PlayBackControl_V40(hPlayback, NET_DVR_PLAYSTART, NULL, 0, NULL, NULL))
    {
        printf("play back control failed [%d]\n", NET_DVR_GetLastError());
        bRes = -1;
        return bRes;
    }

    //获取下载进度
    int nPos = 0;
    for (nPos = 0; nPos < 100 && nPos >= 0; nPos = NET_DVR_GetDownloadPos(hPlayback))
    {
        printf("Be downloading...%d %%\n", nPos);
        Sleep(5000);  //millisecond
    }
    printf("have got %d\n", nPos);

    if (nPos<0 || nPos>100)
    {
        printf("download err [%d]\n", NET_DVR_GetLastError());
        bRes = -1;
        return bRes;
    }
    else
    {
        return 0;
    }

    //停止下载，释放资源
    if (!NET_DVR_StopGetFile(hPlayback))
    {
        printf("failed to stop get file [%d]\n", NET_DVR_GetLastError());
        bRes = -1;
        return bRes;
    }
}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //查询条件
    NET_DVR_FILECOND_V50 struFileCond = { 0 };
    struFileCond.dwFileType = 0xFF;
    struFileCond.struStreamID.dwSize = sizeof(NET_DVR_STREAM_INFO);
    struFileCond.struStreamID.dwChannel = 33;
    struFileCond.byIsLocked = 0xFF;
    struFileCond.byNeedCard = 0;
    struFileCond.struStartTime.wYear = 2021;
    struFileCond.struStartTime.byMonth = 4;
    struFileCond.struStartTime.byDay = 7;
    struFileCond.struStartTime.byHour = 0;
    struFileCond.struStartTime.byMinute = 0;
    struFileCond.struStartTime.bySecond = 0;
    struFileCond.struStopTime.wYear = 2021;
    struFileCond.struStopTime.byMonth = 4;
    struFileCond.struStopTime.byDay = 7;
    struFileCond.struStopTime.byHour = 23;
    struFileCond.struStopTime.byMinute = 59;
    struFileCond.struStopTime.bySecond = 59;

    //---------------------------------------
    //查找录像文件
    int lFindHandle = NET_DVR_FindFile_V50(lUserID, &struFileCond);
    if (lFindHandle < 0)
    {
        printf("find file fail,last error %d\n", NET_DVR_GetLastError());
        return;
    }

    //逐个获取查询文件结果
    NET_DVR_FINDDATA_V50 struFileData;
    char sFileName[100] = { 0 }; //需要下载的文件
    int iFileNum = 0;
    while (true)
    {
        int result = NET_DVR_FindNextFile_V50(lFindHandle, &struFileData);
        if (result == NET_DVR_ISFINDING)
        {
            continue;
        }
        else if (result == NET_DVR_FILE_SUCCESS)
        {
            iFileNum++;
            printf("find file no: %d, file name:%s\n", iFileNum, struFileData.sFileName);
            if (iFileNum==1)
            {
                strcpy(sFileName, struFileData.sFileName);
            }
            continue;
        }
        else if (result == NET_DVR_FILE_NOFIND || result == NET_DVR_NOMOREFILE)
        {
            break;
        }
        else
        {
            printf("find file fail for illegal get file state");
            break;
        }
    }

    //停止查找，释放资源
    if (lFindHandle >= 0)
    {
        NET_DVR_FindClose_V30(lFindHandle);
    }

    /*按文件下载，本示例是下载查找到的第一个文件
    实际开发可以将查找的文件添加到列表里面，然后根据需要选择文件下载*/
    printf("download the file:%s\n", sFileName);
    char strSaveFile[256] = { 0 };
    sprintf(strSaveFile, "./%s.mp4", sFileName);
    saveRecordFile(lUserID, sFileName, strSaveFile);

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}
  1. 按时间回放录像文件
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

typedef HWND(WINAPI *PROCGETCONSOLEWINDOW)();
PROCGETCONSOLEWINDOW GetConsoleWindowAPI;

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 获取控制台窗口句柄
    HMODULE hKernel32 = GetModuleHandle((LPCWSTR)"kernel32");
    GetConsoleWindowAPI = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32, "GetConsoleWindow");

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    HWND hWnd = GetConsoleWindow();//获取窗口句柄

    NET_DVR_VOD_PARA_V50 struVodPara = { 0 };
    struVodPara.dwSize = sizeof(struVodPara);
    struVodPara.struIDInfo.dwSize = sizeof(NET_DVR_STREAM_INFO);
    struVodPara.struIDInfo.dwChannel = 33;
    struVodPara.hWnd = hWnd;

    struVodPara.struBeginTime.wYear = 2021;
    struVodPara.struBeginTime.byMonth = 4;
    struVodPara.struBeginTime.byDay = 7;
    struVodPara.struBeginTime.byHour = 9;
    struVodPara.struBeginTime.byMinute = 0;
    struVodPara.struBeginTime.bySecond = 0;
    struVodPara.struEndTime.wYear = 2021;
    struVodPara.struEndTime.byMonth = 4;
    struVodPara.struEndTime.byDay = 7;
    struVodPara.struEndTime.byHour = 10;
    struVodPara.struEndTime.byMinute = 0;
    struVodPara.struEndTime.bySecond = 0;

    //---------------------------------------
    //按时间回放
    int hPlayback;
    hPlayback = NET_DVR_PlayBackByTime_V50(lUserID, &struVodPara);
    if (hPlayback < 0)
    {
        printf("NET_DVR_PlayBackByTime_V40 fail,last error %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //---------------------------------------
    //开始
    if (!NET_DVR_PlayBackControl_V40(hPlayback, NET_DVR_PLAYSTART, NULL, 0, NULL, NULL))
    {
        printf("play back control failed [%d]\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(15000);  //millisecond

    //停止回放
    if (!NET_DVR_StopPlayBack(hPlayback))
    {
        printf("failed to stop file [%d]\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}
  1. 按时间下载录像文件
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  // 注册设备
  LONG lUserID;

  //登录参数，包括设备地址、登录用户、密码等
  NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
  struLoginInfo.bUseAsynLogin = 0; //同步登录方式
  strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
  struLoginInfo.wPort = 8000; //设备服务端口
  strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
  strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

  //设备信息, 输出参数
  NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

  lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
  if (lUserID < 0)
  {
      printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
      NET_DVR_Cleanup();
      return;
  }

  NET_DVR_PLAYCOND struDownloadCond={0};
  struDownloadCond.dwChannel=1;

  struDownloadCond.struStartTime.dwYear   = 2013;
  struDownloadCond.struStartTime.dwMonth  = 6;
  struDownloadCond.struStartTime.dwDay    = 14;
  struDownloadCond.struStartTime.dwHour   = 9;
  struDownloadCond.struStartTime.dwMinute = 50;
  struDownloadCond.struStartTime.dwSecond =0;
  struDownloadCond.struStopTime.dwYear    = 2013;
  struDownloadCond.struStopTime.dwMonth   = 6;
  struDownloadCond.struStopTime.dwDay     = 14;
  struDownloadCond.struStopTime.dwHour    = 10;
  struDownloadCond.struStopTime.dwMinute  = 7;
  struDownloadCond.struStopTime.dwSecond  = 0;

  //---------------------------------------
  //按时间下载
  int hPlayback;
  hPlayback = NET_DVR_GetFileByTime_V40(lUserID, "./test.mp4",&struDownloadCond);
  if(hPlayback < 0)
  {
      printf("NET_DVR_GetFileByTime_V40 fail,last error %d\n",NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //---------------------------------------
  //开始下载
  if(!NET_DVR_PlayBackControl_V40(hPlayback, NET_DVR_PLAYSTART, NULL, 0, NULL,NULL))
  {
      printf("Play back control failed [%d]\n",NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  int nPos = 0;
  for(nPos = 0; nPos < 100&&nPos>=0; nPos = NET_DVR_GetDownloadPos(hPlayback))
  {
      printf("Be downloading... %d %%\n",nPos);
      Sleep(5000);  //millisecond
  }
  if(!NET_DVR_StopGetFile(hPlayback))
  {
      printf("failed to stop get file [%d]\n",NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }
  if(nPos<0||nPos>100)
  {
      printf("download err [%d]\n",NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }
  printf("Be downloading... %d %%\n",nPos);

  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}


图片查找回放下载模块流程

图片查找、回放和下载

图片文件查找、回放、下载接口，针对的是设备本地的图片文件，比如网络硬盘录像机的本地硬盘或者网络摄像机安装的SD卡里面的图片，而不是保存在PC上的图片。所以调用相关接口之前请先确认设备本地是否正常安装了存储设备、是否存储有图片。

目录

  • 图片查找、回放和下载
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

该流程介绍查找、回放、下载设备本地（比如网络硬盘录像机的本地硬盘、网络摄像机或者网络球机的SD卡）中的图片文件，不支持查找客户端PC上的图片文件。

  • 查找图片文件，根据通道号、图片类型、开始时间、结束时间等搜索设备上存储的图片文件，返回图片名称、图片时间、图片大小等，相关接口：NET_DVR_FindPicture、NET_DVR_FindNextPicture_V50、NET_DVR_CloseFindPicture等。
  • 图片回放和下载是相同的接口，回放就是获取图片数据之后自己显示，下载就是获取图片数据之后直接保存成文件。相关接口：NET_DVR_GetPicture_V50（获取图片数据并存放在指定的内存，内存里面获取数据之后可以自己显示或者保存文件）、NET_DVR_GetPicture（接口里面直接传入保存图片的路径和文件名，下载图片直接保存到客户端本地磁盘）。

二、示例代码

下面示例代码为录像文件查找、下载、回放的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int doFindPicture(int lUserID, int iChannel, NET_DVR_FIND_PICTURE_V50 &strFileInfo)
{
    int iFileNum = 0;

    //图片查找条件
    NET_DVR_FIND_PICTURE_PARAM struFindParam = {0};
    struFindParam.dwSize = sizeof(struFindParam);
    struFindParam.lChannel = iChannel;//通道号
    struFindParam.byFileType = 0xff;//查找图片类型，0xff表示查找全部

    //获取当前系统时间
    SYSTEMTIME sysTime = { 0 };
    GetLocalTime(&sysTime);

    //查找开始时间
    struFindParam.struStartTime.dwYear = sysTime.wYear;
    struFindParam.struStartTime.dwMonth = sysTime.wMonth;
    struFindParam.struStartTime.dwDay = sysTime.wDay;
    struFindParam.struStartTime.dwHour = 0;
    struFindParam.struStartTime.dwMinute = 0;
    struFindParam.struStartTime.dwSecond = 0;
    //查找结束时间
    struFindParam.struStopTime.dwYear = sysTime.wYear;
    struFindParam.struStopTime.dwMonth = sysTime.wMonth;
    struFindParam.struStopTime.dwDay = sysTime.wDay;
    struFindParam.struStopTime.dwHour = 24;
    struFindParam.struStopTime.dwMinute = 0;
    struFindParam.struStopTime.dwSecond = 0;

    LONG lFindHanle = NET_DVR_FindPicture(lUserID, &struFindParam);
    if (lFindHanle < 0)
    {
        printf("NET_DVR_FindPicture failed, error code: %d\n", NET_DVR_GetLastError());
        return 0;
    }

    //逐个获取查找到的图片信息
    BOOL bFind = true;
    LONG bRet = -1;
    NET_DVR_FIND_PICTURE_V50 strFileInfoV50 = { 0 };
    while (bFind)
    {
        bRet = NET_DVR_FindNextPicture_V50(lFindHanle, &strFileInfoV50);

        switch (bRet)
        {
        case -1:
            printf("NET_DVR_FindNextPicture_V50 failed, error code: %d\n", NET_DVR_GetLastError());
            bFind = false;
            break;
        case 1000: //获取文件信息成功
            printf("Picture FileName: %s, Time:%04d-%02d-%02d %02d:%02d:%02d, FileSize: %d\n", strFileInfoV50.sFileName,
                strFileInfoV50.struTime.dwYear, strFileInfoV50.struTime.dwMonth, strFileInfoV50.struTime.dwDay,
                strFileInfoV50.struTime.dwHour, strFileInfoV50.struTime.dwMinute, strFileInfoV50.struTime.dwSecond,
                strFileInfoV50.dwFileSize);
            iFileNum++;
            continue;
        case 1002: //正在查找请等待
            Sleep(5);
            continue;
        case 1001://未查找到文件
            printf("No picture!\n");
            bFind = false;
            break;
        case 1003://没有更多的文件，查找结束
            printf("End, no more file!\n");
            bFind = false;
            break;
        case 1004://查找文件时异常
            printf("Exception!\n");
            bFind = false;
            break;
        }
    }

    //关闭图片查找，释放资源
    if (!NET_DVR_CloseFindPicture(lFindHanle))
    {
        printf("NET_DVR_CloseFindPicture failed, error code: %d\n", NET_DVR_GetLastError());
    }

    printf("Total number of pictures：%d\n", iFileNum);
    strFileInfo = *(&strFileInfoV50);
    return iFileNum;//返回查找到的最后一个图片文件信息
}

void doGetPicture(int lUserID, NET_DVR_FIND_PICTURE_V50 strFileInfo)
{
    NET_DVR_PIC_PARAM struPicParam = {0};
    struPicParam.pDVRFileName = strFileInfo.sFileName;
    struPicParam.dwBufLen = strFileInfo.dwFileSize;

    DWORD dwRetLen = 0;
    struPicParam.lpdwRetLen = &dwRetLen;//输出参数
    struPicParam.pSavedFileBuf = new char[strFileInfo.dwFileSize];
    memset(struPicParam.pSavedFileBuf, 0, strFileInfo.dwFileSize);

    if (!NET_DVR_GetPicture_V50(lUserID, &struPicParam))
    {
        printf("NET_DVR_GetPicture_V50 failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        //保存图片文件
        char cFilename[256] = { 0 };
        sprintf(cFilename, "%s\\%s.jpg", "C:\\Picture", strFileInfo.sFileName);

        FILE *fPic = fopen(cFilename, "wb");
        fwrite(struPicParam.pSavedFileBuf, dwRetLen, 1, fPic);
        fclose(fPic);
        fPic = NULL;
        printf("Get picture data and save to file: %s\n", cFilename);
    }
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.34.28"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abc12345"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    int iChannel = 3;//查找的设备通道号
    NET_DVR_FIND_PICTURE_V50 strFileInfoV50 = { 0 };
    int iFileNum = doFindPicture(lUserID, iChannel, *(&strFileInfoV50));//查找图片
    if (iFileNum > 0)
    {
        doGetPicture(lUserID, strFileInfoV50);//下载图片
    }

    //---------------------------------------
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


云台控制模块流程

云台控制

云台控制包括基本控制、预置点、巡航、花样扫描、3D定位等。

目录

  • 云台控制
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 云台基本功能，包括云台上下左右等方向控制、调焦聚焦光圈等调节、雨刷灯光加热器等辅助设备控制，相关接口：NET_DVR_PTZControl、NET_DVR_PTZControl_Other、NET_DVR_PTZControlWithSpeed、NET_DVR_PTZControlWithSpeed_Other。后缀带Other的接口在调用NET_DVR_Login_V40接口登录设备之后即可以调用，后缀不带Other的接口调用之前必须先调用NET_DVR_RealPlay_V40（需要传入正常有效的窗口句柄）。
  • 预置点功能，包括设置预置点、转到预置点、清除预置点等，相关接口：NET_DVR_PTZPreset、NET_DVR_PTZPreset_Other。后缀带Other的接口在调用NET_DVR_Login_V40接口登录设备之后即可以调用，后缀不带Other的接口调用之前必须先调用NET_DVR_RealPlay_V40（需要传入正常有效的窗口句柄）。
  • 巡航功能，包括设置巡航路径、开始和停止巡航控制等，相关接口：NET_DVR_PTZCruise、NET_DVR_PTZCruise_Other。后缀带Other的接口在调用NET_DVR_Login_V40接口登录设备之后即可以调用，后缀不带Other的接口调用之前必须先调用NET_DVR_RealPlay_V40（需要传入正常有效的窗口句柄）。
  • 花样扫描功能，包括开始记录花样扫描路径、停止记录花样扫描路径、开启运行花样扫描等，相关接口：NET_DVR_PTZTrack、NET_DVR_PTZTrack_Other。后缀带Other的接口在调用NET_DVR_Login_V40接口登录设备之后即可以调用，后缀不带Other的接口调用之前必须先调用NET_DVR_RealPlay_V40（需要传入正常有效的窗口句柄）。
  • 3D定位功能，相关接口：NET_DVR_PTZSelZoomIn、NET_DVR_PTZSelZoomIn_EX。后缀带Ex的接口在调用NET_DVR_Login_V40接口登录设备之后即可以调用，后缀不带_Ex的接口调用之前必须先调用NET_DVR_RealPlay_V40（需要传入正常有效的窗口句柄）。
  • 网络球机，也可以支持获取云台当前PTZ位置、设置云台转动到指定的PTZ位置，相关接口：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_PTZPOS)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_PTZPOS)。设备支持的PTZ范围，通过NET_DVR_GetDVRConfig(命令: NET_DVR_GET_PTZSCOPE)获取。

二、示例代码

下面示例代码为云台控制的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
#include <time.h>
using namespace std;

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
    char tempbuf[256] = {0};
    switch(dwType)
    {
    case EXCEPTION_RECONNECT:    //预览时重连
        printf("----------reconnect--------%d\n", time(NULL));
    break;
    default:
    break;
    }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  //设置异常消息回调函数
  NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

  //---------------------------------------
  // 注册设备
  LONG lUserID;

  //登录参数，包括设备地址、登录用户、密码等
  NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
  struLoginInfo.bUseAsynLogin = 0; //同步登录方式
  strcpy(struLoginInfo.sDeviceAddress, "10.13.35.229"); //设备IP地址
  struLoginInfo.wPort = 8000; //设备服务端口
  strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
  strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

  //设备信息, 输出参数
  NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

  lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
  if (lUserID < 0)
  {
      printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
      NET_DVR_Cleanup();
      return;
  }

  int iChannel = 1;//设备通道号
  DWORD dwPTZCommand = PAN_LEFT; //云台左转
  DWORD dwStop = 0; //开始转动
  if(!NET_DVR_PTZControl_Other(lUserID, iChannel, PAN_LEFT, dwStop))
  {
      printf("PAN_LEFT start failed, error code: %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }
  Sleep(5000); //云台控制接口下发命令之后是云台持续运动的，持续转动5秒之后再调用接口下发停止转动命令

  dwStop = 1; //停止转动
  if(!NET_DVR_PTZControl_Other(lUserID, iChannel, PAN_LEFT, dwStop))
  {
      printf("PAN_LEFT stop failed, error code: %d\n", NET_DVR_GetLastError());
  }

  //注销用户
  NET_DVR_Logout(lUserID);

  //释放SDK资源
  NET_DVR_Cleanup();

  return;
}


语音对讲转发广播模块

语音对讲、转发和广播

【语音对讲】

实现PC和设备之间双向语音通话功能，SDK底层自动实现了音频采集编码、发送和接收音频数据、音频解码播放的功能。需要PC本地有正常的音频输入和输出设备，比如麦克风、扬声器等设备必须正常工作。

【语音转发】

实现PC机与设备间之间的音频发送和接收，网络交互过程和语音对讲是一样的，而音频采集编码和解码播放由应用层自行实现。应用层对音频数据的采集编码和解码播放，需要根据设备当前语音编码格式来实现，因为编码格式未知或者不一致的话会导致不能正常编解码。

【语音广播】

将多台设备添加到一个广播组，PC端采集声音编码之后发送给广播组里面所有设备进行播放。语音采集编码和音频发送，SDK底层实现过程和语音对讲是一样的，只是广播只发送语音数据，不接收语音数据，同时向多台设备发送语音数据。添加到一个广播组的设备音频编码格式必须一致。

目录

  • 语音对讲、转发和广播
    • 目录
    • 一、语音对讲
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、语音转发
      • 2.1 接口调用流程
      • 2.2 示例代码
    • 三、语音广播
      • 3.1 接口调用流程
      • 3.2 示例代码

一、语音对讲

1.1 接口调用流程

语音对讲是指客户端与设备之间双向通话，SDK接口底层自动实现了客户端本地声卡输入的语音采集和编码、发送语音数据给设备以及接收设备发送过来的语音数据进行解码播放。

  • 在成功登录设备之后调用NET_DVR_StartVoiceCom_V30接口开启语音对讲即可，同时在该接口中用户可以通过设置回调函数获取当前设备发送或者PC机采集的数据（按需要选择回调编码后或者PCM数据）。语音对讲时，SDK自动采集本地声卡声音进行编码然后发送给设备，并且接收到设备发送过来的音频数据自动解码播放。
  • 语音对讲接口NET_DVR_StartVoiceCom_V30 不支持多线程调用。

1.2 示例代码

下面示例代码是语音对讲的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK fVoiceDataCallBack(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser)
{
    printf("receive voice data, %d\n", dwBufSize);
}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //语音对讲
    LONG lVoiceHanle;
    lVoiceHanle = NET_DVR_StartVoiceCom_V30(lUserID, 1,0, fVoiceDataCallBack, NULL);
    if (lVoiceHanle < 0)
    {
        printf("NET_DVR_StartVoiceCom_V30 error, %d!\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(5000);  //millisecond
    //关闭语音对讲
    if (!NET_DVR_StopVoiceCom(lVoiceHanle))
    {
        printf("NET_DVR_StopVoiceCom error, %d!\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、语音转发

2.1 接口调用流程

  • 语音转发功能实现PC机与设备间音频的发送和接收，音频采集编码和解码播放由应用层实现。采集编码和解码播放需要根据设备当前语音编码格式来实现，因为编码格式未知或者不一致的话会导致不能正常编解码。登录设备之后可以先调用NET_DVR_GetCurrentAudioCompress获取设备当前语音编码格式。
  • 语音转发功能，首先调用NET_DVR_StartVoiceCom_MR_V30接口启动与设备的语音转发（此时已建立与设备之间的长连接，等待发送数据）。
  • NET_DVR_StartVoiceCom_MR_V30接口设置的回调函数里面会返回由设备端采集编码之后发送过来的语音数据，接收到数据之后可以自己处理，播放声音需要先解码，解码可自行实现，也可采用SDK现有接口(Windows和Linux版本SDK接口不完全一样)：
    ##Win32##G711或者G722##：
    ----设备当前语音编码格式为G711：
    直接循环调用NET_DVR_DecodeG711Frame进行G711音频解码直到解码结束或者语音转发结束。
    ----设备当前语音编码格式为G722：
    1)NET_DVR_InitG722Decoder初始化音频解码，获取句柄；
    2)NET_DVR_DecodeG722Frame进行G722音频解码，可以循环调用接口直到解码结束或者语音转发结束。
    3)当结束所有的解码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG722Decoder释放解码音频资源。
    ##Win64或Linux##G711或者G722##：
    ----设备当前语音编码格式为G711：
    1)NET_DVR_InitG711Decoder初始化音频解码，获取句柄；
    2)NET_DVR_DecodeG711Frame进行G711音频解码，可以循环调用接口直到解码结束或者语音转发结束。
    3)当结束所有的解码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG711Decoder释放解码音频资源。
    ----设备当前语音编码格式为G722：
    1)NET_DVR_InitG722Decoder初始化音频解码，获取句柄；
    2)NET_DVR_DecodeG722Frame进行G722音频解码，可以循环调用接口直到解码结束或者语音转发结束。
    3)当结束所有的解码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG722Decoder释放解码音频资源。
    ##Windows或Linux##G726##：
    ----设备当前语音编码格式为G726(Windows和Linux版本SDK接口相同)：
    1)NET_DVR_InitG726Decoder初始化音频解码，获取句柄；
    2)NET_DVR_DecodeG726Frame进行G726音频解码，可以循环调用接口直到解码结束或者语音转发结束。
    3)当结束所有的解码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG726Decoder释放解码音频资源。
  • 语音转发是双向的，除了接收设备发送过来语音数据，也需要发送语音数据给设备，如果语音数据编码格式已经是和设备当前语音编码格式一致，那可以直接调用NET_DVR_VoiceComSendData接口发送给设备。否则需要自行转换编码格式，必须和设备当前语音编码格式一致，或者是采集原始PCM数据，调用SDK音频编码接口进行编码(Windows和Linux版本SDK接口不完全一样)：
    ##Win32##G711或者G722##：
    ----设备当前语音编码格式为G711：
    直接循环调用NET_DVR_EncodeG711Frame进行G711音频编码直到编码结束或者语音转发结束。
    ----设备当前语音编码格式为G722：
    1)NET_DVR_InitG722Encoder初始化音频编码，获取句柄；
    2)NET_DVR_EncodeG722Frame进行G722音频编码，可以循环调用接口直到编码结束或者语音转发结束。
    3)当结束所有的编码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG722Encoder释放编码音频资源。
    ##Win64或Linux##G711或者G722##：
    ----设备当前语音编码格式为G711
    1)NET_DVR_InitG711Encoder初始化音频编码，获取句柄；
    2)NET_DVR_EncodeG711Frame进行G711音频编码，可以循环调用接口直到编码结束或者语音转发结束。
    3)当结束所有的编码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG711Encoder释放编码音频资源。
    ----设备当前语音编码格式为G722：
    1)NET_DVR_InitG722Encoder初始化音频编码，获取句柄；
    2)NET_DVR_EncodeG722Frame进行G722音频编码，可以循环调用接口直到编码结束或者语音转发结束。
    3)当结束所有的编码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG722Encoder释放编码音频资源。
    ##Windows或Linux##G726##：
    ----设备当前语音编码格式为G726(Windows和Linux版本SDK接口相同)：
    1)NET_DVR_InitG726Encoder初始化音频编码，获取句柄；
    2)NET_DVR_EncodeG726Frame进行G726音频编码，可以循环调用接口直到编码结束或者语音转发结束。
    3)当结束所有的编码过程或者停止语音转发时，需要调用NET_DVR_ReleaseG726Encoder释放编码音频资源。
  • 停止语音转发时需要调用NET_DVR_StopVoiceCom接口结束与设备的语音转发连接，释放连接资源。

2.2 示例代码

下面示例代码是语音转发和语音编解码的C++示例代码，仅供参考。

  1. 语音转发（G722编码类型，Windows版本）
include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

#define BUF_SIZE 1280
#define BUF_OUTSIZE 80

void CALLBACK fVoiceDataCallBack(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser)
{
    //此处的音频数据是由设备发送的编码后数据，可以二进制方式保存文件，也可以解码播放

}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //语音转发
    LONG lVoiceHanle;
    lVoiceHanle = NET_DVR_StartVoiceCom_MR_V30(lUserID, 1, fVoiceDataCallBack, NULL);
    if (lVoiceHanle < 0)
    {
        printf("NET_DVR_StartVoiceCom_MR_V30 error, %d!\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //保存PCM原始音频数据的文件，音频为G722编码时，音频数据的采样频率为16000，16位采样且是单通道的。
    FILE* m_hStreamFile = fopen("test.pcm", "rb+");
    if (NULL == m_hStreamFile)
    {
        return;
    }

    BYTE pBuf[BUF_SIZE];
    BYTE pOutBuf[BUF_OUTSIZE];

    BOOL bBufFull = FALSE;
    DWORD dwSize = BUF_SIZE;
    DWORD dwDataLen = 0;

    void*   m_pEncoder;
    m_pEncoder = NET_DVR_InitG722Encoder();

    while(1)
    {
        if(!bBufFull)
        {
            //每次读取1280字节
            dwDataLen = fread(pBuf, 1, dwSize, m_hStreamFile);
            if (dwDataLen == 0)
            {
                //File end;
                break;
            }

            else
            {
                //PCM数据输入，编码成G722
                if(!NET_DVR_EncodeG722Frame(m_pEncoder, (BYTE*)pBuf, (BYTE*)pOutBuf))
                {
                    int i=NET_DVR_GetLastError();
                }
                if(pOutBuf !=NULL)
                {
                    //发送G722音频数据给设备
                    NET_DVR_VoiceComSendData(lVoiceHanle, (char*)pOutBuf, 80);
                }
                Sleep(20);  //millisecond
            }
        }
        else
        {
            break;
        }
    }

    if(m_pEncoder != NULL)
    {
        //释放编码资源
        NET_DVR_ReleaseG722Encoder(m_pEncoder);
    }

    Sleep(5000);  //millisecond
    //关闭语音转发
    if (!NET_DVR_StopVoiceCom(lVoiceHanle))
    {
        printf("NET_DVR_StopVoiceCom error, %d!\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}
  1. Linux版本G722音频编解码
void Test_VoiceTalk_DecEncG722()
{
    printf("Test_VoiceTalk_DecEncG722\n");

    /**************Encode Audio in G.722 Mode**************/
    LPVOID hEncInstance = 0;
    NET_DVR_AUDIOENC_INFO info_param;
    int blockcount= 0;

    hEncInstance = NET_DVR_InitG722Encoder(&info_param); //初始化G722编码
    if ((long)hEncInstance == -1)
    {
        printf("NET_DVR_InitG722Encoder fail,err %d!\n", NET_DVR_GetLastError());
        return;
    }

    NET_DVR_AUDIOENC_PROCESS_PARAM  enc_proc_param;
    FILE                *infile;
    FILE                *outfile;
    char * infile_path = "tst_16k_ch_fmale.wav";
    char * outfile_path = "temp.g722";
    const unsigned int  AUDIO_CODEC_BUF_SIZE = 8192;
    const unsigned int HIK_CODEC722_IN_SAMPLES = 320;
    const unsigned int HIK_CODEC722_OUT_BITS = 160;
    const unsigned int AUDIO_DEC_DATA_SIZE = 2048;
    short encode_input[2048];  //20ms
    unsigned char encoded_data[2048];

    infile=fopen(infile_path,"rb");
    outfile=fopen(outfile_path,"wb");
    if(infile == NULL)
    {
    printf("infile open error.");
    return ;
    }
    if(outfile == NULL)
    {
    printf("outfile open error.");
    return ;
    }

    enc_proc_param.in_buf   = (unsigned char *)encode_input;  //输入数据缓冲区，存放编码前PCM原始音频数据
    enc_proc_param.out_buf  = (unsigned char *)encoded_data;  //输出数据缓冲区，存放编码后音频数据

    while (1)
   {
        int encode_samples = fread((short *)enc_proc_param.in_buf,1,info_param.in_frame_size,infile);
        if (encode_samples < 640)
        {
            fclose(infile);
            fclose(outfile);
            break;
        }
        blockcount++;
        //PCM数据输入，编码成G722
        BOOL ret = NET_DVR_EncodeG722Frame(hEncInstance, &enc_proc_param);
        if (ret != 1)
        {
            exit(-1);
        }

        fwrite(enc_proc_param.out_buf,sizeof(unsigned char),enc_proc_param.out_frame_size,outfile);
        printf("g722 Enc frame %d \n", blockcount);
    }

    //释放G722编码资源
    NET_DVR_ReleaseG722Encoder(hEncInstance);

   /**************Decode Audio Data for G.722 Encoding**************/
    LPVOID hDecInstance = 0;
    hDecInstance = NET_DVR_InitG722Decoder();//初始化G722解码
    if (hDecInstance == 0)
    {
        printf("NET_DVR_InitG722Decoder fail,err %d!\n", NET_DVR_GetLastError());
        return;
    }

    NET_DVR_AUDIODEC_PROCESS_PARAM  dec_proc_param;
    char * infile_path2 = "temp.g722";
    char * outfile_path2 = "g722_ret.pcm";
    unsigned char decode_input[2048];
    short decode_data[2048];
    infile=fopen(infile_path2,"rb");
    outfile=fopen(outfile_path2,"wb");
    if(infile == NULL)
    {
        printf("infile open error.");
        return ;
    }
    if(outfile == NULL)
    {
        printf("outfile open error.");
        return ;
    }
    dec_proc_param.in_buf  = (unsigned char *)decode_input;
    dec_proc_param.out_buf  = (unsigned char *)decode_data;
    dec_proc_param.reserved[0] = 0;
    dec_proc_param.in_data_size = 0;
    int decode_samples = fread(dec_proc_param.in_buf, sizeof(char), AUDIO_DEC_DATA_SIZE,infile);
    dec_proc_param.in_data_size += decode_samples;
    blockcount= 0;
    while  (1)
    {
        if (decode_samples == 0){
            fclose(infile);
            fclose(outfile);
             break;
        }

        //G722音频解码成PCM
        BOOL ret = NET_DVR_DecodeG722Frame(hDecInstance ,&dec_proc_param);

        if (ret == 1)
        {
            //dec_proc_param->out_buf=output;
            fwrite(dec_proc_param.out_buf,sizeof(unsigned char),dec_proc_param.out_frame_size,outfile);
            blockcount++;
            printf("g722 Dec frame %d \n", blockcount);

            dec_proc_param.in_data_size = dec_proc_param.in_data_size - dec_proc_param.proc_data_size;
            memmove(dec_proc_param.in_buf, dec_proc_param.in_buf + dec_proc_param.proc_data_size, dec_proc_param.in_data_size);//

            if (dec_proc_param.in_data_size < AUDIO_DEC_DATA_SIZE )
            {
                decode_samples = fread(dec_proc_param.in_buf + dec_proc_param.in_data_size, sizeof(char), AUDIO_DEC_DATA_SIZE - dec_proc_param.in_data_size,infile);
                dec_proc_param.in_data_size += decode_samples;
            }
        }
        else
        {

        }
    }
    //释放G722解码资源
    NET_DVR_ReleaseG722Decoder(hDecInstance);
}
  1. Linux版本G711音频编解码
void Test_VoiceTalk_DecEncG711()
{
    printf("Test_VoiceTalk_DecEncG711\n");
    const unsigned int  AUDIO_CODEC_BUF_SIZE = 8192;
    const unsigned int AUDIO_DEC_DATA_SIZE = 2048;
    /**************Encode Audio in G.711 Mode**************/
    LPVOID hEncoderInstance=0;
    //Encoding information structure
    NET_DVR_AUDIOENC_INFO enc_info;
    //Initialize resources for encoding
    hEncoderInstance = NET_DVR_InitG711Encoder(&enc_info);
    printf("enc_info.in_frame_size = %d", enc_info.in_frame_size);

    FILE *out_file;
    FILE *in_file;
    unsigned char *indata_buf;
    unsigned char *outdata_buf;
    int frame = 0;
    char *inputfilename  = "tst_8k_ch_male.wav";
    //Input audio file with WAV format
    char *outputfilename = "temp.g711";
    //Output the encoded audio file
    if ((in_file = fopen(inputfilename,"rb"))==0)
    {
        printf("error opening output file %s\n",inputfilename);
    exit(99);
    }
    if ((out_file = fopen(outputfilename, "wb"))==0)
    {
    printf("error opening output file %s\n",outputfilename);
    exit(99);
    }

    NET_DVR_AUDIOENC_PROCESS_PARAM enc_param;
    memset(&enc_param, 0 ,sizeof(NET_DVR_AUDIOENC_PROCESS_PARAM));

    indata_buf   = (unsigned char *)malloc(AUDIO_CODEC_BUF_SIZE);
    outdata_buf  = (unsigned char *)malloc(AUDIO_CODEC_BUF_SIZE);
    memset(indata_buf, 0, AUDIO_CODEC_BUF_SIZE * sizeof(unsigned char));
    memset(outdata_buf, 0, AUDIO_CODEC_BUF_SIZE * sizeof(unsigned char));

    enc_param.g711_type = 0;
    enc_param.in_buf = indata_buf;
    enc_param.out_buf = outdata_buf;

    fseek(in_file, 44, SEEK_SET);
    //Delete the header of WAV file

    while(1)
   {
        int num_read;
       //Read the file according to the frame size in encoding information structure. The input buffer size should be larger than this size.
        num_read = fread(indata_buf, sizeof(char), enc_info.in_frame_size ,in_file);
        if(num_read==0) {
            fclose(in_file);
            fclose(out_file);
            break;
        }

        BOOL ret = NET_DVR_EncodeG711Frame(hEncoderInstance, &enc_param);
        if(ret==FALSE)
        {
            printf("NET_DVR_EncodeG711Frame fail,err %d!\n", NET_DVR_GetLastError());
    }
        else {
            int num_write;
            //The enc_param.out_frame_size is the size of encoded output data, and the output buffer must be larger than this size.
            num_write = fwrite(outdata_buf,1,enc_param.out_frame_size,out_file);
            printf("enc_param.out_frame_size = %d", enc_param.out_frame_size);
        frame++;
        printf("g711 Enc frame\n",frame);
        }
    }
    //Release resources
    BOOL ret = NET_DVR_ReleaseG711Encoder(hEncoderInstance);
    if(ret==FALSE)
    {
        printf("NET_DVR_ReleaseG711Encoder fail,err %d!\n", NET_DVR_GetLastError());
    }

    /**************Decode Audio Data for G.711 Encoding**************/
    LPVOID hDecInstance = 0;
    hDecInstance = NET_DVR_InitG711Decoder();

    char *inputfilename2  = "temp.g711";
    char *outputfilename2 = "g711_ret.pcm";
    if ((in_file = fopen(inputfilename2,"rb"))==0)
    {
        printf("error opening output file %s\n",inputfilename2);
        exit(99);
    }
    /*Open the output file for the encoded MP2 data*/
    if ((out_file = fopen(outputfilename2, "wb"))==0)
    {
        printf("error opening output file %s\n",outputfilename2);
        exit(99);
    }
    NET_DVR_AUDIODEC_PROCESS_PARAM dec_proc_param;
    memset(&dec_proc_param, 0 ,sizeof(NET_DVR_AUDIODEC_PROCESS_PARAM));
    memset(indata_buf, 0, AUDIO_CODEC_BUF_SIZE * sizeof(char));
    memset(outdata_buf, 0, AUDIO_CODEC_BUF_SIZE  * sizeof(char));

    dec_proc_param.g711_type  = 0;
    dec_proc_param.in_buf     = indata_buf;
    dec_proc_param.out_buf    = outdata_buf;
    dec_proc_param.in_data_size = 0;

    int dwRead = fread(dec_proc_param.in_buf, sizeof(char), AUDIO_DEC_DATA_SIZE, in_file);
    dec_proc_param.in_data_size += dwRead;

    while(1)
    {
        if(dwRead==0) {
            fclose(in_file);
            fclose(out_file);
            break;
        }
        DWORD outsize = 0;
        BOOL err = NET_DVR_DecodeG711Frame(hDecInstance, &dec_proc_param);
        if (err == 1)
        {
            //The dec_proc_param.out_frame_size is decoded output data
            fwrite(dec_proc_param.out_buf, sizeof(char), dec_proc_param.out_frame_size, out_file);
            frame++;
            printf("g711 Dec frame(%d)\n",frame);
            printf("dec_proc_param.proc_data_size(%d)\n",dec_proc_param.proc_data_size);
            printf("dec_proc_param.out_frame_size(%d)\n",dec_proc_param.out_frame_size);
            //The dec_proc_param.proc_data_size is the size of data in the input buffer.
            dec_proc_param.in_data_size = dec_proc_param.in_data_size - dec_proc_param.proc_data_size;
            //Move the data in the inout buffer to overwrite the processed data.
            memmove(dec_proc_param.in_buf, dec_proc_param.in_buf + dec_proc_param.proc_data_size, dec_proc_param.in_data_size);

            if (dec_proc_param.in_data_size < AUDIO_DEC_DATA_SIZE )
            {
                dwRead = fread(dec_proc_param.in_buf + dec_proc_param.in_data_size, sizeof(char), AUDIO_DEC_DATA_SIZE - dec_proc_param.in_data_size, in_file);
                dec_proc_param.in_data_size += dwRead;
            }
        }
        else
        {
            printf("decode err:0x%x", err);
        }
    }

    ret = NET_DVR_ReleaseG711Decoder(hDecInstance);
    if (ret== FALSE)
    {
    printf("NET_DVR_ReleaseG711Decoder fail,err %d!\n", NET_DVR_GetLastError());
    }
}
  1. G726音频编解码
void Test_VoiceTalk_DecEncG726()
{
    const unsigned int AUDIO_CODEC_BUF_SIZE = 1024;
    /**************Encode Audio in G.726 Mode**************/
    LPVOID hEncoder=0, hEncoderInstance=0;
    hEncoderInstance = NET_DVR_InitG726Encoder(&hEncoder);
    if(hEncoder==0 || hEncoderInstance==0)
    {
    printf("NET_DVR_InitG726Encoder fail,err %d!\n", NET_DVR_GetLastError());
    }

    FILE *Fi;
    FILE *Fo;
    unsigned char   *enc_inbuf;
    unsigned char   *enc_outbuf;
    char *inputfilename  = "tst_8k_ch_male.pcm";
    char *outputfilename = "temp.g726";
    if ((enc_inbuf = (unsigned char *) calloc(AUDIO_CODEC_BUF_SIZE, sizeof(char))) == NULL)
    {
        printf("Error in memory allocation!\n");
        exit(0);
    }
    if ((enc_outbuf = (unsigned char *) calloc(AUDIO_CODEC_BUF_SIZE, sizeof(char))) == NULL)
    {
        printf("Error in memory allocation!\n");
        exit(0);
    }
    if ((Fi = fopen(inputfilename, "rb")) == NULL)
    {
        printf("file open error!\n");
        exit(0);
    }
    if ((Fo = fopen(outputfilename, "wb")) == NULL)
    {
        printf("file open error!\n");
        exit(0);
    }
    printf("G726_EBCIN_DECOUT_SIZE = %d\n", G726_EBCIN_DECOUT_SIZE); // 640
    printf("G726_ENC_OUT_SIZE = %d\n", G726_ENC_OUT_SIZE); // 80
    printf("G726_EBCIN_DECOUT_SIZE = %d\n", G726_DEC_IN_SIZE); // 80
    int reset = 1;
    for (int cur_blk = 0; ; cur_blk++)
    {
        reset = (reset == 1 && cur_blk == 0) ? 1 : 0;
        if (fread(enc_inbuf, sizeof(char), G726_EBCIN_DECOUT_SIZE, Fi) < G726_EBCIN_DECOUT_SIZE)
        {
            fclose(Fi);
            fclose(Fo);
            break;
        }

        BOOL ret = NET_DVR_EncodeG726Frame(hEncoder, enc_inbuf, enc_outbuf, reset);

        if (ret == 1)
        {
            fwrite(enc_outbuf, sizeof(char), G726_ENC_OUT_SIZE, Fo);
        }
        else
        {
            printf("encode error!\n");
            break;
        }

        printf("g726 Enc frame: %d\n", cur_blk+1);

    }

    NET_DVR_ReleaseG726Encoder(hEncoderInstance);

    /**************Decode Audio Data for G.726 Encoding**************/
    LPVOID hDec = 0, hDecInstance = 0;
    hDecInstance = NET_DVR_InitG726Decoder(&hDec);
    if (hDec == 0 || hDecInstance == 0)
    {
    printf("NET_DVR_InitG726Decoder fail,err %d!\n", NET_DVR_GetLastError());
    }

    char *inputfilename2  = "temp.g726";
    char *outputfilenam2= "g726_ret.pcm";
    if ((Fi = fopen(inputfilename2, "rb")) == NULL)
    {
        printf("file open error!\n");
        exit(0);
    }
    if ((Fo = fopen(outputfilenam2, "wb")) == NULL)
    {
        printf("file open error!\n");
        exit(0);
    }
    memset(enc_inbuf, 0, AUDIO_CODEC_BUF_SIZE);
    memset(enc_outbuf, 0, AUDIO_CODEC_BUF_SIZE);
    reset = 1;  //The first frame should be reset
    for (int cur_blk = 0; ; cur_blk++)
    {
        reset = (reset == 1 && cur_blk == 0) ? 1 : 0;
        if (fread(enc_inbuf, sizeof(char), G726_DEC_IN_SIZE, Fi) < G726_DEC_IN_SIZE)
        {
            fclose(Fi);
            fclose(Fo);
            break;
        }
        BOOL ret = NET_DVR_DecodeG726Frame(hDec, enc_inbuf, enc_outbuf, reset);

        if (ret == 1)
        {
            fwrite(enc_outbuf, sizeof(char), G726_EBCIN_DECOUT_SIZE, Fo);
        }
        else
        {
            printf("decode err:0x%x", ret);
            break;
        }
        printf("g726 Dnc frame: %d\n", cur_blk);
    }

    NET_DVR_ReleaseG726Decoder(hDecInstance);
}

三、语音广播

3.1 接口调用流程

语音广播功能，是将多台设备添加到一个广播组，PC端采集声音编码之后发送给广播组里面所有设备进行播放。设备需要具有音频输入输出通道。

  • 必须先调用NET_DVR_Init初始化SDK资源，一个进程只需要调用一次。
  • 调用NET_DVR_ClientAudioStart_V30开启广播。
  • 每一台设备分别调用NET_DVR_Login_V40登录，然后调用NET_DVR_AddDVR_V30将设备添加到广播组。
  • 所有设备都添加到广播组之后，SDK会自动将PC本地声卡输入声音采集编码之后发送给各台设备，设备接收到音频数据之后自动解码播放。
  • 停止广播的时候，先将每台设备从广播组删除（NET_DVR_DelDVR_V30）以及调用NET_DVR_Logout注销登录，再调用NET_DVR_ClientAudioStop停止广播，最后程序退出前调用NET_DVR_Cleanup释放资源

3.2 示例代码

下面示例代码是语音广播的C++示例代码，仅供参考。

#include <stdio.h>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
    printf("ExceptionCallBack Type: %d, lUserID:%d\n", dwType, lUserID);
}

void CALLBACK g_fVoiceDataCallBack(char *pRecvDataBuffer, DWORD dwBufSize, void *pUser)
{
    //pRecvDataBuffer指针指向内存存放PC本地采集的音频数据（PCM）
}

void main() {
    LONG lUserID[2];
    LONG lHandle[2];

    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //设置异常消息回调函数
    NET_DVR_SetExceptionCallBack_V30(0, NULL, g_ExceptionCallBack, NULL);

    //---------------------------------------
    //开启语音广播
    if (!NET_DVR_ClientAudioStart_V30(g_fVoiceDataCallBack, NULL))
    {
        printf("NET_DVR_ClientAudioStart_V30 failed, error code: %d\n", NET_DVR_GetLastError());
    }

    else
    {
        printf("NET_DVR_ClientAudioStart_V30 successful\n");
    }

    //---------------------------------------
    //添加设备到广播组

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo[2];
    for (int i = 0; i < 2; i++)
    {
        memset(&struLoginInfo[i], 0, sizeof(NET_DVR_USER_LOGIN_INFO));
    }

    struLoginInfo[0].bUseAsynLogin = 0; //同步登录方式
    strncpy((char *)struLoginInfo[0].sDeviceAddress, "10.18.37.21", NET_DVR_DEV_ADDRESS_MAX_LEN); //设备IP地址
    struLoginInfo[0].wPort = 8000; //设备服务端口
    strncpy((char *)struLoginInfo[0].sUserName, "admin", NET_DVR_LOGIN_USERNAME_MAX_LEN); //设备登录用户名
    strncpy((char *)struLoginInfo[0].sPassword, "abcd1234", NET_DVR_LOGIN_PASSWD_MAX_LEN); //设备登录密码
    struLoginInfo[1].bUseAsynLogin = 0; //同步登录方式
    strncpy((char *)struLoginInfo[1].sDeviceAddress, "10.18.37.7", NET_DVR_DEV_ADDRESS_MAX_LEN); //设备IP地址
    struLoginInfo[1].wPort = 8000; //设备服务端口
    strncpy((char *)struLoginInfo[1].sUserName, "admin", NET_DVR_LOGIN_USERNAME_MAX_LEN); //设备登录用户名
    strncpy((char *)struLoginInfo[1].sPassword, "abcd1234", NET_DVR_LOGIN_PASSWD_MAX_LEN); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40[2];
    for (int i = 0; i < 2; i++)
    {
        lUserID[i] = NET_DVR_Login_V40(&struLoginInfo[i], &struDeviceInfoV40[i]);
        if (lUserID[i] < 0)
        {
            printf("Device[%d] NET_DVR_Login_V40 failed, error code: %d\n", i+1, NET_DVR_GetLastError());
        }
        else
        {
            printf("Device[%d] NET_DVR_Login_V40 successful\n", i + 1);
            int dwVoiceChan = 1;
            //对于设备本身的语音对讲通道，从1开始；
            //对于设备的IP通道，为登录返回的起始对讲通道号(byStartDTalkChan) + (IP通道索引 - 1)
            //例如客户端通过NVR跟其IP Channel02所接前端IPC进行对讲，则dwVoiceChan=byStartDTalkChan + (2 - 1)
            lHandle[i] = NET_DVR_AddDVR_V30(lUserID[i], dwVoiceChan);
            if (lHandle[i] < 0)
            {
                printf("Device[%d] NET_DVR_AddDVR_V30 failed, error code: %d\n", i + 1, NET_DVR_GetLastError());
            }
            else
            {
                printf("Device[%d] NET_DVR_AddDVR_V30 successful\n", i + 1);
            }
        }
    }

    Sleep(10000);

    //---------------------------------------
    //退出程序，释放相关资源

    //将设备从广播组删除、注销登录
    for (int i = 0; i < 2; i++)
    {
        if (lHandle[i] >= 0)
        {
            if (!NET_DVR_DelDVR_V30(lHandle[i]))
            {
                printf("Device[%d] NET_DVR_DelDVR_V30 failed, error code: %d\n", i + 1, NET_DVR_GetLastError());
            }
            else
            {
                printf("Device[%d] NET_DVR_DelDVR_V30 successful\n", i + 1);
            }
        }
        if (lUserID[i] >= 0)
        {
            if (!NET_DVR_Logout(lUserID[i]))
            {
                printf("Device[%d] NET_DVR_Logout failed, error code: %d\n", i + 1, NET_DVR_GetLastError());
            }
            else
            {
                printf("Device[%d] NET_DVR_Logout successful\n", i + 1);
            }
        }
    }

    //停止语音广播
    if (!NET_DVR_ClientAudioStop())
    {
        printf("NET_DVR_ClientAudioStop failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_ClientAudioStop successful\n");
    }

    //退出程序，释放SDK资源
    NET_DVR_Cleanup();
    return;
}


普通事件模块流程

普通事件

SDK接收报警方式有两种：

1）报警布防方式，是指SDK主动连接设备，建立报警上传通道，设备发生报警之后发送给SDK。需要先注册登录设备。 2）报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警主机的IP和端口，和SDK监听的IP、端口需要一致。

布防和监听，是两种不同的方式，设备同时支持的情况下，只需要选择其中一种即可。

目录

  • 普通事件
    • 目录
    • 一、接口调用流程
    • 二、示例代码
      • 2.1 报警布防
      • 2.2 报警监听

一、接口调用流程

  • “布防”报警方式：是指SDK主动连接设备，并发起报警上传命令，设备发生报警立即发送给SDK。
    1) NET_DVR_Init接口初始化SDK之后，调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口）。同时对接多台设备时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后通过报警设备信息(pAlarmer)里面的lUserID等参数判断区分设备。
    2) 每台设备分别调用NET_DVR_Login_V40接口登录，每一台设备仅需登录一次。然后分别调用NET_DVR_SetupAlarmChan_V41进行布防，每一台设备仅需布防一次。布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 虚线框部分是实现报警信息上传的必要条件，主要完成相关的报警条件和联动方式配置（必须配置启用“上传中心”），这些参数如果已经事先配置完成，那么虚线框部分可以省略。普通事件有移动侦测、视频信号丢失、遮挡和信号量报警，参数配置的接口分别为：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_PICCFG_V40)和NET_DVR_SetDVRConfig(命令: NET_DVR_SET_PICCFG_V40)、NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ALARMINCFG_V40)和NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ALARMINCFG_V40)。
    4) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • “监听”报警方式：是指SDK不主动发起连接设备，只是在设定的端口上监听接收设备主动上传的报警信息。 所以这个过程需要远程配置设备的报警主机地址（即PC机地址）和报警主机端口（即PC的监听端口），报警主机就在该端口上监听接收设备主动上传的报警信息。如果报警主机地址和报警主机端口已配置完成，那么“报警（监听）的流程图”中虚线框“用户注册”和“配置报警主机地址和端口”部分就可以省略，但事先没有配置，就必须调用参数配置接口（NET_DVR_GetDVRConfig(命令: NET_DVR_GET_NETCFG_V50)和NET_DVR_SetDVRConfig(命令: NET_DVR_SET_NETCFG_V50)）设置设备的网络参数，对应NET_DVR_NETCFG_V50中的struAlarmHostIpAddr、wAlarmHostIpPort 和struAlarmHost2IpAddr 、wAlarmHost2IpPort参数。而虚线框“配置报警条件和处理方法”部分与“布防”中的一致。对以上需要配置的参数都设置完后，调用NET_DVR_StartListen_V30函数，开启SDK的监听端口，准备接收设备上传的报警信息。退出程序时调用NET_DVR_StopListen_V30停止监听释放资源。该方式适用于多个设备向一台客户端上传报警，而且不需要设备登录即可完成，设备重启后不影响报警上传；缺点是设备一般只支持一个或者两个报警主机地址和端口号的配置。
  • 报警布防或者报警监听的事件数据都是在回调函数里面返回的，不同事件对应不同的报警信息，回调函数里面通过lCommand值进行判断，普通事件的移动侦测、视频信号丢失、遮挡和信号量报警都对应一个类型，但是不同的设备对应版本可能不同：COMM_ALARM、COMM_ALARM_V30、COMM_ALARM_V40，建议全部类型都进行解析处理。

二、示例代码

2.1 报警布防

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
  int i;
  NET_DVR_ALARMINFO struAlarmInfo;
  memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
  switch(lCommand)
  {
  case COMM_ALARM:
      {
          switch (struAlarmInfo.dwAlarmType)
          {
          case 3: //移动侦测报警
               for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
               {
                   if (struAlarmInfo.dwChannel[i] == 1)
                   {
                       printf("发生移动侦测报警的通道号 %d\n", i+1);
                   }
               }
          break;
          default:
          break;
          }
       }
  break;
  default:
  break;
  }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  // 注册设备
  LONG lUserID;

  //登录参数，包括设备地址、登录用户、密码等
  NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
  struLoginInfo.bUseAsynLogin = 0; //同步登录方式
  strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
  struLoginInfo.wPort = 8000; //设备服务端口
  strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
  strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

  //设备信息, 输出参数
  NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

  lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
  if (lUserID < 0)
  {
      printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
      NET_DVR_Cleanup();
      return;
  }

  //设置报警回调函数
  NET_DVR_SetDVRMessageCallBack_V30(MessageCallback, NULL);

  //启用布防
  LONG lHandle;

  //布防参数
  NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
  struAlarmParam.dwSize=sizeof(struAlarmParam);
  struAlarmParam.byAlarmInfoType=0;
  //设备是否支持新的报警信息通过登录返回的NET_DVR_DEVICEINFO_V30中参数bySupport1 & 0x80判断

  lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
  if (lHandle < 0)
  {
      printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //输入q退出程序，否则一直运行
  char c = 0;
  while ('q' != c)
  {
      printf("input 'q' to quit\n");
      printf("input: ");
      scanf("%c", &c);
  }

  //撤销布防上传通道
  if (!NET_DVR_CloseAlarmChan_V30(lHandle))
  {
      printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}

2.2 报警监听

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
  int i;
  NET_DVR_ALARMINFO struAlarmInfo;
  memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
  switch(lCommand)
  {
  case COMM_ALARM:
      {
          switch (struAlarmInfo.dwAlarmType)
          {
          case 3: //移动侦测报警
               for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
               {
                   if (struAlarmInfo.dwChannel[i] == 1)
                   {
                       printf("发生移动侦测报警的通道号 %d\n", i+1);
                   }
               }
          break;
          default:
          break;
          }
       }
  break;
  default:
  break;
  }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();

  //启用监听并且设置回调函数
  LONG lHandle;
  lHandle = NET_DVR_StartListen_V30(NULL,7200, MessageCallback, NULL);
  if (lHandle < 0)
  {
      printf("NET_DVR_StartListen_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //输入q退出程序，否则一直运行
  char c = 0;
  while ('q' != c)
  {
      printf("input 'q' to quit\n");
      printf("input: ");
      scanf("%c", &c);
  }

  //停止监听
  if (!NET_DVR_StopListen_V30(lHandle))
  {
      printf("NET_DVR_StopListen_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}


通道号说明

  • 预览、回放、通道相关参数配置等接口，通过通道号区分需要访问的设备视频通道，我司设备有DVR、混合型DVR、NVR、网络摄像机等，通道有两种类型：模拟通道和IP通道（数字通道）。DVR视频输入接模拟摄像机，其视音频通道称为模拟通道；网络摄像机通道也是模拟通道；混合型DVR、NVR、CVR设备等设备支持网络摄像机、编码器接入，对应通道称为IP通道（或者数字通道），配置相关参数时需调用IP接入配置参数来进行资源的获取和重新分配。
  • 客户端通过注册设备（ NET_DVR_Login_V40 ）返回的设备信息 NET_DVR_DEVICEINFO_V30 获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
  • 从byStartChan到byStartChan+byChanNum-1对应为模拟通道的通道号，IP通道的通道号为byStartDChan到byStartDChan+ (byIPChanNum + byHighDChanNum*256) -1。DVR只有模拟通道，NVR只有IP通道，混合型DVR同时支持模拟通道和IP通道。
  • 如果设备支持IP通道个数大于0，则可以通过远程参数配置接口NET_DVR_GetDVRConfig(配置命令：NET_DVR_GET_IPPARACFG_V40)可以获取得到设备详细的IP资源信息(NET_DVR_IPPARACFG_V40)，包括模拟通道是否禁用（byAnalogChanEnable）、IP通道个数（dwDChanNum）、IP通道起始通道号（dwStartDChan）、IP通道取流模式、IP通道有效状态和在线状态等。通过远程参数配置接口NET_DVR_SetDVRConfig(配置命令：NET_DVR_SET_IPPARACFG_V40)可对设备进行IP资源配置，包括添加、修改、删除IP通道等。
  • 混合型DVR、NVR或CVR的IP报警输入和报警输出的通道是在音视频IP通道资源分配好后，由设备自动分配的。如果要对IP报警参数进行配置，首先通过命令NET_DVR_GET_IPALARMINCFG_V40和NET_DVR_GET_IPALARMOUTCFG_V40获取IP报警输入资源（NET_DVR_IPALARMINCFG_V40）和IP报警输出资源（NET_DVR_IPALARMOUTCFG_V40），相关接口：NET_DVR_GetDVRConfig。然后通过命令NET_DVR_SET_ALARMINCFG_V40可以配置报警数相关参数(NET_DVR_ALARMINCFG_V40)，包括报警输入名称、报警器类型、布防时间、联动方式等，通过命令NET_DVR_SET_ALARMOUTCFG_V30可以配置报警输出相关参数(NET_DVR_ALARMOUTCFG_V30)，比如报警输出名称、布防时间、输出报警延时等，相关接口：NET_DVR_GetDVRConfig、NET_DVR_SetDVRConfig。
  • 目前SDK私有协议对接时64路以下的NVR的IP通道号是从33开始的，64路以及以上的NVR的IP通道从1开始，起始通道号具体取值可以参考上述说明通过登录接口返回的设备信息获取。但是V5.1.5.2版本以及之后版本新增了NET_DVR_STDXMLConfig透传协议报文的功能，透传的报文中URL和XML、JSON数据里面通道号不区分模拟还是数字通道，起始通道号都是1，按顺序递增。因此，不同接口对接存在通道号不一致的问题，需要调用接口NET_DVR_SDKChannelToISAPI（V5.2.7.45以及之后版本支持）进行转换。

示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "string.h"
#include "HCNetSDK.h"
using namespace std;
void main()
{
    int i=0;
    BYTE byIPID,byIPIDHigh;
    int iDevInfoIndex, iGroupNO, iIPCh;
    DWORD dwReturned = 0;

    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    printf("The max number of analog channels: %d\n",struDeviceInfoV40.struDeviceV30.byChanNum); //模拟通道个数
    printf("The max number of IP channels: %d\n", struDeviceInfoV40.struDeviceV30.byIPChanNum + struDeviceInfoV40.struDeviceV30.byHighDChanNum * 256);//IP通道个数

    //获取IP通道参数信息
    NET_DVR_IPPARACFG_V40 IPAccessCfgV40;
    memset(&IPAccessCfgV40, 0, sizeof(NET_DVR_IPPARACFG));
    iGroupNO=0;
    if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_IPPARACFG_V40, iGroupNO, &IPAccessCfgV40, sizeof(NET_DVR_IPPARACFG_V40), &dwReturned))
    {
        printf("NET_DVR_GET_IPPARACFG_V40 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    else
    {
        for (i=0;i<IPAccessCfgV40.dwDChanNum;i++)
        {
            switch(IPAccessCfgV40.struStreamMode[i].byGetStreamType)
            {
            case 0: //直接从设备取流
                if (IPAccessCfgV40.struStreamMode[i].uGetStream.struChanInfo.byEnable)
                {
                    byIPID=IPAccessCfgV40.struStreamMode[i].uGetStream.struChanInfo.byIPID;
                    byIPIDHigh=IPAccessCfgV40.struStreamMode[i].uGetStream.struChanInfo.byIPIDHigh;
                    iDevInfoIndex=byIPIDHigh*256 + byIPID-1-iGroupNO*64;
                    printf("IP channel no.%d is online, IP: %s\n", i+1, IPAccessCfgV40.struIPDevInfo[iDevInfoIndex].struIP.sIpV4);
                }
                break;
            case 1: //从流媒体取流
                if (IPAccessCfgV40.struStreamMode[i].uGetStream.struPUStream.struStreamMediaSvrCfg.byValid)
                {
                    printf("IP channel %d connected with the IP device by stream server.\n", i+1);
                    printf("IP of stream server: %s, IP of IP device: %s\n",IPAccessCfgV40.struStreamMode[i].uGetStream.\
                    struPUStream.struStreamMediaSvrCfg.struDevIP.sIpV4, IPAccessCfgV40.struStreamMode[i].uGetStream.\
                    struPUStream.struDevChanInfo.struIP.sIpV4);
                }
                break;
            default:
                break;
            }
        }
    }

    //配置IP通道5;
    iIPCh=4;

    //支持自定义协议
    NET_DVR_CUSTOM_PROTOCAL struCustomPro;
    if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_CUSTOM_PRO_CFG, 1, &struCustomPro, sizeof(NET_DVR_CUSTOM_PROTOCAL), &dwReturned))
    //获取自定义协议1
    {
        printf("NET_DVR_GET_CUSTOM_PRO_CFG error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    struCustomPro.dwEnabled=1;   //启用主码流
    struCustomPro.dwEnableSubStream=1; //启用子码流
    strcpy((char *)struCustomPro.sProtocalName,"Protocal_RTSP");  //自定义协议名称:Protocal_RTSP,最大16字节
    struCustomPro.byMainProType=1;    //主码流协议类型: 1- RTSP
    struCustomPro.byMainTransType=2;  //主码流传输协议: 0-Auto, 1-udp, 2-rtp over rtsp
    struCustomPro.wMainPort=554;     //主码流取流端口
    strcpy((char *)struCustomPro.sMainPath,"rtsp://192.168.1.65/h264/ch1/main/av_stream");//主码流取流URL
    struCustomPro.bySubProType=1;    //子码流协议类型: 1-RTSP
    struCustomPro.bySubTransType=2;  //子码流传输协议: 0-Auto, 1-udp, 2-rtp over rtsp
    struCustomPro.wSubPort=554;     //子码流取流端口
    strcpy((char *)struCustomPro.sSubPath,"rtsp://192.168.1.65/h264/ch1/sub/av_stream");//子码流取流URL

    if (!NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_CUSTOM_PRO_CFG, 1, &struCustomPro, sizeof(NET_DVR_CUSTOM_PROTOCAL)))
    //设置自定义协议1
    {
        printf("NET_DVR_SET_CUSTOM_PRO_CFG error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    printf("Set the custom protocol: %s\n", "Protocal_RTSP");
    NET_DVR_IPC_PROTO_LIST m_struProtoList;
    if (!NET_DVR_GetIPCProtoList(lUserID, &m_struProtoList)) //获取设备支持的前端协议
    {
        printf("NET_DVR_GetIPCProtoList error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    IPAccessCfgV40.struIPDevInfo[iIPCh].byEnable=1;     //启用
    for (i = 0; i<m_struProtoList.dwProtoNum; i++)
    {
        if(strcmp((char *)struCustomPro.sProtocalName,(char *)m_struProtoList.struProto[i].byDescribe)==0)
        {
            IPAccessCfgV40.struIPDevInfo[iIPCh].byProType=m_struProtoList.struProto[i].dwType; //选择自定义协议
            break;
        }
    }

    //IPAccessCfgV40.struIPDevInfo[iIPCh].byProType=0;  //厂家私有协议
    strcpy((char *)IPAccessCfgV40.struIPDevInfo[iIPCh].struIP.sIpV4,"192.168.1.65"); //前端IP设备的IP地址
    IPAccessCfgV40.struIPDevInfo[iIPCh].wDVRPort=8000;  //前端IP设备服务端口
    strcpy((char *)IPAccessCfgV40.struIPDevInfo[iIPCh].sUserName,"admin");  //前端IP设备登录用户名
    strcpy((char *)IPAccessCfgV40.struIPDevInfo[iIPCh].sPassword,"12345");  //前端IP设备登录密码

    IPAccessCfgV40.struStreamMode[iIPCh].byGetStreamType=0;
    IPAccessCfgV40.struStreamMode[iIPCh].uGetStream.struChanInfo.byChannel=1;
    IPAccessCfgV40.struStreamMode[iIPCh].uGetStream.struChanInfo.byIPID=(iIPCh+1)%256;
    IPAccessCfgV40.struStreamMode[iIPCh].uGetStream.struChanInfo.byIPIDHigh=(iIPCh+1)/256;

    //IP通道配置，包括添加、删除、修改IP通道等
    if (!NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_IPPARACFG_V40, iGroupNO, &IPAccessCfgV40, sizeof(NET_DVR_IPPARACFG_V40)))
    {
        printf("NET_DVR_SET_IPPARACFG_V40 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    else
    {
        printf("Set IP channel no.%d, IP: %s\n", iIPCh+1, IPAccessCfgV40.struIPDevInfo[iIPCh].struIP.sIpV4);
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


串口透明通道模块流程

串口透明通道

串口透明通道，是指通过监控设备透传外接的串口设备和客户端之间的串口数据，建立透明通道之后相当于PC客户端直接通过串口协议和监控设备外接的串口设备进行交互：

1）SDK通过网络协议将串口数据下发给监控设备，监控设备解析出串口数据不做任何处理，直接从RS485或者RS232串口输出，将串口数据透传给外接的串口设备。

2）外接的串口设备通过串口线将串口数据回传给监控设备，监控设备接收到串口数据之后通过SDK网络协议传输给客户端，客户端可以直接解析获取到原始输入的串口数据。

目录

  • 串口透明通道
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，如果是将232串口作为透明通道使用，首先必须在232串口的配置信息中将工作模式选为透明通道，具体方法是调用接口NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig获取和设置RS232参数（NET_DVR_RS232CFG_V30）中的dwWorkMode值为透明通道。如果是将485串口作为透明通道，则不需要这个步骤。
  • 调用NET_DVR_SerialStart_V40建立透明通道并且设置回调函数，从设备串口发送过来的数据在回调函数里面接收获取，同时建立透明通道之后可以调用NET_DVR_SerialSend发送数据。 关闭透明通道时调用NET_DVR_SerialStop接口。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

下面示例代码为云台控制的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//回调透传数据函数的外部实现
void CALLBACK g_fSerialDataCallBack(LONG lSerialHandle, LONG lChannel, char *pRecvDataBuffer, DWORD dwBufSize, void *pUser)
{
    //…… 处理接收到的透传数据，pRecvDataBuffer中存放接收到的数据
}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置232为透明通道模式（使用232透明通道时调用，485不需要）
    DWORD dwReturned = 0;
    NET_DVR_RS232CFG_V30 struRS232Cfg;
    memset(&struRS232Cfg, 0, sizeof(NET_DVR_RS232CFG_V30));
    if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_RS232CFG_V30, 0, &struRS232Cfg, sizeof(NET_DVR_RS232CFG_V30), &dwReturned))
    {
        printf("NET_DVR_GET_RS232CFG_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    struRS232Cfg.struRs232[0].dwWorkMode = 2;   //设置232为透明通道模式；0：窄带传输，1：控制台，2：透明通道
    if (!NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_RS232CFG_V30, 0, &(struRS232Cfg), sizeof(NET_DVR_RS232CFG)))
    {
        printf("NET_DVR_SET_RS232CFG_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //建立透明通道
    LONG lTranHandle;
    NET_DVR_SERIALSTART_V40 struSerialParam = { 0 };
    struSerialParam.dwSize = sizeof(struSerialParam);
    struSerialParam.dwSerialType = 1;//1:232串口；2:485串口
    struSerialParam.bySerialNum = 1;//串口编号（设备支持多个RS232串口时有效）
    lTranHandle = NET_DVR_SerialStart_V40(lUserID, &struSerialParam, sizeof(struSerialParam), g_fSerialDataCallBack, NULL);//设置回调函数获取透传数据
    if (lTranHandle < 0)
    {
        printf("NET_DVR_SerialStart error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //通过透明通道发送数据
    LONG lSerialChan = 0;//使用485时该值有效，从1开始；232时设置为0
    char szSendBuf[1016] = { 0 };
    if (!NET_DVR_SerialSend(lTranHandle, lSerialChan, szSendBuf, sizeof(szSendBuf))) //szSendBuf为发送数据的缓冲区
    {
        printf("NET_DVR_SerialSend error, %d\n", NET_DVR_GetLastError());
        NET_DVR_SerialStop(lTranHandle);
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //断开透明通道
    NET_DVR_SerialStop(lTranHandle);
    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


人脸比对模块流程

人脸比对

人脸比对功能，将摄像机抓拍的图片与设备上存储的人脸库中的人脸图片进行比对分析，返回相似度超过设定阈值的人脸信息，包括抓拍的人脸图片、人员属性（性别、年龄、是否戴眼镜等）、人脸测温温度和人脸库中匹配的人脸图片、人员信息（包括姓名、性别、证件类型和证件号、出生日期以及附加信息等）。

人脸比对功能主要包含人脸库管理(创建、修改、删除、导入、查询等)、人脸比对报警上传、陌生人报警上传和以图搜图的功能。此处介绍人脸比对结果（包括陌生人报警事件）的报警事件上传的实现流程，其中虚线框的内容是可选的，不会影响其他流程和模块功能的使用。

目录

  • 人脸比对
    • 目录
    • 一、报警事件上传
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、人脸库管理
      • 2.1 接口调用流程
      • 2.2 示例代码
    • 三、以图搜图
      • 3.1 接口调用流程
      • 3.2 示例代码

一、报警事件上传

1.1 接口调用流程

  • 设备需要支持并且开启人脸比对功能，配置人脸比对相关参数，包括检测阈值、联动方式、布防时间等。配置好相关参数之后，SDK通过报警布防方式获取设备上传的人脸比对结果，包括人脸库中匹配的人脸图片、人员信息（包括姓名、性别、证件类型和证件号、出生日期以及附加信息等）。
  • 人脸比对目前有两种类型：
    1. “常规模式”：人脸比对成功时，人脸抓拍图片和人脸库比对到的图片都将上传中心；人脸比对失败时，若人脸比对参数配置里面“比对失败时上传中心”使能开启，人脸抓拍图片仍可上传中心。
    2. “陌生人模式”：人脸抓拍图片将与人脸库图片进行比较，相似度达不到要求时进行报警。
  • 人脸比对使能、规则区域和阈值等参数配置，相关接口：
    1. 设备支持多种智能功能并且不能同时使用的情况，需要先分配智能资源，配置为人脸比对模式才能支持人脸比对功能：
    a) 获取智能资源分配能力集：NET_DVR_STDXMLConfig(命令: GET /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource/capabilities)；
    b) 获取和设置智能资源分配：NET_DVR_STDXMLConfig(命令: GET /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource)。
    2. 人脸比对参数配置，包括配置使能、比对阈值、关联人脸库等：
    a) 相关能力集：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，能力集: VcaChanAbility，节点: <FaceSnap>中<FaceContrast>)可以判断设备是否支持人脸比对功能；通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/faceContrast/capabilities)可以获取设备支持的人脸比对配置参数能力。
    b) 获取和设置相关参数：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/faceContrast)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<channelID>/faceContrast)。
  • 联动方式配置（如果客户端SDK需要通过报警布防方式获取人脸比对结果，处理方式必须选择“上传中心”），常规模式和陌生人模式都是根据指定的通道进行配置，人脸库方式是根据指定的通道和人脸库ID进行配置，可以通过能力集进行判断是否支持以及支持方式，相关接口：
    1. 能力集获取：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggersCap)，对应节点：<FaceContrastTriggerCap>(人脸比对常规模式)、<WhiteListFaceContrastTriggerCap>(陌生人模式)、<FaceLibTriggerCap>(人脸库方式)。
    2. 人脸比对常规模式：
    a) 人脸比对联动方式配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/faceContrast-<channelID>、PUT /ISAPI/Event/triggers/faceContrast-<channelID>)；
    b) 人脸比对成功联动方式配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/faceContrastSuccess-<channelID>、PUT /ISAPI/Event/triggers/faceContrastSuccess-<channelID>)；
    c) 人脸比对失败联动方式配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/faceContrastFailure-<channelID>、PUT /ISAPI/Event/triggers/faceContrastFailure-<channelID>)。
    3. 陌生人模式，获取和设置联动方式配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/whiteListFaceContrast-<channelID>、PUT /ISAPI/Event/triggers/whiteListFaceContrast-<channelID>)。
    4. 人脸库方式，获取和设置联动方式配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/faceLib-<channelID>/<FDID>、PUT /ISAPI/Event/triggers/faceLib-<channelID>/<FDID>)。
  • 布防时间配置配置，人脸比对常规模式和陌生人模式都是根据指定的通道进行配置，人脸库方式是根据指定的通道和人脸库ID进行配置，可以通过能力集进行判断是否支持以及支持方式，相关接口：
    1) 人脸比对常规模式，获取和设置布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/faceContrast/faceContrast-<channelID>、PUT /ISAPI/Event/schedules/faceContrast/faceContrast-<channelID>)。
    2) 陌生人模式，获取和设置布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/whiteListFaceContrast/whiteListFaceContrast-<channelID>、PUT /ISAPI/Event/schedules/whiteListFaceContrast/whiteListFaceContrast-<channelID>)。
    3) 人脸库方式，获取和设置布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/faceLib/<channelID>/<FDID>?FDType=<FDType>、PUT /ISAPI/Event/schedules/faceLib/<channelID>/<FDID>?FDType=<FDType>)。
  • 人脸库管理和相关参数配置等也可以直接通过WEB网页或者客户端软件访问设备进行配置，如果事先已经配置则可省略上述过程。
  • 报警布防方式获取设备上传的人脸比对结果的实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 回调函数中获取的报警类型(lCommand)为COMM_SNAP_MATCH_ALARM，报警信息(pAlarmInfo)对应结构体：NET_VCA_FACESNAP_MATCH_ALARM。fSimilarity相似度大于0表示人脸比对成功，可以获取人脸库相关数据；fSimilarity相似度为0，需要通过NET_VCA_BLACKLIST_INFO结构体里面的byType类型判断，值为1表示陌生人模式，值为2表示人脸比对失败。如果设备支持测温功能，人脸测温温度数据在该报警信息结构体中子结构体参数NET_VCA_BLOCKLIST_INFO_ALARM中NET_VCA_BLOCKLIST_INFO子结构体参数的参数pFCAdditionInfoBuffer指针指向内存的XML数据中。

1.2 示例代码

下面示例代码为报警布防接收人脸比对事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_SNAP_MATCH_ALARM: //人脸比对结果信息
    {
        NET_VCA_FACESNAP_MATCH_ALARM struFaceMatchAlarm = { 0 };
        memcpy(&struFaceMatchAlarm, pAlarmInfo, sizeof(NET_VCA_FACESNAP_MATCH_ALARM));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struFaceMatchAlarm.struSnapInfo.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struFaceMatchAlarm.struSnapInfo.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struFaceMatchAlarm.struSnapInfo.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struFaceMatchAlarm.struSnapInfo.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struFaceMatchAlarm.struSnapInfo.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struFaceMatchAlarm.struSnapInfo.dwAbsTime);

        //人脸库ID
        char tempFDID[256] = { 0 };
        if (struFaceMatchAlarm.struBlockListInfo.dwFDIDLen > 0
            && struFaceMatchAlarm.struBlockListInfo.dwFDIDLen < sizeof(tempFDID)
            && struFaceMatchAlarm.struBlockListInfo.pFDID != NULL)
        {
            memcpy(tempFDID, struFaceMatchAlarm.struBlockListInfo.pFDID, struFaceMatchAlarm.struBlockListInfo.dwFDIDLen);
        }

        //人脸图片ID
        char tempPID[256] = { 0 };
        if (struFaceMatchAlarm.struBlockListInfo.dwPIDLen > 0
            && struFaceMatchAlarm.struBlockListInfo.dwPIDLen < sizeof(tempPID)
            && struFaceMatchAlarm.struBlockListInfo.pPID != NULL)
        {
            memcpy(tempPID, struFaceMatchAlarm.struBlockListInfo.pPID, struFaceMatchAlarm.struBlockListInfo.dwPIDLen);
        }

        printf("人脸比对结果上传[0x%x]：[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]fSimilarity[%f]FaceID[%d]FDID[%s]FPID[%s]"
            "Sex[%d]Glasses[%d]Age[%d]MatchPicNum[%d]PicTransType[%d]\n", lCommand,
            struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute,
            struAbsTime.dwSecond, struFaceMatchAlarm.fSimilarity, struFaceMatchAlarm.struSnapInfo.dwSnapFacePicID, tempFDID, tempPID, struFaceMatchAlarm.struSnapInfo.bySex,struFaceMatchAlarm.struSnapInfo.byGlasses, struFaceMatchAlarm.struSnapInfo.byAge,
            struFaceMatchAlarm.byMatchPicNum, struFaceMatchAlarm.byPicTransType);

        //保存抓拍图片
        if (struFaceMatchAlarm.dwSnapPicLen > 0 && struFaceMatchAlarm.pSnapPicBuffer != NULL && struFaceMatchAlarm.byPicTransType == 0)
        {
            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            char cFilename[256] = { 0 };
            sprintf(cFilename, "FaceSnapPic[%s].jpg", chTime);

            FILE *fSnapPic = fopen(cFilename, "wb");
            fwrite(struFaceMatchAlarm.pSnapPicBuffer, struFaceMatchAlarm.dwSnapPicLen, 1, fSnapPic);
            fclose(fSnapPic);
            fSnapPic = NULL;
        }

        //保存非授权名单人脸图片
        if (struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen > 0 && struFaceMatchAlarm.struBlockListInfo.pBuffer1 != NULL)
        {
            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            char cFilename[256] = { 0 };
            sprintf(cFilename, "FaceBlackListPic[%s].jpg", chTime);

            FILE *fBlackListPic = fopen(cFilename, "wb");
            fwrite(struFaceMatchAlarm.struBlockListInfo.pBuffer1, struFaceMatchAlarm.struBlockListInfo.dwBlockListPicLen, 1, fBlackListPic);
            fclose(fBlackListPic);
            fBlackListPic = NULL;
        }

        //保存抓拍库附加信息(温度信息在该XML字符串中)
        if (struFaceMatchAlarm.struBlockListInfo.struBlockListInfo.dwFCAdditionInfoLen > 0 && struFaceMatchAlarm.struBlockListInfo.struBlockListInfo.pFCAdditionInfoBuffer != NULL)
        {
            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            char cFilename[256] = { 0 };
            sprintf(cFilename, "FCAdditionInfo[%s].txt", chTime);

            FILE *fFCAdditionInfo = fopen(cFilename, "wb");
            fwrite(struFaceMatchAlarm.struBlockListInfo.struBlockListInfo.pFCAdditionInfoBuffer, struFaceMatchAlarm.struBlockListInfo.struBlockListInfo.dwFCAdditionInfoLen, 1, fFCAdditionInfo);
            fclose(fFCAdditionInfo);
            fFCAdditionInfo = NULL;
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.35.104"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abc12345"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    printf("Login successfully!\n");

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("NET_DVR_SetupAlarmChan_V41 successfully!\n");

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、人脸库管理

2.1 接口调用流程

  • 登录设备之后，通过NET_DVR_STDXMLConfig（命令：GET /ISAPI/Intelligent/FDLib/capabilities）获取人脸比对库能力集判断设备是否支持相关功能。
  • 人脸库管理，包括创建、修改、删除、查询等，相关接口：NET_DVR_STDXMLConfig，相关命令：
    1) 创建人脸库：POST /ISAPI/Intelligent/FDLib；
    2) 删除指定的人脸库：DELETE /ISAPI/Intelligent/FDLib/<FDID>；
    3) 删除所有人脸库：DELETE /ISAPI/Intelligent/FDLib；
    4) 批量获取或设置人脸库信息：GET /ISAPI/Intelligent/FDLib、PUT /ISAPI/Intelligent/FDLib；
    5) 获取或者设置指定人脸库的信息：GET /ISAPI/Intelligent/FDLib/<FDID>、PUT /ISAPI/Intelligent/FDLib/<FDID>；
    6) 人脸库人员标签扩展配置能力集：GET /ISAPI/Intelligent/faceContrast/personInfoExtend/capabilities；
    7) 获取或设置人脸库人员标签扩展配置：GET /ISAPI/Intelligent/faceContrast/personInfoExtend、PUT /ISAPI/Intelligent/faceContrast/personInfoExtend，或GET /ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<FDID>、PUT /ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<FDID>。
  • 人脸库创建之后，可以上传人脸数据(人脸图片+图片附加信息)到设备端的人脸库，相关接口： 1) 调用NET_DVR_UploadFile_V40(命令:IMPORT_DATA_TO_FACELIB)开始上传数据。上传条件里面byConcurrent赋值为0时不开启并发处理，设备会自动对上传的图片进行建模，如果批量上传大量图片，可以赋值为1开启并发处理，提高速度，但是上传之后需要自己建模。 2) 调用NET_DVR_UploadSend发送一张人脸图片数据和附加信息。 3) 上传过程中循环调用NET_DVR_GetUploadState获取上传状态和进度。 4) 上传成功之后调用NET_DVR_GetUploadResult获取结果信息（图片ID等）。 5) 重复步骤2、3、4，顺序上传其他人脸数据。 6) 调用NET_DVR_UploadClose停止上传，释放资源。
  • 人脸库里面图片数据查询、附加信息配置以及图片数据删除、建模状态查询和建模操作等，相关接口：NET_DVR_STDXMLConfig，相关命令：
    1) 查询人脸库人脸图片数据：POST /ISAPI/Intelligent/FDLib/FDSearch；
    2) 获取或设置人脸图片附加信息：GET /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>、PUT /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>；
    3) 删除人脸库图片及附加信息：DELETE /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>；
    4) 批量获取或设置人脸库信息：GET /ISAPI/Intelligent/FDLib、PUT /ISAPI/Intelligent/FDLib；
    5) 获取或者设置指定人脸库的信息：GET /ISAPI/Intelligent/FDLib/<FDID>、PUT /ISAPI/Intelligent/FDLib/<FDID>；
    6) 图片建模控制：GET /ISAPI/Intelligent/FDLib/manualModeling?range=<range>&FDID=<FDID>或GET /ISAPI/Intelligent/FDLib/manualModeling?FDID=<FDID>&PID=<pictureID>；
    7) 图片批量建模任务(离散性)：POST /ISAPI/Intelligent/FDLib/manualModelingRangeTask、GET /ISAPI/Intelligent/FDLib/manualModeling/progressState?taskID=<taskID>；
    8) 获取图片建模状态：GET /ISAPI/Intelligent/FDLib/modelingStatus?FDID=<FDID>&PID=<pictureID>、POST /ISAPI/Intelligent/FDLib/modelingStatusRange或POST /ISAPI/Intelligent/FDLib/modelingStatus?status=<status>。
  • 新增人脸库之后通道需要关联人脸库，在人脸比对参数配置中设置关联（详见1.1章节的配置说明）。

2.2 示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
#include "xml/XmlBase.h"
using namespace std;

int DoLogin();
void SetUserFace(int lUserID, int n);

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

int _tmain(int argc, _TCHAR* argv[])
{
    //cout << "he" << endl;
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    int lUserID = DoLogin();
    if (lUserID < 0)
    {
        return 0;
    }

    int n = 10; //批量下发10个
    SetUserFace(lUserID, n);

    return 1;
}
// 设备登录
int DoLogin()
{
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.35.17"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abc12345"); //设备登录密码
    //设备参数结构体
    NET_DVR_DEVICEINFO_V40 DeviceInfoTmp;
    memset(&DeviceInfoTmp, 0, sizeof(NET_DVR_DEVICEINFO_V40));
    // 向设备注册
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoTmp);
    if (lLoginID< 0)
    {
        cout << "注册失败, 错误码: " << NET_DVR_GetLastError() << endl;
        NET_DVR_Cleanup();
    }
    if (lLoginID >= 0)
    {
        cout << "注册成功" << endl;
    }
    return lLoginID;
}

LONG getUploadState(LONG m_lUploadHandle)
{
    DWORD dwProgress = 0;
    LONG iStatus = -1;
    char szStatus[256] = { 0 };

    memset(szStatus, 0, 256);
    iStatus = NET_DVR_GetUploadState(m_lUploadHandle, &dwProgress);
    if (iStatus == -1)  //即入口返回失败
    {
        printf("上传失败!status[%d]", iStatus);
        Sleep(100);
    }
    else if (iStatus == 2) //正在上传
    {
        printf("正在上传!status[%d],progress[%d]", iStatus, dwProgress);
        Sleep(100);
    }
    else if (iStatus == 1) //上传成功
    {
        printf("上传成功!status[%d],progress[%d]", iStatus, dwProgress);
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 35)
    {
        printf("图片URL未开始下载");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 36)
    {
        printf("customHumanID重复");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 38)
    {
        printf("建模失败,设备内部错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 39)
    {
        printf("建模失败,人脸建模错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 40)
    {
        printf("建模失败,人脸质量评分错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 41)
    {
        printf("建模失败,特征点提取错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 42)
    {
        printf("建模失败,属性提取错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 43)
    {
        printf("图片数据错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else if (iStatus == 44)
    {
        printf("图片附加信息错误");
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    else //上传失败,显示状态
    {
        printf("上传失败!status[%d]", iStatus);
        Sleep(100); //这个sleep只是为了addlog能够有时间执行
    }
    return iStatus;
}

///////////////////////////////
//批量下发人脸
void SetUserFace(int lUserID, int n)
{
    NET_DVR_FACELIB_COND struFaceLibCond = { 0 };
    struFaceLibCond.dwSize = sizeof(NET_DVR_FACELIB_COND);
    struFaceLibCond.byConcurrent = 0;
    struFaceLibCond.byCover = 0;
    struFaceLibCond.byCustomFaceLibID = 0;
    memcpy(struFaceLibCond.szFDID, (char*)"3CEB4A13629344A59CCE8797286990BC", 256);

    LONG m_lUploadHandle = NET_DVR_UploadFile_V40(lUserID, IMPORT_DATA_TO_FACELIB, &struFaceLibCond, sizeof(NET_DVR_FACELIB_COND), NULL, NULL, 0);
    if (m_lUploadHandle < 0)
    {
        cout << "IMPORT_DATA_TO_FACELIB建立下发人脸的长连接失败，错误码为:" << NET_DVR_GetLastError() << endl;
        return;
    }
    else
    {
        NET_DVR_SEND_PARAM_IN m_struSendParam = {0};

        memset(&m_struSendParam, 0, sizeof(m_struSendParam));

        char szLan[1280] = { 0 };
        char szFileName[MAX_PATH] = { 0 };
        DWORD dwFileSize = 0;

        for (int i = 0; i < n; i++)
        {
            //读XML文件
            FILE* fp = NULL;
            BYTE* byteBuffer = NULL;
            int xmlSize = 0;
            fp = fopen("D://test.xml", "rb");
            if (fp)
            {
                //求得文件的大小
                fseek(fp, 0, SEEK_END);
                xmlSize = ftell(fp);
                rewind(fp);
                byteBuffer = new BYTE[xmlSize + 1];
                fread(byteBuffer, xmlSize, 1, fp);
                m_struSendParam.pSendAppendData = byteBuffer;
                m_struSendParam.dwSendAppendDataLen = xmlSize;
                printf("读取图片成功，图片大小：%dByte\n", xmlSize);
            }
            fclose(fp);
            fp = NULL;

            //读图片文件
            FILE* fpFace = NULL;
            BYTE* byteFaceBuffer = NULL;
            int picSize = 0;
            fpFace = fopen("D://test.jpg", "rb");
            if (fpFace)
            {
                //求得文件的大小
                fseek(fpFace, 0, SEEK_END);
                picSize = ftell(fpFace);
                rewind(fpFace);
                byteFaceBuffer = new BYTE[picSize + 1];
                fread(byteFaceBuffer, picSize, 1, fpFace);
                m_struSendParam.pSendData = byteFaceBuffer;
                m_struSendParam.dwSendDataLen = picSize;
                printf("读取图片成功，图片大小：%dByte\n", picSize);
            }
            fclose(fpFace);
            fpFace = NULL;

            if (NET_DVR_UploadSend(m_lUploadHandle, &m_struSendParam, NULL) < 0)
            {
                cout << "NET_DVR_UploadSend失败，错误码为:" << NET_DVR_GetLastError() << endl;
            }
            else
            {
                while (1)
                {
                    LONG iStatus = getUploadState(m_lUploadHandle);
                    if (1 == iStatus)
                    {
                        NET_DVR_UPLOAD_FILE_RET m_struPicRet = { 0 };
                        NET_DVR_GetUploadResult(m_lUploadHandle, &m_struPicRet, sizeof(m_struPicRet));
                        break;
                    }
                    else if ((iStatus >= 3 && iStatus <= 10) || iStatus == 31 || iStatus == -1)
                    {
                        break;
                    }
                }
                cout << "NET_DVR_UploadSend下发结束，个数：" << (i+1) << endl;
            }
        }

        if (!NET_DVR_UploadClose(m_lUploadHandle))
        {
            cout << "NET_DVR_UploadClose失败，错误码为:" << NET_DVR_GetLastError() << endl;
        }
        else
        {
            cout << "NET_DVR_UploadClose成功";
        }
    }
}

三、以图搜图

3.1 接口调用流程

  • 登录设备之后，可以先调用能力集判断设备是否支持相关功能：
    1) 通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/FDLib/capabilities)获取人脸比对库能力集，对应节点：<isSuportAnalysisFace>(图片分析)、<FDSearchDescription>(人脸库检索)、<isSuportFCSearch>(抓拍图片检索)等。
    2) 通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/capabilities)获取智能XML通用能力集，对应节点：<isSupportUploadFacePictureByForm>(人脸图片上传分析)。
  • 图片上传到设备上进行人脸分析识别，相关接口：NET_DVR_STDXMLConfig(命令：POST /ISAPI/Intelligent/analysisImage/face)，JPG或者JPEG图片格式。
  • 人脸库以图搜图，图片上传分析之后，根据图片识别结果(人脸区域坐标和目标模型数据)检索设备人脸库里的图片数据，相关接口：NET_DVR_STDXMLConfig(命令：POST /ISAPI/Intelligent/FDLib/FDSearch)，以图索图条件对应输入参数<FDSearchDescription>XML里面的<ModeInfo>。
  • 抓拍库以图搜图，图片上传分析之后，根据图片识别结果(人脸区域坐标和目标模型数据)检索设备存储里面抓拍图片数据，相关接口：NET_DVR_STDXMLConfig(命令：POST /ISAPI/Intelligent/FDLib/FCSearch)，以图索图条件对应输入参数<FCSearchDescription>XML里面的<ModeInfo>。抓拍库以图搜图，不支持频繁检索；检索条件比如时间、通道范围不建议设置太大，查询数据量过多的话查询效率会降低。

3.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //注册设备(监听报警可以不注册)
    LONG lUserID;
    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    lUserID = NET_DVR_Login_V30("10.17.35.18", 8000, "admin", "abc12345", &struDeviceInfo);
    if (lUserID < 0)
    {
        printf("Login error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //////////////////////////
    //获取智能XML通用能力集

    //输出参数
    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);

    //输出参数
    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    //URL
    char szUrl[512];

    //GET方法测试
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/Intelligent/capabilities\r\n");

    //不同功能对应不同URL，具体参考相应的协议文档
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    char szGetOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szGetOutput;
    struOutputParam.dwOutBufferSize = sizeof(szGetOutput);

    //输出状态
    char szStatusBuf[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("%s\n", szGetOutput);
    }

    //////////////////////////
    //人脸图片上传分析

    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "POST /ISAPI/Intelligent/analysisImage/face\r\n");

    //读图片文件
    FILE* fpFace = NULL;
    BYTE* byteFaceBuffer = NULL;
    int picSize = 0;
    fpFace = fopen("D://test.jpg", "rb");
    if (fpFace)
    {
        //求得文件的大小
        fseek(fpFace, 0, SEEK_END);
        picSize = ftell(fpFace);
        rewind(fpFace);
        byteFaceBuffer = new BYTE[picSize + 1];
        fread(byteFaceBuffer, picSize, 1, fpFace);
        struInput.lpInBuffer = byteFaceBuffer; //输入参数
        struInput.dwInBufferSize = picSize; //输入参数数据长度
        printf("读取图片成功，图片大小：%dByte\n", picSize);
    }
    fclose(fpFace);
    fpFace = NULL;

    //输出结果
    char szOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    char szStatusBuff[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuff;
    struOutputParam.dwStatusSize = sizeof(szStatusBuff);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("lpOutBuffer: %s\n", szOutput);
        printf("lpStatusBuffer: %s\n", szStatusBuff);
    }

    //注销用户，如果前面没有登录，该步骤则不需要
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();

    return;
}


人脸抓拍模块流程

人脸抓拍

人脸功能，根据不同的设备型号或者版本，有人脸抓拍、人脸侦测等不同的实现方式，人脸抓拍摄像机一般对应人脸抓拍，热成像人脸抓拍测温也是对应的人脸抓拍（事件里面包含测温温度），Smart IPC/NVR设备一般对应人脸侦测功能，具体可以通过设备能力集进行判断。如果设备同时支持两种方式，布防时可以选择设备上传信息类型。此处介绍人脸抓拍的接口实现流程。

目录

  • 人脸抓拍
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 登录设备之后，通过NET_DVR_GetDeviceAbility（能力集类型：DEVICE_ABILITY_INFO，能力集：VcaChanAbility，节点：中）获取智能通道分析能力集可以判断设备是否支持相关功能。

  • 人脸抓拍参数配置，包括抓拍次数、时间间隔、抓拍规则等，相关接口：NET_DVR_GetDVRConfig(命令:NET_DVR_GET_FACESNAPCFG)、NET_DVR_SetDVRConfig(命令:NET_DVR_SET_FACESNAPCFG)。参数配置和联动方式也可以通过WEB网页直接访问设备进行配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测监控画面上的人脸，检测到人脸后可按照配置的参数联动抓拍或者报警，SDK可以通过报警布防方式获取设备上传的识别结果，此时处理方式必须选择“上传中心”类型。

  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。对于人脸抓拍，回调函数中获取的报警类型(lCommand)为COMM_UPLOAD_FACESNAP_RESULT，报警信息(pAlarmInfo)对应结构体：NET_VCA_FACESNAP_RESULT。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。如果设备同时支持人脸侦测和人脸抓拍方式，调用该接口时，NET_DVR_SETUPALARM_PARAM布防参数中byFaceAlarmDetection赋值为0即选择设备上传的报警信息类型为人脸抓拍类型。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。

  • 设备人脸抓拍功能，检测到人脸时，除了联动抓拍和报警，在预览画面中也可以叠加绿色框（或者其他颜色，以实际效果为准）将人脸位置标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。

二、示例代码

下面示例代码为报警布防接收人脸抓拍事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_UPLOAD_FACESNAP_RESULT: //人脸抓拍报警信息
    {
        NET_VCA_FACESNAP_RESULT struFaceSnap = { 0 };
        memcpy(&struFaceSnap, pAlarmInfo, sizeof(NET_VCA_FACESNAP_RESULT));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struFaceSnap.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struFaceSnap.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struFaceSnap.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struFaceSnap.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struFaceSnap.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struFaceSnap.dwAbsTime);

        //保存抓拍场景图片
        if (struFaceSnap.dwBackgroundPicLen > 0 && struFaceSnap.pBuffer2 != NULL)
        {
            char cFilename[256] = { 0 };
            HANDLE hFile;
            DWORD dwReturn;

            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            sprintf(cFilename, "FaceSnapBackPic[%s][%s].jpg", struFaceSnap.struDevInfo.struDevIP.sIpV4, chTime);

            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                break;
            }
            WriteFile(hFile, struFaceSnap.pBuffer2, struFaceSnap.dwBackgroundPicLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = INVALID_HANDLE_VALUE;
        }

        printf("人脸抓拍报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] \n", \
            lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, \
            struAbsTime.dwMinute, struAbsTime.dwSecond, struFaceSnap.struDevInfo.struDevIP.sIpV4, \
            struFaceSnap.struDevInfo.wPort, struFaceSnap.struDevInfo.byIvmsChannel);
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    struAlarmParam.byFaceAlarmDetection = 0; //人脸抓拍报警，上传COMM_UPLOAD_FACESNAP_RESULT类型报警信息
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


ATM人脸检测模块流程

ATM人脸检测

ATM人脸检测功能，针对ATM设备，检测指定区域内出现的人脸，分析是否是异常人脸、是否戴墨镜、是否打电话，可以联动报警或者抓拍图片。

目录

  • ATM人脸检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，节点：<Face>中<FaceDetect>)获取智能通道分析能力集(VcaChanAbility)可以判断设备是否支持人脸检测功能。
  • 人脸检测相关参数配置，包括使能、规则区域、布防时间、联动参数、警戒事件类型(异常人脸、是否戴墨镜、是否打电话)等，相关接口：NET_DVR_GetDVRConfig(命令:NET_VCA_GET_FACEDETECT_RULECFG_V41)、NET_DVR_SetDVRConfig(命令:NET_VCA_SET_FACEDETECT_RULECFG_V41)。如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（处理方式必须选择“上传中心”类型）。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数。回调函数中获取的报警类型(lCommand)为COMM_ALARM_FACE，报警信息(pAlarmInfo)对应结构体：NET_DVR_FACEDETECT_ALARM。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。

二、示例代码

下面示例代码为报警布防接收人脸检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_FACE: //人脸检测报警信息
        {
            NET_DVR_FACEDETECT_ALARM struFaceDetectAlarm = {0};
            memcpy(&struFaceDetectAlarm, pAlarmInfo, sizeof(NET_DVR_FACEDETECT_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struFaceDetectAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struFaceDetectAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struFaceDetectAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struFaceDetectAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struFaceDetectAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struFaceDetectAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struFaceDetectAlarm.dwPicDataLen > 0 && struFaceDetectAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "FaceDetectBackPic[%s][%s].jpg",struFaceDetectAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile(cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struFaceDetectAlarm.pImage, struFaceDetectAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            //保存人脸图片
            if (struFaceDetectAlarm.dwFacePicDataLen > 0 && struFaceDetectAlarm.pFaceImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "FaceDetectFacePic[%s][%s].jpg",struFaceDetectAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile(cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struFaceDetectAlarm.pFaceImage, struFaceDetectAlarm.dwFacePicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            printf("ATM人脸检测报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] byAlarmPicType[%d]\n",\
            lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, \
            struAbsTime.dwMinute, struAbsTime.dwSecond, struFaceDetectAlarm.struDevInfo.struDevIP.sIpV4, \
            struFaceDetectAlarm.struDevInfo.wPort, struFaceDetectAlarm.struDevInfo.byIvmsChannel, struFaceDetectAlarm.byAlarmPicType);
        }
        break;
        default:
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


混合目标检测模块流程

混合目标检测

最初我司产品检测不同类型的目标，需要由人体、车（非机动）、人脸等不同的智能相机采集，其方式存在下面问题：

1）安装相机繁琐； 2）人、人脸、车等不同类型事件之间无法关联； 3）事件类型较多，分析难度大； 4）不同事件之间出现很多冗余，造成数据量较大，带宽占用严重。

为了解决上述问题，将多种智能检测（人体、车（非机动）、人脸）合并到一个事件中，由一台设备去实现同时对多种目标的检测，并实现多种检测类型的对应关系，减少用户集成难度。

将多种智能检测合并到一个事件中，用户可根据规则配置，同时对人体、车（非机动）、人脸等类型目标进行检测，并上报检测结果，这就是混合目标检测功能。混合目标事件结果上报是以单目标为中心，确保每次事件仅上报一个目标，事件上报中的所有属性类型（包含人体、车（非机动）、人脸）都属于同一个目标的；该事件可支持单一属性上报，也可以支持混合属性上报，因此单个目标的属性可以为下图四种属性的任意一种或者几种的组合。如下图所示，多种属性都是针对同一个目标的，一次事件上报仅上报一个目标。

目录

  • 混合目标检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

相关功能对应的SDK接口调用流程如下图所示，其中虚线框的内容是可选的，不会影响其他流程和模块功能的使用。

  • 登录设备之后，通过获取能力集判断设备或者设备通道是否支持混合目标检测相关功能：
    1) NET_DVR_STDXMLConfig(命令:GET /ISAPI/Event/capabilities)获取设备事件能力集判断设备是否支持相关功能，对应设备事件能力集<EventCap>中节点<isSupportMixedTargetDetection>(是否支持混合目标检测)。
    2) NET_DVR_STDXMLConfig(命令:GET /ISAPI/Intelligent/channels/<channelID>/capabilities)获取设备通道智能能力集判断设备通道是否支持相关功能，对应设备通道智能能力集<IntelliCap>中节点<isSupportMixedTargetDetection>(是否支持混合目标检测)。
  • 设备支持多种智能检测功能时需要配置智能资源分配，设置为混合目标模式，相关接口：NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource/capabilities)、NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource)。
  • 混合目标检测使能、规则、区域等参数配置：
    1) 获取混合目标配置能力集：NET_DVR_STDXMLConfig（命令：GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capabilities?format=json）。
    2) 混合目标规则配置需要区分是多场景还是单场景，通过混合目标配置能力集可以判断设备是否支持混合目标规则配置并且支持多场景（RuleInfoCap中有MultiScene字段）。
    3) 单场景混合目标规则配置，相关接口：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection?format=json)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<ID>/mixedTargetDetection?format=json)。
    4) 多场景混合目标规则配置，相关接口：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene?format=json)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene?format=json)、NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene/?format=json)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene/?format=json)。
  • 联动方式配置（如果客户端SDK需要通过报警布防方式获取混合目标检测结果，处理方式必须选择“上传中心”）：
    1) 能力集获取：通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggersCap)可以获取混合目标检测支持的事件触发类型，对应节点：<MixedTargetDetectionCap>。
    2) 获取和设置联动参数：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/mixedTargetDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/mixedTargetDetection-<channelID>)等。
  • 布防时间配置配置，相关接口：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/mixedTargetDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/mixedTargetDetection-<channelID>)等。
  • 相关参数配置可以直接通过WEB网页或者客户端软件访问设备进行配置，如果事先已经配置则可省略上述过程。
  • 混合目标检测报警事件通过报警布防方式或者报警监听方式上传，报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防（V41接口也支持，新接口兼容老接口），布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。混合目标检测上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用布防接口时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 报警监听方式实现方法：
    1) 调用NET_DVR_StartListen_V30启动监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录设备，多台设备可以使用同一个监听端口也可以设置不同的监听端口（最多10个不同的端口）。只需要设置一个回调函数，所有设备报警信息都是在同一个回调函数中返回，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中sSerialNumber、sSocketIP、wLinkPort等参数判断区分设备。
    2) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源。
    3) SDK不主动发起连接设备，只是在设定的端口上监听接收设备主动上传的报警信息。设备主动连接SDK所在电脑主机，所以需要在设备端事先配置好上传主机的IP和端口，和SDK监听的IP和端口必须一致。可以调用参数配置接口NET_DVR_GetDVRConfig（命令:NET_DVR_GET_NETCFG_V50）和NET_DVR_SetDVRConfig（命令:NET_DVR_SET_NETCFG_V50）进行配置，对应网络参数（NET_DVR_NETCFG_V50）结构体中的struAlarmHostIpAddr、wAlarmHostIpPort、struAlarmHost2IpAddr、wAlarmHost2IpPort参数，配置接口调用需要先登录设备。
  • 回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。混合目标报警数据JSON数据具体描述请参考：混合目标检测报警JSON数据。

二、示例代码

下面示例代码为报警布防接收混合目标检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo != NULL)
        {
            //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
            printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
    break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


人体目标识别模块流程

人体目标识别

人体目标识别功能，检测在指定区域内是否有指定人体目标，并且分析人体属性包含是否戴眼镜、上衣颜色、是否骑车、是否背包等。

目录

  • 人体目标识别
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 登录设备之后，获取设备能力集判断是否支持人体目标识别相关功能：
    1) NET_DVR_GetDeviceAbility获取设备能力集判断设备是否支持相关功能，能力集类型：DEVICE_ABILITY_INFO，对应智能通道分析能力集(VcaChanAbility)中节点<HumanRecognition>。
    2) NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/capabilities，获取人体目标识别配置能力集。
  • 人体目标识别相关参数配置，包括使能、规则区域、布防时间、联动参数等，相关接口：
    1) 目标识别参数配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition)。
    2) 联动方式配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/triggers/humanRecognition-<channelID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Event/triggers/humanRecognition-<channelID>)。
    3) 布防时间配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/humanRecognition/humanRecognition-<channelID>?mode=<mode>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Event/schedules/humanRecognition/humanRecognition-<channelID>?mode=<mode>)。
  • 参数配置和联动方式等，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防（V41接口也支持，新接口兼容老接口），布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。人体目标识别上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，从Json数据里面解析数图片数据可以直接保存成文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用布防接口时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 报警监听方式实现方法：
    1) 调用NET_DVR_StartListen_V30启动监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录设备，多台设备可以使用同一个监听端口也可以设置不同的监听端口（最多10个不同的端口）。只需要设置一个回调函数，所有设备报警信息都是在同一个回调函数中返回，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中sSerialNumber、sSocketIP、wLinkPort等参数判断区分设备。
    2) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源。
    3) SDK不主动发起连接设备，只是在设定的端口上监听接收设备主动上传的报警信息。设备主动连接SDK所在电脑主机，所以需要在设备端事先配置好上传主机的IP和端口，和SDK监听的IP和端口必须一致。可以调用参数配置接口NET_DVR_GetDVRConfig（命令:NET_DVR_GET_NETCFG_V50）和NET_DVR_SetDVRConfig（命令:NET_DVR_SET_NETCFG_V50）进行配置，对应网络参数（NET_DVR_NETCFG_V50）结构体中的struAlarmHostIpAddr、wAlarmHostIpPort、struAlarmHost2IpAddr、wAlarmHost2IpPort参数，配置接口调用需要先登录设备。
  • 回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。人员密度检测事件数据的JSON数据具体描述请参考：{人体目标识别Json数据}或者{全局目标侦测JSON数据}。

二、示例代码

下面示例代码为报警布防接收人体识别事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo != NULL)
        {
            //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
            printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
    break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


人员密度模块流程

人员密度检测

人员密度检测功能，获取在指定区域内时间段内人数统计以及人员密度等。

目录

  • 人员密度检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

具体流程如上图所示，其中虚线框的内容是可选的，不会影响其他流程和模块功能的使用。

  • 登录设备之后，获取设备能力集判断是否支持人员密度检测相关功能：
    1) NET_DVR_GetDeviceAbility获取设备能力集判断设备是否支持相关功能，能力集类型：VCA_DEV_ABILITY，对应智能设备能力集(NET_VCA_DEV_ABILITY)中参数byPersonDensityDetection(人员密度检测通道个数)。
    2) NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection/capabilities，获取人员密度检测能力集。
  • 人员密度检测相关参数配置，包括使能、规则区域、布防时间、联动参数等，相关接口：
    1) 人员密度检测参数配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection)。
    2) 人员密度高级参数配置(OSD和码流叠加)：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/advancedConfiguration)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/advancedConfiguration)。
    3) 数据上传配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/analyzeDataUploadCtrl)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/analyzeDataUploadCtrl)。
    4) 联动方式配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/triggers/personDensityDetection-<channelID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Event/triggers/personDensityDetection-<channelID>)。
    5) 布防时间配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/personDensityDetection/personDensityDetection-<channelID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Event/schedules/personDensityDetection/personDensityDetection-<channelID>)。
  • 规则参数配置和联动方式配置等，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式或者报警监听方式获取设备上传的检测结果（联动配置中的处理方式必须选择“上传中心”类型，同时需要配置启用人员密度数据上传功能）。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防（V41接口也支持，新接口兼容老接口），布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。人员密度检测上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，从Json数据里面解析数图片数据可以直接保存成文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用布防接口时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 报警监听方式实现方法：
    1) 调用NET_DVR_StartListen_V30启动监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录设备，多台设备可以使用同一个监听端口也可以设置不同的监听端口（最多10个不同的端口）。只需要设置一个回调函数，所有设备报警信息都是在同一个回调函数中返回，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中sSerialNumber、sSocketIP、wLinkPort等参数判断区分设备。
    2) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源。
    3) SDK不主动发起连接设备，只是在设定的端口上监听接收设备主动上传的报警信息。设备主动连接SDK所在电脑主机，所以需要在设备端事先配置好上传主机的IP和端口，和SDK监听的IP和端口必须一致。可以调用参数配置接口NET_DVR_GetDVRConfig（命令:NET_DVR_GET_NETCFG_V50）和NET_DVR_SetDVRConfig（命令:NET_DVR_SET_NETCFG_V50）进行配置，对应网络参数(NET_DVR_NETCFG_V50)结构体中的struAlarmHostIpAddr、wAlarmHostIpPort、struAlarmHost2IpAddr、wAlarmHost2IpPort参数，配置接口调用需要先登录设备。
  • 回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg(命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。人员密度检测事件数据的JSON数据具体描述请参考：{人员密度报警Json数据}，其中"recognitionType"字段为"human"并且"recognition"字段为"personDensityDetection"表示人员密度检测结果上传，数据包含统计人数、密度等级和图片。

二、示例代码

下面示例代码为报警布防接收人员密度检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo != NULL)
        {
            //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
            printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
        }

    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
    break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


人员排队检测模块流程

人员排队检测

人员排队检测功能，是指设备对监控范围内的特定规则区域中人员排队情况进行检测，当排队情况超出配置时的报警阈值，则对用户进行报警事件上报。人员排队检测功能可针对人员排队时长以及人员排队人数两个维度进行检测，支持多个规则区域进行检测，每个规则可单独配置对应的报警阈值，也支持根据不同区域及检测类型独立上报事件。

【排队人数检测】

该检测是指设备对某规则区域内的排队人数进行检测，当人数超过阈值时，设备将进行该区域排队人数事件上报。如下图区域1中，若事先对该区域设置的排队人数阈值为6人，当区域中人数大于或等于6人时，设备将进行事件上报，并且之后设备会根据配置的报警间隔时间持续上报。

【排队时长检测】

该检测是指设备对某规则区域内所有排队人员进行检测，当某目标超过阈值时，设备将进行该区域内某个目标的排队时长事件上报。如下图区域2中，若事先对该区域设置的排队时长阈值为30分钟，当区域中目标A的排队等待时间大于或等于30分钟时，设备将进行事件上报，并且之后设备会根据配置的报警间隔时间持续上报。

目录

  • 人员排队检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

相关功能对应的SDK接口调用流程如下图所示，其中虚线框的内容是可选的，不会影响其他流程和模块功能的使用。

  • 登录设备之后，通过获取能力集判断设备或者设备通道是否支持人员排队检测相关功能：
    1) NET_DVR_STDXMLConfig(命令:GET /ISAPI/Event/capabilities)获取设备事件能力集判断设备是否支持相关功能，对应设备事件能力集<EventCap>中节点<isSupportPersonQueueDetection>(是否支持人员排队检测)。
    2) NET_DVR_STDXMLConfig(命令:GET /ISAPI/Intelligent/channels/<channelID>/capabilities)获取设备通道智能能力集判断设备通道是否支持相关功能，对应设备通道智能能力集<IntelliCap>)中节点<isSupportPersonQueueDetection>(是否支持人员排队检测)。
  • 人员排队检测参数配置，包括人员排队检测使能、规则、区域和阈值和联动方式、布防时间等参数配置：
    1) 获取人脸排队检测参数配置能力集：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/capabilities?format=json)。
    2) 获取和设置排队检测参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/personQueueDetection?format=json)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<channelID>/personQueueDetection?format=json)。
  • 联动方式配置（如果SDK需要布防或者监听接收人员排队检测事件，处理方式必须选择“上传中心”）：
    1) 能力集获取：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggersCap)可以获取人员排队检测支持的事件触发类型，对应节点：<personqueuedetectiontriggercap>。
    2) 获取和设置相关参数：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/personQueueDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/personQueueDetection-<channelID>)。
  • 布防时间配置配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/personQueueDetection/<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/personQueueDetection/<channelID>)。
  • 相关参数配置可以直接通过WEB网页或者客户端软件访问设备进行配置，如果事先已经配置则可省略上述过程。
  • 排队人数检测和排队时长检测报警事件通过报警布防方式或者报警监听方式上传，报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防（V41接口也支持，新接口兼容老接口），布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。人员排队检测上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，从Json数据里面解析数图片数据可以直接保存成文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用布防接口时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 报警监听方式实现方法：
    1) 调用NET_DVR_StartListen_V30启动监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录设备，多台设备可以使用同一个监听端口也可以设置不同的监听端口（最多10个不同的端口）。只需要设置一个回调函数，所有设备报警信息都是在同一个回调函数中返回，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中sSerialNumber、sSocketIP、wLinkPort等参数判断区分设备。
    2) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源。
    3) SDK不主动发起连接设备，只是在设定的端口上监听接收设备主动上传的报警信息。设备主动连接SDK所在电脑主机，所以需要在设备端事先配置好上传主机的IP和端口，和SDK监听的IP和端口必须一致。可以调用参数配置接口NET_DVR_GetDVRConfig（命令:NET_DVR_GET_NETCFG_V50）和NET_DVR_SetDVRConfig（命令:NET_DVR_SET_NETCFG_V50）进行配置，对应网络参数（NET_DVR_NETCFG_V50）结构体中的struAlarmHostIpAddr、wAlarmHostIpPort、struAlarmHost2IpAddr、wAlarmHost2IpPort参数，配置接口调用需要先登录设备。
  • 回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。报警数据JSON数据具体描述请参考：人员排队时长检测报警JSON数据、人员排队人数检测报警JSON数据。

二、示例代码

下面示例代码为报警布防接收人员排队检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo != NULL)
        {
            //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
            printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
    break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


客流量功能模块流程

客流量统计

客流量统计（或过线计数），统计监控场景里面一定时间段内的客流量或者物品的过线数量（进入人数、离开人数、经过人数等）。如果设备本地有存储设备，比如SD卡或者FLASH，启动客流量统计功能之后，设备本地将会存储客流量数据，也可以事后查询统计报表。

目录

  • 客流量统计
  • 目录
  • 一、实时数据上传
    • 1.1 接口调用流程
    • 1.2 示例代码
  • 二、历史数据查询
    • 2.1 接口调用流程
    • 2.2 示例代码

一、实时数据上传

1.1 接口调用流程

客流量统计（或过线计数），统计监控场景里面一定时间段内的客流量或者物品的过线数量（进入人数、离开人数、经过人数等）。

  • 登录设备之后，通过NET_DVR_GetDeviceAbility获取设备能力集判断设备是否支持相关功能，能力集类型：DEVICE_ABILITY_INFO，对应智能设备能力集(VcaDevAbility)中节点<PDCChanNum>和智能通道分析能力集(VcaChanAbility)中节点<PDC>。
  • 客流量相关参数配置(NET_DVR_PDC_RULE_CFG_V42)，包括使能、规则区域（或检测线、检测折线）、计数触发方式、数据统计上传周期、布防时间、联动参数、标定等，相关接口：NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_PDC_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_PDC_RULECFG_V42)。参数配置和联动方式也可以通过WEB网页直接访问设备进行配置，如果事先已经配置则可省略该过程。配置相关参数和联动方式之后，设备将按照配置的规则自动检测进出流量，SDK可以通过报警布防方式获取设备上传的实时统计信息（处理方式必须选择“上传中心”类型）。
  • 报警布防方式实现方法： 1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数，在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数。回调函数中获取的报警类型(lCommand)为COMM_ALARM_PDC，报警信息(pAlarmInfo)对应结构体：NET_DVR_PDC_ALRAM_INFO。 2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。 3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 设备有三种不同的的计数触发方式(NET_DVR_PDC_RULE_CFG_V42中的byCountingType参数可配置)，不同的触发方式对应不同的类型的客流量数据(数据类型通过信息结构体NET_DVR_PDC_ALRAM_INFO中byMode参数进行区分)，设备支持的类型通过能力集进行判断：
    1) 无：即不使用触发方式计数，算法常开，一直统计客流，设备上传的客流量数据有两种类型：实时统计结果(byMode为0)、周期统计结果(byMode为1)。“实时统计结果”是计数发生变化时上传的实时统计结果（变化频繁的情况下每秒更新一次），自上次清零动作后开始计算的实时数量；“周期统计结果”是设定统计周期内增加的数量，更新频率即为设定的统计周期（默认15分钟，最小1分钟，最大60分钟）。
    2) 报警输入触发：通过报警输入口接入的开关量信号来控制客流算法开闭，信号类型根据实际情况可以选择“电平信号”或者“脉冲信号”，统计开关门时间间隔内的客流量数据，设备上传的客流量数据类型为信号量触发(byMode为2)。
    3) 视频触发：设备自身通过分析视频画面判断当前开关门状态控制客流算法开闭，统计开关门时间间隔内的客流量数据，设备上传的客流量数据类型为信号量触发(byMode为2)。
  • 客流量实时数据清零动作，包括设备重启、手动清零或自动清零，设备支持的清零接口通过能力集进行判断： 1) NET_DVR_GetDVRConfig(命令: NET_DVR_GET_RESET_COUNTER)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_RESET_COUNTER)，对应智能通道分析能力集里面中的子节点和。
    2) 客流量相关参数配置(NET_DVR_PDC_RULE_CFG_V42)中的struDailyResetTime参数配置，对应智能通道分析能力集里面<PDC>中的子节点<isSupportDailyResetTime>。
    3) 调用NET_DVR_STDXMLConfig接口，下发命令：PUT /ISAPI/System/Video/inputs/channels/1/counting/resetCount，可以实现手动清零操作。

1.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理，具体可参考ClientDemo。

    switch(lCommand)
    {
        case COMM_ALARM_PDC: //客流量统计报警信息
        {
              NET_DVR_PDC_ALRAM_INFO struPDCAlarmInfo = {0};
              memcpy(&struPDCAlarmInfo, pAlarmInfo, sizeof(struPDCAlarmInfo));
              if (struPDCAlarmInfo.byMode == 0) //0-实时统计结果，自上次清零动作（包括设备重启、手动清零或每天零点自动清零）后开始计算的实时数量
              {
                  NET_DVR_TIME  struAbsTime = {0};
                  struAbsTime.dwYear = GET_YEAR(struPDCAlarmInfo.uStatModeParam.struStatFrame.dwAbsTime);
                  struAbsTime.dwMonth = GET_MONTH(struPDCAlarmInfo.uStatModeParam.struStatFrame.dwAbsTime);
                  struAbsTime.dwDay = GET_DAY(struPDCAlarmInfo.uStatModeParam.struStatFrame.dwAbsTime);
                  struAbsTime.dwHour = GET_HOUR(struPDCAlarmInfo.uStatModeParam.struStatFrame.dwAbsTime);
                  struAbsTime.dwMinute = GET_MINUTE(struPDCAlarmInfo.uStatModeParam.struStatFrame.dwAbsTime);
                  struAbsTime.dwSecond = GET_SECOND(struPDCAlarmInfo.uStatModeParam.struStatFrame.dwAbsTime);

                  //设备IP、端口、通道、离开人数、进入人数、是否Smart报警、绝对时间
                  printf("DevIP:[%s]Port[%d]Channel[%d]single frame:Channel[%d]LeaveNum[%d]EnterNum[%d]Smart[%d]\
                  AbsTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]\n", struPDCAlarmInfo.struDevInfo.struDevIP.sIpV4, \
                  struPDCAlarmInfo.struDevInfo.wPort, struPDCAlarmInfo.struDevInfo.byChannel, \
                  struPDCAlarmInfo.byChannel, struPDCAlarmInfo.dwLeaveNum, struPDCAlarmInfo.dwEnterNum,\
                  struPDCAlarmInfo.bySmart, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay,\
                  struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);
              }
              if (struPDCAlarmInfo.byMode == 1) //1-周期统计结果，设定的统计周期内增加的数量，更新频率即为设定的统计周期（默认15分钟，最小1分钟，最大60分钟）
              {
                  NET_DVR_TIME  struStartTime = {0};
                  NET_DVR_TIME  struEndTime = {0};
                  struStartTime = struPDCAlarmInfo.uStatModeParam.struStatTime.tmStart;
                  struEndTime = struPDCAlarmInfo.uStatModeParam.struStatTime.tmEnd;

                  //设备IP、端口、通道、离开人数、进入人数、经过人数、是否Smart报警、开始时间、结束时间
                  printf("DevIP:[%s]Port[%d]Channel[%d]single frame:Channel[%d]LeaveNum[%d]EnterNum[%d]PassingNum[%d]Smart[%d]\
                  StartTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]EndTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]\n",\
                  struPDCAlarmInfo.struDevInfo.struDevIP.sIpV4, struPDCAlarmInfo.struDevInfo.wPort,\
                  struPDCAlarmInfo.struDevInfo.byChannel, struPDCAlarmInfo.byChannel, struPDCAlarmInfo.dwLeaveNum,\
                  struPDCAlarmInfo.dwEnterNum, struPDCAlarmInfo.dwPassingNum, struPDCAlarmInfo.bySmart, struStartTime.dwYear,\
                  struStartTime.dwMonth, struStartTime.dwDay, struStartTime.dwHour, struStartTime.dwMinute,\
                  struStartTime.dwSecond, struEndTime.dwYear, struEndTime.dwMonth, struEndTime.dwDay, struEndTime.dwHour, \
                  struEndTime.dwMinute, struEndTime.dwSecond);
              }
              //其他信息处理......
              break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、历史数据查询

2.1 接口调用流程

  • 登录设备之后，首先调用NET_DVR_StartRemoteConfig建立长连接，命令：NET_DVR_GET_PDC_RESULT。然后通过NET_DVR_GetNextRemoteConfig逐个查询获取客流量数据，数据信息结构体为NET_DVR_PDC_RESULT，接口返回1000和1001表示查询到一个结果信息和正在查询，需要再循环调用该接口直到接口返回1002（结束）或者1003（异常）。最后调用NET_DVR_StopRemoteConfig关闭连接，释放资源。
  • 设备端存储的统计报表数据清空，不同的存储方式，对应不同的方法： 1) SD卡存储，则通过格式化SD卡来实现，SD卡里面的所有数据都会清空，对应SDK接口：NET_DVR_FormatDisk。 2) FLASH存储，则通过NET_DVR_STDControl(命令: NET_DVR_REMOVE_FLASHSTORAGE)可以实现，设备FLASH当前存储的所有数据信息都将会被清除。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    NET_DVR_PDC_QUERY_COND m_struPdcResultCond={0};
    m_struPdcResultCond.dwSize = sizeof(m_struPdcResultCond);//客流量数据查询条件
    m_struPdcResultCond.dwChannel = 1; //设备通道号

    //查询开始时间
    m_struPdcResultCond.struStartTime.wYear = 2016;
    m_struPdcResultCond.struStartTime.byMonth = 9;
    m_struPdcResultCond.struStartTime.byDay = 5;
    m_struPdcResultCond.struStartTime.byHour = 00;
    m_struPdcResultCond.struStartTime.byMinute = 00;
    m_struPdcResultCond.struStartTime.bySecond = 00;

    //查询结束时间
    m_struPdcResultCond.struEndTime.wYear = 2016;
    m_struPdcResultCond.struEndTime.byMonth = 9;
    m_struPdcResultCond.struEndTime.byDay = 11;
    m_struPdcResultCond.struEndTime.byHour = 23;
    m_struPdcResultCond.struEndTime.byMinute = 59;
    m_struPdcResultCond.struEndTime.bySecond = 59;

    m_struPdcResultCond.byReportType = 2; //查询类型：0- 无效值，1- 日报表，2- 周报表，3- 月报表，4- 年报表

    LONG m_lHandle = NET_DVR_StartRemoteConfig(lUserID, NET_DVR_GET_PDC_RESULT, &m_struPdcResultCond, sizeof(m_struPdcResultCond), NULL, NULL);
    if (m_lHandle >= 0)
    {
        LONG iNextRet = 0;
        NET_DVR_PDC_RESULT m_struPdcResult = {0};
        while(true)
        {
            iNextRet = NET_DVR_GetNextRemoteConfig(m_lHandle, &m_struPdcResult, sizeof(NET_DVR_PDC_RESULT));
            if (iNextRet == NET_SDK_GET_NEXT_STATUS_SUCCESS) //成功查找到数据
            {
                printf("StartTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]EndTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]dwEnterNum[%d]dwLeaveNum[%d]\n",\
                m_struPdcResult.struStartTime.wYear, m_struPdcResult.struStartTime.byMonth, m_struPdcResult.struStartTime.byDay,\
                m_struPdcResult.struStartTime.byHour, m_struPdcResult.struStartTime.byMinute, m_struPdcResult.struStartTime.bySecond,\
                m_struPdcResult.struEndTime.wYear, m_struPdcResult.struEndTime.byMonth, m_struPdcResult.struEndTime.byDay, \
                m_struPdcResult.struEndTime.byHour, m_struPdcResult.struEndTime.byMinute, m_struPdcResult.struEndTime.bySecond);
            }
            else
            {
                if (iNextRet == NET_SDK_GET_NETX_STATUS_NEED_WAIT) //需等待设备发送数据
                {
                    Sleep(5);
                    continue;
                }
                if (iNextRet == NET_SDK_GET_NEXT_STATUS_FINISH) //数据全部查找结束
                {
                    printf("客流量数据查询结束!\n");
                    break;
                }
                else if(iNextRet == NET_SDK_GET_NEXT_STATUS_FAILED) //查找出现异常
                {
                    printf("查找异常!\n");
                    break;
                }
                else
                {
                    printf("未知状态!\n");
                    break;
                }
            }

        }
    }
    else
    {
        printf("客流量数据查询失败! 错误号: %d\n",NET_DVR_GetLastError());
    }

    if (m_lHandle >= 0)
    {
        if (!NET_DVR_StopRemoteConfig(m_lHandle))
        {
            printf("停止客流量数据查询失败! 错误号: %d\n",NET_DVR_GetLastError());
        }
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(区域入侵)

异常行为识别：区域入侵

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【区域入侵】

检测在指定区域内是否有指定目标入侵，目前入侵区域超过设置的阈值才发生报警。

目录

  • 异常行为识别：区域入侵
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 区域入侵事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_INTRUSION。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，能力集：EventAbility，节点：<FieldDetection>)获取事件能力集可以判断设备是否支持相关功能。
  • 区域入侵侦测参数配置，包括使能、区域范围、灵敏度、阈值、布防时间、联动参数等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_FIELD_DETECTION)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_FIELD_DETECTION)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<Intrusion>可以判断设备是否支持相关功能。
  • 周界入侵参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_INTRUSION。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括区域入侵在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括区域入侵在内的9种异常行为识别事件)。
  • 区域入侵参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isFieldDetectionSupport>可以判断设备是否支持异常行为识别的区域入侵功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<FieldDetectionParam>是区域入侵参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为fieldDetection表示区域入侵。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 区域入侵侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收区域入侵事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ALARM_RULE: //异常行为识别报警信息
    {
        NET_VCA_RULE_ALARM struVcaAlarm = { 0 };
        memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

        //保存抓拍场景图片
        if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
        {
            char cFilename[256] = { 0 };
            HANDLE hFile;
            DWORD dwReturn;

            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg", struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                break;
            }
            WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = INVALID_HANDLE_VALUE;
        }

        WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

        printf("\n\n");
        printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
            lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
            struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
            struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

        NET_VCA_TARGET_INFO tmpTargetInfo;
        memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
        printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
            tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
            tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

        switch (wEventType)
        {
        case ENUM_VCA_EVENT_INTRUSION: //区域入侵报警
        {
            printf("区域入侵报警: wDuration[%d], Sensitivity[%d]\n", \
                struVcaAlarm.struRuleInfo.uEventParam.struIntrusion.wDuration, \
                struVcaAlarm.struRuleInfo.uEventParam.struIntrusion.bySensitivity);

            printf("规则区域: \n");
            NET_VCA_POLYGON tempPolygon;
            memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struIntrusion.struRegion, sizeof(NET_VCA_POLYGON));
            for (int i = 0; i < (int)tempPolygon.dwPointNum; i++)
            {
                printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
            }

            break;
        }
        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
        }
        break;
    }

    default:
    {
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


安全帽检测模块流程

安全帽检测

安全帽检测功能，发现有人员没有带安全帽时报警，从而预防事故的发生。 安全帽检测功能也是属于异常行为识别事件的一种。

目录

  • 安全帽检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 安全帽检测能力集和参数配置，如果这些参数已经配置完成（比如WEB网页直接登录设备进行配置界面进行设置），那么虚线框部分可以省略：
    1) 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集，其中节点<isSupportSafetyHelmetDetection>表示支持安全帽检测能力，然后通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/capabilities)获取安全帽检测配置能力集。
    2) 安全帽检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels//safetyHelmetDetection、PUT /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection)。
    3) 安全帽检测高级参数配置，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration、PUT /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration)。
    4) 安全帽检测联动方式配置，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration、PUT /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration)。
    5) 安全帽检测布防时间配置，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/safetyHelmetDetection/safetyHelmetDetection-<channelID>、PUT /ISAPI/Event/schedules/safetyHelmetDetection/safetyHelmetDetection-<channelID>)。
    6) 配置相关参数之后，设备自动检测监控区域是否有未带安全帽事件并且联动录像、云台、抓拍或者报警等，SDK可以通过报警布防方式获取设备上传的报警信息，此时处理方式必须选择“上传中心”类型。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防（V41接口也支持，新接口兼容老接口），布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 安全帽检测事件，对应回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。安全帽报警数据JSON数据具体描述请参考：安全帽检测报警JSON数据，recognitionType为safetyHelmet。
  • 安全帽检测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。

二、示例代码

下面示例代码为报警布防接收安全帽检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo != NULL)
        {
            //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
            printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
    break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


高空抛物检测模块流程

高空抛物检测

通常部署在层高高于5层的小区、写字楼等区域，对视频监控内的建筑物进行抛物检测。若视频检测规则区域中出现抛出或坠落的物体，则对物体进行抛物线运动轨迹检测；并在物体完成抛物线运动后，进行报警信息以及图片上报，上报的图片中将叠加完整的运动轨迹。

SDK接收报警方式有两种：
1）报警布防方式，是指SDK主动连接设备，建立报警上传通道，设备发生报警之后发送给SDK。需要先注册登录设备。
2）报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警主机的IP和端口，和SDK监听的IP、端口需要一致。

目录

  • 高空抛物检测
    • 目录
    • 一、报警布防方式
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、报警监听方式
      • 2.1 接口调用流程
      • 2.2 示例代码

一、报警布防方式

1.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，登录、能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 登录设备之后，通过获取能力集判断设备或者设备通道是否支持高空抛物检测相关功能，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/System/capabilities)获取设备事件能力集判断设备是否支持相关功能，对应设备事件能力集(DeviceCap)中节点<isSupportObjectsThrownDetection>(是否支持高空抛物检测)。
  • 相关参数配置可以直接通过WEB网页或者客户端软件访问设备进行配置，如果事先已经配置则可省略过程：
    1）高空抛物检测使能、规则、区域和阈值等参数配置：
    a) 获取高空抛物检测参数配置能力集：NET_DVR_STDXMLConfig（命令：GET /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection/capabilities?format=json）。
    b) 获取和设置高空抛物规则配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json)。
    2）获取和设置联动方式配置（如果SDK接口需要获取高空抛物检测事件，处理方式必须选择“上传中心”）：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/objectsThrownDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/objectsThrownDetection-<channelID>)。
    3）获取和设置布防时间配置：
    NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>)。
  • 报警布防方式接收事件的实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50（V41等历史接口也是支持的，新接口兼容老接口）进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。高空抛物检测上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用布防接口时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。高空抛物报警数据JSON数据具体描述请参考：高空抛物检测报警JSON数据。

1.2 示例代码

下面示例代码为报警布防接收人员排队检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo != NULL)
        {
            //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
            printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
    break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、报警监听方式

2.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，登录、能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 登录设备之后，通过获取能力集判断设备或者设备通道是否支持高空抛物检测相关功能，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/System/capabilities)获取设备事件能力集判断设备是否支持相关功能，对应设备事件能力集(DeviceCap)中节点<isSupportObjectsThrownDetection>(是否支持高空抛物检测)。
  • 相关参数配置可以直接通过WEB网页或者客户端软件访问设备进行配置，如果事先已经配置则可省略过程：
    1）高空抛物检测使能、规则、区域和阈值等参数配置：
    a) 获取高空抛物检测参数配置能力集：NET_DVR_STDXMLConfig（命令：GET /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection/capabilities?format=json）。
    b) 获取和设置高空抛物规则配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json)。
    2）获取和设置联动方式配置（如果SDK接口需要获取高空抛物检测事件，处理方式必须选择“上传中心”）：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/objectsThrownDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/objectsThrownDetection-<channelID>)。
    3）获取和设置布防时间配置：
    NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>)。
  • 报警监听方式获取事件数据，具体实现方法：
    1) 设备端需要先配置上传主机的IP地址和端口，如果事先已经配置，该过程可以省略。可以通过WEB网页登录设备进“网络”的“高级配置”里面进行设置；也可以登录设备之后调用SDK接口进行配置，相关接口：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/notification/httpHosts)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/notification/httpHosts)。
    2) SDK调用NET_DVR_StartListen_V30开启监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录，监听的IP和端口跟设备端配置的上传主机的IP和端口必须一致。如果PC有多网卡，还需要调用NET_DVR_SetValidIP绑定当前使用的网卡。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源，此时SDK将不再监听接收报警信息。
    4) 对接多台设备的时候，每一台设备可以配置相同的监听端口，此时只需要调用一次启动监听的接口，也可以配置不同的监听端口（最多支持10个不同的端口）分别开启监听，但是报警回调函数只需要设置一个而且只有最后设置的一个回调函数有效，回调函数里面接收数据之后可以通过报警设备信息(pAlarmer)判断区分设备。
  • 回调函数中获取的报警类型(lCommand)默认为COMM_VCA_ALARM，JSON格式报警数据和二进制图片数据直接上传，需要自己解析。可以在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate为1，对应报警信息类型即COMM_ISAPI_ALARM，对应结构体：NET_DVR_ALARM_ISAPI_INFO，将JSON格式报警数据和二进制图片数据分离。高空抛物报警数据JSON数据具体描述请参考：高空抛物检测报警JSON数据。
  • 退出程序时调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo == NULL)
        {
            return;
        }
        //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
        printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //启动监听设置报警回调函数
    int lHandle = -1;
    lHandle = NET_DVR_StartListen_V30("10.17.36.38", 7200, MessageCallback, NULL);

    if (lHandle < 0)
    {
        printf("NET_DVR_StartListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //报警事件信息在回调函数里面获取
    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //停止监听
    if (!NET_DVR_StopListen_V30(lHandle))
    {
        printf("NET_DVR_StopListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


车辆检测模块流程

车辆检测

车辆检测功能，检测指定区域里面车辆车牌信息，主要是加油站专用的NVR硬盘录像机的功能。具体流程如图所示，其中虚线框的内容是可选的，不会影响其他流程和模块功能的使用。

目录

  • 车辆检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 登录设备之后，获取设备能力集判断是否支持车辆检测相关功能，相关接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Traffic/channels/<channelID>/vehicleDetect/capabilities。
  • 车辆检测相关参数配置，包括使能、牌识区域、布防时间、联动参数等，相关接口：NET_DVR_STDXMLConfig。
    1）使能、牌识区域配置，获取配置命令：GET /ISAPI/Traffic/channels/<channelID>/vehicleDetect；设置配置命令：PUT /ISAPI/Traffic/channels/<channelID>/vehicleDetect。其中<channelID>表示通道号。
    2）布防时间配置，获取配置命令：GET /ISAPI/Event/schedules/vehicledetects/vehicledetect-<channelID>；设置配置命令：PUT /ISAPI/Event/schedules/vehicledetects/vehicledetect-<channelID>。其中vehicledetect-<channelID>指定通道和事件类型，例如赋值为“vehicledetection-6”通道6的车辆检测事件。
    3）联动方式配置，获取配置命令：PUT /ISAPI/Event/triggers/vehicledetect-<channelID>；设置配置命令：PUT /ISAPI/Event/triggers/vehicledetect-<channelID>。
  • 如果事先已经配置则可省略配置过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式或者报警监听方式获取设备上传的检测结果（联动配置中的处理方式必须选择“上传中心”类型）。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。车辆检测结果上传报警信息类型：COMM_ITS_PLATE_RESULT，对应报警信息结构体：NET_ITS_PLATE_RESULT。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防（V41接口也支持，新接口兼容老接口），布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。人员密度检测上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，从Json数据里面解析数图片数据可以直接保存成文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用布防接口时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 手动指定区域触发车辆检测抓拍，相关接口：NET_DVR_STDXMLConfig，命令： GET /ISAPI/Traffic/channels/<channelID>/vehicleDetect/manualTrigger，结果直接在接口的输出参数NET_DVR_XML_CONFIG_OUTPUT的lpOutBuffer返回，包含图片数据和车辆检测结果（XML数据格式：VehicleDetectManualTrigger）。

二、示例代码

下面示例代码为报警布防接收设备自动检测抓拍车辆的结果信息的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum=0;
void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i=0;
    char filename[100];
    FILE *fSnapPic=NULL;
    FILE *fSnapPicPlate=NULL;

    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。

    switch (lCommand)
    {
        case COMM_ITS_PLATE_RESULT:
        {
            NET_ITS_PLATE_RESULT struITSPlateResult={0};
            memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

            for (i=0;i < struITSPlateResult.dwPicNum;i++)
            {
                printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号

                switch(struITSPlateResult.struPlateInfo.byColor)//车牌颜色
                {
                    case VCA_BLUE_PLATE:
                        printf("车辆颜色: 蓝色\n");
                        break;
                    case VCA_YELLOW_PLATE:
                        printf("车辆颜色: 黄色\n");
                        break;
                    case VCA_WHITE_PLATE:
                        printf("车辆颜色: 白色\n");
                        break;
                    case VCA_BLACK_PLATE:
                        printf("车辆颜色: 黑色\n");
                        break;
                    default:
                        break;
                }

                //保存场景图
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType== 1)||(struITSPlateResult.struPicInfo[i].byType == 2))
                {
                    sprintf(filename,"testITSpic%d_%d.jpg",iNum,i);
                    fSnapPic=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen,1,fSnapPic);
                    iNum++;
                    fclose(fSnapPic);
                }
                //车牌小图片
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType == 0))
                {
                    sprintf(filename,"testPicPlate%d_%d.jpg",iNum,i);
                    fSnapPicPlate=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                    iNum++;
                    fclose(fSnapPicPlate);
                }
                //其他信息处理......
            }
            break;
        }
        default:
            break;
    }

    return;
}

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //注册设备

    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //---------------------------------------
    //报警布防

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    NET_DVR_SETUPALARM_PARAM struSetupParam={0};
    struSetupParam.dwSize=sizeof(NET_DVR_SETUPALARM_PARAM);

    LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID,&struSetupParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("布防成功!\n");

    Sleep(20000); //等待接收数据

    //---------------------------------------
    //退出

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();

    return;
}


AI开放平台模块流程

AI开放平台

AI开放平台专用产品，为AI训练平台生成的算法模型提供边缘运算载体，有丰富的产品形态可供选择，从而满足多类场景需求，助力智能应用快速落地。

模型训练通过AI训练平台网站或者下载专用的训练客户端进行操作实现。训练完成之后导出模型和模型对应的JSON文件，模型上传到AI专用产品，产品配合应用平台即可以实现各类场景需求。

该文档介绍的是SDK直接对接AI开放平台摄像机或者超脑硬盘录像机的接口，支持下发模型数据给设备、规则配置、接收推理检测结果等功能。

目录

  • AI开放平台
    • 目录
    • 一、接口调用流程
      • 1.1 AI检测结果上传
      • 1.2 平台任务下发
      • 1.3 模型管理
    • 二、示例代码

一、接口调用流程

1.1 AI检测结果上传

AI开放平台AI事件检测结果，不同的模型对应不同的检测功能。模型和任务下发流程参考1.2、1.3章节。

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。

  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。

  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数。不同的模型和任务规则，上传结果信息不同，回调函数中获取的报警类型(lCommand)有四种，分别为COMM_UPLOAD_AIOP_VIDEO、COMM_UPLOAD_AIOP_PICTURE、COMM_UPLOAD_AIOP_POLLING_SNAP、COMM_UPLOAD_AIOP_POLLING_VIDEO。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。

  • 事件检测结果信息具体属性是在JSON数据中的，设备上传报警信息是JSON字符串会随着不同的模型功能而变化，因此需要结合训练平台中与模型一起导出的JSON文件进行分析。设备的算法模型可以通过接口进行管理包括上传、绑定、查询等，参考下文”1.3 模型管理“章节。

1.2 平台任务下发

相关功能可以WEB网页直接登录设备进行手动配置，如果事先配置好了，可以不需要调用这些接口。

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。

  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。。

  • 登录设备之后，获取设备能力集判断是否支持AI开放平台相关功能，相关接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json。

  • 下发分析任务，相关接口：NET_DVR_STDXMLConfig，不同的任务类型使用不同的命令。
    视频任务：POST /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json，
    图片任务：POST /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json，
    视频轮巡任务：POST /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json，
    图片轮巡任务：POST /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json。
    下发的任务支持查询、修改、删除，更多命令详见接口说明。

  • 下发任务之后设备分析结果通过报警事件上传，SDK通过报警布防方式获取，流程参考1.1章节。

  • 注销和释放SDK资源接口在程序退出的时候调用。

1.3 模型管理

相关功能可以WEB网页直接登录设备进行手动配置，如果事先配置好了，可以不需要调用这些接口。

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，获取设备能力集判断是否支持AI开放平台相关功能，并且获取设备芯片版本、引擎数量等能力数据，相关接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json。
  • 模型文件通过AI训练平台网站或者下载专用的训练客户端进行操作实现，手动获取。下发模型文件到设备，接口调用流程：
    1）调用NET_DVR_UploadFile_V40 (命令:UPLOAD_AI_ALGORITHM_MODEL)建立上传文件的长连接；
    2）循环调用NET_DVR_GetUploadState获取进度，直到上传完成；
    3）调用NET_DVR_UploadClose停止上传，断开连接、释放资源。
  • 模型文件下发到设备之后，部分设备比如硬盘录像机还需要调用NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/loading/?format=json)将模型数据和引擎绑定关联起来。
  • 调用NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engines?format=json)可以获取设备所有引擎的状态信息，包括当前已加载的所有模型信息。
  • 注销和释放SDK资源接口在程序退出的时候调用。

二、示例代码

下面示例代码为报警布防接收AI检测结果的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_UPLOAD_AIOP_VIDEO: //AI开放平台接入视频检测报警信息
    {
        NET_AIOP_VIDEO_HEAD struHead = { 0 };
        memcpy(&struHead, pAlarmInfo, sizeof(NET_AIOP_VIDEO_HEAD));
        printf("AI开放平台接入，上传视频检测数据:channel:%d,Time:%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d, \
                               TaskID:%s, AIOPDataSize:%d, PictureSize:%d, MPID[%s] PresetIndex[%d]\n", \
                               struHead.dwChannel, struHead.struTime.wYear, struHead.struTime.wMonth, struHead.struTime.wDay, \
                               struHead.struTime.wHour, struHead.struTime.wMinute, struHead.struTime.wSecond, struHead.struTime.wMilliSec, \
                               struHead.szTaskID, struHead.dwAIOPDataSize, struHead.dwPictureSize, struHead.szMPID, struHead.dwPresetIndex);

        //保存报警抓拍图片
        if (struHead.dwPictureSize > 0 && struHead.pBufferPicture != NULL)
        {
            char cFilename[256] = { 0 };
            sprintf(cFilename, "AIOP_VIDEO_Pic[%s].jpg", struHead.szTaskID);

            FILE *hFile = fopen(cFilename, "wb");
            fwrite(struHead.pBufferPicture, struHead.dwPictureSize, 1, hFile);
            fclose(hFile);
            hFile = NULL;
        }

        //保存AI检测结果JSON数据
        if (struHead.dwAIOPDataSize > 0 && struHead.pBufferAIOPData != NULL)
        {
            char cFilename[256] = { 0 };
            sprintf(cFilename, "AIOP_VIDEO_JSON[%s].json", struHead.szTaskID);

            FILE *hFile = fopen(cFilename, "wb");
            fwrite(struHead.pBufferAIOPData, struHead.dwAIOPDataSize, 1, hFile);
            fclose(hFile);
            hFile = NULL;
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


车牌识别模块流程

车牌识别

设备检测车辆时进行车牌识别、图片抓拍，并且上传识别抓拍结果。识别和抓拍是设备实现的，由设备主动上传，SDK被动接收。SDK接收报警方式有两种：

1）报警布防方式，是指SDK主动连接设备，建立报警上传通道，设备发生报警之后发送给SDK。需要先注册登录设备。
2）报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警主机的IP和端口，和SDK监听的IP、端口需要一致。

同一种报警事件是通过布防还是监听方式接收，是需要看设备支持情况的，有些设备有些报警类型只支持布防或者只支持监听方式上传，比如对接交通终端服务器需要使用报警监听方式。布防和监听，是两种不同的方式，设备同时支持的情况下，只需要选择其中一种即可。

目录

  • 车牌识别
    • 目录
    • 一、报警布防方式
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、报警监听方式
      • 2.1 接口调用流程
      • 2.2 示例代码

一、报警布防方式

1.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，可以通过NET_DVR_GetDeviceAbility获取智能交通能力集可以判断设备是否支持相关功能，能力集类型：DEVICE_ABILITY_INFO，能力集：ITDeviceAbility，节点：<ITCAbility>。
  • 车牌识别包括IO触发、虚拟线圈触发等自动触发抓拍模式和网络触发等手动抓拍模式。
    如果是自动触发模式，一般建议通过WEB网页登录设备进行配置调试，也可以通过SDK接口进行配置，相关接口：NET_DVR_GetDVRConfig(命令:NET_ITC_GET_TRIGGERCFG)、NET_DVR_SetDVRConfig(命令:NET_ITC_SET_TRIGGERCFG)、NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_TRIGGEREX_CFG)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_TRIGGEREX_CFG)等。
    如果是手动抓拍，有两种方式：1）通过NET_DVR_ManualSnap可以在接口直接返回结果信息；2）通过NET_DVR_ContinuousShoot发送网络触发连拍命令，抓拍结果跟自动触发模式一样，通过报警布防方式在报警回调函数里面返回。
  • 配置好设备相关参数，车辆通过时进行抓拍和识别，结果信息通过报警布防方式获取，具体实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。对接智能交通摄像机，布防时可以选择布防等级，一级布防（byLevel为0）最大连接数为1个，二级布防（byLevel为1）最大连接数为3个，如果已经达到上限了，再布防就会失败，SDK将返回28的错误号。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 车牌识别的报警信息类型为COMM_ITS_PLATE_RESULT（新报警信息）和COMM_UPLOAD_PLATE_RESULT（老报警信息），分别对应接口NET_DVR_SetupAlarmChan_V41中布防参数byAlarmInfoType=1和byAlarmInfoType=0。建议使用新的报警信息类型。
    1）设备是否支持新报警信息可从注册返回的能力获知，详见NET_DVR_DEVICEINFO_V30结构中bySupport1&0x80（表示是否支持车牌新报警信息），如果注册返回能力不支持，设备仅支持老报警信息上传。
    2）COMM_UPLOAD_PLATE_RESULT：兼容旧型号(976/986/966等)抓拍机，一次回调只上传一张图片信息，对应报警信息结构体：NET_DVR_PLATE_RESULT。
    3）COMM_ITS_PLATE_RESULT：应用于违章图片组一次性上传以及合成图片上传等新功能，对应报警信息结构体：NET_ITS_PLATE_RESULT。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum=0;
void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i=0;
    char filename[100];
    FILE *fSnapPic=NULL;
    FILE *fSnapPicPlate=NULL;

    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。

    switch (lCommand)
    {
        case COMM_UPLOAD_PLATE_RESULT:
        {
            NET_DVR_PLATE_RESULT struPlateResult={0};
            memcpy(&struPlateResult, pAlarmInfo, sizeof(struPlateResult));
            printf("车牌号: %s\n", struPlateResult.struPlateInfo.sLicense);//车牌号

            switch(struPlateResult.struPlateInfo.byColor)//车牌颜色
            {
                case VCA_BLUE_PLATE:
                    printf("车辆颜色: 蓝色\n");
                    break;
                case VCA_YELLOW_PLATE:
                    printf("车辆颜色: 黄色\n");
                    break;
                case VCA_WHITE_PLATE:
                    printf("车辆颜色: 白色\n");
                    break;
                case VCA_BLACK_PLATE:
                    printf("车辆颜色: 黑色\n");
                    break;
                default:
                    break;
            }

            //场景图
            if (struPlateResult.dwPicLen != 0 && struPlateResult.byResultType == 1 )
            {
                sprintf(filename,"testpic_%d.jpg",iNum);
                fSnapPic=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌图
            if (struPlateResult.dwPicPlateLen != 0 && struPlateResult.byResultType == 1)
            {
                sprintf(filename,"testPicPlate_%d.jpg",iNum);
                fSnapPicPlate=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }

            //其他信息处理......
            break;
        }
        case COMM_ITS_PLATE_RESULT:
        {
            NET_ITS_PLATE_RESULT struITSPlateResult={0};
            memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

            for (i=0;i < struITSPlateResult.dwPicNum;i++)
            {
               printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号

                switch(struITSPlateResult.struPlateInfo.byColor)//车牌颜色
                {
                    case VCA_BLUE_PLATE:
                        printf("车辆颜色: 蓝色\n");
                        break;
                    case VCA_YELLOW_PLATE:
                        printf("车辆颜色: 黄色\n");
                        break;
                    case VCA_WHITE_PLATE:
                        printf("车辆颜色: 白色\n");
                        break;
                    case VCA_BLACK_PLATE:
                        printf("车辆颜色: 黑色\n");
                        break;
                    default:
                        break;
                }

                //保存场景图
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType== 1)||(struITSPlateResult.struPicInfo[i].byType == 2))
                {
                    sprintf(filename,"testITSpic%d_%d.jpg",iNum,i);
                    fSnapPic=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen,1,fSnapPic);
                    iNum++;
                    fclose(fSnapPic);
                }
                //车牌小图片
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType == 0))
                {
                    sprintf(filename,"testPicPlate%d_%d.jpg",iNum,i);
                    fSnapPicPlate=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                    iNum++;
                    fclose(fSnapPicPlate);
                }
                //其他信息处理......
            }
            break;
        }
        default:
            break;
    }

    return;
}

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //注册设备

    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //---------------------------------------
    //报警布防

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    NET_DVR_SETUPALARM_PARAM struSetupParam={0};
    struSetupParam.dwSize=sizeof(NET_DVR_SETUPALARM_PARAM);
    struSetupParam.byLevel = 1; //布防优先级：0- 一等级（高），1- 二等级（中）
    struSetupParam.byAlarmInfoType = 1; //上传报警信息类型: 0- 老报警信息(NET_DVR_PLATE_RESULT), 1- 新报警信息(NET_ITS_PLATE_RESULT)

    LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID,&struSetupParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("布防成功!\n");

    //---------------------------------------
    //网络触发抓拍

    NET_DVR_SNAPCFG struSnapCfg;
    memset(&struSnapCfg, 0, sizeof(NET_DVR_SNAPCFG));

    //结构体大小
    struSnapCfg.dwSize = sizeof(NET_DVR_SNAPCFG);

    //线圈抓拍次数，0-不抓拍，非0-连拍次数，目前最大5次
    struSnapCfg.bySnapTimes  = 3;

    //抓拍等待时间，单位ms，取值范围[0,60000]
    struSnapCfg.wSnapWaitTime   = 1000;

    //连拍间隔时间，单位ms，取值范围[67,60000]
    struSnapCfg.wIntervalTime[0]  = 1000;
    struSnapCfg.wIntervalTime[1]  = 1000;

    //触发IO关联的车道号，取值范围[0,9]
    struSnapCfg.byRelatedDriveWay = 0;

    //网络触发连拍
    if (!NET_DVR_ContinuousShoot(lUserID, &struSnapCfg))
    {
        printf("NET_DVR_ContinuousShoot failed, error code: %d\n", NET_DVR_GetLastError());
        return;
    }
    printf("网络触发连拍!\n");

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //退出

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();

    return;
}

二、报警监听方式

2.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，登录、能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 登录设备之后，通过NET_DVR_GetDeviceAbility获取智能交通能力集可以判断设备是否支持相关功能，能力集类型：DEVICE_ABILITY_INFO，能力集：ITDeviceAbility，节点：<ITSAbility>。

  • 设备端需要先配置上传主机的IP地址和端口，如果事先已经配置，该过程可以省略。可以通过WEB网页登录设备进“远程配置”的“远程主机”配置里面进行设置；也可以登录设备之后调用SDK接口进行配置。对于终端服务器，远程主机配置相关接口：NET_DVR_GetDVRConfig(命令: NET_ITS_GET_UPLOAD_CFG)、NET_DVR_SetDVRConfig(命令: NET_ITS_SET_UPLOAD_CFG)。

  • 客户端SDK调用NET_DVR_StartListen_V30开启监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录，监听的IP和端口跟设备端配置的上传主机的IP和端口必须一致。如果PC有多网卡，还需要调用NET_DVR_SetValidIP绑定当前使用的网卡。

  • 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源，此时SDK将不再监听接收报警信息。

  • 对接多台设备的时候，每一台设备可以配置相同的监听端口，此时只需要调用一次启动监听的接口，也可以配置不同的监听端口（最多支持10个不同的端口）分别开启监听，但是报警回调函数只需要设置一个而且只有最后设置的一个回调函数有效，回调函数里面接收数据之后可以通过报警设备信息(pAlarmer)判断区分设备。

  • 车牌上传的报警类型(lCommand)有COMM_ITS_PLATE_RESULT(0x3050)和COMM_PLATE_RESULT_V50(0x3063) 两种：

当lCommand为COMM_ITS_PLATE_RESULT时，pAlarmInfo对应报警信息结构体为：NET_ITS_PLATE_RESULT；

当lCommand为COMM_PLATE_RESULT_V50时，pAlarmInfo对应的报警信息结构体为： NET_DVR_PLATE_RESULT_V50。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum = 0;
void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i = 0;
    char filename[100];
    FILE *fSnapPic = NULL;
    FILE *fSnapPicPlate = NULL;

    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。

    switch (lCommand)
    {
    case COMM_ITS_PLATE_RESULT:
    {
        NET_ITS_PLATE_RESULT struITSPlateResult = { 0 };
        memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

        for (i = 0; i < struITSPlateResult.dwPicNum; i++)
        {
            printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号

            switch (struITSPlateResult.struPlateInfo.byColor)//车牌颜色
            {
            case VCA_BLUE_PLATE:
                printf("车辆颜色: 蓝色\n");
                break;
            case VCA_YELLOW_PLATE:
                printf("车辆颜色: 黄色\n");
                break;
            case VCA_WHITE_PLATE:
                printf("车辆颜色: 白色\n");
                break;
            case VCA_BLACK_PLATE:
                printf("车辆颜色: 黑色\n");
                break;
            default:
                break;
            }

            //保存场景图
            if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0) && (struITSPlateResult.struPicInfo[i].byType == 1) || (struITSPlateResult.struPicInfo[i].byType == 2))
            {
                sprintf(filename, "testITSpic%d_%d.jpg", iNum, i);
                fSnapPic = fopen(filename, "wb");
                fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌小图片
            if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0) && (struITSPlateResult.struPicInfo[i].byType == 0))
            {
                sprintf(filename, "testPicPlate%d_%d.jpg", iNum, i);
                fSnapPicPlate = fopen(filename, "wb");
                fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
        }
        break;
    }

    case COMM_PLATE_RESULT_V50:
        NET_DVR_PLATE_RESULT_V50 struITSPlateResult = { 0 };
        memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

        printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号

        switch (struITSPlateResult.struPlateInfo.byColor)//车牌颜色
        {
        case VCA_BLUE_PLATE:
            printf("车辆颜色: 蓝色\n");
            break;
        case VCA_YELLOW_PLATE:
            printf("车辆颜色: 黄色\n");
            break;
        case VCA_WHITE_PLATE:
            printf("车辆颜色: 白色\n");
            break;
        case VCA_BLACK_PLATE:
            printf("车辆颜色: 黑色\n");
            break;
        default:
            break;
        }

        for (i = 0; i < struITSPlateResult.dwPicNum; i++)
        {

            //保存场景图
            if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0) && (struITSPlateResult.struPicInfo[i].byType == 1) || (struITSPlateResult.struPicInfo[i].byType == 2))
            {
                sprintf(filename, "testITSpic%d_%d.jpg", iNum, i);
                fSnapPic = fopen(filename, "wb");
                fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌小图片
            if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0) && (struITSPlateResult.struPicInfo[i].byType == 0))
            {
                sprintf(filename, "testPicPlate%d_%d.jpg", iNum, i);
                fSnapPicPlate = fopen(filename, "wb");
                fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
        }

        //车辆称重信息
        printf("车辆是否超限: %d\n", struITSPlateResult.struWeightResult.byIsOverWeight);
        printf("车辆轴数: %d\n", struITSPlateResult.struWeightResult.byAxleNum);
        printf("车辆车身重量(吨): %f\n", struITSPlateResult.struWeightResult.fWeight);
        printf("车辆限制重量(吨): %f\n", struITSPlateResult.struWeightResult.fLimitWeight);
        printf("车辆轴距: %f\n", struITSPlateResult.struWeightResult.fAxleLen);
        printf("车长: %d\n", struITSPlateResult.struWeightResult.dwLength);
        printf("车宽: %d\n", struITSPlateResult.struWeightResult.dwWidth);
        printf("车高: %d\n", struITSPlateResult.struWeightResult.dwHeight);

        //其他信息处理，详见NET_DVR_PLATE_RESULT_V50结构体......
    default:
        break;
    }

    return;
}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //启用监听
    LONG lHandle;
    lHandle = NET_DVR_StartListen_V30(NULL, 7200, MessageCallback, NULL);
    if (lHandle < 0)
    {
        printf("NET_DVR_StartListen_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //停止监听
    if (!NET_DVR_StopListen_V30(lHandle))
    {
        printf("NET_DVR_StopListen_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


交通违章检测模块流程

交通违章检测

交通违章检测包含：
道路违章取证：违停、逆行、压线、变道、机占非、掉头等交通事件或者路边停车事件。
道路事件检测：抛洒物、行人、路障、施工、拥堵检测。
交通流量上传：车流量、车道平均速度、车头时距、车头间距、车道时间占有率、车道空间占有率、车辆类型、排队长度、交通状态，包含统计数据和实时数据上传。

相关检测功能是设备实现的，由设备主动上传，SDK被动接收。SDK接收报警方式有两种：
1）报警布防方式，是指SDK主动连接设备，建立报警上传通道，设备发生报警之后发送给SDK。需要先注册登录设备。
2）报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警主机的IP和端口，和SDK监听的IP、端口需要一致。

同一种报警事件是通过布防还是监听方式接收，是需要看设备支持情况的，有些设备有些报警类型只支持布防或者只支持监听方式上传，比如对接交通终端服务器需要使用报警监听方式。布防和监听，是两种不同的方式，设备同时支持的情况下，只需要选择其中一种即可。

目录

  • 交通违章检测
    • 目录
    • 一、报警布防方式
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、报警监听方式
      • 2.1 接口调用流程
      • 2.2 示例代码

一、报警布防方式

1.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统总能力集，违章检测对应能力集节点：中<tfseventsupport>。
  • 违章取证、交通数据采集、道路事件检测相关参数配置，建议WEB网页直接访问设备进配置界面进行设置。
  • 报警布防方式获取事件和交通数据，具体实现方法： 1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。 2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。对接智能交通摄像机，布防时可以选择布防等级，一级布防（byLevel为0）最大连接数为1个，二级布防（byLevel为1）最大连接数为3个，如果已经达到上限了，再布防就会失败，SDK将返回28的错误号。 3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 道路违章取证，报警信息类型为COMM_ALARM_TFS，对应报警信息结构体：NET_DVR_TFS_ALARM。
  • 道路事件检测，报警信息类型为COMM_ALARM_AID_V41，对应报警信息结构体：NET_DVR_AID_ALARM_V41。
  • 交通流量统计数据上传，报警信息类型为COMM_ALARM_TPS_STATISTICS，对应报警信息结构体：NET_DVR_TPS_STATISTICS_INFO。
  • 交通流量实时数据上传，报警信息类型为COMM_ALARM_TPS_REAL_TIME，对应报警信息结构体：NET_DVR_TPS_REAL_TIME_INFO。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)
int iNum = 0;

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i = 0;
    char filename[100];
    FILE *fSnapPic = NULL;
    FILE *fSnapPicPlate = NULL;
    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。
    switch (lCommand)
    {
    case COMM_ALARM_TFS:
    {
        NET_DVR_TFS_ALARM struTfsAlarm = { 0 };
        memcpy(&struTfsAlarm, pAlarmInfo, sizeof(struTfsAlarm));
        printf("车牌号: %s\n", struTfsAlarm.struPlateInfo.sLicense);//车牌号
        switch (struTfsAlarm.struPlateInfo.byColor)//车牌颜色
        {
        case VCA_BLUE_PLATE:
            printf("车辆颜色: 蓝色\n");
            break;
        case VCA_YELLOW_PLATE:
            printf("车辆颜色: 黄色\n");
            break;
        case VCA_WHITE_PLATE:
            printf("车辆颜色: 白色\n");
            break;
        case VCA_BLACK_PLATE:
            printf("车辆颜色: 黑色\n");
            break;
        default:
            break;
        }
        for (i = 0; i < struTfsAlarm.dwPicNum; i++)
        {
            //保存场景图
            if ((struTfsAlarm.struPicInfo[i].dwDataLen != 0) && (struTfsAlarm.struPicInfo[i].byType == 1) || (struTfsAlarm.struPicInfo[i].byType == 2))
            {
                sprintf(filename, "testITSpic%d_%d.jpg", iNum, i);
                fSnapPic = fopen(filename, "wb");
                fwrite(struTfsAlarm.struPicInfo[i].pBuffer, struTfsAlarm.struPicInfo[i].dwDataLen, 1, fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌小图片
            if ((struTfsAlarm.struPicInfo[i].dwDataLen != 0) && (struTfsAlarm.struPicInfo[i].byType == 0))
            {
                sprintf(filename, "testPicPlate%d_%d.jpg", iNum, i);
                fSnapPicPlate = fopen(filename, "wb");
                fwrite(struTfsAlarm.struPicInfo[i].pBuffer, struTfsAlarm.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
        }
        //其他信息处理......
        break;
    }
    case COMM_ALARM_AID_V41:
    {
        NET_DVR_AID_ALARM_V41 struAidAlarm = { 0 };
        memcpy(&struAidAlarm, pAlarmInfo, sizeof(struAidAlarm));
        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struAidAlarm.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struAidAlarm.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struAidAlarm.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struAidAlarm.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struAidAlarm.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struAidAlarm.dwAbsTime);
        BYTE   tempMonitoringSiteID[MONITORSITE_ID_LEN + 1] = { 0 };
        memcpy(tempMonitoringSiteID, struAidAlarm.byMonitoringSiteID, sizeof(struAidAlarm.byMonitoringSiteID));
        printf("Aid AlarmV41: xmlLen[%d]IvmsChan[%d]ID[%d]Name[%s]Type[%d]LaneNo[%d] Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] \
                       Dev IP[%s]Port[%d]Chan[%d] Direction Start[%0.3f,%0.3f]Stop[%0.3f,%0.3f] SceneID[%d] SceneName[%s] Direction[%d] PTZ[%d,%d,%d] MonitoringSiteID[%s] DeviceID[%s] VehicleEnterState[%d] State[%d] ParkingID[%s]\n",
                       struAidAlarm.dwXmlLen, struAidAlarm.struDevInfo.byIvmsChannel, struAidAlarm.struAIDInfo.byRuleID, struAidAlarm.struAIDInfo.byRuleName,
                       struAidAlarm.struAIDInfo.dwAIDType, struAidAlarm.byLaneNo, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay,
                       struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond, struAidAlarm.struDevInfo.struDevIP.sIpV4,
                       struAidAlarm.struDevInfo.wPort, struAidAlarm.struDevInfo.byChannel,
                       struAidAlarm.struAIDInfo.struDirect.struStartPoint.fX, struAidAlarm.struAIDInfo.struDirect.struStartPoint.fY,
                       struAidAlarm.struAIDInfo.struDirect.struEndPoint.fX, struAidAlarm.struAIDInfo.struDirect.struEndPoint.fY,
                       struAidAlarm.struSceneInfo.dwSceneID, struAidAlarm.struSceneInfo.bySceneName, struAidAlarm.struSceneInfo.byDirection,
                       struAidAlarm.struSceneInfo.struPtzPos.wPanPos, struAidAlarm.struSceneInfo.struPtzPos.wTiltPos, struAidAlarm.struSceneInfo.struPtzPos.wZoomPos,
                       tempMonitoringSiteID, struAidAlarm.byDeviceID, struAidAlarm.struAIDInfo.byVehicleEnterState,
                       struAidAlarm.struAIDInfo.byState, struAidAlarm.struAIDInfo.byParkingID);
        break;
    }
    case COMM_ALARM_TPS_STATISTICS:
    {
        NET_DVR_TPS_STATISTICS_INFO struTpsStatInfo = { 0 };
        memcpy(&struTpsStatInfo, pAlarmInfo, sizeof(struTpsStatInfo));

        NET_DVR_TIME  struStartTime = { 0 };
        struStartTime.dwYear = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.wYear;
        struStartTime.dwMonth = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byMonth;
        struStartTime.dwDay = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byDay;
        struStartTime.dwHour = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byHour;
        struStartTime.dwMinute = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byMinute;
        struStartTime.dwSecond = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.bySecond;

        printf("Tps Statistics Info: Chan[%d] StartTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Period[%d]\n",
            struTpsStatInfo.dwChan, struStartTime.dwYear, struStartTime.dwMonth, struStartTime.dwDay,
            struStartTime.dwHour, struStartTime.dwMinute, struStartTime.dwSecond,
            struTpsStatInfo.struTPSStatisticsInfo.dwSamplePeriod);

        for (int i = 0; i < 8; i++)
        {
            printf("LaneNo[%d]Speed[%d]ArrivalFlow[%d]LightVehicle[%d]MidVehicle[%d]HeavyVehicle[%d]TimeHeadway[%d]\
                SpaceHeadway[%d]SpaceOccupyRation[%f]TimeOccupyRation[%f]QueueLen[%d]NonMotor[%d]\n",
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].byLane,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].bySpeed,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].wArrivalFlow,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwLightVehicle,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwMidVehicle,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwHeavyVehicle,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwTimeHeadway,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwSpaceHeadway,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].fSpaceOccupyRation,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].fTimeOccupyRation,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].byQueueLen,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwNonMotor);
        }
        break;
    }
    case COMM_ALARM_TPS_REAL_TIME:
    {
        NET_DVR_TPS_REAL_TIME_INFO struTpsRealtime = { 0 };
        memcpy(&struTpsRealtime, pAlarmInfo, sizeof(struTpsRealtime));

        printf("TPS Real Time Alarm: Channel[%d]Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d]Start[%d]CMD[%d]\
            SpaceHeadway[%d]TimeHeadway[%d]DeviceID[%d]DataLen[%d]Lane[%d]Speed[%d]LaneState[%d]QueueLen[%d] \
            LoopState[%d]StateMask[%d]DownwardFlow[%d]UpwardFlow[%d]JamLevel[%d]VehicleDirection[%d]\
            JamFlow[%d]ChannelizationLane[%d]VehicleType[%d]dwDeviceIDEx[%d]\n",
            struTpsRealtime.dwChan,  struTpsRealtime.struTime.wYear, struTpsRealtime.struTime.byMonth,
            struTpsRealtime.struTime.byDay, struTpsRealtime.struTime.byHour, struTpsRealtime.struTime.byMinute,
            struTpsRealtime.struTime.bySecond, struTpsRealtime.struTime.wMilliSec, struTpsRealtime.struTPSRealTimeInfo.byStart,
            struTpsRealtime.struTPSRealTimeInfo.byCMD, struTpsRealtime.struTPSRealTimeInfo.wSpaceHeadway,
            struTpsRealtime.struTPSRealTimeInfo.wTimeHeadway, struTpsRealtime.struTPSRealTimeInfo.wDeviceID,
            struTpsRealtime.struTPSRealTimeInfo.wDataLen, struTpsRealtime.struTPSRealTimeInfo.byLane,
            struTpsRealtime.struTPSRealTimeInfo.bySpeed, struTpsRealtime.struTPSRealTimeInfo.byLaneState,
            struTpsRealtime.struTPSRealTimeInfo.byQueueLen, struTpsRealtime.struTPSRealTimeInfo.wLoopState,
            struTpsRealtime.struTPSRealTimeInfo.wStateMask, struTpsRealtime.struTPSRealTimeInfo.dwDownwardFlow,
            struTpsRealtime.struTPSRealTimeInfo.dwUpwardFlow, struTpsRealtime.struTPSRealTimeInfo.byJamLevel,
            struTpsRealtime.struTPSRealTimeInfo.byVehicleDirection, struTpsRealtime.struTPSRealTimeInfo.byJamFlow,
            struTpsRealtime.struTPSRealTimeInfo.byChannelizationLane, struTpsRealtime.struTPSRealTimeInfo.byVehicleType,
             struTpsRealtime.dwDeviceIDEx);
        break;
    }
    default:
        break;
    }
    return;
}

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);
    //---------------------------------------
    //注册设备
    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码
    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };
    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    //---------------------------------------
    //报警布防

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    NET_DVR_SETUPALARM_PARAM struSetupParam = { 0 };
    struSetupParam.dwSize = sizeof(NET_DVR_SETUPALARM_PARAM);
    struSetupParam.byLevel = 0; //布防优先级：0- 一等级（高），1- 二等级（中）
    LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struSetupParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("布防成功!\n");

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //退出
    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、报警监听方式

2.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，登录、能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 违章取证、交通数据采集、道路事件检测相关参数配置，建议WEB网页直接访问设备进配置界面进行设置。
  • 报警监听方式获取事件和交通数据，具体实现方法： 1) 设备端需要先配置上传主机的IP地址和端口，如果事先已经配置，该过程可以省略。可以通过WEB网页登录设备进“远程配置”的“远程主机”配置里面进行设置；也可以登录设备之后调用SDK接口进行配置，相关接口：NET_DVR_GetDVRConfig(命令: NET_ITS_GET_UPLOAD_CFG)、NET_DVR_SetDVRConfig(命令: NET_ITS_SET_UPLOAD_CFG)。 2) 客户端SDK调用NET_DVR_StartListen_V30开启监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录，监听的IP和端口跟设备端配置的上传主机的IP和端口必须一致。如果PC有多网卡，还需要调用NET_DVR_SetValidIP绑定当前使用的网卡。 3) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源，此时SDK将不再监听接收报警信息。 4) 对接多台设备的时候，每一台设备可以配置相同的监听端口，此时只需要调用一次启动监听的接口，也可以配置不同的监听端口（最多支持10个不同的端口）分别开启监听，但是报警回调函数只需要设置一个而且只有最后设置的一个回调函数有效，回调函数里面接收数据之后可以通过报警设备信息(pAlarmer)判断区分设备。
  • 道路违章取证，报警信息类型为COMM_ALARM_TFS，对应报警信息结构体：NET_DVR_TFS_ALARM。
  • 道路事件检测，报警信息类型为COMM_ALARM_AID_V41，对应报警信息结构体：NET_DVR_AID_ALARM_V41。
  • 交通流量统计数据上传，报警信息类型为COMM_ALARM_TPS_STATISTICS，对应报警信息结构体：NET_DVR_TPS_STATISTICS_INFO。
  • 交通流量实时数据上传，报警信息类型为COMM_ALARM_TPS_REAL_TIME，对应报警信息结构体：NET_DVR_TPS_REAL_TIME_INFO。
  • 退出程序时调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)
int iNum = 0;
void CALLBACK MSesGCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i = 0;
    char filename[100];
    FILE *fSnapPic = NULL;
    FILE *fSnapPicPlate = NULL;
    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。
        switch (lCommand)
    {
    case COMM_ALARM_TFS:
    {
        NET_DVR_TFS_ALARM struTfsAlarm = { 0 };
        memcpy(&struTfsAlarm, pAlarmInfo, sizeof(struTfsAlarm));
        printf("车牌号: %s\n", struTfsAlarm.struPlateInfo.sLicense);//车牌号
        switch (struTfsAlarm.struPlateInfo.byColor)//车牌颜色
        {
        case VCA_BLUE_PLATE:
            printf("车辆颜色: 蓝色\n");
            break;
        case VCA_YELLOW_PLATE:
            printf("车辆颜色: 黄色\n");
            break;
        case VCA_WHITE_PLATE:
            printf("车辆颜色: 白色\n");
            break;
        case VCA_BLACK_PLATE:
            printf("车辆颜色: 黑色\n");
            break;
        default:
            break;
        }
        for (i = 0; i < struTfsAlarm.dwPicNum; i++)
        {
            //保存场景图
            if ((struTfsAlarm.struPicInfo[i].dwDataLen != 0) && (struTfsAlarm.struPicInfo[i].byType == 1) || (struTfsAlarm.struPicInfo[i].byType == 2))
            {
                sprintf(filename, "testITSpic%d_%d.jpg", iNum, i);
                fSnapPic = fopen(filename, "wb");
                fwrite(struTfsAlarm.struPicInfo[i].pBuffer, struTfsAlarm.struPicInfo[i].dwDataLen, 1, fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌小图片
            if ((struTfsAlarm.struPicInfo[i].dwDataLen != 0) && (struTfsAlarm.struPicInfo[i].byType == 0))
            {
                sprintf(filename, "testPicPlate%d_%d.jpg", iNum, i);
                fSnapPicPlate = fopen(filename, "wb");
                fwrite(struTfsAlarm.struPicInfo[i].pBuffer, struTfsAlarm.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
        }
        //其他信息处理......
        break;
    }
    case COMM_ALARM_AID_V41:
    {
        NET_DVR_AID_ALARM_V41 struAidAlarm = { 0 };
        memcpy(&struAidAlarm, pAlarmInfo, sizeof(struAidAlarm));
        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struAidAlarm.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struAidAlarm.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struAidAlarm.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struAidAlarm.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struAidAlarm.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struAidAlarm.dwAbsTime);
        BYTE   tempMonitoringSiteID[MONITORSITE_ID_LEN + 1] = { 0 };
        memcpy(tempMonitoringSiteID, struAidAlarm.byMonitoringSiteID, sizeof(struAidAlarm.byMonitoringSiteID));
        printf("Aid AlarmV41: xmlLen[%d]IvmsChan[%d]ID[%d]Name[%s]Type[%d]LaneNo[%d] Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] \
                       Dev IP[%s]Port[%d]Chan[%d] Direction Start[%0.3f,%0.3f]Stop[%0.3f,%0.3f] SceneID[%d] SceneName[%s] Direction[%d] PTZ[%d,%d,%d] MonitoringSiteID[%s] DeviceID[%s] VehicleEnterState[%d] State[%d] ParkingID[%s]\n",
                       struAidAlarm.dwXmlLen, struAidAlarm.struDevInfo.byIvmsChannel, struAidAlarm.struAIDInfo.byRuleID, struAidAlarm.struAIDInfo.byRuleName,
                       struAidAlarm.struAIDInfo.dwAIDType, struAidAlarm.byLaneNo, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay,
                       struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond, struAidAlarm.struDevInfo.struDevIP.sIpV4,
                       struAidAlarm.struDevInfo.wPort, struAidAlarm.struDevInfo.byChannel,
                       struAidAlarm.struAIDInfo.struDirect.struStartPoint.fX, struAidAlarm.struAIDInfo.struDirect.struStartPoint.fY,
                       struAidAlarm.struAIDInfo.struDirect.struEndPoint.fX, struAidAlarm.struAIDInfo.struDirect.struEndPoint.fY,
                       struAidAlarm.struSceneInfo.dwSceneID, struAidAlarm.struSceneInfo.bySceneName, struAidAlarm.struSceneInfo.byDirection,
                       struAidAlarm.struSceneInfo.struPtzPos.wPanPos, struAidAlarm.struSceneInfo.struPtzPos.wTiltPos, struAidAlarm.struSceneInfo.struPtzPos.wZoomPos,
                       tempMonitoringSiteID, struAidAlarm.byDeviceID, struAidAlarm.struAIDInfo.byVehicleEnterState,
                       struAidAlarm.struAIDInfo.byState, struAidAlarm.struAIDInfo.byParkingID);
        break;
    }
    case COMM_ALARM_TPS_STATISTICS:
    {
        NET_DVR_TPS_STATISTICS_INFO struTpsStatInfo = { 0 };
        memcpy(&struTpsStatInfo, pAlarmInfo, sizeof(struTpsStatInfo));

        NET_DVR_TIME  struStartTime = { 0 };
        struStartTime.dwYear = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.wYear;
        struStartTime.dwMonth = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byMonth;
        struStartTime.dwDay = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byDay;
        struStartTime.dwHour = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byHour;
        struStartTime.dwMinute = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.byMinute;
        struStartTime.dwSecond = struTpsStatInfo.struTPSStatisticsInfo.struStartTime.bySecond;

        printf("Tps Statistics Info: Chan[%d] StartTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Period[%d]\n",
            struTpsStatInfo.dwChan, struStartTime.dwYear, struStartTime.dwMonth, struStartTime.dwDay,
            struStartTime.dwHour, struStartTime.dwMinute, struStartTime.dwSecond,
            struTpsStatInfo.struTPSStatisticsInfo.dwSamplePeriod);

        for (int i = 0; i < 8; i++)
        {
            printf("LaneNo[%d]Speed[%d]ArrivalFlow[%d]LightVehicle[%d]MidVehicle[%d]HeavyVehicle[%d]TimeHeadway[%d]\
                SpaceHeadway[%d]SpaceOccupyRation[%f]TimeOccupyRation[%f]QueueLen[%d]NonMotor[%d]\n",
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].byLane,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].bySpeed,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].wArrivalFlow,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwLightVehicle,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwMidVehicle,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwHeavyVehicle,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwTimeHeadway,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwSpaceHeadway,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].fSpaceOccupyRation,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].fTimeOccupyRation,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].byQueueLen,
                struTpsStatInfo.struTPSStatisticsInfo.struLaneParam[i].dwNonMotor);
        }
        break;
    }
    case COMM_ALARM_TPS_REAL_TIME:
    {
        NET_DVR_TPS_REAL_TIME_INFO struTpsRealtime = { 0 };
        memcpy(&struTpsRealtime, pAlarmInfo, sizeof(struTpsRealtime));

        printf("TPS Real Time Alarm: Channel[%d]Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d]Start[%d]CMD[%d]\
            SpaceHeadway[%d]TimeHeadway[%d]DeviceID[%d]DataLen[%d]Lane[%d]Speed[%d]LaneState[%d]QueueLen[%d] \
            LoopState[%d]StateMask[%d]DownwardFlow[%d]UpwardFlow[%d]JamLevel[%d]VehicleDirection[%d]\
            JamFlow[%d]ChannelizationLane[%d]VehicleType[%d]dwDeviceIDEx[%d]\n",
            struTpsRealtime.dwChan,  struTpsRealtime.struTime.wYear, struTpsRealtime.struTime.byMonth,
            struTpsRealtime.struTime.byDay, struTpsRealtime.struTime.byHour, struTpsRealtime.struTime.byMinute,
            struTpsRealtime.struTime.bySecond, struTpsRealtime.struTime.wMilliSec, struTpsRealtime.struTPSRealTimeInfo.byStart,
            struTpsRealtime.struTPSRealTimeInfo.byCMD, struTpsRealtime.struTPSRealTimeInfo.wSpaceHeadway,
            struTpsRealtime.struTPSRealTimeInfo.wTimeHeadway, struTpsRealtime.struTPSRealTimeInfo.wDeviceID,
            struTpsRealtime.struTPSRealTimeInfo.wDataLen, struTpsRealtime.struTPSRealTimeInfo.byLane,
            struTpsRealtime.struTPSRealTimeInfo.bySpeed, struTpsRealtime.struTPSRealTimeInfo.byLaneState,
            struTpsRealtime.struTPSRealTimeInfo.byQueueLen, struTpsRealtime.struTPSRealTimeInfo.wLoopState,
            struTpsRealtime.struTPSRealTimeInfo.wStateMask, struTpsRealtime.struTPSRealTimeInfo.dwDownwardFlow,
            struTpsRealtime.struTPSRealTimeInfo.dwUpwardFlow, struTpsRealtime.struTPSRealTimeInfo.byJamLevel,
            struTpsRealtime.struTPSRealTimeInfo.byVehicleDirection, struTpsRealtime.struTPSRealTimeInfo.byJamFlow,
            struTpsRealtime.struTPSRealTimeInfo.byChannelizationLane, struTpsRealtime.struTPSRealTimeInfo.byVehicleType,
             struTpsRealtime.dwDeviceIDEx);
        break;
    }
    default:
        break;
    }
    return;
}
void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);
    //报警监听
    LONG lHandle = NET_DVR_StartListen_V30("10.18.37.12", 7200, MSesGCallback, NULL); //监听接收报警信息的PC电脑的IP地址和端口
    if (lHandle < 0)
    {
        printf("NET_DVR_StartListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    printf("监听成功!\n");
    Sleep(20000); //避免程序立即退出，等待接收数据
    //---------------------------------------
    //退出
    //停止监听
    if (!NET_DVR_StopListen_V30(lHandle))
    {
        printf("NET_DVR_StopListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


雷视目标检测模块流程

雷视目标检测

iDS-TCS402-CS等设备，多维感知功能，采集道路信息包括目标ID、目标分类（机动车，非机动车，行人）、车道，速度、方向、位置坐标、轨迹等。

目录

  • 雷视目标检测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 雷视目标检测相关参数配置，建议WEB网页直接访问设备进配置界面进行设置。
  • 调用NET_DVR_StartRemoteConfig建立长连接，设置获取事件信息的回调函数。
  • 设备定时上传事件信息，一般雷视目标检测可以达到毫秒级采样频率间隔（100ms）。在回调函数里面接收和处理数据，dwType为NET_SDK_CALLBACK_TYPE_DATA时，lpBuffer返回的数据就是雷视目标检测信息，对应结构体NET_DVR_ALARM_SEARCH_RESULT，其中dwAlarmComm为0x4993，pAlarmInfo对应{雷视目标检测事件信息的JSON数据}。
  • 停止获取事件信息或者退出程序的时候调用NET_DVR_StopRemoteConfig释放长连接资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum = 0;//保存文件的序号
BOOL bLinkStatus = false; //长连接状态
void CALLBACK fRadarCallback(DWORD dwType, void* lpBuffer, DWORD dwBufLen, void* pUserData)
{
    //回调函数中不可有耗时较长的操作，不能调用该SDK（HCNetSDK.dll）本身的接口。
    //以下代码仅供参考，实际应用中不建议在回调函数中直接处理数据，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。

    if (dwType == NET_SDK_CALLBACK_TYPE_DATA)//数据信息
    {
        NET_DVR_ALARM_SEARCH_RESULT struAlarmResult = {0};
        memcpy(&struAlarmResult, lpBuffer, sizeof(struAlarmResult));

        printf("报警类型: %d，报警设备信息：lUserID[%d]IP[%s]\n", struAlarmResult.dwAlarmComm, struAlarmResult.struAlarmer.lUserID, struAlarmResult.struAlarmer.sDeviceIP);

        //这里将报警信息数据保存下来，雷视目标信息是透传的JSON数据
        if ((struAlarmResult.dwAlarmLen != 0) && (struAlarmResult.pAlarmInfo != NULL))
        {
            char filename[100];
            sprintf(filename, ".\\pic\\radarVideoDetection%d.json", iNum);
            FILE *fFile = fopen(filename, "wb");
            if (fFile != NULL)
            {
                fwrite(struAlarmResult.pAlarmInfo, struAlarmResult.dwAlarmLen, 1, fFile);
                fclose(fFile);
                fFile = NULL;
            }
            iNum++;
        }

    }
    else if (dwType == NET_SDK_CALLBACK_TYPE_STATUS)//状态值
    {
        DWORD dwStatus = *(DWORD*)lpBuffer;
        if (dwStatus == NET_SDK_CALLBACK_STATUS_SUCCESS)
        {
            printf("获取成功并且结束\n");
            bLinkStatus = false;
        }
        else if (dwStatus == NET_SDK_CALLBACK_STATUS_PROCESSING)
        {
            printf("正在获取事件，处理中...\n");
        }
        else if (dwStatus == NET_SDK_CALLBACK_STATUS_FAILED)
        {
            printf("获取失败并且结束\n");
            bLinkStatus = false;
        }
    }
}

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //---------------------------------------
    //注册设备
    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码
    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };
    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //建立获取雷视目标信息的长连接
    NET_DVR_ALARM_SEARCH_COND struCond = { 0 };
    struCond.dwSize = sizeof(struCond);
    struCond.dwAlarmComm = 0x4993;//0x4993-智能检测报警(雷视目标检测报警)
    struCond.wEventType = 2; //0-表示所有事件, 1-混合目标检测（mixedTargetDetection）, 2-雷视目标检测（radarVideoDetection）
    struCond.wSubEventType = 0;//子事件类型，0-表示所有子事件
    struCond.bySupport = 1;

    //启动长连接
    LONG lHandle = NET_DVR_StartRemoteConfig(lUserID, NET_DVR_GET_ALARM_INFO, &struCond, sizeof(struCond), fRadarCallback, NULL);
    if (lHandle == -1)
    {
        printf("NET_DVR_GET_ALARM_INFO failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    bLinkStatus = true;//长连接状态

    //输入q或者长连接异常则退出程序，否则一直运行
    char c = 0;
    while (('q' != c) || (!bLinkStatus))
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //关闭长连接
    if (!NET_DVR_StopRemoteConfig(lHandle))
    {
        printf("NET_DVR_StopRemoteConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

接收到雷视目标事件报文示例：

Content-Type: multipart/form-data; boundary=7e13971310878
Content-Length: 848

--7e13971310878
Content-Disposition:form-data;name="jsondata.json";filename="jsondata.json";
Content-Type: application/json
Content-Length: 677

{"ipAddress":"10.99.3.60","portNo":8000,"protocol":"HTTP","macAddress":"10:12:fb:0c:02:3d","channelID":1,"dateTime":"2021-02-07T11:19:41.225+08:00","activePostCount":1,"eventType":"radarVideoDetection","eventState":"active","eventDescription":"Radar Video Detection","Datas":[{"targetID":84,"UUID":"5de4dc4a-6936-11eb-b7b4-ca34e2d10b31","GPS":{"longitude":119.972967,"latitude":30.523823},"targetType":"vehicle","vehicleSize":"light","plateNo":"绿浙AD19377","plateColor":"green","vehicleLogo":1139,"vehicleSublogo":2,"vehicleColor":"blue","laneNo":4,"position":[2.810129,23.201101],"speed":0,"horizonSpeed":0,"radarDetected":false,"vehicleType":"SUVMPV","radarDirection":0}]}
--7e13971310878--


停车场车位检测模块流程

车位检测

此处介绍的是停车场的车位检测事件功能，包括诱导管理器、车位相机产品。路边停车事件功能请参考交通违章检测模块流程中的交通取证事件介绍。

相关检测功能是设备实现的，由设备主动上传，SDK被动接收。SDK接收报警方式有两种：
1）报警布防方式，是指SDK主动连接设备，建立报警上传通道，设备发生报警之后发送给SDK。需要先注册登录设备。
2）报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警主机的IP和端口，和SDK监听的IP、端口需要一致。

同一种报警事件是通过布防还是监听方式接收，是需要看设备支持情况的，有些设备有些报警类型只支持布防或者只支持监听方式上传，比如对接诱导管理器需要使用报警监听方式。布防和监听，是两种不同的方式，设备同时支持的情况下，只需要选择其中一种即可。

目录

  • 车位检测
    • 目录
    • 一、报警布防方式
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、报警监听方式
      • 2.1 接口调用流程
      • 2.2 示例代码

一、报警布防方式

1.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 车位检测相关参数配置，建议WEB网页直接访问设备进配置界面进行设置。
  • 报警布防方式获取事件和交通数据，具体实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。对接智能交通摄像机，布防时可以选择布防等级，一级布防（byLevel为0）最大连接数为1个，二级布防（byLevel为1）最大连接数为3个，如果已经达到上限了，再布防就会失败，SDK将返回28的错误号。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 车位检测事件的报警信息类型为COMM_ITS_PARK_VEHICLE，对应报警信息结构体：NET_ITS_PARK_VEHICLE。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum = 0;
void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i = 0;
    char filename[100];
    FILE *fSnapPic = NULL;
    FILE *fSnapPicPlate = NULL;
    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。
    switch (lCommand)
    {
    case COMM_ITS_PARK_VEHICLE:
    {
        NET_ITS_PARK_VEHICLE struParkVehicle = { 0 };
        memcpy(&struParkVehicle, pAlarmInfo, sizeof(struParkVehicle));
        printf("车牌号: %s\n", struParkVehicle.struPlateInfo.sLicense);//车牌号
        switch (struParkVehicle.struPlateInfo.byColor)//车牌颜色
        {
        case VCA_BLUE_PLATE:
            printf("车辆颜色: 蓝色\n");
            break;
        case VCA_YELLOW_PLATE:
            printf("车辆颜色: 黄色\n");
            break;
        case VCA_WHITE_PLATE:
            printf("车辆颜色: 白色\n");
            break;
        case VCA_BLACK_PLATE:
            printf("车辆颜色: 黑色\n");
            break;
        default:
            break;
        }
        for (i = 0; i < struParkVehicle.dwPicNum; i++)
        {
            //保存场景图
            if ((struParkVehicle.struPicInfo[i].dwDataLen != 0) && (struParkVehicle.struPicInfo[i].byType == 1) || (struParkVehicle.struPicInfo[i].byType == 2))
            {
                sprintf(filename, "testParkBigPic%d_%d.jpg", iNum, i);
                fSnapPic = fopen(filename, "wb");
                fwrite(struParkVehicle.struPicInfo[i].pBuffer, struParkVehicle.struPicInfo[i].dwDataLen, 1, fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌小图片
            if ((struParkVehicle.struPicInfo[i].dwDataLen != 0) && (struParkVehicle.struPicInfo[i].byType == 0))
            {
                sprintf(filename, "testParkPicPlate%d_%d.jpg", iNum, i);
                fSnapPicPlate = fopen(filename, "wb");
                fwrite(struParkVehicle.struPicInfo[i].pBuffer, struParkVehicle.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
        }
        //其他信息处理......
        break;
    }
    default:
        break;
    }
    return;
}
void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);
    //---------------------------------------
    //注册设备
    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码
    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };
    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    //---------------------------------------
    //报警布防

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    NET_DVR_SETUPALARM_PARAM struSetupParam = { 0 };
    struSetupParam.dwSize = sizeof(NET_DVR_SETUPALARM_PARAM);
    struSetupParam.byLevel = 0; //布防优先级：0- 一等级（高），1- 二等级（中）
    LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struSetupParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("布防成功!\n");

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //退出
    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、报警监听方式

2.1 接口调用流程

虚线框的内容是可选的，设备事先安装配置好，登录、能力集和配置接口可不调用，不会影响其他接口功能的使用。

  • 车位检测相关参数配置，建议WEB网页直接访问设备进配置界面进行设置。
  • 报警监听方式获取事件和交通数据，具体实现方法：
    1) 设备端需要先配置上传主机的IP地址和端口，如果事先已经配置，该过程可以省略。可以通过WEB网页登录设备进“远程配置”的“远程主机”配置里面进行设置；也可以登录设备之后调用SDK接口进行配置，相关接口：NET_DVR_GetDVRConfig(命令: NET_ITS_GET_UPLOAD_CFG)、NET_DVR_SetDVRConfig(命令: NET_ITS_SET_UPLOAD_CFG)。
    2) 客户端SDK调用NET_DVR_StartListen_V30开启监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录，监听的IP和端口跟设备端配置的上传主机的IP和端口必须一致。如果PC有多网卡，还需要调用NET_DVR_SetValidIP绑定当前使用的网卡。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源，此时SDK将不再监听接收报警信息。
    4) 对接多台设备的时候，每一台设备可以配置相同的监听端口，此时只需要调用一次启动监听的接口，也可以配置不同的监听端口（最多支持10个不同的端口）分别开启监听，但是报警回调函数只需要设置一个而且只有最后设置的一个回调函数有效，回调函数里面接收数据之后可以通过报警设备信息(pAlarmer)判断区分设备。
  • 车位检测事件的报警信息类型为COMM_ITS_PARK_VEHICLE，对应报警信息结构体：NET_ITS_PARK_VEHICLE。
  • 退出程序时调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)
int iNum = 0;
void CALLBACK MSesGCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i = 0;
    char filename[100];
    FILE *fSnapPic = NULL;
    FILE *fSnapPicPlate = NULL;
    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件，
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。
    switch (lCommand)
    {
    case COMM_ITS_PARK_VEHICLE:
    {
        NET_ITS_PARK_VEHICLE struParkVehicle = { 0 };
        memcpy(&struParkVehicle, pAlarmInfo, sizeof(struParkVehicle));
        printf("车牌号: %s\n", struParkVehicle.struPlateInfo.sLicense);//车牌号
        switch (struParkVehicle.struPlateInfo.byColor)//车牌颜色
        {
        case VCA_BLUE_PLATE:
            printf("车辆颜色: 蓝色\n");
            break;
        case VCA_YELLOW_PLATE:
            printf("车辆颜色: 黄色\n");
            break;
        case VCA_WHITE_PLATE:
            printf("车辆颜色: 白色\n");
            break;
        case VCA_BLACK_PLATE:
            printf("车辆颜色: 黑色\n");
            break;
        default:
            break;
        }
        for (i = 0; i < struParkVehicle.dwPicNum; i++)
        {
            //保存场景图
            if ((struParkVehicle.struPicInfo[i].dwDataLen != 0) && (struParkVehicle.struPicInfo[i].byType == 1) || (struParkVehicle.struPicInfo[i].byType == 2))
            {
                sprintf(filename, "testParkBigPic%d_%d.jpg", iNum, i);
                fSnapPic = fopen(filename, "wb");
                fwrite(struParkVehicle.struPicInfo[i].pBuffer, struParkVehicle.struPicInfo[i].dwDataLen, 1, fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌小图片
            if ((struParkVehicle.struPicInfo[i].dwDataLen != 0) && (struParkVehicle.struPicInfo[i].byType == 0))
            {
                sprintf(filename, "testParkPicPlate%d_%d.jpg", iNum, i);
                fSnapPicPlate = fopen(filename, "wb");
                fwrite(struParkVehicle.struPicInfo[i].pBuffer, struParkVehicle.struPicInfo[i].dwDataLen, 1, fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
        }
        //其他信息处理......
        break;
    }
    default:
        break;
    }
    return;
}
void main()
{
    //初始化
    NET_DVR_Init();

    //报警监听
    LONG lHandle = NET_DVR_StartListen_V30("10.18.37.12", 7200, MSesGCallback, NULL);       //监听接收报警信息的PC电脑的IP地址和端口
    if (lHandle < 0)
    {
        printf("NET_DVR_StartListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    printf("监听成功!\n");
    Sleep(20000); //避免程序立即退出，等待接收数据
    //---------------------------------------
    //退出
    //停止监听
    if (!NET_DVR_StopListen_V30(lHandle))
    {
        printf("NET_DVR_StopListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


门禁人员管理-以人为中心

人员管理(以人为中心)

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等。

人员管理包括人员工号、卡号、人脸、指纹等人员信息的下发、修改、查询、删除等。人员管理包括以人为中心和以卡为中心两种方式：

  1. 以人为中心，先下发人员信息（工号），再根据工号下发卡号、人脸或者指纹等。使用该方式对接时，工号是字符串，最长支持32位。
  2. 以卡为中心，先下发卡参数（可以一起下发工号），再根据卡号下发人脸、指纹等。使用该方式对接时，工号是整型的数字，最长只支持8位，取值范围是1~99999999。

注：图片不能正常显示，可以按F5刷新显示。

目录

  • 人员管理(以人为中心)
    • 目录
    • 一、人员管理(工号)
      • 1.1 查询人员信息
      • 1.2 下发人员(新增或修改)
      • 1.3 删除人员信息
    • 二、人脸参数管理
      • 2.1 查询人脸
      • 2.2 下发人脸(新增或修改)
      • 2.3 删除人脸参数
      • 2.4 远程采集人脸
    • 三、卡参数管理
      • 3.1 查询卡参数
      • 3.2 下发卡参数(新增或修改)
      • 3.3 删除卡参数
    • 四、指纹参数管理
      • 4.1 查询指纹
      • 4.2 下发指纹参数
      • 4.3 删除指纹参数
      • 4.4 远程采集指纹
    • 五、示例代码

一、人员管理(工号)

1.1 查询人员信息

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 查询设备上所有人员信息包括工号、姓名、有效期、关联门权限和计划模板编号、认证方式等：
    1) 先调用NET_DVR_STDXMLConfig(URL: GET /ISAPI/AccessControl/UserInfo/Count?format=json)获取所有人员数量。
    2) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_JSON_CONFIG)建立长连接，输入参数为URL字符串：POST /ISAPI/AccessControl/UserInfo/Search?format=json。
    3) 循环调用NET_DVR_SendWithRecvRemoteConfig分页查询所有人员信息(比如总数120个，每次查找30个，分4次查询)，输入参数为UserInfoSearchCond(JSON报文)，输出结果为UserInfoSearch(JSON报文)。
    4) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 下发人员(新增或修改)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 下发人员信息包括工号、姓名、有效期、关联门权限和计划模板编号、认证方式等：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_JSON_CONFIG)建立长连接，输入参数为URL字符串有三种：PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json(支持新增、修改)、POST /ISAPI/AccessControl/UserInfo/Record?format=json(只支持新增)、PUT /ISAPI/AccessControl/UserInfo/Modify?format=json(只支持修改)。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发人员信息，输入参数为UserInfo(JSON报文)，输出结果为ResponseStatus(JSON报文)。调用一次接口下发一个人员信息。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.3 删除人员信息

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 删除人员信息包括工号、姓名、有效期、关联门权限和计划模板编号、认证方式等：
    1) 调用NET_DVR_STDXMLConfig(URL：PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json)删除人员信息。删除人员信息的同时删除其关联的卡信息、指纹信息、人脸信息，接口调用返回后不代表实际删除完成。
    2) 调用NET_DVR_StartRemoteConfig，命令: NET_DVR_JSON_CONFIG，输入参数为URL字符串: GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json，建立获取实际删除进度的长连接；然后循环调用NET_DVR_GetNextRemoteConfig获取进度，对应UserInfoDetailDeleteProcess(JSON报文)；当进度值为success表示删除完成，调用NET_DVR_StopRemoteConfig关闭长连接，释放长连接资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、人脸参数管理

2.1 查询人脸

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 查询设备上所有人脸信息等：
    1) 先调用NET_DVR_STDXMLConfig(URL: GET /ISAPI/Intelligent/FDLib/Count?format=json)获取所有人脸的数量。
    2) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_FACE_DATA_SEARCH)建立长连接，输入参数为URL字符串：POST /ISAPI/Intelligent/FDLib/FDSearch?format=json。
    3) 循环调用NET_DVR_SendWithRecvRemoteConfig分页查询所有卡参数(比如总数120个，每次查找30个，分4次查询)，输入和输出都是JSON报文，其中FDID固定为1。
    4) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 下发人脸(新增或修改)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据工号下发关联的人脸图片：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_FACE_DATA_RECORD)建立长连接，输入参数为URL字符串有三种：PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json(支持新增、修改)、POST /ISAPI/Intelligent/FDLib/FaceDataRecord?format=json(只支持新增)、PUT /ISAPI/Intelligent/FDLib/FDSearch?format=json&FDID=1&FPID=&faceLibType=blackFD(只支持修改)。FDID表示人脸库ID，固定为1；FPID为工号。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发人脸，输入参数为NET_DVR_JSON_DATA_CFG(JSON报文和图片二进制数据)，输出结果为ResponseStatus(JSON报文)。调用一次接口下发一张人脸图片。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.3 删除人脸参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 删除人脸，相关接口：NET_DVR_STDXMLConfig(URL: PUT /ISAPI/Intelligent/FDLib/FDSearch/Delete?format=json&FDID=1&faceLibType=blackFD)。FDID表示人脸库ID，固定为1。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.4 远程采集人脸

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 远程采集人脸是指客户端下发采集命令给设备，设备本地开启人脸采集窗口，刷脸之后采集到的人脸数据再上传给客户端：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_CAPTURE_FACE_INFO)建立长连接，开启人脸采集。
    2) 循环调用NET_DVR_GetNextRemoteConfig直到获取到采集结果(NET_DVR_CAPTURE_FACE_CFG)。开启人脸采集之后设备端需要采集时间之内(一般是5秒)刷脸，否则就会超时采集失败。
    3) 采集到人脸之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

三、卡参数管理

3.1 查询卡参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 查询设备上所有卡参数包括卡号、卡类型等：
    1) 先调用NET_DVR_STDXMLConfig(URL: GET /ISAPI/AccessControl/CardInfo/Count?format=json)获取所有卡号的数量。
    2) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_JSON_CONFIG)建立长连接，输入参数为URL字符串：POST /ISAPI/AccessControl/CardInfo/Search?format=json。
    3) 循环调用NET_DVR_SendWithRecvRemoteConfig分页查询所有卡参数(比如总数120个，每次查找30个，分4次查询)，输入参数为CardInfoSearchCond(JSON报文)，输出结果为CardInfoSearch(JSON报文)。
    4) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

3.2 下发卡参数(新增或修改)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据工号下发关联的卡号、卡类型：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_JSON_CONFIG)建立长连接，输入参数为URL字符串有三种：PUT /ISAPI/AccessControl/CardInfo/SetUp?format=json(支持新增、修改)、POST /ISAPI/AccessControl/CardInfo/Record?format=json(只支持新增)、PUT /ISAPI/AccessControl/CardInfo/Modify?format=json(只支持修改)。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发卡参数，输入参数为CardInfo(JSON报文)，输出结果为ResponseStatus(JSON报文)。调用一次接口下发一个卡号。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

3.3 删除卡参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 删除卡号，相关接口：NET_DVR_STDXMLConfig(URL: PUT /ISAPI/AccessControl/CardInfo/Delete?format=json)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

四、指纹参数管理

4.1 查询指纹

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据工号查询关联的指纹数据：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_JSON_CONFIG)建立长连接，输入参数为URL字符串：POST /ISAPI/AccessControl/FingerPrintUpload?format=json。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig查询工号关联的指纹数据(一个人员最多关联10个指纹)，输入参数为FingerPrintCond(JSON报文)，输出结果为FingerPrintInfo(JSON报文)。
    3) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

4.2 下发指纹参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据工号下发关联的指纹数据：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_JSON_CONFIG)建立长连接，输入参数为URL字符串：POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json(支持新增、修改)。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发指纹，输入参数为FingerPrintCfg(JSON报文，其中指纹数据使用base64编码)，输出结果为FingerPrintStatus(JSON报文)。调用一次接口下发一个指纹数据。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

4.3 删除指纹参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 删除卡号关联的指纹数据（该接口和命令同以卡为中心删除指纹数据是一样的）：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_DEL_FINGERPRINT)建立长连接，条件参数(NET_DVR_FINGER_PRINT_INFO_CTRL_V50)中指定删除方式以及对应的工号或者读卡器编号。按读卡器方式可以删除指定读卡器下的所有指纹数据。
    2) 循环调用NET_DVR_GetNextRemoteConfig逐条获取删除的结果信息(NET_DVR_FINGER_PRINT_INFO_STATUS_V50)。
    3) 删除结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

4.4 远程采集指纹

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 远程采集指纹是指客户端下发采集命令给设备，设备本地开启指纹采集窗口，指纹采集之后将采集到的指纹数据再上传给客户端：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_CAPTURE_FINGERPRINT_INFO)建立长连接，开启指纹采集。
    2) 循环调用NET_DVR_GetNextRemoteConfig直到获取到采集结果(NET_DVR_CAPTURE_FINGERPRINT_CFG)。开启指纹采集之后设备端需要采集时间之内(一般是5秒)进行指纹采集，否则就会超时采集失败。
    3) 采集到指纹数据之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

五、示例代码

#include "stdafx.h"
#include "HCNetSDK.h"
#include <stdio.h>
#include <iostream>
using namespace std;

static LONG m_lSetCardCfgHandle = -1;//下发长连接句柄
static LONG dwState = -1;  //下发数据状态
int DoLogin();
void GetOneUser(int lUserID);
void GetAllUser(int lUserID);
void SetOneUser(int lUserID);

/****************************************
Function:    AnsiToUTF8
Description: Ansi字符转换成UTF-8字符
Input:       szAnsiString Ansi字符
Return:      UTF-8字符
****************************************/
char* AnsiToUTF8(const char *szAnsiString)
{
#if defined(_WIN32) || defined(_WIN64)
    if (szAnsiString == NULL || strlen(szAnsiString) == 0)
    {
        return NULL;
    }
    //AnsiToUnicode
    //预转换，得到所需空间的大小
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), NULL, 0);

    //分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间
    wchar_t* wszUnicodeString = new wchar_t[(size_t)wcsLen + 1];

    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), wszUnicodeString, wcsLen);

    //最后加上'\0'
    wszUnicodeString[wcsLen] = '\0';

    // unicode to UTF8
    //预转换，得到所需空间的大小，这次用的函数和上面名字相反
    int UTF8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), NULL, 0, NULL, NULL);

    //同上，分配空间要给'\0'留个空间
    //UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存
    char* szUTF8 = new char[(size_t)UTF8Len + 1];

    //转换
    //unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), szUTF8, UTF8Len, NULL, NULL);

    //最后加上'\0'
    szUTF8[UTF8Len] = '\0';

    delete[] wszUnicodeString;
    wszUnicodeString = NULL;

    return szUTF8;

#else
    if (NULL == szAnsiString)
    {
        return NULL;
    }
    char *outbuf = 0;
    if (szAnsiString)
    {
        iconv_t cd = iconv_open("UTF-8", "EUC-CN");
        if (cd)
        {
            size_t contlen = strlen(szAnsiString);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szAnsiString);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

int _tmain(int argc, _TCHAR* argv[])
{
    //cout << "he" << endl;
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    int lUserID = DoLogin();
    if (lUserID < 0)
    {
        return 0;
    }

    //批量获取人员信息
    GetAllUser(lUserID);

    //获取单个人员信息和人脸图片
    GetOneUser(lUserID);

    Sleep(500);

    //下发单个人员和人脸图片
    SetOneUser(lUserID);

    //注销登录
    NET_DVR_Logout(lUserID);
    //反初始化
    NET_DVR_Cleanup();
    return 0;
}
// 设备登录
int DoLogin()
{
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码
    //设备参数结构体
    NET_DVR_DEVICEINFO_V40 DeviceInfoTmp;
    memset(&DeviceInfoTmp, 0, sizeof(NET_DVR_DEVICEINFO_V40));
    // 向设备注册
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoTmp);
    if (lLoginID< 0)
    {
        cout << "注册失败，错误码：" << NET_DVR_GetLastError() << endl;
        NET_DVR_Cleanup();
    }
    if (lLoginID >= 0)
    {
        cout << "注册成功" << endl;
    }
    return lLoginID;
}

//批量获取人员信息
void GetAllUser(int lLoginID)
{
    //输出参数
    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);

    //输出参数
    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    //URL
    char szUrl[512];

    //获取人员总数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/AccessControl/UserInfo/Count?format=json\r\n");
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    char szGetOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szGetOutput;
    struOutputParam.dwOutBufferSize = sizeof(szGetOutput);

    //输出状态
    char szStatusBuf[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lLoginID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("人员总数: %s\n", struOutputParam.lpOutBuffer);

    }

    //查询人员信息
    char sURL[1024] = { "POST /ISAPI/AccessControl/UserInfo/Search?format=json" };
    m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_JSON_CONFIG, &sURL, sizeof(sURL), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << ("建立查询人员参数长连接失败，错误码为:", NET_DVR_GetLastError()) << endl;
        return;
    }
    else
    {
        cout << "建立查询人员参数长连接成功！" << endl;
    }

    //查询条件，每次查询30个，总数大于30个可以循环多次查询，下一次查询searchResultPosition从30开始
    char sSearchUserCond[1024] = { "{\"UserInfoSearchCond\":{\"searchID\":\"20210301000000000\",\"searchResultPosition\":0,\"maxResults\":30}}" };

    //查询的结果
    char lpOutBuff[1024 * 2];
    DWORD dwOutDataLen = 0;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &sSearchUserCond, sizeof(sSearchUserCond), &lpOutBuff, sizeof(lpOutBuff), &dwOutDataLen);
        if (dwState == -1)
        {
            cout << "NET_DVR_SendWithRecvRemoteConfig查询人员参数调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "获取人员参数失败" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "获取人员参数异常" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            printf("获取人员参数成功: %s\n", UTF8ToAnsi(lpOutBuff));
            break;

        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "获取人员参数完成" << endl;
            break;
        }
    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
}

// 按条件获取人员信息
void GetOneUser(int lLoginID)
{
    char sURL[1024] = { "POST /ISAPI/AccessControl/UserInfo/Search?format=json" };

    m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_JSON_CONFIG, &sURL, sizeof(sURL), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << ("建立查询人员参数长连接失败，错误码为:", NET_DVR_GetLastError()) << endl;
        return;
    }
    else
    {
        cout << "建立查询人员参数长连接成功！" << endl;
    }

    //查询条件
    char sSearchUserCond[1024] = { "{\"UserInfoSearchCond\":{\"searchID\":\"20200916143901\",\"searchResultPosition\":0,\"maxResults\":1, \
                                                                                \"EmployeeNoList\":[{\"employeeNo\":\"abc1234567\"}]}}" };

    //查询的结果
    char lpOutBuff[1024 * 2];
    DWORD dwOutDataLen = 0;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &sSearchUserCond, sizeof(sSearchUserCond), &lpOutBuff, sizeof(lpOutBuff), &dwOutDataLen);
        if (dwState == -1)
        {
            cout << "NET_DVR_SendWithRecvRemoteConfig查询人员参数调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "获取人员参数失败" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "获取人员参数异常" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            printf("获取人员参数成功: %s\n", UTF8ToAnsi(lpOutBuff));
            break;

        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "获取人员参数完成" << endl;
            break;
        }
    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }

    Sleep(500);

    //查询人脸图片
    char sURLFace[1024] = { "POST /ISAPI/Intelligent/FDLib/FDSearch?format=json" };

    m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_FACE_DATA_SEARCH, &sURLFace, sizeof(sURLFace), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << ("建立查询人脸参数长连接失败，错误码为:", NET_DVR_GetLastError()) << endl;
        return;
    }
    else
    {
        cout << "建立查询人脸参数长连接成功！" << endl;
    }

    //查询人脸参数的条件
    char sSearchCond[1024] = { "{\"searchResultPosition\": 0,\"maxResults\" :1 ,\"faceLibType\":\"blackFD\",\"FDID\":\"1\",\"FPID\":\"abc1234567\"}" };

    //查询的结果
    NET_DVR_JSON_DATA_CFG struUserRecord = { 0 };

    DWORD pInt = 0;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &sSearchCond, sizeof(sSearchCond), &struUserRecord, sizeof(struUserRecord), &pInt);
        if (dwState == -1)
        {
            cout << "NET_DVR_SendWithRecvRemoteConfig查询人脸参数调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "获取人脸参数失败" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "获取人脸参数异常" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            //解析JSON数据
            if (struUserRecord.dwJsonDataSize > 0)
            {
                DWORD dwJsonBufferLen = struUserRecord.dwJsonDataSize;
                char *pJsonData = new char[dwJsonBufferLen];
                memset(pJsonData, 0, dwJsonBufferLen);
                memcpy(pJsonData, struUserRecord.lpJsonData, dwJsonBufferLen);
                printf("获取人脸参数成功: %s\n", pJsonData);
                if (pJsonData != NULL)
                {
                    delete[]pJsonData;
                    pJsonData = NULL;
                }
            }

            //保存人脸图片
            if (struUserRecord.dwPicDataSize > 0)
            {
                FILE *fFacePic = fopen("abc1234567.jpg", "wb");
                fwrite(struUserRecord.lpPicData, struUserRecord.dwPicDataSize, 1, fFacePic);
                fclose(fFacePic);
                fFacePic = NULL;
            }

            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "获取人脸参数完成" << endl;
            break;
        }
    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
}

///////////////////////////////
//下发一个人员信息
void SetOneUser(int lLoginID)
{
    //下发工号
    char sURL[1024] = { "PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json" };

    m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_JSON_CONFIG, &sURL, sizeof(sURL), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << "建立下发人员参数长连接失败，错误码为:" << NET_DVR_GetLastError() << endl;
        return;
    }
    else
    {
        cout << "建立下发人员参数长连接成功！" << endl;
    }

    char* strUserJson = AnsiToUTF8("{\"UserInfo\":{\"employeeNo\":\"abc1234567\",\"name\":\"张三\",\"userType\":\"normal\",\"Valid\":{\"enable\":true,\"beginTime\":\"2019-08-01T17:30:08\",\"endTime\":\"2022-08-01T17:30:08\",\"timeType\":\"local\"},\"belongGroup\":\"1\",\"doorRight\":\"1\",\"RightPlan\":[{\"doorNo\":1,\"planTemplateNo\":\"1\"}]}}");
    char sUserRecord[1024];
    strcpy(sUserRecord, strUserJson);
    delete[] strUserJson;

    char lpOutBuff[1024 * 4] = { 0 };
    DWORD dwOutDataLen = 0;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &sUserRecord, sizeof(sUserRecord), &lpOutBuff, sizeof(lpOutBuff), &dwOutDataLen);
        if (dwState == -1){
            cout << "NET_DVR_SendWithRecvRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            Sleep(10);
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            printf("下发人员失败: %s\n", lpOutBuff);
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            printf("下发人员异常: %s\n", lpOutBuff);
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS)
        {
            printf("下发人员成功: %s\n", lpOutBuff);
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "下发人员完成" << endl;
            break;
        }

    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }

    Sleep(500);

    //下发人脸图片
    char sFaceURL[1024] = { "PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json" };

    m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_FACE_DATA_RECORD, &sFaceURL, sizeof(sFaceURL), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << "建立下发人脸参数长连接失败，错误码为:" << NET_DVR_GetLastError() << endl;
        return;
    }
    else
    {
        cout << "建立下发人脸参数长连接成功！" << endl;
    }

    NET_DVR_JSON_DATA_CFG struUserRecord = { 0 };
    struUserRecord.dwSize = sizeof(struUserRecord);

    char sFaceInfoRecord[256] = { "{\"faceLibType\":\"blackFD\",\"FDID\":\"1\",\"FPID\":\"abc1234567\"}" }; //人脸信息JSON数据
    struUserRecord.lpJsonData = (char*)sFaceInfoRecord;
    struUserRecord.dwJsonDataSize = strlen(sFaceInfoRecord);

    FILE* fp = NULL;
    char* byteBuffer = NULL;
    int jpgSize = 0;
    fp = fopen("E:\\FacePicture.jpg", "rb");

    if (fp == NULL)
    {
        printf("读取图片E:\\face.jpg失败\n");
        return;
    }

    if (fp)
    {
        //求得文件的大小
        fseek(fp, 0, SEEK_END);
        jpgSize = ftell(fp);
        rewind(fp);
        byteBuffer = new char[jpgSize + 1];
        fread(byteBuffer, jpgSize, 1, fp);
        struUserRecord.lpPicData = byteBuffer;
        struUserRecord.dwPicDataSize = jpgSize;
        printf("读取图片E:\\face.jpg成功，图片大小：%dByte\n", jpgSize);
        fclose(fp);
        fp = NULL;

    }
    char lpFaceOutBuff[1024 * 8] = { 0 };
    DWORD dwFaceOutDataLen = 0;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &struUserRecord, sizeof(struUserRecord), &lpFaceOutBuff, sizeof(lpFaceOutBuff), &dwFaceOutDataLen);
        if (dwState == -1){
            cout << "NET_DVR_SendWithRecvRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            Sleep(10);
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            printf("下发人脸失败: %s\n", lpFaceOutBuff);
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            printf("下发人脸异常: %s\n", lpFaceOutBuff);
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS)
        {
            printf("下发人脸成功: %s\n", lpFaceOutBuff);
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "下发人脸完成\n" << endl;
            break;
        }

    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功\n" << endl;
    }

    //释放指针资源
    delete[] byteBuffer;
    byteBuffer = NULL;
}


门禁报警事件模块

报警事件

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等，事件包含刷卡、刷脸、指纹、二维码认证结果和身份证刷卡事件以及测温信息等。

获取事件信息的方法有两种：1）报警布防，获取设备实时上传的事件信息；2）事件查询，事后查询设备本地存储的历史事件。

目录

  • 报警事件
    • 目录
    • 一、报警布防
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、事件查询
      • 2.1 接口调用流程
      • 2.2 示例代码

一、报警布防

1.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31接口也支持，不能使用V30接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 刷卡、刷脸、指纹等认证方式对应门禁主机报警信息，回调函数中获取的报警类型(lCommand)为COMM_ALARM_ACS，报警信息(pAlarmInfo)对应结构体：NET_DVR_ACS_ALARM_INFO，其中pAcsEventInfoExtendV20指向一个NET_DVR_ACS_EVENT_INFO_EXTEND_V20结构体，里面包含测温温度信息。身份证刷卡事件对应门禁身份证刷卡信息，回调函数中获取的报警类型(lCommand)为COMM_ID_INFO_ALARM，报警信息(pAlarmInfo)对应结构体：NET_DVR_ID_CARD_INFO_ALARM，其中pIDCardInfoExtend指向一个NET_DVR_ID_CARD_INFO_EXTEND结构体，里面包含测温温度信息。报警信息结构体中dwMajor、dwMinor表示报警主类型和次类型，通过这两个参数值来判断实际的事件，比如是刷脸还是刷卡、成功还是失败，对应不同的事件次类型。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum = 0; //已保存的图片个数
void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ALARM_ACS: //门禁主机报警信息
    {
        NET_DVR_ACS_ALARM_INFO struAcsAlarmInfo = { 0 };
        memcpy(&struAcsAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ACS_ALARM_INFO));
        printf("门禁主机报警信息[0x5002]: struTim{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, dwMajor[0x%x], dwMinor[0x%x], byCardNo[%s], dwEmployeeNo[%d], dwCardReaderNo[%d]\n",
            struAcsAlarmInfo.struTime.dwYear, struAcsAlarmInfo.struTime.dwMonth,struAcsAlarmInfo.struTime.dwDay, struAcsAlarmInfo.struTime.dwHour,
            struAcsAlarmInfo.struTime.dwMinute, struAcsAlarmInfo.struTime.dwSecond, struAcsAlarmInfo.dwMajor, struAcsAlarmInfo.dwMinor,
            struAcsAlarmInfo.struAcsEventInfo.byCardNo, struAcsAlarmInfo.struAcsEventInfo.dwEmployeeNo, struAcsAlarmInfo.struAcsEventInfo.dwCardReaderNo);

        //扩展信息，包含以人为中心下发人员触发事件中的工号参数
        if (struAcsAlarmInfo.byAcsEventInfoExtend == 1)
        {
            NET_DVR_ACS_EVENT_INFO_EXTEND  struAcsEventInfoExtend = { 0 };
            memset(&struAcsEventInfoExtend, 0, sizeof(struAcsEventInfoExtend));
            memcpy(&struAcsEventInfoExtend, struAcsAlarmInfo.pAcsEventInfoExtend, sizeof(struAcsEventInfoExtend));

            printf("门禁扩展事件信息: dwFrontSerialNo[%d], byUserType[%d], byEmployeeNo[%s]\n", struAcsEventInfoExtend.dwFrontSerialNo,
                struAcsEventInfoExtend.byUserType, (char *)struAcsEventInfoExtend.byEmployeeNo);
        }

        //扩展信息，包含人体测温温度数据
        if (struAcsAlarmInfo.byAcsEventInfoExtendV20 == 1)
        {
            NET_DVR_ACS_EVENT_INFO_EXTEND_V20 struAcsEventInfoExtendV20 = { 0 };
            memcpy(&struAcsEventInfoExtendV20, struAcsAlarmInfo.pAcsEventInfoExtendV20, sizeof(struAcsEventInfoExtendV20));

            if (struAcsEventInfoExtendV20.byRemoteCheck != 0)
            {
                //需要远程核验
                printf("remote check:%d\n", struAcsEventInfoExtendV20.byRemoteCheck);
            }
            if (struAcsEventInfoExtendV20.fCurrTemperature != 0)
            {
                printf("temperature[%f]fX[%f]fY[%f]byThermometryUnit[%d]byIsAbnomalTemperature[%d]\n",
                    struAcsEventInfoExtendV20.fCurrTemperature, struAcsEventInfoExtendV20.struRegionCoordinates.fX,
                    struAcsEventInfoExtendV20.struRegionCoordinates.fY, struAcsEventInfoExtendV20.byThermometryUnit,
                    struAcsEventInfoExtendV20.byIsAbnomalTemperature);
            }
        }

        //保存报警抓拍图片
        if (struAcsAlarmInfo.dwPicDataLen > 0 && struAcsAlarmInfo.pPicData != NULL)
        {
            char cFilename[256] = { 0 };

            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAcsAlarmInfo.struTime.dwYear, struAcsAlarmInfo.struTime.dwMonth,
                struAcsAlarmInfo.struTime.dwDay, struAcsAlarmInfo.struTime.dwHour, struAcsAlarmInfo.struTime.dwMinute,
                struAcsAlarmInfo.struTime.dwSecond);

            sprintf(cFilename, "COMM_ALARM_ACS_CapPic[%d][%s].jpg", pAlarmer->lUserID, chTime);

            FILE* fSnapPicPlate = fopen(cFilename, "wb");
            fwrite(struAcsAlarmInfo.pPicData, struAcsAlarmInfo.dwPicDataLen, 1, fSnapPicPlate);
            fclose(fSnapPicPlate);
            iNum++;
        }
    }
    break;
    case COMM_ID_INFO_ALARM: //门禁主机报警信息
    {
        NET_DVR_ID_CARD_INFO_ALARM struIDCardInfo = { 0 };
        memcpy(&struIDCardInfo, pAlarmInfo, sizeof(NET_DVR_ID_CARD_INFO_ALARM));
        printf("门禁身份证刷卡信息[0x5200]: struTim{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, dwMajor[0x%x], dwMinor[0x%x], byName[%s], byIDNum[%s], dwCardReaderNo[%d]\n",
            struIDCardInfo.struSwipeTime.wYear, struIDCardInfo.struSwipeTime.byMonth, struIDCardInfo.struSwipeTime.byDay, struIDCardInfo.struSwipeTime.byHour,
            struIDCardInfo.struSwipeTime.byMinute, struIDCardInfo.struSwipeTime.bySecond, struIDCardInfo.dwMajor, struIDCardInfo.dwMinor,
            (char *)struIDCardInfo.struIDCardCfg.byName, (char *)struIDCardInfo.struIDCardCfg.byIDNum, struIDCardInfo.dwCardReaderNo);

        //扩展信息，包含人体测温温度数据
        if (struIDCardInfo.byIDCardInfoExtend == 1)
        {
            NET_DVR_ID_CARD_INFO_EXTEND struIDCardExtendV20 = { 0 };
            memcpy(&struIDCardExtendV20, struIDCardInfo.pIDCardInfoExtend, sizeof(struIDCardExtendV20));

            if (struIDCardExtendV20.byRemoteCheck != 0)
            {
                //需要远程核验
                printf("remote check:%d\n", struIDCardExtendV20.byRemoteCheck);
            }
            if (struIDCardExtendV20.fCurrTemperature != 0)
            {
                printf("temperature[%f]fX[%f]fY[%f]byThermometryUnit[%d]byIsAbnomalTemperature[%d]\n",
                    struIDCardExtendV20.fCurrTemperature, struIDCardExtendV20.struRegionCoordinates.fX,
                    struIDCardExtendV20.struRegionCoordinates.fY, struIDCardExtendV20.byThermometryUnit,
                    struIDCardExtendV20.byIsAbnomalTemperature);
            }
        }

        //保存身份证图片数据大小
        if (struIDCardInfo.dwPicDataLen > 0 && struIDCardInfo.pPicData != NULL)
        {
            char cCardFilename[256] = { 0 };

            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struIDCardInfo.struSwipeTime.wYear, struIDCardInfo.struSwipeTime.byMonth,
                struIDCardInfo.struSwipeTime.byDay, struIDCardInfo.struSwipeTime.byHour,
                struIDCardInfo.struSwipeTime.byMinute, struIDCardInfo.struSwipeTime.bySecond);

            sprintf(cCardFilename, "COMM_ID_INFO_ALARM_IDCardPic[%d][%s].jpg", pAlarmer->lUserID, chTime);

            FILE* fSnapPicPlate = fopen(cCardFilename, "wb");
            fwrite(struIDCardInfo.pPicData, struIDCardInfo.dwPicDataLen, 1, fSnapPicPlate);
            fclose(fSnapPicPlate);
            iNum++;
        }

        //保存抓拍图片数据大小
        if (struIDCardInfo.dwCapturePicDataLen  > 0 && struIDCardInfo.pCapturePicData != NULL)
        {
            char cFilename[256] = { 0 };

            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struIDCardInfo.struSwipeTime.wYear, struIDCardInfo.struSwipeTime.byMonth,
                struIDCardInfo.struSwipeTime.byDay, struIDCardInfo.struSwipeTime.byHour,
                struIDCardInfo.struSwipeTime.byMinute, struIDCardInfo.struSwipeTime.bySecond);

            sprintf(cFilename, "COMM_ID_INFO_ALARM_CapPic[%d][%s].jpg", pAlarmer->lUserID, chTime);

            FILE* fSnapPicPlate = fopen(cFilename, "wb");
            fwrite(struIDCardInfo.pCapturePicData, struIDCardInfo.dwCapturePicDataLen, 1, fSnapPicPlate);
            fclose(fSnapPicPlate);
            iNum++;
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.36.2"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设备登录成功，获取设备字符集编码类型
    printf("Login successfully, byCharEncodeType: %d\n", struDeviceInfoV40.byCharEncodeType);

    //设置报警回调函数
    NET_DVR_SetDVRMessageCallBack_V50(0, MessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code:  %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //退出程序

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、事件查询

2.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 查询事件是指查找设备本地存储的历史事件，先调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_ACS_EVENT)建立长连接，指定查找条件(NET_DVR_ACS_EVENT_COND，然后循环调用NET_DVR_GetNextRemoteConfig逐条获取查找的结果信息(NET_DVR_ACS_EVENT_CFG)，查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

int DoLogin();
void GetEventInfo(int lLoginID);

int _tmain(int argc, _TCHAR* argv[])
{

    //初始化
    NET_DVR_Init();

    //登录设备
    int lUserID = DoLogin();
    if (lUserID < 0)
    {
        return 0;
    }

    //查询事件信息
    GetEventInfo(lUserID);

    Sleep(500);

    //注销登录
    NET_DVR_Logout(lUserID);

    //反初始化，释放资源
    NET_DVR_Cleanup();
    return 1;
}

//设备登录
int DoLogin()
{
    //注册参数
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.36.2"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备参数结构体
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40;
    memset(&struDeviceInfoV40, 0, sizeof(NET_DVR_DEVICEINFO_V40));

    //设备注册
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lLoginID< 0)
    {
        cout << ("Login failed, error code: \n", NET_DVR_GetLastError()) << endl;
        NET_DVR_Cleanup();
    }
    if (lLoginID >= 0)
    {
        cout << "注册成功" << endl;

        //设备登录成功，获取设备字符集编码类型
        cout << "设备字符集编码类型: " << struDeviceInfoV40.byCharEncodeType << endl;
    }
    return lLoginID;
}

// 获取事件信息
void GetEventInfo(int lLoginID)
{
    //门禁事件查询条件
    NET_DVR_ACS_EVENT_COND struEventCond = {0};
    struEventCond.dwSize = sizeof(struEventCond);
    struEventCond.dwMajor = 0x5; //5表示查询事件，0表示查询全部
    struEventCond.dwMajor = 0; //查询全部

    //查询开始时间
    struEventCond.struStartTime.dwYear = 2021;
    struEventCond.struStartTime.dwMonth = 1;
    struEventCond.struStartTime.dwDay = 26;
    struEventCond.struStartTime.dwHour = 0;
    struEventCond.struStartTime.dwMinute = 0;
    struEventCond.struStartTime.dwSecond = 0;

    //查询结束时间
    struEventCond.struEndTime.dwYear = 2021;
    struEventCond.struEndTime.dwMonth = 1;
    struEventCond.struEndTime.dwDay = 26;
    struEventCond.struEndTime.dwHour = 23;
    struEventCond.struEndTime.dwMinute = 59;
    struEventCond.struEndTime.dwSecond = 59;
    struEventCond.byTimeType = 0;  //时间类型：0-设备本地时间（默认），1-UTC时间（struStartTime和struEndTime的时间）

    struEventCond.byPicEnable = 0; //是否带图片，0-不带图片，1-带图片

    int m_lSetCardCfgHandle = -1;

    m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_GET_ACS_EVENT, &struEventCond, sizeof(struEventCond), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << ("建立查询事件长连接失败，错误码为:", NET_DVR_GetLastError()) << endl;
        return;
    }
    else
    {
        cout << "建立查询事件长连接成功！" << endl;
    }

    //逐条获取查询的结果
    NET_DVR_ACS_EVENT_CFG struEventCfg = { 0 };

    while (true)
    {
        int dwState = NET_DVR_GetNextRemoteConfig(m_lSetCardCfgHandle, &struEventCfg, sizeof(struEventCfg));
        if (dwState == -1)
        {
            cout << "NET_DVR_GetNextRemoteConfig获取事件调用失败，错误码：" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            Sleep(4);
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "获取事件失败" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "获取事件异常" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            cout << "获取事件成功\n" << endl;
            printf("获取的门禁主机报警信息: struTim{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, dwMajor[0x%x], dwMinor[0x%x], byCardNo[%s], dwCardReaderNo[%d], dwEmployeeNo[%d], byEmployeeNo[%s]\n",
                struEventCfg.struTime.dwYear, struEventCfg.struTime.dwMonth, struEventCfg.struTime.dwDay, struEventCfg.struTime.dwHour,
                struEventCfg.struTime.dwMinute, struEventCfg.struTime.dwSecond, struEventCfg.dwMajor, struEventCfg.dwMinor,
                struEventCfg.struAcsEventInfo.byCardNo, struEventCfg.struAcsEventInfo.dwCardReaderNo, struEventCfg.struAcsEventInfo.dwEmployeeNo,
                (char *)struEventCfg.struAcsEventInfo.byEmployeeNo);
            continue;

        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "获取人员参数完成" << endl;
            break;
        }
    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
}


门禁权限管理

权限管理

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等。

权限管理包括卡/人员权限计划参数配置、门计划参数配置、读卡器计划参数配置，包括周计划和假日计划。

目录

  • 权限管理
    • 目录
    • 一、卡/人员权限计划配置
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、门状态计划配置
      • 2.1 接口调用流程
      • 2.2 示例代码
    • 三、读卡器验证计划配置
      • 3.1 接口调用流程
      • 3.2 示例代码

一、卡/人员权限计划配置

人员卡号(以卡为中心)或者工号(以人为中心)下发的时候需要关联门权限和每个门关联的卡/人员权限计划模板，人员下发参考“人员管理”的流程说明。卡/人员权限计划是必须配置的，否则下发卡号/人员将没有权限。

每一个计划模板可以关联一个周计划和一个假日组计划，假日计划的优先级高于周计划。周计划可以配置周一到周日的时间段，每天支持配置8个不同的时间段；假日组计划可以关联16个不同的假日计划，每一个假日计划可以配置一个假日的起止日期，日期范围内每天的时间段相同（可以配置不同的8个时间段）。通过这个计划模板配置，可以实现人员时间权限管理。

1.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 以人为中心时表示人员权限计划配置(下发人员工号时关联配置的计划模板编号)，以卡为中心时表示卡权限计划配置(下发卡参数的时候关联计划模板编号)。
    1) 卡权限计划模板参数配置：NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50)。
    2) 卡权限周计划参数配置：NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50)。
    3) 卡权限假日组参数配置：NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50)；卡权限假日计划参数配置：NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>

using namespace std;

int DoLogin();
void getTemplateCfg(int lLoginID);
void setTemplateCfg(int lLoginID);
int byEncodeType = 0;
/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

char* AnsiToUTF8(const char *szAnsiString)
{
#if defined(_WIN32) || defined(_WIN64)
    if (szAnsiString == NULL || strlen(szAnsiString) == 0)
    {
        return NULL;
    }
    //AnsiToUnicode
    //预转换，得到所需空间的大小
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), NULL, 0);

    //分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间
    wchar_t* wszUnicodeString = new wchar_t[(size_t)wcsLen + 1];

    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), wszUnicodeString, wcsLen);

    //最后加上'\0'
    wszUnicodeString[wcsLen] = '\0';

    // unicode to UTF8
    //预转换，得到所需空间的大小，这次用的函数和上面名字相反
    int UTF8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), NULL, 0, NULL, NULL);

    //同上，分配空间要给'\0'留个空间
    //UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存
    char* szUTF8 = new char[(size_t)UTF8Len + 1];

    //转换
    //unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), szUTF8, UTF8Len, NULL, NULL);

    //最后加上'\0'
    szUTF8[UTF8Len] = '\0';

    delete[] wszUnicodeString;
    wszUnicodeString = NULL;

    return szUTF8;

#else
    if (NULL == szAnsiString)
    {
        return NULL;
    }
    char *outbuf = 0;
    if (szAnsiString)
    {
        iconv_t cd = iconv_open("UTF-8", "EUC-CN");
        if (cd)
        {
            size_t contlen = strlen(szAnsiString);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szAnsiString);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

int _tmain(int argc, _TCHAR* argv[])
{
    //SDK初始化
    NET_DVR_Init();

    //注册登录设备
    int lUserID = DoLogin();

    if (lUserID < 0)
    {
        return 0;//注册失败直接返回
    }

    getTemplateCfg(lUserID);//获取卡/人员权限计划模板
    setTemplateCfg(lUserID);//设置卡/人员权限计划模板

    //退出程序
    //注销登录
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return 1;
}
// 设备登录
int DoLogin()
{
    //登录参数，输入参数
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备参数结构体，输出参数
    NET_DVR_DEVICEINFO_V40 DeviceInfoV40;
    memset(&DeviceInfoV40, 0, sizeof(NET_DVR_DEVICEINFO_V40));

    //注册设备
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoV40);
    if (lLoginID< 0)
    {
        cout << "注册失败, 错误码: " << NET_DVR_GetLastError() << endl;
        NET_DVR_Cleanup();
    }
    else
    {
        byEncodeType = DeviceInfoV40.byCharEncodeType;
        cout << "注册成功，设备字符集类型：" << byEncodeType << endl;
        //字符编码类型（SDK所有接口返回的字符串编码类型，透传接口除外）：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)
    }
    return lLoginID;
}

//配置卡/人员权限计划模板
void setTemplateCfg(int lLoginID)
{
    //卡权限计划模板配置条件
    NET_DVR_PLAN_TEMPLATE_COND struTemplateCond = {0};
    struTemplateCond.dwSize = sizeof(struTemplateCond);
    struTemplateCond.dwPlanTemplateNumber = 1;//计划模板编号，从1开始，最大值从门禁能力集获取
    struTemplateCond.wLocalControllerID = 0;

    //计划模板配置
    NET_DVR_PLAN_TEMPLATE struTemplateCfg = {0};
    struTemplateCfg.dwSize = sizeof(struTemplateCfg);
    struTemplateCfg.byEnable = 1; //是否使能：0- 否，1- 是

    if (byEncodeType == 6)
    {
        strcpy((char *)struTemplateCfg.byTemplateName, AnsiToUTF8("周计划123")); //计划模板名称，自定义
    }

    struTemplateCfg.dwWeekPlanNo = 1;//周计划编号，0表示无效
    struTemplateCfg.dwHolidayGroupNo[0] = 1; //假日组编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
    struTemplateCfg.dwHolidayGroupNo[1] = 0; //后续无效

    DWORD dwStatusList = 0;
    if (!NET_DVR_SetDeviceConfig(lLoginID, NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50, 1, &struTemplateCond, sizeof(struTemplateCond), &dwStatusList, &struTemplateCfg, sizeof(struTemplateCfg)))
    {
        cout << "NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50设置卡权限计划模板失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50设置卡权限计划模板成功" << endl;
        }
        else
        {
            cout << "NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50设置卡权限计划模板失败，状态：" << dwStatusList << endl;
        }

    }

    //卡权限周计划配置条件
    NET_DVR_WEEK_PLAN_COND struWeekPlanCond = { 0 };
    struWeekPlanCond.dwSize = sizeof(struWeekPlanCond);
    struWeekPlanCond.dwWeekPlanNumber = 1;//周计划模板编号，从1开始，最大值从门禁能力集获取
    struWeekPlanCond.wLocalControllerID = 0;

    //卡权限周计划配置
    NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = { 0 };
    struWeekPlanCfg.dwSize = sizeof(struWeekPlanCfg);
    struWeekPlanCfg.byEnable = 1;//是否使能：0- 否，1- 是

    //一周7天，每天最多8个时间段；先初始化为0，避免时间段交叉
    for (int i = 0; i < 7; i++)
        for (int j = 0; j < 8; j++)
        {
            struWeekPlanCfg.struPlanCfg[i][j].byEnable = 0;
            //开始时间
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byHour = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byMinute = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.bySecond = 0;
            //结束时间
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byHour = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byMinute = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.bySecond = 0;
        }

    //配置一周7天全天有效的计划模板，一个时间段
    for (int i = 0; i < 7; i++)
    {
        struWeekPlanCfg.struPlanCfg[i][0].byEnable = 0;
        //开始时间
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.byHour = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.byMinute = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.bySecond = 0;
        //结束时间
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.byHour = 24;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.byMinute = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.bySecond = 0;
    }

    if (!NET_DVR_SetDeviceConfig(lLoginID, NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50, 1, &struWeekPlanCond, sizeof(struWeekPlanCond), &dwStatusList, &struWeekPlanCfg, sizeof(struWeekPlanCfg)))
    {
        cout << "NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50设置卡权限周计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50设置卡权限周计划参数成功" << endl;
        }
        else
        {
            cout << "NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50设置卡权限周计划参数失败，状态：" << dwStatusList << endl;
        }
    }

    //卡权限假日组配置条件
    NET_DVR_HOLIDAY_GROUP_COND struGroupCond = { 0 };
    struGroupCond.dwSize = sizeof(struGroupCond);
    struGroupCond.dwHolidayGroupNumber = 1;//假日组编号
    struGroupCond.wLocalControllerID = 0;

    //卡权限假日组配置
    NET_DVR_HOLIDAY_GROUP_CFG struGroupCfg = { 0 };
    struGroupCfg.dwSize = sizeof(struGroupCfg);
    struGroupCfg.byEnable = 1;//是否使能：0- 否，1- 是

    if (byEncodeType == 6)
    {
        strcpy((char *)struGroupCfg.byGroupName, AnsiToUTF8("假日组123")); //假日组名称，自定义
    }

    struGroupCfg.dwHolidayPlanNo[0] = 1;//假日计划编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
    struGroupCfg.dwHolidayPlanNo[1] = 0;
    if (!NET_DVR_SetDeviceConfig(lLoginID, NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50, 1, &struGroupCond, sizeof(struGroupCond), &dwStatusList, &struGroupCfg, sizeof(struGroupCfg)))
    {
        cout << "NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50设置卡权限假日组参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50设置卡权限假日组参数成功" << endl;
        }
        else
        {
            cout << "NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50设置卡权限假日组参数失败，状态：" << dwStatusList << endl;
        }
    }

    //卡权限假日计划配置条件
    NET_DVR_HOLIDAY_PLAN_COND struHolidyPlanCond = { 0 };
    struHolidyPlanCond.dwSize = sizeof(struHolidyPlanCond);
    struHolidyPlanCond.dwHolidayPlanNumber = 1;//假日计划编号
    struHolidyPlanCond.wLocalControllerID = 0;

    //假日计划配置
    NET_DVR_HOLIDAY_PLAN_CFG struHolidyPlanCfg = { 0 };
    struHolidyPlanCfg.dwSize = sizeof(struHolidyPlanCfg);
    struHolidyPlanCfg.byEnable = 1;//是否使能：0- 否，1- 是

    //假日开始时间
    struHolidyPlanCfg.struBeginDate.wYear = 2021;
    struHolidyPlanCfg.struBeginDate.byMonth = 2;
    struHolidyPlanCfg.struBeginDate.byDay = 10;

    //假日结束时间
    struHolidyPlanCfg.struEndDate.wYear = 2021;
    struHolidyPlanCfg.struEndDate.byMonth = 2;
    struHolidyPlanCfg.struEndDate.byDay = 20;

    //配置两个有效时间段的计划模板
    struHolidyPlanCfg.struPlanCfg[0].byEnable = 1;
    //开始时间
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.byHour = 9;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.bySecond = 0;
    //结束时间
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.byHour = 10;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.bySecond = 0;

    struHolidyPlanCfg.struPlanCfg[1].byEnable = 1;
    //开始时间
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.byHour = 17;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.bySecond = 0;
    //结束时间
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.byHour = 18;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.bySecond = 0;

    //其他时间段不使用
    for (int i = 2; i < 7; i++)
    {
        struHolidyPlanCfg.struPlanCfg[i].byEnable = 0;
    }

    if (!NET_DVR_SetDeviceConfig(lLoginID, NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50, 1, &struHolidyPlanCond, sizeof(struHolidyPlanCond), &dwStatusList, &struHolidyPlanCfg, sizeof(struHolidyPlanCfg)))
    {
        cout << "NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50设置卡权限假日计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50设置卡权限假日计划参数成功" << endl;
        }
        else
        {
            cout << "NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50设置卡权限假日计划参数失败，状态：" << dwStatusList << endl;
        }
    }
    return;

}

//获取卡/人员权限计划模板
void getTemplateCfg(int lLoginID)
{
    //卡权限计划模板配置条件
    NET_DVR_PLAN_TEMPLATE_COND struTemplateCond = { 0 };
    struTemplateCond.dwSize = sizeof(struTemplateCond);
    struTemplateCond.dwPlanTemplateNumber = 1;//计划模板编号，从1开始，最大值从门禁能力集获取
    struTemplateCond.wLocalControllerID = 0;

    //计划模板配置，输出参数
    NET_DVR_PLAN_TEMPLATE struTemplateCfg = { 0 };

    DWORD dwStatusList = 0;
    if (!NET_DVR_GetDeviceConfig(lLoginID, NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50, 1, &struTemplateCond, sizeof(struTemplateCond), &dwStatusList, &struTemplateCfg, sizeof(struTemplateCfg)))
    {
        cout << "NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50获取卡权限计划模板失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50获取卡权限计划模板成功\n" << endl;

            BYTE byTemplateName[TEMPLATE_NAME_LEN] = {0};
            if (byEncodeType == 6)
            {
                strcpy((char*)byTemplateName, UTF8ToAnsi((char*)struTemplateCfg.byTemplateName)); //计划模板名称，需要根据设备实际字符集处理
            }

            printf("使能：%d，计划模板名称：%s，关联计划模板编号：%d，关联假日组编号：[%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]\n",
                struTemplateCfg.byEnable, byTemplateName, struTemplateCfg.dwWeekPlanNo, struTemplateCfg.dwHolidayGroupNo[0], struTemplateCfg.dwHolidayGroupNo[1],
                struTemplateCfg.dwHolidayGroupNo[2], struTemplateCfg.dwHolidayGroupNo[3], struTemplateCfg.dwHolidayGroupNo[4], struTemplateCfg.dwHolidayGroupNo[5],
                struTemplateCfg.dwHolidayGroupNo[6], struTemplateCfg.dwHolidayGroupNo[7], struTemplateCfg.dwHolidayGroupNo[8], struTemplateCfg.dwHolidayGroupNo[9],
                struTemplateCfg.dwHolidayGroupNo[10], struTemplateCfg.dwHolidayGroupNo[11], struTemplateCfg.dwHolidayGroupNo[12], struTemplateCfg.dwHolidayGroupNo[13],
                struTemplateCfg.dwHolidayGroupNo[14], struTemplateCfg.dwHolidayGroupNo[15]);
        }
        else
        {
            cout << "NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50获取卡权限计划模板失败，状态：" << dwStatusList << endl;
        }

    }

    //卡权限周计划配置条件
    NET_DVR_WEEK_PLAN_COND struWeekPlanCond = { 0 };
    struWeekPlanCond.dwSize = sizeof(struWeekPlanCond);
    struWeekPlanCond.dwWeekPlanNumber = 1;//周计划模板编号，从1开始，最大值从门禁能力集获取
    struWeekPlanCond.wLocalControllerID = 0;

    //卡权限周计划配置
    NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = { 0 };

    if (!NET_DVR_GetDeviceConfig(lLoginID, NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50, 1, &struWeekPlanCond, sizeof(struWeekPlanCond), &dwStatusList, &struWeekPlanCfg, sizeof(struWeekPlanCfg)))
    {
        cout << "NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50获取卡权限周计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50获取卡权限周计划参数成功，使能：" << (int)struWeekPlanCfg.byEnable << endl;

            for (int i = 0; i < 7;i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    printf("周[%d]时间段[%d]: [%02d:%02d:%02d]-[%02d:%02d:%02d]\n", (i + 1), (j + 1), struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byHour,
                        struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byMinute, struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.bySecond,
                        struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byHour, struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byMinute,
                        struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.bySecond);
                }
            }
        }
        else
        {
            cout << "NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50获取卡权限周计划参数失败，状态：" << dwStatusList << endl;
        }
    }

    //卡权限假日组配置条件
    NET_DVR_HOLIDAY_GROUP_COND struGroupCond = { 0 };
    struGroupCond.dwSize = sizeof(struGroupCond);
    struGroupCond.dwHolidayGroupNumber = 1;//假日组编号
    struGroupCond.wLocalControllerID = 0;

    //卡权限假日组配置
    NET_DVR_HOLIDAY_GROUP_CFG struGroupCfg = { 0 };

    if (!NET_DVR_GetDeviceConfig(lLoginID, NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50, 1, &struGroupCond, sizeof(struGroupCond), &dwStatusList, &struGroupCfg, sizeof(struGroupCfg)))
    {
        cout << "NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50获取卡权限假日组参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50获取卡权限假日组参数成功" << endl;
            BYTE byGroupName[TEMPLATE_NAME_LEN] = { 0 };
            if (byEncodeType == 6)
            {
                strcpy((char*)byGroupName, UTF8ToAnsi((char*)struGroupCfg.byGroupName)); //假日组名称，需要根据设备实际字符集处理
            }

            printf("使能：%d，假日组名称：%s，关联假日计划编号：[%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]\n",
                struGroupCfg.byEnable, byGroupName, struGroupCfg.dwHolidayPlanNo[0], struGroupCfg.dwHolidayPlanNo[1],
                struGroupCfg.dwHolidayPlanNo[2], struGroupCfg.dwHolidayPlanNo[3], struGroupCfg.dwHolidayPlanNo[4], struGroupCfg.dwHolidayPlanNo[5],
                struGroupCfg.dwHolidayPlanNo[6], struGroupCfg.dwHolidayPlanNo[7], struGroupCfg.dwHolidayPlanNo[8], struGroupCfg.dwHolidayPlanNo[9],
                struGroupCfg.dwHolidayPlanNo[10], struGroupCfg.dwHolidayPlanNo[11], struGroupCfg.dwHolidayPlanNo[12], struGroupCfg.dwHolidayPlanNo[13],
                struGroupCfg.dwHolidayPlanNo[14], struGroupCfg.dwHolidayPlanNo[15]);
        }
        else
        {
            cout << "NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50获取卡权限假日组参数失败，状态：" << dwStatusList << endl;
        }
    }

    //卡权限假日计划配置条件
    NET_DVR_HOLIDAY_PLAN_COND struHolidyPlanCond = { 0 };
    struHolidyPlanCond.dwSize = sizeof(struHolidyPlanCond);
    struHolidyPlanCond.dwHolidayPlanNumber = 1;//假日计划编号
    struHolidyPlanCond.wLocalControllerID = 0;

    //假日计划配置
    NET_DVR_HOLIDAY_PLAN_CFG struHolidyPlanCfg = { 0 };

    if (!NET_DVR_GetDeviceConfig(lLoginID, NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50, 1, &struGroupCond, sizeof(struGroupCond), &dwStatusList, &struHolidyPlanCfg, sizeof(struHolidyPlanCfg)))
    {
        cout << "NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50获取卡权限假日计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        if (dwStatusList == 0)
        {
            cout << "NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50获取卡权限假日计划参数成功" << endl;
            printf("使能：%d，假日日期：[%04d][%02d][%02d]-[%04d][%02d][%02d]\n", struHolidyPlanCfg.byEnable,struHolidyPlanCfg.struBeginDate.wYear,
                struHolidyPlanCfg.struBeginDate.byMonth, struHolidyPlanCfg.struBeginDate.byDay, struHolidyPlanCfg.struEndDate.wYear,
                struHolidyPlanCfg.struEndDate.byMonth, struHolidyPlanCfg.struEndDate.byDay);
        }
        else
        {
            cout << "NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50获取卡权限假日计划参数失败，状态：" << dwStatusList << endl;
        }
    }
    return;
}

二、门状态计划配置

对门禁控制的门或者梯控的楼层，配置关联计划模板，可以配置计划时间段和状态：常开、常闭、休眠、普通状态。门状态计划配置不是必须的，没有配置设备默认所有门都有权限。

每一个计划模板可以关联一个周计划和一个假日组计划，假日计划的优先级高于周计划。周计划可以配置周一到周日的时间段，每天支持配置8个不同的时间段；假日组计划可以关联16个不同的假日计划，每一个假日计划可以配置一个假日的起止日期，日期范围内每天的时间段相同（可以配置不同的8个时间段）。通过这个计划模板配置，可以实现门的权限管理。

2.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 配置门状态计划模板，门状态包括常开、常闭、普通等状态。
    1) 门状态计划参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_DOOR_STATUS_PLAN)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_DOOR_STATUS_PLAN)。
    2) 门状态计划模板参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE)。
    3) 门状态周计划参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_WEEK_PLAN_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_WEEK_PLAN_CFG)。
    4) 门状态假日组参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP)；门状态假日计划参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>

using namespace std;

int DoLogin();
void getDoorPlanCfg(int lLoginID, int doorNo);
void setDoorPlanCfg(int lLoginID, int doorNo);
int byEncodeType = 0;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

/****************************************
Function:    AnsiToUTF8
Description: Ansi字符转换成UTF-8字符
Input:       szAnsiString Ansi字符
Return:      UTF-8字符
****************************************/
char* AnsiToUTF8(const char *szAnsiString)
{
#if defined(_WIN32) || defined(_WIN64)
    if (szAnsiString == NULL || strlen(szAnsiString) == 0)
    {
        return NULL;
    }
    //AnsiToUnicode
    //预转换，得到所需空间的大小
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), NULL, 0);

    //分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间
    wchar_t* wszUnicodeString = new wchar_t[(size_t)wcsLen + 1];

    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), wszUnicodeString, wcsLen);

    //最后加上'\0'
    wszUnicodeString[wcsLen] = '\0';

    // unicode to UTF8
    //预转换，得到所需空间的大小，这次用的函数和上面名字相反
    int UTF8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), NULL, 0, NULL, NULL);

    //同上，分配空间要给'\0'留个空间
    //UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存
    char* szUTF8 = new char[(size_t)UTF8Len + 1];

    //转换
    //unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), szUTF8, UTF8Len, NULL, NULL);

    //最后加上'\0'
    szUTF8[UTF8Len] = '\0';

    delete[] wszUnicodeString;
    wszUnicodeString = NULL;

    return szUTF8;

#else
    if (NULL == szAnsiString)
    {
        return NULL;
    }
    char *outbuf = 0;
    if (szAnsiString)
    {
        iconv_t cd = iconv_open("UTF-8", "EUC-CN");
        if (cd)
        {
            size_t contlen = strlen(szAnsiString);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szAnsiString);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

int _tmain(int argc, _TCHAR* argv[])
{
    //SDK初始化
    NET_DVR_Init();

    //注册登录设备
    int lUserID = DoLogin();

    if (lUserID < 0)
    {
        return 0;//注册失败直接返回
    }

    int doorNo = 1;//门编号，从1开始
    getDoorPlanCfg(lUserID, doorNo);//获取门状态计划配置
    setDoorPlanCfg(lUserID, doorNo);//设置门状态计划配置

    //退出程序
    //注销登录
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return 1;
}
// 设备登录
int DoLogin()
{
    //登录参数，输入参数
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备参数结构体，输出参数
    NET_DVR_DEVICEINFO_V40 DeviceInfoV40;
    memset(&DeviceInfoV40, 0, sizeof(NET_DVR_DEVICEINFO_V40));

    //注册设备
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoV40);
    if (lLoginID< 0)
    {
        cout << "注册失败, 错误码: " << NET_DVR_GetLastError() << endl;
        NET_DVR_Cleanup();
    }
    else
    {
        byEncodeType = DeviceInfoV40.byCharEncodeType;
        cout << "注册成功，设备字符集类型：" << byEncodeType << endl;
        //字符编码类型（SDK所有接口返回的字符串编码类型，透传接口除外）：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)
    }
    return lLoginID;
}

//配置门状态计划
void setDoorPlanCfg(int lLoginID, int doorNo)
{
    int iPlanNo = doorNo;//门状态计划模板编号，门n对应门状态计划模板n，一一对应
    int iWeekPlanNo = 1;//周计划编号
    int iHolidayGroupNo = 1;//假日组编号
    int iHolidayPlanNo = 1;//假日计划编号

    //获取指定门关联的门状态计划模板
    NET_DVR_DOOR_STATUS_PLAN struDoorStatusPlan = { 0 };
    struDoorStatusPlan.dwSize = sizeof(struDoorStatusPlan);
    struDoorStatusPlan.dwTemplateNo = iPlanNo;

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_DOOR_STATUS_PLAN, doorNo, &struDoorStatusPlan, sizeof(struDoorStatusPlan)))
    {
        cout << "NET_DVR_SET_DOOR_STATUS_PLAN设置门状态计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_DOOR_STATUS_PLAN设置门状态计划参数成功!" << endl;
    }

    //计划模板配置
    NET_DVR_PLAN_TEMPLATE struTemplateCfg = {0};
    struTemplateCfg.dwSize = sizeof(struTemplateCfg);
    struTemplateCfg.byEnable = 1; //是否使能：0- 否，1- 是

    if (byEncodeType == 6)
    {
        strcpy((char *)struTemplateCfg.byTemplateName, AnsiToUTF8("周计划123")); //计划模板名称，自定义
    }

    struTemplateCfg.dwWeekPlanNo = iWeekPlanNo;//周计划编号，0表示无效
    struTemplateCfg.dwHolidayGroupNo[0] = iHolidayGroupNo; //假日组编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
    struTemplateCfg.dwHolidayGroupNo[1] = 0; //后续无效

    DWORD dwStatusList = 0;
    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE, iPlanNo, &struTemplateCfg, sizeof(struTemplateCfg)))
    {
        cout << "NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE设置门状态计划模板失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE设置门状态计划模板成功" << endl;
    }

    //门状态周计划配置
    NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = { 0 };
    struWeekPlanCfg.dwSize = sizeof(struWeekPlanCfg);
    struWeekPlanCfg.byEnable = 1;//是否使能：0- 否，1- 是

    //一周7天，每天最多8个时间段；先初始化为0，避免时间段交叉
    for (int i = 0; i < 7; i++)
        for (int j = 0; j < 8; j++)
        {
            struWeekPlanCfg.struPlanCfg[i][j].byEnable = 0;
            //开始时间
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byHour = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byMinute = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.bySecond = 0;
            //结束时间
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byHour = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byMinute = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.bySecond = 0;
        }

    //配置一周7天全天有效的计划模板，一个时间段
    for (int i = 0; i < 7; i++)
    {
        struWeekPlanCfg.struPlanCfg[i][0].byEnable = 0;
        //开始时间
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.byHour = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.byMinute = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.bySecond = 0;
        //结束时间
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.byHour = 24;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.byMinute = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.bySecond = 0;
    }

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_WEEK_PLAN_CFG, iWeekPlanNo, &struWeekPlanCfg, sizeof(struWeekPlanCfg)))
    {
        cout << "NET_DVR_SET_WEEK_PLAN_CFG设置门状态周计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_WEEK_PLAN_CFG设置门状态周计划参数成功" << endl;
    }

    //门状态假日组配置
    NET_DVR_HOLIDAY_GROUP_CFG struGroupCfg = { 0 };
    struGroupCfg.dwSize = sizeof(struGroupCfg);
    struGroupCfg.byEnable = 1;//是否使能：0- 否，1- 是
    if (byEncodeType == 6)
    {
        strcpy((char *)struGroupCfg.byGroupName, AnsiToUTF8("假日组123")); //假日组名称，自定义
    }
    struGroupCfg.dwHolidayPlanNo[0] = iHolidayPlanNo;//假日计划编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
    struGroupCfg.dwHolidayPlanNo[1] = 0;

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP, iHolidayGroupNo, &struGroupCfg, sizeof(struGroupCfg)))
    {
        cout << "NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP设置门状态假日组参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP设置门状态假日组参数成功" << endl;
    }

    //假日计划配置
    NET_DVR_HOLIDAY_PLAN_CFG struHolidyPlanCfg = { 0 };
    struHolidyPlanCfg.dwSize = sizeof(struHolidyPlanCfg);
    struHolidyPlanCfg.byEnable = 1;//是否使能：0- 否，1- 是

    //假日开始时间
    struHolidyPlanCfg.struBeginDate.wYear = 2021;
    struHolidyPlanCfg.struBeginDate.byMonth = 2;
    struHolidyPlanCfg.struBeginDate.byDay = 10;

    //假日结束时间
    struHolidyPlanCfg.struEndDate.wYear = 2021;
    struHolidyPlanCfg.struEndDate.byMonth = 2;
    struHolidyPlanCfg.struEndDate.byDay = 20;

    //配置两个有效时间段的计划模板
    struHolidyPlanCfg.struPlanCfg[0].byEnable = 1;
    //开始时间
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.byHour = 9;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.bySecond = 0;
    //结束时间
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.byHour = 10;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.bySecond = 0;

    struHolidyPlanCfg.struPlanCfg[1].byEnable = 1;
    //开始时间
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.byHour = 17;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.bySecond = 0;
    //结束时间
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.byHour = 18;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.bySecond = 0;

    //其他时间段不使用
    for (int i = 2; i < 7; i++)
    {
        struHolidyPlanCfg.struPlanCfg[i].byEnable = 0;
    }

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN, iHolidayPlanNo, &struHolidyPlanCfg, sizeof(struHolidyPlanCfg)))
    {
        cout << "NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN设置门状态假日计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN设置门状态假日计划参数成功" << endl;
    }
    return;

}

//获取门状态计划
void getDoorPlanCfg(int lLoginID, int doorNo)
{
    //获取指定门关联的门状态计划模板
    NET_DVR_DOOR_STATUS_PLAN struDoorStatusPlan = { 0 };
    DWORD dwBytesReturned = 0;
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_DOOR_STATUS_PLAN, doorNo, &struDoorStatusPlan, sizeof(struDoorStatusPlan), &dwBytesReturned))
    {
        cout << "NET_DVR_GET_DOOR_STATUS_PLAN获取门状态计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_GET_DOOR_STATUS_PLAN获取门状态计划参数成功，关联计划模板编号：" << struDoorStatusPlan.dwTemplateNo << endl;
    }

    int iTemplateNo = struDoorStatusPlan.dwTemplateNo;
    if (iTemplateNo == 0)
    {
        return;
    }

    //门状态计划模板配置，输出参数
    NET_DVR_PLAN_TEMPLATE struTemplateCfg = { 0 };

    DWORD dwStatusList = 0;
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE, iTemplateNo, &struTemplateCfg, sizeof(struTemplateCfg), &dwBytesReturned))
    {
        cout << "NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE获取门状态计划模板参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE获取门状态计划模板参数成功\n" << endl;

        BYTE byTemplateName[TEMPLATE_NAME_LEN] = { 0 };
        if (byEncodeType == 6)
        {
            strcpy((char*)byTemplateName, UTF8ToAnsi((char*)struTemplateCfg.byTemplateName)); //计划模板名称，需要根据设备实际字符集处理
        }

        printf("使能：%d，计划模板名称：%s，关联计划模板编号：%d，关联假日组编号：[%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]\n",
            struTemplateCfg.byEnable, byTemplateName, struTemplateCfg.dwWeekPlanNo, struTemplateCfg.dwHolidayGroupNo[0], struTemplateCfg.dwHolidayGroupNo[1],
            struTemplateCfg.dwHolidayGroupNo[2], struTemplateCfg.dwHolidayGroupNo[3], struTemplateCfg.dwHolidayGroupNo[4], struTemplateCfg.dwHolidayGroupNo[5],
            struTemplateCfg.dwHolidayGroupNo[6], struTemplateCfg.dwHolidayGroupNo[7], struTemplateCfg.dwHolidayGroupNo[8], struTemplateCfg.dwHolidayGroupNo[9],
            struTemplateCfg.dwHolidayGroupNo[10], struTemplateCfg.dwHolidayGroupNo[11], struTemplateCfg.dwHolidayGroupNo[12], struTemplateCfg.dwHolidayGroupNo[13],
            struTemplateCfg.dwHolidayGroupNo[14], struTemplateCfg.dwHolidayGroupNo[15]);
    }

    int iWeekPlanNo = struTemplateCfg.dwWeekPlanNo;
    if (iWeekPlanNo == 0)
    {
        return;
    }

    //门状态周计划配置
    NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = { 0 };
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_WEEK_PLAN_CFG, iWeekPlanNo, &struWeekPlanCfg, sizeof(struWeekPlanCfg), &dwBytesReturned))
    {
        cout << "NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50获取门状态周计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50获取门状态周计划参数成功，使能：" << (int)struWeekPlanCfg.byEnable << endl;

        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 8; j++)
            {
                printf("周[%d]时间段[%d]: [%02d:%02d:%02d]-[%02d:%02d:%02d]\n", (i + 1), (j + 1), struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byHour,
                    struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byMinute, struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.bySecond,
                    struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byHour, struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byMinute,
                    struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.bySecond);
            }
        }
    }

    //一个计划模板最多关联16个不同的假日组
    for (int i = 0; i < 16; i++)
    {
        if (struTemplateCfg.dwHolidayGroupNo[i] != 0)
        {
            //门状态假日组配置
            NET_DVR_HOLIDAY_GROUP_CFG struGroupCfg = { 0 };
            if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP, struTemplateCfg.dwHolidayGroupNo[i], &struGroupCfg, sizeof(struGroupCfg), &dwBytesReturned))
            {
                cout << "NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP获取门状态假日组参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
            }
            else
            {
                cout << "NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP获取门状态假日组参数成功" << endl;
                BYTE byGroupName[TEMPLATE_NAME_LEN] = { 0 };
                if (byEncodeType == 6)
                {
                    strcpy((char*)byGroupName, UTF8ToAnsi((char*)struGroupCfg.byGroupName)); //假日组名称，需要根据设备实际字符集处理
                }

                printf("使能：%d，假日组名称：%s，关联假日计划编号：[%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]\n",
                    struGroupCfg.byEnable, byGroupName, struGroupCfg.dwHolidayPlanNo[0], struGroupCfg.dwHolidayPlanNo[1],
                    struGroupCfg.dwHolidayPlanNo[2], struGroupCfg.dwHolidayPlanNo[3], struGroupCfg.dwHolidayPlanNo[4], struGroupCfg.dwHolidayPlanNo[5],
                    struGroupCfg.dwHolidayPlanNo[6], struGroupCfg.dwHolidayPlanNo[7], struGroupCfg.dwHolidayPlanNo[8], struGroupCfg.dwHolidayPlanNo[9],
                    struGroupCfg.dwHolidayPlanNo[10], struGroupCfg.dwHolidayPlanNo[11], struGroupCfg.dwHolidayPlanNo[12], struGroupCfg.dwHolidayPlanNo[13],
                    struGroupCfg.dwHolidayPlanNo[14], struGroupCfg.dwHolidayPlanNo[15]);

                //一个假日组最多关联16个假日计划模板
                for (int j = 0; j < 16; j++)
                {
                    if (struGroupCfg.dwHolidayPlanNo[j] != 0)
                    {
                        //假日计划配置
                        NET_DVR_HOLIDAY_PLAN_CFG struHolidyPlanCfg = { 0 };

                        if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN, 1, &struHolidyPlanCfg, sizeof(struHolidyPlanCfg), &dwBytesReturned))
                        {
                            cout << "NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN获取门状态假日计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
                        }
                        else
                        {
                            cout << "NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN获取门状态假日计划参数成功" << endl;
                            printf("使能：%d，假日日期：[%04d][%02d][%02d]-[%04d][%02d][%02d]\n", struHolidyPlanCfg.byEnable, struHolidyPlanCfg.struBeginDate.wYear,
                                struHolidyPlanCfg.struBeginDate.byMonth, struHolidyPlanCfg.struBeginDate.byDay, struHolidyPlanCfg.struEndDate.wYear,
                                struHolidyPlanCfg.struEndDate.byMonth, struHolidyPlanCfg.struEndDate.byDay);
                        }
                    }
                    else
                    {
                        break;//按值表示，采用紧凑型排列，中间遇到0则后续无效
                    }

                }
            }
        }
        else
        {
            break;//按值表示，采用紧凑型排列，中间遇到0则后续无效
        }
    }
    return;
}

三、读卡器验证计划配置

配置门进出的读卡器的计划时间段和验证方式（刷卡、刷脸等验证方式）。一个门对应两个读卡器，门1对应读卡器1（进门）、读卡器2（出门），门2对应读卡器3（进门）、读卡器4（出门），以此类推。读卡器n只能关联读卡器计划模板n，一一对应。门状态计划配置不是必须的，没有配置设备默认所有读卡器都有权限。

每一个计划模板可以关联一个周计划和一个假日组计划，假日计划的优先级高于周计划。周计划可以配置周一到周日的时间段，每天支持配置8个不同的时间段；假日组计划可以关联16个不同的假日计划，每一个假日计划可以配置一个假日的起止日期，日期范围内每天的时间段相同（可以配置不同的8个时间段）。通过这个计划模板配置，可以实现门的权限管理。

3.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 配置门状态计划模板，门状态包括常开、常闭、普通等状态。
    1) 门状态计划参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_CARD_READER_PLAN)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_CARD_READER_PLAN)。
    2) 门状态计划模板参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VERIFY_PLAN_TEMPLATE)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VERIFY_PLAN_TEMPLATE)。
    3) 门状态周计划参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VERIFY_WEEK_PLAN)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VERIFY_WEEK_PLAN)。
    4) 门状态假日组参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VERIFY_HOLIDAY_GROUP、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VERIFY_HOLIDAY_GROUP)；门状态假日计划参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VERIFY_HOLIDAY_PLAN)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VERIFY_HOLIDAY_PLAN)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

3.2 示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>

using namespace std;

int DoLogin();
void getReaderPlanCfg(int lLoginID, int cardReaderNo);
void setReaderPlanCfg(int lLoginID, int cardReaderNo);
int byEncodeType = 0;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

/****************************************
Function:    AnsiToUTF8
Description: Ansi字符转换成UTF-8字符
Input:       szAnsiString Ansi字符
Return:      UTF-8字符
****************************************/
char* AnsiToUTF8(const char *szAnsiString)
{
#if defined(_WIN32) || defined(_WIN64)
    if (szAnsiString == NULL || strlen(szAnsiString) == 0)
    {
        return NULL;
    }
    //AnsiToUnicode
    //预转换，得到所需空间的大小
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), NULL, 0);

    //分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间
    wchar_t* wszUnicodeString = new wchar_t[(size_t)wcsLen + 1];

    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), wszUnicodeString, wcsLen);

    //最后加上'\0'
    wszUnicodeString[wcsLen] = '\0';

    // unicode to UTF8
    //预转换，得到所需空间的大小，这次用的函数和上面名字相反
    int UTF8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), NULL, 0, NULL, NULL);

    //同上，分配空间要给'\0'留个空间
    //UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存
    char* szUTF8 = new char[(size_t)UTF8Len + 1];

    //转换
    //unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), szUTF8, UTF8Len, NULL, NULL);

    //最后加上'\0'
    szUTF8[UTF8Len] = '\0';

    delete[] wszUnicodeString;
    wszUnicodeString = NULL;

    return szUTF8;

#else
    if (NULL == szAnsiString)
    {
        return NULL;
    }
    char *outbuf = 0;
    if (szAnsiString)
    {
        iconv_t cd = iconv_open("UTF-8", "EUC-CN");
        if (cd)
        {
            size_t contlen = strlen(szAnsiString);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szAnsiString);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

int _tmain(int argc, _TCHAR* argv[])
{
    //SDK初始化
    NET_DVR_Init();

    //注册登录设备
    int lUserID = DoLogin();

    if (lUserID < 0)
    {
        return 0;//注册失败直接返回
    }

    int cardReaderNo = 1;//读卡器编号，从1开始
    getReaderPlanCfg(lUserID, cardReaderNo);//获取读卡器验证方式计划配置
    setReaderPlanCfg(lUserID, cardReaderNo);//设置读卡器验证方式计划配置

    //退出程序
    //注销登录
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return 1;
}
// 设备登录
int DoLogin()
{
    //登录参数，输入参数
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备参数结构体，输出参数
    NET_DVR_DEVICEINFO_V40 DeviceInfoV40;
    memset(&DeviceInfoV40, 0, sizeof(NET_DVR_DEVICEINFO_V40));

    //注册设备
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoV40);
    if (lLoginID< 0)
    {
        cout << "注册失败, 错误码: " << NET_DVR_GetLastError() << endl;
        NET_DVR_Cleanup();
    }
    else
    {
        byEncodeType = DeviceInfoV40.byCharEncodeType;
        cout << "注册成功，设备字符集类型：" << byEncodeType << endl;
        //字符编码类型（SDK所有接口返回的字符串编码类型，透传接口除外）：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)
    }
    return lLoginID;
}

//配置读卡器验证方式计划
void setReaderPlanCfg(int lLoginID, int cardReaderNo)
{
    int iPlanNo = cardReaderNo;//读卡器验证方式计划模板编号，读卡器n对应读卡器验证方式计划模板n，一一对应
    int iWeekPlanNo = 1;//周计划编号
    int iHolidayGroupNo = 1;//假日组编号
    int iHolidayPlanNo = 1;//假日计划编号

    //获取读卡器验证方式计划模板
    NET_DVR_CARD_READER_PLAN struCardReaderPlan = { 0 };
    struCardReaderPlan.dwSize = sizeof(struCardReaderPlan);
    struCardReaderPlan.dwTemplateNo = iPlanNo;

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_CARD_READER_PLAN, cardReaderNo, &struCardReaderPlan, sizeof(struCardReaderPlan)))
    {
        cout << "NET_DVR_SET_CARD_READER_PLAN设置读卡器验证方式计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_CARD_READER_PLAN设置读卡器验证方式计划参数成功!" << endl;
    }

    //计划模板配置
    NET_DVR_PLAN_TEMPLATE struTemplateCfg = {0};
    struTemplateCfg.dwSize = sizeof(struTemplateCfg);
    struTemplateCfg.byEnable = 1; //是否使能：0- 否，1- 是

    if (byEncodeType == 6)
    {
        strcpy((char *)struTemplateCfg.byTemplateName, AnsiToUTF8("周计划123")); //计划模板名称，自定义
    }

    struTemplateCfg.dwWeekPlanNo = iWeekPlanNo;//周计划编号，0表示无效
    struTemplateCfg.dwHolidayGroupNo[0] = iHolidayGroupNo; //假日组编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
    struTemplateCfg.dwHolidayGroupNo[1] = 0; //后续无效

    DWORD dwStatusList = 0;
    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_VERIFY_PLAN_TEMPLATE, iPlanNo, &struTemplateCfg, sizeof(struTemplateCfg)))
    {
        cout << "NET_DVR_SET_VERIFY_PLAN_TEMPLATE设置读卡器验证方式计划模板失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_VERIFY_PLAN_TEMPLATE设置读卡器验证方式计划模板成功" << endl;
    }

    //读卡器验证方式周计划配置
    NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = { 0 };
    struWeekPlanCfg.dwSize = sizeof(struWeekPlanCfg);
    struWeekPlanCfg.byEnable = 1;//是否使能：0- 否，1- 是

    //一周7天，每天最多8个时间段；先初始化为0，避免时间段交叉
    for (int i = 0; i < 7; i++)
        for (int j = 0; j < 8; j++)
        {
            struWeekPlanCfg.struPlanCfg[i][j].byEnable = 0;
            //开始时间
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byHour = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byMinute = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.bySecond = 0;
            //结束时间
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byHour = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byMinute = 0;
            struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.bySecond = 0;
        }

    //配置一周7天全天有效的计划模板，一个时间段
    for (int i = 0; i < 7; i++)
    {
        struWeekPlanCfg.struPlanCfg[i][0].byEnable = 0;
        //开始时间
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.byHour = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.byMinute = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struBeginTime.bySecond = 0;
        //结束时间
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.byHour = 24;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.byMinute = 0;
        struWeekPlanCfg.struPlanCfg[i][0].struTimeSegment.struEndTime.bySecond = 0;
        struWeekPlanCfg.struPlanCfg[i][0].byVerifyMode = 14;/*验证方式：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-刷卡或人脸或指纹*/
    }

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_VERIFY_WEEK_PLAN, iWeekPlanNo, &struWeekPlanCfg, sizeof(struWeekPlanCfg)))
    {
        cout << "NET_DVR_SET_VERIFY_WEEK_PLAN设置读卡器验证方式周计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_VERIFY_WEEK_PLAN设置读卡器验证方式周计划参数成功" << endl;
    }

    //读卡器验证方式假日组配置
    NET_DVR_HOLIDAY_GROUP_CFG struGroupCfg = { 0 };
    struGroupCfg.dwSize = sizeof(struGroupCfg);
    struGroupCfg.byEnable = 1;//是否使能：0- 否，1- 是
    if (byEncodeType == 6)
    {
        strcpy((char *)struGroupCfg.byGroupName, AnsiToUTF8("假日组123")); //假日组名称，自定义
    }
    struGroupCfg.dwHolidayPlanNo[0] = iHolidayPlanNo;//假日计划编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
    struGroupCfg.dwHolidayPlanNo[1] = 0;

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_VERIFY_HOLIDAY_GROUP, iHolidayGroupNo, &struGroupCfg, sizeof(struGroupCfg)))
    {
        cout << "NET_DVR_SET_VERIFY_HOLIDAY_GROUP设置读卡器验证方式假日组参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_VERIFY_HOLIDAY_GROUP设置读卡器验证方式假日组参数成功" << endl;
    }

    //假日计划配置
    NET_DVR_HOLIDAY_PLAN_CFG struHolidyPlanCfg = { 0 };
    struHolidyPlanCfg.dwSize = sizeof(struHolidyPlanCfg);
    struHolidyPlanCfg.byEnable = 1;//是否使能：0- 否，1- 是

    //假日开始时间
    struHolidyPlanCfg.struBeginDate.wYear = 2021;
    struHolidyPlanCfg.struBeginDate.byMonth = 2;
    struHolidyPlanCfg.struBeginDate.byDay = 10;

    //假日结束时间
    struHolidyPlanCfg.struEndDate.wYear = 2021;
    struHolidyPlanCfg.struEndDate.byMonth = 2;
    struHolidyPlanCfg.struEndDate.byDay = 20;

    //配置两个有效时间段的计划模板
    struHolidyPlanCfg.struPlanCfg[0].byEnable = 1;
    //开始时间
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.byHour = 9;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struBeginTime.bySecond = 0;
    //结束时间
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.byHour = 10;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[0].struTimeSegment.struEndTime.bySecond = 0;

    struHolidyPlanCfg.struPlanCfg[1].byEnable = 1;
    //开始时间
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.byHour = 17;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struBeginTime.bySecond = 0;
    //结束时间
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.byHour = 18;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.byMinute = 0;
    struHolidyPlanCfg.struPlanCfg[1].struTimeSegment.struEndTime.bySecond = 0;

    //其他时间段不使用
    for (int i = 2; i < 7; i++)
    {
        struHolidyPlanCfg.struPlanCfg[i].byEnable = 0;
    }

    if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_VERIFY_HOLIDAY_PLAN, iHolidayPlanNo, &struHolidyPlanCfg, sizeof(struHolidyPlanCfg)))
    {
        cout << "NET_DVR_SET_VERIFY_HOLIDAY_PLAN设置读卡器验证方式假日计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_SET_VERIFY_HOLIDAY_PLAN设置读卡器验证方式假日计划参数成功" << endl;
    }
    return;

}

//获取读卡器验证方式计划
void getReaderPlanCfg(int lLoginID, int cardReaderNo)
{
    //获取指定门关联的读卡器验证方式计划模板
    NET_DVR_CARD_READER_PLAN struCardReaderPlan = { 0 };
    DWORD dwBytesReturned = 0;
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_CARD_READER_PLAN, cardReaderNo, &struCardReaderPlan, sizeof(struCardReaderPlan), &dwBytesReturned))
    {
        cout << "NET_DVR_GET_CARD_READER_PLAN获取读卡器验证方式计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_GET_CARD_READER_PLAN获取读卡器验证方式计划参数成功，关联计划模板编号：" << struCardReaderPlan.dwTemplateNo << endl;
    }

    int iTemplateNo = struCardReaderPlan.dwTemplateNo;
    if (iTemplateNo == 0)
    {
        return;
    }

    //读卡器验证方式计划模板配置，输出参数
    NET_DVR_PLAN_TEMPLATE struTemplateCfg = { 0 };

    DWORD dwStatusList = 0;
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_VERIFY_PLAN_TEMPLATE, iTemplateNo, &struTemplateCfg, sizeof(struTemplateCfg), &dwBytesReturned))
    {
        cout << "NET_DVR_GET_VERIFY_PLAN_TEMPLATE获取读卡器验证方式计划模板参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_GET_VERIFY_PLAN_TEMPLATE获取读卡器验证方式计划模板参数成功\n" << endl;

        BYTE byTemplateName[TEMPLATE_NAME_LEN] = { 0 };
        if (byEncodeType == 6)
        {
            strcpy((char*)byTemplateName, UTF8ToAnsi((char*)struTemplateCfg.byTemplateName)); //计划模板名称，需要根据设备实际字符集处理
        }

        printf("使能：%d，计划模板名称：%s，关联计划模板编号：%d，关联假日组编号：[%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]\n",
            struTemplateCfg.byEnable, byTemplateName, struTemplateCfg.dwWeekPlanNo, struTemplateCfg.dwHolidayGroupNo[0], struTemplateCfg.dwHolidayGroupNo[1],
            struTemplateCfg.dwHolidayGroupNo[2], struTemplateCfg.dwHolidayGroupNo[3], struTemplateCfg.dwHolidayGroupNo[4], struTemplateCfg.dwHolidayGroupNo[5],
            struTemplateCfg.dwHolidayGroupNo[6], struTemplateCfg.dwHolidayGroupNo[7], struTemplateCfg.dwHolidayGroupNo[8], struTemplateCfg.dwHolidayGroupNo[9],
            struTemplateCfg.dwHolidayGroupNo[10], struTemplateCfg.dwHolidayGroupNo[11], struTemplateCfg.dwHolidayGroupNo[12], struTemplateCfg.dwHolidayGroupNo[13],
            struTemplateCfg.dwHolidayGroupNo[14], struTemplateCfg.dwHolidayGroupNo[15]);
    }

    int iWeekPlanNo = struTemplateCfg.dwWeekPlanNo;
    if (iWeekPlanNo == 0)
    {
        return;
    }

    //读卡器验证方式周计划配置
    NET_DVR_WEEK_PLAN_CFG struWeekPlanCfg = { 0 };
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_VERIFY_WEEK_PLAN, iWeekPlanNo, &struWeekPlanCfg, sizeof(struWeekPlanCfg), &dwBytesReturned))
    {
        cout << "NET_DVR_GET_VERIFY_WEEK_PLAN获取读卡器验证方式周计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    else
    {
        cout << "NET_DVR_GET_VERIFY_WEEK_PLAN获取读卡器验证方式周计划参数成功，使能：" << (int)struWeekPlanCfg.byEnable << endl;

        for (int i = 0; i < 7; i++)
        {
            for (int j = 0; j < 8; j++)
            {
                printf("周[%d]时间段[%d]: [%02d:%02d:%02d]-[%02d:%02d:%02d], 验证方式:%d\n", (i + 1), (j + 1), struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byHour,
                    struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.byMinute, struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struBeginTime.bySecond,
                    struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byHour, struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.byMinute,
                    struWeekPlanCfg.struPlanCfg[i][j].struTimeSegment.struEndTime.bySecond, struWeekPlanCfg.struPlanCfg[i][j].byVerifyMode);
            }
        }
    }

    //一个计划模板最多关联16个不同的假日组
    for (int i = 0; i < 16; i++)
    {
        if (struTemplateCfg.dwHolidayGroupNo[i] != 0)
        {
            //读卡器验证方式假日组配置
            NET_DVR_HOLIDAY_GROUP_CFG struGroupCfg = { 0 };
            if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_VERIFY_HOLIDAY_GROUP, struTemplateCfg.dwHolidayGroupNo[i], &struGroupCfg, sizeof(struGroupCfg), &dwBytesReturned))
            {
                cout << "NET_DVR_GET_VERIFY_HOLIDAY_GROUP获取读卡器验证方式假日组参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
            }
            else
            {
                cout << "NET_DVR_GET_VERIFY_HOLIDAY_GROUP获取读卡器验证方式假日组参数成功" << endl;
                BYTE byGroupName[TEMPLATE_NAME_LEN] = { 0 };
                if (byEncodeType == 6)
                {
                    strcpy((char*)byGroupName, UTF8ToAnsi((char*)struGroupCfg.byGroupName)); //假日组名称，需要根据设备实际字符集处理
                }

                printf("使能：%d，假日组名称：%s，关联假日计划编号：[%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d][%d]\n",
                    struGroupCfg.byEnable, byGroupName, struGroupCfg.dwHolidayPlanNo[0], struGroupCfg.dwHolidayPlanNo[1],
                    struGroupCfg.dwHolidayPlanNo[2], struGroupCfg.dwHolidayPlanNo[3], struGroupCfg.dwHolidayPlanNo[4], struGroupCfg.dwHolidayPlanNo[5],
                    struGroupCfg.dwHolidayPlanNo[6], struGroupCfg.dwHolidayPlanNo[7], struGroupCfg.dwHolidayPlanNo[8], struGroupCfg.dwHolidayPlanNo[9],
                    struGroupCfg.dwHolidayPlanNo[10], struGroupCfg.dwHolidayPlanNo[11], struGroupCfg.dwHolidayPlanNo[12], struGroupCfg.dwHolidayPlanNo[13],
                    struGroupCfg.dwHolidayPlanNo[14], struGroupCfg.dwHolidayPlanNo[15]);

                //一个假日组最多关联16个假日计划模板
                for (int j = 0; j < 16; j++)
                {
                    if (struGroupCfg.dwHolidayPlanNo[j] != 0)
                    {
                        //假日计划配置
                        NET_DVR_HOLIDAY_PLAN_CFG struHolidyPlanCfg = { 0 };

                        if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_VERIFY_HOLIDAY_PLAN, 1, &struHolidyPlanCfg, sizeof(struHolidyPlanCfg), &dwBytesReturned))
                        {
                            cout << "NET_DVR_GET_VERIFY_HOLIDAY_PLAN获取读卡器验证方式假日计划参数失败, 错误码: " << NET_DVR_GetLastError() << endl;
                        }
                        else
                        {
                            cout << "NET_DVR_GET_VERIFY_HOLIDAY_PLAN获取读卡器验证方式假日计划参数成功" << endl;
                            printf("使能：%d，假日日期：[%04d][%02d][%02d]-[%04d][%02d][%02d]\n", struHolidyPlanCfg.byEnable, struHolidyPlanCfg.struBeginDate.wYear,
                                struHolidyPlanCfg.struBeginDate.byMonth, struHolidyPlanCfg.struBeginDate.byDay, struHolidyPlanCfg.struEndDate.wYear,
                                struHolidyPlanCfg.struEndDate.byMonth, struHolidyPlanCfg.struEndDate.byDay);
                        }
                    }
                    else
                    {
                        break;//按值表示，采用紧凑型排列，中间遇到0则后续无效
                    }

                }
            }
        }
        else
        {
            break;//按值表示，采用紧凑型排列，中间遇到0则后续无效
        }
    }
    return;
}


门禁远程控门

远程控门

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等。

远程下发网络命令，控制门禁设备连接的门或者道闸的开、关、常开、常关。梯控主机的梯控控制，也是通过该方式实现。

目录

  • 远程控门
    • 目录
    • 一、接口调用流程
    • 二、 示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后即可远程控制开关门，对应接口：NET_DVR_ControlGateway。对接梯控主机时，客户端远程呼梯也是调用该接口实现的，其中门禁序号lGatewayIndex参数对应楼层编号，可以将电梯呼叫到指定楼层。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //远程控门
    int lGatewayIndex = 1; //门禁序号（楼层编号、锁ID），从1开始，-1表示对所有门（或者梯控的所有楼层）进行操作
    int dwStaic = 1; //命令值：0 - 关闭（对于梯控，表示受控），1 - 打开（对于梯控，表示开门），
                     //2 - 常开（对于梯控，表示自由、通道状态），3 - 常关（对于梯控，表示禁用），
                     //4 - 恢复（梯控，普通状态），5 - 访客呼梯（梯控），6 - 住户呼梯（梯控）

    if (!NET_DVR_ControlGateway(lUserID, lGatewayIndex, dwStaic))
    {
        printf("NET_DVR_ControlGateway failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_ControlGateway successfully!\n");
    }

    //---------------------------------------
    //退出程序

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


门禁远程核验

远程核验

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等。

设备支持并且开启远程核验功能的情况下，设备本地刷脸认证通过之后不直接联动开门，而是上传事件给平台，平台接收到事件之后进行二次核验，核验之后再下发结果给设备，设备根据结果判断是否开门。

目录

  • 远程核验
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 先配置门禁参数开启远程核验功能和相关参数，对应接口：NET_DVR_STDXMLConfig，获取命令：GET /ISAPI/AccessControl/AcsCfg?format=json，设置命令：PUT /ISAPI/AccessControl/AcsCfg?format=json，获取和设置的参数数据是JSON格式{AcsCfg}，其中"remoteCheckDoorEnabled"需要设置为true开启远程核验控制开关门功能，"checkChannelType"设置为PrivateSDK，"channelIp"设置为进行核验的客户端IP地址。
  • 配置好相关参数之后，报警布防接收事件（流程详见“报警事件”模块说明），NET_DVR_ACS_ALARM_INFO门禁事件中NET_DVR_ACS_EVENT_INFO的dwSerialNo参数表示流水号，事件主类型dwMajor为0x5，事件次类型dwMinor为0x4b，并且pAcsEventInfoExtendV20指针指向结构体NET_DVR_ACS_EVENT_INFO_EXTEND_V20中的byRemoteCheck为2，说明需要远程核验。
  • 客户端根据事件信息进行二次核验之后，将核验结果下发给设备，相关接口：NET_DVR_STDXMLConfig，命令：PUT /ISAPI/AccessControl/remoteCheck?format=json，下发的结果中serialNo需要和事件中的dwSerialNo流水号一致，“checkResult”为success表示核验通过(可以联动开门)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置配置参数
    char szUrl[512];
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "PUT /ISAPI/AccessControl/AcsCfg?format=json\r\n");

    //输入JSON数据
    char pBuf[2*1024] = { 0 };
    strcpy(pBuf, "{\"AcsCfg\":{\"uploadCapPic\": true,\"remoteCheckDoorEnabled\": true,\"checkChannelType\": \"PrivateSDK\",\"channelIp\" : \"10.17.36.38\"}}");

    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);
    struInput.lpInBuffer = pBuf;
    struInput.dwInBufferSize = strlen(pBuf);

    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    //输出结果
    char szOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    char szStatusBuff[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuff;
    struOutputParam.dwStatusSize = sizeof(szStatusBuff);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("PUT /ISAPI/AccessControl/AcsCfg?format=json failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("PUT /ISAPI/AccessControl/AcsCfg?format=json successfully!\n");
        printf("%s\n", szOutput);
        printf("%s\n", szStatusBuff);
    }

    //获取配置参数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/AccessControl/AcsCfg?format=json\r\n");

    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    char szGetOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szGetOutput;
    struOutputParam.dwOutBufferSize = sizeof(szGetOutput);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("GET /ISAPI/AccessControl/AcsCfg?format=json failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("GET /ISAPI/AccessControl/AcsCfg?format=json successfully!\n");
        printf("%s\n", szGetOutput);
    }

    //---------------------------------------
    //退出程序

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


门禁事件联动抓拍

事件联动抓拍

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等。

刷脸、指纹、人脸认证、人证比对等事件，可以联动抓拍图片，抓拍之后和事件一起实时上传或者存储在设备本地。但是默认不开启事件抓拍功能，需要配置启用。

目录

  • 事件联动抓拍
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录之后即可以配置抓拍相关参数：
    1) NET_DVR_STDXMLConfig(命令: GET /ISAPI/AccessControl/SnapConfig/capabilities)获取触发参数能力集，可以判断设备是否支持相关功能以及支持的抓拍分辨率。然后调用NET_DVR_ContinuousShoot配置触发参数（抓拍次数和分辨率等）。
    2) NET_DVR_GetDVRConfig(命令:NET_DVR_GET_ACS_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ACS_CFG)获取和设置门禁主机参数，对应结构体NET_DVR_ACS_CFG中byUploadCapPic赋值为1表示联动抓拍上传，bySaveCapPic为1表示设备本地保存抓拍图片。
    3) NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51)获取和设置事件联动配置参数，根据需求配置各种事件比如人脸比对成功、人脸比对失败等联动抓拍功能。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int DoLogin();
void setSnapConfig(int lLoginID);

int _tmain(int argc, _TCHAR* argv[])
{
    //SDK初始化
    NET_DVR_Init();

    //注册登录设备
    int lUserID = DoLogin();

    if (lUserID < 0)
    {
        return 0;//注册失败直接返回
    }

    setSnapConfig(lUserID);//抓拍相关参数配置

    //退出程序
    //注销登录
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return 1;
}

// 设备登录
int DoLogin()
{
    //登录参数，输入参数
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备参数结构体，输出参数
    NET_DVR_DEVICEINFO_V40 DeviceInfoV40;
    memset(&DeviceInfoV40, 0, sizeof(NET_DVR_DEVICEINFO_V40));

    //注册设备
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoV40);
    if (lLoginID< 0)
    {
        printf("注册失败, 错误码: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
    }
    else
    {
        printf("注册成功");
    }

    return lLoginID;
}

//抓拍相关参数配置
void setSnapConfig(int lLoginID)
{
    ///////////////////////
    //门禁参数配置

    NET_DVR_ACS_CFG struAcsCfg = { 0 };
    DWORD dwBytesReturned = 0;
    if (!NET_DVR_GetDVRConfig(lLoginID, NET_DVR_GET_ACS_CFG, -1, &struAcsCfg, sizeof(struAcsCfg), &dwBytesReturned))
    {
        printf("NET_DVR_GET_ACS_CFG获取门禁主机参数失败, 错误码: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_GET_ACS_CFG获取门禁主机参数成功, 联动抓拍是否上传图片: %d, 是否保存抓拍图片: %d\n", struAcsCfg.byUploadCapPic, struAcsCfg.bySaveCapPic);

        struAcsCfg.byUploadCapPic = 1;
        struAcsCfg.bySaveCapPic = 1;

        if (!NET_DVR_SetDVRConfig(lLoginID, NET_DVR_SET_ACS_CFG, -1, &struAcsCfg, sizeof(struAcsCfg)))
        {
            printf("NET_DVR_SET_ACS_CFG设置门禁主机参数失败, 错误码: %d\n", NET_DVR_GetLastError());
        }
        else
        {
            printf("NET_DVR_SET_ACS_CFG设置门禁主机参数成功\n");
        }
    }

    //触发参数配置
    NET_DVR_SNAPCFG struSnapCfg = {0};
    struSnapCfg.dwSize = sizeof(struSnapCfg);
    struSnapCfg.bySnapTimes = 1; //抓拍次数，0-不抓拍，非0-连拍次数
    struSnapCfg.struJpegPara.wPicSize = 0xff; //0xff-Auto
    struSnapCfg.struJpegPara.wPicQuality = 2; //图片质量系数：0-最好，1-较好，2-一般
    if (!NET_DVR_ContinuousShoot(lLoginID, &struSnapCfg))
    {
        printf("NET_DVR_ContinuousShoot设置触发参数失败, 错误码: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_ContinuousShoot设置触发参数成功\n");
    }

    ///////////////////////
    //事件卡号联动配置参数

    //事件/卡号联动配置条件
    NET_DVR_EVENT_CARD_LINKAGE_COND struLinkCond = { 0 };
    struLinkCond.dwSize = sizeof(struLinkCond);
    struLinkCond.dwEventID = 1;//事件ID，没有具体含义，从1开始的编号，配置多种事件联动抓拍的时候每一种事件对应一个ID
    struLinkCond.wLocalControllerID = 0;

    //事件/卡号联动配置结构体
    NET_DVR_EVENT_CARD_LINKAGE_CFG_V51 struLinkCfg = { 0 };

    DWORD dwStatusList = 0;
    if (!NET_DVR_GetDeviceConfig(lLoginID, NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51, 1, &struLinkCond, sizeof(struLinkCond), &dwStatusList, &struLinkCfg, sizeof(struLinkCfg)))
    {
        printf("NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51获取事件/卡号联动配置失败, 错误码: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        if (dwStatusList == 0)
        {
            printf("NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50获取事件/卡号联动配置成功，联动方式:%d, 事件主类型：%d，事件次类型：%d，事件源ID:%d, 是否联动抓拍:\n",
                struLinkCfg.byProMode, struLinkCfg.uLinkageInfo.struEventLinkage.wMainEventType, struLinkCfg.uLinkageInfo.struEventLinkage.wSubEventType,
                struLinkCfg.dwEventSourceID, struLinkCfg.byCapturePic);

            struLinkCfg.byProMode = 0; //联动方式：0- 事件，1- 卡号，3-工号（人员ID）
            struLinkCfg.dwEventSourceID = 1;//当主类型为读卡器事件时，为读卡器编号
            struLinkCfg.uLinkageInfo.struEventLinkage.wMainEventType = 3;//事件主类型，3表示读卡器事件
            struLinkCfg.uLinkageInfo.struEventLinkage.wSubEventType = 25;//25表示人脸认证通过，26表示人脸认证失败，56表示人证比对通过，57表示人证比对失败
            struLinkCfg.dwEventSourceID, struLinkCfg.byCapturePic = 1;//是否联动抓拍：0-不联动抓拍，1-联动抓拍

            //如果需要配置多种不同事件联动抓拍，需要多次调用NET_DVR_SetDeviceConfig
            if (!NET_DVR_SetDeviceConfig(lLoginID, NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51, 1, &struLinkCond, sizeof(struLinkCond), &dwStatusList, &struLinkCfg, sizeof(struLinkCfg)))
            {
                printf("NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51设置事件/卡号联动配置失败, 错误码: %d\n", NET_DVR_GetLastError());
            }
            else
            {
                if (dwStatusList == 0)
                {
                    printf("NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51设置事件/卡号联动配置成功\n");
                }
                else
                {
                    printf("NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50设置卡权限假日计划参数失败，状态：%d\n", dwStatusList);
                }
            }
        }
        else
        {
            printf("NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50获取卡权限计划模板失败，状态：%d\n", dwStatusList);
        }
    }
    return;
}


报警主机事件模块

报警主机事件

报警主机通过子系统实现防区分区管理和配置，每一个子系统下有多个防区，报警主机对子系统或者防区进行布防之后会自动检测报警触发事件然后上传。SDK接收报警主机上传的报警信息有两种方式：

1）报警布防方式，是指SDK主动连接设备，建立报警上传通道，设备发生报警之后发送给SDK，需要先注册登录设备。 2）报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警主机的IP和端口，和SDK监听的IP、端口需要一致。

布防和监听，是两种不同的方式，设备同时支持的情况下，只需要选择其中一种即可。

目录

  • 报警主机事件
    • 目录
    • 一、报警布防
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、报警监听
      • 2.1 接口调用流程
      • 2.2 示例代码

一、报警布防

1.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 报警主机只监测正常布防的防区事件，因此需要先对子系统或者防区进行布防操作，相关接口：
    1) 子系统布撤防操作：调用NET_DVR_RemoteControl(命令：NET_DVR_ARM_ALARMHOST_SUBSYSTEM)对子系统进行布防，支持按布防类型进行布防。其中被旁路的防区不会受到对整个报警系统布防、撤防操作的影响，不能正常探测报警信息，处于非工作状态，旁路操作相关接口：NET_DVR_BypassAlarmChan、NET_DVR_UnBypassAlarmChan或NET_DVR_AlarmHostArrayBypass、NET_DVR_AlarmHostArrayBypassResume。
    2) 防区布撤防操作：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG)获取和设置子系统参数，其中NET_DVR_ALARMSUBSYSTEMPARAM的bySingleZoneSetupAlarmEnable单防区布撤防使能参数赋值为1，然后可以调用NET_DVR_AlarmHostSetupAlarmChan对指定的防区进行布防操作。
  • 报警布防方式实现方法： 1) 先调用NET_DVR_SetDVRMessageCallBack_V50接口设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。 2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。 3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 报警主机防区报警主要以CID报告方式上传，回调函数中获取的报警类型(lCommand)为COMM_ALARMHOST_CID_ALARM，报警信息(pAlarmInfo)对应结构体：NET_DVR_CID_ALARM。故障报警信息，回调函数中获取的报警类型(lCommand)为COMM_ALARMHOST_EXCEPTION，报警信息(pAlarmInfo)对应结构体：NET_DVR_ALARMHOST_EXCEPTION_ALARM。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include <stdio.h>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ALARMHOST_CID_ALARM: //报警主机CID报告报警上传
    {
        NET_DVR_CID_ALARM struCIDAlarmInfo = { 0 };
        memcpy(&struCIDAlarmInfo, pAlarmInfo, sizeof(NET_DVR_CID_ALARM));
        printf("报警主机CID报告[0x1127]: 触发时间{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, 上传时间{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, CIDCode[%s], CIDDescribe[%s], 子系统号[%d], 防区号[%d]\n",
            struCIDAlarmInfo.struTriggerTime.wYear, struCIDAlarmInfo.struTriggerTime.byMonth, struCIDAlarmInfo.struTriggerTime.byDay, struCIDAlarmInfo.struTriggerTime.byHour,
            struCIDAlarmInfo.struTriggerTime.byMinute, struCIDAlarmInfo.struTriggerTime.bySecond, struCIDAlarmInfo.struUploadTime.wYear, struCIDAlarmInfo.struUploadTime.byMonth,
            struCIDAlarmInfo.struUploadTime.byDay, struCIDAlarmInfo.struUploadTime.byHour, struCIDAlarmInfo.struUploadTime.byMinute, struCIDAlarmInfo.struUploadTime.bySecond,
            struCIDAlarmInfo.sCIDCode, struCIDAlarmInfo.sCIDDescribe, struCIDAlarmInfo.bySubSysNo, struCIDAlarmInfo.wDefenceNo);
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.2"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设备登录成功
    printf("Login successfully\n");

    //设置报警回调函数
    NET_DVR_SetDVRMessageCallBack_V50(0, MessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code:  %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("NET_DVR_SetupAlarmChan_V41 successfully\n");

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //退出程序

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、报警监听

2.1 接口调用流程

  • 报警监听方式需要先配置上传主机IP、端口，报警主机的上传方式有三种：通过有线网络上传（网络中心配置）、无线网络上传（GPRS参数配置）、电话线上传（拨号参数上传）。
    1) 报告上传方式配置：NET_DVR_GetDeviceConfig(命令: NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40)、NET_DVR_SetDeviceConfig(命令: NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40)。
    2) 网络参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ALARMHOST_NETCFG_V50)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ALARMHOST_NETCFG_V50)。
    3) GPRS参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG)。
    4) 拨号参数配置：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ALARMDIALMODECFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ALARMDIALMODECFG)。
  • 报警主机只监测正常布防的防区事件，因此需要先对子系统或者防区进行布防操作，相关接口：
    1) NET_DVR_RemoteControl(命令：NET_DVR_ARM_ALARMHOST_SUBSYSTEM)对子系统进行布防，支持按布防类型进行布防。
    2) NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG)获取和设置子系统参数，其中NET_DVR_ALARMSUBSYSTEMPARAM的bySingleZoneSetupAlarmEnable单防区布撤防使能参数赋值为1，然后可以调用NET_DVR_AlarmHostSetupAlarmChan对单个防区进行布防操作。
  • 客户端SDK调用NET_DVR_StartListen_V30开启监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录，监听的IP和端口跟设备端配置的上传主机的IP和端口必须一致。如果PC有多网卡，还需要调用NET_DVR_SetValidIP绑定当前使用的网卡。
  • 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源，此时SDK将不再监听接收报警信息。
  • 对接多台设备的时候，每一台设备可以配置相同的监听端口，此时只需要调用一次启动监听的接口，也可以配置不同的监听端口（最多支持10个不同的端口）分别开启监听，但是报警回调函数只需要设置一个而且只有最后设置的一个回调函数有效，回调函数里面接收数据之后可以通过报警设备信息(pAlarmer)判断区分设备。
  • 退出程序时调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum = 0;
void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ALARMHOST_CID_ALARM: //报警主机CID报告报警上传
    {
        NET_DVR_CID_ALARM struCIDAlarmInfo = { 0 };
        memcpy(&struCIDAlarmInfo, pAlarmInfo, sizeof(NET_DVR_CID_ALARM));
        printf("报警主机CID报告[0x1127]: 触发时间{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, 上传时间{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, CIDCode[%s], CIDDescribe[%s], 子系统号[%d], 防区号[%d]\n",
            struCIDAlarmInfo.struTriggerTime.wYear, struCIDAlarmInfo.struTriggerTime.byMonth, struCIDAlarmInfo.struTriggerTime.byDay, struCIDAlarmInfo.struTriggerTime.byHour,
            struCIDAlarmInfo.struTriggerTime.byMinute, struCIDAlarmInfo.struTriggerTime.bySecond, struCIDAlarmInfo.struUploadTime.wYear, struCIDAlarmInfo.struUploadTime.byMonth,
            struCIDAlarmInfo.struUploadTime.byDay, struCIDAlarmInfo.struUploadTime.byHour, struCIDAlarmInfo.struUploadTime.byMinute, struCIDAlarmInfo.struUploadTime.bySecond,
            struCIDAlarmInfo.sCIDCode, struCIDAlarmInfo.sCIDDescribe, struCIDAlarmInfo.bySubSysNo, struCIDAlarmInfo.wDefenceNo);
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //启用监听
    LONG lHandle;
    lHandle = NET_DVR_StartListen_V30(NULL, 7200, MessageCallback, NULL);
    if (lHandle < 0)
    {
        printf("NET_DVR_StartListen_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //停止监听
    if (!NET_DVR_StopListen_V30(lHandle))
    {
        printf("NET_DVR_StopListen_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


紧急求助功能模块流程

紧急求助

紧急求助或者一键报警功能，是指SDK集成紧急报警柱或者紧急报警盒，设备本地按下一键报警按键（包括紧急报警、业务咨询），SDK通过报警布防或者监听方式接收到事件之后可以联动调用实时预览和语音对讲接口实现双向可视对讲通话，也可以直接回应中心忙或者拒绝接听。

紧急报警柱或者报警盒，如果已经接入报警管理机，则直接和管理机使用SIP协议通话，不支持同时使用客户端SDK连接实现通话功能。

目录

  • 紧急求助
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录报警柱或者报警盒，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 调用报警布防或者报警监听相关接口接收设备上传的紧急求助事件，详细的接口调用流程请参考“报警主机事件”模块说明。紧急求助(或一键报警)主要以CID报告方式上传，回调函数中获取的报警类型(lCommand)为COMM_ALARMHOST_CID_ALARM，报警信息(pAlarmInfo)对应结构体：NET_DVR_CID_ALARM，其中CID事件号为1129(紧急求助报警)、3129(紧急求助报警恢复)。
  • 接收到事件之后如果中心忙或者拒绝接听，则调用接口NET_DVR_STDControl(命令：NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL)或者NET_DVR_STDXMLConfig(命令: PUT /ISAPI/SecurityCP/BasicParam/EmergencyAlarmResponseCtrl)。
  • 接收到事件之后如果需要接听，则调用语音对讲接口NET_DVR_StartVoiceCom_V30或者语音转发接口NET_DVR_StartVoiceCom_MR_V30开启通话（详细的接口调用流程请参考通用视频的“语音对讲”模块说明），同时调用实时预览接口NET_DVR_RealPlay_V40实现视频监控。停止时调用停止语音对讲或转发接口NET_DVR_StopVoiceCom、停止预览接口NET_DVR_StopRealPlay释放链接资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

BOOL bPanic = FALSE; //是否接收到报警事件的标识

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ALARMHOST_CID_ALARM: //报警主机CID报告报警上传
    {
        NET_DVR_CID_ALARM struCIDAlarmInfo = { 0 };
        memcpy(&struCIDAlarmInfo, pAlarmInfo, sizeof(NET_DVR_CID_ALARM));
        printf("报警主机CID报告[0x1127]: 触发时间{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, 上传时间{%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d}, CIDCode[%s], CIDDescribe[%s], 子系统号[%d], 防区号[%d]\n",
            struCIDAlarmInfo.struTriggerTime.wYear, struCIDAlarmInfo.struTriggerTime.byMonth, struCIDAlarmInfo.struTriggerTime.byDay, struCIDAlarmInfo.struTriggerTime.byHour,
            struCIDAlarmInfo.struTriggerTime.byMinute, struCIDAlarmInfo.struTriggerTime.bySecond, struCIDAlarmInfo.struUploadTime.wYear, struCIDAlarmInfo.struUploadTime.byMonth,
            struCIDAlarmInfo.struUploadTime.byDay, struCIDAlarmInfo.struUploadTime.byHour, struCIDAlarmInfo.struUploadTime.byMinute, struCIDAlarmInfo.struUploadTime.bySecond,
            struCIDAlarmInfo.sCIDCode, struCIDAlarmInfo.sCIDDescribe, struCIDAlarmInfo.bySubSysNo, struCIDAlarmInfo.wDefenceNo);

        //通过CID事件号判断是不是紧急求助报警
        int iCID = atoi((char*)struCIDAlarmInfo.sCIDCode);

        if (iCID == 1129 || iCID == 1976)
        {
            bPanic = TRUE;//紧急求助报警或者业务咨询
        }

        if (iCID == 3129 || iCID == 3976)
        {
            bPanic = FALSE;//紧急求助报警恢复或者业务咨询恢复
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.35.104"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abc12345"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设备登录成功
    printf("Login successfully\n");

    //设置报警回调函数
    NET_DVR_SetDVRMessageCallBack_V50(0, MessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code:  %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("NET_DVR_SetupAlarmChan_V41 successfully\n");

    //如果没有接收到紧急求助事件，则一直运行
    while (!bPanic)
    {
        Sleep(1000);
    }

    //接收到紧急求助事件拒绝接听
    NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG struEmergenceAlarmRspCtrlCfg = {0};
    struEmergenceAlarmRspCtrlCfg.dwSize = sizeof(struEmergenceAlarmRspCtrlCfg);
    struEmergenceAlarmRspCtrlCfg.byCommand = 1; //控制命令：0- 中心忙，1- 拒绝
    struEmergenceAlarmRspCtrlCfg.byType = 0; //处理类型：0- 紧急报警，1- 业务咨询

    NET_DVR_STD_CONTROL struStdControl = { 0 };
    struStdControl.lpCondBuffer = (LPVOID)&struEmergenceAlarmRspCtrlCfg;
    struStdControl.dwCondSize = sizeof(struEmergenceAlarmRspCtrlCfg);

    if (!NET_DVR_STDControl(lUserID, NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL, &struStdControl))
    {
        printf("NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL failed, error code:  %d\n", NET_DVR_GetLastError());

    }
    else
    {
        printf("-------接收到呼叫事件，拒绝接听-------\n");
    }

    //接听则调用实时预览和语音对讲接口，示例请参考预览和语音对讲的模块说明

    Sleep(10000);

    //---------------------------------------
    //退出程序

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


可视对讲事件模块

报警事件

可视对讲产品包括室内机、门口机等，事件包含防区报警、防拆报警、门没开、门没关、呼救报警、通话对讲等报警信息和开锁记录、认证记录、刷卡事件等事件信息。

目录

  • 报警事件
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31接口也支持，不能使用V30接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 防区报警、防拆报警、门没开、门没关、呼救报警、通话对讲等报警信息，回调函数中获取的报警类型(lCommand)为COMM_ALARM_VIDEO_INTERCOM，报警信息(pAlarmInfo)对应结构体：NET_DVR_VIDEO_INTERCOM_ALARM。
  • 开锁记录、认证记录、刷卡事件等事件信息，回调函数中获取的报警类型(lCommand)为COMM_UPLOAD_VIDEO_INTERCOM_EVENT，报警信息(pAlarmInfo)对应结构体：NET_DVR_VIDEO_INTERCOM_EVENT。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_UPLOAD_VIDEO_INTERCOM_EVENT: //可视对讲事件记录信息
    {
        NET_DVR_VIDEO_INTERCOM_EVENT struVideoIntercomEvent = { 0 };
        memcpy(&struVideoIntercomEvent, pAlarmInfo, sizeof(NET_DVR_VIDEO_INTERCOM_EVENT));

        if (struVideoIntercomEvent.byEventType == 1)
        {
            printf("Video Intercom Event, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] EventType[%d], FloorNumber[%d], RoomNumber[%d], LockID[%d], LockName[%s], EmployeeNo[%s]",
                struVideoIntercomEvent.struTime.wYear, struVideoIntercomEvent.struTime.byMonth, struVideoIntercomEvent.struTime.byDay,
                struVideoIntercomEvent.struTime.byHour, struVideoIntercomEvent.struTime.byMinute, struVideoIntercomEvent.struTime.bySecond,
                struVideoIntercomEvent.byDevNumber, struVideoIntercomEvent.byEventType,
                struVideoIntercomEvent.uEventInfo.struUnlockRecord.nFloorNumber,
                struVideoIntercomEvent.uEventInfo.struUnlockRecord.wRoomNumber,
                struVideoIntercomEvent.uEventInfo.struUnlockRecord.wLockID,
                struVideoIntercomEvent.uEventInfo.struUnlockRecord.byLockName,
                struVideoIntercomEvent.uEventInfo.struUnlockRecord.byEmployeeNo);
        }
        else if(struVideoIntercomEvent.byEventType == 3)
        {
            printf("Video Intercom Event, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] EventType[%d] AuthResult[%d] AuthType[%d] CardNo[%s]",
                struVideoIntercomEvent.struTime.wYear, struVideoIntercomEvent.struTime.byMonth, struVideoIntercomEvent.struTime.byDay,
                struVideoIntercomEvent.struTime.byHour, struVideoIntercomEvent.struTime.byMinute, struVideoIntercomEvent.struTime.bySecond,
                struVideoIntercomEvent.byDevNumber, struVideoIntercomEvent.byEventType, struVideoIntercomEvent.uEventInfo.struAuthInfo.byAuthResult,
                struVideoIntercomEvent.uEventInfo.struAuthInfo.byAuthType, struVideoIntercomEvent.uEventInfo.struAuthInfo.byCardNo);
        }
        else if (struVideoIntercomEvent.byEventType == 4)
        {
            printf("Video Intercom Event, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] EventType[%d] License[%s] Color[%d]",
                struVideoIntercomEvent.struTime.wYear, struVideoIntercomEvent.struTime.byMonth, struVideoIntercomEvent.struTime.byDay,
                struVideoIntercomEvent.struTime.byHour, struVideoIntercomEvent.struTime.byMinute, struVideoIntercomEvent.struTime.bySecond,
                struVideoIntercomEvent.byDevNumber, struVideoIntercomEvent.byEventType, struVideoIntercomEvent.uEventInfo.struUploadPlateInfo.sLicense,
                struVideoIntercomEvent.uEventInfo.struUploadPlateInfo.byColor);
        }
        else if (struVideoIntercomEvent.byEventType == 5 || struVideoIntercomEvent.byEventType == 6)
        {
            printf("Video Intercom Event, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] EventType[%d] CardNo[%s]",
                struVideoIntercomEvent.struTime.wYear, struVideoIntercomEvent.struTime.byMonth, struVideoIntercomEvent.struTime.byDay,
                struVideoIntercomEvent.struTime.byHour, struVideoIntercomEvent.struTime.byMinute, struVideoIntercomEvent.struTime.bySecond,
                struVideoIntercomEvent.byDevNumber, struVideoIntercomEvent.byEventType,
                struVideoIntercomEvent.uEventInfo.struSendCardInfo.byCardNo);
        }
        else
        {
            printf("Video Intercom Event, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] EventType[%d]",
                struVideoIntercomEvent.struTime.wYear, struVideoIntercomEvent.struTime.byMonth, struVideoIntercomEvent.struTime.byDay,
                struVideoIntercomEvent.struTime.byHour, struVideoIntercomEvent.struTime.byMinute, struVideoIntercomEvent.struTime.bySecond,
                struVideoIntercomEvent.byDevNumber, struVideoIntercomEvent.byEventType);
        }

        if (struVideoIntercomEvent.byEventType == 1 && struVideoIntercomEvent.uEventInfo.struUnlockRecord.dwPicDataLen > 0)
        {
            char cFilename[256] = { 0 };
            HANDLE hFile;
            DWORD dwReturn;

            SYSTEMTIME t;
            GetLocalTime(&t);
            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

            if (struVideoIntercomEvent.byPicTransType)
            {
                sprintf(cFilename, "VideoIntercomEvent_LocalTime[%s]_%d.txt", chTime, rand() % GetTickCount());
            }
            else
            {
                sprintf(cFilename, "VideoIntercomEvent_LocalTime[%s]_%d.jpg", chTime, rand() % GetTickCount());
            }
            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                return;
            }
            WriteFile(hFile, struVideoIntercomEvent.uEventInfo.struUnlockRecord.pImage, struVideoIntercomEvent.uEventInfo.struUnlockRecord.dwPicDataLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = NULL;

            delete[] struVideoIntercomEvent.uEventInfo.struUnlockRecord.pImage;
            struVideoIntercomEvent.uEventInfo.struUnlockRecord.pImage = NULL;
        }

        if (struVideoIntercomEvent.byEventType == 3 && struVideoIntercomEvent.uEventInfo.struAuthInfo.dwPicDataLen > 0)
        {
            char cFilename[256] = { 0 };
            HANDLE hFile;
            DWORD dwReturn;

            SYSTEMTIME t;
            GetLocalTime(&t);
            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

            sprintf(cFilename, "VideoIntercomEvent_LocalTime[%s]_%d.jpg", chTime, rand() % GetTickCount());

            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                return;
            }
            WriteFile(hFile, struVideoIntercomEvent.uEventInfo.struAuthInfo.pImage, struVideoIntercomEvent.uEventInfo.struAuthInfo.dwPicDataLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = NULL;

            delete[] struVideoIntercomEvent.uEventInfo.struAuthInfo.pImage;
            struVideoIntercomEvent.uEventInfo.struAuthInfo.pImage = NULL;
        }
    }
    break;
    case COMM_ALARM_VIDEO_INTERCOM: //可视对讲报警信息
    {
        NET_DVR_VIDEO_INTERCOM_ALARM struVideoIntercomAlarm = { 0 };
        memcpy(&struVideoIntercomAlarm, pAlarmInfo, sizeof(NET_DVR_VIDEO_INTERCOM_ALARM));

        if (struVideoIntercomAlarm.byAlarmType == 1)
        {
            printf("Video Intercom Alarm, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] AlarmType[%d] ZoneName[%s] ZoneIndex[%d] ZoneType[%d] IOTChannelNo[%d]",
                struVideoIntercomAlarm.struTime.wYear, struVideoIntercomAlarm.struTime.byMonth, struVideoIntercomAlarm.struTime.byDay,
                struVideoIntercomAlarm.struTime.byHour, struVideoIntercomAlarm.struTime.byMinute, struVideoIntercomAlarm.struTime.bySecond,
                struVideoIntercomAlarm.byDevNumber, struVideoIntercomAlarm.byAlarmType, struVideoIntercomAlarm.uAlarmInfo.struZoneAlarm.byZoneName,
                struVideoIntercomAlarm.uAlarmInfo.struZoneAlarm.dwZonendex, struVideoIntercomAlarm.uAlarmInfo.struZoneAlarm.byZoneType,
                struVideoIntercomAlarm.dwIOTChannelNo);
        }
        else
        {
            printf("Video Intercom Alarm, Time[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] DevNumber[%s] AlarmType[%d] LockID[%d] IOTChannelNo[%d]",
                struVideoIntercomAlarm.struTime.wYear, struVideoIntercomAlarm.struTime.byMonth, struVideoIntercomAlarm.struTime.byDay,
                struVideoIntercomAlarm.struTime.byHour, struVideoIntercomAlarm.struTime.byMinute, struVideoIntercomAlarm.struTime.bySecond,
                struVideoIntercomAlarm.byDevNumber, struVideoIntercomAlarm.byAlarmType,
                struVideoIntercomAlarm.wLockID, struVideoIntercomAlarm.dwIOTChannelNo);
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.36.2"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设备登录成功，获取设备字符集编码类型
    printf("Login successfully, byCharEncodeType: %d\n", struDeviceInfoV40.byCharEncodeType);

    //设置报警回调函数
    NET_DVR_SetDVRMessageCallBack_V50(0, MessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 failed, error code:  %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //退出程序

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


可视对讲模块流程

可视对讲

此处介绍门口机、室内机实现可视对讲的集成方法，实现实时预览和通话功能。

门口机和室内机都可以呼叫客户端，客户端只能呼叫室内机而不支持呼叫门口机。

客户端也可以远程控制门口机实现远程开锁，详见“远程开锁”的模块流程。

客户端对接梯控主机实现远程呼梯功能参考“明眸门禁”中的“远程控门”模块流程说明。

目录

  • 可视对讲
    • 目录
    • 一、门口机呼叫客户端
    • 二、室内机呼叫客户端
    • 三、客户端呼叫室内机

一、门口机呼叫客户端

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 调用NET_DVR_StartRemoteConfig建立长连接并且设置回调函数，等待接收设备呼叫请求。
  • 设备端按键呼叫中心，呼叫客户端，客户端在长连接设置的回调函数里面接收到呼叫信息，其中NET_DVR_VIDEO_CALL_PARAM的dwCmdType为0。
  • 客户端接收到呼叫信息之后可以调用NET_DVR_RealPlay_V40接口开启视频预览和调用NET_DVR_StartVoiceCom_V30开启语音对讲。同时调用NET_DVR_SendRemoteConfig下发接听呼叫的响应给设备，下发参数NET_DVR_VIDEO_CALL_PARAM的dwCmdType为2。
  • 客户端可以调用NET_DVR_SendRemoteConfig(下发参数NET_DVR_VIDEO_CALL_PARAM的dwCmdType赋值为5)进行挂断。或者是设备端主动挂断，客户端在长连接回调函数里面接收到挂断消息，即NET_DVR_VIDEO_CALL_PARAM的dwCmdType为5。挂断之后调用NET_DVR_StopRealPlay接口停止视频预览和调用NET_DVR_StopVoiceCom停止语音对讲。
  • 关闭可视对讲功能，调用NET_DVR_StopRemoteConfig断开长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、室内机呼叫客户端

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录室内机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 调用NET_DVR_StartRemoteConfig建立长连接并且设置回调函数，等待接收设备呼叫请求。
  • 设备端按键呼叫中心，呼叫客户端，客户端在长连接设置的回调函数里面接收到呼叫信息，其中NET_DVR_VIDEO_CALL_PARAM的dwCmdType为0。
  • 客户端接收到呼叫信息之后可以调用NET_DVR_RealPlay_V40接口开启视频预览和调用NET_DVR_StartVoiceCom_V30开启语音对讲。同时调用NET_DVR_SendRemoteConfig下发接听呼叫的响应给设备，下发参数NET_DVR_VIDEO_CALL_PARAM的dwCmdType为2。
  • 客户端可以调用NET_DVR_SendRemoteConfig(下发参数NET_DVR_VIDEO_CALL_PARAM的dwCmdType赋值为5)进行挂断。或者是设备端主动挂断，客户端在长连接回调函数里面接收到挂断消息，即NET_DVR_VIDEO_CALL_PARAM的dwCmdType为5。挂断之后调用NET_DVR_StopRealPlay接口停止视频预览和调用NET_DVR_StopVoiceCom停止语音对讲。
  • 关闭可视对讲功能，调用NET_DVR_StopRemoteConfig断开长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

三、客户端呼叫室内机

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录室内机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 调用NET_DVR_StartRemoteConfig建立长连接并且设置回调函数，等待接收设备消息。
  • 调用NET_DVR_SendRemoteConfig下发呼叫请求给室内机，下发参数NET_DVR_VIDEO_CALL_PARAM的dwCmdType赋值为0。设备接听呼叫之后，长连接设置的回调函数接收到响应信息，即NET_DVR_VIDEO_CALL_PARAM的dwCmdType为2。
  • 客户端接收到设备接听消息之后可以调用NET_DVR_RealPlay_V40接口开启视频预览和调用NET_DVR_StartVoiceCom_V30开启语音对讲。
  • 客户端可以调用NET_DVR_SendRemoteConfig(下发参数NET_DVR_VIDEO_CALL_PARAM的dwCmdType赋值为5)进行挂断。或者是设备端主动挂断，客户端在长连接回调函数里面接收到挂断消息，即NET_DVR_VIDEO_CALL_PARAM的dwCmdType为5。挂断之后调用NET_DVR_StopRealPlay接口停止视频预览和调用NET_DVR_StopVoiceCom停止语音对讲。
  • 关闭可视对讲功能，调用NET_DVR_StopRemoteConfig断开长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。


远程开锁

客户端远程控制门口机进行开锁的操作。

目录

  • 远程开锁
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录门口机之后即可以远程控制开锁，相关接口：NET_DVR_RemoteControl(命令:NET_DVR_REMOTECONTROL_GATEWAY)，需要注意的是NET_DVR_CONTROL_GATEWAY结构体里面byControlSrc参数是自定义字符串但是不能为空。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //---------------------------------------
    //注册设备
    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码
    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };
    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //远程开锁参数
    NET_DVR_CONTROL_GATEWAY struGatewayCtrl = { 0 };
    struGatewayCtrl.dwSize = sizeof(struGatewayCtrl);
    struGatewayCtrl.dwGatewayIndex = 1; //门禁序号，从1开始
    struGatewayCtrl.byCommand = 1;      //操作命令：0-关闭，1-打开
    struGatewayCtrl.byLockType = 0;     //锁类型：0-普通（不支持则默认为0），1-智能锁
    struGatewayCtrl.wLockID = 0;        /*锁ID，从1开始（远程开门口机锁时，0 - 表示门口机本机控制器上接的锁、1 - 表示外接控制器上接的锁）*/
    strncpy((char *)struGatewayCtrl.byControlSrc, "test", NAME_LEN);//操作发起源信息
    struGatewayCtrl.byControlType = 2;  //开锁场景类型：1-监视，2-通话

    if (!NET_DVR_RemoteControl(lUserID, NET_DVR_REMOTECONTROL_GATEWAY, &struGatewayCtrl, sizeof(struGatewayCtrl)))
    {
        printf("NET_DVR_REMOTECONTROL_GATEWAY failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_REMOTECONTROL_GATEWAY successfully\n");
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


可视对讲设备配置

参数配置

可视对讲相关的参数配置，包括门口机和室内机的编号配置、门禁和梯控配置、权限密码配置、关联网络设备配置等。

目录

  • 参数配置
    • 目录
    • 一、门口机配置
      • 1.1 编号配置
      • 1.2 门禁和梯控配置
    • 二、室内机配置
      • 2.1 编号配置
      • 2.2 关联网络设备配置
    • 二、示例代码

一、门口机配置

1.1 编号配置

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。

  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。

  • 门口机的编号配置，包括期号、幢号、单元号、层号等，相关接口：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG)。

    1) 当编号设为0 时，门口机为主门口机；当编号设为大于0 的数值（编号范围为1至99）时，门口机为从门口机。

2) 1个单元至少配置1台主门口机，1台主门口机最多可选配8 台从门口机。

3) 围墙机编号范围为1至99，其中别墅门口机不可作为围墙机。

  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 门禁和梯控配置

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 门禁参数是配置开门时间。梯控参数配置是用于呼梯，设置了梯控相关参数之后，如果门口机呼叫室内机，呼叫成功之后，室内机点击开锁，电梯会自动抵达门口机所在楼层并且开放住户所在楼层的权限。
    1) 门禁参数配置相关接口：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_DOOR_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_DOOR_CFG)。
    2) 梯控参数配置相关接口：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_ELEVATORCONTROL_CFG_V50)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_ELEVATORCONTROL_CFG_V50)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、室内机配置

2.1 编号配置

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录室内机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 室内机的编号配置是配置房间号或者分机编号，相关接口：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 关联网络设备配置

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录室内机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 配置室内机关联的门口机或者分机，添加（主）门口机IP 地址之后，可实现本单元间呼叫业务。相关接口：NET_DVR_GetDVRConfig(命令: NET_DVR_GET_VIDEO_INTERCOM_RELATEDEV_CFG)、NET_DVR_SetDVRConfig(命令: NET_DVR_SET_VIDEO_INTERCOM_RELATEDEV_CFG)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main()
{
    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //---------------------------------------
    //注册设备
    //登录参数，包括设备地址、登录用户、密码等
    LONG lUserID = -1;
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.2"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码
    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };
    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    DWORD dwBytesReturned = 0;

    //门参数配置
    NET_DVR_DOOR_CFG struDoorCfg = { 0 };
    DWORD dwDoorNo = 1;
    if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_DOOR_CFG, dwDoorNo, &struDoorCfg, sizeof(struDoorCfg), &dwBytesReturned))
    {
        printf("NET_DVR_GET_DOOR_CFG获取门参数失败, 错误码: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_GET_ACS_CFG获取门参数成功, 门编号: %d, 开门时间: %d\n", dwDoorNo, struDoorCfg.byOpenDuration);

        struDoorCfg.byOpenDuration = 15; //开门持续时间，取值范围：1~255s

        if (!NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_DOOR_CFG, dwDoorNo, &struDoorCfg, sizeof(struDoorCfg)))
        {
            printf("NET_DVR_SET_DOOR_CFG设置门参数失败, 错误码: %d\n", NET_DVR_GetLastError());
        }
        else
        {
            printf("NET_DVR_SET_ACS_CFG设置门参数成功\n");
        }
    }

    //设备编号配置
    NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG struDeviceIDCfg = { 0 };
    if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG, -1, &struDeviceIDCfg, sizeof(struDeviceIDCfg), &dwBytesReturned))
    {
        printf("NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG获取可视对讲设备编号失败, 错误码: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        /*byUnitType设备类型：1- 门口机，2- 管理机，4- 围墙机，5- 别墅门口机，6- 二次确认机，7-门禁智能设备*/
        printf("NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG获取可视对讲设备编号成功, 设备类型: %d\n", struDeviceIDCfg.byUnitType);

        //设置门口机的设备编号
        if (struDeviceIDCfg.byUnitType == 1)
        {
            //期号，取值范围：[0,9]
            struDeviceIDCfg.uVideoIntercomUnit.struOutdoorUnit.wPeriod = 1;
            //楼号
            struDeviceIDCfg.uVideoIntercomUnit.struOutdoorUnit.wBuildingNumber = 1;
            //单元号
            struDeviceIDCfg.uVideoIntercomUnit.struOutdoorUnit.wUnitNumber = 1;
            //层号
            struDeviceIDCfg.uVideoIntercomUnit.struOutdoorUnit.wFloorNumber = 1;
            //门口机序号，每一层中门口机的序号唯一，从0开始
            struDeviceIDCfg.uVideoIntercomUnit.struOutdoorUnit.wDevIndex = 0;
        }

        if (!NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG, -1, &struDeviceIDCfg, sizeof(struDeviceIDCfg)))
        {
            printf("NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG设置可视对讲设备编号失败, 错误码: %d\n", NET_DVR_GetLastError());
        }
        else
        {
            printf("NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG设置可视对讲设备编号成功\n");
        }
    }

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


火点检测事件

火点检测、烟雾检测、烟火报警事件等都是复用的同一个事件类型。热成像相关功能配置只支持在热成像通道上实现。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。

目录

  • 火点检测事件
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。

  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。

  • 获取相关能力集可以判断设备是否支持相关功能和支持的参数，接口：NET_DVR_STDXMLConfig，命令：
    1) 获取热成像总能力集：GET /ISAPI/Thermal/capabilities。
    2) 获取火点检测参数能力集：GET /ISAPI/Thermal/channels/<channelID>/fireDetection/capabilities。
    3) 获取火点屏蔽区域配置能力集：GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask/capabilities。
    4) 获取烟雾屏蔽区域配置能力集：GET /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/capabilities。

  • 火点检测规则参数、联动方式、布防时间、屏蔽区域等参数配置，接口：NET_DVR_STDXMLConfig，命令：
    1) 火点检测参数配置：GET /ISAPI/Thermal/channels/<channelID>/fireDetection、PUT /ISAPI/Thermal/channels/<channelID>/fireDetection。
    2) 联动方式配置（如果SDK需要通过报警布防方式获取事件，处理方式必须选择“上传中心”）：GET /ISAPI/Event/triggers/fireDetection-<channelID>、PUT /ISAPI/Event/triggers/fireDetection-<channelID>。
    3) 布防时间配置: GET /ISAPI/Event/schedules/fireDetections/fireDetection-<channelID>、PUT /ISAPI/Event/schedules/fireDetections/fireDetection-<channelID>。
    4) 火点屏蔽区域配置: GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask、PUT /ISAPI/Thermal/channels/<channelID>/fireShieldMask。
    5) 烟火屏蔽区域配置: GET /ISAPI/Thermal/channels/<channelID>/SmokeShieldMask、PUT /ISAPI/Thermal/channels/<channelID>/SmokeShieldMask。

  • 火点检测功能对应的参数配置和联动方式也可以通过WEB网页直接访问设备配置，如果事先已经配置则可省略配置过程。

  • 配置检测参数和联动方式之后，设备将自动进行扫描检测，检测到烟火时设备可按照配置的参数联动云台、录像或者报警。SDK可以通过报警布防方式获取设备上传的报警信息，此时联动参数中的处理方式必须选择“上传中心”类型。报警布防方式实现方法： 1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。 2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。 3)程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。

  • 报警回调中接收到的报警类型（lCommand）为COMM_FIREDETECTION_ALARM，报警信息对应结构体：NET_DVR_FIREDETECTION_ALARM。

  • 设备火点检测功能，检测到火点时，除了联动云台、录像和报警，在预览画面中也会以红色框将火点位置标识出来（如下图所示），该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。

  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i;

    switch(lCommand)
    {
    case COMM_FIREDETECTION_ALARM: //火点检测报警
    {
        NET_DVR_FIREDETECTION_ALARM struFireDetection = {0};
        memcpy(&struFireDetection, pAlarmInfo, sizeof(NET_DVR_FIREDETECTION_ALARM));
        printf("火点检测报警: RelativeTime:%d, AbsTime:%d, PTZ{PanPos:%d, TiltPos:%d, ZoomPos:%d}, \
        PicDataLen:%d, DevInfo{DevIP:%s, Port:%d, Channel:%d, IvmsChannel:%d}, \
        FireMaxTemperature:%d, TargetDistance:%d, fireRectInfo{fX:%f,fY:%f,fWidth%f,fHeight%f}, \
        fireMaxTemperaturePoint{fX:%f,fY:%f}\n", struFireDetection.dwRelativeTime,\
        struFireDetection.dwAbsTime, struFireDetection.wPanPos, struFireDetection.wTiltPos, \
        struFireDetection.wZoomPos, struFireDetection.dwPicDataLen, \
        struFireDetection.struDevInfo.struDevIP.sIpV4, struFireDetection.struDevInfo.wPort, \
        struFireDetection.struDevInfo.byChannel,struFireDetection.struDevInfo.byIvmsChannel, \
        struFireDetection.wFireMaxTemperature, struFireDetection.wTargetDistance,\
        struFireDetection.struRect.fX, struFireDetection.struRect.fY, struFireDetection.struRect.fWidth,\
        struFireDetection.struRect.fHeight, struFireDetection.struPoint.fX, struFireDetection.struPoint.fY);

        NET_DVR_TIME struAbsTime = {0};
        struAbsTime.dwYear = GET_YEAR(struFireDetection.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struFireDetection.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struFireDetection.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struFireDetection.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struFireDetection.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struFireDetection.dwAbsTime);

        //保存报警抓拍图片
        if (struFireDetection.dwPicDataLen > 0 && struFireDetection.pBuffer != NULL)
        {
            char cFilename[256] = {0};
            HANDLE hFile;
            DWORD dwReturn;

            char chTime[128];
            sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

            sprintf(cFilename, "FireDetectionPic[%s][%s].jpg",struFireDetection.struDevInfo.struDevIP.sIpV4, chTime);

            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                break;
            }
            WriteFile(hFile, struFireDetection.pBuffer, struFireDetection.dwPicDataLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = INVALID_HANDLE_VALUE;
        }
    }
    break;
    default:
        printf("其他报警，报警信息类型: %d\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //火点检测不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


温度温差报警

热成像温度检测功能，可以支持温度预警、温度报警或者温差报警。

目录

  • 温度温差报警
    • 目录
    • 一、接口调用顺序
    • 二、示例代码

一、接口调用顺序

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 温度检测是设备实现的，获取温度预警、温度报警或者温差报警信息，需要先配置设备相关测温参数，具体方法请参考测温配置流程说明。配置相关参数和联动方式之后，设备将自动进行实时地温度检测，温度或者温差超过设置的报警阈值时，可按照配置的参数联动云台、录像或者报警。SDK可以通过报警布防方式获取设备上传的报警信息，此时联动参数中的处理方式必须选择“上传中心”类型。
  • 报警布防方式实现方法： 1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。 2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。 3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 温度报警对应的报警回调中接收到的报警类型（lCommand）为COMM_THERMOMETRY_ALARM，报警信息对应结构体：NET_DVR_THERMOMETRY_ALARM。
  • 温差报警对应的报警回调中接收到的报警类型（lCommand）为COMM_THERMOMETRY_DIFF_ALARM，报警信息对应结构体：NET_DVR_THERMOMETRY_DIFF_ALARM。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

BOOL CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{

    switch(lCommand)
    {
        case COMM_THERMOMETRY_ALARM: //温度预警或者温度报警
        {
            NET_DVR_THERMOMETRY_ALARM struThermometryAlarm = {0};
            memcpy(&struThermometryAlarm, pAlarmInfo, sizeof(NET_DVR_THERMOMETRY_ALARM));
            if (0 == struThermometryAlarm.byRuleCalibType)
            {
                printf("点测温: Channel:%d, RuleID:%d, ThermometryUnit:%d, PresetNo:%d, RuleTemperature:%.1f, CurrTemperature:%.1f, PTZ Info[Pan:%f, Tilt:%f, Zoom:%f], AlarmLevel:%d, AlarmType:%d, AlarmRule:%d, RuleCalibType:%d,  Point[x:%f, y:%f], PicLen:%d, ThermalPicLen:%d, ThermalInfoLen:%d", struThermometryAlarm.dwChannel, struThermometryAlarm.byRuleID, struThermometryAlarm.byThermometryUnit, struThermometryAlarm.wPresetNo, struThermometryAlarm.fRuleTemperature, struThermometryAlarm.fCurrTemperature, struThermometryAlarm.struPtzInfo.fPan, struThermometryAlarm.struPtzInfo.fTilt, struThermometryAlarm.struPtzInfo.fZoom, struThermometryAlarm.byAlarmLevel, struThermometryAlarm.byAlarmType, struThermometryAlarm.byAlarmRule, struThermometryAlarm.byRuleCalibType, struThermometryAlarm.struPoint.fX, struThermometryAlarm.struPoint.fY, struThermometryAlarm.dwPicLen, struThermometryAlarm.dwThermalPicLen, struThermometryAlarm.dwThermalInfoLen);
            }
            else if (1 == struThermometryAlarm.byRuleCalibType || 2 == struThermometryAlarm.byRuleCalibType)
            {
                int iPointNum = struThermometryAlarm.struRegion.dwPointNum;
                for (int i = 0; i < iPointNum; i++)
                {
                    float fX = struThermometryAlarm.struRegion.struPos[i].fX;
                    float fY = struThermometryAlarm.struRegion.struPos[i].fY;
                    printf("测温区域坐标点:X%d:%f,Y%d:%f;", iPointNum + 1, fX, iPointNum + 1, fY);
                }
                printf("线测温或者框测温: Channel:%d, RuleID:%d,HighestPoint[x:%f, y:%f],ThermometryUnit:%d, PresetNo:%d, RuleTemperature:%.1f, CurrTemperature:%.1f, PTZ Info[Pan:%f, Tilt:%f, Zoom:%f], AlarmLevel:%d, AlarmType:%d, AlarmRule:%d, RuleCalibType:%d, PicLen:%d, ThermalPicLen:%d, ThermalInfoLen:%d", struThermometryAlarm.dwChannel, struThermometryAlarm.byRuleID,
struThermometryAlarm.struHighestPoint.fX, struThermometryAlarm.struHighestPoint.fY,
struThermometryAlarm.byThermometryUnit, struThermometryAlarm.wPresetNo, struThermometryAlarm.fRuleTemperature, struThermometryAlarm.fCurrTemperature,
struThermometryAlarm.struPtzInfo.fPan, struThermometryAlarm.struPtzInfo.fTilt, struThermometryAlarm.struPtzInfo.fZoom, struThermometryAlarm.byAlarmLevel, struThermometryAlarm.byAlarmType, struThermometryAlarm.byAlarmRule, struThermometryAlarm.byRuleCalibType, struThermometryAlarm.dwPicLen, struThermometryAlarm.dwThermalPicLen, struThermometryAlarm.dwThermalInfoLen);
            }
            break;
        }

        case COMM_THERMOMETRY_DIFF_ALARM: //温差报警
        {
            NET_DVR_THERMOMETRY_DIFF_ALARM struThermometryDiffAlarm = {0};
            memcpy(&struThermometryDiffAlarm, pAlarmInfo, sizeof(NET_DVR_THERMOMETRY_DIFF_ALARM));
            if (0 == struThermometryDiffAlarm.byRuleCalibType)
            {
                printf("温差报警: Channel:%d, AlarmID1:%d, AlarmID2:%d, PresetNo:%d, RuleTemperatureDiff:%.1f, CurTemperatureDiff:%.1f, AlarmLevel:%d, AlarmType:%d, AlarmRule:%d, RuleCalibType:%d, Point1[x:%f, y:%f], point2[x:%f, y:%f], PTZ Info[Pan:%f, Tilt:%f, Zoom:%f], PicLen:%d, ThermalPicLen:%d, ThermalInfoLen:%d, ThermometryUnit:%d", struThermometryDiffAlarm.dwChannel, struThermometryDiffAlarm.byAlarmID1, struThermometryDiffAlarm.byAlarmID2, struThermometryDiffAlarm.wPresetNo, struThermometryDiffAlarm.fRuleTemperatureDiff, struThermometryDiffAlarm.fCurTemperatureDiff, struThermometryDiffAlarm.byAlarmLevel, struThermometryDiffAlarm.byAlarmType, struThermometryDiffAlarm.byAlarmRule, struThermometryDiffAlarm.byRuleCalibType, struThermometryDiffAlarm.struPoint[0].fX, struThermometryDiffAlarm.struPoint[0].fY, struThermometryDiffAlarm.struPoint[1].fX, struThermometryDiffAlarm.struPoint[1].fY, struThermometryDiffAlarm.struPtzInfo.fPan, struThermometryDiffAlarm.struPtzInfo.fTilt, struThermometryDiffAlarm.struPtzInfo.fZoom, struThermometryDiffAlarm.dwPicLen, struThermometryDiffAlarm.dwThermalPicLen, struThermometryDiffAlarm.dwThermalInfoLen, struThermometryDiffAlarm.byThermometryUnit);
            }
            else if (1 == struThermometryDiffAlarm.byRuleCalibType || 2 == struThermometryDiffAlarm.byRuleCalibType)
            {
                int i = 0;
                int iPointNum = struThermometryDiffAlarm.struRegion[0].dwPointNum;
                for (i = 0; i < iPointNum; i++)
                {
                    float fX = struThermometryDiffAlarm.struRegion[0].struPos[i].fX;
                    float fY = struThermometryDiffAlarm.struRegion[0].struPos[i].fY;
                    printf("测温区域1坐标点: X%d:%f,Y%d:%f;", iPointNum + 1, fX, iPointNum + 1, fY);
                }
                iPointNum = struThermometryDiffAlarm.struRegion[1].dwPointNum;
                for (i = 0; i < iPointNum; i++)
                {
                    float fX = struThermometryDiffAlarm.struRegion[1].struPos[i].fX;
                    float fY = struThermometryDiffAlarm.struRegion[1].struPos[i].fY;
                    printf("测温区域2坐标点: X%d:%f,Y%d:%f;", iPointNum + 1, fX, iPointNum + 1, fY);
                }

                printf("温差报警: Channel:%d, AlarmID1:%d, AlarmID2:%d, PresetNo:%d, RuleTemperatureDiff:%.1f, CurTemperatureDiff:%.1f, AlarmLevel:%d, AlarmType:%d, AlarmRule:%d, RuleCalibType:%d,  PTZ Info[Pan:%f, Tilt:%f, Zoom:%f], PicLen:%d, ThermalPicLen:%d, ThermalInfoLen:%d, ThermometryUnit:%d", struThermometryDiffAlarm.dwChannel, struThermometryDiffAlarm.byAlarmID1, struThermometryDiffAlarm.byAlarmID2, struThermometryDiffAlarm.wPresetNo, struThermometryDiffAlarm.fRuleTemperatureDiff, struThermometryDiffAlarm.fCurTemperatureDiff, struThermometryDiffAlarm.byAlarmLevel, struThermometryDiffAlarm.byAlarmType, struThermometryDiffAlarm.byAlarmRule, struThermometryDiffAlarm.byRuleCalibType, struThermometryDiffAlarm.struPtzInfo.fPan, struThermometryDiffAlarm.struPtzInfo.fTilt, struThermometryDiffAlarm.struPtzInfo.fZoom, struThermometryDiffAlarm.dwPicLen, struThermometryDiffAlarm.dwThermalPicLen, struThermometryDiffAlarm.dwThermalInfoLen, struThermometryDiffAlarm.byThermometryUnit);
            }
            break;
        }

        default:
            printf("其他报警，报警信息类型: %d\n", lCommand);
            break;
    }

    return TRUE;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    NET_DVR_SetDVRMessageCallBack_V31(MessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //温度或者温差报警不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


热成像测温配置模块流程

测温参数配置

热成像相关功能配置只支持在热成像通道上实现。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。

测温模式分普通测温和专家测温两种模式：
1) 普通模式测温，即全局测温，获取全屏内的温度最高点和温度最低点的温度。专家测温与普通测温互斥，两者只能设置一种。
2) 专家模式测温，可以区分规则以及预置点进行测温配置，在预览画面内设置点、线、框规则进行测温，每个规则可设置不同的测温参数。点规则数量最多10个，框规则数量最多10个，线规则数量最多1个。专家测温与普通测温互斥，两者只能设置一种。

目录

  • 测温参数配置
  • 目录
  • 一、普通模式测温配置
  • 二、专家模式测温配置
  • 三、示例代码

一、普通模式测温配置

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，调用NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/capabilities)获取热成像总能力集，其中<isSupportThermometry>、<isSupportThermIntell>、<isSupportThermometryMode>节点可以分别判断是否支持测温功能、智能资源分配、测温模式配置。
  • 支持测温的设备一般都是默认启用测温功能的，但是有的设备支持多种智能事件但是不能同时启用，因此需要进行智能资源配置，能力集和参数配置相关接口和命令：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermIntell/capabilities、GET /ISAPI/Thermal/channels/<channelID>/thermIntell、PUT /ISAPI/Thermal/channels/<channelID>/thermIntell)。
  • 测温模式配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometryMode/capabilities、GET /ISAPI/Thermal/channels/<channelID>/thermometryMode、PUT /ISAPI/Thermal/channels/<channelID>/thermometryMode)，其中<mode>为normal表示普通模式。
  • 测温基本参数配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam、PUT /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam)，设置全局测温的报警或预警阈值、发射率、距离等参数以及码流是否叠加温度信息、抓图是否叠加温度信息、测温范围和测温单位等。
  • 如果启用了码流叠加温度信息，预览画面将叠加探测到的温度，设备码流使用我司播放库解码显示时可以直接显示该信息。网络SDK对接时，调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。如果需要使用第三方解码库解码显示，可以将设备通道的“智能信息展现方式”配置为“视频“模式（设备web网页访问的“配置”-“视音频”-“视频”中配置）。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、专家模式测温配置

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，调用NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/capabilities)获取热成像总能力集，其中<isSupportThermometry>、<isSupportThermIntell>、<isSupportThermometryMode>节点可以分别判断是否支持测温功能、智能资源分配、测温模式配置。
  • 支持测温的设备一般都是默认启用测温功能的，但是有的设备支持多种智能事件但是不能同时启用，因此需要进行智能资源配置，能力集和参数配置相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermIntell/capabilities、GET /ISAPI/Thermal/channels/<channelID>/thermIntell、PUT /ISAPI/Thermal/channels/<channelID>/thermIntell)。
  • 测温模式配置，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometryMode/capabilities、GET /ISAPI/Thermal/channels/<channelID>/thermometryMode、PUT /ISAPI/Thermal/channels/<channelID>/thermometryMode)，其中<mode>为expert表示专家模式。
  • 专家模式，可以区分规则以及预置点进行测温配置，支持配置选择某个区域以及预置点来进行测温，当选择该模式时，需要先设置预置点，然后进行预置点关联测温信息配置、测温报警规则配置和温差报警报警规则配置等操作。相关接口：
    1) 相关能力集：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/capabilities、GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules/capabilities)。
    2) 预置点设置：NET_DVR_PTZPreset_Other。
    3) 预置点关联测温信息配置(框\点\线测温规则等)：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>、PUT /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>)。
    4) 测温或者温差报警规则配置(温度比较方式、报警\预警温度和温差比较的两个报警点、温差值等)：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules、PUT /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules)。
    5) 测温或者温差报警的联动方式配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/triggers/thermometry-<channelID>/preset/<presetID>、PUT /ISAPI/Event/triggers/thermometry-<channelID>/preset/<presetID>)。联动参数中的处理方式必须选择“上传中心”类型，然后SDK才能通过报警布防方式获取设备上传的报警信息。
    6) 温度报警布防时间配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/thermometry/thermometry-<channelID>、PUT /ISAPI/Event/schedules/thermometry/thermometry-<channelID>)。
    7) 温差报警布防时间配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/temperature/temperature-<channelID>、PUT /ISAPI/Event/schedules/temperature/temperature-<channelID>)。
  • 码流是否叠加温度信息、抓图是否叠加温度信息、测温范围和测温单位等，同普通模式一样通过测温基本参数配置实现，相关接口：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam、PUT /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam)。如果启用了码流叠加温度信息，预览画面将叠加探测到的温度，设备码流使用我司播放库解码显示时可以直接显示该信息。网络SDK对接时，调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。如果需要使用第三方解码库解码显示，可以将设备通道的“智能信息展现方式”配置为“视频“模式（设备web网页访问的“配置”-“视音频”-“视频”中配置）。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

三、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //输出参数
    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);

    //输出参数
    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    //URL
    char szUrl[512];

    //GET方法测试
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/Thermal/capabilities\r\n"); //获取热成像能力集

    //不同功能对应不同URL，具体参考相应的协议文档
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    char szGetOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szGetOutput;
    struOutputParam.dwOutBufferSize = sizeof(szGetOutput);

    //输出状态
    char szStatusBuf[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("%s\n", szGetOutput);
    }

    //PUT方法测试
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "PUT /ISAPI/Thermal/channels/2/thermometryMode\r\n"); //配置测温模式

    //输入XML数据
    char pBuf[2 * 1024] = { 0 };
    strcpy(pBuf, "<ThermometryMode xmlns=\"http://www.isapi.org/ver20/XMLSchema\" version=\"2.0\">&lt;mode&gt;expert</mode></ThermometryMode>");

    //输入参数
    struInput.lpInBuffer = pBuf;
    struInput.dwInBufferSize = sizeof(pBuf);

    //输出结果
    char szOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    char szStatusBuff[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuff;
    struOutputParam.dwStatusSize = sizeof(szStatusBuff);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("lpOutBuffer: %s\n", szOutput);
        printf("lpStatusBuffer: %s\n", szStatusBuff);
    }

    //---------------------------------------
    //退出程序

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


人脸抓拍测温

识别人脸同时检测人脸温度，上传结果包含抓拍图片、人脸图片、温度数据等。比如双光谱筒机有两个通道，通道号1为可见光通道，通道号2是热成像通道，需要分别在两个通道配置人体测温参数和人脸抓拍参数。

目录

  • 人脸抓拍测温
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 登录设备之后，调用NET_DVR_STDXMLConfig(命令: GET /ISAPI/System/capabilities)获取设备总能力集，其中<isSupportFaceSnapThermometry>节点可以判断是否支持人脸抓拍测温功能 。
  • 人体测温参数配置，在可见光通道上配置。
    1) 测温基本参数配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam、PUT /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam)，配置开启测温功能、开启码流叠加温度信息、测温单位、测温范围等。
    2) 人脸检测参数配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/faceThermometry/capabilities、GET /ISAPI/Thermal/channels/<channelID>/faceThermometry、PUT /ISAPI/Thermal/channels/<channelID>/faceThermometry)，配置开启人脸检测、启用人脸抓拍上传、瞳距、高温报警温度、预警温度灵敏度等。
    3) 联动方式配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/triggers/faceThermometry-<channelID>、PUT /ISAPI/Event/triggers/faceThermometry-<channelID>)。
    4) 布防时间配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/faceThermometrys/faceThermometrys-<channelID>、PUT /ISAPI/Event/schedules/faceThermometrys/faceThermometrys-<channelID>)。
  • 人体测温参数配置，在热成像通道上配置：
    1) 黑体参数配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/blackBody/capabilities、GET /ISAPI/Thermal/channels/<channelID>/blackBody、PUT /ISAPI/Thermal/channels/<channelID>/blackBody)，配置黑体矫正使能、发射率、距离、温度等。
    2) 体温温度补偿配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation/capabilities、GET /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation、PUT /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation)，配置使能、补偿方式、补偿温度、环境模式、环境温度等。
  • 人脸抓拍参数配置，在可见光通道上配置：
    1) 人脸抓拍识别通道智能资源配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/intelliResource/capabilities、GET /ISAPI/Intelligent/channels/<channelID>/intelliResource、PUT /ISAPI/Intelligent/channels/<channelID>/intelliResource)，配置目标图片大小、抓拍图片质量和分辨率等。
    2) 人脸抓拍高级配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/faceSnap/advancedParam/capabilities?format=json、GET /ISAPI/Intelligent/channels/<channelID>/faceSnap/advancedParam?format=json、PUT /ISAPI/Intelligent/channels/<channelID>/faceSnap/advancedParam?format=json)，配置抓拍模式、抓拍次数、抓拍阈值等。
    3) 图片信息叠加配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/System/Video/inputs/channels/<channelID>/picInfoOverlap/capabilities、GET /ISAPI/System/Video/inputs/channels/<channelID>/picInfoOverlap、PUT /ISAPI/System/Video/inputs/channels/<channelID>/picInfoOverlap)，配置叠加使能、叠加元素信息等。
    4) 人脸抓拍检测屏蔽区域配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/Shield/faceCapture、PUT /ISAPI/Intelligent/channels/<channelID>/Shield/faceCapture)。
    5) 联动方式配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/triggers/faceSnap-<channelID>、PUT /ISAPI/Event/triggers/faceSnap-<channelID>)。
    6) 布防时间配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/faceSnap/faceSnap-<channelID>、PUT /ISAPI/Event/schedules/faceSnap/faceSnap-<channelID>)。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。对于人脸抓拍，回调函数中获取的报警类型(lCommand)为COMM_UPLOAD_FACESNAP_RESULT，报警信息(pAlarmInfo)对应结构体：NET_VCA_FACESNAP_RESULT，该结构体中pAddInfoBuffer附加信息指向的NET_VCA_FACESNAP_ADDINFO结构体参数中包含温度等信息。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。如果设备同时支持人脸侦测和人脸抓拍方式，调用该接口时，NET_DVR_SETUPALARM_PARAM布防参数中byFaceAlarmDetection赋值为0即选择设备上传的报警信息类型为人脸抓拍类型。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 设备人脸抓拍功能，检测到人脸时，除了联动抓拍和报警，在预览画面中也可以叠加目标框将人脸位置标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。

二、示例代码

下面示例代码为报警布防接收人脸抓拍事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_UPLOAD_FACESNAP_RESULT: //人脸抓拍报警信息
    {
        NET_VCA_FACESNAP_RESULT struFaceSnap = { 0 };
        memcpy(&struFaceSnap, pAlarmInfo, sizeof(NET_VCA_FACESNAP_RESULT));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struFaceSnap.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struFaceSnap.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struFaceSnap.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struFaceSnap.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struFaceSnap.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struFaceSnap.dwAbsTime);

        //保存抓拍场景图片
        if (struFaceSnap.dwBackgroundPicLen > 0 && struFaceSnap.pBuffer2 != NULL)
        {
            char cFilename[256] = { 0 };
            HANDLE hFile;
            DWORD dwReturn;

            char chTime[128];
            sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            sprintf(cFilename, "FaceSnapBackPic[%s][%s].jpg", struFaceSnap.struDevInfo.struDevIP.sIpV4, chTime);

            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                break;
            }
            WriteFile(hFile, struFaceSnap.pBuffer2, struFaceSnap.dwBackgroundPicLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = INVALID_HANDLE_VALUE;
        }

        printf("人脸抓拍报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] \n", \
            lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, \
            struAbsTime.dwMinute, struAbsTime.dwSecond, struFaceSnap.struDevInfo.struDevIP.sIpV4, \
            struFaceSnap.struDevInfo.wPort, struFaceSnap.struDevInfo.byIvmsChannel);

        NET_VCA_FACESNAP_ADDINFO struFaceSnapAddInfo = { 0 };
        if (struFaceSnap.byAddInfo > 0 && struFaceSnap.pAddInfoBuffer != NULL)
        {
            memcpy(&struFaceSnapAddInfo, struFaceSnap.pAddInfoBuffer, sizeof(struFaceSnapAddInfo));
            printf("人脸抓拍报警[0x%x]，附加信息(温度信息): byFaceSnapThermometryEnabled[%d]byIsAbnomalTemperature[%d]byThermometryUnit[%d]fFaceTemperature[%f]fAlarmTemperature[%f]\n", lCommand, struFaceSnapAddInfo.byFaceSnapThermometryEnabled, struFaceSnapAddInfo.byIsAbnomalTemperature, struFaceSnapAddInfo.byThermometryUnit, struFaceSnapAddInfo.fFaceTemperature, struFaceSnapAddInfo.fAlarmTemperature);
        }

    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    struAlarmParam.byFaceAlarmDetection = 0; //人脸抓拍报警，上传COMM_UPLOAD_FACESNAP_RESULT类型报警信息
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


热成像实时测温

实时测温

设备配置好测温规则之后会自动检测配置的点、线或框的温度，实时测温即获取这些规则检测到的温度信息。热成像相关功能配置只支持在热成像通道上实现。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。

目录

  • 实时测温
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 温度检测是设备实现的，需要先配置设备相关测温参数，具体方法请参考测温配置流程说明。可以通过WEB网页直接访问设备进行配置，如果事先已经配置则可省略该过程。
  • 获取实时温度：调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_REALTIME_THERMOMETRY)建立长连接，检测到的实时温度信息(NET_DVR_THERMOMETRY_UPLOAD)在长连接接口设置的回调函数里面返回。
  • 停止检测时或者程序退出前调用NET_DVR_StopRemoteConfig断开长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)     (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)    (((_time_)>>22) & 15)
#define GET_DAY(_time_)      (((_time_)>>17) & 31)
#define GET_HOUR(_time_)     (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)   (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)   (((_time_)>>0)  & 63)

void CALLBACK GetThermInfoCallback(DWORD dwType, void* lpBuffer, DWORD dwBufLen, void* pUserData)
{
    if (dwType == NET_SDK_CALLBACK_TYPE_DATA)
    {
        NET_DVR_THERMOMETRY_UPLOAD struThermometry = { 0 };
        memcpy(&struThermometry, lpBuffer, sizeof(NET_DVR_THERMOMETRY_UPLOAD));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struThermometry.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struThermometry.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struThermometry.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struThermometry.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struThermometry.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struThermometry.dwAbsTime);

        printf("实时测温结果:byRuleID[%d]wPresetNo[%d]byRuleCalibType[%d]byThermometryUnit[%d]byDataType[%d]dwAbsTime[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]\n",
            struThermometry.byRuleID, struThermometry.wPresetNo, struThermometry.byRuleCalibType, struThermometry.byThermometryUnit,
            struThermometry.byDataType, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

        //点测温
        if (struThermometry.byRuleCalibType == 0)
        {
            printf("点测温信息:fTemperature[%f]\n", struThermometry.struPointThermCfg.fTemperature);
        }

        //框/线测温
        if ((struThermometry.byRuleCalibType == 1) || (struThermometry.byRuleCalibType == 2))
        {
            printf("框/线测温信息:fMaxTemperature[%f]fMinTemperature[%f]fAverageTemperature[%f]fTemperatureDiff[%f]\n",
                struThermometry.struLinePolygonThermCfg.fMaxTemperature, struThermometry.struLinePolygonThermCfg.fMinTemperature,
                struThermometry.struLinePolygonThermCfg.fAverageTemperature, struThermometry.struLinePolygonThermCfg.fTemperatureDiff);
        }
    }
    else if (dwType == NET_SDK_CALLBACK_TYPE_STATUS)
    {
        DWORD dwStatus = *(DWORD*)lpBuffer;
        if (dwStatus == NET_SDK_CALLBACK_STATUS_SUCCESS)
        {
            printf("dwStatus:NET_SDK_CALLBACK_STATUS_SUCCESS\n");
        }
        else if (dwStatus == NET_SDK_CALLBACK_STATUS_FAILED)
        {
            DWORD dwErrCode = *(DWORD*)((char *)lpBuffer + 4);
            printf("NET_DVR_GET_MANUALTHERM_INFO failed, Error code %d\n", dwErrCode);
        }
    }
}

void main()
{
    DWORD dwChannel = 2;  //热成像通道

    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //注册设备(监听报警可以不注册)
    LONG lUserID;
    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    lUserID = NET_DVR_Login_V30("10.8.10.199 ", 8000, "admin", "abcd1234", &struDeviceInfo);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //启动实时温度检测
    NET_DVR_REALTIME_THERMOMETRY_COND struThermCond = { 0 };
    struThermCond.dwSize = sizeof(struThermCond);
    struThermCond.byRuleID = 1;       //规则ID，0代表获取全部规则，具体规则ID从1开始
    struThermCond.dwChan = dwChannel; //从1开始，0xffffffff代表获取全部通道

    LONG lHandle = NET_DVR_StartRemoteConfig(lUserID, NET_DVR_GET_REALTIME_THERMOMETRY, &struThermCond, sizeof(struThermCond), GetThermInfoCallback, NULL);
    if (lHandle < 0)
    {
        printf("NET_DVR_GET_REALTIME_THERMOMETRY failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_GET_REALTIME_THERMOMETRY is successful!");
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //关闭长连接配置接口所创建的句柄，释放资源
    if (!NET_DVR_StopRemoteConfig(lHandle))
    {
        printf("NET_DVR_StopRemoteConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //注销用户，如果前面没有登录，该步骤则不需要
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();

    return;
}


热成像全屏测温

全屏测温

全屏测温，可以获取设备输出的探测器的每个像素点的温度信息，可通过抓热图或者全屏测温实时上传方式获取。热成像相关功能配置只支持在热成像通道上实现。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。

目录

  • 全屏测温
    • 目录
    • 一、抓热图
      • 1.1 接口调用流程
      • 1.2 示例代码
        • 1.2.1 抓热图并且保存数据
        • 1.2.2 测温数据解析
    • 二、全屏测温实时上传
      • 2.1 接口调用流程
      • 2.2 示例代码
        • 2.2.1 获取全屏测温数据并且保存
        • 2.2.2 全屏测温数据解析

一、抓热图

抓热图是全屏测温的其中一种方法，客户端下发一个抓热图命令给设备，设备抓取热成像图片、每一个像素的温度矩阵以及可见光图片（有可见光通道的设备）并且返回给客户端。支持的抓图频率，每秒1张或者4张图片，受限于设备性能，无法达到实时帧率。

1.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。

  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。

  • 实现全屏测温功能，需要先配置测温基本参数，开启设备的测温功能，可以WEB网页登录设备进行手动配置（图例供参考，不同设备配置界面不同，以设备实际内容为准），也可以调用接口NET_DVR_STDXMLConfig（命令: PUT /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam，其中<channelID>表示通道号）进行设置，其中<enabled>赋值为true即可。

  • 抓热图的全屏测温参数（发射率、距离等）同WEB网页配置的发射率和距离不是一套参数，需要单独配置并且只支持通过接口配置。登录设备之后，调用NET_DVR_STDXMLConfig（命令: PUT /ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam，其中<channelID>表示通道号）进行设置。

  • 配置参数之后调用NET_DVR_CaptureJPEGPicture_WithAppendData下发抓热图命令，设备抓取热成像图片、每一个像素的温度矩阵以及可见光图片（有可见光通道的设备）一起上传，结果信息直接在接口输出参数（NET_DVR_JPEGPICTURE_WITH_APPENDDATA）里面返回。支持双光配准功能的设备，同时会上传双光配准信息，即可见光图像测温有效区域坐标(struVisibleValidRect)和热成像图像测温有效区域坐标(struThermalValidRect)，坐标是归一化值，取值范围0~1。

  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

1.2.1 抓热图并且保存数据

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    ////////////////////////////////////////////////////
    //全屏测温参数配置

    //输入参数
    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);

    //输出参数
    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    //获取参数
    char szUrl[512];
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/Thermal/channels/2/thermometry/pixelToPixelParam\r\n");

    //不同功能对应不同URL，具体参考相应的协议文档
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    char szGetOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szGetOutput;
    struOutputParam.dwOutBufferSize = sizeof(szGetOutput);

    //输出状态
    char szStatusBuf[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("%s\n", szGetOutput);
    }

    //设置参数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "PUT /ISAPI/Thermal/channels/2/thermometry/pixelToPixelParam\r\n");

    //输入JSON数据
    char pBuf[2 * 1024] = { 0 };
    strcpy(pBuf, "<?xml version=\"1.0\" encoding=\"UTF - 8\"?>"
        "<PixelToPixelParam version = \"2.0\" xmlns = \"http://www.hikvision.com/ver20/XMLSchema\">"
        "<id>2</id>"
        "<maxFrameRate>400</maxFrameRate>"
        "<reflectiveEnable>false</reflectiveEnable>"
        "<reflectiveTemperature>20.00</reflectiveTemperature>"
        "<emissivity>0.98</emissivity>"
        "<distance>3000</distance>"
        "<refreshInterval>50</refreshInterval>"
        "<distanceUnit>centimeter</distanceUnit>"
        "<temperatureDataLength>4</temperatureDataLength>"
        "<JpegPictureWithAppendData>"
        "<jpegPicEnabled>true</jpegPicEnabled>"
        "<visiblePicEnabled>true</visiblePicEnabled>"
        "</JpegPictureWithAppendData>"
        "</PixelToPixelParam>");//中文字符需要使用UTF-8字符集

    //输入参数
    struInput.lpInBuffer = pBuf;
    struInput.dwInBufferSize = sizeof(pBuf);

    //输出结果
    char szOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    char szStatusBuff[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuff;
    struOutputParam.dwStatusSize = sizeof(szStatusBuff);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("lpOutBuffer: %s\n", szOutput);
        printf("lpStatusBuffer: %s\n", szStatusBuff);
    }

    ////////////////////////////////////////////////////
    //抓热图
    NET_DVR_JPEGPICTURE_WITH_APPENDDATA struJpegWithAppendAata = { 0 };

    //自己分配内存，需要大于实际数据长度
    if (struJpegWithAppendAata.pJpegPicBuff == NULL)
    {
        struJpegWithAppendAata.pJpegPicBuff = new char[2 * 1024 * 1024];
        memset(struJpegWithAppendAata.pJpegPicBuff, 0, 2 * 1024 * 1024);
    }
    if (struJpegWithAppendAata.pP2PDataBuff == NULL)
    {
        struJpegWithAppendAata.pP2PDataBuff = new char[2 * 1024 * 1024];
        memset(struJpegWithAppendAata.pP2PDataBuff, 0, 2 * 1024 * 1024);
    }

    if (struJpegWithAppendAata.pVisiblePicBuff == NULL)//可见光图至少为4M
    {
        struJpegWithAppendAata.pVisiblePicBuff = new char[10 * 1024 * 1024];
        memset(struJpegWithAppendAata.pVisiblePicBuff, 0, 10 * 1024 * 1024);
    }

    if (!NET_DVR_CaptureJPEGPicture_WithAppendData(lUserID, 2, &struJpegWithAppendAata))
    {
        printf("NET_DVR_CaptureJPEGPicture_WithAppendData failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_CaptureJPEGPicture_WithAppendData struThermalValidRect[X:%f Y:%f W:%f H:%f] struVisibleValidRect[X:%f Y:%f W:%f H:%f]",
            struJpegWithAppendAata.struThermalValidRect.fX, struJpegWithAppendAata.struThermalValidRect.fY,
            struJpegWithAppendAata.struThermalValidRect.fWidth, struJpegWithAppendAata.struThermalValidRect.fHeight,
            struJpegWithAppendAata.struVisibleValidRect.fX, struJpegWithAppendAata.struVisibleValidRect.fY,
            struJpegWithAppendAata.struVisibleValidRect.fWidth, struJpegWithAppendAata.struVisibleValidRect.fHeight);

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struJpegWithAppendAata.dwP2PDataLen > 0 && struJpegWithAppendAata.pP2PDataBuff != NULL)
        {
            char cFilename[256] = { 0 };
            sprintf(cFilename, "Jpegwithappend_%s.data", chTime);
            FILE* fAppendAata = fopen(cFilename, "wb");
            fwrite(struJpegWithAppendAata.pP2PDataBuff, struJpegWithAppendAata.dwP2PDataLen, 1, fAppendAata);
            fclose(fAppendAata);
        }

        //保存热成像图片
        if (struJpegWithAppendAata.dwJpegPicLen > 0 && struJpegWithAppendAata.pJpegPicBuff != NULL)
        {
            char cFilename[256] = { 0 };
            sprintf(cFilename, "ThermalPic_%s.jpg", chTime);
            FILE* fJpegPic = fopen(cFilename, "wb");
            fwrite(struJpegWithAppendAata.pJpegPicBuff, struJpegWithAppendAata.dwJpegPicLen, 1, fJpegPic);
            fclose(fJpegPic);
        }

        //保存可见光图片
        if (struJpegWithAppendAata.dwVisiblePicLen > 0 && struJpegWithAppendAata.pVisiblePicBuff != NULL)
        {
            char cFilename[256] = { 0 };
            sprintf(cFilename, "VisiblePic_%s.jpg", chTime);
            FILE* fVisiblePic = fopen(cFilename, "wb");
            fwrite(struJpegWithAppendAata.pVisiblePicBuff, struJpegWithAppendAata.dwVisiblePicLen, 1, fVisiblePic);
            fclose(fVisiblePic);
        }
    }

    //---------------------------------------
    //退出程序

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

1.2.2 测温数据解析

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void main() {

    //打开本地保存的文件
    FILE* datafilefp = fopen("Jpegwithappend_20210302184711476.data", "rb+");
    if (NULL == datafilefp)
    {
        printf("Failed to open the file\n");
        return;
    }

    int m_AnalysisHotPic_W = 384; //根据抓热图接口返回的图像宽dwJpegPicWidth进行赋值
    int m_AnalysisHotPic_H = 288; //根据抓热图接口返回的图像高dwJpegPicHeight进行赋值
    int bufSize = m_AnalysisHotPic_H * m_AnalysisHotPic_W * 4;

    char* pDataBuf = (char*)malloc(bufSize);
    if (NULL == pDataBuf)
    {
        return;
    }
    //读取文件里面所有数据
    fread(pDataBuf, bufSize, 1, datafilefp);

    //保存分析结果的文件
    FILE *fp = fopen("JpegwithappendResult.csv", "wb");
    if (NULL == fp)
    {
        return;
    }

    int iIndex = 0;
    char temp[10] = { 0 };
    float minTemp = 10000.0;
    float maxTemp = -10000.0;
    for (int iWriteHeight = 0; iWriteHeight < m_AnalysisHotPic_H; ++iWriteHeight)
    {
        for (int iWriteWidth = 0; iWriteWidth < m_AnalysisHotPic_W; ++iWriteWidth)
        {
            float fTemp = *((float*)(pDataBuf + iIndex));

            //判断fTemp是否是一个正常值，不是则赋值最大或最小，防止设备崩溃
            fTemp = (9999 < fTemp) ? 9999 : ((-9999 > fTemp) ? -9999 : fTemp);

            minTemp = (minTemp > fTemp) ? fTemp : minTemp;
            maxTemp = (maxTemp > fTemp) ? maxTemp : fTemp;

            memset(temp, 0, sizeof(temp));
            sprintf(temp, "%.2f,", fTemp);

            if (1 != fwrite(temp, sizeof(temp), 1, fp))
            {
                fclose(fp);
                fp = NULL;
                return;
            }
            iIndex += 4;
        }

        if (1 != fwrite("\n", sizeof("\n"), 1, fp))
        {
            fclose(fp);
            fp = NULL;
            return;
        }
    }

    if (datafilefp != NULL)
    {
        fclose(datafilefp);
        datafilefp = NULL;
    }

    if (fp != NULL)
    {
        fclose(fp);
        fp = NULL;
    }
    printf("Analyze Successfully!\n");
    return;
}

二、全屏测温实时上传

全屏测温实时上传，是指设备实时上传每一帧图像的每个像素点的温度数据矩阵。

2.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，调用NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Thermal/channels/<channelID>/streamParam)配置码流类型，需要将videoCodingType设置为pixel-to-pixel_thermometry_data，然后调用NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam)配置帧率。对应命令都有GET方法，可以先使用GET方法获取当前配置，然后再修改。
  • 配置参数之后调用NET_DVR_RealPlay_V40实时预览接口，其中预览参数NET_DVR_PREVIEWINFO中byVideoCodingType需要赋值为1。窗口句柄传空，设置实时流回调函数，回调函数里面返回接收到的设备上传的数据，每次回调不是完整的一帧数据，需要先缓存数据到回调函数外面，然后根据提供的数据解析方法说明去解析每一帧数据。注意如果直接在回调函数里面解析数据，会阻塞回调而导致数据传输速率降低而达不到需要的帧数。
  • 开启预览取流之后，设备实时上传数据，上传数据速度（帧率）和配置的帧率以及网络带宽有关。全屏测试实时上传，不会上传可见光和热成像图片数据，也没有双光配准区域坐标。全屏测温数据有2字节和4字节数据之分，每2个或4个字节表示一个像素点的温度值。现在一般是4字节，数据类型是float浮点数。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

2.2.1 获取全屏测温数据并且保存

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

FILE* fTemData = NULL;
void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* dwUser)
{
    //将获取到的全屏测温温度矩阵数据保存到本地文件，后面需要根据数据结构自行解析
    switch (dwDataType)
    {
    case NET_DVR_SYSHEAD:
        break;
    case NET_DVR_STREAMDATA:
        if (fTemData != NULL)
        {
            fwrite(pBuffer, dwBufSize, 1, fTemData);
        }
        break;
    default:
        break;
    }
}

void main() {

    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.41.204.52"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "rcx"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //---------------------------------------
    //全屏测温参数配置

    //输入参数
    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);

    //输出参数
    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    char szUrl[512]; //URL
    char szOutput[8 * 1024] = { 0 }; //输出结果
    char szStatusBuf[1024] = { 0 };  //状态信息
    char pBuf[2 * 1024] = { 0 };

    //获取参数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/Thermal/channels/2/streamParam\r\n");

    //不同功能对应不同URL
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    memset(szOutput, 0, sizeof(szOutput));
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    memset(szStatusBuf, 0, sizeof(szStatusBuf));
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("%s\n", szOutput);
    }

    //设置参数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "PUT /ISAPI/Thermal/channels/2/streamParam\r\n");

    //输入JSON数据
    memset(pBuf, 0, sizeof(pBuf));
    strcpy(pBuf, "<ThermalStreamParam xmlns=\"http://www.isapi.org/ver20/XMLSchema\" version=\"2.0\">"
        "<videoCodingType>pixel-to-pixel_thermometry_data</videoCodingType>"
        "</ThermalStreamParam>");

    //输入参数
    struInput.lpInBuffer = pBuf;
    struInput.dwInBufferSize = sizeof(pBuf);

    //输出结果
    memset(szOutput, 0, sizeof(szOutput));
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    memset(szStatusBuf, 0, sizeof(szStatusBuf));
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("lpOutBuffer: %s\n", szOutput);
        printf("lpStatusBuffer: %s\n", szStatusBuf);
    }

    //获取参数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/Thermal/channels/2/thermometry/pixelToPixelParam\r\n");

    //不同功能对应不同URL
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    memset(szOutput, 0, sizeof(szOutput));
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    memset(szStatusBuf, 0, sizeof(szStatusBuf));
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("%s\n", szOutput);
    }

    //设置参数
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "PUT /ISAPI/Thermal/channels/2/thermometry/pixelToPixelParam\r\n");

    //输入JSON数据
    memset(pBuf, 0, sizeof(pBuf));
    //帧数*100即为maxFrameRate字段的值
    strcpy(pBuf, "<?xml version=\"1.0\" encoding=\"UTF - 8\"?>"
        "<PixelToPixelParam version = \"2.0\" xmlns = \"http://www.hikvision.com/ver20/XMLSchema\">"
        "<id>2</id>"
        "<maxFrameRate>400</maxFrameRate>"
        "<reflectiveEnable>false</reflectiveEnable>"
        "<reflectiveTemperature>20.00</reflectiveTemperature>"
        "<emissivity>0.98</emissivity>"
        "<distance>3000</distance>"
        "<refreshInterval>50</refreshInterval>"
        "<distanceUnit>centimeter</distanceUnit>"
        "<temperatureDataLength>4</temperatureDataLength>"
        "<JpegPictureWithAppendData>"
        "<jpegPicEnabled>true</jpegPicEnabled>"
        "<visiblePicEnabled>true</visiblePicEnabled>"
        "</JpegPictureWithAppendData>"
        "</PixelToPixelParam>");

    //输入参数
    struInput.lpInBuffer = pBuf;
    struInput.dwInBufferSize = sizeof(pBuf);

    //输出结果
    memset(szOutput, 0, sizeof(szOutput));
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    memset(szStatusBuf, 0, sizeof(szStatusBuf));
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("lpOutBuffer: %s\n", szOutput);
        printf("lpStatusBuffer: %s\n", szStatusBuf);
    }

    //创建保存数据的文件
    if (fTemData == NULL)
    {
        fTemData = fopen("RealTimeThermometry.data", "wb");
    }

    //---------------------------------------
    //启动预览并设置回调数据流
    LONG lRealPlayHandle;

    NET_DVR_PREVIEWINFO struPlayInfo = { 0 };
    struPlayInfo.hPlayWnd = NULL;         //需要SDK解码时句柄设为有效值，仅取流不解码时可设为空
    struPlayInfo.lChannel = 2;       //预览通道号
    struPlayInfo.dwStreamType = 0;       //0-主码流，1-子码流，2-码流3，3-码流4，以此类推
    struPlayInfo.dwLinkMode = 0;       //0- TCP方式，1- UDP方式，2- 多播方式，3- RTP方式，4-RTP/RTSP，5-RSTP/HTTP
    struPlayInfo.byVideoCodingType = 1;  //码流数据编解码类型：0- 通用编码数据，1- 热成像数据
    struPlayInfo.bBlocked = 1;       //0- 非阻塞取流，1- 阻塞取流

    lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, g_RealDataCallBack_V30, NULL);
    if (lRealPlayHandle < 0)
    {
        printf("NET_DVR_RealPlay_V40 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //---------------------------------------
    //关闭预览
    NET_DVR_StopRealPlay(lRealPlayHandle);

    //关闭文件，释放资源
    if (fTemData != NULL)
    {
        fclose(fTemData);
        fTemData = NULL;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    NET_DVR_Cleanup();

    return;
}

2.2.2 全屏测温数据解析

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/*-----------------------------------------------------------*/
//全屏数据头部数据结构体定义
typedef struct
{
    short year;             /*APP->DSP 年*/
    short month;            /*APP->DSP 月*/
    short dayOfWeek;        /*APP->DSP 0:星期日-6:星期六*/
    short day;              /*APP->DSP 日*/
    short hour;             /*APP->DSP 小时*/
    short minute;           /*APP->DSP 分钟*/
    short second;           /*APP->DSP 秒*/
    short milliSecond;      /*APP->DSP 毫秒*/
}DATE_TIME;

typedef struct
{
    UINT u32TmDataMode;      /* 0为4字节，1为2字节 */
    UINT u32TmScale;         /* 测温缩放比例 */
    UINT u32TmOffset;        /* 测温偏移量，当前固定为0 */
    INT byIsFreezedata;      /*是否是冻结数据，1:冻结，0:非冻结*/
}STREAM_FS_SUPPLE_INFO_TEMP;

typedef struct _STREAM_RT_DATA_INFO_S_
{
    UINT u32RTDataType; // 1-14bit裸数据; 2-全屏测温结果数据; 3-YUV数据
    UINT u32FrmNum;
    UINT u32StdStamp; //DSP相对时间戳
    DATE_TIME stTime; //绝对时间戳
    UINT u32Width;
    UINT u32Height;
    UINT u32Len;
    UINT u32Fps;
    UINT u32Chan;
}STREAM_RT_DATA_INFO_S;

typedef struct _STREAM_FARME_INFO_TEMP_S_
{
    UINT u32MagicNo;        //0x70827773  "FRMI"的ascll码
    UINT u32HeaderSize;     //结构体长度
    UINT u32StreamType;     //数据类型： h264/h265, JPEG, Audio, MetaData, RTData: 参见 STREAM_TYPE_E
    UINT u32StreamLen;      //数据长度
    STREAM_RT_DATA_INFO_S stRTDataInfo;
    STREAM_FS_SUPPLE_INFO_TEMP stFsSuppleInfo;
    UINT res[12];
    UINT u32CrcVal; //结构体校验码 对结构体前面数据进行校验
}STREAM_FARME_INFO_TEMP;

/*-----------------------------------------------------------*/
/*在一段数据中找到结构体头的魔术字，并返回结构体头所在的位置*/
int FindMagicNo(char* buf, int buflen)
{
    char magicNo[] = { 0x73, 0x77, 0x82, 0x70 };    //magicNo
    char magicNoLen = sizeof(magicNo);
    int dataIndex = 0;
    int magicNoIndex = 0;

    if (NULL == buf)
    {
        printf("FindMagicNo input buf is NULL\n");
        return -1;
    }

    while (dataIndex <= buflen)
    {
        if (*(buf + dataIndex) == *(magicNo + magicNoIndex))
        {
            magicNoIndex++;
            if (magicNoIndex == magicNoLen)
            {
                return (dataIndex - magicNoIndex + 1);
            }
        }
        else
        {
            magicNoIndex = 0;
        }
        dataIndex++;
    }
    return -1;
}

/*-----------------------------------------------------------*/
/*从一个文件中找到第一个结构体的头，返回文件指针*/
int FindFirstHeadByFile(FILE* fp)
{
    char* headBuf = NULL;
    int headBufLen = 0;
    int dataIndex = 0;
    int fileIndex = 0;

    headBufLen = 2 * sizeof(STREAM_FARME_INFO_TEMP);
    headBuf = (char*)malloc(headBufLen);
    memset(headBuf, 0, headBufLen);

    //找到第一个结构体的头的位置
    do
    {
        if (1 != fread(headBuf, headBufLen, 1, fp))
        {
            if (0 != feof(fp))
            {
                printf("GetRealtimeP2PDataByFile file has not a head!\n");
                free(headBuf);
                headBuf = NULL;
                return -1;
            }
            printf("GetRealtimeP2PDataByFile read headBuf wrong\n");
            free(headBuf);
            headBuf = NULL;
            return -1;
        }

        //查找魔术字
        dataIndex = FindMagicNo(headBuf, headBufLen);

        //没找到魔术字，向后退一个结构体大小
        if (0 > dataIndex)
        {
            int iHeadSize = sizeof(STREAM_FARME_INFO_TEMP);
            fseek(fp, -1 * iHeadSize, SEEK_CUR);
            fileIndex++;
        }
    } while (0 > dataIndex);

    free(headBuf);
    headBuf = NULL;

    return dataIndex + fileIndex * sizeof(STREAM_FARME_INFO_TEMP);
}

/*-----------------------------------------------------------*/
/*获取一帧数据*/
int GetRealtimeDataByBuf(char* inputBuf, int inputBufLen, char* outputBuf, int outputBufLen, STREAM_FARME_INFO_TEMP* pFarmeInfoTemp)
{
    int dataIndex = 0;

    if (NULL == inputBuf || NULL == outputBuf)
    {
        printf("input or output buf is NULL\n");
        return -1;
    }

    dataIndex = FindMagicNo(inputBuf, inputBufLen);
    if (0 <= dataIndex)
    {
        memcpy(pFarmeInfoTemp, inputBuf + dataIndex, sizeof(STREAM_FARME_INFO_TEMP));

        //如果传入的数据不足一帧数据，则报错
        if (inputBufLen < (dataIndex + sizeof(STREAM_FARME_INFO_TEMP) + pFarmeInfoTemp->u32StreamLen))
        {
            printf("inputBuf is not one frame data:%d(%d:%d:%d)/%d\n",
                inputBufLen, dataIndex, sizeof(STREAM_FARME_INFO_TEMP), pFarmeInfoTemp->u32StreamLen,
                (dataIndex + sizeof(STREAM_FARME_INFO_TEMP) + pFarmeInfoTemp->u32StreamLen));
            return -1;
        }

        //如果传出数据缓存区的接收的长度小于数据长度，则报错
        if (outputBufLen < pFarmeInfoTemp->u32StreamLen)
        {
            printf("outputBufLen is too short:%d/%d!\n", outputBufLen, pFarmeInfoTemp->u32StreamLen);
            return -1;
        }

        //拷贝数据
        memcpy(outputBuf, inputBuf + dataIndex + sizeof(STREAM_FARME_INFO_TEMP), pFarmeInfoTemp->u32StreamLen);
        return pFarmeInfoTemp->u32StreamLen;
    }

    //如果返回值小于0则返回找MagicNo的错误码
    return dataIndex;
}

/*-----------------------------------------------------------*/
/*全屏测温数据解析*/
int AnalysisRealtimeP2PData(char* inputBuf, int inputBufLen, STREAM_FARME_INFO_TEMP* pFarmeInfoTemp, char* saveFilePath)
{
    int width = 0;
    int height = 0;
    int dataIndex = 4;
    float fTemp = 0;
    float fMaxTemp = -1000;
    float fMinTemp = 1000;
    FILE* filefp = NULL;
    char temp[10] = { 0 };

    if (NULL == inputBuf || NULL == pFarmeInfoTemp)
    {
        printf("AnalysisRealtimeP2PData input param is NULL");
        return -1;
    }

    //判断传入数据长度时候正确（备注：由于获取到的数据前4个字节不是全屏测温数据，故减去）
    if (inputBufLen - 4 != (pFarmeInfoTemp->stRTDataInfo.u32Width * pFarmeInfoTemp->stRTDataInfo.u32Height * pFarmeInfoTemp->stFsSuppleInfo.u32TmDataMode))
    {
        printf("AnalysisRealtimeP2PData input data wrong:%d/%d\n", inputBufLen,
            (pFarmeInfoTemp->stRTDataInfo.u32Width * pFarmeInfoTemp->stRTDataInfo.u32Height * pFarmeInfoTemp->stFsSuppleInfo.u32TmDataMode));
        return -1;
    }

    filefp = fopen(saveFilePath, "wb");
    if (NULL == filefp)
    {
        printf("open file failed!\n");
        return -1;
    }

    //解析数据，每个像素点进行温度值转换，2字节通过公式转换，4字节直接强转为float类型
    for (height = 0; height < pFarmeInfoTemp->stRTDataInfo.u32Height; height++)
    {
        for (width = 0; width < pFarmeInfoTemp->stRTDataInfo.u32Width; width++)
        {
            memset(temp, 0, sizeof(temp));
            if (2 == pFarmeInfoTemp->stFsSuppleInfo.u32TmDataMode)
            {
                fTemp = (*((unsigned short*)(inputBuf + dataIndex))) / (float)pFarmeInfoTemp->stFsSuppleInfo.u32TmScale + pFarmeInfoTemp->stFsSuppleInfo.u32TmOffset - 273.15;
                dataIndex += 2;
            }
            else
            {
                fTemp = *((float*)(inputBuf + dataIndex));
                dataIndex += 4;
            }

            fMaxTemp = (fMaxTemp > fTemp) ? fMaxTemp : fTemp;
            fMinTemp = (fMinTemp > fTemp) ? fTemp : fMinTemp;

            sprintf(temp, "%.2f,", fTemp);
            if (1 != fwrite(temp, sizeof(temp), 1, filefp))
            {
                printf("write fTemp failed!\n");
                fclose(filefp);
                filefp = NULL;
                return -1;
            }
        }
        if (1 != fwrite("\n", 1, 1, filefp))
        {
            printf("write failed!\n");
            fclose(filefp);
            filefp = NULL;
            return -1;
        }
    }

    fclose(filefp);
    filefp = NULL;

    return 0;
}

void main() {
    int Index = 0;
    char* inputBuf = NULL;
    int inputBufLen = 0;
    char* outputBuf = NULL;
    int outputBufLen = 0;
    char fileName[512] = { 0 };
    int count = 1;
    STREAM_FARME_INFO_TEMP stFarmeInfoTemp = { 0 };

    //打开本地保存的文件
    FILE* datafilefp = fopen("RealTimeThermometry.data", "rb+");
    if (NULL == datafilefp)
    {
        printf("Failed to open the file\n");
        return;
    }

    Index = FindFirstHeadByFile(datafilefp);
    if (0 > Index)
    {
        printf("GetRealtimeP2PDataByFile not find first head!\n");
        return;
    }

    //文件指针移到第一个头的位置，并获取第一个头的信息
    fseek(datafilefp, Index, SEEK_SET);
    if (1 != fread(&stFarmeInfoTemp, sizeof(stFarmeInfoTemp), 1, datafilefp))
    {
        printf("read first head wrong\n");
        return;
    }

    int iHeadSize = sizeof(STREAM_FARME_INFO_TEMP);
    fseek(datafilefp, -1 * iHeadSize, SEEK_CUR);

    inputBufLen = sizeof(STREAM_FARME_INFO_TEMP) + stFarmeInfoTemp.u32StreamLen;
    inputBuf = (char*)malloc(inputBufLen);

    outputBufLen = stFarmeInfoTemp.u32StreamLen;
    outputBuf = (char*)malloc(outputBufLen);

    while (1)
    {
        memset(inputBuf, 0, inputBufLen);
        memset(outputBuf, 0, outputBufLen);
        memset(&stFarmeInfoTemp, 0, sizeof(stFarmeInfoTemp));

        if (1 != fread(inputBuf, inputBufLen, 1, datafilefp))
        {
            if (0 != feof(datafilefp))
            {
                break;
            }
            printf("read data wrong\n");
            free(inputBuf);
            inputBuf = NULL;
            free(outputBuf);
            outputBuf = NULL;
            return;
        }

        if (0 > GetRealtimeDataByBuf(inputBuf, inputBufLen, outputBuf, outputBufLen, &stFarmeInfoTemp))
        {
            printf("get Data error!\n");
            free(inputBuf);
            inputBuf = NULL;
            free(outputBuf);
            outputBuf = NULL;
            return;
        }

        //保存分析结果的文件路径
        memset(fileName, 0, sizeof(fileName));
        sprintf(fileName, "%d_%04d%02d%02d%02d%02d%02d_%04d.csv", stFarmeInfoTemp.stRTDataInfo.u32StdStamp,
            stFarmeInfoTemp.stRTDataInfo.stTime.year, stFarmeInfoTemp.stRTDataInfo.stTime.month,
            stFarmeInfoTemp.stRTDataInfo.stTime.day, stFarmeInfoTemp.stRTDataInfo.stTime.hour,
            stFarmeInfoTemp.stRTDataInfo.stTime.minute, stFarmeInfoTemp.stRTDataInfo.stTime.second,
            count++);

        if (0 == stFarmeInfoTemp.stFsSuppleInfo.u32TmDataMode)
        {
            stFarmeInfoTemp.stFsSuppleInfo.u32TmDataMode = 4;
        }

        AnalysisRealtimeP2PData(outputBuf, outputBufLen, &stFarmeInfoTemp, fileName);
    }

    free(inputBuf);
    inputBuf = NULL;
    free(outputBuf);
    outputBuf = NULL;

    if (datafilefp != NULL)
    {
        fclose(datafilefp);
        datafilefp = NULL;
    }
    printf("Analyze Successfully!\n");
    return;
}


热成像船只检测模块流程

船只检测

船只检测功能，来统计经过某个区域的船只数量及进行过线报警，主要包含船只报警上传和船只计数的功能。

目录

  • 船只检测
    • 目录
    • 一、船只报警上传
      • 1.1 接口调用流程
      • 1.2 示例代码
    • 二、船只计数
      • 2.1 接口调用流程
      • 2.2 示例代码

一、船只报警上传

1.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，调用NET_DVR_STDXMLConfig(命令: GET /ISAPI/Smart/shipsDetection/<channelID>/capabilities)可以获取设备船只检测能力集，判断设备是否支持船只检测功能以及支持的参数能力。
  • 船只检测是设备实现的，需要先配置设备船只检测相关参数，包括报警区域、计数触发线、布防时间、联动方式等，可以通过WEB网页直接访问设备进行配置，如果事先已经配置则可省略该过程。相关接口：
    1) 船只检测配置(相机安装的水平高度、报警区域、计数触发线等)：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Smart/shipsDetection/<channelID>、PUT /ISAPI/Smart/shipsDetection/<channelID>)。
    2) 布防时间(只有在设置的布防时间内，船只检测功能才生效)：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/schedules/shipsDetections/shipsDetection-<channelID>、PUT /ISAPI/Event/schedules/shipsDetections/shipsDetection-<channelID>)。
    3) 联动配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Event/triggers/shipsDetections-<channelID>、PUT /ISAPI/Event/triggers/shipsDetections-<channelID>)。联动参数中的处理方式必须选择“上传中心”类型，然后SDK才能通过报警布防方式获取设备上传的报警信息。
  • 报警布防方式实现方法： 1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。 2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。 3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 船只报警（包括检测到的船只信息、报警时间、抓拍可见光图片、热成像图片图片等）对应的报警回调中接收到的报警类型（lCommand）为COMM_ALARM_SHIPSDETECTION，报警信息对应结构体：NET_DVR_SHIPSDETECTION_ALARM。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_SHIPSDETECTION: //船只检测报警信息
        {
            NET_DVR_SHIPSDETECTION_ALARM struShipsDetection = {0};
            memcpy(&struShipsDetection, pAlarmInfo, sizeof(NET_DVR_SHIPSDETECTION_ALARM));

            printf("船只检测报警: IPv4[%s] IPv6[%s] Port[%d] Channel[%d] IvmsChannel[%d] IvmsChannelEx[%d]RelativeTime[%d] AbsTime[%d] ShipsNum[%d] ShipsNumHead[%d] ShipsNumEnd[%d]", struShipsDetection.struDevInfo.struDevIP.sIpV4, struShipsDetection.struDevInfo.struDevIP.byIPv6, struShipsDetection.struDevInfo.wPort, struShipsDetection.struDevInfo.byChannel, struShipsDetection.struDevInfo.byIvmsChannel, struShipsDetection.wDevInfoIvmsChannelEx, struShipsDetection.dwRelativeTime, struShipsDetection.dwAbsTime, struShipsDetection.byShipsNum, struShipsDetection.byShipsNumHead, struShipsDetection.byShipsNumEnd);

            for (int i = 0; i < struShipsDetection.byShipsNum; i++)
            {
                printf("船只信息: shipsNum[%d] ShipsLength[%0.1f] ShipsHeight[%0.1f] ShipsWidth[%0.1f] ShipsSpeed[%0.1f] ShipsDirection[%d] ShipsDetState[%d]", i + 1, struShipsDetection.struShipInfo[i].fShipsLength, struShipsDetection.struShipInfo[i].fShipsHeight, struShipsDetection.struShipInfo[i].fShipsWidth, struShipsDetection.struShipInfo[i].fShipsSpeed, struShipsDetection.struShipInfo[i].byShipsDirection, struShipsDetection.struShipInfo[i].byShipsDetState);
            }
            break;
        }
        default:
            printf("其他报警，报警信息类型: %d\n", lCommand);
            break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //船只检测报警不需要设置其他报警布防参数，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}

二、船只计数

2.1 接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，调用NET_DVR_STDXMLConfig(命令: GET /ISAPI/Smart/shipsDetection/<channelID>/capabilities)可以获取设备船只检测能力集判断设备是否支持船只计数功能，对应节点：<isSupportShipsDetectionCount>。
  • 船只检测是设备实现的，需要先配置设备船只检测相关参数，包括报警区域、计数触发线、布防时间等，详见“一、船只报警上传”流程说明里面的船只检测相关参数配置说明。可以通过WEB网页直接访问设备进行配置，如果事先已经配置则可省略该过程。
  • 参数和规则配置好之后，设备自动进行检测和计数，SDK可以调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_SHIPSDETECTION_COUNT)获取船只计数信息，船只计数信息（NET_DVR_SHIPSCOUNT_CFG）在该接口设置的回调函数里面获取。
  • 停止获取船只计数信息时需要调用NET_DVR_StopRemoteConfig关闭连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

BOOL bFinish = FALSE;
void CALLBACK GetShipsCountCallback(DWORD dwType, void* lpBuffer, DWORD dwBufLen, void* pUserData)
{
    if (dwType == NET_SDK_CALLBACK_TYPE_DATA)
    {
        NET_DVR_SHIPSCOUNT_CFG  struShipsCount = { 0 };
        memcpy(&struShipsCount, lpBuffer, sizeof(NET_DVR_SHIPSCOUNT_CFG));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struShipsCount.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struShipsCount.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struShipsCount.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struShipsCount.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struShipsCount.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struShipsCount.dwAbsTime);

        printf("船只计数信息:上行船只数[%d]下行船只数[%d]左行船只数[%d]右行船只数[%d]船只总计数 [%d]时间[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d]\n",
            struShipsCount.dwUpShipsCount, struShipsCount.dwDownShipsCount, struShipsCount.dwLeftShipsCount, struShipsCount.dwRightShipsCount,
            struShipsCount.dwTotalCount, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);
    }
    else if (dwType == NET_SDK_CALLBACK_TYPE_STATUS)
    {
        DWORD dwStatus = *(DWORD*)lpBuffer;
        if (dwStatus == NET_SDK_CALLBACK_STATUS_SUCCESS)
        {
            printf("dwStatus:NET_SDK_CALLBACK_STATUS_SUCCESS\n");
            bFinish = TRUE;//获取成功，结束
        }
        else if (dwStatus == NET_SDK_CALLBACK_STATUS_FAILED)
        {
            DWORD dwErrCode = *(DWORD*)((char *)lpBuffer + 4);
            printf("NET_DVR_GET_SHIPSDETECTION_COUNT failed, Error code: %d\n", dwErrCode);
            bFinish = TRUE;//获取失败，结束
        }
        else
        {
            printf("NET_DVR_GET_SHIPSDETECTION_COUNT status code: %d\n", dwStatus);
            bFinish = TRUE;//其他状态，结束
        }
    }
}

void main()
{
    DWORD dwChannel = 2;  //热成像通道

    //---------------------------------------
    //初始化
    NET_DVR_Init();

    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    //注册设备(监听报警可以不注册)
    LONG lUserID;
    NET_DVR_DEVICEINFO_V30 struDeviceInfo;
    lUserID = NET_DVR_Login_V30("10.8.10.199 ", 8000, "admin", "abcd1234", &struDeviceInfo);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //启动获取船只计数信息的长连接
    NET_DVR_SHIPSCOUNT_COND struShipsCond = { 0 };
    struShipsCond.dwSize = sizeof(struShipsCond);
    struShipsCond.dwChannel = dwChannel; //通道号

    LONG lHandle = NET_DVR_StartRemoteConfig(lUserID, NET_DVR_GET_SHIPSDETECTION_COUNT, &struShipsCond, sizeof(struShipsCond), GetShipsCountCallback, NULL);
    if (lHandle < 0)
    {
        printf("NET_DVR_GET_SHIPSDETECTION_COUNT failed, error code: %d\n", NET_DVR_GetLastError());
        bFinish = TRUE;
    }
    else
    {
        printf("NET_DVR_GET_SHIPSDETECTION_COUNT is successful!");
        bFinish = FALSE;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while (('q' != c) && !bFinish)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //关闭长连接配置接口所创建的句柄，释放资源
    if (!NET_DVR_StopRemoteConfig(lHandle))
    {
        printf("NET_DVR_StopRemoteConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //注销用户，如果前面没有登录，该步骤则不需要
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();

    return;
}


报警布防

网络协议透传接口即基于SDK私有协议透传HTTP协议RESTful风格的报文内容，该模块介绍报警布防接口接收和解析透传协议的事件数据(XML或者JSON格式以及图片数据)的方法。

目录

  • 报警布防
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 初始化之后调用NET_DVR_SetSDKLocalCfg(命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置通用参数，NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate设置为1。这样设置之后SDK底层会自动将报警事件信息数据（XML或者JSON格式的字符串）和图片数据（二进制数据）分离之后返回。如果不调用该接口设置byAlarmJsonPictureSeparate或者设置为0，默认直接以HTTP协议表单格式的报文数据返回即报警信息字符串和图片二进制数据一起返回，在同一个内存里面，需要自行解析。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V50进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 分离模式（建议）：对应报警信息类型COMM_ISAPI_ALARM，pAlarmInfo对应结构体NET_DVR_ALARM_ISAPI_INFO，将报警事件信息数据（XML或者JSON格式的字符串）和二进制图片数据分离，分别在结构体的pAlarmData、pPicPackData指针指向的内存里面返回。设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种，如果URL方式则对应pPicPackData为空，报警事件信息数据（XML或者JSON格式的字符串）里面包含HTTP协议的URL字段。
  • 非分离模式（默认）：对应报警信息类型COMM_VCA_ALARM，pAlarmInfo内存里面直接返回报警事件信息数据（XML或者JSON格式的字符串）和图片数据。设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是URL方式，直接报警事件信息数据（XML或者JSON格式的字符串）里面包含HTTP协议的URL字段；如果是二进制方式，HTTP协议表单的形式在JSON数据后面紧跟着图片二进制数据，图片数据解析出来之后可以直接保存成JPEG文件。
  • 调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo == NULL)
        {
            return;
        }
        //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
        printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "10.17.35.18"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abc12345"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    printf("NET_DVR_Login_V40 successfully, lUserID = %d\n", lUserID);

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM_V50  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    struAlarmParam.byAlarmTypeURL = 0x2; //bit1- EVENT_JSON(COMM_VCA_ALARM)中图片数据上传类型：0- 二进制传输，1- URL传输
    //其他报警布防参数不需要设置

    lHandle = NET_DVR_SetupAlarmChan_V50(lUserID, &struAlarmParam,NULL,0);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }
    printf("NET_DVR_SetupAlarmChan_V50 successfully, lHandle = %d\n", lHandle);

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


报警监听

网络协议透传接口即基于SDK私有协议透传HTTP协议RESTful风格的报文内容，该模块介绍报警监听接口接收和解析透传协议的事件数据(XML或者JSON格式以及图片数据)的方法。报警监听方式，是指触发事件时设备主动连接SDK并且上传报警信息，SDK在设定的端口上监听和接收。需要先在设备端配置报警接收主机的IP和端口，和SDK监听的IP、端口需要一致。

目录

  • 报警监听
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 初始化之后调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置通用参数，NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate设置为1。这样设置之后SDK底层会自动将报警事件信息数据（XML或者JSON格式的字符串）和图片数据（二进制数据）分离之后返回。如果不调用该接口设置byAlarmJsonPictureSeparate或者设置为0，默认直接以HTTP协议表单格式的报文数据返回即报警信息字符串和图片二进制数据一起返回，在同一个内存里面，需要自行解析。
  • 报警监听方式获取事件的具体实现方法如下所示：
    1) 设备端需要先配置上传主机的IP地址和端口，如果事先已经配置，该过程可以省略。可以通过WEB网页登录设备进行配置，比如“网络”的“高级配置”中“报警服务器”页面（不同设备配置页面可能不一样，以实际为准）。如果需要通过程序配置，则先调用NET_DVR_Login_V40接口登录设备，然后调用NET_DVR_STDXMLConfig配置HTTP服务器地址（对应URL为/ISAPI/Event/notification/httpHosts?format=json或者/ISAPI/Event/notification/httpHosts）。
    2) 调用NET_DVR_StartListen_V30开启监听并且设置报警回调函数，在SDK初始化之后即可以调用，不需要登录，监听的IP和端口跟设备端配置的报警服务器的IP和端口必须一致。如果PC有多网卡，还需要调用NET_DVR_SetValidIP绑定当前使用的网卡。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_StopListen_V30停止监听，释放资源，此时SDK将不再监听接收报警信息。
    4) 对接多台设备的时候，每一台设备可以配置相同的监听端口，此时只需要调用一次启动监听的接口，也可以配置不同的监听端口（最多支持10个不同的端口）分别开启监听，但是报警回调函数只需要设置一个而且只有最后设置的一个回调函数有效，回调函数里面接收数据之后可以通过报警设备信息(pAlarmer)判断区分设备。
  • 分离模式（建议）：对应报警信息类型COMM_ISAPI_ALARM，pAlarmInfo对应结构体NET_DVR_ALARM_ISAPI_INFO，将报警事件信息数据（XML或者JSON格式的字符串）和二进制图片数据分离，分别在结构体的pAlarmData、pPicPackData指针指向的内存里面返回。设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种，如果URL方式则对应pPicPackData为空，报警事件信息数据（XML或者JSON格式的字符串）里面包含HTTP协议的URL字段。
  • 非分离模式（默认）：对应报警信息类型COMM_VCA_ALARM，pAlarmInfo内存里面直接返回报警事件信息数据（XML或者JSON格式的字符串）和图片数据。设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是URL方式，直接报警事件信息数据（XML或者JSON格式的字符串）里面包含HTTP协议的URL字段；如果是二进制方式，HTTP协议表单的形式在JSON数据后面紧跟着图片二进制数据，图片数据解析出来之后可以直接保存成JPEG文件。
  • 程序退出时，先停止监听，如果有登录设备则需要调用NET_DVR_Logout注销设备。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ISAPI_ALARM: //协议透传报警信息，分离模式
    {
        NET_DVR_ALARM_ISAPI_INFO struISAPIAlarm = { 0 };
        memcpy(&struISAPIAlarm, pAlarmInfo, sizeof(NET_DVR_ALARM_ISAPI_INFO));

        //解析JSON数据
        if (struISAPIAlarm.dwAlarmDataLen > 0)
        {
            printf("COMM_ISAPI_ALARM报警事件信息数据: \n%s\n", UTF8ToAnsi(struISAPIAlarm.pAlarmData));
        }

        //保存二进制图片数据
        char cFilename[256] = { 0 };

        SYSTEMTIME t;
        GetLocalTime(&t);
        char chTime[128];
        sprintf(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d%3.3d", t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);

        if (struISAPIAlarm.pPicPackData != NULL)
        {
            int i = 0;
            while (i <= struISAPIAlarm.byPicturesNumber - 1)
            {
                DWORD dwWrittenBytes = 0;
                if (1 == ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].byPicType)
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.jpg", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }
                else
                {
                    sprintf(cFilename, "PicData[%s]_%s_%d.dat", chTime, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].szFilename, rand() % GetTickCount());
                }

                FILE *fAlarmPic = fopen(cFilename, "wb");
                fwrite(((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData, ((NET_DVR_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen, 1, fAlarmPic);
                fclose(fAlarmPic);
                fAlarmPic = NULL;
            }
        }
    }
    break;
    case COMM_VCA_ALARM: //智能检测通用报警，非分离模式
    {
        if (pAlarmInfo == NULL)
        {
            return;
        }
        //如果带图片二进制数据，需要自己解析表单格式的报文，不能直接转成字符串
        printf("COMM_VCA_ALARM智能检测通用报警, 报警数据内容：\n%s\n", UTF8ToAnsi(pAlarmInfo));
    }
    break;
    default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }
    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //设置分离模式
    NET_DVR_LOCAL_GENERAL_CFG struGeneralCfg = { 0 };
    //控制JSON透传报警数据和图片是否分离，0 - 不分离，1 - 分离（分离后走COMM_ISAPI_ALARM回调返回）
    struGeneralCfg.byAlarmJsonPictureSeparate = 1;

    if (!NET_DVR_SetSDKLocalCfg(NET_DVR_LOCAL_CFG_TYPE_GENERAL, &struGeneralCfg))
    {
        printf("NET_DVR_SetSDKLocalCfg failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //启动监听设置报警回调函数
    int lHandle = -1;
    lHandle = NET_DVR_StartListen_V30("10.17.36.38", 7200, MessageCallback, NULL);

    if (lHandle < 0)
    {
        printf("NET_DVR_StartListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //停止监听
    if (!NET_DVR_StopListen_V30(lHandle))
    {
        printf("NET_DVR_StopListen_V30 failed, error code: %d\n", NET_DVR_GetLastError());
    }

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


配置和控制

网络协议透传接口即基于SDK私有协议透传HTTP协议RESTful风格的报文内容，实现更多的参数配置、能力集获取、远程控制等功能。

目录

  • 配置和控制
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 初始化NET_DVR_Init接口在程序开始是调用，只需要调用一次。
  • 用户注册即登录门口机，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后直接调用接口NET_DVR_STDXMLConfig下发命令，不同的功能对应不同的方法（PUT、GET、POST、DELETE等）、URI和输入输出参数（XML或JSON格式）。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、示例代码

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

/****************************************
Function:    AnsiToUTF8
Description: Ansi字符转换成UTF-8字符
Input:       szAnsiString Ansi字符
Return:      UTF-8字符
****************************************/
char* AnsiToUTF8(const char *szAnsiString)
{
#if defined(_WIN32) || defined(_WIN64)
    if (szAnsiString == NULL || strlen(szAnsiString) == 0)
    {
        return NULL;
    }
    //AnsiToUnicode
    //预转换，得到所需空间的大小
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), NULL, 0);

    //分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间
    wchar_t* wszUnicodeString = new wchar_t[(size_t)wcsLen + 1];

    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), wszUnicodeString, wcsLen);

    //最后加上'\0'
    wszUnicodeString[wcsLen] = '\0';

    // unicode to UTF8
    //预转换，得到所需空间的大小，这次用的函数和上面名字相反
    int UTF8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), NULL, 0, NULL, NULL);

    //同上，分配空间要给'\0'留个空间
    //UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存
    char* szUTF8 = new char[(size_t)UTF8Len + 1];

    //转换
    //unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), szUTF8, UTF8Len, NULL, NULL);

    //最后加上'\0'
    szUTF8[UTF8Len] = '\0';

    delete[] wszUnicodeString;
    wszUnicodeString = NULL;

    return szUTF8;

#else
    if (NULL == szAnsiString)
    {
        return NULL;
    }
    char *outbuf = 0;
    if (szAnsiString)
    {
        iconv_t cd = iconv_open("UTF-8", "EUC-CN");
        if (cd)
        {
            size_t contlen = strlen(szAnsiString);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szAnsiString);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //输出参数
    NET_DVR_XML_CONFIG_INPUT struInput = { 0 };
    struInput.dwSize = sizeof(struInput);

    //输出参数
    NET_DVR_XML_CONFIG_OUTPUT struOutputParam = { 0 };
    struOutputParam.dwSize = sizeof(struOutputParam);

    //URL
    char szUrl[512];

    //GET方法测试
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "GET /ISAPI/Intelligent/FDLib\r\n"); //获取所有人脸库的URL

    //不同功能对应不同URL，具体参考相应的协议文档
    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //获取时输入为空
    struInput.lpInBuffer = NULL;
    struInput.dwInBufferSize = 0;

    //分配输出内存
    char szGetOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szGetOutput;
    struOutputParam.dwOutBufferSize = sizeof(szGetOutput);

    //输出状态
    char szStatusBuf[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuf;
    struOutputParam.dwStatusSize = sizeof(szStatusBuf);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("%s\n", UTF8ToAnsi(szGetOutput));
    }

    //POST方法测试
    memset(szUrl, 0, sizeof(szUrl));
    sprintf(szUrl, "%s", "POST /ISAPI/Intelligent/FDLib\r\n"); //添加人脸库

    struInput.lpRequestUrl = szUrl;
    struInput.dwRequestUrlLen = strlen(szUrl);

    //输入JSON数据
    char pBuf[2 * 1024] = { 0 };
    strcpy(pBuf, AnsiToUTF8("<CreateFDLibList version=\"2.0\" xmlns=\"http://www.isapi.org/ver20/XMLSchema\">"
        "<CreateFDLib>"
        "<id>1</id>"
        "<name>测试</name>"
        "</CreateFDLib>"
        "</CreateFDLibList>"));//中文字符需要使用UTF-8字符集

    //输入参数
    struInput.lpInBuffer = pBuf;
    struInput.dwInBufferSize = sizeof(pBuf);

    //输出结果
    char szOutput[8 * 1024] = { 0 };
    struOutputParam.lpOutBuffer = szOutput;
    struOutputParam.dwOutBufferSize = sizeof(szOutput);

    //输出状态
    char szStatusBuff[1024] = { 0 };
    struOutputParam.lpStatusBuffer = szStatusBuff;
    struOutputParam.dwStatusSize = sizeof(szStatusBuff);

    if (!NET_DVR_STDXMLConfig(lUserID, &struInput, &struOutputParam))
    {
        printf("NET_DVR_STDXMLConfig failed, error code: %d\n", NET_DVR_GetLastError());
    }
    else
    {
        printf("NET_DVR_STDXMLConfig successfully!\n");
        printf("lpOutBuffer: %s\n", UTF8ToAnsi(szOutput));
        printf("lpStatusBuffer: %s\n", szStatusBuff);
    }

    //---------------------------------------
    //退出程序

    //注销用户
    NET_DVR_Logout(lUserID);

    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


NET_DVR_SetSDKInitCfg

设置SDK初始化参数。

BOOL NET_DVR_SetSDKInitCfg(
  NET_SDK_INIT_CFG_TYPE    enumType,
  void* const              lpInBuff
);

Parameters

enumType
[in] 初始化参数类型，不同的取值对应不同的参数，详见下表
lpInBuff
[in] 输入参数，不同的参数类型，输入参数对应不同的结构
enumType | 类型值 | 含义 | lpInBuff对应结构体
NET_SDK_INIT_CFG_ABILITY | 1 | SDK支持的业务能力 | NET_DVR_INIT_CFG_ABILITY
NET_SDK_INIT_CFG_SDK_PATH | 2 | 设置组件库加载路径，即HCNetSDK.dll或HCNetSDK.so的路径。sPath可以为绝对路基或相对路径。若为相对路径，相对路径+应用程序可执行路径不超过256。 | NET_DVR_LOCAL_SDK_PATH
NET_SDK_INIT_CFG_LIBEAY_PATH | 3 | 带有OpenSSL加密库库名的路径，支持1.0.2和1.1.1版本，SDK内部加载库后，自动获取openssl版本 | 字符串类型，库的路径
NET_SDK_INIT_CFG_SSLEAY_PATH | 4 | 带有OpenSSL通信库库名的路径，支持1.0.2和1.1.1版本，SDK内部加载库后，自动获取openssl版本 | 字符串类型，库的路径

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口需要在初始化接口NET_DVR_Init之前调用，通过初始化接口检查SDK依赖库和SDK能力。

See Also

NET_DVR_Init


NET_DVR_Init

初始化SDK，调用其他SDK函数的前提。

BOOL NET_DVR_Init(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_GETLOCALIPANDMACFAIL | 53 | 获得本地PC的IP地址或物理地址失败。

Remarks

SDK初始化之前可以调用NET_DVR_SetSDKInitCfg设置SDK支持的登录布防连接个数、设置组件库加载路径（仅Linux版本支持）等初始化参数。

See Also

NET_DVR_Cleanup


NET_DVR_Cleanup

释放SDK资源，在程序结束之前调用。

BOOL NET_DVR_Cleanup(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。

Remarks

在调用NET_DVR_Cleanup的时候，不能同时调用其他任何SDK接口。NET_DVR_Init和NET_DVR_Cleanup需要配对使用，即程序里面调用多少次NET_DVR_Init，退出时就需要调用多少次NET_DVR_Cleanup。

See Also

NET_DVR_Init


NET_DVR_GetSDKLocalCfg

获取SDK本地参数。

BOOL NET_DVR_GetSDKLocalCfg(
  NET_SDK_LOCAL_CFG_TYPE    enumType,
  void                      *lpOutBuff
);

Parameters

enumType
[in] 配置类型，不同的取值对应不同的SDK参数，详见下表
lpOutBuff
[out] 输出参数，不同的配置类型，输出参数对应不同的结构
enumType | 类型值 | 含义 | lpOutBuff对应结构体
NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND | 0 | 本地TCP端口绑定配置 | NET_DVR_LOCAL_TCP_PORT_BIND_CFG
NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND | 1 | 本地UDP端口绑定配置 | NET_DVR_LOCAL_UDP_PORT_BIND_CFG
NET_SDK_LOCAL_CFG_TYPE_MEM_POOL | 2 | 内存池本地配置 | NET_DVR_LOCAL_MEM_POOL_CFG
NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT | 3 | 按模块配置超时时间 | NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG
NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE | 4 | 是否使用能力集解析库 | NET_DVR_LOCAL_ABILITY_PARSE_CFG
NET_SDK_LOCAL_CFG_TYPE_TALK_MODE | 5 | 对讲模式配置 | NET_DVR_LOCAL_TALK_MODE_CFG
NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV | 10 | 心跳交互间隔时间配置 | NET_DVR_LOCAL_CHECK_DEV
NET_DVR_LOCAL_CFG_TYPE_GENERAL | 17 | 通用参数配置 | NET_DVR_LOCAL_GENERAL_CFG
NET_DVR_LOCAL_CFG_TYPE_PTZ | 18 | PTZ是否接收设备返回配置 | NET_DVR_LOCAL_CFG_TYPE_PTZ
NET_SDK_LOCAL_CFG_CERTIFICATION | 20 | 证书相关参数配置 | NET_DVR_LOCAL_CERTIFICATION
NET_SDK_LOCAL_CFG_PORT_MULTIPLEX | 21 | 端口复用参数配置 | NET_DVR_LOCAL_PORT_MULTI_CFG

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetSDKLocalCfg


NET_DVR_SetSDKLocalCfg

设置SDK本地参数。

BOOL NET_DVR_SetSDKLocalCfg(
  NET_SDK_LOCAL_CFG_TYPE    enumType,
  void* const               lpInBuff
);

Parameters

enumType
[in] 配置类型，不同的取值对应不同的SDK参数，详见下表
lpInBuff
[in] 输入参数，不同的配置类型，输入参数对应不同的结构
enumType | 类型值 | 含义 | lpInBuff对应结构体
NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND | 0 | 本地TCP端口绑定配置 | NET_DVR_LOCAL_TCP_PORT_BIND_CFG
NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND | 1 | 本地UDP端口绑定配置 | NET_DVR_LOCAL_UDP_PORT_BIND_CFG
NET_SDK_LOCAL_CFG_TYPE_MEM_POOL | 2 | 内存池本地配置 | NET_DVR_LOCAL_MEM_POOL_CFG
NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT | 3 | 按模块配置超时时间 | NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG
NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE | 4 | 是否使用能力集解析库 | NET_DVR_LOCAL_ABILITY_PARSE_CFG
NET_SDK_LOCAL_CFG_TYPE_TALK_MODE | 5 | 对讲模式配置 | NET_DVR_LOCAL_TALK_MODE_CFG
NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV | 10 | 心跳交互间隔时间配置 | NET_DVR_LOCAL_CHECK_DEV
NET_SDK_LOCAL_CFG_TYPE_CHAR_ENCODE | 13 | 配置字符编码相关处理回调 | NET_DVR_LOCAL_BYTE_ENCODE_CONVERT
NET_DVR_LOCAL_CFG_TYPE_LOG | 15 | 日志参数配置 | NET_DVR_LOCAL_LOG_CFG
NET_DVR_LOCAL_CFG_TYPE_GENERAL | 17 | 通用参数配置 | NET_DVR_LOCAL_GENERAL_CFG
NET_DVR_LOCAL_CFG_TYPE_PTZ | 18 | PTZ是否接收设备返回配置 | NET_DVR_LOCAL_CFG_TYPE_PTZ
NET_SDK_LOCAL_CFG_CERTIFICATION | 20 | 证书相关参数配置 | NET_DVR_LOCAL_CERTIFICATION
NET_SDK_LOCAL_CFG_PORT_MULTIPLEX | 21 | 端口复用参数配置 | NET_DVR_LOCAL_PORT_MULTI_CFG

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetSDKLocalCfg


NET_DVR_SetConnectTime

设置网络连接超时时间和连接尝试次数。

BOOL NET_DVR_SetConnectTime(
  DWORD   dwWaitTime,
  DWORD   dwTryTimes
);

Parameters

dwWaitTime
[in] 超时时间，单位毫秒，取值范围[300,75000]，实际最大超时时间因系统的connect超时时间而不同。
dwTryTimes
[in] 连接尝试次数（保留）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。

Remarks

  • 对于Windows版本，SDK默认建立连接的超时时间为3000毫秒；对于Linux版本，V5.2.7.2及以上版本，连接超时时间为3500毫秒。
  • SDK4.0及以后版本中当设置的超时时间超过或低于限制的值时接口不返回失败，将取最接近的上下限限制值作为实际的超时时间。


NET_DVR_SetRecvTimeOut

设置接收超时时间。

BOOL NET_DVR_SetRecvTimeOut(
  DWORD   nRecvTimeOut
);

Parameters

nRecvTimeOut
[in] 接收超时时间，单位毫秒，默认为5000，最小为1000毫秒。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口用于设置接收超时时间，例如预览接收实时流数据、回放下载接收录像数据、报警接收报警信息等接收超时时间。
  • 通过NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG)可以按预览、报警、回放等模块配置接收超时时间，不同的模块设置不同的时间值。


NET_DVR_SetReconnect

设置重连功能。

BOOL NET_DVR_SetReconnect(
  DWORD   dwInterval,
  BOOL    bEnableRecon
);

Parameters

dwInterval
[in] 重连间隔，单位:毫秒
bEnableRecon
[in] 是否重连，0-不重连，1-重连，参数默认值为1

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。

Remarks

该接口可以同时控制预览、透明通道和布防的重连功能。不调用该接口时，SDK默认启动预览、透明通道和布防的重连功能，重连时间间隔为5秒。


NET_DVR_GetLocalIP

获取所有IP，用于支持多网卡接口。

BOOL NET_DVR_GetLocalIP(
  char      strIP[16][16],
  DWORD     *pValidNum,
  BOOL      *pEnableBind
);

Parameters

strIP
[out] 存放IP的缓冲区，不能为空
pValidNum
[out] 所有有效 IP 的数量
pEnableBind
[out] 是否绑定

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口获取客户端本地多网卡的所有IP地址，可以通过接口NET_DVR_SetValidIP选择要使用的IP地址。

See Also

NET_DVR_SetValidIP


NET_DVR_SetValidIP

选择使用哪个IP。

BOOL NET_DVR_SetValidIP(
  DWORD     dwIPIndex,
  BOOL      bEnableBind
);

Parameters

dwIPIndex
[in] 选择使用的IP下标，由NET_DVR_GetLocalIP获取
bEnableBind
[in] 是否绑定

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetLocalIP


NET_DVR_GetSDKVersion

获取SDK的版本信息。

DWORD NET_DVR_GetSDKVersion(
);

Return Values

SDK版本信息，2个高字节表示主版本，2个低字节表示次版本。如0x00030000：表示版本为3.0。


NET_DVR_GetSDKBuildVersion

获取SDK的版本号和build信息。

DWORD NET_DVR_GetSDKBuildVersion(
);

Return Values

SDK的版本号和build信息。2个高字节表示版本号 ：25~32位表示主版本号，17~24位表示次版本号；2个低字节表示build信息。 如0x03000101：表示版本号为3.0，build 号是0101。


NET_DVR_GetSDKState

获取当前SDK的状态信息。

BOOL NET_DVR_GetSDKState(
  LPNET_DVR_SDKSTATE   pSDKState
);

Parameters

pSDKState
[out] 状态信息结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetSDKAbility

获取当前SDK的功能信息。

BOOL NET_DVR_GetSDKAbility(
  LPNET_DVR_SDKABL     pSDKAbl
);

Parameters

pSDKState
[out] 功能信息结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_SetSDKInitCfg

设备网络SDK开发使用手册

NET_DVR_GetLinkAddr

获取码流连接地址。

BOOL NET_DVR_GetLinkAddr(
  LONG				lLinkHandle,
  NET_DVR_LINK_KIND             enumLinkKind,
  LPNET_DVR_LINK_ADDR           lpLinkAddr
);

Parameters

lLinkHandle
[in] 预览、回放、语音对讲转发开启时返回的句柄
enumLinkKind
[in] 连接类型，见下面枚举定义
enumType | 类型值 | 含义
ENUM_LINK_PREVIEW | 1 | 预览
ENUM_LINK_PLAYBACK | 2 | 回放
ENUM_LINK_VOICEPLAY | 3 | 语音对讲、转发
lpLinkAddr
[out] 连接地址

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_SetExceptionCallBack_V30

注册接收异常、重连等消息的窗口句柄或回调函数。

Windows下该接口定义如下：

BOOL NET_DVR_SetExceptionCallBack_V30(
  UINT                   nMessage,
  HWND                   hWnd,
  fExceptionCallBack     cbExceptionCallBack,
  void                   *pUser
);

Linux下该接口定义如下：

BOOL NET_DVR_SetExceptionCallBack_V30(
  UINT                   reserved1,
  void                   *reserved2,
  fExceptionCallBack     cbExceptionCallBack,
  void                   *pUser
);

Parameters

reserved1
[in] 消息，Linux下该参数保留
hWnd
[in] 接收异常信息消息的窗口句柄，Linux下该参数保留
cbExceptionCallBack
[in] 接收异常消息的回调函数，回调当前异常的相关信息
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fExceptionCallBack)(
  DWORD    dwType,
  LONG     lUserID,
  LONG     lHandle,
  void     *pUser
);

Callback Function Parameters

dwType
[out] 异常或重连等消息的类型，见下文的异常消息宏定义表：
lUserID
[out] 登录ID
lHandle
[out] 出现异常的相应类型的句柄
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

Windows下该函数的hWnd和cbExceptionCallBack不能同时为NULL，Linux下cbExceptionCallBack不能设置为NULL，否则将接收不到异常消息。

异常消息宏定义见下表：
宏定义 | 宏定义值 | 含义
EXCEPTION_EXCHANGE | 0x8000 | 用户交互时异常（注册心跳超时，心跳间隔为2分钟）
EXCEPTION_AUDIOEXCHANGE | 0x8001 | 语音对讲异常
EXCEPTION_ALARM | 0x8002 | 报警异常
EXCEPTION_PREVIEW | 0x8003 | 网络预览异常
EXCEPTION_SERIAL | 0x8004 | 透明通道异常
EXCEPTION_RECONNECT | 0x8005 | 预览时重连
EXCEPTION_ALARMRECONNECT | 0x8006 | 报警时重连
EXCEPTION_SERIALRECONNECT | 0x8007 | 透明通道重连
SERIAL_RECONNECTSUCCESS | 0x8008 | 透明通道重连成功
EXCEPTION_PLAYBACK | 0x8010 | 回放异常
EXCEPTION_DISKFMT | 0x8011 | 硬盘格式化
EXCEPTION_PASSIVEDECODE | 0x8012 | 被动解码异常
EXCEPTION_EMAILTEST | 0x8013 | 邮件测试异常
EXCEPTION_BACKUP | 0x8014 | 备份异常
PREVIEW_RECONNECTSUCCESS | 0x8015 | 预览时重连成功
ALARM_RECONNECTSUCCESS | 0x8016 | 报警时重连成功
RESUME_EXCHANGE | 0x8017 | 用户交互恢复
NETWORK_FLOWTEST_EXCEPTION | 0x8018 | 网络流量检测异常
EXCEPTION_PICPREVIEWRECONNECT | 0x8019 | 图片预览重连
PICPREVIEW_RECONNECTSUCCESS | 0x8020 | 图片预览重连成功
EXCEPTION_PICPREVIEW | 0x8021 | 图片预览异常
EXCEPTION_MAX_ALARM_INFO | 0x8022 | 报警信息缓存已达上限
EXCEPTION_LOST_ALARM | 0x8023 | 报警丢失
EXCEPTION_PASSIVETRANSRECONNECT | 0x8024 | 被动转码重连
PASSIVETRANS_RECONNECTSUCCESS | 0x8025 | 被动转码重连成功
EXCEPTION_PASSIVETRANS | 0x8026 | 被动转码异常
EXCEPTION_RELOGIN | 0x8040 | 用户重登陆
RELOGIN_SUCCESS | 0x8041 | 用户重登陆成功
EXCEPTION_PASSIVEDECODE_RECONNNECT | 0x8042 | 被动解码重连
EXCEPTION_CLUSTER_CS_ARMFAILED | 0x8043 | 集群报警异常
EXCEPTION_RELOGIN_FAILED | 0x8044 | 重登陆失败，停止重登陆
EXCEPTION_PREVIEW_RECONNECT_CLOSED | 0x8045 | 关闭预览重连功能
EXCEPTION_ALARM_RECONNECT_CLOSED | 0x8046 | 关闭报警重连功能
EXCEPTION_SERIAL_RECONNECT_CLOSED | 0x8047 | 关闭透明通道重连功能
EXCEPTION_PIC_RECONNECT_CLOSED | 0x8048 | 关闭回显重连功能
EXCEPTION_PASSIVE_DECODE_RECONNECT_CLOSED | 0x8049 | 关闭被动解码重连功能
EXCEPTION_PASSIVE_TRANS_RECONNECT_CLOSED | 0x804a | 关闭被动转码重连功能

如果此结构是以回调方式反馈异常消息，那么应用程序中的异常回调函数实现如下，该函数中的参数dwType表示异常消息类型（见上表）；lHandle表示发生异常的相应类型的句柄。

//注册接收异常消息的回调函数
NET_DVR_SetExceptionCallBack_V30(WM_NULL, NULL, g_ExceptionCallBack, NULL);

//接收异常消息的回调函数的外部实现
    void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
   {
    char tempbuf[256];
    ZeroMemory(tempbuf,256);
    switch(dwType)
    {
    case EXCEPTION_AUDIOEXCHANGE:		//语音对讲时网络异常
      sprintf(tempbuf,"语音对讲时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭语音对讲
        break;
    case EXCEPTION_ALARM:			//报警上传时网络异常
        sprintf(tempbuf,"报警上传时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭报警上传
        break;
    case EXCEPTION_PREVIEW:			//网络预览时异常
        sprintf(tempbuf,"网络预览时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭网络预览
        break;
    case EXCEPTION_SERIAL:			//透明通道传输时异常
        sprintf(tempbuf,"透明通道传输时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭透明通道
        break;
    case EXCEPTION_RECONNECT:			//预览时重连
        break;
    default:
        break;
    }
   };


NET_DVR_SetLogToFile

启用写日志文件。

BOOL NET_DVR_SetLogToFile(
  DWORD    nLogLevel,
  char     *strLogDir,
  BOOL     bAutoDel
);

Parameters

nLogLevel
[in] 日志的等级（默认为0）：0-表示关闭日志，1-表示只输出ERROR错误日志，2-输出ERROR错误信息和DEBUG调试信息，3-输出ERROR错误信息、DEBUG调试信息和INFO普通信息等所有信息
strLogDir
[in] 日志文件的路径，windows默认值为"C:\\SdkLog\\"；linux默认值"/home/sdklog/"
bAutoDel
[in] 是否删除超出的文件数，默认值为TRUE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 日志文件路径必须是绝对路径，且以"\\"结尾，例如"C:\\SdkLog\\"，建议用户先手动创建文件。若未指定文件路径，则采用默认路径"C:\\SdkLog\\"。
  • 可多次调用该接口创建新的日志文件，更改目录时到下一次写文件时才会使用新的目录写文件。
  • bAutoDel为TRUE时表示覆盖模式，日志文件个数超过SDK限制个数时将会自动删除超出的文件。SDK限制个数默认为10个，可以调用接口NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_CFG_TYPE_LOG)进行修改配置。


NET_DVR_GetLastError

返回最后操作的错误码。

DWORD NET_DVR_GetLastError(
);

Return Values

返回值为错误码。错误码主要分为网络通讯库、RTSP通讯库、软硬解库、语音对讲库等错误码，详见下表。

网络通讯库错误码

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。一般和通道相关，例如有预览通道1权限，无预览通道2权限，即有预览权限但不完全，预览通道2返回此错误。
NET_DVR_NOINIT | 3 | SDK未初始化。必须先调用NET_DVR_Init，该接口是调用其他SDK函数的前提且一个程序进程只需要调用一次。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备通道分模拟通道和数字通道（IP通道），NET_DVR_Login_V40登录设备成功之后会返回设备支持的通道个数和起始通道号取值，详见“通道和通道号号相关说明”。
NET_DVR_OVER_MAXLINK | 5 | 设备总的连接数超过最大。例如网络摄像机只支持6路预览，预览第7路即会返回失败，错误码返回5。不同设备性能不一样，支持路数也不同。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_OPERNOPERMIT | 13 | 无此权限。用户对某个功能模块的权限，例如无预览权限用户预览返回此错误。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_ERRORSERIALPORT | 15 | 串口号错误。指定的设备串口号不存在。
NET_DVR_ERRORALARMPORT | 16 | 报警端口错误。指定的设备报警输入或者输出端口不存在。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空，或者参数格式或值不符合要求。
NET_DVR_CHAN_EXCEPTION | 18 | 设备通道处于错误状态
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_ERRORDISKNUM | 20 | 硬盘号错误。当对设备进行硬盘管理操作时，指定的硬盘号不存在时返回该错误。
NET_DVR_DISK_FULL | 21 | 设备硬盘满。
NET_DVR_DISK_ERROR | 22 | 设备硬盘出错
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_BUSY | 24 | 设备忙。
NET_DVR_MODIFY_FAIL | 25 | 设备修改不成功。
NET_DVR_PASSWORD_FORMAT_ERROR | 26 | 密码输入格式不正确
NET_DVR_DISK_FORMATING | 27 | 硬盘正在格式化，不能启动操作。
NET_DVR_DVRNORESOURCE | 28 | 设备资源不足。
NET_DVR_DVROPRATEFAILED | 29 | 设备操作失败。
NET_DVR_OPENHOSTSOUND_FAIL | 30 | 语音对讲、语音广播操作中采集本地音频或打开音频输出失败。
NET_DVR_DVRVOICEOPENED | 31 | 设备语音对讲被占用。
NET_DVR_TIMEINPUTERROR | 32 | 时间输入不正确。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_CREATEFILE_ERROR | 34 | 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_FILEOPENFAIL | 35 | 打开文件出错。可能因为文件不存在或者路径错误。
NET_DVR_OPERNOTFINISH | 36 | 上次的操作还没有完成。
NET_DVR_GETPLAYTIMEFAIL | 37 | 获取当前播放的时间出错。
NET_DVR_PLAYFAIL | 38 | 播放出错。
NET_DVR_FILEFORMAT_ERROR | 39 | 文件格式不正确。
NET_DVR_DIR_ERROR | 40 | 路径错误
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_AUDIO_MODE_ERROR | 42 | 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_SETSOCKET_ERROR | 45 | 设置SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_WRITEFLASHERROR | 48 | 写FLASH出错。设备升级时写FLASH失败。
NET_DVR_UPGRADEFAIL | 49 | 设备升级失败。网络或升级文件语言不匹配等原因升级失败。
NET_DVR_CARDHAVEINIT | 50 | 解码卡已经初始化过。
NET_DVR_PLAYERFAILED | 51 | 调用播放库中某个函数失败。
NET_DVR_MAX_USERNUM | 52 | 登录设备的用户数达到最大。
NET_DVR_GETLOCALIPANDMACFAIL | 53 | 获得本地PC的IP地址或物理地址失败。
NET_DVR_NOENCODEING | 54 | 设备该通道没有启动编码。
NET_DVR_IPMISMATCH | 55 | IP地址不匹配。
NET_DVR_MACMISMATCH | 56 | MAC地址不匹配。
NET_DVR_UPGRADELANGMISMATCH | 57 | 升级文件语言不匹配。
NET_DVR_MAX_PLAYERPORT | 58 | 播放器路数达到最大。
NET_DVR_NOSPACEBACKUP | 59 | 备份设备中没有足够空间进行备份。
NET_DVR_NODEVICEBACKUP | 60 | 没有找到指定的备份设备。
NET_DVR_PICTURE_BITS_ERROR | 61 | 图像素位数不符，限24色。
NET_DVR_PICTURE_DIMENSION_ERROR | 62 | 图片高*宽超限，限128*256。
NET_DVR_PICTURE_SIZ_ERROR | 63 | 图片大小超限，限100K。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下播放库(PlayCtrl.dll、SuperRender.dll、AudioRender.dll)出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_LOADDSSDKPROC_ERROR | 67 | 找不到DsSdk中某个函数入口。
NET_DVR_DSSDK_ERROR | 68 | 调用硬解码库DsSdk中某个函数失败。
NET_DVR_VOICEMONOPOLIZE | 69 | 声卡被独占。
NET_DVR_JOINMULTICASTFAILED | 70 | 加入多播组失败。
NET_DVR_CREATEDIR_ERROR | 71 | 建立日志文件目录失败。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_USERID_ISUSING | 74 | 注销时用户ID正在进行某操作。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。
NET_DVR_WRITEFILE_FAILED | 77 | 写文件失败。本地录像、远程下载录像、下载图片等操作时写文件失败。
NET_DVR_FORMAT_READONLY | 78 | 禁止格式化只读硬盘。
NET_DVR_WITHSAMEUSERNAME | 79 | 远程用户配置结构中存在相同的用户名。
NET_DVR_DEVICETYPE_ERROR | 80 | 导入参数时设备型号不匹配。
NET_DVR_LANGUAGE_ERROR | 81 | 导入参数时语言不匹配。
NET_DVR_PARAVERSION_ERROR | 82 | 导入参数时软件版本不匹配。
NET_DVR_IPCHAN_NOTALIVE | 83 | 预览时外接IP通道不在线。
NET_DVR_RTSP_SDK_ERROR | 84 | 加载标准协议通讯库(StreamTransClient.dll)失败。
NET_DVR_CONVERT_SDK_ERROR | 85 | 加载转封装库(SystemTransform.dll)失败。
NET_DVR_IPC_COUNT_OVERFLOW | 86 | 超出最大的IP接入通道数。
NET_DVR_MAX_ADD_NUM | 87 | 添加录像标签或者其他操作超出最多支持的个数。
NET_DVR_PARAMMODE_ERROR | 88 | 图像增强仪，参数模式错误（用于硬件设置时，客户端进行软件设置时错误值）。
NET_DVR_CODESPITTER_OFFLINE | 89 | 码分器不在线。
NET_DVR_BACKUP_COPYING | 90 | 设备正在备份。
NET_DVR_CHAN_NOTSUPPORT | 91 | 通道不支持该操作。
NET_DVR_CALLINEINVALID | 92 | 高度线位置太集中或长度线不够倾斜。
NET_DVR_CALCANCELCONFLICT | 93 | 取消标定冲突，如果设置了规则及全局的实际大小尺寸过滤。
NET_DVR_CALPOINTOUTRANGE | 94 | 标定点超出范围。
NET_DVR_FILTERRECTINVALID | 95 | 尺寸过滤器不符合要求。
NET_DVR_DDNS_DEVOFFLINE | 96 | 设备没有注册到ddns上。
NET_DVR_DDNS_INTER_ERROR | 97 | DDNS 服务器内部错误。
NET_DVR_FUNCTION_NOT_SUPPORT_OS | 98 | 此功能不支持该操作系统。
NET_DVR_DEC_CHAN_REBIND | 99 | 解码通道绑定显示输出次数受限。
NET_DVR_INTERCOM_SDK_ERROR | 100 | 加载当前目录下的语音对讲库失败。
NET_DVR_NO_CURRENT_UPDATEFILE | 101 | 没有正确的升级包。
NET_DVR_USER_NOT_SUCC_LOGIN | 102 | 用户还没登录成功。
NET_DVR_USE_LOG_SWITCH_FILE | 103 | 正在使用日志开关文件。
NET_DVR_POOL_PORT_EXHAUST | 104 | 端口池中用于绑定的端口已耗尽。
NET_DVR_PACKET_TYPE_NOT_SUPPORT | 105 | 码流封装格式错误。
NET_DVR_IPPARA_IPID_ERROR | 106 | IP接入配置时IPID有误。
NET_DVR_LOAD_HCPREVIEW_SDK_ERROR | 107 | 预览组件加载失败。
NET_DVR_LOAD_HCVOICETALK_SDK_ERROR | 108 | 语音组件加载失败。
NET_DVR_LOAD_HCALARM_SDK_ERROR | 109 | 报警组件加载失败。
NET_DVR_LOAD_HCPLAYBACK_SDK_ERROR | 110 | 回放组件加载失败。
NET_DVR_LOAD_HCDISPLAY_SDK_ERROR | 111 | 显示组件加载失败。
NET_DVR_LOAD_HCINDUSTRY_SDK_ERROR | 112 | 行业应用组件加载失败。
NET_DVR_LOAD_HCGENERALCFGMGR_SDK_ERROR | 113 | 通用配置管理组件加载失败。
NET_DVR_LOAD_HCCOREDEVCFG_SDK_ERROR | 114 | 设备配置核心组件加载失败。
NET_DVR_CORE_VER_MISMATCH | 121 | 单独加载组件时，组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCPREVIEW | 122 | 预览组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCVOICETALK | 123 | 语音组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCALARM | 124 | 报警组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCPLAYBACK | 125 | 回放组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCDISPLAY | 126 | 显示组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCINDUSTRY | 127 | 行业应用组件与core版本不匹配。
NET_DVR_CORE_VER_MISMATCH_HCGENERALCFGMGR | 128 | 通用配置管理组件与core版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCPREVIEW | 136 | 预览组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCVOICETALK | 137 | 语音组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCALARM | 138 | 报警组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCPLAYBACK | 139 | 回放组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCDISPLAY | 140 | 显示组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCINDUSTRY | 141 | 行业应用组件与HCNetSDK版本不匹配。
NET_DVR_COM_VER_MISMATCH_HCGENERALCFGMGR | 142 | 通用配置管理组件与HCNetSDK版本不匹配。
NET_DVR_ALIAS_DUPLICATE | 150 | 别名重复（HiDDNS的配置）。
NET_DVR_USERNAME_NOT_EXIST | 152 | 用户名不存在（V5.1.7~V5.3.1版本的IPC、IPD的错误码）。
NET_ERR_USERNAME_LOCKED | 153 | 用户名被锁定。
NET_DVR_INVALID_USERID | 154 | 无效用户ID。
NET_DVR_LOW_LOGIN_VERSION | 155 | 登录版本低。
NET_DVR_LOAD_LIBEAY32_DLL_ERROR | 156 | 加载libeay32.dll库失败。
NET_DVR_LOAD_SSLEAY32_DLL_ERROR | 157 | 加载ssleay32.dll库失败。
NET_ERR_LOAD_LIBICONV | 158 | 加载libiconv.dll库失败。
NET_DVR_TEST_SERVER_FAIL_CONNECT | 165 | 连接测试服务器失败。
NET_DVR_NAS_SERVER_INVALID_DIR | 166 | NAS服务器挂载目录失败，目录无效或者用户名密码错误。
NET_DVR_NAS_SERVER_NOENOUGH_PRI | 167 | NAS服务器挂载目录失败，没有权限。
NET_DVR_EMAIL_SERVER_NOT_CONFIG_DNS | 168 | 服务器使用域名，但是没有配置DNS，可能造成域名无效。
NET_DVR_EMAIL_SERVER_NOT_CONFIG_GATEWAY | 169 | 没有配置网关，可能造成发送邮件失败。
NET_DVR_TEST_SERVER_PASSWORD_ERROR | 170 | 用户名密码不正确，测试服务器的用户名或密码错误。
NET_DVR_EMAIL_SERVER_CONNECT_EXCEPTION_WITH_SMTP | 171 | 设备和smtp服务器交互异常。
NET_DVR_FTP_SERVER_FAIL_CREATE_DIR | 172 | FTP服务器创建目录失败。
NET_DVR_FTP_SERVER_NO_WRITE_PIR | 173 | FTP服务器没有写入权限。
NET_DVR_IP_CONFLICT | 174 | IP冲突。
NET_DVR_INSUFFICIENT_STORAGEPOOL_SPACE | 175 | 存储池空间已满。
NET_DVR_STORAGEPOOL_INVALID | 176 | 云服务器存储池无效，没有配置存储池或者存储池ID错误。
NET_DVR_EFFECTIVENESS_REBOOT | 177 | 生效需要重启。
NET_ERR_ANR_ARMING_EXIST | 178 | 断网续传布防连接已经存在（私有SDK协议布防连接已经建立的情况下，重复布防且选择断网续传功能时返回该错误）。
NET_ERR_UPLOADLINK_EXIST | 179 | 断网续传上传连接已经存在（EHOME协议和私有SDK协议不能同时支持断网续传，其中一种协议已经建议连接，另外一个连接建立时返回该错误）。
NET_ERR_INCORRECT_FILE_FORMAT | 180 | 导入文件格式不正确。
NET_ERR_INCORRECT_FILE_CONTENT | 181 | 导入文件内容不正确。
NET_ERR_MAX_HRUDP_LINK | 182 | HRUDP连接数超过设备限制。
NET_SDK_ERR_MAX_PORT_MULTIPLEX | 183 | 已达到端口复用最大数目。
NET_SDK_ERR_CREATE_PORT_MULTIPLEX | 184 | 创建端口复用失败。
NET_DVR_NONBLOCKING_CAPTURE_NOTSUPPORT | 185 | 不支持无阻塞抓图
NET_SDK_ERR_FUNCTION_INVALID | 186 | 已开启异步，该功能无效
NET_SDK_ERR_MAX_PORT_MULTIPLEX | 187 | 已达到端口复用最大数目
NET_DVR_INVALID_LINK | 188 | 连接尚未建立或连接无效
阵列错误码 |  |
NET_DVR_NAME_NOT_ONLY | 200 | 名称已存在。
NET_DVR_OVER_MAX_ARRAY | 201 | 阵列达到上限。
NET_DVR_OVER_MAX_VD | 202 | 虚拟磁盘达到上限。
NET_DVR_VD_SLOT_EXCEED | 203 | 虚拟磁盘槽位已满。
NET_DVR_PD_STATUS_INVALID | 204 | 重建阵列所需物理磁盘状态错误。
NET_DVR_PD_BE_DEDICATE_SPARE | 205 | 重建阵列所需物理磁盘为指定热备。
NET_DVR_PD_NOT_FREE | 206 | 重建阵列所需物理磁盘非空闲。
NET_DVR_CANNOT_MIG2NEWMODE | 207 | 不能从当前的阵列类型迁移到新的阵列类型。
NET_DVR_MIG_PAUSE | 208 | 迁移操作已暂停。
NET_DVR_MIG_CANCEL | 209 | 正在执行的迁移操作已取消。
NET_DVR_EXIST_VD | 210 | 阵列上存在虚拟磁盘，无法删除阵列。
NET_DVR_TARGET_IN_LD_FUNCTIONAL | 211 | 对象物理磁盘为虚拟磁盘组成部分且工作正常。
NET_DVR_HD_IS_ASSIGNED_ALREADY | 212 | 指定的物理磁盘被分配为虚拟磁盘。
NET_DVR_INVALID_HD_COUNT | 213 | 物理磁盘数量与指定的RAID等级不匹配。
NET_DVR_LD_IS_FUNCTIONAL | 214 | 阵列正常，无法重建。
NET_DVR_BGA_RUNNING | 215 | 存在正在执行的后台任务。
NET_DVR_LD_NO_ATAPI | 216 | 无法用ATAPI盘创建虚拟磁盘。
NET_DVR_MIGRATION_NOT_NEED | 217 | 阵列无需迁移。
NET_DVR_HD_TYPE_MISMATCH | 218 | 物理磁盘不属于同意类型。
NET_DVR_NO_LD_IN_DG | 219 | 无虚拟磁盘，无法进行此项操作。
NET_DVR_NO_ROOM_FOR_SPARE | 220 | 磁盘空间过小，无法被指定为热备盘。
NET_DVR_SPARE_IS_IN_MULTI_DG | 221 | 磁盘已被分配为某阵列热备盘。
NET_DVR_DG_HAS_MISSING_PD | 222 | 阵列缺少盘。
NET_DVR_NAME_EMPTY | 223 | 名称为空。
NET_DVR_INPUT_PARAM | 224 | 输入参数有误。
NET_DVR_PD_NOT_AVAILABLE | 225 | 物理磁盘不可用。
NET_DVR_ARRAY_NOT_AVAILABLE | 226 | 阵列不可用。
NET_DVR_PD_COUNT | 227 | 物理磁盘数不正确。
NET_DVR_VD_SMALL | 228 | 虚拟磁盘太小。
NET_DVR_NO_EXIST | 229 | 不存在。
NET_DVR_NOT_SUPPORT | 230 | 不支持该操作。
NET_DVR_NOT_FUNCTIONAL | 231 | 阵列状态不是正常状态。
NET_DVR_DEV_NODE_NOT_FOUND | 232 | 虚拟磁盘设备节点不存在。
NET_DVR_SLOT_EXCEED | 233 | 槽位达到上限。
NET_DVR_NO_VD_IN_ARRAY | 234 | 阵列上不存在虚拟磁盘。
NET_DVR_VD_SLOT_INVALID | 235 | 虚拟磁盘槽位无效。
NET_DVR_PD_NO_ENOUGH_SPACE | 236 | 所需物理磁盘空间不足。
NET_DVR_ARRAY_NONFUNCTION | 237 | 只有处于正常状态的阵列才能进行迁移。
NET_DVR_ARRAY_NO_ENOUGH_SPACE | 238 | 阵列空间不足。
NET_DVR_STOPPING_SCANNING_ARRAY | 239 | 正在执行安全拔盘或重新扫描。
NET_DVR_NOT_SUPPORT_16T | 240 | 不支持创建大于16T的阵列。
安全激活相关错误码 |  |
NET_DVR_ERROR_DEVICE_NOT_ACTIVATED | 250 | 设备未激活（设备未激活时，登录失败，返回错误码）
NET_DVR_ERROR_RISK_PASSWORD | 251 | 有风险的密码（设置用户密码或者激活的时候为风险密码）
NET_DVR_ERROR_DEVICE_HAS_ACTIVATED | 252 | 设备已激活（已激活的设备，再次激活时返回错误）
智能设备错误码 |  |
NET_DVR_ID_ERROR | 300 | 配置ID不合理。
NET_DVR_POLYGON_ERROR | 301 | 多边形不符合要求。
NET_DVR_RULE_PARAM_ERROR | 302 | 规则参数不合理。
NET_DVR_RULE_CFG_CONFLICT | 303 | 配置信息冲突。
NET_DVR_CALIBRATE_NOT_READY | 304 | 当前没有标定信息。
NET_DVR_CAMERA_DATA_ERROR | 305 | 摄像机参数不合理。
NET_DVR_CALIBRATE_DATA_UNFIT | 306 | 长度不够倾斜，不利于标定。
NET_DVR_CALIBRATE_DATA_CONFILICT | 307 | 标定出错，以为所有点共线或者位置太集中。
NET_DVR_CALIBRATE_CALC_FAIL | 308 | 摄像机标定参数值计算失败。
NET_DVR_CALIBRATE_LINE_OUT_RECT | 309 | 输入的样本标定线超出了样本外接矩形框。
NET_DVR_ENTER_RULE_NOT_READY | 310 | 没有设置进入区域
NET_DVR_AID_RULE_NO_INCLUDE_LANE | 311 | 交通事件规则中没有包括车道（特值拥堵和逆行）
NET_DVR_LANE_NOT_READY | 312 | 当前没有设置车道
NET_DVR_RULE_INCLUDE_TWO_WAY | 313 | 事件规则中包含2种不同方向
NET_DVR_LANE_TPS_RULE_CONFLICT | 314 | 车道和数据规则冲突
NET_DVR_NOT_SUPPORT_EVENT_TYPE | 315 | 不支持的事件类型
NET_DVR_LANE_NO_WAY | 316 | 车道没有方向
NET_DVR_SIZE_FILTER_ERROR | 317 | 尺寸过滤框不合理
NET_DVR_LIB_FFL_NO_FACE | 318 | 特征点定位时输入的图像没有人脸
NET_DVR_LIB_FFL_IMG_TOO_SMALL | 319 | 特征点定位时输入的图像太小
NET_DVR_LIB_FD_IMG_NO_FACE | 320 | 单张图像人脸检测时输入的图像没有人脸
NET_DVR_LIB_FACE_TOO_SMALL | 321 | 建模时人脸太小
NET_DVR_LIB_FACE_QUALITY_TOO_BAD | 322 | 建模时人脸图像质量太差
NET_DVR_KEY_PARAM_ERR | 323 | 高级参数设置错误
NET_DVR_CALIBRATE_DATA_ERR | 324 | 标定样本数目错误，或数据值错误，或样本点超出地平线
NET_DVR_CALIBRATE_DISABLE_FAIL | 325 | 所配置规则不允许取消标定
NET_DVR_VCA_LIB_FD_SCALE_OUTRANGE | 326 | 最大过滤框的宽高最小值超过最小过滤框的宽高最大值两倍以上
NET_DVR_LIB_FD_REGION_TOO_LARGE | 327 | 当前检测区域范围过大。检测区最大为图像的2/3
NET_DVR_TRIAL_OVERDUE | 328 | 试用版评估期已结束
NET_DVR_CONFIG_FILE_CONFLICT | 329 | 设备类型与配置文件冲突（加密狗类型与现有分析仪配置不符错误码提示）
NET_DVR_FR_FPL_FAIL | 330 | 人脸特征点定位失败
NET_DVR_FR_IQA_FAIL | 331 | 人脸评分失败
NET_DVR_FR_FEM_FAIL | 332 | 人脸特征提取失败
NET_DVR_FPL_DT_CONF_TOO_LOW | 333 | 特征点定位时人脸检测置信度过低
NET_DVR_FPL_CONF_TOO_LOW | 334 | 特征点定位置信度过低
NET_DVR_E_DATA_SIZE | 335 | 数据长度不匹配
NET_DVR_FR_MODEL_VERSION_ERR | 336 | 人脸模型数据中的模型版本错误
NET_DVR_FR_FD_FAIL | 337 | 识别库中人脸检测失败
NET_DVR_FA_NORMALIZE_ERR | 338 | 人脸归一化出错
NET_DVR_DOG_PUSTREAM_NOT_MATCH | 339 | 加密狗与前端取流设备类型不匹配
NET_DVR_DEV_PUSTREAM_NOT_MATCH | 340 | 前端取流设备版本不匹配
NET_DVR_PUSTREAM_ALREADY_EXISTS | 341 | 设备的其他通道已经添加过该前端设备
NET_DVR_SEARCH_CONNECT_FAILED | 342 | 连接检索服务器失败
NET_DVR_INSUFFICIENT_DISK_SPACE | 343 | 可存储的硬盘空间不足
NET_DVR_DATABASE_CONNECTION_FAILED | 344 | 数据库连接失败
NET_DVR_DATABASE_ADM_PW_ERROR | 345 | 数据库用户名、密码错误
NET_DVR_DECODE_YUV | 346 | 解码失败
NET_DVR_IMAGE_RESOLUTION_ERROR | 347 | 图片分辨率不合理
NET_DVR_CHAN_WORKMODE_ERROR | 348 | 通道工作模式错误
RTSP通讯库错误码 | 400~446 | 详见：RTSP通讯库错误码
软解码库错误码 | 500~528 | 详见：软解码库错误码
转封装库错误码 | 581 | 详见：转封装库错误码
语音对讲库错误码 | 600~619 | 详见：语音对讲库错误码
Qos流控库错误码 | 678~700 | 详见：Qos流控库错误码
其他错误码 |  |
NET_ERROR_SCENE_USING | 717 | 场景正在使用。
NET_ERR_TERMINAL_BUSY | 780 | 终端忙，终端处于会议中。
NET_DVR_FUNCTION_RESOURCE_USAGE_ERROR | 791 | 设备其它功能占用资源，导致该功能无法开启。
NET_DVR_DEV_NET_OVERFLOW | 800 | 网络流量超过设备能力上限
NET_DVR_STATUS_RECORDFILE_WRITING_NOT_LOCK | 801 | 录像文件在录像，无法被锁定
NET_DVR_STATUS_CANT_FORMAT_LITTLE_DISK | 802 | 由于硬盘太小无法格式化
N+1功能错误码 |  |
NET_SDK_ERR_REMOTE_DISCONNEC | 803 | 远端无法连接
NET_SDK_ERR_RD_ADD_RD | 804 | 备机不能添加备机
NET_SDK_ERR_BACKUP_DISK_EXCEPT | 805 | 备份盘异常
NET_SDK_ERR_RD_LIMIT | 806 | 备机数已达上限
NET_SDK_ERR_ADDED_RD_IS_WD | 807 | 添加的备机是工作机
NET_SDK_ERR_ADD_ORDER_WRONG | 808 | 添加顺序出错，比如没有被工作机添加为备机，就添加工作机
NET_SDK_ERR_WD_ADD_WD | 809 | 工作机不能添加工作机
NET_SDK_ERR_WD_SERVICE_EXCETP | 810 | CVR服务异常(N+1模式下表示CVR工作机服务异常)
NET_SDK_ERR_RD_SERVICE_EXCETP | 811 | 备机CVR服务异常
NET_SDK_ERR_ADDED_WD_IS_RD | 812 | 添加的工作机是备机
NET_SDK_ERR_PERFORMANCE_LIMIT | 813 | 性能达到上限
NET_SDK_ERR_ADDED_DEVICE_EXIST | 814 | 添加的设备已经存在
审讯机错误码 |  |
NET_SDK_ERR_INQUEST_RESUMING | 815 | 审讯恢复中。
NET_SDK_ERR_RECORD_BACKUPING | 816 | 审讯备份中。
NET_SDK_ERR_DISK_PLAYING | 817 | 光盘回放中。
NET_SDK_ERR_INQUEST_STARTED | 818 | 审讯已开启。
NET_SDK_ERR_LOCAL_OPERATING | 819 | 本地操作进行中。
NET_SDK_ERR_INQUEST_NOT_START | 820 | 审讯未开启。
其他错误码 |  |
NET_SDK_ERR_CHAN_AUDIO_BIND | 821 | 通道未绑定或绑定语音对讲失败。
NET_DVR_N_PLUS_ONE_MODE | 822 | 设备当前处于N+1模式，不支持设置云存储。
NET_DVR_CLOUD_STORAGE_OPENED | 823 | 云存储模式已开启
NET_DVR_ERR_OPER_NOT_ALLOWED | 824 | 设备处于N+0被接管状态，不允许该操作。
NET_DVR_ERR_NEED_RELOCATE | 825 | 设备处于N+0被接管状态，需要获取重定向信息，再重新操作。
庭审主机错误码 |  |
NET_SDK_ERR_IR_PORT_ERROR | 830 | 红外输出口错误。
NET_SDK_ERR_IR_CMD_ERROR | 831 | 红外输出口的命令号错误。
NET_SDK_ERR_NOT_INQUESTING | 832 | 设备处于非审讯状态。
NET_SDK_ERR_INQUEST_NOT_PAUSED | 833 | 设备处于非暂停状态。
其他错误码 |  |
NET_DVR_CHECK_PASSWORD_MISTAKE_ERROR | 834 | 校验密码错误。
NET_DVR_CHECK_PASSWORD_NULL_ERROR | 835 | 校验密码不能为空。
NET_DVR_UNABLE_CALIB_ERROR | 836 | 当前无法标定。
NET_DVR_PLEASE_CALIB_ERROR | 837 | 请先完成标定。
NET_DVR_ERR_PANORAMIC_CAL_EMPTY | 838 | Flash中全景标定为空。
NET_DVR_ERR_CALIB_FAIL_PLEASEAGAIN | 839 | 标定失败，请重新标定。
NET_DVR_ERR_DETECTION_LINE | 840 | 规则线配置错误，请重新配置规则线，确保规则线位于红色区域内。
NET_DVR_EXCEED_FACE_IMAGES_ERROR | 843 | 超过人脸图片最大张数。
NET_DVR_ANALYSIS_FACE_IMAGES_ERROR | 844 | 图片数据识别失败。
NET_ERR_ALARM_INPUT_OCCUPIED | 845 | A<-1报警号已用于触发车辆抓拍。
NET_DVR_FACELIB_DATABASE_ERROR | 846 | 人脸库中数据库版本不匹配。
NET_DVR_FACELIB_DATA_ERROR | 847 | 人脸库数据错误。
NET_DVR_FACE_DATA_ID_ERROR | 848 | 人脸数据PID无效。
NET_DVR_FACELIB_ID_ERROR | 849 | 人脸库ID无效。
NET_DVR_EXCEED_FACE_LIBARY_ERROR | 850 | 超过人脸库最大个数。
NET_DVR_PIC_ANALYSIS_NO_TARGET_ERROR | 851 | 图片未识别到目标。
NET_DVR_SUBPIC_ANALYSIS_MODELING_ERROR | 852 | 子图建模失败。
NET_DVR_PIC_ANALYSIS_NO_RESOURCE_ERROR | 853 | 无对应智能分析引擎支持图片二次识别。
NET_DVR_ANALYSIS_ENGINES_NO_RESOURCE_ERROR | 854 | 无分析引擎资源。
NET_DVR_ANALYSIS_ENGINES_USAGE_EXCEED_ERROR | 855 | 引擎使用率超负荷，已达100%。
NET_DVR_EXCEED_HUMANMISINFO_FILTER_ENABLED_ERROR | 856 | 超过开启人体去误报最大通道个数。
NET_DVR_NAME_ERROR | 857 | 名称错误。
NET_DVR_NAME_EXIST_ERROR | 858 | 名称已存在。
NET_DVR_FACELIB_PIC_IMPORTING_ERROR | 859 | 人脸库导入图片中。
NET_DVR_PIC_FORMAT_ERROR | 864 | 图片格式错误。
NET_DVR_PIC_RESOLUTION_INVALID_ERROR | 865 | 图片分辨率无效错误。
NET_DVR_PIC_SIZE_EXCEED_ERROR | 866 | 图片过大。
NET_DVR_PIC_ANALYSIS_TARGRT_NUM_EXCEED_ERROR | 867 | 图片目标个数超过上限。
NET_DVR_ANALYSIS_ENGINES_LOADING_ERROR | 868 | 分析引擎初始化中。
NET_DVR_ANALYSIS_ENGINES_ABNORMA_ERROR | 869 | 分析引擎异常。
NET_DVR_ANALYSIS_ENGINES_FACELIB_IMPORTING | 870 | 分析引擎正在导入人脸库。
NET_DVR_NO_DATA_FOR_MODELING_ERROR | 871 | 无待建模数据。
NET_DVR_FACE_DATA_MODELING_ERROR | 872 | 设备正在进行图片建模操作，不支持并发处理。
NET_ERR_FACELIBDATA_OVERLIMIT | 873 | 超过设备中支持导入人脸数最大个数限制（导入的人脸库中数据）。
NET_DVR_ANALYSIS_ENGINES_ASSOCIATED_CHANNEL | 874 | 分析引擎已关联通道。
NET_DVR_ERR_CUSTOMID_LEN | 875 | 上层自定义ID的长度最小32字符长度。
NET_DVR_ERR_CUSTOMFACELIBID_REPEAT | 876 | 上层下发重复的自定义人脸库ID。
NET_DVR_ERR_CUSTOMHUMANID_REPEAT | 877 | 上层下发重复的自定义人员ID。
NET_DVR_ERR_URL_DOWNLOAD_FAIL | 878 | url下载失败。
NET_DVR_ERR_URL_DOWNLOAD_NOTSTART | 879 | url未开始下载。
NET_DVR_CFG_FILE_SECRETKEY_ERROR | 880 | 配置文件安全校验密钥错误。
NET_DVR_THERMOMETRY_REGION_OVERSTEP_ERROR | 883 | 测温区域越界。
NET_DVR_NO_TEMP_SENSOR_ERROR | 897 | 无温度传感器。
NET_DVR_PUPIL_DISTANCE_OVERSIZE_ERROR | 898 | 瞳距过大。
多屏控制器错误码 |  |
NET_ERR_WINCHAN_IDX | 901 | 开窗通道号错误。
NET_ERR_WIN_LAYER | 902 | 窗口层数错误，单个屏幕上最多覆盖的窗口层数。
NET_ERR_WIN_BLK_NUM | 903 | 窗口的块数错误，单个窗口可覆盖的屏幕个数。
NET_ERR_OUTPUT_RESOLUTION | 904 | 输出分辨率错误。
NET_ERR_LAYOUT | 905 | 场景号错误。
NET_ERR_INPUT_RESOLUTION | 906 | 输入分辨率不支持。
NET_ERR_SUBDEVICE_OFFLINE | 907 | 子设备不在线。
NET_ERR_NO_DECODE_CHAN | 908 | 没有空闲解码通道。
NET_ERR_MAX_WINDOW_ABILITY | 909 | 开窗能力上限，解码子设备能力上限或者显示处理器能力上限导致。
NET_ERR_ORDER_ERROR | 910 | 调用顺序有误。
NET_ERR_PLAYING_PLAN | 911 | 正在执行预案。
NET_ERR_DECODER_USED | 912 | 解码板正在使用。
NET_ERR_OUTPUT_BOARD_DATA_OVERFLOW | 913 | 输出板数据量超限。
NET_ERR_SAME_USER_NAME | 914 | 用户名相同。
NET_ERR_INVALID_USER_NAME | 915 | 无效用户名。
NET_ERR_MATRIX_USING | 916 | 输入矩阵正在使用。
NET_ERR_DIFFERENT_CHAN_TYPE | 917 | 通道类型不同（矩阵输出通道和控制器的输入为不同的类型）。
NET_ERR_INPUT_CHAN_BINDED | 918 | 输入通道已经被其他矩阵绑定。
NET_ERR_BINDED_OUTPUT_CHAN_OVERFLOW | 919 | 正在使用的矩阵输出通道个数超过矩阵与控制器绑定的通道个数。
NET_ERR_MAX_SIGNAL_NUM | 920 | 输入信号源个数达到上限。
NET_ERR_INPUT_CHAN_USING | 921 | 输入通道正在使用。
NET_ERR_MANAGER_LOGON | 922 | 管理员已经登陆，操作失败。
NET_ERR_USERALREADY_LOGON | 923 | 该用户已经登陆，操作失败。
NET_ERR_LAYOUT_INIT | 924 | 场景正在初始化，操作失败。
NET_ERR_BASEMAP_SIZE_NOT_MATCH | 925 | 底图大小不符。
NET_ERR_WINDOW_OPERATING | 926 | 窗口正在执行其他操作，本次操作失败。
NET_ERR_SIGNAL_UPLIMIT | 927 | 信号源开窗个数达到上限。
解码器错误码 |  |
NET_ERR_WINDOW_SIZE_OVERLIMIT | 943 | 窗口大小超限
NET_ERR_MAX_WIN_OVERLAP | 951 | 达到最大窗口重叠数
NET_ERR_STREAMID_CHAN_BOTH_VALID | 952 | stream ID和通道号同时有效
NET_ERR_NO_ZERO_CHAN | 953 | 设备无零通道
NEED_RECONNECT | 955 | 需要重定向（转码子系统使用）
NET_ERR_NO_STREAM_ID | 956 | 流ID不存在
NET_DVR_TRANS_NOT_START | 957 | 转码未启动
NET_ERR_MAXNUM_STREAM_ID | 958 | 流ID数达到上限
NET_ERR_WORKMODE_MISMATCH | 959 | 工作模式不匹配
NET_ERR_MODE_IS_USING | 960 | 已工作在当前模式
NET_ERR_DEV_PROGRESSING | 961 | 设备正在处理中
NET_ERR_PASSIVE_TRANSCODING | 962 | 正在被动转码
NET_DVR_ERR_WINDOW_SIZE_PLACE | 975 | 窗口位置错误
NET_DVR_ERR_RGIONAL_RESTRICTIONS | 976 | 屏幕距离超限
NET_DVR_ERR_CLOSE_WINDOWS | 984 | 操作失败，请先关闭窗口
NET_DVR_ERR_MATRIX_LOOP_ABILITY | 985 | 超出轮巡解码能力限制
NET_DVR_ERR_MATRIX_LOOP_TIME | 986 | 轮巡解码时间不支持
NET_DVR_ERR_LINKED_OUT_ABILITY | 987 | 联动通道数超过上限
热成像错误码 |  |
NET_ERR_UnitConfig_Failed | 998 | 单位配置失败
能力集错误码 |  |
XML_ABILITY_NOTSUPPORT | 1000 | 不支持能力节点获取。
XML_ANALYZE_NOENOUGH_BUF | 1001 | 输出内存不足。
XML_ANALYZE_FIND_LOCALXML_ERROR | 1002 | 无法找到对应的本地xml。
XML_ANALYZE_LOAD_LOCALXML_ERROR | 1003 | 加载本地xml出错。
XML_NANLYZE_DVR_DATA_FORMAT_ERROR | 1004 | 设备能力数据格式错误。
XML_ANALYZE_TYPE_ERROR | 1005 | 能力集类型错误。
XML_ANALYZE_XML_NODE_ERROR | 1006 | XML能力节点格式错误。
XML_INPUT_PARAM_ERROR | 1007 | 输入的能力XML节点值错误。
XML_VERSION_MISMATCH | 1008 | XML版本不匹配。
其他错误码 |  |
NET_ERR_TRANS_CHAN_START | 1101 | 透明通道已打开，当前操作无法完成。
NET_ERR_DEV_UPGRADING | 1102 | 设备正在升级
NET_ERR_MISMATCH_UPGRADE_PACK_TYPE | 1103 | 升级包类型不匹配
NET_ERR_DEV_FORMATTING | 1104 | 设备正在格式化
NET_ERR_MISMATCH_UPGRADE_PACK_VERSION | 1105 | 升级包版本不匹配
NET_ERR_PT_LOCKED | 1106 | PT已被锁定
NET_DVR_ERR_ILLEGAL_VERIFICATION_CODE | 1111 | 验证码不合法，请修改验证码
NET_DVR_ERR_LACK_VERIFICATION_CODE | 1112 | 缺少验证码，请输入验证码
NET_DVR_ERR_FORBIDDEN_IP | 1113 | 该IP地址已被禁止，不允许配置(设备支持的IP地址过滤功能)
报警设备错误码 |  |
NET_ERR_SEARCHING_MODULE | 1201 | 正在搜索外接模块。
NET_ERR_REGISTERING_MODULE | 1202 | 正在注册外接模块。
NET_ERR_GETTING_ZONES | 1203 | 正在获取防区参数。
NET_ERR_GETTING_TRIGGERS | 1204 | 正在获取触发器。
NET_ERR_ARMED_STATUS | 1205 | 系统处于布防状态。
NET_ERR_PROGRAM_MODE_STATUS | 1206 | 系统处于编程模式。
NET_ERR_WALK_TEST_MODE_STATUS | 1207 | 系统处于步测模式。
NET_ERR_BYPASS_STATUS | 1208 | 旁路状态。
NET_ERR_DISABLED_MODULE_STATUS | 1209 | 功能未使能。
NET_ERR_NOT_SUPPORT_OPERATE_ZONE | 1210 | 防区不支持该操作。
NET_ERR_NOT_SUPPORT_MOD_MODULE_ADDR | 1211 | 模块地址不能被修改。
NET_ERR_UNREGISTERED_MODULE | 1212 | 模块未注册。
NET_ERR_PUBLIC_SUBSYSTEM_ASSOCIATE_SELF | 1213 | 公共子系统关联自身。
NET_ERR_EXCEEDS_ASSOCIATE_SUBSYSTEM_NUM | 1214 | 超过公共子系统最大关联个数。
NET_ERR_BE_ASSOCIATED_BY_PUBLIC_SUBSYSTEM | 1215 | 子系统被其他公共子系统关联。
NET_ERR_ZONE_FAULT_STATUS | 1216 | 防区处于故障状态。
NET_ERR_SAME_EVENT_TYPE | 1217 | 事件触发报警输出开启和事件触发报警输出关闭中有相同事件类型。
NET_ERR_ZONE_ALARM_STATUS | 1218 | 防区处于报警状态。
NET_ERR_EXPANSION_BUS_SHORT_CIRCUIT | 1219 | 扩展总线短路。
NET_ERR_PWD_CONFLICT | 1220 | 密码冲突，比如开锁密码和防劫持密码相同。
NET_ERR_DETECTOR_GISTERED_BY_OTHER_ZONE | 1221 | 探测器已被其他防区注册。
NET_ERR_DETECTOR_GISTERED_BY_OTHER_PU | 1222 | 探测器已被其他主机注册。
NET_ERR_DETECTOR_DISCONNECT | 1223 | 探测器不在线。
NET_ERR_CALL_BUSY | 1224 | 设备正在通话中。
NET_DVR_ERR_ZONE_TAMPER_STAUS | 1225 | 防区处于防拆状态。
NET_DVR_ERR_WIRELESS_DEV_REGISTER | 1226 | 无线外设已被其他主机注册。
NET_DVR_ERR_WIRELESS_DEV_ADDED | 1227 | 无线外设已被添加。
NET_DVR_ERR_WIRELESS_DEV_OFFLINE | 1228 | 无线外设不在线。
NET_DVR_ERR_WIRELESS_DEV_TAMPER_STATUS | 1229 | 无线外设处于防拆状态。
NET_ERR_FILE_NAME | 1357 | 文件名称错误，为空或不合法。
NET_ERR_BROADCAST_BUSY | 1358 | 设备正在广播中。
抓拍机错误码 |  |
NET_DVR_ERR_LANENUM_EXCEED | 1400 | 车道数超出能力。
NET_DVR_ERR_PRAREA_EXCEED | 1401 | 牌识区域过大。
NET_DVR_ERR_LIGHT_PARAM | 1402 | 信号灯接入参数错误。
NET_DVR_ERR_LANE_LINE_INVALID | 1403 | 车道线配置错误。
NET_DVR_ERR_STOP_LINE_INVALID | 1404 | 停止线配置错误。
NET_DVR_ERR_LEFTORRIGHT_LINE_INVALID | 1405 | 左/右转分界线配置错误。
NET_DVR_ERR_LANE_NO_REPEAT | 1406 | 叠加车道号重复。
NET_DVR_ERR_PRAREA_INVALID | 1407 | 牌识多边形不符合要求。
NET_DVR_ERR_LIGHT_NUM_EXCEED | 1408 | 视频检测交通灯信号灯数目超出最大值。
NET_DVR_ERR_SUBLIGHT_NUM_INVALID | 1409 | 视频检测交通灯信号灯子灯数目不合法
NET_DVR_ERR_LIGHT_AREASIZE_INVALID | 1410 | 视频检测交通灯输入信号灯框大小不合法。
NET_DVR_ERR_LIGHT_COLOR_INVALID | 1411 | 视频检测交通灯输入信号灯颜色不合法。
NET_DVR_ERR_LIGHT_DIRECTION_INVALID | 1412 | 视频检测交通灯输入灯方向属性不合法。
NET_DVR_ERR_LACK_IOABLITY | 1413 | IO口实际支持的能力不足。
NET_DVR_ERR_FTP_PORT | 1414 | FTP端口号非法（端口号重复或者异常）
NET_DVR_ERR_FTP_CATALOGUE | 1415 | FTP目录名非法（启用多级目录，多级目录传值为空）
NET_DVR_ERR_FTP_UPLOAD_TYPE | 1416 | FTP上传类型非法（单ftp只支持全部/双ftp只支持卡口和违章）
NET_DVR_ERR_FLASH_PARAM_WRITE | 1417 | 配置参数时写FLASH失败
NET_DVR_ERR_FLASH_PARAM_READ | 1418 | 配置参数时读FLASH失败
NET_DVR_ERR_PICNAME_DELIMITER | 1419 | FTP图片命名分隔符非法
NET_DVR_ERR_PICNAME_ITEM | 1420 | FTP图片命名项非法（例如 分隔符）
NET_DVR_ERR_PLATE_RECOGNIZE_TYPE | 1421 | 牌识区域类型非法（矩形和多边形有效性校验）
NET_DVR_ERR_CAPTURE_TIMES | 1422 | 抓拍次数非法（有效值是0～5）
NET_DVR_ERR_LOOP_DISTANCE | 1423 | 线圈距离非法（有效值是0～2000ms）
NET_DVR_ERR_LOOP_INPUT_STATUS | 1424 | 线圈输入状态非法 （有效值）
NET_DVR_ERR_RELATE_IO_CONFLICT | 1425 | 测速组IO关联冲突
NET_DVR_ERR_INTERVAL_TIME | 1426 | 连拍间隔时间非法（0～6000ms）
NET_DVR_ERR_SIGN_SPEED | 1427 | 标志限速值非法（大车标志限速不能大于小车标志限速）
NET_DVR_ERR_PIC_FLIP | 1428 | 图像配置翻转（配置交互影响）
NET_DVR_ERR_RELATE_LANE_NUMBER | 1429 | 关联车道数错误(重复 有效值校验1～99)
NET_DVR_ERR_TRIGGER_MODE | 1430 | 配置抓拍机触发模式非法
NET_DVR_ERR_DELAY_TIME | 1431 | 触发延时时间错误(2000ms)
NET_DVR_ERR_EXCEED_RS485_COUNT | 1432 | 超过最大485个数限制
NET_DVR_ERR_RADAR_TYPE | 1433 | 雷达类型错误
NET_DVR_ERR_RADAR_ANGLE | 1434 | 雷达角度错误
NET_DVR_ERR_RADAR_SPEED_VALID_TIME | 1435 | 雷达有效时间错误
NET_DVR_ERR_RADAR_LINE_CORRECT | 1436 | 雷达线性矫正参数错误
NET_DVR_ERR_RADAR_CONST_CORRECT | 1437 | 雷达常量矫正参数错误
NET_DVR_ERR_RECORD_PARAM | 1438 | 录像参数无效（预录时间不超过10s）
NET_DVR_ERR_LIGHT_WITHOUT_COLOR_AND_DIRECTION | 1439 | 视频检测信号灯配置信号灯个数，但是没有勾选信号灯方向和颜色的
NET_DVR_ERR_LIGHT_WITHOUT_DETECTION_REGION | 1440 | 视频检测信号灯配置信号灯个数，但是没有画检测区域
NET_DVR_ERR_RECOGNIZE_PROVINCE_PARAM | 1441 | 牌识参数省份参数的合法性
NET_DVR_ERR_SPEED_TIMEOUT | 1442 | IO测速超时时间非法（有效值大于0）
NET_DVR_ERR_NTP_TIMEZONE | 1443 | ntp时区参数错误
NET_DVR_ERR_NTP_INTERVAL_TIME | 1444 | ntp校时间隔错误
NET_DVR_ERR_NETWORK_CARD_NUM | 1445 | 可配置网卡数目错误
NET_DVR_ERR_DEFAULT_ROUTE | 1446 | 默认路由错误
NET_DVR_ERR_BONDING_WORK_MODE | 1447 | bonding网卡工作模式错误
NET_DVR_ERR_SLAVE_CARD | 1448 | slave网卡错误
NET_DVR_ERR_PRIMARY_CARD | 1449 | Primary网卡错误
NET_DVR_ERR_DHCP_PPOE_WORK | 1450 | dhcp和pppoE不能同时启动
NET_DVR_ERR_NET_INTERFACE | 1451 | 网络接口错误
NET_DVR_ERR_MTU | 1452 | MTU错误
NET_DVR_ERR_NETMASK | 1453 | 子网掩码错误
NET_DVR_ERR_IP_INVALID | 1454 | IP地址不合法
NET_DVR_ERR_MULTICAST_IP_INVALID | 1455 | 多播地址不合法
NET_DVR_ERR_GATEWAY_INVALID | 1456 | 网关不合法
NET_DVR_ERR_DNS_INVALID | 1457 | DNS不合法
NET_DVR_ERR_ALARMHOST_IP_INVALID | 1458 | 告警主机地址不合法
NET_DVR_ERR_IP_CONFLICT | 1459 | IP冲突
NET_DVR_ERR_NETWORK_SEGMENT | 1460 | IP不支持同网段
NET_DVR_ERR_NETPORT | 1461 | 端口错误
NET_DVR_ERR_PPPOE_NOSUPPORT | 1462 | PPPOE不支持
NET_DVR_ERR_DOMAINNAME_NOSUPPORT | 1463 | 域名不支持
NET_DVR_ERR_NO_SPEED | 1464 | 未启用测速功能
NET_DVR_ERR_IOSTATUS_INVALID | 1465 | IO状态错误
NET_DVR_ERR_BURST_INTERVAL_INVALID | 1466 | 连拍间隔非法
NET_DVR_ERR_RESERVE_MODE | 1467 | 备用模式错误
NET_DVR_ERR_LANE_NO | 1468 | 叠加车道号错误
NET_DVR_ERR_COIL_AREA_TYPE | 1469 | 线圈区域类型错误
NET_DVR_ERR_TRIGGER_AREA_PARAM | 1470 | 触发区域参数错误
NET_DVR_ERR_SPEED_LIMIT_PARAM | 1471 | 违章限速参数错误
NET_DVR_ERR_LANE_PROTOCOL_TYPE | 1472 | 车道关联协议类型错误
NET_DVR_ERR_INTERVAL_TYPE | 1473 | 连拍间隔类型非法
NET_DVR_ERR_INTERVAL_DISTANCE | 1474 | 连拍间隔距离非法
NET_DVR_ERR_RS485_ASSOCIATE_DEVTYPE | 1475 | RS485关联类型非法
NET_DVR_ERR_RS485_ASSOCIATE_LANENO | 1476 | RS485关联车道号非法
NET_DVR_ERR_LANENO_ASSOCIATE_MULTIRS485 | 1477 | 车道号关联多个RS485口
NET_DVR_ERR_LIGHT_DETECTION_REGION | 1478 | 视频检测信号灯配置信号灯个数，但是检测区域宽或高为0
NET_DVR_ERR_DN2D_NOSUPPORT | 1479 | 不支持抓拍帧2D降噪
NET_DVR_ERR_IRISMODE_NOSUPPORT | 1480 | 不支持的镜头类型
NET_DVR_ERR_WB_NOSUPPORT | 1481 | 不支持的白平衡模式
NET_DVR_ERR_IO_EFFECTIVENESS | 1482 | IO口的有效性
NET_DVR_ERR_LIGHTNO_MAX | 1483 | 信号灯检测器接入红/黄灯超限(16)
NET_DVR_ERR_LIGHTNO_CONFLICT | 1484 | 信号灯检测器接入红/黄灯冲突
NET_DVR_ERR_CANCEL_LINE | 1485 | 直行触发线
NET_DVR_ERR_STOP_LINE | 1486 | 待行区停止线
NET_DVR_ERR_RUSH_REDLIGHT_LINE | 1487 | 闯红灯触发线
NET_DVR_ERR_IOOUTNO_MAX | 1488 | IO输出口编号越界
NET_DVR_ERR_IOOUTNO_AHEADTIME_MAX | 1489 | IO输出口提前时间超限
NET_DVR_ERR_IOOUTNO_IOWORKTIME | 1490 | IO输出口有效持续时间超限
NET_DVR_ERR_IOOUTNO_FREQMULTI | 1491 | IO输出口脉冲模式下倍频出错
NET_DVR_ERR_IOOUTNO_DUTYRATE | 1492 | IO输出口脉冲模式下占空比出错
NET_DVR_ERR_VIDEO_WITH_EXPOSURE | 1493 | 以曝闪起效，工作方式不支持视频
NET_DVR_ERR_PLATE_BRIGHTNESS_WITHOUT_FLASHDET | 1494 | 车牌亮度自动使能闪光灯仅在车牌亮度补偿模式下起效
NET_DVR_ERR_RECOGNIZE_TYPE_PARAM | 1495 | 识别类型非法 车牌识别参数（如大车、小车、背向、正向、车标识别等）
NET_DVR_ERR_PALTE_RECOGNIZE_AREA_PARAM | 1496 | 牌识参数非法 牌识区域配置时判断出错
NET_DVR_ERR_PORT_CONFLICT | 1497 | 端口有冲突
NET_DVR_ERR_LOOP_IP | 1498 | IP不能设置为回环地址
NET_DVR_ERR_DRIVELINE_SENSITIVE | 1499 | 压线灵敏度出错(视频电警模式下)
VQD错误码 |  |
NET_ERR_VQD_TIME_CONFLICT | 1500 | VQD诊断时间段冲突。
NET_ERR_VQD_PLAN_NO_EXIST | 1501 | VQD诊断计划不存在。
NET_ERR_VQD_CHAN_NO_EXIST | 1502 | VQD监控点不存在。
NET_ERR_VQD_CHAN_MAX | 1503 | VQD计划数已达上限。
NET_ERR_VQD_TASK_MAX | 1504 | VQD任务数已达上限。
抓拍机错误码新增 |  |
NET_DVR_ERR_EXCEED_MAX_CAPTURE_TIMES | 1600 | 抓拍模式为频闪时最大抓拍张数为2张(IVT模式下)
NET_DVR_ERR_REDAR_TYPE_CONFLICT | 1601 | 相同485口关联雷达类型冲突
NET_DVR_ERR_LICENSE_PLATE_NULL | 1602 | 车牌号为空
NET_DVR_ERR_WRITE_DATABASE | 1603 | 写入数据库失败
NET_DVR_ERR_LICENSE_EFFECTIVE_TIME | 1604 | 车牌有效时间错误
NET_DVR_ERR_PRERECORDED_STARTTIME_LONG | 1605 | 预录开始时间大于违法抓拍张数
NET_DVR_ERR_TRIGGER_RULE_LINE | 1606 | 触发规则线错误
NET_DVR_ERR_LEFTRIGHT_TRIGGERLINE_NOTVERTICAL | 1607 | 左/右触发线不垂直
NET_DVR_ERR_FLASH_LAMP_MODE | 1608 | 闪光灯闪烁模式错误
NET_DVR_ERR_ILLEGAL_SNAPSHOT_NUM | 1609 | 违章抓拍张数错误
NET_DVR_ERR_ILLEGAL_DETECTION_TYPE | 1610 | 违章检测类型错误
NET_DVR_ERR_POSITIVEBACK_TRIGGERLINE_HIGH | 1611 | 正背向触发线高度错误
NET_DVR_ERR_MIXEDMODE_CAPTYPE_ALLTARGETS | 1612 | 混合模式下只支持机非人抓拍类型
NET_DVR_ERR_CARSIGNSPEED_GREATERTHAN_LIMITSPEED | 1613 | 小车标志限速大于限速值
NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_LIMITSPEED | 1614 | 大车标志限速大于限速值
NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_CARSIGNSPEED | 1615 | 大车标志限速大于小车标志限速值
NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_CARLIMITSPEED | 1616 | 大车限速值大于小车限速值
NET_DVR_ERR_BIGCARLOWSPEEDLIMIT_GREATERTHAN_CARLOWSPEEDLIMIT | 1617 | 大车低速限速值大于小车低速限速值
NET_DVR_ERR_CARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED | 1618 | 小车限速大于异常高速值
NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED | 1619 | 大车限速大于异常高速值
NET_DVR_ERR_STOPLINE_MORETHAN_TRIGGERLINE | 1620 | 停止线超过直行触发线
门禁主机错误码 |  |
NET_ERR_TIME_OVERLAP | 1900 | 时间段重叠
NET_ERR_HOLIDAY_PLAN_OVERLAP | 1901 | 假日计划重叠
NET_ERR_CARDNO_NOT_SORT | 1902 | 卡号未排序
NET_ERR_CARDNO_NOT_EXIST | 1903 | 卡号不存在
NET_ERR_ILLEGAL_CARDNO | 1904 | 卡号错误
NET_ERR_ZONE_ALARM | 1905 | 防区处于布防状态(参数修改不允许)
NET_ERR_ZONE_OPERATION_NOT_SUPPORT | 1906 | 防区不支持该操作
NET_ERR_INTERLOCK_ANTI_CONFLICT | 1907 | 多门互锁和反潜回同时配置错误
NET_ERR_DEVICE_CARD_FULL | 1908 | 卡已满（卡达到10W后返回）
NET_ERR_HOLIDAY_GROUP_DOWNLOAD | 1909 | 假日组下载失败
NET_ERR_LOCAL_CONTROL_OFF | 1910 | 就地控制器离线
NET_ERR_LOCAL_CONTROL_DISADD | 1911 | 就地控制器未添加
NET_ERR_LOCAL_CONTROL_HASADD | 1912 | 就地控制器已添加
NET_ERR_LOCAL_CONTROL_DOORNO_CONFLICT | 1913 | 与已添加的就地控制器门编号冲突
NET_ERR_LOCAL_CONTROL_COMMUNICATION_FAIL | 1914 | 就地控制器通信失败
NET_ERR_OPERAND_INEXISTENCE | 1915 | 操作对象不存在（对门、报警输出、报警输入相关操作，当对象未添加时返回）
NET_ERR_LOCAL_CONTROL_OVER_LIMIT | 1916 | 就地控制器超出设备最大能力（主控对就地数量有限制）
NET_ERR_DOOR_OVER_LIMIT | 1917 | 门超出设备最大能力
NET_ERR_ALARM_OVER_LIMIT | 1918 | 报警输入输出超出设备最大能力
NET_ERR_LOCAL_CONTROL_ADDRESS_INCONFORMITY_TYPE | 1919 | 就地控制器地址与类型不符
NET_ERR_NOT_SUPPORT_ONE_MORE_CARD | 1920 | 不支持一人多卡
NET_ERR_DELETE_NO_EXISTENCE_FACE | 1921 | 删除的人脸不存在
NET_ERR_DOOR_SPECIAL_PASSWORD_REPEAT | 1922 | 与设备门特殊密码重复
NET_ERR_AUTH_CODE_REPEAT | 1923 | 与设备认证码重复
NET_ERR_DEPLOY_EXCEED_MAX | 1924 | 布防超过最大连接数
NET_ERR_NOT_SUPPORT_DEL_FP_BY_ID | 1925 | 读卡器不支持按手指ID删除指纹
NET_ERR_TIME_RANGE | 1926 | 有效期参数配置范围有误
NET_ERR_CAPTURE_TIMEOUT | 1927 | 采集超时
NET_ERR_LOW_SCORE | 1928 | 采集质量低
NET_ERR_OFFLINE_CAPTURING | 1929 | 离线采集中，无法响应
可视对讲错误码 |  |
NET_DVR_ERR_OUTDOOR_COMMUNICATION | 1950 | 与门口机通信异常
NET_DVR_ERR_ROOMNO_UNDEFINED | 1951 | 未设置房间号
NET_DVR_ERR_NO_CALLING | 1952 | 无呼叫
NET_DVR_ERR_RINGING | 1953 | 响铃
NET_DVR_ERR_IS_CALLING_NOW | 1954 | 正在通话
NET_DVR_ERR_LOCK_PASSWORD_WRONG | 1955 | 智能锁密码错误
NET_DVR_ERR_CONTROL_LOCK_FAILURE | 1956 | 开关锁失败
NET_DVR_ERR_CONTROL_LOCK_OVERTIME | 1957 | 开关锁超时
NET_DVR_ERR_LOCK_DEVICE_BUSY | 1958 | 智能锁设备繁忙
NET_DVR_ERR_UNOPEN_REMOTE_LOCK_FUNCTION | 1959 | 远程开锁功能未打开
其他错误码 |  |
NET_DVR_ERR_FILE_NOT_COMPLETE | 2100 | 下载的文件不完整
NET_DVR_ERR_IPC_EXIST | 2101 | 该IPC已经存在
NET_DVR_ERR_ADD_IPC | 2102 | 该通道已添加IPC
NET_DVR_ERR_OUT_OF_RES | 2103 | 网络带宽能力不足
NET_DVR_ERR_CONFLICT_TO_LOCALIP | 2104 | IPC的ip地址跟DVR的IP地址冲突
NET_DVR_ERR_IP_SET | 2105 | 非法IP地址
NET_DVR_ERR_PORT_SET | 2106 | 非法的端口号
NET_ERR_WAN_NOTSUPPORT | 2107 | 不在同一个局域网，无法设置安全问题或导出GUID文件
NET_ERR_MUTEX_FUNCTION | 2108 | 功能互斥
NET_ERR_QUESTION_CONFIGNUM | 2109 | 安全问题配置数量错误
NET_ERR_FACECHAN_NORESOURCE | 2110 | 人脸智能通道资源已用完
NET_ERR_DATA_CALLBACK | 2111 | 正在数据回迁
NET_DVR_SMD_ENCODING_NORESOURSE | 2116 | SMD编码资源不足
NET_DVR_SMD_DECODING_NORESOURSE | 2117 | SMD解码资源不足
NET_DVR_FACELIB_DATA_PROCESSING | 2118 | 人脸库数据正在处理
NET_DVR_ERR_LARGE_TIME_DIFFRENCE | 2119 | 设备和服务器之间的时间差异太大
NET_DVR_NO_SUPPORT_WITH_PLAYBACK | 2120 | 已开启回放，不支持本功能
NET_DVR_CHANNEL_NO_SUPPORT_WITH_SMD | 2121 | 通道已开启SMD，不支持本功能
NET_DVR_CHANNEL_NO_SUPPORT_WITH_FD | 2122 | 通道已开启人脸抓拍，不支持本功能
NET_DVR_ILLEGAL_PHONE_NUMBER | 2123 | 非法的电话号码
NET_DVR_ILLEGAL_CERITIFICATE_NUMBER | 2124 | 非法的证件号码
NET_DVR_ERR_CHANNEL_RESOLUTION_NO_SUPPORT | 2125 | 通道分辨率不支持
NET_DVR_ERR_CHANNEL_COMPRESSION_NO_SUPPORT | 2126 | 通道编码格式不支持
NET_DVR_ERR_CLUSTER_DEVICE_TOO_LESS | 2127 | 设备数少，不允许删除
NET_DVR_ERR_CLUSTER_DEL_DEVICE_CM_PLAYLOAD | 2128 | 该设备是集群主机，不允许删除
NET_DVR_ERR_CLUSTER_DEVNUM_OVER_UPPER_LIMIT | 2129 | 设备数达到上限，不允许增加
NET_DVR_ERR_CLUSTER_DEVICE_TYPE_INCONFORMITY | 2130 | 设备类型不一致
NET_DVR_ERR_CLUSTER_DEVICE_VERSION_INCONFORMITY | 2131 | 设备版本不一致
NET_DVR_ERR_CLUSTER_IP_CONFLICT | 2132 | 集群系统IP地址冲突：ipv4地址冲突、ipv6地址冲突
NET_DVR_ERR_CLUSTER_IP_INVALID | 2133 | 集群系统IP地址无效：ipv4非法、ipv6非法
NET_DVR_ERR_CLUSTER_PORT_CONFLICT | 2134 | 集群系统端口冲突
NET_DVR_ERR_CLUSTER_PORT_INVALID | 2135 | 集群系统端口非法
NET_DVR_ERR_CLUSTER_USERNAEM_OR_PASSWORD_INVALID | 2136 | 用户名或密码非法
NET_DVR_ERR_CLUSTER_DEVICE_ALREADY_EXIST | 2137 | 存在相同设备
NET_DVR_ERR_CLUSTER_DEVICE_NOT_EXIST | 2138 | 设备不存在(组网时下发的cs列表中的设备信息在任何一台cs上都找不到，删除的时候下发的id不对)
NET_DVR_ERR_CLUSTER_NON_CLUSTER_MODE | 2139 | 设备处于非集群模式
NET_DVR_ERR_CLUSTER_IP_NOT_SAME_LAN | 2140 | IP地址不在同一局域网，不同区域网不允许组网/扩容
NET_DVR_ERR_CAPTURE_PACKAGE_FAILED | 2141 | 抓包失败
NET_DVR_ERR_CAPTURE_PACKAGE_PROCESSING | 2142 | 正在抓包
NET_DVR_ERR_SAFETY_HELMET_NO_RESOURCE | 2143 | 安全帽检测资源不足
NET_DVR_NO_SUPPORT_WITH_ABSTRACT | 2144 | 已开启视频摘要，不支持本功能
NET_DVR_INSUFFICIENT_DEEP_LEARNING_RESOURCES | 2146 | 深度学习资源超限
NET_DVR_ERR_IDENTITY_KEY | 2147 | 交互口令错误
NET_DVR_MISSING_IDENTITY_KEY | 2148 | 交互口令缺失
NET_DVR_NO_SUPPORT_WITH_PERSON_DENSITY_DETECT | 2149 | 已开启人员密度检测，不支持本功能
NET_DVR_IPC_RESOLUTION_OVERFLOW | 2150 | IPC分辨率超限
NET_DVR_IPC_BITRATE_OVERFLOW | 2151 | IPC码率超限
NET_DVR_ERR_INVALID_TASKID | 2152 | 无效的taskID
NET_DVR_PANEL_MODE_NOT_CONFIG | 2153 | 没有配置面板路智能
NET_DVR_DETECT_REGION_RANGE_INVALID | 2181 | 检测区域范围非法
NET_DVR_CHANNEL_CAPTURE_PICTURE_FAILURE | 2182 | 通道抓图失败
NET_DVR_ERROR_NEED_DOUBLE_VERIFICATION | 2206 | 需要二次认证
NET_DVR_NO_DOUBLE_VERIFICATION_USER | 2207 | 无二次认证用户
NET_DVR_SSD_FILE_SYSTEM_ERROR | 2266 | SSD文件系统错误
NET_DVR_ERR_NOTSUPPORT_DEICING | 3001 | 设备当前状态不支持除冰功能（只在POE+、AC24V、DC12V供电下支持除冰功能）
NET_DVR_ERR_THERMENABLE_CLOSE | 3002 | 测温功能总使能未开启(即NET_DVR_THERMOMETRY_BASICPARAM使能未开启)
NET_DVR_ERR_PANORAMIC_LIMIT_OPERATED | 3004 | 全景地图和限位不可同时操作
NET_DVR_ERR_SMARTH264_ROI_OPERATED | 3005 | SmartH264和ROI不可同时操作
NET_DVR_ERR_RULENUM_LIMIT | 3006 | 规则数达到上限
NET_DVR_ERR_LASER_DEICING_OPERATED | 3007 | 激光以及除冰功能不可同时操作
NET_DVR_ERR_OFFDIGITALZOOM_OR_MINZOOMLIMIT | 3008 | 请先关闭数据变倍功能或变倍限制设置为最小值（当执行烟火检测、异常行为识别、船只检测、坏点矫正、测温、烟火屏蔽功能时，若没有关闭数据变倍或者变倍限制没有设置为最小值时，将会提示该错误码）
NET_DVR_RULE_SHIELDMASK_CONFLICT_ERROR | 3013 | 规则区域与屏蔽区域冲突
NET_ERR_NPQ_PARAM | 8001 | NPQ库参数有误
NET_ERR_NPQ_SYSTEM | 8002 | NPQ库操作系统调用错误(包括资源申请失败或内部错误等）
NET_ERR_NPQ_GENRAL | 8003 | NPQ库内部通用错误
NET_ERR_NPQ_PRECONDITION | 8004 | NPQ库调用顺序错误
NET_ERR_NPQ_NOTSUPPOR | 8005 | NPQ库功能不支持
NET_ERR_NPQ_NOTCALLBACK | 8100 | 数据没有回调上来
NET_ERR_NPQ_LOADLIB | 8101 | NPQ库加载失败
NET_DVR_ERR_NPQ_STEAM_CLOSE | 8104 | 本路码流NPQ功能未开启
NET_DVR_ERR_NPQ_MAX_LINK | 8110 | NPQ取流路数达上限
NET_DVR_ERR_NPQ_STREAM_CFG_CONFLICT | 8111 | 编码参数存在冲突配置

RTSP通讯库错误码

错误类型 | 错误值 | 错误信息
NET_DVR_RTSP_ERROR_NOENOUGHPRI | 401 | 认证失败(没有权限)：服务器返回401时，转成这个错误码
NET_DVR_RTSP_ERROR_ALLOC_RESOURCE | 402 | 分配资源失败
NET_DVR_RTSP_ERROR_PARAMETER | 403 | 参数错误
NET_DVR_RTSP_ERROR_NO_URL | 404 | 指定的URL地址不存在：服务器返回404时，转成这个错误码，例如请求不可用的通道号预览、请求不支持子码流的通道预览
NET_DVR_RTSP_ERROR_FORCE_STOP | 406 | 用户中途强行退出
NET_DVR_RTSP_GETPORTFAILED | 407 | 获取RTSP端口错误
NET_DVR_RTSP_DESCRIBERROR | 410 | RTSP DESCRIBE交互错误
NET_DVR_RTSP_DESCRIBESENDTIMEOUT | 411 | RTSP DESCRIBE发送超时
NET_DVR_RTSP_DESCRIBESENDERROR | 412 | RTSP DESCRIBE发送失败
NET_DVR_RTSP_DESCRIBERECVTIMEOUT | 413 | RTSP DESCRIBE接收超时
NET_DVR_RTSP_DESCRIBERECVDATALOST | 414 | RTSP DESCRIBE接收数据错误
NET_DVR_RTSP_DESCRIBERECVERROR | 415 | RTSP DESCRIBE接收失败
NET_DVR_RTSP_DESCRIBESERVERERR | 416 | RTSP DESCRIBE 服务器返回错误状态。例如服务器返回400，可能是不支持子码流
NET_DVR_RTSP_SETUPERROR | 420 | RTSP SETUP交互错误，一般是服务器返回的码流地址无法连接上，或者被服务器拒绝。（老版本的SDK可能返回错误号419，为同样的错误原因）
NET_DVR_RTSP_SETUPSENDTIMEOUT | 421 | RTSP SETUP发送超时
NET_DVR_RTSP_SETUPSENDERROR | 422 | RTSP SETUP发送错误
NET_DVR_RTSP_SETUPRECVTIMEOUT | 423 | RTSP SETUP接收超时
NET_DVR_RTSP_SETUPRECVDATALOST | 424 | RTSP SETUP接收数据错误
NET_DVR_RTSP_SETUPRECVERROR | 425 | RTSP SETUP接收失败
NET_DVR_RTSP_OVER_MAX_CHAN | 426 | 超过服务器最大连接数，或者服务器资源不足，服务器返回453时，转成这个错误码
NET_DVR_RTSP_SETUPSERVERERR | 427 | RTSP SETUP 服务器返回错误状态
NET_DVR_RTSP_PLAYERROR | 430 | RTSP PLAY交互错误
NET_DVR_RTSP_PLAYSENDTIMEOUT | 431 | RTSP PLAY发送超时
NET_DVR_RTSP_PLAYSENDERROR | 432 | RTSP PLAY发送错误
NET_DVR_RTSP_PLAYRECVTIMEOUT | 433 | RTSP PLAY接收超时
NET_DVR_RTSP_PLAYRECVDATALOST | 434 | RTSP PLAY接收数据错误
NET_DVR_RTSP_PLAYRECVERROR | 435 | RTSP PLAY接收失败
NET_DVR_RTSP_PLAYSERVERERR | 436 | RTSP PLAY 服务器返回错误状态
NET_DVR_RTSP_TEARDOWNERROR | 440 | RTSP TEARDOWN交互错误
NET_DVR_RTSP_TEARDOWNSENDTIMEOUT | 441 | RTSP TEARDOWN发送超时
NET_DVR_RTSP_TEARDOWNSENDERROR | 442 | RTSP TEARDOWN发送错误
NET_DVR_RTSP_TEARDOWNRECVTIMEOUT | 443 | RTSP TEARDOWN接收超时
NET_DVR_RTSP_TEARDOWNRECVDATALOST | 444 | RTSP TEARDOWN接收数据错误
NET_DVR_RTSP_TEARDOWNRECVERROR | 445 | RTSP TEARDOWN接收失败
NET_DVR_RTSP_TEARDOWNSERVERERR | 446 | RTSP TEARDOWN 服务器返回错误状态

软解码库错误码

错误类型 | 错误值 | 错误信息
NET_PLAYM4_NOERROR | 500 | 没有错误
NET_PLAYM4_PARA_OVER | 501 | 输入参数非法
NET_PLAYM4_ORDER_ERROR | 502 | 调用顺序不对
NET_PLAYM4_TIMER_ERROR | 503 | 多媒体时钟设置失败
NET_PLAYM4_DEC_VIDEO_ERROR | 504 | 视频解码失败
NET_PLAYM4_DEC_AUDIO_ERROR | 505 | 音频解码失败
NET_PLAYM4_ALLOC_MEMORY_ERROR | 506 | 分配内存失败
NET_PLAYM4_OPEN_FILE_ERROR | 507 | 文件操作失败
NET_PLAYM4_CREATE_OBJ_ERROR | 508 | 创建线程事件等失败
NET_PLAYM4_CREATE_DDRAW_ERROR | 509 | 创建directDraw失败
NET_PLAYM4_CREATE_OFFSCREEN_ERROR | 510 | 创建后端缓存失败
NET_PLAYM4_BUF_OVER | 511 | 缓冲区满，输入流失败
NET_PLAYM4_CREATE_SOUND_ERROR | 512 | 创建音频设备失败
NET_PLAYM4_SET_VOLUME_ERROR | 513 | 设置音量失败
NET_PLAYM4_SUPPORT_FILE_ONLY | 514 | 只能在播放文件时才能使用此接口
NET_PLAYM4_SUPPORT_STREAM_ONLY | 515 | 只能在播放流时才能使用此接口
NET_PLAYM4_SYS_NOT_SUPPORT | 516 | 系统不支持，解码器只能工作在Pentium 3以上
NET_PLAYM4_FILEHEADER_UNKNOWN | 517 | 没有文件头
NET_PLAYM4_VERSION_INCORRECT | 518 | 解码器和编码器版本不对应
NET_PALYM4_INIT_DECODER_ERROR | 519 | 初始化解码器失败
NET_PLAYM4_CHECK_FILE_ERROR | 520 | 文件太短或码流无法识别
NET_PLAYM4_INIT_TIMER_ERROR | 521 | 初始化多媒体时钟失败
NET_PLAYM4_BLT_ERROR | 522 | 位拷贝失败
NET_PLAYM4_UPDATE_ERROR | 523 | 显示overlay失败
NET_PLAYM4_OPEN_FILE_ERROR_MULTI | 524 | 打开混合流文件失败
NET_PLAYM4_OPEN_FILE_ERROR_VIDEO | 525 | 打开视频流文件失败
NET_PLAYM4_JPEG_COMPRESS_ERROR | 526 | JPEG压缩错误
NET_PLAYM4_EXTRACT_NOT_SUPPORT | 527 | 不支持该文件版本.
NET_PLAYM4_EXTRACT_DATA_ERROR | 528 | 提取文件数据失败

转封装库错误码

错误类型 | 错误值 | 错误信息
NET_CONVERT_ERROR_NOT_SUPPORT | 581 | 类型不支持

语音对讲库错误码

错误类型 | 错误值 | 错误信息
NET_AUDIOINTERCOM_OK | 600 | 没有错误
NET_AUDIOINTECOM_ERR_NOTSUPORT | 601 | 不支持
NET_AUDIOINTECOM_ERR_ALLOC_MEMERY | 602 | 内存申请错误
NET_AUDIOINTECOM_ERR_PARAMETER | 603 | 参数错误
NET_AUDIOINTECOM_ERR_CALL_ORDER | 604 | 调用次序错误
NET_AUDIOINTECOM_ERR_FIND_DEVICE | 605 | 未发现设备
NET_AUDIOINTECOM_ERR_OPEN_DEVICE | 606 | 不能打开设备
NET_AUDIOINTECOM_ERR_NO_CONTEXT | 607 | 设备上下文出错
NET_AUDIOINTECOM_ERR_NO_WAVFILE | 608 | WAV文件出错
NET_AUDIOINTECOM_ERR_INVALID_TYPE | 609 | 无效的WAV参数类型
NET_AUDIOINTECOM_ERR_ENCODE_FAIL | 610 | 编码失败
NET_AUDIOINTECOM_ERR_DECODE_FAIL | 611 | 解码失败
NET_AUDIOINTECOM_ERR_NO_PLAYBACK | 612 | 播放失败
NET_AUDIOINTECOM_ERR_DENOISE_FAIL | 613 | 降噪失败
NET_AUDIOINTECOM_ERR_UNKOWN | 619 | 未知错误

Qos流控库错误码

错误类型 | 错误值 | 错误信息
NET_QOS_ERR_SCHEDPARAMS_BAD_MINIMUM_INTERVAL | 678 | 预设的最小间隔错误.
NET_QOS_ERR_SCHEDPARAMS_BAD_FRACTION | 679 | 预设分数错误
NET_QOS_ERR_SCHEDPARAMS_INVALID_BANDWIDTH | 680 | 预设的带宽值无效
NET_QOS_ERR_PACKET_TOO_BIG | 687 | 数据包太大
NET_QOS_ERR_PACKET_LENGTH | 688 | 数据包长度错误
NET_QOS_ERR_PACKET_VERSION | 689 | 数据包版本错误
NET_QOS_ERR_PACKET_UNKNOW | 690 | 未知数据包
NET_QOS_ERR_OUTOFMEM | 695 | 内存不足
NET_QOS_ERR_LIB_NOT_INITIALIZED | 696 | Lib库没有初始化
NET_QOS_ERR_SESSION_NOT_FOUND | 697 | 没有找到会话
NET_QOS_ERR_INVALID_ARGUMENTS | 698 | 参数无效
NET_QOS_ERROR | 699 | Qos 错误
NET_QOS_OK | 700 | 没有错误

Remarks

RTSP通讯库错误码中410、420、430、440，大多数情况由于网络原因引起。

通过NET_DVR_GetErrorMsg函数还能获取错误号信息。

See Also

NET_DVR_GetErrorMsg


NET_DVR_GetErrorMsg

返回最后操作的错误码信息。

char* NET_DVR_GetErrorMsg(
  LONG   *pErrorNo
);

Parameters

pErrorNo
[out] 错误码数值的指针

Return Values

返回值为错误码信息的指针。错误码主要分为网络通讯库、RTSP通讯库、软硬解库、语音对讲库等错误码，详见下表。

网络通讯库错误码

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | No error.
NET_DVR_PASSWORD_ERROR | 1 | User name or password error.
NET_DVR_NOENOUGHPRI | 2 | Not authorized to do this operation.
NET_DVR_NOINIT | 3 | SDK is not initialized.
NET_DVR_CHANNEL_ERROR | 4 | Channel number error. There is no corresponding channel number on the device.
NET_DVR_OVER_MAXLINK | 5 | The number of connection with the device has exceeded the max limit.
NET_DVR_VERSIONNOMATCH | 6 | Version mismatch. SDK version is not matching with the device.
NET_DVR_NETWORK_FAIL_CONNECT | 7 | Failed to connect to the device. The device is off-line, or connection timeout caused by network.
NET_DVR_NETWORK_SEND_ERROR | 8 | Failed to send data to the device.
NET_DVR_NETWORK_RECV_ERROR | 9 | Failed to receive data from the device.
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | Timeout when receiving data from the device.
NET_DVR_NETWORK_ERRORDATA | 11 | The data sent to the device is illegal, or the data received from the device error. E.g. The input data is not supported by the device for remote configuration.
NET_DVR_ORDER_ERROR | 12 | API calling order error.
NET_DVR_OPERNOPERMIT | 13 | Not authorized for this operation.
NET_DVR_COMMANDTIMEOUT | 14 | Executing command on the device is timeout.
NET_DVR_ERRORSERIALPORT | 15 | Serial port number error. The assigned serial port does not exist on the device.
NET_DVR_ERRORALARMPORT | 16 | Alarm port number error.
NET_DVR_PARAMETER_ERROR | 17 | Parameter error. Input or output parameters in the SDK API is NULL, or the value or format of the parameters does not match with the requirement.
NET_DVR_CHAN_EXCEPTION | 18 | Device channel is in exception status.
NET_DVR_NODISK | 19 | No hard disk on the device, and the operation of recording and hard disk configuration will fail.
NET_DVR_ERRORDISKNUM | 20 | Hard disk number error. The assigned hard disk number does not exist during hard disk management.
NET_DVR_DISK_FULL | 21 | Device hark disk is full.
NET_DVR_DISK_ERROR | 22 | Device hard disk error.
NET_DVR_NOSUPPORT | 23 | Device does not support this function.
NET_DVR_BUSY | 24 | Device is busy.
NET_DVR_MODIFY_FAIL | 25 | Failed to modify device parameters.
NET_DVR_PASSWORD_FORMAT_ERROR | 26 | The inputting password format is not correct.
NET_DVR_DISK_FORMATING | 27 | Hard disk is formatting, and the operation cannot be done.
NET_DVR_DVRNORESOURCE | 28 | Not enough resource on the device.
NET_DVR_DVROPRATEFAILED | 29 | Device operation failed.
NET_DVR_OPENHOSTSOUND_FAIL | 30 | Failed to collect local audio data or to open audio output during voice talk / broadcasting.
NET_DVR_DVRVOICEOPENED | 31 | Voice talk channel on the device has been occupied.
NET_DVR_TIMEINPUTERROR | 32 | Time input is not correct.
NET_DVR_NOSPECFILE | 33 | There is no selected file for playback.
NET_DVR_CREATEFILE_ERROR | 34 | Failed to create a file, during local recording, saving picture, getting configuration file or downloading record file.
NET_DVR_FILEOPENFAIL | 35 | Failed to open a file.
NET_DVR_OPERNOTFINISH | 36 | The last operation has not been completed.
NET_DVR_GETPLAYTIMEFAIL | 37 | Failed to get the current played time.
NET_DVR_PLAYFAIL | 38 | Failed to start playback.
NET_DVR_FILEFORMAT_ERROR | 39 | The file format is not correct.
NET_DVR_DIR_ERROR | 40 | File directory error.
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | Resource allocation error.
NET_DVR_AUDIO_MODE_ERROR | 42 | Sound adapter mode error. Currently opened sound playing mode does not match with the set mode.
NET_DVR_NOENOUGH_BUF | 43 | Buffer is not enough.
NET_DVR_CREATESOCKET_ERROR | 44 | Create SOCKET error.
NET_DVR_SETSOCKET_ERROR | 45 | Set SOCKET error
NET_DVR_MAX_NUM | 46 | The number of login or preview connections has exceeded the SDK limitation.
NET_DVR_USERNOTEXIST | 47 | User doest not exist. The user ID has been logged out or unavailable.
NET_DVR_WRITEFLASHERROR | 48 | Writing FLASH error. Failed to write FLASH during device upgrade.
NET_DVR_UPGRADEFAIL | 49 | Failed to upgrade device. It is caused by network problem or the language mismatch between the device and the upgrade file.
NET_DVR_CARDHAVEINIT | 50 | The decode card has alreadly been initialed.
NET_DVR_PLAYERFAILED | 51 | Failed to call API of player SDK.
NET_DVR_MAX_USERNUM | 52 | The number of login user has reached the maximum limit.
NET_DVR_GETLOCALIPANDMACFAIL | 53 | Failed to get the IP address or physical address of local PC.
NET_DVR_NOENCODEING | 54 | This channel hasn't started encoding.
NET_DVR_IPMISMATCH | 55 | IP address not match
NET_DVR_MACMISMATCH | 56 | MAC address not match
NET_DVR_UPGRADELANGMISMATCH | 57 | The language of upgrading file does not match the language of the device.
NET_DVR_MAX_PLAYERPORT | 58 | The number of player ports has reached the maximum limit.
NET_DVR_NOSPACEBACKUP | 59 | No enough space to backup file in backup device.
NET_DVR_NODEVICEBACKUP | 60 | No backup device.
NET_DVR_PICTURE_BITS_ERROR | 61 | The color quality seeting of the picture does not match the requirement, and it should be limited to 24.
NET_DVR_PICTURE_DIMENSION_ERROR | 62 | The dimension is over 128x256.
NET_DVR_PICTURE_SIZ_ERROR | 63 | The size of picture is over 100K
NET_DVR_LOADPLAYERSDKFAILED | 64 | Failed to load player SDK.
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | Can not find the function in player SDK.
NET_DVR_LOADDSSDKFAILED | 66 | Failed to load the library file-"DsSdk".
NET_DVR_LOADDSSDKPROC_ERROR | 67 | Can not find the API in "DsSdk".
NET_DVR_DSSDK_ERROR | 68 | Failed to call the API in "DsSdk".
NET_DVR_VOICEMONOPOLIZE | 69 | Sound adapter has been monopolized.
NET_DVR_JOINMULTICASTFAILED | 70 | Failed to join to multicast group.
NET_DVR_CREATEDIR_ERROR | 71 | Failed to create log file directory.
NET_DVR_BINDSOCKET_ERROR | 72 | Failed to bind socket.
NET_DVR_SOCKETCLOSE_ERROR | 73 | Socket disconnected. It is caused by network disconnection or destination unreachable.
NET_DVR_USERID_ISUSING | 74 | The user ID is operating when logout.
NET_DVR_SOCKETLISTEN_ERROR | 75 | Failed to listen
NET_DVR_PROGRAM_EXCEPTION | 76 | Sdk program exception
NET_DVR_WRITEFILE_FAILED | 77 | Failed to write file, during local recording, saving picture or downloading record file.
NET_DVR_FORMAT_READONLY | 78 | Failed to format read-only HD
NET_DVR_WITHSAMEUSERNAME | 79 | This user name already exists in the user configuration structure.
NET_DVR_DEVICETYPE_ERROR | 80 | Device type does not match when import configuration.
NET_DVR_LANGUAGE_ERROR | 81 | Language does not match when import configuration.
NET_DVR_PARAVERSION_ERROR | 82 | Software version does not match when import configuration.
NET_DVR_IPCHAN_NOTALIVE | 83 | IP channel is not on-line when previewing.
NET_DVR_RTSP_SDK_ERROR | 84 | Load StreamTransClient.dll failed
NET_DVR_CONVERT_SDK_ERROR | 85 | Load SystemTransform.dll failed
NET_DVR_IPC_COUNT_OVERFLOW | 86 | over maximun ipc count
NET_DVR_MAX_ADD_NUM | 87 | add label or other operation reach the maximum number
NET_DVR_PARAMMODE_ERROR | 88 | Image intensifier, parameter mode error. This error may occur when client sets software or hardware parameters.
NET_DVR_CODESPITTER_OFFLINE | 89 | Code splitter is offline.
NET_DVR_BACKUP_COPYING | 90 | Device is backing up.
NET_DVR_CHAN_NOTSUPPORT | 91 | Channel not support
NET_DVR_CALLINEINVALID | 92 | The height line location is too concentrated, or the length line is not inclined enough.
NET_DVR_CALCANCELCONFLICT | 93 | Cancel calibration conflict, if the rule and overall actual size filter have been set.
NET_DVR_CALPOINTOUTRANGE | 94 | Calibration point exceeds the range.
NET_DVR_FILTERRECTINVALID | 95 | The size filter does not meet the requirement.
NET_DVR_DDNS_DEVOFFLINE | 96 | Device has not registered to DDNS.
NET_DVR_DDNS_INTER_ERROR | 97 | DDNS inner error.
NET_DVR_FUNCTION_NOT_SUPPORT_OS | 98 | This function don't support this OS.
NET_DVR_DEC_CHAN_REBIND | 99 | Decode channel can not bind with two display channel.
NET_DVR_INTERCOM_SDK_ERROR | 100 | Failed to load the audio intercom SDK from current directory.
NET_DVR_NO_CURRENT_UPDATEFILE | 101 | No current upgrade pack.
NET_DVR_USER_NOT_SUCC_LOGIN | 102 | The user has not logined the device.
NET_DVR_USE_LOG_SWITCH_FILE | 103 | It is using the log swtich file.
NET_DVR_POOL_PORT_EXHAUST | 104 | The ports used to bound in port pool is exhausted.
NET_DVR_PACKET_TYPE_NOT_SUPPORT | 105 | The packet type of stream is error.
NET_DVR_IPPARA_IPID_ERROR | 106 | IPID of IP access configuration is error.
NET_DVR_LOAD_HCPREVIEW_SDK_ERROR | 107 | Load Preview component Failed.
NET_DVR_LOAD_HCVOICETALK_SDK_ERROR | 108 | Load Voice talk component Failed.
NET_DVR_LOAD_HCALARM_SDK_ERROR | 109 | Load Alarm component Failed.
NET_DVR_LOAD_HCPLAYBACK_SDK_ERROR | 110 | Load Playback component Failed.
NET_DVR_LOAD_HCDISPLAY_SDK_ERROR | 111 | Load Display component Failed.
NET_DVR_LOAD_HCINDUSTRY_SDK_ERROR | 112 | Load Industry component Failed.
NET_DVR_LOAD_HCGENERALCFGMGR_SDK_ERROR | 113 | Load general configuration management component failed.
NET_DVR_LOAD_HCCOREDEVCFG_SDK_ERROR | 114 | Load configuration core component failed.
NET_DVR_CORE_VER_MISMATCH | 121 | There is a mismatch between the component and core version.
NET_DVR_CORE_VER_MISMATCH_HCPREVIEW | 122 | There is a mismatch between Live view component and core version.
NET_DVR_CORE_VER_MISMATCH_HCVOICETALK | 123 | There is a mismatch between voice component and core version.
NET_DVR_CORE_VER_MISMATCH_HCALARM | 124 | There is a mismatch between alarm component and core version.
NET_DVR_CORE_VER_MISMATCH_HCPLAYBACK | 125 | There is a mismatch between playback component and core version.
NET_DVR_CORE_VER_MISMATCH_HCDISPLAY | 126 | There is a mismatch between display component and core version.
NET_DVR_CORE_VER_MISMATCH_HCINDUSTRY | 127 | There is a mismatch between industrial application component and core version.
NET_DVR_CORE_VER_MISMATCH_HCGENERALCFGMGR | 128 | There is a mismatch between general configuration management component and the core version.
NET_DVR_COM_VER_MISMATCH_HCPREVIEW | 136 | There is a mismatch between Live view component and HCNetSDK version.
NET_DVR_COM_VER_MISMATCH_HCVOICETALK | 137 | There is a mismatch between voice component and HCNetSDK version.
NET_DVR_COM_VER_MISMATCH_HCALARM | 138 | here is a mismatch between alarm component and HCNetSDK version.
NET_DVR_COM_VER_MISMATCH_HCPLAYBACK | 139 | There is a mismatch between playback component and HCNetSDK version.
NET_DVR_COM_VER_MISMATCH_HCDISPLAY | 140 | There is a mismatch between display component and HCNetSDK version.
NET_DVR_COM_VER_MISMATCH_HCINDUSTRY | 141 | There is a mismatch between industrial application component and HCNetSDK version.
NET_DVR_COM_VER_MISMATCH_HCGENERALCFGMGR | 142 | There is a mismatch between General configuration management component and the HCNetSDK version.
NET_DVR_ALIAS_DUPLICATE | 150 | Alias is duplicate (for HiDDNS)
NET_DVR_USERNAME_NOT_EXIST | 152 | The user name doesn't exist.
NET_ERR_USERNAME_LOCKED | 153 | The user name is locked.
NET_DVR_INVALID_USERID | 154 | Invalid User ID.
NET_DVR_LOW_LOGIN_VERSION | 155 | The login version is too low.
NET_DVR_LOAD_LIBEAY32_DLL_ERROR | 156 | Failed to load libeay32.dll.
NET_DVR_LOAD_SSLEAY32_DLL_ERROR | 157 | Failed to load ssleay32.dll.
NET_ERR_LOAD_LIBICONV | 158 | Failed to load libiconv.dll。
NET_DVR_TEST_SERVER_FAIL_CONNECT | 165 | Failed to connect to test server.
NET_DVR_NAS_SERVER_INVALID_DIR | 166 | Failed to mount to NAS server (No such directory, or user name/password error).
NET_DVR_NAS_SERVER_NOENOUGH_PRI | 167 | Failed to mount to NAS server (not authorized)
NET_DVR_EMAIL_SERVER_NOT_CONFIG_DNS | 168 | DNS has not been configured, so domain address may invalid.
NET_DVR_EMAIL_SERVER_NOT_CONFIG_GATEWAY | 169 | GateWay of Email server has not been configured, so it may be failed to send mail.
NET_DVR_TEST_SERVER_PASSWORD_ERROR | 170 | User name and password tried to login the test server are not matching.
NET_DVR_EMAIL_SERVER_CONNECT_EXCEPTION_WITH_SMTP | 171 | The connection between device and SMTP server is abnormal.
NET_DVR_FTP_SERVER_FAIL_CREATE_DIR | 172 | Failed to create directory in the FTP server.
NET_DVR_FTP_SERVER_NO_WRITE_PIR | 173 | Do not have permission to write in the FTP server.
NET_DVR_IP_CONFLICT | 174 | IP conflict.
NET_DVR_INSUFFICIENT_STORAGEPOOL_SPACE | 175 | The storage pool is full.
NET_DVR_STORAGEPOOL_INVALID | 176 | The storage pool of cloud server is invalid, for not configure the storage pool or the ID of storage pool error.
NET_DVR_EFFECTIVENESS_REBOOT | 177 | Need reboot the device.
NET_ERR_ANR_ARMING_EXIST | 178 | ANR arming is already established.
NET_ERR_UPLOADLINK_EXIST | 179 | Upload Link is already established.
NET_ERR_INCORRECT_FILE_FORMAT | 180 | Incorrect file format.
NET_ERR_INCORRECT_FILE_CONTENT | 181 | Incorrect file content.
NET_ERR_MAX_HRUDP_LINK | 182 | HRUDP limit the number of connections over equipment.
阵列错误码 |  |
NET_DVR_NAME_NOT_ONLY | 200 | Existing name.
NET_DVR_OVER_MAX_ARRAY | 201 | Number of arrays has reached its limit.
NET_DVR_OVER_MAX_VD | 202 | Number of virtual disks has reached its limit.
NET_DVR_VD_SLOT_EXCEED | 203 | Virtual disk slot is full.
NET_DVR_PD_STATUS_INVALID | 204 | Physical disk for rebuilding array is with error status.
NET_DVR_PD_BE_DEDICATE_SPARE | 205 | Physical disk for rebuilding array is specified as spare drive.
NET_DVR_PD_NOT_FREE | 206 | Physical disk for rebuilding array is not idle.
NET_DVR_CANNOT_MIG2NEWMODE | 207 | Unable to migrate from the current array type to the new array type.
NET_DVR_MIG_PAUSE | 208 | The migration operation has been paused.
NET_DVR_MIG_CANCEL | 209 | The migration operation has been cancelled.
NET_DVR_EXIST_VD | 210 | Operation failed! Please delete the virtual disk existed in the array first.
NET_DVR_TARGET_IN_LD_FUNCTIONAL | 211 | Target physical disk is part of the virtual disk and is functional.
NET_DVR_HD_IS_ASSIGNED_ALREADY | 212 | Specified physical disk is assigned to a virtual disk
NET_DVR_INVALID_HD_COUNT | 213 | Number of physical disks doesn't fit the specified RAID level.
NET_DVR_LD_IS_FUNCTIONAL | 214 | Specified virtual disk is functional.
NET_DVR_BGA_RUNNING | 215 | BGA is running.
NET_DVR_LD_NO_ATAPI | 216 | Can not create virtual disk with ATAPI drive.
NET_DVR_MIGRATION_NOT_NEED | 217 | Migration is not necessary.
NET_DVR_HD_TYPE_MISMATCH | 218 | Physical disks are not of the same type.
NET_DVR_NO_LD_IN_DG | 219 | No virtual disk exist on the specified array.
NET_DVR_NO_ROOM_FOR_SPARE | 220 | Disk space is too small to be assigned as spare drive.
NET_DVR_SPARE_IS_IN_MULTI_DG | 221 | Disk is already assigned as a spare drive for an array.
NET_DVR_DG_HAS_MISSING_PD | 222 | Disk is missing from an array.
NET_DVR_NAME_EMPTY | 223 | Name is empty.
NET_DVR_INPUT_PARAM | 224 | The input parameter is error.
NET_DVR_PD_NOT_AVAILABLE | 225 | The physical disk is not available.
NET_DVR_ARRAY_NOT_AVAILABLE | 226 | The RAID is not available
NET_DVR_PD_COUNT | 227 | The count of physical disks is not correct.
NET_DVR_VD_SMALL | 228 | Virtual disk is too small.
NET_DVR_NO_EXIST | 229 | Not exist.
NET_DVR_NOT_SUPPORT | 230 | Not support the operation.
NET_DVR_NOT_FUNCTIONAL | 231 | The status of RAID is abnormal.
NET_DVR_DEV_NODE_NOT_FOUND | 232 | The device node of virtual disk does not exist.
NET_DVR_SLOT_EXCEED | 233 | The count of slots reaches the upper limit.
NET_DVR_NO_VD_IN_ARRAY | 234 | There is not virtual disk in the RAID.
NET_DVR_VD_SLOT_INVALID | 235 | The slot of virtual disk is invalid.
NET_DVR_PD_NO_ENOUGH_SPACE | 236 | The required space of physical disk is not enough.
NET_DVR_ARRAY_NONFUNCTION | 237 | Only the RAID on normal state supports to be migrated.
NET_DVR_ARRAY_NO_ENOUGH_SPACE | 238 | The space of RAID is not enough.
NET_DVR_STOPPING_SCANNING_ARRAY | 239 | It is pulling the disk out safely or rescanning the disk.
NET_DVR_NOT_SUPPORT_16T | 240 | Not support create the RAID larger than 16T.
安全激活相关错误码 |  |
NET_DVR_ERROR_DEVICE_NOT_ACTIVATED | 250 | The device has not been activated.
NET_DVR_ERROR_RISK_PASSWORD | 251 | There is a risk of the password.
NET_DVR_ERROR_DEVICE_HAS_ACTIVATED | 252 | The device has been activated.
智能设备错误值 |  |
NET_DVR_ID_ERROR | 300 | Configuration ID is illegal.
NET_DVR_POLYGON_ERROR | 301 | Polygon does not match requirement.
NET_DVR_RULE_PARAM_ERROR | 302 | Rule parameter is illegal.
NET_DVR_RULE_CFG_CONFLICT | 303 | Configuration conflict.
NET_DVR_CALIBRATE_NOT_READY | 304 | Calibration not ready.
NET_DVR_CAMERA_DATA_ERROR | 305 | Camera parameter is illegal.
NET_DVR_CALIBRATE_DATA_UNFIT | 306 | Not tilt enough, not fit to calibrate.
NET_DVR_CALIBRATE_DATA_CONFILICT | 307 | Calibration error.
NET_DVR_CALIBRATE_CALC_FAIL | 308 | Failed to calculate camera calibration parameter.
NET_DVR_CALIBRATE_LINE_OUT_RECT | 309 | The input calibrating line exceeds the external rectangle sample.
NET_DVR_ENTER_RULE_NOT_READY | 310 | Enter rule not ready.
NET_DVR_AID_RULE_NO_INCLUDE_LANE | 311 | It does not include lane in the traffic event rule (especial for traffic jam or driving against the traffic).
NET_DVR_LANE_NOT_READY | 312 | Lane not ready.
NET_DVR_RULE_INCLUDE_TWO_WAY | 313 | There are two different directions in event rule.
NET_DVR_LANE_TPS_RULE_CONFLICT | 314 | The lane conflicts with the data rule.
NET_DVR_NOT_SUPPORT_EVENT_TYPE | 315 | The event type is not supported by the device.
NET_DVR_LANE_NO_WAY | 316 | The lane has no direction.
NET_DVR_SIZE_FILTER_ERROR | 317 | The size of filter is illegal.
NET_DVR_LIB_FFL_NO_FACE | 318 | There is no face when feature point positioning.
NET_DVR_LIB_FFL_IMG_TOO_SMALL | 319 | The input image is too small when feature point positioning.
NET_DVR_LIB_FD_IMG_NO_FACE | 320 | The input image has no face when detecting face in single image.
NET_DVR_LIB_FACE_TOO_SMALL | 321 | Face is too small when building model.
NET_DVR_LIB_FACE_QUALITY_TOO_BAD | 322 | Face image is of poor quality when building model.
NET_DVR_KEY_PARAM_ERR | 323 | Advanced parameter setting error.
NET_DVR_CALIBRATE_DATA_ERR | 324 | Calibration sample size error, or data value error, or sample points beyond the horizon
NET_DVR_CALIBRATE_DISABLE_FAIL | 325 | The configured rules do not allow to cancel calibration.
NET_DVR_VCA_LIB_FD_SCALE_OUTRANGE | 326 | Filter scale is out range.
NET_DVR_LIB_FD_REGION_TOO_LARGE | 327 | Region is too big.
NET_DVR_TRIAL_OVERDUE | 328 | Trial overdue.
NET_DVR_CONFIG_FILE_CONFLICT | 329 | Config file conflict.
NET_DVR_FR_FPL_FAIL | 330 | Feature points location is error in face recognition.
NET_DVR_FR_IQA_FAIL | 331 | Image quality assessment is error in face recognition.
NET_DVR_FR_FEM_FAIL | 332 | Feature extract & match error in face recognition.
NET_DVR_FPL_DT_CONF_TOO_LOW | 333 | Detection confidence is too low in feature points location.
NET_DVR_FPL_CONF_TOO_LOW | 334 | Confidence is too low in feature points location.
NET_DVR_E_DATA_SIZE | 335 | Size of model data error.
NET_DVR_FR_MODEL_VERSION_ERR | 336 | Model version is error.
NET_DVR_FR_FD_FAIL | 337 | Face detection error in face recognition.
NET_DVR_FA_NORMALIZE_ERR | 338 | Face attribute normalize error.
NET_DVR_DOG_PUSTREAM_NOT_MATCH | 339 | Pustream and softdog are mismatched.
NET_DVR_DEV_PUSTREAM_NOT_MATCH | 340 | Pustream device version is error.
NET_DVR_PUSTREAM_ALREADY_EXISTS | 341 | The pustream has existence.
NET_DVR_SEARCH_CONNECT_FAILED | 342 | Failed to connect face retrieval device.
NET_DVR_INSUFFICIENT_DISK_SPACE | 343 | Storage space is insufficient.
NET_DVR_DATABASE_CONNECTION_FAILED | 344 | Failed to connect database.
NET_DVR_DATABASE_ADM_PW_ERROR | 345 | Username or password is error for database.
NET_DVR_DECODE_YUV | 346 | Failed to decode image.
NET_DVR_IMAGE_RESOLUTION_ERROR | 347 | Image resolution is unreasonable.
NET_DVR_CHAN_WORKMODE_ERROR | 348 | Channel work mode error.
RTSP通讯库错误码 | 400~446 | 详见：RTSP通讯库错误码
软解码库错误码 | 500~528 | 详见：软解码库错误码
转封装库错误码 | 581 | 详见：转封装库错误码
语音对讲库错误码 | 600~619 | 详见：语音对讲库错误码
Qos流控库错误码 | 678~700 | 详见：Qos流控库错误码
其他错误码 |  |
NET_ERROR_SCENE_USING | 717 | The scene is in use.
NET_ERR_TERMINAL_BUSY | 780 | The terminal is busy, and the terminal is in one meeting.
NET_ERR_TERMINAL_BUSY | 780 | Equipment other resource-intensive function, cause the function could not be opened.
NET_DVR_DEV_NET_OVERFLOW | 800 | Network traffic is over device ability limit.
NET_DVR_STATUS_RECORDFILE_WRITING_NOT_LOCK | 801 | The video file is recording and can't be locked.
NET_DVR_STATUS_CANT_FORMAT_LITTLE_DISK | 802 | The hard disk capacity is too small and can not be formatted.
N+1功能错误码 |  |
NET_SDK_ERR_REMOTE_DISCONNEC | 803 | Unable to connect to the remote device.
NET_SDK_ERR_RD_ADD_RD | 804 | It does not support add spare device to a spare device.
NET_SDK_ERR_BACKUP_DISK_EXCEPT | 805 | The backup disk is abnormal.
NET_SDK_ERR_RD_LIMIT | 806 | The count of spare devices has reached the maximum limit.
NET_SDK_ERR_ADDED_RD_IS_WD | 807 | The spare device to be added is a working device.
NET_SDK_ERR_ADD_ORDER_WRONG | 808 | The adding order is wrong, such as, to add the working device to the spare device before adding the spare device to the working device.
NET_SDK_ERR_WD_ADD_WD | 809 | It does not support add working device to a working device.
NET_SDK_ERR_WD_SERVICE_EXCETP | 810 | The CVR server is abnormal.
NET_SDK_ERR_RD_SERVICE_EXCETP | 811 | The spare device is abnormal.
NET_SDK_ERR_ADDED_WD_IS_RD | 812 | The working device to be added is a spare device.
NET_SDK_ERR_PERFORMANCE_LIMIT | 813 | The performance reaches the upper limit
NET_SDK_ERR_ADDED_DEVICE_EXIST | 814 | The devcie to be added has existed.
审讯机错误码 |  |
NET_SDK_ERR_INQUEST_RESUMING | 815 | Inquest resuming.
NET_SDK_ERR_RECORD_BACKUPING | 816 | Record backuping.
NET_SDK_ERR_DISK_PLAYING | 817 | Disk playing.
NET_SDK_ERR_INQUEST_STARTED | 818 | Inquest started.
NET_SDK_ERR_LOCAL_OPERATING | 819 | Local operating.
NET_SDK_ERR_INQUEST_NOT_START | 820 | Inquest not start.
其他错误码 |  |
NET_SDK_ERR_CHAN_AUDIO_BIND | 821 | Chan bind aduio error or no bind.
NET_DVR_N_PLUS_ONE_MODE | 822 | Not support to set cloud storage mode, for the device is in N+1 mode.
NET_DVR_CLOUD_STORAGE_OPENED | 823 | The cloud storage mode has been opened.
NET_DVR_ERR_OPER_NOT_ALLOWED | 824 | Fot the device has been taken over, the operation is not allowed.
NET_DVR_ERR_NEED_RELOCATE | 825 | Fot the device has been taken over, it requires to get the redirection information and then re-operate.
庭审主机错误码 |  |
NET_SDK_ERR_IR_PORT_ERROR | 830 | The IR output error.
NET_SDK_ERR_IR_CMD_ERROR | 831 | The command of IR output is not correct.
NET_SDK_ERR_NOT_INQUESTING | 832 | The device is not inquestiong.
NET_SDK_ERR_INQUEST_NOT_PAUSED | 833 | The device is not in paused status.
其他错误码 |  |
NET_DVR_CHECK_PASSWORD_MISTAKE_ERROR | 834 | Check the password mistake.
NET_DVR_CHECK_PASSWORD_NULL_ERROR | 835 | Check the password do not NULL.
NET_DVR_UNABLE_CALIB_ERROR | 836 | Unable to calibrate currently.
NET_DVR_PLEASE_CALIB_ERROR | 837 | Please finish the calibration first.
NET_DVR_ERR_PANORAMIC_CAL_EMPTY | 838 | No panorama image for PanoVu camera calibration in flash.
NET_DVR_ERR_CALIB_FAIL_PLEASEAGAIN | 839 | Calibration failed. Please calibrate again.
NET_DVR_ERR_DETECTION_LINE | 840 | Please set detection line again. The detection line should be within the red count area.
NET_DVR_EXCEED_FACE_IMAGES_ERROR | 843 | Exceed face images error.
NET_DVR_ANALYSIS_FACE_IMAGES_ERROR | 844 | Analysis face picture error.
NET_ERR_ALARM_INPUT_OCCUPIED | 845 | Alarm Input No. A<-1 is used to trigger vehicle capture.
NET_DVR_FACELIB_DATABASE_ERROR | 846 | Face lib database error.
NET_DVR_FACELIB_DATA_ERROR | 847 | Face libary data error.
NET_DVR_FACE_DATA_ID_ERROR | 848 | Face data ID error.
NET_DVR_FACELIB_ID_ERROR | 849 | Face libary ID error.
NET_DVR_EXCEED_FACE_LIBARY_ERROR | 850 | Face exceed face libary error.
NET_DVR_PIC_ANALYSIS_NO_TARGET_ERROR | 851 | Picture analysis no target error.
NET_DVR_SUBPIC_ANALYSIS_MODELING_ERROR | 852 | Subpicture analysis modeling error.
NET_DVR_PIC_ANALYSIS_NO_RESOURCE_ERROR | 853 | Picture Analysis no resource error.
NET_DVR_ANALYSIS_ENGINES_NO_RESOURCE_ERROR | 854 | Analysis engines no resource error.
NET_DVR_ANALYSIS_ENGINES_USAGE_EXCEED_ERROR | 855 | Analysis engines usage exceed error.
NET_DVR_EXCEED_HUMANMISINFO_FILTER_ENABLED_ERROR | 856 | Exceed human misinfo filter enabled max channel number error.
NET_DVR_NAME_ERROR | 857 | Name error.
NET_DVR_NAME_EXIST_ERROR | 858 | Name exist error.
NET_DVR_FACELIB_PIC_IMPORTING_ERROR | 859 | Face lib picture importing error.
NET_DVR_PIC_FORMAT_ERROR | 864 | Picture format error.
NET_DVR_PIC_RESOLUTION_INVALID_ERROR | 865 | Picture resolution invalid error.
NET_DVR_PIC_SIZE_EXCEED_ERROR | 866 | Picture size exceed.
NET_DVR_PIC_ANALYSIS_TARGRT_NUM_EXCEED_ERROR | 867 | Picture target num exceed.
NET_DVR_ANALYSIS_ENGINES_LOADING_ERROR | 868 | Engine loading error.
NET_DVR_ANALYSIS_ENGINES_ABNORMA_ERROR | 869 | Engine abnorma.
NET_DVR_ANALYSIS_ENGINES_FACELIB_IMPORTING | 870 | Analysis engine is import face library.
NET_DVR_NO_DATA_FOR_MODELING_ERROR | 871 | No data for modeling error.
NET_DVR_FACE_DATA_MODELING_ERROR | 872 | face data modeling error.
NET_ERR_FACELIBDATA_OVERLIMIT | 873 | face lib data over limit.
NET_DVR_ANALYSIS_ENGINES_ASSOCIATED_CHANNEL | 874 | Analysis engine has been associated channel.
NET_DVR_ERR_CUSTOMID_LEN | 875 | CustomID length error.
NET_DVR_ERR_CUSTOMFACELIBID_REPEAT | 876 | CustomFaceLibID repeat.
NET_DVR_ERR_CUSTOMHUMANID_REPEAT | 877 | CustomHumanID Repeat.
NET_DVR_ERR_URL_DOWNLOAD_FAIL | 878 | URL download fail.
NET_DVR_ERR_URL_DOWNLOAD_NOTSTART | 879 | URL not start download.
NET_DVR_CFG_FILE_SECRETKEY_ERROR | 880 | Config file secret key error.
多屏控制器错误码 |  |
NET_ERR_WINCHAN_IDX | 901 | Window channel index error.
NET_ERR_WIN_LAYER | 902 | Window layer number error(the count of window layers on a single screen exceeds the max number).
NET_ERR_WIN_BLK_NUM | 903 | Window block number error(the count of screens that single window overlays exceeds the max number).
NET_ERR_OUTPUT_RESOLUTION | 904 | The output resolution error.
NET_ERR_LAYOUT | 905 | Layout index error.
NET_ERR_INPUT_RESOLUTION | 906 | The input resolution is not supported.
NET_ERR_SUBDEVICE_OFFLINE | 907 | The sub-device is off-line.
NET_ERR_NO_DECODE_CHAN | 908 | There is no free decoding channel.
NET_ERR_MAX_WINDOW_ABILITY | 909 | The upper limit of window number.
NET_ERR_ORDER_ERROR | 910 | Calling order error.
NET_ERR_PLAYING_PLAN | 911 | Be playing plan.
NET_ERR_DECODER_USED | 912 | Decoder board is in use.
NET_ERR_OUTPUT_BOARD_DATA_OVERFLOW | 913 | The data of output board is over the limit.
NET_ERR_SAME_USER_NAME | 914 | The user name is duplicate.
NET_ERR_INVALID_USER_NAME | 915 | Invalid username.
NET_ERR_MATRIX_USING | 916 | The input matrix is in use.
NET_ERR_DIFFERENT_CHAN_TYPE | 917 | The channel type is error (the output channel of matrix is different with the input of controller)
NET_ERR_INPUT_CHAN_BINDED | 918 | The input channel has been bound by other matrix.
NET_ERR_BINDED_OUTPUT_CHAN_OVERFLOW | 919 | The number of the matrix output channels in use has exceeded the number of channels bound with controller.
NET_ERR_MAX_SIGNAL_NUM | 920 | The number of input signal sources is over the limit.
NET_ERR_INPUT_CHAN_USING | 921 | The input channel is in use.
NET_ERR_MANAGER_LOGON | 922 | The operation failed, for the manager has logged in.
NET_ERR_USERALREADY_LOGON | 923 | The operation failed, for the user has logged in.
NET_ERR_LAYOUT_INIT | 924 | The operation failed, for the layout is being initialized.
NET_ERR_BASEMAP_SIZE_NOT_MATCH | 925 | The size of traced drawing not match
NET_ERR_WINDOW_OPERATING | 926 | The operation failed, for the window is performing other operation.
NET_ERR_SIGNAL_UPLIMIT | 927 | The number of windows has reached the maximum limit.
解码器错误码 |  |
NET_ERR_WINDOW_SIZE_OVERLIMIT | 943 | The window size exceeds the limit.
NET_ERR_MAX_WIN_OVERLAP | 951 | The number of windows overlap has reached the maximum limit.
NET_ERR_STREAMID_CHAN_BOTH_VALID | 952 | stream ID and channel number are both valid.
NET_ERR_NO_ZERO_CHAN | 953 | The device has no zero channel.
NEED_RECONNECT | 955 | Need redirection (for transcoding system)
NET_ERR_NO_STREAM_ID | 956 | The stream ID does not exist.
NET_DVR_TRANS_NOT_START | 957 | The transcoding has not been started.
NET_ERR_MAXNUM_STREAM_ID | 958 | The number of stream ID has reached the maximum limit.
NET_ERR_WORKMODE_MISMATCH | 959 | The work mode does not match with the requirement.
NET_ERR_MODE_IS_USING | 960 | It Has been working in current mode.
NET_ERR_DEV_PROGRESSING | 961 | The device is in processing
NET_ERR_PASSIVE_TRANSCODING | 962 | It is in transcoding.
NET_DVR_ERR_WINDOW_SIZE_PLACE | 975 | Wrong window position.
NET_DVR_ERR_RGIONAL_RESTRICTIONS | 976 | Screen distance exceeds the limit.
NET_DVR_ERR_CLOSE_WINDOWS | 984 | Operation failed. Close the window first.
NET_DVR_ERR_MATRIX_LOOP_ABILITY | 985 | Beyond the cycle decoding capacity.
NET_DVR_ERR_MATRIX_LOOP_TIME | 986 | Invalid cycle decoding time.
NET_DVR_ERR_LINKED_OUT_ABILITY | 987 | No more linked camera can be added.
能力集错误码 |  |
XML_ABILITY_NOTSUPPORT | 1000 | Not support to get this node of the capability set.
XML_ANALYZE_NOENOUGH_BUF | 1001 | The output buffer is not enough
XML_ANALYZE_FIND_LOCALXML_ERROR | 1002 | Can not find the corresponding xml file.
XML_ANALYZE_LOAD_LOCALXML_ERROR | 1003 | Failed to load the local xml file.
XML_NANLYZE_DVR_DATA_FORMAT_ERROR | 1004 | Data format of the capability is wrong.
XML_ANALYZE_TYPE_ERROR | 1005 | The type of capability set is wrong.
XML_ANALYZE_XML_NODE_ERROR | 1006 | Format of XML capability node is wrong.
XML_INPUT_PARAM_ERROR | 1007 | The input value of XML capability node is wrong.
XML_VERSION_MISMATCH | 1008 | XML version not match
其他错误码 |  |
NET_ERR_TRANS_CHAN_START | 1101 | The operation is failed, for transparent channel has been opened.
NET_ERR_DEV_UPGRADING | 1102 | The device is upgrading.
NET_ERR_MISMATCH_UPGRADE_PACK_TYPE | 1103 | The type of upgrade package not match.
NET_ERR_DEV_FORMATTING | 1104 | The device is being formatted.
NET_ERR_MISMATCH_UPGRADE_PACK_VERSION | 1105 | The version of upgrade package not match.
NET_ERR_PT_LOCKED | 1106 | The device PT has been locked.
NET_DVR_ERR_ILLEGAL_VERIFICATION_CODE | 1111 | Verification Code illegal.
NET_DVR_ERR_LACK_VERIFICATION_CODE | 1112 | Verification Code missing.
NET_DVR_ERR_FORBIDDEN_IP | 1113 | This IP address has been banned, do not allow the configuration.
报警设备错误码 |  |
NET_ERR_SEARCHING_MODULE | 1201 | The device is searching for the external module.
NET_ERR_REGISTERING_MODULE | 1202 | The device is registering to the external module.
NET_ERR_GETTING_ZONES | 1203 | The device is getting defense zone parameters.
NET_ERR_GETTING_TRIGGERS | 1204 | The device is getting triggers.
NET_ERR_ARMED_STATUS | 1205 | The system is armed.
NET_ERR_PROGRAM_MODE_STATUS | 1206 | The system is in programming mode.
NET_ERR_WALK_TEST_MODE_STATUS | 1207 | The system is in pacing mode.
NET_ERR_BYPASS_STATUS | 1208 | Bypass state
NET_ERR_DISABLED_MODULE_STATUS | 1209 | The function is disabled.
NET_ERR_NOT_SUPPORT_OPERATE_ZONE | 1210 | The defense zone does not support the operation.
NET_ERR_NOT_SUPPORT_MOD_MODULE_ADDR | 1211 | The module address can not be modified.
NET_ERR_UNREGISTERED_MODULE | 1212 | The module is unregistered.
NET_ERR_PUBLIC_SUBSYSTEM_ASSOCIATE_SELF | 1213 | The public subsystem is set to associate with itself.
NET_ERR_EXCEEDS_ASSOCIATE_SUBSYSTEM_NUM | 1214 | The number of subsystems associated with the public subsystem exceeds the max limit.
NET_ERR_BE_ASSOCIATED_BY_PUBLIC_SUBSYSTEM | 1215 | The subsystem has been associated with the other public subsystem.
NET_ERR_ZONE_FAULT_STATUS | 1216 | The defense zone is in the fault state.
NET_ERR_SAME_EVENT_TYPE | 1217 | The opening and close of alarm output triggered by event have associated with same event type.
NET_ERR_ZONE_ALARM_STATUS | 1218 | The defense zone is in the alarm state.
NET_ERR_EXPANSION_BUS_SHORT_CIRCUIT | 1219 | Short circuit of expansion bus.
NET_ERR_PWD_CONFLICT | 1220 | Password conflict.
NET_ERR_DETECTOR_GISTERED_BY_OTHER_ZONE | 1221 | Detector gistered by other zone.
NET_ERR_DETECTOR_GISTERED_BY_OTHER_PU | 1222 | Detector gistered by other PU.
NET_ERR_DETECTOR_DISCONNECT | 1223 | Detector disconnect.
NET_ERR_CALL_BUSY | 1224 | Call busy.
NET_ERR_FILE_NAME | 1357 | File name error, null or illegal.
NET_ERR_BROADCAST_BUSY | 1358 | Broadcast busy.
智能交通摄像机错误码 |  |
NET_DVR_ERR_LANENUM_EXCEED | 1400 | The number of lanes exceeds the limit.
NET_DVR_ERR_PRAREA_EXCEED | 1401 | License plate recognition region is too large.
NET_DVR_ERR_LIGHT_PARAM | 1402 | The access parameters of traffic light is error.
NET_DVR_ERR_LANE_LINE_INVALID | 1403 | The configuration of lane line is invalid.
NET_DVR_ERR_STOP_LINE_INVALID | 1404 | The configuration of stop line is invalid.
NET_DVR_ERR_LEFTORRIGHT_LINE_INVALID | 1405 | The boundary line configuration of left-turn or right-turn lane is invalid.
NET_DVR_ERR_LANE_NO_REPEAT | 1406 | The overlaid lane number is repeated.
NET_DVR_ERR_PRAREA_INVALID | 1407 | The polygon region of license plate recognition does not meet the requirement.
NET_DVR_ERR_LIGHT_NUM_EXCEED | 1408 | The number of traffic lights of the video detection exceeds the max limit.
NET_DVR_ERR_SUBLIGHT_NUM_INVALID | 1409 | The number of the sub traffic lights of video detection is illegal.
NET_DVR_ERR_LIGHT_AREASIZE_INVALID | 1410 | The input area size of the video detection traffic light is illegal.
NET_DVR_ERR_LIGHT_COLOR_INVALID | 1411 | The color of the video detection traffic light is illegal.
NET_DVR_ERR_LIGHT_DIRECTION_INVALID | 1412 | The direction of the video detection traffic light is illegal.
NET_DVR_ERR_LACK_IOABLITY | 1413 | Lack of IO ablity.
NET_DVR_ERR_FTP_PORT | 1414 | FTP port error.
NET_DVR_ERR_FTP_CATALOGUE | 1415 | FTP catalogue error.
NET_DVR_ERR_FTP_UPLOAD_TYPE | 1416 | FTP upload type error.
NET_DVR_ERR_FLASH_PARAM_WRITE | 1417 | Setting param flash write error.
NET_DVR_ERR_FLASH_PARAM_READ | 1418 | Getting param flash read error.
NET_DVR_ERR_PICNAME_DELIMITER | 1419 | Pic name delimiter error.
NET_DVR_ERR_PICNAME_ITEM | 1420 | Pic name item error.
NET_DVR_ERR_PLATE_RECOGNIZE_TYPE | 1421 | Plate recognize type error.
NET_DVR_ERR_CAPTURE_TIMES | 1422 | Capture times error.
NET_DVR_ERR_LOOP_DISTANCE | 1423 | Loop distance error.
NET_DVR_ERR_LOOP_INPUT_STATUS | 1424 | Loop input status error.
NET_DVR_ERR_RELATE_IO_CONFLICT | 1425 | Related IO conflict.
NET_DVR_ERR_INTERVAL_TIME | 1426 | Interval time error.
NET_DVR_ERR_SIGN_SPEED | 1427 | Sign speed error.
NET_DVR_ERR_PIC_FLIP | 1428 | Flip is used.
NET_DVR_ERR_RELATE_LANE_NUMBER | 1429 | Related lane number error.
NET_DVR_ERR_TRIGGER_MODE | 1430 | Trigger mode error.
NET_DVR_ERR_DELAY_TIME | 1431 | Delay time error.
NET_DVR_ERR_EXCEED_RS485_COUNT | 1432 | Exceed RS485 count.
NET_DVR_ERR_RADAR_TYPE | 1433 | Radar type error.
NET_DVR_ERR_RADAR_ANGLE | 1434 | Radar angle error.
NET_DVR_ERR_RADAR_SPEED_VALID_TIME | 1435 | Radar speed valid time error.
NET_DVR_ERR_RADAR_LINE_CORRECT | 1436 | Radar line correct error.
NET_DVR_ERR_RADAR_CONST_CORRECT | 1437 | Radar const correct error.
NET_DVR_ERR_RECORD_PARAM | 1438 | Record param error.
NET_DVR_ERR_LIGHT_WITHOUT_COLOR_AND_DIRECTION | 1439 | Light number and other param error.
NET_DVR_ERR_LIGHT_WITHOUT_DETECTION_REGION | 1440 | Light number and detection region error.
NET_DVR_ERR_RECOGNIZE_PROVINCE_PARAM | 1441 | Plate recognize Province param error.
NET_DVR_ERR_SPEED_TIMEOUT | 1442 | IO Speed TimeOut Param error.
NET_DVR_ERR_NTP_TIMEZONE | 1443 | NTP TimeZone Param error.
NET_DVR_ERR_NTP_INTERVAL_TIME | 1444 | NTP Interval Time error.
NET_DVR_ERR_NETWORK_CARD_NUM | 1445 | Network Card Num error.
NET_DVR_ERR_DEFAULT_ROUTE | 1446 | Default Route error.
NET_DVR_ERR_BONDING_WORK_MODE | 1447 | Banding Work Mode error.
NET_DVR_ERR_SLAVE_CARD | 1448 | Slave Card error.
NET_DVR_ERR_PRIMARY_CARD | 1449 | Primary Card error.
NET_DVR_ERR_DHCP_PPOE_WORK | 1450 | DHCP and PPOE not Meanwhile start.
NET_DVR_ERR_NET_INTERFACE | 1451 | Net Interface invalid.
NET_DVR_ERR_MTU | 1452 | MTU Param invalid.
NET_DVR_ERR_NETMASK | 1453 | Netmask address invalid.
NET_DVR_ERR_IP_INVALID | 1454 | IP address invalid.
NET_DVR_ERR_MULTICAST_IP_INVALID | 1455 | Multicast IP address invalid.
NET_DVR_ERR_GATEWAY_INVALID | 1456 | Gateway address invalid.
NET_DVR_ERR_DNS_INVALID | 1457 | DNS Param invalid.
NET_DVR_ERR_ALARMHOST_IP_INVALID | 1458 | AlarmHost IP invalid.
NET_DVR_ERR_IP_CONFLICT | 1459 | IP address Conflict.
NET_DVR_ERR_NETWORK_SEGMENT | 1460 | IP not support Multi Network segment.
NET_DVR_ERR_NETPORT | 1461 | NetPort param error.
NET_DVR_ERR_PPPOE_NOSUPPORT | 1462 | Unsupport PPPOE.
NET_DVR_ERR_DOMAINNAME_NOSUPPORT | 1463 | Not Support Domain Name.
NET_DVR_ERR_NO_SPEED | 1464 | Speed Not Enabled.
NET_DVR_ERR_IOSTATUS_INVALID | 1465 | IO Status invalid.
NET_DVR_ERR_BURST_INTERVAL_INVALID | 1466 | Burst Interval invalid.
NET_DVR_ERR_RESERVE_MODE | 1467 | Reserve Mode invalid.
NET_DVR_ERR_LANE_NO | 1468 | Lane No error.
NET_DVR_ERR_COIL_AREA_TYPE | 1469 | Coil Area Type error.
NET_DVR_ERR_TRIGGER_AREA_PARAM | 1470 | Trigger Area Param error.
NET_DVR_ERR_SPEED_LIMIT_PARAM | 1471 | Speed Limit Param error.
NET_DVR_ERR_LANE_PROTOCOL_TYPE | 1472 | Lane Protocol Type error.
NET_DVR_ERR_INTERVAL_TYPE | 1473 | Capture Interval Type error.
NET_DVR_ERR_INTERVAL_DISTANCE | 1474 | Capture Interval Distance error.
NET_DVR_ERR_RS485_ASSOCIATE_DEVTYPE | 1475 | Rs485 Associate DevType error.
NET_DVR_ERR_RS485_ASSOCIATE_LANENO | 1476 | Rs485 Associate LaneNo error.
NET_DVR_ERR_LANENO_ASSOCIATE_MULTIRS485 | 1477 | LaneNo Associate MulitRs485 error.
NET_DVR_ERR_LIGHT_DETECTION_REGION | 1478 | Light Detection Region error.
NET_DVR_ERR_DN2D_NOSUPPORT | 1479 | UnSupport Capture Frame 2D Noise Reduction.
NET_DVR_ERR_IRISMODE_NOSUPPORT | 1480 | UnSupport scene Mode.
NET_DVR_ERR_WB_NOSUPPORT | 1481 | UnSupport White Balance Mode.
NET_DVR_ERR_IO_EFFECTIVENESS | 1482 | IO Effectiveness invalid.
NET_DVR_ERR_LIGHTNO_MAX | 1483 | Access Detector Lights Red / Yellow Overrun.
NET_DVR_ERR_LIGHTNO_CONFLICT | 1484 | Access Detector Lights Red / Yellow Conflict.
NET_DVR_ERR_CANCEL_LINE | 1485 | Trigger straight line error.
NET_DVR_ERR_STOP_LINE | 1486 | Subject line area stop line error.
NET_DVR_ERR_RUSH_REDLIGHT_LINE | 1487 | Red light trigger lines error.
NET_DVR_ERR_IOOUTNO_MAX | 1488 | IO out port error.
NET_DVR_ERR_IOOUTNO_AHEADTIME_MAX | 1489 | IO out ahead time error.
NET_DVR_ERR_IOOUTNO_IOWORKTIME | 1490 | IO out inwork time error.
NET_DVR_ERR_IOOUTNO_FREQMULTI | 1491 | IO out frequency multiplication error.
NET_DVR_ERR_IOOUTNO_DUTYRATE | 1492 | IO out duty rate error.
NET_DVR_ERR_VIDEO_WITH_EXPOSURE | 1493 | IO out work mode error.
NET_DVR_ERR_PLATE_BRIGHTNESS_WITHOUT_FLASHDET | 1494 | Plate enable in plate compensate mode on.
NET_DVR_ERR_RECOGNIZE_TYPE_PARAM | 1495 | Recognize Type error.
NET_DVR_ERR_PALTE_RECOGNIZE_AREA_PARAM | 1496 | Plate Recognize Area Param error.
NET_DVR_ERR_PORT_CONFLICT | 1497 | Port Conflict.
NET_DVR_ERR_LOOP_IP | 1498 | IP cannot be the loopback address.
NET_DVR_ERR_DRIVELINE_SENSITIVE | 1499 | Driveline sensitivity error.
VQD错误码 |  |
NET_ERR_VQD_TIME_CONFLICT | 1500 | The time period conflict.
NET_ERR_VQD_PLAN_NO_EXIST | 1501 | The diagnostic plan of VQD dese not exist.
NET_ERR_VQD_CHAN_NO_EXIST | 1502 | The channel dese not exist.
NET_ERR_VQD_CHAN_MAX | 1503 | The total number of VQD plans exceeds the max limit.
NET_ERR_VQD_TASK_MAX | 1504 | The total number of VQD tasks exceeds the max limit.
抓拍机错误码新增 |  |
NET_DVR_ERR_EXCEED_MAX_CAPTURE_TIMES | 1600 | Capture times exceed 2 in flash mode.
NET_DVR_ERR_REDAR_TYPE_CONFLICT | 1601 | Radar type conflict.
NET_DVR_ERR_LICENSE_PLATE_NULL | 1602 | The license plate is null.
NET_DVR_ERR_WRITE_DATABASE | 1603 | Failed to write data into the database.
NET_DVR_ERR_LICENSE_EFFECTIVE_TIME | 1604 | The effective time of licence plate error.
NET_DVR_ERR_PRERECORDED_STARTTIME_LONG | 1605 | The pre recorded start time is greater than the number of illegal capture.
NET_DVR_ERR_TRIGGER_RULE_LINE | 1606 | Trigger rule line error.
NET_DVR_ERR_LEFTRIGHT_TRIGGERLINE_NOTVERTICAL | 1607 | Left and right trigger line is not vertical.
NET_DVR_ERR_FLASH_LAMP_MODE | 1608 | Flash lamp mode error.
NET_DVR_ERR_ILLEGAL_SNAPSHOT_NUM | 1609 | Illegal capture number error.
NET_DVR_ERR_ILLEGAL_DETECTION_TYPE | 1610 | Illegal detection type error.
NET_DVR_ERR_POSITIVEBACK_TRIGGERLINE_HIGH | 1611 | Positive back to trigger line height error.
NET_DVR_ERR_MIXEDMODE_CAPTYPE_ALLTARGETS | 1612 | Mixed mode only supports capture type all targets.
NET_DVR_ERR_CARSIGNSPEED_GREATERTHAN_LIMITSPEED | 1613 | Car sign speed greater than speed limit value.
NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_LIMITSPEED | 1614 | Big car sign speed limit greater than speed limit value.
NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_CARSIGNSPEED | 1615 | Big car sign speed limit is greater than the car sign speed limit value.
NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_CARLIMITSPEED | 1616 | Big car speed limit value is greater than the car speed limit value.
NET_DVR_ERR_BIGCARLOWSPEEDLIMIT_GREATERTHAN_CARLOWSPEEDLIMIT | 1617 | Big car low speed limit value is greater than the car low speed limit value.
NET_DVR_ERR_CARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED | 1618 | Car speed limit greater than exception high speed value.
NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED | 1619 | Big car speed limit greater than exception high speed value.
NET_DVR_ERR_STOPLINE_MORETHAN_TRIGGERLINE | 1620 | Stopping more than straight lines trigger lines.
门禁主机错误码 |  |
NET_ERR_TIME_OVERLAP | 1900 | The time period is overlapped.
NET_ERR_HOLIDAY_PLAN_OVERLAP | 1901 | The holiday plan is overlapped.
NET_ERR_CARDNO_NOT_SORT | 1902 | The card number is not sorted.
NET_ERR_CARDNO_NOT_EXIST | 1903 | The card number is not existed.
NET_ERR_ILLEGAL_CARDNO | 1904 | The card number is false.
NET_ERR_ZONE_ALARM | 1905 | The zone is armed(the modification of parameters is not allowed)
NET_ERR_ZONE_OPERATION_NOT_SUPPORT | 1906 | The zone does not support the operation.
NET_ERR_INTERLOCK_ANTI_CONFLICT | 1907 | Both the multi-door interlocking and anti-sneak configuration are false.
NET_ERR_DEVICE_CARD_FULL | 1908 | The card is full(return when up to 10W).
NET_ERR_HOLIDAY_GROUP_DOWNLOAD | 1909 | Holiday group download error.
NET_ERR_LOCAL_CONTROL_OFF | 1910 | Local control off.
NET_ERR_LOCAL_CONTROL_DISADD | 1911 | Local control disadd.
NET_ERR_LOCAL_CONTROL_HASADD | 1912 | Local control hasadd.
NET_ERR_LOCAL_CONTROL_DOORNO_CONFLICT | 1913 | Local control doorNO conflict.
NET_ERR_LOCAL_CONTROL_COMMUNICATION_FAIL | 1914 | Local control communication fail.
NET_ERR_OPERAND_INEXISTENCE | 1915 | Operand inexistence.
NET_ERR_LOCAL_CONTROL_OVER_LIMIT | 1916 | Local control over limit.
NET_ERR_DOOR_OVER_LIMIT | 1917 | Door over limit.
NET_ERR_ALARM_OVER_LIMIT | 1918 | Alarm over limit.
NET_ERR_LOCAL_CONTROL_ADDRESS_INCONFORMITY_TYPE | 1919 | Local control address inconformity type.
NET_ERR_NOT_SUPPORT_ONE_MORE_CARD | 1920 | Device not support one more card.
NET_ERR_DELETE_NO_EXISTENCE_FACE | 1921 | NET_ERR_DELETE_NO_EXISTENCE_FACE*/"Delete no existence face.
可视对讲错误码 |  |
NET_DVR_ERR_OUTDOOR_COMMUNICATION | 1950 | Communication the door machine abnormality.
NET_DVR_ERR_ROOMNO_UNDEFINED | 1951 | Not configured room no.
NET_DVR_ERR_NO_CALLING | 1952 | No call.
NET_DVR_ERR_RINGING | 1953 | Ring the bell.
NET_DVR_ERR_IS_CALLING_NOW | 1954 | Is calling now.
NET_DVR_ERR_LOCK_PASSWORD_WRONG | 1955 | Intelligent lock password mistake.
NET_DVR_ERR_CONTROL_LOCK_FAILURE | 1956 | Switch lock failure.
NET_DVR_ERR_CONTROL_LOCK_OVERTIME | 1957 | Switch lock timeout.
NET_DVR_ERR_LOCK_DEVICE_BUSY | 1958 | Intelligent lock device is busy.
NET_DVR_ERR_UNOPEN_REMOTE_LOCK_FUNCTION | 1959 | Remote lock function is not open.
其他错误码 |  |
NET_DVR_ERR_FILE_NOT_COMPLETE | 2100 | The downloaded file is incomplete.
NET_DVR_ERR_IPC_EXIST | 2101 | The IPC has been existed.
NET_DVR_ERR_ADD_IPC | 2102 | The channel has added one IPC.
NET_DVR_ERR_OUT_OF_RES | 2103 | Out of network bandwidth capacity.
NET_DVR_ERR_CONFLICT_TO_LOCALIP | 2104 | IP conflict between IPC and DVR.
NET_DVR_ERR_IP_SET | 2105 | Illegal IP.
NET_DVR_ERR_PORT_SET | 2106 | Illegal port.
NET_ERR_WAN_NOTSUPPORT | 2107 | Not in the same WLAN, not support security question config or export GUID.
NET_ERR_MUTEX_FUNCTION | 2108 | Mutual exclusion function error.
NET_ERR_QUESTION_CONFIGNUM | 2109 | Security question config amount error.
NET_ERR_FACECHAN_NORESOURCE | 2110 | Face intelligent channel resource has run out.
NET_ERR_DATA_CALLBACK | 2111 | Data is Callbacking.
NET_DVR_SMD_ENCODING_NORESOURSE | 2116 | SMD insufficient encoding resources.
NET_DVR_SMD_DECODING_NORESOURSE | 2117 | SMD insufficient decoding resources.
NET_DVR_FACELIB_DATA_PROCESSING | 2118 | Facelib data is being processed.
NET_DVR_ERR_LARGE_TIME_DIFFRENCE | 2119 | Too large time difference between device and server.
NET_DVR_NO_SUPPORT_WITH_PLAYBACK | 2120 | Open the playback,this function is not supported.
NET_DVR_CHANNEL_NO_SUPPORT_WITH_SMD | 2121 | The channel has opened SMD,this function is not supported.
NET_DVR_CHANNEL_NO_SUPPORT_WITH_FD | 2122 | The channel has opened Face snap,this function is not supported.
NET_DVR_ILLEGAL_PHONE_NUMBER | 2123 | The phone number is illegal.
NET_DVR_ILLEGAL_CERITIFICATE_NUMBER | 2124 | The certificate number is illegal.
NET_DVR_ERR_CHANNEL_RESOLUTION_NO_SUPPORT | 2125 | The resolving power of this chanel is not supported.
NET_DVR_ERR_CHANNEL_COMPRESSION_NO_SUPPORT | 2126 | The encoding format of this chanel is not supported.
NET_DVR_INSUFFICIENT_DEEP_LEARNING_RESOURCES | 2146 | Deep learning resources exceed limits.
NET_DVR_PANEL_MODE_NOT_CONFIG | 2153 | The panel mode is not configured.
NET_DVR_DETECT_REGION_RANGE_INVALID | 2181 | Detect Range Invalid.
NET_DVR_CHANNEL_CAPTURE_PICTURE_FAILURE | 2182 | Channel Capture Picture Failure.
NET_DVR_ERR_NOTSUPPORT_DEICING | 3001 | Not support Deicing.
NET_DVR_ERR_THERMENABLE_CLOSE | 3002 | Thermometry is not enabled.
NET_DVR_ERR_PANORAMIC_LIMIT_OPERATED | 3004 | Panoramic view and position limit can not be operated at the same time.
NET_DVR_ERR_SMARTH264_ROI_OPERATED | 3005 | SmartH264 and ROI can not be operated at the same time.
NET_DVR_ERR_RULENUM_LIMIT | 3006 | Upper limit of rule number.
NET_DVR_ERR_LASER_DEICING_OPERATED | 3007 | Laser and deicing cannot be operated at the same time.
NET_DVR_ERR_OFFDIGITALZOOM_OR_MINZOOMLIMIT | 3008 | Turn off the digital zoom function or set the zoom limit to the minimum.
NET_DVR_RULE_SHIELDMASK_CONFLICT_ERROR | 3013 | Regular zone conflicts with masked zone

RTSP通讯库错误码

错误类型 | 错误值 | 错误信息
NET_DVR_RTSP_ERROR_NOENOUGHPRI | 401 | Authentication failed: if server returns 401, it will change to this error code
NET_DVR_RTSP_ERROR_ALLOC_RESOURCE | 402 | Failed to allocate the resource
NET_DVR_RTSP_ERROR_PARAMETER | 403 | Parameter error
NET_DVR_RTSP_ERROR_NO_URL | 404 | The assigned URL does not exist: when the server returns 404, SDK turns into this error code. E.g. the channel is not available, or the channel does not support sub stream
NET_DVR_RTSP_ERROR_FORCE_STOP | 406 | The user forces to exit midway
NET_DVR_RTSP_GETPORTFAILED | 407 | RTSP port getting error.
NET_DVR_RTSP_DESCRIBERROR | 410 | RTSP DESCRIBE communicate error
NET_DVR_RTSP_DESCRIBESENDTIMEOUT | 411 | Sending RTSP DESCRIBE is timeout.
NET_DVR_RTSP_DESCRIBESENDERROR | 412 | Failed to send RTSP DESCRIBE.
NET_DVR_RTSP_DESCRIBERECVTIMEOUT | 413 | Receiving RTSP DESCRIBE is timeout.
NET_DVR_RTSP_DESCRIBERECVDATALOST | 414 | Receiving data of RTSP DESCRIBE error.
NET_DVR_RTSP_DESCRIBERECVERROR | 415 | Failed to receive RTSP DESCRIBE.
NET_DVR_RTSP_DESCRIBESERVERERR | 416 | RTSP DESCRIBE device returns the error.
NET_DVR_RTSP_SETUPERROR | 420 | (or 419), RTSP SETUP interaction error. Generally, it is that the address(URL) returned by the device is not accessible, or it is rejected by the server
NET_DVR_RTSP_SETUPSENDTIMEOUT | 421 | Sending RTSP SETUP is timeout.
NET_DVR_RTSP_SETUPSENDERROR | 422 | Sending RTSP SETUP error.
NET_DVR_RTSP_SETUPRECVTIMEOUT | 423 | Receiving RTSP SETUP is timeout.
NET_DVR_RTSP_SETUPRECVDATALOST | 424 | Receiving data of RTSP SETUP error.
NET_DVR_RTSP_SETUPRECVERROR | 425 | Failed to receive RTSP SETUP.
NET_DVR_RTSP_OVER_MAX_CHAN | 426 | It exceeds the max connection number of server. or server has not enough resource.
NET_DVR_RTSP_SETUPSERVERERR | 427 | RTSP SETUP device returns the error.
NET_DVR_RTSP_PLAYERROR | 430 | RTSP PLAY interaction error.
NET_DVR_RTSP_PLAYSENDTIMEOUT | 431 | Sending RTSP PLAY is timeout.
NET_DVR_RTSP_PLAYSENDERROR | 432 | Sending RTSP PLAY error.
NET_DVR_RTSP_PLAYRECVTIMEOUT | 433 | Receiving RTSP PLAY is timeout.
NET_DVR_RTSP_PLAYRECVDATALOST | 434 | Receiving data of RTSP PLAY error.
NET_DVR_RTSP_PLAYRECVERROR | 435 | Failed to receive RTSP PLAY.
NET_DVR_RTSP_PLAYSERVERERR | 436 | RTSP PLAY device returns the error.
NET_DVR_RTSP_TEARDOWNERROR | 440 | RTSP TEARDOWN interaction error.
NET_DVR_RTSP_TEARDOWNSENDTIMEOUT | 441 | Sending RTSP TEARDOWN is timeout.
NET_DVR_RTSP_TEARDOWNSENDERROR | 442 | Sending RTSP TEARDOWN error.
NET_DVR_RTSP_TEARDOWNRECVTIMEOUT | 443 | Receiving RTSP TEARDOWN is timeout.
NET_DVR_RTSP_TEARDOWNRECVDATALOST | 444 | Receiving data of RTSP TEARDOWN error.
NET_DVR_RTSP_TEARDOWNRECVERROR | 445 | Failed to receive RTSP TEARDOWN.
NET_DVR_RTSP_TEARDOWNSERVERERR | 446 | RTSP TEARDOWN device returns the error.

软解码库错误码

错误类型 | 错误值 | 错误信息
NET_PLAYM4_NOERROR | 500 | no error
NET_PLAYM4_PARA_OVER | 501 | input parameter is invalid
NET_PLAYM4_ORDER_ERROR | 502 | The order of the function to be called is error
NET_PLAYM4_TIMER_ERROR | 503 | Create multimedia clock failed
NET_PLAYM4_DEC_VIDEO_ERROR | 504 | Decode video data failed
NET_PLAYM4_DEC_AUDIO_ERROR | 505 | Decode audio data failed
NET_PLAYM4_ALLOC_MEMORY_ERROR | 506 | Allocate memory failed
NET_PLAYM4_OPEN_FILE_ERROR | 507 | Open the file failed
NET_PLAYM4_CREATE_OBJ_ERROR | 508 | Create thread or event failed
NET_PLAYM4_CREATE_DDRAW_ERROR | 509 | Create DirectDraw object failed
NET_PLAYM4_CREATE_OFFSCREEN_ERROR | 510 | failed when creating off-screen surface
NET_PLAYM4_BUF_OVER | 511 | buffer is overflow
NET_PLAYM4_CREATE_SOUND_ERROR | 512 | failed when creating audio device
NET_PLAYM4_SET_VOLUME_ERROR | 513 | Set volume failed
NET_PLAYM4_SUPPORT_FILE_ONLY | 514 | The function only support play file
NET_PLAYM4_SUPPORT_STREAM_ONLY | 515 | The function only support play stream
NET_PLAYM4_SYS_NOT_SUPPORT | 516 | System not support
NET_PLAYM4_FILEHEADER_UNKNOWN | 517 | No file header
NET_PLAYM4_VERSION_INCORRECT | 518 | The version of decoder and encoder is not adapted
NET_PALYM4_INIT_DECODER_ERROR | 519 | nitialize decoder failed
NET_PLAYM4_CHECK_FILE_ERROR | 520 | The file data is unknown
NET_PLAYM4_INIT_TIMER_ERROR | 521 | Initialize decoder failed
NET_PLAYM4_BLT_ERROR | 522 | Blt failed
NET_PLAYM4_UPDATE_ERROR | 523 | Update failed
NET_PLAYM4_OPEN_FILE_ERROR_MULTI | 524 | openfile error, streamtype is multi
NET_PLAYM4_OPEN_FILE_ERROR_VIDEO | 525 | openfile error, streamtype is video
NET_PLAYM4_JPEG_COMPRESS_ERROR | 526 | JPEG compress error
NET_PLAYM4_EXTRACT_NOT_SUPPORT | 527 | Don't support the version of this file.
NET_PLAYM4_EXTRACT_DATA_ERROR | 528 | Extract video data failed.

转封装库错误码

错误类型 | 错误值 | 错误信息
NET_CONVERT_ERROR_NOT_SUPPORT | 581 | Convert not support.

语音对讲库错误码

错误类型 | 错误值 | 错误信息
NET_AUDIOINTERCOM_OK | 600 | No error.
NET_AUDIOINTECOM_ERR_NOTSUPORT | 601 | Not support.
NET_AUDIOINTECOM_ERR_ALLOC_MEMERY | 602 | Memory allocation error.
NET_AUDIOINTECOM_ERR_PARAMETER | 603 | Parameter error.
NET_AUDIOINTECOM_ERR_CALL_ORDER | 604 | API calling order error.
NET_AUDIOINTECOM_ERR_FIND_DEVICE | 605 | No audio device
NET_AUDIOINTECOM_ERR_OPEN_DEVICE | 606 | Failed to open the audio device
NET_AUDIOINTECOM_ERR_NO_CONTEXT | 607 | Context error.
NET_AUDIOINTECOM_ERR_NO_WAVFILE | 608 | WAV file error.
NET_AUDIOINTECOM_ERR_INVALID_TYPE | 609 | The type of WAV parameter is invalid
NET_AUDIOINTECOM_ERR_ENCODE_FAIL | 610 | Failed to encode data
NET_AUDIOINTECOM_ERR_DECODE_FAIL | 611 | Failed to decode data
NET_AUDIOINTECOM_ERR_NO_PLAYBACK | 612 | Failed to play audio
NET_AUDIOINTECOM_ERR_DENOISE_FAIL | 613 | Failed to denoise
NET_AUDIOINTECOM_ERR_UNKOWN | 619 | Unknown

Qos流控库错误码

错误类型 | 错误值 | 错误信息
NET_QOS_ERR_SCHEDPARAMS_BAD_MINIMUM_INTERVAL | 678 | Scheduled parameter of minimum interval is bad .
NET_QOS_ERR_SCHEDPARAMS_BAD_FRACTION | 679 | Scheduled parameter of fraction is bad.
NET_QOS_ERR_SCHEDPARAMS_INVALID_BANDWIDTH | 680 | Scheduled parameter of bandwidth is not invalid.
NET_QOS_ERR_PACKET_TOO_BIG | 687 | Packet too big.
NET_QOS_ERR_PACKET_LENGTH | 688 | Packet length error.
NET_QOS_ERR_PACKET_VERSION | 689 | Packet version error.
NET_QOS_ERR_PACKET_UNKNOW | 690 | Packet unknow.
NET_QOS_ERR_OUTOFMEM | 695 | Out of memory.
NET_QOS_ERR_LIB_NOT_INITIALIZED | 696 | Lib not initialized.
NET_QOS_ERR_SESSION_NOT_FOUND | 697 | Session not found.
NET_QOS_ERR_INVALID_ARGUMENTS | 698 | Invalid arguments.
NET_QOS_ERROR | 699 | Qos error.
NET_QOS_OK | 700 | No error.

Remarks

通过NET_DVR_GetLastError函数可获取错误号值。

See Also

NET_DVR_GetLastError


NET_DVR_ActivateDevice

激活设备。

BOOL NET_DVR_ActivateDevice(
  char*                   sDVRIP,
  WORD                    wDVRPort,
  LPNET_DVR_ACTIVATECFG   lpActivateCfg
);

Parameters

sDVRIP
[in] 设备IP地址
wDVRPort
[in] 设备端口
lpActivateCfg
[in] 激活参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

出厂设备需要先激活，然后再使用激活使用的初始密码登录设备。


NET_DVR_Login_V40

用户注册设备（支持异步登录）。

LONG NET_DVR_Login_V40(
  LPNET_DVR_USER_LOGIN_INFO    pLoginInfo,
  LPNET_DVR_DEVICEINFO_V40     lpDeviceInfo
);

Parameters

pLoginInfo
[in] 登录参数，包括设备地址、登录用户、密码等
lpDeviceInfo
[out] 设备信息(同步登录即pLoginInfo中bUseAsynLogin为0时有效)

Return Values

异步登录的状态、用户ID和设备信息通过NET_DVR_USER_LOGIN_INFO结构体中设置的回调函数(fLoginResultCallBack)返回。对于同步登录，接口返回-1表示登录失败，其他值表示返回的用户ID值。用户ID具有唯一性，后续对设备的操作都需要通过此ID实现。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • pLoginInfo中bUseAsynLogin为0时登录为同步模式，接口返回成功即表示登录成功；pLoginInfo中bUseAsynLogin为1时登录为异步模式，登录是否成功在输入参数设置的回调函数中返回。
  • DS-7116、DS-81xx、DS-90xx、DS-91xx等系列设备允许有32个注册用户名，且同时最多允许128个用户注册；DS-80xx等设备允许有16个注册用户名，且同时最多允许128个用户注册。
  • SDK支持2048个注册，返回UserID的取值范围为0~2047。

    • See Also

    NET_DVR_Logout

    Reference Interface

    该接口扩展源于
    NET_DVR_Login_V30


NET_DVR_Logout

用户注销。

BOOL NET_DVR_Logout(
  LONG    lUserID
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

建议使用此接口实现注销功能。

See Also

NET_DVR_Login

Reference Interface

扩展接口可见
NET_DVR_Logout_V30


NET_DVR_RealPlay_V40

实时预览（支持多码流）。

LONG NET_DVR_RealPlay_V40(
  LONG                     lUserID,
  LPNET_DVR_PREVIEWINFO    lpPreviewInfo,
  REALDATACALLBACK         fRealDataCallBack_V30,
  void                     *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpPreviewInfo
[in] 预览参数
fRealDataCallBack_V30
[in] 码流数据回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *REALDATACALLBACK)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄，NET_DVR_RealPlay_V40的返回值
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_AUDIOSTREAMDATA | 3 | 音频数据
NET_DVR_PRIVATE_DATA | 112 | 私有数据,包括智能信息
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRealPlay等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • fRealDataCallBack_V30回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 该接口中的回调函数可以置为空，这样该函数将不回调码流数据给用户，不过用户仍可以通过接口NET_DVR_SetRealDataCallBack或NET_DVR_SetStandardDataCallBack注册捕获码流数据的回调函数以捕获码流数据。
  • 客户端异常离线时，设备端对取流连接的保持时间为10秒。
  • Linux版本SDK开发，预览接口直接传入有效窗口句柄，在预览过程中，改变窗口大小时，需要调用NET_DVR_ChangeWndResolution通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。

See Also

NET_DVR_StopRealPlay NET_DVR_GetRealPlayerIndex NET_DVR_ClientSetVideoEffect
NET_DVR_ClientGetVideoEffect NET_DVR_RigisterDrawFun NET_DVR_OpenSound NET_DVR_OpenSoundShare
NET_DVR_CloseSoundShare NET_DVR_Volume NET_DVR_SetRealDataCallBack
NET_DVR_SetStandardDataCallBack NET_DVR_SaveRealData NET_DVR_StopSaveRealData

Reference Interface

该接口扩展源于
NET_DVR_RealPlay_V30


NET_DVR_StopRealPlay

停止预览。

BOOL NET_DVR_StopRealPlay(
  LONG    lRealHandle
);

Parameters

lRealHandle
[in] 预览句柄，NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_LOADDSSDKPROC_ERROR | 67 | 找不到DsSdk中某个函数入口。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

See Also

NET_DVR_RealPlay_V40 NET_DVR_RealPlay_V30


NET_DVR_GetRealPlayerIndex

获取预览时用来解码和显示的播放器句柄。

int NET_DVR_GetRealPlayerIndex(
  LONG    lRealHandle
);

Parameters

lRealHandle
[in] 预览句柄，NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值

Return Values

－1表示失败，其他值表示播放句柄，接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

用户可以通过返回的句柄自行实现播放库SDK提供的其他功能，详见播放库SDK开发包里面的《播放器SDK编程指南》。

  • 例如，使用PlayM4_GetBMP(LONG nPort,……)、PlayM4_GetJPEG(LONG nPort,……)这两个接口，即可实现将当前预览图像以BMP或JPEG格式抓图保存到内存中：
PlayM4_GetBMP(NET_DVR_GetRealPlayerIndex(),……)
PlayM4_GetJPEG(NET_DVR_GetRealPlayerIndex(),……)
  • 例如，调用PlayM4_RenderPrivateData(NET_DVR_GetRealPlayerIndex(), ……)可以显示或者关闭预览画面上的智能叠加信息。

    • See Also

    NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_ChangeWndResolution

预览窗口发生改变时下发通知给播放库（仅Linux版本适用）。

BOOL NET_DVR_ChangeWndResolution(
  LONG    lRealHandle
);

Parameters

lRealHandle
[in] 预览句柄，NET_DVR_RealPlay_V40的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • Linux版本SDK开发，预览接口直接传入有效窗口句柄，在预览过程中，改变窗口大小时，需要调用该接口通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。

See Also

NET_DVR_RealPlay_V40


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_MAKE_I_FRAME | 3402 | 强制I帧 | NET_DVR_I_FRAME

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

See Also

NET_DVR_Login_V40


NET_DVR_MakeKeyFrame

主码流动态产生一个关键帧。

BOOL NET_DVR_MakeKeyFrame(
  LONG     lUserID,
  DWORD    lChannel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 根据设置的预览参数(NET_DVR_PREVIEWINFO)为主码流、子码流或者其他码流，调用不同的接口或命令强制设备生成I帧，该接口控制主码流强制I帧。子码流强制I帧通过接口NET_DVR_MakeKeyFrameSub实现。
  • 其他码流（比如第三码流、虚拟码流）强制I帧通过接口NET_DVR_RemoteControl(命令：NET_DVR_MAKE_I_FRAME)实现，主码流、子码流强制I帧也可以通过该接口和命令来实现。

    • See Also

    NET_DVR_Login_V40 NET_DVR_RealPlay_V40


NET_DVR_MakeKeyFrameSub

子码流动态产生一个关键帧。

BOOL NET_DVR_MakeKeyFrameSub(
  LONG     lUserID,
  DWORD    lChannel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 根据设置的预览参数(NET_DVR_PREVIEWINFO)为主码流、子码流或者其他码流，调用不同的接口或命令强制设备生成I帧，该接口控制子码流强制I帧。主码流强制I帧通过接口NET_DVR_MakeKeyFrame实现。
  • 其他码流（比如第三码流、虚拟码流）强制I帧通过接口NET_DVR_RemoteControl(命令：NET_DVR_MAKE_I_FRAME)实现，主码流、子码流强制I帧也可以通过该接口和命令来实现。

    • See Also

    NET_DVR_Login_V40 NET_DVR_RealPlay_V40


NET_DVR_ClientGetVideoEffect

获取预览视频显示参数。

BOOL NET_DVR_ClientGetVideoEffect(
  LONG      lRealHandle,
  DWORD     *pBrightValue,
  DWORD     *pContrastValue,
  DWORD     *pSaturationValue,
  DWORD     *pHueValue
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值
pBrightValue
[out] 亮度指针，取值范围[1,10]
pContrastValue
[out] 对比度指针，取值范围[1,10]
pSaturationValue
[out] 饱和度指针，取值范围[1,10]
pHueValue
[out] 色度指针，取值范围[1,10]

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_NOSUPPORT | 23 | 设备不支持。

Remarks

该接口需要在预览的前提下才能调用，但是获取的视频参数均为设备返回，是当前预览所对应通道的亮度、对比度等参数。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_ClientSetVideoEffect

设置预览视频显示参数。

BOOL NET_DVR_ClientSetVideoEffect(
  LONG      lRealHandle,
  DWORD     dwBrightValue,
  DWORD     dwContrastValue,
  DWORD     dwSaturationValue,
  DWORD     dwHueValue
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值
dwBrightValue
[in] 亮度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10
dwContrastValue
[in] 对比度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10
dwSaturationValue
[in] 饱和度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10
dwHueValue
[in] 色度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。

Remarks

该接口需要在预览的前提下才能调用，设置设备上对应通道的视频参数(远程配置设备上的参数，其他客户端相同通道的预览图像也会随之变化)。

SDK4.0及以后版本中，当设置的亮度、对比度等的值超过或低于限制值时接口不返回失败，将取最接近的上下限限制值作为实际的参数值。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_GetVideoEffect

获取预览视频显示参数。

BOOL NET_DVR_GetVideoEffect(
  LONG      lUserID,
  LONG      lChannel,
  DWORD     *pBrightValue,
  DWORD     *pContrastValue,
  DWORD     *pSaturationValue,
  DWORD     *pHueValue
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号，起始通道号为1
pBrightValue
[out] 亮度指针，取值范围[1,10]
pContrastValue
[out] 对比度指针，取值范围[1,10]
pSaturationValue
[out] 饱和度指针，取值范围[1,10]
pHueValue
[out] 色度指针，取值范围[1,10]

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_SetVideoEffect

设置预览视频显示参数。

BOOL NET_DVR_SetVideoEffect(
  LONG      lUserID,
  LONG      lChannel,
  DWORD     dwBrightValue,
  DWORD     dwContrastValue,
  DWORD     dwSaturationValue,
  DWORD     dwHueValue
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号，起始通道号为1
dwBrightValue
[in] 亮度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10
dwContrastValue
[in] 对比度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10
dwSaturationValue
[in] 饱和度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10
dwHueValue
[in] 色度，取值范围[1,10]，小于1的值默认为1，大于10的值默认为10

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_RigisterDrawFun

预览画面叠加字符和图像，Linux下无此接口。

BOOL NET_DVR_RigisterDrawFun(
  LONG        lRealHandle,
  fDrawFun    cbDrawFun,
  DWORD       dwUser
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
cbDrawFun
[in] 画图回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fDrawFun)(
  LONG      lRealHandle,
  HDC       hDc,
  DWORD     dwUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄
hDc
[out] 画图DC
dwUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口主要完成注册回调函数，获得当前表面的device context。用户可以在这个DC上画图或写字，就好像在窗口的客户区DC上绘图，但这个DC不是窗口客户区的DC，而是播放器DirectDraw里的Off-Screen表面的DC。

如果调用接口NET_DVR_RealPlay_V30进行预览，参数bBlocked建议置1（TRUE），这样预览接口返回成功即可该调用该接口。 如果参数bBlocked置0，预览接口返回成功但图像还未正常显示，该接口会返回失败，获取错误号为12（调用次序错误）。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_SetAudioMode

设置声音播放模式。

BOOL NET_DVR_SetAudioMode(
  DWORD    dwMode
);

Parameters

dwMode
[in] 声音播放模式：1－独占声卡，单路音频模式；2－共享声卡，多路音频模式

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不调用该接口设置声音播放模式，默认为独占播放。


NET_DVR_OpenSound

独占声卡模式下开启声音。

BOOL NET_DVR_OpenSound(
  LONG    lRealHandle
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

如果当前是共享模式播放，调用该接口将返回失败。以独占方式只能打开一路通道播放，即依次打开多个通道时仅打开最后一路。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30 NET_DVR_CloseSound


NET_DVR_CloseSound

独占声卡模式下关闭声音。

BOOL NET_DVR_CloseSound(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_AUDIO_MODE_ERROR | 42 | 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_PLAYERFAILED | 51 | 调用播放库中某个函数失败。

See Also

NET_DVR_OpenSound


NET_DVR_OpenSoundShare

共享声卡模式下开启声音。

BOOL NET_DVR_OpenSoundShare(
  LONG    lRealHandle
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30 NET_DVR_CloseSoundShare


NET_DVR_CloseSoundShare

共享声卡模式下关闭声音。

BOOL NET_DVR_CloseSoundShare(
  LONG   lRealHandle
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_AUDIO_MODE_ERROR | 42 | 声卡模式错误。当前打开声音播放模式与实际设置的模式不符出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

Remarks

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30 NET_DVR_OpenSoundShare


NET_DVR_Volume

调节播放音量。

BOOL NET_DVR_Volume(
  LONG    lRealHandle,
  WORD    wVolume
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
wVolume
[in] 音量，取值范围[0,0xffff]

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_SetRealDataCallBack

注册回调函数，捕获实时码流数据。

BOOL NET_DVR_SetRealDataCallBack(
  LONG                 lRealHandle,
  fRealDataCallBack    cbRealDataCallBack,
  DWORD                dwUser
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
cbRealDataCallBack
[in] 码流数据回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRealDataCallBack)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  DWORD     dwUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_AUDIOSTREAMDATA | 3 | 音频数据
NET_DVR_PRIVATE_DATA | 112 | 私有数据,包括智能信息
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
dwUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • cbRealDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 此函数包括开始和停止用户处理SDK捕获的数据，当回调函数cbRealDataCallBack设为非NULL值时，表示回调和处理数据；当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头，供后续解码使用，之后回调的是压缩的码流。回调数据最大为256K字节。

    • Example

    由用户自行处理回调得到的码流数据，此处以软解显示为例，代码中带有PlayM4_的函数参见播放库SDK开发包里面的《播放器SDK编程指南》

    #include <stdio.h>
#include <iostream>
#include <time.h>
#include "plaympeg4.h"
using namespace std;

LONG lPort; //全局的播放库port号

void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser)
{
    HWND hWnd = GetConsoleWindow();

    switch (dwDataType)
    {
    case NET_DVR_SYSHEAD: //系统头

        if (!PlayM4_GetPort(&lPort))  //获取播放库未使用的通道号
        {
            break;
        }
        //m_iPort = lPort; //第一次回调的是系统头，将获取的播放库port号赋值给全局port，下次回调数据时即使用此port号播放
        if (dwBufSize > 0)
        {
            if (!PlayM4_SetStreamOpenMode(lPort, STREAME_REALTIME))  //设置实时流播放模式
            {
                break;
            }

            if (!PlayM4_OpenStream(lPort, pBuffer, dwBufSize, 1024*1024)) //打开流接口
            {
                break;
            }

            if (!PlayM4_Play(lPort, hWnd)) //播放开始
            {
                break;
            }
        }
    case NET_DVR_STREAMDATA:   //码流数据
        if (dwBufSize > 0 && lPort != -1)
        {
            if (!PlayM4_InputData(lPort, pBuffer, dwBufSize))
            {
                break;
            }
        }
    }
}

void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
{
    char tempbuf[256] = {0};
    switch(dwType)
    {
    case EXCEPTION_RECONNECT:    //预览时重连
    printf("----------reconnect--------%d\n", time(NULL));
    break;
    default:
    break;
    }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();

  //---------------------------------------
  // 注册设备
  LONG lUserID;
  NET_DVR_DEVICEINFO_V30 struDeviceInfo;
  lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo);
  if (lUserID < 0)
  {
       printf("Login error, %d\n", NET_DVR_GetLastError());
       NET_DVR_Cleanup();
       return;
  }

  //---------------------------------------
  //设置异常消息回调函数
  NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);

  //---------------------------------------
  //启动预览并设置回调数据流
  LONG lRealPlayHandle;
  NET_DVR_CLIENTINFO ClientInfo = {0};
  ClientInfo.hPlayWnd = NULL;         //需要SDK解码时句柄设为有效值，仅取流不解码时可设为空
  ClientInfo.lChannel     = 1;       //预览通道号
  ClientInfo.lLinkMode    = 0;       //最高位(31)为0表示主码流，为1表示子码流0～30位表示连接方式：0－TCP方式；1－UDP方式；2－多播方式；3－RTP方式;
  ClientInfo.sMultiCastIP = NULL;   //多播地址，需要多播预览时配置

  BOOL bPreviewBlock = false;       //请求码流过程是否阻塞，0：否，1：是
  lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, NULL, NULL, 0);

  if (lRealPlayHandle < 0)
  {
      printf("NET_DVR_RealPlay_V30 error\n");
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  if (!NET_DVR_SetRealDataCallBack(lRealPlayHandle, g_RealDataCallBack_V30, 0))
  {
      printf("NET_DVR_SetRealDataCallBack error\n");
  }

  //---------------------------------------
  //关闭预览
  NET_DVR_StopRealPlay(lRealPlayHandle);
  //注销用户
  NET_DVR_Logout_V30(lUserID);
  NET_DVR_Cleanup();

  return;
}

    See Also

    NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_SetStandardDataCallBackEx

注册回调函数，捕获实时码流数据（标准码流）。

BOOL NET_DVR_SetStandardDataCallBack(
  LONG                 lRealHandle,
  fStdDataCallBack     cbStdDataCallBack,
  void                 *pUser
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
cbStdDataCallBack
[in] 标准码流回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fStdDataCallBack)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 音视频复合流数据
NET_DVR_STD_VIDEODATA | 4 | 标准视频流数据(标准264、MPEG4)
NET_DVR_STD_AUDIODATA | 5 | 标准音频流数据(G722音频数据)
NET_DVR_PRIVATE_DATA | 112 | 私有数据，包括智能信息叠加等
其他 | 0x00-G711U音频，0x04-G723音频，0x08-G711A音频，0x0b-PCM16音频，0x0e-Mpeg(MP2L2)音频，0x12-G729音频，0x1A-MJPEG视频，0x68-AAC音频，等 | 标准RTP的pyload类型，不做转换，码流解码显示时所有类型对应的数据都需要送入播放库
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • cbStdDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 此函数包括开始和停止用户处理SDK捕获的数据，当回调函数cbStdDataCallBack设为非NULL值时，表示回调和处理数据；当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头，供后续解码使用，之后回调的是标准码流（含12字节的RTP头）。
  • 标准码流回调需要设备支持。

    • See Also

    NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_SetESRealPlayCallBack

设置预览裸码流帧数据回调函数。

BOOL NET_DVR_SetESRealPlayCallBack(
  LONG               lRealHandle,
  fPlayESCallBack    cbPlayESCallBack,
  void               *pUser
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay_V40的返回值
cbPlayESCallBack
[in] 预览裸码流帧数据回调函数，回调获取每一帧裸码流数据
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fPlayESCallBack)(
  LONG                      lPreviewHandle,
  NET_DVR_PACKET_INFO_EX    *pstruPackInfo,
  void                      *pUser
);

Callback Function Parameters

lPreviewHandle
[out] 当前的预览句柄
pstruPackInfo
[out] 裸码流帧数据，包括帧数据、帧类型、帧号、时间戳等
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 回调函数中不能执行可能会占用时间较长的接口或操作，并且不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 通过该接口可以获取实时流数据，然后进行帧分析，将分析之后的帧数据在回调函数里面返回，每次回调返回一帧裸码流数据（不带封装），包括帧数据、帧类型、时间戳等信息。注意，如果是私有编码的码流或者加密之后的码流，不支持通过该接口设置回调获取裸码流数据。

See Also

NET_DVR_RealPlay_V40


NET_DVR_SaveRealData

捕获数据并存放到指定的文件中。

BOOL NET_DVR_SaveRealData(
  LONG    lRealHandle,
  char    *sFileName
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
sFileName
[in] 文件路径指针，包括文件名，例如："D:\\test.mp4"

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • V5.0.3.2或以后版本，通过该接口保存录像，保存的录像文件数据超过文件最大限制字节数（默认为1024MB），SDK会自动切片，即新建文件进行保存，文件名命名规则为“在接口传入的文件名基础上增加数字标识(例如：*_1.mp4、*_2.mp4)”。可以调用NET_DVR_GetSDKLocalCfg、NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_CFG_TYPE_GENERAL)获取和设置切片模式和文件最大限制字节数。

See Also

NET_DVR_RealPlay_V40 NET_DVR_StopSaveRealData


NET_DVR_SaveRealData_V30

按指定的目标封装格式捕获数据并存放到指定的文件中。

BOOL NET_DVR_SaveRealData_V30(
  LONG    lRealHandle,
  DWORD   dwTransType,
  char    *sFileName
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay_V40等接口的返回值
dwTransType
[in] 存储的码流封装格式，见STREAM_TYPE定义
enum STREAM_TYPE{
  STREAM_PS     = 0x1,
  STREAM_3GPP   = 0x2
}
STREAM_PS
PS文件层，主要用于存储，也可用于传输
STREAM_3GPP
3GPP文件层，用于存储
sFileName
[in] 文件路径指针，绝对路径，包括文件名

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口目前仅对支持RTSP协议取流的设备有效。
  • V5.0.3.2或以后版本，通过该接口保存录像，保存的录像文件数据超过文件最大限制字节数（默认为1024MB），SDK会自动切片，即新建文件进行保存，文件名命名规则为“在接口传入的文件名基础上增加数字标识(例如：*_1.mp4、*_2.mp4)”。可以调用NET_DVR_GetSDKLocalCfg、NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_CFG_TYPE_GENERAL)获取和设置切片模式和文件最大限制字节数。

See Also

NET_DVR_RealPlay_V40 NET_DVR_StopSaveRealData


NET_DVR_StopSaveRealData

停止数据捕获。

BOOL NET_DVR_StopSaveRealData(
  LONG    lRealHandle
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30 NET_DVR_SaveRealData


NET_DVR_SetSDKSecretKey

设置SDK用户码流解密密钥。

BOOL NET_DVR_SetSDKSecretKey(
  LONG    lUserID
  char    *sSecretKey
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sSecretKey
[in] 16字节密钥

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

如果码流设置了加密，预览播放前需要调用该接口设置播放库解密密钥。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_InquestCheckSecretKey

获取设备码流加密状态。

BOOL NET_DVR_InquestCheckSecretKey(
  LONG   lUserID,
  BOOL   *bSecretSet
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
bSecretSet
[out] 指向设备码流加密状态值的指针：TRUE-已设置；FALSE-未设置

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestSetSecretKey
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_AES_KEY | 获取设备AES加密密钥 | 无效 | NET_DVR_AES_KEY_INFO | 6113

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_Login_V30


NET_DVR_InquestSetSecretKey

设置设备码流加密密钥。

BOOL NET_DVR_InquestSetSecretKey(
  LONG                            lUserID,
  LPNET_DVR_INQUEST_SECRET_INFO   pSecretInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pSecretInfo
[in] 密钥信息结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在设置设备码流加密密钥之前，先调用NET_DVR_InquestCheckSecretKey接口获取当前的加密状态。

See Also

NET_DVR_InquestCheckSecretKey
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_InquestGetEncryptState

获取设备码流加密状态。

BOOL NET_DVR_InquestGetEncryptState(
  LONG   lUserID,
  LONG   lChannel,
  BOOL   *bEncrypt
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
bEncrypt
[out] 加密标记：TRUE-加密；FALSE-不加密

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestStreamEncrypt
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_InquestStreamEncrypt

设置设备码流加密密钥。

BOOL NET_DVR_InquestStreamEncrypt(
  LONG   lUserID,
  LONG   lChannel,
  BOOL   bEncrypt
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
bEncrypt
[in] 加密标记：TRUE-加密；FALSE-不加密

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetEncryptState
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_SetCapturePictureMode

设置抓图模式。

BOOL NET_DVR_SetCapturePictureMode(
  DWORD    dwCaptureMode
);

Parameters

dwCaptureMode
[in] 抓图模式
enum tagPDC_PARAM_KEY{
  BMP_MODE    = 0,
  JPEG_MODE   = 1
}CAPTURE_MODE
BMP_MODE
BMP模式
JPEG_MODE
JPEG模式

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口设置抓图模式后，调用预览或者回放抓图接口可抓取相应格式的图片。如果抓图模式为JPEG模式，抓取的是JPEG图片，保存路径后缀应为.jpg，例如：sPicFileName="D:\\test.jpg"；如果抓图模式为BMP模式，抓取的是BMP图片，保存路径后缀应为.bmp，例如：sPicFileName="D:\\test.bmp"。

See Also

NET_DVR_CapturePictureBlock_New NET_DVR_CapturePicture

NET_DVR_CapturePlaybackPictureBlock_New


NET_DVR_CapturePictureBlock_New

预览时抓图并保存在指定内存中。

BOOL NET_DVR_CapturePictureBlock_New(
  LONG     lRealHandle,
  char     *pPicBuf,
  DWORD    dwPicSize,
  DWORD    *lpSizeReturned
);

Parameters

lRealHandle
[in] 预览句柄，NET_DVR_RealPlay_V40的返回值
pPicBuf
[in] 保存图片数据的缓冲区
dwPicSize
[in] 缓冲区大小，分配的缓冲区内存必须大于等于图片数据的大小
lpSizeReturned
[out] 返回图片数据的实际大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口为预览阻塞模式抓图，预览接口必须传入有效的窗口句柄，正常解码显示的时候才能调用该接口进行抓图。图片数据格式支持BMP和JPEG两种，通过NET_DVR_SetCapturePictureMode可以设置数据格式。

See Also

NET_DVR_SetCapturePictureMode NET_DVR_RealPlay_V40

NET_DVR_CapturePictureBlock


NET_DVR_CapturePictureBlock

预览时抓图并保存成图片文件。

BOOL NET_DVR_CapturePictureBlock(
  LONG           lRealHandle,
  char const     *sPicFileName,
  DWORD          dwTimeOut
);

Parameters

lRealHandle
[in] 预览句柄，NET_DVR_RealPlay_V40的返回值
sPicFileName
[in] 保存图片的文件路径，包含文件名，比如："D:/test.bmp"或"D:/test.jpg"
dwTimeOut
[in] 超时时间，目前无效

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口为预览阻塞模式抓图，预览接口必须传入有效的窗口句柄，正常解码显示的时候才能调用该接口进行抓图。图片数据格式支持BMP和JPEG两种，通过NET_DVR_SetCapturePictureMode可以设置数据格式，不同的格式保存文件名使用不同的后缀（.bmp或者.jpg）。

See Also

NET_DVR_SetCapturePictureMode NET_DVR_RealPlay_V40

NET_DVR_CapturePictureBlock_New


NET_DVR_CapturePicture

预览时，单帧数据捕获并保存成图片。

BOOL NET_DVR_CapturePicture(
  LONG    lRealHandle,
  char    *sPicFileName
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
sPicFileName
[in] 保存图象的文件路径（包括文件名）。路径长度和操作系统有关，sdk不做限制，windows默认路径长度小于等于256字节（包括文件名在内）。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

  • 在调用该接口之前可以调用NET_DVR_SetCapturePictureMode设置抓图模式，默认为BMP模式。
    如果抓图模式为BMP模式，抓取的是BMP图片，保存路径后缀应为.bmp，例如：sPicFileName="D:\\test.bmp"；如果抓图模式为JPEG模式，抓取的是JPEG图片，保存路径后缀应为.jpg，例如：sPicFileName="D:\\test.jpg"。
  • 若设备的当前分辨率为2CIF，播放库做了相关处理，抓取的图像为4CIF。
  • 调用NET_DVR_CapturePicture进行抓图，要求在调用NET_DVR_RealPlay_V40等接口时传入非空的播放句柄（播放库解码显示），否则时接口会返回失败，调用次序错误。

See Also

NET_DVR_RealPlay_V40 NET_DVR_SetCapturePictureMode


NET_DVR_CaptureJPEGPicture

单帧数据捕获并保存成JPEG图。

BOOL NET_DVR_CaptureJPEGPicture(
  LONG                 lUserID,
  LONG                 lChannel,
  LPNET_DVR_JPEGPARA   lpJpegPara,
  char                 *sPicFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpJpegPara
[in] JPEG图像参数
sPicFileName
[in] 保存JPEG图的文件路径（包括文件名）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口用于设备的单帧数据捕获，并保存成JPEG图片文件。JPEG抓图功能或者抓图分辨率需要设备支持，如果不支持接口返回失败，错误号23或者29。
  • 对于DVR、NVR设备，参数wPicQuality支持的分辨率值可通过NET_DVR_GetDeviceAbility获取能力集类型PIC_CAPTURE_ABILITY获取(NET_DVR_COMPRESSIONCFG_ABILITY)得到。
  • 对接网络摄像机、门禁主机等设备，设备是否支持JPEG抓图功能或者支持的参数能力，可以通过设备能力集进行判断，对应设备JPEG抓图能力集(JpegCaptureAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY，节点：<ManualCapture>。
  • wPicSize设为2抓取的图片分辨率是4CIF还是D1由设备决定，一般为4CIF(P制:704*576/N制:704*480)。

See Also

NET_DVR_Login_V40


NET_DVR_CaptureJPEGPicture_NEW

单帧数据捕获并保存成JPEG存放在指定的内存空间中。

BOOL NET_DVR_CaptureJPEGPicture_NEW(
  LONG                 lUserID,
  LONG                 lChannel,
  LPNET_DVR_JPEGPARA   lpJpegPara,
  char                 *sJpegPicBuffer,
  DWORD                dwPicSize,
  LPDWORD              lpSizeReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpJpegPara
[in] JPEG图像参数
sJpegPicBuffer
[in] 保存JPEG数据的缓冲区
dwPicSize
[in] 输入缓冲区大小
lpSizeReturned
[out] 返回图片数据的大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口用于设备的单帧数据捕获，并保存到内存中。JPEG抓图功能或者抓图分辨率需要设备支持，如果不支持接口返回失败，错误号23或者29。
  • 对于DVR、NVR设备，参数wPicQuality支持的分辨率值可通过NET_DVR_GetDeviceAbility获取能力集类型PIC_CAPTURE_ABILITY获取(NET_DVR_COMPRESSIONCFG_ABILITY)得到。
  • 对接网络摄像机、门禁主机等设备，设备是否支持JPEG抓图功能或者支持的参数能力，可以通过设备能力集进行判断，对应设备JPEG抓图能力集(JpegCaptureAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY，节点：<ManualCapture>。
  • wPicSize设为2抓取的图片分辨率是4CIF还是D1由设备决定，一般为4CIF(P制:704*576/N制:704*480)。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_CapturePicture_V50

设备抓图接口，支持抓取球型鹰眼自动标定的参照场景图片。

BOOL NET_DVR_CapturePicture_V50(
  LONG                    lUserID,
  LONG                    lChannel,
  LPNET_DVR_PICPARAM_V50    lpPicParam,
  char                    *sPicBuffer,
  DWORD                   dwPicSize,
  LPDWORD                 lpSizeReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpPicParam
[in] 抓图参数，包括图片分辨率、图片类型和抓图类型等
sPicBuffer
[in] 保存图片数据的缓冲区（调用接口前需要自己分配足够大小的缓冲区，用于存放抓取的图片数据）
dwPicSize
[in] 缓冲区大小
lpSizeReturned
[out] 返回图片数据的实际大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口兼容NET_DVR_CaptureJPEGPicture_NEW，抓图参数里面byCapturePicType选择“0- 设备通用抓图”即NET_DVR_CaptureJPEGPicture_NEW抓图功能。
  • 设备是否支持该抓图功能或者支持的参数能力，可以通过设备能力集进行判断，对应设备JPEG抓图能力集(JpegCaptureAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY，节点：<CapturePicture>。

See Also

NET_DVR_Login_V40


NET_DVR_PTZControl

云台控制操作(需先启动图象预览)。

BOOL NET_DVR_PTZControl(
  LONG     lRealHandle,
  DWORD    dwPTZCommand,
  DWORD    dwStop
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZCommand
[in] 云台控制命令，见下表：
宏定义 | 宏定义值 | 含义
LIGHT_PWRON | 2 | 接通灯光电源
WIPER_PWRON | 3 | 接通雨刷开关
FAN_PWRON | 4 | 接通风扇开关
HEATER_PWRON | 5 | 接通加热器开关
AUX_PWRON1 | 6 | 接通辅助设备开关
AUX_PWRON2 | 7 | 接通辅助设备开关
ZOOM_IN | 11 | 焦距变大(倍率变大)
ZOOM_OUT | 12 | 焦距变小(倍率变小)
FOCUS_NEAR | 13 | 焦点前调
FOCUS_FAR | 14 | 焦点后调
IRIS_OPEN | 15 | 光圈扩大
IRIS_CLOSE | 16 | 光圈缩小
TILT_UP | 21 | 云台上仰
TILT_DOWN | 22 | 云台下俯
PAN_LEFT | 23 | 云台左转
PAN_RIGHT | 24 | 云台右转
UP_LEFT | 25 | 云台上仰和左转
UP_RIGHT | 26 | 云台上仰和右转
DOWN_LEFT | 27 | 云台下俯和左转
DOWN_RIGHT | 28 | 云台下俯和右转
PAN_AUTO | 29 | 云台左右自动扫描
TILT_DOWN_ZOOM_IN | 58 | 云台下俯和焦距变大(倍率变大)
TILT_DOWN_ZOOM_OUT | 59 | 云台下俯和焦距变小(倍率变小)
PAN_LEFT_ZOOM_IN | 60 | 云台左转和焦距变大(倍率变大)
PAN_LEFT_ZOOM_OUT | 61 | 云台左转和焦距变小(倍率变小)
PAN_RIGHT_ZOOM_IN | 62 | 云台右转和焦距变大(倍率变大)
PAN_RIGHT_ZOOM_OUT | 63 | 云台右转和焦距变小(倍率变小)
UP_LEFT_ZOOM_IN | 64 | 云台上仰和左转和焦距变大(倍率变大)
UP_LEFT_ZOOM_OUT | 65 | 云台上仰和左转和焦距变小(倍率变小)
UP_RIGHT_ZOOM_IN | 66 | 云台上仰和右转和焦距变大(倍率变大)
UP_RIGHT_ZOOM_OUT | 67 | 云台上仰和右转和焦距变小(倍率变小)
DOWN_LEFT_ZOOM_IN | 68 | 云台下俯和左转和焦距变大(倍率变大)
DOWN_LEFT_ZOOM_OUT | 69 | 云台下俯和左转和焦距变小(倍率变小)
DOWN_RIGHT_ZOOM_IN | 70 | 云台下俯和右转和焦距变大(倍率变大)
DOWN_RIGHT_ZOOM_OUT | 71 | 云台下俯和右转和焦距变小(倍率变小)
TILT_UP_ZOOM_IN | 72 | 云台上仰和焦距变大(倍率变大)
TILT_UP_ZOOM_OUT | 73 | 云台上仰和焦距变小(倍率变小)
dwStop
[in] 云台停止动作或开始动作：0－开始，1－停止

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对云台实施的每一个动作都需要调用该接口两次，分别是开始和停止控制，由接口中的最后一个参数（dwStop）决定。在调用此接口之前需要先开启预览。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

云台默认以最大速度动作。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZControl_Other

云台控制操作(不用启动图象预览)。

BOOL NET_DVR_PTZControl_Other(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    dwPTZCommand,
  DWORD    dwStop
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwPTZCommand
[in] 云台控制命令，见下表：
宏定义 | 宏定义值 | 含义
LIGHT_PWRON | 2 | 接通灯光电源
WIPER_PWRON | 3 | 接通雨刷开关
FAN_PWRON | 4 | 接通风扇开关
HEATER_PWRON | 5 | 接通加热器开关
AUX_PWRON1 | 6 | 接通辅助设备开关
AUX_PWRON2 | 7 | 接通辅助设备开关
ZOOM_IN | 11 | 焦距变大(倍率变大)
ZOOM_OUT | 12 | 焦距变小(倍率变小)
FOCUS_NEAR | 13 | 焦点前调
FOCUS_FAR | 14 | 焦点后调
IRIS_OPEN | 15 | 光圈扩大
IRIS_CLOSE | 16 | 光圈缩小
TILT_UP | 21 | 云台上仰
TILT_DOWN | 22 | 云台下俯
PAN_LEFT | 23 | 云台左转
PAN_RIGHT | 24 | 云台右转
UP_LEFT | 25 | 云台上仰和左转
UP_RIGHT | 26 | 云台上仰和右转
DOWN_LEFT | 27 | 云台下俯和左转
DOWN_RIGHT | 28 | 云台下俯和右转
PAN_AUTO | 29 | 云台左右自动扫描
TILT_DOWN_ZOOM_IN | 58 | 云台下俯和焦距变大(倍率变大)
TILT_DOWN_ZOOM_OUT | 59 | 云台下俯和焦距变小(倍率变小)
PAN_LEFT_ZOOM_IN | 60 | 云台左转和焦距变大(倍率变大)
PAN_LEFT_ZOOM_OUT | 61 | 云台左转和焦距变小(倍率变小)
PAN_RIGHT_ZOOM_IN | 62 | 云台右转和焦距变大(倍率变大)
PAN_RIGHT_ZOOM_OUT | 63 | 云台右转和焦距变小(倍率变小)
UP_LEFT_ZOOM_IN | 64 | 云台上仰和左转和焦距变大(倍率变大)
UP_LEFT_ZOOM_OUT | 65 | 云台上仰和左转和焦距变小(倍率变小)
UP_RIGHT_ZOOM_IN | 66 | 云台上仰和右转和焦距变大(倍率变大)
UP_RIGHT_ZOOM_OUT | 67 | 云台上仰和右转和焦距变小(倍率变小)
DOWN_LEFT_ZOOM_IN | 68 | 云台下俯和左转和焦距变大(倍率变大)
DOWN_LEFT_ZOOM_OUT | 69 | 云台下俯和左转和焦距变小(倍率变小)
DOWN_RIGHT_ZOOM_IN | 70 | 云台下俯和右转和焦距变大(倍率变大)
DOWN_RIGHT_ZOOM_OUT | 71 | 云台下俯和右转和焦距变小(倍率变小)
TILT_UP_ZOOM_IN | 72 | 云台上仰和焦距变大(倍率变大)
TILT_UP_ZOOM_OUT | 73 | 云台上仰和焦距变小(倍率变小)
dwStop
[in] 云台停止动作或开始动作：0－开始，1－停止

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对云台实施的每一个动作都需要调用该接口两次，分别是开始和停止控制，由接口中的最后一个参数（dwStop）决定。在调用此接口之前需要先注册设备。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

云台默认以最大速度动作。

通过NET_DVR_PTZControl控制云台，设备接收到控制命令后云台进行相应的动作，如果操作失败则返回错误，运行正常则返回成功。而通过NET_DVR_PTZControl_Other控制云台，设备接收到控制命令后直接返回成功。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_PTZControlWithSpeed

带速度的云台控制操作(需先启动图象预览)。

BOOL NET_DVR_PTZControlWithSpeed(
  LONG     lRealHandle,
  DWORD    dwPTZCommand,
  DWORD    dwStop,
  DWORD    dwSpeed
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZCommand
[in] 云台控制命令，见下表：
宏定义 | 宏定义值 | 含义
LIGHT_PWRON | 2 | 接通灯光电源
WIPER_PWRON | 3 | 接通雨刷开关
FAN_PWRON | 4 | 接通风扇开关
HEATER_PWRON | 5 | 接通加热器开关
AUX_PWRON1 | 6 | 接通辅助设备开关
AUX_PWRON2 | 7 | 接通辅助设备开关
ZOOM_IN | 11 | 焦距变大(倍率变大)
ZOOM_OUT | 12 | 焦距变小(倍率变小)
FOCUS_NEAR | 13 | 焦点前调
FOCUS_FAR | 14 | 焦点后调
IRIS_OPEN | 15 | 光圈扩大
IRIS_CLOSE | 16 | 光圈缩小
TILT_UP | 21 | 云台上仰
TILT_DOWN | 22 | 云台下俯
PAN_LEFT | 23 | 云台左转
PAN_RIGHT | 24 | 云台右转
UP_LEFT | 25 | 云台上仰和左转
UP_RIGHT | 26 | 云台上仰和右转
DOWN_LEFT | 27 | 云台下俯和左转
DOWN_RIGHT | 28 | 云台下俯和右转
PAN_AUTO | 29 | 云台左右自动扫描
TILT_DOWN_ZOOM_IN | 58 | 云台下俯和焦距变大(倍率变大)
TILT_DOWN_ZOOM_OUT | 59 | 云台下俯和焦距变小(倍率变小)
PAN_LEFT_ZOOM_IN | 60 | 云台左转和焦距变大(倍率变大)
PAN_LEFT_ZOOM_OUT | 61 | 云台左转和焦距变小(倍率变小)
PAN_RIGHT_ZOOM_IN | 62 | 云台右转和焦距变大(倍率变大)
PAN_RIGHT_ZOOM_OUT | 63 | 云台右转和焦距变小(倍率变小)
UP_LEFT_ZOOM_IN | 64 | 云台上仰和左转和焦距变大(倍率变大)
UP_LEFT_ZOOM_OUT | 65 | 云台上仰和左转和焦距变小(倍率变小)
UP_RIGHT_ZOOM_IN | 66 | 云台上仰和右转和焦距变大(倍率变大)
UP_RIGHT_ZOOM_OUT | 67 | 云台上仰和右转和焦距变小(倍率变小)
DOWN_LEFT_ZOOM_IN | 68 | 云台下俯和左转和焦距变大(倍率变大)
DOWN_LEFT_ZOOM_OUT | 69 | 云台下俯和左转和焦距变小(倍率变小)
DOWN_RIGHT_ZOOM_IN | 70 | 云台下俯和右转和焦距变大(倍率变大)
DOWN_RIGHT_ZOOM_OUT | 71 | 云台下俯和右转和焦距变小(倍率变小)
TILT_UP_ZOOM_IN | 72 | 云台上仰和焦距变大(倍率变大)
TILT_UP_ZOOM_OUT | 73 | 云台上仰和焦距变小(倍率变小)
dwStop
[in] 云台停止动作或开始动作：0－开始；1－停止
dwSpeed
[in] 云台控制的速度，用户按不同解码器的速度控制值设置。取值范围[1,7]

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对云台实施的每一个动作都需要调用该接口两次，分别是开始和停止控制，由接口中的最后一个参数（dwStop）决定。在调用此接口之前需要先开启预览。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZControlWithSpeed_Other

带速度的云台控制操作(不用启动图象预览)。

BOOL NET_DVR_PTZControlWithSpeed_Other(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    dwPTZCommand,
  DWORD    dwStop,
  DWORD    dwSpeed
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwPTZCommand
[in] 云台控制命令，见下表：
宏定义 | 宏定义值 | 含义
LIGHT_PWRON | 2 | 接通灯光电源
WIPER_PWRON | 3 | 接通雨刷开关
FAN_PWRON | 4 | 接通风扇开关
HEATER_PWRON | 5 | 接通加热器开关
AUX_PWRON1 | 6 | 接通辅助设备开关
AUX_PWRON2 | 7 | 接通辅助设备开关
ZOOM_IN | 11 | 焦距变大(倍率变大)
ZOOM_OUT | 12 | 焦距变小(倍率变小)
FOCUS_NEAR | 13 | 焦点前调
FOCUS_FAR | 14 | 焦点后调
IRIS_OPEN | 15 | 光圈扩大
IRIS_CLOSE | 16 | 光圈缩小
TILT_UP | 21 | 云台上仰
TILT_DOWN | 22 | 云台下俯
PAN_LEFT | 23 | 云台左转
PAN_RIGHT | 24 | 云台右转
UP_LEFT | 25 | 云台上仰和左转
UP_RIGHT | 26 | 云台上仰和右转
DOWN_LEFT | 27 | 云台下俯和左转
DOWN_RIGHT | 28 | 云台下俯和右转
PAN_AUTO | 29 | 云台左右自动扫描
TILT_DOWN_ZOOM_IN | 58 | 云台下俯和焦距变大(倍率变大)
TILT_DOWN_ZOOM_OUT | 59 | 云台下俯和焦距变小(倍率变小)
PAN_LEFT_ZOOM_IN | 60 | 云台左转和焦距变大(倍率变大)
PAN_LEFT_ZOOM_OUT | 61 | 云台左转和焦距变小(倍率变小)
PAN_RIGHT_ZOOM_IN | 62 | 云台右转和焦距变大(倍率变大)
PAN_RIGHT_ZOOM_OUT | 63 | 云台右转和焦距变小(倍率变小)
UP_LEFT_ZOOM_IN | 64 | 云台上仰和左转和焦距变大(倍率变大)
UP_LEFT_ZOOM_OUT | 65 | 云台上仰和左转和焦距变小(倍率变小)
UP_RIGHT_ZOOM_IN | 66 | 云台上仰和右转和焦距变大(倍率变大)
UP_RIGHT_ZOOM_OUT | 67 | 云台上仰和右转和焦距变小(倍率变小)
DOWN_LEFT_ZOOM_IN | 68 | 云台下俯和左转和焦距变大(倍率变大)
DOWN_LEFT_ZOOM_OUT | 69 | 云台下俯和左转和焦距变小(倍率变小)
DOWN_RIGHT_ZOOM_IN | 70 | 云台下俯和右转和焦距变大(倍率变大)
DOWN_RIGHT_ZOOM_OUT | 71 | 云台下俯和右转和焦距变小(倍率变小)
TILT_UP_ZOOM_IN | 72 | 云台上仰和焦距变大(倍率变大)
TILT_UP_ZOOM_OUT | 73 | 云台上仰和焦距变小(倍率变小)
dwStop
[in] 云台停止动作或开始动作：0－开始；1－停止
dwSpeed
[in] 云台控制的速度，用户按不同解码器的速度控制值设置。取值范围[1,7]

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对云台实施的每一个动作都需要调用该接口两次，分别是开始和停止控制，由接口中的最后一个参数（dwStop）决定。在调用此接口之前需要先注册设备。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

通过NET_DVR_PTZControlWithSpeed控制云台，设备接收到控制命令后云台进行相应的动作，如果操作失败则返回错误，运行正常则返回成功。而通过NET_DVR_PTZControlWithSpeed_Other控制云台，设备接收到控制命令后直接返回成功。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_PTZPreset

云台预置点操作（需先启动预览）。

BOOL NET_DVR_PTZPreset(
  LONG     lRealHandle,
  DWORD    dwPTZPresetCmd,
  DWORD    dwPresetIndex
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZPresetCmd
[in] 操作云台预置点命令，见下表：
宏定义 | 宏定义值 | 含义
SET_PRESET | 8 | 设置预置点
CLE_PRESET | 9 | 清除预置点
GOTO_PRESET | 39 | 转到预置点
dwPresetIndex
[in] 预置点的序号（从1开始），最多支持300个预置点

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZPreset_Other

云台预置点操作。

BOOL NET_DVR_PTZPreset_Other(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    dwPTZPresetCmd,
  DWORD    dwPresetIndex
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwPTZPresetCmd
[in] 操作云台预置点命令，见下表：
宏定义 | 宏定义值 | 含义
SET_PRESET | 8 | 设置预置点
CLE_PRESET | 9 | 清除预置点
GOTO_PRESET | 39 | 转到预置点
dwPresetIndex
[in] 预置点的序号（从1开始），最多支持300个预置点

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

通过NET_DVR_PTZPreset控制云台，设备接收到控制命令后云台进行相应的动作，如果操作失败则返回错误，运行正常才返回成功。而通过NET_DVR_PTZPreset_Other控制云台，设备接收到控制命令后直接返回成功。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PRESET_NAME | 获取预置点名称 | 通道号 | MAX_PRESET_NUM个NET_DVR_PRESET_NAME | 3383

    MAX_PRESET_NUM表示设备支持的最大预置点个数，比如300。

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的设置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_SET_PRESET_NAME | 设置预置点名称 | 通道号 | NET_DVR_PRESET_NAME | 3382

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_PTZCruise

云台巡航操作，需先启动预览。

BOOL NET_DVR_PTZCruise(
  LONG     lRealHandle,
  DWORD    dwPTZCruiseCmd,
  BYTE     byCruiseRoute,
  BYTE     byCruisePoint,
  WORD     wInput
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZCruiseCmd
[in] 操作云台巡航命令，见下表：
宏定义 | 宏定义值 | 含义
FILL_PRE_SEQ | 30 | 将预置点加入巡航序列
SET_SEQ_DWELL | 31 | 设置巡航点停顿时间
SET_SEQ_SPEED | 32 | 设置巡航速度
CLE_PRE_SEQ | 33 | 将预置点从巡航序列中删除
RUN_SEQ | 37 | 开始巡航
STOP_SEQ | 38 | 停止巡航
byCruiseRoute
[in] 巡航路径，最多支持32条路径（序号从1开始）
byCruisePoint
[in] 巡航点，最多支持32个点（序号从1开始）
wInput
[in] 不同巡航命令时的值不同，预置点(最大300)、时间(最大255)、速度(最大40)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZCruise_Other

云台巡航操作。

BOOL NET_DVR_PTZCruise_Other(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    dwPTZCruiseCmd,
  BYTE     byCruiseRoute,
  BYTE     byCruisePoint,
  WORD     wInput
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwPTZCruiseCmd
[in] 操作云台巡航命令，见下表：
宏定义 | 宏定义值 | 含义
FILL_PRE_SEQ | 30 | 将预置点加入巡航序列
SET_SEQ_DWELL | 31 | 设置巡航点停顿时间
SET_SEQ_SPEED | 32 | 设置巡航速度
CLE_PRE_SEQ | 33 | 将预置点从巡航序列中删除
RUN_SEQ | 37 | 开始巡航
STOP_SEQ | 38 | 停止巡航
byCruiseRoute
[in] 巡航路径，最多支持32条路径（序号从1开始）
byCruisePoint
[in] 巡航点，最多支持32个点（序号从1开始）
wInput
[in] 不同巡航命令时的值不同，预置点(最大300)、时间(最大255)、速度(最大40)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

通过NET_DVR_PTZCruise控制云台，设备接收到控制命令后云台进行相应的动作，如果操作失败则返回错误，运行正常则返回成功。而通过NET_DVR_PTZCruise_Other控制云台，设备接收到控制命令后直接返回成功。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_GET_CRUISEPOINT_V40 | 获取巡航路径配置(128个巡航点) | dwCount个NET_DVR_CRUISEPOINT_COND | dwCount个NET_DVR_CRUISEPOINT_V40 | 1018
NET_GET_CRUISEPOINT_V50 | 获取巡航路径配置扩展(256个巡航点 ) | dwCount个NET_DVR_CRUISEPOINT_COND | dwCount个NET_DVR_CRUISEPOINT_V50 | 6714

See Also

NET_DVR_Login_V40


NET_DVR_GetPTZCruise

获取IP快球云台巡航路径。

BOOL NET_DVR_GetPTZCruise(
  LONG                     lUserID,
  LONG                     lChannel,
  LONG                     lCruiseRoute,
  LPNET_DVR_CRUISE_RET     lpCruiseRet
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lCruiseRoute
[in] 巡航路径号
lpCruiseRet
[out] 巡航路径

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CONTROL_PTZ_PATTERN | 3313 | 快球云台花样扫描 | NET_DVR_PTZ_PATTERN

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

此功能是对原接口NET_DVR_PTZTrack和NET_DVR_PTZTrack_Other的扩展，原来只支持一条路径操作，而通过接口NET_DVR_RemoteControl可支持多条路径操作，且支持停止花样扫描、删除单条路径、删除所有路径操作。

See Also

NET_DVR_Login_V40


NET_DVR_PTZTrack

云台花样扫描操作，需先启动预览。

BOOL NET_DVR_PTZTrack(
  LONG     lRealHandle,
  DWORD    dwPTZTrackCmd
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZTrackCmd
[in] 花样扫描操作命令，见下表：
宏定义 | 宏定义值 | 含义
STA_MEM_CRUISE | 34 | 开始记录花样扫描路径
STO_MEM_CRUISE | 35 | 停止记录花样扫描路径
RUN_CRUISE | 36 | 开始执行花样扫描路径

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZTrack_Other

云台花样扫描操作。

BOOL NET_DVR_PTZTrack_Other(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    dwPTZTrackCmd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwPTZTrackCmd
[in] 花样扫描操作命令，见下表：
宏定义 | 宏定义值 | 含义
STA_MEM_CRUISE | 34 | 开始记录花样扫描路径
STO_MEM_CRUISE | 35 | 停止记录花样扫描路径
RUN_CRUISE | 36 | 开始执行花样扫描路径

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

通过NET_DVR_PTZTrack控制云台，设备接收到控制命令后云台进行相应的动作，如果操作失败则返回错误，运行正常才返回成功。而通过NET_DVR_PTZTrack_Other控制云台，设备接收到控制命令后直接返回成功。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_TransPTZ

透明云台操作，需先启动预览。

BOOL NET_DVR_TransPTZ(
  LONG     lRealHandle,
  char     *pPTZCodeBuf,
  DWORD    dwBufSize
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
pPTZCodeBuf
[in] 存放云台控制码缓冲区的指针,
dwBufSize
[in] 云台控制码的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用该接口能直接通过设备将云台控制码信息直接传输给云台设备，而无需配置解码器。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_TransPTZ_Other

透明云台操作。

BOOL NET_DVR_TransPTZ_Other(
  LONG     lUserID,
  LONG     lChannel,
  char     *pPTZCodeBuf,
  DWORD    dwBufSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
pPTZCodeBuf
[in] 存放云台控制码缓冲区的指针
dwBufSize
[in] 云台控制码的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用该接口能直接通过设备将云台控制码信息直接传输给云台设备，而无需配置解码器。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_PTZSelZoomIn

云台图像区域选择放大或缩小。

BOOL NET_DVR_PTZSelZoomIn(
  LONG                      lRealHandle,
  LPNET_DVR_POINT_FRAME     pStruPointFrame
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或者NET_DVR_RealPlay_V30的返回值
pStruPointFrame
[in] 云台图像区域位置信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口实现3D定位功能，需要前端设备的支持。设备是否支持3D定位功能，可以通过能力集进行判断，对应设备云台能力集(PTZAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PTZZoomIn>。


NET_DVR_PTZSelZoomIn_EX

云台图像区域选择放大或缩小。

BOOL NET_DVR_PTZSelZoomIn_EX(
  LONG                      lUserID,
  LONG                      lChannel,
  LPNET_DVR_POINT_FRAME     pStruPointFrame
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
pStruPointFrame
[in] 云台图像区域位置信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口实现3D定位功能，需要前端设备的支持。设备是否支持3D定位功能，可以通过能力集进行判断，对应设备云台能力集(PTZAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PTZZoomIn>。


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PTZLOCKCFG | 获取云台锁定信息 | 通道号 | NET_DVR_PTZ_LOCKCFG | 3287

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的设置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PTZLOCKCFG | 设置云台锁定信息 | 通道号 | NET_DVR_PTZ_LOCKCFG | 3288

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_PTZLOCKINFO | 3290 | 获取云台锁定剩余秒数 | NET_DVR_PTZLOCKINFO_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | 对应结构体：NET_DVR_PTZLOCKINFO
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StopRemoteConfig

关闭长连接配置接口所创建的句柄，释放资源。

BOOL NET_DVR_StopRemoteConfig(
  LONG    lHandle
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_TRACK_PARAMCFG | 获取球机本地菜单规则 | 通道号 | NET_DVR_TRACK_PARAMCFG | 197
NET_DVR_GET_PTZPOS | 获取IP快球PTZ参数 | 通道号 | NET_DVR_PTZPOS | 293
NET_DVR_GET_PTZSCOPE | 获取IP快球PTZ范围参数 | 通道号 | NET_DVR_PTZSCOPE | 294
NET_DVR_GET_MOTION_TRACK_CFG | 获取网络球机跟踪参数 | 通道号 | NET_DVR_MOTION_TRACK_CFG | 3228
NET_DVR_GET_BASICPARAMCFG | 获取PTZ基本参数信息 | 通道号 | NET_DVR_PTZ_BASICPARAMCFG | 3270
NET_DVR_GET_PTZOSDCFG | 获取PTZ OSD配置参数 | 通道号 | NET_DVR_PTZ_OSDCFG | 3272
NET_DVR_GET_POWEROFFMEMCFG | 获取掉电记忆模式参数 | 通道号 | NET_DVR_PTZ_POWEROFFMEMCFG | 3274
NET_DVR_GET_PRIORITIZECFG | 获取云台优先配置信息 | 通道号 | NET_DVR_PTZ_PRIORITIZECFG | 3281
NET_DVR_GET_PRIVACY_MASKS_ENABLECFG | 获取云台隐私遮蔽全局使能 | 通道号 | NET_DVR_PRIVACY_MASKS_ENABLECFG | 3291
NET_DVR_GET_SMARTTRACKCFG | 获取智能运动跟踪配置信息 | 通道号 | NET_DVR_SMARTTRACKCFG | 3293
NET_DVR_GET_PTZ_PARKACTION_CFG | 获取云台守望参数 | 通道号 | NET_DVR_PTZ_PARKACTION_CFG | 3314
NET_DVR_GET_SCH_TASK | 获取云台定时任务 | 通道号 | NET_DVR_TIME_TASK | 3381
NET_DVR_GET_SCHEDULE_AUTO_TRACK_CFG | 获取定时智能跟踪参数 | 通道号 | NET_DVR_SCHEDULE_AUTO_TRACK_CFG | 3400
NET_DVR_GET_PHY_RATIO | 获取物理倍率坐标信息 | 通道号 | NET_DVR_PHY_RATIO | 3606

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的设置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_TRACK_PARAMCFG | 设置球机本地菜单规则 | 通道号 | NET_DVR_TRACK_PARAMCFG | 196
NET_DVR_SET_PTZPOS | 设置IP快球PTZ参数 | 通道号 | NET_DVR_PTZPOS | 292
NET_DVR_SET_MOTION_TRACK_CFG | 设置网络球机跟踪参数 | 通道号 | NET_DVR_MOTION_TRACK_CFG | 3229
NET_DVR_SET_BASICPARAMCFG | 设置PTZ基本参数信息 | 通道号 | NET_DVR_PTZ_BASICPARAMCFG | 3271
NET_DVR_SET_PTZOSDCFG | 设置PTZ OSD配置参数 | 通道号 | NET_DVR_PTZ_OSDCFG | 3273
NET_DVR_SET_POWEROFFMEMCFG | 设置掉电记忆模式参数 | 通道号 | NET_DVR_PTZ_POWEROFFMEMCFG | 3275
NET_DVR_SET_PRIORITIZECFG | 设置云台优先配置信息 | 通道号 | NET_DVR_PTZ_PRIORITIZECFG | 3282
NET_DVR_SET_PRIVACY_MASKS_ENABLECFG | 设置云台隐私遮蔽全局使能 | 通道号 | NET_DVR_PRIVACY_MASKS_ENABLECFG | 3292
NET_DVR_SET_SMARTTRACKCFG | 设置智能运动跟踪配置信息 | 通道号 | NET_DVR_SMARTTRACKCFG | 3294
NET_DVR_SET_PTZ_PARKACTION_CFG | 设置云台守望参数 | 通道号 | NET_DVR_PTZ_PARKACTION_CFG | 3315
NET_DVR_SET_SCH_TASK | 设置云台定时任务 | 通道号 | NET_DVR_TIME_TASK | 3380
NET_DVR_SET_SCHEDULE_AUTO_TRACK_CFG | 设置定时智能跟踪参数 | 通道号 | NET_DVR_SCHEDULE_AUTO_TRACK_CFG | 3401
NET_DVR_SET_PHY_RATIO | 设置物理倍率坐标信息 | 通道号 | NET_DVR_PHY_RATIO | 3607

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_LIMITCFG | 获取限位参数配置 | dwCount个NET_DVR_PTZ_LIMITCOND | dwCount个NET_DVR_PTZ_LIMITCFG | 3276
NET_DVR_GET_PRIVACY_MASKSCFG | 获取云台隐私遮蔽参数 | dwCount个NET_DVR_PRIVACY_MASKS_COND | dwCount个NET_DVR_PRIVACY_MASKS_CFG | 3285

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_LIMITCFG | 设置限位参数配置 | dwCount个NET_DVR_PTZ_LIMITCOND | dwCount个NET_DVR_PTZ_LIMITCFG | 3277
NET_DVR_SET_PRIVACY_MASKSCFG | 设置云台隐私遮蔽参数 | dwCount个NET_DVR_PRIVACY_MASKS_COND | dwCount个NET_DVR_PRIVACY_MASKS_CFG | 3286

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_PTZLIMIT_CTRL | 3278 | 限位参数控制 | NET_DVR_PTZ_LIMITCTRL
NET_DVR_PTZ_CLEARCTRL | 3279 | 清除云台配置信息 | NET_DVR_CLEARCTRL
NET_DVR_PTZ_INITIALPOSITIONCTRL | 3283 | 零方位角控制 | NET_DVR_INITIALPOSITIONCTRL
NET_DVR_PTZ_ZOOMRATIOCTRL | 3289 | 设置跟踪倍率 | NET_DVR_ZOOMRATIOCTRL
NET_DVR_CONTROL_PTZ_MANUALTRACE | 3316 | 手动跟踪定位 | NET_DVR_PTZ_MANUALTRACE
NET_DVR_PTZ_3D_SPEED | 1765 | 3维带速度的云台控制 | NET_DVR_PTZ_3D_SPEED_CONTROL
NET_DVR_CLEAR_IPC_PARAM | 3230 | 清空前端参数 | NET_DVR_IPC_PARAM_TYPE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

dwCommand填入0xffffffff时，表示通道号无效，以NVR本地鼠标指针所在通道为准。

See Also

NET_DVR_Login_V40


NET_DVR_FocusOnePush

辅助聚焦。

BOOL NET_DVR_FocusOnePush(
  LONG    lUserID,
  LONG    lChannel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_ResetLens

恢复镜头电机默认位置。

BOOL NET_DVR_ResetLens(
  LONG    lUserID,
  LONG    lChannel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetPTZProtocol

获取设备支持的云台协议。

BOOL NET_DVR_GetPTZProtocol(
  LONG               lUserID,
  NET_DVR_PTZCFG     *pPtzcfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pPtzcfg
[out] 设备的云台协议结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在早前的设备中规定了一系列云台协议，但在后期的设备（如DS-90xx、DS-91xx、DS-81xx等）仅保留一部分常用的协议，所以在配置前端云台协议时必须调用该接口获取当前设备支持的云台协议。


NET_DVR_UpdateRecordIndex

即时刷新录像索引。

BOOL NET_DVR_UpdateRecordIndex(
  LONG    lUserID,
  DWORD   dwChannel
);

Parameters

lUserID
[in]NET_DVR_Login_V40等登录接口的返回值
dwChannel
[in]通道号

Remarks

和通道相关，需要设备支持，设备默认每2分钟刷新一次。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_InquiryRecordTimeSpan

获取通道录像起止时间。

BOOL NET_DVR_InquiryRecordTimeSpan(
  LONG                                  lUserID,
  DWORD                                 dwChannel,
  LPNET_DVR_RECORD_TIME_SPAN_INQUIRY    lpInquiry,
  LPNET_DVR_RECORD_TIME_SPAN            lpResult
);

Parameters

lUserID
[in]NET_DVR_Login_V40等登录接口的返回值
dwChannel
[in]通道号
lpInquiry
[in]通道录像起止时间查询条件
lpResult
[out]通道录像起止时间查询结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION | 获取月历录像分布，dwCount为0 | NET_DVR_MRD_SEARCH_PARAM | NET_DVR_MRD_SEARCH_RESULT | 6164

See Also

NET_DVR_Login_V30


NET_DVR_FindFile_V50

根据文件类型、时间查找设备录像文件。

LONG NET_DVR_FindFile_V50(
  LONG                    lUserID,
  NET_DVR_FILECOND_V50    pFindCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindCond
[in] 欲查找的文件信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件的信息，调用成功后，就可以调用NET_DVR_FindNextFile_V50接口来获取文件信息。

是否支持UTC时间是RacmCap中的isSupportFindCommonFileByUTC节点获取。

See Also

NET_DVR_FindNextFile_V50 NET_DVR_FindClose_V30

Reference Interface

该接口扩展源于
NET_DVR_FindFile_V40


NET_DVR_FindNextFile_V50

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextFile_V50(
  LONG                      lFindHandle,
  LPNET_DVR_FINDDATA_V50    lpFindData
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFile_V50的返回值
lpFindData
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常
NET_DVR_FIND _TIMEOUT | 1005 | 查找文件超时

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFile_V50得到当前的查找句柄。此接口用于获取一条已查找到的文件信息，若要获取全部的已查找到的文件信息，需要循环调用此接口。通过此接口可以同时获取到与当前录像文件相关的卡号信息和文件是否被锁定的信息。

每次可查询文件最大个数为4000。

See Also

NET_DVR_FindFile_V50

Reference Interface

该接口扩展源于
NET_DVR_FindNextFile_V40


NET_DVR_FindClose_V30

关闭文件查找，释放资源。

BOOL NET_DVR_FindClose_V30(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFile_V40、NET_DVR_FindFileByEvent或者NET_DVR_FindFile_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_FindFile_V40 NET_DVR_FindFile_V30 NET_DVR_FindFileByEvent


NET_DVR_FindFileByCard

根据文件类型、时间和卡号查找设备录像文件。

LONG NET_DVR_FindFileByCard(
  LONG               lUserID,
  LONG               lChannel,
  DWORD              dwFileType,
  int                nFindType,
  BYTE               *sCardNumber,
  LPNET_DVR_TIME     lpStartTime,
  LPNET_DVR_TIME     lpStopTime
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwFileType
[in] 要查找的文件类型：0xFF－全部；0－定时录像；1—移动侦测；2－接近报警；3－出钞报警；4－进钞报警；5—命令触发；6－手动录像；7－震动报警；8-环境报警；9-智能报警
nFindType
[in] 查找类型：0-表示不使用卡号
1-表示按卡号查询，sCardNumber为卡号信息
2-表示按交易类型查询，sCardNumber的第一个字节为下述值：
查询:0x31
取款:0x32
改密:0x33
转帐:0x34
存款:0x35
未知:0x36
3-表示按交易金额,sCardNumber中为交易金额
sCardNumber
[in] 卡号信息
lpStartTime
[in] 文件的开始时间
lpStopTime
[in] 文件的结束时间

Return Values

-1表示失败，其他值作为NET_DVR_FindClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的录像文件的类型、查找时间范围和卡号，调用成功后，就可以调用NET_DVR_FindNextFile接口来获取文件信息。

See Also

NET_DVR_FindNextFile NET_DVR_FindClose


NET_DVR_FindFileByEvent_V50

根据事件查找录像文件。

LONG NET_DVR_FindFileByEvent_V50(
  LONG                                lUserID,
  LPNET_DVR_SEARCH_EVENT_PARAM_V50    lpSearchEventParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSearchEventParam
[in] 欲查找的文件信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindNextEvent_V40等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件(按事件)的信息，调用成功后，就可以调用NET_DVR_FindNextEvent_V50接口来获取文件信息。按事件查找出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_FindNextEvent_V50 NET_DVR_FindClose_V30

Reference Interface

该接口扩展源于
NET_DVR_FindFileByEvent_V40


NET_DVR_FindNextEvent_V50

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextEvent_V50(
  LONG                              lFindHandle,
  LPNET_DVR_SEARCH_EVENT_RET_V50    lpSearchEventRet
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFileByEvent_V40的返回值
lpSearchEventRet
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFileByEvent_V50得到当前的查找句柄。按事件查找出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_FindFileByEvent_V50

Reference Interface

该接口扩展源于
NET_DVR_FindNextEvent_V40


NET_DVR_SmartSearch_V40

开始智能搜索。

LONG NET_DVR_SmartSearch_V40(
  LONG                                lUserID,
  LPNET_DVR_SMART_SEARCH_PARAM_V40    lpSmartSearchParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSmartSearchParam
[in] 智能搜索参数结构

Return Values

-1表示失败，其他值作为NET_DVR_SearchNextInfo、NET_DVR_StopSearch等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要搜索条件信息，调用成功后，就可以调用NET_DVR_SearchNextInfo接口来获取搜索结果。搜索出的录像文件针对开始时间和停止时间，因此只支持按时间回放(NET_DVR_PlayBackByTime_V40)。

See Also

NET_DVR_SearchNextInfo NET_DVR_StopSearch
NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_SmartSearch


NET_DVR_SearchNextInfo

逐个获取搜索到的智能录像信息。

LONG NET_DVR_SearchNextInfo(
  LONG                          lSearchHandle,
  LPNET_DVR_SMART_SEARCH_RET    lpSmartSearchRet
);

Parameters

lSearchHandle
[in] 搜索句柄，NET_DVR_SmartSearch的返回值
lpSmartSearchRet
[out] 保存搜索结果信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

在调用该接口前，必须先调用NET_DVR_SmartSearch得到当前的搜索句柄。按搜索出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_SmartSearch_V40 NET_DVR_SmartSearch


NET_DVR_StopSearch

停止智能搜索。

BOOL NET_DVR_StopSearch(
  LONG   lSearchHandle
);

Parameters

lSearchHandle
[in] 搜索句柄，NET_DVR_SmartSearch的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_SmartSearch_V40 NET_DVR_SmartSearch


NET_DVR_PlayBackByName

按文件名回放录像文件。

LONG NET_DVR_PlayBackByName(
  LONG    lUserID,
  char    *sPlayBackFileName,
  HWND    hWnd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sPlayBackFileName
[in] 回放的文件名，长度不能超过100字节
hWnd
[in] 回放的窗口句柄，若置为空，SDK仍能收到码流数据，但不解码显示

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。
在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。

ISAPI协议登录不支持该接口。

Linux下

对于4.1或者以上的版本的SDK，HWND表示播放窗口的句柄，定义为：
typedef unsigned int HWND;

如果使用Qt进行界面开发，示例如下：

NET_DVR_CLIENTINFO tmpclientinfo;
tmpclientinfo.hPlayWnd = (HWND)m_framePlayWnd->GetPlayWndId();

对于4.1以前的版本的SDK，HWND定义如下：

typedef struct __PLAYRECT
{
int x; //显示框左上角横坐标
int y; //显示框左上角纵坐标
int uWidth; //显示框宽度
int uHeight; //显示框高度
}PLAYRECT;
typedef PLAYRECT HWND;

NET_DVR_CLIENTINFO结构中的hPlayWnd = {0}则SDK仍取流，不进行解码显示，所以仍可以录像，但是不能设置hPlayWnd = 0(即NULL)，否则非法结构地址会导致调用hPlayWnd.x等去判断的时候崩溃。

Linux版本SDK开发，回放接口直接传入有效窗口句柄，在回放过程中，改变窗口大小时，需要调用NET_DVR_PlayBackControl_V40(命令:NET_DVR_CHANGEWNDRESOLUTION)通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_PlayBackByTime_V50

按流ID和时间回放录像文件。

LONG NET_DVR_PlayBackByTime_V50(
  LONG                      lUserID,
  LPNET_DVR_VOD_PARA_V50    pVodPara
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pVodPara
[in] 查找条件

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。
    当回放的是按事件搜索出的录像文件时，由于每个文件都会有预录和延迟的部分，因此在设置本接口的开始和结束时间参数时可以适当提前开始时间和延长结束时间。 建议值：最多10分钟，最少5秒。
    在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。
  • 该接口如果传入了播放句柄而加载播放库失败，实际上失败的，但是接口会返回成功。错误会通过异常方式进行回调(NET_DVR_SetExceptionCallBack_V30)，异常消息类型为：EXCEPTION_PLAYBACK，具体错误需要在异常消息回调函数中调用NET_DVR_GetLastError获取。
  • Linux版本SDK开发，回放接口直接传入有效窗口句柄，在回放过程中，改变窗口大小时，需要调用NET_DVR_PlayBackControl_V40(命令:NET_DVR_CHANGEWNDRESOLUTION)通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。
  • ISAPI协议下，并不完全支持私有协议的相关功能，目前ISAPI协议下，该接口支持的回放控制命令如下：开始播放（NET_DVR_PLAYSTART）、暂停播放（NET_DVR_PLAYPAUSE）、恢复播放（NET_DVR_PLAYRESTART）、快放（NET_DVR_PLAYFAST）、慢放（NET_DVR_PLAYSLOW）、正常速度播放（NET_DVR_PLAYNORMAL）。其他不支持
  • NPQ功能的使用，目前和Smart、变码率的配置是互斥的，如果要使用NPQ功能，必须将码率调整为定码率、关闭Smart功能，否则会返回8111错误码（编码参数存在冲突配置）
  • 目前NPQ回放支持的回放控制命令如下：
    #define NET_DVR_PLAYSTART 1//开始播放
    #define NET_DVR_PLAYSTOP 2//停止播放
    #define NET_DVR_PLAYPAUSE 3//暂停播放
    #define NET_DVR_PLAYRESTART 4//恢复播放
    #define NET_DVR_PLAYFAST 5//快放
    #define NET_DVR_PLAYSLOW 6//慢放
    #define NET_DVR_PLAYSETTIME_V50 28//按绝对时间定位(支持时区扩展)

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_PlayBackByTime


NET_DVR_PlayBackReverseByName

按文件名倒放录像文件。

LONG NET_DVR_PlayBackReverseByName(
  LONG    lUserID,
  char    *sPlayBackFileName,
  HWND    hWnd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sPlayBackFileName
[in] 回放的文件名，长度不能超过100字节
hWnd
[in] 回放的窗口句柄，若置为空，SDK仍能收到码流数据，但不解码显示。

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。
  • Linux 32/64位系统均不支持倒放软解码功能，因此需要将窗口句柄传空，设置回调函数，只取流不解码显示。

    • See Also

    NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
    NET_DVR_Login NET_DVR_Login_V40


NET_DVR_PlayBackReverseByTime_V40

按时间倒放录像文件。

LONG NET_DVR_PlayBackReverseByTime_V40(
  LONG                  lUserID,
  HWND                  hWnd,
  LPNET_DVR_PLAYCOND    pPlayCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
hWnd
[in] 回放的窗口句柄。若置为空，SDK仍能收到码流数据，但不解码显示。Linux系统下不支持倒放解码显示功能，该窗口句柄传空。
pPlayCond
[in] 回放条件

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。
当回放的是按事件搜索出的录像文件时，由于每个文件都会有预录和延迟的部分，因此在设置本接口的开始和结束时间参数时可以适当提前开始时间和延长结束时间。 建议值：最多10分钟，最少5秒。
在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_PlayBackControl_V40

控制录像回放的状态。

BOOL NET_DVR_PlayBackControl_V40(
  LONG      lPlayHandle,
  DWORD     dwControlCode,
  LPVOID    lpInBuffer,
  DWORD     dwInLen,
  LPVOID    lpOutBuffer,
  DWORD     *lpOutLen
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName、NET_DVR_PlayBackReverseByName或NET_DVR_PlayBackByTime_V40、NET_DVR_PlayBackReverseByTime_V40的返回值
dwControlCode
[in] 控制录像回放状态命令，见下表
宏定义 | 宏定义值 | 含义
NET_DVR_PLAYSTART | 1 | 开始播放
NET_DVR_PLAYPAUSE | 3 | 暂停播放
NET_DVR_PLAYRESTART | 4 | 恢复播放（在暂停后调用将恢复暂停前的速度播放）
NET_DVR_PLAYFAST | 5 | 快放
NET_DVR_PLAYSLOW | 6 | 慢放
NET_DVR_PLAYNORMAL | 7 | 正常速度播放（快放或者慢放时调用将恢复单倍速度播放）
NET_DVR_PLAYFRAME | 8 | 单帧放（恢复正常回放使用NET_DVR_PLAYNORMAL命令）
NET_DVR_PLAYSTARTAUDIO | 9 | 打开声音
NET_DVR_PLAYSTOPAUDIO | 10 | 关闭声音
NET_DVR_PLAYAUDIOVOLUME | 11 | 调节音量，取值范围[0,0xffff]
NET_DVR_PLAYSETPOS | 12 | 改变文件回放的进度
NET_DVR_PLAYGETPOS | 13 | 获取按文件或者按时间回放的进度
NET_DVR_PLAYGETTIME | 14 | 获取当前已经播放的时间(按文件回放的时候有效)
NET_DVR_PLAYGETFRAME | 15 | 获取当前已经播放的帧数(按文件回放的时候有效，倒放不支持)
NET_DVR_GETTOTALFRAMES | 16 | 获取当前播放文件总的帧数(按文件回放的时候有效，倒放不支持)
NET_DVR_GETTOTALTIME | 17 | 获取当前播放文件总的时间(按文件回放的时候有效)
NET_DVR_THROWBFRAME | 20 | 丢B帧
NET_DVR_SETSPEED | 24 | 设置码流速度，速度单位：kbps，最小为256kbps，最大为设备带宽
NET_DVR_KEEPALIVE | 25 | 保持与设备的心跳(如果回调阻塞，建议2秒发送一次)
NET_DVR_PLAYSETTIME | 26 | 按绝对时间定位
NET_DVR_PLAYGETTOTALLEN | 27 | 获取按时间回放对应时间段内的所有文件的总长度
NET_DVR_PLAYSETTIME_V50 | 28 | 按绝对时间定位(支持时区扩展)
NET_DVR_PLAY_FORWARD | 29 | 倒放切换为正放
NET_DVR_PLAY_REVERSE | 30 | 正放切换为倒放
NET_DVR_SET_TRANS_TYPE | 32 | 设置转封装类型
NET_DVR_PLAY_CONVERT | 33 | 回放转码
NET_DVR_START_DRAWFRAME | 34 | 开始抽帧回放
NET_DVR_STOP_DRAWFRAME | 35 | 停止抽帧回放
NET_DVR_CHANGEWNDRESOLUTION | 36 | 窗口大小改变时下发通知给播放库（仅Linux版本适用）
NET_DVR_VOD_DRAG_ING | 37 | 拖动中
NET_DVR_VOD_DRAG_END | 38 | 拖动结束
lpInBuffer
[in] 指向输入参数的指针
dwInLen
[in] 输入参数的长度（抽帧回放控制时必须输入正确的长度，当dwInLen为NET_DVR_TIME_EX结构体大小时，按NET_DVR_TIME_EX处理；当dwInLen为NET_DVR_VOD_DRAWFRAME_PARA结构体大小时，按NET_DVR_VOD_DRAWFRAME_PARA处理）
lpOutBuffer
[out] 指向输出参数的指针
lpOutLen
[out] 输出参数的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

  • 该接口中的第三个参数是否需要输入数值与控制命令有关，详见下表所示。
    当控制命令是开始播放（即NET_DVR_PLAYSTART）时，第三个参数的值表示播放当前文件的偏移量，若该值为0表示从文件的起始位置播放，若该值不为0则表示断网续传的文件位置（Byte）。
    • 状态命令宏定义 | 状态命令说明 | lpInBuf | lpOutBuf
NET_DVR_PLAYSTART | 开始播放 | 一个4字节整型的偏移量，通过该偏移量可以实现断网续传功能 | 无
NET_DVR_PLAYSETPOS | 改变回放的进度（按文件回放有效） | 一个4字节整型的进度值（0-100） | 无
NET_DVR_PLAYGETPOS | 获取回放的进度 | 无 | 一个4字节整型的进度值，0~100表示正常的进度值（倒放时进度为100~0），大于100的值表示回放异常。按时间回放时，只支持获取进度值：0、100（结束）、200（异常）
NET_DVR_PLAYGETTIME | 获取当前已播放的时间（按文件回放有效，倒放时不支持） | 无 | 一个4字节整型的时间值
NET_DVR_PLAYGETFRAME | 获取当前已播放的帧数（按文件回放有效，倒放时不支持） | 无 | 一个4字节整型的帧数值
NET_DVR_GETTOTALFRAMES | 获取当前播放文件总的帧数（按文件回放有效） | 无 | 一个4字节整型的帧数值
NET_DVR_GETTOTALTIME | 获取当前播放文件总的时间（按文件回放有效） | 无 | 一个4字节整型的时间值
NET_DVR_THROWBFRAME | 丢B帧 | 一个4字节整型的B帧个数 | 无
NET_DVR_SETSPEED | 设置码流速度 | 一个4字节整型的速度值 | 无
NET_DVR_PLAYSETTIME | 按绝对时间定位回放 | NET_DVR_TIME | 无
NET_DVR_PLAYGETTOTALLEN | 获取按时间回放对应时间段内的所有文件的总长度 | 无 | 一个8字节整型的长度值（单位字节）
NET_DVR_PLAYSETTIME_V50 | 按绝对时间定位回放(支持时区扩展） | NET_DVR_TIME_V50 | 无
NET_DVR_PLAY_FORWARD | 倒放切换为正放 | 应用层解码时需在lpInBuffer输入NET_DVR_TIME表示当前的播放时间,SDK解码可将lpInBuffer置为NULL | 无
NET_DVR_PLAY_REVERSE | 正放切换为倒放 | 应用层解码时需在lpInBuffer输入NET_DVR_TIME表示当前的播放时间,SDK解码可将lpInBuffer置为NULL | 无
NET_DVR_SET_TRANS_TYPE | 设置转封装类型（需在NET_DVR_PLAYSTART之前调用） | 一个4字节整型的封装类型：1-PS，2-TS，3-RTP，5-MP4(3GPP，仅按文件回放支持) | 无
NET_DVR_PLAY_CONVERT | 回放转码（需在NET_DVR_PLAYSTART之前调用） | NET_DVR_COMPRESSION_INFO_V30 | 无
NET_DVR_START_DRAWFRAME | 开始抽帧回放 | NET_DVR_VOD_DRAWFRAME_PARA或NET_DVR_TIME_EX | 无
NET_DVR_STOP_DRAWFRAME | 停止抽帧回放 | NET_DVR_TIME_EX | 无
NET_DVR_CHANGEWNDRESOLUTION | 窗口大小改变时下发通知给播放库（仅Linux版本适用） | 无 | 无
NET_DVR_VOD_DRAG_ING | 拖动中 | NET_DVR_TIME_EX | 无
NET_DVR_VOD_DRAG_END | 拖动结束 | NET_DVR_TIME_EX | 无

    Remarks

    • NET_DVR_START_DRAWFRAME、NET_DVR_STOP_DRAWFRAME回放时控制开始和停止抽帧，需要发送当前回放OSD时间给设备。回放接口如果没有传窗口句柄，回调取流解码，建议调用相关接口清空播放库缓存数据，避免出现延时现象。抽帧回放控制时dwInLen必须输入正确的长度，当dwInLen为NET_DVR_TIME_EX结构体大小时，按NET_DVR_TIME_EX处理；当dwInLen为NET_DVR_VOD_DRAWFRAME_PARA结构体大小时，按NET_DVR_VOD_DRAWFRAME_PARA处理。
    • Linux版本SDK开发，回放接口直接传入有效窗口句柄，在回放过程中，改变窗口大小时，需要调用该接口和NET_DVR_CHANGEWNDRESOLUTION命令通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。
    • 回放快放速度和网络环境以及回放路数以及回放码流分辨率有关系的，NET_DVR_PLAYFAST调用一次，则速度 * 2，具体数据和PC机解码性能是有关系的，可能因为PC解码性能或者网络速度达不到设定的速度。NET_DVR_PLAYSLOW调用一次，则速度/ 2
    • ISAPI协议下，并不完全支持私有协议的相关功能，目前ISAPI协议下，该接口支持的回放控制命令如下：开始播放（NET_DVR_PLAYSTART）、暂停播放（NET_DVR_PLAYPAUSE）、恢复播放（NET_DVR_PLAYRESTART）、快放（NET_DVR_PLAYFAST）、慢放（NET_DVR_PLAYSLOW）、正常速度播放（NET_DVR_PLAYNORMAL）。其他不支持
    • 鼠标按下，调用NET_DVR_VOD_DRAG_ING命令，设备开始给客户回传这个时间点的一帧可以独立播放的数据。这个时候，客户端清空播放缓冲区，SDK收到命令以后也会清空接收缓冲区，直到收到拖动数据时，才继续给客户端回调数据。
    • 鼠标拖动中，客户端持续调用NET_DVR_VOD_DRAG_ING命令，设备持续给客户端回传制定时间点的一帧数据即可。
    • 鼠标松开时，客户端调用NET_DVR_VOD_DRAG_END命令，设备发完这个时间点的一帧数据后，会接着这个时间点给客户端继续发送码流数据。

    See Also

    NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40

    NET_DVR_PlayBackReverseByName NET_DVR_PlayBackReverseByTime_V40

    Reference Interface

    该接口扩展源于

    NET_DVR_PlayBackControl


NET_DVR_StopPlayBack

停止回放录像文件。

BOOL NET_DVR_StopPlayBack(
  LONG    lPlayHandle
);

Parameters

lPlayHandle
[in] 回放句柄，NET_DVR_PlayBackByName、NET_DVR_PlayBackByTime_V40或者NET_DVR_PlayBackReverseByName、NET_DVR_PlayBackReverseByTime_V40的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_LOADDSSDKPROC_ERROR | 67 | 找不到DsSdk中某个函数入口。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40

NET_DVR_PlayBackReverseByName NET_DVR_PlayBackReverseByTime_V40


NET_DVR_PlayBackSaveData

捕获回放的录像数据，并保存成文件。

BOOL NET_DVR_PlayBackSaveData(
  LONG    lPlayHandle,
  char    *sFileName
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName、NET_DVR_PlayBackByTime_V40或者NET_DVR_PlayBackByTime的返回值
sFileName
[in] 保存数据的文件路径（包括文件名）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_CREATEFILE_ERROR | 34 | 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。

Remarks

  • V5.0.3.2或以后版本，通过该接口保存录像，保存的录像文件数据超过文件最大限制字节数（默认为1024MB），SDK会自动切片，即新建文件进行保存，文件名命名规则为“在接口传入的文件名基础上增加数字标识(例如：*_1.mp4、*_2.mp4)”。可以调用NET_DVR_GetSDKLocalCfg、NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_CFG_TYPE_GENERAL)获取和设置切片模式和文件最大限制字节数。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_StopPlayBackSave

停止保存录象数据。

BOOL NET_DVR_StopPlayBackSave(
  LONG     lPlayHandle
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime


NET_DVR_SetPlayDataCallBack_V40

注册回调函数，捕获录像数据。

BOOL NET_DVR_SetPlayDataCallBack_V40(
  LONG                 lPlayHandle,
  fPlayDataCallBack    cbPlayDataCallBack,
  void                 *pUser
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName、NET_DVR_PlayBackByTime_V40或NET_DVR_PlayBackReverseByName、NET_DVR_PlayBackReverseByTime_V40的返回值
fPlayDataCallBack
[in] 录像数据回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fPlayDataCallBack_V40)(
  LONG      lPlayHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

lPlayHandle
[out] 当前的录像播放句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_CHANGE_FORWARD | 10 | 码流改变为正放
NET_DVR_CHANGE_REVERSE | 11 | 码流改变为倒放
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。

Remarks

  • cbPlayDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 此函数包括开始和停止用户处理SDK捕获的数据，当回调函数cbPlayDataCallBack设为非NULL值时，表示回调和处理数据；当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头，供后续解码使用，之后回调的是压缩的码流。

    • See Also

    NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40

    NET_DVR_PlayBackReverseByName NET_DVR_PlayBackReverseByTime_V40

    Reference Interface

    该接口扩展源于
    NET_DVR_SetPlayDataCallBack


NET_DVR_SetPlayBackESCallBack

注册回放裸码流数据回调函数。

BOOL NET_DVR_SetPlayBackESCallBack(
  LONG               lPlayHandle,
  fPlayESCallBack    cbPlayESDataCallBack,
  void               *pUser
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName、NET_DVR_PlayBackByTime_V40或NET_DVR_PlayBackReverseByName、NET_DVR_PlayBackReverseByTime_V40的返回值
cbPlayESDataCallBack
[in] 回放裸码流数据回调函数，回调获取每一帧裸码流数据
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fPlayESCallBack)(
  LONG                      lPlayHandle,
  NET_DVR_PACKET_INFO_EX    *struPackInfo,
  void                      *pUser
);

Callback Function Parameters

lPlayHandle
[out] 当前的录像播放句柄
struPackInfo
[out] 裸码流帧数据，包括帧数据、帧类型、帧号、时间戳等
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 通过该接口可以获取录像码流数据，然后进行帧分析，将分析之后的帧数据在回调函数里面返回，每次回调返回一帧裸码流数据（不带封装），包括帧数据、帧类型、时间戳等信息。注意，如果是私有编码的码流或者加密之后的码流，不支持通过该接口设置回调获取裸码流数据。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40

NET_DVR_PlayBackReverseByName NET_DVR_PlayBackReverseByTime_V40


NET_DVR_FindRecordLabel

搜索录像标签。

LONG NET_DVR_FindRecordLabel(
  LONG                    lUserID,
  LPNET_DVR_FIND_LABEL    lpFindLabel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFindLabel
[in] 欲查找的标签信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindNextLabel等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

回放时，可根据查找到的标签（时间）信息通过NET_DVR_PlayBackControl_V40实现定位操作。
每次最多搜索4000条标签条。

See Also

NET_DVR_FindNextLabel NET_DVR_StopFindLabel


NET_DVR_FindNextLabel

逐个获取搜索到的录像标签。

LONG NET_DVR_FindNextLabel(
  LONG                        lFindHandle,
  LPNET_DVR_FINDLABEL_DATA    lpFindData
);

Parameters

lFindHandle
[in] NET_DVR_FindRecordLabel的返回值
lpFindData
[in] 标签信息

Return Values

-1表示失败，其他值表示当前的获取状态等信息。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取标签信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到标签
NET_DVR_ISFINDING | 1002 | 正在查找，请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的标签，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找标签时异常

Remarks

在调用该接口获取查找录像标签之前，必须先调用NET_DVR_FindRecordLabel得到当前的查找句柄。此接口用于获取一条已查找到的标签信息，若要获取全部的已查找到的标签信息，需要循环调用此接口。

See Also

NET_DVR_FindRecordLabel


NET_DVR_StopFindLabel

停止搜索录像标签。

BOOL NET_DVR_StopFindLabel(
  LONG    lFindHandle
);

Parameters

lFindHandle
[in] NET_DVR_FindRecordLabel的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindRecordLabel


NET_DVR_InsertRecordLabel

添加录像标签。

BOOL NET_DVR_InsertRecordLabel(
  LONG                       lPlayHandle,
  NET_DVR_RECORD_LABEL       *lpRecordLabel,
  NET_DVR_LABEL_IDENTIFY     *lpLableIdentify
);

Parameters

lPlayHandle
[in] NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime的返回值
lpRecordLabel
[in] 录像标签
lpLableIdentify
[out] 添加录像标签后的标识

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

录像标签功能可帮助用户在回放录像时记录下某一时间点的相关人员或现场等信息，以便后续随时根据标签信息，进行搜索和定位录像资料。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime


NET_DVR_ModifyRecordLabel

修改录像标签。

BOOL NET_DVR_ModifyRecordLabel(
  LONG                       lUserID,
  NET_DVR_MOD_LABEL_PARAM    *lpModLabelParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpModLabelParam
[in] 标签修改结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks


NET_DVR_DelRecordLabel

删除录像标签。

BOOL NET_DVR_DelRecordLabel(
  LONG                       lUserID,
  NET_DVR_DEL_LABEL_PARAM    *lpDelLabelParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDelLabelParam
[in] 要删除的标签信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_CapturePlaybackPictureBlock_New

录像回放时抓图并保存在指定内存中。

BOOL NET_DVR_CapturePlaybackPictureBlock_New(
  LONG     lPlayHandle,
  char     *pPicBuf,
  DWORD    dwPicSize,
  DWORD    *lpSizeReturned
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime_V40的返回值
pPicBuf
[in] 保存图片数据的缓冲区
dwPicSize
[in] 缓冲区大小，分配的缓冲区内存必须大于等于图片数据的大小
lpSizeReturned
[out] 返回图片数据的实际大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口为回放阻塞模式抓图，回放接口必须传入有效的窗口句柄，正常回放解码的时候才能调用该接口进行抓图。图片数据格式支持BMP和JPEG两种（通过NET_DVR_SetCapturePictureMode设置数据格式），并且支持在回放暂停状态下抓取图片数据。

See Also

NET_DVR_SetCapturePictureMode NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_PlayBackCaptureFile

录像回放时抓图，并保存在文件中。

BOOL NET_DVR_PlayBackCaptureFile(
  LONG    lPlayHandle,
  char    *sFileName
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime_V40的返回值
sFileName
[in] 保存图片数据的文件路径（包括文件名）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

Remarks

回放时抓下来的图片时间要比抓图时间延后，这是因为预览画面上的OSD时间是解码完成的显示时间，而解码缓冲区会有将近1M左右的数据还没有解出来，要抓取的图片数据是网络缓冲里面的。目前解码库没有直接从解码缓冲区中取出数据的接口。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_GetPlayBackOsdTime

获取录像回放时显示的OSD时间。

BOOL NET_DVR_GetPlayBackOsdTime(
  LONG              lPlayHandle,
  LPNET_DVR_TIME    lpOsdTime
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime_V40的返回值
lpOsdTime
[out] 获取的OSD时间的指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_RefreshPlay

刷新显示回放窗口。

BOOL NET_DVR_RefreshPlay(
  LONG    lPlayHandle
);

Parameters

lPlayHandle
[in] 回放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime_V40的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

Remarks

当用户暂停或者单帧回放时，如果刷新了窗口，则窗口中的图像因为刷新而消失，此时调用这个接口可以重新显示最后一帧画面。此接口只在暂停和单帧播放时有效。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_GetPlayBackPlayerIndex

获取回放时用来解码显示的播放库句柄。

int NET_DVR_GetPlayBackPlayerIndex(
  LONG    lPlayHandle
);

Parameters

lPlayHandle
[in] 回放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime_V40的返回值

Return Values

-1表示失败，其他值表示播放句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

用户可以通过返回的句柄自行实现播放库SDK提供的其他功能，详见播放库SDK开发包里面的《播放器SDK编程指南》。

  • 例如,使用PlayM4_GetBMP(LONG nPort,……)、PlayM4_GetJPEG(LONG nPort,……)这两个接口即可实现将当前回放图像以BMP或JPEG格式抓图保存到内存中：
PlayM4_GetBMP(NET_DVR_GetRealPlayerIndex(),……)
PlayM4_GetJPEG(NET_DVR_GetRealPlayerIndex(),……)
  • 例如，调用PlayM4_RenderPrivateData(NET_DVR_GetRealPlayerIndex(), ……)可以显示或者关闭回放画面上的智能叠加信息。

    • See Also

    NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_RigisterPlayBackDrawFun

回放画面叠加字符和图像，Linux下无此接口。

BOOL NET_DVR_RigisterPlayBackDrawFun(
  LONG        lPlayHandle,
  fDrawFun    cbDrawFun,
  DWORD       dwUser
);

Parameters

lPlayHandle
[in] NET_DVR_PlayBackByName或者NET_DVR_PlayBackByTime_V40的返回值
cbDrawFun
[in] 画图回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fDrawFun)(
  LONG      lPlayHandle,
  HDC       hDc,
  DWORD     dwUser
);

Callback Function Parameters

lPlayHandle
[out] 当前的回放句柄
hDc
[out] 画图DC
dwUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口主要完成注册回调函数，获得当前表面的device context。用户可以在这个DC上画图或写字，就好像在窗口的客户区DC上绘图，但这个DC不是窗口客户区的DC，而是播放器DirectDraw里的Off-Screen表面的DC。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime_V40


NET_DVR_GetFileByName

按文件名下载录像文件。

LONG NET_DVR_GetFileByName(
  LONG    lUserID,
  char    *sDVRFileName,
  char    *sSavedFileName
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
sDVRFileName
[in] 要下载的录像文件名，文件名长度需小于100字节
sSavedFileName
[in] 下载后保存到PC机的文件路径，需为绝对路径（包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopGetFile等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_CREATEFILE_ERROR | 34 | 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

在使用该接口下载录像文件前，可以先调用录像文件查找的接口获取文件名。该接口指定了当前要下载的录像文件，调用成功后，还需要调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现下载。

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopGetFile
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetFileByTime_V40

按时间下载录像文件。

LONG NET_DVR_GetFileByTime_V40(
  LONG                  lUserID,
  char                  *sSavedFileName,
  LPNET_DVR_PLAYCOND    pDownloadCond
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
sSavedFileName
[in] 下载后保存到PC机的文件路径，需为绝对路径（包括文件名）
pDownloadCond
[in] 下载条件

Return Values

-1表示失败，其他值作为NET_DVR_StopGetFile等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_CREATEFILE_ERROR | 34 | 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

  • 该接口指定了当前要下载的录像文件，调用成功后，还需要调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现下载。
  • V5.0.3.2或以后版本，通过该接口保存录像，保存的录像文件数据超过文件最大限制字节数（默认为1024MB），SDK会自动切片，即新建文件进行保存，文件名命名规则为“在接口传入的文件名基础上增加数字标识(例如：*_1.mp4、*_2.mp4)”。可以调用NET_DVR_GetSDKLocalCfg、NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_CFG_TYPE_GENERAL)获取和设置切片模式和文件最大限制字节数。

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopGetFile
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于
NET_DVR_GetFileByTime


NET_DVR_PlayBackControl_V40

控制录像下载的状态。

BOOL NET_DVR_PlayBackControl_V40(
  LONG      lPlayHandle,
  DWORD     dwControlCode,
  LPVOID    lpInBuffer,
  DWORD     dwInLen,
  LPVOID    lpOutBuffer,
  DWORD     *lpOutLen
);

Parameters

lPlayHandle
[in] 下载句柄，NET_DVR_GetFileByName或NET_DVR_GetFileByTime_V40的返回值
dwControlCode
[in] 控制录像下载状态命令，见下表
宏定义 | 宏定义值 | 含义
NET_DVR_PLAYSTART | 1 | 开始下载
NET_DVR_PLAYPAUSE | 3 | 暂停下载
NET_DVR_PLAYRESTART | 4 | 恢复下载
NET_DVR_PLAYSETPOS | 12 | 改变按文件下载的进度（不支持按时间下载）
NET_DVR_PLAYGETPOS | 13 | 获取按文件或者按时间下载的进度
NET_DVR_GETTOTALFRAMES | 16 | 获取当前下载文件总的帧数(按文件下载的时候有效)
NET_DVR_GETTOTALTIME | 17 | 获取当前下载文件总的时间(按文件下载的时候有效)
NET_DVR_SETSPEED | 24 | 设置下载速度，速度单位：kbps，最小为256kbps，最大为设备带宽
NET_DVR_SET_TRANS_TYPE | 32 | 设置转封装类型
NET_DVR_PLAY_CONVERT | 33 | 转码下载
lpInBuffer
[in] 指向输入参数的指针
dwInLen
[in] 输入参数的长度。未使用，保留
lpOutBuffer
[out] 指向输出参数的指针
lpOutLen
[out] 输出参数的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

  • 该接口中的第三个参数是否需要输入数值与控制命令有关，详见下表所示。
    当控制命令是开始下载（即NET_DVR_PLAYSTART）时，第三个参数的值表示下载当前文件的偏移量，若该值为0表示从文件的起始位置下载，若该值不为0则表示断点续传的文件位置（Byte）。
    当命令值为NET_DVR_PLAYGETPOS时，获取文件回放或者下载进度时，0-100表示正常的进度值，大于100的值表示回放或者下载异常。
  • 按时间下载时，只能获取进度值：0、100（结束）、200（异常）。
  • NET_DVR_SET_TRANS_TYPE设置转码类型和NET_DVR_PLAY_CONVERT转码下载需要在开始下载（即NET_DVR_PLAYSTART）之前调用。
    • 状态命令宏定义 | 状态命令说明 | lpInBuf | lpOutBuf
NET_DVR_PLAYSTART | 开始下载 | 一个4字节整型的偏移量 | 无
NET_DVR_PLAYSETPOS | 改变下载的进度 | 一个4字节整型的进度值（0-100） | 无
NET_DVR_PLAYGETPOS | 获取下载的进度 | 无 | 一个4字节整型的进度值（0-100）
NET_DVR_GETTOTALFRAMES | 获取当前下载文件总的帧数（按文件回放有效） | 无 | 一个4字节整型的帧数值
NET_DVR_GETTOTALTIME | 获取当前下载文件总的时间（按文件回放有效） | 无 | 一个4字节整型的时间值
NET_DVR_SETSPEED | 设置下载速度 | 一个4字节整型的速度值 | 无
NET_DVR_SET_TRANS_TYPE | 设置转封装类型 | 一个4字节整型的封装类型：1-PS，2-TS，3-RTP，5-MP4(3GPP，仅按文件下载支持) | 无
NET_DVR_PLAY_CONVERT | 回放转码 | NET_DVR_COMPRESSION_INFO_V30 | 无

    See Also

    NET_DVR_GetFileByName NET_DVR_GetFileByTime_V40

    Reference Interface

    该接口扩展源于

    NET_DVR_PlayBackControl


NET_DVR_StopGetFile

停止下载录像文件。

BOOL NET_DVR_StopGetFile(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 下载句柄，NET_DVR_GetFileByName、NET_DVR_GetFileByTime_V40或NET_DVR_GetFileByTime的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。

See Also

NET_DVR_GetFileByName NET_DVR_GetFileByTime_V40

NET_DVR_GetFileByTime


NET_DVR_GetDownloadPos

获取当前下载录像文件的进度。

int NET_DVR_GetDownloadPos(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 下载句柄，NET_DVR_GetFileByName、NET_DVR_GetFileByTime_V40或NET_DVR_GetFileByTime的返回值

Return Values

-1表示失败；0～100表示下载的进度；100表示下载结束；正常范围0-100，如返回200表明出现网络异常。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

该接口用于获取按文件名下载录像文件时的下载进度。

See Also

NET_DVR_GetFileByName NET_DVR_GetFileByTime_V40

NET_DVR_GetFileByTime


NET_DVR_LockFileByName

按文件名锁定录像文件。

BOOL NET_DVR_LockFileByName(
  LONG    lUserID,
  char    *sLockFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sLockFileName
[in] 要锁定的录像文件名，文件名长度需小于100字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

在使用该接口锁定录像文件前，可以先调用录像文件查找的接口获取文件名。当文件被锁定后，将不会被覆盖。

See Also

NET_DVR_UnlockFileByName NET_DVR_Login NET_DVR_Login_V30


NET_DVR_UnlockFileByName

按文件名解锁录像文件。

BOOL NET_DVR_UnlockFileByName(
  LONG    lUserID,
  char    *sUnlockFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sUnlockFileName
[in] 要解锁的录像文件名

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

在使用该接口锁定录像文件前，可以先调用录像文件查找的接口获取文件名。

See Also

NET_DVR_LockFileByName NET_DVR_Login NET_DVR_Login_V30


NET_DVR_LockFileByTime

对某一时间段录像文件进行加锁。

BOOL NET_DVR_LockFileByTime(
  LONG                     lUserID,
  LPNET_DVR_TIME_LOCK      lpLockPara,
  LPNET_DVR_LOCK_RETURN    lpLockReturn
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpLockPara
[in] 录像加锁参数
lpLockReturn
[out] 录像加锁结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UnLockFileByTime


NET_DVR_UnLockFileByTime

对某一时间段录像文件进行解锁。

BOOL NET_DVR_UnLockFileByTime(
  LONG                     lUserID,
  LPNET_DVR_TIME_LOCK      lpLockPara,
  LPNET_DVR_LOCK_RETURN    lpLockReturn
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpLockPara
[in] 录像解锁参数
lpLockReturn
[out] 录像解锁结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_LockFileByTime


NET_DVR_LockStreamFileByTime

按流ID对某一时间段录像文件进行加锁。

BOOL NET_DVR_LockStreamFileByTime(
  LONG                            lUserID,
  LPNET_DVR_STREAM_TIME_LOCK      lpLockPara,
  LPNET_DVR_LOCK_RETURN           lpLockReturn
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpLockPara
[in] 录像加锁参数
lpLockReturn
[out] 录像加锁结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UnlockStreamFileByTime


NET_DVR_UnlockStreamFileByTime

按流id对某一时间段录像文件进行解锁。

BOOL NET_DVR_UnlockStreamFileByTime(
  LONG                            lUserID,
  LPNET_DVR_STREAM_TIME_LOCK      lpLockPara,
  LPNET_DVR_LOCK_RETURN           lpLockReturn
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpLockPara
[in] 录像解锁参数
lpLockReturn
[out] 录像解锁结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_LockStreamFileByTime


NET_DVR_GetDiskList

获取设备磁盘列表。

BOOL NET_DVR_GetDiskList(
  LONG                          lUserID,
  LPNET_DVR_DISKABILITY_LIST    lpDiskList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDiskList
[out] 设备可用备份磁盘信息结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口用于获取设备可用备份文件的磁盘资源信息，在备份文件功能接口的输入参数中需要用到。

See Also

NET_DVR_BackupByName NET_DVR_BackupByTime


NET_DVR_BackupByName

按文件名备份录像文件。

LONG NET_DVR_BackupByName(
  LONG                          lUserID,
  LPNET_DVR_BACKUP_NAME_PARAM   lpBackupByName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpBackupByName
[in] 备份文件参数结构

Return Values

-1表示失败，其他值作为NET_DVR_GetBackupProgress，NET_DVR_StopBackup等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

在调用该接口开始文件备份前必须调用接口NET_DVR_GetDiskList获取当前设备可用的磁盘列表信息，返回的磁盘描述字段用于指定此接口中lpBackupByName参数中的备份磁盘描述字段。

See Also

NET_DVR_GetBackupProgress NET_DVR_StopBackup NET_DVR_GetDiskList


NET_DVR_BackupByTime

按时间段备份录像文件。

LONG NET_DVR_BackupByTime(
  LONG                          lUserID,
  LPNET_DVR_BACKUP_TIME_PARAM   lpBackupByTime
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpBackupByName
[in] 备份文件参数结构

Return Values

-1表示失败，其他值作为NET_DVR_GetBackupProgress，NET_DVR_StopBackup等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

在调用该接口开始文件备份前必须调用接口NET_DVR_GetDiskList获取当前设备可用的磁盘列表信息，返回的磁盘描述字段用于指定此接口中lpBackupByTime参数中的备份磁盘描述字段。

See Also

NET_DVR_GetBackupProgress NET_DVR_StopBackup NET_DVR_GetDiskList


NET_DVR_GetBackupProgress

获取备份的进度。

BOOL NET_DVR_GetBackupProgress(
  LONG    lHandle,
  DWORD   *pState
);

Parameters

lHandle
[in] NET_DVR_BackupByName或NET_DVR_BackupByTime的返回值
pState
[out] 当前备份的进度，进度值的取值范围为[0,100]，其他值的定义见下表
宏定义 | 宏定义值 | 含义
BACKUP_SUCCESS | 100 | 备份完成
BACKUP_CHANGE_DEVICE | 101 | 备份设备已满，更换设备继续备份
BACKUP_SEARCH_DEVICE | 300 | 正在搜索备份设备
BACKUP_SEARCH_FILE | 301 | 正在搜索录像文件或者图片
BACKUP_SEARCH_LOG_FILE | 302 | 正在搜索日志文件
BACKUP_CHANGE_DISK | 303 | 正在更换光盘
BACKUP_EXCEPTION | 400 | 备份异常
BACKUP_FAIL | 500 | 备份失败
BACKUP_TIME_SEG_NO_FILE | 501 | 时间段内无录像文件或者图片
BACKUP_NO_RESOURCE | 502 | 申请不到资源
BACKUP_DEVICE_LOW_SPACE | 503 | 备份设备容量不足
BACKUP_DISK_FINALIZED | 504 | 刻录光盘封盘
BACKUP_DISK_EXCEPTION | 505 | 刻录光盘异常
BACKUP_DEVICE_NOT_EXIST | 506 | 备份设备不存在
BACKUP_OTNER_BACKUP_WORK | 507 | 有其他备份操作在进行
BACKUP_USER_NO_RIGHT | 508 | 用户没有操作权限
BACKUP_OPERATE_FAIL | 509 | 操作失败
BACKUP_NO_LOG_FILE | 510 | 硬盘中无日志

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在进度为100或者备份出错时, 需调用NET_DVR_StopBackup()停止备份。

See Also

NET_DVR_BackupByName NET_DVR_BackupByTime NET_DVR_StopBackup


NET_DVR_StopBackup

停止备份。

BOOL NET_DVR_StopBackup(
  LONG   lHandle
);

Parameters

lHandle
[in] NET_DVR_BackupByName或NET_DVR_BackupByTime的返回值，或者NET_DVR_BackupPicture的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_BackupByName NET_DVR_BackupByTime
NET_DVR_BackupPicture


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_RECORD_CHECK | 6233 | 录像完整性检测 | NET_DVR_RECORD_CHECK_COND | NULL
NET_DVR_GET_RECORD_SEGMENT_CFG | 6242 | 获取录像段总大小 | NET_DVR_RECORD_SEGMENT_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_RECORD_CHECK | 录像完整性检测 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_RECORD_SEGMENT_CFG | 获取录像段总大小 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_RECORD_CHECK | 6233 | 录像完整性检测 | NET_DVR_RECORD_CHECK_RET
NET_DVR_GET_RECORD_SEGMENT_CFG | 6242 | 获取录像段总大小 | NET_DVR_RECORD_SEGMENT_RET

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_THUMBNAILS | 6253 | 按时间段获取缩略图（录像的缩略图，支持流ID) | NET_DVR_THUMBNAILS_COND | 返回状态、信息数据
NET_DVR_GET_FIGURE | 6610 | 按时间点获取缩略图 | NET_DVR_GET_FIGURE_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数，置为NULL
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_THUMBNAILS按时间段获取缩略图时，对应结构体: NET_DVR_THUMBNAILS_RESULT NET_DVR_GET_FIGURE按时间点获取缩略图时，对应结构体: NET_DVR_FIGURE_INFO
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口建立长连接，需要设置回调函数，查询结果直接在回调里面返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_FindPicture

根据类型和时间查找图片。

LONG NET_DVR_FindPicture(
  LONG                             lUserID,
  LPNET_DVR_FIND_PICTURE_PARAM     pFindParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindParam
[in] 图片查找条件信息

Return Values

-1表示失败，其他值作为NET_DVR_CloseFindPicture等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因.

Remarks

该接口指定了要查找的图片的类型和查找时间范围，调用成功后，就可以调用NET_DVR_FindNextPicture接口来获取图片信息。

注：该接口查找的是设备本地的图片，可通过NET_DVR_SetDVRConfig配置设备的抓图计划（NET_DVR_SCHED_CAPTURECFG）。

See Also

NET_DVR_FindNextPicture_V40 NET_DVR_CloseFindPicture


NET_DVR_FindNextPicture_V50

逐个获取查找到的图片信息。

LONG NET_DVR_FindNextPicture_V50(
  LONG                          lFindHandle,
  LPNET_DVR_FIND_PICTURE_V50    lpFindData
);

Parameters

lFindHandle
[in] 图片查找句柄，NET_DVR_FindPicture的返回值
lpFindData
[out] 保存图片信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找图片之前，必须先调用NET_DVR_FindPicture得到当前的查找句柄。此接口用于获取一条已查找到的图片信息，若要获取全部的已查找到的图片信息，需要循环调用此接口。

See Also

NET_DVR_FindPicture

Reference Interface

该接口扩展源于
NET_DVR_FindNextPicture


NET_DVR_CloseFindPicture

关闭图片查找，释放资源。

BOOL NET_DVR_CloseFindPicture(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 图片查找句柄，NET_DVR_FindPicture的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindPicture


NET_DVR_SmartSearchPicture

开始智能图片搜索。

LONG NET_DVR_SmartSearchPicture(
  LONG                             lUserID,
  NET_DVR_SMART_SEARCH_PIC_PARA    *pFindParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindParam
[in] 智能图片搜索条件

Return Values

-1表示失败，其他值作为NET_DVR_FindNextSmartPicture、NET_DVR_CloseSmartSearchPicture等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要搜索条件信息，调用成功后，就可以调用NET_DVR_FindNextSmartPicture接口来获取搜索结果。
  • 设备是否支持智能图片搜索或者支持的参数能力，对应设备JPEG抓图能力集(JpegCaptureAbility)中节点<SmartPicSearchInfo>，接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_JPEG_CAP_ABILITY)。

See Also

NET_DVR_FindNextSmartPicture NET_DVR_CloseSmartSearchPicture


NET_DVR_FindNextSmartPicture

逐个获取搜索到的智能图片信息。

LONG NET_DVR_FindNextSmartPicture(
  LONG                              lFindHandle,
  LPNET_DVR_SMART_SEARCH_PIC_RET    lpFindData
);

Parameters

lFindHandle
[in] 智能图片查找句柄，NET_DVR_SmartSearchPicture的返回值
lpFindData
[out] 查找到的图片信息

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口前，必须先调用NET_DVR_SmartSearchPicture得到当前的搜索句柄。

See Also

NET_DVR_SmartSearchPicture


NET_DVR_CloseSmartSearchPicture

停止智能图片查找，释放资源。

BOOL NET_DVR_CloseSmartSearchPicture(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 智能图片查找句柄，NET_DVR_SmartSearchPicture的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SmartSearchPicture


NET_DVR_GetPicture_V50

获取图片数据并存放在指定的内存空间中。

BOOL NET_DVR_GetPicture_V50(
  LONG    lUserID,
  NET_DVR_PIC_PARAM   lpPicParam
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
lpPicParam
[in] 图片参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

集群中CS的地址可以从图片查找中获取，SDK根据struAddr对CS建立连接，下载图片。

See Also

NET_DVR_Login_V40


NET_DVR_GetPicture

图片下载。

BOOL NET_DVR_GetPicture(
  LONG          lUserID,
  char          *sDVRFileName,
  const char    *sSavedFileName
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sDVRFileName
[in] 要下载的图片名称
sSavedFileName
[in] 下载图片的保存路径（包括文件名）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

图片为JPEG格式，文件名后缀为.jpg。

See Also

NET_DVR_Login_V40


NET_DVR_BackupPicture

备份图片。

LONG NET_DVR_BackupPicture(
  LONG                             lUserID,
  NET_DVR_BACKUP_PICTURE_PARAM     *lpBackupPicture
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpBackupPicture
[in] 图片备份参数

Return Values

-1表示失败，其他值作为NET_DVR_StopBackup等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因.

See Also

NET_DVR_GetBackupProgress NET_DVR_StopBackup


NET_DVR_StartVoiceCom_V30

启动语音对讲(Linux32版本暂不支持)。

LONG NET_DVR_StartVoiceCom_V30(
  LONG                  lUserID,
  DWORD                 dwVoiceChan,
  BOOL                  bNeedCBNoEncData,
  fVoiceDataCallBack    cbVoiceDataCallBack,
  void                  *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwVoiceChan
[in] 语音通道号。对于设备本身的语音对讲通道，从1开始；对于设备的IP通道，为登录返回的起始对讲通道号(byStartDTalkChan) + IP通道索引 - 1，例如客户端通过NVR跟其IP Channel02所接前端IPC进行对讲，则dwVoiceChan=byStartDTalkChan + 1
bNeedCBNoEncData
[in] 需要回调的语音数据类型：0- 编码后的语音数据，1- 编码前的PCM原始数据
cbVoiceDataCallBack
[in] 音频数据回调函数
pUser
[in] 用户数据指针

Callback Function

typedef void(CALLBACK *fVoiceDataCallBack)(
  LONG     lVoiceComHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  BYTE     byAudioFlag,
  void     *pUser
);

Callback Function Parameters

lVoiceComHandle
[out] NET_DVR_StartVoiceCom_V30的返回值
pRecvDataBuffer
[out] 存放音频数据的缓冲区指针
dwBufSize
[out] 音频数据大小
byAudioFlag
[out] 音频数据类型：0－本地采集的数据；1－设备发送过来的语音数据
pUser
[out] 用户数据指针

Return Values

-1表示失败，其他值作为NET_DVR_StopVoiceCom等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

Windows 7操作系统下，如果不外接音频设备，该接口将返回失败。
在调用开始语音对讲之前可先配置设备的语音对讲音频编码类型，即可先调用参数配置中的NET_DVR_COMPRESSION_AUDIO
结构配置。
当前音频为G722编码时，音频数据的采样频率为16000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND = 16000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign = CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND*m_wavFormatEx.nBlockAlign

当前音频为G711或者G726编码时，音频数据的采样频率为8000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND_G711_MU = 8000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign =	CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND_G711_MU;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND_G711_MU*
m_wavFormatEx.nBlockAlign;

See Also

NET_DVR_StopVoiceCom

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_StartVoiceCom


NET_DVR_SetVoiceDataCallBack

注册回调函数，捕获语音数据。

BOOL NET_DVR_SetVoiceDataCallBack(
  LONG                  lVoiceComHandle,
  BOOL                  bNeedCBNoEncData,
  fVoiceDataCallBack    cbVoiceDataCallBack,
  void                  *pUser
);

Parameters

lVoiceComHandle
[in] NET_DVR_StartVoiceCom_V30或者NET_DVR_StartVoiceCom_MR_V30的返回值
bNeedCBNoEncData
[in] 需要回调的语音数据类型：0- 编码后的语音数据，1- 编码前的原始数据，对于语音转发来说，只能回调编码后的语音数据，此值无效
cbVoiceDataCallBack
[in] 音频数据回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fVoiceDataCallBack)(
  LONG     lVoiceComHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  BYTE     byAudioFlag,
  void     *pUser
);

Callback Function Parameters

lVoiceComHandle
[out] 当前的语音对讲句柄
pRecvDataBuffer
[out] 语音数据内容
dwBufSize
[out] 缓冲区大小
byAudioFlag
[out] 语音标志：0- 本地采集的数据，1- 设备发送过来的语音数据
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartVoiceCom_V30 NET_DVR_StartVoiceCom_MR_V30


NET_DVR_SetVoiceComClientVolume

设置语音对讲客户端的音量。

BOOL NET_DVR_SetVoiceComClientVolume(
  LONG     lVoiceComHandle,
  WORD     wVolume
);

Parameters

lVoiceComHandle
[in] NET_DVR_StartVoiceCom或NET_DVR_StartVoiceCom_V30的返回值
wVolume
[in] 设置音量，取值范围[0,0xffff]

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartVoiceCom NET_DVR_StartVoiceCom_V30


NET_DVR_StopVoiceCom

停止语音对讲或者语音转发。

BOOL NET_DVR_StopVoiceCom(
  LONG     lVoiceComHandle
);

Parameters

lVoiceComHandle
[in] NET_DVR_StartVoiceCom或NET_DVR_StartVoiceCom_V30、NET_DVR_StartVoiceCom_MR或NET_DVR_StartVoiceCom_MR_V30的返回值

Return Values

TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartVoiceCom NET_DVR_StartVoiceCom_V30
NET_DVR_StartVoiceCom_MR NET_DVR_StartVoiceCom_MR_V30


NET_DVR_StartVoiceCom_MR_V30

启动语音转发，获取编码后的音频数据。

LONG NET_DVR_StartVoiceCom_MR_V30(
  LONG                  lUserID,
  DWORD                 dwVoiceChan,
  fVoiceDataCallBack    cbVoiceDataCallBack,
  void                  *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwVoiceChan
[in] 语音通道号。对于设备本身的语音对讲通道，从1开始；对于设备的IP通道，为登录返回的起始对讲通道号(byStartDTalkChan) + IP通道索引 - 1，例如客户端通过NVR跟其IP Channel02所接前端IPC进行对讲，则dwVoiceChan=byStartDTalkChan + 1
cbVoiceDataCallBack
[in] 音频数据回调函数，得到的数据是编码以后的音频数据，需调用我们提供的音频解码函数（详见音频编解码章节的说明）后可得到PCM数据
pUser
[in] 用户数据指针

Callback Function

typedef void(CALLBACK *fVoiceDataCallBack)(
  LONG     lVoiceComHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  BYTE     byAudioFlag,
  void     *pUser
);

Callback Function Parameters

lVoiceComHandle
[out] NET_DVR_StartVoiceCom_MR_V30的返回值
pRecvDataBuffer
[out] 存放音频数据的缓冲区指针
dwBufSize
[out] 音频数据大小
byAudioFlag
[out] 音频数据类型：1－设备发送过来的音频数据
pUser
[out] 用户数据指针

Return Values

-1表示失败，其他值作为NET_DVR_VoiceComSendData、NET_DVR_StopVoiceCom等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在调用开始语音转发之前可先配置设备的音频编码类型，即可先调用参数配置中的NET_DVR_COMPRESSION_AUDIO
结构配置。
当前音频为G722编码时，音频数据的采样频率为16000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND = 16000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign = CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND*m_wavFormatEx.nBlockAlign

当前音频为G711编码时，音频数据的采样频率为8000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND_G711_MU = 8000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign =	CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND_G711_MU;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND_G711_MU*
m_wavFormatEx.nBlockAlign;

See Also

NET_DVR_StopVoiceCom

NET_DVR_VoiceComSendData

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_StartVoiceCom_MR


NET_DVR_VoiceComSendData

转发语音数据。

BOOL NET_DVR_VoiceComSendData(
  LONG     lVoiceComHandle,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lVoiceComHandle
[in] NET_DVR_StartVoiceCom_MR或NET_DVR_StartVoiceCom_MR_V30的返回值
pSendBuf
[in] 存放语音数据的缓冲区
dwBufSize
[in] 语音数据大小。当前是G722音频编码类型时，每次发送的数据为80字节；当前是G711音频编码类型时，每次发送的数据为160字节。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口实现将获取到的经过编码后的音频数据转发给设备。音频编码类型不同，采用不同的接口实现音频数据编解码。

See Also

NET_DVR_StartVoiceCom_MR NET_DVR_StartVoiceCom_MR_V30


NET_DVR_AddDVR_V30

添加设备的某个语音通道到可以接收PC端声音的广播组。

LONG NET_DVR_AddDVR_V30(
  LONG     lUserID,
  DWORD    dwVoiceChan
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwVoiceChan
[in] 语音通道号，从1开始

Return Values

-1表示失败，其他值作为NET_DVR_DelDVR_V30等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

实现语音广播功能需先调用NET_DVR_ClientAudioStart或者NET_DVR_ClientAudioStart_V30接口采集本地PC的音频数据，再调用NET_DVR_AddDVR或者NET_DVR_AddDVR_V30逐个添加设备同时将采集到的数据发送给设备。

SDK最大支持添加512个设备。

See Also

NET_DVR_DelDVR_V30

NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_AddDVR


NET_DVR_DelDVR_V30

从可接收PC机声音的广播组里删除该设备的语音通道。

BOOL NET_DVR_DelDVR_V30(
  LONG   lVoiceHandle
);

Parameters

lVoiceHandle
[in] NET_DVR_AddDVR_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AddDVR_V30

Reference Interface

该接口扩展源于

NET_DVR_DelDVR


NET_DVR_ClientAudioStart_V30

启动语音广播的PC端声音捕获(Linux版本暂不支持)。

BOOL NET_DVR_ClientAudioStart_V30(
  fVoiceDataCallBack    cbVoiceDataCallBack,
  void                  *pUser
);

Parameters

cbVoiceDataCallBack
[in] 音频数据回调函数
pUser
[in] 用户数据指针

Callback Function

typedef void(CALLBACK *fVoiceDataCallBack)(
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

pRecvDataBuffer
[out] 存放PC本地采集的音频数据（PCM）的缓冲区指针
dwBufSize
[out] 音频数据大小
pUser
[out] 用户数据指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。

Remarks

Windows 7操作系统下，如果不外接音频设备，该接口将返回失败。
实现语音广播功能需先调用NET_DVR_ClientAudioStart_V30或者NET_DVR_ClientAudioStart接口采集本地PC的音频数据，再调用NET_DVR_AddDVR或者NET_DVR_AddDVR_V30逐个添加设备同时将采集到的数据发送给设备。

See Also

NET_DVR_ClientAudioStop

Reference Interface

该接口扩展源于

NET_DVR_ClientAudioStart


NET_DVR_ClientAudioStop

停止语音广播的PC端声音捕获。

BOOL NET_DVR_ClientAudioStop(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。

See Also

NET_DVR_ClientAudioStart NET_DVR_ClientAudioStart_V30


NET_DVR_GetCurrentAudioCompress

获取当前生效的对讲音频压缩参数。

BOOL NET_DVR_GetCurrentAudioCompress(
  LONG                           lUserID,
  LPNET_DVR_COMPRESSION_AUDIO    lpCompressAudio
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpCompressAudio
[out] 音频压缩参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_COMPRESSCFG_AUD | 获取语音对讲音频参数 | 无效 | NET_DVR_COMPRESSION_AUDIO | 1058

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_COMPRESSCFG_AUD | 设置语音对讲音频参数 | 无效 | NET_DVR_COMPRESSION_AUDIO | 1059

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_InitG722Encoder

初始化音频编码。

void* NET_DVR_InitG722Encoder(
);

Return Values

-1表示失败，其他值为音频编码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_ReleaseG722Encoder NET_DVR_EncodeG722Frame


NET_DVR_EncodeG722Frame

G722音频编码。

BOOL NET_DVR_EncodeG722Frame(
  void            *pEncodeHandle,
  unsigned char   *pInBuffer,
  unsigned char   *pOutBuffer
);

Parameters

pEncodeHandle
[in] 音频编码句柄，NET_DVR_InitG722Encoder的返回值
pInBuffer
[in] 输入缓冲区，按采样标准（采样频率为16000，16位采样，单通道）获取的PCM音频数据，规定输入数据的大小为1280字节
pOutBuffer
[out] 输出缓冲区，编码后的输出数据大小为80字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

主要为配合语音对讲、转发功能而设定，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；客户端获取设备端发送过来的压缩码流，可调用音频解码函数NET_DVR_DecodeG722Frame进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG722Encoder


NET_DVR_ReleaseG722Encoder

释放音频编码资源。

void NET_DVR_ReleaseG722Encoder(
  void   *pEncodeHandle
);

Parameters

pEncodeHandle
[in] 音频编码句柄，NET_DVR_InitG722Encoder的返回值

Return Values

无。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InitG722Encoder


NET_DVR_InitG722Decoder

初始化音频解码。

void* NET_DVR_InitG722Decoder(
  int   nBitrate
);

Parameters

nBitrate
[in] 编码采样频率，这里我们规定采样频率为16000

Return Values

-1表示失败，其他值为音频解码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_ReleaseG722Decoder NET_DVR_DecodeG722Frame


NET_DVR_DecodeG722Frame

G722音频解码。

BOOL NET_DVR_DecodeG722Frame(
  void            *pDecHandle,
  unsigned char   *pInBuffer,
  unsigned char   *pOutBuffer
);

Parameters

pDecHandle
[in] 音频解码句柄，NET_DVR_InitG722Decoder的返回值
pInBuffer
[in] 输入缓冲区，编码数据大小为80字节
pOutBuffer
[out] 输出缓冲区，按采样标准（采样频率为16000，16位采样，单通道）获取的PCM音频数据，规定输出数据的大小为1280字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

主要为配合语音对讲、转发功能而设定，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数NET_DVR_EncodeG722Frame将原始数据压缩编码后再发往设备端；客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG722Decoder


NET_DVR_ReleaseG722Decoder

释放音频解码资源。

void NET_DVR_ReleaseG722Decoder(
  void   *pDecHandle
);

Parameters

pDecHandle
[in] 音频解码句柄，NET_DVR_InitG722Decoder的返回值

Return Values

无返回值。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InitG722Decoder


NET_DVR_InitG722Encoder

初始化G722音频编码(Linux版本使用)。

LPVOID NET_DVR_InitG722Encoder(
  NET_DVR_AUDIOENC_INFO    *enc_info
);

Parameters

enc_info
[out] 编码器信息

Return Values

NULL表示失败，其他值为音频编码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_EncodeG711Frame NET_DVR_ReleaseG711Encoder


NET_DVR_EncodeG722Frame

G722音频编码(Linux版本使用)。

BOOL NET_DVR_EncodeG722Frame(
  void                              *handle,
  NET_DVR_AUDIOENC_PROCESS_PARAM    *param
);

Parameters

handle
[in] 音频编码句柄，NET_DVR_InitG722Encoder的返回值
param
[in&out] 编码数据参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用语音转发功能时，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；同时客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG722Encoder NET_DVR_ReleaseG722Encoder


NET_DVR_ReleaseG722Encoder

释放音频编码资源。

void NET_DVR_ReleaseG722Encoder(
  void   *pEncodeHandle
);

Parameters

pEncodeHandle
[in] 音频编码句柄，NET_DVR_InitG722Encoder的返回值

Return Values

无返回值

See Also

NET_DVR_InitG722Encoder


NET_DVR_InitG722Decoder

初始化G722音频解码(Linux版本使用)。

LPVOID NET_DVR_InitG711Decoder(
);

Return Values

NULL表示失败，其他值为音频解码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_DecodeG711Frame NET_DVR_ReleaseG711Decoder


NET_DVR_DecodeG722Frame

G722音频解码(Linux版本使用)。

BOOL NET_DVR_DecodeG722Frame(
  LPVOID                            handle,
  NET_DVR_AUDIODEC_PROCESS_PARAM    *p_dec_proc_param
);

Parameters

handle
[in] 音频解码句柄，NET_DVR_InitG722Decoder的返回值
p_dec_proc_param
[in&out] 解码数据参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用语音转发功能时，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；同时客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG722Encoder NET_DVR_ReleaseG722Decoder


NET_DVR_ReleaseG722Decoder

释放音频解码资源。

void NET_DVR_ReleaseG722Decoder(
  void   *pDecHandle
);

Parameters

pDecHandle
[in] 音频解码句柄，NET_DVR_InitG722Decoder的返回值

Return Values

无返回值

See Also

NET_DVR_InitG722Decoder


NET_DVR_EncodeG711Frame

G711音频编码。

BOOL NET_DVR_EncodeG711Frame(
  unsigned int    iType,
  unsigned char   *pInBuffer,
  unsigned char   *pOutBuffer
);

Parameters

iType
[in] 编码类型：0-Mu law 编码，非0-A law 编码
pInBuffer
[in] 输入缓冲区，按采样标准（采样频率为8000，16位采样，单通道）获取的PCM音频数据，规定输入数据的大小为320字节
pOutBuffer
[out] 输出缓冲区，编码后的输出数据大小为160字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

主要为配合语音对讲功能而设定，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；客户端获取设备端发送过来的压缩码流，可调用音频解码函数NET_DVR_DecodeG711Frame进行数据解码。在调用编解码函数之前无需做初始化操作。

See Also

NET_DVR_DecodeG711Frame


NET_DVR_DecodeG711Frame

G711音频解码。

BOOL NET_DVR_DecodeG711Frame(
  unsigned int    iType,
  unsigned char   *pInBuffer,
  unsigned char   *pOutBuffer
);

Parameters

iType
[in] 编码类型：0-Mu law 编码，非0-A law 编码
pInBuffer
[in] 输入缓冲区，编码数据大小为160字节
pOutBuffer
[out] 输出缓冲区，按采样标准（采样频率为8000，16位采样，单通道）获取的PCM音频数据，规定输出数据的大小为320字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

主要为配合语音对讲、转发功能而设定，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数NET_DVR_EncodeG711Frame将原始数据压缩编码后再发往设备端；客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前无需做初始化操作。

See Also

NET_DVR_EncodeG711Frame


NET_DVR_InitG711Encoder

初始化G711音频编码(Linux版本使用)。

LPVOID NET_DVR_InitG711Encoder(
  NET_DVR_AUDIOENC_INFO    *enc_info
);

Parameters

enc_info
[out] 编码器信息

Return Values

NULL表示失败，其他值为音频编码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_EncodeG711Frame NET_DVR_ReleaseG711Encoder


NET_DVR_EncodeG711Frame

G711音频编码(Linux版本使用)。

BOOL NET_DVR_EncodeG711Frame(
  LPVOID                            handle,
  NET_DVR_AUDIOENC_PROCESS_PARAM    *p_enc_proc_param
);

Parameters

handle
[in] 音频编码句柄，NET_DVR_InitG711Encoder的返回值
p_enc_proc_param
[in&out] 编码数据参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用语音转发功能时，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；同时客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG711Encoder NET_DVR_ReleaseG711Encoder


NET_DVR_ReleaseG711Encoder

释放G711音频编码资源(Linux版本使用)。

BOOL NET_DVR_ReleaseG711Encoder(
  LPVOID    pEncodeHandle
);

Parameters

pEncodeHandle
[in] 音频编码句柄，NET_DVR_InitG711Encoder的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InitG711Encoder


NET_DVR_InitG711Decoder

初始化G711音频解码(Linux版本使用)。

LPVOID NET_DVR_InitG711Decoder(
);

Return Values

NULL表示失败，其他值为音频解码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_DecodeG711Frame NET_DVR_ReleaseG711Decoder


NET_DVR_DecodeG711Frame

G711音频解码(Linux版本使用)。

BOOL NET_DVR_DecodeG711Frame(
  LPVOID                            handle,
  NET_DVR_AUDIODEC_PROCESS_PARAM    *p_dec_proc_param
);

Parameters

handle
[in] 音频解码句柄，NET_DVR_InitG711Decoder的返回值
p_dec_proc_param
[in&out] 解码数据参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用语音转发功能时，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；同时客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG711Encoder NET_DVR_ReleaseG711Decoder


NET_DVR_ReleaseG711Decoder

释放G711音频解码资源(Linux版本使用)。

BOOL NET_DVR_ReleaseG711Decoder(
  LPVOID    pDecHandle
);

Parameters

pDecHandle
[in] 音频解码句柄，NET_DVR_InitG711Decoder的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InitG711Decoder


NET_DVR_InitG726Encoder

初始化音频编码。

void* NET_DVR_InitG726Encoder(
  void    **pEncMoudle
);

Parameters

pEncMoudle
[out] 编码模块句柄，编码时作为输入参数

Return Values

-1表示失败，其他值为音频编码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_EncodeG726Frame NET_DVR_ReleaseG726Encoder


NET_DVR_EncodeG726Frame

G726音频编码。

BOOL NET_DVR_EncodeG726Frame(
  void            *pEncMoudle,
  unsigned char   *pInBuffer,
  unsigned char   *pOutBuffer,
  BYTE            byReset
);

Parameters

pEncMoudle
[in] 音频编码句柄，NET_DVR_InitG726Encoder的输出参数
pInBuffer
[in] 输入缓冲区，按采样标准（采样频率为8000，16位采样，单通道）获取的PCM音频数据，规定输入数据的大小为640字节
pOutBuffer
[out] 输出缓冲区，编码后的输出数据大小为80字节
byReset
[in] 是否重置，第一帧需要重置

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

主要为配合语音对讲、转发功能而设定，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数将原始数据压缩编码后再发往设备端；客户端获取设备端发送过来的压缩码流，可调用音频解码函数NET_DVR_DecodeG726Frame进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG726Encoder


NET_DVR_ReleaseG726Encoder

释放音频编码资源。

void NET_DVR_ReleaseG726Encoder(
  void   *pEncHandle
);

Parameters

pEncHandle
[in] 音频编码句柄，NET_DVR_InitG726Encoder的返回值

Return Values

无。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InitG726Encoder


NET_DVR_InitG726Decoder

初始化音频解码。

void* NET_DVR_InitG726Decoder(
  void    **pDecMoudle
);

Parameters

pDecMoudle
[out] 解码模块句柄，解码时作为输入参数

Return Values

-1表示失败，其他值为音频解码句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_DecodeG726Frame NET_DVR_ReleaseG726Decoder


NET_DVR_DecodeG726Frame

G726音频解码。

BOOL NET_DVR_DecodeG726Frame(
  void            *pDecMoudle,
  unsigned char   *pInBuffer,
  unsigned char   *pOutBuffer,
  BYTE            byReset
);

Parameters

pDecMoudle
[in] 音频解码句柄，NET_DVR_InitG726Decoder的输出参数
pInBuffer
[in] 输入缓冲区，编码数据大小为80字节
pOutBuffer
[out] 输出缓冲区，按采样标准（采样频率为8000，16位采样，单通道）获取的PCM音频数据，规定输出数据的大小为640字节
byReset
[in] 是否重置，第一帧需要重置

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

主要为配合语音对讲、转发功能而设定，当需将客户端的原始音频数据发送至设备端，可采用音频编码函数NET_DVR_EncodeG726Frame将原始数据压缩编码后再发往设备端；客户端获取设备端发送过来的压缩码流，可调用音频解码函数进行数据解码。在调用编解码函数之前都需要做相应的初始化操作，在结束调用后还需要做释放资源的操作。

See Also

NET_DVR_InitG726Decoder


NET_DVR_ReleaseG726Decoder

释放音频解码资源。

void NET_DVR_ReleaseG726Decoder(
  void   *pDecHandle
);

Parameters

pDecHandle
[in] 音频解码句柄，NET_DVR_InitG726Decoder的返回值

Return Values

无。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InitG726Decoder


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_DEVICECFG_V40 | 获取设备参数(扩展) | 无效 | NET_DVR_DEVICECFG_V40 | 1100
NET_DVR_GET_TIMECFG | 获取时间参数 | 无效 | NET_DVR_TIME | 118
NET_DVR_GET_DECODERCFG_V40 | 获取RS485(云台解码器)参数 | 通道号 | NET_DVR_DECODERCFG_V40 | 6319
NET_DVR_GET_RS232CFG_V30 | 获取RS232串口参数 | 无效 | NET_DVR_RS232CFG_V30 | 1036
NET_DVR_GET_EXCEPTIONCFG_V40 | 获取异常参数 | 组号，从0开始，每组32种异常 | NET_DVR_EXCEPTION_V40 | 6177
NET_DVR_GET_ZONEANDDST | 获取时区和夏时制参数 | 无效 | NET_DVR_ZONEANDDST | 128
NET_DVR_GET_DEVSERVER_CFG | 获取模块服务配置 | 通道号 | NET_DVR_DEVSERVER_CFG | 3257
NET_DVR_GET_HOLIDAY_PARAM_CFG | 获取节假日参数 | 无效 | NET_DVR_HOLIDAY_PARAM_CFG | 1240

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_DEVICECFG_V40 | 设置设备参数(扩展) | 无效 | NET_DVR_DEVICECFG_V40 | 1101
NET_DVR_SET_TIMECFG | 设置时间参数（校时） | 无效 | NET_DVR_TIME | 119
NET_DVR_SET_DECODERCFG_V40 | 设置（RS485)云台解码器参数 | 通道号 | NET_DVR_DECODERCFG_V40 | 6320
NET_DVR_SET_RS232CFG_V30 | 设置232串口参数 | 无效 | NET_DVR_RS232CFG_V30 | 1037
NET_DVR_SET_EXCEPTIONCFG_V40 | 设置异常参数 | 组号，从0开始，每组32种异常 | NET_DVR_EXCEPTION_V40 | 6178
NET_DVR_SET_ZONEANDDST | 设置时区和夏时制参数 | 无效 | NET_DVR_ZONEANDDST | 129
NET_DVR_SET_DEVSERVER_CFG | 设置模块服务配置 | 通道号 | NET_DVR_DEVSERVER_CFG | 3258
NET_DVR_SET_HOLIDAY_PARAM_CFG | 设置节假日参数 | 无效 | NET_DVR_HOLIDAY_PARAM_CFG | 1241
NET_DVR_SET_TIMECORRECT | 校时配置(针对网络摄像机) | 无效 | NET_DVR_TIME | 432
  • 对于网络摄像机，通过命令NET_DVR_SET_TIMECFG进行校时会禁用设备配置的NTP校时功能，因此新增NET_DVR_SET_TIMECORRECT校时命令，只做设备校时操作，不修改NTP等参数。设备是否支持NET_DVR_SET_TIMECORRECT校时命令，可以通过能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportTimeCorrect>

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。

    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PICCFG_V40 | 获取图像参数 | 通道号 | NET_DVR_PICCFG_V40 | 6179
NET_DVR_GET_COMPRESSCFG_V30 | 获取压缩参数 | 通道号 | NET_DVR_COMPRESSIONCFG_V30 | 1040
NET_DVR_GET_RECORDCFG_V40 | 获取录像计划参数 | 通道号 | NET_DVR_RECORD_V40 | 1008
NET_DVR_GET_JPEG_CAPTURE_CFG | 获取设备抓图配置 | 通道号 | NET_DVR_JPEG_CAPTURE_CFG | 1280
NET_DVR_GET_SCHED_CAPTURECFG | 获取抓图计划 | 通道号 | NET_DVR_SCHED_CAPTURECFG | 1282
NET_DVR_GET_SHOWSTRING_V30 | 获取叠加字符参数 | 通道号 | NET_DVR_SHOWSTRING_V30 | 1030
NET_DVR_GET_CCDPARAMCFG | 获取前端参数 | 无效 | NET_DVR_CAMERAPARAMCFG | 1067
NET_DVR_GET_CCDPARAMCFG_EX | 获取前端参数(扩展) | 通道号 | NET_DVR_CAMERAPARAMCFG_EX | 3368
NET_DVR_GET_ISP_CAMERAPARAMCFG | 获取ISP前端参数配置 | 通道号 | NET_DVR_ISP_CAMERAPARAMCFG | 3255
NET_IPC_GET_AUX_ALARMCFG | 获取辅助(PIR/无线)报警参数 | 通道号 | NET_IPC_AUX_ALARMCFG | 3209
NET_DVR_GET_VIDEO_INPUT_EFFECT | 获取通道视频输入图像参数 | 通道号 | NET_DVR_VIDEO_INPUT_EFFECT | 1286
NET_DVR_GET_MOTION_HOLIDAY_HANDLE | 获取移动侦测假日报警处理方式 | 通道号 | NET_DVR_HOLIDAY_HANDLE | 1242
NET_DVR_GET_VILOST_HOLIDAY_HANDLE | 获取视频信号丢失假日报警处理方式 | 通道号 | NET_DVR_HOLIDAY_HANDLE | 1244
NET_DVR_GET_HIDE_HOLIDAY_HANDLE | 获取遮盖假日报警处理方式 | 通道号 | NET_DVR_HOLIDAY_HANDLE | 1246
NET_DVR_GET_HOLIDAY_RECORD | 获取假日录像参数 | 通道号 | NET_DVR_HOLIDAY_RECORD | 1252
NET_DVR_GET_LINK_STATUS | 获取通道的工作状态 | 组号 | NET_DVR_LINK_STATUS | 1256
NET_DVR_GET_RECORD_CHANNEL_INFO | 获取通道录像状态信息 | 组号，从0开始，每组64个通道 | NET_DVR_CHAN_GROUP_RECORD_STATUS | 6013
NET_DVR_GET_WD1_CFG | 获取WD1使能开关状态 | 通道号 | NET_DVR_WD1_CFG | 6136
NET_DVR_GET_STREAM_CABAC | 获取码流压缩性能选项 | 通道号 | NET_DVR_STREAM_CABAC | 6118
NET_DVR_GET_ACCESS_CAMERA_INFO | 获取通道对应的前端相机信息 | 通道号 | NET_DVR_ACCESS_CAMERA_INFO | 6201
NET_DVR_GET_VIDEO_AUDIOIN_CFG | 获取视频的音频输入参数 | 通道号 | NET_DVR_VIDEO_AUDIOIN_CFG | 9118
NET_DVR_GET_AUDIO_INPUT | 获取音频输入参数 | 通道号 | NET_DVR_AUDIO_INPUT_PARAM | 3201
NET_DVR_GET_AUDIOOUT_VOLUME | 获取输出音频大小 | 通道号 | NET_DVR_AUDIOOUT_VOLUME | 3237
NET_DVR_GET_CAMERA_DEHAZE_CFG | 获取去雾参数 | 通道号 | NET_DVR_CAMERA_DEHAZE_CFG | 3203
NET_DVR_GET_LOW_LIGHTCFG | 获取快球低照度信息 | 通道号 | NET_DVR_LOW_LIGHT_CFG | 3303
NET_DVR_GET_FOCUSMODECFG | 获取快球聚焦模式信息 | 通道号 | NET_DVR_FOCUSMODE_CFG | 3305
NET_DVR_GET_INFRARECFG | 获取快球红外信息 | 通道号 | NET_DVR_INFRARE_CFG | 3307
NET_DVR_GET_AEMODECFG | 获取快球其他参数信息 | 通道号 | NET_DVR_AEMODECFG | 3309
NET_DVR_GET_CORRIDOR_MODE | 获取旋转功能配置 | 通道号 | NET_DVR_CORRIDOR_MODE | 3354
NET_DVR_GET_SIGNAL_SYNC | 获取信号灯同步配置参数 | 通道号 | NET_DVR_SIGNAL_SYNCCFG | 3396

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。

    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PICCFG_V40 | 设置图像参数 | 通道号 | NET_DVR_PICCFG_V40 | 6180
NET_DVR_SET_COMPRESSCFG_V30 | 设置压缩参数 | 通道号 | NET_DVR_COMPRESSIONCFG_V30 | 1041
NET_DVR_SET_RECORDCFG_V40 | 设置录像参数 | 通道号 | NET_DVR_RECORD_V40 | 1009
NET_DVR_SET_JPEG_CAPTURE_CFG | 设置设备抓图配置 | 通道号 | NET_DVR_JPEG_CAPTURE_CFG | 1281
NET_DVR_SET_SCHED_CAPTURECFG | 设置抓图计划 | 通道号 | NET_DVR_SCHED_CAPTURECFG | 1283
NET_DVR_SET_SHOWSTRING_V30 | 设置叠加字符参数 | 通道号 | NET_DVR_SHOWSTRING_V30 | 1031
NET_DVR_SET_CCDPARAMCFG | 设置前端参数 | 无效 | NET_DVR_CAMERAPARAMCFG | 1068
NET_DVR_SET_CCDPARAMCFG_EX | 设置前端参数(扩展) | 通道号 | NET_DVR_CAMERAPARAMCFG_EX | 3369
NET_DVR_SET_ISP_CAMERAPARAMCFG | 设置ISP前端参数配置 | 通道号 | NET_DVR_ISP_CAMERAPARAMCFG | 3256
NET_IPC_SET_AUX_ALARMCFG | 设置辅助(PIR/无线)报警参数 | 通道号 | NET_IPC_AUX_ALARMCFG | 3210
NET_DVR_SET_VIDEO_INPUT_EFFECT | 设置通道视频输入图像参数 | 通道号 | NET_DVR_VIDEO_INPUT_EFFECT | 1287
NET_DVR_SET_MOTION_HOLIDAY_HANDLE | 设置移动侦测假日报警处理方式 | 通道号 | NET_DVR_HOLIDAY_HANDLE | 1243
NET_DVR_SET_VILOST_HOLIDAY_HANDLE | 设置视频信号丢失假日报警处理方式 | 通道号 | NET_DVR_HOLIDAY_HANDLE | 1245
NET_DVR_SET_HIDE_HOLIDAY_HANDLE | 设置遮盖假日报警处理方式 | 通道号 | NET_DVR_HOLIDAY_HANDLE | 1247
NET_DVR_SET_HOLIDAY_RECORD | 设置假日录像参数 | 通道号 | NET_DVR_HOLIDAY_RECORD | 1253
NET_DVR_SET_RECORD_CHANNEL_INFO | 设置通道录像状态信息 | 组号，从0开始，每组64个通道 | NET_DVR_CHAN_GROUP_RECORD_STATUS | 6014
NET_DVR_SET_WD1_CFG | 设置WD1使能开关 | 通道号 | NET_DVR_WD1_CFG | 6137
NET_DVR_SET_STREAM_CABAC | 设置码流压缩性能选项 | 通道号 | NET_DVR_STREAM_CABAC | 6119
NET_DVR_SET_ACCESS_CAMERA_INFO | 设置通道对应的前端相机信息 | 通道号 | NET_DVR_ACCESS_CAMERA_INFO | 6202
NET_DVR_SET_VIDEO_AUDIOIN_CFG | 设置视频的音频输入参数 | 通道号 | NET_DVR_VIDEO_AUDIOIN_CFG | 9119
NET_DVR_SET_AUDIO_INPUT | 设置音频输入参数 | 通道号 | NET_DVR_AUDIO_INPUT_PARAM | 3202
NET_DVR_SET_AUDIOOUT_VOLUME | 设置输出音频大小 | 通道号 | NET_DVR_AUDIOOUT_VOLUME | 3238
NET_DVR_SET_CAMERA_DEHAZE_CFG | 设置去雾参数 | 通道号 | NET_DVR_CAMERA_DEHAZE_CFG | 3204
NET_DVR_SET_LOW_LIGHTCFG | 设置快球低照度参数 | 通道号 | NET_DVR_LOW_LIGHT_CFG | 3304
NET_DVR_SET_FOCUSMODECFG | 设置快球聚焦模式参数 | 通道号 | NET_DVR_FOCUSMODE_CFG | 3306
NET_DVR_SET_INFRARECFG | 设置快球红外参数 | 通道号 | NET_DVR_INFRARE_CFG | 3308
NET_DVR_SET_AEMODECFG | 设置快球其他参数 | 通道号 | NET_DVR_AEMODECFG | 3310
NET_DVR_SET_CORRIDOR_MODE | 设置旋转功能配置 | 通道号 | NET_DVR_CORRIDOR_MODE | 3355
NET_DVR_SET_SIGNAL_SYNC | 设置信号灯同步配置参数 | 通道号 | NET_DVR_SIGNAL_SYNCCFG | 3397

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG | 远程获取多码流压缩参数 | dwCount个NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND | dwCount个NET_DVR_MULTI_STREAM_COMPRESSIONCFG | 3216
NET_DVR_GET_STREAM_RECORD_INFO | 获取录像信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_RECORD_INFO | 6019
NET_DVR_GET_STREAM_RECORD_STATUS | 获取流录像状态信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_RECORD_STATUS | 6021
NET_DVR_GET_DEFAULT_VIDEO_EFFECT | 获取默认视频效果 | dwCount个NET_DVR_DEFAULT_VIDEO_COND | dwCount个NET_DVR_VIDEO_EFFECT | 6136
NET_DVR_GET_JPEG_CAPTURE_CFG_V40 | 获取设备抓图配置，dwCount为0 | NET_DVR_CHANNEL_GROUP | NET_DVR_JPEG_CAPTURE_CFG_V40 | 6190
NET_DVR_GET_ALARM_RELATE | 获取报警联动通道配置参数 | dwCount个NET_DVR_ALARM_RELATE_COND | dwCount个NET_DVR_ALARM_RELATE_CFG | 3403

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG | 远程设置多码流压缩参数 | dwCount个NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND | dwCount个NET_DVR_MULTI_STREAM_COMPRESSIONCFG | 3217
NET_DVR_SET_STREAM_RECORD_INFO | 设置录像信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_RECORD_INFO | 6020
NET_DVR_SET_STREAM_RECORD_STATUS | 设置流录像状态信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_RECORD_STATUS | 6022
NET_DVR_SET_JPEG_CAPTURE_CFG_V40 | 设置设备抓图配置，dwCount为0 | NET_DVR_CHANNEL_GROUP | NET_DVR_JPEG_CAPTURE_CFG_V40 | 6191
NET_DVR_SET_ALARM_RELATE | 设置报警联动通道配置参数 | dwCount个NET_DVR_ALARM_RELATE_COND | dwCount个NET_DVR_ALARM_RELATE_CFG | 3404

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_SET_VIDEO_EFFECT | 6106 | 设置通道视频输入图像参数 | NET_DVR_VIDEOPARA_V40

See Also

NET_DVR_Login_V40


NET_DVR_SetAccessCameraInfo

设置前端相机信息（长连接）。

LONG NET_DVR_SetAccessCameraInfo(
  LONG                            lUserID,
  DWORD                           dwChannel,
  LPNET_DVR_ACCESS_CAMERA_INFO    lpCameraInfo,
  fLongCfgStateCallback           cbStateCallback,
  LPVOID                          pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwChannel
[in] 通道号
lpCameraInfo
[in] 前端相机信息
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fLongCfgStateCallback)(
  LONG      lHandle,
  DWORD     dwState,
  LPVOID    pUserData
);

Callback Function Parameters

lHandle
[out] 句柄，NET_DVR_SetAccessCameraInfo的返回值
dwState
[out] 状态
宏定义 | 宏定义值 | 含义
SET_CAMERA_TYPE_SUCCESS | 1 | 成功
SET_CAMERA_TYPE_FAIL | 2 | 失败
SET_CAMERA_TYPE_PROCESSING | 3 | 正在处理
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_CloseLongCfgHandle等接口的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置前可以先调用NET_DVR_GetDVRConfig（命令：NET_DVR_GET_ACCESS_CAMERA_INFO）获取设备当前配置信息。

See Also

NET_DVR_CloseLongCfgHandle


NET_DVR_CloseLongCfgHandle

关闭句柄，释放资源。

BOOL NET_DVR_CloseLongCfgHandle(
  LONG   lHandle
);

Parameters

lHandle
[in] NET_DVR_RaidPullDiskStart、NET_DVR_ScanRaidStart、NET_DVR_GetVehicleGpsInfo或NET_DVR_SetAccessCameraInfo的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_RaidPullDiskStart NET_DVR_ScanRaidStart

NET_DVR_GetVehicleGpsInfo NET_DVR_SetAccessCameraInfo


NET_DVR_CloseLongCfgHandle

关闭句柄，释放资源。

BOOL NET_DVR_CloseLongCfgHandle(
  LONG   lHandle
);

Parameters

lHandle
[in] NET_DVR_RaidPullDiskStart、NET_DVR_ScanRaidStart、NET_DVR_GetVehicleGpsInfo或NET_DVR_SetAccessCameraInfo的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetAccessCameraInfo


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_START_GET_INPUTVOLUME | 3370 | 开始获取音量 | NET_DVR_INPUTVOLUME | 返回声音强度信息
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，获取音量时dwType状态无效，lpBuffer对应4字节声音强度
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，查询的结果在回调函数里面返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_NETCFG_V50 | 获取网络参数 | 无效 | NET_DVR_NETCFG_V50 | 1015
NET_DVR_GET_NETAPPCFG | 获取网络应用参数(NTP/DDNS) | 无效 | NET_DVR_NETAPPCFG | 222
NET_DVR_GET_NTPCFG | 获取网络应用参数(NTP) | 无效 | NET_DVR_NTPPARA | 224
NET_DVR_GET_DDNSCFG_V30 | 获取网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA_V30 | 1010
NET_DVR_GET_EMAILCFG_V30 | 获取网络应用参数(EMAIL) | 无效 | NET_DVR_EMAILCFG_V30 | 1012
NET_DVR_GET_NETCFG_MULTI_V50 | 获取多网卡配置参数 | 组号，从1开始，每组4个网卡 | NET_DVR_NETCFG_MULTI | 1163
NET_DVR_GET_NETWORK_BONDING | 获取BONDING网卡参数 | 无效 | NET_DVR_NETWORK_BONDING | 1254
NET_DVR_GET_FTPCFG | 获取首选FTP参数 | 无效 | NET_DVR_FTPCFG | 134
NET_DVR_GET_FTPCFG_SECOND | 获取备用FTP参数 | 无效 | NET_DVR_FTPCFG | 6103
NET_DVR_GET_SNMPCFG_V30 | 获取SNMP参数 | 无效 | NET_DVR_SNMPCFG_V30 | 1114
NET_DVR_GET_AP_INFO_LIST | 获取无线网络资源参数 | 无效 | NET_DVR_AP_INFO_LIST | 305
NET_DVR_GET_WIFI_CFG | 获取IP监控设备无线参数 | 无效 | NET_DVR_WIFI_CFG | 307
NET_DVR_GET_WIFI_WORKMODE | 获取WIFI网口工作模式 | 无效 | NET_DVR_WIFI_WORKMODE | 309
NET_DVR_GET_WIFI_STATUS | 获取设备当前wifi连接状态 | 无效 | NET_DVR_WIFI_CONNECT_STATUS | 310
NET_DVR_GET_NAT_CFG | 获取NAT映射参数 | 无效 | NET_DVR_NAT_CFG | 6111
NET_DVR_GET_POE_CFG | 获取POE参数 | 无效 | NET_DVR_POE_CFG | 6114
NET_DVR_GET_BONJOUR_CFG | 获取Bonjour信息 | 无效 | NET_DVR_BONJOUR_CFG | 6127
NET_DVR_GET_SOCKS_CFG | 获取SOCKS信息 | 无效 | NET_DVR_SOCKS_CFG | 6130
NET_DVR_GET_QOS_CFG | 获取QoS信息 | 无效 | NET_DVR_QOS_CFG | 6132
NET_DVR_GET_HTTPS_CFG | 获取HTTPS信息 | 无效 | NET_DVR_HTTPS_CFG | 6134
NET_DVR_GET_WPSCFG | 获取无线WPS参数 | 无效 | NET_DVR_WPS_PARAM | 3218
NET_DVR_GET_DEVICE_PIN | 获取设备PIN码 | 无效 | NET_DVR_PIN_PARAM | 3221
NET_DVR_GET_GBT28181_ACCESS_CFG | 获取GBT28181协议接入配置 | 无效 | NET_DVR_GBT28181_ACCESS_CFG | 3249
NET_DVR_GET_CMS_CFG | 获取平台参数 | 无效 | NET_DVR_CMS_PARAM | 2070
NET_DVR_GET_EZVIZ_ACCESS_CFG | 获取EZVIZ接入参数 | 无效 | NET_DVR_EZVIZ_ACCESS_CFG | 3398
NET_DVR_GET_SMSRELATIVEPARA | 获取短信相关参数 | 无效 | NET_DVR_SMSRELATIVEPARAM | 1173
NET_DVR_GET_DEVICE_NET_USING_INFO | 获取当前设备网络资源使用情况 | 无效 | NET_DVR_DEVICE_NET_USING_INFO | 6009
NET_DVR_GET_IPADDR_FILTERCFG | 获取IP地址过滤参数 | 通道号 | NET_DVR_IPADDR_FILTERCFG | 3232

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_NETCFG_V50 | 设置网络参数 | 无效 | NET_DVR_NETCFG_V50 | 1016
NET_DVR_SET_NETAPPCFG | 设置网络应用参数(NTP/DDNS) | 无效 | NET_DVR_NETAPPCFG | 223
NET_DVR_SET_NTPCFG | 设置网络应用参数(NTP) | 无效 | NET_DVR_NTPPARA | 225
NET_DVR_SET_DDNSCFG_V30 | 设置网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA_V30 | 1011
NET_DVR_SET_EMAILCFG_V30 | 设置网络应用参数(EMAIL) | 无效 | NET_DVR_EMAILCFG_V30 | 1013
NET_DVR_SET_NETCFG_MULTI_V50 | 设置多网卡配置参数 | 组号，从1开始，每组4个网卡 | NET_DVR_NETCFG_MULTI | 1164
NET_DVR_SET_NETWORK_BONDING | 设置BONDING网卡参数 | 无效 | NET_DVR_NETWORK_BONDING | 1255
NET_DVR_SET_FTPCFG | 设置首选FTP参数 | 无效 | NET_DVR_FTPCFG | 135
NET_DVR_SET_FTPCFG_SECOND | 设置备用FTP参数 | 无效 | NET_DVR_FTPCFG | 6104
NET_DVR_SET_SNMPCFG_V30 | 设置SNMP参数 | 无效 | NET_DVR_SNMPCFG_V30 | 1115
NET_DVR_SET_WIFI_CFG | 设置IP监控设备无线参数 | 无效 | NET_DVR_WIFI_CFG | 306
NET_DVR_SET_WIFI_WORKMODE | 设置WIFI网口工作模式 | 无效 | NET_DVR_WIFI_WORKMODE | 308
NET_DVR_SET_NAT_CFG | 设置NAT映射参数 | 无效 | NET_DVR_NAT_CFG | 6112
NET_DVR_SET_POE_CFG | 设置POE参数 | 无效 | NET_DVR_POE_CFG | 6115
NET_DVR_SET_BONJOUR_CFG | 设置Bonjour信息 | 无效 | NET_DVR_BONJOUR_CFG | 6128
NET_DVR_SET_SOCKS_CFG | 设置SOCKS信息 | 无效 | NET_DVR_SOCKS_CFG | 6131
NET_DVR_SET_QOS_CFG | 设置QoS信息 | 无效 | NET_DVR_QOS_CFG | 6133
NET_DVR_SET_HTTPS_CFG | 设置HTTPS信息 | 无效 | NET_DVR_HTTPS_CFG | 6135
NET_DVR_SET_WPSCFG | 设置无线WPS参数 | 无效 | NET_DVR_WPS_PARAM | 3219
NET_DVR_SET_GBT28181_ACCESS_CFG | 设置GBT28181协议接入配置 | 无效 | NET_DVR_GBT28181_ACCESS_CFG | 3250
NET_DVR_SET_CMS_CFG | 设置平台参数 | 无效 | NET_DVR_CMS_PARAM | 2071
NET_DVR_SET_EZVIZ_ACCESS_CFG | 设置EZVIZ接入参数 | 无效 | NET_DVR_EZVIZ_ACCESS_CFG | 3399
NET_DVR_SET_SMSRELATIVEPARA | 设置短信相关参数 | 无效 | NET_DVR_SMSRELATIVEPARAM | 1174
NET_DVR_SET_IPADDR_FILTERCFG | 设置IP地址过滤参数 | 通道号 | NET_DVR_IPADDR_FILTERCFG | 3233

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_GBT28181_CHANINFO_CFG | 获取GBT28181协议接入设备的通道信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_GBT28181_CHANINFO_CFG | 3251
NET_DVR_GET_GBT28181_ALARMINCFG | 获取GBT28181协议接入设备的报警信息 | dwCount个NET_DVR_ALARMIN_INFO | dwCount个NET_DVR_GBT28181_ALARMINCFG | 3253
NET_DVR_GET_GBT28181_AUDIO_OUTPUT_CFG | 获取GBT28181协议接入设备的语音对讲信息 | dwCount个NET_DVR_GBT28181_AUDIO_OUTPUT_COND | dwCount个NET_DVR_GBT28181_AUDIO_OUTPUT_CFG | 4383
NET_DVR_GET_CERT | 获取证书信息 | dwCount个NET_DVR_CERT_PARAM | dwCount个NET_DVR_CERT_INFO | 6142
NET_DVR_GET_FTPCFG_V40 | 获取FTP信息 | dwCount个NET_DVR_FTP_TYPE | dwCount个NET_DVR_FTPCFG_V40 | 6162

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_GBT28181_CHANINFO_CFG | 设置GBT28181协议接入设备的通道信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_GBT28181_CHANINFO_CFG | 3252
NET_DVR_SET_GBT28181_ALARMINCFG | 设置GBT28181协议接入设备的报警信息 | dwCount个NET_DVR_ALARMIN_INFO | dwCount个NET_DVR_GBT28181_ALARMINCFG | 3254
NET_DVR_SET_GBT28181_AUDIO_OUTPUT_CFG | 设置GBT28181协议接入设备的语音对讲信息 | dwCount个NET_DVR_GBT28181_AUDIO_OUTPUT_COND | dwCount个NET_DVR_GBT28181_AUDIO_OUTPUT_CFG | 4384
NET_DVR_SET_FTPCFG_V40 | 设置FTP信息 | dwCount个NET_DVR_FTP_TYPE | dwCount个NET_DVR_FTPCFG_V40 | 6163

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_WPS_CONNECT | 3220 | 远程启用WPS连接 | NET_DVR_WPS_CONNECT_PARAM
NET_DVR_UPDATE_PIN | 3223 | 更新设备PIN码 | NULL
NET_DVR_CREATE_CERT | 6138 | 创建证书(802.1x、HTTPS等) | NET_DVR_CERT_INFO
NET_DVR_DELETE_CERT | 6139 | 删除证书(802.1x、HTTPS等) | NET_DVR_CERT_PARAM

See Also

NET_DVR_Login_V40


NET_DVR_GetRtspConfig

获取RTSP协议参数。

BOOL NET_DVR_GetRtspConfig(
  LONG                  lUserID,
  DWORD                 dwCommand,
  LPNET_DVR_RTSPCFG     lpOutBuffer,
  DWORD                 dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 保留，置为0
lpOutBuffer
[out] 输出缓存
dwOutBufferSize
[in] 存放输出数据的缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetRtspConfig


NET_DVR_SetRtspConfig

设置RTSP协议参数。

BOOL NET_DVR_SetRtspConfig(
  LONG                  lUserID,
  DWORD                 dwCommand,
  LPNET_DVR_RTSPCFG     lpInBuffer,
  DWORD                 dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 保留，置为0
lpInBuffer
[in] 输入缓存
dwInBufferSize
[in] 输入缓存的大小，大小为结构体NET_DVR_RTSPCFG的大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetRtspConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_WIFI_CLIENT_LIST_INFO | 6363 | 获取WIFI热点连接设备信息 | NULL | NULL
NET_DVR_GET_CONNECT_LIST | 433 | 获取WIFI热点连接设备列表信息 | NET_DVR_CONNECTDEV_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | 对应结构体：NET_DVR_CONNECTDEV_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，有的命令还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_WIFI_CLIENT_LIST_INFO | 获取WIFI热点连接设备信息 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_WIFI_CLIENT_LIST_INFO | 6363 | 获取WIFI热点连接设备信息 | NET_DVR_WIFI_CLIENT_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_IPPARACFG_V40 | 获取IP接入配置参数 | 组号，从0开始，每组64个通道 | NET_DVR_IPPARACFG_V40 | 1062
NET_DVR_GET_POE_CHANNEL_ADD_MODE | 获取POE通道添加方式 | 通道号 | NET_DVR_POE_CHANNEL_ADD_MODE | 6124
NET_DVR_GET_DIGITAL_CHANNEL_STATE | 获取设备数字通道状态 | 无效 | NET_DVR_DIGITAL_CHANNEL_STATE | 6126
NET_DVR_GET_IPALARMINCFG_V40 | 获取IP报警输入接入配置参数 | 无效 | NET_DVR_IPALARMINCFG_V40 | 6183
NET_DVR_GET_IPALARMOUTCFG_V40 | 获取IP报警输出接入配置参数 | 无效 | NET_DVR_IPALARMOUTCFG_V40 | 6185
NET_DVR_GET_DVR_SYNCHRONOUS_IPC | 获取是否为前端IPC同步设备参数 | 通道号 | NET_DVR_SYNCHRONOUS_IPC | 6005
NET_DVR_GET_CUSTOM_PRO_CFG | 获取自定义协议参数 | 协议序号，从1开始 | NET_DVR_CUSTOM_PROTOCAL | 6116
NET_DVR_GET_DIGITAL_CHAN_SECURITY_STATUS | 获取数字通道对应设备安全状态 | 通道号 | NET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS | 13001

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_IPPARACFG_V40 | 设置IP接入配置参数 | 组号，从0开始，每组64个通道 | NET_DVR_IPPARACFG_V40 | 1063
NET_DVR_SET_POE_CHANNEL_ADD_MODE | 设置POE通道添加方式 | 通道号 | NET_DVR_POE_CHANNEL_ADD_MODE | 6125
NET_DVR_SET_DVR_SYNCHRONOUS_IPC | 设置是否为前端IPC同步设备参数 | 通道号 | NET_DVR_SYNCHRONOUS_IPC | 6006
NET_DVR_SET_DVR_IPC_PASSWD | 设置IPC用户名密码 | 通道号 | NET_DVR_IPC_PASSWD | 6008
NET_DVR_SET_DVR_IPC_NET | 设置前端IPC的网络地址 | 通道号 | NET_DVR_IPC_NETCFG | 6012
NET_DVR_SET_CUSTOM_PRO_CFG | 设置自定义协议参数 | 协议序号，从1开始 | NET_DVR_CUSTOM_PROTOCAL | 6117

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ACCESS_DEVICE_CHANNEL_INFO | 获取待接入设备通道信息，dwCount为0 | dwCount个NET_DVR_ACCESS_DEVICE_INFO | dwCount个NET_DVR_ACCESS_DEVICE_CHANNEL_INFO | 6165
NET_DVR_GET_STREAM_SRC_INFO_V40 | 获取流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO_V40 | 6024

See Also

NET_DVR_SetDeviceConfig NET_DVR_Login_V30


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_STREAM_SRC_INFO_V40 | 设置流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO_V40 | 6025

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_STREAM_INFO | 6023 | 获取已添加的流ID信息 | NULL | 返回状态、查找到的流ID信息
NET_DVR_IMPORT_IPC_CFG_FILE | 6172 | 导入IPC配置文件 | NET_DVR_IPC_CFG_FILE_PARAM | 返回成功或失败相应的错误信息
NET_DVR_UPGRADE_IPC | 6174 | 升级IP通道 | NET_DVR_UPGRADE_IPC_PARAM | 返回成功或失败相应的错误信息
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态，具体定义如下：
dwCommand宏定义 dwType lpInBuffer
NET_DVR_GET_STREAM_INFO typedef enum
{
NET_SDK_CALLBACK_TYPE_STATUS = 0, //回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS, //回调进度值
NET_SDK_CALLBACK_TYPE_DATA //回调数据内容
}NET_SDK_CALLBACK_TYPE; 		dwType为0时对应状态值，详见枚举类型
NET_SDK_CALLBACK_STATUS_NORMAL；
dwType为2时对应流ID信息
NET_DVR_STREAM_INFO
NET_DVR_IMPORT_IPC_CFG_FILE typedef enum
{
NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功
NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中
NET_SDK_CALLBACK_STATUS_FAILED, //失败
NET_SDK_CALLBACK_STATUS_EXCEPTION, //(IPC配置文件导入)异常
NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH, //(IPC配置文件导入)语言不匹配
NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH //(IPC配置文件导入)设备类型不匹配
}NET_SDK_CALLBACK_STATUS_NORMAL; 		dwType为1002时有效，对应：
NET_DVR_IPC_CFG_FILE_ERR_INFO
NET_DVR_UPGRADE_IPC dwType为1002时有效，对应：
NET_DVR_UPGRADE_IPC_ERR_INFO
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwCommand、dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，查找的信息或配置的状态通过回调函数获取。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_GetSadpInfoList

远程扫描获取IPC信息列表。

BOOL NET_DVR_GetSadpInfoList(
  LONG                      lUserID,
  LPNET_DVR_SADPINFO_LIST   lpSadpInfoList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSadpInfoList
[out] IPC信息列表结构

Return Values

TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_UpdateSadpInfo

远程修改IPC信息。

BOOL NET_DVR_UpdateSadpInfo(
  LONG                    lUserID,
  LPNET_DVR_SADP_VERIFY   lpSadpVerify,
  LPNET_DVR_SADPINFO      lpSadpInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSadpVerify
[in] 校验信息
lpSadpInfo
[in] 修改的IPC信息列表结构

Return Values

TRUE表示成功,FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetIPCProtoList_V41

获取设备支持的IPC协议表。

BOOL NET_DVR_GetIPCProtoList_V41(
  LONG                           lUserID,
  LPNET_DVR_IPC_PROTO_LIST_V41   lpProtoList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpProtoList
[out] IPC协议列表结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口用于获取当前设备所支持的外接IPC的协议。调用该接口时，先将lpProtoList ->pBuffer置为NULL、lpProtoList ->dwBufLen置为0，获取到有效IPC协议数目；然后根据数目分配缓冲区，再调用一次接口，获取具体协议列表信息。

See Also

NET_DVR_Login_V40

Reference Interface

该接口扩展源于
NET_DVR_GetIPCProtoList


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_STREAM_ATTACHINFO_CFG | 获取码流附加信息配置 | 通道号 | NET_DVR_STREAM_ATTACHINFO_CFG | 5042

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_STREAM_ATTACHINFO_CFG | 设置码流附加信息配置 | 通道号 | NET_DVR_STREAM_ATTACHINFO_CFG | 5043
NET_DVR_SET_VCA_RULE_COLOR_CFG | 设置智能规则关联的颜色参数 | 通道号 | NET_DVR_VCA_RULE_COLOR_CFG | 411

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_VCA_CTRLINFO_CFG | 获取智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5022
NET_DVR_GET_VCA_DETION_CFG | 获取智能侦测参数配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_VCA_DETION_CFG | 5041
NET_DVR_GET_GUARDCFG | 获取车牌识别检测计划 | dwCount个NET_DVR_GUARD_COND | dwCount个NET_DVR_GUARD_CFG | 3134
NET_DVR_GET_ROI_DETECT_NUM | 获取ROI检测区域编号数目 | dwCount个NET_DVR_MUL_STREAM_CHANNEL_GROUP | dwCount个NET_DVR_ROI_DETECT_NUM | 3349
NET_DVR_GET_ROI_DETECT | 获取ROI检测区域配置 | dwCount个NET_DVR_ROI_DETECT_COND | dwCount个NET_DVR_ROI_DETECT_CFG | 3350
NET_DVR_GET_FACE_DETECT | 获取人脸侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_DETECT_FACE | 3352
NET_DVR_GET_SCENECHANGE_DETECTIONCFG | 获取场景变更报警配置(dwCount为1) | NET_DVR_CHANNEL_GROUP | NET_DVR_SCENECHANGE_DETECTION | 3356
NET_DVR_GET_TRAVERSE_PLANE_DETECTION | 获取越界侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_TRAVERSE_PLANE_DETECTION | 3360
NET_DVR_GET_FIELD_DETECTION | 获取区域入侵侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_FIELDDETECION | 3362
NET_DVR_GET_DEFOCUSPARAM | 获取虚焦侦测参数配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_DEFOCUSPARAM | 3364
NET_DVR_GET_AUDIOEXCEPTIONPARAM | 获取音频异常配置(dwCount为1) | NET_DVR_CHANNEL_GROUP | NET_DVR_AUDIO_EXCEPTION | 3366
NET_DVR_GET_PDC_RULECFG_V42 | 获取客流量统计规则 | dwCount个NET_DVR_PDC_RULE_COND | dwCount个NET_DVR_PDC_RULE_CFG_V42 | 3405
NET_DVR_GET_HEATMAP_CFG | 获取热度图参数配置 | dwCount个NET_DVR_HEATMAP_COND | dwCount个NET_DVR_HEATMAP_CFG | 3407
NET_ITS_GET_OVERLAP_CFG | 获取交通抓拍字符叠加参数 | dwCount个NET_ITS_OVERLAPCFG_COND | dwCount个NET_ITS_OVERLAP_CFG | 5072
NET_DVR_GET_TRIGGEREX_CFG | 获取触发模式配置 | dwCount个NET_DVR_TRIGGER_COND | dwCount个NET_ITC_TRIGGERCFG | 5074
NET_DVR_GET_SMD_HOLIDAY_HANDLE | 获取简易智能假日计划 | dwCount个NET_DVR_HOLIDAY_HANDLE_COND | dwCount个NET_DVR_HOLIDAY_HANDLE | 6194

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_VCA_CTRLINFO_CFG | 设置智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5023
NET_DVR_SET_VCA_DETION_CFG | 设置智能侦测参数配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_VCA_DETION_CFG | 5040
NET_DVR_SET_GUARDCFG | 设置车牌识别检测计划 | dwCount个NET_DVR_GUARD_COND | dwCount个NET_DVR_GUARD_CFG | 3135
NET_DVR_SET_ROI_DETECT | 设置ROI检测区域配置 | dwCount个NET_DVR_ROI_DETECT_COND | dwCount个NET_DVR_ROI_DETECT_CFG | 3351
NET_DVR_SET_FACE_DETECT | 设置人脸侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_DETECT_FACE | 3353
NET_DVR_SET_SCENECHANGE_DETECTIONCFG | 设置场景变更报警配置(dwCount为1) | NET_DVR_CHANNEL_GROUP | NET_DVR_SCENECHANGE_DETECTION | 3357
NET_DVR_SET_TRAVERSE_PLANE_DETECTION | 设置越界侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_TRAVERSE_PLANE_DETECTION | 3361
NET_DVR_SET_FIELD_DETECTION | 设置区域入侵侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_FIELDDETECION | 3363
NET_DVR_SET_DEFOCUSPARAM | 设置虚焦侦测参数配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_DEFOCUSPARAM | 3365
NET_DVR_SET_AUDIOEXCEPTIONPARAM | 设置音频异常配置(dwCount为1) | NET_DVR_CHANNEL_GROUP | NET_DVR_AUDIO_EXCEPTION | 3367
NET_DVR_SET_PDC_RULECFG_V42 | 设置客流量统计规则 | dwCount个NET_DVR_PDC_RULE_COND | dwCount个NET_DVR_PDC_RULE_CFG_V42 | 3406
NET_DVR_SET_HEATMAP_CFG | 设置热度图参数配置 | dwCount个NET_DVR_HEATMAP_COND | dwCount个NET_DVR_HEATMAP_CFG | 3408
NET_ITS_SET_OVERLAP_CFG | 设置交通抓拍字符叠加参数 | dwCount个NET_ITS_OVERLAPCFG_COND | dwCount个NET_ITS_OVERLAP_CFG | 5073
NET_DVR_SET_TRIGGEREX_CFG | 设置触发模式配置 | dwCount个NET_DVR_TRIGGER_COND | dwCount个NET_ITC_TRIGGERCFG | 5075
NET_DVR_SET_SMD_HOLIDAY_HANDLE | 设置简易智能假日计划 | dwCount个NET_DVR_HOLIDAY_HANDLE_COND | dwCount个NET_DVR_HOLIDAY_HANDLE | 6195

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_HEATMAP_RESULT | 5083 | 热度图数据查找 | NET_DVR_HEATMAP_QUERY_COND | NULL
NET_DVR_FACECAPTURE_STATISTICS | 3715 | 长连接人员统计查询 | NET_DVR_FACECAPTURE_STATISTICS_COND | NULL
NET_DVR_GET_VCA_RULE_COLOR_CFG | 410 | 智能规则关联的颜色参数查询 | NET_DVR_VCA_RULE_COLOR_COND | 返回状态、信息数据
NET_DVR_GET_VEHICLE_INFORMATION | 3785 | 获取车辆信息 | NET_DVR_VEHICLE_INFO_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL; 如果lpBuffer前4个字节数据值为NET_SDK_CALLBACK_STATUS_FAILED时， 紧跟着后面4个字节表示一个错误号
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_VCA_RULE_COLOR_CFG查询智能规则关联的颜色参数时，对应结构体: NET_DVR_VCA_RULE_COLOR_CFG NET_DVR_GET_VEHICLE_INFORMATION查询车辆信息时，对应结构体: NET_DVR_VEHICLE_INFO_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，就可以调用NET_DVR_GetNextRemoteConfig接口来逐个获取信息。
  • 该接口使用命令NET_DVR_GET_VCA_RULE_COLOR_CFG查询智能规则关联的颜色参数或使用命令NET_DVR_GET_VEHICLE_INFORMATION查询车辆信息时，接口里面需要设置回调函数，查询结果直接在回调里面返回，不需要调用NET_DVR_GetNextRemoteConfig接口。

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_HEATMAP_RESULT | 5083 | 热度图数据查找 | NET_DVR_HEATMAP_INFO
NET_DVR_FACECAPTURE_STATISTICS | 3715 | 人脸抓拍人员统计查询 | NET_DVR_FACECAPTURE_STATISTICS_RESULT

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

对于配置命令NET_DVR_GET_ALARMINCFG_V30和NET_DVR_GET_ALARMOUTCFG_V30，lChannel从0开始，表示报警输入/输出口号。建议应用界面上显示为i+1的通道号以保持和设备本地日志的一致。

对于其他配置命令，lChannel有效则其值表示设备通道号。

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ALARMINCFG_V40 | 获取报警输入参数 | 报警输入号，从0开始 | NET_DVR_ALARMINCFG_V40 | 6181
NET_DVR_GET_ALARMOUTCFG_V30 | 获取报警输出参数 | 报警输出号，从0开始 | NET_DVR_ALARMOUTCFG_V30 | 1026
NET_DVR_GET_ALARMIN_HOLIDAY_HANDLE | 获取报警输入假日报警处理方式 | 报警输入号，从0开始 | NET_DVR_HOLIDAY_HANDLE | 1248
NET_DVR_GET_ALARMOUT_HOLIDAY_HANDLE | 获取报警输出假日报警处理方式 | 报警输出号，从0开始 | NET_DVR_HOLIDAY_HANDLE | 1250

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_ALARMINCFG_V40 | 设置报警输入参数 | 报警输入号，从0开始 | NET_DVR_ALARMINCFG_V40 | 6182
NET_DVR_SET_ALARMOUTCFG_V30 | 设置报警输出参数 | 报警输出号，从0开始 | NET_DVR_ALARMOUTCFG_V30 | 1027
NET_DVR_SET_ALARMIN_HOLIDAY_HANDLE | 设置报警输入假日报警处理方式 | 报警输入号，从0开始 | NET_DVR_HOLIDAY_HANDLE | 1249
NET_DVR_SET_ALARMOUT_HOLIDAY_HANDLE | 设置报警输出假日报警处理方式 | 报警输出号，从0开始 | NET_DVR_HOLIDAY_HANDLE | 1251

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetAlarmOut_V30

获取设备报警输出。

BOOL NET_DVR_GetAlarmOut_V30(
  LONG                             lUserID,
  LPNET_DVR_ALARMOUTSTATUS_V30     lpAlarmOutState
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpAlarmOutState
[out] 报警输出状态

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetAlarmOut


NET_DVR_SetAlarmOut

设置设备报警输出。

BOOL NET_DVR_SetAlarmOut(
  LONG     lUserID,
  LONG     lAlarmOutPort,
  LONG     lAlarmOutStatic
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lAlarmOutPort
[in] 报警输出口。初始输出口从0开始，0x00ff表示全部模拟输出，0xff00表示全部数字输出，DS-90xx系列设备同时支持对IP接入的报警输出进行处理，对应32-95为数字报警输出
lAlarmOutStatic
[in] 报警输出状态：0－停止输出，1－输出

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetAlarmOut


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PREVIEWCFG_V30 | 获取设备本地主CVBS输出预览参数 | 无效 | NET_DVR_PREVIEWCFG_V30 | 1044
NET_DVR_GET_PREVIEWCFG_AUX_V30 | 获取设备本地HDMI或辅CVBS输出预览参数 | 无效 | NET_DVR_PREVIEWCFG_V30 | 1046
NET_DVR_GET_VGA_PREVIEWCFG | 获取设备本地VGA预览配置参数 | 无效 | NET_DVR_PREVIEWCFG_V30 | 1284
NET_DVR_GET_VIDEOOUTCFG_V30 | 获取视频输出参数 | 无效 | NET_DVR_VIDEOOUT_V30 | 1028
NET_DVR_GET_AUXOUTCFG | 获取报警触发辅助输出参数 | 无效 | NET_DVR_AUXOUTCFG | 140

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PREVIEWCFG_V30 | 设置设备本地主CVBS输出预览参数 | 无效 | NET_DVR_PREVIEWCFG_V30 | 1045
NET_DVR_SET_PREVIEWCFG_AUX_V30 | 设置设备本地HDMI或辅CVBS输出预览参数 | 无效 | NET_DVR_PREVIEWCFG_V30 | 1047
NET_DVR_SET_VGA_PREVIEWCFG | 设置设备本地VGA预览配置参数 | 无效 | NET_DVR_PREVIEWCFG_V30 | 1285
NET_DVR_SET_VIDEOOUTCFG_V30 | 设置视频输出参数 | 无效 | NET_DVR_VIDEOOUT_V30 | 1029
NET_DVR_SET_AUXOUTCFG | 设置报警触发辅助输出参数 | 无效 | NET_DVR_AUXOUTCFG | 141

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PREVIEW_SWITCH_CFG | 获取设备本地预览切换参数，dwCount为0 | NET_DVR_PREVIEW_SWITCH_COND | NET_DVR_PREVIEW_SWITCH_CFG | 6166

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_PREVIEW_SWITCH_CFG | 设置设备本地预览切换参数，dwCount为0 | NET_DVR_PREVIEW_SWITCH_COND | NET_DVR_PREVIEW_SWITCH_CFG | 6167

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_GetScaleCFG_V30

获取视频输出缩放信息。

BOOL NET_DVR_GetScaleCFG_V30(
  LONG                   lUserID,
  LPNET_DVR_SCALECFG     pScalecfg
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
pScalecfg
[out] 缩放参数信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetScaleCFG_V30

Reference Interface

该接口扩展源于

NET_DVR_GetScaleCFG


NET_DVR_SetScaleCFG_V30

设置视频输出缩放参数。

BOOL NET_DVR_SetScaleCFG_V30(
  LONG                   lUserID,
  LPNET_DVR_SCALECFG     pScalecfg
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
pScalecfg
[in] 缩放参数配置结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetScaleCFG_V30

Reference Interface

该接口扩展源于

NET_DVR_SetScaleCFG


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_USERCFG_V51 | 获取用户参数 | 组号，从0开始，每组32个用户 | NET_DVR_USER_V51 | 4181
NET_DVR_GET_USERCFG_V50 | 获取用户参数(支持密码确认) | 组号，从0开始，每组32个用户 | NET_DVR_USER_V50 | 6246
NET_DVR_GET_USERCFG_V40 | 获取用户参数 | 组号，从0开始，每组32个用户 | NET_DVR_USER_V40 | 6187
NET_DVR_GET_SECURITY_CFG | 获取安全认证配置 | 无效 | NET_DVR_SECURITY_CFG | 147
NET_DVR_GET_ONLINE_USER_CFG | 获取在线用户参数 | 无效 | NET_DVR_ONLINE_USER_INFO | 6241

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_USERCFG_V51 | 设置用户参数(支持密码确认) | 组号，从0开始，每组32个用户 | NET_DVR_USER_V51 | 4182
NET_DVR_SET_USERCFG_V50 | 设置用户参数(支持密码确认) | 组号，从0开始，每组32个用户 | NET_DVR_USER_V50 | 6247
NET_DVR_SET_USERCFG_V40 | 设置用户参数 | 组号，从0开始，每组32个用户 | NET_DVR_USER_V40 | 6188
NET_DVR_SET_SECURITY_CFG | 设置安全认证配置 | 无效 | NET_DVR_SECURITY_CFG | 148

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_USER_RIGHT_CFG | 获取用户权限，dwCount为1 | NET_DVR_USER_COND | NET_DVR_USER_RIGHT_CFG | 6210

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_USER_RIGHT_CFG | 设置用户权限，dwCount为1 | NET_DVR_USER_COND | NET_DVR_USER_RIGHT_CFG | 6211

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_UNLOCK_USER | 146 | 用户解锁 | NET_DVR_UNLOCK_INFO

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_LOCKED_INFO_LIST | 149 | 获取所有被锁定信息 | NULL | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwCommand、dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取、设置相关参数或获取状态，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_LOCKED_INFO_LIST | 获取所有被锁定信息 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_LOCKED_INFO_LIST | 149 | 获取所有被锁定信息 | NET_DVR_LOCKED_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_IOOUT_CFG | 获取补光灯参数 | dwCount个NET_DVR_IOOUT_COND | dwCount个NET_DVR_IOOUT_CFG | 3394

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_IOOUT_CFG | 设置补光灯参数 | dwCount个NET_DVR_IOOUT_COND | dwCount个NET_DVR_IOOUT_CFG | 3395

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_RECORD_PASSBACK_PLAN_CFG | 获取录像回传计划配置，dwCount设为1 | NET_DVR_STREAM_INFO | NET_DVR_RECORD_PASSBACK_SCH_CFG | 6238

nCount限制为1。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL | 手动添加录像回传任务 | dwCount个NET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND | dwCount个NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG | 6234
NET_DVR_DEL_RECORD_PASSBACK_TASK_MANUAL | 删除手动录像回传任务 | dwCount个NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND | dwCount个NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG | 6237
NET_DVR_SET_RECORD_PASSBACK_PLAN_CFG | 设置录像回传计划配置，dwCount设为1 | NET_DVR_STREAM_INFO | NET_DVR_RECORD_PASSBACK_SCH_CFG | 6239

See Also

NET_DVR_Login_V40 NET_DVR_GetLastError


NET_DVR_SetDeviceConfigEx

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfigEx(
  LONG                 lUserID,
  DWORD                dwCommand,
  DWORD                dwCount,
  NET_DVR_IN_PARAM     *lpInParam,
  NET_DVR_OUT_PARAM    *lpOutParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInParam
[in] 输入参数缓冲区，其中参数取值根据不同的dwCommand而不同，详见“Remarks”说明
lpOutParam
[in] 输出参数缓冲区，其中参数取值根据不同的dwCommand而不同，详见“Remarks”说明

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpOutParam->lpStatusList值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口扩展接口，支持设置接收数据超时时间。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | 宏定义值
NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL_V50 | 手动添加录像回传任务V50（返回任务ID） | 6254
输入输出缓冲区参数 | 参数取值
lpInParam->struCondBuf.pBuf | 输入条件缓冲区，dwCount 个NET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND
lpInParam->struCondBuf.nLen | 输入条件缓冲区长度
lpInParam->struInParamBuf.pBuf | 输入参数缓冲区，dwCount个NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG
lpInParam->struInParamBuf.nLen | 输入参数缓冲区长度
lpInParam->dwRecvTimeout | 数据接收超时时间，填 0 采用接口默认超时
lpOutParam->struOutBuf.pBuf | 输出参数缓冲区，dwCount个NET_DVR_RECORD_PASSBACK_TASK_CFG
lpOutParam->struOutBuf.nLen | 输出参数缓冲区长度
lpOutParam->lpStatusList | 状态缓冲区，对应dwCount个参数配置的结果，例如 lpStatusList[2]就对应lpInParam->struInParamBuf.pBuf[2]，由用户分配内存，每个错误信息为4个字节，参数值：0或者1表示成功，其他值为失败对应的错误号

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL | 6235 | 获取所有手动添加的录像回传任务 | NET_DVR_RECORD_PASSBACK_MANUAL_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL | 获取所有手动添加的录像回传任务 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL | 6235 | 获取所有手动添加的录像回传任务 | NET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_RECORD_PASSBACK_TASK_MANUAL_CTRL | 6236 | 控制手动添加的录像回传任务 | NET_DVR_RECORD_PASSBACK_MANUAL_CTRL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetATMPortCFG

获取ATM机监听端口。

BOOL NET_DVR_GetATMPortCFG(
  LONG     lUserID,
  WORD     *lpOutATMPort
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpOutATMPort
[out] 监听端口

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetATMPortCFG


NET_DVR_SetATMPortCFG

设置ATM机监听端口。

BOOL NET_DVR_SetATMPortCFG(
  LONG     lUserID,
  WORD     wATMPort
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
wATMPort
[in] 监听端口

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetATMPortCFG


NET_DVR_ClientGetframeformat

获取ATM机的交易协议信息。

BOOL NET_DVR_ClientGetframeformat(
  LONG                      lUserID,
  LPNET_DVR_FRAMEFORMAT     lpFrameFormat
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFrameFormat
[out] ATM机交易协议参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_ClientSetframeformat


NET_DVR_ClientSetframeformat

设置ATM机的交易协议信息。

BOOL NET_DVR_ClientSetframeformat(
  LONG                      lUserID,
  LPNET_DVR_FRAMEFORMAT     lpFrameFormat
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFrameFormat
[in] ATM机交易协议参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_NETWORK_ERRORDATA | 11 | 传送的数据有误。发送给设备或者从设备接收到的数据错误，如远程参数配置时输入设备不支持的值。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。

See Also

NET_DVR_ClientGetframeformat


NET_DVR_GetAtmProtocol

获取ATM协议列表。

BOOL NET_DVR_GetAtmProtocol(
  LONG     	 	   lUserID,
  LPNET_DVR_ATM_PROTOCOL      lpAtmProtocol
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpAtmProtocol
[out] ATM协议列表信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetAtmFrameFormat_V30

获取ATM协议配置信息。

BOOL NET_DVR_GetAtmFrameFormat_V30(
  LONG                            lUserID,
  LONG                            lAtmChannel,
  LPNET_DVR_ATM_FRAMEFORMAT_V30   lpFrameFormat
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lAtmChannel
[in] ATM通道号，目前只支持0通道配置
lpFrameFormat
[out] ATM机交易协议参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetAtmFrameFormat_V30


NET_DVR_SetAtmFrameFormat_V30

设置ATM协议配置信息。

BOOL NET_DVR_SetAtmFrameFormat_V30(
  LONG                             lUserID,
  LONG                             lAtmChannel,
  LPNET_DVR_ATM_FRAMEFORMAT_V30    lpFrameFormat
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lAtmChannel
[in] ATM通道号，目前只支持0通道配置
lpFrameFormat
[in] ATM机交易协议参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetAtmFrameFormat_V30


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本字符串指针或结构体指针形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表给出了获取智能交通摄像机能力集时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ABILITY_INFO | 设备通用能力类型，具体能力根据发送的能力节点来区分 | 获取POS能力集输入描述 | POS能力集(POSAbility)

See Also

NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_POS_FILTER_CFG | 获取POS过滤规则 | 规则ID号,从1开始 | NET_DVR_POS_FILTER_CFG | 6148
NET_DVR_GET_CONNECT_POS_CFG | 获取DVR与POS连接方式 | 规则ID号,从1开始 | NET_DVR_CONNECT_POS_CFG | 6150

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_POS_FILTER_CFG | 设置POS过滤规则 | 规则ID号,从1开始 | NET_DVR_POS_FILTER_CFG | 6149
NET_DVR_SET_CONNECT_POS_CFG | 设置DVR与POS连接方式 | 规则ID号,从1开始 | NET_DVR_CONNECT_POS_CFG | 6151

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_CHAN_FILTER_CFG | 获取规则与通道关联信息,dwCount为1 | NET_DVR_CHANNEL_GROUP | NET_DVR_CHAN_FILTER_CFG | 6152

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_CHAN_FILTER_CFG | 设置规则与通道关联信息,dwCount为1 | NET_DVR_CHANNEL_GROUP | NET_DVR_CHAN_FILTER_CFG | 6153

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_NFSCFG | 获取NFS（网络文件系统）参数 | 无效 | NET_DVR_NFSCFG | 230
NET_DVR_GET_HDCFG | 获取硬盘信息参数 | 无效 | NET_DVR_HDCFG | 1054
NET_DVR_GET_HDCFG_V40 | 获取硬盘信息参数 | 组号，从0开始，每组33个硬盘 | NET_DVR_HDCFG | 6122
NET_DVR_GET_HDCFG_V50 | 获取硬盘卷信息V50 | 组号，从0开始，每组33个硬盘 | NET_DVR_HDCFG_V50 | 4153
NET_DVR_GET_HDGROUP_CFG_V40 | 获取盘组管理参数 | 组号，从0开始，每组16个硬盘组 | NET_DVR_HDGROUP_CFG_V40 | 6192
NET_DVR_GET_NET_DISKCFG | 获取网络硬盘接入参数 | 无效 | NET_DVR_NET_DISKCFG | 1038
NET_DVR_GET_NET_DISKCFG_V40 | 获取网络硬盘接入参数(扩展) | 无效 | NET_DVR_NET_DISKCFG_V40 | 3392
NET_DVR_GET_NET_DISKCFG_V40 | 获取网络硬盘接入参数(扩展) | 无效 | NET_DVR_NET_DISKCFG_V40 | 3392
NET_DVR_GET_DISK_QUOTA_CFG | 获取磁盘配额信息 | 通道号 | NET_DVR_DISK_QUOTA_CFG | 1278
NET_DVR_GET_HDVOLUME_CFG | 获取硬盘卷信息 | 无效 | NET_DVR_HARD_DISK_VOLUME_INFO | 4155
NET_DVR_GET_DRAWFRAME_DISK_QUOTA_CFG | 获取抽帧通道磁盘配额 | 无效 | NET_DVR_DRAWFRAME_DISK_QUOTA_CFG | 6109
NET_DVR_GET_DISK_RAID_INFO | 获取磁盘Raid信息 | 无效 | NET_DVR_DISK_RAID_INFO | 6001
NET_DVR_GET_ESATA_MINISAS_USAGE_CFG | 获取eSATA和miniSAS用途 | 无效 | NET_DVR_ESATA_MINISAS_USAGE | 6120
NET_DVR_GET_HD_STATUS | 获取硬盘休眠状态 | 无效 | NET_DVR_HD_STATUS | 6170
NET_DVR_GET_RAID_BACKGROUND_TASK_SPEED | 获取RAID后台任务速度 | 无效 | NET_DVR_RAID_BTS_CFG | 6175
NET_DVR_GET_DATA_CALLBACK_CFG | 获取数据回迁状态 | 无效 | NET_DVR_DATA_CALLBACK_CFG | 6218
NET_DVR_GET_RECORD_PACK | 获取录像打包参数 | 无效 | NET_DVR_RECORD_PACK | 6301
NET_DVR_GET_CLOUD_STORAGE_CFG | 获取云存储工作模式 | 无效 | NET_DVR_CLOUD_STORAGE_CFG | 6303
NET_DVR_GET_DEV_STORAGE_CFG | 获取设备存储信息 | 无效 | NET_DVR_DEV_STORAGE_CFG | 6240

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_NFSCFG | 设置NFS（网络文件系统）参数 | 无效 | NET_DVR_NFSCFG | 231
NET_DVR_SET_HDCFG | 设置硬盘管理参数 | 无效 | NET_DVR_HDCFG | 1055
NET_DVR_SET_HDCFG_V40 | 设置硬盘信息参数 | 组号，从0开始，每组33个硬盘 | NET_DVR_HDCFG | 6123
NET_DVR_SET_HDGROUP_CFG_V40 | 设置盘组管理参数 | 组号，从0开始，每组16个硬盘组 | NET_DVR_HDGROUP_CFG_V40 | 6193
NET_DVR_SET_NET_DISKCFG | 设置网络硬盘接入参数 | 无效 | NET_DVR_NET_DISKCFG | 1039
NET_DVR_SET_NET_DISKCFG_V40 | 设置网络硬盘接入参数(扩展) | 无效 | NET_DVR_NET_DISKCFG_V40 | 3393
NET_DVR_SET_HDVOLUME_CFG | 设置硬盘卷信息 | 无效 | NET_DVR_HARD_DISK_VOLUME_INFO | 4156
NET_DVR_SET_DISK_QUOTA_CFG | 设置磁盘配额信息 | 通道号 | NET_DVR_DISK_QUOTA_CFG | 1279
NET_DVR_SET_DRAWFRAME_DISK_QUOTA_CFG | 设置抽帧通道磁盘配额 | 无效 | NET_DVR_DRAWFRAME_DISK_QUOTA_CFG | 6110
NET_DVR_SET_DISK_RAID_INFO | 设置磁盘Raid信息 | 无效 | NET_DVR_DISK_RAID_INFO | 6002
NET_DVR_SET_ESATA_MINISAS_USAGE_CFG | 设置eSATA和miniSAS用途 | 无效 | NET_DVR_ESATA_MINISAS_USAGE | 6121
NET_DVR_SET_HD_STATUS | 设置硬盘休眠状态 | 无效 | NET_DVR_HD_STATUS | 6171
NET_DVR_SET_RAID_BACKGROUND_TASK_SPEED | 设置RAID后台任务速度 | 无效 | NET_DVR_RAID_BTS_CFG | 6176
NET_DVR_SET_DATA_CALLBACK_CFG | 设置数据回迁状态 | 无效 | NET_DVR_DATA_CALLBACK_CFG | 6219
NET_DVR_SET_RECORD_PACK | 设置录像打包参数 | 无效 | NET_DVR_RECORD_PACK | 6302
NET_DVR_SET_CLOUD_STORAGE_CFG | 设置云存储工作模式 | 无效 | NET_DVR_CLOUD_STORAGE_CFG | 6304

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_MOUNT_DISK | 6015 | 加载磁盘 | NET_DVR_MOUNT_DISK_PARAM
NET_DVR_UNMOUNT_DISK | 6016 | 卸载磁盘 | NET_DVR_MOUNT_DISK_PARAM
NET_DVR_DEL_INVALID_DISK | 6107 | 删除无效磁盘 | NET_DVR_INVALID_DISK_PARAM

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

See Also

NET_DVR_Login_V40


NET_DVR_FormatDisk

远程格式化设备硬盘。

LONG NET_DVR_FormatDisk(
  LONG    lUserID,
  LONG    lDiskNumber
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lDiskNumber
[in] 硬盘号，从0开始，0xff表示对所有硬盘有效（不包括只读硬盘）

Return Values

-1表示失败，其他值作为NET_DVR_CloseFormatHandle等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

格式化过程中如果网络断了，设备上的格式化操作依然会继续，但是客户端无法收到状态。

See Also

NET_DVR_CloseFormatHandle NET_DVR_GetFormatProgress
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetFormatProgress

获取格式化硬盘的进度。

BOOL NET_DVR_GetFormatProgress(
  LONG    lFormatHandle,
  LONG    *pCurrentFormatDisk,
  LONG    *pCurrentDiskPos,
  LONG    *pFormatStatic
);

Parameters

lFormatHandle
[in] 格式化硬盘句柄，NET_DVR_FormatDisk的返回值
pCurrentFormatDisk
[out] 指向保存当前正在格式化的硬盘号的指针，硬盘号从0开始，-1为初始状态
pCurrentDiskPos
[out] 指向保存当前正在格式化的硬盘的进度的指针，进度是0～100
pFormatStatic
[out] 指向保存硬盘格式化状态的指针，0-正在格式化；1-硬盘全部格式化完成；2-格式化当前硬盘出错，不能继续格式化此硬盘，本地和网络硬盘都会出现此错误；3-由于网络异常造成网络硬盘丢失而不能开始格式化当前硬盘

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FormatDisk


NET_DVR_CloseFormatHandle

关闭格式化硬盘句柄，释放资源。

BOOL NET_DVR_CloseFormatHandle(
  LONG    lFormatHandle
);

Parameters

lFormatHandle
[in] NET_DVR_ FormatDisk的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_FormatDisk


NET_DVR_FindIpSanDirectory

查找IPSAN文件目录。

LONG NET_DVR_FindIpSanDirectory(
  LONG                            lUserID,
  LPNET_DVR_IPSAN_SERACH_PARAM    lpIpsanSearchParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpIpsanSearchParam
[in] IPSAN文件目录查找参数

Return Values

-1表示失败，其他值作为NET_DVR_FindNextDirectory等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的IPSAN，调用成功后，就可以调用NET_DVR_FindNextDirectory接口来逐个获取该IPSAN的目录信息。

See Also

NET_DVR_FindNextDirectory NET_DVR_FindDirectoryClose


NET_DVR_FindNextDirectory

逐个获取查找到的目录信息。

LONG NET_DVR_FindNextDirectory(
  LONG                          lFindHandle,
  LPNET_DVR_IPSAN_SERACH_RET    lpFindData
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindIpSanDirectory的返回值
lpFindData
[out] 保存目录信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取目录信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到目录
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的目录，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找目录时异常

Remarks

在调用该接口获取查找目录之前，必须先调用NET_DVR_FindIpSanDirectory得到当前的查找句柄。此接口用于获取一条已查找到的目录信息，若要获取全部的已查找到的目录信息，需要循环调用此接口。

See Also

NET_DVR_FindIpSanDirectory


NET_DVR_FindDirectoryClose

停止IPSAN文件搜索，释放资源。

BOOL NET_DVR_FindDirectoryClose(
  LONG    lFindHandle
);

Parameters

lFindHandle
[in] 句柄，NET_DVR_FindIpSanDirectory的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindIpSanDirectory


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_FIND_NAS_DIRECTORY | 6161 | 查找NAS目录 | NET_DVR_NET_DISK_SERACH_PARAM | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，获取音量时dwType状态无效，lpBuffer对应4字节声音强度
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取、设置相关参数或获取状态，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_FIND_NAS_DIRECTORY | 查找NAS目录 | NET_DVR_GetNextRemoteConfig NET_DVR_GetRemoteConfigState

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_GetRemoteConfigState NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_FIND_NAS_DIRECTORY | 6161 | 查找NAS目录 | NET_DVR_NET_DISK_SERACH_RET

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetRemoteConfigState

获取长连接配置的状态。

BOOL NET_DVR_GetRemoteConfigState(
  LONG    lHandle,
  void    *pState
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值
pState
[out] 返回的状态值，不同的配置命令对应不同的状态取值，具体见下表
dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_FIND_NAS_DIRECTORY | 6161 | 查找NAS目录
pState状态宏定义 | 宏定义值 | 含义
NET_SDK_CALLBACK_STATUS_SUCCESS | 1000 | 查找成功
NET_SDK_CALLBACK_STATUS_PROCESSING | 1001 | 处理中
NET_SDK_CALLBACK_STATUS_FAILED | 1002 | 查找失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_ONE_KEY_CONFIG_SAN_V50 | 4152 | 一键配置SAN(V50) | NET_DVR_ONE_KEY_CFG_SAN_V50 | NULL
NET_DVR_ONE_KEY_CONFIG | 6212 | 一键配置CVR | NULL | NULL
NET_DVR_ONE_KEY_CONFIG_V50 | 6251 | 一键配置CVR(扩展，支持指定RAID类型、热备盘/阵列比例、图片卷比例等条件) | NET_DVR_ONE_KEY_CFG_V50 | NULL
NET_DVR_ONE_KEY_CONFIG_SAN | 6232 | 一键配置SAN | NULL | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，获取音量时dwType状态无效，lpBuffer对应4字节声音强度
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetRemoteConfigState、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取、设置相关参数或获取状态，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_ONE_KEY_CONFIG | 一键配置CVR | NET_DVR_GetRemoteConfigState
NET_DVR_ONE_KEY_CONFIG_V50 | 一键配置CVR扩展 | NET_DVR_GetRemoteConfigState
NET_DVR_ONE_KEY_CONFIG_SAN_V50 | 一键配置SAN(V50) | NET_DVR_GetRemoteConfigState

See Also

NET_DVR_GetRemoteConfigState NET_DVR_StopRemoteConfig


NET_DVR_GetRemoteConfigState

获取长连接配置的状态。

BOOL NET_DVR_GetRemoteConfigState(
  LONG    lHandle,
  void    *pState
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值
pState
[out] 返回的状态值，不同的配置命令对应不同的状态取值，具体见下表
dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_ONE_KEY_CONFIG | 6212 | 一键配置CVR
NET_DVR_ONE_KEY_CONFIG_V50 | 6251 | 一键配置CVR扩展
pState状态宏定义 | 宏定义值 | 含义
NET_SDK_OKC_STATUS_SUCCESS | 1000 | 一键配置成功
NET_SDK_OKC_STATUS_FAILED | 1002 | 一键配置失败
NET_SDK_OKC_STATUS_START_CONFIG | 1003 | 开始配置
NET_SDK_OKC_CHECK_HD | 1004 | 检测磁盘
NET_SDK_OKC_INIT_HD | 1005 | 初始化磁盘
NET_SDK_OKC_CREATE_RAID_OR_SINGLE_DISK | 1006 | 创建阵列或者单盘模式
NET_SDK_OKC_INIT_CVR_SERVICE | 1007 | 初始化CVR服务
NET_SDK_OKC_CREATE_RECORD_VOLUME | 1008 | 创建录像卷
NET_SDK_OKC_ERR_LOAD_CONF_FAILED | 1009 | 加载配置文件失败
NET_SDK_OKC_ERR_NOT_SUPPORT_RAID_LEVLE | 1010 | 不支持此种类型的RAID
NET_SDK_OKC_ERR_CONFIGURATION_CONFLICT | 1011 | 系统已经存在RAID或存储池
NET_SDK_OKC_ERR_GET_DISK_INFO_FAILED | 1012 | 获取磁盘信息失败
NET_SDK_OKC_ERR_CHECK_DISK_FAILED | 1013 | 检测磁盘失败
NET_SDK_OKC_ERR_INIT_DISK_FAILED | 1014 | 初始化磁盘失败
NET_SDK_OKC_ERR_DISK_CAPACITY_SMALL | 1015 | 磁盘总容量不足
NET_SDK_OKC_ERR_BOTH_SV_NS | 1016 | 同时存在SV盘和NS盘
NET_SDK_OKC_ERR_CREATE_RAID_FAILED | 1017 | 创建RAID失败
NET_SDK_OKC_ERR_GET_RAID_FAILED | 1018 | 获取RAID失败
NET_SDK_OKC_ERR_CREATE_SPARE_FAILED | 1019 | 创建热备盘失败
NET_SDK_OKC_ERR_CREATE_STORAGE_POOL_FAILED | 1020 | 创建存储池失败
NET_SDK_OKC_ERR_GET_POOL_INFO_FAILED | 1021 | 获取存储池信息失败
NET_SDK_OKC_ERR_CREATE_LUN_FAILED | 1022 | 创建lun卷失败
NET_SDK_OKC_ERR_GET_LUN_INFO_FAILED | 1023 | 获取lun信息失败
NET_SDK_OKC_ERR_CREATE_BACKUP_FAILED | 1024 | 创建预留卷失败
NET_SDK_OKC_ERR_GET_BACKUP_FAILED | 1025 | 获取预留卷失败
NET_SDK_OKC_ERR_CREATE_PRIVATE_LUN_FAILED | 1026 | 创建私有卷失败
NET_SDK_OKC_ERR_CREATE_RV_FAILED | 1027 | 创建录像卷失败
NET_SDK_OKC_ERR_CREATE_ARCH_RV_FAILED | 1028 | 创建存档卷失败
NET_SDK_OKC_ERR_START_CVR_SERVICE_FAILED | 1029 | 开启CVR服务失败
NET_SDK_OKC_ERR_RAID_CONFLICT | 1036 | 系统已经存在阵列
NET_SDK_OKC_ERR_OPEN_ISCSI_FAILED | 1037 | 开启ISCSI失败
NET_SDK_OKC_ERR_DEVICE_NOSUPPORT_SAN | 1038 | 设备不支持san
NET_SDK_OKC_ERR_SAPRE_NUM_EXCEED | 1101 | 热备盘个数过多
NET_SDK_OKC_ERR_CREATE_PIC_VOLUME_FAILED | 1102 | 创建图片卷失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，详见下文列表
dwInBufferSize
[in] 输入缓冲区大小，即输入参数对应的结构体的长度
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，详见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_FILEVOLUME_DATA | 38 | 上传文件卷数据文件(目前只有CVR支持) | NET_DVR_UPLOAD_FILEVOLUME_PRARAM | NULL
  • 上传接口调用流程：
    1) 调用NET_DVR_UploadFile_V40开始上传数据。
    2）若NET_DVR_UploadFile_V40接口中传入的文件路径为NULL，则通过循环调用NET_DVR_UploadSend接口来传入文件数据，否则，忽略本步骤。
    3) 上传过程中可调用NET_DVR_GetUploadState获取上传状态和进度。
    4) 当接口NET_DVR_GetUploadState返回1即上传成功后调用NET_DVR_GetUploadResult获取上传结果。
    5) 调用NET_DVR_UploadClose停止上传，释放资源。

See Also

NET_DVR_GetUploadState NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_UploadSend

发送数据。

LONG NET_DVR_UploadSend(
  LONG                       lUploadHandle,
  LPNET_DVR_SEND_PARAM_IN    pstruSendParamIN,
  void                       *lpOutBuffer
);

lUploadHandle

lUploadHandle
[in] 文件上传句柄，NET_DVR_UploadFile_V40的返回值
pstruSendParamIN
[in] 上传的数据内容，上传文件卷数据文件时，仅其中pSendData、dwSendDataLen字段有效
lpOutBuffer
[out] 输出参数，保留，置为NULL

Return Values

-1表示失败，大于等于0表示本次发送成功的字节数，未发送成功的剩余字节数可以再次调用该接口进行发送。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UploadFile_V40


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

  • 上传完成之后需要调用NET_DVR_GetUploadResult获取当前上传文件的URL（由设备生成并返回），然后再上传下一个文件。
  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_GetUploadResult

获取当前数据上传结果信息。

BOOL NET_DVR_GetUploadResult(
  LONG      lUploadHandle,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
lpOutBuffer
[out] 结果信息缓冲区，不同的上传类型（NET_DVR_UploadFile_V40接口里面传入的dwUploadType）对应不同的结构体信息，如下表所示：
dwUploadType | 功能描述 | lpOutBuffer
UPLOAD_FILEVOLUME_DATA | 上传文件卷数据文件 | NET_DVR_UPLOAD_FILE_RET
dwOutBufferSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 上传时调用NET_DVR_GetUploadState获取进度和状态，上传完成之后调用该接口获取当前结果信息，然后再上传下一个。

See Also

NET_DVR_UploadFile_V40


NET_DVR_UploadClose

关闭文件上传，释放资源。

BOOL NET_DVR_UploadClose(
  LONG    lUploadHandle
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UploadFile_V40


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char          *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_FILEVOLUME_DATA | 20 | 下载文件卷数据文件（目前只有CVR支持） | NET_DVR_DOWNLOAD_FILEVOLUME_PARAM

  • 上层使用时可选用数据回调或文件路径的方式二选一进行下载，输入参数中fnDownloadDataCB、sFileName同时只能有一个参数生效，sFileName不为空时会直接将数据写入指定文件中；为空时则会由回调函数回调数据供用户自行处理。

    • See Also

    NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_GetDownloadState

获取文件下载的进度和状态。

LONG NET_DVR_GetDownloadState(
  LONG       lDownloadHandle,
  LPDWORD    pProgress
);

Parameters

lDownloadHandle
[in] 文件下载的句柄，NET_DVR_StartDownload的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为下载的状态值：1- 下载成功；2- 正在下载；3- 下载失败；4- 网络断开，状态未知。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDownload


NET_DVR_StopDownload

停止文件下载。

BOOL NET_DVR_StopDownload(
  LONG    lHandle
);

Parameters

lHandle
[in] 文件下载的句柄，NET_DVR_StartDownload的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDownload


NET_DVR_GetPDList

获取物理磁盘信息列表。

BOOL NET_DVR_GetPDList(
  LONG                        lUserID,
  LPNET_DVR_PHY_DISK_LIST     lpPDList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpPDList
[out] 物理磁盘信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_SetSpareDisk

设置热备。

BOOL NET_DVR_SetSpareDisk(
  LONG                        lUserID,
  NET_DVR_SPARE_DISK_PARAM    *lpSpareDisk
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSpareDisk
[in] 设备热备参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetArrayList

获取阵列信息列表。

BOOL NET_DVR_GetArrayList(
  LONG                    lUserID,
  LPNET_DVR_ARRAY_LIST    lpArrayList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpArrayList
[out] 阵列信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_CreateArray

创建阵列。

BOOL NET_DVR_CreateArray(
  LONG                             lUserID,
  LPNET_DVR_OPERATE_ARRAY_PARAM    lpArrayParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpArrayParam
[in] 阵列操作参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

创建阵列时参数lpArrayParam中需指定的参数有byRaidMode、byPDCount、wPDSlots、wPDSlots；其中wPDSlots是由接口NET_DVR_GetPDList获取的物理磁盘信息中的wPhySlot指定。

See Also

NET_DVR_GetPDList


NET_DVR_CalcArraySize

计算阵列的大小。

BOOL NET_DVR_CalcArraySize(
  LONG                             lUserID,
  LPNET_DVR_OPERATE_ARRAY_PARAM    lpArrayParam,
  UINT64                           *lpArraySize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpArrayParam
[in] 阵列信息参数
lpArraySize
[out] 阵列大小的指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

计算阵列大小时参数lpArrayParam中需指定的参数有byRaidMode、byPDCount、wPDSlots、wPDSlots；其中wPDSlots是由接口NET_DVR_GetPDList获取的物理磁盘信息中的wPhySlot指定。


NET_DVR_RaidFastConfig

阵列一键配置。

LONG NET_DVR_RaidFastConfig(
  LONG    lUserID,
  char    *sName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sName
[in] 阵列名称

Return Values

-1表示失败，其他值作为NET_DVR_FastConfigProcess等函数的参数，接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FastConfigProcess NET_DVR_CloseFastConfig


NET_DVR_FastConfigProcess

获取阵列一键配置的进度。

BOOL NET_DVR_FastConfigProcess(
  LONG     lHandle,
  DWORD    *pState
);

Parameters

lHandle
[in] 一键配置的句柄，NET_DVR_RaidFastConfig的返回值
pState
[out] 当前一键配置的进度，进度值的取值范围为(0,100)，其他值的定义见下表
宏定义 | 宏定义值 | 含义
PROCESS_SUCCESS | 100 | 过程完成
PROCESS_EXCEPTION | 400 | 过程异常
PROCESS_FAILED | 500 | 过程失败
PROCESS_QUICK_SETUP_PD_COUNT | 501 | 一键配置至少需要三块空闲盘

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_RaidFastConfig


NET_DVR_CloseFastConfig

关闭阵列一键配置，释放资源。

BOOL NET_DVR_CloseFastConfig(
  LONG   lHandle
);

Parameters

lHandle
[in] 一键配置的句柄，NET_DVR_RaidFastConfig的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_RaidFastConfig


NET_DVR_RebuildArray

重建阵列。

BOOL NET_DVR_RebuildArray(
  LONG                             lUserID,
  LPNET_DVR_OPERATE_ARRAY_PARAM    lpArrayParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpArrayParam
[in] 阵列操作参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

重建阵列时参数lpArrayParam中需指定所有参数；其中wArrayID是由接口NET_DVR_GetArrayList获取的阵列信息中的wArrayID指定，wPDSlots是由接口NET_DVR_GetPDList获取的物理磁盘信息中的wPhySlot指定。

See Also

NET_DVR_GetPDList NET_DVR_GetArrayList


NET_DVR_MigrateArray

迁移阵列。

BOOL NET_DVR_MigrateArray(
  LONG                             lUserID,
  LPNET_DVR_OPERATE_ARRAY_PARAM    lpArrayParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpArrayParam
[in] 阵列操作参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

迁移阵列时参数lpArrayParam中需指定所有参数；其中wArrayID是由接口NET_DVR_GetArrayList获取的阵列信息中的wArrayID指定，wPDSlots是由接口NET_DVR_GetPDList获取的物理磁盘信息中的wPhySlot指定。

See Also

NET_DVR_GetPDList NET_DVR_GetArrayList


NET_DVR_RaidPullDiskStart

安全拔盘。

LONG NET_DVR_RaidPullDiskStart(
  LONG                     lUserID,
  LONG                     lRaidID,
  fLongCfgStateCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lRaidID
[in] 阵列ID号
cbStateCallback
[in] 安全拔盘状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fLongCfgStateCallback)(
  LONG      lHandle,
  DWORD     dwState,
  LPVOID    pUserData
);

Callback Function Parameters

lHandle
[out] 安全拔盘句柄，NET_DVR_RaidPullDiskStart的返回值
dwState
[out] 安全拔盘状态
宏定义 | 宏定义值 | 含义
PULL_DISK_SUCCESS | 1 | 安全拔盘成功
PULL_DISK_FAIL | 2 | 安全拔盘失败
PULL_DISK_PROCESSING | 3 | 正在停止阵列
PULL_DISK_NO_ARRAY | 4 | 阵列不存在
PULL_DISK_NOT_SUPPORT | 5 | 不支持安全拔盘
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_CloseLongCfgHandle等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口属于对阵列的操作。
设备要求在拔去阵列的硬盘之前，必须要调用下该接口，才能安全拔出。发出安全拔盘命令以后，需要重新扫描阵列（NET_DVR_ScanRaidStart），更新阵列信息。

该操作是延时性操作，需要回调等待操作的状态

See Also

NET_DVR_CloseLongCfgHandle NET_DVR_ScanRaidStart


NET_DVR_ScanRaidStart

重新扫描阵列。

LONG NET_DVR_ScanRaidStart(
  LONG                     lUserID,
  fLongCfgStateCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
cbStateCallback
[in] 阵列扫描状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fLongCfgStateCallback)(
  LONG      lHandle,
  DWORD     dwState,
  LPVOID    pUserData
);

Callback Function Parameters

lHandle
[out] 阵列扫描句柄，NET_DVR_ScanRaidStart的返回值
dwState
[out] 阵列扫描状态
宏定义 | 宏定义值 | 含义
SCAN_RAID_SUC | 1 | 扫描阵列成功
SCAN_RAID_FAIL | 2 | 扫描阵列失败
SCAN_RAID_PROCESSING | 3 | 正在扫描阵列
SCAN_RAID_NOT_SUPPORT | 4 | 不支持阵列扫描
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_CloseLongCfgHandle等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口属于对阵列的操作。
设备要求在拔去阵列的硬盘之前，必须要调用接口NET_DVR_RaidPullDiskStart，才能安全拔出。在发出安全拔盘命令以后，需要调用该接口重新扫描阵列，更新阵列信息。

该操作是延时性操作，需要回调等待操作的状态

See Also

NET_DVR_CloseLongCfgHandle NET_DVR_RaidPullDiskStart


NET_DVR_DelArray

删除阵列。

BOOL NET_DVR_DelArray(
  LONG     lUserID,
  DWORD    dwID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwID
[in] 阵列ID

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口中的参数dwID是由接口NET_DVR_GetArrayList获取的阵列信息中的wArrayID指定。

See Also

NET_DVR_GetArrayList


NET_DVR_GetVDList

获取虚拟磁盘列表。

BOOL NET_DVR_GetVDList(
  LONG                 lUserID,
  LPNET_DVR_VD_LIST    lpVDList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpVDList
[out] 虚拟磁盘信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_CreateVD

创建虚拟磁盘。

BOOL NET_DVR_CreateVD(
  LONG                          lUserID,
  LPNET_DVR_OPERATE_VD_PARAM    lpVDParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpVDParam
[in] 虚拟磁盘参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_GetArraySpaceAlloc


NET_DVR_DelVD

删除虚拟磁盘。

BOOL NET_DVR_DelVD(
  LONG     lUserID,
  DWORD    dwID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwID
[in] 虚拟磁盘ID

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口中的参数dwID是由接口NET_DVR_GetVDList获取的阵列信息中的wArrayID指定。

See Also

NET_DVR_GetVDList


NET_DVR_RepairVD

修复虚拟磁盘。

BOOL NET_DVR_RepairVD(
  LONG     lUserID,
  DWORD    dwID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwID
[in] 虚拟磁盘ID

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口中的参数dwID是由接口NET_DVR_GetVDList获取的阵列信息中的wArrayID指定。

See Also

NET_DVR_GetVDList


NET_DVR_GetArraySpaceAlloc

获取阵列中虚拟磁盘分配信息。

BOOL NET_DVR_GetArraySpaceAlloc(
  LONG                                 lUserID,
  DWORD                                dwSlot,
  LPNET_DVR_ARRAY_SPACE_ALLOC_INFO     lpOutBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwSlot
[in] 阵列的槽位
lpOutBuf
[out] 该阵列中虚拟磁盘分配信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_ExpandDisk

远程扩容虚拟磁盘。

LONG NET_DVR_ExpandDisk(
  LONG    lUserID,
  DWORD   dwVDSLot
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwVDSLot
[in] 虚拟磁盘槽位

Return Values

-1表示失败，其他值作为NET_DVR_CloseExpandHandle等函数的参数，接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetExpandProgress NET_DVR_CloseExpandHandle


NET_DVR_GetExpandProgress

获取扩容虚拟磁盘进度。

BOOL NET_DVR_GetExpandProgress(
  LONG     lExpandHandle,
  DWORD    *pState
);

Parameters

lExpandHandle
[in] NET_DVR_ExpandDisk的返回值
pState
[out] 当前扩容的进度，进度值的取值范围为(0,100)，其他值的定义见下表
宏定义 | 宏定义值 | 含义
PROCESS_SUCCESS | 100 | 过程完成
PROCESS_EXCEPTION | 400 | 过程异常
PROCESS_FAILED | 500 | 过程失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_ExpandDisk


NET_DVR_CloseExpandHandle

关闭虚拟磁盘扩容，释放资源。

BOOL NET_DVR_CloseExpandHandle(
  LONG   lExpandHandle
);

Parameters

lExpandHandle
[in] NET_DVR_ExpandDisk的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_ExpandDisk


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
lChannel
[in] 通道号，如果命令不需要通道号，该参数无效，置为0xFFFFFFFF即可
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_RAID_ADAPTER_INFO | 获取适配器信息 | 无效 | NET_DVR_RAID_ADAPTER_INFO | 1134

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_RAID_ADAPTER_INFO | 设置适配器信息 | 无效 | NET_DVR_RAID_ADAPTER_INFO | 1135

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_AdapterUpgrade

远程升级适配器。

LONG NET_DVR_AdapterUpgrade(
  LONG   lUserID,
  char   *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sFileName
[in] 升级的文件路径（包括文件名）。路径长度和操作系统有关，sdk不做限制，windows默认路径长度小于等于256字节（包括文件名在内）。

Return Values

-1表示失败，其他值作为NET_DVR_GetUpgradeState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_FILEOPENFAIL | 35 | 打开文件出错。设置配置文件、设备升级、上传审讯文件时打开文件失败。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

调用此接口开始远程升级适配器后，需要调用NET_DVR_GetUpgradeState、NET_DVR_GetUpgradeProgres分别获取升级进度和状态，结束升级时还需要调用NET_DVR_CloseUpgradeHandle关闭句柄，释放资源。

See Also

NET_DVR_Login NET_DVR_Login_V30 NET_DVR_CloseUpgradeHandle
NET_DVR_GetUpgradeState NET_DVR_GetUpgradeProgres


NET_DVR_SetDVRMessageCallBack_V50

注册报警信息回调函数。

BOOL NET_DVR_SetDVRMessageCallBack_V50(
  int            iIndex,
  MSGCallBack    fMessageCallBack,
  void           *pUser
);

Parameters

iIndex
[in] 回调函数索引，取值范围：[0,15]
fMessageCallBack
[in] 回调函数
pUser
[in] 用户数据

Callback Function

typedef void (CALLBACK *MSGCallBack)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，不同的报警信息对应不同的类型，通过类型区分是什么报警信息，详见“Remarks”中列表
pAlarmer
[out] 报警设备信息，包括设备序列号、IP地址、登录IUserID句柄等
pAlarmInfo
[out] 报警信息，通过lCommand值判断pAlarmer对应的结构体，详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • V30、V31的接口设置报警回调函数是全局唯一的，注册多次会覆盖之前的，只有最后设置的回调函数有效，所有设备报警信息都是在同一个回调函数中返回的，通过报警设备信息（pAlarmInfo）区分是哪台设备；通过V50接口设置报警回调函数，支持设置多路不同的回调函数，最大支持16路，通过索引进行区分，所有的设备报警信息会同时在设置的各个回调函数里面返回，返回相同的数据，同样需要通过报警设备信息（pAlarmInfo）区分是哪台设备。
  • 该接口中回调函数的第一个参数（lCommand）和第三个参数（pAlarmInfo）是密切关联的，其关系见下表：
消息类型（lCommand） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
智能报警 |  |  |
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 0x1103 | 客流量统计报警信息 | NET_DVR_PDC_ALRAM_INFO
COMM_RULE_INFO_UPLOAD | 0x1107 | 事件数据信息 | NET_DVR_RULE_INFO_ALARM
COMM_ALARM_FACE | 0x1106 | 人脸检测识别报警信息 | NET_DVR_FACEDETECT_ALARM
COMM_UPLOAD_FACESNAP_RESULT | 0x1112 | 人脸抓拍结果信息 | NET_VCA_FACESNAP_RESULT
COMM_FACECAPTURE_STATISTICS_RESULT | 0x112a | 人脸抓拍人员统计信息 | NET_DVR_FACECAPTURE_STATISTICS_RESULT
COMM_SNAP_MATCH_ALARM | 0x2902 | 人脸比对结果信息 | NET_VCA_FACESNAP_MATCH_ALARM
COMM_ALARM_FACE_DETECTION | 0x4010 | 人脸侦测报警信息 | NET_DVR_FACE_DETECTION
COMM_ALARM_TARGET_LEFT_REGION | 0x4011 | 教师离开讲台报警 | NET_DVR_TARGET_LEFT_REGION_ALARM
COMM_PEOPLE_DETECTION_UPLOAD | 0x4014 | 人员侦测信息 | NET_DVR_PEOPLE_DETECTION_RESULT
COMM_UPLOAD_AIOP_VIDEO | 0x4021 | AI开放平台接入视频检测报警信息 | NET_AIOP_VIDEO_HEAD
COMM_UPLOAD_AIOP_PICTURE | 0x4022 | AI开放平台接入图片检测报警信息 | NET_AIOP_PICTURE_HEAD
COMM_UPLOAD_AIOP_POLLING_SNAP | 0x4023 | AI开放平台接入轮询抓图检测报警信息 | NET_AIOP_POLLING_SNAP_HEAD
COMM_UPLOAD_AIOP_POLLING_VIDEO | 0x4024 | AI开放平台接入轮询视频检测报警信息 | NET_AIOP_POLLING_VIDEO_HEAD
COMM_SIGN_ABNORMAL_ALARM | 0x6120 | 体征异常报警(Json数据结构) | EVENT_JSON
COMM_HFPD_ALARM | 0x6121 | 高频人员检测报警(Json数据结构) | EVENT_JSON
COMM_ALARM_VQD_EX | 0x1116 | VQD报警信息 | NET_DVR_VQD_ALARM
COMM_ALARM_VQD | 0x6000 | VQD诊断报警信息 | NET_DVR_VQD_DIAGNOSE_INFO
COMM_SCENECHANGE_DETECTION_UPLOAD | 0x1130 | 场景变更报警信息 | NET_DVR_SCENECHANGE_DETECTION_RESULT
COMM_CROSSLINE_ALARM | 0x1131 | 压线报警信息 | NET_DVR_CROSSLINE_ALARM
COMM_ALARM_AUDIOEXCEPTION | 0x1150 | 声音报警信息 | NET_DVR_AUDIOEXCEPTION_ALARM
COMM_ALARM_DEFOCUS | 0x1151 | 虚焦报警信息 | NET_DVR_DEFOCUS_ALARM
COMM_SWITCH_LAMP_ALARM | 0x6002 | 开关灯检测报警信息 | NET_DVR_SWITCH_LAMP_ALARM
COMM_UPLOAD_HEATMAP_RESULT | 0x4008 | 热度图报警信息 | NET_DVR_HEATMAP_RESULT
COMM_UPLOAD_HEATMAP_RESULT_PDC | 0x4018 | 热度图按人数统计数据上传事件 | NET_DVR_HEATMAP_RESULT_PDC
COMM_UPLOAD_HEATMAP_RESULT_DURATION | 0x4019 | 热度图按人员停留时间统计数据上传事件 | NET_DVR_HEATMAP_RESULT
COMM_UPLOAD_HEATMAP_RESULT_INTERSECTION | 0x4020 | 路口分析热度值结果上传 | NET_DVR_HEATMAP_RESULT
COMM_FIREDETECTION_ALARM | 0x4991 | 火点检测报警信息 | NET_DVR_FIREDETECTION_ALARM
COMM_FACE_THERMOMETRY_ALARM | 0x4994 | 人脸测温报警信息 | NET_DVR_FACE_THERMOMETRY_ALARM
COMM_THERMOMETRY_DIFF_ALARM | 0x5211 | 温差报警信息 | NET_DVR_THERMOMETRY_DIFF_ALARM
COMM_THERMOMETRY_ALARM | 0x5212 | 温度报警信息 | NET_DVR_THERMOMETRY_ALARM
COMM_ALARM_SHIPSDETECTION | 0x4521 | 船只检测报警信息 | NET_DVR_SHIPSDETECTION_ALARM
智能交通 |  |  |
COMM_ALARM_AID | 0x1110 | 交通事件报警信息 | NET_DVR_AID_ALARM
COMM_ALARM_TPS | 0x1111 | 交通参数统计报警信息 | NET_DVR_TPS_ALARM
COMM_ALARM_TFS | 0x1113 | 交通取证报警信息 | NET_DVR_TFS_ALARM
COMM_ALARM_TPS_V41 | 0x1114 | 交通参数统计报警信息(扩展) | NET_DVR_TPS_ALARM_V41
COMM_ALARM_AID_V41 | 0x1115 | 交通事件报警信息扩展 | NET_DVR_AID_ALARM_V41
COMM_UPLOAD_PLATE_RESULT | 0x2800 | 交通抓拍结果 | NET_DVR_PLATE_RESULT
COMM_ITS_PLATE_RESULT | 0x3050 | 交通抓拍结果(新报警信息) | NET_ITS_PLATE_RESULT
COMM_ITS_TRAFFIC_COLLECT | 0x3051 | 交通统计数据上传 | NET_ITS_TRAFFIC_COLLECT
COMM_ITS_BLOCKLIST_ALARM | 0x3057 | 车辆非授权名单报警上传 | NET_ITS_ECT_BLOCKLIST
COMM_VEHICLE_CONTROL_LIST_DSALARM | 0x3058 | 车辆授权和非授权名单数据需要同步报警上传 | NET_DVR_VEHICLE_CONTROL_LIST_DSALARM
COMM_VEHICLE_CONTROL_ALARM | 0x3059 | 授权和非授权名单车辆报警上传 | NET_DVR_VEHICLE_CONTROL_ALARM
COMM_FIRE_ALARM | 0x3060 | 消防报警上传 | NET_DVR_FIRE_ALARM
COMM_VEHICLE_RECOG_RESULT | 0x3062 | 车辆二次识别结果上传 | NET_DVR_VEHICLE_RECOG_RESULT
COMM_ALARM_SENSORINFO_UPLOAD | 0x3077 | 传感器上传信息 | NET_DVR_SENSOR_INFO_UPLOAD
COMM_ALARM_CAPTURE_UPLOAD | 0x3078 | 抓拍图片上传 | NET_DVR_CAPTURE_UPLOAD
COMM_ITS_RADARINFO | 0x3079 | 雷达报警上传 | NET_DVR_ALARM_RADARINFO
COMM_SIGNAL_LAMP_ABNORMAL | 0x3080 | 信号灯异常检测上传 | NET_DVR_SIGNALLAMP_DETCFG
COMM_ALARM_TPS_REAL_TIME | 0x3081 | TPS实时过车数据上传 | NET_DVR_TPS_REAL_TIME_INFO
COMM_ALARM_TPS_STATISTICS | 0x3082 | TPS统计过车数据上传 | NET_DVR_TPS_STATISTICS_INFO
COMM_ITS_ROAD_EXCEPTION | 0x4500 | 路口设备异常报警信息 | NET_ITS_ROADINFO
COMM_ITS_EXTERNAL_CONTROL_ALARM | 0x4520 | 指示灯外控报警信息 | NET_DVR_EXTERNAL_CONTROL_ALARM
COMM_ITS_GATE_FACE | 0x3053 | 出入口人脸抓拍数据 | NET_ITS_GATE_FACE
COMM_ITS_GATE_ALARMINFO | 0x3061 | 出入口控制机数据 | NET_DVR_GATE_ALARMINFO
COMM_GATE_CHARGEINFO_UPLOAD | 0x3064 | 出入口付费信息 | NET_DVR_GATE_CHARGEINFO
COMM_TME_VEHICLE_INDENTIFICATION | 0x3065 | 出入口控制器TME车辆抓拍信息 | NET_DVR_TME_VEHICLE_RESULT
COMM_GATE_CARDINFO_UPLOAD | 0x3066 | 出入口卡片信息 | NET_DVR_GATE_CARDINFO
报警主机 |  |  |
COMM_ALARM_ALARMHOST | 0x1105 | 网络报警主机报警信息 | NET_DVR_ALARMHOST_ALARMINFO
COMM_SENSOR_VALUE_UPLOAD | 0x1120 | 模拟量数据实时信息 | NET_DVR_SENSOR_ALARM
COMM_SENSOR_ALARM | 0x1121 | 模拟量报警信息 | NET_DVR_SENSOR_ALARM
COMM_SWITCH_ALARM | 0x1122 | 开关量报警信息 | NET_DVR_SWITCH_ALARM
COMM_ALARMHOST_EXCEPTION | 0x1123 | 故障报警信息 | NET_DVR_ALARMHOST_EXCEPTION_ALARM
COMM_ALARMHOST_SAFETYCABINSTATE | 0x1125 | 防护舱状态信息 | NET_DVR_ALARMHOST_SAFETYCABINSTATE
COMM_ALARMHOST_ALARMOUTSTATUS | 0x1126 | 报警输出口或警号状态信息 | NET_DVR_ALARMHOST_ALARMOUTSTATUS
COMM_ALARMHOST_CID_ALARM | 0x1127 | 报警主机CID报告报警上传 | NET_DVR_CID_ALARM
COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM | 0x1128 | 报警主机外接设备报警信息 | NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO
COMM_ALARMHOST_DATA_UPLOAD | 0x1129 | 报警数据信息 | NET_DVR_ALARMHOST_DATA_UPLOAD
COMM_ALARM_WIRELESS_INFO | 0x122b | 无线网络信息上传 | NET_DVR_ALARMWIRELESSINFO
明眸门禁 |  |  |
COMM_ALARM_ACS | 0x5002 | 门禁主机报警信息 | NET_DVR_ACS_ALARM_INFO
COMM_ID_INFO_ALARM | 0x5200 | 门禁身份证刷卡信息 | NET_DVR_ID_CARD_INFO_ALARM
COMM_PASSNUM_INFO_ALARM | 0x5201 | 门禁通行人数信息 | NET_DVR_PASSNUM_INFO_ALARM
可视对讲 |  |  |
COMM_ALARM_BUTTON_DOWN_EXCEPTION | 0x1152 | 按钮按下报警信息(IP可视对讲主机) | NET_BUTTON_DOWN_EXCEPTION_ALARM
COMM_UPLOAD_VIDEO_INTERCOM_EVENT | 0x1132 | 可视对讲事件记录信息 | NET_DVR_VIDEO_INTERCOM_EVENT
COMM_ALARM_VIDEO_INTERCOM | 0x1133 | 可视对讲报警信息 | NET_DVR_VIDEO_INTERCOM_ALARM
其他设备报警 |  |  |
COMM_ALARM | 0x1100 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以下版本支持的设备) | NET_DVR_ALARMINFO
COMM_ALARM_V30 | 0x4000 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以上版本支持的设备) | NET_DVR_ALARMINFO_V30
COMM_ALARM_V40 | 0x4007 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息，报警数据为可变长 | NET_DVR_ALARMINFO_V40
COMM_IPCCFG | 0x4001 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31
COMM_IPC_AUXALARM_RESULT | 0x2820 | PIR报警、无线报警、呼救报警信息 | NET_IPC_AUXALARM_RESULT
COMM_ALARM_DEVICE | 0x4004 | CVR设备报警信息，由于通道值大于256而扩展 | NET_DVR_ALARMINFO_DEV
COMM_ALARM_DEVICE_V40 | 0x4009 | CVR设备报警信息扩展(增加报警信息子结构) | NET_DVR_ALARMINFO_DEV_V40
COMM_ALARM_CVR | 0x4005 | CVR外部报警信息 | NET_DVR_CVR_ALARM
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_ALARM_HOT_SPARE | 0x4006 | 热备异常报警（N+1模式异常报警）信息 | NET_DVR_ALARM_HOT_SPARE
COMM_SCREEN_ALARM | 0x5000 | 多屏控制器上传的报警信息 | NET_DVR_SCREENALARMCFG
COMM_ALARM_LCD | 0x5011 | LCD屏幕报警信息 | NET_DVR_LCD_ALARM
COMM_ALARM_DEC_VCA | 0x5010 | 解码器智能解码报警信息 | NET_DVR_DEC_VCA_ALARM
COMM_GISINFO_UPLOAD | 0x4012 | GIS信息 | NET_DVR_GIS_UPLOADINFO
COMM_VANDALPROOF_ALARM | 0x4013 | 防破坏报警信息 | NET_DVR_VANDALPROOF_ALARM
COMM_ALARM_STORAGE_DETECTION | 0x4015 | 存储智能检测报警信息 | NET_DVR_STORAGE_DETECTION_ALARM
COMM_CONFERENCE_CALL_ALARM | 0x5012 | 会议终端会议呼叫报警信息 | NET_DVR_CONFERENCE_CALL_ALARM
COMM_ALARM_ALARMGPS | 0x1202 | GPS报警信息 | NET_DVR_GPSALARMINFO
COMM_ALARM_SWITCH_CONVERT | 0x5004 | 交换机报警信息 | NET_DVR_SWITCH_CONVERT_ALARM
COMM_INQUEST_ALARM | 0x6005 | 审讯主机报警信息 | NET_DVR_INQUEST_ALARM
COMM_PANORAMIC_LINKAGE_ALARM | 0x5213 | 鹰眼全景联动到位事件信息 | NET_DVR_PANORAMIC_LINKAGE
COMM_TAG_INFO_ALARM | 0x5215 | 标签信息上传 | NET_DVR_TAG_INFO_ALARM
COMM_CLUSTER_ALARM | 0x6020 | 集群报警信息（集群异动（扩容\缩容等）时布防CS失败异常，收到此异常，需要重新布防集群设备，否则会有CS的报警丢失。普通设备不会回调该异常，只针对集群） | {EventNotificationAlert}JSON报文

Example

以布防方式设置回调接收报警信息为例

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum=0;
void CALLBACK MessageCallbackNo1(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i=0;
    char filename[100];
    FILE *fSnapPic=NULL;
    FILE *fSnapPicPlate=NULL;

    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理

    switch(lCommand)
    {
        case COMM_ALARM:
        {
            NET_DVR_ALARMINFO struAlarmInfo;
            memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
            switch (struAlarmInfo.dwAlarmType)
            {
                case 3: //移动侦测报警
                    for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
                    {
                        if (struAlarmInfo.dwChannel[i] == 1)
                        {
                            printf("发生移动侦测报警的通道号 %d\n", i+1);
                        }
                    }
                    break;
                default:
                    break;
            }
            break;
        }
        case COMM_UPLOAD_PLATE_RESULT:
        {
            NET_DVR_PLATE_RESULT struPlateResult={0};
            memcpy(&struPlateResult, pAlarmInfo, sizeof(struPlateResult));
            printf("车牌号: %s\n", struPlateResult.struPlateInfo.sLicense);//车牌号

            switch(struPlateResult.struPlateInfo.byColor)//车牌颜色
            {
            case VCA_BLUE_PLATE:
                printf("车辆颜色: 蓝色\n");
                break;
            case VCA_YELLOW_PLATE:
                printf("车辆颜色: 黄色\n");
                break;
            case VCA_WHITE_PLATE:
                printf("车辆颜色: 白色\n");
                break;
            case VCA_BLACK_PLATE:
                printf("车辆颜色: 黑色\n");
                break;
            default:
                break;
            }
            //场景图
            if (struPlateResult.dwPicLen != 0 && struPlateResult.byResultType == 1 )
            {
                sprintf(filename,"testpic_%d.jpg",iNum);
                fSnapPic=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌图
            if (struPlateResult.dwPicPlateLen != 0 && struPlateResult.byResultType == 1)
            {
                sprintf(filename,"testPicPlate_%d.jpg",iNum);
                fSnapPicPlate=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
            break;
        }
        case COMM_ITS_PLATE_RESULT:
        {
            NET_ITS_PLATE_RESULT struITSPlateResult={0};
            memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

            for (i=0;i<struITSPlateResult.dwPicNum;i++)
            {
                printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号
                switch(struITSPlateResult.struPlateInfo.byColor)//车牌颜色
                {
                case VCA_BLUE_PLATE:
                    printf("车辆颜色: 蓝色\n");
                    break;
                case VCA_YELLOW_PLATE:
                    printf("车辆颜色: 黄色\n");
                    break;
                case VCA_WHITE_PLATE:
                    printf("车辆颜色: 白色\n");
                    break;
                case VCA_BLACK_PLATE:
                    printf("车辆颜色: 黑色\n");
                    break;
                default:
                    break;
                }
                //保存场景图
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType== 1)||(struITSPlateResult.struPicInfo[i].byType == 2))
                {
                    sprintf(filename,"testITSpic%d_%d.jpg",iNum,i);
                    fSnapPic=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen,1,fSnapPic);
                    iNum++;
                    fclose(fSnapPic);
                }
                //车牌小图片
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType == 0))
                {
                    sprintf(filename,"testPicPlate%d_%d.jpg",iNum,i);
                    fSnapPicPlate=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, \ fSnapPicPlate);
                    iNum++;
                    fclose(fSnapPicPlate);
                }
                //其他信息处理......
            }
            break;
        }
    default:
        break;
    }
}

void CALLBACK MessageCallbackNo2(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i=0;
    char filename[100];
    FILE *fSnapPic=NULL;
    FILE *fSnapPicPlate=NULL;

    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理

    switch(lCommand)
    {
        case COMM_ALARM:
        {
            NET_DVR_ALARMINFO struAlarmInfo;
            memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
            switch (struAlarmInfo.dwAlarmType)
            {
                case 3: //移动侦测报警
                    for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
                    {
                        if (struAlarmInfo.dwChannel[i] == 1)
                        {
                            printf("发生移动侦测报警的通道号 %d\n", i+1);
                        }
                    }
                    break;
                default:
                    break;
            }
            break;
        }
        case COMM_UPLOAD_PLATE_RESULT:
        {
            NET_DVR_PLATE_RESULT struPlateResult={0};
            memcpy(&struPlateResult, pAlarmInfo, sizeof(struPlateResult));
            printf("车牌号: %s\n", struPlateResult.struPlateInfo.sLicense);//车牌号

            switch(struPlateResult.struPlateInfo.byColor)//车牌颜色
            {
            case VCA_BLUE_PLATE:
                printf("车辆颜色: 蓝色\n");
                break;
            case VCA_YELLOW_PLATE:
                printf("车辆颜色: 黄色\n");
                break;
            case VCA_WHITE_PLATE:
                printf("车辆颜色: 白色\n");
                break;
            case VCA_BLACK_PLATE:
                printf("车辆颜色: 黑色\n");
                break;
            default:
                break;
            }
            //场景图
            if (struPlateResult.dwPicLen != 0 && struPlateResult.byResultType == 1 )
            {
                sprintf(filename,"testpic_%d.jpg",iNum);
                fSnapPic=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌图
            if (struPlateResult.dwPicPlateLen != 0 && struPlateResult.byResultType == 1)
            {
                sprintf(filename,"testPicPlate_%d.jpg",iNum);
                fSnapPicPlate=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
            break;
        }
        case COMM_ITS_PLATE_RESULT:
        {
            NET_ITS_PLATE_RESULT struITSPlateResult={0};
            memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

            for (i=0;i<struITSPlateResult.dwPicNum;i++)
            {
                printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号
                switch(struITSPlateResult.struPlateInfo.byColor)//车牌颜色
                {
                case VCA_BLUE_PLATE:
                    printf("车辆颜色: 蓝色\n");
                    break;
                case VCA_YELLOW_PLATE:
                    printf("车辆颜色: 黄色\n");
                    break;
                case VCA_WHITE_PLATE:
                    printf("车辆颜色: 白色\n");
                    break;
                case VCA_BLACK_PLATE:
                    printf("车辆颜色: 黑色\n");
                    break;
                default:
                    break;
                }
                //保存场景图
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType== 1)||(struITSPlateResult.struPicInfo[i].byType == 2))
                {
                    sprintf(filename,"testITSpic%d_%d.jpg",iNum,i);
                    fSnapPic=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen,1,fSnapPic);
                    iNum++;
                    fclose(fSnapPic);
                }
                //车牌小图片
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType == 0))
                {
                    sprintf(filename,"testPicPlate%d_%d.jpg",iNum,i);
                    fSnapPicPlate=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, \ fSnapPicPlate);
                    iNum++;
                    fclose(fSnapPicPlate);
                }
                //其他信息处理......
            }
            break;
        }
    default:
        break;
    }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  // 注册设备
  LONG lUserID;
  NET_DVR_DEVICEINFO_V30 struDeviceInfo;
  lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo);
  if (lUserID < 0)
  {
       printf("Login error, %d\n", NET_DVR_GetLastError());
       NET_DVR_Cleanup();
       return;
  }

  //设置报警回调函数
  NET_DVR_SetDVRMessageCallBack_V50(0, MessageCallbackNo1, NULL);
  NET_DVR_SetDVRMessageCallBack_V50(1, MessageCallbackNo2, NULL);

  //启用布防
  NET_DVR_SETUPALARM_PARAM struSetupParam={0};
  struSetupParam.dwSize=sizeof(NET_DVR_SETUPALARM_PARAM);

  //上传报警信息类型: 0- 老报警信息(NET_DVR_PLATE_RESULT), 1- 新报警信息(NET_ITS_PLATE_RESULT)
  struSetupParam.byAlarmInfoType=1;
  //布防等级:二级布防，针对智能交通设备
  struSetupParam.byLevel=1;

  LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID,&struSetupParam);
  if (lHandle < 0)
  {
      printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  Sleep(20000);
  //撤销布防上传通道
  if (!NET_DVR_CloseAlarmChan_V30(lHandle))
  {
      printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}

See Also

NET_DVR_SetupAlarmChan_V41

NET_DVR_StartListen_V30

Reference Interface

该接口扩展源于

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_SetDVRMessageCallBack_V31

注册回调函数，接收设备报警消息等。

BOOL NET_DVR_SetDVRMessageCallBack_V31(
  MSGCallBack_V31    fMessageCallBack,
  void               *pUser
);

Parameters

fMessageCallBack
[in] 回调函数
pUser
[in] 用户数据

Callback Function

typedef BOOL(CALLBACK *MSGCallBack_V31)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，不同的报警信息对应不同的类型，通过类型区分是什么报警信息，详见“Remarks”中列表
pAlarmer
[out] 报警设备信息，包括设备序列号、IP地址、登录IUserID句柄等
pAlarmInfo
[out] 报警信息，通过lCommand值判断pAlarmer对应的结构体，详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 报警回调函数有返回值，接收到数据需要返回TRUE。
  • 通过该接口设置的报警回调函数是全局唯一的，注册多次会覆盖之前的，只有最后设置的回调函数有效，所有设备报警信息都是在同一个回调函数中返回的，通过报警设备信息（pAlarmInfo）区分是哪台设备。
  • 该接口中回调函数的第一个参数（lCommand）和第三个参数（pAlarmInfo）是密切关联的，其关系见下表：
消息类型（lCommand） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
智能报警 |  |  |
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 0x1103 | 客流量统计报警信息 | NET_DVR_PDC_ALRAM_INFO
COMM_RULE_INFO_UPLOAD | 0x1107 | 事件数据信息 | NET_DVR_RULE_INFO_ALARM
COMM_ALARM_FACE | 0x1106 | 人脸检测识别报警信息 | NET_DVR_FACEDETECT_ALARM
COMM_UPLOAD_FACESNAP_RESULT | 0x1112 | 人脸抓拍结果信息 | NET_VCA_FACESNAP_RESULT
COMM_FACECAPTURE_STATISTICS_RESULT | 0x112a | 人脸抓拍人员统计信息 | NET_DVR_FACECAPTURE_STATISTICS_RESULT
COMM_SNAP_MATCH_ALARM | 0x2902 | 人脸比对结果信息 | NET_VCA_FACESNAP_MATCH_ALARM
COMM_ALARM_FACE_DETECTION | 0x4010 | 人脸侦测报警信息 | NET_DVR_FACE_DETECTION
COMM_ALARM_TARGET_LEFT_REGION | 0x4011 | 教师离开讲台报警 | NET_DVR_TARGET_LEFT_REGION_ALARM
COMM_PEOPLE_DETECTION_UPLOAD | 0x4014 | 人员侦测信息 | NET_DVR_PEOPLE_DETECTION_RESULT
COMM_UPLOAD_AIOP_VIDEO | 0x4021 | AI开放平台接入视频检测报警信息 | NET_AIOP_VIDEO_HEAD
COMM_UPLOAD_AIOP_PICTURE | 0x4022 | AI开放平台接入图片检测报警信息 | NET_AIOP_PICTURE_HEAD
COMM_UPLOAD_AIOP_POLLING_SNAP | 0x4023 | AI开放平台接入轮询抓图检测报警信息 | NET_AIOP_POLLING_SNAP_HEAD
COMM_UPLOAD_AIOP_POLLING_VIDEO | 0x4024 | AI开放平台接入轮询视频检测报警信息 | NET_AIOP_POLLING_VIDEO_HEAD
COMM_SIGN_ABNORMAL_ALARM | 0x6120 | 体征异常报警(Json数据结构) | EVENT_JSON
COMM_HFPD_ALARM | 0x6121 | 高频人员检测报警(Json数据结构) | EVENT_JSON
COMM_ALARM_VQD_EX | 0x1116 | VQD报警信息 | NET_DVR_VQD_ALARM
COMM_ALARM_VQD | 0x6000 | VQD诊断报警信息 | NET_DVR_VQD_DIAGNOSE_INFO
COMM_SCENECHANGE_DETECTION_UPLOAD | 0x1130 | 场景变更报警信息 | NET_DVR_SCENECHANGE_DETECTION_RESULT
COMM_CROSSLINE_ALARM | 0x1131 | 压线报警信息 | NET_DVR_CROSSLINE_ALARM
COMM_ALARM_AUDIOEXCEPTION | 0x1150 | 声音报警信息 | NET_DVR_AUDIOEXCEPTION_ALARM
COMM_ALARM_DEFOCUS | 0x1151 | 虚焦报警信息 | NET_DVR_DEFOCUS_ALARM
COMM_SWITCH_LAMP_ALARM | 0x6002 | 开关灯检测报警信息 | NET_DVR_SWITCH_LAMP_ALARM
COMM_UPLOAD_HEATMAP_RESULT | 0x4008 | 热度图报警信息 | NET_DVR_HEATMAP_RESULT
COMM_UPLOAD_HEATMAP_RESULT_PDC | 0x4018 | 热度图按人数统计数据上传事件 | NET_DVR_HEATMAP_RESULT_PDC
COMM_UPLOAD_HEATMAP_RESULT_DURATION | 0x4019 | 热度图按人员停留时间统计数据上传事件 | NET_DVR_HEATMAP_RESULT
COMM_UPLOAD_HEATMAP_RESULT_INTERSECTION | 0x4020 | 路口分析热度值结果上传 | NET_DVR_HEATMAP_RESULT
COMM_FIREDETECTION_ALARM | 0x4991 | 火点检测报警信息 | NET_DVR_FIREDETECTION_ALARM
COMM_FACE_THERMOMETRY_ALARM | 0x4994 | 人脸测温报警信息 | NET_DVR_FACE_THERMOMETRY_ALARM
COMM_THERMOMETRY_DIFF_ALARM | 0x5211 | 温差报警信息 | NET_DVR_THERMOMETRY_DIFF_ALARM
COMM_THERMOMETRY_ALARM | 0x5212 | 温度报警信息 | NET_DVR_THERMOMETRY_ALARM
COMM_ALARM_SHIPSDETECTION | 0x4521 | 船只检测报警信息 | NET_DVR_SHIPSDETECTION_ALARM
智能交通 |  |  |
COMM_ALARM_AID | 0x1110 | 交通事件报警信息 | NET_DVR_AID_ALARM
COMM_ALARM_TPS | 0x1111 | 交通参数统计报警信息 | NET_DVR_TPS_ALARM
COMM_ALARM_TFS | 0x1113 | 交通取证报警信息 | NET_DVR_TFS_ALARM
COMM_ALARM_TPS_V41 | 0x1114 | 交通参数统计报警信息(扩展) | NET_DVR_TPS_ALARM_V41
COMM_ALARM_AID_V41 | 0x1115 | 交通事件报警信息扩展 | NET_DVR_AID_ALARM_V41
COMM_UPLOAD_PLATE_RESULT | 0x2800 | 交通抓拍结果 | NET_DVR_PLATE_RESULT
COMM_ITS_PLATE_RESULT | 0x3050 | 交通抓拍结果(新报警信息) | NET_ITS_PLATE_RESULT
COMM_ITS_TRAFFIC_COLLECT | 0x3051 | 交通统计数据上传 | NET_ITS_TRAFFIC_COLLECT
COMM_ITS_BLOCKLIST_ALARM | 0x3057 | 车辆非授权名单报警上传 | NET_ITS_ECT_BLOCKLIST
COMM_VEHICLE_CONTROL_LIST_DSALARM | 0x3058 | 车辆授权和非授权名单数据需要同步报警上传 | NET_DVR_VEHICLE_CONTROL_LIST_DSALARM
COMM_VEHICLE_CONTROL_ALARM | 0x3059 | 授权和非授权名单车辆报警上传 | NET_DVR_VEHICLE_CONTROL_ALARM
COMM_FIRE_ALARM | 0x3060 | 消防报警上传 | NET_DVR_FIRE_ALARM
COMM_VEHICLE_RECOG_RESULT | 0x3062 | 车辆二次识别结果上传 | NET_DVR_VEHICLE_RECOG_RESULT
COMM_ALARM_SENSORINFO_UPLOAD | 0x3077 | 传感器上传信息 | NET_DVR_SENSOR_INFO_UPLOAD
COMM_ALARM_CAPTURE_UPLOAD | 0x3078 | 抓拍图片上传 | NET_DVR_CAPTURE_UPLOAD
COMM_ITS_RADARINFO | 0x3079 | 雷达报警上传 | NET_DVR_ALARM_RADARINFO
COMM_SIGNAL_LAMP_ABNORMAL | 0x3080 | 信号灯异常检测上传 | NET_DVR_SIGNALLAMP_DETCFG
COMM_ALARM_TPS_REAL_TIME | 0x3081 | TPS实时过车数据上传 | NET_DVR_TPS_REAL_TIME_INFO
COMM_ALARM_TPS_STATISTICS | 0x3082 | TPS统计过车数据上传 | NET_DVR_TPS_STATISTICS_INFO
COMM_ITS_ROAD_EXCEPTION | 0x4500 | 路口设备异常报警信息 | NET_ITS_ROADINFO
COMM_ITS_EXTERNAL_CONTROL_ALARM | 0x4520 | 指示灯外控报警信息 | NET_DVR_EXTERNAL_CONTROL_ALARM
COMM_ITS_GATE_FACE | 0x3053 | 出入口人脸抓拍数据 | NET_ITS_GATE_FACE
COMM_ITS_GATE_ALARMINFO | 0x3061 | 出入口控制机数据 | NET_DVR_GATE_ALARMINFO
COMM_GATE_CHARGEINFO_UPLOAD | 0x3064 | 出入口付费信息 | NET_DVR_GATE_CHARGEINFO
COMM_TME_VEHICLE_INDENTIFICATION | 0x3065 | 出入口控制器TME车辆抓拍信息 | NET_DVR_TME_VEHICLE_RESULT
COMM_GATE_CARDINFO_UPLOAD | 0x3066 | 出入口卡片信息 | NET_DVR_GATE_CARDINFO
报警主机 |  |  |
COMM_ALARM_ALARMHOST | 0x1105 | 网络报警主机报警信息 | NET_DVR_ALARMHOST_ALARMINFO
COMM_SENSOR_VALUE_UPLOAD | 0x1120 | 模拟量数据实时信息 | NET_DVR_SENSOR_ALARM
COMM_SENSOR_ALARM | 0x1121 | 模拟量报警信息 | NET_DVR_SENSOR_ALARM
COMM_SWITCH_ALARM | 0x1122 | 开关量报警信息 | NET_DVR_SWITCH_ALARM
COMM_ALARMHOST_EXCEPTION | 0x1123 | 故障报警信息 | NET_DVR_ALARMHOST_EXCEPTION_ALARM
COMM_ALARMHOST_SAFETYCABINSTATE | 0x1125 | 防护舱状态信息 | NET_DVR_ALARMHOST_SAFETYCABINSTATE
COMM_ALARMHOST_ALARMOUTSTATUS | 0x1126 | 报警输出口或警号状态信息 | NET_DVR_ALARMHOST_ALARMOUTSTATUS
COMM_ALARMHOST_CID_ALARM | 0x1127 | 报警主机CID报告报警上传 | NET_DVR_CID_ALARM
COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM | 0x1128 | 报警主机外接设备报警信息 | NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO
COMM_ALARMHOST_DATA_UPLOAD | 0x1129 | 报警数据信息 | NET_DVR_ALARMHOST_DATA_UPLOAD
COMM_ALARM_WIRELESS_INFO | 0x122b | 无线网络信息上传 | NET_DVR_ALARMWIRELESSINFO
明眸门禁 |  |  |
COMM_ALARM_ACS | 0x5002 | 门禁主机报警信息 | NET_DVR_ACS_ALARM_INFO
COMM_ID_INFO_ALARM | 0x5200 | 门禁身份证刷卡信息 | NET_DVR_ID_CARD_INFO_ALARM
COMM_PASSNUM_INFO_ALARM | 0x5201 | 门禁通行人数信息 | NET_DVR_PASSNUM_INFO_ALARM
可视对讲 |  |  |
COMM_ALARM_BUTTON_DOWN_EXCEPTION | 0x1152 | 按钮按下报警信息(IP可视对讲主机) | NET_BUTTON_DOWN_EXCEPTION_ALARM
COMM_UPLOAD_VIDEO_INTERCOM_EVENT | 0x1132 | 可视对讲事件记录信息 | NET_DVR_VIDEO_INTERCOM_EVENT
COMM_ALARM_VIDEO_INTERCOM | 0x1133 | 可视对讲报警信息 | NET_DVR_VIDEO_INTERCOM_ALARM
其他设备报警 |  |  |
COMM_ALARM | 0x1100 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以下版本支持的设备) | NET_DVR_ALARMINFO
COMM_ALARM_V30 | 0x4000 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以上版本支持的设备) | NET_DVR_ALARMINFO_V30
COMM_ALARM_V40 | 0x4007 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息，报警数据为可变长 | NET_DVR_ALARMINFO_V40
COMM_IPCCFG | 0x4001 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31
COMM_IPC_AUXALARM_RESULT | 0x2820 | PIR报警、无线报警、呼救报警信息 | NET_IPC_AUXALARM_RESULT
COMM_ALARM_DEVICE | 0x4004 | CVR设备报警信息，由于通道值大于256而扩展 | NET_DVR_ALARMINFO_DEV
COMM_ALARM_DEVICE_V40 | 0x4009 | CVR设备报警信息扩展(增加报警信息子结构) | NET_DVR_ALARMINFO_DEV_V40
COMM_ALARM_CVR | 0x4005 | CVR外部报警信息 | NET_DVR_CVR_ALARM
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_ALARM_HOT_SPARE | 0x4006 | 热备异常报警（N+1模式异常报警）信息 | NET_DVR_ALARM_HOT_SPARE
COMM_SCREEN_ALARM | 0x5000 | 多屏控制器上传的报警信息 | NET_DVR_SCREENALARMCFG
COMM_ALARM_LCD | 0x5011 | LCD屏幕报警信息 | NET_DVR_LCD_ALARM
COMM_ALARM_DEC_VCA | 0x5010 | 解码器智能解码报警信息 | NET_DVR_DEC_VCA_ALARM
COMM_GISINFO_UPLOAD | 0x4012 | GIS信息 | NET_DVR_GIS_UPLOADINFO
COMM_VANDALPROOF_ALARM | 0x4013 | 防破坏报警信息 | NET_DVR_VANDALPROOF_ALARM
COMM_ALARM_STORAGE_DETECTION | 0x4015 | 存储智能检测报警信息 | NET_DVR_STORAGE_DETECTION_ALARM
COMM_CONFERENCE_CALL_ALARM | 0x5012 | 会议终端会议呼叫报警信息 | NET_DVR_CONFERENCE_CALL_ALARM
COMM_ALARM_ALARMGPS | 0x1202 | GPS报警信息 | NET_DVR_GPSALARMINFO
COMM_ALARM_SWITCH_CONVERT | 0x5004 | 交换机报警信息 | NET_DVR_SWITCH_CONVERT_ALARM
COMM_INQUEST_ALARM | 0x6005 | 审讯主机报警信息 | NET_DVR_INQUEST_ALARM
COMM_PANORAMIC_LINKAGE_ALARM | 0x5213 | 鹰眼全景联动到位事件信息 | NET_DVR_PANORAMIC_LINKAGE
COMM_TAG_INFO_ALARM | 0x5215 | 标签信息上传 | NET_DVR_TAG_INFO_ALARM
COMM_CLUSTER_ALARM | 0x6020 | 集群报警信息（集群异动（扩容\缩容等）时布防CS失败异常，收到此异常，需要重新布防集群设备，否则会有CS的报警丢失。普通设备不会回调该异常，只针对集群） | {EventNotificationAlert}JSON报文

Example

以布防方式设置回调接收报警信息为例

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

int iNum=0;
BOOL CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    int i=0;
    char filename[100];
    FILE *fSnapPic=NULL;
    FILE *fSnapPicPlate=NULL;

    //以下代码仅供参考，实际应用中不建议在该回调函数中直接处理数据保存文件
    //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理

    switch(lCommand)
    {
        case COMM_ALARM:
        {
            NET_DVR_ALARMINFO struAlarmInfo;
            memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
            switch (struAlarmInfo.dwAlarmType)
            {
                case 3: //移动侦测报警
                    for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
                    {
                        if (struAlarmInfo.dwChannel[i] == 1)
                        {
                            printf("发生移动侦测报警的通道号 %d\n", i+1);
                        }
                    }
                    break;
                default:
                    break;
            }
            break;
        }
        case COMM_UPLOAD_PLATE_RESULT:
        {
            NET_DVR_PLATE_RESULT struPlateResult={0};
            memcpy(&struPlateResult, pAlarmInfo, sizeof(struPlateResult));
            printf("车牌号: %s\n", struPlateResult.struPlateInfo.sLicense);//车牌号

            switch(struPlateResult.struPlateInfo.byColor)//车牌颜色
            {
            case VCA_BLUE_PLATE:
                printf("车辆颜色: 蓝色\n");
                break;
            case VCA_YELLOW_PLATE:
                printf("车辆颜色: 黄色\n");
                break;
            case VCA_WHITE_PLATE:
                printf("车辆颜色: 白色\n");
                break;
            case VCA_BLACK_PLATE:
                printf("车辆颜色: 黑色\n");
                break;
            default:
                break;
            }
            //场景图
            if (struPlateResult.dwPicLen != 0 && struPlateResult.byResultType == 1 )
            {
                sprintf(filename,"testpic_%d.jpg",iNum);
                fSnapPic=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPic);
                iNum++;
                fclose(fSnapPic);
            }
            //车牌图
            if (struPlateResult.dwPicPlateLen != 0 && struPlateResult.byResultType == 1)
            {
                sprintf(filename,"testPicPlate_%d.jpg",iNum);
                fSnapPicPlate=fopen(filename,"wb");
                fwrite(struPlateResult.pBuffer1,struPlateResult.dwPicLen,1,fSnapPicPlate);
                iNum++;
                fclose(fSnapPicPlate);
            }
            //其他信息处理......
            break;
        }
        case COMM_ITS_PLATE_RESULT:
        {
            NET_ITS_PLATE_RESULT struITSPlateResult={0};
            memcpy(&struITSPlateResult, pAlarmInfo, sizeof(struITSPlateResult));

            for (i=0;i<struITSPlateResult.dwPicNum;i++)
            {
                printf("车牌号: %s\n", struITSPlateResult.struPlateInfo.sLicense);//车牌号
                switch(struITSPlateResult.struPlateInfo.byColor)//车牌颜色
                {
                case VCA_BLUE_PLATE:
                    printf("车辆颜色: 蓝色\n");
                    break;
                case VCA_YELLOW_PLATE:
                    printf("车辆颜色: 黄色\n");
                    break;
                case VCA_WHITE_PLATE:
                    printf("车辆颜色: 白色\n");
                    break;
                case VCA_BLACK_PLATE:
                    printf("车辆颜色: 黑色\n");
                    break;
                default:
                    break;
                }
                //保存场景图
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType== 1)||(struITSPlateResult.struPicInfo[i].byType == 2))
                {
                    sprintf(filename,"testITSpic%d_%d.jpg",iNum,i);
                    fSnapPic=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen,1,fSnapPic);
                    iNum++;
                    fclose(fSnapPic);
                }
                //车牌小图片
                if ((struITSPlateResult.struPicInfo[i].dwDataLen != 0)&&(struITSPlateResult.struPicInfo[i].byType == 0))
                {
                    sprintf(filename,"testPicPlate%d_%d.jpg",iNum,i);
                    fSnapPicPlate=fopen(filename,"wb");
                    fwrite(struITSPlateResult.struPicInfo[i].pBuffer, struITSPlateResult.struPicInfo[i].dwDataLen, 1, \ fSnapPicPlate);
                    iNum++;
                    fclose(fSnapPicPlate);
                }
                //其他信息处理......
            }
            break;
        }
    default:
        break;
    }

    return TRUE;
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  // 注册设备
  LONG lUserID;
  NET_DVR_DEVICEINFO_V30 struDeviceInfo;
  lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo);
  if (lUserID < 0)
  {
       printf("Login error, %d\n", NET_DVR_GetLastError());
       NET_DVR_Cleanup();
       return;
  }

  //设置报警回调函数
  NET_DVR_SetDVRMessageCallBack_V31(MessageCallback, NULL);

  //启用布防
  NET_DVR_SETUPALARM_PARAM struSetupParam={0};
  struSetupParam.dwSize=sizeof(NET_DVR_SETUPALARM_PARAM);

  //上传报警信息类型: 0- 老报警信息(NET_DVR_PLATE_RESULT), 1- 新报警信息(NET_ITS_PLATE_RESULT)
  struSetupParam.byAlarmInfoType=1;
  //布防等级:二级布防，针对智能交通设备
  struSetupParam.byLevel=1;

  LONG lHandle = NET_DVR_SetupAlarmChan_V41(lUserID,&struSetupParam);
  if (lHandle < 0)
  {
      printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  Sleep(20000);
  //撤销布防上传通道
  if (!NET_DVR_CloseAlarmChan_V30(lHandle))
  {
      printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}

See Also

NET_DVR_SetupAlarmChan_V41

NET_DVR_StartListen_V30

Reference Interface

该接口扩展源于

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_SetupAlarmChan_V50

建立报警上传通道，获取报警等信息（支持报警订阅模式，兼容V41接口）。

LONG NET_DVR_SetupAlarmChan_V50(
  LONG                           lUserID,
  NET_DVR_SETUPALARM_PARAM_V50   lpSetupParam
  const char                     *pData,
  DWORD                          dwDataLen
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lpSetupParam
[in] 报警布防参数
pData
[in] 报警订阅条件信息，输入为XML格式：SubscribeEvent
dwDataLen
[in] 报警订阅条件信息长度

Return Values

-1表示失败，其他值作为NET_DVR_CloseAlarmChan_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口可以支持报警订阅方式，即布防时通过pData、dwDataLen参数指定设备需要上传的报警信息类型。pData为NULL和dwDataLen为0时即通用报警布防方式，等同NET_DVR_SetupAlarmChan_V41接口功能（即兼容V41接口）。
  • 设备是否支持报警订阅能力，可以通过设备能力集进行判断，对应设备系统能力集(DeviceCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SYSTEM_CAPABILITIES，节点：<isSupportSubscribeEvent>。
  • 报警布防之前需要调用NET_DVR_SetDVRMessageCallBack_V50或者NET_DVR_SetDVRMessageCallBack_V31等接口注册报警回调函数，在回调函数里面接收设备上传的报警信息。报警订阅条件不同，对应上传的报警信息类型(lCommand)和报警数据(pAlarmInfo)也不同，pData对应输入XML数据<SubscribeEvent>中<Event>的子节点<type>字段表示订阅的报警事件类型，不同的类型对应回调函数获取报警信息类型如下表所示：
订阅类型(<SubscribeEvent>中<type>) | 含义 | 报警类型(lCommand) | lCommand宏定义值
faceDetection | 人脸侦测 | COMM_ALARM_FACE_DETECTION | 0x4010
faceCapture | 人脸抓拍 | COMM_UPLOAD_FACESNAP_RESULT | 0x1112
ANPR | 车牌识别 | COMM_UPLOAD_PLATE_RESULT | 0x2800
faceContrast | 人脸比对 | COMM_SNAP_MATCH_ALARM | 0x2902
whiteFaceContrast | 陌生人比对
humanRecognition | 人体目标识别 | COMM_VCA_ALARM | 0x4993
personDensityDetection | 人员密度
HFPD | 高频人员报警 | COMM_HFPD_ALARM | 0x6121
fielddetection | 区域入侵 | COMM_ALARM_RULE | 0x1102
linedetection | 越界侦测
regionEntrance | 进入区域
regionExiting | 离开区域
loitering | 徘徊侦测
group | 人员聚集
rapidMove | 快速运动侦测
parking | 停车侦测
unattendedBaggage | 物品遗留侦测
attendedBaggage | 物品拿取侦测

See Also

NET_DVR_Login_V40 NET_DVR_SetDVRMessageCallBack_V50 NET_DVR_CloseAlarmChan_V30

Reference Interface

该接口扩展源于

NET_DVR_SetupAlarmChan_V41


NET_DVR_SetupAlarmChan_V41

建立报警上传通道，获取报警等信息。

LONG NET_DVR_SetupAlarmChan_V41(
  LONG                         lUserID,
  LPNET_DVR_SETUPALARM_PARAM   lpSetupParam
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lpSetupParam
[in] 报警布防参数

Return Values

-1表示失败，其他值作为NET_DVR_CloseAlarmChan_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用该接口支持上传V3.0以上版本支持的设备的报警结构。启动布防前，需要调用注册回调函数的接口NET_DVR_SetDVRMessageCallBack_V30才能获取到上传的报警等信息。

See Also

NET_DVR_CloseAlarmChan_V30
NET_DVR_Login NET_DVR_Login_V40
NET_DVR_SetDVRMessageCallBack_V30

Reference Interface

该接口扩展源于

NET_DVR_SetupAlarmChan_V30


NET_DVR_CloseAlarmChan_V30

撤销报警上传通道。

BOOL NET_DVR_CloseAlarmChan_V30(
  LONG   lAlarmHandle
);

Parameters

lAlarmHandle
[in] NET_DVR_SetupAlarmChan_V30或者NET_DVR_SetupAlarmChan_V41的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_SetupAlarmChan_V30 NET_DVR_SetupAlarmChan_V41

Reference Interface

该接口扩展源于

NET_DVR_CloseAlarmChan


NET_DVR_StartListen_V30

启动监听，接收设备主动上传的报警等信息（支持多线程）。

LONG NET_DVR_StartListen_V30(
  char           *sLocalIP,
  WORD           wLocalPort,
  MSGCallBack    DataCallback,
  void           *pUserData
);

Parameters

sLocalIP
[in] PC机本地IP地址，可以置为NULL
wLocalPort
[in] PC本地监听端口号。由用户设置，必须和设备端设置的一致
DataCallback
[in] 回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *MSGCallBack)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，不同的报警信息对应不同的类型，通过类型区分是什么报警信息，详见“Remarks”中列表
pAlarmer
[out] 报警设备信息，包括设备序列号、IP地址等
pAlarmInfo
[out] 报警信息，通过lCommand值判断pAlarmer对应的结构体，详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopListen_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。

Remarks

要使PC能够收到设备主动发过来的报警等信息，必须将设备的网络配置中的“远程管理主机地址”或者“远程报警主机地址”设置成PC机的IP地址（与接口中的sLocalIP参数一致），“远程管理主机端口号”或者“远程报警主机端口号”设置成PC机的监听端口号（与接口中的wLocalPort参数一致）。

该接口中的回调函数优先级高于其他回调函数，即设置了该接口中的回调函数，其他回调函数将接收不到报警信息。所有设备报警信息都是在同一个回调函数中返回的，通过报警设备信息（pAlarmInfo）区分是哪台设备。

该接口中回调函数的第一个参数（lCommand）和第三个参数（pAlarmInfo）是密切关联的，其关系见下表：

消息类型（lCommand） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
智能报警 |  |  |
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 0x1103 | 客流量统计报警上传 | NET_DVR_PDC_ALRAM_INFO
COMM_UPLOAD_FACESNAP_RESULT | 0x1112 | 人脸抓拍结果 | NET_VCA_FACESNAP_RESULT
COMM_ALARM_FACE_DETECTION | 0x4010 | 人脸侦测报警信息 | NET_DVR_FACE_DETECTION
COMM_SNAP_MATCH_ALARM | 0x2902 | 人脸非授权名单比对结果信息 | NET_VCA_FACESNAP_MATCH_ALARM
COMM_FACESNAP_RAWDATA_ALARM | 0x6015 | 人脸比对报警（Json数据透传方式） | NET_VCA_FACESNAP_RAWDATA_ALARM
COMM_ALARM_VQD_EX | 0x1116 | VQD报警信息 | NET_DVR_VQD_ALARM
COMM_DIAGNOSIS_UPLOAD | 0x5100 | 诊断服务器VQD报警信息 | NET_DVR_DIAGNOSIS_UPLOAD
COMM_ALARM_VQD | 0x6000 | VQD诊断报警信息 | NET_DVR_VQD_DIAGNOSE_INFO
COMM_SCENECHANGE_DETECTION_UPLOAD | 0x1130 | 场景变更报警信息 | NET_DVR_SCENECHANGE_DETECTION_RESULT
COMM_CROSSLINE_ALARM | 0x1131 | 压线报警信息 | NET_DVR_CROSSLINE_ALARM
COMM_ALARM_AUDIOEXCEPTION | 0x1150 | 声音报警信息 | NET_DVR_AUDIOEXCEPTION_ALARM
COMM_ALARM_DEFOCUS | 0x1151 | 虚焦报警信息 | NET_DVR_DEFOCUS_ALARM
COMM_UPLOAD_HEATMAP_RESULT | 0x4008 | 热度图报警信息 | NET_DVR_HEATMAP_RESULT
COMM_UPLOAD_HEATMAP_RESULT_PDC | 0x4018 | 热度图按人数统计数据上传事件 | NET_DVR_HEATMAP_RESULT_PDC
COMM_UPLOAD_HEATMAP_RESULT_DURATION | 0x4019 | 热度图按人员停留时间统计数据上传事件 | NET_DVR_HEATMAP_RESULT
COMM_UPLOAD_HEATMAP_RESULT_INTERSECTION | 0x4020 | 路口分析热度值结果上传 | NET_DVR_HEATMAP_RESULT
COMM_FACE_THERMOMETRY_ALARM | 0x4994 | 人脸测温报警信息 | COMM_FACE_THERMOMETRY_ALARM
COMM_SWITCH_LAMP_ALARM | 0x6002 | 开关灯检测报警信息 | NET_DVR_SWITCH_LAMP_ALARM
智能交通 |  |  |
COMM_ALARM_TFS | 0x1113 | 交通取证报警信息 | NET_DVR_TFS_ALARM
COMM_ALARM_TPS_V41 | 0x1114 | 交通参数统计报警信息(扩展) | NET_DVR_TPS_ALARM_V41
COMM_ALARM_AID_V41 | 0x1115 | 交通事件报警信息扩展 | NET_DVR_AID_ALARM_V41
COMM_ITS_PLATE_RESULT | 0x3050 | 交通抓拍结果(车辆、车牌识别及抓拍图片)上传 | NET_ITS_PLATE_RESULT
COMM_ITS_TRAFFIC_COLLECT | 0x3051 | 交通统计数据 | NET_ITS_TRAFFIC_COLLECT
COMM_ITS_GATE_VEHICLE | 0x3052 | 出入口车辆抓拍数据 | NET_ITS_GATE_VEHICLE
COMM_ITS_GATE_FACE | 0x3053 | 出入口人脸抓拍数据 | NET_ITS_GATE_FACE
COMM_ITS_GATE_COSTITEM | 0x3054 | 出入口过车收费明细 | NET_ITS_PASSVEHICLE_COST_ITEM
COMM_ITS_GATE_HANDOVER | 0x3055 | 出入口交接班数据 | NET_ITS_HANDOVER_INFO
COMM_ITS_PARK_VEHICLE | 0x3056 | 停车场数据上传 | NET_ITS_PARK_VEHICLE
COMM_ITS_BLOCKLIST_ALARM | 0x3057 | 车辆非授权名单报警上传 | NET_ITS_ECT_BLOCKLIST
COMM_VEHICLE_CONTROL_LIST_DSALARM | 0x3058 | 车辆授权和非授权名单数据需要同步报警上传 | NET_DVR_VEHICLE_CONTROL_LIST_DSALARM
COMM_VEHICLE_CONTROL_ALARM | 0x3059 | 授权和非授权名单车辆报警上传 | NET_DVR_VEHICLE_CONTROL_ALARM
COMM_FIRE_ALARM | 0x3060 | 消防报警上传 | NET_DVR_FIRE_ALARM
COMM_VEHICLE_RECOG_RESULT | 0x3062 | 车辆二次识别结果上传 | NET_DVR_VEHICLE_RECOG_RESULT
COMM_PLATE_RESULT_V50 | 0x3063 | 车牌上传 V50 | NET_DVR_PLATE_RESULT_V50
COMM_SIGNAL_LAMP_ABNORMAL | 0x3080 | 信号灯异常检测上传 | NET_DVR_SIGNALLAMP_DETCFG
COMM_ALARM_TPS_REAL_TIME | 0x3081 | TPS实时过车数据上传 | NET_DVR_TPS_REAL_TIME_INFO
COMM_ALARM_TPS_STATISTICS | 0x3082 | TPS统计过车数据上传 | NET_DVR_TPS_STATISTICS_INFO
COMM_ITC_STATUS_DETECT_RESULT | 0x2810 | 实时状态检测结果 | NET_ITC_STATUS_DETECT_RESULT
COMM_ITS_ROAD_EXCEPTION | 0x4500 | 路口设备异常报警信息 | NET_ITS_ROADINFO
COMM_ITS_EXTERNAL_CONTROL_ALARM | 0x4520 | 指示灯外控报警信息 | NET_DVR_EXTERNAL_CONTROL_ALARM
报警主机 |  |  |
COMM_SENSOR_VALUE_UPLOAD | 0x1120 | 模拟量数据实时信息 | NET_DVR_SENSOR_ALARM
COMM_SENSOR_ALARM | 0x1121 | 模拟量报警信息 | NET_DVR_SENSOR_ALARM
COMM_SWITCH_ALARM | 0x1122 | 开关量报警信息 | NET_DVR_SWITCH_ALARM
COMM_ALARMHOST_EXCEPTION | 0x1123 | 故障报警信息 | NET_DVR_ALARMHOST_EXCEPTION_ALARM
COMM_ALARMHOST_SAFETYCABINSTATE | 0x1125 | 防护舱状态信息 | NET_DVR_ALARMHOST_SAFETYCABINSTATE
COMM_ALARMHOST_ALARMOUTSTATUS | 0x1126 | 报警主机报警输出口或警号状态信息 | NET_DVR_ALARMHOST_ALARMOUTSTATUS
COMM_ALARMHOST_CID_ALARM | 0x1127 | 报警主机CID报告报警上传 | NET_DVR_CID_ALARM
COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM | 0x1128 | 报警主机RS485外接设备报警信息 | NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO
COMM_ALARMHOST_DATA_UPLOAD | 0x1129 | 报警数据信息 | NET_DVR_ALARMHOST_DATA_UPLOAD
COMM_ALARM_WIRELESS_INFO | 0x122b | 无线网络信息上传 | NET_DVR_ALARMWIRELESSINFO
明眸门禁 |  |  |
COMM_ALARM_ACS | 0x5002 | 门禁主机报警信息 | NET_DVR_ACS_ALARM_INFO
COMM_ID_INFO_ALARM | 0x5200 | 门禁身份证刷卡信息 | NET_DVR_ID_CARD_INFO_ALARM
COMM_PASSNUM_INFO_ALARM | 0x5201 | 门禁通行人数信息 | NET_DVR_PASSNUM_INFO_ALARM
可视对讲 |  |  |
COMM_UPLOAD_VIDEO_INTERCOM_EVENT | 0x1132 | 可视对讲事件记录信息 | NET_DVR_VIDEO_INTERCOM_EVENT
COMM_ALARM_VIDEO_INTERCOM | 0x1133 | 可视对讲报警信息 | NET_DVR_VIDEO_INTERCOM_ALARM
其他设备报警 |  |  |
COMM_ALARM | 0x1100 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息上传(V3.0以下版本支持的设备) | NET_DVR_ALARMINFO
COMM_ALARM_V30 | 0x4000 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息上传(V3.0以上版本支持的设备) | NET_DVR_ALARMINFO_V30
COMM_ALARM_V40 | 0x4007 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息，报警数据为可变长 | NET_DVR_ALARMINFO_V40
COMM_IPCCFG | 0x4001 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31
COMM_IPC_AUXALARM_RESULT | 0x2820 | PIR报警、无线报警、呼救报警信息 | NET_IPC_AUXALARM_RESULT
COMM_ALARM_DEVICE | 0x4004 | CVR设备报警信息，由于通道值大于256而扩展 | NET_DVR_ALARMINFO_DEV
COMM_ALARM_DEVICE_V40 | 0x4009 | CVR设备报警信息扩展(增加报警信息子结构) | NET_DVR_ALARMINFO_DEV_V40
COMM_ALARM_CVR | 0x4005 | CVR外部报警信息 | NET_DVR_CVR_ALARM
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_ALARM_HOT_SPARE | 0x4006 | 热备异常报警（N+1模式异常报警）信息 | NET_DVR_ALARM_HOT_SPARE
COMM_ALARM_BUTTON_DOWN_EXCEPTION | 0x1152 | 按钮按下报警信息(IP可视对讲主机) | NET_BUTTON_DOWN_EXCEPTION_ALARM
COMM_ALARM_LCD | 0x5011 | LCD屏幕报警信息 | NET_DVR_LCD_ALARM
COMM_ALARM_DEC_VCA | 0x5010 | 解码器智能解码报警信息 | NET_DVR_DEC_VCA_ALARM
COMM_ALARM_STORAGE_DETECTION | 0x4015 | 存储智能检测报警信息 | NET_DVR_STORAGE_DETECTION_ALARM
COMM_CONFERENCE_CALL_ALARM | 0x5012 | 会议终端会议呼叫报警信息 | NET_DVR_CONFERENCE_CALL_ALARM
COMM_INQUEST_ALARM | 0x6005 | 审讯主机报警信息 | NET_DVR_INQUEST_ALARM
COMM_PANORAMIC_LINKAGE_ALARM | 0x5213 | 鹰眼全景联动到位事件信息 | NET_DVR_PANORAMIC_LINKAGE

报警类型是COMM_ALARM_ACS时候，如设备断开连接后，回调函数返回异常状态，获取错误码为7。

See Also

NET_DVR_StopListen_V30

Reference Interface

该接口扩展源于

NET_DVR_StartListen


NET_DVR_StopListen_V30

停止监听（支持多线程）。

BOOL NET_DVR_StopListen_V30(
  LONG    lListenHandle
);

Parameters

lListenHandle
[in] 监听句柄，NET_DVR_StartListen_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_StartListen_V30

Reference Interface

该接口扩展源于
NET_DVR_StopListen


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_SOFTHARDWARE_ABILITY | 0x001 | 设备软硬件能力
DEVICE_NETWORK_ABILITY | 0x002 | 设备无线网络能力
DEVICE_ENCODE_ALL_ABILITY_V20 | 0x008 | 设备所有编码能力
IPC_FRONT_PARAMETER_V20 | 0x009 | 设备前端参数
DEVICE_RAID_ABILITY | 0x007 | 设备RAID能力
DEVICE_ALARM_ABILITY | 0x00a | 设备报警能力
DEVICE_DYNCHAN_ABILITY | 0x00b | 设备数字通道能力
DEVICE_USER_ABILITY | 0x00c | 设备用户管理参数能力
DEVICE_NETAPP_ABILITY | 0x00d | 设备网络应用参数能力
DEVICE_VIDEOPIC_ABILITY | 0x00e | 设备图像参数能力
DEVICE_JPEG_CAP_ABILITY | 0x00f | 设备JPEG抓图能力
DEVICE_SERIAL_ABILITY | 0x010 | 设备RS232和RS485串口能力
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
STREAM_ABILITY | 0x012 | 设备流能力集
MATRIXDECODER_ABILITY | 0x200 | 多路解码器显示、解码能力
DECODER_ABILITY | 0x261 | 解码器XML能力集
SNAPCAMERA_ABILITY | 0x300 | 智能交通摄像机能力集
PIC_CAPTURE_ABILITY | 0x402 | 抓图图片分辨率能力集
LED_ABILITY | 0x807 | LED能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式，详见“Remarks”说明）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式，详见“Remarks”说明）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了能力获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_SOFTHARDWARE_ABILITY | 获取设备软硬件能力 | 无 | 设备软硬件能力XML描述(BasicCapability)
DEVICE_NETWORK_ABILITY | 获取无线设备网络能力 | 无 | 设备无线网络能力XML描述(NetworkSetting)
DEVICE_ENCODE_ALL_ABILITY_V20 | 获取设备所有编码能力 | 编码能力获取输入描述 | 设备所有编码能力XML描述(AudioVideoCompressInfo)
IPC_FRONT_PARAMETER_V20 | 获取设备前端参数 | 前端参数能力获取输入描述 | 设备前端参数XML描述(CAMERAPARA)
DEVICE_RAID_ABILITY | 获取设备RAID能力 | 无 | 设备RAID能力XML描述(RAID)
DEVICE_ALARM_ABILITY | 获取设备报警能力 | 报警能力获取输入描述 | 设备报警能力XML描述(AlarmAbility)
DEVICE_DYNCHAN_ABILITY | 获取设备数字通道能力 | 数字通道能力获取输入描述 | 设备数字通道能力XML描述(DynChannelAbility)
DEVICE_USER_ABILITY | 获取设备用户管理参数能力 | 用户管理参数能力获取输入描述 | 设备用户管理参数能力XML描述(UserAbility)
DEVICE_NETAPP_ABILITY | 获取设备网络应用参数能力 | 网络应用参数能力获取输入描述 | 设备网络应用参数能力XML描述(NetAppAbility)
DEVICE_VIDEOPIC_ABILITY | 获取设备图像参数能力 | 图像参数能力获取输入描述 | 设备图像参数能力XML描述(VideoPicAbility)
DEVICE_JPEG_CAP_ABILITY | 获取设备JPEG抓图能力 | JPEG抓图能力获取输入描述 | 设备JPEG抓图能力XML描述(JpegCaptureAbility)
DEVICE_SERIAL_ABILITY | 获取设备RS232和RS485串口能力 | 串口能力获取输入描述 | 设备串口能力XML描述(SerialAbility)
DEVICE_ABILITY_INFO | 设备通用能力类型，具体能力根据发送的能力节点来区分 | 获取PTZ能力集 | PTZ能力XML描述(PTZAbility)
 |  | 获取报警事件处理能力集 | 报警事件处理能力XML描述(EventAbility)
 |  | 获取ROI能力集 | ROI能力XML描述(ROIAbility)
 |  | 获取录像相关能力集 | 录像相关能力XML描述(RecordAbility)
 |  | NVR前端待接入设备通道能力集 | NVR前端待接入设备通道能力XML描述(GetAccessDeviceChannelAbility)
 |  | 获取设备本地预览切换能力集 | 设备本地预览切换能力XML描述(PreviewSwitchAbility)
 |  | 获取设备N+1能力集 | 设备N+1能力XML描述(NPlusOneAbility)
 |  | 获取设备磁盘相关能力集 | 设备磁盘相关能力XML描述(HardDiskAbility)
 |  | 获取IPC配置文件导入导出能力集 | IPC配置文件导入导出能力XML描述(IPAccessConfigFileAbility)
 |  | 获取设备通道输入能力集 | 设备通道输入能力XML描述(ChannelInputAbility)
 |  | 获取前端参数动态能力集 | 设备前端参数动态能力XML描述(CameraParaDynamicAbility)
 |  | 获取报警触发录像能力集 | 设备报警触发录像能力XML描述(AlarmTriggerRecordAbility)
 |  | 获取GB/T28181能力集 | 设备GB/T28181能力XML描述(GBT28181AccessAbility)
 |  | 获取IO口输入输出能力集 | 设备IO口输入输出能力XML描述(IOAbility)
 |  | 获取协议接入能力集 | 设备协议接入能力XML描述(AccessProtocolAbility)
 |  | 获取安全认证配置能力集 | 安全认证配置能力XML描述(SecurityAbility)
 |  | 获取摄像机架设参数能力集 | 摄像机架设参数能力XML描述(CameraMountAbility)
 |  | 获取日志搜索能力集 | 日志搜索能力XML描述(SearchLogAbility)
 |  | 获取CVR设备能力集 | CVR设备能力XML描述(CVRAbility)
 |  | 获取图像显示参数能力集 | 图像显示参数能力XML描述(ImageDisplayParamAbility)
 | 设备智能相关能力集 | 获取智能设备能力集 | 智能设备能力XML描述(VcaDevAbility)
 |  | 获取智能通道控制能力集 | 智能通道控制能力XML描述(VcaCtrlAbility)
 |  | 获取智能通道分析能力集 | 智能通道分析能力XML描述(VcaChanAbility)
 |  | 获取双目能力集 | 双目能力XML描述(BinocularAbility)
STREAM_ABILITY | 获取设备流能力 | 获取流能力集 | 流能力XML描述(StreamAbility)
MATRIXDECODER_ABILITY | 获取多路解码器显示、解码能力 | 无 | NET_DVR_MATRIX_ABILITY
DECODER_ABILITY | 获取解码器XML能力集 | 解码器能力集获取输入描述 | 解码器能力集XML描述
SNAPCAMERA_ABILITY | 获取智能交通摄像机的能力 | 无 | NET_DVR_SNAP_ABILITY
PIC_CAPTURE_ABILITY | 获取图片能力 | 通道号（4个字节） | NET_DVR_COMPRESSIONCFG_ABILITY
  • 设备能力集中所有编码能力和前端参数能力集在4.2版本的SDK中已经做了扩展，扩展前V1.0版本的能力集请参见NET_DVR_GetDeviceAbility。
  • 在调用该接口获取设备能力集之前可以先调用NET_DVR_SetSDKLocalCfg启用模拟能力集，同时加载LocalXml.zip（要求和网络通讯库放在同一个目录下）。

    • See Also

    NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_WORK_STATUS | 获取设备工作状态，dwCount为0 | NET_DVR_GETWORKSTATE_COND | NET_DVR_WORKSTATE_V40 | 6189

See Also

NET_DVR_Login_V30


NET_DVR_GetDeviceStatus

获取设备状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_DEVICE_RUN_STATUS | 获取设备运行状态，dwCount设为1 | NULL | NET_DVR_DEVICE_RUN_STATUS | 1618
NET_DVR_GET_REMOTECONTROL_STATUS | 获取无线布防状态 | dwCount个NET_DVR_REMOTECONTROL_COND | dwCount个NET_DVR_REMOTECONTROL_STATUS | 3423
NET_DVR_GET_ALARMIN_STATUS | 获取报警输入状态 | dwCount个4字节报警输入通道号 | dwCount个4字节状态值(0-没有报警，1-有报警) | 9115
NET_DVR_GET_ALARMOUT_STATUS | 获取报警输出状态 | dwCount个4字节报警输出通道号 | dwCount个4字节状态值(0-没有报警，1-有报警) | 9116
NET_DVR_GET_AUDIO_CHAN_STATUS | 获取语音对讲状态 | dwCount为1，4字节语音对讲通道号 | 1个4字节状态(0-未开启，1-开启) | 9117

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL。lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容(按通道号1~N排列)，如果设置的lpOutBuffer缓冲区不足，仅返回部分信息，可以根据返回的个数（前4字节的值）重新获取。

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CHECK_USER_STATUS | 20005 | 检测设备是否在线 | NULL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该控制命令用于手动检测设备是否在线，接口返回TRUE表示在线，FALSE表示与设备通信失败或者返回错误状态。设备在线状态自动巡检功能通过NET_DVR_SetSDKLocalCfg（配置类型：NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV）进行配置。

See Also

NET_DVR_Login_V40


NET_DVR_StartGetDevState

启动设备状态巡检。

BOOL NET_DVR_StartGetDevState(
  LPNET_DVR_CHECK_DEV_STATE    pParams
);

Parameters

pParams
[in] 设备工作状态巡检参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

启动后，SDK定时巡检设备，获取到的设备状态信息在结构体的回调函数中返回。相当于实现定时调用NET_DVR_GetDeviceConfig(命令：NET_DVR_GET_WORK_STATUS)。

See Also

NET_DVR_StopGetDevState


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_ONLINEUSER_INFO | 3762 | 长连接获取用户在线信息 | NET_DVR_ONLINEUSER_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | 对应结构体：NET_DVR_ONLINEUSER_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_WORK_STATUS_V50 | 6200 | 获取设备工作状态V50 | NET_DVR_GETWORKSTATE_COND | -1-失败，大于等于0成功
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度值(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据，NET_DVR_GET_WORK_STATUS_V50时对应结构体：NET_DVR_WORKSTATE_V40
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：

See Also

NET_DVR_StopRemoteConfig


NET_DVR_SetNetworkEnvironment

设置远程升级时网络环境。

BOOL NET_DVR_SetNetworkEnvironment(
  DWORD   dwEnvironmentLevel
);

Parameters

dwEnvironmentLevel
[in] 网络环境级别
enum{
  LOCAL_AREA_NETWORK = 0,
  WIDE_AREA_NETWORK
}

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中的网络环境级别参数分为两类，LOCAL_AREA_NETWORK表示局域网环境；WIDE_AREA_NETWORK表示广域网环境。在调用远程升级接口之前，可以通过此接口适应不同的升级环境。


NET_DVR_Upgrade_V50

远程升级设备固件。

LONG NET_DVR_Upgrade_V50(
  LONG                    lUserID,
  NET_DVR_UPGRADE_PARAM    lpUpgradeParam,
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpUpgradeParam
[in] 升级参数

Return Values

-1表示失败，其他值作为NET_DVR_GetUpgradeState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V30 NET_DVR_CloseUpgradeHandle
NET_DVR_GetUpgradeState NET_DVR_GetUpgradeProgress

Reference Interface

该接口扩展源于

NET_DVR_Upgrade_V40


NET_DVR_GetUpgradeProgress

获取远程升级的进度。

int NET_DVR_GetUpgradeProgress(
  LONG   lUpgradeHandle
);

Parameters

lUpgradeHandle
[in] NET_DVR_Upgrade_V50、NET_DVR_Upgrade_V40或NET_DVR_Upgrade的返回值

Return Values

-1表示失败，0～100表示升级进度。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Upgrade_V40 NET_DVR_Upgrade


NET_DVR_GetUpgradeState

获取远程升级的状态。

int NET_DVR_GetUpgradeState(
  LONG   lUpgradeHandle
);

Parameters

lUpgradeHandle
[in] NET_DVR_Upgrade_V50、NET_DVR_Upgrade_V40或NET_DVR_Upgrade的返回值

Return Values

-1表示失败，其他值定义如下：
1- 升级成功
2- 正在升级
3- 升级失败
4- 网络断开，状态未知
5- 升级文件语言版本不匹配
6- 升级写flash失败
7- 升级包类型不匹配
8- 升级包版本不匹配
9- 系统被加锁（文件锁）
10- 备份区域异常
11- 系统卡满
接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

若设备返回9、10、11这三种错误状态，请联系设备研发人员提供支持。

See Also

NET_DVR_Upgrade_V40 NET_DVR_Upgrade


NET_DVR_GetUpgradeStep

获取远程升级的阶段信息。

LONG  NET_DVR_GetUpgradeStep(
  LONG   lUpgradeHandle,
  LONG   *pSubProgress
);

Parameters

lUpgradeHandle
[in] NET_DVR_Upgrade_V50、NET_DVR_Upgrade_V40或NET_DVR_Upgrade的返回值
pSubProgress
[out] 升级阶段子进度，0～100

Return Values

-1表示失败，其他值定义如下：
宏定义 | 宏定义值 | 含义
STEP_READY | 0 | 准备升级
STEP_RECV_DATA | 1 | 接收升级包数据
STEP_UPGRADE | 2 | 升级系统
STEP_BACKUP | 3 | 备份系统
STEP_SEARCH | 255 | 设备正在搜索升级文件

接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当设备支持返回升级子进度的时候，SDK返回设备的返回值。当设备不支持返回升级子进度的时候，SDK内部计算出一个进度值返回给上层。对于老8000设备(如DS-8016HF-S)，NET_DVR_GetUpgradeStep返回的状态值只有“1-接收升级包数据”、“2-升级系统”，这两个状态值是SDK根据当前发送数据包的进度来确定的，并不是由设备返回。

See Also

NET_DVR_Upgrade


NET_DVR_CloseUpgradeHandle

关闭远程升级句柄，释放资源。

BOOL NET_DVR_CloseUpgradeHandle(
  LONG   lUpgradeHandle
);

Parameters

lUpgradeHandle
[in] NET_DVR_Upgrade_V40或NET_DVR_Upgrade的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_Upgrade_V40 NET_DVR_Upgrade


NET_DVR_FindDVRLog_V30

查找设备的日志信息（可搜索带S.M.A.R.T信息的日志）。

LONG NET_DVR_FindDVRLog_V30(
  LONG              lUserID,
  LONG              lSelectMode,
  DWORD             dwMajorType,
  DWORD             dwMinorType,
  LPNET_DVR_TIME    lpStartTime,
  LPNET_DVR_TIME    lpStopTime,
  BOOL              bOnlySmart
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lSelectMode
[in] 查询方式：0－全部；1－按类型；2－按时间；3－按时间和类型
dwMajorType
[in] 日志主类型（S.M.A.R.T搜索时无效），0表示全部类型，其他类型定义如下：
宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_INFORMATION | 0x4 | 日志附加信息
MAJOR_EVENT | 0x5 | 事件
dwMinorType
[in] 日志次类型（S.M.A.R.T搜索时无效），0表示全部类型，根据不同的主类型的次类型定义如下：
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARM_IN | 0x1 | 报警输入
MINOR_ALARM_OUT | 0x2 | 报警输出
MINOR_MOTDET_START | 0x3 | 移动侦测报警开始
MINOR_MOTDET_STOP | 0x4 | 移动侦测报警结束
MINOR_HIDE_ALARM_START | 0x5 | 遮挡报警开始
MINOR_HIDE_ALARM_STOP | 0x6 | 遮挡报警结束
MINOR_VCA_ALARM_START | 0x7 | 智能报警开始
MINOR_VCA_ALARM_STOP | 0x8 | 智能报警结束
MINOR_ITS_ALARM_START | 0x09 | 交通事件报警开始
MINOR_ITS_ALARM_STOP | 0x0a | 交通事件报警结束
MINOR_NETALARM_START | 0x0b | 网络报警开始
MINOR_NETALARM_STOP | 0x0c | 网络报警结束
MINOR_NETALARM_RESUME | 0x0d | 网络报警恢复
MINOR_WIRELESS_ALARM_START | 0x0e | 无线报警开始
MINOR_WIRELESS_ALARM_STOP | 0x0f | 无线报警结束
MINOR_PIR_ALARM_START | 0x10 | 人体感应报警开始
MINOR_PIR_ALARM_STOP | 0x11 | 人体感应报警结束
MINOR_CALLHELP_ALARM_START | 0x12 | 呼救报警开始
MINOR_CALLHELP_ALARM_STOP | 0x13 | 呼救报警结束
MINOR_DETECTFACE_ALARM_START | 0x16 | 人脸侦测报警开始
MINOR_DETECTFACE_ALARM_STOP | 0x17 | 人脸侦测报警结束
MINOR_VCA_SECNECHANGE_DETECTION | 0x1a | 场景侦测报警
MINOR_SMART_REGION_EXITING_BEGIN | 0x1b | 离开区域侦测开始
MINOR_SMART_REGION_EXITING_END | 0x1c | 离开区域侦测结束
MINOR_SMART_LOITERING_BEGIN | 0x1d | 徘徊侦测开始
MINOR_SMART_LOITERING_END | 0x1e | 徘徊侦测结束
MINOR_VCA_ALARM_LINE_DETECTION_BEGIN | 0x20 | 越界侦测开始
MINOR_VCA_ALARM_LINE_DETECTION_END | 0x21 | 越界侦测结束
MINOR_VCA_ALARM_INTRUDE_BEGIN | 0x22 | 区域入侵侦测开始
MINOR_VCA_ALARM_INTRUDE_END | 0x23 | 区域入侵侦测结束
MINOR_VCA_ALARM_AUDIOINPUT | 0x24 | 音频丢失侦测
MINOR_VCA_ALARM_AUDIOABNORMAL | 0x25 | 音频异常侦测
MINOR_VCA_DEFOCUS_DETECTION_BEGIN | 0x26 | 虚焦侦测开始
MINOR_VCA_DEFOCUS_DETECTION_END | 0x27 | 虚焦侦测结束
MINOR_VCA_FACE_ALARM_BEGIN | 0x29 | 人脸侦测开始
MINOR_SMART_REGION_ENTRANCE_BEGIN | 0x2a | 进入区域侦测开始
MINOR_SMART_REGION_ENTRANCE_END | 0x2b | 进入区域侦测结束
MINOR_SMART_PEOPLE_GATHERING_BEGIN | 0x2c | 人员聚集侦测开始
MINOR_SMART_PEOPLE_GATHERING_END | 0x2d | 人员聚集侦测结束
MINOR_SMART_FAST_MOVING_BEGIN | 0x2e | 快速运动侦测开始
MINOR_SMART_FAST_MOVING_END | 0x2f | 快速运动侦测结束
MINOR_VCA_FACE_ALARM_END | 0x30 | 人脸侦测结束
MINOR_VCA_SCENE_CHANGE_ALARM_BEGIN | 0x31 | 场景变更侦测开始
MINOR_VCA_SCENE_CHANGE_ALARM_END | 0x32 | 场景变更侦测结束
MINOR_VCA_ALARM_AUDIOINPUT_BEGIN | 0x33 | 音频丢失侦测开始
MINOR_VCA_ALARM_AUDIOINPUT_END | 0x34 | 音频丢失侦测结束
MINOR_VCA_ALARM_AUDIOABNORMAL_BEGIN | 0x35 | 声强突变侦测开始
MINOR_VCA_ALARM_AUDIOABNORMAL_END | 0x36 | 声强突变侦测结束
MINOR_VCA_ALARM_AUDIOSTEEPDROP | 0x39 | 声强陡降侦测
MINOR_SMART_PARKING_BEGIN | 0x3c | 停车侦测开始
MINOR_SMART_PARKING_END | 0x3d | 停车侦测结束
MINOR_SMART_UNATTENDED_BAGGAGE_BEGIN | 0x3e | 物品遗留侦测开始
MINOR_SMART_UNATTENDED_BAGGAGE_END | 0x3f | 物品遗留侦测结束
MINOR_SMART_OBJECT_REMOVAL_BEGIN | 0x40 | 物品拿取侦测开始
MINOR_SMART_OBJECT_REMOVAL_END | 0x41 | 物品拿取侦测结束
MINOR_SMART_VEHICLE_ALARM_START | 0x46 | 车牌检测开始
MINOR_SMART_VEHICLE_ALARM_STOP | 0x47 | 车牌检测结束
MINOR_THERMAL_FIREDETECTION | 0x48 | 热成像火点检测侦测开始
MINOR_THERMAL_FIREDETECTION_END | 0x49 | 热成像火点检测侦测结束
MINOR_SMART_VANDALPROOF_BEGIN | 0x50 | 防破坏检测开始
MINOR_SMART_VANDALPROOF_END | 0x51 | 防破坏检测结束
MINOR_FACESNAP_MATCH_ALARM_START | 0x55 | 人脸比对报警开始
MINOR_FACESNAP_MATCH_ALARM_STOP | 0x56 | 人脸比对报警结束
MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_START | 0x57 | 授权名单人脸比对(陌生人)报警开始
MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_STOP | 0x58 | 授权名单人脸比对(陌生人)报警结束
MINOR_THERMAL_SHIPSDETECTION | 0x5a | 热成像船只检测侦测
MINOR_THERMAL_THERMOMETRY_EARLYWARNING_BEGIN | 0x5b | 热成像测温预警开始
MINOR_THERMAL_THERMOMETRY_EARLYWARNING_END | 0x5c | 热成像测温预警结束
MINOR_THERMAL_THERMOMETRY_ALARM_BEGIN | 0x5d | 热成像测温报警开始
MINOR_THERMAL_THERMOMETRY_ALARM_END | 0x5e | 热成像测温报警结束
MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_BEGIN | 0x5f | 热成像温差报警开始
MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_END | 0x60 | 热成像温差报警结束
MINOR_ FACE_THERMOMETRY_ALARM | 0x63 | 人脸测温报警
MINOR_SAFETY_HELMET_ALARM_START | 0x72 | 未佩戴安全帽检测报警开始
MINOR_SAFETY_HELMET_ALARM_STOP | 0x73 | 未佩戴安全帽检测报警结束
MINOR_HFPD_ALARM_START | 0x74 | 高频人员检测报警开始
MINOR_HFPD_ALARM_STOP | 0x75 | 高频人员检测报警结束
MINOR_VCA_GET_UP_ALARM_BEGIN | 0x80 | 起床检测报警开始
MINOR_VCA_GET_UP_ALARM_END | 0x81 | 起床检测报警结束
MINOR_VCA_ADV_REACH_HEIGHT_ALARM_BEGIN | 0x82 | 折线攀高报警开始
MINOR_VCA_ADV_REACH_HEIGHT_ALARM_END | 0x83 | 折线攀高报警结束
MINOR_VCA_TOILET_TARRY_ALARM_BEGIN | 0x84 | 如厕超时报警开始
MINOR_VCA_TOILET_TARRY_ALARM_END | 0x85 | 如厕超时报警结束
MINOR_HUMAN_RECOGNITION_ALARM_BEGIN | 0x86 | 人体识别报警开始
MINOR_HUMAN_RECOGNITION_ALARM_END | 0x87 | 人体识别报警结束
MINOR_MANUAL_ALARM | 0x10e | 手动报警
MINOR_DETECTOR_ALARM | 0x10f | 探测器报警
MINOR_LINKAGE_ALARM | 0x110 | 联动报警
MINOR_FIRE_ALARM | 0x113 | 火警报警
MINOR_SUPERVISE_ALARM | 0x114 | 监管报警
MINOR_SHIELD_ALARM | 0x115 | 屏蔽报警
MINOR_ABNORMAL_ALARM | 0x116 | 故障报警
MINOR_DATA_PREALARM_ALARM | 0x127 | 超流量预警
MINOR_ALARMIN_SHORT_CIRCUIT | 0x400 | 防区短路报警
MINOR_ALARMIN_BROKEN_CIRCUIT | 0x401 | 防区断路报警
MINOR_ALARMIN_EXCEPTION | 0x402 | 防区异常报警
MINOR_ALARMIN_RESUME | 0x403 | 防区报警恢复
MINOR_HOST_DESMANTLE_ALARM | 0x404 | 设备防拆报警
MINOR_HOST_DESMANTLE_RESUME | 0x405 | 设备防拆恢复
MINOR_CARD_READER_DESMANTLE_ALARM | 0x406 | 读卡器防拆报警
MINOR_CARD_READER_DESMANTLE_RESUME | 0x407 | 读卡器防拆恢复
MINOR_CASE_SENSOR_ALARM | 0x408 | 事件输入报警
MINOR_CASE_SENSOR_RESUME | 0x409 | 事件输入恢复
MINOR_STRESS_ALARM | 0x40a | 胁迫报警
MINOR_OFFLINE_ECENT_NEARLY_FULL | 0x40b | 离线事件满90%报警
MINOR_CARD_MAX_AUTHENTICATE_FAIL | 0x40c | 卡号认证失败超次报警
MINOR_POS_START_ALARM | 0x411 | POS开启
MINOR_POS_END_ALARM | 0x412 | POS结束
MINOR_HEART_RATE_ABNORMAL_BEGIN | 0x426 | 心率异常报警开始
MINOR_HEART_RATE_ABNORMAL_END | 0x427 | 心率异常报警结束
MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN | 0x428 | 血氧异常报警开始
MINOR_BLOOD_OXYGEN_ABNORMAL_END | 0x429 | 血氧异常报警结束
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42a | 血压收缩压异常报警开始
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42b | 血压收缩压异常报警结束
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42c | 血压舒张压异常报警开始
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42d | 血压舒张压异常报警结束

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_RAID_ERROR | 0x20 | 阵列异常
MINOR_VI_LOST | 0x21 | 视频信号丢失
MINOR_ILLEGAL_ACCESS | 0x22 | 非法访问
MINOR_HD_FULL | 0x23 | 硬盘满
MINOR_HD_ERROR | 0x24 | 硬盘错误
MINOR_DCD_LOST | 0x25 | MODEM 掉线(保留)
MINOR_IP_CONFLICT | 0x26 | IP地址冲突
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_REC_ERROR | 0x28 | 录像出错
MINOR_IPC_NO_LINK | 0x29 | IPC连接异常
MINOR_VI_EXCEPTION | 0x2a | 视频输入异常(只针对模拟通道)
MINOR_IPC_IP_CONFLICT | 0x2b | IPC的IP地址冲突
MINOR_SENCE_EXCEPTION | 0x2c | 场景异常
MINOR_PIC_REC_ERROR | 0x2d | 抓图出错,获取图片文件失败
MINOR_VI_MISMATCH | 0x2e | 视频制式不匹配
MINOR_RESOLUTION_MISMATCH | 0x2f | 编码分辨率和前端分辨率不匹配
MINOR_RS485_DEVICE_ABNORMAL | 0x3a | RS485连接状态异常
MINOR_RS485_DEVICE_REVERT | 0x3b | RS485连接状态异常恢复
MINOR_SCREEN_SUBSYSTEM_ABNORMALREBOOT | 0x3c | 子板异常启动
MINOR_SCREEN_SUBSYSTEM_ABNORMALINSERT | 0x3d | 子板插入
MINOR_SCREEN_SUBSYSTEM_ABNORMALPULLOUT | 0x3e | 子板拔出
MINOR_SCREEN_ABNARMALTEMPERATURE | 0x3f | 温度异常
MINOR_RECORD_OVERFLOW | 0x41 | 缓冲区溢出
MINOR_DSP_ABNORMAL | 0x42 | DSP异常
MINOR_ANR_RECORD_FAIED | 0x43 | ANR录像失败
MINOR_SPARE_WORK_DEVICE_EXCEPT | 0x44 | 热备设备工作机异常
MINOR_START_IPC_MAS_FAILED | 0x45 | 开启IPC MAS失败
MINOR_IPCM_CRASH | 0x46 | IPCM异常重启
MINOR_POE_POWER_EXCEPTION | 0x47 | POE供电异常
MINOR_UPLOAD_DATA_CS_EXCEPTION | 0x48 | 云存储数据上传失败
MINOR_DIAL_EXCEPTION | 0x49 | 拨号异常
MINOR_DEV_EXCEPTION_OFFLINE | 0x50 | 设备异常下线
MINOR_UPGRADEFAIL | 0x51 | 远程升级设备失败
MINOR_AI_LOST | 0x52 | 音频信号丢失
MINOR_SYNC_IPC_PASSWD | 0x53 | 同步IPC密码异常
MINOR_EZVIZ_OFFLINE | 0x54 | 萤石下线异常
MINOR_ACCESSORIES_PLATE | 0x57 | 配件板异常
MINOR_FACESNAP_RESOLUTION_OVERFLOW | 0x63 | 人脸抓拍码流分辨率超限
MINOR_SMD_RESOLUTION_OVERFLOW | 0x64 | SMD码流分辨率超限
MINOR_SAFETY_HELMET_EXCEPTION | 0x66 | 未佩戴安全帽检测异常
MINOR_CLUSTER_DEVICE_OFFLINE | 0x70 | 集群内设备下线
MINOR_CLUSTER_CONFIG_FAILED | 0x71 | 集群内设备配置失败
MINOR_CLUSTER_DISASTER_TOLERANCE_EXCEPT | 0x72 | 集群容灾异常:集群CM选举失败,集群存储周期不足,集群带宽不足,集群通道资源不足,集群设备不足等
MINOR_CLUSTER_STORFULL_EXCEPTION | 0x73 | 集群硬盘满
MINOR_CLUSTER_VERSION_EXCEPTION | 0x74 | 集群版本异常
MINOR_CLUSTER_OFFLINENODE_EXCEPTION | 0x75 | 集群掉线数超限
MINOR_CLUSTER_RECORDCYCLE_EXCEPTION | 0x76 | 集群录像周期不足
MINOR_CLUSTER_IPCTRANSFER_EXCEPTION | 0x77 | 集群IPC迁移失败
MINOR_CLUSTER_IPCONFLICT_EXCEPTION | 0x78 | 集群IP冲突，记录CM的IP地址
MINOR_AC_OFF | 0x405 | 交流电断电
MINOR_AC_RESUME | 0x406 | 交流电恢复
MINOR_NET_RESUME | 0x407 | 网络恢复
MINOR_FLASH_ABNORMAL | 0x408 | FLASH读写异常
MINOR_CARD_READER_OFFLINE | 0x409 | 读卡器掉线
MINOR_CARD_READER_RESUME | 0x40a | 读卡器掉线恢复
MINOR_TX1_SUB_SYSTEM_EXCEPTION | 0x1050 | 智能子系统分析异常
MINOR_TX1_REBOOT_EXCEPTION | 0x1051 | 智能子系统异常重启
MINOR_TX1_SUB_SYSTEM_LOSS | 0x1052 | 智能子系统异常离线
MINOR_TX1_SUB_SYSTEM_RESTORE | 0x1053 | 智能子系统离线恢复
MINOR_SUBSYSTEM_IP_CONFLICT | 0x4000 | 子板IP冲突
MINOR_SUBSYSTEM_NET_BROKEN | 0x4001 | 子板断网
MINOR_FAN_ABNORMAL | 0x4002 | 风扇异常
MINOR_BACKPANEL_TEMPERATURE_ABNORMAL | 0x4003 | 背板温度异常
MINOR_SDCARD_ABNORMAL | 0x4004 | SD卡不健康
MINOR_SDCARD_DAMAGE | 0x4005 | SD卡损坏
MINOR_RS485_FAULT | 0x400b | 485总线故障
MINOR_LAN_STATUS_FAULT | 0x400c | LAN网线接入状态故障
MINOR_LAN_LINK1_FAULT | 0x400d | LAN链路1故障
MINOR_LAN_LINK2_FAULT | 0x400e | LAN链路2故障
MINOR_SIM_CARD_STATUS_FAULT | 0x400f | 4G-SIM卡状态故障
MINOR_4G_LINK1_FAULT | 0x4010 | 4G链路1故障
MINOR_4G_LINK2_FAULT | 0x4011 | 4G链路2故障
MINOR_OTHER_FAULT | 0x4012 | 其他故障
MINOR_FIRE_CONTROL_CONNECT_FAULT | 0x4013 | 与消控主机连接故障

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_START_DVR | 0x41 | 开机
MINOR_STOP_DVR | 0x42 | 关机
MINOR_STOP_ABNORMAL | 0x43 | 异常关机
MINOR_REBOOT_DVR | 0x44 | 本地重启设备
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_LOGOUT | 0x51 | 本地注销登陆
MINOR_LOCAL_CFG_PARM | 0x52 | 本地配置参数
MINOR_LOCAL_PLAYBYFILE | 0x53 | 本地按文件回放或下载
MINOR_LOCAL_PLAYBYTIME | 0x54 | 本地按时间回放或下载
MINOR_LOCAL_START_REC | 0x55 | 本地开始录像
MINOR_LOCAL_STOP_REC | 0x56 | 本地停止录像
MINOR_LOCAL_PTZCTRL | 0x57 | 本地云台控制
MINOR_LOCAL_PREVIEW | 0x58 | 本地预览(保留不使用)
MINOR_LOCAL_MODIFY_TIME | 0x59 | 本地修改时间(保留不使用)
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_LOCAL_RECFILE_OUTPUT | 0x5b | 本地备份录象文件
MINOR_LOCAL_FORMAT_HDD | 0x5c | 本地初始化硬盘
MINOR_LOCAL_CFGFILE_OUTPUT | 0x5d | 导出本地配置文件
MINOR_LOCAL_CFGFILE_INPUT | 0x5e | 导入本地配置文件
MINOR_LOCAL_COPYFILE | 0x5f | 本地备份文件
MINOR_LOCAL_LOCKFILE | 0x60 | 本地锁定录像文件
MINOR_LOCAL_UNLOCKFILE | 0x61 | 本地解锁录像文件
MINOR_LOCAL_DVR_ALARM | 0x62 | 本地手动清除和触发报警
MINOR_IPC_ADD | 0x63 | 本地添加IPC
MINOR_IPC_DEL | 0x64 | 本地删除IPC
MINOR_IPC_SET | 0x65 | 本地设置IPC
MINOR_LOCAL_START_BACKUP | 0x66 | 本地开始备份
MINOR_LOCAL_STOP_BACKUP | 0x67 | 本地停止备份
MINOR_LOCAL_COPYFILE_START_TIME | 0x68 | 本地备份开始时间
MINOR_LOCAL_COPYFILE_END_TIME | 0x69 | 本地备份结束时间
MINOR_LOCAL_ADD_NAS | 0x6a | 本地添加网络硬盘
MINOR_LOCAL_DEL_NAS | 0x6b | 本地删除NAS盘
MINOR_LOCAL_SET_NAS | 0x6c | 本地设置NAS盘
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_START_REC | 0x72 | 远程开始录像
MINOR_REMOTE_STOP_REC | 0x73 | 远程停止录像
MINOR_START_TRANS_CHAN | 0x74 | 开始透明传输
MINOR_STOP_TRANS_CHAN | 0x75 | 停止透明传输
MINOR_REMOTE_GET_PARM | 0x76 | 远程获取参数
MINOR_REMOTE_CFG_PARM | 0x77 | 远程配置参数
MINOR_REMOTE_GET_STATUS | 0x78 | 远程获取状态
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_START_VT | 0x7c | 开始语音对讲
MINOR_STOP_VT | 0x7d | 停止语音对讲
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_PLAYBYFILE | 0x7f | 远程按文件回放
MINOR_REMOTE_PLAYBYTIME | 0x80 | 远程按时间回放
MINOR_REMOTE_PTZCTRL | 0x81 | 远程云台控制
MINOR_REMOTE_FORMAT_HDD | 0x82 | 远程格式化硬盘
MINOR_REMOTE_STOP | 0x83 | 远程关机
MINOR_REMOTE_LOCKFILE | 0x84 | 远程锁定文件
MINOR_REMOTE_UNLOCKFILE | 0x85 | 远程解锁文件
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_RECFILE_OUTPUT | 0x88 | 远程导出录象文件
MINOR_REMOTE_DVR_ALARM | 0x89 | 远程手动清除和触发报警
MINOR_REMOTE_IPC_ADD | 0x8a | 远程添加IPC
MINOR_REMOTE_IPC_DEL | 0x8b | 远程删除IPC
MINOR_REMOTE_IPC_SET | 0x8c | 远程设置IPC
MINOR_REBOOT_VCA_LIB | 0x8d | 重启智能库
MINOR_REMOTE_ADD_NAS | 0x8e | 远程添加NAS盘
MINOR_REMOTE_DEL_NAS | 0x8f | 远程删除NAS盘
MINOR_REMOTE_SET_NAS | 0x90 | 远程设置NAS盘
MINOR_LOCAL_START_REC_CDRW | 0x91 | 本地开始刻录
MINOR_LOCAL_STOP_REC_CDRW | 0x92 | 本地停止刻录
MINOR_REMOTE_START_REC_CDRW | 0x93 | 远程开始刻录
MINOR_REMOTE_STOP_REC_CDRW | 0x94 | 远程停止刻录
MINOR_LOCAL_PIC_OUTPUT | 0x95 | 本地备份图片文件
MINOR_REMOTE_PIC_OUTPUT | 0x96 | 远程备份图片文件
MINOR_LOCAL_INQUEST_RESUME | 0x97 | 本地恢复审讯事件
MINOR_REMOTE_INQUEST_RESUME | 0x98 | 远程恢复审讯事件
MINOR_LOCAL_ADD_FILE | 0x99 | 本地导入文件
MINOR_REMOTE_DELETE_HDISK | 0x9a | 远程删除异常不存在的硬盘
MINOR_REMOTE_LOAD_HDISK | 0x9b | 远程加载硬盘
MINOR_REMOTE_UNLOAD_HDISK | 0x9c | 远程卸载硬盘
MINOR_LOCAL_OPERATE_LOCK | 0x9d | 本地操作锁定
MINOR_LOCAL_OPERATE_UNLOCK | 0x9e | 本地操作解除锁定
MINOR_LOCAL_DEL_FILE | 0x9f | 本地删除审讯文件
MINOR_REMOTE_BYPASS | 0xd0 | 远程旁路
MINOR_REMOTE_UNBYPASS | 0xd1 | 远程旁路恢复
MINOR_REMOTE_SET_ALARMIN_CFG | 0xd2 | 远程设置报警输入参数
MINOR_REMOTE_GET_ALARMIN_CFG | 0xd3 | 远程获取报警输入参数
MINOR_REMOTE_SET_ALARMOUT_CFG | 0xd4 | 远程设置报警输出参数
MINOR_REMOTE_GET_ALARMOUT_CFG | 0xd5 | 远程获取报警输出参数
MINOR_REMOTE_ALARMOUT_OPEN_MAN | 0xd6 | 远程手动开启报警输出
MINOR_REMOTE_ALARMOUT_CLOSE_MAN | 0xd7 | 远程手动关闭报警输出
MINOR_REMOTE_ALARM_ENABLE_CFG | 0xd8 | 远程设置报警主机的RS485串口使能状态
MINOR_DBDATA_OUTPUT | 0xd9 | 导出数据库记录
MINOR_DBDATA_INPUT | 0xda | 导入数据库记录
MINOR_MU_SWITCH | 0xdb | 级联切换
MINOR_MU_PTZ | 0xdc | 级联PTZ控制
MINOR_REMOTE_INQUEST_DEL_FILE | 0xde | 远程删除文件
MINOR_LOCAL_CONF_REB_RAID | 0x101 | 本地配置自动重建
MINOR_LOCAL_CONF_SPARE | 0x102 | 本地配置热备
MINOR_LOCAL_ADD_RAID | 0x103 | 本地创建阵列
MINOR_LOCAL_DEL_RAID | 0x104 | 本地删除阵列
MINOR_LOCAL_MIG_RAID | 0x105 | 本地迁移阵列
MINOR_LOCAL_REB_RAID | 0x106 | 本地手动重建阵列
MINOR_LOCAL_QUICK_CONF_RAID | 0x107 | 本地一键配置
MINOR_LOCAL_ADD_VD | 0x108 | 本地创建虚拟磁盘
MINOR_LOCAL_DEL_VD | 0x109 | 本地删除虚拟磁盘
MINOR_LOCAL_RP_VD | 0x10a | 本地修复虚拟磁盘
MINOR_LOCAL_FORMAT_EXPANDVD | 0x10b | 本地扩展虚拟磁盘扩容
MINOR_LOCAL_RAID_UPGRADE | 0x10c | 本地raid卡升级
MINOR_LOCAL_STOP_RAID | 0x10d | 本地暂停RAID操作(即安全拔盘)
MINOR_REMOTE_CONF_REB_RAID | 0x111 | 远程配置自动重建
MINOR_REMOTE_CONF_SPARE | 0x112 | 远程配置热备
MINOR_REMOTE_ADD_RAID | 0x113 | 远程创建阵列
MINOR_REMOTE_DEL_RAID | 0x114 | 远程删除阵列
MINOR_REMOTE_MIG_RAID | 0x115 | 远程迁移阵列
MINOR_REMOTE_REB_RAID | 0x116 | 远程手动重建阵列
MINOR_REMOTE_QUICK_CONF_RAID | 0x117 | 远程一键配置
MINOR_REMOTE_ADD_VD | 0x118 | 远程创建虚拟磁盘
MINOR_REMOTE_DEL_VD | 0x119 | 远程删除虚拟磁盘
MINOR_REMOTE_RP_VD | 0x11a | 远程修复虚拟磁盘
MINOR_REMOTE_FORMAT_EXPANDVD | 0x11b | 远程虚拟磁盘扩容
MINOR_REMOTE_RAID_UPGRADE | 0x11c | 远程raid卡升级
MINOR_REMOTE_STOP_RAID | 0x11d | 远程暂停RAID操作(即安全拔盘)
MINOR_LOCAL_START_PIC_REC | 0x121 | 本地开始抓图
MINOR_LOCAL_STOP_PIC_REC | 0x122 | 本地停止抓图
MINOR_LOCAL_SET_SNMP | 0x125 | 本地配置SNMP
MINOR_LOCAL_TAG_OPT | 0x126 | 本地标签操作
MINOR_REMOTE_START_PIC_REC | 0x131 | 远程开始抓图
MINOR_REMOTE_STOP_PIC_REC | 0x132 | 远程停止抓图
MINOR_REMOTE_SET_SNMP | 0x135 | 远程配置SNMP
MINOR_REMOTE_TAG_OPT | 0x136 | 远程标签操作
MINOR_LOCAL_VOUT_SWITCH | 0x140 | 本地输出口切换操作
MINOR_STREAM_CABAC | 0x141 | 码流压缩性能选项配置操作
MINOR_LOCAL_SPARE_OPT | 0x142 | 本地N+1热备相关操作
MINOR_REMOTE_SPARE_OPT | 0x143 | 远程N+1热备相关操作
MINOR_LOCAL_IPCCFGFILE_OUTPUT | 0x144 | 本地导出ipc配置文件
MINOR_LOCAL_IPCCFGFILE_INPUT | 0x145 | 本地导入ipc配置文件
MINOR_LOCAL_IPC_UPGRADE | 0x146 | 本地升级IPC
MINOR_REMOTE_IPCCFGFILE_OUTPUT | 0x147 | 远程导出ipc配置文件
MINOR_REMOTE_IPCCFGFILE_INPUT | 0x148 | 远程导入ipc配置文件
MINOR_REMOTE_IPC_UPGRADE | 0x149 | 远程升级IPC
MINOR_LOCAL_UNLOAD_HDISK | 0x150 | 本地卸载硬盘
MINOR_LOCAL_AUDIO_MIX | 0x151 | 本地配置音频混音参数
MINOR_REMOTE_AUDIO_MIX | 0x152 | 远程配置音频混音参数
MINOR_LOCAL_TRIAL_PAUSE | 0x153 | 本地暂停讯问
MINOR_LOCAL_TRIAL_RESUME | 0x154 | 本地继续讯问
MINOR_REMOTE_TRIAL_PAUSE | 0x155 | 远程暂停讯问
MINOR_REMOTE_TRIAL_RESUME | 0x156 | 远程继续讯问
MINOR_REMOTE_MODIFY_VERIFICATION_CODE | 0x157 | 修改平台的验证码
MINOR_LOCAL_MAKECALL | 0x180 | 本地呼叫
MINOR_LOCAL_REJECTCALL | 0x181 | 本地拒接
MINOR_LOCAL_ANSWERCALL | 0x182 | 本地接听
MINOR_LOCAL_HANGUPCALL | 0x183 | 本地挂断
MINOR_REMOTE_MAKECALL | 0x188 | 远程呼叫
MINOR_REMOTE_REJECTCALL | 0x189 | 远程拒接
MINOR_REMOTE_ANSWERCALL | 0x18a | 远程接听
MINOR_REMOTE_HANGUPCALL | 0x18b | 远程挂断
MINOR_OTHER_OPERATE | 0x200 | 其他操作
MINOR_SET_MULTI_MASTER | 0x201 | 设置大屏主屏
MINOR_SET_MULTI_SLAVE | 0x202 | 设置大屏子屏
MINOR_CANCEL_MULTI_MASTER | 0x203 | 取消大屏主屏
MINOR_CANCEL_MULTI_SLAVE | 0x204 | 取消大屏子屏
MINOR_SCREEN_SET_INPUT | 0x251 | 修改输入源
MINOR_SCREEN_SET_OUTPUT | 0x252 | 修改输出通道
MINOR_SCREEN_SET_OSD | 0x253 | 修改虚拟LED
MINOR_SCREEN_SET_LOGO | 0x254 | 修改LOGO
MINOR_SCREEN_SET_LAYOUT | 0x255 | 设置场景
MINOR_SCREEN_PICTUREPREVIEW | 0x256 | 回显操作
MINOR_SCREEN_GET_OSD | 0x257 | 获取虚拟LED
MINOR_SCREEN_GET_LAYOUT | 0x258 | 获取场景
MINOR_SCREEN_LAYOUT_CTRL | 0x259 | 场景控制
MINOR_GET_ALL_VALID_WND | 0x260 | 获取所有有效窗口
MINOR_GET_SIGNAL_WND | 0x261 | 获取单个窗口信息
MINOR_WINDOW_CTRL | 0x262 | 窗口控制
MINOR_GET_LAYOUT_LIST | 0x263 | 获取场景列表
MINOR_LAYOUT_CTRL | 0x264 | 场景控制
MINOR_SET_LAYOUT | 0x265 | 设置单个场景
MINOR_GET_SIGNAL_LIST | 0x266 | 获取输入信号源列表
MINOR_GET_PLAN_LIST | 0x267 | 获取预案列表
MINOR_SET_PLAN | 0x268 | 修改预案
MINOR_CTRL_PLAN | 0x269 | 控制预案
MINOR_CTRL_SCREEN | 0x270 | 屏幕控制
MINOR_ADD_NETSIG | 0x271 | 添加信号源
MINOR_SET_NETSIG | 0x272 | 修改信号源
MINOR_SET_DECBDCFG | 0x273 | 设置解码板参数
MINOR_GET_DECBDCFG | 0x274 | 获取解码板参数
MINOR_GET_DEVICE_STATUS | 0x275 | 获取设备信息
MINOR_UPLOAD_PICTURE | 0x276 | 底图上传
MINOR_SET_USERPWD | 0x277 | 设置用户密码
MINOR_ADD_LAYOUT | 0x278 | 添加场景
MINOR_DEL_LAYOUT | 0x279 | 删除场景
MINOR_DEL_NETSIG | 0x280 | 删除信号源
MINOR_ADD_PLAN | 0x281 | 添加预案
MINOR_DEL_PLAN | 0x282 | 删除预案
MINOR_GET_EXTERNAL_MATRIX_CFG | 0x283 | 获取外接矩阵配置
MINOR_SET_EXTERNAL_MATRIX_CFG | 0x284 | 设置外接矩阵配置
MINOR_GET_USER_CFG | 0x285 | 获取用户配置
MINOR_SET_USER_CFG | 0x286 | 设置用户配置
MINOR_GET_DISPLAY_PANEL_LINK_CFG | 0x287 | 获取显示墙连接配置
MINOR_SET_DISPLAY_PANEL_LINK_CFG | 0x288 | 设置显示墙连接配置
MINOR_GET_WALLSCENE_PARAM | 0x289 | 获取电视墙场景
MINOR_SET_WALLSCENE_PARAM | 0x28a | 设置电视墙场景
MINOR_GET_CURRENT_WALLSCENE | 0x28b | 获取当前使用场景
MINOR_SWITCH_WALLSCENE | 0x28c | 场景切换
MINOR_LOCAL_LOAD_HDISK | 0x300 | 本地加载硬盘
MINOR_LOCAL_DELETE_HDISK | 0x301 | 本地删除异常不存在的硬盘
MINOR_REMOTE_CFG_FACE_CONTRAST | 0x363 | 远程设置人脸比对配置
MINOR_LOCAL_CFG_FACE_CONTRAST | 0x364 | 本地设置人脸比对配置
MINOR_REMOTE_CFG_ALLOWLIST_FACE_CONTRAST | 0x365 | 远程设置授权名单人脸比对配置
MINOR_LOCAL_CFG_ALLOWLIST_FACE_CONTRAST | 0x366 | 本地设置授权名单人脸比对配置
MINOR_REMOTE_OPEN_DOOR | 0x400 | 远程开门
MINOR_REMOTE_CLOSE_DOOR | 0x401 | 远程关门
MINOR_REMOTE_ALWAYS_OPEN | 0x402 | 远程常开
MINOR_REMOTE_ALWAYS_CLOSE | 0x403 | 远程常关
MINOR_REMOTE_CHECK_TIME | 0x404 | 远程手动校时
MINOR_NTP_CHECK_TIME | 0x405 | NTP自动校时
MINOR_REMOTE_CLEAR_CARD | 0x406 | 远程清空卡号
MINOR_REMOTE_RESTORE_CFG | 0x407 | 远程恢复默认参数
MINOR_ALARMIN_ARM | 0x408 | 防区布防
MINOR_ALARMIN_DISARM | 0x409 | 防区撤防
MINOR_LOCAL_RESTORE_CFG | 0x40a | 本地恢复默认参数
MINOR_SET_TRIGGERMODE_CFG | 0x1001 | 设置触发模式参数
MINOR_GET_TRIGGERMODE_CFG | 0x1002 | 获取触发模式参数
MINOR_SET_IOOUT_CFG | 0x1003 | 设置IO输出参数
MINOR_GET_IOOUT_CFG | 0x1004 | 获取IO输出参数
MINOR_GET_TRIGGERMODE_DEFAULT | 0x1005 | 获取触发模式推荐参数
MINOR_GET_ITCSTATUS | 0x1006 | 获取状态检测参数
MINOR_SET_STATUS_DETECT_CFG | 0x1007 | 设置状态检测参数
MINOR_GET_STATUS_DETECT_CFG | 0x1008 | 获取状态检测参数
MINOR_GET_VIDEO_TRIGGERMODE_CFG | 0x1009 | 获取视频电警模式参数
MINOR_SET_VIDEO_TRIGGERMODE_CFG | 0x100a | 设置视频电警模式参数
MINOR_TX1_REBOOT | 0x1118 | 智能子系统正常重启
MINOR_LOCAL_ADD_CAR_INFO | 0x2001 | 本地添加车辆信息
MINOR_LOCAL_MOD_CAR_INFO | 0x2002 | 本地修改车辆信息
MINOR_LOCAL_DEL_CAR_INFO | 0x2003 | 本地删除车辆信息
MINOR_LOCAL_FIND_CAR_INFO | 0x2004 | 本地查找车辆信息
MINOR_LOCAL_ADD_MONITOR_INFO | 0x2005 | 本地添加布防信息
MINOR_LOCAL_MOD_MONITOR_INFO | 0x2006 | 本地修改布防信息
MINOR_LOCAL_DEL_MONITOR_INFO | 0x2007 | 本地删除布防信息
MINOR_LOCAL_FIND_MONITOR_INFO | 0x2008 | 本地查询布防信息
MINOR_LOCAL_FIND_NORMAL_PASS_INFO | 0x2009 | 本地查询正常通行信息
MINOR_LOCAL_FIND_ABNORMAL_PASS_INFO | 0x200a | 本地查询异常通行信息
MINOR_LOCAL_FIND_PEDESTRIAN_PASS_INFO | 0x200b | 本地查询正常通行信息
MINOR_LOCAL_PIC_PREVIEW | 0x200c | 本地图片预览
MINOR_LOCAL_SET_GATE_PARM_CFG | 0x200d | 设置本地配置出入口参数
MINOR_LOCAL_GET_GATE_PARM_CFG | 0x200e | 获取本地配置出入口参数
MINOR_LOCAL_SET_DATAUPLOAD_PARM_CFG | 0x200f | 设置本地配置数据上传参数
MINOR_LOCAL_GET_DATAUPLOAD_PARM_CFG | 0x2010 | 获取本地配置数据上传参数
MINOR_LOCAL_DEVICE_CONTROL | 0x2011 | 本地设备控制(本地开关闸)
MINOR_LOCAL_ADD_EXTERNAL_DEVICE_INFO | 0x2012 | 本地添加外接设备信息
MINOR_LOCAL_MOD_EXTERNAL_DEVICE_INFO | 0x2013 | 本地修改外接设备信息
MINOR_LOCAL_DEL_EXTERNAL_DEVICE_INFO | 0x2014 | 本地删除外接设备信息
MINOR_LOCAL_FIND_EXTERNAL_DEVICE_INFO | 0x2015 | 本地查询外接设备信息
MINOR_LOCAL_ADD_CHARGE_RULE | 0x2016 | 本地添加收费规则
MINOR_LOCAL_MOD_CHARGE_RULE | 0x2017 | 本地修改收费规则
MINOR_LOCAL_DEL_CHARGE_RULE | 0x2018 | 本地删除收费规则
MINOR_LOCAL_FIND_CHARGE_RULE | 0x2019 | 本地查询收费规则
MINOR_LOCAL_COUNT_NORMAL_CURRENTINFO | 0x2020 | 本地统计正常通行信息
MINOR_LOCAL_EXPORT_NORMAL_CURRENTINFO_REPORT | 0x2021 | 本地导出正常通行信息统计报表
MINOR_LOCAL_COUNT_ABNORMAL_CURRENTINFO | 0x2022 | 本地统计异常通行信息
MINOR_LOCAL_EXPORT_ABNORMAL_CURRENTINFO_REPORT | 0x2023 | 本地导出异常通行信息统计报表
MINOR_LOCAL_COUNT_PEDESTRIAN_CURRENTINFO | 0x2024 | 本地统计行人通行信息
MINOR_LOCAL_EXPORT_PEDESTRIAN_CURRENTINFO_REPORT | 0x2025 | 本地导出行人通行信息统计报表
MINOR_LOCAL_FIND_CAR_CHARGEINFO | 0x2026 | 本地查询过车收费信息
MINOR_LOCAL_COUNT_CAR_CHARGEINFO | 0x2027 | 本地统计过车收费信息
MINOR_LOCAL_EXPORT_CAR_CHARGEINFO_REPORT | 0x2028 | 本地导出过车收费信息统计报表
MINOR_LOCAL_FIND_SHIFTINFO | 0x2029 | 本地查询交接班信息
MINOR_LOCAL_FIND_CARDINFO | 0x2030 | 本地查询卡片信息
MINOR_LOCAL_ADD_RELIEF_RULE | 0x2031 | 本地添加减免规则
MINOR_LOCAL_MOD_RELIEF_RULE | 0x2032 | 本地修改减免规则
MINOR_LOCAL_DEL_RELIEF_RULE | 0x2033 | 本地删除减免规则
MINOR_LOCAL_FIND_RELIEF_RULE | 0x2034 | 本地查询减免规则
MINOR_LOCAL_GET_ENDETCFG | 0x2035 | 本地获取出入口控制机离线检测配置
MINOR_LOCAL_SET_ENDETCFG | 0x2036 | 本地设置出入口控制机离线检测配置
MINOR_LOCAL_SET_ENDEV_ISSUEDDATA | 0x2037 | 本地设置出入口控制机下发卡片信息
MINOR_LOCAL_DEL_ENDEV_ISSUEDDATA | 0x2038 | 本地清空出入口控制机下发卡片信息
MINOR_REMOTE_DEVICE_CONTROL | 0x2101 | 远程设备控制
MINOR_REMOTE_SET_GATE_PARM_CFG | 0x2102 | 设置远程配置出入口参数
MINOR_REMOTE_GET_GATE_PARM_CFG | 0x2103 | 获取远程配置出入口参数
MINOR_REMOTE_SET_DATAUPLOAD_PARM_CFG | 0x2104 | 设置远程配置数据上传参数
MINOR_REMOTE_GET_DATAUPLOAD_PARM_CFG | 0x2105 | 获取远程配置数据上传参数
MINOR_REMOTE_GET_BASE_INFO | 0x2106 | 远程获取终端基本信息
MINOR_REMOTE_GET_OVERLAP_CFG | 0x2107 | 远程获取字符叠加参数配置
MINOR_REMOTE_SET_OVERLAP_CFG | 0x2108 | 远程设置字符叠加参数配置
MINOR_REMOTE_GET_ROAD_INFO | 0x2109 | 远程获取路口信息
MINOR_REMOTE_START_TRANSCHAN | 0x210a | 远程建立同步数据服务器
MINOR_REMOTE_GET_ECTWORKSTATE | 0x210b | 远程获取出入口终端工作状态
MINOR_REMOTE_GET_ECTCHANINFO | 0x210c | 远程获取出入口终端通道状态
MINOR_REMOTE_ADD_EXTERNAL_DEVICE_INFO | 0x210d | 远程添加外接设备信息
MINOR_REMOTE_MOD_EXTERNAL_DEVICE_INFO | 0x210e | 远程修改外接设备信息
MINOR_REMOTE_GET_ENDETCFG | 0x210f | 远程获取出入口控制机离线检测配置
MINOR_REMOTE_SET_ENDETCFG | 0x2110 | 远程设置出入口控制机离线检测配置
MINOR_REMOTE_ENDEV_ISSUEDDATA | 0x2111 | 远程设置出入口控制机下发卡片信息
MINOR_REMOTE_DEL_ENDEV_ISSUEDDATA | 0x2112 | 远程清空出入口控制机下发卡片信息
MINOR_REMOTE_ON_CTRL_LAMP | 0x2115 | 开启远程控制车位指示灯
MINOR_REMOTE_OFF_CTRL_LAMP | 0x2116 | 关闭远程控制车位指示灯
MINOR_SET_VOICE_LEVEL_PARAM | 0x2117 | 设置音量大小
MINOR_SET_VOICE_INTERCOM_PARAM | 0x2118 | 设置音量录音
MINOR_SET_INTELLIGENT_PARAM | 0x2119 | 智能配置
MINOR_LOCAL_SET_RAID_SPEED | 0x211a | 本地设置raid速度
MINOR_REMOTE_SET_RAID_SPEED | 0x211b | 远程设置raid速度
MINOR_REMOTE_CREATE_STORAGE_POOL | 0x211c | 远程添加存储池
MINOR_REMOTE_DEL_STORAGE_POOL | 0x211d | 远程删除存储池
MINOR_REMOTE_DEL_PIC | 0x2120 | 远程删除图片数据
MINOR_REMOTE_DEL_RECORD | 0x2121 | 远程删除录像数据
MINOR_REMOTE_CLOUD_ENABLE | 0x2123 | 远程设置云存储启用
MINOR_REMOTE_CLOUD_DISABLE | 0x2124 | 远程设置云存储禁用
MINOR_REMOTE_CLOUD_MODIFY_PARAM | 0x2125 | 远程修改云存储池参数
MINOR_REMOTE_CLOUD_MODIFY_VOLUME | 0x2126 | 远程修改云存储池容量
MINOR_REMOTE_CREATE_MOD_VIEWLIB_SPACE | 0x2200 | 远程创建/修改视图库空间
MINOR_REMOTE_DELETE_VIEWLIB_FILE | 0x2201 | 远程删除视图库文件
MINOR_REMOTE_DOWNLOAD_VIEWLIB_FILE | 0x2202 | 远程下载视图库文件
MINOR_REMOTE_UPLOAD_VIEWLIB_FILE | 0x2203 | 远程上传视图库文件
MINOR_LOCAL_CREATE_MOD_VIEWLIB_SPACE | 0x2204 | 本地创建/修改视图库空间
MINOR_REMOTE_CONFERENCE_CONFIG | 0x2501 | MCU会议配置
MINOR_REMOTE_TERMINAL_CONFIG | 0x2502 | MCU终端配置
MINOR_REMOTE_GROUP_CONFIG | 0x2503 | MCU分组配置
MINOR_REMOTE_CONFERENCE_CTRL | 0x2504 | MCU会议控制
MINOR_REMOTE_TERMINAL_CTRL | 0x2505 | MCU终端控制
MINOR_LOCAL_RESET_LOGIN_PASSWORD | 0x2600 | 本地重置admin登陆密码
MINOR_REMOTE_RESET_LOGIN_PASSWORD | 0x2601 | 远程重置admin登录密码
MINOR_LOCAL_FACE_BASE_CREATE | 0x2602 | 本地人脸对比库创建
MINOR_REMOTE_FACE_BASE_CREATE | 0x2603 | 远程人脸对比库创建
MINOR_LOCAL_FACE_BASE_MODIFY | 0x2604 | 本地人脸对比库修改
MINOR_REMOTE_FACE_BASE_MODIFY | 0x2605 | 远程人脸对比库修改
MINOR_LOCAL_FACE_BASE_DELETE | 0x2606 | 本地人脸对比库删除
MINOR_REMOTE_FACE_BASE_DELETE | 0x2607 | 远程人脸对比库删除
MINOR_LOCAL_FACE_DATA_APPEND | 0x2608 | 本地录入人脸数据
MINOR_REMOTE_FACE_DATA_APPEND | 0x2609 | 远程录入人脸数据
MINOR_LOCAL_FACE_DATA_SEARCH | 0x2610 | 本地人脸比对数据查找
MINOR_REMOTE_FACE_DATA_SEARCH | 0x2611 | 远程人脸比对数据查找
MINOR_LOCAL_FACE_DATA_ANALYSIS | 0x2612 | 本地图片分析操作
MINOR_REMOTE_FACE_DATA_ANALYSIS | 0x2613 | 远程图片分析操作
MINOR_LOCAL_FACE_DATA_EDIT | 0x2614 | 本地人脸数据修改
MINOR_REMOTE_FACE_DATA_EDIT | 0x2615 | 远程人脸数据修改
MINOR_LOCAL_FACE_DATA_DELETE | 0x2616 | 本地人脸数据删除
MINOR_REMOTE_FACE_DATA_DELET | 0x2617 | 远程人脸数据删除
MINOR_LOCAL_VCA_ANALYSIS_CFG | 0x2618 | 本地智能分析配置
MINOR_REMOTE_VCA_ANALYSIS_CFG | 0x2619 | 远程智能分析配置
MINOR_LOCAL_FACE_BASE_IMPORT | 0x261a | 本地导入人脸库
MINOR_LOCAL_FACE_BASE_EXPORT | 0x261b | 本地导出人脸库
MINOR_REMOTE_CLUSTER_MODE_CONFIG | 0x261c | 远程集群模式配置操作
MINOR_LOCAL_CLUSTER_MODE_CONFIG | 0x261d | 本地集群模式配置操作
MINOR_REMOTE_CLUSTER_NETWORK_CONFIG | 0x261e | 远程集群组网配置操作
MINOR_LOCAL_CLUSTER_NETWORK_CONFIG | 0x261f | 本地集群组网配置操作
MINOR_REMOTE_CLUSTER_ADD_DEVICE | 0x2620 | 远程集群添加设备操作
MINOR_LOCAL_CLUSTER_ADD_DEVICE | 0x2621 | 本地集群添加设备操作
MINOR_REMOTE_CLUSTER_DEL_DEVICE | 0x2622 | 远程集群删除设备操作
MINOR_LOCAL_CLUSTER_DEL_DEVICE | 0x2623 | 本地集群删除设备操作
MINOR_REMOTE_HFPD_CFG | 0x2624 | 远程高频人员检测配置
MINOR_STOP_SOUND | 0x2700 | 消音
MINOR_SELF_CHECK | 0x2701 | 自检
MINOR_DUTY_CHECK | 0x2702 | 查岗

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_INFORMATION | 0x4 | 附加信息
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_HDD_INFO | 0xa1 | 硬盘信息
MINOR_SMART_INFO | 0xa2 | S.M.A.R.T信息
MINOR_REC_START | 0xa3 | 开始录像
MINOR_REC_STOP | 0xa4 | 停止录像
MINOR_REC_OVERDUE | 0xa5 | 过期录像删除
MINOR_LINK_START | 0xa6 | 连接前端设备
MINOR_LINK_STOP | 0xa7 | 断开前端设备
MINOR_NET_DISK_INFO | 0xa8 | 网络硬盘信息
MINOR_RAID_INFO | 0xa9 | raid相关信息
MINOR_RUN_STATUS_INFO | 0xaa | 系统运行状态信息
MINOR_SPARE_START_BACKUP | 0xab | 热备系统开始备份指定工作机
MINOR_SPARE_STOP_BACKUP | 0xac | 热备系统停止备份指定工作机
MINOR_SPARE_CLIENT_INFO | 0xad | 热备客户机信息
MINOR_ANR_RECORD_START | 0xae | ANR录像开始
MINOR_ANR_RECORD_END | 0xaf | ANR录像结束
MINOR_ANR_ADD_TIME_QUANTUM | 0xb0 | ANR添加时间段
MINOR_ANR_DEL_TIME_QUANTUM | 0xb1 | ANR删除时间段
MINOR_PIC_REC_START | 0xb3 | 开始抓图
MINOR_PIC_REC_STOP | 0xb4 | 停止抓图
MINOR_PIC_REC_OVERDUE | 0xb5 | 过期图片文件删除
MINOR_CLIENT_LOGIN | 0xb6 | 登录服务器成功
MINOR_CLIENT_RELOGIN | 0xb7 | 重新登录服务器
MINOR_CLIENT_LOGOUT | 0xb8 | 退出服务器成功
MINOR_CLIENT_SYNC_START | 0xb9 | 录像同步开始
MINOR_CLIENT_SYNC_STOP | 0xba | 录像同步终止
MINOR_CLIENT_SYNC_SUCC | 0xbb | 录像同步成功
MINOR_CLIENT_SYNC_EXCP | 0xbc | 录像同步异常
MINOR_GLOBAL_RECORD_ERR_INFO | 0xbd | 全局错误记录信息
MINOR_BUFFER_STATE | 0xbe | 缓冲区状态日志记录
MINOR_DISK_ERRORINFO_V2 | 0xbf | 硬盘错误详细信息V2
MINOR_UNLOCK_RECORD | 0xc3 | 开锁记录
MINOR_VIS_ALARM | 0xc4 | 防区报警
MINOR_TALK_RECORD | 0xc5 | 通话记录
MINOR_ACCESSORIES_MESSAGE | 0xc6 | 配件板信息
MINOR_INTELLIGENT_BOARD_STATUS | 0xc9 | 智能板状态
MINOR_EZVIZ_OPERATION | 0xcc | 萤石运行状态
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EVENT | 0x5 | 事件
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LEGAL_CARD_PASS | 0x01 | 合法卡认证通过
MINOR_CARD_AND_PSW_PASS | 0x02 | 刷卡加密码认证通过
MINOR_CARD_AND_PSW_FAIL | 0x03 | 刷卡加密码认证失败
MINOR_CARD_AND_PSW_TIMEOUT | 0x04 | 数卡加密码认证超时
MINOR_CARD_AND_PSW_OVER_TIME | 0x05 | 刷卡加密码超次
MINOR_CARD_NO_RIGHT | 0x06 | 未分配权限
MINOR_CARD_INVALID_PERIOD | 0x07 | 无效时段
MINOR_CARD_OUT_OF_DATE | 0x08 | 卡号过期
MINOR_INVALID_CARD | 0x09 | 无此卡号
MINOR_ANTI_SNEAK_FAIL | 0x0a | 反潜回认证失败
MINOR_INTERLOCK_DOOR_NOT_CLOSE | 0x0b | 互锁门未关闭
MINOR_NOT_BELONG_MULTI_GROUP | 0x0c | 卡不属于多重认证群组
MINOR_INVALID_MULTI_VERIFY_PERIOD | 0x0d | 卡不在多重认证时间段内
MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL | 0x0e | 多重认证模式超级权限认证失败
MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL | 0x0f | 多重认证模式远程认证失败
MINOR_MULTI_VERIFY_SUCCESS | 0x10 | 多重认证成功
MINOR_LEADER_CARD_OPEN_BEGIN | 0x11 | 首卡开门开始
MINOR_LEADER_CARD_OPEN_END | 0x12 | 首卡开门结束
MINOR_ALWAYS_OPEN_BEGIN | 0x13 | 常开状态开始
MINOR_ALWAYS_OPEN_END | 0x14 | 常开状态结束
MINOR_LOCK_OPEN | 0x15 | 门锁打开
MINOR_LOCK_CLOSE | 0x16 | 门锁关闭
MINOR_DOOR_BUTTON_PRESS | 0x17 | 开门按钮打开
MINOR_DOOR_BUTTON_RELEASE | 0x18 | 开门按钮放开
MINOR_DOOR_OPEN_NORMAL | 0x19 | 正常开门（门磁）
MINOR_DOOR_CLOSE_NORMAL | 0x1a | 正常关门（门磁）
MINOR_DOOR_OPEN_ABNORMAL | 0x1b | 门异常打开（门磁）
MINOR_DOOR_OPEN_TIMEOUT | 0x1c | 门打开超时（门磁）
MINOR_ALARMOUT_ON | 0x1d | 报警输出打开
MINOR_ALARMOUT_OFF | 0x1e | 报警输出关闭
MINOR_ALWAYS_CLOSE_BEGIN | 0x1f | 常关状态开始
MINOR_ALWAYS_CLOSE_END | 0x20 | 常关状态结束
MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN | 0x21 | 多重多重认证需要远程开门
MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS | 0x22 | 多重认证超级密码认证成功事件
MINOR_MULTI_VERIFY_REPEAT_VERIFY | 0x23 | 多重认证重复认证事件
MINOR_MULTI_VERIFY_TIMEOUT | 0x24 | 多重认证重复认证事件
MINOR_CLUSTER_DEVICE_ONLINE | 0xcd | 集群设备上线
MINOR_CLUSTER_MGR_SERVICE_STARTUP | 0xce | 集群管理服务启动
MINOR_CLUSTER_BUSINESS_TRANSFER | 0xcf | 集群业务迁移
MINOR_CLUSTER_STATUS | 0xd0 | 集群状态信息
MINOR_CLUSTER_CS_STATUS | 0xd1 | 集群CS向CM发送设备状态失败，记录CS和CM的IP地址
MINOR_CLUSTER_CM_STATUS | 0xd2 | CM状态切换，记录CM转变的角色，如leader、follower、candidate
MINOR_ALARMHOST_SCHOOLTIME_IRGI_B | 0x1001 | B码校时
MINOR_ALARMHOST_SCHOOLTIME_SDK | 0x1002 | SDK校时
MINOR_ALARMHOST_SCHOOLTIME_SELFTEST | 0x1003 | 定制自检校时
MINOR_ALARMHOST_SUBSYSTEM_ABNORMALINSERT | 0x1004 | 子板插入
MINOR_ALARMHOST_SUBSYSTEM_ABNORMALPULLOUT | 0x1005 | 子板拔出
MINOR_ALARMHOST_AUTO_ARM | 0x1006 | 自动布防
MINOR_ALARMHOST_AUTO_DISARM | 0x1007 | 自动撤防
MINOR_ALARMHOST_TIME_TIGGER_ON | 0x1008 | 定时开启触发器
MINOR_ALARMHOST_TIME_TIGGER_OFF | 0x1009 | 定时关闭触发器
MINOR_ALARMHOST_AUTO_ARM_FAILD | 0x100a | 自动布防失败
MINOR_ALARMHOST_AUTO_DISARM_FAILD | 0x100b | 自动撤防失败
MINOR_ALARMHOST_TIME_TIGGER_ON_FAILD | 0x100c | 定时开启触发器失败
MINOR_ALARMHOST_TIME_TIGGER_OFF_FAILD | 0x100d | 定时关闭触发器失败
MINOR_ALARMHOST_MANDATORY_ALARM | 0x100e | 强制布防
MINOR_ALARMHOST_KEYPAD_LOCKED | 0x100f | 键盘锁定
MINOR_ALARMHOST_USB_INSERT | 0x1010 | USB插入
MINOR_ALARMHOST_USB_PULLOUT | 0x1011 | USB拔出
MINOR_ALARMHOST_4G_MODULS_ONLINE | 0x1012 | 4G模块上线
MINOR_ALARMHOST_4G_MODULS_OFFLINE | 0x1013 | 4G模块下线
MINOR_EZVIZ_CLOUD_ONLINE | 0x1014 | 萤石云上线
MINOR_EZVIZ_CLOUD_OFFLINE | 0x1015 | 萤石云下线
MINOR_SIPUA_GRID_ONLINE | 0x1016 | 国网B上线
MINOR_SIPUA_GRID_OFFLINE | 0x1017 | 国网B下线
lpStartTime
[in] 文件的开始时间
lpStopTime
[in] 文件结束时间
bOnlySmart
[in] 是否只搜索带S.M.A.R.T信息的日志

Return Values

-1表示失败，其他值作为NET_DVR_FindNextLog_V30等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口如果用于搜索普通日志信息，一般设备（81xx，80xx等）支持2000条，9000v2.0支持4000条，81xxST支持1000条，报警器支持200条。而搜索带S.M.A.R.T信息的日志最大只支持500条， 通常不需要搜索详细的S.M.A.R.T信息时，置bOnlySmart为FALSE即可完成所有日志信息的搜索。
S.M.A.R.T信息：硬盘运行日志记录。

设备日志查找有两种方式：SDK私有协议和ISAPI协议。
1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。

使用ISAPI协议方式登录查找日志时不支持bOnlySmart参数。

See Also

NET_DVR_FindNextLog_V30

NET_DVR_FindLogClose_V30

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_FindDVRLog


NET_DVR_FindDVRLog_V50

查找设备的日志信息（可搜索带S.M.A.R.T信息的日志）。

LONG NET_DVR_FindDVRLog_V50(
  LONG              lUserID,
  LPNET_DVR_FIND_LOG_COND    pFindCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindCond
[in] 查找条件

Return Values

-1表示失败，其他值作为NET_DVR_FindNextLog_V50等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口如果用于搜索普通日志信息，一般设备（81xx，80xx等）支持2000条，9000v2.0支持4000条，81xxST支持1000条，报警器支持200条。而搜索带S.M.A.R.T信息的日志最大只支持500条， 通常不需要搜索详细的S.M.A.R.T信息时，置bOnlySmart为FALSE即可完成所有日志信息的搜索。
S.M.A.R.T信息：硬盘运行日志记录。

设备日志查找有两种方式：SDK私有协议和ISAPI协议。
1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。

使用ISAPI协议方式登录查找日志时不支持bOnlySmart参数。

See Also

NET_DVR_FindNextLog_V50

NET_DVR_FindLogClose_V30

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_FindDVRLog


NET_DVR_FindNextLog_V30

逐条获取查找到的日志信息。

LONG NET_DVR_FindNextLog_V30(
  LONG                 lLogHandle,
  LPNET_DVR_LOG_V30    lpLogData
);

Parameters

lLogHandle
[in] 日志查找句柄，NET_DVR_FindDVRLog_V30的返回值
lpLogData
[out] 保存日志信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取日志信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到日志
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的日志，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找日志时异常

Remarks

在调用该接口获取查找日志之前，必须先调用NET_DVR_FindDVRLog_V30得到当前的查找句柄。

See Also

NET_DVR_FindDVRLog_V30

Reference Interface

该接口扩展源于

NET_DVR_FindNextLog


NET_DVR_FindNextLog_V50

逐条获取查找到的日志信息。

LONG NET_DVR_FindNextLog_V50(
  LONG                 lLogHandle,
  LPNET_DVR_LOG_V50    lpLogData
);

Parameters

lLogHandle
[in] 日志查找句柄，NET_DVR_FindLog_V50的返回值
lpLogData
[out] 保存日志信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取日志信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到日志
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的日志，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找日志时异常

Remarks

在调用该接口获取查找日志之前，必须先调用NET_DVR_FindDVRLog_V30得到当前的查找句柄。

See Also

NET_DVR_FindDVRLog_V30

Reference Interface

该接口扩展源于

NET_DVR_FindNextLog


NET_DVR_FindLogClose_V30

释放查找日志的资源。

BOOL NET_DVR_FindLogClose_V30(
  LONG   lLogHandle
);

Parameters

lLogHandle
[in] 日志查找句柄，NET_DVR_FindDVRLog_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindDVRLog_V30

Reference Interface

该接口扩展源于

NET_DVR_FindLogClose


NET_DVR_Backup

备份统一接口。

DWORD NET_DVR_Backup(
  LONG     lUserID,
  DWORD    dwBackupType,
  void     *lpBackupBuff,
  DWORD    dwBackupBuffSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwBackupType
[in] 备份类型：1- 按文件名备份录像文件，2- 按时间段备份录像文件，3- 备份图片，4- 恢复审讯事件，5- 备份日志
lpBackupBuff
[in] 指向备份参数指针
dwBackupBuffSize
[in] 备份参数大小

Return Values

-1失败，0-510的返回句柄值作为NET_DVR_GetBackupProgress，NET_DVR_StopBackup的参数，接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的备份类型（dwBackupType）对应不同的备份参数结构体（lpBackupBuff）：

dwBackupType | 含义 | lpBackupBuff
1 | 按文件名备份录像文件 | NET_DVR_BACKUP_NAME_PARAM
2 | 按时间段备份录像文件 | NET_DVR_BACKUP_TIME_PARAM
3 | 备份图片 | NET_DVR_BACKUP_PICTURE_PARAM
5 | 备份日志 | NET_DVR_BACKUP_LOG_PARAM

See Also

NET_DVR_GetBackupProgress NET_DVR_StopBackup


NET_DVR_RestoreConfig

恢复设备默认参数。

BOOL NET_DVR_RestoreConfig(
  LONG    lUserID
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_RebootDVR

重启设备。

BOOL NET_DVR_RebootDVR(
  LONG   lUserID
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CONTROL_RESTORE_SUPPORT | 3311 | 快球恢复前端默认参数 | NET_DVR_REMOTECONTROL_STUDY_PARAM
NET_DVR_CONTROL_RESTART_SUPPORT | 3312 | 快球机芯重启 | NET_DVR_REMOTECONTROL_STUDY_PARAM
NET_DVR_COMPLETE_RESTORE_CTRL | 3420 | 设置完全恢复出厂值 | NET_DVR_COMPLETE_RESTORE_INFO
NET_DVR_RESTART_SERVICE | 6213 | 重启CVR服务 | NULL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetConfigFile_V30

导出配置文件。

BOOL NET_DVR_GetConfigFile_V30(
  LONG    lUserID,
  char    *sOutBuffer,
  DWORD   dwOutSize,
  DWORD   *pReturnSize
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sOutBuffer
[out] 存放配置参数的缓冲区
dwOutSize
[in] 缓冲区大小
pReturnSize
[out] 实际获得的缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当sOutBuffer = NULL、dwOutSize = 0且pReturnSize != NULL时用于获取参数配置文件的所需的缓冲区长度； 当sOutBuffer != NULL且dwOutSize != 0时用于获取参数配置文件的所需的缓冲区内容。

See Also

NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_GetConfigFile_EX


NET_DVR_GetConfigFile

导出配置文件。

BOOL NET_DVR_GetConfigFile(
  LONG    lUserID,
  char    *sFileName
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sFileName
[in] 存放保存配置文件的文件路径（包括文件名，二进制文件）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_SetConfigFile_EX

导入配置文件。

BOOL NET_DVR_SetConfigFile_EX(
  LONG    lUserID,
  char    *sInBuffer,
  DWORD   dwInSize
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sInBuffer
[in] 存放配置参数的缓冲区
dwInSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_SetConfigFile

导入配置文件。

BOOL NET_DVR_SetConfigFile(
  LONG    lUserID,
  char    *sFileName
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sFileName
[in] 存放保存配置文件的文件路径（包括文件名，二进制文件）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_GetUploadState、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_SECURITY_CFG_FILE | 41 | 配置文件安全导入 | NET_DVR_SECURITY_CFG_FILE_COND | NULL

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_UploadClose

停止文件上传。

BOOL NET_DVR_UploadClose(
  LONG    lUploadHandle
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UploadFile_V40


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_SECURITY_CFG_FILE | 22 | 配置文件安全导出 | NET_DVR_SECURITY_CFG_FILE_COND

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_StartNetworkFlowTest

开始网络流量检测。

LONG NET_DVR_StartNetworkFlowTest(
  LONG                         lUserID,
  LPNET_DVR_FLOW_TEST_PARAM    pFlowTest,
  FLOWTESTCALLBACK             fFlowTestCallback,
  void                         *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFlowTest
[in] 网络流量参数
fFlowTestCallback
[in] 网络流量检测回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fFlowTestCallback)(
  LONG                  lFlowHandle,
  LPNET_DVR_FLOW_INFO   pFlowInfo,
  void                  *pUser
);

Callback Function Parameters

lFlowHandle
[out] 当前的检测句柄
pFlowInfo
[out] 网络流量检测结果
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopNetworkFlowTest等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

See Also

NET_DVR_StopNetworkFlowTest


NET_DVR_StopNetworkFlowTest

停止网络流量检测。

BOOL NET_DVR_StopNetworkFlowTest(
  LONG    lHandle
);

Parameters

lHandle
[in] NET_DVR_StartNetworkFlowTest的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

See Also

NET_DVR_StartNetworkFlowTest


NET_DVR_GetUpnpNatState

获取UPNP端口映射状态。

BOOL NET_DVR_GetUpnpNatState(
  LONG                        lUserID,
  LPNET_DVR_UPNP_NAT_STATE    lpState
);

Parameters

lUserID
[in]NET_DVR_Login_V40等登录接口的返回值
lpState
[out]UPNP端口映射状态

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ZEROCHANCFG | 获取零通道压缩参数 | 通道号 | NET_DVR_ZEROCHANCFG | 1102
NET_DVR_GET_ZERO_PREVIEWCFG_V30 | 获取零通道本地预览参数 | 通道号 | NET_DVR_PREVIEWCFG_V30 | 1104
NET_DVR_GET_ZERO_ZOOM | 获取零通道缩放参数 | 通道号 | NET_DVR_ZERO_ZOOMCFG | 1107

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 目前设备只有一个零通道号，通道号设为1。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_ZEROCHANCFG | 设置零通道压缩参数 | 通道号 | NET_DVR_ZEROCHANCFG | 1103
NET_DVR_SET_ZERO_PREVIEWCFG_V30 | 设置零通道本地预览参数 | 通道号 | NET_DVR_PREVIEWCFG_V30 | 1105
NET_DVR_SET_ZERO_ZOOM | 设置零通道缩放参数 | 通道号 | NET_DVR_ZERO_ZOOMCFG | 1106

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_ZeroStartPlay

开启零通道预览。

LONG NET_DVR_ZeroStartPlay(
  LONG                     lUserID,
  LPNET_DVR_CLIENTINFO     lpClientInfo,
  fRealDataCallBack_V30    cbRealDataCallBack,
  void                     *pUser,
  BOOL                     bBlocked
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpClientInfo
[in] 预览参数
cbRealDataCallBack
[in] 码流数据回调函数
pUser
[in] 用户数据
bBlocked
[in] 请求码流过程是否阻塞：0－否；1－是

Callback Function

typedef void(CALLBACK *fRealDataCallBack_V30)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_AUDIOSTREAMDATA | 3 | 音频数据
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_ZeroStopPlay等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口中可以设置当前预览操作是否阻塞（通过bBlocked参数设置）。若设为不阻塞，表示发起与设备的连接就认为连接成功，如果发生码流接收失败、播放失败等情况以预览异常的方式通知上层。 若设为阻塞，表示直到播放操作完成才返回成功与否。
该接口中的回调函数可以置为空，此时该函数将不回调码流数据给用户，但用户仍可以通过接口NET_DVR_SetRealDataCallBack或NET_DVR_SetStandardDataCallBack注册捕获码流数据的回调函数以捕获码流数据。

See Also

NET_DVR_ZeroStopPlay
NET_DVR_GetRealPlayerIndex NET_DVR_RigisterDrawFun NET_DVR_SetRealDataCallBack
NET_DVR_SaveRealData NET_DVR_StopSaveRealData


NET_DVR_ZeroStopPlay

停止预览。

BOOL NET_DVR_ZeroStopPlay(
  LONG    lPlayHandle
);

Parameters

lPlayHandle
[in] 预览句柄，NET_DVR_ZeroStartPlay的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_ZeroStartPlay


NET_DVR_ZeroMakeKeyFrame

零通道产生一个关键帧。

BOOL NET_DVR_ZeroMakeKeyFrame(
  LONG    lUserID,
  LONG    lZeroChan
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lZeroChan
[in] 零通道号，加上起始通道号（即从1开始）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_ZeroTurnOver

零通道预览画面翻页。

BOOL NET_DVR_ZeroTurnOver(
  LONG     lUserID,
  DWORD    lChannel,
  BOOL     bNextPreview
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 零通道号，加上起始通道号（即从1开始）
bNextPreview
[in] 向下或向上翻页：TRUE-下一页；FALSE-上一页

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_SerialStart_V40

建立透明通道。

LONG NET_DVR_SerialStart_V40(
  LONG                   lUserID,
  void                   *lpInBuffer,
  LONG                   dwInBufferSize,
  fSerialDataCallBack    cbSerialDataCallBack,
  void                   *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuffer
[in] 输入缓冲区，指向透明通道串口参数，对应NET_DVR_SERIALSTART_V40
dwInBufferSize
[in] 输入缓冲区大小
cbSerialDataCallBack
[in] 回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fSerialDataCallBack)(
  LONG     lSerialHandle,
  LONG     lChannel,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

lSerialHandle
[out] NET_DVR_SerialStart_V40的返回值
lChannel
[out] 通道号，透明通道类型为RS485通道时有效
pRecvDataBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 数据大小
dwUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SerialSend等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

如果串口接的外设不支持双工（全双工或者半双工），设备不会有数据返回给SDK。

See Also

NET_DVR_SerialStop NET_DVR_SerialSend
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_SerialStart


NET_DVR_SerialSend

通过透明通道向设备串口发送数据。

BOOL NET_DVR_SerialSend(
  LONG     lSerialHandle,
  LONG     lChannel,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lSerialHandle
[in] NET_DVR_SerialStart的返回值
lChannel
[in] 串口号，从1开始
pSendBuf
[in] 发送数据的缓冲区指针
dwBufSize
[in] 缓冲区的大小，最多1016字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SerialStart


NET_DVR_SerialStop

断开透明通道。

BOOL NET_DVR_SerialStop(
  LONG  lSerialHandle
);

Parameters

lSerialHandle
[in] NET_DVR_SerialStart的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SerialStart


NET_DVR_SendToSerialPort

直接向串口发送数据，不需要建立透明通道。

BOOL NET_DVR_SendToSerialPort(
  LONG     lUserID,
  DWORD    dwSerialPort,
  DWORD    dwSerialIndex,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwSerialPort
[in] 串口类型：1-232，2-485
dwSerialIndex
[in] 表示第几个232或者485，从1开始
pSendBuf
[in] 发送数据的缓冲区指针
dwBufSize
[in] 缓冲区的大小，最多1016字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_SendTo232Port

直接向232串口发送数据，不需要建立透明通道。

BOOL NET_DVR_SendTo232Port(
  LONG     lUserID,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pSendBuf
[in] 发送数据的缓冲区指针
dwBufSize
[in] 缓冲区的大小，最多1016字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_StartDVRRecord

远程手动启动设备录像。

BOOL NET_DVR_StartDVRRecord(
  LONG     lUserID,
  LONG     lChannel,
  LONG     lRecordType
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号，0x00ff表示所有模拟通道，0xff00表示所有数字通道，0xffff表示所有模拟和数字通道
lRecordType
[in] 录像类型：0- 手动，1- 报警，2- 回传，3- 信号，4- 移动，5- 遮挡

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

录像类型设置需要设备支持，不支持默认为手动录像。除了CVR，其他设备目前只支持手动录像。

当某通道已经开启定时录像的前提下首次开启手动录像，此次操作未生效，仍保持定时录像状态，且查询设备状态（见接口NET_DVR_GetDVRWorkState_V30和NET_DVR_GetDVRWorkState；结构体NET_DVR_WORKSTATE_V30和NET_DVR_WORKSTATE）中的录像状态仍为录像；此时关闭手动录像，停止了定时录像，且查询录像状态为不录像；第二次开启手动录像，此时手动录像开始；停止手动录像后，重启设备，定时录像重新打开。

See Also

NET_DVR_StopDVRRecord NET_DVR_Login NET_DVR_Login_V30


NET_DVR_StopDVRRecord

远程手动停止设备录像。

BOOL NET_DVR_StopDVRRecord(
  LONG     lUserID,
  LONG     lChannel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号，0x00ff表示所有模拟通道，0xff00表示所有数字通道，0xffff表示所有模拟和数字通道

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDVRRecord NET_DVR_Login NET_DVR_Login_V30


NET_DVR_StartManualRecord

按流id远程开启设备手动录像。

BOOL NET_DVR_StartManualRecord(
  LONG                             lUserID,
  LPNET_DVR_MANUAL_RECORD_PARA     pRecordPara
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pRecordPara
[in] 手动录像参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopManualRecord NET_DVR_Login NET_DVR_Login_V30


NET_DVR_StopManualRecord

按流id远程停止设备手动录像。

BOOL NET_DVR_StopManualRecord(
  LONG                     lUserID,
  LPNET_DVR_STREAM_INFO    pIDInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pIDInfo
[in] 流ID信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartManualRecord NET_DVR_Login NET_DVR_Login_V30


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CMD_TRIGGER_PERIOD_RECORD | 6144 | 外部命令触发录像，对应“命令触发”录像类型 | NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_N_PLUS_ONE_WORK_MODE | 获取N+1工作模式 | 无效 | NET_DVR_N_PLUS_ONE_WORK_MODE_CFG | 6168
NET_DVR_GET_MAX_MACHINE_NUM_CFG | 获取备机最大个数 | 无效 | NET_DVR_MACHINE_MAX_NUM_CFG | 6214

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_N_PLUS_ONE_WORK_MODE | 设置N+1工作模式 | 无效 | NET_DVR_N_PLUS_ONE_WORK_MODE_CFG | 6169
NET_DVR_SET_MAX_MACHINE_NUM_CFG | 设置备机最大个数 | 无效 | NET_DVR_MACHINE_MAX_NUM_CFG | 6215

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Remarks

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_ADD_DEVICE | 6216 | N+1模式添加设备 | NET_DVR_N_PLUS_ONE_DEVICE_PARAM
NET_DVR_DEL_DEVICE | 6217 | N+1模式删除设备 | NET_DVR_N_PLUS_ONE_DEVICE_PARAM

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO | 6222 | 获取N+1设备信息 | NULL | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwCommand、dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取、设置相关参数或获取状态，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO | 获取N+1设备信息 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO | 6222 | 获取N+1设备信息 | NET_DVR_N_PLUS_ONE_DEVICE_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 要设置的设备个数，设为1
lpInBuffer
[in] 配置条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口是带有发送数据的批量获取配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。
  • 不同的获取功能对应不同的结构体和命令号，如下表所示：
    • dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_RELOCATE_INFO | 获取N+0模式下重定向信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_RELOCATE_INFO | 6026
  • dwCount为0xffffffff时，lpInBuffer为NULL，dwInBufferSize为0，表示获取所有的相关信息，并且此时lpOutBuffer的前4个字节为返回的实际信息个数，4字节后才是返回的具体信息，因此，lpOutBuffer缓冲区的大小需要比列表所述大小多4个字节。

    • See Also

    NET_DVR_Login_V40 NET_DVR_GetLastError


NET_DVR_ClickKey

远程控制面板上的按键。

BOOL NET_DVR_ClickKey(
  LONG    lUserID,
  LONG    lKeyIndex
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lKeyIndex
[in] 面板上的按键，见下表：
宏定义 | 宏定义值 | 含义
KEY_CODE_1 | 1 | 按钮1
KEY_CODE_2 | 2 | 按钮2
KEY_CODE_3 | 3 | 按钮3
KEY_CODE_4 | 4 | 按钮4
KEY_CODE_5 | 5 | 按钮5
KEY_CODE_6 | 6 | 按钮6
KEY_CODE_7 | 7 | 按钮7
KEY_CODE_8 | 8 | 按钮8
KEY_CODE_9 | 9 | 按钮9
KEY_CODE_0 | 10 | 按钮0
KEY_CODE_POWER | 11 | POWER
KEY_CODE_MENU | 12 | MENU
KEY_CODE_ENTER | 13 | ENTER
KEY_CODE_CANCEL | 14 | ESCS
KEY_CODE_UP/KEY_PTZ_UP_START | 15 | "上"或者"云台上开始"
KEY_CODE_DOWN/KEY_PTZ_DOWN_START | 16 | "下"或者"云台下开始"
KEY_CODE_LEFT/KEY_PTZ_LEFT_START | 17 | "左"或者"云台左开始"
KEY_CODE_RIGHT/KEY_PTZ_RIGHT_START | 18 | "右"或者"云台右开始"
KEY_CODE_EDIT/KEY_PTZ_AP1_START | 19 | "EDIT"或者"光圈+开始"
KEY_CODE_ADD | 20 | 增加
KEY_CODE_MINUS | 21 | 减小
KEY_CODE_PLAY | 22 | "PLAY"
KEY_CODE_REC | 23 | "REC"
KEY_CODE_PAN/KEY_PTZ_AP2_START | 24 | "PAN"或者"光圈-开始"
KEY_CODE_M/KEY_PTZ_FOCUS2_START | 25 | "多画面"或者"聚焦-开始"
KEY_CODE_A/KEY_PTZ_FOCUS1_START | 26 | "输入法"或者"聚焦+开始"
KEY_CODE_F1 | 27 | "对讲"
KEY_CODE_F2 | 28 | "系统信息"
KEY_PTZ_UP_STOP | 32 | "云台上结束"
KEY_PTZ_DOWN_STOP | 33 | "云台下结束"
KEY_PTZ_LEFT_STOP | 34 | "云台左结束"
KEY_PTZ_RIGHT_STOP | 35 | "云台右结束"
KEY_PTZ_AP1_STOP | 36 | "光圈+结束"
KEY_PTZ_AP2_STOP | 37 | "光圈-结束"
KEY_PTZ_FOCUS1_STOP | 38 | "聚焦+结束"
KEY_PTZ_FOCUS2_STOP | 39 | "聚焦-结束"
KEY_PTZ_B1_START | 40 | "变倍+开始"
KEY_PTZ_B1_STOP | 41 | "变倍+结束"
KEY_PTZ_B2_START | 42 | "变倍-开始"
KEY_PTZ_B2_STOP | 43 | "变倍-结束"
KEY_CODE_11 | 44 | 按钮11
KEY_CODE_12 | 45 | 按钮12
KEY_CODE_13 | 46 | 按钮13
KEY_CODE_14 | 47 | 按钮14
KEY_CODE_15 | 48 | 按钮15
KEY_CODE_16 | 49 | 按钮16

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_LockPanel

禁用设备本地面板控制。

BOOL NET_DVR_LockPanel(
  LONG    lUserID
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UnLockPanel NET_DVR_Login NET_DVR_Login_V30


NET_DVR_UnLockPanel

恢复设备本地面板控制。

BOOL NET_DVR_UnLockPanel(
  LONG    lUserID
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_LockPanel NET_DVR_Login NET_DVR_Login_V30


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_REMOTECONTROL_ALARM | 3205 | 远程控制遥控器布防 | NET_DVR_REMOTECONTROL_ALARM_PARAM
NET_DVR_REMOTECONTROL_DISALARM | 3206 | 远程控制遥控器撤防 | NET_DVR_REMOTECONTROL_ALARM_PARAM
NET_DVR_REMOTECONTROL_STUDY | 3207 | 远程控制遥控器学习 | NET_DVR_REMOTECONTROL_STUDY_PARAM
NET_DVR_WIRELESS_ALARM_STUDY | 3208 | 远程控制无线报警学习 | NET_DVR_WIRELESS_ALARM_STUDY_PARAM

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer | cbStateCallback
NET_DVR_NTP_SERVER_TEST | 3387 | NTP服务器测试 | NET_DVR_SERVER_TEST_PARA | NULL
NET_DVR_NAS_SERVER_TEST | 3388 | NAS服务器测试
NET_DVR_EMAIL_SERVER_TEST | 3389 | Email服务器测试
NET_DVR_FTP_SERVER_TEST | 3390 | FTP服务器测试
NET_DVR_IP_TEST | 3391 | IP测试
NET_DVR_CLOUDSTORAGE_SERVER_TEST | 3421 | 云存储服务器测试
NET_DVR_PHONE_NUM_TEST | 3422 | 电话号码测试(短信测试)
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关，详见列表
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 数据缓冲区
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetRemoteConfigState、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_NETAPP_ABILITY)获取NTP、NAS、Email、FTP、IP测试能力。
  • 测试状态通过NET_DVR_GetRemoteConfigState获取。

    • See Also

    NET_DVR_GetRemoteConfigState NET_DVR_StopRemoteConfig


NET_DVR_GetRemoteConfigState

获取长连接配置的状态。

BOOL NET_DVR_GetRemoteConfigState(
  LONG    lHandle,
  void    *pState
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值
pState
[out] 返回的状态值，具体见下表
pState状态值 | 含义
29 | 设备操作失败
55 | IP地址不匹配
165 | 设备连接测试服务器失败
166 | NAS服务器挂载目录失败，目录无效
167 | NAS服务器挂载目录失败，没有权限或用户名密码错误
168 | 服务器使用域名，但是没有配置DNS，可能造成域名无效
169 | 没有配置网关，可能造成发送邮件失败
170 | 测试服务器的登陆用户名或密码错误
171 | 设备和smtp服务器交互异常
172 | 该用户在服务器上创建目录失败
173 | 该用户没有写入权限
174 | IP冲突
175 | 存储池空间已满
176 | 云服务器存储池无效，没有配置存储池或者存储池ID错误
1461 | 端口错误

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_StartEmailTest

测试按已配置的EMAIL参数能否收发成功。

LONG NET_DVR_StartEmailTest(
  LONG   lUserID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值

Return Values

-1表示失败，其他值作为NET_DVR_GetEmailTestProcess 、NET_DVR_StopEmailTest等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在调用此接口测试前，需要配置相关的EMAIL参数，详见NET_DVR_GetDVRConfig、NET_DVR_SetDVRConfig的网络应用参数（EMAIL）配置。

See Also

NET_DVR_Login NET_DVR_Login_V30
NET_DVR_GetEmailTestProgress NET_DVR_StopEmailTest
NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GetEmailTestProgress

获取邮件测试的进度。

BOOL NET_DVR_GetEmailTestProgress(
  LONG    lEmailTestHandle,
  DWORD   *pState
);

Parameters

lEmailTestHandle
[in] NET_DVR_StartEmailTest的返回值
pState
[out] 邮件测试的进度，进度值的取值范围（0,100），其他值定义如下：
宏定义 | 宏定义值 | 含义
PROCESSING | 0 | 正在处理
PROCESS_SUCCESS | 100 | 过程完成
PROCESS_EXCEPTION | 400 | 过程异常
PROCESS_FAILED | 500 | 过程失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartEmailTest


NET_DVR_StopEmailTest

停止邮件测试。

BOOL NET_DVR_StopEmailTest(
  LONG   lEmailTestHandle
);

Parameters

lEmailTestHandle
[in] NET_DVR_StartEmailTest的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartEmailTest


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_CERTIFICATE | 1 | 上传证书（WIFI等） | NET_DVR_CERT_PARAM | NULL
UPLOAD_RECORD_FILE | 4 | 上传录像文件(云存储模式) | NET_DVR_UPLOAD_RECORD_INFO | NET_DVR_UPLOAD_FILE_RET
UPLOAD_VIOLATION_FILE | 7 | 上传违法字典文件 | NULL | NULL
UPLOAD_VEHICLE_BLOCKALLOWLIST_FILE | 13 | 上传授权和非授权名单配置文件功能 | NULL | NULL
UPLOAD_PICTURE_TO_CLOUD | 15 | 开始上传图片到云存储池 | NET_DVR_START_FILE_TO_CLOUD_COND | NULL
UPLOAD_RATIOSTITCHING_FILE | 62 | 导入倍率拼接文件 | NET_DVR_RATIOSTITCHING_PARAM | NULL

Return Values

-1表示失败，其他值作为NET_DVR_UploadClose和NET_DVR_GetUploadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 对于上传文件类型UPLOAD_RECORD_FILE，上传录像文件后设备会返回录像文件URL，然后调用NET_DVR_PlayBackByName（接口中sPlayBackFileName直接传返回的URL地址）可实现录像文件回放。
  • 设备是否支持导入授权和非授权名单配置文件能力，对应抓拍相关能力集(TrafficCap)中节点<isSupportPlateList>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_TRAFFIC_CAP)。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose

Reference Interface

该接口扩展源于
NET_DVR_UploadFile


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值
pProgress
[out] 返回的进度值

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadFile


NET_DVR_UploadClose

停止文件上传。

BOOL NET_DVR_UploadClose(
  LONG    lUploadHandle
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadFile


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_CERT | 0 | 下载证书 | NET_DVR_CERT_PARAM
NET_SDK_DOWNLOAD_IPC_CFG_FILE | 1 | 下载IPC配置文件 | NULL
NET_SDK_DOWNLOAD_VEHICLE_BLOCKALLOWLIST_FILE | 8 | 下载授权和非授权名单配置文件 | NULL
NET_SDK_DOWNLOAD_GUID_FILE | 9 | 下载GUID文件 | NET_DVR_GUID_FILE_EXPORT
NET_SDK_DOWNLOAD_RATIOSTITCHING_FILE | 47 | 导出倍率拼接文件 | NET_DVR_RATIOSTITCHING_PARAM
NET_SDK_DOWNLOAD_LENS_PARAM_FILE | 48 | 导出镜头参数文件 | NULL
NET_SDK_DOWNLOAD_SELECT_DEVTYPE_CALIBFILE | 49 | 导出指定型号标定文件(.cal格式文件) | NET_DVR_DEVTYPE_CALIBFILE_PARAM
NET_SDK_DOWNLOAD_VIDEOWALL_MATERIAL_FILE | 50 | 导出电视墙窗口素材文件 | NET_DVR_VIDEOWALL_MATERIAL_COND

Remarks

  • 设备是否支持导出授权和非授权名单配置文件能力，对应抓拍相关能力集(TrafficCap)中节点<isSupportPlateList>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_TRAFFIC_CAP)。

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_GetDownloadState

获取文件下载的进度和状态。

LONG NET_DVR_GetDownloadState(
  LONG       lDownloadHandle,
  LPDWORD    pProgress
);

Parameters

lDownloadHandle
[in] 文件下载的句柄，NET_DVR_StartDownload的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为下载的状态值：1- 下载成功；2- 正在下载；3- 下载失败；4- 网络断开，状态未知；6- 导出GUID文件失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口返回6时表示导出GUID文件失败，此时可以调用NET_DVR_GetDownloadStateInfo获取具体的状态信息。

See Also

NET_DVR_StartDownload


NET_DVR_GetDownloadStateInfo

获取文件下载状态信息。

int NET_DVR_GetDownloadStateInfo(
  LONG    lDownloadHandle,
  void    *pStatusInfo
);

Parameters

lDownloadHandle
[in] 文件下载的句柄，NET_DVR_StartDownload的返回值
pStatusInfo
[out] 状态信息，NET_DVR_GetDownloadState返回状态值不同，该参数对应不同的结构体内容，详见下表：
状态值 | 含义 | pStatusInfo对应结构
6 | 导出GUID文件失败 | NET_DVR_GUID_FILE_STATUS_INFO

Return Values

0表示接口返回成功，-1表示接口返回失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDownload NET_DVR_GetDownloadState


NET_DVR_GetSmsContent

获取短信内容。

LONG NET_DVR_GetSmsContent(
  LONG                   lUserID,
  DWORD                  dwSmsIndex,
  LPNET_DVR_SMSCONTENT   lpSmsContent
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwSmsIndex
[in] 短信序号
lpSmsContent
[out] 短信内容

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

每次只读一条短信。

See Also

NET_DVR_Login_V40


NET_DVR_GetSmsListInfo

获取短信列表信息。

LONG NET_DVR_GetSmsListInfo(
  LONG                     lUserID,
  LPNET_DVR_TIME_EX        lpStartTime,
  LPNET_DVR_TIME_EX        lpStopTime,
  LPNET_DVR_SMSLISTINFO    lpSmsListInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStartTime
[in] 开始时间
lpStopTime
[in] 结束时间
lpSmsListInfo
[out] 短信列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

由于短信内容字节较多，因此将读取短信内容的命令从获取短信列表命令中独立出来，可以通过调用接口NET_DVR_GetSmsContent来实现每次读一条短信

See Also

NET_DVR_Login_V40 NET_DVR_GetSmsContent


NET_DVR_SendSms

发送短信。

LONG NET_DVR_SendSms(
  LONG                   lUserID,
  LPNET_DVR_SMSCONTENT   lpSmsContent,
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSmsContent
[in] 短信内容

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
VCA_DEV_ABILITY | 0x100 | 智能设备的能力
VCA_CHAN_ABILITY | 0x110 | 智能通道的能力
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。前6种能力描述都是以XML格式给出，详见各产品的能力描述解析方法，这里不进行详细说明。下表列出了其余能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ABILITY_INFO | 设备通用能力类型，具体能力根据发送的能力节点来区分 | 获取智能设备能力集 | 智能设备能力XML描述(VcaDevAbility)
 |  | 获取智能通道控制能力集 | 智能通道控制能力XML描述(VcaCtrlAbility)
 |  | 获取智能通道分析能力集 | 智能通道分析能力XML描述(VcaChanAbility)
 |  | 获取双目能力集 | 双目能力XML描述(BinocularAbility)
VCA_DEV_ABILITY | 获取智能设备的能力 | 无 | NET_VCA_DEV_ABILITY
VCA_CHAN_ABILITY | 获取智能通道能力 | NET_VCA_CHAN_IN_PARAM byVCAType值为VCA_BEHAVIOR_BASE, VCA_BEHAVIOR_ADVANCE, VCA_BEHAVIOR_FULL等 | NET_VCA_BEHAVIOR_ABILITY
VCA_CHAN_ABILITY | 获取智能通道能力 | NET_VCA_CHAN_IN_PARAM byVCAType值为VCA_ITS, VCA_TFS或VCA_TPS | NET_DVR_ITS_ABILITY

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_VCA_CTRLCFG | 获取智能控制参数 | 无效 | NET_VCA_CTRLCFG | 165
NET_DVR_GET_CALIBRATION | 获取标定信息 | 通道号 | NET_DVR_CALIBRATION_CFG | 183
NET_DVR_GET_PU_STREAMCFG | 获取iVMS前端取流参数 | 通道号 | NET_DVR_PU_STREAM_CFG | 187
NET_DVR_GET_TRIAL_VERSION_CFG | 获取试用版信息 | 无效 | NET_DVR_TRIAL_VERSION_CFG | 5021
NET_DVR_GET_RESET_COUNTER | 获取统计数据清零参数（客流量、交通统计） | 通道号 | NET_DVR_RESET_COUNTER_CFG | 5025

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_VCA_CTRLCFG | 设置智能控制参数 | 无效 | NET_VCA_CTRLCFG | 164
NET_DVR_SET_CALIBRATION | 设置标定信息 | 通道号 | NET_DVR_CALIBRATION_CFG | 182
NET_DVR_SET_PU_STREAMCFG | 设置iVMS前端取流参数 | 通道号 | NET_DVR_PU_STREAM_CFG | 186
NET_DVR_SET_RESET_COUNTER | 设置统计数据清零参数（客流量、交通统计） | 通道号 | NET_DVR_RESET_COUNTER_CFG | 5026

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetVCADrawMode

获取智能信息叠加配置。

BOOL NET_DVR_GetVCADrawMode(
  LONG                    lUserID,
  LONG                    lChannel,
  LPNET_VCA_DRAW_MODE     lpDrawMode
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lpDrawMode
[out] 叠加模式参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetVCADrawMode


NET_DVR_SetVCADrawMode

设置智能信息叠加配置。

BOOL NET_DVR_SetVCADrawMode(
  LONG                    lUserID,
  LONG                    lChannel,
  LPNET_VCA_DRAW_MODE     lpDrawMode
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lpDrawMode
[in] 叠加模式参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetVCADrawMode


NET_VCA_RestartLib

重启智能库。

BOOL NET_VCA_RestartLib(
  LONG   lUserID,
  LONG   lChannel
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

此接口只针对智能设备。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_VerifyCalibration

标定校验。

BOOL NET_DVR_VerifyCalibration(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize,
  LPVOID   lpOuterBuffer,
  DWORD    dwOuterBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 命令类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_PDC_VERIFY_CALIBRATION | 0x001 | 客流量统计标定校验
NET_DVR_VERIFY_BEHAVIOR_CALIBRATION | 0x002 | 异常行为识别标定校验
NET_DVR_VERIFY_ITS_CALIBRATION | 0x003 | 智能交通标定校验
NET_DVR_VERIFY_BV_CALIBRATION | 0x005 | 双目标定校验
lChannel
[in] 通道号
lpInBuffer
[in] 输入缓冲区指针
dwInBufferSize
[in] 输入缓冲区的长度
lpOuterBuffer
[out] 输出缓冲区指针
dwOuterBufferSize
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义按照不同的命令有所不同。同样地，参数pOutBuf的输出也根据命令的不同而有所区别。具体的命令对应的输入输出参数的结构如下表所示。

命令类型 | 命令类型说明 | lpInBuffer | lpOuterBuffer
NET_DVR_PDC_VERIFY_CALIBRATION | 获取客流量标定校验参数 | NET_VCA_POINT | NET_VCA_RECT
NET_DVR_VERIFY_BEHAVIOR_CALIBRATION | 获取异常行为识别标定校验参数 | NET_DVR_LINE_SEGMENT | 4个字节浮点型长度或者高度
NET_DVR_VERIFY_ITS_CALIBRATION | 获取智能交通标定校验参数 | NET_DVR_LINE_SEGMENT | 4个字节浮点型长度或者高度
NET_DVR_VERIFY_BV_CALIBRATION | 获取双目标定校验参数 | NET_VCA_POINT | 4个字节浮点型长度或者高度

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetBehaviorParamKey

获取内部关键字参数。

BOOL NET_DVR_GetBehaviorParamKey(
  LONG    lUserID,
  LONG    lChannel,
  DWORD   dwParameterKey,
  int     *pValue
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwParameterKey
[in] 参数关键字，具体定义见下表：
enum tagPDC_PARAM_KEY{
  HUMAN_GENERATE_RATE = 50,
  DETECT_SENSITIVE    = 51
}PDC_PARAM_KEY
HUMAN_GENERATE_RATE
目标生成速度
DETECT_SENSITIVE
检测灵敏度
pValue
[out] 参数值

Remarks

智能库关键参数索引枚举(由算法库自行定义，SDK负责透传)：

typedef enum IVMS_IBV_PARAM_KEY

{

IBV_KEY_PEOPLE_HEIGHT_MIN = 0x00001, // 人员最低高度阈值，作用于人数及人间距报警事件,[0, 250]cm,默认80cm

IBV_KEY_ONE_TIME_ALERT_STATE = 0x00002, // 单次报警状态，1:开启；0:关闭，默认1

IBV_KEY_ONE_TIME_ALERT_INTERVAL= 0x00003// 单次报警间隔时间[1, 7200]s,默认300s

}IVMS_IBV_PARAM_KEY;

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetBehaviorParamKey NET_DVR_Login NET_DVR_Login_V30


NET_DVR_SetBehaviorParamKey

设置内部关键字参数。

BOOL NET_DVR_SetBehaviorParamKey(
  LONG    lUserID,
  LONG    lChannel,
  DWORD   dwParameterKey,
  int     nValue
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwParameterKey
[in] 参数关键字，具体定义见下表：
enum tagPDC_PARAM_KEY{
  HUMAN_GENERATE_RATE = 50,
  DETECT_SENSITIVE    = 51
}PDC_PARAM_KEY
HUMAN_GENERATE_RATE
目标生成速度
DETECT_SENSITIVE
检测灵敏度
nValue
[in] 参数值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetBehaviorParamKey NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetVCAVersion

获取智能库版本号。

BOOL NET_DVR_GetVCAVersion(
  LONG                    lUserID,
  LONG                    lChannel,
  LPNET_DVR_VCA_VERSION   lpVersion
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lpVersion
[out] 智能库版本信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_VCA_MASK_REGION | 获取屏蔽区域参数 | 通道号 | NET_VCA_MASK_REGION_LIST | 167
NET_DVR_GET_VCA_ENTER_REGION | 获取进入区域参数 | 通道号 | NET_VCA_ENTER_REGION | 169
NET_DVR_GET_AUX_AREA | 获取辅助区域 | 通道号 | NET_DVR_AUXAREA_LIST | 5029
NET_DVR_GET_SWITCH_LAMP_CFG | 获取开关灯检测规则配置参数 | 通道号 | NET_DVR_SWITCH_LAMP_CFG | 412

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_VCA_MASK_REGION | 设置屏蔽区域参数 | 通道号 | NET_VCA_MASK_REGION_LIST | 166
NET_DVR_SET_VCA_ENTER_REGION | 设置进入区域参数 | 通道号 | NET_VCA_ENTER_REGION | 168
NET_DVR_SET_AUX_AREA | 设置辅助区域 | 通道号 | NET_DVR_AUXAREA_LIST | 5030
NET_DVR_SET_VCA_RULE_COLOR_CFG | 设置智能规则关联的颜色参数 | 通道号 | NET_DVR_VCA_RULE_COLOR_CFG | 411
NET_DVR_SET_SWITCH_LAMP_CFG | 设置开关灯检测规则配置参数 | 通道号 | NET_DVR_SWITCH_LAMP_CFG | 413

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_RULECFG_V42 | 获取异常行为识别参数(支持16条规则扩展) | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_RULECFG_V42 | 5049
NET_DVR_GET_VCA_CTRLINFO_CFG | 获取智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5022
NET_DVR_GET_OBJECT_COLOR | 获取物体颜色属性，dwCount为1 | dwCount个NET_DVR_OBJECT_COLOR_COND | dwCount个NET_DVR_OBJECT_COLOR | 5027
NET_DVR_GET_CHAN_WORKMODE | 获取通道工作模式 | dwCount个(DWROD)通道号 | dwCount个NET_DVR_CHANNEL_WORKMODE | 5031
NET_DVR_GET_SLAVE_CHANNEL | 获取从通道参数 | dwCount个(DWROD)通道号 | dwCount个NET_DVR_SLAVE_CHANNEL_CFG | 5033

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_RULECFG_V42 | 设置异常行为识别参数(支持16条规则扩展) | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_RULECFG_V42 | 5050
NET_DVR_SET_VCA_CTRLINFO_CFG | 设置智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5023
NET_DVR_SET_OBJECT_COLOR | 设置物体颜色属性，dwCount为1 | dwCount个NET_DVR_OBJECT_COLOR_COND | dwCount个NET_DVR_OBJECT_COLOR | 5028
NET_DVR_SET_CHAN_WORKMODE | 设置通道工作模式 | dwCount个(DWROD)通道号 | dwCount个NET_DVR_CHANNEL_WORKMODE | 5032
NET_DVR_SET_SLAVE_CHANNEL | 设置从通道参数 | dwCount个(DWROD)通道号 | dwCount个NET_DVR_SLAVE_CHANNEL_CFG | 5034

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_VCA_RULE_COLOR_CFG | 410 | 智能规则关联的颜色参数查询 | NET_DVR_VCA_RULE_COLOR_COND | 返回状态、信息数据
NET_DVR_GET_GOP_INFO | 6305 | 获取GOP信息 | NET_DVR_GOP_INFO | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据， 获取智能规则关联颜色信息时对应结构体：NET_DVR_VCA_RULE_COLOR_CFG 获取GOP信息时对应结构体：NET_DVR_GOP_INFO_RET
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示获取1个dwCommand指定的配置信息，2表示获取2个配置信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PDC_RULECFG_V42 | 获取客流量统计规则 | dwCount个NET_DVR_PDC_RULE_COND | dwCount个NET_DVR_PDC_RULE_CFG_V42 | 3405

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL；lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_PDC_RULECFG_V42 | 设置客流量统计规则 | dwCount个NET_DVR_PDC_RULE_COND | dwCount个NET_DVR_PDC_RULE_CFG_V42 | 3406

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_PDC_RESULT | 5089 | 客流量数据查询 | NET_DVR_PDC_QUERY_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，就可以调用NET_DVR_GetNextRemoteConfig接口来逐个获取信息。

    • See Also

    NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_PDC_RESULT | 5089 | 客流量数据查询 | NET_DVR_PDC_RESULT

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示获取1个dwCommand指定的配置信息，2表示获取2个配置信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_STREAM_SRC_INFO | 获取流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO | 6017
NET_DVR_GET_MONITOR_VQDCFG | 获取服务器的监控点信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_MONITOR_VQDCFG | 5106
NET_DVR_GET_RECORD_INFO | 获取资源图片 | dwCount个NET_DVR_DOWN_LOAD_REQUEST | dwCount个NET_DVR_VQD_RESULT_INFO | 5105
NET_DVR_GET_VQD_EVENT_RULE | 获取VQD事件规则 | dwCount个NET_DVR_VQD_EVENT_COND | dwCount个NET_DVR_VQD_EVENT_RULE | 5035
NET_DVR_GET_VQD_LOOP_DIAGNOSE_CFG | 获取VQD循环诊断配置参数 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_VQD_LOOP_DIAGNOSE_CFG | 6406

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_STREAM_SRC_INFO | 设置流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO | 6018
NET_DVR_SET_MONITOR_VQDCFG | 设置服务器的监控点信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_MONITOR_VQDCFG | 5107
NET_DVR_SET_MONITOR_INFO | 设置计划内的监控点信息 | dwCount个NET_DVR_PLAN_VQD_CFG | dwCount个NET_DVR_STREAM_INFO | 5102
NET_DVR_DEL_MONITOR_PLAN_VQD | 删除计划 | dwCount个NET_DVR_PLAN_VQD_CFG | NULL | 5103
NET_DVR_SET_MONITOR_PLAN_VQDCFG | 设置管理计划(单独的计划) | NULL | dwCount个NET_DVR_PLAN_VQD_CFG | 5108
NET_DVR_SET_VQD_EVENT_RULE | 设置VQD事件规则 | dwCount个NET_DVR_VQD_EVENT_COND | dwCount个NET_DVR_VQD_EVENT_RULE | 5036
NET_DVR_SET_VQD_LOOP_DIAGNOSE_CFG | 设置VQD循环诊断配置参数 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_VQD_LOOP_DIAGNOSE_CFG | 6407

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_BASELINE_SCENE | 获取基准场景参数 | 通道号 | NET_DVR_BASELINE_SCENE | 5037

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_BASELINE_SCENE | 设置基准场景参数 | 通道号 | NET_DVR_BASELINE_SCENE | 5038

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_STREAM_INFO | 6023 | 获取已添加的流ID信息 | NULL | 返回状态、进度、查找到的流ID信息
NET_DVR_GET_MONITOR_PLAN_VQD | 5100 | 获取诊断服务器计划 | NULL | NULL
NET_DVR_GET_MONITORID_VQD | 5101 | 获取对应计划内的监控点信息 | NET_DVR_PLAN_VQD_CFG | NULL
NET_DVR_GET_VQD_DIAGNOSE_INFO | 6408 | 手动获取VQD诊断信息 | 通道号(DWORD类型)数组 | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度值(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据，获取流ID时对应结构体：NET_DVR_STREAM_INFO
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：

dwCommand宏定义 | 后续接口调用
NET_DVR_GET_STREAM_INFO | NULL
NET_DVR_GET_MONITOR_PLAN_VQD | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_MONITORID_VQD | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_VQD_DIAGNOSE_INFO | NET_DVR_GetNextRemoteConfig
  • 通过命令NET_DVR_GET_VQD_DIAGNOSE_INFO可以手动获取诊断信息，手动诊断使用了循环诊断配置参数（NET_DVR_VQD_LOOP_DIAGNOSE_CFG）中的阈值（byThresholdValue），如果循环诊断没有配置阈值，则手动诊断时使用默认值（通过VQD能力集可获取）。手动诊断是强制对指定通道的视频流进行诊断，诊断类型是所有的类型。

    • See Also

    NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的文件目录信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_MONITOR_PLAN_VQD | 5100 | 获取诊断服务器计划 | NET_DVR_PLAN_VQD_CFG
NET_DVR_GET_MONITORID_VQD | 5101 | 获取对应计划内的监控点信息 | NET_DVR_STREAM_INFO
NET_DVR_GET_VQD_DIAGNOSE_INFO | 6408 | 手动获取VQD诊断信息 | NET_DVR_VQD_DIAGNOSE_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CONTROL_BASELINE_SCENE | 5039 | 基准场景操作 | NET_DVR_CONTROL_BASELINE_SCENE_PARAM

See Also

NET_DVR_Login_V40


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC | 2 | 下载基准场景图片 | (DWORD)通道号
NET_SDK_DOWNLOAD_VQD_ALARM_PIC | 3 | 下载VQD报警图片 | NET_DVR_VQD_EVENT_COND

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_GetDeviceStatus

获取设备运行状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MONITOR_VQD_STATUS | 获取诊断服务器的状态 | NULL | NET_DVR_QUERY_STATUS | 5104

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_TRACK_CFG | 获取双摄像机的配置参数 | 有效 | NET_DVR_TRACK_CFG | 161

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_TRACK_CFG | 设置双摄像机的配置参数 | 通道号 | NET_DVR_TRACK_CFG | 160

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetTrackMode

获取双摄像机跟踪模式参数。

BOOL NET_DVR_GetTrackMode(
  LONG                   lUserID,
  LONG                   lChannel,
  LPNET_DVR_TRACK_MODE   lpTrackMode
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lpTrackMode
[out] 获取的双摄像机跟踪模式参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetTrackMode


NET_DVR_SetTrackMode

设置双摄像机跟踪模式。

BOOL NET_DVR_SetTrackMode(
  LONG                   lUserID,
  LONG                   lChannel,
  LPNET_DVR_TRACK_MODE   lpTrackMode
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lpTrackMode
[in] 双摄像机跟踪模式参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetTrackMode


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_TRACK_CFG | 获取智能球机的配置参数 | 通道号 | NET_DVR_TRACK_CFG | 161
NET_DVR_GET_POSITION_TRACK | 获取场景跟踪的配置参数 | 通道号 | NET_DVR_POSITION_TRACK_CFG | 181
NET_DVR_GET_TRACK_PARAMCFG | 获取本地菜单规则配置参数 | 通道号 | NET_DVR_TRACK_PARAMCFG | 197
NET_DVR_GET_DOME_MOVEMENT_PARAM | 获取球机机芯参数 | 无效 | NET_DVR_DOME_MOVEMENT_PARAM | 198

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_TRACK_CFG | 设置智能球机的配置参数 | 通道号 | NET_DVR_TRACK_CFG | 160
NET_DVR_SET_POSITION_TRACK | 设置场景跟踪的配置参数 | 通道号 | NET_DVR_POSITION_TRACK_CFG | 180
NET_DVR_SET_TRACK_PARAMCFG | 设置本地菜单规则配置参数 | 通道号 | NET_DVR_TRACK_PARAMCFG | 196

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetPositionRule_V41

获取场景位置规则信息参数。

BOOL NET_DVR_GetPositionRule_V41(
  LONG                              lUserID,
  LONG                              lChannel,
  LONG                              lPositionIndex,
  LPNET_DVR_POSITION_RULE_CFG_V41   lpPositionRule
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionIndex
[in] 场景索引
lpPositionRule
[out] 场景位置行为规则

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40 NET_DVR_SetPositionRule_V41


NET_DVR_SetPositionRule_V41

设置场景位置规则信息参数。

BOOL NET_DVR_SetPositionRule_V41(
  LONG                              lUserID,
  LONG                              lChannel,
  LONG                              lPositionIndex,
  LPNET_DVR_POSITION_RULE_CFG_V41   lpPositionRule
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionIndex
[in] 场景索引
lpPositionRule
[in] 场景位置行为规则

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40 NET_DVR_GetPositionRule_V41


NET_DVR_GetPositionLimitAngle

获取场景限位操作的参数。

BOOL NET_DVR_GetPositionLimitAngle(
  LONG                    lUserID,
  LONG                    lChannel,
  LONG                    lPositionIndex,
  LPNET_DVR_LIMIT_ANGLE   lpLimitAngle
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionIndex
[in] 场景索引（目前设备支持10个场景）
lpLimitAngle
[out] 限位参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetPositionLimitAngle


NET_DVR_SetPositionLimitAngle

设置场景限位操作的参数。

BOOL NET_DVR_SetPositionLimitAngle(
  LONG                    lUserID,
  LONG                    lChannel,
  LONG                    lPositionIndex,
  LPNET_DVR_LIMIT_ANGLE   lpLimitAngle
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionIndex
[in] 场景索引（目前设备支持10个场景）
lpLimitAngle
[in] 限位参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetPositionLimitAngle


NET_DVR_GetPtzPosition

获取本地场景PTZ位置参数。

BOOL NET_DVR_GetPtzPosition(
  LONG                     lUserID,
  LONG                     lChannel,
  LONG                     lPositionID,
  LPNET_DVR_PTZ_POSITION   lpPtzPosition
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionID
[in] 场景位置ID
lpPtzPosition
[out] PTZ位置信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetPtzPosition


NET_DVR_SetPtzPosition

设置本地场景PTZ位置参数。

BOOL NET_DVR_SetPtzPosition(
  LONG                     lUserID,
  LONG                     lChannel,
  LONG                     lPositionID,
  LPNET_DVR_PTZ_POSITION   lpPtzPosition
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionID
[in] 场景位置ID
lpPtzPosition
[in] PTZ位置信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetPtzPosition


NET_DVR_GetPatrolTrack

获取场景巡航路径信息参数。

BOOL NET_DVR_GetPatrolTrack(
  LONG                        lUserID,
  LONG                        lChannel,
  LONG                        lPatrolIndex,
  LPNET_DVR_PATROL_TRACKCFG   lpPatrolTrack
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPatrolIndex
[in] 巡航索引
lpPatrolTrack
[out] 场景巡航跟踪信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetPatrolTrack


NET_DVR_SetPatrolTrack

设置场景巡航路径信息参数。

BOOL NET_DVR_SetPatrolTrack(
  LONG                        lUserID,
  LONG                        lChannel,
  LONG                        lPatrolIndex,
  LPNET_DVR_PATROL_TRACKCFG   lpPatrolTrack
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPatrolIndex
[in] 巡航索引
lpPatrolTrack
[in] 场景巡航跟踪信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetPatrolTrack


NET_DVR_GetPatrolLimitAngle

获取场景巡航跟踪限位参数。

BOOL NET_DVR_GetPatrolLimitAngle(
  LONG                    lUserID,
  LONG                    lChannel,
  LONG                    lPatrolIndex,
  LPNET_DVR_LIMIT_ANGLE   lpLimitAngle
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPatrolIndex
[in] 巡航索引
lpLimitAngle
[out] 限位信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetPatrolLimitAngle


NET_DVR_SetPatrolLimitAngle

设置场景巡航跟踪限位参数。

BOOL NET_DVR_SetPatrolLimitAngle(
  LONG                    lUserID,
  LONG                    lChannel,
  LONG                    lPatrolIndex,
  LPNET_DVR_LIMIT_ANGLE   lpLimitAngle
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPatrolIndex
[in] 巡航索引
lpLimitAngle
[in] 限位信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetPatrolLimitAngle


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_BV_CORRECT_PARAM | 获取相机校正参数 | 通道号 | NET_DVR_BV_CORRECT_PARAM | 3240
NET_DVR_GET_OUTPUT_VIDEO_TYPE | 获取输出视频类型 | 通道号 | NET_DVR_OUTPUT_VIDEO_TYPE | 3242
NET_DVR_GET_BV_CALIB_TYPE | 获取双目标定类型 | 通道号 | BV_CALIBRATION_TYPE_ENUM | 5044
NET_DVR_GET_BV_SAMPLE_CALIB_CFG | 获取双目标定参数 | 通道号 | NET_DVR_BV_SAMPLE_CALIB_CFG | 5046

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_BV_CORRECT_PARAM | 设置相机校正参数 | 通道号 | NET_DVR_BV_CORRECT_PARAM | 3241
NET_DVR_SET_OUTPUT_VIDEO_TYPE | 设置输出视频类型 | 通道号 | NET_DVR_OUTPUT_VIDEO_TYPE | 3243

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CONTROL_BV_SAMPLE_CALIB | 5045 | 双目样本标定 | NET_DVR_BV_SAMPLE_CALIBRATION

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | 通道号 | lpOutBuffer对应结构体 | 宏定义值
NET_VCA_GET_FACEDETECT_RULECFG_V41 | 获取ATM人脸检测规则 | 通道号 | NET_DVR_FACEDETECT_RULECFG_V41 | 5017
  • 如果获取设备上传的人脸检测结果信息，需要设置报警回调（NET_DVR_SetDVRMessageCallBack_V31）和报警布防（NET_DVR_SetupAlarmChan_V41），在设置的回调中相应的消息类型为COMM_ALARM_FACE。

    • See Also

    NET_DVR_SetDVRConfig


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_VCA_SET_FACEDETECT_RULECFG_V41 | 设置ATM人脸检测规则 | 通道号 | NET_DVR_FACEDETECT_RULECFG_V41 | 5018
  • 如果获取设备上传的人脸检测结果信息，需要设置报警回调（NET_DVR_SetDVRMessageCallBack_V31）和报警布防（NET_DVR_SetupAlarmChan_V41），在设置的回调中相应的消息类型为COMM_ALARM_FACE。

    • See Also

    NET_DVR_GetDVRConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_FACESNAPCFG | 获取人脸抓拍参数 | 通道号 | NET_VCA_FACESNAPCFG | 5001
NET_DVR_GET_DEVACCESS_CFG | 获取接入设备参数 | 通道号 | NET_DVR_DEV_ACCESS_CFG | 5005
NET_DVR_GET_SAVE_PATH_CFG | 获取存储信息参数 | 无效 | NET_VCA_SAVE_PATH_CFG | 5007

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_FACESNAPCFG | 设置人脸抓拍参数 | 通道号 | NET_VCA_FACESNAPCFG | 5002
NET_DVR_SET_DEVACCESS_CFG | 设置接入设备参数 | 通道号 | NET_DVR_DEV_ACCESS_CFG | 5006
NET_DVR_SET_SAVE_PATH_CFG | 设置存储信息参数 | 无效 | NET_VCA_SAVE_PATH_CFG | 5008

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | sFileName | lpInBuffer对应结构体 | lpOutBuffer对应结构体
IMPORT_DATA_TO_FACELIB | 39 | 导入人脸数据(人脸图片+图片附加信息)到人脸库 | NULL | NET_DVR_FACELIB_COND | NULL
  • 上传接口调用流程：
    1) 调用NET_DVR_UploadFile_V40开始上传数据。
    2) 调用NET_DVR_UploadSend发送一张人脸图片数据和附加信息。
    3) 上传过程中循环调用NET_DVR_GetUploadState获取上传状态和进度。
    4) 上传成功之后调用NET_DVR_GetUploadResult获取结果信息（图片ID等）。
    5) 重复步骤2、3、4，顺序上传其他人脸数据。
    6) 调用NET_DVR_UploadClose停止上传，释放资源。
  • 设备是否支持导入人脸图片数据到人脸库能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<FaceAppendData>。

See Also

NET_DVR_GetUploadState NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_UploadSend

发送数据。

LONG NET_DVR_UploadSend(
  LONG                       lUploadHandle,
  LPNET_DVR_SEND_PARAM_IN    pstruSendParamIN,
  void                       *lpOutBuffer
);

lUploadHandle

lUploadHandle
[in] 文件上传句柄，NET_DVR_UploadFile_V40的返回值
pstruSendParamIN
[in] 上传的数据内容
lpOutBuffer
[out] 输出参数，保留，置为NULL

Return Values

-1表示失败，大于等于0表示本次发送成功的字节数，未发送成功的剩余字节数可以再次调用该接口进行发送。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口将人脸数据(人脸图片+图片附件信息)发送到设备的人脸库。图片格式要求：JPG或者JPEG，像素在40x40以上，大小在300KB以下。

See Also

NET_DVR_UploadFile_V40


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
35 | 图片URL未开始下载 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
36 | 自定义人员ID重复 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
37 | 自定义人员ID有误(注:该ID存在附加信息FaceAppendData中customHumanID) | 关闭连接，需要调用NET_DVR_UploadClose释放资源
38 | 建模失败,设备内部错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
39 | 建模失败，人脸建模错误 | 不会断开连接，可以继续重新上传正确的文件
40 | 建模失败，人脸质量评分错误 | 不会断开连接，可以继续重新上传正确的文件
41 | 建模失败，特征点提取错误 | 不会断开连接，可以继续重新上传正确的文件
42 | 建模失败，属性提取错误 | 不会断开连接，可以继续重新上传正确的文件
43 | 图片数据错误 | 不会断开连接，可以继续重新上传正确的文件
44 | 图片附加信息错误 | 不会断开连接，可以继续重新上传正确的文件

Remarks

  • 上传完成之后需要调用NET_DVR_GetUploadResult获取当前上传的图片ID（由设备生成并返回），然后再上传下一张图片。
  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_GetUploadResult

获取当前上传的结果信息。

BOOL NET_DVR_GetUploadResult(
  LONG      lUploadHandle,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
lpOutBuffer
[out] 结果信息缓冲区，不同的下载类型（NET_DVR_UploadFile_V40接口里面传入的dwUploadType参数）对应不同的结构体信息，如下表所示：
dwUploadType | 功能描述 | lpOutBuffer
IMPORT_DATA_TO_FACELIB | 导入人脸数据(人脸图片+图片附加信息)到人脸库 | NET_DVR_UPLOAD_FILE_RET
dwOutBufferSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 上传时调用NET_DVR_GetUploadState获取进度和状态，上传完成之后调用该接口获取当前结果信息，然后再上传下一个。
  • 获取图片PID，（当获取到状态值为1时，上层可以调用该接口获取图片PID）。

See Also

NET_DVR_UploadFile_V40


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | sFileName | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_FD_DATA | 35 | 导入人脸数据文件到人脸库 | 文件路径 | NET_DVR_FD_DATA_COND | NULL
  • 从设备导出的人脸数据文件可以通过该接口直接导入，人脸数据文件导出对应接口：NET_DVR_StartDownload(命令:NET_SDK_DOWNLOAD_FD_DATA)。
  • 上传接口调用流程：
    1) 调用NET_DVR_UploadFile_V40开始上传数据。
    2) 上传过程中循环调用NET_DVR_GetUploadState获取上传状态和进度。
    3) 上传成功之后调用NET_DVR_UploadClose停止上传，释放资源。
  • 设备是否支持人脸数据文件上传功能，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<isSuportFDLibImpEmp>。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char          *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_FD_DATA | 21 | 导出指定人脸库的数据文件 | NULL
  • 设备是否支持人脸库数据文件导出能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<isSuportFDLibImpEmp>。

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
IPC_FRONT_PARAMETER_V20 | 0x009 | 设备前端参数
DEVICE_ABILITY_INFO | 0x011 | 智能交通摄像机和ITS智能终端设备能力
SNAPCAMERA_ABILITY | 0x300 | 智能交通摄像机抓拍能力
ITC_TRIGGER_MODE_ABILITY | 0x301 | 智能交通摄像机（V3.1及以后版本）的触发模式能力
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本字符串指针或结构体指针形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表给出了获取智能交通摄像机能力集时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
IPC_FRONT_PARAMETER_V20 | 获取设备前端参数 | 前端参数能力获取输入描述 | 设备前端参数XML描述
DEVICE_ABILITY_INFO | 设备通用能力类型，具体能力根据发送的能力节点来区分 | 抓拍机和智能终端的能力输入描述 | 抓拍机和智能终端的能力(ITDeviceAbility)
 |  | 车辆二次识别检测能力输入描述 | 车辆二次识别检测能力(VehicleRecogAbility)
SNAPCAMERA_ABILITY | 智能交通摄像机的抓拍能力 | 无 | NET_DVR_SNAP_ABILITY
ITC_TRIGGER_MODE_ABILITY | 智能交通摄像机（V3.1及以后版本）的触发模式能力 | ITC_MAINMODE_ABILITY | NET_ITC_TRIGGERMODE_ABILITY

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 当命令为NET_ITC_GET_TRIGGERCFG或NET_ITC_GET_TRIGGER_DEFAULTCFG时，lChannel有效，0表示获取当前启用的触发模式参数，其他值详见ITC_TRIGGERMODE_TYPE。
  • 当连接ITS终端进行配置，命令通道如果是模拟通道则到终端，如果是数字通道则到相机。
  • 设备支持的IO输入输出口个数、单IO触发组、红绿灯模式组数、测速模式组数、支持的触发模式通过能力集获取（NET_DVR_GetDeviceAbility）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_FTPCFG | 获取FTP上传参数 | 无效 | NET_DVR_FTPCFG | 134
NET_DVR_GET_PICCFG_V30 | 获取图象参数 | 通道号 | NET_DVR_PICCFG_V30 | 1002
NET_DVR_GET_CCDPARAMCFG | 获取相机前端参数 | 通道号 | NET_DVR_CAMERAPARAMCFG | 1067
NET_DVR_GET_CCDPARAMCFG_EX | 获取相机前端参数(扩展) | 通道号 | NET_DVR_CAMERAPARAMCFG_EX | 3368
NET_DVR_GET_IOINCFG | 获取智能交通摄像机的IO输入参数 | IO输入口号，从1开始 | NET_DVR_IO_INCFG | 1070
NET_DVR_GET_IOOUTCFG | 获取智能交通摄像机的IO输出参数 | IO输出口号，从1开始 | NET_DVR_IO_OUTCFG | 1072
NET_DVR_GET_FLASHCFG | 获取智能交通摄像机闪光灯参数 | IO输出口号，从1开始 | NET_DVR_FLASH_OUTCFG | 1074
NET_DVR_GET_LIGHTSNAPCFG | 获取智能交通摄像机红绿灯功能参数 | 红绿灯组号，从1开始 | NET_DVR_LIGHTSNAPCFG | 1076
NET_DVR_GET_MEASURESPEEDCFG | 获取智能交通摄像机测速功能参数 | 测速模式组号，从1开始 | NET_DVR_MEASURESPEEDCFG | 1078
NET_DVR_GET_IMAGEOVERLAYCFG | 获取智能交通摄像机图像叠加信息参数 | 无效 | NET_DVR_IMAGEOVERLAYCFG | 1080
NET_DVR_GET_SNAPCFG | 获取智能交通摄像机单IO触发功能参数 | 单IO触发组号，从1开始 | NET_DVR_SNAPCFG | 1082
NET_DVR_GET_VTPPARAM | 获取智能交通摄像机虚拟线圈参数 | 无效 | NET_DVR_VTPARAM | 1084
NET_DVR_GET_SNAPENABLECFG | 获取智能交通摄像机使能参数 | 无效 | NET_DVR_SNAPENABLECFG | 1086
NET_DVR_GET_POSTEPOLICECFG | 获取智能交通摄像机卡口电警参数 | 无效 | NET_DVR_POSTEPOLICECFG | 1088
NET_DVR_GET_JPEGCFG_V30 | 获取智能交通摄像机的JPEG参数 | 无效 | NET_DVR_JPEGCFG_V30 | 1090
NET_DVR_GET_SPRCFG | 获取智能交通摄像机车牌识别参数 | 无效 | NET_DVR_SPRCFG | 1092
NET_DVR_GET_PLCCFG | 获取智能交通摄像机车牌亮度补偿参数 | 无效 | NET_DVR_PLCCFG | 1094
NET_DVR_GET_DEVICESTATECFG | 获取智能交通摄像机设备状态参数 | 无效 | NET_DVR_DEVICESTATECFG | 1096
NET_DVR_GET_CALIBRATE_TIME | 获取时间校时（扩展） | 无效 | NET_DVR_CALIBRATE_TIME | 1098
NET_ITC_GET_TRIGGERCFG | 获取触发参数（3.1及之后版本） | 触发模式 | NET_ITC_TRIGGERCFG | 3003
NET_ITC_GET_IOOUT_PARAM_CFG | 获取IO输出参数（3.1及之后版本） | IO输出口号，从1开始 | NET_ITC_IOOUT_PARAM | 3005
NET_DVR_GET_CAMERA_SETUPCFG | 获取相机架设参数 | 通道号 | NET_DVR_CAMERA_SETUPCFG | 3007
NET_ITC_GET_TRIGGER_DEFAULTCFG | 获取触发模式推荐参数（3.1及之后版本） | 触发模式 | NET_ITC_SINGLE_TRIGGERCFG | 3013
NET_DVR_GET_STATUS_DETECTCFG | 获取状态检测使能参数 | 通道号 | NET_DVR_STATUS_DETECTCFG | 3015
NET_DVR_GET_TPS_ALARMCFG | 获取交通统计报警参数 | 通道号 | NET_DVR_TPS_ALARMCFG | 3019
NET_DVR_GET_REDAREACFG | 获取红绿灯区域校正参数 | 无效 | NET_DVR_REDAREACFG | 3100
NET_DVR_GET_CABINETCFG | 获取机柜参数 | 无效 | NET_DVR_CABINET_CFG | 3104
NET_ITC_GET_ICRCFG | 获取ICR切换参数 | 无效 | NET_ITC_ICRCFG | 3115
NET_ITC_GET_EXCEPTIONCFG | 获取异常参数 | 无效 | NET_ITC_EXCEPTION | 3119
NET_DVR_GET_CURTRIGGERMODE | 获取设备当前触发模式 | 无效 | NET_DVR_CURTRIGGERMODE | 3130
NET_DVR_GET_GPSDATACFG | 获取GPS参数 | 无效 | NET_DVR_GPS_DATACFG | 3131
NET_DVR_GET_SNAPINFO_CFG | 获取抓拍图片参数 | 通道号 | NET_DVR_SNAPINFOCFG | 3136
NET_ITS_GET_BASE_INFO | 获取基本信息（ITS终端） | 无效 | NET_ITS_BASEINFO | 5060
NET_ITS_GET_IMGMERGE_CFG | 获取图片合成配置参数 | 通道号 | NET_ITS_IMGMERGE_CFG | 5063
NET_ITS_GET_UPLOAD_CFG | 获取数据上传配置（相机或ITS终端） | 通道号 | NET_ITS_UPLOAD_CFG | 5065
NET_ITS_GET_IPC_CHAN_CFG | 获取监测点信息配置 | 通道号 | NET_ITS_IPC_CHAN_CFG | 5070
NET_ITS_GET_ROAD_INFO | 获取路口信息（相机或ITS终端） | 通道号 | NET_ITS_ROADINFO | 5076
NET_ITS_GET_GATEIPC_CHAN_CFG | 获取出入口参数 | 通道号 | NET_ITS_IPC_CHAN_LANE_CFG | 5078
NET_ITS_GET_LAMP_CTRLCFG | 获取内外置灯参数(ITS停车场) | 通道号 | NET_DVR_LAMP_CTRL_INFO | 5090
NET_ITS_GET_PARKSPACE_ATTRIBUTE_CFG | 获取特殊车位参数(ITS停车场) | 通道号 | NET_DVR_PARKSPACE_ATTRIBUTE | 5092
NET_DVR_GET_PARKING_DATASTATE | 获取数据同步状态 | 通道号 | NET_DVR_PARKING_DATASTATE_INFO | 3682

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 限速值：如果没有设置IO测速模式，卡口电警（NET_DVR_POSTEPOLICECFG）中限速值有效；如果设置IO测速模式，则测速模式（NET_DVR_MEASURESPEEDCFG）中限速值有效。
  • 当命令为NET_ITC_SET_TRIGGERCFG时，lChannel有效，取值详见ITC_TRIGGERMODE_TYPE。
  • 当连接ITS终端进行配置，命令通道如果是模拟通道则到终端，如果是数字通道则到相机。
  • 设备支持的IO输入输出口个数、单IO触发组、红绿灯模式组数、测速模式组数、支持的触发模式通过能力集获取（NET_DVR_GetDeviceAbility）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_FTPCFG | 设置FTP上传参数 | 无效 | NET_DVR_FTPCFG | 135
NET_DVR_SET_PICCFG_V30 | 设置图象参数 | 通道号 | NET_DVR_PICCFG_V30 | 1003
NET_DVR_SET_CCDPARAMCFG | 设置相机前端参数 | 通道号 | NET_DVR_CAMERAPARAMCFG | 1068
NET_DVR_SET_CCDPARAMCFG_EX | 设置相机前端参数(扩展) | 通道号 | NET_DVR_CAMERAPARAMCFG_EX | 3369
NET_DVR_SET_IOINCFG | 设置智能交通摄像机的IO输入参数 | IO输入口号，从1开始 | NET_DVR_IO_INCFG | 1071
NET_DVR_SET_IOOUTCFG | 设置智能交通摄像机的IO输出参数 | IO输出口号，从1开始 | NET_DVR_IO_OUTCFG | 1073
NET_DVR_SET_FLASHCFG | 设置智能交通摄像机闪光灯参数 | IO输出口号，从1开始 | NET_DVR_FLASH_OUTCFG | 1075
NET_DVR_SET_LIGHTSNAPCFG | 设置智能交通摄像机红绿灯功能参数 | 红绿灯组号，从1开始 | NET_DVR_LIGHTSNAPCFG | 1077
NET_DVR_SET_MEASURESPEEDCFG | 设置智能交通摄像机测速功能参数 | 测速模式组号，从1开始 | NET_DVR_MEASURESPEEDCFG | 1079
NET_DVR_SET_IMAGEOVERLAYCFG | 设置智能交通摄像机图像叠加信息参数 | 无效 | NET_DVR_IMAGEOVERLAYCFG | 1081
NET_DVR_SET_SNAPCFG | 设置智能交通摄像机单IO触发功能参数 | 单IO触发组号，从1开始 | NET_DVR_SNAPCFG | 1083
NET_DVR_SET_VTPPARAM | 设置智能交通摄像机虚拟线圈参数 | 无效 | NET_DVR_VTPARAM | 1085
NET_DVR_SET_SNAPENABLECFG | 设置智能交通摄像机使能参数 | 无效 | NET_DVR_SNAPENABLECFG | 1087
NET_DVR_SET_POSTEPOLICECFG | 设置智能交通摄像机卡口电警参数 | 无效 | NET_DVR_POSTEPOLICECFG | 1089
NET_DVR_SET_JPEGCFG_V30 | 设置智能交通摄像机的JPEG参数 | 无效 | NET_DVR_JPEGCFG_V30 | 1091
NET_DVR_SET_SPRCFG | 设置智能交通摄像机车牌识别参数 | 无效 | NET_DVR_SPRCFG | 1093
NET_DVR_SET_PLCCFG | 设置智能交通摄像机车牌亮度补偿参数 | 无效 | NET_DVR_PLCCFG | 1095
NET_DVR_SET_CALIBRATE_TIME | 设置时间校时（扩展） | 无效 | NET_DVR_CALIBRATE_TIME | 1097
NET_ITC_SET_TRIGGERCFG | 设置触发参数（3.1及之后版本） | 触发模式 | NET_ITC_TRIGGERCFG | 3004
NET_ITC_SET_IOOUT_PARAM_CFG | 设置IO输出参数（3.1含之后版本） | IO输出口号，从1开始 | NET_ITC_IOOUT_PARAM | 3006
NET_DVR_SET_CAMERA_SETUPCFG | 设置相机架设参数 | 通道号 | NET_DVR_CAMERA_SETUPCFG | 3008
NET_DVR_SET_STATUS_DETECTCFG | 设置状态检测使能参数 | 无效 | NET_DVR_STATUS_DETECTCFG | 3016
NET_DVR_SET_TPS_ALARMCFG | 设置交通统计报警参数 | 通道号 | NET_DVR_TPS_ALARMCFG | 3020
NET_DVR_SET_REDAREACFG | 设置红绿灯区域校正参数 | 无效 | NET_DVR_REDAREACFG | 3101
NET_DVR_SET_CABINETCFG | 设置机柜参数 | 无效 | NET_DVR_CABINET_CFG | 3105
NET_ITC_SET_ICRCFG | 设置ICR切换参数 | 无效 | NET_ITC_ICRCFG | 3116
NET_ITC_SET_EXCEPTIONCFG | 设置异常参数 | 无效 | NET_ITC_EXCEPTION | 3120
NET_DVR_SET_GPSDATACFG | 设置GPS参数 | 无效 | NET_DVR_GPS_DATACFG | 3132
NET_DVR_SET_SNAPINFO_CFG | 设置抓拍图片参数 | 通道号 | NET_DVR_SNAPINFOCFG | 3137
NET_ITS_SET_IMGMERGE_CFG | 设置图片合成配置参数 | 通道号 | NET_ITS_IMGMERGE_CFG | 5064
NET_ITS_SET_UPLOAD_CFG | 设置数据上传配置（相机或ITS终端） | 通道号 | NET_ITS_UPLOAD_CFG | 5066
NET_ITS_SET_IPC_CHAN_CFG | 设置监测点信息配置 | 通道号 | NET_ITS_IPC_CHAN_CFG | 5071
NET_ITS_REMOTE_DEVICE_CONTROL | 设置远程设备控制(ITS出入口) | 无效 | NET_ITS_REMOTE_CONTROL | 5077
NET_ITS_SET_GATEIPC_CHAN_CFG | 设置出入口参数 | 通道号 | NET_ITS_IPC_CHAN_LANE_CFG | 5079
NET_ITS_SET_LAMP_CTRLCFG | 设置内外置灯参数(ITS停车场) | 通道号 | NET_DVR_LAMP_CTRL_INFO | 5091
NET_ITS_SET_PARKSPACE_ATTRIBUTE_CFG | 设置特殊车位参数(ITS停车场) | 通道号 | NET_DVR_PARKSPACE_ATTRIBUTE | 5093
NET_ITS_SET_LAMP_EXTERNAL_CFG | 设置外控配置参数(ITS停车场) | 通道号 | NET_DVR_LAMP_EXTERNAL_CFG | 5095
NET_ITS_SET_COMPEL_CAPTURE | 设置车位强制抓图(ITS停车场) | 通道号 | NET_DVR_COMPEL_CAPTURE | 5096
NET_DVR_SET_PARKING_DATASTATE | 设置数据同步状态 | 通道号 | NET_DVR_PARKING_DATASTATE_INFO | 3683

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点（通道）配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。
不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_ITC_GET_VIDEO_TRIGGERCFG | 获取视频触发参数（相机或ITS终端） | dwCount个NET_ITC_VIDEO_TRIGGER_COND | dwCount个NET_ITC_VIDEO_TRIGGER_PARAM | 3017
NET_ITC_GET_RS485_ACCESSINFO | 获取RS485关联接入设备的信息 | dwCount个NET_ITC_RS485_ACCESS_INFO_COND | dwCount个NET_ITC_RS485_ACCESS_CFG | 3117
NET_ITC_GET_FTPCFG | 获取FTP信息 | dwCount个NET_ITC_FTP_TYPE_COND | dwCount个NET_ITC_FTP_CFG | 3121
NET_DVR_GET_ENTRANCE_PARAMCFG | 获取出入口控制参数 | dwCount个NET_DVR_BARRIERGATE_COND | dwCount个NET_DVR_ENTRANCE_CFG | 3126
NET_DVR_GET_SNAPINFO_CFG_V40 | 获取抓拍图片参数扩展 | dwCount个NET_DVR_SNAPINFO_COND | dwCount个NET_DVR_SNAPINFOCFG | 3138
NET_DVR_GET_MONITOR_LOCATION_INFO | 获取监测点信息 | dwCount个NET_DVR_MONITOR_LOCATION_COND | dwCount个NET_DVR_MONITOR_LOCATION_CFG | 3424
NET_DVR_GET_PARKLAMP_STATE | 获取停车场信号灯状态信息 | dwCount个NET_DVR_PARKLAMP_COND | dwCount个NET_DVR_PARKLAMP_INFOCFG | 5057
NET_DVR_GET_CLOUDSTORAGE_CFG | 获取云存储配置参数 | dwCount个NET_DVR_CLOUDSTORAGE_COND | dwCount个NET_DVR_CLOUDSTORAGE_CFG | 5058
NET_ITS_GET_OVERLAP_CFG_V50 | 获取字符叠加参数配置V50扩展（相机或ITS终端） | dwCount个NET_ITS_OVERLAPCFG_COND | dwCount个NET_ITS_OVERLAP_CFG_V50 | 5055
NET_DVR_GET_TRIGGEREX_CFG | 获取触发模式配置（相机或ITS终端） | dwCount个NET_DVR_TRIGGER_COND | dwCount个NET_ITC_TRIGGERCFG | 5074
NET_DVR_GET_ITS_EXDEVCFG | 获取ITS外接设备信息（ITS终端） | dwCount个NET_DVR_EXTERNAL_DEVCOND | dwCount个NET_DVR_EXTERNAL_DEVCFG | 5085
NET_DVR_GET_ITS_EXDEVCFG | 获取ITS外接设备信息（ITS终端） | dwCount个NET_DVR_EXTERNAL_DEVCOND | dwCount个NET_DVR_EXTERNAL_DEVCFG | 5085

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_ITC_SET_VIDEO_TRIGGERCFG | 设置视频触发参数（相机或ITS终端） | dwCount个NET_ITC_VIDEO_TRIGGER_COND | dwCount个NET_ITC_VIDEO_TRIGGER_PARAM | 3018
NET_ITC_SET_RS485_ACCESSINFO | 设置RS485关联接入设备的信息 | dwCount个NET_ITC_RS485_ACCESS_INFO_COND | dwCount个NET_ITC_RS485_ACCESS_CFG | 3118
NET_ITC_SET_FTPCFG | 设置FTP信息 | dwCount个NET_ITC_FTP_TYPE_COND | dwCount个NET_ITC_FTP_CFG | 3122
NET_DVR_SET_ENTRANCE_PARAMCFG | 设置出入口控制参数 | dwCount个NET_DVR_BARRIERGATE_COND | dwCount个NET_DVR_ENTRANCE_CFG | 3127
NET_DVR_SET_SNAPINFO_CFG_V40 | 设置抓拍图片参数扩展 | dwCount个NET_DVR_SNAPINFO_COND | dwCount个NET_DVR_SNAPINFOCFG | 3139
NET_DVR_SET_MONITOR_LOCATION_INFO | 设置监测点信息 | dwCount个NET_DVR_MONITOR_LOCATION_COND | dwCount个NET_DVR_MONITOR_LOCATION_CFG | 3425
NET_DVR_SET_CLOUDSTORAGE_CFG | 设置云存储配置参数 | dwCount个NET_DVR_CLOUDSTORAGE_COND | dwCount个NET_DVR_CLOUDSTORAGE_CFG | 5059
NET_ITS_SET_OVERLAP_CFG_V50 | 设置字符叠加参数配置V50扩展（相机或ITS终端） | dwCount个NET_ITS_OVERLAPCFG_COND | dwCount个NET_ITS_OVERLAP_CFG_V50 | 5056
NET_DVR_SET_TRIGGEREX_CFG | 设置触发模式配置（相机或ITS终端） | dwCount个NET_DVR_TRIGGER_COND | dwCount个NET_ITC_TRIGGERCFG | 5075
NET_DVR_SET_ITS_EXDEVCFG | 设置ITS外接设备信息（ITS终端） | dwCount个NET_DVR_EXTERNAL_DEVCOND | dwCount个NET_DVR_EXTERNAL_DEVCFG | 5084

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_ITS_GET_ECT_CHAN_INFO | 5082 | 获取出入口终端通道状态 | NULL | NULL
NET_DVR_GET_ITS_EXDEVSTATUS | 5086 | 获取ITS所有外接设备信息 | NET_DVR_EXTERNAL_DEVCOND | NULL
NET_DVR_VEHICLE_CONTROL_LIST_START | 3123 | 设置车辆授权和非授权名单信息 | NULL | 返回状态
NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST | 3124 | 获取所有车辆授权和非授权名单信息 | NET_DVR_VEHICLE_CONTROL_COND | NULL
NET_DVR_VEHICLELIST_CTRL_START | 3133 | 设置车辆授权和非授权名单信息(批量) | NULL | 返回状态
NET_DVR_GET_TRAFFIC_DATA | 3141 | 获取交通数据 | NET_DVR_TRAFFIC_DATA_QUERY_COND | 返回状态、信息数据
NET_DVR_GET_TRAFFIC_FLOW | 3142 | 获取交通流量 | NET_DVR_TRAFFIC_FLOW_QUERY_COND | 返回状态、信息数据
NET_DVR_PARKING_VEHICLE_SEND | 3143 | 停车车辆信息下发 | NULL | 返回状态
NET_DVR_PARKING_CARD_SEND | 3144 | 停车卡下发 | NULL | 返回状态
NET_DVR_GET_SENSOR_INFO | 5061 | 传感器信息查询 | NET_DVR_SENSOR_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 状态，具体定义如下：
dwCommand宏定义 dwType lpInBuffer
NET_DVR_VEHICLE_CONTROL_LIST_START typedef enum{
NET_SDK_CALLBACK_STATUS_SUCCESS = 1000,
//成功
NET_SDK_CALLBACK_STATUS_PROCESSING,
//处理中
NET_SDK_CALLBACK_STATUS_FAILED
//失败
}NET_SDK_CALLBACK_STATUS_NORMAL; 		NULL
NET_DVR_VEHICLELIST_CTRL_START typedef enum{
NET_SDK_CALLBACK_TYPE_STATUS = 0,
//回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS,
//回调进度值
NET_SDK_CALLBACK_TYPE_DATA
//回调数据内容
}NET_SDK_CALLBACK_TYPE; 		dwType为0时，
前4个字节(DWORD)的值对应状态，详见:
NET_SDK_CALLBACK_STATUS_NORMAL
如果lpBuffer前4个字节数据值为
NET_SDK_CALLBACK_STATUS_FAILED时，
后面每4个字节表示一个错误号
NET_DVR_GET_TRAFFIC_DATA typedef enum{
NET_SDK_CALLBACK_TYPE_STATUS = 0,
//回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS,
//回调进度值
NET_SDK_CALLBACK_TYPE_DATA
//回调数据内容
}NET_SDK_CALLBACK_TYPE; 		dwType为0时，lpInBuffer对应状态，详见:
NET_SDK_CALLBACK_STATUS_NORMAL
dwType为2时，lpInBuffer为查找到的信息数据，
对应结构体NET_DVR_TRAFFIC_DATA_QUERY_RESULT
NET_DVR_GET_TRAFFIC_FLOW typedef enum{
NET_SDK_CALLBACK_TYPE_STATUS = 0,
//回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS,
//回调进度值
NET_SDK_CALLBACK_TYPE_DATA
//回调数据内容
}NET_SDK_CALLBACK_TYPE; 		dwType为0时，lpInBuffer对应状态，详见:
NET_SDK_CALLBACK_STATUS_NORMAL
dwType为2时，lpInBuffer为查找到的信息数据，
对应结构体NET_DVR_TRAFFIC_FLOW_QUERY_RESULT
NET_DVR_PARKING_VEHICLE_SEND typedef enum{
NET_SDK_CALLBACK_TYPE_STATUS = 0,
//回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS,
//回调进度值
NET_SDK_CALLBACK_TYPE_DATA
//回调数据内容
}NET_SDK_CALLBACK_TYPE; 		dwType为0时，
前4个字节(DWORD)的值对应状态，详见:
NET_SDK_CALLBACK_STATUS_NORMAL
如果lpBuffer前4个字节数据值为
NET_SDK_CALLBACK_STATUS_FAILED时，
后面每4个字节表示一个错误号
NET_DVR_PARKING_CARD_SEND typedef enum{
NET_SDK_CALLBACK_TYPE_STATUS = 0,
//回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS,
//回调进度值
NET_SDK_CALLBACK_TYPE_DATA
//回调数据内容
}NET_SDK_CALLBACK_TYPE; 		dwType为0时，
前4个字节(DWORD)的值对应状态，详见:
NET_SDK_CALLBACK_STATUS_NORMAL
如果lpBuffer前4个字节数据值为
NET_SDK_CALLBACK_STATUS_FAILED时，
后面每4个字节表示一个错误号
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_ITS_GET_ECT_CHAN_INFO | 获取出入口终端通道状态 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ITS_EXDEVSTATUS | 获取ITS所有外接设备信息 | NET_DVR_GetNextRemoteConfig
NET_DVR_VEHICLE_CONTROL_LIST_START | 设置车辆授权和非授权名单信息 | NET_DVR_SendRemoteConfig
NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST | 获取所有车辆授权和非授权名单信息 | NET_DVR_GetNextRemoteConfig
NET_DVR_VEHICLELIST_CTRL_START | 设置车辆授权和非授权名单信息(批量) | NET_DVR_SendRemoteConfig
NET_DVR_GET_TRAFFIC_DATA | 获取交通数据 | NULL
NET_DVR_GET_TRAFFIC_FLOW | 获取交通流量 | NULL
NET_DVR_PARKING_VEHICLE_SEND | 停车车辆信息下发 | NET_DVR_SendRemoteConfig
NET_DVR_PARKING_CARD_SEND | 停车卡下发 | NET_DVR_SendRemoteConfig
NET_DVR_GET_SENSOR_INFO | 传感器信息查询 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_ITS_GET_ECT_CHAN_INFO | 5082 | 获取出入口终端通道状态 | NET_ITS_ECT_CHANNELSTATE
NET_DVR_GET_ITS_EXDEVSTATUS | 5086 | 获取ITS所有外接设备信息 | NET_DVR_EXTERNAL_DEVSTATUS
NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST | 3124 | 获取所有车辆授权和非授权名单信息 | NET_DVR_VEHICLE_CONTROL_LIST_INFO
NET_DVR_GET_SENSOR_INFO | 5061 | 传感器信息查询 | NET_DVR_SENSOR_CFG

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的数据类型(dwDataType)，pSendBuf对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_VEHICLE_CONTROL_LIST_START | 3123 | 设置车辆授权和非授权名单信息长连接
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
DVR_VEHICLE_CONTROL_LIST | 0x1 | 发送车辆授权和非授权名单数据 | NET_DVR_VEHICLE_CONTROL_LIST_INFO
dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_VEHICLELIST_CTRL_START | 3133 | 设置车辆授权和非授权名单信息(批量)
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_SENDDATA | 0x0 | 发送车辆授权和非授权名单数据 | m个(m最大为128) NET_DVR_VEHICLE_CONTROL_LIST_INFO
dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_PARKING_VEHICLE_SEND | 3143 | 停车车辆信息下发
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_TME_VEHICLE_SEND_DATA | 5 | 停车场(出入口控制机)车辆数据类型 | NET_DVR_PARKING_VEHICLE
dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_PARKING_CARD_SEND | 3144 | 停车卡下发
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_TME_CARD_SEND_DATA | 4 | 停车场(出入口控制机)卡片数据类型 | NET_DVR_PARKING_CARD

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_VEHICLE_DELINFO_CTRL | 3125 | 删除设备内非授权名单数据库信息 | NET_DVR_VEHICLE_CONTROL_DELINFO
NET_DVR_BARRIERGATE_CTRL | 3128 | 远程控制道闸 | NET_DVR_BARRIERGATE_CFG
NET_DVR_GATELAMP_CTRL | 3129 | 常亮灯功能 | NET_DVR_GATELAMP_INFO
NET_DVR_SET_ITS_ENDEVCMD | 5087 | 设置ITS终端出入口控制命令(控制下发卡片信息) | NET_DVR_ENTRANCEDEV_COMMAND
NET_DVR_SET_ENISSUED_DATADEL | 5088 | 设置ITS终端出入口控制命令(清除下发的卡片数据) | NET_DVR_ENISSUED_DATADEL

See Also

NET_DVR_Login_V40


NET_DVR_ContinuousShoot

网络触发抓拍。

BOOL NET_DVR_ContinuousShoot(
  LONG                 lUserID,
  LPNET_DVR_SNAPCFG    lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInter
[in] 网络触发抓拍配置

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

  • 使用网络触发连拍接收图片，需要先对设备进行布防（NET_DVR_SetupAlarmChan_V41）并设置回调函数（NET_DVR_SetDVRMessageCallBack_V31），通过回调获取抓拍的图片数据。
  • 对于门禁主机，调用该接口仅是配置相关抓拍参数，设备不会马上触发抓拍，必须配置事件或卡号联动参数并勾选是否联动抓拍，然后发生刷卡、开门等事件时才会联动抓拍上传，抓拍结果通过报警布防方式在报警回调函数中获取。设备是否支持网络触发连拍或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<ContinuousShootCfg>。

See Also

NET_DVR_Login_V40


NET_DVR_ManualSnap

手动触发抓拍。

BOOL NET_DVR_ManualSnap(
  LONG                      lUserID,
  LPNET_DVR_MANUALSNAP      lpInter,
  LPNET_DVR_PLATE_RESULT    lpOuter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInter
[in] 手动抓拍参数
lpOuter
[out] 识别结果参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于抓拍机，该接口一般用于调试，不能频繁调用进行抓图。调用该接口前，应用层需要自己先分配lpOuter输出结构体里面的pBuffer1等缓冲区的内存，不能小于抓图图片的数据大小。

See Also

NET_DVR_Login_V40


NET_DVR_GetDeviceStatus

获取设备状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_ITS_GET_WORKSTATE | 获取ITS终端工作状态(dwCount为1) | 4字节通道号 | NET_ITS_WORKSTATE | 5069
NET_ITS_GET_ECTWORKSTATE | 获取出入口终端工作状态 | dwCount个NET_ITS_ECT_WORKSTATE_COMMAND | dwCount个NET_ITS_ECTWORKSTATE | 5081
NET_DVR_GET_SIGNALLAMP_STATUS | 信号灯检测 | dwCount个NET_DVR_EXDEVDET_COND | dwCount个NET_DVR_EXDEVDET_CFG | 5099

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL。lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容，如果设置的lpOutBuffer缓冲区不足，仅返回部分信息，可以根据返回的个数（前4字节的值）重新获取。

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_VIOLATION_FILE | 7 | 上传违法字典文件 | NULL | NULL
UPLOAD_TME_FILE | 12 | 上传出入口管理文件 | NULL | NULL
UPLOAD_SUBBRAND_FILE | 23 | 上传车辆子品牌文件 | NULL | NULL
UPLOAD_AUDIO_FILE | 29 | 上传语音文件(.wav文件) | NULL | NULL

Return Values

-1表示失败，其他值作为NET_DVR_UploadClose和NET_DVR_GetUploadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值
pProgress
[out] 返回的进度值

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

See Also

NET_DVR_UploadFile_V40


NET_DVR_UploadClose

停止文件上传。

BOOL NET_DVR_UploadClose(
  LONG    lUploadHandle
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UploadFile_V40


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_TME_FILE | 7 | 下载出入口管理文件 | NULL

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_SetDeviceConfigEx

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfigEx(
  LONG                 lUserID,
  DWORD                dwCommand,
  DWORD                dwCount,
  NET_DVR_IN_PARAM     *lpInParam,
  NET_DVR_OUT_PARAM    *lpOutParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInParam
[in] 输入参数缓冲区，其中参数取值根据不同的dwCommand而不同，详见“Remarks”说明
lpOutParam
[in] 输出参数缓冲区，其中参数取值根据不同的dwCommand而不同，详见“Remarks”说明

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpOutParam->lpStatusList值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口扩展接口，支持设置接收数据超时时间。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | 宏定义值
NET_DVR_SET_VEHICLE_RECOG_TASK_V50 | 车辆二次识别任务提交（返回设备数据流水号） | 6254
输入输出缓冲区参数 | 参数取值
lpInParam->struCondBuf.pBuf | 输入条件缓冲区，dwCount 个NET_DVR_VEHICLE_RECOG_COND
lpInParam->struCondBuf.nLen | 输入条件缓冲区长度
lpInParam->struInParamBuf.pBuf | 输入参数缓冲区，dwCount个NET_DVR_VEHICLE_RECOG_CFG
lpInParam->struInParamBuf.nLen | 输入参数缓冲区长度
lpInParam->dwRecvTimeout | 数据接收超时时间，填 0 采用接口默认超时
lpOutParam->struOutBuf.pBuf | 输出参数缓冲区，dwCount个NET_DVR_VEHICLERECOG_TASK_RESULT
lpOutParam->struOutBuf.nLen | 输出参数缓冲区长度
lpOutParam->lpStatusList | 状态缓冲区，对应dwCount个参数配置的结果，例如 lpStatusList[2]就对应lpInParam->struInParamBuf.pBuf[2]，由用户分配内存，每个错误信息为4个字节，参数值：0或者1表示成功，其他值为失败对应的错误号

See Also

NET_DVR_Login_V40


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_VEHICLE_RECOG_TASK | 车辆二次识别任务提交 | dwCount个NET_DVR_VEHICLE_RECOG_COND | dwCount个NET_DVR_VEHICLE_RECOG_CFG | 422

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_VEHICLE_RECOG_TASK | 423 | 车辆二次识别任务获取 | NET_DVR_VEHICLE_RECOG_TASK_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用NET_DVR_GetNextRemoteConfig获取具体信息。
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_VEHICLE_RECOG_TASK | 车辆二次识别任务获取 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_VEHICLE_RECOG_TASK | 423 | 车辆二次识别任务获取 | NET_DVR_VEHICLE_RECOG_TASK_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 参考区域即在图像区域选择一块或者多块用于自动检测区分昼夜场景切换的区域。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_REFERENCE_REGION | 获取参考区域 | 通道号 | NET_DVR_REGION_LIST | 400
NET_DVR_GET_TRAFFIC_MASK_REGION | 获取交通事件屏蔽区域 | 通道号 | NET_DVR_REGION_LIST | 402
NET_DVR_GET_AID_RULECFG_V41 | 获取交通事件规则参数 | 通道号 | NET_DVR_AID_RULECFG_V41 | 5013
NET_DVR_GET_TPS_RULECFG_V41 | 获取交通统计规则参数 | 通道号 | NET_DVR_TPS_RULECFG_V41 | 5015
NET_DVR_GET_LANECFG | 获取车道规则 | 通道号 | NET_DVR_LANE_CFG | 409

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_REFERENCE_REGION | 设置参考区域 | 通道号 | NET_DVR_REGION_LIST | 401
NET_DVR_SET_TRAFFIC_MASK_REGION | 设置交通事件屏蔽区域 | 通道号 | NET_DVR_REGION_LIST | 403
NET_DVR_SET_AID_RULECFG_V41 | 设置交通事件规则参数 | 通道号 | NET_DVR_AID_RULECFG_V41 | 5014
NET_DVR_SET_TPS_RULECFG_V41 | 设置交通统计规则参数 | 通道号 | NET_DVR_TPS_RULECFG_V41 | 5016
NET_DVR_SET_LANECFG | 设置车道规则 | 通道号 | NET_DVR_LANE_CFG | 408

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_VCA_CTRLINFO_CFG | 获取智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5022
NET_DVR_GET_SCENE_CFG | 获取场景信息 | dwCount个4字节通道号 | dwCount个NET_DVR_SCENE_CFG | 5201
NET_DVR_GET_SCENE_REFERENCE_REGION | 多场景模式下获取参考区域 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_REGION_LIST | 5203
NET_DVR_GET_SCENE_CALIBRATION | 多场景条件下获取标定信息 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_CALIBRATION_CFG | 5205
NET_DVR_GET_SCENE_MASK_REGION | 多场景条件下获取屏蔽区域 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_REGION_LIST | 5207
NET_DVR_GET_SCENE_LANECFG | 多场景条件下获取车道规则 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_LANE_CFG | 5209
NET_DVR_GET_SCENE_AID_RULECFG | 多场景条件下获取交通事件规则参数 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_AID_RULECFG_V41 | 5211
NET_DVR_GET_SCENE_TPS_RULECFG | 多场景条件下获取交通统计规则参数 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_TPS_RULECFG_V41 | 5213
NET_DVR_GET_SCENE_TIME_CFG | 获取通道的场景时间段配置 | dwCount个4字节通道号 | dwCount个NET_DVR_SCENE_TIME_CFG | 5215
NET_DVR_GET_FORENSICS_MODE | 获取违章取证方式 | dwCount个4字节通道号 | dwCount个NET_DVR_FORENSICS_MODE | 5217

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_VCA_CTRLINFO_CFG | 设置智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5023
NET_DVR_SET_SCENE_CFG | 设置场景信息 | dwCount个4字节通道号 | dwCount个NET_DVR_SCENE_CFG | 5202
NET_DVR_SET_SCENE_REFERENCE_REGION | 多场景模式下设置参考区域 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_REGION_LIST | 5204
NET_DVR_SET_SCENE_CALIBRATION | 多场景条件下设置标定信息 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_CALIBRATION_CFG | 5206
NET_DVR_SET_SCENE_MASK_REGION | 多场景条件下设置屏蔽区域 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_REGION_LIST | 5208
NET_DVR_SET_SCENE_LANECFG | 多场景条件下设置车道规则 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_LANE_CFG | 5210
NET_DVR_SET_SCENE_AID_RULECFG | 多场景条件下设置交通事件规则参数 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_AID_RULECFG_V41 | 5212
NET_DVR_SET_SCENE_TPS_RULECFG | 多场景条件下设置交通统计规则参数 | dwCount个NET_DVR_SCENE_COND | dwCount个NET_DVR_TPS_RULECFG_V41 | 5214
NET_DVR_SET_SCENE_TIME_CFG | 设置通道的场景时间段配置 | dwCount个4字节通道号 | dwCount个NET_DVR_SCENE_TIME_CFG | 5216
NET_DVR_SET_FORENSICS_MODE | 设置违章取证方式 | dwCount个4字节通道号 | dwCount个NET_DVR_FORENSICS_MODE | 5218

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CONTROL_PTZ_MANUALTRACE | 3316 | 手动跟踪定位 | NET_DVR_PTZ_MANUALTRACE
NET_DVR_SYN_CHANNEL_NAME | 5024 | 按通道同步分析仪的通道名为前端设备通道名 | NET_DVR_SYN_CHANNEL_NAME_PARAM

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetSceneMode

获取场景模式。

BOOL NET_DVR_GetSceneMode(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    *pSceneMode
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
pSceneMode
[out] 场景模式
enum tagTRAFFIC_SCENE_MODE{
  FREEWAY  = 0,
  TUNNEL,
  BRIDGE
}TRAFFIC_SCENE_MODE
FREEWAY
高速户外场景
TUNNEL
高速隧道场景
BRIDGE
高速桥梁场景

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetSceneMode


NET_DVR_SetSceneMode

设置场景模式。

BOOL NET_DVR_SetSceneMode(
  LONG     lUserID,
  LONG     lChannel,
  DWORD    dwSceneMode
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwCaptureMode
[in] 场景模式
enum tagTRAFFIC_SCENE_MODE{
  FREEWAY  = 0,
  TUNNEL,
  BRIDGE
}TRAFFIC_SCENE_MODE
FREEWAY
高速户外场景
TUNNEL
高速隧道场景
BRIDGE
高速桥梁场景

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetSceneMode


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_REALTIME_THERMOMETRY | 3629 | 实时温度检测 | NET_DVR_REALTIME_THERMOMETRY_COND | 返回状态、信息数据
NET_DVR_GET_MANUALTHERM_INFO | 6706 | 手动测温实时获取 | NET_DVR_REALTIME_THERMOMETRY_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前面4字节表示状态值： typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL; 如果状态值为NET_SDK_CALLBACK_STATUS_FAILED时，后面4字节表示错误码
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)，不支持
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据， 实时温度检测(NET_DVR_GET_REALTIME_THERMOMETRY)时对应结构体：NET_DVR_THERMOMETRY_UPLOAD 手动测温实时获取(NET_DVR_GET_MANUALTHERM_INFO)时对应结构体：NET_SDK_MANUAL_THERMOMETRY
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_THERMOMETRYRULE_TEMPERATURE_INFO | 手动获取测温规则温度信息 | 规则ID | NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO | 23001

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_ShutterCompensation

热成像仪手动快门补偿。

BOOL NET_DVR_ShutterCompensation(
  LONG     lUserID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_CorrectDeadPixel

热成像仪坏点校正。

BOOL NET_DVR_CorrectDeadPixel(
  LONG                                 lUserID,
  LONG                                 lChannel,
  LPNET_DVR_CORRECT_DEADPIXEL_PARAM    lpInParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpInParam
[in] 坏点校正参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 坏点校正只支持热成像通道。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_DPC_CTRL | 3410 | 坏点校正控制 | NET_DVR_DPC_PARAM

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_DPC_CTRL这个坏点校正控制功能不兼容以前的坏点校正接口NET_DVR_CorrectDeadPixel，属于新增功能，需要设备支持。
  • 设备是否支持坏点校正控制功能或者支持的参数能力，可以通过设备能力集进行判断，对应前端参数能力集(CAMERAPARA)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20，节点：<DPCParam>。

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_SHIPSDETECTION_COUNT | 6658 | 获取船只计数信息 | NET_DVR_SHIPSCOUNT_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前面4字节表示状态值： typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL; 如果状态值为NET_SDK_CALLBACK_STATUS_FAILED时，后面4字节表示错误码
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)，不支持
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据， 获取船只计数(NET_DVR_GET_SHIPSDETECTION_COUNT)时对应结构体：NET_DVR_SHIPSCOUNT_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_THERMOMETRIC_FILE | 22 | 上传测温标定文件 | NULL | NULL

Return Values

-1表示失败，其他值作为NET_DVR_UploadClose和NET_DVR_GetUploadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 需要下载的文件对应的文件ID

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_THERMOMETRIC_FILE | 15 | 下载测温标定文件 | NULL

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_CaptureJPEGPicture_WithAppendData

带全屏测温数据的设备抓图。

NET_DVR_CaptureJPEGPicture_WithAppendData(
  LONG                                   lUserID,
  LONG                                   lChannel,
  NET_DVR_JPEGPICTURE_WITH_APPENDDATA    lpJpegWithAppend
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpJpegWithAppend
[out] 设备抓图附加全屏测温数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
FISHEYE_ABILITY | 0x700 | 鱼眼IPC能力集
pInBuf
[in] 输入缓冲区指针，详见“Remarks”说明
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针，详见“Remarks”说明
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了能力获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
FISHEYE_ABILITY | 获取鱼眼IPC能力 | 鱼眼IPC能力获取输入描述 | 鱼眼IPC能力XML描述(FishEyeAbility)

See Also

NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PREVIEW_DISPLAYCFG | 获取鱼眼IPC预览显示参数 | 通道号 | NET_DVR_PREVIEW_DISPLAYCFG | 3211
NET_DVR_GET_PRESET_NUM | 获取鱼眼IPC预置点个数 | 通道号 | NET_DVR_PRESET_INFO | 3226
NET_DVR_GET_PTZCRUISE_NUM | 获取鱼眼IPC巡航路径个数 | 通道号 | NET_DVR_PTZCRUISE_INFO | 3227
NET_DVR_GET_MOTION_TRACK_CFG | 获取鱼眼IPC或者球机跟踪参数 | 通道号 | NET_DVR_MOTION_TRACK_CFG | 3228
NET_DVR_GET_PTZ_POINT | 获取PTZ点坐标 | 通道号 | NET_VCA_POINT | 3245
NET_DVR_GET_TRACK_DEV_PARAM | 获取跟踪设备参数 | 通道号 | NET_DVR_TRACK_DEV_PARAM | 3261
NET_DVR_GET_PTZ_TRACK_PARAM | 获取PTZ跟踪参数 | 通道号 | NET_DVR_PTZ_TRACK_PARAM | 3263

    NET_DVR_GET_PTZ_POINT获取PTZ点坐标时，坐标点的位置相对于预览窗口左上角，值以当前预览窗口的大小为准，采用归一化的坐标值。

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PREVIEW_DISPLAYCFG | 设置鱼眼IPC预览显示参数 | 通道号 | NET_DVR_PREVIEW_DISPLAYCFG | 3212
NET_DVR_SET_MOTION_TRACK_CFG | 设置鱼眼IPC或者球机跟踪参数 | 通道号 | NET_DVR_MOTION_TRACK_CFG | 3229
NET_DVR_SET_PTZ_POINT | 设置PTZ点坐标 | 通道号 | NET_VCA_POINT | 3246
NET_DVR_SET_TRACK_DEV_PARAM | 设置跟踪设备参数 | 通道号 | NET_DVR_TRACK_DEV_PARAM | 3262
NET_DVR_SET_PTZ_TRACK_PARAM | 设置PTZ跟踪参数 | 通道号 | NET_DVR_PTZ_TRACK_PARAM | 3264

    NET_DVR_SET_PTZ_POINT设置PTZ点坐标时，坐标点的位置相对于预览窗口左上角，值以当前预览窗口的大小为准，采用归一化的坐标值。

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PRESETCFG | 获取鱼眼IPC预置点参数 | dwCount个NET_DVR_PRESET_COND | dwCount个NET_DVR_PRESETCFG | 3224
NET_DVR_GET_PTZCRUISECFG | 获取鱼眼IPC巡航路径参数 | dwCount个NET_DVR_PTZCRUISE_COND | dwCount个NET_DVR_PTZCRUISECFG | 3225


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer | cbStateCallback
NET_DVR_FISHEYE_CFG | 3244 | 鱼眼长连接配置 | NULL | 返回状态或者数据信息
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 回调数据类型，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度值(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | 对应结构体：NET_DVR_CALLBACK_TYPE_DATA
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动鱼眼长连接配置，然后可以调用NET_DVR_SendRemoteConfig接口发送相应的配置命令。

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的数据类型(dwDataType)，pSendBuf对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 |
NET_DVR_FISHEYE_CFG | 3244 | 鱼眼长连接配置 |
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
DRAG_PTZ | 51 | 拖动PTZ | NET_DVR_DRAG_POS_PARAM

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_REMOTECONTROL_PRESETPOINT | 3214 | 远程控制预置点 | NET_DVR_PRESET_POINT_PARAM
NET_DVR_REMOTECONTROL_CRUISE | 3215 | 远程控制巡航 | NET_DVR_PTZ_CRUISE_PARAM
NET_DVR_REMOTECONTROL_DEV_PARAM | 3247 | 设置设备登录客户端参数 | NET_DVR_LOGIN_DEVICE_PARAM
NET_DVR_CONTROL_PTZ_MANUALTRACE | 3316 | 手动跟踪定位 | NET_DVR_PTZ_MANUALTRACE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetDeviceStatus

获取设备状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_FISHEYE_STREAM_STATUS | 获取鱼眼码流状态 | dwCount个4字节通道号 | dwCount个NET_DVR_FISHEYE_STREAM_STATUS | 3248

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL。lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容，如果设置的lpOutBuffer缓冲区不足，仅返回部分信息，可以根据返回的个数（前4字节的值）重新获取。

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_PANORAMIC_STITCH | 27 | 上传全景自动拼接配置文件 | NET_DVR_PANORAMIC_STITCH_UPLOAD | NULL
  • 设备是否支持上传全景自动拼接配置文件能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportPanoramicStitch>。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了按照不同的能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ABILITY_INFO | 获取审讯机能力集 | 获取审讯机能力集 | 审讯机能力XML描述(InquestAbility)
 | 获取庭审主机能力集 | 获取庭审主机能力集 | 庭审主机能力XML描述(TrialHostAbility)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

See Also

NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_AUDIO_ACTIVATION_CFG | 获取语音激励配置参数 | 语音输入通道号，从1开始 | NET_DVR_AUDIO_ACTIVATION_CFG | 6326
NET_DVR_GET_INFRARED_CMD_NAME_CFG | 获取红外命令名称参数配置 | 红外输出口索引，从1开始 | NET_DVR_INFRARED_CMD_NAME_CFG | 6331
NET_DVR_GET_TRIAL_SYSTEM_CFG | 获取庭审主机系统信息 | 无效 | NET_DVR_TRIAL_SYSTEM_INFO | 6334
NET_DVR_GET_TRIAL_MICROPHONE_STATUS | 获取麦克风状态信息 | 无效 | NET_DVR_TRIAL_MICROPHONE_STATUS | 6336
NET_DVR_GET_TRIAL_HOST_STATUS | 获取庭审主机状态信息 | 无效 | NET_DVR_TRIAL_HOST_STATUS | 6338
NET_DVR_GET_LAMP_OUT | 获取LAMP输出口信息 | 无效 | NET_DVR_LAMP_OUT | 6339
NET_DVR_GET_LOCAL_INPUT_CFG | 获取庭审主机本地输入信息 | 通道号 | NET_DVR_LOCAL_INPUT_INFO | 6343
NET_DVR_GET_CASE_INFO | 获取当前案件信息 | 无效 | NET_DVR_CASE_INFO | 6345
NET_DVR_GET_MIX_AUDIOIN_CFG | 获取混音输入口参数配置 | 音频输入口号，从1开始 | NET_DVR_MIX_AUDIOIN_CFG | 6351
NET_DVR_GET_MIX_AUDIOOUT_CFG | 获取混音输出口参数配置 | 音频输出口号，从1开始 | NET_DVR_MIX_AUDIOOUT_CFG | 6353
NET_DVR_GET_AUDIOIN_VOLUME_CFG | 获取音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6355
NET_DVR_GET_AUDIOOUT_VOLUME_CFG | 获取音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6369
NET_DVR_GET_AREA_MASK_CFG | 获取马赛克区域配置 | 通道号 | NET_DVR_AREA_MASK_CFG | 6357
NET_DVR_GET_AUDIO_DIACRITICAL_CFG | 获取音频变音配置 | 通道号 | NET_DVR_AUDIO_DIACRITICAL_CFG | 6359
NET_DVR_GET_WIFI_DHCP_ADDR_CFG | 获取WIFI DHCP地址范围参数 | 无效 | NET_DVR_WIFI_DHCP_ADDR_CFG | 6361
NET_DVR_GET_MULTISTREAM_RELATION_CHAN_CFG | 获取多码流关联通道参数配置 | 多码流编号，从1开始 | NET_DVR_MULTISTREAM_RELATION_CHAN_CFG | 6365
NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG | 获取设备本地视频输出口分辨率 | 视频输出口，从1开始 | NET_DVR_VIDEOOUT_RESOLUTION_CFG | 6367
NET_DVR_GET_INPUT_CHAN_CFG | 获取输入通道配置 | 输入通道号，从1开始 | NET_DVR_PICCFG_V30 (仅支持其中的视频信号丢失报警参数struVILost) | 6373
NET_DVR_GET_INQUEST_MIX_AUDIOIN_CFG | 获取审讯机音频输入混音配置 | 审讯通道号，从1开始 | NET_DVR_INQUEST_MIX_AUDIOIN_CFG | 6375
NET_DVR_GET_INQUEST_USER_RIGHT | 获取审讯机用户权限 | 用户索引: 1为admin用户，2开始为普通用户 | NET_DVR_INQUEST_USER_RIGHT_CFG | 6378
NET_DVR_GET_INQUEST_CASE_INFO | 获取审讯案件信息配置 | 审讯通道号，从1开始 | NET_DVR_INQUEST_CASE_INFO | 6380

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_AUDIO_ACTIVATION_CFG | 设置语音激励配置参数 | 语音输入通道号，从1开始 | NET_DVR_AUDIO_ACTIVATION_CFG | 6327
NET_DVR_SET_INFRARED_CMD_NAME_CFG | 设置红外命令名称参数配置 | 红外输出口索引，从1开始 | NET_DVR_INFRARED_CMD_NAME_CFG | 6332
NET_DVR_SET_CASE_INFO | 案件信息录入 | 无效 | NET_DVR_CASE_INFO | 6335
NET_DVR_SET_TRIAL_MICROPHONE_STATUS | 设置麦克风状态信息 | 无效 | NET_DVR_TRIAL_MICROPHONE_STATUS | 6337
NET_DVR_SET_LAMP_OUT | 设置LAMP输出口信息 | 无效 | NET_DVR_LAMP_OUT | 6340
NET_DVR_REMOTE_CONTROL_PLAY | 远程控制设备本地回放 | 无效 | NET_DVR_REMOTE_PLAY | 6342
NET_DVR_SET_LOCAL_INPUT_CFG | 设置庭审主机本地输入信息 | 通道号 | NET_DVR_LOCAL_INPUT_INFO | 6344
NET_DVR_SET_MIX_AUDIOIN_CFG | 设置混音输入口参数配置 | 通道号 | NET_DVR_MIX_AUDIOIN_CFG | 6352
NET_DVR_SET_MIX_AUDIOOUT_CFG | 设置混音输出口参数配置 | 音频输出口号，从1开始 | NET_DVR_MIX_AUDIOOUT_CFG | 6354
NET_DVR_SET_AUDIOIN_VOLUME_CFG | 设置音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6356
NET_DVR_SET_AUDIOOUT_VOLUME_CFG | 设置音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6370
NET_DVR_SET_AREA_MASK_CFG | 设置马赛克区域配置 | 通道号 | NET_DVR_AREA_MASK_CFG | 6358
NET_DVR_SET_AUDIO_DIACRITICAL_CFG | 设置音频变音配置 | 通道号 | NET_DVR_AUDIO_DIACRITICAL_CFG | 6360
NET_DVR_SET_WIFI_DHCP_ADDR_CFG | 设置WIFI DHCP地址范围参数 | 无效 | NET_DVR_WIFI_DHCP_ADDR_CFG | 6362
NET_DVR_SET_MULTISTREAM_RELATION_CHAN_CFG | 设置多码流关联通道参数配置 | 多码流编号，从1开始 | NET_DVR_MULTISTREAM_RELATION_CHAN_CFG | 6366
NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG | 设置设备本地视频输出口分辨率 | 视频输出口，从1开始 | NET_DVR_VIDEOOUT_RESOLUTION_CFG | 6368
NET_DVR_SET_INPUT_CHAN_CFG | 设置输入通道配置 | 输入通道号，从1开始 | NET_DVR_PICCFG_V30 (仅支持其中的视频信号丢失报警参数struVILost) | 6374
NET_DVR_SET_INQUEST_MIX_AUDIOIN_CFG | 设置审讯机音频输入混音配置 | 审讯通道号，从1开始 | NET_DVR_INQUEST_MIX_AUDIOIN_CFG | 6376
NET_DVR_SET_INQUEST_USER_RIGHT | 设置审讯机用户权限 | 用户索引: 1为admin用户，2开始为普通用户 | NET_DVR_INQUEST_USER_RIGHT_CFG | 6379
NET_DVR_SET_INQUEST_CASE_INFO | 设置审讯案件信息配置 | 审讯通道号，从1开始 | NET_DVR_INQUEST_CASE_INFO | 6381

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_START_INFRARED_LEARN | 6333 | 远程红外学码 | NULL | 返回状态
NET_DVR_INQUEST_GET_CDW_STATUS | 6350 | 获取审讯机刻录状态 | NET_DVR_INQUEST_ROOM | NULL
NET_DVR_GET_WIFI_CLIENT_LIST_INFO | 6363 | 获取WIFI热点连接设备信息 | NULL | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_START_INFRARED_LEARN | 远程红外学码 | NET_DVR_SendRemoteConfig
NET_DVR_INQUEST_GET_CDW_STATUS | 获取审讯机刻录状态 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_WIFI_CLIENT_LIST_INFO | 获取WIFI热点连接设备信息 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_INQUEST_GET_CDW_STATUS | 6350 | 获取审讯机刻录状态 | NET_DVR_INQUEST_CDRW_STATUS
NET_DVR_GET_WIFI_CLIENT_LIST_INFO | 6363 | 获取WIFI热点连接设备信息 | NET_DVR_WIFI_CLIENT_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的数据类型(dwDataType)，pSendBuf对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 |
NET_DVR_START_INFRARED_LEARN | 6333 | 远程红外学码 |
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_SEND_LEARN_IR_CMD_START | 0x1 | 发送红外学码 | NET_DVR_INFRARED_LEARN_INFO
ENUM_SEND_LEARN_IR_CMD_END | 0x2 | 红外学码结束 | NET_DVR_INFRARED_LEARN_END

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_InquestGetPIPStatus_V40

获取画中画状态。

BOOL NET_DVR_InquestGetPIPStatus_V40(
  LONG                               lUserID,
  NET_DVR_INQUEST_ROOM const         *lpInquestRoom,
  LPNET_DVR_INQUEST_PIP_STATUS_V40   lpStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
lpStatus
[out] 画中画状态结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestSetPIPStatus_V40

Reference Interface

该接口扩展源于
NET_DVR_InquestGetPIPStatus_V30


NET_DVR_InquestSetPIPStatus_V40

设置画中画状态。

BOOL NET_DVR_InquestSetPIPStatus_V40(
  LONG                               lUserID,
  NET_DVR_INQUEST_ROOM const         *lpInquestRoom,
  LPNET_DVR_INQUEST_PIP_STATUS_V40   lpStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
lpStatus
[in] 画中画状态结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetPIPStatus_V40

Reference Interface

该接口扩展源于
NET_DVR_InquestSetPIPStatus_V30


NET_DVR_InquestGetSystemInfo

获取系统信息。

BOOL NET_DVR_InquestGetSystemInfo(
  LONG                             lUserID,
  LPNET_DVR_INQUEST_SYSTEM_INFO    lpSystemInfo,
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSystemInfo
[out] 系统信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestSetSystemInfo
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_InquestSetSystemInfo

设置系统信息。

BOOL NET_DVR_InquestSetSystemInfo(
  LONG                             lUserID,
  LPNET_DVR_INQUEST_SYSTEM_INFO    lpSystemInfo,
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSystemInfo
[in] 系统信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetSystemInfo
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_INFRARED_OUTPUT_CONTROL | 6330 | 红外输出控制 | NET_DVR_INFRARED_OUTPUT_CTRL_CFG
NET_DVR_LAMP_REMOTE_CONTROL | 6341 | LAMP控制 | NET_DVR_LAMP_CONTROL
NET_DVR_REMOTECONTROL_POWER_ON | 6364 | 远程开机（设备启用远程开机时有效） | NULL
NET_DVR_INQUEST_PAUSE_CDW | 6371 | 审讯/庭审中暂停刻录 | NET_DVR_INQUEST_ROOM
NET_DVR_INQUEST_RESUME_CDW | 6372 | 审讯/庭审中恢复刻录 | NET_DVR_INQUEST_ROOM
NET_DVR_CASE_INFO_CTRL | 6377 | 案件信息显示控制 | NET_DVR_CASE_INFO_CTRL_PARAM

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_InquestFindFile_V30

搜索审讯文件。

LONG NET_DVR_InquestFindFile_V30(
  LONG                     lUserID
  LPNET_DVR_INQUEST_ROOM   lpInquestRoom
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息

Return Values

-1表示失败，其他值作为NET_DVR_InquestFindNextFile等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口调用成功后，可以调用NET_DVR_FindNextFile接口来获取文件信息。

See Also

NET_DVR_InquestFindNextFile NET_DVR_InquestFindClose
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于
NET_DVR_InquestFindFile


NET_DVR_InquestFindNextFile

逐个获取查找到的审讯文件信息。

LONG NET_DVR_InquestFindNextFile(
  LONG                         lFindHandle,
  LPNET_DVR_INQUEST_FILEINFO   lpFindData
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFile的返回值
lpFindData
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_InquestFindFile得到当前的查找句柄。此接口用于获取一条已查找到的文件信息，若要获取全部的已查找到的文件信息，需要循环调用此接口。

See Also

NET_DVR_InquestFindFile


NET_DVR_InquestFindClose

停止搜索审讯文件，释放资源。

BOOL NET_DVR_InquestFindClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_InquestFindFile或NET_DVR_InquestFindFile_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestFindFile_V30 NET_DVR_InquestFindFile


NET_DVR_InquestDeleteFile_V30

删除审讯文件。

BOOL NET_DVR_InquestDeleteFile_V30(
  LONG                      lUserID,
  LPNET_DVR_INQUEST_ROOM    lpInquestRoom,
  LPNET_DVR_INQUEST_FILES   lpDeleteFile
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
lpDeleteFile
[in] 要删除的审讯文件信息指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

刻录文件的信息可以通过接口NET_DVR_InquestFindFile和NET_DVR_InquestFindNextFile获取。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于
NET_DVR_InquestDeleteFile


NET_DVR_InquestCDWByFile

按文件名刻录文件。

BOOL NET_DVR_InquestCDWByFile(
  LONG                      lUserID,
  LPNET_DVR_INQUEST_FILES   lpCdrwFile
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpCdrwFile
[in] 刻录文件信息的指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

刻录文件的信息可以通过接口NET_DVR_InquestFindFile和NET_DVR_InquestFindNextFile获取。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_InquestUploadFile_V30

向设备上传审讯文件。

LONG NET_DVR_InquestUploadFile_V30(
  LONG                     lUserID,
  LPNET_DVR_INQUEST_ROOM   lpInquestRoom,
  char                     *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
sFileName
[in] 要上传的文件名（全路径格式），最多128字节，含最后的‘\0’

Return Values

-1表示失败，其他值作为NET_DVR_InquestUploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestUploadClose
NET_DVR_InquestGetUploadState
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_InquestUploadFile


NET_DVR_InquestGetUploadState

获取文件上传的进度值和状态值。

int NET_DVR_InquestGetUploadState(
  LONG      lUpgradeHandle,
  LPDWORD   pProgress
);

Parameters

lUpgradeHandle
[in] NET_DVR_InquestUploadFile或NET_DVR_InquestUploadFile_V30的返回值
pProgress
[out] 上传文件的进度值，范围（0,100）

Return Values

-1表示失败，其他状态值定义如下：
1－上传成功
2－正在上传
3－上传失败
4－网络断开，状态未知
5—等待获取上传机会
6—硬盘错误
7—无审讯文件存放盘
8—容量不足
9—设备资源不足
10—文件个数超过40
接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestUploadFile_V30 NET_DVR_InquestUploadFile


NET_DVR_InquestUploadClose

停止上传审讯文件。

BOOL NET_DVR_InquestUploadClose(
  LONG   lUploadHandle
);

Parameters

lUploadHandle
[in] 上传文件句柄，NET_DVR_InquestUploadFile或NET_DVR_InquestUploadFile_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestUploadFile_V30 NET_DVR_InquestUploadFile


NET_DVR_InquestStartCDW_V30

审讯中开始刻录。

BOOL NET_DVR_InquestStartCDW_V30(
  LONG                      lUserID,
  LPNET_DVR_INQUEST_ROOM    lpInquestRoom,
  BOOL                      bNotBurn
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
bNotBurn
[in] 是否不刻录：0- 录像并刻录，1- 只录像不刻录

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestStopCDW_V30
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

该接口扩展源于

NET_DVR_InquestStartCDW


NET_DVR_InquestStopCDW_V30

审讯中停止刻录。

BOOL NET_DVR_InquestStopCDW_V30(
  LONG                      lUserID,
  LPNET_DVR_INQUEST_ROOM    lpInquestRoom,
  BOOL                      bCancelWrite
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
bCancelWrite
[in] 正常的情况在结束后会对光盘封盘；代表庭审暂停，这样设备不会对光盘进行封盘。TRUE-不封盘；FALSE-封盘

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestStartCDW_V30
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

该接口扩展源于

NET_DVR_InquestStopCDW


NET_DVR_InquestGetCDWState_V30

获取刻录状态。

BOOL NET_DVR_InquestGetCDWState_V30(
  LONG                            lUserID,
  LPNET_DVR_INQUEST_ROOM          lpInquestRoom,
  LPNET_DVR_INQUEST_CDRW_STATUS   pStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
pStatus
[out] 刻录状态信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V30

Reference Interface

该接口扩展源于

NET_DVR_InquestGetCDWState


NET_DVR_InquestSendMessage

发送重点标记信息。

BOOL NET_DVR_InquestSendMessage(
  LONG                      lUserID,
  LPNET_DVR_INQUEST_ROOM    lpInquestRoom,
  LPNET_DVR_INQUEST_MESSAGE  lpInquestMessage
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
lpInquestMessage
[in] 重点标记信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_InquestResumeEvent

恢复审讯事件。

LONG NET_DVR_InquestResumeEvent(
  LONG                              lUserID,
  LPNET_DVR_INQUEST_RESUME_EVENT    lpResumeEvent,
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpResumeEvent
[in] 需恢复的事件信息

Return Values

-1表示失败，其他值作为NET_DVR_InquestGetResumeProgress等函数的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetResumeProgress
NET_DVR_Login NET_DVR_Login_V30


NET_DVR_InquestGetResumeProgress

获取恢复过程状态和进度。

BOOL NET_DVR_InquestGetResumeProgress(
  LONG     lHandle,
  DWORD    *pState
);

Parameters

lHandle
[in] 审讯事件恢复的句柄，NET_DVR_InquestResumeEvent的返回值
pState
[in] 返回的刻录状态,1-99表示备份进度，100表示备份完成。其他定义如下：
宏定义 | 宏定义值 | 含义
备份刚刚开始, 设备初始化操作
BACKUP_SEARCH_DEVICE | 300 | 正在搜索备份设备
BACKUP_SEARCH_FILE | 301 | 正在搜索录像文件
备份出错
BACKUP_EXCEPTION | 400 | 备份异常
BACKUP_FAIL | 500 | 备份失败
BACKUP_TIME_SEG_NO_FILE | 501 | 时间段内无录像文件
BACKUP_NO_RESOURCE | 502 | 申请不到资源
BACKUP_DEVICE_LOW_SPACE | 503 | 备份设备容量不足
BACKUP_DISK_FINALIZED | 504 | 刻录光盘封盘
BACKUP_DISK_EXCEPTION | 505 | 刻录光盘异常
BACKUP_DEVICE_NOT_EXIST | 506 | 备份设备不存在
BACKUP_OTHER_BACKUP_WORK | 507 | 有其他备份操作在进行
BACKUP_USER_NO_RIGHT | 508 | 用户没有操作权限
BACKUP_OPERATE_FAIL | 509 | 操作失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在进度为100或者备份出错时, 需调用NET_DVR_InquestStopResume停止恢复。

See Also

NET_DVR_InquestResumeEvent NET_DVR_InquestStopResume


NET_DVR_InquestStopResume

停止恢复审讯事件。

BOOL NET_DVR_InquestStopResume(
  LONG   lHandle
);

Parameters

lHandle
[in] 审讯事件恢复的句柄，NET_DVR_InquestResumeEvent的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestResumeEvent


NET_DVR_InquestGetDeviceVersion

获取设备版本信息。

BOOL NET_DVR_InquestGetDeviceVersion(
  LONG                               lUserID,
  LPNET_DVR_INQUEST_DEVICE_VERSION   lpVersionInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpVersionInfo
[out] 设备版本信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件名，在本功能中设置为NULL
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
BATCH_UPLOAD_PICTURE_FILE | 25 | 批量上传图片文件 | NULL | NULL
  • 批量上传图片文件的接口调用流程：
    1）调用该接口（NET_DVR_UploadFile_V40）建立文件上传长连接；
    2）调用NET_DVR_UploadSend发送一张图片的数据；
    3）循环调用NET_DVR_GetUploadState获取上传状态和进度；
    4）上传成功之后，调用NET_DVR_GetUploadResult进行获取当前图片上传的URL；
    5）重复步骤2、3、4，顺序上传其他图片数据；
    6）图片全部上传结束之后，调用NET_DVR_UploadClose停止上传，释放资源。
  • 设备是否支持批量上传图片文件功能对应设备软硬件能力集(BasicCapability)中节点<isSupportBatchUploadPic>，接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_SOFTHARDWARE_ABILITY)。

See Also

NET_DVR_UploadSend NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_UploadSend

发送数据。

LONG NET_DVR_UploadSend(
  LONG                       lUploadHandle,
  LPNET_DVR_SEND_PARAM_IN    pstruSendParamIN,
  void                       *lpOutBuffer
);

lUploadHandle

lUploadHandle
[in] 文件上传句柄，NET_DVR_UploadFile_V40的返回值
pstruSendParamIN
[in] 上传的数据内容
lpOutBuffer
[out] 输出参数，保留，置为NULL

Return Values

-1表示失败，大于等于0表示本次发送成功的字节数，未发送成功的剩余字节数可以再次调用该接口进行发送。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_UploadFile_V40


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

  • 上传完成之后需要调用NET_DVR_GetUploadResult获取当前图片上传的URL，然后再上传下一张图片。
  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_GetUploadResult

获取当前图片上传的URL。

BOOL NET_DVR_GetUploadResult(
  LONG      lUploadHandle,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值
lpOutBuffer
[out] 图片URL信息缓冲区，对应NET_DVR_UPLOAD_FILE_RET结构体
dwOutBufferSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 上传时调用NET_DVR_GetUploadState获取进度和状态，上传完成之后调用该接口获取当前图片上传的URL，然后再上传下一张图片。

See Also

NET_DVR_UploadFile_V40


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_SOFTHARDWARE_ABILITY | 0x001 | 设备软硬件能力
DEVICE_USER_ABILITY | 0x00c | 设备用户管理参数能力
DEVICE_NETAPP_ABILITY | 0x00d | 设备网络应用参数能力
DEVICE_SERIAL_ABILITY | 0x010 | 设备RS232和RS485串口能力
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
ALARMHOST_ABILITY | 0x500 | 报警主机设备能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。前6种能力描述都是以XML格式给出，详见各产品的能力描述解析方法，这里不进行详细说明。下表列出了其余能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_SOFTHARDWARE_ABILITY | 获取设备软硬件能力 | 无 | 设备软硬件能力XML描述
DEVICE_USER_ABILITY | 获取设备用户管理参数能力 | 用户管理参数能力获取输入描述 | 设备用户管理参数能力XML描述
DEVICE_NETAPP_ABILITY | 获取设备网络应用参数能力 | 网络应用参数能力获取输入描述 | 设备网络应用参数能力XML描述
DEVICE_SERIAL_ABILITY | 获取设备RS232和RS485串口能力 | 串口能力获取输入描述 | 设备串口能力XML描述
DEVICE_ABILITY_INFO | 获取报警主机XML能力集 | 报警主机XML能力集获取输入描述 | 报警主机能力集XML描述(AlarmHostAbility)
ALARMHOST_ABILITY | 获取报警主机设备能力集 | 无 | NET_DVR_ALARMHOST_ABILITY

Remarks

1. wExpandAlarmInNum大于0表示支持防区编号功能，此时NET_DVR_ALARMIN_PARAM中的byJointSubSystem，byModuleStatus，wModuleAddress，byModuleChan，byModuleType，wZoneIndex有效。支持“获取子系统内防区”，“自动搜索”，“自动注册”功能。

2. wExpandAlarmOutNum大于0表示支持触发器编号功能，此时NET_DVR_ALARMOUT_PARAM中的wTriggerIndex，byModuleType，byModuleStatus，wModuleAddress，byModuleChan字段有效。支持“获取所有触发器”，“自动搜索”，“自动注册”功能。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_RS232CFG_V30 | 获取232串口参数 | 无效 | NET_DVR_RS232CFG_V30 | 1036
NET_DVR_GET_SENSOR_CFG | 获取模拟量参数 | 模拟量通道，从1开始 | NET_DVR_SENSOR_INFO | 1181
NET_DVR_GET_ALARMIN_PARAM | 获取防区参数 | 防区号，从0开始 | NET_DVR_ALARMIN_PARAM | 1183
NET_DVR_GET_ALARMIN_PARAM_V50 | 获取防区参数V50 | 防区号，从0开始 | NET_DVR_ALARMIN_PARAM_V50 | 1201
NET_DVR_GET_ALARMOUT_PARAM | 获取触发器参数 | 触发器号，从0开始 | NET_DVR_ALARMOUT_PARAM | 1185
NET_DVR_GET_SIREN_PARAM | 获取警号参数 | 1个警号，设为0 | NET_DVR_SIREN_PARAM | 1187
NET_DVR_GET_ALARM_RS485CFG | 获取报警主机RS485参数 | 485通道号，从1开始 | NET_DVR_ALARM_RS485CFG | 1189
NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 | 获取报警主机主要状态 | 无效 | NET_DVR_ALARMHOST_MAIN_STATUS_V40 | 2072
NET_DVR_GET_ALARMHOST_OTHER_STATUS | 获取报警主机其他状态 | 无效 | NET_DVR_ALARMHOST_OTHER_STATUS | 1191
NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50 | 获取报警主机其他状态V50 | 无效 | NET_DVR_ALARMHOST_OTHER_STATUS_V50 | 2228
NET_DVR_GET_ALARMHOST_OTHER_STATUS_V51 | 获取报警主机其他状态V50 | 无效 | NET_DVR_ALARMHOST_OTHER_STATUS_V50 | 2228
NET_DVR_GET_ALARMHOST_ENABLECFG | 获取报警主机使能状态 | 无效 | NET_DVR_ALARMHOST_ENABLECFG | 1193
NET_DVR_GET_GATEWAY_CFG | 获取门禁参数 | 门禁号，从1开始 | NET_DVR_GATEWAY_CFG | 1196
NET_DVR_GET_ALARMDIALMODECFG | 获取报警主机拨号参数 | 无效 | NET_DVR_ALARMHOSTDIALCFG | 1198
NET_DVR_GET_ALARMHOSTDIALSETUPMODE | 获取报警主机拨号启用方式 | 无效 | NET_DVR_ALARMHOSTDIALSETUPMODE | 1204
NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG | 获取子系统参数，子系统的数量从能力集获取 | 子系统号，从1开始 | NET_DVR_ALARMSUBSYSTEMPARAM | 2001
NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG | 获取无线网络参数配置 | 无效 | NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG | 2005
NET_DVR_GET_ALARMHOST_NETCFG_V50 | 获取报警主机网络参数配置V50 | 网卡号：1-主网卡，2-扩展网卡，3-无线网卡 | NET_DVR_ALARMHOST_NETCFG_V50 | 2224
NET_DVR_GET_LED_SCREEN_CFG | 获取LED屏幕参数 | 串口号，从0开始 | NET_DVR_LED_SCREEN_CFG | 2009
NET_DVR_GET_LED_CONTENT_CFG | 获取LED屏显内容 | 串口号，从0开始 | NET_DVR_LED_CONTENT_CFG | 2011
NET_DVR_GET_LED_TIMER_SWITCH | 获取LED屏定时开关参数 | 串口号，从0开始 | NET_DVR_LED_SWITCH_TIME | 2015
NET_DVR_GET_LED_TIMER_BRIGHTNESS | 获取分时LED屏亮度 | 串口号，从0开始 | NET_DVR_LED_BRIGHTNESS_STEP | 2018
NET_DVR_GET_ALARMHOST_AUDIO_ASSOCIATE_ALARM | 获取音频跟随报警事件 | 无效 | NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM | 2021
NET_DVR_GET_LED_STATUS | 获取LED屏状态 | 串口号，从0开始 | NET_DVR_LED_STATUS | 2023
NET_DVR_GET_ALARMHOST_SUBSYSTEM_CFG_EX | 获取子系统扩展参数，子系统的数量从能力集获取 | 子系统号，从1开始 | NET_DVR_SUBSYSTEM_PARAM_EX | 2030
NET_DVR_GET_ALARMHOST_PRINTER_CFG | 获取打印机配置参数 | 无效 | NET_DVR_ALARMHOST_PRINTER_CFG | 2032
NET_DVR_GET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG | 获取事件触发触发器配置 | 从0开始，触发器通道数从能力集获取 | NET_DVR_TRIGGER_EVENT | 2037
NET_DVR_GET_ALARMHOST_FAULT_CFG | 获取故障处理配置信息 | 无效 | NET_DVR_ALARMHOST_FAULT_CFG | 2039
NET_DVR_GET_SAFETYCABIN_WORK_MODE | 获取防护舱工作模式参数 | 无效 | NET_DVR_SAFETYCABIN_WORK_MODE | 2044
NET_DVR_GET_SAFETYCABIN_PERSON_SIGNAL_CFG | 获取防护舱人信号探测参数 | 无效 | NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG | 2046
NET_DVR_GET_ALARMHOST_MODULE_CFG | 获取模块信息 | 模块号（模块地址）：1~253 | NET_DVR_ALARMHOST_MODULE_CFG | 2048
NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE | 获取外接设备报警限值 | 高2字节表示485通道号，低2字节表示槽位号，都从1开始 | NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE | 2052
NET_DVR_GET_ALARMHOST_SENSOR_JOINT_CFG | 获取模拟量关联配置 | 模拟量号，从1开始 | NET_DVR_ALARMHOST_SENSOR_JOINT_CFG | 2053
NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG | 获取报警主机485槽位参数 | 高2字节表示485通道号，低2字节表示槽位号，都从1开始 | NET_DVR_ALARMHOST_RS485_SLOT_CFG | 2056
NET_DVR_GET_ALARMHOST_SENSOR_VALUE | 获取模拟量实时数据 | 模拟量号 | NET_DVR_SENSOR_ALARM | 2063
NET_DVR_GET_ONE_OUTPUT_SCH_RULECFG_V40 | 获取单个时控输出参数 | 规则索引，从1开始 | NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40 | 2078
NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG_V40 | 获取时控输出参数 | 无效 | NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40 | 2080
NET_DVR_GET_DEVICE_SELF_CHECK_STATE | 获取设备自检状态 | 无效 | NET_DVR_DEVICE_SELF_CHECK_STATE | 2707
NET_DVR_GET_SUBSYSTEM_ALARM | 获取子系统定时布撤防参数 | 子系统号，从1开始 | NET_DVR_SUBSYSTEM_ALARM | 1211
NET_DVR_GET_ALLOWLIST_ALARM | 获取授权名单参数 | 授权名单索引号，从1开始 | NET_DVR_ALARM_PHONECFG | 1215
NET_DVR_GET_PRIOR_ALARM | 获取优先计划子系统定时布撤防参数 | 无效 | NET_DVR_PRIOR_SCHEDTIME | 1224
NET_DVR_GET_TAMPER_ALARMIN_PARAM | 获取防区防拆参数 | 防区号，从0开始 | NET_DVR_TAMPER_ALARMIN_PARAM | 1226
NET_DVR_GET_ALARM_CAPTRUE_CFG | 获取报警抓图参数 | 通道号 | NET_DVR_ALARM_CAPTRUE_CFG | 2074
NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG | 获取遥控器权限参数 | 遥控器用户索引 | NET_DVR_REMOTECONTROLLER_PERMISSION_CFG | 2200
NET_DVR_GET_PREVIEW_DELAY_CFG | 获取延迟预览参数配置 | 通道号 | NET_DVR_PREVIEW_DELAY_CFG | 2206
NET_DVR_GET_ZONE_CHANNEL_LINKAGE_CFG | 获取防区联动视频通道配置 | 防区号，从0开始 | NET_DVR_ZONE_CHANNEL_LINKAGE_CFG | 2208
NET_DVR_GET_CENTER_SERVER_CFG | 获取报警中心服务器配置 | 无效 | NET_DVR_CENTER_SERVER_CFG | 2210
NET_DVR_GET_ALARM_CHAN_ABLITITY | 获取报警相关通道参数能力 | 无效 | NET_DVR_ALARM_CHAN_ABLITITY | 2714
NET_DVR_GET_ALARMCENTER_NETCFG | 获取报警中心网络参数配置 | 无效 | NET_DVR_ALARMCENTER_NETCFG | 2715
NET_DVR_GET_SAFETYCABIN_STATE | 获取防护舱状态 | 无效 | NET_DVR_ALARMHOST_SAFETYCABINSTATE | 2197
NET_DVR_GET_RS485_CASCADE_CFG | 获取RS485级联设备配置 | 无效 | NET_DVR_RS485_CASCADE_CFG | 2198
NET_DVR_GET_RS485_PROTOCOL_VERSION | 获取RS485协议库版本信息 | 无效 | NET_DVR_RS485_PROTOCOL_VERSION | 10301
NET_DVR_GET_AIR_CONDITION_PARAM | 获取空调参数 | 高2字节表示485通道号，低2字节表示槽位号，都从1开始 | NET_DVR_AIR_CONDITION_PARAM | 2711

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

1.设备所支持的事件类型从能力集获取，事件触发触发器开启和事件触发触发器关闭为互斥，不能将开启和关闭选为同一个事件。

2.全局事件：bit0-交流电掉电，bit1-电池电压低，bit2-电话线掉线，bit3-有线网络异常，bit4-无线网络异常，bit5-硬盘故障, bit6-3G/4G信号异常, bit7-（模块链接）第三方主机掉线

3.子系统事件：bit0-进入延时，bit1-退出延时，bit2-布防，bit3-撤防，bit4-报警，bit5-消除报警记忆，bit6-报警恢复，bit7-防区防拆，bit8-防区防拆恢复

4. DS19-AXX和DS19-SXX系列，子系统处于布防状态下不能设置。

5. DS19-AXX和DS19-SXX系列，主机处于编程模式，步测模式下不能设置。

6.事件触发触发器和事件触发防区中不能包含同一个事件，例如，“全局事件触发触发器开启”中选择了交流电断电这个事件，那么“全局事件触发触发器关闭”中就不能再选择交流电断电事件。否则配置失败。

7.wExpandAlarmInNum大于0表示支持防区编号功能，此时NET_DVR_ALARMIN_PARAM中的byJointSubSystem，byModuleStatus，wModuleAddress，byModuleChan，byModuleType，wZoneIndex有效。支持“获取子系统内防区”，“自动搜索”，“自动注册”功能。

8.本地防区的byJointSubSystem，byModuleStatus，wModuleAddress，byModuleChan，byModuleType，wZoneIndex参数不可修改。

9.下列情况下防区参数不能被修改：防区处于布防状态，或者防区所在子系统处于布防状态下，或者主机处于编程模式，或者主机处于步测模式。

10.DS-19AXX，DS-19SXX系列主机，修改防区类型时，如果该防区处于旁路状态，则会自动旁路恢复。其他系列主机旁路状态下不允许修改防区参数，此时修改参数则返回错误29（设备操作失败）。

11.防区类型是24小时类的防区，则不允许设置byArrayBypass为1（支持组旁路）

See Also

NET_DVR_SetDVRConfig


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_RS232CFG_V30 | 设置232串口参数 | 无效 | NET_DVR_RS232CFG_V30 | 1037
NET_DVR_SET_SENSOR_CFG | 设置模拟量参数 | 模拟量通道，从1开始 | NET_DVR_SENSOR_INFO | 1180
NET_DVR_SET_ALARMIN_PARAM | 设置防区参数 | 防区号，从0开始 | NET_DVR_ALARMIN_PARAM | 1182
NET_DVR_SET_ALARMIN_PARAM_V50 | 设置防区参数V50 | 防区号，从0开始 | NET_DVR_ALARMIN_PARAM_V50 | 1200
NET_DVR_SET_ALARMOUT_PARAM | 设置触发器参数 | 触发器号，从0开始 | NET_DVR_ALARMOUT_PARAM | 1184
NET_DVR_SET_SIREN_PARAM | 设置警号参数 | 1个警号，设为0 | NET_DVR_SIREN_PARAM | 1186
NET_DVR_SET_ALARM_RS485CFG | 设置报警主机RS485参数 | 485通道号，从1开始 | NET_DVR_ALARM_RS485CFG | 1188
NET_DVR_SET_ALARMHOST_ENABLECFG | 设置报警主机使能状态 | 无效 | NET_DVR_ALARMHOST_ENABLECFG | 1192
NET_DVR_SET_GATEWAY_CFG | 设置门禁参数 | 门禁号，从1开始 | NET_DVR_GATEWAY_CFG | 1197
NET_DVR_SET_ALARMDIALMODECFG | 设置报警主机拨号参数 | 无效 | NET_DVR_ALARMHOSTDIALCFG | 1199
NET_DVR_SET_ALARMHOSTDIALSETUPMODE | 设置报警主机拨号启用方式 | 无效 | NET_DVR_ALARMHOSTDIALSETUPMODE | 1205
NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG | 设置子系统参数，子系统的数量从能力集获取 | 子系统号，从1开始 | NET_DVR_ALARMSUBSYSTEMPARAM | 2002
NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG | 设置无线网络参数 | 无效 | NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG | 2006
NET_DVR_SET_ALARMHOST_NETCFG_V50 | 设置报警主机网络参数配置V50 | 网卡号：1-主网卡，2-扩展网卡，3-无线网卡 | NET_DVR_ALARMHOST_NETCFG_V50 | 2225
NET_DVR_SET_LED_SCREEN_CFG | 设置LED屏幕参数 | 串口号，从0开始 | NET_DVR_LED_SCREEN_CFG | 2010
NET_DVR_SET_LED_CONTENT_CFG | 设置LED屏显内容 | 串口号，从0开始 | NET_DVR_LED_CONTENT_CFG | 2012
NET_DVR_SET_LED_TIMER_SWITCH | 设置LED屏定时开关参数 | 串口号，从0开始 | NET_DVR_LED_SWITCH_TIME | 2016
NET_DVR_SET_LED_TIMER_BRIGHTNESS | 设置分时LED屏亮度 | 串口号，从0开始 | NET_DVR_LED_BRIGHTNESS_STEP | 2019
NET_DVR_LED_CHECKTIME | 设置LED校时 | 串口号，从0开始 | NET_DVR_TIME_EX | 2020
NET_DVR_SET_ALARMHOST_AUDIO_ASSOCIATE_ALARM | 设置音频跟随报警事件 | 无效 | NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM | 2022
NET_DVR_SET_ALARMHOST_SUBSYSTEM_CFG_EX | 设置子系统扩展参数，子系统的数量从能力集获取 | 子系统号，从1开始 | NET_DVR_SUBSYSTEM_PARAM_EX | 2031
NET_DVR_SET_ALARMHOST_PRINTER_CFG | 设置打印机配置参数 | 无效 | NET_DVR_ALARMHOST_PRINTER_CFG | 2033
NET_DVR_SET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG | 设置事件触发触发器配置 | 从0开始，触发器通道数从能力集获取 | NET_DVR_TRIGGER_EVENT | 2038
NET_DVR_SET_ALARMHOST_FAULT_CFG | 设置故障处理配置 | 无效 | NET_DVR_ALARMHOST_FAULT_CFG | 2040
NET_DVR_SET_SAFETYCABIN_WORK_MODE | 设置防护舱工作模式参数 | 无效 | NET_DVR_SAFETYCABIN_WORK_MODE | 2045
NET_DVR_SET_SAFETYCABIN_PERSON_SIGNAL_CFG | 设置防护舱人信号探测参数 | 无效 | NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG | 2047
NET_DVR_SET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE | 设置外接设备报警限值 | 高位2字节表示485通道号，低位2字节表示槽位号，都从1开始 | NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE | 2051
NET_DVR_SET_ALARMHOST_SENSOR_JOINT_CFG | 设置模拟量关联配置 | 模拟量号，从1开始 | NET_DVR_ALARMHOST_SENSOR_JOINT_CFG | 2054
NET_DVR_SET_ALARMHOST_RS485_SLOT_CFG | 设置报警主机485槽位参数 | 高2字节表示485通道号，低2字节表示槽位号，都从1开始 | NET_DVR_ALARMHOST_RS485_SLOT_CFG | 2055
NET_DVR_SET_ONE_OUTPUT_SCH_RULECFG_V40 | 设置单个时控输出参数 | 规则索引，从1开始 | NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40 | 2079
NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG_V40 | 设置时控输出参数 | 遥控器用户索引 | NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40 | 2081
NET_DVR_SET_SUBSYSTEM_ALARM | 设置子系统定时布撤防参数 | 子系统号，从1开始 | NET_DVR_SUBSYSTEM_ALARM | 1210
NET_DVR_SET_ALLOWLIST_ALARM | 设置授权名单参数 | 授权名单索引号，从1开始 | NET_DVR_ALARM_PHONECFG | 1216
NET_DVR_SET_PRIOR_ALARM | 设置优先计划子系统定时布撤防参数 | 无效 | NET_DVR_PRIOR_SCHEDTIME | 1223
NET_DVR_SET_TAMPER_ALARMIN_PARAM | 设置防区防拆参数 | 防区号，从0开始 | NET_DVR_TAMPER_ALARMIN_PARAM | 1225
NET_DVR_SET_ALARM_CAPTRUE_CFG | 设置报警抓图参数 | 通道号 | NET_DVR_ALARM_CAPTRUE_CFG | 2075
NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG | 设置遥控器权限参数 | 遥控器用户索引 | NET_DVR_REMOTECONTROLLER_PERMISSION_CFG | 2201
NET_DVR_SET_PREVIEW_DELAY_CFG | 设置延迟预览参数配置 | 通道号 | NET_DVR_PREVIEW_DELAY_CFG | 2207
NET_DVR_SET_ZONE_CHANNEL_LINKAGE_CFG | 获取防区联动视频通道配置 | 防区号，从0开始 | NET_DVR_ZONE_CHANNEL_LINKAGE_CFG | 2209
NET_DVR_SET_CENTER_SERVER_CFG | 设置报警中心服务器配置 | 无效 | NET_DVR_CENTER_SERVER_CFG | 2211
NET_DVR_SET_ALARMCENTER_NETCFG | 设置报警中心网络参数配置 | 无效 | NET_DVR_ALARMCENTER_NETCFG | 2716
NET_DVR_SET_RS485_CASCADE_CFG | 设置RS485级联设备配置 | 无效 | NET_DVR_RS485_CASCADE_CFG | 2199
NET_SDK_GENERATE_OUTPUT_CONTROL | 设置通用扩展输出模块控制 | 高2字节表示485通道号，低2字节表示槽位号，都从1开始 | NET_DVR_GENERATE_OUTPUT_CTRL | 9315

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

1.设备所支持的事件类型从能力集获取，事件触发触发器开启和事件触发触发器关闭为互斥，不能将开启和关闭选为同一个事件。

2.全局事件：bit0-交流电掉电，bit1-电池电压低，bit2-电话线掉线，bit3-有线网络异常，bit4-无线网络异常，bit5-硬盘故障, bit6-3G/4G信号异常, bit7-（模块链接）第三方主机掉线

3.子系统事件：bit0-进入延时，bit1-退出延时，bit2-布防，bit3-撤防，bit4-报警，bit5-消除报警记忆，bit6-报警恢复，bit7-防区防拆，bit8-防区防拆恢复

4. DS19-AXX和DS19-SXX系列，子系统处于布防状态下不能设置。

5. DS19-AXX和DS19-SXX系列，主机处于编程模式，步测模式下不能设置。

6.事件触发触发器和事件触发防区中不能包含同一个事件，例如，“全局事件触发触发器开启”中选择了交流电断电这个事件，那么“全局事件触发触发器关闭”中就不能再选择交流电断电事件。否则配置失败。

See Also

NET_DVR_GetDVRConfig


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ALARM_POINT_CFG | 获取点号信息 | dwCount个NET_DVR_INPUT_INFO | dwCount个NET_DVR_ALARM_POINT_CFG | 2058
NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 | 远程获取数据上传方式 | dwCount个中心组序号，每个序号为4个字节 | dwCount个NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 | 2064
NET_DVR_GET_ALARMHOST_WIRELESS_BUSINNESS_INFO | 无线业务查询，dwCount为1 | dwCount个NET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND | dwCount个NET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO | 2204

NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40是对NET_DVR_AlarmHostGetReportMode接口的扩展，向下兼容。

NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40时，对于网络主机2.0以前的设备，dwCount的值不是任意的，必须为能力集中返回的中心组个数。且lpStatusList无效。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_ALARM_POINT_CFG | 设置点号信息 | dwCount个NET_DVR_INPUT_INFO | dwCount个NET_DVR_ALARM_POINT_CFG | 2059
NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 | 远程设置数据上传方式 | dwCount个中心组序号，每个序号为4个字节 | dwCount个NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 | 2065

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动长连接远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_ALARMHOST_MODULE_LIST | 1222 | 获取所有模块 | 4字节模块类型：1-键盘，2-触发器，3-防区，4-网络模块 | NULL
NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM | 2034 | 获取指定子系统内的所有防区 | NET_DVR_LIST_INFO | NULL
NET_DVR_GET_ALARMHOST_TRIGGER_LIST | 2035 | 获取所有触发器 | NULL | NULL
NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE | 2041 | 自动搜索外接模块 | NULL | 返回进度和状态
NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE | 2042 | 自动注册外接模块 | NULL | 返回进度和状态
NET_DVR_GET_ALL_VARIABLE_INFO | 2057 | 获取所有变量元素信息 | NET_DVR_INPUT_INFO | NULL
NET_DVR_GET_HISTORY_VALUE | 2060 | 获取历史数据 | NET_DVR_SEARCH_CONDITION | NULL
NET_DVR_GET_ALL_REMOTECONTROLLER_LIST | 2205 | 获取所有遥控器 | NULL | NULL
NET_DVR_GET_ALL_ALARM_RS485CFG | 2705 | 获取所有RS485参数 | NET_DVR_485LIST_INFO | NULL
NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG | 2706 | 获取所有485槽位参数 | NET_DVR_485_SLOT_LIST_INFO | NULL
NET_DVR_GET_ALL_ALARM_POINT_CFG | 2708 | 获取所有点号参数 | NULL | NULL
NET_DVR_GET_ALL_ALARM_SENSOR_CFG | 2709 | 获取所有模拟量参数 | NULL | NULL
NET_DVR_GET_ALL_ALARM_SENSOR_JOINT | 2710 | 获取所有模拟量联动参数 | NULL | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数，
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取相关参数，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_ALARMHOST_MODULE_LIST | 获取所有模块 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM | 获取指定子系统内的所有防区 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALARMHOST_TRIGGER_LIST | 获取所有触发器 | NET_DVR_GetNextRemoteConfig
NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE | 自动搜索外接模块 | NULL
NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE | 自动注册外接模块 | NULL
NET_DVR_GET_ALL_VARIABLE_INFO | 获取所有变量元素信息 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_HISTORY_VALUE | 获取历史数据 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALL_REMOTECONTROLLER_LIST | 获取所有遥控器 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALL_ALARM_RS485CFG | 获取所有RS485参数 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG | 获取所有485槽位参数 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALL_ALARM_POINT_CFG | 获取所有点号参数 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALL_ALARM_SENSOR_CFG | 获取所有模拟量参数 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALL_ALARM_SENSOR_JOINT | 获取所有模拟量联动参数 | NET_DVR_GetNextRemoteConfig
  • 当命令dwCommand为NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE或NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE时，调用该接口启动自动搜索或者自动注册，通过回调函数 fRemoteConfigCallback获取进度和状态。自动搜索或者自动注册完成后调用NET_DVR_StopRemoteConfig释放资源。然后再调用该接口，使用命令NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM和NET_DVR_GET_ALARMHOST_TRIGGER_LIST分别获取“子系统内所有防区”和“所有触发器”信息。
  • 自动搜索：搜索出当前可以通信的外接模块，自动注册：搜索出当前可以通信的外接模块并重新分配地址。

    • See Also

    NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_GET_ALARMHOST_MODULE_LIST | 1222 | 获取所有模块 | NET_DVR_MODULE_INFO
NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM | 2034 | 获取指定子系统内的所有防区 | NET_DVR_ALARMIN_PARAM
NET_DVR_GET_ALARMHOST_TRIGGER_LIST | 2035 | 获取所有触发器 | NET_DVR_ALARMOUT_PARAM
NET_DVR_GET_ALL_VARIABLE_INFO | 2057 | 获取所有变量元素信息 | NET_DVR_ALARM_VARIABLE_CFG
NET_DVR_GET_HISTORY_VALUE | 2060 | 获取历史数据 | NET_DVR_HISTORY_DATA
NET_DVR_GET_ALL_REMOTECONTROLLER_LIST | 2205 | 获取所有遥控器 | NET_DVR_REMOTECONTROLLER_PERMISSION_CFG
NET_DVR_GET_ALL_ALARM_RS485CFG | 2705 | 获取RS485参数 | NET_DVR_ALARM_RS485CFG
NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG | 2706 | 获取报警主机485槽位参数 | NET_DVR_ALARMHOST_RS485_SLOT_CFG
NET_DVR_GET_ALL_ALARM_POINT_CFG | 2708 | 获取所有点号参数 | NET_DVR_ALARM_POINT_CFG
NET_DVR_GET_ALL_ALARM_SENSOR_CFG | 2709 | 获取所有模拟量参数 | NET_DVR_SENSOR_INFO
NET_DVR_GET_ALL_ALARM_SENSOR_JOINT | 2710 | 获取所有模拟量联动参数 | NET_DVR_ALARMHOST_SENSOR_JOINT_CFG

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_TURNON_LED | 2013 | 打开LED屏 | NET_DVR_CONTROL_PARAM
NET_DVR_TURNOFF_LED | 2014 | 关闭LED屏 | NET_DVR_CONTROL_PARAM
NET_DVR_SET_LED_BRIGHTNESS | 2017 | 手动设置LED屏亮度 | NET_DVR_CONTROL_PARAM
NET_DVR_CLOSE_SUBSYSTEM_FAULT_ALARM | 2027 | 关闭子系统故障提示音 | NET_DVR_CONTROL_PARAM
NET_DVR_SET_SUBSYSTEM_BYPASS | 2028 | 子系统旁路 | NET_DVR_CONTROL_PARAM
NET_DVR_CANCEL_SUBSYSTEM_BYPASS | 2029 | 子系统旁路恢复 | NET_DVR_CONTROL_PARAM
NET_DVR_ARM_ALARMHOST_SUBSYSTEM | 2036 | 按布防类型对子系统布防 | NET_DVR_CONTROL_PARAM
NET_DVR_CLOSE_ALARMHOST_OVERALL_FAULT_ALARM | 2043 | 关闭全局键盘故障提示音 | NET_DVR_CONTROL_PARAM
NET_DVR_ALARMHOST_CLOSE_SUBSYSTEM | 2082 | 对子系统撤防操作 | NET_DVR_CONTROL_PARAM

Remarks

  • 是否支持“按布防类型对子系统布防”功能通过能力集NET_DVR_ALARMHOST_ABILITY中的bySubSystemArmType判断。
  • 能力集NET_DVR_ALARMHOST_ABILITY中的全局键盘数（byOverallKeyboard）大于0，则设备支持“关闭全局键盘故障提示音”功能。
  • 按布防类型对子系统布防(NET_DVR_ARM_ALARMHOST_SUBSYSTEM)命令兼容接口NET_DVR_AlarmHostSubSystemSetupAlarmChan。

See Also

NET_DVR_Login_V40


NET_DVR_GetAlarmDeviceUser

获取报警主机设备用户配置信息。

BOOL NET_DVR_GetAlarmDeviceUser(
  LONG                        lUserID,
  LONG                        lUserIndex,
  NET_DVR_ALARM_DEVICE_USER   *lpDeviceUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lUserIndex
[in] 报警主机设备用户索引
lpDeviceUser
[out] 设备用户配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

报警主机设备用户，即网络用户，包括admin用户、管理员、普通操作员，最大个数和支持的权限可以通过能力集NET_DVR_GetDeviceAbility（能力集类型：DEVICE_USER_ABILITY，对应节点<AlarmhostPermission>）获取。

admin用户：默认的第一个用户为admin用户，admin用户也属于管理员，但权限要高于其他普通管理员。一个设备只有一个admin用户，admin用户可以设置并修改普通用户的权限，可以查看所有用户的信息，admin用户的权限不可修改。

管理员用户：对视频报警主机，拥有除了恢复默认参数、格式化硬盘、升级系统程序、重启外的所有admin用户的权限。其他报警主机的管理员用户可以拥有所有权限。管理员权限不能被修改，admin用户也不能修改管理员权限。管理员用户可以查看普通用户和自己的信息，不能查看admin用户及其他管理员用户信息，可以设置和修改普通用户的权限，不能修改自己的权限。

普通用户：默认拥有获取参数权限，其他权限均需设置。设置的最大化权限为管理员用户所拥有的权限。普通用户只能查看自己的信息，不能查看admin用户、管理员用户及其他普通用户的信息，不能修改自己的权限。

接口支持的设备：DS_19XX（1900系列，只有1906产品，其他都为串口协议）、DS_19DXX（动环监控报警主机）、DS_19AXX（通用报警主机类产品）、DS_19CXX（自助银行报警主机）、DS_1HXX（防护舱）。设备用户是指通过SDK连接的远程登录的用户。而操作用户是指报警主机的本地用户，如用键盘操作的用户。

See Also

NET_DVR_SetAlarmDeviceUser
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_SetAlarmDeviceUser

报警主机设备用户配置。

BOOL NET_DVR_SetAlarmDeviceUser(
  LONG                        lUserID,
  LONG                        lUserIndex,
  NET_DVR_ALARM_DEVICE_USER   *lpDeviceUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lUserIndex
[in] 报警主机设备用户索引
lpDeviceUser
[in] 设备用户配置

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

报警主机设备用户，即网络用户，包括admin用户、管理员、普通操作员，最大个数和支持的权限可以通过能力集NET_DVR_GetDeviceAbility（能力集类型：DEVICE_USER_ABILITY，对应节点<AlarmhostPermission>）获取。

admin用户：默认的第一个用户为admin用户，admin用户也属于管理员，但权限要高于其他普通管理员。一个设备只有一个admin用户，admin用户可以设置并修改普通用户的权限，可以查看所有用户的信息，admin用户的权限不可修改。

管理员用户：对视频报警主机，拥有除了恢复默认参数、格式化硬盘、升级系统程序、重启外的所有admin用户的权限。其他报警主机的管理员用户可以拥有所有权限。管理员权限不能被修改，admin用户也不能修改管理员权限。管理员用户可以查看普通用户和自己的信息，不能查看admin用户及其他管理员用户信息，可以设置和修改普通用户的权限，不能修改自己的权限。

普通用户：默认拥有获取参数权限，其他权限均需设置。设置的最大化权限为管理员用户所拥有的权限。普通用户只能查看自己的信息，不能查看admin用户、管理员用户及其他普通用户的信息，不能修改自己的权限。

接口支持的设备：DS_19XX（1900系列，只有1906产品，其他都为串口协议）、DS_19DXX（动环监控报警主机）、DS_19AXX（通用报警主机类产品）、DS_19CXX（自助银行报警主机）、DS_1HXX（防护舱）。设备用户是指通过SDK连接的远程登录的用户。而操作用户是指报警主机的本地用户，如用键盘操作的用户。

See Also

NET_DVR_GetAlarmDeviceUser
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetOperateUser

获取键盘操作用户配置信息。

BOOL NET_DVR_GetOperateUser(
  LONG                        lUserID,
  LONG                        lUserIndex,
  NET_DVR_OPERATE_USER   *lpOperateUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lUserIndex
[in] 键盘操作用户索引从1开始，0是安装员
lpOperateUser
[out] 键盘操作用户配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

报警主机键盘操作用户最大个数可以通过能力集NET_DVR_GetDeviceAbility（能力集类型：ALARMHOST_ABILITY）获取。

See Also

NET_DVR_SetOperateUser
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_SetOperateUser

设置键盘操作用户配置参数。

BOOL NET_DVR_SetOperateUser(
  LONG                   lUserID,
  LONG                   lUserIndex,
  NET_DVR_OPERATE_USER   *lpOperateUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lUserIndex
[in] 键盘操作用户索引从1开始，0是安装员
lpOperateUser
[in] 键盘操作用户配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

报警主机键盘操作用户最大个数可以通过能力集NET_DVR_GetDeviceAbility（能力集类型：ALARMHOST_ABILITY）获取。

See Also

NET_DVR_GetOperateUser
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetDeviceTypeList

获取485前端设备能力列表。

BOOL NET_DVR_GetDeviceTypeList(
  LONG                       lUserID,
  NET_DVR_DEVICE_TYPE_LIST   *lpDeviceTypeList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpOperateUser
[out] 485前端设备类型列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetDeviceProtoList

获取485前端设备支持的协议列表。

BOOL NET_DVR_GetDeviceProtoList(
  LONG                            lUserID,
  LONG                            lDeviceType,
  NET_DVR_DEVICE_PROTO_LIST   *lpDeviceProtoList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lDeviceType
[in] 设备类型
lpDeviceProtoList
[out] 485前端设备支持的协议列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_AlarmHostSerialStart

和报警主机设备建立透明通道。

LONG NET_DVR_AlarmHostSerialStart(
  LONG                            lUserID,
  LONG                            lSerialType,
  fAlarmHostSerialDataCallBack    cbSerialDataCallBack,
  DWORD                           dwUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lSerialType
[in] 建立透明通道类型：1- 建立232通道，2- 建立485通道
cbSerialDataCallBack
[in] 回调函数，用于接收透明通道数据
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fAlarmHostSerialDataCallBack)(
  LONG     lSerialHandle,
  LONG     lPort,
  LONG     lDateType,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  DWORD    dwUser
);

Callback Function Parameters

lSerialHandle
[out] NET_DVR_AlarmHostSerialStart的返回值
lPort
[out] 接收数据的槽位号，从1开始
lDateType
[out] 数据类型：0-表示数据接收正常，1-表示通道不支持透明通道（针对485口）
pRecvDataBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 数据大小
dwUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_AlarmHostSerialSend等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostSerialStop NET_DVR_AlarmHostSerialSend
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_AlarmHostSerialSend

向透明通道指定的485口或者232口发送数据。

BOOL NET_DVR_AlarmHostSerialSend(
  LONG     lSerialHandle,
  LONG     lPort,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lSerialHandle
[in] NET_DVR_AlarmHostSerialStart的返回值
lPort
[in] 串口号，从1开始
pSendBuf
[in] 发送数据的缓冲区指针
dwBufSize
[in] 缓冲区的大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostSerialStart


NET_DVR_AlarmHostSerialStop

断开透明通道。

BOOL NET_DVR_AlarmHostSerialStop(
  LONG  lSerialHandle
);

Parameters

lSerialHandle
[in] NET_DVR_AlarmHostSerialStart的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostSerialStart


NET_DVR_AlarmHostSetupAlarmChan

对防区布防。

BOOL NET_DVR_AlarmHostSetupAlarmChan(
  LONG                     lUserID,
  NET_DVR_ALARMIN_SETUP    *lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInter
[in] 防区参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostCloseAlarmChan
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_AlarmHostCloseAlarmChan

对防区撤防。

BOOL NET_DVR_AlarmHostCloseAlarmChan(
  LONG                     lUserID,
  NET_DVR_ALARMIN_SETUP    *lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInter
[in] 防区参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostSetupAlarmChan
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_BypassAlarmChan

对防区旁路。

BOOL NET_DVR_BypassAlarmChan(
  LONG                     lUserID,
  NET_DVR_ALARMIN_SETUP    *lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInter
[in] 防区参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

注意：防区处于布防状态下不能旁路；24小时防区不能被旁路；主机处于编程模式、步测模式下不能被旁路。在这三种情况下旁路，接口返回失败，错误号为11。

See Also

NET_DVR_UnBypassAlarmChan
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_UnBypassAlarmChan

对防区撤销旁路。

BOOL NET_DVR_UnBypassAlarmChan(
  LONG                     lUserID,
  NET_DVR_ALARMIN_SETUP    *lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInter
[in] 防区参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_BypassAlarmChan
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_SetAlarmHostOut

设置触发器(报警主机和报警板类)。

BOOL NET_DVR_SetAlarmHostOut(
  LONG     lUserID,
  LONG     lAlarmOutPort,
  LONG     lAlarmOutStatic
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lAlarmOutPort
[in] 触发器号。初始触发器号从0开始，0xffffffff表示全部触发器。
lAlarmOutStatic
[in] 触发器状态：0－停止输出，1－输出

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_AlarmHostAssistantControl

辅助功能控制。

BOOL NET_DVR_AlarmHostAssistantControl(
  LONG      lUserID,
  DWORD     dwType,
  DWORD     dwNumber,
  DWORD     dwCmdParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwType
[in] 辅助功能类型：1- 电锁，2- 移动门，3- 语音输出，4- 警号，5- 警灯
dwNumber
[in] 控制号。对于电锁、移动门，按位表示，从第零位开始；对于语音输出，不按位，对应的是语音输出号；对于警号(警号输出只有一个)，赋值为1；对于警灯(警灯输出只有一个) ，赋值为1。
dwCmdParam
[in] 命令参数：0- 关闭，1- 开启

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 对该接口调用前需要先对相应的功能使能，例如：要控制警号1开启，先要用是能状态配置将警号1使能。在不使能的情况下调用该接口，将返回错误29（设备操作失败）。
  • 辅助功能控制中的门禁控制通过接口NET_DVR_ControlGateway实现。
  • 辅助功能类型中，电锁、移动门控制，目前暂无设备支持。


NET_DVR_ControlGateway

远程门禁控制或梯控控制。

BOOL NET_DVR_ControlGateway(
  LONG     lUserID,
  LONG     lGatewayIndex,
  DWORD    dwStaic
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lGatewayIndex
[in] 门禁序号（楼层编号、锁ID），从1开始，-1表示对所有门（或者梯控的所有楼层）进行操作
dwStaic
[in] 命令值：0- 关闭（对于梯控，表示受控），1- 打开（对于梯控，表示开门），2- 常开（对于梯控，表示自由、通道状态），3- 常关（对于梯控，表示禁用），4- 恢复（梯控，普通状态），5- 访客呼梯（梯控），6- 住户呼梯（梯控）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

门禁控制功能使用的是该接口，报警主机的辅助功能控制中的电锁、移动门控制通过接口NET_DVR_AlarmHostAssistantControl实现。

控制智能锁为2-常开（自由、通道状态）时，到当天24时，会自动变成4-恢复（普通状态。


NET_DVR_AlarmHostArrayBypass

对防区进行组旁路。

BOOL NET_DVR_AlarmHostArrayBypass(
  LONG    lUserID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

一个子系统内，所有支持组旁路的防区，在进行组旁路操作时，这些防区都被旁路。防区是否加入是否加入旁路组，可以通过防区参数配置实现，对应接口：NET_DVR_GetDVRConfig(命令:NET_DVR_GET_ALARMIN_PARAM)、NET_DVR_SetDVRConfig(命令:NET_DVR_SET_ALARMIN_PARAM)，对应参数：NET_DVR_ALARMIN_PARAM结构体中byArrayBypass。

See Also

NET_DVR_AlarmHostArrayBypassResume


NET_DVR_AlarmHostArrayBypassResume

对防区进行组旁路恢复。

BOOL NET_DVR_AlarmHostArrayBypassResume(
  LONG    lUserID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostArrayBypass


NET_DVR_AlarmHostSubSystemSetupAlarmChan

对子系统布防。

BOOL NET_DVR_AlarmHostSubSystemSetupAlarmChan(
  LONG     lUserID,
  DWORD    dwSubSystemNum
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwSubSystemNum
[in] 子系统号，0xffffffff表示全部子系统

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

建议通过NET_DVR_RemoteControl(命令：NET_DVR_ARM_ALARMHOST_SUBSYSTEM)对子系统进行布防，支持按布防类型进行布防，兼容该布防接口(普通布防)。

See Also

NET_DVR_AlarmHostSubSystemCloseAlarmChan


NET_DVR_AlarmHostSubSystemCloseAlarmChan

对子系统撤防。

BOOL NET_DVR_AlarmHostSubSystemCloseAlarmChan(
  LONG     lUserID,
  DWORD    dwSubSystemNum
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwSubSystemNum
[in] 子系统号，0xffffffff表示全部子系统

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostSubSystemSetupAlarmChan


NET_DVR_AlarmHostClearAlarm

对子系统进行消警。

BOOL NET_DVR_AlarmHostClearAlarm(
  LONG     lUserID,
  DWORD    dwSubSystemNum
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwSubSystemNum
[in] 子系统号，从0开始

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_AlarmHostGetReportMode

获取报警上传方式及参数。

BOOL NET_DVR_AlarmHostGetReportMode(
  LONG     lUserID,
  LPVOID   lpOutputBuf,
  DWORD    dwOutputBufLen
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpOutputBuf
[out] 输出缓冲区指针
dwOutputBufLen
[in] 输出缓冲区大小，上层分配缓冲区时应该按能力集中心组最大个数来分配，即N*sizeof(NET_DVR_ALARMHOST_REPORTCENTER_CFG)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostSetReportMode

NET_DVR_ALARMHOST_REPORTCENTER_CFG


NET_DVR_AlarmHostSetReportMode

设置报警上传方式及参数。

BOOL NET_DVR_AlarmHostSetReportMode(
  LONG     lUserID,
  LONG     lCenterNum,
  LPVOID   lpInputBuf,
  DWORD    dwInputBufLen
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lCenterNum
[in] 中心组个数，lCenterNum从能力集获取（中心组个数）
lpInputBuf
[in] 输入缓冲区指针
dwInputBufLen
[in] 输入缓冲区长度，缓冲区大小为lCenterNum * sizeof(NET_DVR_ALARMHOST_REPORTCENTER_CFG)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AlarmHostGetReportMode

NET_DVR_ALARMHOST_REPORTCENTER_CFG


NET_DVR_GetBatteryVoltage

蓄电池电压查询。

BOOL NET_DVR_GetBatteryVoltage(
  LONG     lUserID,
  float    *pVoltage
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pVoltage
[out] 蓄电池电压值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_FindAlarmHostLog

查找报警主机的日志信息。

LONG NET_DVR_FindAlarmHostLog(
  LONG                                  lUserID,
  LONG                                  lSelectMode,
  NET_DVR_ALARMHOST_SEARCH_LOG_PARAM    *lpSearchParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lSelectMode
[in] 查询方式：0- 全部，1- 按类型，2- 按时间，3- 按时间和类型
lpSearchParam
[in] 日志信息查找结构体

Return Values

-1表示失败，其他值作为NET_DVR_FindNextAlarmHostLog等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindNextAlarmHostLog

NET_DVR_FindAlarmHostLogClose


NET_DVR_FindNextAlarmHostLog

逐条获取查找到的报警主机日志信息。

LONG NET_DVR_FindNextAlarmHostLog(
  LONG                        lFindHandle,
  NET_DVR_ALARMHOST_LOG_RET   *lpFindData
);

Parameters

lFindHandle
[in] 日志查找句柄，NET_DVR_FindAlarmHostLog的返回值
lpFindData
[out] 保存日志信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取日志信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到日志
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的日志，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找日志时异常

Remarks

在调用该接口获取查找日志之前，必须先调用NET_DVR_FindAlarmHostLog得到当前的查找句柄。

See Also

NET_DVR_FindAlarmHostLog


NET_DVR_FindAlarmHostLogClose

关闭报警主机日志查找，释放资源。

BOOL NET_DVR_FindAlarmHostLogClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindAlarmHostLog的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindAlarmHostLog


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_LOG_FILE | 19 | 日志导出 | NULL

Remarks

调用顺序：1.NET_DVR_StartDownload，命令：NET_SDK_DOWNLOAD_LOG_FIEL， LpInBuffer 为空；2、 调用接口NET_DVR_GetDownloadState，获取状态和进度；3、 重复步骤2，获取进度；4、调用接口NET_DVR_StopDownload停止下载。

导出的日志是设备端的调试信息，改接口对于第三方集成客户没有用，提供给设备研发人员维护使用。

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_GetDownloadState

获取文件下载的进度和状态。

LONG NET_DVR_GetDownloadState(
  LONG       lDownloadHandle,
  LPDWORD    pProgress
);

Parameters

lDownloadHandle
[in] 文件下载的句柄，NET_DVR_StartDownload的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为下载的状态值：1- 下载成功；2- 正在下载；3- 下载失败；4- 网络断开，状态未知。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用顺序：1.NET_DVR_StartDownload，命令：NET_SDK_DOWNLOAD_LOG_FIEL， LpInBuffer 为空；2、 调用接口NET_DVR_GetDownloadState，获取状态和进度；3、 重复步骤2，获取进度；4、调用接口NET_DVR_StopDownload停止下载。

See Also

NET_DVR_StartDownload NET_DVR_StartDownload


NET_DVR_StopDownload

停止文件下载。

BOOL NET_DVR_StopDownload(
  LONG    lHandle
);

Parameters

lHandle
[in] 文件下载的句柄，NET_DVR_StartDownload的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用顺序：1.NET_DVR_StartDownload，命令：NET_SDK_DOWNLOAD_LOG_FIEL， LpInBuffer 为空；2、 调用接口NET_DVR_GetDownloadState，获取状态和进度；3、 重复步骤2，获取进度；4、调用接口NET_DVR_StopDownload停止下载。

See Also

NET_DVR_StartDownload NET_DVR_GetDownloadState


NET_DVR_GetDeviceStatus

获取设备运行状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_STATE | 获取RS485外接设备状态 | dwCount个4字节整数（高位2字节表示通道号，低位2字节表示槽位号） | dwCount个NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE | 2050

调用该接口获取485外设状态时，每次只能获取1个设备的状态，即dwCount为1，lpStatusList设为NULL。

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传的文件名，给入全路径，最多128字节，文件名最多32字节,含最后的’\0’
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_MODBUS_CFG_FILE | 43 | 导入Modbus协议配置文件 | NULL | NULL

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 需要下载的文件对应的文件ID

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_MODBUS_CFG_FILE | 25 | 导出Modbus协议配置文件 | NULL

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_StartUploadFile

开始数据上传。

LONG NET_DVR_StartUploadFile(
  LONG                                lUserID,
  LPNET_DVR_ALARMHOST_UPLOAD_PARAM    lpStruUploadParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStruDownloadParam
[in] 数据上传参数

Return Values

-1表示失败，其他值作为NET_DVR_StopUploadFile等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传的数据大小不能超过1M，数据格式为2~16位、单通道、采样率22K。

See Also

NET_DVR_GetUploadFileProgress NET_DVR_GetUploadFileState NET_DVR_StopUploadFile


NET_DVR_GetUploadFileProgress

获取数据上传的进度。

LONG NET_DVR_GetUploadFileProgress(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 数据上传的句柄，NET_DVR_StartUploadFile的返回值

Return Values

-1表示失败，0～100表示数据上传的进度。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartUploadFile


NET_DVR_GetUploadFileState

获取数据上传的状态。

LONG NET_DVR_GetUploadFileState(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 数据上传的句柄，NET_DVR_StartUploadFile的返回值

Return Values

返回值：1- 完成，2- 正在上传，3- 失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartUploadFile


NET_DVR_StopUploadFile

停止数据上传。

BOOL NET_DVR_StopUploadFile(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 数据上传的句柄，NET_DVR_StartUploadFile的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartUploadFile


NET_DVR_StartDownloadFile

开始数据下载。

LONG NET_DVR_StartDownloadFile(
  LONG                                  lUserID,
  LPNET_DVR_ALARMHOST_DOWNLOAD_PARAM    lpStruDownloadParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStruDownloadParam
[in] 数据下载参数，数据回调函数在该结构体里设置

Return Values

-1表示失败，其他值作为NET_DVR_StopDownloadFile等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDownloadFileProgress NET_DVR_GetDownloadFileState NET_DVR_StopDownloadFile


NET_DVR_GetDownloadFileProgress

获取数据下载的进度。

LONG NET_DVR_GetDownloadFileProgress(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 数据下载的句柄，NET_DVR_StartDownloadFile的返回值

Return Values

-1表示失败，0～100表示数据上传的进度。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDownloadFile


NET_DVR_GetDownloadFileState

获取数据下载的状态。

LONG NET_DVR_GetDownloadFileState(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 数据下载的句柄，NET_DVR_StartDownloadFile的返回值

Return Values

返回值：1- 完成，2- 正在下载，3- 失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDownloadFile


NET_DVR_StopDownloadFile

停止数据下载。

BOOL NET_DVR_StopDownloadFile(
  LONG    lFileHandle
);

Parameters

lFileHandle
[in] 数据下载的句柄，NET_DVR_StartDownloadFile的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartDownloadFile


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_AUDIO_NAME | 获取语音名称 | dwCount个NET_DVR_CHANNEL_INDEX | dwCount个NET_DVR_AUDIO_NAME | 3385

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_AUDIO_NAME | 设置语音名称 | dwCount个NET_DVR_CHANNEL_INDEX | dwCount个NET_DVR_AUDIO_NAME | 3384

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_AudioCtrl

语音控制。

BOOL NET_DVR_AudioCtrl(
  LONG    lUserID,
  DWORD   dwAudioNum,
  DWORD   dwCtrlParam,
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAudioNum
[in] 语音号：1- 进门欢迎提示音，2- 出门离开提示音，3- 有人提示音，4- ATM暂停使用，5- 门未关提示音，6- （保留），7- 超时提示音，8- 多人进入提示音，9- 人脸遮挡提示音，10- 晕倒提示音
dwCtrlParam
[in] 控制参数：1- 播放语音，2- 清空语音

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

报警主机能力集(AlarmHostAbility)的子节点<VoiceControl>对应设备是否支持语音控制；
报警主机能力集(AlarmHostAbility)的子节点<voiceNo>对应语音编号的范围，从1开始，语音编号减一就是语音的数组下标。
相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

See Also

NET_DVR_Login_V40


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
STREAM_ABILITY | 0x012 | 设备流能力集
IP_VIEW_DEV_ABILITY | 0x014 | IP可视对讲主机能力集
ACS_ABILITY | 0x801 | 门禁能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了按照不同的能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
STREAM_ABILITY | 获取设备流能力 | 获取流能力集 | 流能力XML描述(StreamAbility)
IP_VIEW_DEV_ABILITY | 获取IP可视对讲主机能力 | 无 | IP可视对讲主机能力XML描述(IpViewDevAbility)
ACS_ABILITY | 获取门禁能力集 | 门禁能力集获取输入描述 | 门禁能力集XML描述(AcsAbility)

See Also

NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG | 获取可视对讲设备编号 | 无效 | NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG | 16001
NET_DVR_GET_OPERATION_TIME_CFG | 获取操作时间配置 | 无效 | NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG | 16004
NET_DVR_GET_VIDEO_INTERCOM_RELATEDEV_CFG | 获取关联网络设备参数 | 无效 | NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG | 16006
NET_DVR_GET_VIDEOINTERCOM_STREAM | 获取可视对讲流通道参数 | 通道号 | NET_DVR_VIDEOINTERCOM_STREAM | 16022
NET_DVR_GET_VIDEO_INTERCOM_IOIN_CFG | 获取可视对讲IO输入参数 | IO输入号，从1开始 | NET_DVR_VIDEO_INTERCOM_IOIN_CFG | 16016
NET_DVR_GET_VIDEO_INTERCOM_IOOUT_CFG | 获取可视对讲IO输出参数 | IO输出号，从1开始 | NET_DVR_VIDEO_INTERCOM_IOOUT_CFG | 16018
NET_DVR_GET_WDR_CFG | 获取宽动态参数 | 通道号 | NET_DVR_WDR_CFG | 16024
NET_DVR_GET_ELEVATORCONTROL_CFG_V40 | 获取梯控器参数 | 电梯号，从1开始 | NET_DVR_ELEVATORCONTROL_CFG_V40 | 16028
NET_DVR_GET_CALL_ROOM_CFG | 获取按键呼叫住户配置 | 按键编号，从1开始 | NET_DVR_CALL_ROOM_CFG | 16030
NET_DVR_GET_AUDIOIN_VOLUME_CFG | 获取音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6355
NET_DVR_GET_AUDIOOUT_VOLUME_CFG | 获取音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6369
NET_DVR_GET_VIDEO_INTERCOM_ALARM_CFG | 获取可视对讲报警事件参数 | 无效 | NET_DVR_VIDEO_INTERCOM_ALARM_CFG | 16037
NET_DVR_GET_SIP_CFG_V50 | 获取SIP参数V50 | 无效 | NET_DVR_SIP_CFG_V50 | 16044

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG | 设置可视对讲设备编号 | 无效 | NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG | 16002
NET_DVR_SET_PRIVILEGE_PASSWORD | 设置权限密码配置信息 | 无效 | NET_DVR_PRIVILEGE_PASSWORD_CFG | 16003
NET_DVR_SET_OPERATION_TIME_CFG | 设置操作时间配置 | 无效 | NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG | 16005
NET_DVR_SET_VIDEO_INTERCOM_RELATEDEV_CFG | 设置关联网络设备参数 | 无效 | NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG | 16007
NET_DVR_SET_VIDEOINTERCOM_STREAM | 设置可视对讲流通道参数 | 通道号，从1开始 | NET_DVR_VIDEOINTERCOM_STREAM | 16023
NET_DVR_SET_VIDEO_INTERCOM_IOIN_CFG | 设置可视对讲IO输入参数 | IO输入号，从1开始 | NET_DVR_VIDEO_INTERCOM_IOIN_CFG | 16017
NET_DVR_SET_VIDEO_INTERCOM_IOOUT_CFG | 设置IO输出参数 | IO输出号，从1开始 | NET_DVR_VIDEO_INTERCOM_IOOUT_CFG | 16019
NET_DVR_SET_WDR_CFG | 设置宽动态参数 | 通道号 | NET_DVR_WDR_CFG | 16025
NET_DVR_SET_ELEVATORCONTROL_CFG_V40 | 设置梯控器参数 | 电梯号，从1开始 | NET_DVR_ELEVATORCONTROL_CFG_V40 | 16029
NET_DVR_SET_CALL_ROOM_CFG | 设置按键呼叫住户配置 | 按键编号，从1开始 | NET_DVR_CALL_ROOM_CFG | 16031
NET_DVR_SET_AUDIOIN_VOLUME_CFG | 设置音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6356
NET_DVR_SET_AUDIOOUT_VOLUME_CFG | 设置音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6370
NET_DVR_SET_VIDEO_INTERCOM_ALARM_CFG | 设置可视对讲报警事件参数 | 无效 | NET_DVR_VIDEO_INTERCOM_ALARM_CFG | 16038
NET_DVR_SET_SIP_CFG_V50 | 设置SIP参数V50 | 无效 | NET_DVR_SIP_CFG_V50 | 16045

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示获取1个dwCommand指定的配置信息，2表示获取2个配置信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_STREAM_SRC_INFO | 获取流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO | 6017
NET_DVR_GET_ALLSTREAM_SRC_INFO | 获取所有流信息（全部获取） | NULL | 4字节个数(N) + N个NET_DVR_STREAM_SRC_CFG | 9105
NET_DVR_GET_FTPCFG_V40 | 获取FTP信息 | dwCount个NET_DVR_FTP_TYPE | dwCount个NET_DVR_FTPCFG_V40 | 6162

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL；lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_STREAM_SRC_INFO | 设置流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO | 6018
NET_DVR_SET_FTPCFG_V40 | 设置FTP信息 | dwCount个NET_DVR_FTP_TYPE | dwCount个NET_DVR_FTPCFG_V40 | 6163

dwCommand为NET_DVR_SET_STREAM_SRC_INFO时，如果将IP地址、URL都设为空，则表示删除流ID（dwCount为0xffff ffff时表示删除所有流ID）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_VIS_REGISTER_INFO | 16027 | 获取门口机注册信息 | NULL | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_VIS_REGISTER_INFO | 获取门口机注册信息 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_GET_VIS_REGISTER_INFO | 16027 | 获取门口机注册信息 | NET_DVR_VIS_REGISTER_INFO

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_VIDEO_CALL_SIGNAL_PROCESS | 16032 | 可视话对讲信令处理 | NET_DVR_VIDEO_CALL_COND | 信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据，dwCommand为NET_DVR_VIDEO_CALL_SIGNAL_PROCESS时对应结构体NET_DVR_VIDEO_CALL_PARAM
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_VIDEO_CALL_SIGNAL_PROCESS | 可视话对讲信令处理 | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的数据类型(dwDataType)，pSendBuf对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | dwDataType值 | pSendBuf对应结构体
NET_DVR_VIDEO_CALL_SIGNAL_PROCESS | 16032 | 可视话对讲信令处理 | 0 | NET_DVR_VIDEO_CALL_PARAM

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_REMOTECONTROL_GATEWAY | 16009 | 远程开锁 | NET_DVR_CONTROL_GATEWAY

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_REMOTECONTROL_NOTICE_DATA | 16008 | 公告数据下发 | NET_DVR_NOTICE_DATA

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件名，在本功能中设置为NULL
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_RING_FILE | 20 | 上传铃音文件 | NET_DVR_RING_UPLOAD_CFG | NULL
UPLOAD_PUBLISH_MATERIAL | 18 | 上传信息发布静态素材文件 | 静态素材 | NULL

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

  • 上传完成之后需要调用NET_DVR_UploadFile_V40获取当前图片上传的URL，然后再上传下一张图片。
  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_RING_LIST | 16039 | 查询铃音参数列表 | NET_DVR_RING_SEARCH_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前面4字节表示状态值： typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)，不支持
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据，对应结构体：NET_DVR_RING_SEARCH_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
ACS_ABILITY | 0x801 | 门禁能力集
ALARMHOST_ABILITY | 0x500 | 报警主机设备能力集
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。获取不同能力类型时对应的输入、输出参数如下。

获取报警主机XML能力集
能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
ACS_ABILITY | 获取门禁能力集 | 门禁能力集获取输入描述 | 门禁能力集XML描述(AcsAbility)
ALARMHOST_ABILITY | 获取报警主机能力集 | 无 | NET_DVR_ALARMHOST_ABILITY
DEVICE_ABILITY_INFO | 设备通用能力类型，具体能力根据发送的能力节点来区分 | 获取协议接入能力集 | 设备协议接入能力XML描述(AccessProtocolAbility)
 |  | 报警主机XML能力集获取输入描述 | 报警主机能力集XML描述(AlarmHostAbility)

See Also

NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_DOOR_CFG | 获取门参数 | 门编号，从1开始 | NET_DVR_DOOR_CFG | 2108
NET_DVR_GET_DOOR_STATUS_PLAN | 获取门状态计划参数 | 门编号，从1开始 | NET_DVR_DOOR_STATUS_PLAN | 2110
NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE | 获取门状态计划模板参数 | 计划模板编号，从1开始 | NET_DVR_PLAN_TEMPLATE | 2106
NET_DVR_GET_WEEK_PLAN_CFG | 获取门状态周计划参数 | 周计划编号，从1开始 | NET_DVR_WEEK_PLAN_CFG | 2100
NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN | 获取门状态假日计划参数 | 假日计划编号，从1开始 | NET_DVR_HOLIDAY_PLAN_CFG | 2102
NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP | 获取门状态假日组参数 | 假日组编号，从1开始 | NET_DVR_HOLIDAY_GROUP_CFG | 2104
NET_DVR_GET_CARD_READER_CFG_V50 | 获取读卡器参数 | 读卡器编号 | NET_DVR_CARD_READER_CFG_V50 | 2505
NET_DVR_GET_CARD_READER_PLAN | 获取读卡器验证计划参数 | 读卡器编号，从1开始 | NET_DVR_CARD_READER_PLAN | 2142
NET_DVR_GET_VERIFY_PLAN_TEMPLATE | 获取读卡器验证方式计划模板参数 | 计划模板编号，从1开始 | NET_DVR_PLAN_TEMPLATE | 2136
NET_DVR_GET_VERIFY_WEEK_PLAN | 获取读卡器验证方式周计划参数 | 周计划编号，从1开始 | NET_DVR_WEEK_PLAN_CFG | 2124
NET_DVR_GET_VERIFY_HOLIDAY_PLAN | 获取读卡器验证方式假日计划参数 | 假日计划编号，从1开始 | NET_DVR_HOLIDAY_PLAN_CFG | 2128
NET_DVR_GET_VERIFY_HOLIDAY_GROUP | 获取读卡器验证方式假日组参数 | 假日组编号，从1开始 | NET_DVR_HOLIDAY_GROUP_CFG | 2132
NET_DVR_GET_GROUP_CFG | 获取群组参数 | 群组编号，从1开始 | NET_DVR_GROUP_CFG | 2112
NET_DVR_GET_MULTI_CARD_CFG | 获取多重卡参数 | 门编号，从1开始 | NET_DVR_MULTI_CARD_CFG | 2114
NET_DVR_GET_SNEAK_CFG | 获取反潜回参数 | 无效 | NET_DVR_ANTI_SNEAK_CFG | 2119
NET_DVR_GET_CARD_READER_ANTI_SNEAK_CFG | 获取读卡器反潜回参数 | 无效 | NET_DVR_CARD_READER_ANTI_SNEAK_CFG | 2146
NET_DVR_GET_MULTI_DOOR_INTERLOCK_CFG | 获取多门互锁参数 | 无效 | NET_DVR_MULTI_DOOR_INTERLOCK_CFG | 2121
NET_DVR_GET_ACS_WORK_STATUS_V50 | 获取门禁主机工作状态 | 无效 | NET_DVR_ACS_WORK_STATUS_V50 | 2180
NET_DVR_GET_CASE_SENSOR_CFG | 获取事件报警输入参数 | 事件报警输入编号，从1开始 | NET_DVR_CASE_SENSOR_CFG | 2144
NET_DVR_GET_PHONE_DOOR_RIGHT_CFG | 获取手机关联门权限参数 | 手机授权名单编号，从1开始 | NET_DVR_PHONE_DOOR_RIGHT_CFG | 2148
NET_DVR_GET_ACS_CFG | 获取门禁主机参数 | 无效 | NET_DVR_ACS_CFG | 2159
NET_DVR_GET_ACS_EXTERNAL_DEV_CFG | 获取门禁主机串口外设参数 | RS485串口号，从1开始 | NET_DVR_ACS_EXTERNAL_DEV_CFG | 2165
NET_DVR_GET_PERSONNEL_CHANNEL_CFG | 获取人员通道参数 | 人员通道号，从1开始 | NET_DVR_PERSONNEL_CHANNEL_CFG | 2167
NET_DVR_GET_PERSON_STATISTICS_CFG | 获取人数统计参数 | 无效 | NET_DVR_PERSON_STATISTICS_CFG | 2170
NET_DVR_GET_ACS_SCREEN_DISPLAY_CFG | 获取屏幕字符串显示参数 | 屏幕编号，从0开始 | NET_DVR_ACS_SCREEN_DISPLAY_CFG | 2172
NET_DVR_GET_GATE_TIME_CFG | 获取人员通道闸门时间参数 | 无效 | NET_DVR_GATE_TIME_CFG | 2174
NET_DVR_GET_MULTI_CARD_CFG_V50 | 获取多重卡参数V50 | 门编号 | NET_DVR_MULTI_CARD_CFG_V50 | 2515
NET_VCA_GET_FACEDETECT_RULECFG_V41 | 获取人脸检测规则 | 通道号 | NET_DVR_FACEDETECT_RULECFG_V41 | 5017

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_Login_V40


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_DOOR_CFG | 设置门参数 | 门编号或楼层编号，从1开始 | NET_DVR_DOOR_CFG | 2109
NET_DVR_SET_DOOR_STATUS_PLAN | 设置门状态计划参数 | 门编号或楼层编号，从1开始 | NET_DVR_DOOR_STATUS_PLAN | 2111
NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE | 设置门状态计划模板参数 | 计划模板编号，从1开始 | NET_DVR_PLAN_TEMPLATE | 2107
NET_DVR_SET_WEEK_PLAN_CFG | 设置门状态周计划参数 | 周计划编号，从1开始 | NET_DVR_WEEK_PLAN_CFG | 2101
NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN | 设置门状态假日计划参数 | 假日计划编号，从1开始 | NET_DVR_HOLIDAY_PLAN_CFG | 2103
NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP | 设置门状态假日组参数 | 假日组编号，从1开始 | NET_DVR_HOLIDAY_GROUP_CFG | 2105
NET_DVR_SET_CARD_READER_CFG_V50 | 设置读卡器参数 | 读卡器编号 | NET_DVR_CARD_READER_CFG_V50 | 2506
NET_DVR_SET_CARD_READER_PLAN | 设置读卡器验证计划参数 | 读卡器编号，从1开始 | NET_DVR_CARD_READER_PLAN | 2143
NET_DVR_SET_VERIFY_PLAN_TEMPLATE | 设置读卡器验证方式计划模板参数 | 计划模板编号，从1开始 | NET_DVR_PLAN_TEMPLATE | 2137
NET_DVR_SET_VERIFY_WEEK_PLAN | 设置读卡器验证方式周计划参数 | 周计划编号，从1开始 | NET_DVR_WEEK_PLAN_CFG | 2125
NET_DVR_SET_VERIFY_HOLIDAY_PLAN | 设置读卡器验证方式假日计划参数 | 假日计划编号，从1开始 | NET_DVR_HOLIDAY_PLAN_CFG | 2129
NET_DVR_SET_VERIFY_HOLIDAY_GROUP | 设置读卡器验证方式假日组参数 | 假日组编号，从1开始 | NET_DVR_HOLIDAY_GROUP_CFG | 2133
NET_DVR_SET_GROUP_CFG | 设置群组参数 | 群组编号，从1开始 | NET_DVR_GROUP_CFG | 2113
NET_DVR_SET_MULTI_CARD_CFG | 设置多重卡参数 | 门编号，从1开始 | NET_DVR_MULTI_CARD_CFG | 2115
NET_DVR_SET_SNEAK_CFG | 设置反潜回参数 | 无效 | NET_DVR_ANTI_SNEAK_CFG | 2120
NET_DVR_SET_CARD_READER_ANTI_SNEAK_CFG | 设置读卡器反潜回参数 | 无效 | NET_DVR_CARD_READER_ANTI_SNEAK_CFG | 2147
NET_DVR_SET_MULTI_DOOR_INTERLOCK_CFG | 设置多门互锁参数 | 无效 | NET_DVR_MULTI_DOOR_INTERLOCK_CFG | 2122
NET_DVR_SET_CASE_SENSOR_CFG | 设置事件报警输入参数 | 事件报警输入编号，从1开始 | NET_DVR_CASE_SENSOR_CFG | 2145
NET_DVR_SET_PHONE_DOOR_RIGHT_CFG | 设置手机关联门权限参数 | 手机授权名单编号，从1开始 | NET_DVR_PHONE_DOOR_RIGHT_CFG | 2149
NET_DVR_SET_ACS_CFG | 设置门禁主机参数 | 无效 | NET_DVR_ACS_CFG | 2160
NET_DVR_SET_ACS_EXTERNAL_DEV_CFG | 设置门禁主机串口外设参数 | RS485串口号，从1开始 | NET_DVR_ACS_EXTERNAL_DEV_CFG | 2166
NET_DVR_SET_PERSONNEL_CHANNEL_CFG | 设置人员通道参数 | 人员通道号，从1开始 | NET_DVR_PERSONNEL_CHANNEL_CFG | 2168
NET_DVR_SET_PLATFORM_VERIFY_CFG | 下发平台认证结果 | 无效 | NET_DVR_PLATFORM_VERIFY_CFG | 2169
NET_DVR_SET_PERSON_STATISTICS_CFG | 设置人数统计参数 | 无效 | NET_DVR_PERSON_STATISTICS_CFG | 2171
NET_DVR_SET_ACS_SCREEN_DISPLAY_CFG | 设置屏幕字符串显示参数 | 屏幕编号，从0开始 | NET_DVR_ACS_SCREEN_DISPLAY_CFG | 2173
NET_DVR_SET_GATE_TIME_CFG | 设置人员通道闸门时间参数 | 无效 | NET_DVR_GATE_TIME_CFG | 2175
NET_DVR_SET_MULTI_CARD_CFG_V50 | 设置多重卡参数V50 | 门编号 | NET_DVR_MULTI_CARD_CFG_V50 | 2516
NET_VCA_SET_FACEDETECT_RULECFG_V41 | 设置人脸检测规则 | 通道号 | NET_DVR_FACEDETECT_RULECFG_V41 | 5018

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_Login_V40


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

获取卡号关联用户信息参数每次仅获取和设置1个。

门禁主机能力集AcsAbility<EventLinkage>节点。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50 | 获取卡权限计划模板参数，dwCount设为1 | dwCount个NET_DVR_PLAN_TEMPLATE_COND | dwCount个NET_DVR_PLAN_TEMPLATE | 2322
NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 | 获取卡权限周计划参数，dwCount设为1 | dwCount个NET_DVR_WEEK_PLAN_COND | dwCount个NET_DVR_WEEK_PLAN_CFG | 2304
NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50 | 获取卡权限假日计划参数，dwCount设为1 | dwCount个NET_DVR_HOLIDAY_PLAN_COND | dwCount个NET_DVR_HOLIDAY_PLAN_CFG | 2310
NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50 | 获取卡权限假日组参数，dwCount设为1 | dwCount个NET_DVR_HOLIDAY_GROUP_COND | dwCount个NET_DVR_HOLIDAY_GROUP_CFG | 2316
NET_DVR_GET_CARD_USERINFO_CFG | 获取卡号关联用户信息参数，dwCount设为1 | dwCount个NET_DVR_CARD_CFG_SEND_DATA | dwCount个NET_DVR_CARD_USER_INFO_CFG | 2163
NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 | 获取事件或卡号联动配置参数，dwCount设为1 | dwCount个NET_DVR_EVENT_CARD_LINKAGE_COND | dwCount个NET_DVR_EVENT_CARD_LINKAGE_CFG_V50 | 2181
NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 | 获取事件卡号联动配置参数(V51),dwCount设置为1，目前每次获取、设置1个 | dwCount个NET_DVR_EVENT_CARD_LINKAGE_COND | dwCount个NET_DVR_EVENT_CARD_LINKAGE_CFG_V51 | 2518

该接口为NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50和NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50命令码的扩展，上层使用V51接口自动兼容老的。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 | 设置卡权限计划模板参数，dwCount设为1 | dwCount个NET_DVR_PLAN_TEMPLATE_COND | dwCount个NET_DVR_PLAN_TEMPLATE | 2323
NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 | 设置卡权限周计划参数，dwCount设为1 | dwCount个NET_DVR_WEEK_PLAN_COND | dwCount个NET_DVR_WEEK_PLAN_CFG | 2305
NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50 | 设置卡权限假日计划参数，dwCount设为1 | dwCount个NET_DVR_HOLIDAY_PLAN_COND | dwCount个NET_DVR_HOLIDAY_PLAN_CFG | 2311
NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50 | 设置卡权限假日组参数，dwCount设为1 | dwCount个NET_DVR_HOLIDAY_GROUP_COND | dwCount个NET_DVR_HOLIDAY_GROUP_CFG | 2317
NET_DVR_SET_CARD_USERINFO_CFG | 设置卡号关联用户信息参数，dwCount设为1 | dwCount个NET_DVR_CARD_CFG_SEND_DATA | dwCount个NET_DVR_CARD_USER_INFO_CFG | 2164
NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 | 设置事件或卡号联动配置参数，dwCount设为1 | dwCount个NET_DVR_EVENT_CARD_LINKAGE_COND | dwCount个NET_DVR_EVENT_CARD_LINKAGE_CFG_V50 | 2182
NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 | 设置事件卡号联动配置参数(V51)，dwCount设为1 | dwCount个NET_DVR_EVENT_CARD_LINKAGE_COND | dwCount个NET_DVR_EVENT_CARD_LINKAGE_CFG_V51 | 2519

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_CARD | 2560 | 获取卡参数(优化方式) | NET_DVR_CARD_COND | NULL
NET_DVR_SET_CARD | 2561 | 设置卡参数(优化方式) | NET_DVR_CARD_COND | NULL
NET_DVR_DEL_CARD | 2562 | 删除卡参数(优化方式) | NET_DVR_CARD_COND | NULL
NET_DVR_GET_CARD_CFG_V50 | 2178 | 获取卡参数(异步方式) | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
NET_DVR_SET_CARD_CFG_V50 | 2179 | 设置卡参数(异步方式) | NET_DVR_CARD_CFG_COND | 返回状态
NET_DVR_GET_CARD_PASSWD_CFG | 2161 | 获取卡密码开门使能参数(异步方式) | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
NET_DVR_SET_CARD_PASSWD_CFG | 2162 | 设置卡密码开门使能参数(异步方式) | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS 状态值 前4个字节为状态值(dwStatus)：
dwStatus为NET_SDK_CALLBACK_STATUS_SUCCESS(1000)，表示获取和配置成功并且结束；
dwStatus为NET_SDK_CALLBACK_STATUS_PROCESSING(1001)，lpBuffer：4字节状态 + 32字节卡号；
dwStatus为NET_SDK_CALLBACK_STATUS_FAILED(1002)，lpBuffer：4字节状态 + 4字节错误码 + 32字节卡号；
dwStatus为NET_SDK_CALLBACK_STATUS_EXCEPTION(1003)，表示长连接配置异常
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA 信息数据 lpBuffer的值表示信息数据
NET_DVR_GET_CARD_CFG_V50时，对应结构体：NET_DVR_CARD_CFG_V50
NET_DVR_GET_CARD_PASSWD_CFG时，对应结构体：NET_DVR_CARD_PASSWD_CFG
NET_DVR_SET_CARD_PASSWD_CFG时，对应结构体：NET_DVR_CARD_PASSWD_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 优化方式：调用该接口建立长连接的时候，回调函数直接设置为NULL。查询所有卡参数的时候，建立长连接后，循环调用NET_DVR_GetNextRemoteConfig获取查询到的卡参数；按指定卡号条件查询、下发卡参数以及删除卡参数时，建立长连接后，调用NET_DVR_SendWithRecvRemoteConfig下发指定参数并且输出结果信息。
  • 异步方式：调用该接口建立长连接的时候，需要设置回调函数。查询所有卡参数的时候，查询结果在回调函数里面返回；按指定卡号条件查询、下发卡参数时，建立长连接后，调用NET_DVR_SendRemoteConfig下发指定参数，结果数据或者状态信息在回调函数里面返回，不能通过接口返回值判断是否成功。删除或者修改卡参数，和下发卡参数是相同的实现方法，对应卡参数(NET_DVR_CARD_CFG_V50)里面已有卡号的byCardValid为0即表示删除。下发卡参数时，如果将byCheckCardNo置为0，那么设备将不校验应用层下发的卡号信息，直接写入本地存储，需要上层应用保证卡号信息不重复，可以一定程度提高卡号下发的速度；删除和修改卡参数的时候，byCheckCardNo必须赋值为1。
  • NET_DVR_GET_CARD_PASSWD_CFG获取卡密码开门使能参数时，在调用该接口启动长连接远程配置后，还需要调用NET_DVR_SendRemoteConfig发送查找条件数据(获取所有卡信息时不需要调用该发送接口)，查找结果在NET_DVR_StartRemoteConfig设置的回调函数中返回。NET_DVR_SET_CARD_PASSWD_CFG设置卡密码开门使能参数时，在调用该接口启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发卡密码开门使能信息，在NET_DVR_StartRemoteConfig设置的回调函数中返回状态信息。
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_CARD | 获取卡参数(优化方式，查询所有卡参数时) | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_CARD | 获取卡参数(优化方式，指定卡号查询时) | NET_DVR_SendWithRecvRemoteConfig
NET_DVR_SET_CARD | 设置卡参数(优化方式) | NET_DVR_SendWithRecvRemoteConfig
NET_DVR_GET_CARD_CFG_V50 | 获取卡参数(异步方式) | NET_DVR_SendRemoteConfig
NET_DVR_SET_CARD_CFG_V50 | 设置卡参数(异步方式) | NET_DVR_SendRemoteConfig
NET_DVR_GET_CARD_PASSWD_CFG | 获取卡密码开门使能参数(异步方式) | NET_DVR_SendRemoteConfig
NET_DVR_SET_CARD_PASSWD_CFG | 设置卡密码开门使能参数(异步方式) | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_GetNextRemoteConfig NET_DVR_SendWithRecvRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | dwDataType宏定义 | pSendBuf对应结构体
NET_DVR_GET_CARD_CFG_V50 | 2178 | 获取卡参数(异步方式) | ENUM_ACS_SEND_DATA(0x3) | NET_DVR_CARD_CFG_SEND_DATA
NET_DVR_SET_CARD_CFG_V50 | 2179 | 设置卡参数(异步方式) | ENUM_ACS_SEND_DATA(0x3) | NET_DVR_CARD_CFG_V50
NET_DVR_GET_CARD_PASSWD_CFG | 2161 | 获取卡密码开门使能参数 | ENUM_ACS_SEND_DATA(0x3) | NET_DVR_CARD_CFG_SEND_DATA
NET_DVR_SET_CARD_PASSWD_CFG | 2162 | 设置卡密码开门使能参数 | ENUM_ACS_SEND_DATA(0x3) | NET_DVR_CARD_PASSWD_CFG
  • 在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。
  • NET_DVR_GET_CARD_CFG_V50获取卡参数或者NET_DVR_GET_CARD_PASSWD_CFG获取卡密码开门使能参数时，pSendBuf为查找条件，查找到的卡参数信息或者卡密码开门使能信息在NET_DVR_StartRemoteConfig设置的回调函数中返回。
  • NET_DVR_SET_CARD_CFG_V50设置卡参数时，pSendBuf为下发的卡参数信息，必须保证卡号是从小到大递增的（可以不连续）而且卡号的整型值不能重复（比如不能同时含有1和01两种卡号），否则将返回失败。下发结果在NET_DVR_StartRemoteConfig设置的回调函数中返回。
  • 当发送接口失败时，可通过NET_DVR_GetRemoteConfigState获取长连接状态，状态值为NET_DVR_CALLBACK_STATUS_SEND_WAIT则需等待一段时间发送，当状态值为NET_SDK_CALLBACK_STATUS_PROCESSING时，可以再次调用发送接口发送数据。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

NET_DVR_GetRemoteConfigState


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_GET_CARD | 2560 | 获取卡参数(查询所有卡参数时) | NET_DVR_CARD_RECORD

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpInBuff、lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_GET_CARD | 2560 | 获取卡参数(指定卡号查询时) | NET_DVR_CARD_SEND_DATA | NET_DVR_CARD_RECORD
NET_DVR_SET_CARD | 2561 | 设置卡参数 | NET_DVR_CARD_RECORD | NET_DVR_CARD_STATUS
NET_DVR_DEL_CARD | 2562 | 删除卡参数 | NET_DVR_CARD_SEND_DATA | NET_DVR_CARD_STATUS

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetRemoteConfigState

获取长连接配置的状态。

BOOL NET_DVR_GetRemoteConfigState(
  LONG    lHandle,
  void    *pState
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值
pState
[out] 返回的4字节长连接状态值，具体见下表
pState状态宏定义 | 宏定义值 | 含义
NET_SDK_CALLBACK_STATUS_SUCCESS | 1000 | 成功
NET_SDK_CALLBACK_STATUS_PROCESSING | 1001 | 处理中
NET_SDK_CALLBACK_STATUS_FAILED | 1002 | 失败
NET_SDK_CALLBACK_STATUS_EXCEPTION | 1003 | 异常
NET_DVR_CALLBACK_STATUS_SEND_WAIT | 1006 | 发送等待

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

  • 当发送接口NET_DVR_SendRemoteConfig返回失败时，可调用该接口获取长连接状态，状态值为NET_DVR_CALLBACK_STATUS_SEND_WAIT则需等待一段时间发送，当状态值为NET_SDK_CALLBACK_STATUS_PROCESSING时，可以再次调用发送接口发送数据。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_FACE | 2566 | 获取人脸参数(优化方式) | NET_DVR_FACE_COND | NULL
NET_DVR_SET_FACE | 2567 | 设置人脸参数(优化方式) | NET_DVR_FACE_COND | NULL
NET_DVR_GET_FACE_PARAM_CFG | 2507 | 获取人脸参数(异步方式，需要设置回调函数) | NET_DVR_FACE_PARAM_COND | 返回状态、进度、信息数据
NET_DVR_SET_FACE_PARAM_CFG | 2508 | 设置人脸参数(异步方式，需要设置回调函数) | NET_DVR_FACE_PARAM_COND | 返回状态、进度、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILE, //失败 NET_SDK_CALLBACK_STATUS_EXCEPTION //异常 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_FACE_PARAM_CFG时，对应结构体：NET_DVR_FACE_PARAM_CFG NET_DVR_SET_FACE_PARAM_CFG时，对应结构体：NET_DVR_FACE_PARAM_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 优化方式：调用该接口建立长连接的时候，回调函数直接设置为NULL。查询人脸参数或者远程采集人脸的时候，建立长连接后，循环调用NET_DVR_GetNextRemoteConfig获取查询到的人脸数据；下发人脸参数时，建立长连接后，调用NET_DVR_SendWithRecvRemoteConfig下发指定人脸数据并且输出结果信息。
  • 异步方式：调用该接口建立长连接的时候，需要设置回调函数。使用NET_DVR_GET_FACE_PARAM_CFG命令获取人脸参数时，调用NET_DVR_StartRemoteConfig建立长连接进行查询，结果数据在NET_DVR_StartRemoteConfig设置的回调函数中返回。使用NET_DVR_SET_FACE_PARAM_CFG设置指纹参数时，在调用NET_DVR_StartRemoteConfig启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发人脸参数，在NET_DVR_StartRemoteConfig设置的回调函数中返回状态信息。
dwCommand宏定义 | 宏定义值 | 含义 | 后续接口调用
NET_DVR_GET_FACE | 2566 | 获取人脸参数(优化方式) | NET_DVR_GetNextRemoteConfig
NET_DVR_SET_FACE | 2567 | 设置人脸参数(优化方式) | NET_DVR_SendWithRecvRemoteConfig
NET_DVR_GET_FACE_PARAM_CFG | 2507 | 获取人脸参数(异步方式，需要设置回调函数) | NULL
NET_DVR_SET_FACE_PARAM_CFG | 2508 | 设置人脸参数(异步方式，需要设置回调函数) | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_GetNextRemoteConfig NET_DVR_SendWithRecvRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_GET_FACE | 2566 | 获取人脸参数(优化方式) | NET_DVR_FACE_RECORD

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。调用一次这个接口实现一次数据的发送和接收，批量下发数据时需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpInBuff、lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_SET_FACE | 2567 | 设置人脸参数(优化方式) | NET_DVR_FACE_RECORD | NET_DVR_FACE_STATUS

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_FACE_PARAM_CFG | 2508 | 设置人脸参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 下发人脸模板数据 | NET_DVR_FACE_PARAM_CFG
ENUM_ACS_INTELLIGENT_IDENTITY_DATA | 0x9 | 下发人脸图片数据 | NET_DVR_FACE_PARAM_CFG
  • 人脸参数下发，使用的是模板还是图片方式，通过能力集可以获取，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FaceParam>中<faceDataType>。如果设备两种方式都支持，可以选择其中一种。
  • 在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄，下发是否成功等状态通过长连接设置的回调函数返回。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_DEL_FACE_PARAM_CFG | 2509 | 删除人脸参数 | NET_DVR_FACE_PARAM_CTRL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_FINGERPRINT | 2563 | 获取指纹参数(优化方式) | NET_DVR_FINGERPRINT_COND | NULL
NET_DVR_SET_FINGERPRINT | 2564 | 设置指纹参数(优化方式) | NET_DVR_FINGERPRINT_COND | NULL
NET_DVR_DEL_FINGERPRINT | 2565 | 删除指纹参数(优化方式) | NET_DVR_FINGER_PRINT_INFO_CTRL_V50 | NULL
NET_DVR_GET_FINGERPRINT_CFG_V50 | 2183 | 获取指纹参数(异步方式) | NET_DVR_FINGER_PRINT_INFO_COND_V50 | 返回状态、信息数据
NET_DVR_SET_FINGERPRINT_CFG_V50 | 2184 | 设置指纹参数(异步方式) | NET_DVR_FINGER_PRINT_INFO_COND_V50 | 返回状态
NET_DVR_DEL_FINGERPRINT_CFG_V50 | 2517 | 删除指纹参数(异步方式) | NET_DVR_FINGER_PRINT_INFO_CTRL_V50 | 返回状态
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILE, //失败 NET_SDK_CALLBACK_STATUS_EXCEPTION //异常 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_FINGERPRINT_CFG_V50,对应结构体：NET_DVR_FINGER_PRINT_CFG_V50 NET_DVR_SET_FINGERPRINT_CFG_V50时，对应结构体：NET_DVR_FINGER_PRINT_STATUS_V50 NET_DVR_DEL_FINGERPRINT_CFG_V50时，对应结构体：NET_DVR_FINGER_PRINT_INFO_STATUS_V50
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 优化方式：调用该接口建立长连接的时候，回调函数直接设置为NULL。查询指纹参数或者删除指纹数据的时候，建立长连接后，循环调用NET_DVR_GetNextRemoteConfig获取查询到的指纹数据或者删除的状态信息；下发指纹参数时，建立长连接后，调用NET_DVR_SendWithRecvRemoteConfig下发指定指纹数据并且输出结果信息。
  • 异步方式：调用该接口建立长连接的时候，需要设置回调函数。使用NET_DVR_GET_FINGERPRINT_CFG_V50命令获取指纹参数时，调用NET_DVR_StartRemoteConfig建立长连接进行查询，结果数据在NET_DVR_StartRemoteConfig设置的回调函数中返回。使用NET_DVR_SET_FINGERPRINT_CFG_V50设置指纹参数时，在调用NET_DVR_StartRemoteConfig启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发指纹参数信息，在NET_DVR_StartRemoteConfig设置的回调函数中返回状态信息。
  • NET_DVR_DEL_FINGERPRINT_CFG_V50命令，兼容NET_DVR_RemoteControl接口的NET_DVR_DEL_FINGERPRINT_CFG命令。通过NET_DVR_GetDeviceAbility(能力集类型：ACS_ABILITY)获取门禁能力集(AcsAbility)，如果能力集中有delfingerprint这个节点则删除是否成功需要通过回调函数里面返回的状态信息进行判断，如果能力集中没有delfingerprint这个节点则接口返回成功就表示删除成功。
dwCommand宏定义 | 宏定义值 | 含义 | 后续接口调用
NET_DVR_GET_FINGERPRINT | 2563 | 获取指纹参数(优化方式) | NET_DVR_GetNextRemoteConfig
NET_DVR_SET_FINGERPRINT | 2564 | 设置指纹参数(优化方式) | NET_DVR_SendWithRecvRemoteConfig
NET_DVR_DEL_FINGERPRINT | 2565 | 删除指纹参数(优化方式) | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_FINGERPRINT_CFG_V50 | 2183 | 获取指纹参数(异步方式) | NULL
NET_DVR_SET_FINGERPRINT_CFG_V50 | 2184 | 设置指纹参数(异步方式) | NET_DVR_SendRemoteConfig
NET_DVR_DEL_FINGERPRINT_CFG_V50 | 2517 | 删除指纹参数(异步方式) | NULL

See Also

NET_DVR_SendRemoteConfig NET_DVR_GetNextRemoteConfig NET_DVR_SendWithRecvRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_GET_FINGERPRINT | 2563 | 获取指纹参数(优化方式) | NET_DVR_FINGERPRINT_RECORD
NET_DVR_DEL_FINGERPRINT | 2565 | 删除指纹参数(优化方式) | NET_DVR_FINGER_PRINT_INFO_STATUS_V50

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。调用一次这个接口实现一次数据的发送和接收，批量下发数据时需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpInBuff、lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_SET_FINGERPRINT | 2564 | 设置指纹参数(优化方式) | NET_DVR_FINGERPRINT_RECORD | NET_DVR_FINGERPRINT_STATUS

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | dwDataType宏定义 | pSendBuf对应结构体
NET_DVR_SET_FINGERPRINT_CFG_V50 | 2184 | 设置指纹参数(异步方式) | ENUM_ACS_SEND_DATA(0x3) | NET_DVR_FINGER_PRINT_CFG_V50

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_JSON_CONFIG | 2550 | 查询人员信息 | POST /ISAPI/AccessControl/UserInfo/Search?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 设置人员信息(新增或修改) | PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 新增人员信息 | POST /ISAPI/AccessControl/UserInfo/Record?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 修改人员信息 | PUT /ISAPI/AccessControl/UserInfo/Modify?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 获取删除人员信息的进度 | GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendWithRecvRemoteConfig、NET_DVR_GetNextRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口建立长连接的时候，回调函数直接设置为NULL。查询、设置（或者新增、修改）人员信息时，先调用该接口建立长连接，然后循环调用NET_DVR_SendWithRecvRemoteConfig发送和接收数据；删除人员信息时，调用NET_DVR_STDXMLConfig下发删除命令，然后调用该接口建立长连接查询删除进度，进度信息通过循环调用NET_DVR_GetNextRemoteConfig获取直到删除结束。

See Also

NET_DVR_SendWithRecvRemoteConfig NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄，此接口用于获取或者下发一个数据，如果需要全部或者批量查询或下发所有数据，需要循环调用此接口。

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)和输入参数（lpInBuffer），lpInBuff、lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | lpInBuffer | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_JSON_CONFIG | POST /ISAPI/AccessControl/UserInfo/Search?format=json | 查询人员信息 | {UserInfoSearchCond}(JSON报文) | 成功返回{UserInfoSearch}(JSON报文)，失败返回{ResponseStatus}(JSON报文)
NET_DVR_JSON_CONFIG | PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json 或POST /ISAPI/AccessControl/UserInfo/Record?format=json 或PUT /ISAPI/AccessControl/UserInfo/Modify?format=json | 设置/新增/修改人员信息 | {UserInfo}(JSON报文) | {ResponseStatus}(JSON报文)

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_JSON_CONFIG | 2550 | 获取删除人员信息的进度 | {UserInfoDetailDeleteProcess}(JSON报文)

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用 NET_DVR_GetLastError 获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以直接透传HTTP协议命令，调用该接口需要设备支持SDK透传HTTP协议（PUT、GET、POST、DELETE等命令），不同的输入URL对应不同的输入输出数据(XML或者JSON格式)。

Function Description | lpInputParam->lpRequestUrl | lpInputParam->lpInBuffer | lpOutputParam->lpOutBuffer
查询所有人员数量 | GET /ISAPI/AccessControl/UserInfo/Count?format=json | NULL | 成功返回{UserInfoCount}(JSON报文)，失败返回{ResponseStatus}(JSON报文)
删除人员信息 | PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json | {UserInfoDetail}(JSON报文) | {ResponseStatus}(JSON报文)

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_JSON_CONFIG | 2550 | 查询卡参数 | POST /ISAPI/AccessControl/CardInfo/Search?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 设置卡参数(新增或修改) | PUT /ISAPI/AccessControl/CardInfo/SetUp?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 新增卡参数 | POST /ISAPI/AccessControl/CardInfo/Record?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 修改卡参数 | PUT /ISAPI/AccessControl/CardInfo/Modify?format=json | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendWithRecvRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口建立长连接的时候，回调函数直接设置为NULL。建立长连接后，循环调用NET_DVR_SendWithRecvRemoteConfig发送和接收数据。

See Also

NET_DVR_SendWithRecvRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig建立长连接，获取句柄。此接口用于获取或者下发一个数据，如果需要全部或者批量查询或下发所有数据，需要循环调用此接口。

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)和输入参数（lpInBuffer），lpInBuff、lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | lpInBuffer | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_JSON_CONFIG | POST /ISAPI/AccessControl/CardInfo/Search?format=json | 查询卡参数 | {CardInfoSearchCond}(JSON报文) | 成功返回{CardInfoSearch}(JSON报文)，失败返回{ResponseStatus}(JSON报文)
NET_DVR_JSON_CONFIG | PUT /ISAPI/AccessControl/CardInfo/SetUp?format=json 或POST /ISAPI/AccessControl/CardInfo/Record?format=json 或PUT /ISAPI/AccessControl/CardInfo/Modify?format=json | 设置/新增/修改卡参数 | {CardInfo}(JSON报文) | {ResponseStatus}(JSON报文)

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用 NET_DVR_GetLastError 获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以直接透传HTTP协议命令，调用该接口需要设备支持SDK透传HTTP协议（PUT、GET、POST、DELETE等命令），不同的输入URL对应不同的输入输出数据(XML或者JSON格式)。

Function Description | lpInputParam->lpRequestUrl | lpInputParam->lpInBuffer | lpOutputParam->lpOutBuffer/lpStatusBuffer
查询所有卡数量 | GET /ISAPI/AccessControl/CardInfo/Count?format=json | NULL | 成功返回{CardInfoCount}(JSON报文)，失败返回{ResponseStatus}(JSON报文)
查找指定工号关联的所有卡数量 | GET /ISAPI/AccessControl/CardInfo/Count?format=json&employeeNo=<ID> | NULL | 成功返回{CardInfoCount}(JSON报文)，失败返回{ResponseStatus}(JSON报文)
删除卡参数 | PUT /ISAPI/AccessControl/CardInfo/Delete?format=json | {CardInfoDelCond}(JSON报文) | {ResponseStatus}(JSON报文)

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_FACE_DATA_SEARCH | 2552 | 查询人脸信息 | POST /ISAPI/Intelligent/FDLib/FDSearch?format=json | NULL
NET_DVR_FACE_DATA_RECORD | 2551 | 设置人脸信息(新增或修改) | PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json | NULL
NET_DVR_FACE_DATA_RECORD | 2551 | 新增人员信息 | POST /ISAPI/Intelligent/FDLib/FaceDataRecord?format=json | NULL
NET_DVR_FACE_DATA_RECORD | 2551 | 修改人员信息 | PUT /ISAPI/Intelligent/FDLib/FDSearch?format=json&FDID=1&FPID=&faceLibType=blackFD | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendWithRecvRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口建立长连接的时候，回调函数直接设置为NULL。建立长连接后，循环调用NET_DVR_SendWithRecvRemoteConfig发送和接收数据。

See Also

NET_DVR_SendWithRecvRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig建立长连接，获取句柄。此接口用于获取或者下发一个数据，如果需要全部或者批量查询或下发所有数据，需要循环调用此接口。

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)和输入参数（lpInBuffer），lpInBuff、lpOutBuff对应不同的数据结构，如下表所示：

dwCommand宏定义 | lpInBuffer | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_FACE_DATA_SEARCH | POST /ISAPI/Intelligent/FDLib/FDSearch?format=json | 查询人脸信息 | Inbound Data(JSON报文) | NET_DVR_JSON_DATA_CFG
NET_DVR_FACE_DATA_RECORD | PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json 或POST /ISAPI/Intelligent/FDLib/FaceDataRecord?format=json 或PUT /ISAPI/Intelligent/FDLib/FDSearch?format=json&FDID=1&FPID=&faceLibType=blackFD | 设置/新增/修改人脸参数 | NET_DVR_JSON_DATA_CFG | {ResponseStatus}(JSON报文)

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用 NET_DVR_GetLastError 获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以直接透传HTTP协议命令，调用该接口需要设备支持SDK透传HTTP协议（PUT、GET、POST、DELETE等命令），不同的输入URL对应不同的输入输出数据(XML或者JSON格式)。

Function Description | lpInputParam->lpRequestUrl | lpInputParam->lpInBuffer | lpOutputParam->lpOutBuffer/lpStatusBuffer
查询所有人脸数量 | GET /ISAPI/Intelligent/FDLib/Count?format=json | NULL | 成功返回人脸记录总数JSON报文，失败返回{ResponseStatus}(JSON报文)
删除人脸参数 | PUT /ISAPI/Intelligent/FDLib/FDSearch/Delete?format=json&FDID=1&faceLibType=blackFD | {FPID}(JSON报文) | {ResponseStatus}(JSON报文)

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_JSON_CONFIG | 2550 | 查询指纹数据 | POST /ISAPI/AccessControl/FingerPrintUpload?format=json | NULL
NET_DVR_JSON_CONFIG | 2550 | 下发指纹数据(新增或修改) | POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendWithRecvRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口建立长连接的时候，回调函数直接设置为NULL。建立长连接后，循环调用NET_DVR_SendWithRecvRemoteConfig发送和接收数据。

以人为中心方式对接时，删除指纹数据的接口命令和以卡为中心方式对接时的删除指纹数据接口命令是一样的，详见：NET_DVR_StartRemoteConfig(命令: NET_DVR_CAPTURE_FINGERPRINT_INFO)。

See Also

NET_DVR_SendWithRecvRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendWithRecvRemoteConfig

逐个发送和接收数据。

LONG NET_DVR_SendWithRecvRemoteConfig(
  LONG     lHandle,
  void     *lpInBuff,
  DWORD    dwInBuffSize,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize,
  DWORD    *dwOutDataLen
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
lpInBuff
[in] 输入参数，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwInBuffSize
[in] 输入缓冲区的大小
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）和输入参数（lpInBuffer）有关，详见“Remarks”说明
dwOutBuffSize
[in] 输出缓冲区的大小
dwOutDataLen
[out] 实际收到的数据长度指针，不能为 NULL

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig建立长连接，获取句柄。此接口用于获取或者下发一个数据，如果需要全部或者批量查询或下发所有数据，需要循环调用此接口。

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)和输入参数（lpInBuffer），lpInBuff、lpOutBuff对应不同的数据结构，如下表所示：

dwCommand宏定义 | lpInBuffer | 含义 | lpInBuff对应结构体 | lpOutBuff对应结构体
NET_DVR_JSON_CONFIG | POST /ISAPI/AccessControl/FingerPrintUpload?format=json | 查询指纹数据 | {FingerPrintCond}(JSON报文) | 成功返回{FingerPrintInfo}(JSON报文)，失败返回{ResponseStatus}(JSON报文)
NET_DVR_JSON_CONFIG | POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json | 下发指纹数据(新增或修改) | {FingerPrintCfg}(JSON报文) | {FingerPrintStatus}(JSON报文)或{ResponseStatus}(JSON报文)

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_CONFIG_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_SendWithRecvRemoteConfig获取下一条数据
NET_SDK_CONFIG_STATUS_NEEDWAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_SendWithRecvRemoteConfig
NET_SDK_CONFIG_STATUS_FINISH | 1002 | 数据全部取完，调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_CONFIG_STATUS_FAILED | 1003 | 配置失败，可重新NET_DVR_SendWithRecvRemoteConfig下发下一条
NET_SDK_CONFIG_STATUS_EXCEPTION | 1004 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_CAPTURE_FACE_INFO | 2510 | 远程人脸采集 | NET_DVR_CAPTURE_FACE_COND | NULL
NET_DVR_CAPTURE_FINGERPRINT_INFO | 2504 | 远程指纹采集 | NET_DVR_CAPTURE_FINGERPRINT_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 优化方式：调用该接口建立长连接的时候，回调函数直接设置为NULL。查询人脸参数或者远程采集人脸的时候，建立长连接后，循环调用NET_DVR_GetNextRemoteConfig获取查询到的人脸数据；下发人脸参数时，建立长连接后，调用NET_DVR_SendWithRecvRemoteConfig下发指定人脸数据并且输出结果信息。
  • 异步方式：调用该接口建立长连接的时候，需要设置回调函数。使用NET_DVR_GET_FACE_PARAM_CFG命令获取人脸参数时，调用NET_DVR_StartRemoteConfig建立长连接进行查询，结果数据在NET_DVR_StartRemoteConfig设置的回调函数中返回。使用NET_DVR_SET_FACE_PARAM_CFG设置指纹参数时，在调用NET_DVR_StartRemoteConfig启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发人脸参数，在NET_DVR_StartRemoteConfig设置的回调函数中返回状态信息。
dwCommand宏定义 | 宏定义值 | 含义 | 后续接口调用
NET_DVR_CAPTURE_FACE_INFO | 2510 | 远程人脸采集 | NET_DVR_GetNextRemoteConfig
NET_DVR_CAPTURE_FINGERPRINT_INFO | 2504 | 远程指纹采集 | NET_DVR_GetNextRemoteConfig

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_CAPTURE_FACE_INFO | 2510 | 远程人脸采集(优化方式) | NET_DVR_CAPTURE_FACE_CFG
NET_DVR_CAPTURE_FINGERPRINT_INFO | 2504 | 远程指纹采集(优化方式) | NET_DVR_CAPTURE_FINGERPRINT_CFG

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_BULK_CHECK_FACE_PICTURE | 2533 | 批量校验人脸图片 | NET_DVR_CHECK_FACE_PICTURE_COND | 返回状态、进度、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： dwStatus为NET_SDK_CALLBACK_STATUS_SUCCESS，表示获取和配置成功并且结束； dwStatus为NET_SDK_CALLBACK_STATUS_PROCESSING，lpBuffer：4字节状态 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_FAILED，lpBuffer：4字节状态 + 4字节错误码 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_EXCEPTION，表示长连接配置异常 dwStatus为NET_DVR_CALLBACK_STATUS_SEND_WAIT，表示需要等待一段时间再发送
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_BULK_CHECK_FACE_PICTURE，对应结构体：NET_DVR_CHECK_FACE_PICTURE_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_GET_FACE_PARAM_CFG获取人脸参数时，在调用该接口启动长连接远程配置后，查找结果直接在NET_DVR_StartRemoteConfig设置的回调函数中返回。NET_DVR_SET_FACE_PARAM_CFG设置人脸参数时，在调用该接口启动长连接远程配置后，还需要调用NET_DVR_SendRemoteConfig向设备下发人脸参数信息。
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_BULK_CHECK_FACE_PICTURE | 批量校验人脸图片 | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_BULK_CHECK_FACE_PICTURE | 2533 | 批量校验人脸图片
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CHECK_FACE_PICTURE_CFG

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StopRemoteConfig

关闭长连接配置接口所创建的句柄，释放资源。

BOOL NET_DVR_StopRemoteConfig(
  LONG    lHandle
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_FAILED_FACE_INFO | 2522 | 获取设备升级后建模失败的人脸记录 | NET_DVR_ACS_EVENT_COND | 返回状态、进度、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设备升级如果存在失败情况，可以通过事件通知（事件子类型MINOR_LOCAL_FACE_MODELING_FAIL）获取，可根据事件确认后续操作，对应的能力集：是否支持为通过能力集可以获取，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY， ACS_ABILITY中的<isSupportGetFailedFaceInfo>。

该信息记录设备升级后的人脸建模失败记录，信息不会改动，调用该接口获取后，确认修复完毕，没有问题后可调用接口删除该信息。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CLEAR_ACS_PARAM | 2118 | 清空门禁主机参数 | NET_DVR_ACS_PARAM_TYPE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以直接透传HTTP协议命令，调用该接口需要设备支持SDK透传HTTP协议（PUT、GET、POST、DELETE等命令），不同的输入URL对应不同的输入输出数据(XML或者JSON格式)。

Function Description | lpInputParam->lpRequestUrl | lpInputParam->lpInBuffer | lpOutputParam->lpOutBuffer
获取布防信息能力集 | /ISAPI/AccessControl/DeployInfo/capabilities | NULL | 成功返回<DeployInfoCap>(XML报文)，失败返回<ResponseStatus>(XML报文)
获取布防信息 | GET /ISAPI/AccessControl/DeployInfo | NULL | 成功返回<DeployInfo>(XML报文)，失败返回<ResponseStatus>(XML报文)

See Also

NET_DVR_Login_V40


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以直接透传ISAPI协议命令，实现参数配置、能力集获取等功能。调用该接口需要设备支持ISAPI协议（PUT、GET、POST、DELETE等命令），获取不同类型能力集时对应的输入参数、输出参数不同，具体如下表：

能力集类型 | lpInputParam->lpRequestUrl | lpInputParam->lpInBuffer | lpOutputParam->lpOutBuffer
获取门禁事件获取能力集 | GET /ISAPI/AccessControl/GetAcsEvent/capabilities | NULL | <GetAcsEvent>
获取门禁设备事件总条数获取能力 | GET /ISAPI/AccessControl/AcsEventTotalNum/capabilities?format=json | NULL | {GetAcsEvent}(JSON报文)
门禁设备事件总条数获取（该协议的超时时间建议为30s） | POST /ISAPI/AccessControl/AcsEventTotalNum?format=json | {AcsEventTotalNumCond}(JSON报文) | {AcsEventTotalNum}(JSON报文)

See Also

NET_DVR_Login_V40


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_ACS_EVENT | 2514 | 查询历史事件 | NET_DVR_ACS_EVENT_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 设备是否支持查询历史事件，可以通过能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportGetDeviceEvent>。

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Remarks

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_GET_ACS_EVENT | 2514 | 查询历史事件 | NET_DVR_ACS_EVENT_CFG

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以直接透传ISAPI协议命令，实现参数配置、能力集获取等功能。调用该接口需要设备支持ISAPI协议（PUT、GET、POST、DELETE等命令），获取不同类型能力集时对应的输入参数、输出参数不同，具体如下表：

能力集类型 | lpInputParam->lpRequestUrl | lpInputParam->lpInBuffer | lpOutputParam->lpOutBuffer
获取触发抓拍参数能力集 | GET /ISAPI/AccessControl/SnapConfig/capabilities | NULL | SnapConfig
获取触发抓拍参数 | GET /ISAPI/AccessControl/SnapConfig | NULL | SnapConfig
  • 相关的抓拍参数可以通过接口NET_DVR_ContinuousShoot进行设置。

See Also

NET_DVR_Login_V40


NET_DVR_PicUpload

底图上传。

LONG NET_DVR_PicUpload(
  LONG                    lUserID,
  char const              *sFileName,
  LPNET_DVR_PICTURECFG    lpPictureCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sFileName
[in] 上传图片的图片路径（包括文件名）
lpPictureCfg
[in] 图片参数

Return Values

-1表示失败，其他值作为NET_DVR_GetPicUploadState函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口可以上传图片文件作为显示屏的底图。上传之后的图片如果需要删除，可以调用NET_DVR_RemoteControl(命令：NET_DVR_DELETE_PICTURE)实现。

See Also

NET_DVR_GetPicUploadProgress NET_DVR_GetPicUploadState NET_DVR_CloseUploadHandle


NET_DVR_GetPicUploadProgress

获取图片上传的进度。

LONG NET_DVR_GetPicUploadProgress(
  LONG    lUploadHandle
);

Parameters

lUploadHandle
[in] 图片上传句柄，NET_DVR_PicUpload的返回值

Return Values

-1表示失败，0～100表示图片上传进度。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_PicUpload


NET_DVR_CloseUploadHandle

关闭上传句柄，释放资源。

BOOL NET_DVR_CloseUploadHandle(
  LONG    lUploadHandle
);

Parameters

lUploadHandle
[in] NET_DVR_PicUpload的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_PicUpload


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_DELETE_PICTURE | 9126 | 删除底图 | 4 字节底图序号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传的文件名，给入全路径，最多128字节，文件名最多32字节,含最后的’\0’
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_RIGHT_CONTROLLER_AUDIO | 42 | 上传权限控制器音频文件 | NET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM | NULL
  • 指音频文件从客户端上传到设备；，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<UploadRightControllerAudio>。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_RIGHT_CONTROLLER_AUDIO | 24 | 下载权限控制器音频文件 | NET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM
  • 指音频文件从设备下载到客户端，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY， 节点：<DownloadRightControllerAudio>。

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_REGISTER_INFO | 2511 | 获取身份登记信息 | NET_DVR_ID_CARD_BLOCKLIST_COND | 返回状态、进度、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000,//成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_REGISTER_INFO时，对应结构体：NET_DVR_ID_CARD_BLOCKLIST_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_GET_REGISTER_INFO查询身份登记信息时，在调用该接口启动长连接远程配置后，查找结果直接在NET_DVR_StartRemoteConfig设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_CERTIFICATE_BLOCKLIST_TEMPLET | 18 | 下载身份证非授权名单模板 | NULL
  • 设备是否支持下载身份证非授权名单模板能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportDownloadCertificateBlockListTemplet>。

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_CERTIFICATE_BLOCKLIST | 32 | 上传身份证非授权名单列表 | NULL | NULL
  • 设备是否支持上传身份证非授权名单能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportUploadCertificateBlockList>。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE | 2520 | 批量上传非授权名单图片 | NET_DVR_BLOCKLIST_PICTURE_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE，对应结构体：NET_DVR_BLOCKLIST_PICTURE_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE | 2520 | 批量上传非授权名单图片
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 上传非授权名单图片配置 | NET_DVR_BLOCKLIST_PICTURE_CFG

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_BULK_UPLOAD_ID_BLOCKLIST | 2521 | 批量上传身份证非授权名单 | NET_DVR_UPLOAD_ID_BLOCKLIST_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_BULK_UPLOAD_ID_BLOCKLIST，对应结构体：NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_BULK_UPLOAD_ID_BLOCKLIST | 2521 | 批量上传身份证非授权名单
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 上传非授权名单图片配置 | NET_DVR_UPLOAD_ID_BLOCKLIST_CFG

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_ABILITY_INFO | 0x011 | 设备通用能力类型，具体能力根据发送的能力节点来区分
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本字符串指针或结构体指针形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表给出了获取智能交通摄像机能力集时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ABILITY_INFO | 设备通用能力类型，具体能力根据发送的能力节点来区分 | 录播主机能力获取输入描述 | 录播主机能力集XML描述(RecordingHostAbility)

See Also

NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。

    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_SMSRELATIVEPARA_V50 | 获取短信相关参数 | 通道号 | NET_DVR_SMSRELATIVEPARAM_V50 | 2512
NET_DVR_GET_LOGO_OVERLAYCFG | 获取LOGO图片叠加参数 | 通道号 | NET_DVR_LOGO_OVERLAYCFG | 3234
NET_DVR_GET_RECORDING_AUTO_TRACK_CFG | 获取SDI自动跟踪配置信息 | 无效 | NET_DVR_AUTO_TRACK_CFG | 6307
NET_DVR_GET_RECORDING_PUBLISH_CFG | 获取一键发布信息 | 无效 | NET_DVR_PUBLISH_CFG | 6309
NET_DVR_GET_RECORDING_END_TIME | 获取录播剩余时间(结束时间点) | 无效 | NET_DVR_TIME_EX | 6312
NET_DVR_GET_COURSE_INDEX_CFG | 获取课程信息索引 | 课程索引号，从1开始 | NET_DVR_COURSE_RECORDING_INFO | 6316
NET_DVR_GET_PPT_CHANNEL | 获取PPT支持通道号 | 无效 | NET_DVR_PPT_CHANNEL_CFG | 6318
NET_DVR_GET_PPT_DETECT_CFG | 获取PPT检测参数 | 通道号 | NET_DVR_PPT_DETECT_CFG | 6319
NET_DVR_GET_RECORDINGHOST_CFG | 获取录播主机配置信息 | 无效 | NET_DVR_RECORDING_HOST_CFG | 6321
NET_DVR_GET_BACKUP_RECORD_CFG | 获取一键备份配置信息 | 无效 | NET_DVR_BACKUP_RECORD_PARAM | 6323
NET_DVR_GET_MIX_AUDIOIN_CFG | 获取混音输入口参数配置 | 音频输入口号，从1开始 | NET_DVR_MIX_AUDIOIN_CFG | 6351
NET_DVR_GET_MIX_AUDIOOUT_CFG | 获取混音输出口参数配置 | 音频输出口号，从1开始 | NET_DVR_MIX_AUDIOOUT_CFG | 6353
NET_DVR_GET_AUDIOIN_VOLUME_CFG | 获取音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6355
NET_DVR_GET_AUDIOOUT_VOLUME_CFG | 获取音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6369
NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG | 获取设备本地视频输出口分辨率 | 视频输出口，从1开始 | NET_DVR_VIDEOOUT_RESOLUTION_CFG | 6367
NET_DVR_GET_MEMU_OUTPUT_MODE | 获取菜单输出模式 | 无效 | NET_DVR_MENU_OUTPUT_MODE | 155649

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_SMSRELATIVEPARA_V50 | 设置短信相关参数 | 通道号 | NET_DVR_SMSRELATIVEPARAM_V50 | 2513
NET_DVR_SET_LOGO_OVERLAYCFG | 设置LOGO图片叠加参数 | 通道号 | NET_DVR_LOGO_OVERLAYCFG | 3235
NET_DVR_SET_SCREEN_SWITCH | 画面切换控制 | 通道号 | NET_DVR_SCREEN_SWITCH | 4171
NET_DVR_SET_RECORDING_AUTO_TRACK_CFG | 设置SDI自动跟踪配置信息 | 无效 | NET_DVR_AUTO_TRACK_CFG | 6308
NET_DVR_SET_RECORDING_PUBLISH_CFG | 设置一键发布信息 | 无效 | NET_DVR_PUBLISH_CFG | 6310
NET_DVR_RECORDING_ONEKEY_CONTROL | 录播主机一键控制 | 无效 | NET_DVR_RECORDING_CONTROL_CFG | 6311
NET_DVR_SET_COURSE_INDEX_CFG | 设置课程信息索引 | 课程索引号，从1开始 | NET_DVR_COURSE_RECORDING_INFO | 6317
NET_DVR_SET_PPT_DETECT_CFG | 设置PPT检测参数 | 通道号 | NET_DVR_PPT_DETECT_CFG | 6320
NET_DVR_SET_RECORDINGHOST_CFG | 设置录播主机配置信息 | 无效 | NET_DVR_RECORDING_HOST_CFG | 6322
NET_DVR_SET_BACKUP_RECORD_CFG | 设置一键备份配置信息 | 无效 | NET_DVR_BACKUP_RECORD_PARAM | 6324
NET_DVR_SET_MIX_AUDIOIN_CFG | 设置混音输入口参数配置 | 通道号 | NET_DVR_MIX_AUDIOIN_CFG | 6352
NET_DVR_SET_MIX_AUDIOOUT_CFG | 设置混音输出口参数配置 | 音频输出口号，从1开始 | NET_DVR_MIX_AUDIOOUT_CFG | 6354
NET_DVR_SET_AUDIOIN_VOLUME_CFG | 设置音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6356
NET_DVR_SET_AUDIOOUT_VOLUME_CFG | 设置音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6370
NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG | 设置设备本地视频输出口分辨率 | 视频输出口，从1开始 | NET_DVR_VIDEOOUT_RESOLUTION_CFG | 6368
NET_DVR_SET_MEMU_OUTPUT_MODE | 设置菜单输出模式 | 无效 | NET_DVR_MENU_OUTPUT_MODE | 155650

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点（通道）配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。
不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_CURRICULUM_CFG | 获取课表配置信息 | dwCount个NET_DVR_DATE | dwCount个NET_DVR_CURRICULUM_CFG | 6314
NET_DVR_GET_TV_SCREEN_CFG | 获取导播画面停留时间配置 | dwCount个NET_DVR_TV_SCREEN_COND | dwCount个NET_DVR_TV_SCREEN_CFG | 4176
NET_DVR_GET_BV_CALIB_PIC | 获取设备抓取图片和附加信息 | dwCount个NET_DVR_BV_CALIB_COND | dwCount个NET_DVR_BV_CALIB_PIC | 4172
NET_DVR_GET_BV_CALIB_RESULT | 获取双目外参标定结果 | dwCount个NET_DVR_BV_CALIB_INFO | dwCount个NET_DVR_BV_CALIB_RESULT | 4173
NET_DVR_GET_BV_HCORRECTION | 获取双目高度矫正数据 | dwCount个NET_DVR_BV_HCORRECTION_COND | dwCount个NET_DVR_BV_HCORRECTION_CFG | 4174

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_CURRICULUM_CFG | 设置课表配置信息 | dwCount个NET_DVR_DATE | dwCount个NET_DVR_CURRICULUM_CFG | 6315

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_RECORDING_PUBLISH | 6313 | 一键发布录像 | NET_DVR_ONEKEY_PUBLISH_CFG | NULL
NET_DVR_GET_COURSE_LIST | 6434 | 获取课程列表 | NET_DVR_COURSE_LIST_COND | NULL
NET_DVR_GET_STATISTIC_DATA_LIST | 6444 | 获取统计数据列表 | NET_DVR_STATISTIC_DATA_COND | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数，置为NULL
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： dwStatus为NET_SDK_CALLBACK_STATUS_SUCCESS，表示获取和配置成功并且结束； dwStatus为NET_SDK_CALLBACK_STATUS_PROCESSING，lpBuffer：4字节状态 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_FAILED，lpBuffer：4字节状态 + 4字节错误码 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_EXCEPTION，表示长连接配置异常 dwStatus为NET_DVR_CALLBACK_STATUS_SEND_WAIT，表示需要等待一段时间再发送
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_COURSE_LIST时，对应结构体：NET_DVR_COURSE_CFG NET_DVR_GET_STATISTIC_DATA_LIST，对应结构体：NET_DVR_STATISTIC_DATA_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口启动一键发布之后，可以调用NET_DVR_GetNextRemoteConfig接口来获取进度。

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_RECORDING_PUBLISH | 6313 | 一键发布录像 | 4字节进度值(DWORD)，0~100

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取进度之前，必须先调用NET_DVR_StartRemoteConfig得到长连接句柄。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 设备分配的文件ID，上传新文件时为空，续传文件时不能为空（输入新文件上传时返回的文件ID）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

上传新文件时，需要给出文件的总长度，以便NVR划分合适的存储空间。 然后返回文件ID，供后续查询使用，进行文件的续传，续传文件，可以不传长度，因为NVR已经预留了整个文件的空间，所以续传的长度加已经上传的长度不能超过最开始上传的文件总长度，否则续传过程中，大于分配的空间时，将出现续传失败。 续传过程中出现失败，通过接口返回值进行判断错误类型。 续传文件不进行流控，由用户自己控制。

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_BACKGROUND_PIC | 10 | 上传背景图片 | NET_DVR_BACKGROUND_PIC_PRARAM | NET_DVR_UPLOAD_DB_OUT

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_DEL_BV_CALIB_PIC | 4175 | 删除样本图片 | NET_DVR_BV_HCORRECTION_COND

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

如果设置了开锁操作发起源信息，那么当开锁事件记录上传时，会同时包含此信息，用于上层应用做识别使用。

See Also

NET_DVR_Login_V40


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 设备分配的文件ID，上传新文件时为空，续传文件时不能为空（输入新文件上传时返回的文件ID）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_DATA_TO_DB | 9 | 上传文件到视图库 | NET_DVR_UPLOAD_DB_IN | NET_DVR_UPLOAD_DB_OUT
  • 调用该接口建立文件上传连接，然后调用NET_DVR_UploadSend进行数据上传。
  • 设备是否支持文件上传功能对应视图库总能力集(VideoImgDBCap)中节点<isSupportUpload>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CAP)。

See Also

NET_DVR_UploadSend NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_UploadSend

发送数据。

LONG NET_DVR_UploadSend(
  LONG                       lUploadHandle,
  LPNET_DVR_SEND_PARAM_IN    pstruSendParamIN,
  void                       *lpOutBuffer
);

lUploadHandle

lUploadHandle
[in] 文件上传句柄，NET_DVR_UploadFile_V40的返回值
pstruSendParamIN
[in] 上传的数据内容
lpOutBuffer
[out] 输出参数，保留，置为NULL

Return Values

-1表示失败，大于等于0表示本次发送成功的字节数，未发送成功的剩余字节数可以再次调用该接口进行发送。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

发送数据给视图库，每次发送的数据最大不能超过36K。

See Also

NET_DVR_UploadFile_V40


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40或NET_DVR_UploadFile的返回值
pProgress
[out] 返回的进度值

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 需要下载的文件对应的文件ID

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_FILE_FORM_DB | 6 | 从视图库中下载文件 | NET_DVR_DOWNLOAD_CB_PARAM

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
LCD_SCREEN_ABILITY | 0x800 | LCD拼接屏能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了按照不同的能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
LCD_SCREEN_ABILITY | 获取LCD拼接屏能力 | 无 | 屏幕能力XML描述

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_BIGSCREEN_GETSERIAL | 获取大屏串口信息 | 无效 | NET_DVR_SERIAL_CONTROL | 1614
NET_DVR_GET_VCS_USER_CFG | 获取用户信息 | 用户号，从1开始 | NET_DVR_VCS_USER_INFO | 1623
NET_DVR_GET_USING_SERIALPORT | 获取当前使用串口 | 无效 | NET_DVR_USING_SERIALPORT | 1742
NET_DVR_GET_WIN_ZOOM_STATUS | 获取窗口电子放大状态 | 窗口号 | NET_DVR_WIN_ZOOM_STATUS | 9033
NET_DVR_GET_SCREEN_SIGNAL_CFG | 获取屏幕信号源参数 | 无效 | NET_DVR_SCREEN_SIGNAL_CFG | 9037
NET_DVR_GET_SCREEN_SPLICE_CFG | 获取屏幕拼接 | 无效 | NET_DVR_SCREEN_SPLICE_CFG | 9039
NET_DVR_GET_SCREEN_FAN_WORK_MODE | 获取风扇工作方式 | 无效 | NET_DVR_SCREEN_FAN_WORK_MODE_CFG | 9040
NET_DVR_GET_VGA_CFG | 获取VGA信号配置 | 无效 | NET_DVR_SCREEN_VGA_CFG | 9045
NET_DVR_GET_SCREEN_MENU_CFG | 获取屏幕菜单配置 | 无效 | NET_DVR_SCREEN_MENU_CFG | 9048
NET_DVR_GET_SCREEN_DISPLAY_CFG | 获取显示参数 | 无效 | NET_DVR_SCREEN_DISPLAY_CFG | 9051
NET_DVR_GET_PIP_CFG | 获取画中画参数 | 无效 | NET_DVR_PIP_CFG | 9061
NET_DVR_GET_DEFOG_LCD | 获取去雾参数 | 无效 | NET_DVR_DEFOG_LCD | 9074
NET_DVR_GET_SCREEN_POS | 获取屏幕位置参数 | 无效 | NET_DVR_SCREEN_POS_CFG | 9078
NET_DVR_GET_POWERON_DELAY_CFG | 获取延时开机参数 | 无效 | NET_DVR_DELAY_TIME | 9088
NET_DVR_GET_EXTERNAL_MATRIX_RELATION | 获取外接矩阵输入输出关联关系 | 矩阵ID号 | NET_DVR_IO_RELATION_INFO | 9095
NET_DVR_GET_LCD_AUDIO_CFG | 获取LCD屏幕音频参数 | 无效 | NET_DVR_LCD_AUDIO_CFG | 9096
NET_DVR_GET_LCD_WORK_STATE | 获取LCD屏幕工作状态 | 无效 | NET_DVR_SCREEN_WORK_STATE | 9098
NET_DVR_GET_BOOT_LOGO_CFG | 获取LCD屏幕开机logo显示参数 | 无效 | NET_DVR_BOOT_LOGO_CFG | 9099

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_VCS_USER_CFG | 设置用户信息 | 用户号，从1开始 | NET_DVR_VCS_USER_INFO | 1624
NET_DVR_SET_USING_SERIALPORT | 设置当前使用串口 | 无效 | NET_DVR_USING_SERIALPORT | 1743
NET_DVR_SET_SCREEN_SIGNAL_CFG | 设置屏幕信号源参数 | 无效 | NET_DVR_SCREEN_SIGNAL_CFG | 9036
NET_DVR_SET_SCREEN_SPLICE_CFG | 设置屏幕拼接 | 无效 | NET_DVR_SCREEN_SPLICE_CFG | 9038
NET_DVR_SET_SCREEN_FAN_WORK_MODE | 设置风扇工作方式 | 无效 | NET_DVR_SCREEN_FAN_WORK_MODE_CFG | 9041
NET_DVR_SET_VGA_CFG | 设置VGA信号配置 | 无效 | NET_DVR_SCREEN_VGA_CFG | 9046
NET_DVR_SET_SCREEN_MENU_CFG | 设置屏幕菜单配置 | 无效 | NET_DVR_SCREEN_MENU_CFG | 9049
NET_DVR_SET_SCREEN_DISPLAY_CFG | 设置显示参数 | 无效 | NET_DVR_SCREEN_DISPLAY_CFG | 9050
NET_DVR_SET_PIP_CFG | 设置画中画参数 | 无效 | NET_DVR_PIP_CFG | 9060
NET_DVR_SET_DEFOG_LCD | 设置去雾参数 | 无效 | NET_DVR_DEFOG_LCD | 9073
NET_DVR_SET_SCREEN_POS | 设置屏幕位置参数 | 无效 | NET_DVR_SCREEN_POS_CFG | 9077
NET_DVR_SET_POWERON_DELAY_CFG | 设置延时开机参数 | 无效 | NET_DVR_DELAY_TIME | 9087
NET_DVR_SET_LCD_AUDIO_CFG | 设置LCD屏幕音频参数 | 无效 | NET_DVR_LCD_AUDIO_CFG | 9097
NET_DVR_SET_BOOT_LOGO_CFG | 设置LCD屏幕开机logo显示参数 | 无效 | NET_DVR_BOOT_LOGO_CFG | 9100

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 要设置的设备个数，设为1
lpInBuffer
[in] 配置条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口是带有发送数据的批量获取配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。
  • 不同的获取功能对应不同的结构体和命令号，如下表所示：
    • dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_SCREEN_INDEX_GET | 获取屏幕索引相关参数 | dwCount个4字节索引号 | dwCount个NET_DVR_SCREEN_INDEX_CFG | 9080
NET_DVR_GET_SCREEN_POSITION | 获取屏幕位置参数 | dwCount个4字节索引号 | dwCount个NET_DVR_VIDEOWALLDISPLAYPOSITION | 9090
NET_DVR_GET_CURRENT_SCREEN_SCENE | 获取当前屏幕场景号(dwCount为1) | NET_DVR_VIDEO_WALL_INFO | 4字节场景号 | 9092
NET_DVR_GET_SCREEN_SCENE_PARAM | 获取屏幕场景参数 | dwCount个NET_DVR_VIDEO_WALL_INFO | dwCount个NET_DVR_WALLSCENECFG | 9093
NET_DVR_GET_SWITCH_CFG | 获取定时开关机参数(dwCount为1) | NET_DVR_VIDEO_WALL_AREA | NET_DVR_TIME_SWITCH_CFG | 9086
NET_DVR_GET_EXTERNAL_MATRIX_CFG | 获取矩阵信息 | dwCount个4字节矩阵ID | dwCount个NET_DVR_EXTERNAL_MATRIX_CFG | 1619
  • dwCount为0xffffffff时，lpInBuffer为NULL，dwInBufferSize为0，表示获取所有的相关信息，并且此时lpOutBuffer的前4个字节为返回的实际信息个数，4字节后才是返回的具体信息，因此，lpOutBuffer缓冲区的大小需要比列表所述大小多4个字节。其中，NET_DVR_SCREEN_INDEX_GET不支持全部获取。
  • 上述“4字节索引号”取值：1字节设备号+1字节保留+2字节索引序号，设备号和索引序号从1开始。

    • See Also

    NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的子设备个数
lpInBuffer
[in] 配置条件缓冲区
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口是带有发送数据的批量设置配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

    • 不同的设置功能对应不同的结构体和命令号，如下表所示：

    dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SCREEN_INDEX_SET | 设置屏幕索引相关参数 | dwCount个4字节索引号 | dwCount个NET_DVR_SCREEN_INDEX_CFG | 9079
NET_DVR_SET_SCREEN_POSITION | 设置屏幕位置参数 | dwCount个4字节索引号 | dwCount个NET_DVR_VIDEOWALLDISPLAYPOSITION | 9089
NET_DVR_SET_SCREEN_SCENE_PARAM | 设置屏幕场景参数 | dwCount个NET_DVR_VIDEO_WALL_INFO | dwCount个NET_DVR_WALLSCENECFG | 9094
NET_DVR_SET_SWITCH_CFG | 设置定时开关机参数(dwCount为1) | NET_DVR_VIDEO_WALL_AREA | NET_DVR_TIME_SWITCH_CFG | 9085
NET_DVR_SET_EXTERNAL_MATRIX_CFG | 设置矩阵信息 | dwCount个4字节矩阵ID | dwCount个NET_DVR_EXTERNAL_MATRIX_CFG | 1620
  • 上述“4字节索引号”取值：1字节设备号+1字节保留+2字节索引序号，设备号和索引序号从1开始。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_SCREEN_SPLICE_SET | 9081 | 设置屏幕拼接参数 | NULL | 返回状态
NET_DVR_SCREEN_SPLICE_GET | 9082 | 获取屏幕拼接参数 | NULL | 返回状态、信息数据
NET_DVR_SET_SCREEN_PARAM | 9083 | 设置屏幕相关参数 | NET_DVR_MSC_SCREEN_REMOTE_CFG | 返回状态
NET_DVR_GET_SCREEN_PARAM | 9084 | 获取屏幕相关参数 | NET_DVR_MSC_SCREEN_PARAM_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度值(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | 获取屏幕拼接参数时对应结构体：NET_DVR_MSC_SPLICE_CFG 获取屏幕相关参数时对应结构体：NET_DVR_MSC_SCREEN_PARAM_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 设置屏幕拼接参数时，按拼接屏序号设置，一个连接可以设置多个n*n的拼接屏，通过接口NET_DVR_SendRemoteConfig依次发送多个拼接屏的参数
    • 。
  • 设置屏幕相关参数，即将某个电视墙范围的屏幕的参数设置成一致；获取屏幕相关参数时，按从左到右、从上到下返回各个屏幕的参数，回调函数每次获取一个状态值或NET_DVR_MSC_SCREEN_PARAM_CFG结构。
  • 调用该接口启动长连接远程配置后，还需要调用其他接口获取或者设置相关参数，如下表所示：
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_SCREEN_SPLICE_SET | 设置屏幕拼接参数 | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的数据类型(dwDataType)，pSendBuf对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SCREEN_SPLICE_SET | 9081 | 设置屏幕拼接参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_MSC_SEND_DATA | 2 | 屏幕控制器数据类型 | NET_DVR_MSC_SPLICE_CFG

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_SWITCH_MATRIX_IO | 1334 | 矩阵输入输出切换 | NET_DVR_MATRIX_SWITCH_INFO
NET_DVR_CONTROL_SCREEN | 1625 | 屏幕控制 | NET_DVR_SCREEN_CONTROL_V41
NET_DVR_SIMULATE_REMOTE_CONTROL | 9035 | 模拟遥控按键 | NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL
NET_DVR_SHOW_SCREEN_WORK_STATUS | 9044 | 显示屏幕状态 | NULL
NET_DVR_SHOW_IP | 9075 | 远程控制设备显示IP到电视墙 | NULL
NET_DVR_SCREEN_MAINTENANCE_WALL | 9076 | 屏幕维墙 | NET_DVR_SCREEN_WALL_CFG
NET_DVR_SCREEN_SCENE_CONTROL | 9091 | 屏幕场景控制 | NET_DVR_SCENE_CONTROL_INFO

Remarks

  • 登录LCD屏幕服务器对指定屏幕进行模拟遥控按键、显示屏幕状态、显示IP、屏幕维墙控制时使用控制命令：NET_DVR_CONTROL_SCREEN；如果直接登录单个屏幕（带解码板）进行控制，则分别使用用控制命令：NET_DVR_SIMULATE_REMOTE_CONTROL、NET_DVR_SHOW_SCREEN_WORK_STATUS、NET_DVR_SHOW_IP、NET_DVR_SCREEN_MAINTENANCE_WALL。
  • 设备接收到SDK发送的NET_DVR_SHOW_SCREEN_WORK_STATUS命令后屏幕上显示以下内容：
    软件版本号、累计工作时长（小时）、当前风扇工作状态、板卡工作温度、当前屏幕ID。

    • See Also

    NET_DVR_Login_V40


NET_DVR_ScreenZoomIn

大屏电子放大。

BOOL NET_DVR_ScreenZoomIn(
  LONG                    lUserID,
  LPNET_DVR_SCREENZOOM    pStruScreen
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
pStruScreen
[in] 大屏放大信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口用于设置大屏区域放大或缩小，大屏当前的电子放大状态可以调用NET_DVR_GetDVRConfig(命令:NET_DVR_GET_WIN_ZOOM_STATUS)获取。

See Also

NET_DVR_Login_V40


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
MATRIX_ABILITY | 0x213 | SDI矩阵能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式，详见“Remarks”说明）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式，详见“Remarks”说明）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了能力获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
MATRIX_ABILITY | 获取SDI矩阵能力 | 矩阵能力获取输入描述 | 矩阵能力XML描述(MatrixAbility)

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MATRIX_BASE_CFG | 获取矩阵基本参数 | 无效 | NET_DVR_MATRIX_BASE_CFG | 1333
NET_DVR_GET_MATRIX_IO_RELATION | 获取矩阵输入输入关联关系 | 无效 | NET_DVR_IO_RELATION_INFO | 1335
NET_DVR_GET_VCS_USER_CFG | 获取用户信息 | 用户号，从1开始 | NET_DVR_VCS_USER_INFO | 1623

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_MATRIX_BASE_CFG | 设置矩阵基本参数 | 无效 | NET_DVR_MATRIX_BASE_CFG | 1332
NET_DVR_SET_PLAN | 设置预案 | 预案号，从1开始 | NET_DVR_PLAN_CFG | 1616
NET_DVR_SET_VCS_USER_CFG | 设置用户信息 | 用户号，从1开始 | NET_DVR_VCS_USER_INFO | 1624

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_SWITCH_MATRIX_IO | 1334 | 矩阵输入输出切换 | NET_DVR_MATRIX_SWITCH_INFO
NET_DVR_CTRL_PLAN | 1617 | 控制预案 | NET_DVR_CONTROL_PARAM

See Also

NET_DVR_Login_V40


NET_DVR_GetPlanList

获取预案列表。

BOOL NET_DVR_GetPlanList(
  LONG                   lUserID,
  DWORD                  dwDevNum,
  LPNET_DVR_PLAN_LIST    lpPlanList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDevNum
[in] 保留，设为0
lpPlanList
[out] 预案列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

1.调用该接口，将NET_DVR_PLAN_LIST中的pBuffer置为空且dwBufLen为0，此时获取预案个数（dwPlanNums）；
2.根据第一次调用接口返回的数量分配pBuffer的大小，然后再次调用该接口，此时获取预案列表（pBuffer）。


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MB_PLATFORMPARA | 获取平台登录参数 | 无效 | NET_DVR_MB_PLATFORMPARA | 1145
NET_DVR_GET_CMSPARA | 获取平台参数 | 无效 | NET_DVR_CMSPARAM | 1170
NET_DVR_GET_DIALSTATUS | 获取拨号状态参数 | 无效 | NET_DVR_DIALSTATUS | 1172
NET_DVR_GET_SMSRELATIVEPARA | 获取短信相关参数 | 无效 | NET_DVR_SMSRELATIVEPARAM | 1173
NET_DVR_GET_PINSTATUS | 获取PIN状态 | 无效 | NET_DVR_PINSTATUS | 1175
NET_DVR_GET_CAPTUREPIC_CFG | 获取车载抓图配置 | 通道号 | NET_DVR_MOBILE_CAPTUREPIC_CFG | 3108
NET_DVR_GET_MOBILEPLATE_RECOG_CFG | 获取车载车牌识别配置 | 通道号 | NET_DVR_MOBILE_PLATE_RECOGCFG | 3110
NET_DVR_GET_MOBILE_RADAR_CFG | 获取车载雷达配置 | 通道号 | NET_DVR_MOBILE_RADAR_CFG | 3112
NET_DVR_GET_MOBILE_LOCALPLATECHK_CFG | 获取车载非授权名单本地对比配置 | 通道号 | NET_DVR_MOBILE_LOCALPLATECHK_CFG | 3114
NET_DVR_GET_MB_POWERCTRLPARA | 获取启动控制参数 | 无效 | NET_DVR_MB_POWERCTRLPARA | 8000
NET_DVR_GET_AUTOBACKUPPARA | 获取自动备份参数 | 无效 | NET_DVR_MB_AUTOBACKUPPARA | 8002
NET_DVR_GET_MB_GPSPARA | 获取GPS参数 | 无效 | NET_DVR_MB_GPSPARA | 8004
NET_DVR_GET_MB_SENSORINPARA | 获取SENSOR参数 | 无效 | NET_DVR_MB_SENSORINPARA | 8006
NET_DVR_GET_GSENSORPARA | 获取GSENSOR参数 | 无效 | NET_DVR_GSENSORPARA | 8008
NET_DVR_GET_MB_DOWNLOADSVRPARA | 获取下载服务器参数 | 无效 | NET_DVR_MB_DOWNLOADSVRPARA | 8010
NET_DVR_GET_PLATERECOG_PARA | 获取车牌识别参数 | 无效 | NET_DVR_PLATERECOG_PARA | 8012
NET_DVR_GET_ENFORCESYS_PARA | 获取车辆稽查参数 | 无效 | NET_DVR_ENFORCESYS_PARA | 8014

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_MB_PLATFORMPARA | 设置平台登录参数 | 无效 | NET_DVR_MB_PLATFORMPARA | 1146
NET_DVR_SET_CMSPARA | 设置平台参数 | 无效 | NET_DVR_CMSPARAM | 1171
NET_DVR_SET_SMSRELATIVEPARA | 设置短信相关参数 | 无效 | NET_DVR_SMSRELATIVEPARAM | 1174
NET_DVR_SET_PINCMD | 设置PIN命令 | 无效 | NET_DVR_PINCODEPARAM | 1176
NET_DVR_SET_CAPTUREPIC_CFG | 设置车载抓图配置 | 通道号 | NET_DVR_MOBILE_CAPTUREPIC_CFG | 3107
NET_DVR_SET_MOBILEPLATE_RECOG_CFG | 设置车载车牌识别配置 | 通道号 | NET_DVR_MOBILE_PLATE_RECOGCFG | 3109
NET_DVR_SET_MOBILE_RADAR_CFG | 设置车载雷达配置 | 通道号 | NET_DVR_MOBILE_RADAR_CFG | 3111
NET_DVR_SET_MOBILE_LOCALPLATECHK_CFG | 设置车载非授权名单本地对比配置 | 通道号 | NET_DVR_MOBILE_LOCALPLATECHK_CFG | 3113
NET_DVR_SET_MB_POWERCTRLPARA | 设置启动控制参数 | 无效 | NET_DVR_MB_POWERCTRLPARA | 8001
NET_DVR_SET_AUTOBACKUPPARA | 设置自动备份参数 | 无效 | NET_DVR_MB_AUTOBACKUPPARA | 8003
NET_DVR_SET_MB_GPSPARA | 设置GPS参数 | 无效 | NET_DVR_MB_GPSPARA | 8005
NET_DVR_SET_MB_SENSORINPARA | 设置SENSOR参数 | 无效 | NET_DVR_MB_SENSORINPARA | 8007
NET_DVR_SET_GSENSORPARA | 设置GSENSOR参数 | 无效 | NET_DVR_GSENSORPARA | 8009
NET_DVR_SET_MB_DOWNLOADSVRPARA | 设置下载服务器参数 | 无效 | NET_DVR_MB_DOWNLOADSVRPARA | 8011
NET_DVR_SET_PLATERECOG_PARA | 设置车牌识别参数 | 无效 | NET_DVR_PLATERECOG_PARA | 8013
NET_DVR_SET_ENFORCESYS_PARA | 设置车辆稽查参数 | 无效 | NET_DVR_ENFORCESYS_PARA | 8015

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer | cbStateCallback
NET_DVR_VEHICLE_CHECK_START | 3106 | 非授权名单稽查数据回传 | NULL | 返回状态或者数据信息
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 状态，具体定义如下：
enum _NET_SDK_CALLBACK_STATUS_NORMAL_{
  NET_SDK_CALLBACK_STATUS_SUCCESS = 1000,
  NET_SDK_CALLBACK_STATUS_PROCESSING,
  NET_SDK_CALLBACK_STATUS_FAILED,
  NET_SDK_CALLBACK_STATUS_EXCEPTION,
  NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH,
  NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH
}NET_SDK_CALLBACK_STATUS_NORMAL
NET_SDK_CALLBACK_STATUS_SUCCESS
成功
NET_SDK_CALLBACK_STATUS_PROCESSING
处理中
NET_SDK_CALLBACK_STATUS_FAILED
失败
NET_SDK_CALLBACK_STATUS_EXCEPTION
异常
lpBuffer
[out] 存放数据的缓冲区指针
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接配置，在回调函数中判断状态，在状态返回成功之后需要调用NET_DVR_SendRemoteConfig接口发送相应的配置信息。

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的数据类型(dwDataType)，pSendBuf对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 |
NET_DVR_VEHICLE_CHECK_START | 3106 | 非授权名单稽查数据回传 |
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_DVR_VEHICLE_CHECK | 1 | 非授权名单车辆数据稽查类型 | NET_DVR_VEHICLE_CHECK

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_GetVehicleGpsInfo

查询GPS数据。

LONG NET_DVR_GetVehicleGpsInfo(
  LONG                            lUserID,
  LPNET_DVR_GET_GPS_DATA_PARAM    lpGPSDataParam,
  fGPSDataCallback                cbGPSDataCallback,
  void                            *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpGPSDataParam
[in] GPS数据查询条件
cbStateCallback
[in] 数据回调函数，不能为NULL
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fGPSDataCallback)(
  LONG     nHandle,
  DWORD    dwState,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

nHandle
[out] NET_DVR_GetVehicleGpsInfo的返回值
dwState
[out] 状态，具体定义如下表
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwState有关，详见下表
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_CloseLongCfgHandle的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

查找的GPS信息在回调中返回，回调中lpBuffer和dwState有关，如下表所示。

dwState宏定义 | 宏定义值 | 含义 | lpBuffer对应结构
NET_DVR_GPS_FINDING | 0 | 正在查找 | NULL
NET_DVR_GPS_RECV | 1 | 接收数据 | NET_DVR_GPS_DATA
NET_DVR_GPS_OVER | 2 | 查找结束 | NULL
NET_DVR_GPS_EXCEPTION | 3 | 接收异常 | NULL

See Also

NET_DVR_CloseLongCfgHandle


NET_DVR_GetDeviceStatus

获取设备运行状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MB_DEVSTATUS | 获取移动设备状态，dwCount设为0 | 4字节整型：0- GPS状态，1- GSensor状态，2- WIFI状态，3-平台状态 | NET_DVR_MB_MOBILEDEV_STATUS | 1147


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_SOFTHARDWARE_ABILITY | 0x001 | 设备软硬件能力
DEVICE_ENCODE_ALL_ABILITY_V20 | 0x008 | 设备所有编码能力
DEVICE_ALARM_ABILITY | 0x00a | 设备报警能力
DEVICE_USER_ABILITY | 0x00c | 设备用户管理参数能力
DEVICE_NETAPP_ABILITY | 0x00d | 设备网络应用参数能力
DEVICE_SERIAL_ABILITY | 0x010 | 设备RS232和RS485串口能力
STREAM_ABILITY | 0x012 | 设备流能力集
SYSTEM_MANAGEMENT_ABILITY | 0x013 | 设备系统管理能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了能力获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_SOFTHARDWARE_ABILITY | 获取设备软硬件能力 | 无 | 设备软硬件能力XML描述
DEVICE_ENCODE_ALL_ABILITY_V20 | 获取设备所有编码能力 | 编码能力获取输入描述 | 设备所有编码能力XML描述
DEVICE_ALARM_ABILITY | 获取设备报警能力 | 报警能力获取输入描述 | 设备报警能力XML描述
DEVICE_USER_ABILITY | 获取设备用户管理参数能力 | 用户管理参数能力获取输入描述 | 设备用户管理参数能力XML描述
DEVICE_NETAPP_ABILITY | 获取设备网络应用参数能力 | 网络应用参数能力获取输入描述 | 设备网络应用参数能力XML描述
DEVICE_SERIAL_ABILITY | 获取设备RS232和RS485串口能力 | 串口能力获取输入描述 | 设备串口能力XML描述
STREAM_ABILITY | 获取流能力 | 流能力获取输入描述 | 流能力XML描述
SYSTEM_MANAGEMENT_ABILITY | 获取系统管理能力 | 系统管理能力获取输入描述 | 系统管理能力XML描述

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_NETCFG_MULTI | 获取多网卡配置 | 无效 | NET_DVR_NETCFG_MULTI | 1161
NET_DVR_GET_AUTO_REBOOT_CFG | 获取自动重启参数 | 无效 | NET_DVR_AUTO_REBOOT_CFG | 1710
NET_DVR_GET_DEV_WORK_MODE | 获取设备工作模式 | 无效 | NET_DVR_DEV_WORK_MODE | 9108

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_NETCFG_MULTI | 设置多网卡配置 | 无效 | NET_DVR_NETCFG_MULTI | 1162
NET_DVR_SET_AUTO_REBOOT_CFG | 设置自动重启参数 | 无效 | NET_DVR_AUTO_REBOOT_CFG | 1711
NET_DVR_SET_DEV_WORK_MODE | 设置设备工作模式 | 无效 | NET_DVR_DEV_WORK_MODE | 9109

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示获取1个dwCommand指定的配置信息，2表示获取2个配置信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_STREAM_SRC_INFO | 获取流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO | 6017
NET_DVR_GET_STREAM_DST_COMPRESSIONINFO | 获取目标压缩参数 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_COMPRESSIONCFG_V30 | 9101
NET_DVR_GET_ALLSTREAM_SRC_INFO | 获取所有流信息（全部获取） | NULL | 4字节个数(N) + N个NET_DVR_STREAM_SRC_CFG | 9105

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL；lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_STREAM_SRC_INFO | 设置流的来源信息 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_STREAM_SRC_INFO | 6018
NET_DVR_SET_STREAM_DST_COMPRESSIONINFO | 设置目标压缩参数 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_COMPRESSIONCFG_V30 | 9102

dwCommand为NET_DVR_SET_STREAM_SRC_INFO时，如果将IP地址、URL都设为空，则表示删除流ID（dwCount为0xffff ffff时表示删除所有流ID）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_StartPassiveTransCode

启动被动转码

LONG NET_DVR_StartPassiveTransCode(
  LONG                            lUserID,
  LPNET_DVR_STREAM_INFO           pStreamInfo,
  LPNET_DVR_COMPRESSIONCFG_V30    pDstTransInfo,
  LPNET_DVR_PASSIVETRANSINFO      pPassiveTransInfo,
  fTransCodeDataCallBack          cbTransCodeDataCallBack,
  void                            *pUser
);

Parameters

lUserID
[in] 登录转码器的用户ID，NET_DVR_Login_V30的返回值
pStreamInfo
[in] 流来源信息
pDstTransInfo
[in] 目标压缩参数
pPassiveTransInfo
[in] 被动转码参数
cbTransCodeDataCallBack
[in] 回调函数，回调获取转码后的数据
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fTransCodeDataCallBack)(
  LONG     lPassiveHandle,
  DWORD    dwDataType,
  BYTE     *pBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

lPassiveHandle
[out] 被动转码句柄，NET_DVR_StartPassiveTransCode的返回值
dwDataType
[out] 数据类型，见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_STD_VIDEODATA | 4 | 标准（RTP）视频流数据
NET_DVR_STD_AUDIODATA | 5 | 标准（RTP）音频流数据
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_TransCodeInputData函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口时，pStreamInfo中流ID和通道号全部无效时，由设备自动分配，通过接口NET_DVR_GetPassiveTransChanNum可以获取对应的转码通道号或者流ID，然后可以通过接口NET_DVR_GetDeviceStatus获取转码码流状态。

See Also

NET_DVR_TransCodeInputData NET_DVR_StopPassiveTransCode


NET_DVR_TransCodeInputData

向被动转码通道发送数据。

BOOL NET_DVR_TransCodeInputData(
  LONG     lPassiveHandle,
  char     *pBuffer,
  DWORD    dwBufSize
);

Parameters

lPassiveHandle
[in] 被动转码的句柄，NET_DVR_StartPassiveTransCode的返回值
pBuffer
[in] 发送数据的缓冲区指针
dwBufSize
[in] 缓冲区的大小，不超过512K，建议100K以下

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口向转码通道输入实时流数据，如果是RTP流，每次输入需要是一个RTP包。码流头或者RTP码流的SDP信息在NET_DVR_StartPassiveTransCode启动转码时输入（结构体参数：pPassiveTransInfo）。

See Also

NET_DVR_StartPassiveTransCode


NET_DVR_StopPassiveTransCode

停止被动转码。

BOOL NET_DVR_StopPassiveTransCode(
  LONG   lPassiveHandle
);

Parameters

lPassiveHandle
[in] 被动转码的句柄，NET_DVR_StartPassiveTransCode的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartPassiveTransCode


NET_DVR_GetPassiveTransChanNum

根据转码句柄获取设备转码通道号。

LONG NET_DVR_GetPassiveTransChanNum(
  LONG    lPassiveHandle
);

Parameters

lPassiveHandle
[in] 转码句柄，NET_DVR_StartPassiveTransCode的返回值

Return Values

-1表示失败，其他值为设备转码通道号。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

根据转码句柄获取设备转码通道号，此接口用于上层不传入流ID或转码通道号开始被动转码后获取设备自动分配的转码通道号。

See Also

NET_DVR_StartPassiveTransCode


NET_DVR_GetDeviceStatus

获取设备运行状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的。
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_STREAM_TRANS_STATUS | 获取转码码流状态 | dwCount个NET_DVR_STREAM_INFO | dwCount个NET_DVR_TRANSSTATUS | 9103
NET_DVR_GET_DEVICE_TRANS_STATUS | 获取转码设备状态 | NULL | NET_DVR_TRANSDEVICE_STATUS | 9104

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL。lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容，如果设置的lpOutBuffer缓冲区不足，仅返回部分信息，可以根据返回的个数（前4字节的值）重新获取。

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
MATRIXDECODER_ABILITY | 0x200 | 多路解码器显示、解码能力
WALL_ABILITY | 0x212 | 电视墙能力集
MATRIXDECODER_ABILITY_V41 | 0x260 | 解码器能力集（扩展）
DECODER_ABILITY | 0x261 | 解码器xml能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了按照不同的能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
MATRIXDECODER_ABILITY | 获取多路解码器显示、解码能力 | 无 | NET_DVR_MATRIX_ABILITY
WALL_ABILITY | 获取电视墙能力 | 无 | 电视墙能力XML描述(WallAbility)
MATRIXDECODER_ABILITY_V41 | 获取解码器能力集（扩展） | 无 | NET_DVR_MATRIX_ABILITY_V41
DECODER_ABILITY | 获取解码器xml能力集 | 解码器能力集获取输入描述 | 解码器能力集XML描述(DecoderAbility)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_MatrixGetDisplayCfg_V41

解码器获取显示通道配置。

BOOL NET_DVR_MatrixGetDisplayCfg_V41(
  LONG                        lUserID,
  DWORD                       dwDispChanNum,
  LPNET_DVR_MATRIX_VOUTCFG    lpVoutCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDispChanNum
[in] 显示通道，从能力集获取
lpVoutCfg
[out] 显示通道配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40

NET_DVR_MatrixSetDisplayCfg_V41

NET_DVR_GetDeviceAbility

Reference Interface

该接口扩展源于

NET_DVR_MatrixGetDisplayCfg


NET_DVR_MatrixSetDisplayCfg_V41

解码器设置显示通道配置。

BOOL NET_DVR_MatrixSetDisplayCfg_V41(
  LONG                        lUserID,
  DWORD                       dwDispChanNum,
  LPNET_DVR_MATRIX_VOUTCFG    lpDisplayCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDispChanNum
[in] 显示通道，从能力集获取
lpDisplayCfg
[in] 显示通道配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于DS6401HD，VGA、BNC、HDMI、DVI四个显示通道同时只能在一个通道上显示图像，即最后配置的显示通道有效

See Also

NET_DVR_Login NET_DVR_Login_V40

NET_DVR_MatrixGetDisplayCfg_V41

NET_DVR_GetDeviceAbility

Reference Interface

该接口扩展源于

NET_DVR_MatrixSetDisplayCfg


NET_DVR_MatrixDiaplayControl

多路解码器显示通道控制。

BOOL NET_DVR_MatrixDiaplayControl(
  LONG    lUserID,
  DWORD   dwDispChanNum,
  DWORD   dwDispChanCmd,
  DWORD   dwCmdParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDispChanNum
[in] 显示通道，从能力集获取
dwDispChanCmd
[in] 显示通道命令，具体定义如下表所示
dwDispChanCmd宏定义 | 宏定义值 | 含义 | dwCmdParam取值
DISP_CMD_ENLARGE_WINDOW | 1 | 显示通道放大某个窗口 | 子窗口号
DISP_CMD_RENEW_WINDOW | 2 | 显示通道窗口还原 | 子窗口号
dwCmdParam
[in] 命令参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40

NET_DVR_GetDeviceAbility


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_NETCFG_OTHER | 获取网络参数（多路解码器） | 无效 | NET_DVR_NETCFG_OTHER | 244
NET_DVR_MATRIX_BIGSCREENCFG_GET | 获取大屏拼接参数（64T高清解码器支持） | 大屏序号，0~n(从能力集获取) | NET_DVR_BIGSCREENCFG | 1140
NET_DVR_GET_AUTO_REBOOT_CFG | 获取自动重启参数(DS-65xxD) | 无效 | NET_DVR_AUTO_REBOOT_CFG | 1710
NET_DVR_GET_DEV_WORK_MODE | 获取设备工作模式 | 无效 | NET_DVR_DEV_WORK_MODE | 9108
NET_DVR_GET_DEC_VCA_CFG | 获取解码器智能报警参数 | 解码通道号 | NET_DVR_VCA_ALARM_CFG | 9130
NET_DVR_GET_WIN_ROAM_SWITCH_CFG | 获取解码器窗口漫游开关参数 | 无效 | NET_DVR_WIN_ROAM_SWITCH_CFG | 9224
NET_DVR_GET_DECODE_CHANNEL_OSD | 获取解码通道OSD信息（DS-6400HD-T V3.6.0新增） | 解码通道号 | NET_DVR_WIN_ROAM_SWITCH_CFG | 9187

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_NETCFG_OTHER | 设置网络参数（多路解码器） | 无效 | NET_DVR_NETCFG_OTHER | 245
NET_DVR_MATRIX_BIGSCREENCFG_SET | 设置大屏拼接参数（64T高清解码器支持） | 大屏序号，0~n(从能力集获取) | NET_DVR_BIGSCREENCFG | 1141
NET_DVR_SET_AUTO_REBOOT_CFG | 设置自动重启参数(DS-65xxD) | 无效 | NET_DVR_AUTO_REBOOT_CFG | 1171
NET_DVR_SET_DEV_WORK_MODE | 设置设备工作模式 | 无效 | NET_DVR_DEV_WORK_MODE | 9109
NET_DVR_SET_DEC_VCA_CFG | 设置解码器智能报警参数 | 解码通道号 | NET_DVR_VCA_ALARM_CFG | 9131
NET_DVR_SET_WIN_ROAM_SWITCH_CFG | 设置解码器窗口漫游开关参数 | 无效 | NET_DVR_WIN_ROAM_SWITCH_CFG | 9225
NET_DVR_SET_DECODE_CHANNEL_OSD | 设置解码通道OSD信息（DS-6400HD-T V3.6.0新增） | 解码通道号 | NET_DVR_DECODE_CHANNEL_OSD | 9188

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示获取1个dwCommand指定的配置信息，2表示获取2个配置信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_MATRIX_WALL_GET | 获取电视墙中屏幕参数 | dwCount个（4字节）屏幕输出号 | dwCount个NET_DVR_SINGLEWALLPARAM | 9002
NET_DVR_WALLWIN_GET | 电视墙中获取窗口参数 | dwCount个（4字节）窗口号 | dwCount个NET_DVR_WALLWINCFG | 9003
NET_DVR_WALLSCENEPARAM_GET | 电视墙中获取场景参数 | dwCount个（4字节）场景号 | dwCount个NET_DVR_WALLSCENECFG | 9007

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL。

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的配置个数，0和1都表示1个配置（配置类型由dwCommand指定），2表示同时2个配置，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点的信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_MATRIX_WALL_SET | 设置电视墙中屏幕参数 | dwCount个（4字节）屏幕输出号 | dwCount个NET_DVR_SINGLEWALLPARAM | 9001
NET_DVR_WALLWIN_SET | 电视墙中设置窗口参数 | dwCount个（4字节）窗口号 | dwCount个NET_DVR_WALLWINCFG | 9004
NET_DVR_WALLSCENEPARAM_SET | 电视墙中设置场景参数 | dwCount个（4字节）场景号 | dwCount个NET_DVR_WALLSCENECFG | 9008

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_MatrixGetDecChanCfg

获取多路解码器解码通道配置。

BOOL NET_DVR_MatrixGetDecChanCfg(
  LONG                                lUserID,
  DWORD                               dwDecChan,
  LPNET_DVR_MATRIX_DECCHAN_CONTROL    lpInter
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
dwDecChan
[in] 解码通道号
lpInter
[out] 解码通道控制参数，包括解码通道显示缩放控制和解码延时控制

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixSetDecChanCfg NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixSetDecChanCfg

设置多路解码器解码通道参数。

BOOL NET_DVR_MatrixSetDecChanCfg(
  LONG                                lUserID,
  DWORD                               dwDecChan,
  LPNET_DVR_MATRIX_DECCHAN_CONTROL    lpInter
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
dwDecChan
[in] 解码通道号
lpInter
[in] 解码通道控制参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixGetDecChanCfg NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixGetDecChanInfo_V41

获取当前解码通道信息。

BOOL NET_DVR_MatrixGetDecChanInfo_V41(
  LONG                                 lUserID,
  DWORD                                dwDecChanNum,
  LPNET_DVR_MATRIX_DEC_CHAN_INFO_V41   lpOuter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpOuter
[out] 解码通道信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40

Reference Interface

该接口扩展源于
NET_DVR_MatrixGetDecChanInfo_V30


NET_DVR_MatrixGetDecChanStatus

获取当前解码通道状态。

BOOL NET_DVR_MatrixGetDecChanStatus(
  LONG                               lUserID,
  DWORD                              dwDecChanNum,
  LPNET_DVR_MATRIX_DEC_CHAN_STATUS   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[out] 解码通道状态

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取解码器某一解码通道的当前状态包括解码通道状态和解码通道信息两部分，解码通道状态用于获取当前解码通道的连接状态，码流拷贝率等，解码通道信息用于获取当前解码通道的解码状态以及所连接的前端dvr通道相关信息。
提示： 这一部分的内容主要是查询多路解码器各解码通道的连接和解码状态，建议只作为参考信息使用，不建议作为解码器设备工作状态的判定依据，也不建议过于频繁的获取解码通道状态。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixGetDecChanEnable

获取当前解码通道开关。

BOOL NET_DVR_MatrixGetDecChanEnable(
  LONG      lUserID,
  DWORD     dwDecChanNum,
  LPDWORD   lpdwEnable
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpdwEnable
[out] 指向DWORD的指针，取出的值0表示关闭，1表示打开

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

解码通道的解码开关，用于控制解码通道的解码过程，设置此开关为关时，无论当前解码通道是处在动态解码还是轮巡过程，都将停止解码，生效后该通道处于黑屏状态或者最后一帧画面；设置开关为开时，将恢复先前过程。
提示： 此功能可与轮巡，轮巡开关等配合使用。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixSetDecChanEnable


NET_DVR_MatrixSetDecChanEnable

设置当前解码通道开关。

BOOL NET_DVR_MatrixSetDecChanEnable(
  LONG    lUserID,
  DWORD   dwDecChanNum,
  DWORD   dwEnable
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
dwEnable
[in] 0表示关闭；1表示打开

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

解码通道的解码开关，用于控制解码通道的解码过程，设置此开关为关时，无论当前解码通道是处在动态解码还是轮巡过程，都将停止解码，生效后该通道处于黑屏状态或者最后一帧画面；设置开关为开时，将恢复先前过程。
提示： 此功能可与轮巡，轮巡开关等配合使用。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixGetDecChanEnable


NET_DVR_UploadLogo

上传LOGO。

BOOL NET_DVR_UploadLogo(
  LONG                      lUserID,
  DWORD                     dwDecChanNum,
  LPNET_DVR_DISP_LOGOCFG    lpDispLogoCfg,
  char                      *sLogoBuffer
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道号
lpDispLogoCfg
[in] LOGO的参数
sLogoBuffer
[in] LOGO数据缓冲区，最大100K，图像的宽和高必须是32的倍数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

Logo要求bmp格式，24位图，支持分辨率：32*32 ~ 256*128。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_LogoSwitch

LOGO显示控制。

BOOL NET_DVR_LogoSwitch(
  LONG     lUserID,
  DWORD    dwDecChan,
  DWORD    dwLogoSwitch
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChan
[in] 解码通道号
dwLogoSwitch
[in] 开关命令，宏定义如下：
宏定义 | 宏定义值 | 含义
NET_DVR_SHOWLOGO | 1 | 显示LOGO
NET_DVR_HIDELOGO | 2 | 关闭显示LOGO

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixStartDynamic_V41

启动动态解码。

BOOL NET_DVR_MatrixStartDynamic_V41(
  LONG                          lUserID,
  DWORD                         dwDecChanNum,
  LPNET_DVR_PU_STREAM_CFG_V41   lpDynamicInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道。对于DS-6400HD-S，该参数为窗口号。
lpDynamicInfo
[in] 动态解码参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

配置多路解码器某一解码通道连接前端设备的某一通道，持续进行解码，直到调用停止动态解码接口或者关闭解码通道解码开关。解码过程中若因出现网络中断等原因造成解码中断的情况，多路解码器将自动向前端设备发起重连，直到连接成功或者停止解码接口被调用，其间该解码通道处于黑屏状态或者最后一帧画面。

See Also

NET_DVR_MatrixStopDynamic

Reference Interface

该接口扩展源于
NET_DVR_MatrixStartDynamic_V30


NET_DVR_MatrixStopDynamic

停止动态解码。

BOOL NET_DVR_MatrixStopDynamic(
  LONG    lUserID,
  DWORD   dwDecChanNum
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道。对于DS-6400HD-S，该参数为窗口号。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixStartDynamic_V41 NET_DVR_MatrixStartDynamic_V30 NET_DVR_MatrixStartDynamic


NET_DVR_MatrixGetLoopDecChanInfo_V41

获取轮巡解码通道参数。

BOOL NET_DVR_MatrixGetLoopDecChanInfo_V41(
  LONG                                lUserID,
  DWORD                               dwDecChanNum,
  LPNET_DVR_MATRIX_LOOP_DECINFO_V41   lpOuter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道号
lpOuter
[out] 轮巡的解码通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置多路解码器某一解码通道的轮巡解码参数，每个解码通道最多可连接64路前端设备通道进行循环解码，循环周期可以设置，参数设置成功后，若连接信息中的启用标志置为启用，则该通道即进入轮巡状态，开始循环解码，若全部置为不启用，则不进行循环解码。 对循环解码的控制可以配合使用解码轮巡开关来实现，详细参看设置获取解码轮巡开关部分。

See Also

NET_DVR_MatrixSetLoopDecChanInfo_V41

Reference Interface

该接口扩展源于
NET_DVR_MatrixGetLoopDecChanInfo_V30


NET_DVR_MatrixSetLoopDecChanInfo_V41

设置轮巡解码通道参数。

BOOL NET_DVR_MatrixSetLoopDecChanInfo_V41(
  LONG                                lUserID,
  DWORD                               dwDecChanNum,
  LPNET_DVR_MATRIX_LOOP_DECINFO_V41   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[in] 轮巡的解码通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置多路解码器某一解码通道的轮巡解码参数，每个解码通道最多可连接64路前端设备通道进行循环解码，循环周期可以设置，参数设置成功后，若连接信息中的启用标志置为启用，则该通道即进入轮巡状态，开始循环解码，若全部置为不启用，则不进行循环解码。 对循环解码的控制可以配合使用解码轮巡开关来实现，详细参看设置获取解码轮巡开关部分。

See Also

NET_DVR_MatrixGetLoopDecChanInfo_V41

Reference Interface

该接口扩展源于
NET_DVR_MatrixSetLoopDecChanInfo_V30


NET_DVR_MatrixGetLoopDecChanEnable

获取单个解码通道轮巡开关。

BOOL NET_DVR_MatrixGetLoopDecChanEnable(
  LONG      lUserID,
  DWORD     dwDecChanNum,
  LPDWORD   lpdwEnable
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpdwEnable
[out] 0表示关闭，1表示打开

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixSetLoopDecChanEnable


NET_DVR_MatrixSetLoopDecChanEnable

设置单个解码通道轮巡开关。

BOOL NET_DVR_MatrixSetLoopDecChanEnable(
  LONG    lUserID,
  DWORD   dwDecChanNum,
  DWORD   dwEnable
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
dwEnable
[int] 0表示关闭，1表示打开

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixGetLoopDecChanEnable


NET_DVR_MatrixGetLoopDecEnable

获取所有解码通道轮巡开关。

BOOL NET_DVR_MatrixGetLoopDecEnable(
  LONG      lUserID,
  LPDWORD   lpdwEnable
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpdwEnable
[out] 按位表示，0表示关闭，1表示打开

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

轮巡开关用于控制轮巡过程的启停，而不是控制解码的启停，当设置解码器当前正在轮巡的解码通道的轮巡开关为关时，该解码通道停止循环，停留在当前所连接的前端设备通道继续解码，退为动态解码，当设置轮巡开关为开时，解码器恢复该解码通道的循环。

See Also

NET_DVR_MatrixSetLoopDecChanEnable


NET_DVR_MatrixSetRemotePlay

设置解码设备远程回放文件配置。

BOOL NET_DVR_MatrixSetRemotePlay(
  LONG                                lUserID,
  DWORD                               dwDecChanNum,
  LPNET_DVR_MATRIX_DEC_REMOTE_PLAY    lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[in] 远程回放文件参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixSetRemotePlayControl

远程回放文件控制。

BOOL NET_DVR_MatrixSetRemotePlayControl(
  LONG    lUserID,
  DWORD   dwDecChanNum,
  DWORD   dwControlCode,
  DWORD   dwInValue,
  DWORD   *lpOutValue
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
dwControlCode
[in] 控制命令，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_PLAYSTART | 1 | 开始播放
NET_DVR_PLAYSTOP | 2 | 停止播放
NET_DVR_PLAYPAUSE | 3 | 暂停播放
NET_DVR_PLAYRESTART | 4 | 恢复播放
NET_DVR_PLAYFAST | 5 | 快放
NET_DVR_PLAYSLOW | 6 | 慢放
NET_DVR_PLAYNORMAL | 7 | 正常速度播放
NET_DVR_PLAYSTARTAUDIO | 9 | 打开声音
NET_DVR_PLAYSTOPAUDIO | 10 | 关闭声音
NET_DVR_PLAYSETPOS | 12 | 改变文件回放的进度
dwInValue
[in] 设置参数
lpOutValue
[out] 获取到的参数指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中的dwInValue和lpOutValue参数根据不同的命令号决定是否输入和输出，如当进行NET_DVR_PLAYSETPOS命令操作时，需要对dwInValue参数进行赋值。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixGetRemotePlayStatus

获取回放状态。

BOOL NET_DVR_MatrixGetRemotePlayStatus(
  LONG                                      lUserID,
  DWORD                                     dwDecChanNum,
  LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS   lpOuter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpOuter
[out] 回放状态

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

多路解码器远程连接前端设备完成按文件名/时间回放文件，并能够获取相应回放状态，进行回放控制等。按时间回放不支持进度控制；由于回放控制命令是转发实现，存在一定的延迟，因此，回放控制命令不宜过于频繁调用，具体视网络状况而定，当把获取的状态作为客户端处理依据时应考虑网络转发的延迟因素；按时间回放时，获取回放状态所得到的文件信息是当前播放的单个片段的信息，并非整个时间范围内全部片段的信息，判断播放是否结束使用NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS结构中的dwCurDataType成员。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixStartPassiveDecode

多路解码器启动被动解码。

LONG NET_DVR_MatrixStartPassiveDecode(
  LONG                            lUserID,
  DWORD                           dwDecChanNum,
  LPNET_DVR_MATRIX_PASSIVEMODE    lpPassiveMode
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpPassiveMode
[in] 被动解码参数

Return Values

-1表示失败，其他值作为NET_DVR_MatrixSendData等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40
NET_DVR_MatrixSendData NET_DVR_MatrixStopPassiveDecode


NET_DVR_MatrixSendData

向被动解码通道发送数据。

BOOL NET_DVR_MatrixSendData(
  LONG     lPassiveHandle,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lPassiveHandle
[in] NET_DVR_MatrixStartPassiveDecode的返回值
pSendBuf
[in] 发送数据缓冲区
dwBufSize
[in] 发送缓冲区大小，发送数据大小需小于512K字节，推荐30K字节

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixStartPassiveDecode


NET_DVR_MatrixStopPassiveDecode

多路解码器停止被动解码。

BOOL NET_DVR_MatrixStopPassiveDecode(
  LONG   lPassiveHandle
);

Parameters

lPassiveHandle
[in] NET_DVR_MatrixStartPassiveDecode的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixStartPassiveDecode


NET_DVR_MatrixGetPassiveDecodeStatus

获取多路解码器被动解码状态。

LONG NET_DVR_MatrixGetPassiveDecodeStatus(
  LONG      lPassiveHandle
);

Parameters

lPassiveHandle
[in] NET_DVR_MatrixStartPassiveDecode的返回值

Return Values

-1表示失败，1-发送成功，2-暂停发送，3-恢复发送，4-错误，5-心跳信息。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixStartPassiveDecode


NET_DVR_MatrixPassiveDecodeControl

被动解码播放控制。

BOOL NET_DVR_MatrixPassiveDecodeControl(
  LONG                               lUserID,
  DWORD                              dwDecChanNum,
  LPNET_DVR_PASSIVEDECODE_CONTROL    lpInter
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
dwDecChanNum
[in] 解码通道号
lpInter
[in] 解码控制参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixGetTranInfo_V30

获取透明通道信息。

BOOL NET_DVR_MatrixGetTranInfo_V30(
  LONG                                     lUserID,
  LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30    lpTranInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpTranInfo
[out] 透明通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

此处透明通道配置是配置解码器与前端设备之间建立网络透明通道，而不是客户端与解码器之间建立透明通道，多路解码器本身不支持与客户端建立232透明通道和485透明通道，多路解码器本地串口只能作为串口控制台接入（通过RS232）或是控制键盘等输入性设备接入（通过RS232/RS485）。
提示： 目前多路解码器支持最多建立64条透明通道，包括232透明通道和485透明通道，但其中只有最多一条232全双工透明通道和最多一条485全双工透明通道，可以不设置全双工透明通道。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixSetTranInfo_V30

Reference Interface

该接口扩展源于
NET_DVR_MatrixGetTranInfo


NET_DVR_MatrixSetTranInfo_V30

设置透明通道信息。

BOOL NET_DVR_MatrixSetTranInfo_V30(
  LONG                                    lUserID,
  LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30   lpTranInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpTranInfo
[in] 透明通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

此处透明通道配置是配置解码器与前端设备之间建立网络透明通道，而不是客户端与解码器之间建立透明通道，多路解码器本身不支持与客户端建立232透明通道和485透明通道，多路解码器本地串口只能作为串口控制台接入（通过RS232）或是控制键盘等输入性设备接入（通过RS232/RS485）。
提示： 目前多路解码器支持最多建立64条透明通道，包括232透明通道和485透明通道，但其中只有最多一条232全双工透明通道和最多一条485全双工透明通道，可以不设置全双工透明通道。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixGetTranInfo_V30


NET_DVR_MatrixSceneControl

场景切换控制。

BOOL NET_DVR_MatrixSceneControl(
  LONG     lUserID,
  DWORD    dwSceneNum,
  DWORD    dwCmd,
  DWORD    dwCmdParam
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V30的返回值
dwSceneNum
[in] 场景号，能力集中获取。
dwCmd
[in] 命令类型： 1- 场景模式切换（如果要切换的是当前场景，则不进行切换）；2- 初始化场景（将此场景的配置清空，如果是当前场景，则同时对当前场景进行清屏操作）；3- 强制切换（无论是否是当前场景，强制切换）；4- 保存场景
dwCmdParam
[in] 命令参数，保留

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_MatrixGetCurrentSceneMode

获取当前正在使用的场景模式。

BOOL NET_DVR_MatrixGetCurrentSceneMode(
  LONG     lUserID,
  DWORD    *dwSceneNum
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V30的返回值
dwSceneNum
[out] 场景号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CLOSE_ALL_WND | 9016 | 电视墙关闭所有窗口 | NULL
NET_DVR_SWITCH_WIN_TOP | 9017 | 窗口置顶 | 4字节，窗口号
NET_DVR_SWITCH_WIN_BOTTOM | 9018 | 窗口置底 | 4字节，窗口号
NET_DVR_DEC_PLAY_REMOTE_FILE | 9032 | 解码播放远程文件 | NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX

See Also

NET_DVR_Login_V40


NET_DVR_MatrixGetDeviceStatus_V41

解码器获取设备状态。

BOOL NET_DVR_MatrixGetDeviceStatus_V41(
  LONG                                 lUserID,
  LPNET_DVR_DECODER_WORK_STATUS_V41    lpDecoderCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDecoderCfg
[out] 设备状态参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_MatrixGetDeviceStatus


NET_DVR_GetDeviceStatus

获取设备状态。

BOOL NET_DVR_GetDeviceStatus(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 获取设备状态的命令值
dwCount
[in] 要获取的状态个数
lpInBuffer
[in] 状态获取条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的状态内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于0值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

该接口是带有发送数据的批量获取设备状态信息的通用接口。不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_MATRIX_GETWINSTATUS | 获取设备窗口状态 | dwCount个NET_DVR_WALLWIN_INFO | dwCount个NET_DVR_WALL_WIN_STATUS | 9009
NET_DVR_GET_DEC_CHAN_STATUS | 获取解码通道解码状态 | dwCount个4字节解码通道号 | dwCount个NET_DVR_MATRIX_CHAN_STATUS | 9113
NET_DVR_GET_DISP_CHAN_STATUS | 获取显示通道状态 | dwCount个4字节显示通道号 | dwCount个NET_DVR_DISP_CHAN_STATUS_V41 | 9114

全部获取时dwCount置为0xffffffff，lpInBuffer置为NULL，dwInBufferSize置为0，lpStatusList置为NULL。lpOutBuffer前面4个字节为个数(N)，后面为设备返回的N个信息内容，如果设置的lpOutBuffer缓冲区不足，仅返回部分信息，可以根据返回的个数（前4字节的值）重新获取。

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_SDK_FINDMEDICALFILE | 3954 | 智慧医疗查找录像文件 | NET_DVR_FILECOND_MEDICAL | NULL
NET_SDK_FINDMEDICALPICTURE | 3955 | 智慧医疗查找图片文件 | NET_DVR_FIND_PICTURE_MEDICAL_PARAM | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数，置为NULL
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找信息，调用成功后，就可以调用NET_DVR_GetNextRemoteConfig接口来逐个获取到的具体信息。

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_SDK_FINDMEDICALFILE | 3954 | 智慧医疗查找录像文件 | NET_DVR_FINDDATA_V50
NET_SDK_FINDMEDICALPICTURE | 3955 | 智慧医疗查找图片文件 | NET_DVR_FIND_PICTURE_V40

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | sFileName | lpOutBuffer对应结构体
UPLOAD_AI_ALGORITHM_MODEL | 52 | AI开放平台，主动上传算法模型到设备 | NET_DVR_AI_ALGORITHM_MODEL | 算法模型路径 | NULL
UPLOAD_AI_PICTURE | 55 | AI开放平台，图片任务，下发图片为二进制格式 | NET_DVR_AI_PICTUR_UPLOAD | 图片路径 | NULL
  • 上传接口调用流程：
    1) 调用NET_DVR_UploadFile_V40开始上传数据。
    2) 上传过程中调用NET_DVR_GetUploadState获取上传状态和进度。
    3) 调用NET_DVR_UploadClose停止上传，释放资源。
  • 调用NET_DVR_UploadFile_V40(命令UPLOAD_AI_PICTURE)接口上传图片任务之前需要先调用接口：NET_DVR_STDXMLConfig提交图片上传任务，传入相同的任务taskID和图片PID，之后10秒内调用此接口提交图片二进制数据

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_STDXMLConfig

ISAPI协议命令透传。

BOOL NET_DVR_STDXMLConfig(
  LONG                         lUserID,
  NET_DVR_XML_CONFIG_INPUT     *lpInputParam,
  NET_DVR_XML_CONFIG_OUTPUT    *lpOutputParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInputParam
[in] 输入参数
lpOutputParam
[in&out] 输出参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 我司设备有DVR、混合型DVR、NVR、网络摄像机等，通道有两种类型：模拟通道和IP通道（数字通道，针对混合型DVR和NVR设备）。对于使用SDK私有协议对接时需要区分通道类型，不同的通道类型起始通道号不一样，比如混合型DVR和64路以下的NVR的IP通道的通道号是从33开始的（NET_DVR_Login_V40登录设备返回的设备信息NET_DVR_DEVICEINFO_V30里面可以获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan））。但是透传ISAPI协议的NET_DVR_STDXMLConfig这个接口传入的URL命令和XML、JSON数据里面通道号不区分模拟还是数字通道，起始通道号都是1，按顺序递增。因此，不同接口对接存在通道号不一致的问题，需要调用NET_DVR_SDKChannelToISAPI接口进行转换。
  • 通过该接口可以基于SDK私有协议透传HTTP协议RESTful风格的报文内容，实现能力集获取、参数配置、远程控制等更多功能，不同的功能对应不同的方法（PUT、GET、POST、DELETE等）、URL和输入输出参数（XML或JSON格式），详见“透传协议报文”，可以根据功能对应的URL去查找对应的输入输出参数：
    智能视频通用
    人脸相关功能
    人体目标识别
    人员排队检测
    人员密度检测
    安全帽检测
    区域人数统计
    混合目标检测
    异常行为识别
    人体目标识别
    高空抛物
    客流统计
    AI开放平台
    明眸门禁
    可视对讲
    出入口控制
    交通车辆相关
    热成像功能
    基础视频
    云台和跟踪定位
    网络和安全
    设备硬件管理
    设备维护管理
    存储相关功能
    司法行业主机
    录播主机

See Also

NET_DVR_Login_V40


智能视频通用

1. 获取设备事件能力

1.1 命令

GET /ISAPI/Event/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 设备事件能力义, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportHDFull>
    <!--ro, opt, bool, 是否支持磁盘满-->true
  </isSupportHDFull>
  <isSupportHDError>
    <!--ro, opt, bool, 是否支持磁盘错误-->true
  </isSupportHDError>
  <isSupportNicBroken>
    <!--ro, opt, bool, 是否支持网络断开-->true
  </isSupportNicBroken>
  <isSupportIpConflict>
    <!--ro, opt, bool, 是否支持IP冲突-->true
  </isSupportIpConflict>
  <isSupportIllAccess>
    <!--ro, opt, bool, 非法访问-->true
  </isSupportIllAccess>
  <isSupportViException>
    <!--ro, opt, bool, 视频信号异常-->true
  </isSupportViException>
  <isSupportViMismatch>
    <!--ro, opt, bool, 视频制式不匹配-->true
  </isSupportViMismatch>
  <isSupportRecordException>
    <!--ro, opt, bool, 录像异常-->true
  </isSupportRecordException>
  <isSupportRaidException>
    <!--ro, opt, bool, 磁盘Raid异常-->true
  </isSupportRaidException>
  <isSupportViResMismatch>
    <!--ro, opt, bool, 磁盘Raid不去配-->true
  </isSupportViResMismatch>
  <isSupportPOCException>
    <!--ro, opt, bool, POC异常-->true
  </isSupportPOCException>
  <isSupportSmartDetection>
    <!--ro, opt, bool, smart事件监测-->true
  </isSupportSmartDetection>
  <isSupportSpareException>
    <!--ro, opt, bool, 备份异常-->true
  </isSupportSpareException>
  <isSupportPoePowerException>
    <!--ro, opt, bool, Poe电源异常-->true
  </isSupportPoePowerException>
  <isSupportTriggerFocus>
    <!--ro, opt, bool, 虚焦侦测-->true
  </isSupportTriggerFocus>
  <isSupportMotionDetection>
    <!--ro, opt, bool, 移动侦测-->true
  </isSupportMotionDetection>
  <isSupportVideoLoss>
    <!--ro, opt, bool, 视频丢失-->true
  </isSupportVideoLoss>
  <isSupportTamperDetection>
    <!--ro, opt, bool, 遮挡报警-->true
  </isSupportTamperDetection>
  <isSupportFireDetection>
    <!--ro, opt, bool, 火点检测-->true
  </isSupportFireDetection>
  <isSupportRegionEntrance>
    <!--ro, opt, bool, 进入区域-->true
  </isSupportRegionEntrance>
  <isSupportRegionExiting>
    <!--ro, opt, bool, 离开区域-->true
  </isSupportRegionExiting>
  <isSupportLoitering>
    <!--ro, opt, bool, 徘徊侦测-->true
  </isSupportLoitering>
  <isSupportGroup>
    <!--ro, opt, bool, 人员聚集-->true
  </isSupportGroup>
  <isSupportRapidMove>
    <!--ro, opt, bool, 快速移动-->true
  </isSupportRapidMove>
  <isSupportParking>
    <!--ro, opt, bool, 停车侦测-->true
  </isSupportParking>
  <isSupportUnattendedBaggage>
    <!--ro, opt, bool, 物品遗留-->true
  </isSupportUnattendedBaggage>
  <isSupportAttendedBaggage>
    <!--ro, opt, bool, 物品拿取-->true
  </isSupportAttendedBaggage>
  <isSupportHumanAttribute>
    <!--ro, opt, bool, 人体属性检测-->true
  </isSupportHumanAttribute>
  <isSupportFaceContrast>
    <!--ro, opt, bool, 人脸比对-->true
  </isSupportFaceContrast>
  <isSupportFaceLib>
    <!--ro, opt, bool, 前端支持按人脸库联动-->true
  </isSupportFaceLib>
  <isSupportBlackListFaceContrast>
    <!--ro, opt, bool, 非授权名单人脸比对-->true
  </isSupportBlackListFaceContrast>
  <isSupportWhiteListFaceContrast>
    <!--ro, opt, bool, 授权名单人脸比对-->true
  </isSupportWhiteListFaceContrast>
  <isSupportillegalParking>
    <!--ro, opt, bool, 是否支持违停检测-->true
  </isSupportillegalParking>
  <isSupportPedestrian>
    <!--ro, opt, bool, 是否支持行人检测-->true
  </isSupportPedestrian>
  <isSupportTrafficAccident>
    <!--ro, opt, bool, 是否支持交通事故检测-->true
  </isSupportTrafficAccident>
  <isSupportConstruction>
    <!--ro, opt, bool, 是否支持施工检测-->true
  </isSupportConstruction>
  <isSupportRoadBlock>
    <!--ro, opt, bool, 是否支持路障检测-->true
  </isSupportRoadBlock>
  <isSupportAbandonedObject>
    <!--ro, opt, bool, 是否支持抛洒物检测-->true
  </isSupportAbandonedObject>
  <isSupportParallelParking>
    <!--ro, opt, bool, 是否支持侧方位停车检测-->true
  </isSupportParallelParking>
  <isSupportParkingState>
    <!--ro, opt, bool, 是否支持车位状态检测-->true
  </isSupportParkingState>
  <isSupportTrafficJam>
    <!--ro, opt, bool, 是否支持交通堵塞检测(旧)-->true
  </isSupportTrafficJam>
  <isSupportCongestion>
    <!--ro, opt, bool, 是否支持交通堵塞检测-->true
  </isSupportCongestion>
  <isSupportFogDetection>
    <!--ro, opt, bool, 是否支持浓雾检测-->true
  </isSupportFogDetection>
  <isSupportTrunRound>
    <!--ro, opt, bool, 是否支持掉头检测-->true
  </isSupportTrunRound>
  <isSupportCrossLane>
    <!--ro, opt, bool, 是否压线检测-->true
  </isSupportCrossLane>
  <isSupportLaneChange>
    <!--ro, opt, bool, 是否变道检测-->true
  </isSupportLaneChange>
  <isSupportVehicleExist>
    <!--ro, opt, bool, 是否支持机占非-->true
  </isSupportVehicleExist>
  <isSupportStudentsStoodUp>
    <!--ro, opt, bool, 学生起来-->true
  </isSupportStudentsStoodUp>
  <isSupportFramesPeopleCounting>
    <!--ro, opt, bool, 单帧人数统计-->true
  </isSupportFramesPeopleCounting>
  <isSupportPersonQueueDetection>
    <!--ro, opt, bool, 排队检测-->true
  </isSupportPersonQueueDetection>
  <isSupportHumanRecognition>
    <!--ro, opt, bool, 目标检测-->true
  </isSupportHumanRecognition>
  <isSupportFaceSnap>
    <!--ro, opt, bool, 人脸抓拍-->true
  </isSupportFaceSnap>
  <isSupportPersonDensityDetection>
    <!--ro, opt, bool, 是否支持人员密度检测-->true
  </isSupportPersonDensityDetection>
  <HFPD>
    <!--ro, opt, bool, 是否支持高频人员检测-->true
  </HFPD>
  <isSupportVehicleStatistics>
    <!--ro, opt, bool, 车流量统计-->true
  </isSupportVehicleStatistics>
  <isSupportFaceThermometry>
    <!--ro, opt, bool, 是否支持人脸测温-->true
  </isSupportFaceThermometry>
  <isSupportSafetyHelmetDetection>
    <!--ro, opt, bool, 是否支持安全帽检测-->true
  </isSupportSafetyHelmetDetection>
  <isSupportPowerSupplyCabinet>
    <!--ro, opt, bool, 电源柜-->true
  </isSupportPowerSupplyCabinet>
  <isSupportSensorDetection>
    <!--ro, opt, bool, 传感器检测-->true
  </isSupportSensorDetection>
  <isSupportSignAbnormal>
    <!--ro, opt, bool, 信号异常-->true
  </isSupportSignAbnormal>
  <isSupportTeacherBehaviorDetect>
    <!--ro, opt, bool, 教师异常行为识别-->true
  </isSupportTeacherBehaviorDetect>
  <isSupportCityManagement>
    <!--ro, opt, bool, 城管检测-->true
  </isSupportCityManagement>
  <isSupportMixedTargetDetection>
    <!--ro, opt, bool, 混合目标检测-->true
  </isSupportMixedTargetDetection>
  <isSupportFaceSnapModeling>
    <!--ro, opt, bool, 人脸抓拍建模-->true
  </isSupportFaceSnapModeling>
  <isSupportIntersectionAnalysis>
    <!--ro, opt, bool, 路口分析-->true
  </isSupportIntersectionAnalysis>
  <isSupportTriggerCapCheck>
    <!--ro, opt, bool, 触发抓拍检测-->true
  </isSupportTriggerCapCheck>
  <isSupportLuma>
    <!--ro, opt, bool, VQD 亮度异常-->true
  </isSupportLuma>
  <isSupportChroma>
    <!--ro, opt, bool, VQD 图像偏色-->true
  </isSupportChroma>
  <isSupportSnow>
    <!--ro, opt, bool, VQD 雪花干扰-->true
  </isSupportSnow>
  <isSupportStreak>
    <!--ro, opt, bool, VQD 条纹干扰-->true
  </isSupportStreak>
  <isSupportFreeze>
    <!--ro, opt, bool, VQD 画面冻结-->true
  </isSupportFreeze>
  <isSupportSigLose>
    <!--ro, opt, bool, VQD 信号丢失-->true
  </isSupportSigLose>
  <isSupportClarity>
    <!--ro, opt, bool, VQD 清晰度异常-->true
  </isSupportClarity>
  <isSupportJitter>
    <!--ro, opt, bool, VQD 画面抖动-->true
  </isSupportJitter>
  <isSupportBlock>
    <!--ro, opt, bool, VQD 视频遮挡-->true
  </isSupportBlock>
  <isSupportFlowers>
    <!--ro, opt, bool, VQD 图像模糊报警-->true
  </isSupportFlowers>
  <isSupportNoise>
    <!--ro, opt, bool, VQD 花屏-->true
  </isSupportNoise>
  <isSupportGhost>
    <!--ro, opt, bool, VQD 噪点-->true
  </isSupportGhost>
  <isSupportPurple>
    <!--ro, opt, bool, VQD 紫边-->true
  </isSupportPurple>
  <isSupportICR>
    <!--ro, opt, bool, VQD ICP-->true
  </isSupportICR>
  <isSupportProtectiveFilm>
    <!--ro, opt, bool, VQD 保护膜未撕-->true
  </isSupportProtectiveFilm>
  <isSupportVoltageInstable>
    <!--ro, opt, bool, 是否支持电源电压波动异常-->true
  </isSupportVoltageInstable>
  <isSupportCertificateRevocation>
    <!--ro, opt, bool, 是否支持证书失效报警-->true
  </isSupportCertificateRevocation>
  <isSupportSysStorFull>
    <!--ro, opt, bool, 集群系统存储满异常-->true
  </isSupportSysStorFull>
  <isSupportVersionAbnormal>
    <!--ro, opt, bool, 集群版本异常-->true
  </isSupportVersionAbnormal>
  <isSupportNodeOffline>
    <!--ro, opt, bool, 掉线异常-->true
  </isSupportNodeOffline>
  <isSupportRecordCycleAbnormal>
    <!--ro, opt, bool, 录像周期不足-->true
  </isSupportRecordCycleAbnormal>
  <isSupportIpcTransferAbnormal>
    <!--ro, opt, bool, IPC迁移失败-->true
  </isSupportIpcTransferAbnormal>
  <isSupportDrivingBehaviorDetect>
    <!--ro, opt, bool, 驾驶行为检测-->true
  </isSupportDrivingBehaviorDetect>
  <isSupportWasteGasDetection>
    <!--ro, opt, bool, 废气排放监测-->true
  </isSupportWasteGasDetection>
  <isSupportGreyScaleAlarm>
    <!--ro, opt, bool, 灰度报警-->true
  </isSupportGreyScaleAlarm>
  <isSupportPTLocking>
    <!--ro, opt, bool, 是否支持云台堵转异常-->true
  </isSupportPTLocking>
  <isSupportNoMaskDetection>
    <!--ro, opt, bool, 是否支持未戴口罩检测-->true
  </isSupportNoMaskDetection>
  <isSupportTMPA>
    <!--ro, opt, bool, 是否支持人脸测温预警联动-->true
  </isSupportTMPA>
  <RuleScheduleCap>
    <!--ro, opt, object, 按规则时间布防能力-->
    <isSupportCityManagement>
      <!--ro, opt, bool, 智慧城管是否支持按规则时间布防-->true
    </isSupportCityManagement>
  </RuleScheduleCap>
  <RegionScheduleCap>
    <!--ro, opt, object, 按区域时间布防能力-->
    <isSupportPersonDensityDetection>
      <!--ro, opt, bool, 人员密度是否支持按区域时间布防, desc:对应接口：/ISAPI/Event/schedules/personDensityDetection/personDensityDetection-<channelID>/regions/<ID>、/ISAPI/Event/schedules/personDensityDetection/personDensityDetection-<channelID>/regions-->true
    </isSupportPersonDensityDetection>
    <isSupportPersonQueueDetection>
      <!--ro, opt, bool, 排队检测(区域关注度)是否支持按区域时间布防, desc:对应接口：/ISAPI/Event/schedules/personQueueDetection/personQueueDetection-<channelID>/regions/<ID>、/ISAPI/Event/schedules/personQueueDetection/personQueueDetection-<channelID>/regions-->--&gt;true
    </isSupportPersonQueueDetection>
    <isSupportObjectsThrownDetection>
      <!--ro, opt, bool, 高空抛物是否支持按区域时间布防, desc:对应接口：/ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>/regions/<regionID>,/ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>/regions-->true
    </isSupportObjectsThrownDetection>
  </RegionScheduleCap>
  <isSupportAbnormalReboot>
    <!--ro, opt, bool, 是否支持异常重启事件-->true
  </isSupportAbnormalReboot>
  <isSupportChannelOccupy>
    <!--ro, opt, bool, 是否支持室外消防通道被车辆占用事件/ISAPI/Event/triggers/channelOccupy-->true
  </isSupportChannelOccupy>
  <isSupportIndoorPasswayBlock>
    <!--ro, opt, bool, 是否支持室内消防通道被占用事件/ISAPI/Event/triggers/indoorPasswayBlock-->true
  </isSupportIndoorPasswayBlock>
  <isSupportFireSmartFireDetect>
    <!--ro, opt, bool, 是否支持火点检测事件/ISAPI/Event/triggers/fireSmartFireDetect-->true
  </isSupportFireSmartFireDetect>
  <isSupportOffDuty>
    <!--ro, opt, bool, 是否支持消防控制室人员离岗事件/ISAPI/Event/triggers/offDuty-->true
  </isSupportOffDuty>
  <isSupportNoCertificate>
    <!--ro, opt, bool, 是否支持消防控制室持证人员不足事件/ISAPI/Event/triggers/noCertificate-->true
  </isSupportNoCertificate>
  <isSupportSmokeAlarm>
    <!--ro, opt, bool, 是否支持烟雾报警事件 /ISAPI/Event/triggers/smokeAlarm-->true
  </isSupportSmokeAlarm>
  <isSupportBatteryCarDisobey>
    <!--ro, opt, bool, 是否支持电瓶车违规停放事件/ISAPI/Event/triggers/batteryCarDisobey-->true
  </isSupportBatteryCarDisobey>
  <isSupportNoFireExtinguisherRecog>
    <!--ro, opt, bool, 是否支持灭火器缺失事件/ISAPI/Event/triggers/noFireExtinguisherRecog-->true
  </isSupportNoFireExtinguisherRecog>
  <isSupportSmokingDetectAlarm>
    <!--ro, opt, bool, 是否支持抽烟报警事件/ISAPI/Event/triggers/smokeDetectAlarm-->true
  </isSupportSmokingDetectAlarm>
  <isSupportThermalCalibrationFileException>
    <!--ro, opt, bool, 是否支持测温标定文件异常-->true
  </isSupportThermalCalibrationFileException>
  <isSupportTemperatureIntervalMeasurement>
    <!--ro, opt, bool, 是否支持温度区间检测-->true
  </isSupportTemperatureIntervalMeasurement>
  <isSupportObjectsThrownDetection>
    <!--ro, opt, bool, 是否支持高空抛物事件检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json;对应事件为:objectsThrownDetection,不支持不返回-->true
  </isSupportObjectsThrownDetection>
  <isSupportThermalVehicleDetection>
    <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
  </isSupportThermalVehicleDetection>
  <isSupportSlagTruckWashingDetection>
    <!--ro, opt, bool, 是否支持渣土车清洗检测-->true
  </isSupportSlagTruckWashingDetection>
</EventCap>

2. 获取专业智能能力

2.1 命令

GET /ISAPI/Intelligent/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelliCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 智能能力 , attr:version{req, string, 协议版本, range:[,]}-->
  <isFaceSupport>
    <!--ro, opt, bool, 是否支持人脸抓拍, desc:/ISAPI/Intelligent/channels/<ID>/faceRule/Capabilities-->true
  </isFaceSupport>
  <isBehaviorSupport>
    <!--ro, opt, bool, 是否支持异常行为识别, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities-->true
  </isBehaviorSupport>
  <isLineDetectionSupport>
    <!--ro, opt, bool, 是否支持越界侦测, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中LineDetectionParam能力节点-->true
  </isLineDetectionSupport>
  <isFieldDetectionSupport>
    <!--ro, opt, bool, 是否支持区域入侵, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中FieldDetectionParam能力节点-->true
  </isFieldDetectionSupport>
  <isRegionEntranceSupport>
    <!--ro, opt, bool, 是否支持进入区域, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RegionEntranceParam能力节点-->true
  </isRegionEntranceSupport>
  <isRegionExitingSupport>
    <!--ro, opt, bool, 是否支持离开区域, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RegionExitingParam能力节点-->true
  </isRegionExitingSupport>
  <isLoiteringSupport>
    <!--ro, opt, bool, 是否支持徘徊侦测, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中LoiteringParam能力节点-->true
  </isLoiteringSupport>
  <isGroupSupport>
    <!--ro, opt, bool, 是否支持人员聚集, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中GroupParam能力节点-->true
  </isGroupSupport>
  <isRapidMoveSupport>
    <!--ro, opt, bool, 是否支持快速移动, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RapidMoveParam能力节点-->true
  </isRapidMoveSupport>
  <isParkingSupport>
    <!--ro, opt, bool, 是否支持停车检测, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中ParkingParam能力节点-->true
  </isParkingSupport>
  <isUnattendedBaggageSupport>
    <!--ro, opt, bool, 是否支持物品遗留, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中UnattendedBaggageParam能力节点-->true
  </isUnattendedBaggageSupport>
  <isAttendedBaggageSupport>
    <!--ro, opt, bool, 是否支持物品拿取, desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中AttendedBaggageParam能力节点-->true
  </isAttendedBaggageSupport>
  <isTeacherSupport>
    <!--ro, opt, bool, 是否支持教师检测(授课), desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中TeacherParam能力节点-->true
  </isTeacherSupport>
  <isStudentSupport>
    <!--ro, opt, bool, 是否支持学生检测(回答问题), desc:/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中StudentParam能力节点-->true
  </isStudentSupport>
  <HumanRecognitionModeSearchCap>
    <!--ro, opt, object, 人体查询能力集;对应配置接口：/ISAPI/Intelligent/humanRecognition/Search/channels, desc:/ISAPI/Intelligent/humanRecognition/Search/channels-->
    <searchTargetsNumMax>
      <!--ro, opt, int, 查询目标最大个数, range:[,], step:, unit:, unitType:-->1
    </searchTargetsNumMax>
    <HumanMode>
      <!--ro, opt, string, 支持的查询筛选条件, range:[,]-->test
      <searchCond opt="age_group,gender,jacet_color,glass,bag,ride,unlimit">
        <!--ro, opt, string, 支持的查询筛选条件, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:age_group(年龄段),gender(性别),jacet_color(上衣颜色),glass(是否带眼镜),bag(是否背包),ride(是否骑自行车),unlimit(不限)}-->test
      </searchCond>
      <similarity min="0.0" max="100.0">
        <!--ro, opt, float, 支持相似度筛选, range:[0.0,100.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </similarity>
    </HumanMode>
    <HumanInfo>
      <!--ro, opt, object, 人体信息, desc:属性搜图的时候<HumanInfo>是必填项；<ModeInfo>不用赋值添-->
      <age_group opt="child,infant,kid,middle,middleAged,old,prime,teenager,unknown,young">
        <!--ro, req, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年], attr:opt{req, string, 取值范围, range:[,]}-->any
      </age_group>
      <gender opt="female,male,unknown">
        <!--ro, req, enum, 性别, subType:string, [any#条件不限（搜索的时候使用）,female#女,male#男,unknown#未知], attr:opt{req, string, 取值范围, range:[,]}-->any
      </gender>
      <jacet_color opt="black,black,blue,brown,cyan,deepBlue,deepGray,gray,green,mixture,orange,pink,purple,red,silver,unknown,white,yellow">
        <!--ro, opt, string, 上衣颜色, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </jacet_color>
      <glass opt="yes,no,unknown,sunglasses">
        <!--ro, req, enum, 是否戴眼镜（废弃）, subType:string, [any#条件不限（搜索的时候使用）,no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是], attr:opt{req, string, 取值范围, range:[,]}-->any
      </glass>
      <bag opt="yes,no,unknown">
        <!--ro, req, enum, 是否背包, subType:string, [no#否,unknown#未知,yes#是], attr:opt{req, string, 取值范围, range:[,]}-->no
      </bag>
      <ride opt="yes,no,unknown">
        <!--ro, req, enum, 是否骑车, subType:string, [any#条件不限（搜索的时候使用）,no#否,unknown#未知,yes#是], attr:opt{req, string, 取值范围, range:[,]}-->any
      </ride>
    </HumanInfo>
    <positive opt="true,false">
      <!--ro, opt, bool, 支持误报过滤, attr:opt{req, string, 取值范围, range:[,]}-->true
    </positive>
    <eventType opt="unlimit,humanRecognition">
      <!--ro, req, enum, 事件类型, subType:string, [unlimit#不限,humanRecognition#人体识别], attr:opt{req, string, 取值范围, range:[,]}-->unlimit
    </eventType>
    <isSupportMultiChannelSearch>
      <!--ro, opt, bool, 是否支持多通道检索-->true
    </isSupportMultiChannelSearch>
    <isSupportTotalSearchResult>
      <!--ro, opt, bool, 是否支持设备单次检索条数限制-->true
    </isSupportTotalSearchResult>
    <isSupportLocalDataPackage>
      <!--ro, opt, bool, 是否支持本地数据导出, desc:/ISAPI/Intelligent/humanRecognition/Search/channels/localDataPackage-->true
    </isSupportLocalDataPackage>
    <TaskInfoList size="5">
      <!--ro, opt, array, 任务列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <TaskInfo>
        <!--ro, opt, object, 任务信息-->
        <taskID>
          <!--ro, req, string, 任务ID, range:[,], desc:来自于视频化结构分析任务（/ISAPI/SDT/Management/Task/Video/monitorPort?format=json，/ISAPI/SDT/Management/Task/Video/monitorPort/batch?format=json等视频分析任务接口返回的taskID）-->test
        </taskID>
      </TaskInfo>
    </TaskInfoList>
  </HumanRecognitionModeSearchCap>
  <VehicleRecognitionModeSearchCap>
    <!--ro, opt, object, 车辆查询能力集, desc:对应配置接口/ISAPI/Intelligent/vehicleRecognition/Search/channels-->
    <searchTargetsNumMax>
      <!--ro, opt, int, 查询目标最大个数, range:[,], step:, unit:, unitType:-->1
    </searchTargetsNumMax>
    <eventType opt="unlimit,vehicleBlackList,vehicleWhiteList">
      <!--ro, req, enum, 事件类型, subType:string, [unlimit#不限,vehicleBlackList#车辆非授权名单,vehicleWhiteList#车辆授权名单], attr:opt{req, string, 取值范围, range:[,]}-->unlimit
    </eventType>
    <VehicleMode>
      <!--ro, opt, object, 车辆查询模式-->
      <searchCond opt="licensePlate,vehicleLogo,vehicleSubLogoRecog,vehicleType,vehicleColor,unlimit">
        <!--ro, opt, string, 支持的查询筛选条件, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:支持的查询筛选条件,licensePlate(车牌号),vehicleLogo(车辆主品牌),vehicleSubLogoRecog(车辆子品牌),vehicleType(车辆类型),vehicleColor(车辆颜色),unlimit(不限)}-->test
      </searchCond>
      <similarity min="0.0" max="100.0">
        <!--ro, opt, float, 支持相似度筛选, range:[0.0,100.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </similarity>
    </VehicleMode>
    <isSupportMultiChannelSearch>
      <!--ro, opt, bool, 是否支持多通道检索-->true
    </isSupportMultiChannelSearch>
    <isSupportTotalSearchResult>
      <!--ro, opt, bool, 是否支持设备单次检索条数限制-->true
    </isSupportTotalSearchResult>
  </VehicleRecognitionModeSearchCap>
  <FaceContrastAnalyzeCap>
    <!--ro, opt, object, 人脸比对分析能力-->
    <isSupportTrigger opt="false,true">
      <!--ro, opt, bool, 是否支持手动触发人力比对, attr:opt{req, string, 取值范围, range:[,]}, desc:手动触发人脸比对,并通过人脸比对事件异步上报结果,对接配置接口：/ISAPI/Intelligent/channels/<ID>/faceContrast/analyze-->true
    </isSupportTrigger>
    <SearchCondition>
      <!--ro, opt, object, 人脸比对分析结果查询, desc:/ISAPI/Intelligent/channels/<ID>/faceContrast/analyze/search-->
      <startTime>
        <!--ro, req, datetime, 查询开始时间-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--ro, req, datetime, 查询结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </SearchCondition>
  </FaceContrastAnalyzeCap>
  <FramesPeopleCountingCap>
    <!--ro, opt, object, 单帧人数统计能力集;, desc:对应配置接口：/ISAPI/Intelligent/channels/<ID>/framesPeopleCounting-->
    <Statistics>
      <!--ro, opt, object, 单帧人数统计手动触发配置, desc:对应配置接口：/ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/statistics-->
      <SearchCondition>
        <!--ro, opt, object, 单帧人数统计手动触发结果查询, desc:对应配置接口：/ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/statistics/search-->
        <startTime>
          <!--ro, req, datetime, 查询开始时间-->1970-01-01T00:00:00+08:00
        </startTime>
        <endTime>
          <!--ro, req, datetime, 查询结束时间-->1970-01-01T00:00:00+08:00
        </endTime>
      </SearchCondition>
    </Statistics>
    <MaskRegion>
      <!--ro, opt, object, 屏蔽区域-->
      <maxRegionNum>
        <!--ro, opt, int, 区域个数, range:[,], step:, unit:, unitType:-->1
      </maxRegionNum>
      <Region>
        <!--ro, opt, object, 区域-->
        <vertexNum min="3" max="10">
          <!--ro, opt, int, 区域顶点数量, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </vertexNum>
      </Region>
    </MaskRegion>
  </FramesPeopleCountingCap>
  <FaceContrastPersonInfoExtend>
    <!--ro, opt, object, 人员标签能力-->
    <personInfoCap>
      <!--ro, opt, object, 按设备区分人脸比人员标签能力, desc:对应配置接口：/ISAPI/Intelligent/faceContrast/personInfoExtend-->
      <maxPersonInfo min="0" max="4">
        <!--ro, opt, int, 人员标签最大数目, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </maxPersonInfo>
    </personInfoCap>
    <personInfoFDlibCap>
      <!--ro, opt, object, 按人脸库区分人脸比人员标签能力, desc:对应配置接口：/ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<ID>-->
      <maxPersonInfo min="0" max="4">
        <!--ro, opt, int, 人员标签最大数目, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </maxPersonInfo>
    </personInfoFDlibCap>
  </FaceContrastPersonInfoExtend>
  <isSupportUploadFacePictureByForm>
    <!--ro, opt, bool, 是否支持通过表单格式上传人脸图片, desc:对应接口:/ISAPI/Intelligent/analysisImage/face-->true
  </isSupportUploadFacePictureByForm>
  <isSupportUploadHumanPictureByForm>
    <!--ro, opt, bool, 是否支持通过表单格式上传人体图片, desc:对应接口:/ISAPI/Intelligent/analysisImage/human-->true
  </isSupportUploadHumanPictureByForm>
  <isSupportMisinfoFilterStatisticalMode>
    <!--ro, opt, bool, 是否支持人脸比对去误报统计, desc:对应接口：/ISAPI/Intelligent/misinfoFilter/statisticalMode?format=json-->true
  </isSupportMisinfoFilterStatisticalMode>
  <isSupportSafetyHelmetDetection>
    <!--ro, opt, bool, 是否支持安全帽检测, desc:对应接口：/ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection-->true
  </isSupportSafetyHelmetDetection>
  <isSupportDistanceRecognition>
    <!--ro, opt, bool, 是否支持距离检测, desc:可以检测出目标到设备的实际距离,最初在红外鹰眼中实现;对应接口:/ISAPI/Intelligent/distanceRecognition/distance?format=json-->true
  </isSupportDistanceRecognition>
  <isSupportFaceScore>
    <!--ro, opt, bool, 人脸评分配置（设备级）, desc:对应接口:/ISAPI/Intelligent/faceContrast/faceScore-->true
  </isSupportFaceScore>
  <isSupportUploadFacePictureByUrl>
    <!--ro, opt, bool, 是否支持通过url格式上传人脸图片, desc:可支持通过图片URL的方式导入图片到设备中进行分析，返回目标模型数据;对应接口：/ISAPI/Intelligent/analysisImage/face?dataType=url-->true
  </isSupportUploadFacePictureByUrl>
  <isSupportATM>
    <!--ro, opt, bool, ATM智能配置（设备级）, desc:对应/ISAPI/Intelligent/ATM/capabilities?format=json协议是否支持-->true
  </isSupportATM>
  <isSupportTeacherBehaviorSearch>
    <!--ro, opt, bool, 是否支持教师行为检索(多通道), desc:对应URI /ISAPI/Intelligent/teacherBehavior/search/capabilities?format=json-->true
  </isSupportTeacherBehaviorSearch>
  <isSupportPersonDensityDetection>
    <!--ro, opt, bool, 是否支持人员密度检测-->true
  </isSupportPersonDensityDetection>
  <isPeopleNumChange>
    <!--ro, opt, bool, 是否支持人数异常-->true
  </isPeopleNumChange>
  <isLeavePositionSupport>
    <!--ro, opt, bool, 是否支持离岗检测-->true
  </isLeavePositionSupport>
  <isFailDownSupport>
    <!--ro, opt, bool, 是否支持人员倒地-->true
  </isFailDownSupport>
  <isSupportSmokeDetection>
    <!--ro, opt, bool, 是否支持烟雾检测-->true
  </isSupportSmokeDetection>
  <isSupportMisinfoConfirm>
    <!--ro, opt, bool, 是否支持误报确认-->true
  </isSupportMisinfoConfirm>
  <isSupportFireEscapeDetectionSearch>
    <!--ro, opt, bool, 是否支持消防通道检测事件检索(多通道), desc:对应URI/ISAPI/Intelligent/fireEscapeDetection/search/capabilities?format=json-->true
  </isSupportFireEscapeDetectionSearch>
  <isSupportTakingElevatorDetectionSearch>
    <!--ro, opt, bool, 是否支持乘梯检测事件检索(多通道), desc:对应URI /ISAPI/Intelligent/takingElevatorDetection/search/capabilities?format=json-->true
  </isSupportTakingElevatorDetectionSearch>
  <isSupportCityManagementSearch>
    <!--ro, opt, bool, 是否支持城管事件检索(多通道), desc:对应URI /ISAPI/Intelligent/cityManagement/search/capabilities?format=json-->true
  </isSupportCityManagementSearch>
  <isSupportSafetyHelmetDetectionSearch>
    <!--ro, opt, bool, 是否支持安全帽检索(多通道), desc:对应URI /ISAPI/Intelligent/safetyHelmetDetection/search/capabilities?format=json-->true
  </isSupportSafetyHelmetDetectionSearch>
  <AnalysisImageFaceCap>
    <!--ro, opt, object, 人脸图片分析类型, desc:也即/ISAPI/Intelligent/analysisImage/face能力-->
    <modeling opt="false">
      <!--ro, opt, bool, 是否支持建模, attr:opt{req, string, 取值范围, range:[,]}, desc:表示/ISAPI/Intelligent/analysisImage/face?modeling=XX,中modeling的取值范围,若不返回，则表示检测目标框和建模同时进行-->true
    </modeling>
  </AnalysisImageFaceCap>
  <isSupportHeadRiseRateSearch>
    <!--ro, opt, bool, 是否支持抬头率检索(多通道) , desc:对应URI:/ISAPI/Intelligent/headRiseRate/search/capabilities?format=json-->true
  </isSupportHeadRiseRateSearch>
  <isSupportStudentBehaviorPicture>
    <!--ro, opt, bool, 是否支持学生异常行为识别图片参数配置, desc:对应URI:/ISAPI/Intelligent/headRiseRate/search/capabilities?format=json-->true
  </isSupportStudentBehaviorPicture>
  <isSupportFramesPeopleCountingSearch>
    <!--ro, opt, bool, 是否支持区域人数多通道查询, desc:对应URL:/ISAPI/Intelligent/framesPeopleCounting/search/capabilities?format=json-->true
  </isSupportFramesPeopleCountingSearch>
  <isSupportFacePictureModelingCheck>
    <!--ro, opt, bool, 是否支持人脸图片建模实时校验, desc:对应URL:/ISAPI/Intelligent/facePicture/modelingCheck/capabilities?format=json-->true
  </isSupportFacePictureModelingCheck>
  <isSupportOffDuty>
    <!--ro, opt, bool, 是否支持人员离睡岗（人员离岗或在岗睡觉）, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/offDuty/capabilities?format=json-->true
  </isSupportOffDuty>
  <isSupportChannelOccupy>
    <!--ro, opt, bool, 是否支持室外通道堵塞侦测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/channelOccupy/capabilities?format=json-->true
  </isSupportChannelOccupy>
  <isSupportBatteryCarDisobey>
    <!--ro, opt, bool, 是否支持电瓶车违停, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/batteryCarDisobey/capabilities?format=json-->true
  </isSupportBatteryCarDisobey>
  <isSupportIndoorPasswayBlock>
    <!--ro, opt, bool, 是否支持室内通道被占用检测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/indoorPasswayBlock/capabilities?format=json-->true
  </isSupportIndoorPasswayBlock>
  <isSupportFireSmartFireDetect>
    <!--ro, opt, bool, 是否支持火点检测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/fireSmartFireDetect/capabilities?format=json-->true
  </isSupportFireSmartFireDetect>
  <isSupportFireNoRegulation>
    <!--ro, opt, bool, 是否支持人离火检测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/fireNoRegulation/capabilities?format=json-->true
  </isSupportFireNoRegulation>
  <isSupportMisinfoPackage>
    <!--ro, opt, bool, 是否支持误报导出, desc:对应URL:/ISAPI/Intelligent/misinfoFilter/dataPackage?format=json-->true
  </isSupportMisinfoPackage>
</IntelliCap>

3. 获取通道智能能力

3.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/capabilities

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelliCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 禁止算法库恢复默认参数（反向能力）, attr:version{req, string, 协议版本, range:[,]}-->
  <isFaceSupport>
    <!--ro, req, bool, 是否支持人脸抓拍, desc:对应事件规则配置能力/ISAPI/Intelligent/channels/<ID>/faceRule/Capabilities-->true
  </isFaceSupport>
  <isBehaviorSupport>
    <!--ro, req, bool, 是否支持异常行为识别, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities-->true
  </isBehaviorSupport>
  <isLineDetectionSupport>
    <!--ro, req, bool, 是否支持越界侦测, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中LineDetectionParam能力节点-->true
  </isLineDetectionSupport>
  <isFieldDetectionSupport>
    <!--ro, req, bool, 是否支持区域入侵, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中FieldDetectionParam能力节点-->true
  </isFieldDetectionSupport>
  <isRegionEntranceSupport>
    <!--ro, req, bool, 是否支持进入区域, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RegionEntranceParam能力节点-->true
  </isRegionEntranceSupport>
  <isRegionExitingSupport>
    <!--ro, req, bool, 是否支持离开区域, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RegionExitingParam能力节点-->true
  </isRegionExitingSupport>
  <isLoiteringSupport>
    <!--ro, req, bool, 是否支持徘徊侦测, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中LoiteringParam能力节点-->true
  </isLoiteringSupport>
  <isGroupSupport>
    <!--ro, opt, bool, 是否支持人员聚集, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中GroupParam能力节点-->true
  </isGroupSupport>
  <isRapidMoveSupport>
    <!--ro, opt, bool, 是否支持快速移动, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RapidMoveParam能力节点-->true
  </isRapidMoveSupport>
  <isParkingSupport>
    <!--ro, opt, bool, 是否支持停车检测, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中ParkingParam能力节点-->true
  </isParkingSupport>
  <isUnattendedBaggageSupport>
    <!--ro, opt, bool, 是否支持物品遗留, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中UnattendedBaggageParam能力节点-->true
  </isUnattendedBaggageSupport>
  <isAttendedBaggageSupport>
    <!--ro, opt, bool, 是否支持物品拿取, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中AttendedBaggageParam能力节点-->true
  </isAttendedBaggageSupport>
  <isTeacherSupport>
    <!--ro, opt, bool, 是否支持教师检测(授课), desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中TeacherParam能力节点-->true
  </isTeacherSupport>
  <isStudentSupport>
    <!--ro, opt, bool, 是否支持学生检测(回答问题), desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中StudentParam能力节点-->true
  </isStudentSupport>
  <isSupportAlgParam>
    <!--ro, opt, bool, 是否支持算法参数配置-->true
  </isSupportAlgParam>
  <isSupportFaceRule>
    <!--ro, opt, bool, 是否支持人脸抓拍规则参数配置-->true
  </isSupportFaceRule>
  <isSupportIntelliResource>
    <!--ro, opt, bool, 是否支持智能资源配置-->true
  </isSupportIntelliResource>
  <isSupportShield>
    <!--ro, opt, bool, 是否支持屏蔽区域配置-->true
  </isSupportShield>
  <isFaceCaptureStatisticsSupport>
    <!--ro, opt, bool, 是否支持人脸抓拍人员统计结果, desc:对应配置接口：/ISAPI/Intelligent/channels/ID/faceCaptureStatistics/search-->true
  </isFaceCaptureStatisticsSupport>
  <isRunningSupport>
    <!--ro, opt, bool, 是否支持奔跑, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RunningParam能力节点-->true
  </isRunningSupport>
  <isPeopleNumChange>
    <!--ro, opt, bool, 是否支持人数异常, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中PeopleNumChangeParam能力节点-->true
  </isPeopleNumChange>
  <isSpacingChangeSupport>
    <!--ro, opt, bool, 是否支持间距变化, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中SpacingChangeParam能力节点-->true
  </isSpacingChangeSupport>
  <isViolentMotionSupport>
    <!--ro, opt, bool, 是否支持剧烈运动, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中ViolentMotionParam能力节点-->true
  </isViolentMotionSupport>
  <isLeavePositionSupport>
    <!--ro, opt, bool, 是否支持离岗检测, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中LeavePositionParam能力节点-->true
  </isLeavePositionSupport>
  <isFailDownSupport>
    <!--ro, opt, bool, 是否支持人员倒地, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中FailDownParam能力节点-->true
  </isFailDownSupport>
  <isRetentionParamSupport>
    <!--ro, opt, bool, 是否支持滞留检测, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中RetentionParam能力节点-->true
  </isRetentionParamSupport>
  <isSupportPersonDensityDetection>
    <!--ro, opt, bool, 是否支持人员密度检测, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/PersonDensityDetection/capabilities-->true
  </isSupportPersonDensityDetection>
  <RestoreLib>
    <!--ro, opt, object, 恢复算法库能力, desc:对应的接口：/ISAPI/Intelligent/channels/<ID>/restoreLib/<NAME>-->
    <libName opt="studentsStoodUp,peopleCounting,shipsDetection,sunReflectionBlur,vehicleBlur,AFD,IAS">
      <!--ro, opt, string, 所支持的恢复算法库功能的对应算法库名称, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:studentsStoodUp学生起立算法,peopleCounting人员统计算法,shipsDetection船只检测算法,太阳反光过滤-sunReflectionBlur
车辆过滤-vehicleBlur,AFD#异常人脸检测(ATM中使用),IAS#智能ATM视频分析功能-->test
    </libName>
  </RestoreLib>
  <MultiSceneFaceRule>
    <!--ro, opt, object, 多场景人脸抓拍能力, desc:对应的接口：/ISAPI/Intelligent/channels/<ID>/faceRule/multiScene-->
    <sid min="1" max="8">
      <!--ro, opt, int, 所支持的多场景个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </sid>
  </MultiSceneFaceRule>
  <isSupportAlgLibParamKey>
    <!--ro, opt, bool, 算法库内部关键字-->true
  </isSupportAlgLibParamKey>
  <isStudentsStoodUpSupport>
    <!--ro, opt, bool, 学生起立事件能力, desc:对应接口能力：/ISAPI/Intelligent/channels/<ID>/studentsStoodUp/capabilities-->true
  </isStudentsStoodUpSupport>
  <isFramesPeopleCountingSupport>
    <!--ro, opt, bool, 区域人数统计能力, desc:对应配置接口：/ISAPI/Intelligent/channels/<ID>/framesPeopleCounting-->true
  </isFramesPeopleCountingSupport>
  <RecognitionThreshold>
    <!--ro, opt, object, 识别目标的检测阈值, desc:对应接口：/ISAPI/Intelligent/channels/<ID>/recognitionThreshold-->
    <faceScore min="0" max="10">
      <!--ro, opt, int, 人脸评分能力, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当识别目标为人脸时,对应的人脸评分能力"/ISAPI/Intelligent/channels/<ID>/recognitionThreshold?target=faceScore-->1
    </faceScore>
    <vehicle min="150" max="500" def="180">
      <!--ro, opt, int, 车辆抓拍的过滤像素值能力, range:[150,500], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:当识别目标为车辆时,对应的车辆抓拍的过滤像素值能力"/ISAPI/Intelligent/channels/<ID>/recognitionThreshold?target=vehicle-->180
    </vehicle>
  </RecognitionThreshold>
  <RecognitionDataUpload>
    <!--ro, opt, object, 目标抓拍报警协议配置能力, desc:对应接口：/ISAPI/Intelligent/channels/<ID>/recognitionDataUpload-->
    <protocolA>
      <!--ro, opt, bool, SDK协议中对应的 COMM_UPLOAD_FACESNAP_RESULT & COMM_ITS_PLATE_RESULT-->true
    </protocolA>
    <protocolB>
      <!--ro, opt, bool, SDK协议中对应的 COMM_VCA_ALARM-->true
    </protocolB>
  </RecognitionDataUpload>
  <isIntellWorkModeSupport>
    <!--ro, opt, bool, 控制智能配置模块、实时收图模块是否开放, desc:只有交通设备使用,对应接口：/ISAPI/Intelligent/channels/ID/IntellWorkMode-->true
  </isIntellWorkModeSupport>
  <isSupportPersonQueueDetection>
    <!--ro, opt, bool, 排队检测支持能力, desc:对应配置能力：/ISAPI/Intelligent/channels/<ID>/personQueueDetection/capabilities?format=json-->true
  </isSupportPersonQueueDetection>
  <isSupportModeling>
    <!--ro, opt, bool, 人脸建模支持能力, desc:对应配置能力：/ISAPI/Intelligent/channels/<ID>/modeling/capabilities?format=json-->true
  </isSupportModeling>
  <RestoreDefParamForbid>
    <!--ro, opt, bool, 禁止算法库恢复默认参数（反向能力）, desc:无该字段默认支持恢复默认参数。有该字段且为true表示不支持,为false表示支持-->true
  </RestoreDefParamForbid>
  <isSupportChannelPollingSchedules>
    <!--ro, opt, bool, 是否支持通道轮询计划-->true
  </isSupportChannelPollingSchedules>
  <RestoreAlgLibParam>
    <!--ro, opt, object, 按算法库名称进行算法库参数恢复控制能力, desc:对应接口：/ISAPI/Intelligent/channels/<channelID>/restoreAlgLibParam/<NAME>-->
    <libName opt="faceSnap,HMS,behaviorAnalysis,shipsDetection">
      <!--ro, opt, string, 所支持的恢复算法库功能的对应算法库名称, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:faceSnap(人脸抓拍),HMS(混合目标),behaviorAnalysis(异常行为识别),shipsDetection(船只检测)-->test
    </libName>
  </RestoreAlgLibParam>
  <FaceSnapMultiSceneMode>
    <!--ro, opt, object, 人脸抓拍多场景模式, desc:依赖于<MultiSceneFaceRule>中sid>1,对应接口:/ISAPI/Intelligent/channels/<ID>/faceRule/multiScene/sceneMode?format=json-->
    <sceneMode opt="normal,expert">
      <!--ro, opt, string, 场景模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:normal#普通模式,expert#专家模式-->test
    </sceneMode>
    <normalSceneNum min="1" max="1">
      <!--ro, opt, int, 普通模式场景个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:依赖sceneMode支持normal,dep,xs:integer,对应场景个数-->1
    </normalSceneNum>
    <expertSceneNum min="1" max="8">
      <!--ro, opt, int, 专家模式场景个数, range:[1,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:依赖sceneMode支持expert,dep,xs:integer,对应场景个数-->1
    </expertSceneNum>
  </FaceSnapMultiSceneMode>
  <isFaceSnapPicParamSupport>
    <!--ro, opt, bool, 是否支持人脸抓拍展示功能, desc:对应功能URI(/ISAPI/Intelligent/channels/<ID>/faceSnap/picParam)-->true
  </isFaceSnapPicParamSupport>
  <isSupportCityManagement>
    <!--ro, opt, bool, 是否智慧城管, desc:对应接口能力：/ISAPI/Intelligent/channels/<ID>/cityManagement/capabilities?format=json-->true
  </isSupportCityManagement>
  <isSupportMixedTargetDetection>
    <!--ro, opt, bool, 是否支持混合目标检测, desc:对应接口能力：/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/capabilities?format=json-->true
  </isSupportMixedTargetDetection>
  <isVcaEventAdvReachHeightSupport>
    <!--ro, opt, bool, 是否支持折线攀高, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中AdvReachHightParam能力节点-->true
  </isVcaEventAdvReachHeightSupport>
  <isFaceAttendanceSupport>
    <!--ro, opt, bool, 全景目标识别web界面是否显示为人脸考勤, desc:(教育球实现),对应接口复用：/ISAPI/Intelligent/channels/<ID>/humanRecognition/capabilities-->true
  </isFaceAttendanceSupport>
  <isTeacherBehaviorDetectSupport>
    <!--ro, opt, bool, 教师行为检测是否支持的能力, desc:对应接口：/ISAPI/Intelligent/channels/<ID>/ teacherBehaviorDetect?format=json-->true
  </isTeacherBehaviorDetectSupport>
  <isSupportIntersectionAnalysis>
    <!--ro, opt, bool, 路口分析支持能力, desc:对应接口：/ISAPI/Intelligent/channels/<ID>/intersectionAnalysis/capabilities?format=json-->true
  </isSupportIntersectionAnalysis>
  <isSupportSituationAnalysis>
    <!--ro, opt, bool, 态势分析是否支持, desc:对应接口：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中SituationAnalysisParam能力节点-->true
  </isSupportSituationAnalysis>
  <isSupportOCR>
    <!--ro, opt, bool, 是否支持OCR检测(录播主机实现), desc:对应接口：/ISAPI/Intelligent/channels/<ID>/OCR/capabilities?format=json-->true
  </isSupportOCR>
  <isSupportSafetyHelmetDetection>
    <!--ro, opt, bool, 是否支持安全帽检测-->true
  </isSupportSafetyHelmetDetection>
  <isSupportSmokeDetection>
    <!--ro, opt, bool, 是否支持烟雾检测-->true
  </isSupportSmokeDetection>
  <isSupportFaceSnapThermometry>
    <!--ro, opt, bool, 是否支持人脸抓拍测温,
desc:支持返回且值为true,不支持不返回;
        对于NVR设备，支持该节点时,对应的通道接入的相机为热成像相机。控件在进行展示的时候屏蔽人脸抓拍高级配置、人脸抓拍规则配置、人脸抓拍遮挡区域配置-->true
  </isSupportFaceSnapThermometry>
  <isSupportToiletTarry>
    <!--ro, opt, bool, 是否支持如厕超时, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中ToiletTarryParam能力节点-->true
  </isSupportToiletTarry>
  <isSupportAudioAbnormal>
    <!--ro, opt, bool, 是否声强突变, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中AudioAbnormalParam能力节点-->true
  </isSupportAudioAbnormal>
  <isSupportStandUp>
    <!--ro, opt, bool, 是否支持起立起身, desc:对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中StandUpParam能力节点-->true
  </isSupportStandUp>
  <isSupportGetUp>
    <!--ro, opt, bool, 是否支持离床检测, desc:之前叫起身;对应事件规则配置能力：/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中GetUpParam能力节点-->true
  </isSupportGetUp>
  <isSupportAdvancedParam>
    <!--ro, opt, bool, 是否支持高级参数配置, desc:对应url /ISAPI/Intelligent/channels/<ID>/advancedParam/capabilities?format=json-->true
  </isSupportAdvancedParam>
  <isSupportInnerAdvancedParam>
    <!--ro, opt, bool, 是否支持内部高级参数配置, desc:内部调试算法效果 对应url/ISAPI/Intelligent/channels/<ID>/innerAdvancedParam/capabilities?format=json-->true
  </isSupportInnerAdvancedParam>
  <isSupportPicInfoOverlap>
    <!--ro, opt, bool, 是否支持智能通用事件图片信息叠加, desc:对应接口能力：/ISAPI/Intelligent/channels/<ID>/picInfoOverlap/capabilities?format=json-->true
  </isSupportPicInfoOverlap>
  <isSupportAPCAlgParam>
    <!--ro, opt, bool, 是否支持精准人数统计算法库配置, desc:支持返回true,不支持不返回,/ISAPI/Intelligent/channels/<ID>/APCAlgParam?format=json-->true
  </isSupportAPCAlgParam>
  <RestoreLibPlan>
    <!--ro, opt, object, 定时恢复算法库能力,
desc:对应的接口/ISAPI/Intelligent/channels/<ID>/restoreLibPlan/<NAME>/capabilities?format=json
AFD((abnormalFaceDetection)异常人脸检测功能，包含上面的人脸路),IAS(智能ATM视频分析功能，包含上面的面板路、防护舱路和环境路)-->
    <libName opt="IAS,AFD">
      <!--ro, opt, string, 所支持的恢复算法库功能的对应算法库名称, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:IAS#智能ATM视频分析算法, AFD#异常人脸检测算法-->test
    </libName>
  </RestoreLibPlan>
  <isSupportOffDuty>
    <!--ro, opt, bool, 是否支持人员离睡岗（人员离岗或在岗睡觉）, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/offDuty/capabilities?format=json-->true
  </isSupportOffDuty>
  <isSupportChannelOccupy>
    <!--ro, opt, bool, 是否支持室外通道堵塞侦测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/channelOccupy/capabilities?format=json-->true
  </isSupportChannelOccupy>
  <isSupportBatteryCarDisobey>
    <!--ro, opt, bool, 是否支持电瓶车违停, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/batteryCarDisobey/capabilities?format=json-->true
  </isSupportBatteryCarDisobey>
  <isSupportIndoorPasswayBlock>
    <!--ro, opt, bool, 是否支持室内通道被占用检测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/indoorPasswayBlock/capabilities?format=json-->true
  </isSupportIndoorPasswayBlock>
  <isSupportFireSmartFireDetect>
    <!--ro, opt, bool, 是否支持火点检测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/fireSmartFireDetect/capabilities?format=json-->true
  </isSupportFireSmartFireDetect>
  <isSupportFireNoRegulation>
    <!--ro, opt, bool, 是否支持人离火检测, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/fireNoRegulation/capabilities?format=json-->true
  </isSupportFireNoRegulation>
  <isSupportMisinfoConfirm>
    <!--ro, opt, bool, 是否支持误报确认, desc:对应URL:/ISAPI/Intelligent/misinfoFilter/confirmation/capabilities?format=json-->true
  </isSupportMisinfoConfirm>
  <isSupportMisinfoPackage>
    <!--ro, opt, bool, 是否支持误报导出, desc:对应URL:/ISAPI/Intelligent/misinfoFilter/dataPackage?format=json-->true
  </isSupportMisinfoPackage>
</IntelliCap>

4. 获取单个通道事件能力

4.1 命令

GET /ISAPI/Event/channels/<channelID>/capabilities

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelEventCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 设备通道支持的专业事件能力, attr:version{opt, string, 域名空间, range:[,]}-->
  <eventType opt="PackingSpaceRecognition,personQueueTimingStatistics">
    <!--ro, req, enum, 事件类型, subType:string, [barrierGateStatus#道闸状态,ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,drivingDirectionAtIntersection#电警转向分析,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,headRiseRate#抬头率事件,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,objectsThrownDetection#高空抛物事件检测,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,personQueueTimingStatistics#排队检测定时人数统计,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vacantSeatRate#空座率事件,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,methaneDetection#甲烷检测,waterQualityDetection#水质检测,waterLevelDetection#水位高度检测,PackingSpaceRecognition#车位检测,plateQuaAlarm#车牌质量检测事件,ambientTempAbnormal#设备环境温度异常,objectAccumulationDetection#堆积检测,AID_abandonedObject#交通事件中抛洒物事件,AID_pedestrian#交通事件中行人检测事件,AID_congestion#交通事件中拥堵事件,AID_roadBlock#交通事件中路障事件,AID_construction#交通事件中施工事件,AID_trafficAccident#交通事件中交通事故检测事件,AID_fogDetection#交通事件中浓雾检测事件,TFS_illegalParking#取证事件中违停事件,TFS_wrongDirection#取证事件中逆行事件,TFS_crossLane#取证事件中压线事件,TFS_laneChange#取证事件中变道事件,TFS_vehicleExist#取证事件中机占非事件,TFS_turnRound#取证事件中掉头事件,TFS_parallelParking#取证事件中侧方位停车事件,TFS_blackSmokeVehicle#取证事件中黑烟车事件,exhaustDetection#汽车尾气检测,roadVisibilityAbnormal#道路能见度检测异常上报,roadWeatherAbnormal#路面气象检测异常,weatherStation#气象站信息,roadVisibilityAnalysis#道路能见度检测分析,roadWeatherAnalysis#路面气象检测分析,APPAbnormal#APP异常事件,TFS_turnRightStop#大车右转未减速,detectorSmokeAlarm#烟雾检测,detectorTamperAlarm#防拆检测,detectorTemperatureAlarm#温度过高,fireEscapeDetection#消防通道占用,detectorRunningStatus#运行状态(温度传感器、防拆、迷宫),detectorMotionAlarm#移动报警,detectorShelterAlarm#遮挡报警,smokeFireRecognize#火焰报警,fireNoRegulation#人离火报警,peopleDetection#人形报警(人体检测),detectorCombustibleGasAlarm#燃气报警,detectorEmergencyAlarm#紧急报警,offDuty#在离岗,channelOccupy#室外通道占用,batteryCarDisobey#电瓶车违停,indoorPasswayBlock#室内通道堵塞,fireSmartFireDetect#火点检测,gaugeReading#水尺识别,fishingShipDetection#渔船检测,HPVehicleLoadingRate#月台车辆装载率,HPVehicleStatus#月台车辆状态事件,HPWorkingStatus#月台工作状态定时事件,HPPeopleDetection#月台车边人员检测,HPVehicleDoorDetection#月台车厢门检测事件,alcoholDetectionRodBindQuery#酒精快测棒绑定信息询问请求,alcoholDetectionRodBind#酒精快测棒绑定请求,alcoholDetectionResult#酒精检测结果上报,urgentTurn#急转弯事件,urgentBrake#急刹车事件,urgentAcceleration#急加速事件,vehiclePanicButton#车载紧急按钮报警事件,trainDetection#火车检测,angleDeviationDetection#倾斜检测,cameraGroupPeopleCounting#多监控点客流组客流统计上报], attr:opt{opt, string, 可选项, range:[,]}, desc:下面事件类型存在新老两种事件名称定义-->ADAS
  </eventType>
  <shieldEventType opt="behavior,faceSnap,humanRecognition">
    <!--ro, opt, enum, 设备通道不同事件支持的屏蔽区域能力, subType:string, [behavior#异常行为识别,faceSnap#人脸抓拍,humanRecognition#目标抓拍], attr:opt{opt, string, 可选项, range:[,]}-->behavior
  </shieldEventType>
  <channelID>
    <!--ro, req, int, 设备当前通道号, range:[,], step:, unit:, unitType:-->1
  </channelID>
  <id>
    <!--ro, opt, int, 索引号, range:[,], step:, unit:, unitType:-->1
  </id>
  <passThoughEventType opt="faceSnapModeling,cityManagement,strudentsStoodUp,dredgerDetection,reverseEntrance,teacherBehaviorDetect,personQueueDetection">
    <!--ro, opt, enum, 透传的事件类型, subType:string, [faceSnapModeling#人脸建模,cityManagement#智慧城管,strudentsStoodUp#学生起立,dredgerDetection#挖沙船检测事件,reverseEntrance#客流反向进入报警,personQueueDetection#排队检测detectorSmokeAlarm,detectorTamperAlarm#防拆检测,detectorTemperatureAlarm#温度过高,detectorMotionAlarm#移动报警,detectorShelterAlarm#遮挡报警,smokeFireRecognize#火焰报警,fireNoRegulation#人离火报警,peopleDetection#人形报警(人体检测),detectorCombustibleGasAlarm#燃气报警,detectorEmergencyAlarm#紧急报警,offDuty#在离岗,channelOccupy#室外通道占用,batteryCarDisobey#电瓶车违停,indoorPasswayBlock#室内通道堵塞,fireSmartFireDetect#火点检测], attr:opt{opt, string, 可选项, range:[,]}, desc:passThoughEventType节点，设备在该节点中填充IPC透传给NVR的事件类型名称，上层(当前仅web实现)在接收到passThoughEventType节点后在透传事件界面中展示相应的事件-->faceSnapModeling
  </passThoughEventType>
</ChannelEventCap>

5. 获取事件联动配置能力

5.1 命令

GET /ISAPI/Event/triggersCap

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTriggersCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 事件联动配置能, attr:version{req, string, 协议版本, range:[,]}-->
  <DiskfullTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[0,1000], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DiskfullTriggerCap>
  <IOTTriggersCap>
    <!--ro, opt, object, 非视频联动能力-->
    <AccessController>
      <!--ro, opt, object, 海康门禁主机-->
      <authenticatedTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </authenticatedTriggerCap>
      <authenticationFailedTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </authenticationFailedTriggerCap>
      <openingDoorTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </openingDoorTriggerCap>
      <closingDoorTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </closingDoorTriggerCap>
      <doorExceptionTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </doorExceptionTriggerCap>
      <remoteOperationTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </remoteOperationTriggerCap>
      <timeSynchronizationTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </timeSynchronizationTriggerCap>
      <deviceExceptionTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </deviceExceptionTriggerCap>
      <deviceRecoveredTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </deviceRecoveredTriggerCap>
      <alarmTriggeredTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </alarmTriggeredTriggerCap>
      <alarmRecoveredTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </alarmRecoveredTriggerCap>
      <callCenterTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </callCenterTriggerCap>
    </AccessController>
    <VideoIntercom>
      <!--ro, opt, object, 海康可视对讲设备-->
      <tamperingTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tamperingTriggerCap>
      <duressAlarmTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </duressAlarmTriggerCap>
      <unlockingByPasswordFailedTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingByPasswordFailedTriggerCap>
      <unlockingDoorFailedTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingDoorFailedTriggerCap>
      <lockingDoorFailedTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </lockingDoorFailedTriggerCap>
      <deviceIntercomTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </deviceIntercomTriggerCap>
      <unlockingByPasswordTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingByPasswordTriggerCap>
      <unlockingByDuressTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingByDuressTriggerCap>
      <unlockingByCardTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingByCardTriggerCap>
      <unlockingByResidentTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingByResidentTriggerCap>
      <unlockingByCenterTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </unlockingByCenterTriggerCap>
      <intercomTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </intercomTriggerCap>
    </VideoIntercom>
    <OPTEX>
      <!--ro, opt, object, OPTEX报警主机-->
      <pcA1TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcA1TriggerCap>
      <pcA2TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcA2TriggerCap>
      <pcB1TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcB1TriggerCap>
      <pcB2TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcB2TriggerCap>
      <pcA11TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcA11TriggerCap>
      <pcA12TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcA12TriggerCap>
      <pcA22TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcA22TriggerCap>
      <pcA21TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcA21TriggerCap>
      <pcB11TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcB11TriggerCap>
      <pcB12TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcB12TriggerCap>
      <pcB22TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcB22TriggerCap>
      <pcB21TriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcB21TriggerCap>
      <pcFnTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcFnTriggerCap>
      <pcFrTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcFrTriggerCap>
      <pcNrTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcNrTriggerCap>
      <pcCrTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pcCrTriggerCap>
      <tcTaTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcTaTriggerCap>
      <tcAmTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcAmTriggerCap>
      <tcArTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcArTriggerCap>
      <tcDqTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcDqTriggerCap>
      <tcSoTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcSoTriggerCap>
      <tcTrTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcTrTriggerCap>
      <tcFaTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tcFaTriggerCap>
      <offlineTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </offlineTriggerCap>
      <connectTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </connectTriggerCap>
    </OPTEX>
    <GJD>
      <!--ro, opt, object, GJD报警主机-->
      <pirDetectionTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pirDetectionTriggerCap>
      <tamperingTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </tamperingTriggerCap>
      <lowlightDetectionTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </lowlightDetectionTriggerCap>
      <timerTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </timerTriggerCap>
      <temperatureTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </temperatureTriggerCap>
    </GJD>
    <Luminite>
      <!--ro, opt, object, Luminite报警主机-->
      <pirDetectionTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pirDetectionTriggerCap>
      <pirTamperTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </pirTamperTriggerCap>
      <cloakTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </cloakTriggerCap>
      <shockTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </shockTriggerCap>
      <failureTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </failureTriggerCap>
      <moveTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </moveTriggerCap>
      <batteryLowTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </batteryLowTriggerCap>
      <codeViolationTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </codeViolationTriggerCap>
      <jammingTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </jammingTriggerCap>
      <mastheadTamperTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </mastheadTamperTriggerCap>
    </Luminite>
    <CameraDetector>
      <!--ro, opt, object, 相机传感器-->
      <wirelessTemperatureTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </wirelessTemperatureTriggerCap>
      <wirelessMagneticContactTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </wirelessMagneticContactTriggerCap>
      <wirelessSmokeTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </wirelessSmokeTriggerCap>
      <wirelessPIRTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </wirelessPIRTriggerCap>
      <wirelessSirenTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </wirelessSirenTriggerCap>
      <wirelessKeyfobTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </wirelessKeyfobTriggerCap>
    </CameraDetector>
    <SecurityControlPanel>
      <!--ro, opt, object, 海康报警主机-->
      <zoneTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </zoneTriggerCap>
      <hostTriggerCap>
        <!--ro, opt, object, 联动能力-->
        <isSupportCenter>
          <!--ro, opt, bool, 是否支持上传中心-->true
        </isSupportCenter>
        <isSupportRecord>
          <!--ro, opt, bool, 是否支持录像-->true
        </isSupportRecord>
        <isSupportMonitorAlarm>
          <!--ro, opt, bool, 是否支持监视器上警告-->true
        </isSupportMonitorAlarm>
        <isSupportBeep>
          <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
        </isSupportBeep>
        <isSupportIO>
          <!--ro, opt, bool, 是否支持IO输出-->true
        </isSupportIO>
        <isSupportFTP>
          <!--ro, opt, bool, 是否支持FTP上传-->true
        </isSupportFTP>
        <isSupportEmail>
          <!--ro, opt, bool, 是否支持发送邮件-->true
        </isSupportEmail>
        <isSupportLightAudioAlarm>
          <!--ro, opt, bool, 是否支持无线声光报警器-->true
        </isSupportLightAudioAlarm>
        <isSupportFocus>
          <!--ro, opt, bool, 是否支持聚焦报警-->true
        </isSupportFocus>
        <isSupportPTZ>
          <!--ro, opt, bool, 是否支持联动PTZ操作-->true
        </isSupportPTZ>
        <maxPresetActionNum>
          <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
        </maxPresetActionNum>
        <maxPatrolActionNum>
          <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
        </maxPatrolActionNum>
        <maxPatternActionNum>
          <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
        </maxPatternActionNum>
        <isSupportTrack>
          <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
        </isSupportTrack>
        <isSupportCloud>
          <!--ro, opt, bool, 是否支持上传到云-->true
        </isSupportCloud>
        <direction opt="both,forward,reverse">
          <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
        </direction>
        <presetDurationTime min="1" max="10">
          <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </presetDurationTime>
        <isSupportSMS>
          <!--ro, opt, bool, 是否支持短消息-->true
        </isSupportSMS>
        <maxCellphoneNum>
          <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
        </maxCellphoneNum>
        <isSupportAnalogOutput>
          <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
        </isSupportAnalogOutput>
        <isSupportIOOutputUnify>
          <!--ro, opt, bool, 是否支持IO输出统一配置-->true
        </isSupportIOOutputUnify>
        <isSupportAudioOut>
          <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
        </isSupportAudioOut>
        <isSupportWhiteLightOut>
          <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
        </isSupportWhiteLightOut>
        <isSupportSupplementLightAlarm>
          <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
        </isSupportSupplementLightAlarm>
        <SupplementLightAlarmCap>
          <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
          <durationTime min="0" max="90" def="5">
            <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
          </durationTime>
        </SupplementLightAlarmCap>
      </hostTriggerCap>
    </SecurityControlPanel>
  </IOTTriggersCap>
  <DiskerrorTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <targetNotificationInterval max="1000" min="0" default="30">
      <!--ro, opt, int, 目标联动间隔, range:[,], step:, unit:, unitType:, attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:},min{req, int, 最小值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}, desc:dep on isSupportPTZ is true,default:30s dep MotionDetectionTriggerCap TamperDetectionTriggerCap-->0
    </targetNotificationInterval>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话号码长度, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportOSD>
      <!--ro, opt, bool, 是否支持OSD叠加-->true
    </isSupportOSD>
    <isSupportAudio>
      <!--ro, opt, bool, 是否支持单独语音报警, desc:此时可以和蜂鸣器报警分别联动，对应联动方式为audio-->true
    </isSupportAudio>
    <AudioAction>
      <!--ro, opt, object, 语音报警信息, desc:<isSupportBeep>为true或<isSupportAudio>为true时有效-->
      <audioTypeList>
        <!--ro, opt, array, 语音类型列表, subType:object, range:[,]-->
        <audioType>
          <!--ro, opt, object, 语音类型-->
          <audioID>
            <!--ro, req, int, 报警声音类型, range:[,], step:, unit:, unitType:, desc:范围0-9,255表示持续,单位次数-->0
          </audioID>
          <audioDescription>
            <!--ro, req, string, 报警声音描述, range:[,], desc:需要和报警声音类型一一对应-->test
          </audioDescription>
        </audioType>
      </audioTypeList>
      <alarmTimes opt="0,1,2,3,4,5,6,7,8,9,255">
        <!--ro, req, int, 报警次数, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->0
      </alarmTimes>
    </AudioAction>
    <isSupportMessageConfig>
      <!--ro, opt, bool, 是否支持短信配置, desc:若支持，此时联动配置电话号码cellphoneNumber字段可填为空，具体联动配置通过/ISAPI/System/Network/WirelessDial/Interfaces/<ID>/messageConfig/WhiteList协议配置-->true
    </isSupportMessageConfig>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DiskerrorTriggerCap>
  <NicbrokenTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </NicbrokenTriggerCap>
  <IpconflictTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </IpconflictTriggerCap>
  <IllaccesTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </IllaccesTriggerCap>
  <BadvideoTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </BadvideoTriggerCap>
  <VideomismatchTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VideomismatchTriggerCap>
  <IOTriggerCap>
    <!--ro, opt, object, 报警输入能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </IOTriggerCap>
  <FiledDetectTriggerCap>
    <!--ro, opt, object, 区域入侵能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FiledDetectTriggerCap>
  <LineDetectTriggerCap>
    <!--ro, opt, object, 越界侦测能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LineDetectTriggerCap>
  <RegionEntranceTriggerCap>
    <!--ro, opt, object, 进入区域能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RegionEntranceTriggerCap>
  <RegionExitingTriggerCap>
    <!--ro, opt, object, 离开区域能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RegionExitingTriggerCap>
  <LoiteringTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LoiteringTriggerCap>
  <GroupDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </GroupDetectionTriggerCap>
  <RapidMoveTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RapidMoveTriggerCap>
  <ParkingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ParkingTriggerCap>
  <UnattendedBaggageTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </UnattendedBaggageTriggerCap>
  <AttendedBaggageTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AttendedBaggageTriggerCap>
  <FireDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FireDetectionTriggerCap>
  <FireDetectionCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FireDetectionCap>
  <StorageDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </StorageDetectionTriggerCap>
  <ShipsDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ShipsDetectionTriggerCap>
  <ThermometryCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ThermometryCap>
  <VandalProofTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VandalProofTriggerCap>
  <BlackListTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </BlackListTriggerCap>
  <WhiteListTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </WhiteListTriggerCap>
  <AllVehicleListTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AllVehicleListTriggerCap>
  <OtherVehicleListTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </OtherVehicleListTriggerCap>
  <PeopleDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PeopleDetectionTriggerCap>
  <PIRAlarmCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PIRAlarmCap>
  <VideoLossTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VideoLossTriggerCap>
  <TamperDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </TamperDetectionTriggerCap>
  <DefocusDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DefocusDetectionTriggerCap>
  <FaceDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceDetectionTriggerCap>
  <SceneChangeDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SceneChangeDetectionTriggerCap>
  <VandalProofAlarmCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VandalProofAlarmCap>
  <JudgmentTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </JudgmentTriggerCap>
  <FightingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FightingTriggerCap>
  <RisingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RisingTriggerCap>
  <DozingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DozingTriggerCap>
  <CountingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </CountingTriggerCap>
  <HideTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HideTriggerCap>
  <AlarmInTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AlarmInTriggerCap>
  <VehicleDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VehicleDetectionTriggerCap>
  <HVTVehicleDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAudio>
      <!--ro, opt, bool, 是否支持语音报警-->true
    </isSupportAudio>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HVTVehicleDetectionTriggerCap>
  <IntelligentTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </IntelligentTriggerCap>
  <VCATriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VCATriggerCap>
  <AudioExceptionCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AudioExceptionCap>
  <PIRCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PIRCap>
  <MotionDetectionTriggerCap>
    <!--ro, opt, object, 移动侦测能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </MotionDetectionTriggerCap>
  <TemperatureCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </TemperatureCap>
  <ShipsDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ShipsDetectionTriggerCap>
  <AlarmInCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AlarmInCap>
  <EmergencyCallhelpCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </EmergencyCallhelpCap>
  <ConsultCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ConsultCap>
  <WhiteListFaceContrastTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </WhiteListFaceContrastTriggerCap>
  <BlackListFaceContrastTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </BlackListFaceContrastTriggerCap>
  <HumanRecognitionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HumanRecognitionTriggerCap>
  <FaceContrastTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceContrastTriggerCap>
  <FaceContrastSuccessTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceContrastSuccessTriggerCap>
  <FaceContrastFailureTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceContrastFailureTriggerCap>
  <FaceLibTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceLibTriggerCap>
  <PersonDensityDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PersonDensityDetectionTriggerCap>
  <IllegalParkingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </IllegalParkingTriggerCap>
  <PedestrianTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PedestrianTriggerCap>
  <TrafficAccidentTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </TrafficAccidentTriggerCap>
  <ConstructionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ConstructionTriggerCap>
  <RoadBlockTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RoadBlockTriggerCap>
  <AbandonedObjectTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AbandonedObjectTriggerCap>
  <ParallelParkingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ParallelParkingTriggerCap>
  <ParkingStateTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ParkingStateTriggerCap>
  <CongestionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </CongestionTriggerCap>
  <StudentsStoodUpTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </StudentsStoodUpTriggerCap>
  <FramesPeopleCountingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FramesPeopleCountingTriggerCap>
  <FaceSnapTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceSnapTriggerCap>
  <RecordExceptionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RecordExceptionTriggerCap>
  <FaceThermometryCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceThermometryCap>
  <SafetyHelmetDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SafetyHelmetDetectionTriggerCap>
  <PowerSupplyCabinetTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PowerSupplyCabinetTriggerCap>
  <SensorCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SensorCap>
  <SoftIOTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SoftIOTriggerCap>
  <HFPDTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HFPDTriggerCap>
  <SignAbnormalTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SignAbnormalTriggerCap>
  <PersonQueueDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PersonQueueDetectionTriggerCap>
  <MixedTargetDetectionCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </MixedTargetDetectionCap>
  <FaceSnapModelingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceSnapModelingTriggerCap>
  <isSupportWhiteLightAction>
    <!--ro, opt, bool, 是否支持白光灯报警通过单独URL配置：/ISAPI/Event/triggers/notifications/whiteLightAlarm/capabilities?format=json->-->true
  </isSupportWhiteLightAction>
  <isSupportAudioAction>
    <!--ro, opt, bool, 是否支持声音报警通过通过单独URL配置：/ISAPI/Event/triggers/notifications/AudioAlarm/capabilities?format=json-->true
  </isSupportAudioAction>
  <CityManagementTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </CityManagementTriggerCap>
  <POCExceptionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </POCExceptionTriggerCap>
  <LumaTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LumaTriggerCap>
  <ChromaTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ChromaTriggerCap>
  <SnowTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SnowTriggerCap>
  <StreakTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </StreakTriggerCap>
  <FreezeTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FreezeTriggerCap>
  <SigLoseTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SigLoseTriggerCap>
  <ClarityTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ClarityTriggerCap>
  <JItterTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </JItterTriggerCap>
  <BlockTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </BlockTriggerCap>
  <FlowersTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FlowersTriggerCap>
  <NoiseTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </NoiseTriggerCap>
  <GhostTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </GhostTriggerCap>
  <PurpleTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PurpleTriggerCap>
  <ICRTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ICRTriggerCap>
  <ProtectiveFilmTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ProtectiveFilmTriggerCap>
  <isSupportAudioActionAdvanceConfiguration>
    <!--ro, opt, bool, 是否支持声音报警布防时间高级配置, desc:isSupportBeep=true生效,-->true
  </isSupportAudioActionAdvanceConfiguration>
  <ReverseEntranceTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ReverseEntranceTriggerCap>
  <ShipsFlowDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ShipsFlowDetectionTriggerCap>
  <dredgerDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </dredgerDetectionTriggerCap>
  <FaceContrastNonRealTimeTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceContrastNonRealTimeTriggerCap>
  <StudentBehaviorTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </StudentBehaviorTriggerCap>
  <SysStorFullCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SysStorFullCap>
  <VersionAbnormalCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VersionAbnormalCap>
  <NodeOfflineCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </NodeOfflineCap>
  <RecordCycleAbnormalCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </RecordCycleAbnormalCap>
  <IpcTransferAbnormalCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </IpcTransferAbnormalCap>
  <LFPDTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LFPDTriggerCap>
  <WasteGasDetectionCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </WasteGasDetectionCap>
  <GreyScaleAlarmCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </GreyScaleAlarmCap>
  <HighHDTemperatureTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HighHDTemperatureTriggerCap>
  <LowHDTemperatureTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LowHDTemperatureTriggerCap>
  <HDImpactTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HDImpactTriggerCap>
  <HDBadBlockTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HDBadBlockTriggerCap>
  <SevereHDFailureTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SevereHDFailureTriggerCap>
  <LogStorageExceptionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LogStorageExceptionTriggerCap>
  <DailyFaceMonitorTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DailyFaceMonitorTriggerCap>
  <supportWhiteLightActionChannels opt="1,2,3">
    <!--ro, opt, bool, 是否支持白光联动报警通过各个通道单独URL配置, attr:opt{req, string, 取值范围, range:[,]}, desc:并返回支持的通道：/ISAPI/Event/triggers/notifications/channels/<ID>/whiteLightAlarm/capabilities?format=json-->true
  </supportWhiteLightActionChannels>
  <PTLockingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PTLockingTriggerCap>
  <PTLockingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </PTLockingTriggerCap>
  <VibrationDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </VibrationDetectionTriggerCap>
  <NoMaskDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </NoMaskDetectionTriggerCap>
  <TMPATriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </TMPATriggerCap>
  <HBDLibTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </HBDLibTriggerCap>
  <FireEscapeDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FireEscapeDetectionTriggerCap>
  <TakingElevatorDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </TakingElevatorDetectionTriggerCap>
  <RuleTriggerCap>
    <!--ro, opt, object, 按规则联动能力-->
    <isSupportCityManagement>
      <!--ro, opt, bool, 智慧城管是否支持按区域联动, desc:支持返回true,不支持不返回,对应url（/ISAPI/Event/triggers/cityManagement-<channelID>/rules）-->true
    </isSupportCityManagement>
  </RuleTriggerCap>
  <RegionTriggerCap>
    <!--ro, opt, object, 按区域联动能力-->
    <isSupportPersonDensityDetection>
      <!--ro, opt, bool, 人员密度是否支持按区域联动, desc:对应接口：/ISAPI/Event/triggers/personDensityDetection-<channelID>/regions/<ID>,/ISAPI/Event/triggers/personDensityDetection-<channelID>/regions-->true
    </isSupportPersonDensityDetection>
    <isSupportPersonQueueDetection>
      <!--ro, opt, bool, 排队检测(区域关注度)是否支持按区域联动, desc:对应接口：/ISAPI/Event/triggers/personQueueDetection-<channelID>/regions/<ID>,/ISAPI/Event/triggers/personQueueDetection-<channelID>/regions-->true
    </isSupportPersonQueueDetection>
    <isSupportObjectsThrownDetection>
      <!--ro, opt, bool, 高空抛物是否支持按区域联动, desc:对应接口：/ISAPI/Event/triggers/objectsThrownDetection-<channelID>/regions/<regionID>,/ISAPI/Event/triggers/objectsThrownDetection-<channelID>/regions-->true
    </isSupportObjectsThrownDetection>
  </RegionTriggerCap>
  <ThermalCalibrationFileExceptionCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ThermalCalibrationFileExceptionCap>
  <SmokeDetectAlarmTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SmokeDetectAlarmTriggerCap>
  <AbnormalRebootTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </AbnormalRebootTriggerCap>
  <isSupportWhiteLightTrigger>
    <!--ro, opt, bool, 是否支持白光灯报警手动触发, desc:触发调用的URI（PUT /ISAPI/Event/triggers/notifications/whiteLightAlarm/trigger?format=json），当前项目该节点仅IPC实现该节点-->true
  </isSupportWhiteLightTrigger>
  <isSupportAudioTrigger>
    <!--ro, opt, bool, 是否支持声音报警手动触发, desc:触发调用的URI（PUT /ISAPI/Event/triggers/notifications/AudioAlarm/trigger?format=json）,当前项目该节点仅IPC实现该节点-->true
  </isSupportAudioTrigger>
  <LogExceptionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </LogExceptionTriggerCap>
  <FaceThermometryAudioTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FaceThermometryAudioTriggerCap>
  <isSupportTemperatureAbnomalFilter>
    <!--ro, opt, bool, 是否支持体温异常过滤人脸测温报警联动配置, desc:即人脸测温仅在体温异常时联动-->true
  </isSupportTemperatureAbnomalFilter>
  <SecurityCheckingTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SecurityCheckingTriggerCap>
  <ObjectsThrownDetectionTriggerCap>
    <!--ro, opt, object, 抛物检测联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
  </ObjectsThrownDetectionTriggerCap>
  <ThermalVehicleDetectionCap>
    <!--ro, opt, object, 热成像车辆侦测能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </ThermalVehicleDetectionCap>
  <MethaneConcentrationExceptionTriggerCap>
    <!--ro, opt, object, 甲烷浓度异常联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
  </MethaneConcentrationExceptionTriggerCap>
  <MethaneLightIntensityExceptionTriggerCap>
    <!--ro, opt, object, 甲烷光强异常联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
  </MethaneLightIntensityExceptionTriggerCap>
  <WaterQualityDetectionTriggerCap>
    <!--ro, opt, object, 水质检测事件联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <PTZactionName opt="preset">
      <!--ro, opt, enum, PTZ联动方式, subType:string, [preset#运动到预置点], attr:opt{req, string, 取值范围, range:[,]}-->preset
    </PTZactionName>
    <recordEnalbed opt="true,false">
      <!--ro, opt, enum, 预置点运动到位后开启录像使能, subType:bool, [true#开启,false#关闭], attr:opt{req, string, 取值范围, range:[,]}-->true
    </recordEnalbed>
    <recordTime opt="5,10,15" def="10">
      <!--ro, opt, enum, 预置点运动到位后开启录像时长, subType:int, [], attr:opt{req, enum, 取值范围, subType:string, [5#5秒,10#10秒,15#15秒]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
    </recordTime>
    <snapPictureEnabled opt="true,false">
      <!--ro, opt, enum, 预置点运动到位后开启抓拍使能, subType:bool, [true#开启,false#关闭], attr:opt{req, string, 取值范围, range:[,]}-->true
    </snapPictureEnabled>
    <snapPictureNum min="1" max="4" def="2">
      <!--ro, opt, int, 预置点运动到位后开启抓拍数目, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->4
    </snapPictureNum>
    <ptzAction>
      <!--ro, opt, object, ptz联动配置能力, desc:当isSupportPTZ=true时生效,对应配置为<EventTriggerNotification>中<ptzAction>-->
      <PtzChannelIDList>
        <!--ro, req, object, 当前设备支持PTZ联动通道列表能力, desc:若设备未返回该能力,则代表PTZ联动通道默认跟视频通道保持一致。即/ISAPI/System/Video/inputs/channels接口返回的通道-->
        <ptzChannelID>
          <!--ro, req, string, 设备支持PTZ联动通道ID, range:[,]-->5
        </ptzChannelID>
      </PtzChannelIDList>
    </ptzAction>
  </WaterQualityDetectionTriggerCap>
  <WaterLevelDetectionTriggerCap>
    <!--ro, opt, object, 水位高度检测联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <PTZactionName opt="preset,pattern,patrol">
      <!--ro, opt, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航], attr:opt{req, string, 取值范围, range:[,]}-->preset
    </PTZactionName>
    <recordEnalbed opt="true,false">
      <!--ro, opt, enum, 预置点运动到位后开启录像使能, subType:bool, [true#开启,false#关闭], attr:opt{req, string, 取值范围, range:[,]}-->true
    </recordEnalbed>
    <recordTime opt="5,10,15" def="10">
      <!--ro, opt, enum, 预置点运动到位后开启录像时长, subType:int, [], attr:opt{req, enum, 取值范围, subType:string, [5#5秒,10#10秒,15#15秒]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
    </recordTime>
    <snapPictureEnabled opt="true,false">
      <!--ro, opt, enum, 预置点运动到位后开启抓拍使能, subType:bool, [true#开启,false#关闭], attr:opt{req, string, 取值范围, range:[,]}-->true
    </snapPictureEnabled>
    <snapPictureNum min="1" max="4" def="2">
      <!--ro, opt, int, 预置点运动到位后开启抓拍数目, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->4
    </snapPictureNum>
    <ptzAction>
      <!--ro, opt, object, ptz联动配置能力, desc:当isSupportPTZ=true时生效,对应配置为<EventTriggerNotification>中<ptzAction>-->
      <PtzChannelIDList>
        <!--ro, req, object, 当前设备支持PTZ联动通道列表能力, desc:若设备未返回该能力,则代表PTZ联动通道默认跟视频通道保持一致。即/ISAPI/System/Video/inputs/channels接口返回的通道-->
        <ptzChannelID>
          <!--ro, req, string, 设备支持PTZ联动通道ID, range:[,]-->5
        </ptzChannelID>
      </PtzChannelIDList>
    </ptzAction>
  </WaterLevelDetectionTriggerCap>
  <ObjectAccumulationDetectionTriggerCap>
    <!--ro, opt, object, 堆积联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
  </ObjectAccumulationDetectionTriggerCap>
  <DeviceTemperatureAbnormalTriggerCap>
    <!--ro, opt, object, 设备温度异常联动配置能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
  </DeviceTemperatureAbnormalTriggerCap>
  <FaceContrastSuccessLibTriggerCap>
    <!--ro, opt, object, 人脸比对比对成功按库联动, desc:/ISAPI/Event/triggers/faceContrastSuccessLib-<channelID>/<FDID>-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
  </FaceContrastSuccessLibTriggerCap>
  <DetectorSmokeAlarmTriggerCap>
    <!--ro, opt, object, 探测器烟雾检测报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorSmokeAlarmTriggerCap>
  <DetectorTamperAlarmTriggerCap>
    <!--ro, opt, object, 探测器防拆检测报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorTamperAlarmTriggerCap>
  <DetectorTemperatureAlarmTriggerCap>
    <!--ro, opt, object, 探测器温度过高报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorTemperatureAlarmTriggerCap>
  <DetectorRunningStatusTriggerCap>
    <!--ro, opt, object, 探测器运行状态检测上传联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorRunningStatusTriggerCap>
  <DetectorMotionAlarmTriggerCap>
    <!--ro, opt, object, 探测器移动侦测报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorMotionAlarmTriggerCap>
  <DetectorShelterAlarmTriggerCap>
    <!--ro, opt, object, 探测器遮挡报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorShelterAlarmTriggerCap>
  <SmokeFireRecognizeTriggerCap>
    <!--ro, opt, object, 探测器烟火识别报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </SmokeFireRecognizeTriggerCap>
  <FireNoRegulationTriggerCap>
    <!--ro, opt, object, 探测器人离火报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </FireNoRegulationTriggerCap>
  <DetectorCombustibleGasAlarmTriggerCap>
    <!--ro, opt, object, 探测器燃气报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorCombustibleGasAlarmTriggerCap>
  <DetectorEmergencyAlarmTriggerCap>
    <!--ro, opt, object, 探测器紧急报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </DetectorEmergencyAlarmTriggerCap>
  <FishingShipDetectionTriggerCap>
    <!--ro, opt, object, 渔船检测联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
  </FishingShipDetectionTriggerCap>
  <channelOccupyTriggerCap>
    <!--ro, opt, object, 室外通道被车辆占用联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </channelOccupyTriggerCap>
  <indoorPasswayBlockTriggerCap>
    <!--ro, opt, object, 室内消防通道被占用联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </indoorPasswayBlockTriggerCap>
  <fireSmartFireDetectTriggerCap>
    <!--ro, opt, object, 火点报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </fireSmartFireDetectTriggerCap>
  <offDutyTriggerCap>
    <!--ro, opt, object, 消控室人员离睡岗联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </offDutyTriggerCap>
  <noCertificateTriggerCap>
    <!--ro, opt, object, 消控室持证人员不足联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </noCertificateTriggerCap>
  <smokeAlarmTriggerCap>
    <!--ro, opt, object, 烟雾报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </smokeAlarmTriggerCap>
  <batteryCarDisobeyTriggerCap>
    <!--ro, opt, object, 电瓶车违规停放联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </batteryCarDisobeyTriggerCap>
  <noFireExtinguisherRecogTriggerCap>
    <!--ro, opt, object, 灭火器缺失联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </noFireExtinguisherRecogTriggerCap>
  <channelAllCap>
    <!--ro, opt, object, 通道报警联动触发能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportMonitorAlarm>
      <!--ro, opt, bool, 是否支持监视器上警告-->true
    </isSupportMonitorAlarm>
    <isSupportBeep>
      <!--ro, opt, bool, 是否支持蜂鸣器报警-->true
    </isSupportBeep>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportLightAudioAlarm>
      <!--ro, opt, bool, 是否支持无线声光报警器-->true
    </isSupportLightAudioAlarm>
    <isSupportFocus>
      <!--ro, opt, bool, 是否支持聚焦报警-->true
    </isSupportFocus>
    <isSupportPTZ>
      <!--ro, opt, bool, 是否支持联动PTZ操作-->true
    </isSupportPTZ>
    <maxPresetActionNum>
      <!--ro, opt, int, 最大预置点数目, range:[,], step:, unit:, unitType:-->1
    </maxPresetActionNum>
    <maxPatrolActionNum>
      <!--ro, opt, int, 最大巡航数目, range:[,], step:, unit:, unitType:-->1
    </maxPatrolActionNum>
    <maxPatternActionNum>
      <!--ro, opt, int, 最大花样扫描路径数目, range:[,], step:, unit:, unitType:-->1
    </maxPatternActionNum>
    <isSupportTrack>
      <!--ro, opt, bool, 是否支持PTZ联动跟踪-->true
    </isSupportTrack>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <direction opt="both,forward,reverse">
      <!--ro, opt, string, 触发方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:触发方向(dep BlackListTriggerCap,WhiteListTriggerCap,VehicleDetectionTriggerCap)-->test
    </direction>
    <presetDurationTime min="1" max="10">
      <!--ro, opt, int, 预置持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </presetDurationTime>
    <isSupportSMS>
      <!--ro, opt, bool, 是否支持短消息-->true
    </isSupportSMS>
    <maxCellphoneNum>
      <!--ro, opt, int, 最大电话数量, range:[,], step:, unit:, unitType:, desc:dep,if <isSupportSMS> is true-->1
    </maxCellphoneNum>
    <isSupportAnalogOutput>
      <!--ro, opt, bool, 是否支持联动模拟通道IO输出-->true
    </isSupportAnalogOutput>
    <isSupportIOOutputUnify>
      <!--ro, opt, bool, 是否支持IO输出统一配置-->true
    </isSupportIOOutputUnify>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动, desc:该节点用于表示NVR是否支持联动IPC声音输出报警-->true
    </isSupportAudioOut>
    <isSupportWhiteLightOut>
      <!--ro, opt, bool, 是否支持白光灯报警输出联动, desc:该节点用于表示NVR是否支持联动IPC白光灯输出报警-->true
    </isSupportWhiteLightOut>
    <isSupportSupplementLightAlarm>
      <!--ro, opt, bool, 是否支持补光灯报警输出联动-->true
    </isSupportSupplementLightAlarm>
    <SupplementLightAlarmCap>
      <!--ro, opt, object, 补光灯报警联动参数能力, desc:当各事件notificationMethod = supplementLight生效-->
      <durationTime min="0" max="90" def="5">
        <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
      </durationTime>
    </SupplementLightAlarmCap>
  </channelAllCap>
  <PCWTriggerCap>
    <!--ro, opt, object, 高级辅助驾驶联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
    <isSupportCloud>
      <!--ro, opt, bool, 是否支持上传到云-->true
    </isSupportCloud>
    <isSupportAudioOut>
      <!--ro, opt, bool, 是否支持声音报警输出联动-->true
    </isSupportAudioOut>
    <AudioCap>
      <!--ro, opt, object, 声音联动配置能力, desc:当各事件notificationMethod = audio-->
      <volume min="0" max="100">
        <!--ro, opt, int, 音量, range:[0,100], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->5
      </volume>
    </AudioCap>
  </PCWTriggerCap>
  <AngleDeviationDetectionTriggerCap>
    <!--ro, opt, object, 联动能力-->
    <isSupportCenter>
      <!--ro, opt, bool, 是否支持上传中心-->true
    </isSupportCenter>
    <isSupportRecord>
      <!--ro, opt, bool, 是否支持录像-->true
    </isSupportRecord>
    <isSupportIO>
      <!--ro, opt, bool, 是否支持IO输出-->true
    </isSupportIO>
    <isSupportFTP>
      <!--ro, opt, bool, 是否支持FTP上传-->true
    </isSupportFTP>
    <isSupportEmail>
      <!--ro, opt, bool, 是否支持发送邮件-->true
    </isSupportEmail>
  </AngleDeviationDetectionTriggerCap>
</EventTriggersCap>

6. 简易智能能力

6.1 命令

GET /ISAPI/Smart/capabilities

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportROI>
    <!--ro, opt, bool, 是否支持ROI-->true
  </isSupportROI>
  <isSupportFaceDetect>
    <!--ro, opt, bool, 是否支持人脸侦测-->true
  </isSupportFaceDetect>
  <isSupportFieldDetection>
    <!--ro, opt, bool, 是否支持区域入侵-->true
  </isSupportFieldDetection>
  <isSupportDefocusDetection>
    <!--ro, opt, bool, 是否支持虚焦检测-->true
  </isSupportDefocusDetection>
  <isSupportAudioDetection>
    <!--ro, opt, bool, 是否支持音频检测-->true
  </isSupportAudioDetection>
  <isSupportSceneChangeDetection>
    <!--ro, opt, bool, 是否支持场景变更检测-->true
  </isSupportSceneChangeDetection>
  <isSupportLineDetection>
    <!--ro, opt, bool, 是否支持越界侦测-->true
  </isSupportLineDetection>
  <isSupportRegionEntrance>
    <!--ro, opt, bool, 是否支持进入区域-->true
  </isSupportRegionEntrance>
  <isSupportRegionExiting>
    <!--ro, opt, bool, 是否支持离开区域-->true
  </isSupportRegionExiting>
  <isSupportLoitering>
    <!--ro, opt, bool, 是否支持徘徊检测-->true
  </isSupportLoitering>
  <isSupportGroup>
    <!--ro, opt, bool, 是否支持人员聚集检测-->true
  </isSupportGroup>
  <isSupportRapidMove>
    <!--ro, opt, bool, 是否支持快速移动检测-->true
  </isSupportRapidMove>
  <isSupportParking>
    <!--ro, opt, bool, 是否支持停车检测-->true
  </isSupportParking>
  <isSupportUnattendedBaggage>
    <!--ro, opt, bool, 是否支持物品遗留检测-->true
  </isSupportUnattendedBaggage>
  <isSupportAttendedBaggage>
    <!--ro, opt, bool, 是否支持物品拿取检测-->true
  </isSupportAttendedBaggage>
  <isSupportPeopleDetection>
    <!--ro, opt, bool, 是否支持人员检测-->true
  </isSupportPeopleDetection>
  <isSupportShipsDetection>
    <!--ro, opt, bool, 是否支持船只检测-->true
  </isSupportShipsDetection>
  <isSupportSmartCalibration>
    <!--ro, opt, bool, 是否支持智能标定-->true
  </isSupportSmartCalibration>
  <isSupportStorageDetection>
    <!--ro, opt, bool, 是否支持存储检测-->true
  </isSupportStorageDetection>
  <isSupportShield>
    <!--ro, opt, bool, 是否支持屏蔽区域配置-->true
  </isSupportShield>
  <isSupportAlgVersion>
    <!--ro, opt, bool, 是否支持算法库版本-->true
  </isSupportAlgVersion>
  <isSupportVideoOverlap>
    <!--ro, opt, bool, 是否支持视频OSD叠加-->true
  </isSupportVideoOverlap>
  <isSupportParkingState>
    <!--ro, opt, bool, 是否支持停车状态-->true
  </isSupportParkingState>
  <isSupportChannelResource>
    <!--ro, opt, bool, 是否支持通道资源配置-->true
  </isSupportChannelResource>
  <isSupportAnalysisUnitSwitch opt="true,false">
    <!--ro, opt, bool, 是否支持分析单元切换, attr:opt{req, bool, 取值范围}-->true
  </isSupportAnalysisUnitSwitch>
  <isSupportHFPD>
    <!--ro, opt, bool, 是否支持高频人员检测, desc:/ISAPI/SDT/HFPD?format=json-->true
  </isSupportHFPD>
  <isSupportImageROI>
    <!--ro, opt, bool, 是否支持smartJpeg(图像ROI)-->true
  </isSupportImageROI>
  <isSupportLFPD>
    <!--ro, opt, bool, 是否支持低频人员检测, desc:/ISAPI/SDT/LFPD?format=json-->true
  </isSupportLFPD>
  <isSupportDetectionDistance>
    <!--ro, opt, bool, 是否支持检测距离配置, desc:/ISAPI/Smart/channels/<ID>/perimeter/distance?format=json-->true
  </isSupportDetectionDistance>
  <advancedParaSupportChannels opt="2,3">
    <!--ro, opt, int, 支持高级参数配置的通道, range:[,], step:, unit:, unitType:, attr:opt{req, int, 取值范围, range:[,], step:, unit:, unitType:}, desc:鹰眼5.5.27增加,本项目2和3通道支持高级参数配置,可扩展-->1
  </advancedParaSupportChannels>
</SmartCap>

7. 获取简易智能通道资源参数能力

7.1 命令

GET /ISAPI/Smart/channelResource/capabilities

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartChannelResourceCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 简易智能通道资源参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ChannelList size="4">
    <!--ro, opt, array, 通道属性列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Channel>
      <!--ro, opt, object, 通道属性-->
      <channelNo min="1" max="1024">
        <!--ro, opt, int, 通道号, range:[1,1024], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </channelNo>
      <enable opt="true,false">
        <!--ro, opt, bool, 简易智能事件总功能开关, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enable>
    </Channel>
  </ChannelList>
  <MutexChanList>
    <!--ro, opt, array, 简易智能功能通道互斥能力列表, subType:object, range:[0,1024]-->
    <mutexChanNo>
      <!--ro, opt, string, 互斥通道号, range:[1,2048],
desc:支持多个通道，通道间使用逗号隔开；
例如：
<MutexChanList>
<mutexChanNo>1,3</mutexChanNo>
<mutexChanNo>2,4</mutexChanNo>
</MutexChanList>
上述为1和3通道以及2和4通道进行smart功能互斥。-->1,2
    </mutexChanNo>
  </MutexChanList>
</SmartChannelResourceCap>

8. 获取简易智能通道资源参数

8.1 命令

GET /ISAPI/Smart/channelResource

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartChannelResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 简易智能通道资源参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ChannelList>
    <!--ro, opt, array, 通道属性列表, subType:object, range:[0,1024]-->
    <Channel>
      <!--ro, opt, object, 通道属性-->
      <channelNo>
        <!--ro, opt, string, 通道号, range:[1,2048], desc:支持多个通道，通道间使用逗号隔开-->1,2
      </channelNo>
      <enable>
        <!--ro, opt, bool, 简易智能事件总功能开关-->true
      </enable>
    </Channel>
  </ChannelList>
</SmartChannelResource>

9. 配置简易智能通道资源参数

9.1 命令

PUT /ISAPI/Smart/channelResource

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartChannelResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 简易智能通道资源参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ChannelList>
    <!--opt, array, 通道属性列表, subType:object, range:[0,1024]-->
    <Channel>
      <!--opt, object, 通道属性-->
      <channelNo>
        <!--opt, string, 通道号, range:[1,2048], desc:支持多个通道，通道间使用逗号隔开-->1,2
      </channelNo>
      <enable>
        <!--opt, bool, 简易智能事件总功能开关-->true
      </enable>
    </Channel>
  </ChannelList>
</SmartChannelResource>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取所有事件分析单元切换能力

10.1 命令

GET /ISAPI/Smart/analysisUnitSwitch/channels/<channelID>/capabilities

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisUnit xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 所有事件分析单元切换能力, attr:version{req, string, 协议版本, range:[,]}-->
  <switch opt="local,remote">
    <!--ro, opt, enum, 切换, subType:string, [local#本地,remote#远程], attr:opt{req, string, 取值范围, range:[,]}-->local
  </switch>
  <involvedEventType opt="linedetection,fielddetection,regionEntrance,regionExiting,group,parking,unattendedBaggage,attendedBaggage,humanRecognition,behavior,safetyHelmetDetection,personDensityDetection,ANPR,VMDHumanVehicle">
    <!--ro, opt, enum, 涉及到的事件类型, subType:string, [linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,group#人员聚集,parking#停车侦测,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,humanRecognition#人体识别,behavior#异常行为识别,safetyHelmetDetection#安全帽检测结果上传,personDensityDetection#人员密度消息上报,ANPR#车牌识别,VMDHumanVehicle#高级移动侦测], attr:opt{req, string, 取值范围, range:[,]}-->linedetection
  </involvedEventType>
  <supportSwitchByType>
    <!--ro, opt, bool, 支持按类型切换-->true
  </supportSwitchByType>
</AnalysisUnit>

11. 获取所有事件分析单元切换配置

11.1 命令

GET /ISAPI/Smart/analysisUnitSwitch/channels/<channelID>

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisUnit xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 分析单元, attr:version{req, string, 协议版本, range:[,]}-->
  <switch>
    <!--ro, opt, enum, 切换, subType:string, [local#本地,remote#远程]-->local
  </switch>
</AnalysisUnit>

12. 配置所有事件分析单元切换配置

12.1 命令

PUT /ISAPI/Smart/analysisUnitSwitch/channels/<channelID>

12.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisUnit xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 分析单元, attr:version{req, string, 协议版本, range:[,]}-->
  <switch>
    <!--opt, enum, 切换, subType:string, [local#本地,remote#远程]-->local
  </switch>
</AnalysisUnit>

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

13. 获取互斥信息

13.1 命令

GET /ISAPI/System/mutexFunctionErrorMsg

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<MutexFunctionErrorMsg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 互斥信息, attr:version{req, string, 协议版本, range:[,]}-->
  <MutexFunctionList size="10">
    <!--ro, opt, array, 互斥信息列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <MutexFunction>
      <!--ro, opt, object, 互斥消息-->
      <id>
        <!--ro, req, int, list中序号, range:[,], step:, unit:, unitType:-->1
      </id>
      <describe>
        <!--ro, req, enum, 描述, subType:string, [SMD#简易智能异常行为识别,vehicleDetection#车辆检测功能,counting#客流量统计,heatMap#热度图统计,fieldDetection#区域入侵,lineDetection#越界侦测,sceneChangeDetection#场景变更,VMDHumanVehicle#高级移动侦测,regionEntrance#进入区域,regionExiting#离开区域,faceCapture#人脸抓拍,faceRecognition#人脸比对,IPEnhance#IP增强,SVCEnhance#SVC增强,4KOutput#4K输出], desc:已经启用,同时和当前配置功能互斥的功能描述-->SMD
      </describe>
      <channelNo>
        <!--ro, req, string, 互斥功能对应通道号, range:[,], desc:支持多选,中间用逗号隔开。-->1
      </channelNo>
    </MutexFunction>
  </MutexFunctionList>
</MutexFunctionErrorMsg>

14. 获取智能资源切换能力

14.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource/capabilities

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VCAResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能资源, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="basicBehavior,fullBehavior,facesnapBehavior,facesnap,TFS,smartVehicleDetection,smartHVTDetection,smart,judicial,smart264AndRoadDetection,smart264AndFaceDetection,smart264AndHeatMap,smartVehicleIllegalParkingDetection,smartIntelligentMonitor,smartTrafficDataCollection, roadDetection,humanRecognition, perimeterCapture, vehicleDetection,HVTDetection,mixedTargetDetection,     trackingCaptureMode,nonTrackingCaptureMode,close, faceHumanModelingContrast,cityManagement,teacherBehavior,12MPLiveView,personQueueDetection,verticalPeopleCounting,AIOpenPlatform,mixedTargetFaceHuman,mixedTargetAll,safetyHelmet,faceContrast,none,faceMonitor,vehicleMonitor,faceCounting,heelPDC,personDensity,behaviorMixedTargetAll,operationMonitor,fielddetection,personArming,smokeDetectAlarm,smokeDetection,personDensityQueueLeavePosition,bannerDetection">
    <!--ro, req, enum, 资源类型, subType:string, [basicBehavior#基本行为,fullBehavior#所有行为,facesnapBehavior#人脸抓拍行为,facesnap#人脸抓拍,TFS#交通取证检测,smartVehicleDetection#简易智能&&车辆检测,smartHVTDetection#简易智能&&混行检测,smart#简易智能,judicial#司法,smart264AndRoadDetection#Smart264事件+道路监控,smart264AndFaceDetection#Smart264事件+人脸侦测,smart264AndHeatMap#Smart264事件+热度图,smartIntelligentMonitor#简易智能&&车辆违法停车检测,smartTrafficDataCollection#Smart事件+智慧监控,roadDetection#道路检测（包含车辆检测和混行检测）,humanRecognition#人体目标识别,perimeterCapture#周界抓拍,vehicleDetection#车辆检测,HVTDetection#混行检测,mixedTargetDetection#混合目标检测,trackingCaptureMode#全景抓拍模式,nonTrackingCaptureMode#单点抓拍模式,close#关闭该通道下所有智能资源,faceHumanModelingContrast#人脸人体+人脸建模+人脸对比资源（混合目标）,cityManagement#智慧城管监测,teacherBehavior#教师行为检测,12MPLiveView#主码流1200W@20fps预览（4000*3000）,personQueueDetection#人员排队检测,verticalPeopleCounting#垂直客流,AIOpenPlatform#AI开放平台,mixedTargetFaceHuman#混合目标抓拍人脸人体模式,mixedTargetAll#混合目标抓拍全结构化模式,safetyHelmet#安全帽检测,faceContrast#人脸比对,none#无,faceMonitor#人脸布防,vehicleMonitor#车辆布防,faceCounting#人脸客流,heelPDC#倾斜客流,personDensity#人员密度,behaviorMixedTargetAll#异常行为识别混合目标全结构化,operationMonitor#作业监测（设备支持同时进行离岗检测,fielddetection#区域入侵,personArming#人员布防,smokeDetectAlarm#抽烟检测,smokeDetection#烟雾检测,personDensityQueueLeavePosition#人数统计(人员密度personDensity+人员排队检测personQueueDetection+在离岗leavePosition),bannerDetection#横幅检测(城管事件中仅支持横幅检测子事件的情况),waterQualityDetection#水质检测], attr:opt{req, string, 取值范围, range:[,]}-->basicBehavior
  </type>
  <PromptList>
    <!--ro, opt, array, 智能资源切换互斥提示语能力, subType:object, range:[,]-->
    <Prompt>
      <!--ro, opt, object, 设备默认行为的相关提示-->
      <resourceType opt="roadDetection">
        <!--ro, opt, string, 需要提示的智能资源类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:这个一次只填一种智能资源,目前支持"道路监控";同一种智能资源与多个类型互斥,<resourcePrompt>中增加互斥类型;多种智能资源存在互斥类型,增加<Prompt>-->test
      </resourceType>
      <resourcePrompt opt="smartCode">
        <!--ro, opt, string, 提示语, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:5.5.80里道路监控的ROI是与smart编码互斥的,智能资源切换时增加提示语-->test
      </resourcePrompt>
    </Prompt>
  </PromptList>
  <isSupportAPPWorking>
    <!--ro, opt, bool, 是否支持设备APP实现模式, desc:支持返回，赋值为true；不支持不返回该节点。-->true
  </isSupportAPPWorking>
  <isSupportTest>
    <!--ro, opt, bool, 是否支持智能资源切换重启测试, desc:对应接口/ISAPI/System/Video/inputs/channels/<channelID>/VCAResource/test-->true
  </isSupportTest>
  <VCAResourcePrompt opt="streamingCodingPrompt">
    <!--ro, opt, string, 智能资源切换公共提示语, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:streamingCodingPrompt：拼接模式切换提示语；
            中文提示语：切换为非普通监控模式时，拼接模式将切换为全景图像模式，最高分辨率为800万。
            英文提示语：If the VCA resource is not Monitoring, the image stitching will change to  Panorama automatically and the maximum resolution is 8 MP-->streamingCodingPrompt
  </VCAResourcePrompt>
</VCAResource>

15. 获取智能资源切换参数

15.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VCAResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能资源, attr:version{req, string, 协议版本, range:[,]}-->
  <type>
    <!--ro, req, enum, basicBehavior, subType:string, [basicBehavior#基本行为,fullBehavior#所有行为,facesnapBehavior#人脸抓拍行为,facesnap#人脸抓拍,TFS#交通取证检测,smartVehicleDetection#简易智能&&车辆检测,smartHVTDetection#简易智能&&混行检测,smart#简易智能,judicial#司法,smart264AndRoadDetection#Smart264事件+道路监控,smart264AndFaceDetection#Smart264事件+人脸侦测,smart264AndHeatMap#Smart264事件+热度图,smartIntelligentMonitor#简易智能&&车辆违法停车检测,smartTrafficDataCollection#Smart事件+智慧监控,roadDetection#道路检测（包含车辆检测和混行检测）,humanRecognition#人体目标识别,perimeterCapture#周界抓拍,vehicleDetection#车辆检测,HVTDetection#混行检测,mixedTargetDetection#混合目标检测,trackingCaptureMode#全景抓拍模式,nonTrackingCaptureMode#单点抓拍模式,close#关闭该通道下所有智能资源,faceHumanModelingContrast#人脸人体+人脸建模+人脸对比资源（混合目标）,cityManagement#智慧城管监测,teacherBehavior#教师行为检测,12MPLiveView#主码流1200W@20fps预览（4000*3000）,personQueueDetection#人员排队检测,verticalPeopleCounting#垂直客流,AIOpenPlatform#AI开放平台,mixedTargetFaceHuman#混合目标抓拍人脸人体模式,mixedTargetAll#混合目标抓拍全结构化模式,safetyHelmet#安全帽检测,faceContrast#人脸比对,none#无,faceMonitor#人脸布防,vehicleMonitor#车辆布防,faceCounting#人脸客流,heelPDC#倾斜客流,personDensity#人员密度,behaviorMixedTargetAll#异常行为识别混合目标全结构化,operationMonitor#作业监测（设备支持同时进行离岗检测,fielddetection#区域入侵,personArming#人员布防,smokeDetectAlarm#抽烟检测,smokeDetection#烟雾检测,personDensityQueueLeavePosition#人数统计(人员密度personDensity+人员排队检测personQueueDetection+在离岗leavePosition,bannerDetection#横幅检测(城管事件中仅支持横幅检测子事件的情况),waterQualityDetection#水质检测]-->basicBehavior
  </type>
</VCAResource>

16. 配置智能资源切换参数

16.1 命令

PUT /ISAPI/System/Video/inputs/channels/<channelID>/VCAResource

16.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VCAResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 智能资源, attr:version{req, string, 协议版本, range:[,]}-->
  <type>
    <!--req, enum, basicBehavior, subType:string, [basicBehavior#基本行为,fullBehavior#所有行为,facesnapBehavior#人脸抓拍行为,facesnap#人脸抓拍,TFS#交通取证检测,smartVehicleDetection#简易智能&&车辆检测,smartHVTDetection#简易智能&&混行检测,smart#简易智能,judicial#司法,smart264AndRoadDetection#Smart264事件+道路监控,smart264AndFaceDetection#Smart264事件+人脸侦测,smart264AndHeatMap#Smart264事件+热度图,smartIntelligentMonitor#简易智能&&车辆违法停车检测,smartTrafficDataCollection#Smart事件+智慧监控,roadDetection#道路检测（包含车辆检测和混行检测）,humanRecognition#人体目标识别,perimeterCapture#周界抓拍,vehicleDetection#车辆检测,HVTDetection#混行检测,mixedTargetDetection#混合目标检测,trackingCaptureMode#全景抓拍模式,nonTrackingCaptureMode#单点抓拍模式,close#关闭该通道下所有智能资源,faceHumanModelingContrast#人脸人体+人脸建模+人脸对比资源（混合目标）,cityManagement#智慧城管监测,teacherBehavior#教师行为检测,12MPLiveView#主码流1200W@20fps预览（4000*3000）,personQueueDetection#人员排队检测,verticalPeopleCounting#垂直客流,AIOpenPlatform#AI开放平台,mixedTargetFaceHuman#混合目标抓拍人脸人体模式,mixedTargetAll#混合目标抓拍全结构化模式,safetyHelmet#安全帽检测,faceContrast#人脸比对,none#无,faceMonitor#人脸布防,vehicleMonitor#车辆布防,faceCounting#人脸客流,heelPDC#倾斜客流,personDensity#人员密度,behaviorMixedTargetAll#异常行为识别混合目标全结构化,operationMonitor#作业监测（设备支持同时进行离岗检测,fielddetection#区域入侵,personArming#人员布防,smokeDetectAlarm#抽烟检测,smokeDetection#烟雾检测,personDensityQueueLeavePosition#人数统计(人员密度personDensity+人员排队检测personQueueDetection+在离岗leavePosition),bannerDetection#横幅检测(城管事件中仅支持横幅检测子事件的情况),waterQualityDetection#水质检测]-->basicBehavior
  </type>
</VCAResource>

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

17. 获取设备分析引擎参数能力

17.1 命令

GET /ISAPI/Intelligent/analysisEngines/capabilities

17.2 输入参数

无

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisEnginesCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 分析引擎参数, attr:version{req, string, 协议版本, range:[,]}-->
  <supportEnginesMaxNumber>
    <!--ro, req, int, 最大支持引擎数目, range:[,], step:, unit:, unitType:-->0
  </supportEnginesMaxNumber>
  <mode opt="face_recognition,video_structure_preview,video_structure_record,image_recognition_human,image_recognition_vehicle,safetyHelmetDetection,personDensityDetection,leavePosition,peopleNumChange,behavior,retention,situationAnalysis,cityManagement,face_human_recognition,face_recognition_IES,OCR,face_recognition_IES_or_OCR,fireEscapeDetection,takingElevatorDetection,streetBehavior,workBehavior,smokeDetection,linedetection,fielddetection,regionEntrance,regionExiting,loitering,group,rapidMove,unattendedBaggage,attendedBaggage,failDown,AIOP,HEOP,AlgoPackageScheduling">
    <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化,image_recognition_human#图片识别,image_recognition_vehicle#图片识别,safetyHelmetDetection#安全帽分析,personDensityDetection#人员密度,leavePosition#离岗检测,peopleNumChange#人数异常检测,behavior#异常行为识别（具体包括9种：穿越警戒线检测、区域入侵检测、进入区域检测、离开区域检测、徘徊检测、人员奔跑、人员聚集、剧烈运动、人员倒地）,retention#人员滞留,situationAnalysis#态势分析,cityManagement#智慧城管,face_human_recognition#人脸人体混合识别,face_recognition_IES#人脸抓拍+智能教学系统分析,OCR#Optical Character Recognition（光学字符识别）,face_recognition_IES_or_OCR#人脸抓拍+智能教学系统分析或OCR（“人脸抓拍+智能教学系统分析”优先）,fireEscapeDetection#消防通道检测,takingElevatorDetection#乘梯检测,workBehavior#岗位异常行为识别（人数异常,streetBehavior#街道行为（人员奔跑,smokeDetection#烟雾检测,linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,failDown#人员倒地,AIOP#AI开放平台,HEOP#Hikvision embeded open platform,peopleCounting#人数统计（行为超脑中既包括客流统计和区域人数统计）别,AlgoPackageScheduling#算法包调度], attr:opt{req, string, 取值范围, range:[,]}, desc:一个分析引擎只能支持一种模式赋值-->face_recognition
  </mode>
  <state opt="loading,analyzing,abnormal,connect_boot_abnorma,conig_boot_abnorma,connect_main_abnorma,conig_main_abnorma,auth_abnorma,reset_abnorma,DSP_status_abnorma,lib_ver_err_abnorma">
    <!--ro, req, enum, 状态, subType:string, [loading#加载中,analyzing#分析中,abnormal#引擎异常,connect_boot_abnorma#连接启动程序失败,conig_boot_abnorma#配置启动程序失败,connect_main_abnorma#连接主程序失败,conig_main_abnorma#配置主程序失败,auth_abnorma#授权失败,reset_abnorma#复位失败,DSP_status_abnorma#DSP状态异常,lib_ver_err_abnorma#远程引擎版本错误], attr:opt{req, string, 取值范围, range:[,]}-->loading
  </state>
  <SingelModeCapList>
    <!--ro, opt, array, 单个模式支持的通道数目列表, subType:object, range:[,]-->
    <SingelModeCap>
      <!--ro, opt, object, 单个模式支持的通道数目-->
      <Mode>
        <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化,image_recognition_human#图片识别,image_recognition_vehicle#图片识别,safetyHelmetDetection#安全帽分析,personDensityDetection#人员密度,leavePosition#离岗检测,peopleNumChange#人数异常检测,behavior#异常行为识别（具体包括9种：穿越警戒线检测、区域入侵检测、进入区域检测、离开区域检测、徘徊检测、人员奔跑、人员聚集、剧烈运动、人员倒地）,retention#人员滞留,situationAnalysis#态势分析,cityManagement#智慧城管,face_human_recognition#人脸人体混合识别,face_recognition_IES#人脸抓拍+智能教学系统分析,OCR#Optical Character Recognition（光学字符识别）,face_recognition_IES_or_OCR#人脸抓拍+智能教学系统分析或OCR（“人脸抓拍+智能教学系统分析”优先）,fireEscapeDetection#消防通道检测,takingElevatorDetection#乘梯检测,workBehavior#岗位异常行为识别（人数异常,streetBehavior#街道行为（人员奔跑,smokeDetection#烟雾检测,linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,failDown#人员倒地,AIOP#AI开放平台,HEOP#Hikvision embeded open platform,peopleCounting#人数统计（行为超脑中既包括客流统计和区域人数统计）别]-->face_recognition
      </Mode>
      <supportChannelNumber>
        <!--ro, req, int, （实时模式）支持通道数目, range:[,], step:, unit:, unitType:-->0
      </supportChannelNumber>
      <supportChannelNumberAutoSwitch>
        <!--ro, opt, int, （轮询模式下）支持引擎关联的通道配置的数量, range:[,], step:, unit:, unitType:-->0
      </supportChannelNumberAutoSwitch>
    </SingelModeCap>
  </SingelModeCapList>
  <isSupportCheckUtilization>
    <!--ro, req, bool, 是否支持显示使用率-->true
  </isSupportCheckUtilization>
  <isSupportCheckChannelsInfo>
    <!--ro, req, bool, 是否支持显示引擎关联通道号-->true
  </isSupportCheckChannelsInfo>
  <repairTime min="-1" max="3">
    <!--ro, opt, int, 自动修复次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </repairTime>
  <isNeedReboot>
    <!--ro, opt, bool, 分析引擎配置是否需要重启-->true
  </isNeedReboot>
  <engineSwitchPrompt opt="prompt1">
    <!--ro, opt, string, 引擎切换提示语, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </engineSwitchPrompt>
  <supportChannelsConfiguration min="0" max="10">
    <!--ro, opt, int, 支持引擎关联的通道配置的数量, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </supportChannelsConfiguration>
  <analysisMode opt="realTimeMode,autoSwitchMode,highPerformanceMode,pictureMode">
    <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#自动切换模式,highPerformanceMode#高性能模式,pictureMode#图片模式], attr:opt{req, string, 取值范围, range:[,]}, desc:不返回该节点默认为实时模式-->realTimeMode
  </analysisMode>
  <eventSupportAutoSwitch opt="cityManagement,fireEscapeDetection,behavior,peopleCounting,safetyHelmetDetection">
    <!--ro, opt, string, 支持轮询的事件, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:cityManagement-智慧城管,fireEscapeDetection-消防通道检测,behavior-异常行为识别,peopleCounting-人数统计,safetyHelmetDetection-安全帽检测-->test
  </eventSupportAutoSwitch>
  <AutoSwitchTime min="0" max="10" def="0">
    <!--ro, opt, int, 轮询时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </AutoSwitchTime>
  <isSupportSchedule>
    <!--ro, opt, bool, 是否支持轮询计划配置, desc:对应url /ISAPI/Intelligent/analysisEngines/<ID>/schedule/capabilities?format=json-->true
  </isSupportSchedule>
  <isSupportOptimization>
    <!--ro, opt, bool, 是否支持资源优化-->true
  </isSupportOptimization>
</AnalysisEnginesCap>

18. 获取设备所有分析引擎参数

18.1 命令

GET /ISAPI/Intelligent/analysisEngines

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisEngineList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 分析引擎参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AnalysisEngine>
    <!--ro, req, object, 分析引擎参数-->
    <id>
      <!--ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:-->0
    </id>
    <mode>
      <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化,image_recognition_human#图片识别,image_recognition_vehicle#图片识别,safetyHelmetDetection#安全帽分析,personDensityDetection#人员密度,leavePosition#离岗检测,peopleNumChange#人数异常检测,behavior#异常行为识别（具体包括9种：穿越警戒线检测、区域入侵检测、进入区域检测、离开区域检测、徘徊检测、人员奔跑、人员聚集、剧烈运动、人员倒地）,retention#人员滞留,situationAnalysis#态势分析,cityManagement#智慧城管,face_human_recognition#人脸人体混合识别,face_recognition_IES#人脸抓拍+智能教学系统分析,OCR#Optical Character Recognition（光学字符识别）,face_recognition_IES_or_OCR#人脸抓拍+智能教学系统分析或OCR（“人脸抓拍+智能教学系统分析”优先）,fireEscapeDetection#消防通道检测,takingElevatorDetection#乘梯检测,workBehavior#岗位异常行为识别（人数异常,streetBehavior#街道行为（人员奔跑,smokeDetection#烟雾检测,linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,failDown#人员倒地,AIOP#AI开放平台,HEOP#Hikvision embeded open platform,peopleCounting#人数统计（行为超脑中既包括客流统计和区域人数统计）别,AlgoPackageScheduling#算法包调度], desc:一个分析引擎只能支持一种模式赋值-->face_recognition
    </mode>
    <state>
      <!--ro, req, enum, 状态, subType:string, [loading#加载中,analyzing#分析中,abnormal#引擎异常,connect_boot_abnorma#连接启动程序失败,conig_boot_abnorma#配置启动程序失败,connect_main_abnorma#连接主程序失败,conig_main_abnorma#配置主程序失败,auth_abnorma#授权失败,reset_abnorma#复位失败,DSP_status_abnorma#DSP状态异常,lib_ver_err_abnorma#远程引擎版本错误]-->loading
    </state>
    <utilization>
      <!--ro, opt, float, 引擎使用率, range:[0.0,100.0], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
    </utilization>
    <ChannelInfoList>
      <!--ro, opt, array, 引擎关联的通道号列表, subType:object, range:[,]-->
      <ChannelInfo>
        <!--ro, opt, object, 引擎关联的通道号-->
        <id>
          <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:, desc:涵盖模拟通道号和数据通道号-->0
        </id>
        <name>
          <!--ro, opt, string, 通道名称, range:[,]-->test
        </name>
      </ChannelInfo>
    </ChannelInfoList>
    <repairTime>
      <!--ro, opt, int, 自动修复次数, range:[-1,3], step:, unit:, unitType:-->0
    </repairTime>
    <pollingTime>
      <!--ro, opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:，这个用于录播主机中的引擎的算法切换，暂无轮询计划。 支持的mode有 face_recognition_IES-人脸抓拍+智能教学系统分析，OCR-Optical Character Recognition（光学字符识别），face_recognition_IES_or_OCR-人脸抓拍+智能教学系统分析或OCR 算法切换时间-->0
    </pollingTime>
    <channelNum>
      <!--ro, opt, int, 引擎关联的通道数, range:[,], step:, unit:, unitType:-->0
    </channelNum>
    <analysisMode>
      <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#自动切换模式,highPerformanceMode#高性能模式,pictureMode#图片模式], desc:不返回该节点默认为实时模式-->realTimeMode
    </analysisMode>
    <AutoSwitchTime>
      <!--ro, opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:在轮询计划时间（/ISAPI/Intelligent/analysisEngines/<ID>/schedule/capabilities?format=json）中，每个轮询时间切换一次分析通道-->0
    </AutoSwitchTime>
  </AnalysisEngine>
</AnalysisEngineList>

19. 配置设备所有分析引擎参数

19.1 命令

PUT /ISAPI/Intelligent/analysisEngines

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisEngineList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, array, 分析引擎参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AnalysisEngine>
    <!--req, object, 分析引擎参数-->
    <id>
      <!--req, int, 引擎编号, range:[,], step:, unit:, unitType:-->0
    </id>
    <mode>
      <!--req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化,image_recognition_human#图片识别,image_recognition_vehicle#图片识别,safetyHelmetDetection#安全帽分析,personDensityDetection#人员密度,leavePosition#离岗检测,peopleNumChange#人数异常检测,behavior#异常行为识别（具体包括9种：穿越警戒线检测、区域入侵检测、进入区域检测、离开区域检测、徘徊检测、人员奔跑、人员聚集、剧烈运动、人员倒地）,retention#人员滞留,situationAnalysis#态势分析,cityManagement#智慧城管,face_human_recognition#人脸人体混合识别,face_recognition_IES#人脸抓拍+智能教学系统分析,OCR#Optical Character Recognition（光学字符识别）,face_recognition_IES_or_OCR#人脸抓拍+智能教学系统分析或OCR（“人脸抓拍+智能教学系统分析”优先）,fireEscapeDetection#消防通道检测,takingElevatorDetection#乘梯检测,workBehavior#岗位异常行为识别（人数异常,streetBehavior#街道行为（人员奔跑,smokeDetection#烟雾检测,linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,failDown#人员倒地,AIOP#AI开放平台,HEOP#Hikvision embeded open platform,peopleCounting#人数统计（行为超脑中既包括客流统计和区域人数统计）别,AlgoPackageScheduling#算法包调度], desc:一个分析引擎只能支持一种模式赋值-->face_recognition
    </mode>
    <state>
      <!--req, enum, 状态, subType:string, [loading#加载中,analyzing#分析中,abnormal#引擎异常,connect_boot_abnorma#连接启动程序失败,conig_boot_abnorma#配置启动程序失败,connect_main_abnorma#连接主程序失败,conig_main_abnorma#配置主程序失败,auth_abnorma#授权失败,reset_abnorma#复位失败,DSP_status_abnorma#DSP状态异常,lib_ver_err_abnorma#远程引擎版本错误]-->loading
    </state>
    <utilization>
      <!--opt, float, 引擎使用率, range:[0.0,100.0], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
    </utilization>
    <ChannelInfoList>
      <!--opt, array, 引擎关联的通道号列表, subType:object, range:[,]-->
      <ChannelInfo>
        <!--opt, object, 引擎关联的通道号-->
        <id>
          <!--req, int, 通道号, range:[,], step:, unit:, unitType:, desc:涵盖模拟通道号和数据通道号-->0
        </id>
        <name>
          <!--opt, string, 通道名称, range:[,]-->test
        </name>
      </ChannelInfo>
    </ChannelInfoList>
    <repairTime>
      <!--opt, int, 自动修复次数, range:[-1,3], step:, unit:, unitType:-->0
    </repairTime>
    <pollingTime>
      <!--opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:，这个用于录播主机中的引擎的算法切换，暂无轮询计划。 支持的mode有 face_recognition_IES-人脸抓拍+智能教学系统分析，OCR-Optical Character Recognition（光学字符识别），face_recognition_IES_or_OCR-人脸抓拍+智能教学系统分析或OCR 算法切换时间-->0
    </pollingTime>
    <channelNum>
      <!--opt, int, 引擎关联的通道数, range:[,], step:, unit:, unitType:-->0
    </channelNum>
    <analysisMode>
      <!--opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#自动切换模式,highPerformanceMode#高性能模式,pictureMode#图片模式], desc:不返回该节点默认为实时模式-->realTimeMode
    </analysisMode>
    <AutoSwitchTime>
      <!--opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:在轮询计划时间（/ISAPI/Intelligent/analysisEngines/<ID>/schedule/capabilities?format=json）中，每个轮询时间切换一次分析通道-->0
    </AutoSwitchTime>
  </AnalysisEngine>
</AnalysisEngineList>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取设备单个分析引擎参数

20.1 命令

GET /ISAPI/Intelligent/analysisEngines/<engineID>

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisEngines xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 分析引擎参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:-->0
  </id>
  <mode>
    <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化,image_recognition_human#图片识别,image_recognition_vehicle#图片识别,safetyHelmetDetection#安全帽分析,personDensityDetection#人员密度,leavePosition#离岗检测,peopleNumChange#人数异常检测,behavior#异常行为识别（具体包括9种：穿越警戒线检测、区域入侵检测、进入区域检测、离开区域检测、徘徊检测、人员奔跑、人员聚集、剧烈运动、人员倒地）,retention#人员滞留,situationAnalysis#态势分析,cityManagement#智慧城管,face_human_recognition#人脸人体混合识别,face_recognition_IES#人脸抓拍+智能教学系统分析,OCR#Optical Character Recognition（光学字符识别）,face_recognition_IES_or_OCR#人脸抓拍+智能教学系统分析或OCR（“人脸抓拍+智能教学系统分析”优先）,fireEscapeDetection#消防通道检测,takingElevatorDetection#乘梯检测,workBehavior#岗位异常行为识别（人数异常,streetBehavior#街道行为（人员奔跑,smokeDetection#烟雾检测,linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,failDown#人员倒地,AIOP#AI开放平台,HEOP#Hikvision embeded open platform,peopleCounting#人数统计（行为超脑中既包括客流统计和区域人数统计）别,mixed#混合模式,AlgoPackageScheduling#算法包调度], desc:一个分析引擎只能支持一种模式赋值-->face_recognition
  </mode>
  <state>
    <!--ro, req, enum, 状态, subType:string, [loading#加载中,analyzing#分析中,abnormal#引擎异常,connect_boot_abnorma#连接启动程序失败,conig_boot_abnorma#配置启动程序失败,connect_main_abnorma#连接主程序失败,conig_main_abnorma#配置主程序失败,auth_abnorma#授权失败,reset_abnorma#复位失败,DSP_status_abnorma#DSP状态异常,lib_ver_err_abnorma#远程引擎版本错误]-->loading
  </state>
  <utilization>
    <!--ro, opt, float, 引擎使用率, range:[0.0,100.0], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
  </utilization>
  <ChannelInfoList>
    <!--ro, opt, array, 引擎关联的通道号列表, subType:object, range:[,]-->
    <ChannelInfo>
      <!--ro, opt, object, 引擎关联的通道号-->
      <id>
        <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:, desc:涵盖模拟通道号和数据通道号-->0
      </id>
      <name>
        <!--ro, opt, string, 通道名称, range:[,]-->test
      </name>
    </ChannelInfo>
  </ChannelInfoList>
  <repairTime>
    <!--ro, opt, int, 自动修复次数, range:[-1,3], step:, unit:, unitType:-->0
  </repairTime>
  <pollingTime>
    <!--ro, opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:，这个用于录播主机中的引擎的算法切换，暂无轮询计划。 支持的mode有 face_recognition_IES-人脸抓拍+智能教学系统分析，OCR-Optical Character Recognition（光学字符识别），face_recognition_IES_or_OCR-人脸抓拍+智能教学系统分析或OCR 算法切换时间-->0
  </pollingTime>
  <channelNum>
    <!--ro, opt, int, 引擎关联的通道数, range:[,], step:, unit:, unitType:-->0
  </channelNum>
  <analysisMode>
    <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#自动切换模式,highPerformanceMode#高性能模式,pictureMode#图片模式], desc:不返回该节点默认为实时模式-->realTimeMode
  </analysisMode>
  <AutoSwitchTime>
    <!--ro, opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:在轮询计划时间（/ISAPI/Intelligent/analysisEngines/<ID>/schedule/capabilities?format=json）中，每个轮询时间切换一次分析通道-->0
  </AutoSwitchTime>
</AnalysisEngines>

21. 配置设备单个分析引擎参数

21.1 命令

PUT /ISAPI/Intelligent/analysisEngines/<engineID>

21.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisEngines xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 分析引擎参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 引擎编号, range:[,], step:, unit:, unitType:-->0
  </id>
  <mode>
    <!--req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化,image_recognition_human#图片识别,image_recognition_vehicle#图片识别,safetyHelmetDetection#安全帽分析,personDensityDetection#人员密度,leavePosition#离岗检测,peopleNumChange#人数异常检测,behavior#异常行为识别（具体包括9种：穿越警戒线检测、区域入侵检测、进入区域检测、离开区域检测、徘徊检测、人员奔跑、人员聚集、剧烈运动、人员倒地）,retention#人员滞留,situationAnalysis#态势分析,cityManagement#智慧城管,face_human_recognition#人脸人体混合识别,face_recognition_IES#人脸抓拍+智能教学系统分析,OCR#Optical Character Recognition（光学字符识别）,face_recognition_IES_or_OCR#人脸抓拍+智能教学系统分析或OCR（“人脸抓拍+智能教学系统分析”优先）,fireEscapeDetection#消防通道检测,takingElevatorDetection#乘梯检测,workBehavior#岗位异常行为识别（人数异常,streetBehavior#街道行为（人员奔跑,smokeDetection#烟雾检测,linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,failDown#人员倒地,AIOP#AI开放平台,HEOP#Hikvision embeded open platform,peopleCounting#人数统计（行为超脑中既包括客流统计和区域人数统计）别,mixed#混合模式,AlgoPackageScheduling#算法包调度], desc:一个分析引擎只能支持一种模式赋值-->face_recognition
  </mode>
  <state>
    <!--req, enum, 状态, subType:string, [loading#加载中,analyzing#分析中,abnormal#引擎异常,connect_boot_abnorma#连接启动程序失败,conig_boot_abnorma#配置启动程序失败,connect_main_abnorma#连接主程序失败,conig_main_abnorma#配置主程序失败,auth_abnorma#授权失败,reset_abnorma#复位失败,DSP_status_abnorma#DSP状态异常,lib_ver_err_abnorma#远程引擎版本错误]-->loading
  </state>
  <utilization>
    <!--opt, float, 引擎使用率, range:[0.0,100.0], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
  </utilization>
  <ChannelInfoList>
    <!--opt, array, 引擎关联的通道号列表, subType:object, range:[,]-->
    <ChannelInfo>
      <!--opt, object, 引擎关联的通道号-->
      <id>
        <!--req, int, 通道号, range:[,], step:, unit:, unitType:, desc:涵盖模拟通道号和数据通道号-->0
      </id>
      <name>
        <!--opt, string, 通道名称, range:[,]-->test
      </name>
    </ChannelInfo>
  </ChannelInfoList>
  <repairTime>
    <!--opt, int, 自动修复次数, range:[-1,3], step:, unit:, unitType:-->0
  </repairTime>
  <pollingTime>
    <!--opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:，这个用于录播主机中的引擎的算法切换，暂无轮询计划。 支持的mode有 face_recognition_IES-人脸抓拍+智能教学系统分析，OCR-Optical Character Recognition（光学字符识别），face_recognition_IES_or_OCR-人脸抓拍+智能教学系统分析或OCR 算法切换时间-->0
  </pollingTime>
  <channelNum>
    <!--opt, int, 引擎关联的通道数, range:[,], step:, unit:, unitType:-->0
  </channelNum>
  <analysisMode>
    <!--opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#自动切换模式,highPerformanceMode#高性能模式,pictureMode#图片模式], desc:不返回该节点默认为实时模式-->realTimeMode
  </analysisMode>
  <AutoSwitchTime>
    <!--opt, int, 轮询时间, range:[,], step:, unit:s, unitType:时间, desc:在轮询计划时间（/ISAPI/Intelligent/analysisEngines/<ID>/schedule/capabilities?format=json）中，每个轮询时间切换一次分析通道-->0
  </AutoSwitchTime>
</AnalysisEngines>

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

22. 获取单个引擎轮询计划参数能力

22.1 命令

GET /ISAPI/Intelligent/analysisEngines/<engineID>/schedule/capabilities?format=json

22.2 输入参数

无

22.3 输出参数

{
    "Schedule": {
    /*ro, req, object, 单个引擎轮询计划参数*/
        "enabled": {
        /*ro, req, object, 使能*/
            "@opt": [true, false]
            /*ro, req, array, 取值范围, subType:bool, range:[,]*/
        },
        "TimeBlockList": {
        /*ro, opt, object, 时间段列表*/
            "@size":  1,
            /*ro, opt, int, 支持的可配置时间段数目, range:[,], step:, unit:, unitType:*/
            "TimeBlock": {
            /*ro, opt, object, 时间段*/
                "dayOfWeek": {
                /*ro, req, object, 星期*/
                    "@opt":  "1,2,3,4,5,6,7"
                    /*ro, req, string, 取值范围, range:[,]*/
                },
                "TimeRange": [
                /*ro, opt, array, 时间, subType:object, range:[,]*/
                    {
                        "@size":  3,
                        /*ro, req, int, 同一天内支持配置几个时间段, range:[,], step:, unit:, unitType:*/
                        "supportBeginTime":  true,
                        /*ro, req, bool, 支持开始时间（不支持时可不返回）*/
                        "supportEndTime":  true
                        /*ro, req, bool, 支持结束时间（不支持时可不返回）*/
                    }
                ]
            }
        }
    }
}

23. 获取单个引擎轮询计划

23.1 命令

GET /ISAPI/Intelligent/analysisEngines/<engineID>/schedule?format=json

23.2 输入参数

无

23.3 输出参数

{
    "Schedule": {
    /*ro, req, object, 轮询计划*/
        "enabled":  true,
        /*ro, req, bool, 使能*/
        "TimeBlockList": [
        /*ro, opt, array, 时间段列表, subType:object, range:[,]*/
            {
                "TimeBlock": {
                /*ro, opt, object, 时间段*/
                    "dayOfWeek":  1,
                    /*ro, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]*/
                    "TimeRange": [
                    /*ro, opt, array, 时间, subType:object, range:[,]*/
                        {
                            "beginTime":  "00:00:00+08:00",
                            /*ro, req, time, 开始时间*/
                            "endTime":  "00:00:00+08:00"
                            /*ro, req, time, 结束时间*/
                        }
                    ]
                }
            }
        ]
    }
}

24. 配置单个引擎轮询计划

24.1 命令

PUT /ISAPI/Intelligent/analysisEngines/<engineID>/schedule?format=json

24.2 输入参数

{
    "Schedule": {
    /*req, object, 轮询计划*/
        "enabled":  true,
        /*req, bool, 使能*/
        "TimeBlockList": [
        /*opt, array, 时间段列表, subType:object, range:[,]*/
            {
                "TimeBlock": {
                /*opt, object, 时间段*/
                    "dayOfWeek":  1,
                    /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]*/
                    "TimeRange": [
                    /*opt, array, 时间, subType:object, range:[,]*/
                        {
                            "beginTime":  "00:00:00+08:00",
                            /*req, time, 开始时间*/
                            "endTime":  "00:00:00+08:00"
                            /*req, time, 结束时间*/
                        }
                    ]
                }
            }
        ]
    }
}

24.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

25. 获取设备智能结构化分析能力

25.1 命令

GET /ISAPI/Intelligent/structureAnalysis/capabilities

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StructureAnalysisCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能结构化分析, attr:version{req, string, 协议版本, range:[,]}-->
  <videoStructureAnalysisMode opt="human,vehicle,mixture">
    <!--ro, req, enum, 结构化分析模式, subType:string, [human#人脸,vehicle#车辆,mixture#混合], attr:opt{req, string, 取值范围, range:[,]}-->human
  </videoStructureAnalysisMode>
  <AnalysisTasksCap>
    <!--ro, opt, object, 分析任务能力-->
    <supportTasksMaxNumber>
      <!--ro, opt, int, 设备支持的任务最大数, range:[,], step:, unit:, unitType:-->0
    </supportTasksMaxNumber>
    <supportChannelNameDisplay>
      <!--ro, opt, bool, 是否支持显示使用率-->true
    </supportChannelNameDisplay>
    <enabled opt="true,fasle">
      <!--ro, req, bool, 分析任务使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <mode opt="face_recognition,video_structure_preview,video_structure_record,image_recognition_human,image_recognition_vehicle">
      <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化预览,video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆], attr:opt{req, string, 取值范围, range:[,]}-->face_recognition
    </mode>
    <supportStartTime>
      <!--ro, opt, bool, 是否支持显示开始时间-->true
    </supportStartTime>
    <supportCurrentAnalysisTime>
      <!--ro, opt, bool, 是否支持显示使用率-->true
    </supportCurrentAnalysisTime>
    <supportanalysisState>
      <!--ro, opt, bool, 是否支持显示分析状态-->true
    </supportanalysisState>
    <uploadCenter opt="face_recognition,video_structure_record,image_recognition_human,image_recognition_vehicle">
      <!--ro, opt, enum, 支持分析结果报警上传的模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化预览,video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆], attr:opt{req, string, 取值范围, range:[,]}-->face_recognition
    </uploadCenter>
    <isSupportModeConcurrentProcessing>
      <!--ro, opt, bool, 是否支持智能分析模式并发处理-->true
    </isSupportModeConcurrentProcessing>
  </AnalysisTasksCap>
  <AnalysisDailyProgressParam>
    <!--ro, opt, object, 分析进度参数-->
    <mode opt="video_structure_record,image_recognition_human,image_recognition_vehicle">
      <!--ro, req, enum, 支持月历搜索的分析模式, subType:string, [video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆], attr:opt{req, string, 取值范围, range:[,]}-->video_structure_record
    </mode>
  </AnalysisDailyProgressParam>
</StructureAnalysisCap>

26. 获取设备智能资源分析参数

26.1 命令

GET /ISAPI/Intelligent/structureAnalysis/video

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoStructure xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能资源分析参数, attr:version{req, string, 协议版本, range:[,]}-->
  <analysisMode>
    <!--ro, req, enum, 分析模式, subType:string, [human#人体,vehicle#车辆,mixture#混合]-->human
  </analysisMode>
</VideoStructure>

27. 配置设备智能资源分析参数

27.1 命令

PUT /ISAPI/Intelligent/structureAnalysis/video

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoStructure xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 智能资源分析参数, attr:version{req, string, 协议版本, range:[,]}-->
  <analysisMode>
    <!--req, enum, 分析模式, subType:string, [human#人体,vehicle#车辆,mixture#混合]-->human
  </analysisMode>
</VideoStructure>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 获取所有通道分析任务参数

28.1 命令

GET /ISAPI/Intelligent/structureAnalysis/tasks

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisTaskList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 单通道分析任务参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AnalysisTask>
    <!--ro, req, object, 单通道分析任务参数-->
    <id>
      <!--ro, req, int, 设备通道号, range:[,], step:, unit:, unitType:-->0
    </id>
    <name>
      <!--ro, opt, string, 设备通道名称, range:[1,32]-->test
    </name>
    <enabled>
      <!--ro, req, bool, 分析任务使能-->true
    </enabled>
    <mode>
      <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化预览,video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆]-->face_recognition
    </mode>
    <startTime>
      <!--ro, opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
    </startTime>
    <currentAnalysisTime>
      <!--ro, opt, datetime, 当前分析时间-->1970-01-01T00:00:00+08:00
    </currentAnalysisTime>
    <analysisState>
      <!--ro, opt, enum, 分析状态, subType:string, [working#工作中,pause#暂停,wait#等待,finish#结束,disable#禁用]-->working
    </analysisState>
    <uploadCenter>
      <!--ro, opt, bool, 分析事件结果上传中心, desc:仅作用于以下事件类型；face_recognition,video_structure_record,image_recognition_human,image_recognition_vehicle-->true
    </uploadCenter>
  </AnalysisTask>
</AnalysisTaskList>

29. 配置所有通道分析任务参数

29.1 命令

PUT /ISAPI/Intelligent/structureAnalysis/tasks

29.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisTaskList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, array, 单通道分析任务参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AnalysisTask>
    <!--req, object, 单通道分析任务参数-->
    <id>
      <!--req, int, 设备通道号, range:[,], step:, unit:, unitType:-->0
    </id>
    <name>
      <!--opt, string, 设备通道名称, range:[1,32]-->test
    </name>
    <enabled>
      <!--req, bool, 分析任务使能-->true
    </enabled>
    <mode>
      <!--req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化预览,video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆]-->face_recognition
    </mode>
    <startTime>
      <!--opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
    </startTime>
    <currentAnalysisTime>
      <!--opt, datetime, 当前分析时间-->1970-01-01T00:00:00+08:00
    </currentAnalysisTime>
    <analysisState>
      <!--opt, enum, 分析状态, subType:string, [working#工作中,pause#暂停,wait#等待,finish#结束,disable#禁用]-->working
    </analysisState>
    <uploadCenter>
      <!--opt, bool, 分析事件结果上传中心, desc:仅作用于以下事件类型；face_recognition,video_structure_record,image_recognition_human,image_recognition_vehicle-->true
    </uploadCenter>
  </AnalysisTask>
</AnalysisTaskList>

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

30. 获取单通道分析任务参数

30.1 命令

GET /ISAPI/Intelligent/structureAnalysis/tasks/channels/<channelID>

30.2 输入参数

无

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisTask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 单通道分析任务参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 设备通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <name>
    <!--ro, opt, string, 设备通道名称, range:[1,32]-->test
  </name>
  <enabled>
    <!--ro, req, bool, 分析任务使能-->true
  </enabled>
  <mode>
    <!--ro, req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化预览,video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆]-->face_recognition
  </mode>
  <startTime>
    <!--ro, opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
  </startTime>
  <currentAnalysisTime>
    <!--ro, opt, datetime, 当前分析时间-->1970-01-01T00:00:00+08:00
  </currentAnalysisTime>
  <analysisState>
    <!--ro, opt, enum, 分析状态, subType:string, [working#工作中,pause#暂停,wait#等待,finish#结束,disable#禁用]-->working
  </analysisState>
  <uploadCenter>
    <!--ro, opt, bool, 分析事件结果上传中心, desc:仅作用于以下事件类型；face_recognition,video_structure_record,image_recognition_human,image_recognition_vehicle-->true
  </uploadCenter>
</AnalysisTask>

31. 配置单通道分析任务参数

31.1 命令

PUT /ISAPI/Intelligent/structureAnalysis/tasks/channels/<channelID>

31.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisTask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 单通道分析任务参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 设备通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <name>
    <!--opt, string, 设备通道名称, range:[1,32]-->test
  </name>
  <enabled>
    <!--req, bool, 分析任务使能-->true
  </enabled>
  <mode>
    <!--req, enum, 模式, subType:string, [face_recognition#人脸抓拍,video_structure_preview#视频结构化预览,video_structure_record#视频结构化录像,image_recognition_human#图片识别人脸,image_recognition_vehicle#图片识别车辆]-->face_recognition
  </mode>
  <startTime>
    <!--opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
  </startTime>
  <currentAnalysisTime>
    <!--opt, datetime, 当前分析时间-->1970-01-01T00:00:00+08:00
  </currentAnalysisTime>
  <analysisState>
    <!--opt, enum, 分析状态, subType:string, [working#工作中,pause#暂停,wait#等待,finish#结束,disable#禁用]-->working
  </analysisState>
  <uploadCenter>
    <!--opt, bool, 分析事件结果上传中心, desc:仅作用于以下事件类型；face_recognition,video_structure_record,image_recognition_human,image_recognition_vehicle-->true
  </uploadCenter>
</AnalysisTask>

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

32. 查询分析进度月历信息

32.1 命令

POST /ISAPI/Intelligent/structureAnalysis/dailyProgress/channels/<channelID>

32.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisDailyProgressParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--req, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <channelID>
    <!--req, int, 设备通道号, range:[,], step:, unit:, unitType:-->0
  </channelID>
  <year>
    <!--req, int, 搜索年份, range:[,], step:, unit:, unitType:-->0
  </year>
  <monthOfYear>
    <!--req, int, 搜索月份, range:[,], step:, unit:, unitType:-->0
  </monthOfYear>
</AnalysisDailyProgressParam>

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalysisDailyProgressResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <DayList size="31">
    <!--ro, opt, object, 日信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <dayInfo>
      <!--ro, opt, object, 日信息-->
      <dayOfMonth>
        <!--ro, req, int, 日期, range:[,], step:, unit:, unitType:-->0
      </dayOfMonth>
      <state>
        <!--ro, req, enum, 分析状态, subType:string, [complete#完成,analysis#分析中,NotStarted#未开始,noData#无数据]-->complete
      </state>
    </dayInfo>
  </DayList>
</AnalysisDailyProgressResult>

33. 获取算法库信息能力

33.1 命令

GET /ISAPI/System/algorithmsInfo/capabilities?format=json

33.2 输入参数

无

33.3 输出参数

{
    "AlgorithmsInfoCap": {
    /*ro, opt, object, 算法库信息能力*/
        "type": {
        /*ro, opt, object, 算法库类型*/
            "@opt": ["face"]
            /*ro, req, array, 算法库类型, subType:string, range:[,]*/
        },
        "maxSize":  1,
        /*ro, req, int, 支持的算法库数量, range:[,], step:, unit:, unitType:*/
        "name": {
        /*ro, opt, object, 算法库名称, desc:用于区分算法*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "versionInfo": {
        /*ro, req, object, 算法库版本*/
            "major": {
            /*ro, opt, object, 算法库主版本*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "minor": {
            /*ro, opt, object, 算法库次版本*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "revision": {
            /*ro, opt, object, 算法库修正版本*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "platform": {
        /*ro, opt, object, 算法库运行平台*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "accuracy": {
        /*ro, opt, object, 算法库计算精度（加速）*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "encryption": {
        /*ro, opt, object, 加密方式*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "buildTime": {
        /*ro, opt, object, 编译日期*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "versionProperties": {
        /*ro, opt, object, 版本属性*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        }
    }
}

34. 获取算法库信息

34.1 命令

GET /ISAPI/System/algorithmsInfo?format=json

34.2 输入参数

无

34.3 输出参数

{
    "AlgorithmsInfo": [
    /*ro, req, array, 算法库信息, subType:object, range:[,]*/
        {
            "type":  "face",
            /*ro, req, enum, 算法库类型, subType:string, [face#人脸], desc:face-人脸*/
            "versionInfo": {
            /*ro, req, object, 算法库版本*/
                "major":  1,
                /*ro, req, int, 算法库主版本, range:[,], step:, unit:, unitType:*/
                "minor":  2,
                /*ro, req, int, 算法库次版本, range:[,], step:, unit:, unitType:*/
                "revision":  3
                /*ro, req, int, 算法库修正版本, range:[,], step:, unit:, unitType:*/
            },
            "platform":  "test",
            /*ro, req, string, 算法库运行平台, range:[,]*/
            "accuracy":  "test",
            /*ro, opt, string, 算法库计算精度（加速）, range:[,]*/
            "encryption":  "test",
            /*ro, req, string, 加密方式, range:[,]*/
            "buildTime":  "buildyyyymmdd",
            /*ro, req, string, 编译日期, range:[,], desc:buildyyyymmdd*/
            "versionProperties":  "alpha"
            /*ro, req, enum, 版本属性, subType:string, [alpha#预览版,beta#测试版,release#正式发布版,custom#custom], desc:（alpha/beta/release/custom）*/
        }
    ]
}

35. 获取算法库版本（单通道）

35.1 命令

GET /ISAPI/System/algorithmsVersion/channels/<channelID>

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AlgorithmsVersion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 算法库版本, attr:version{opt, string, 未定义, range:[,]}-->
  <AlgorithmsVersionInfoList>
    <!--ro, opt, array, 算法库版本信息列表, subType:object, range:[,]-->
    <AlgorithmsVersionInfo>
      <!--ro, opt, object, 算法库版本信息-->
      <majorVersion>
        <!--ro, req, int, 主版本号, range:[,], step:, unit:, unitType:-->1
      </majorVersion>
      <minorVersion>
        <!--ro, req, int, 次版本号, range:[,], step:, unit:, unitType:-->0
      </minorVersion>
      <revisionNumber>
        <!--ro, req, int, 修正号, range:[,], step:, unit:, unitType:-->0
      </revisionNumber>
      <buildNumber>
        <!--ro, req, int, 编译号, range:[,], step:, unit:, unitType:-->0
      </buildNumber>
      <versionYear>
        <!--ro, req, int, 版本日期年, range:[,], step:, unit:, unitType:-->20
      </versionYear>
      <versionMonth>
        <!--ro, req, int, 版本日期月, range:[,], step:, unit:, unitType:-->8
      </versionMonth>
      <versionDay>
        <!--ro, req, int, 版本日期日, range:[,], step:, unit:, unitType:-->10
      </versionDay>
      <name>
        <!--ro, req, enum, 算法库名称, subType:string, [faceProperties#人脸属性,behaviorAnalysis#异常行为识别,humanAttribute#人体属性,faceSnap#人脸抓拍,faceContrast#人脸比对,studentsStoodUp#学生站立检测,peopleCounting#人数统计,faceScore#人脸评分,HMS#海康目标结构化算法,HMS_C0#海康目标结构化算法（运行在MA上）,depthMap#深度图算法,PED#周界防范检测算法,smokingDetection#抽烟检测,studentBehavior#学生异常行为识别检测,objectAccumulationDetection#堆积检测算法]-->studentBehavior
      </name>
    </AlgorithmsVersionInfo>
  </AlgorithmsVersionInfoList>
</AlgorithmsVersion>

36. 获取设备架设标定能力

36.1 命令

GET /ISAPI/System/setupCalibration/capabilities

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SetupCalibrationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 备注：老设备没有这个节点, attr:version{req, string, 协议版本, range:[,]}-->
  <calibrateType opt="automatic,manual,no,smart">
    <!--ro, opt, string, 标定类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:"automatic -自动, manual-手动，no 表示 未标定, smart智能标定-->automatic
  </calibrateType>
  <ManualCalib>
    <!--ro, opt, object, 手动标定-->
    <height min="1" max="10">
      <!--ro, opt, float, 高度, range:[,], step:, unit:cm, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </height>
    <tiltAngle min="1" max="10">
      <!--ro, opt, float, 俯仰角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </tiltAngle>
    <heelAngle min="1" max="10">
      <!--ro, opt, float, 倾斜角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </heelAngle>
    <geomagneticDirection min="-180.0" max="180.0">
      <!--ro, opt, float, 地磁方向, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:（以正北为方向（绝对世界坐标系中Y轴方向），镜头逆时针旋转的角度（同坐标系中对角度的定义）-->0.000
    </geomagneticDirection>
  </ManualCalib>
  <AutomaticCalib>
    <!--ro, opt, object, 自动标定-->
    <CalibRegion>
      <!--ro, opt, object, 标定区域(绿框)-->
      <RegionCoordinatesList size="4">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--ro, req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CalibRegion>
  </AutomaticCalib>
  <isSupportCalibrationCheck>
    <!--ro, opt, bool, 是否支持标定校验-->true
  </isSupportCalibrationCheck>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, opt, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, opt, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <intelligentType opt="couting,humanAttribute,behaviorRule,studentsStoodUp,BKT,objectAccumulationDetection">
    <!--ro, opt, string, 标定的智能类型, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:couting-客流,humanAttribute-人体属性,behaviorRule-异常行为识别,studentsStoodUp-学生起立,BKT-动线侦测,objectAccumulationDetection-堆积检测
"备注：老设备没有这个节点，没有这个节点时默认认为标定的是双目垂直客流"-->couting
  </intelligentType>
  <SetupCalibrationRecommendation>
    <!--ro, opt, object, 设备架设标定的推荐值获取-->
    <tiltAngle min="-180" max="180">
      <!--ro, opt, float, 俯仰角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </tiltAngle>
    <heelAngle min="-180" max="180">
      <!--ro, opt, float, 倾斜角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </heelAngle>
    <geomagneticDirection min="-180" max="180">
      <!--ro, opt, float, 地磁方向, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </geomagneticDirection>
    <deviationAngle min="-180" max="180">
      <!--ro, opt, float, 偏差角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:设备实际方向相对地磁方向的偏差角-->0.000
    </deviationAngle>
  </SetupCalibrationRecommendation>
  <isSupportPlaneCoordinate>
    <!--ro, opt, bool, 是否支持平面坐标点-->true
  </isSupportPlaneCoordinate>
  <deviationAngle min="-180" max="180">
    <!--ro, opt, float, 偏差角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:设备实际方向相对地磁方向的偏差角-->0.000
  </deviationAngle>
  <WorldCoordinates>
    <!--ro, opt, object, 世界坐标-->
    <positionX min="-99999.999" max="99999.999">
      <!--ro, req, float, x坐标, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </positionX>
    <positionY min="-99999.999" max="99999.999">
      <!--ro, req, float, y坐标, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </positionY>
  </WorldCoordinates>
  <isSupportSetupCalibrationStatus>
    <!--ro, opt, bool, 是否支持获取标定状态, desc:不支持不返回，对应url:/ISAPI/System/setupCalibration/status?format=json-->true
  </isSupportSetupCalibrationStatus>
</SetupCalibrationCap>

37. 获取设备架设标定

37.1 命令

GET /ISAPI/System/setupCalibration

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SetupCalibrationResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 标定结果, attr:version{req, string, 协议版本, range:[,]}-->
  <calibrateType>
    <!--ro, opt, enum, 标定方式, subType:string, [automatic#自动标定,manual#手动标定,no#未标定,smart#智能标定]-->automatic
  </calibrateType>
  <SetupParam>
    <!--ro, opt, object, 配置参数-->
    <height>
      <!--ro, opt, float, 高度, range:[,], step:, unit:cm, unitType:-->0.000
    </height>
    <tiltAngle>
      <!--ro, opt, float, 俯仰角, range:[,], step:, unit:, unitType:-->0.000
    </tiltAngle>
    <heelAngle>
      <!--ro, opt, float, 倾斜角, range:[,], step:, unit:, unitType:-->0.000
    </heelAngle>
  </SetupParam>
  <CountingArea>
    <!--ro, opt, object, 计数区域（红框）-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--ro, req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </CountingArea>
  <CountingLineList>
    <!--ro, opt, array, 标定线列表, subType:object, range:[,]-->
    <CountingLine>
      <!--ro, opt, object, 标定线-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <Direction>
        <!--ro, req, object, 方向-->
        <StartPoint>
          <!--ro, req, object, 起始点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </StartPoint>
        <EndPoint>
          <!--ro, req, object, 终止点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </EndPoint>
      </Direction>
      <LineCoordinatesList>
        <!--ro, req, array, 线坐标列表, subType:object, range:[0,2]-->
        <Coordinates>
          <!--ro, opt, object, 坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </Coordinates>
      </LineCoordinatesList>
    </CountingLine>
  </CountingLineList>
  <geomagneticDirection>
    <!--ro, opt, float, 地磁方向, range:[-180.0,180.0], step:, unit:°, unitType:平面角, desc:精度0.1°，（以正北为方向（绝对世界坐标系中Y轴方向），镜头逆时针旋转的角度（同坐标系中对角度的定义）-->0.000
  </geomagneticDirection>
  <deviationAngle>
    <!--ro, opt, float, 偏差角, range:[-180.0,180.0], step:, unit:°, unitType:平面角, desc:精度0.1°，设备实际方向相对地磁方向的偏差角-->0.000
  </deviationAngle>
  <WorldCoordinates>
    <!--ro, opt, object, 世界坐标-->
    <positionX>
      <!--ro, req, float, x坐标, range:[-99999.999,99999.999], step:, unit:, unitType:, desc:精度为0.001米-->0.000
    </positionX>
    <positionY>
      <!--ro, req, float, y坐标, range:[-99999.999,99999.999], step:, unit:, unitType:, desc:精度为0.001米-->0.000
    </positionY>
  </WorldCoordinates>
</SetupCalibrationResult>

38. 设置设备架设标定

38.1 命令

POST /ISAPI/System/setupCalibration

38.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SetupCalibration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 架设标定, attr:version{req, string, 协议版本, range:[,]}-->
  <calibrateType opt="automatic,manual,no,smart">
    <!--ro, opt, string, 标定方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:标定方式:automatic-自动标定,manual-手动标定,no-未标定,smart-智能标定-->automatic
  </calibrateType>
  <ManualCalib>
    <!--opt, object, 手动标定, dep:and,{$.SetupCalibration.calibrateType,eq,manual}-->
    <height min="1" max="10">
      <!--opt, float, 高度, range:[,], step:, unit:cm, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </height>
    <tiltAngle min="1" max="10">
      <!--opt, float, 俯仰角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </tiltAngle>
    <heelAngle min="1" max="10">
      <!--opt, float, 倾斜角, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </heelAngle>
    <geomagneticDirection>
      <!--opt, float, 地磁方向, range:[-180.0,180.0], step:, unit:°, unitType:平面角, desc:地磁方向（以正北为方向（绝对世界坐标系中Y轴方向），镜头逆时针旋转的角度（同坐标系中对角度的定义）-->0.000
    </geomagneticDirection>
  </ManualCalib>
  <AutomaticCalib>
    <!--opt, object, 自动标定, dep:and,{$.SetupCalibration.calibrateType,eq,automatic}-->
    <CalibRegion>
      <!--opt, object, 标定区域(绿框)-->
      <RegionCoordinatesList size="4">
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CalibRegion>
  </AutomaticCalib>
  <intelligentType>
    <!--opt, enum, 标定的智能类型, subType:string, [couting#客流,humanAttribute#人体属性,behaviorRule#异常行为识别,studentsStoodUp#学生起立,BKT#动线侦测,objectAccumulationDetection#堆积检测]-->couting
  </intelligentType>
  <PlaneCoordinate>
    <!--opt, object, 平面坐标点, dep:and,{$.SetupCalibration.calibrateType,eq,smart}, desc:平面坐标点的作用是算法会根据深度图来对智能标定下的高度进行校验，屏幕左下角为坐标原点-->
    <positionX>
      <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionX>
    <positionY>
      <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionY>
  </PlaneCoordinate>
  <deviationAngle>
    <!--opt, float, 偏差角, range:[-180.0,180.0], step:, unit:°, unitType:平面角, desc:精度0.1°，设备实际方向相对地磁方向的偏差角-->0.000
  </deviationAngle>
  <WorldCoordinates>
    <!--opt, object, 世界坐标-->
    <positionX>
      <!--req, float, x坐标, range:[-99999.999,99999.999], step:, unit:, unitType:, desc:精度为0.001米-->0.000
    </positionX>
    <positionY>
      <!--req, float, y坐标, range:[-99999.999,99999.999], step:, unit:, unitType:, desc:精度为0.001米-->0.000
    </positionY>
  </WorldCoordinates>
</SetupCalibration>

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SetupCalibrationResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 架设标定结果, attr:version{req, string, 协议版本, range:[,]}-->
  <calibrateType>
    <!--ro, opt, enum, 标定方式, subType:string, [automatic#自动标定,manual#手动标定,no#未标定,smart#智能标定], desc:标定方式:automatic-自动标定,manual-手动标定,no-未标定,smart-智能标定-->automatic
  </calibrateType>
  <SetupParam>
    <!--ro, opt, object, 配置参数-->
    <height>
      <!--ro, opt, float, 高度, range:[,], step:, unit:cm, unitType:长度-->0.000
    </height>
    <tiltAngle>
      <!--ro, opt, float, 俯仰角, range:[,], step:, unit:, unitType:-->0.000
    </tiltAngle>
    <heelAngle>
      <!--ro, opt, float, 倾斜角, range:[,], step:, unit:, unitType:-->0.000
    </heelAngle>
  </SetupParam>
  <CountingArea>
    <!--ro, opt, object, 计数区域（红框）-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 区域坐标列表, subType:object, range:[,]-->
      <RegionCoordinates>
        <!--ro, req, object, 区域坐标-->
        <positionX>
          <!--ro, req, int, x坐标, range:[,], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[,], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </CountingArea>
  <CountingLineList>
    <!--ro, opt, array, 标定线列表, subType:object, range:[,]-->
    <CountingLine>
      <!--ro, opt, object, 标定线-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <Direction>
        <!--ro, req, object, 方向-->
        <StartPoint>
          <!--ro, req, object, 起始点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[,], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[,], step:, unit:, unitType:-->1
          </positionY>
        </StartPoint>
        <EndPoint>
          <!--ro, req, object, 结束点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[,], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[,], step:, unit:, unitType:-->1
          </positionY>
        </EndPoint>
      </Direction>
      <LineCoordinatesList>
        <!--ro, req, array, 线坐标列表, subType:object, range:[,]-->
        <Coordinates>
          <!--ro, opt, object, 坐标-->
          <positionX>
            <!--ro, req, int, x坐标, range:[,], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[,], step:, unit:, unitType:-->1
          </positionY>
        </Coordinates>
      </LineCoordinatesList>
    </CountingLine>
  </CountingLineList>
  <geomagneticDirection>
    <!--ro, opt, float, 地磁方向, range:[-180.0,180.0], step:, unit:°, unitType:平面角, desc:精度0.1°，（以正北为方向（绝对世界坐标系中Y轴方向），镜头逆时针旋转的角度（同坐标系中对角度的定义）-->0.000
  </geomagneticDirection>
  <deviationAngle>
    <!--ro, opt, float, 偏差角, range:[-180.0,180.0], step:, unit:°, unitType:平面角, desc:精度0.1°，设备实际方向相对地磁方向的偏差角-->0.000
  </deviationAngle>
  <WorldCoordinates>
    <!--ro, opt, object, 世界坐标-->
    <positionX>
      <!--ro, req, float, x坐标, range:[-99999.999,99999.999], step:, unit:, unitType:, desc:精度为0.001米-->-99999.999
    </positionX>
    <positionY>
      <!--ro, req, float, y坐标, range:[-99999.999,99999.999], step:, unit:, unitType:, desc:精度为0.001米-->-99999.999
    </positionY>
  </WorldCoordinates>
</SetupCalibrationResult>

39. 获取设备架设标定校验能力

39.1 命令

GET /ISAPI/System/setupCalibration/check/capabilities

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CalibrationCheck xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 检测参数, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, req, object, 标准化屏幕-->
    <normalizedScreenWidth>
      <!--ro, req, int, 标准化屏幕宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 标准化屏幕高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PointCheck>
    <!--ro, opt, object, 检验点坐标, desc:屏幕左下角为坐标原点-->
    <positionX>
      <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionX>
    <positionY>
      <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionY>
  </PointCheck>
</CalibrationCheck>

40. 查询设备架设标定校验

40.1 命令

POST /ISAPI/System/setupCalibration/check

40.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<CalibrationCheck xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 设备架设标定参数, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--req, object, 标准化屏幕-->
    <normalizedScreenWidth>
      <!--req, int, 标准化屏幕宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 标准化屏幕高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PointCheck>
    <!--opt, object, 检验点坐标, desc:屏幕左下角为坐标原点-->
    <positionX>
      <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionX>
    <positionY>
      <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionY>
  </PointCheck>
</CalibrationCheck>

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CalibrationCheckResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 检测结果, attr:version{req, string, 协议版本, range:[,]}-->
  <pointCheckHeight>
    <!--ro, opt, int, 检测点高度, range:[,], step:, unit:cm, unitType:-->1
  </pointCheckHeight>
</CalibrationCheckResult>

41. 获取设备架设标定规则推荐值

41.1 命令

GET /ISAPI/System/setupCalibration/recommendation

41.2 输入参数

无

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SetupCalibrationRecommendation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 获取设备架设标定规则推荐值, attr:version{req, string, 协议版本, range:[,]}-->
  <tiltAngle>
    <!--ro, opt, float, 俯仰角, range:[-180,180], step:, unit:°, unitType:平面角-->0.000
  </tiltAngle>
  <heelAngle>
    <!--ro, opt, float, 倾斜角, range:[-180,180], step:, unit:°, unitType:平面角-->0.000
  </heelAngle>
  <geomagneticDirection>
    <!--ro, opt, float, 地磁方向 , range:[-180.0,180.0], step:, unit:, unitType:, desc:精度0.1°；"地磁方向（以正北为方向（绝对世界坐标系中Y轴方向），镜头逆时针旋转的角度（同坐标系中对角度的定义）-->0.0
  </geomagneticDirection>
  <deviationAngle>
    <!--ro, opt, float, 偏差角 , range:[-180.0,180.0], step:, unit:, unitType:, desc:精度0.1°,设备实际方向相对地磁方向的偏差角-->0.0
  </deviationAngle>
</SetupCalibrationRecommendation>

42. 获取设备架设标定状态

42.1 命令

GET /ISAPI/System/setupCalibration/status?format=json

42.2 输入参数

无

42.3 输出参数

{
    "status":  "未标定"
    /*ro, req, enum, 标定状态, subType:string, [未标定#uncalibrated,已标定#calibrated]*/
}

43. 获取标定过滤尺寸参数能力

43.1 命令

GET /ISAPI/Smart/channels/<channelID>/calibrations/capabilities

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartCalibrationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 标定过滤尺寸参数, attr:version{req, string, 协议版本, range:[,]}-->
  <eventType opt="linedetection,fielddetection,regionEntrance,regionExiting,loitering,rapidMove,parking,unattendedBaggage,attendedBaggage">
    <!--ro, req, enum, 事件类型, subType:string, [linedetection#越界侦测,fielddetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊,rapidMove#快速移动,parking#停车,unattendedBaggage#物品遗留,attendedBaggage#物品拿取], attr:opt{req, string, 取值范围, range:[,]}-->linedetection
  </eventType>
  <FilterSize>
    <!--ro, opt, object, 过滤尺寸-->
    <MaxTargetSize size="10">
      <!--ro, opt, object, 最大目标尺寸, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinatesList size="4">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </MaxTargetSize>
    <MinTargetSize size="10">
      <!--ro, opt, object, 最小目标尺寸, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinatesList size="4">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </MinTargetSize>
    <mode opt="pixels,actualSize">
      <!--ro, opt, enum, 模式, subType:string, [pixels#像素,actualSize#实际大小], attr:opt{req, string, 取值范围, range:[,]}-->pixels
    </mode>
    <strategy opt="area,widthHeight">
      <!--ro, opt, enum, 策略, subType:string, [area#区域,widthHeight#宽高], attr:opt{req, string, 取值范围, range:[,]}-->area
    </strategy>
  </FilterSize>
  <priority opt="high,middle,low">
    <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低], attr:opt{req, string, 取值范围, range:[,]}-->high
  </priority>
  <enabled opt="true,false">
    <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <isSupportGlobalCalibration>
    <!--ro, opt, bool, 是否支持全局标定过滤尺寸, desc:返回为true表示支持协议/ISAPI/Smart/channels/<channelID>/calibrations-->true
  </isSupportGlobalCalibration>
</SmartCalibrationCap>

44. 获取标定过滤尺寸参数

44.1 命令

GET /ISAPI/Smart/channels/<channelID>/calibrations/<EventType>

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartCalibrationList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 标定过滤尺寸参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <SmartCalibration>
    <!--ro, opt, object, 标定过滤尺寸参数-->
    <ID>
      <!--ro, req, int, 规则编号, range:[,], step:, unit:, unitType:-->0
    </ID>
    <FilterSize>
      <!--ro, opt, object, 过滤尺寸-->
      <MaxTargetSize size="10">
        <!--ro, opt, object, 最大目标尺寸, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </MaxTargetSize>
      <MinTargetSize size="10">
        <!--ro, opt, object, 最小目标尺寸, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </MinTargetSize>
      <mode>
        <!--ro, opt, enum, 模式, subType:string, [pixels#像素,actualSize#实际大小]-->pixels
      </mode>
      <strategy>
        <!--ro, opt, enum, 策略, subType:string, [area#区域,widthHeight#宽高]-->area
      </strategy>
    </FilterSize>
    <priority>
      <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
    </priority>
  </SmartCalibration>
</SmartCalibrationList>

45. 配置标定过滤尺寸参数

45.1 命令

PUT /ISAPI/Smart/channels/<channelID>/calibrations/<EventType>

45.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartCalibrationList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, array, 标定过滤尺寸参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <SmartCalibration>
    <!--opt, object, 标定过滤尺寸参数-->
    <ID>
      <!--req, int, 规则编号, range:[,], step:, unit:, unitType:-->0
    </ID>
    <FilterSize>
      <!--opt, object, 过滤尺寸-->
      <MaxTargetSize size="10">
        <!--opt, object, 最大目标尺寸, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinatesList size="10">
          <!--opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </MaxTargetSize>
      <MinTargetSize size="10">
        <!--opt, object, 最小目标尺寸, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinatesList size="10">
          <!--opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </MinTargetSize>
      <mode>
        <!--opt, enum, 模式, subType:string, [pixels#像素,actualSize#实际大小]-->pixels
      </mode>
      <strategy>
        <!--opt, enum, 策略, subType:string, [area#区域,widthHeight#宽高]-->area
      </strategy>
    </FilterSize>
    <priority>
      <!--opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
    </priority>
  </SmartCalibration>
</SmartCalibrationList>

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


人脸相关功能

1. 获取人脸比对能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceContrast/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceContrastCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人脸比对配置能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enable opt="true,false">
    <!--ro, opt, bool, 人脸比对功能使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <faceContrastType opt="faceContrast,blacklistFaceContrast,whitelistFaceContrast">
    <!--ro, opt, enum, 人脸比对类型, subType:string, [faceContrast#人脸比对,blacklistFaceContrast#非授权名单人脸比对,whitelistFaceContrast#授权名单人脸比对], attr:opt{req, string, 取值范围, range:[,]}-->faceContrast
  </faceContrastType>
  <thresholdValue min="1" max="10">
    <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:阈值越大检测准确率越高-->1
  </thresholdValue>
  <SupportFDLibList opt="true,false">
    <!--ro, opt, bool, 通道关联人连库列表, attr:opt{req, string, 取值范围, range:[,]}-->true
  </SupportFDLibList>
  <faceSnapDataUpload opt="true,false">
    <!--ro, opt, bool, 人脸抓拍上传, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceSnapDataUpload>
  <contrastFailureAlarmUpload opt="true,false">
    <!--ro, opt, bool, 人脸比对失败报警上传, attr:opt{req, string, 取值范围, range:[,]}, desc:默认为true-->true
  </contrastFailureAlarmUpload>
  <alarmOutType opt="off,pluses">
    <!--ro, opt, enum, 报警输出方式, subType:string, [off#关,pluses#脉冲], attr:opt{req, string, 取值范围, range:[,]}-->off
  </alarmOutType>
  <plusesTime min="100" max="900">
    <!--ro, opt, int, 脉冲时间, range:[,], step:, unit:ms, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </plusesTime>
  <isSupportSingleThresholdValue>
    <!--ro, opt, bool, 是否支持单阈值配置-->true
  </isSupportSingleThresholdValue>
  <contrastSuccessAlarmUpload opt="true,false">
    <!--ro, opt, bool, 授权名单人脸比对成功报警上传, attr:opt{req, string, 取值范围, range:[,]}-->true
  </contrastSuccessAlarmUpload>
  <isSupportFaceScore>
    <!--ro, opt, bool, 是否支持人脸评分-->true
  </isSupportFaceScore>
  <isSupportCustomFaceLibID>
    <!--ro, opt, bool, 表示是否支持集成客户自定义人脸库ID-->true
  </isSupportCustomFaceLibID>
  <LivenessDetection>
    <!--ro, req, bool, 活体人脸检测使能-->true
    <enable opt="true,false">
      <!--ro, opt, bool, 活体人脸检测使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enable>
  </LivenessDetection>
  <voiceEnabled>
    <!--ro, opt, bool, 是否支持比对抓拍时进行语音播报-->true
  </voiceEnabled>
  <faceSnapDataSave>
    <!--ro, opt, bool, 人脸抓拍保存到本地-->true
  </faceSnapDataSave>
  <AttendanceSaveEnable opt="true,false">
    <!--ro, opt, bool, 设备签到信息存储开关, attr:opt{req, string, 取值范围, range:[,]}-->true
  </AttendanceSaveEnable>
  <QuickContrast>
    <!--ro, opt, object, 人脸快速比对-->
    <enabled opt="true,false">
      <!--ro, opt, bool, 人脸快速比对使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <threshold min="20" max="80" def="60">
      <!--ro, opt, int, 人脸快速比对评分阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </threshold>
    <snapTime min="0.0" max="300.0" def="2.0">
      <!--ro, opt, float, 目标最长抓拍时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0.000
    </snapTime>
    <quickConfigMode opt="custom,faceSignIn,faceRecognition">
      <!--ro, opt, enum, 快速配置模式, subType:string, [custom#自定义模式,faceSignIn#人脸签到模式,faceRecognition#人脸抓拍模式,faceNaming#人脸点名模式], attr:opt{req, string, 取值范围, range:[,]}-->custom
    </quickConfigMode>
    <CustomCap>
      <!--ro, opt, object, 自定义模式配置参数能力, desc:quickConfigMode支持custom模式时需返回-->
      <timeOutMode opt="infinite,finite" def="finite">
        <!--ro, opt, enum, 比对超时时间模式, subType:string, [infinite#不限超时时间,finite#限制超时时间], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->infinite
      </timeOutMode>
      <timeOut min="1" max="99" default="1">
        <!--ro, opt, int, 比对超时时间, range:[1,99], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}, desc:当timeOutMode=finite生效-->1
      </timeOut>
      <duplicateContrastMode opt="success,infinite,finite" def="success">
        <!--ro, opt, enum, 重复比对次数模式, subType:string, [success#直到比对成功后结束比对,infinite#一直循环比对,finite#限制比对次数], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->success
      </duplicateContrastMode>
      <duplicateContrastTimes min="1" max="99" default="1">
        <!--ro, opt, int, 重复比对次数, range:[1,99], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}, desc:duplicateContrastMode=finite生效-->1
      </duplicateContrastTimes>
    </CustomCap>
    <FaceSignInCap>
      <!--ro, opt, object, 人脸签到模式设备参数展示能力, desc:quickConfigMode支持faceSignIn模式时需返回；该能力为设备内部参数展示,配置接口中无法进行配置-->
      <timeOutMode opt="infinite,finite" def="finite">
        <!--ro, opt, enum, 比对超时时间模式, subType:string, [infinite#不限超时时间,finite#限制超时时间], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->infinite
      </timeOutMode>
      <duplicateContrastMode opt="success,infinite,finite" def="success">
        <!--ro, opt, enum, 重复比对次数模式, subType:string, [success#直到比对成功后结束比对,infinite#一直循环比对,finite#限制比对次数], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->success
      </duplicateContrastMode>
    </FaceSignInCap>
    <FaceRecognitionCap>
      <!--ro, opt, object, 人脸抓拍模式设备参数展示能力, desc:quickConfigMode支持faceRecognition模式时需返回；该能力为设备内部参数展示,配置接口中无法进行配置-->
      <timeOutMode opt="infinite,finite" def="finite">
        <!--ro, opt, enum, 比对超时时间模式, subType:string, [infinite#不限超时时间,finite#限制超时时间], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->infinite
      </timeOutMode>
      <duplicateContrastMode opt="success,infinite,finite" def="success">
        <!--ro, opt, enum, 重复比对次数模式, subType:string, [success#直到比对成功后结束比对,infinite#一直循环比对,finite#限制比对次数], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->success
      </duplicateContrastMode>
    </FaceRecognitionCap>
    <FaceNamingCap>
      <!--ro, opt, object, 人脸点名模式设备参数展示能力, desc:quickConfigMode支持FaceNaming模式时需返回；该能力为设备内部参数展示,配置接口中无法进行配置-->
      <timeOutMode opt="infinite,finite" def="finite">
        <!--ro, opt, enum, 比对超时时间模式, subType:string, [infinite#不限超时时间,finite#限制超时时间], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->infinite
      </timeOutMode>
      <timeOut>
        <!--ro, opt, int, 比对超时时间, range:[1,99], step:, unit:s, unitType:时间, desc:当timeOutMode=finite生效-->1
      </timeOut>
      <duplicateContrastMode opt="success,infinite,finite" def="success">
        <!--ro, opt, enum, 重复比对次数模式, subType:string, [success#直到比对成功后结束比对,infinite#一直循环比对,finite#限制比对次数], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->success
      </duplicateContrastMode>
    </FaceNamingCap>
  </QuickContrast>
  <mixedTargetDetectionWithFaceContrast>
    <!--ro, opt, bool, 混合目标报警中带有人脸比对信息-->true
  </mixedTargetDetectionWithFaceContrast>
  <brokenNetHttp opt="true,false">
    <!--ro, opt, bool, 断网续传, attr:opt{req, string, 取值范围, range:[,]}-->true
  </brokenNetHttp>
  <relationId min="1" max="64">
    <!--ro, opt, string, 布防ID, range:[1,64], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </relationId>
  <alarmStorageEnable opt="true,false">
    <!--ro, opt, bool, 人脸比对报警存储使能, attr:opt{req, string, 取值范围, range:[,]}, desc:使能以后,会按照存储空间分配的大小存储报警信息,超过大小循环覆盖,关闭使能后,设备将不再存储,将无法查询报警信息。若不支持该字段设备也默认为开启存储-->true
  </alarmStorageEnable>
  <FaceContrast>
    <!--ro, opt, object, 人脸比对相关配置-->
    <linkageType opt="faceContrast,faceContrastSuccess,faceContrastFailure,faceContrastNonRealTime">
      <!--ro, opt, string, 联动方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:faceContrast-人脸比对（不区分成功和失败）,faceContrastSuccess-人脸比对成功,faceContrastFailure-人脸比对失败,faceContrastNonRealTime-非实时人脸比对（非实时模式下使用）；若设备返回faceContrastSuccess,faceContrastFailure,优先采用人脸比对成功和人脸比对失败方式-->test
    </linkageType>
  </FaceContrast>
  <realTimeContrast opt="true,false">
    <!--ro, opt, bool, 人脸实时比对使能, attr:opt{req, string, 取值范围, range:[,]}, desc:本字段不返回,默认开启实时比对-->true
  </realTimeContrast>
  <isSupportAnalysisTime>
    <!--ro, opt, bool, 是否支持开始分析时间配置, desc:仅非实时人脸比对模式下返回-->true
  </isSupportAnalysisTime>
  <contrastSuccessAlarmout opt="true,false">
    <!--ro, opt, bool, 人脸比对成功关联布防, attr:opt{req, string, 取值范围, range:[,]}-->true
  </contrastSuccessAlarmout>
  <contrastFailureAlarmout opt="true,false">
    <!--ro, opt, bool, 人脸比对失败关联布防, attr:opt{req, string, 取值范围, range:[,]}-->true
  </contrastFailureAlarmout>
  <removeDuplicateEnabled opt="true,false">
    <!--ro, opt, bool, 人脸比对去重使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </removeDuplicateEnabled>
  <removeDuplicateTime min="0.1" max="600.0" def="5.0">
    <!--ro, opt, float, 人脸比对去重时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0.000
  </removeDuplicateTime>
  <repetitionTime min="0" max="86400" def="2400">
    <!--ro, opt, int, 人脸去重时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:这个是人脸与其他智能,如客流统计结合使用,区别于聚类库的去重时间-->1
  </repetitionTime>
  <isSupportFaceSnap>
    <!--ro, opt, bool, 是否在人脸比对配置页面显示人脸抓拍配置, desc:后端M/FA系列产品为了简化界面,直接将人脸抓拍一些配置项合到人脸比对页面,通过此能力控制人脸比对配置页面是否显示人脸抓拍配置项,人脸抓拍配置接口仍然使用人脸抓拍配置接口,这只是一个页面显示控制能力,无其他作用-->true
  </isSupportFaceSnap>
  <topOverlayNameEnabled opt="true,false">
    <!--ro, opt, bool, 是否支持开启人脸抓拍头部叠加名字功能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </topOverlayNameEnabled>
  <personListShowEnabled opt="true,false">
    <!--ro, opt, bool, 是否支持开启人员名单效果展示功能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </personListShowEnabled>
  <refreshListTime min="1" max="10">
    <!--ro, opt, int, 人员名单刷新周期配置, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当personListShowEnabled 包含true时,该字段时有效-->1
  </refreshListTime>
  <personCountShowEnabled opt="true,false">
    <!--ro, opt, bool, 是否支持开启识别到的会议人数显示, attr:opt{req, string, 取值范围, range:[,]}-->true
  </personCountShowEnabled>
  <FaceROI>
    <!--ro, opt, object, 人脸ROI配置信息, desc:带宽受限时进行部分人脸优化-->
    <enabled opt="true,false">
      <!--ro, opt, bool, 是否开启人脸ROI开关, attr:opt{req, string, 取值范围, range:[,]}, desc:即带宽受限时进行部分人脸优化-->true
    </enabled>
    <level min="1" max="10">
      <!--ro, opt, int, 配置等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </level>
  </FaceROI>
  <supportFDLibNum min="1" max="10">
    <!--ro, opt, int, 通道关联人脸库个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:不同性能设备通道支持关联的人脸库个数不一样-->1
  </supportFDLibNum>
  <supportFDLibType opt="ordinary,private,stranger">
    <!--ro, opt, enum, 通道关联人脸库支持的人脸库类型, subType:string, [ordinary#普通库,private#私密库,stranger#陌生人库], attr:opt{req, string, 取值范围, range:[,]}-->ordinary
  </supportFDLibType>
  <uploadResultCount min="1" max="5">
    <!--ro, opt, int, 每个人脸比对报警中比对结果最大个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </uploadResultCount>
  <CombinationAlarmCap>
    <!--ro, opt, object, 组合报警能力, desc:仅当列表中的事件产生后，才触发人脸比对事件上报-->
    <EventTypeList size="10">
      <!--ro, opt, array, 事件类型列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <eventType>
        <!--ro, opt, enum, 事件类型, subType:string, [safetyHelmetDetection#安全帽检测]-->safetyHelmetDetection
      </eventType>
    </EventTypeList>
  </CombinationAlarmCap>
  <normalTemperatureAlarmout opt="true,false">
    <!--ro, opt, bool, 温度正常联动报警输出, attr:opt{req, string, 取值范围, range:[,]}-->true
  </normalTemperatureAlarmout>
  <abnormalTemperatureAlarmout opt="true,false">
    <!--ro, opt, bool, 温度异常联动报警输出, attr:opt{req, string, 取值范围, range:[,]}-->true
  </abnormalTemperatureAlarmout>
  <matchType opt="0,1">
    <!--ro, opt, enum, 比对报警模式, subType:int, [0#目标消失后报警,1#实时报警], attr:opt{req, string, 取值范围, range:[,]}-->0
  </matchType>
</FaceContrastCap>

2. 获取人脸比对配置

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceContrast

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceContrastList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, array, 人脸比对配置列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FaceContrast>
    <!--ro, opt, object, 人脸比对配置-->null
    <id>
      <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
    </id>
    <enable>
      <!--ro, opt, bool, 人脸比对功能使能-->true
    </enable>
    <faceContrastType>
      <!--ro, req, enum, 人脸比对类型, subType:string, [faceContrast#人脸比对,blacklistFaceContrast#非授权名单人脸比对,whitelistFaceContrast#授权名单人脸比对]-->faceContrast
    </faceContrastType>
    <thresholdValue>
      <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越高-->1
    </thresholdValue>
    <FDLibList>
      <!--ro, opt, array, 通道关联人连库列表, subType:object, range:[,]-->
      <FDLib>
        <!--ro, opt, object, 人脸库-->null
        <id>
          <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <FDID>
          <!--ro, req, string, 人脸比对库唯一标示ID, range:[,]-->test
        </FDID>
      </FDLib>
    </FDLibList>
    <faceSnapDataUpload>
      <!--ro, opt, bool, 人脸抓拍上传, desc:默认为true-->true
    </faceSnapDataUpload>
    <AttendanceSaveEnable>
      <!--ro, opt, bool, 设备签到信息存储开关, desc:默认为true-->true
    </AttendanceSaveEnable>
    <contrastFailureAlarmUpload>
      <!--ro, opt, bool, 人脸比对失败报警上传, desc:默认为true-->true
    </contrastFailureAlarmUpload>
    <alarmOutType>
      <!--ro, opt, enum, 报警输出方式, subType:string, [off#关,pluses#脉冲]-->off
    </alarmOutType>
    <plusesTime>
      <!--ro, opt, int, 脉冲时间, range:[,], step:, unit:ms, unitType:时间, desc:当alarmOutType为pluses时生效-->1
    </plusesTime>
    <contrastSuccessAlarmUpload>
      <!--ro, opt, bool, 授权名单人脸比对成功报警上传, desc:默认为false-->true
    </contrastSuccessAlarmUpload>
    <LivenessDetection>
      <!--ro, opt, object, 活体人脸检测-->
      <enable>
        <!--ro, req, bool, 活体人脸检测能使能-->true
      </enable>
    </LivenessDetection>
    <voiceEnabled>
      <!--ro, opt, bool, 是否支持比对抓拍时进行语音播报-->true
    </voiceEnabled>
    <faceSnapDataSave>
      <!--ro, opt, bool, 人脸抓拍保存到本地-->true
    </faceSnapDataSave>
    <QuickContrast>
      <!--ro, opt, object, 人脸快速比对-->
      <enabled>
        <!--ro, req, bool, 人脸快速比对使能-->true
      </enabled>
      <snapTime>
        <!--ro, req, float, 目标最长抓拍时间, range:[,], step:, unit:s, unitType:时间-->0.000
      </snapTime>
      <threshold>
        <!--ro, opt, int, 人脸快速比对评分阈值, range:[,], step:, unit:, unitType:-->1
      </threshold>
      <quickConfigMode>
        <!--ro, opt, enum, 快速配置模式, subType:string, [custom#自定义模式,faceSignIn#人脸签到模式,faceRecognition#人脸抓拍模式,faceNaming#人脸点名模式]-->custom
      </quickConfigMode>
      <Custom>
        <!--ro, opt, object, 自定义模式配置参数, desc:quickConfigMode=custom模式时生效-->
        <timeOutMode>
          <!--ro, opt, enum, 比对超时时间模式, subType:string, [infinite#不限超时时间,finite#限制超时时间]-->infinite
        </timeOutMode>
        <timeOut>
          <!--ro, opt, int, 比对超时时间, range:[1,99], step:, unit:s, unitType:时间, desc:当timeOutMode=finite生效-->1
        </timeOut>
        <duplicateContrastMode>
          <!--ro, opt, enum, 重复比对次数模式, subType:string, [success#直到比对成功后结束比对,infinite#一直循环比对,finite#限制比对次数]-->success
        </duplicateContrastMode>
        <duplicateContrastTimes>
          <!--ro, opt, int, 重复比对次数, range:[1,99], step:, unit:, unitType:, desc:duplicateContrastMode=finite生效-->1
        </duplicateContrastTimes>
      </Custom>
    </QuickContrast>
    <mixedTargetDetectionWithFaceContrast>
      <!--ro, opt, bool, 混合目标报警中带有人脸比对信息-->true
    </mixedTargetDetectionWithFaceContrast>
    <brokenNetHttp>
      <!--ro, opt, bool, 断网续传-->true
    </brokenNetHttp>
    <relationId>
      <!--ro, opt, string, 布防ID, range:[,]-->test
    </relationId>
    <alarmStorageEnable>
      <!--ro, opt, bool, 人脸比对报警存储使能, desc:,默认为true。使能以后,会按照存储空间分配的大小存储报警信息,超过大小循环覆盖,关闭使能后,设备将不再存储,将无法查询报警信息。若不支持该字段设备也默认为开启存储-->true
    </alarmStorageEnable>
    <realTimeContrast>
      <!--ro, opt, bool, 人脸实时比对使能, desc:本字段不返回,默认开启实时比对-->true
    </realTimeContrast>
    <analysisTime>
      <!--ro, opt, datetime, 开始分析时间, desc:仅在realTimeContrast为false时生效-->1970-01-01T00:00:00+08:00
    </analysisTime>
    <contrastSuccessAlarmout>
      <!--ro, opt, bool, 人脸比对成功关联布防, desc:默认为true-->true
    </contrastSuccessAlarmout>
    <contrastFailureAlarmout>
      <!--ro, opt, bool, 人脸比对失败关联布防, desc:默认为true-->true
    </contrastFailureAlarmout>
    <removeDuplicateEnabled>
      <!--ro, opt, bool, 人脸比对去重使能-->true
    </removeDuplicateEnabled>
    <removeDuplicateTime>
      <!--ro, opt, float, 人脸比对去重时间, range:[,], step:, unit:s, unitType:时间-->0.000
    </removeDuplicateTime>
    <repetitionTime>
      <!--ro, opt, int, 人脸去重时间, range:[,], step:, unit:, unitType:, desc:这个是人脸与其他智能,如客流统计结合使用,区别于聚类库的去重时间,配置为0,去重失效-->1
    </repetitionTime>
    <topOverlayNameEnabled>
      <!--ro, opt, bool, 是否开启人脸抓拍头部叠加名字功能-->true
    </topOverlayNameEnabled>
    <personListShowEnabled>
      <!--ro, opt, bool, 是否开启人员名单效果展示功能-->true
    </personListShowEnabled>
    <refreshListTime>
      <!--ro, opt, int, 人员名单刷新周期配置, range:[,], step:, unit:s, unitType:时间, desc:当personListShowEnabled 为true时,该字段时有效-->1
    </refreshListTime>
    <personCountShowEnabled>
      <!--ro, opt, bool, 是否开启识别到的会议人数显示-->true
    </personCountShowEnabled>
    <FaceROI>
      <!--ro, opt, object, 人脸ROI配置信息, desc:带宽受限时进行部分人脸优化-->
      <enabled>
        <!--ro, opt, bool, 是否开启人脸ROI开关-->true
      </enabled>
      <level>
        <!--ro, opt, int, 配置等级, range:[,], step:, unit:, unitType:-->1
      </level>
    </FaceROI>
    <uploadResultCount>
      <!--ro, opt, int, 每个人脸比对报警中比对结果最大个数, range:[,], step:, unit:, unitType:-->1
    </uploadResultCount>
    <normalTemperatureAlarmout>
      <!--ro, opt, bool, 温度正常联动报警输出-->true
    </normalTemperatureAlarmout>
    <abnormalTemperatureAlarmout>
      <!--ro, opt, bool, 温度异常联动报警输出-->true
    </abnormalTemperatureAlarmout>
    <matchType>
      <!--ro, opt, enum, 比对报警模式, subType:int, [0#目标消失后报警,1#实时报警]-->0
    </matchType>
  </FaceContrast>
</FaceContrastList>

3. 配置人脸比对配置

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/faceContrast

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceContrastList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--opt, array, 人脸比对配置列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FaceContrast>
    <!--opt, object, 人脸比对配置-->null
    <id>
      <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
    </id>
    <enable>
      <!--opt, bool, 人脸比对功能使能-->true
    </enable>
    <faceContrastType>
      <!--req, enum, 人脸比对类型, subType:string, [faceContrast#人脸比对,blacklistFaceContrast#非授权名单人脸比对,whitelistFaceContrast#授权名单人脸比对]-->faceContrast
    </faceContrastType>
    <thresholdValue>
      <!--opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越高-->1
    </thresholdValue>
    <FDLibList>
      <!--opt, array, 通道关联人连库列表, subType:object, range:[,]-->
      <FDLib>
        <!--opt, object, 人脸库-->null
        <id>
          <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <FDID>
          <!--req, string, 人脸比对库唯一标示ID, range:[,]-->test
        </FDID>
        <thresholdValue>
          <!--opt, int, 针对单个关联的人脸库的检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越高；如果总人脸库阈值启用后,那么单个人脸库阈值不作用-->1
        </thresholdValue>
        <customFaceLibID>
          <!--opt, string, 自定义人脸库ID, range:[,]-->test
        </customFaceLibID>
      </FDLib>
    </FDLibList>
    <faceSnapDataUpload>
      <!--opt, bool, 人脸抓拍上传, desc:默认为true-->true
    </faceSnapDataUpload>
    <AttendanceSaveEnable>
      <!--opt, bool, 设备签到信息存储开关, desc:默认为true-->true
    </AttendanceSaveEnable>
    <contrastFailureAlarmUpload>
      <!--opt, bool, 人脸比对失败报警上传, desc:默认为true-->true
    </contrastFailureAlarmUpload>
    <alarmOutType>
      <!--opt, enum, 报警输出方式, subType:string, [off#关,pluses#脉冲]-->off
    </alarmOutType>
    <plusesTime>
      <!--opt, int, 脉冲时间, range:[,], step:, unit:ms, unitType:时间, desc:当alarmOutType为pluses时生效-->1
    </plusesTime>
    <contrastSuccessAlarmUpload>
      <!--opt, bool, 授权名单人脸比对成功报警上传, desc:默认为false-->true
    </contrastSuccessAlarmUpload>
    <LivenessDetection>
      <!--opt, object, 活体人脸检测-->
      <enable>
        <!--req, bool, 活体人脸检测能使能-->true
      </enable>
    </LivenessDetection>
    <voiceEnabled>
      <!--opt, bool, 是否支持比对抓拍时进行语音播报-->true
    </voiceEnabled>
    <faceSnapDataSave>
      <!--opt, bool, 人脸抓拍保存到本地-->true
    </faceSnapDataSave>
    <QuickContrast>
      <!--opt, object, 人脸快速比对-->
      <enabled>
        <!--req, bool, 人脸快速比对使能-->true
      </enabled>
      <snapTime>
        <!--req, float, 目标最长抓拍时间, range:[,], step:, unit:s, unitType:时间-->0.000
      </snapTime>
      <threshold>
        <!--opt, int, 人脸快速比对评分阈值, range:[,], step:, unit:, unitType:-->1
      </threshold>
      <quickConfigMode>
        <!--opt, enum, 快速配置模式, subType:string, [custom#自定义模式,faceSignIn#人脸签到模式,faceRecognition#人脸抓拍模式,faceNaming#人脸点名模式]-->custom
      </quickConfigMode>
      <Custom>
        <!--opt, object, 自定义模式配置参数, desc:quickConfigMode=custom模式时生效-->
        <timeOutMode>
          <!--opt, enum, 比对超时时间模式, subType:string, [infinite#不限超时时间,finite#限制超时时间]-->infinite
        </timeOutMode>
        <timeOut>
          <!--opt, int, 比对超时时间, range:[1,99], step:, unit:s, unitType:时间, desc:当timeOutMode=finite生效-->1
        </timeOut>
        <duplicateContrastMode>
          <!--opt, enum, 重复比对次数模式, subType:string, [success#直到比对成功后结束比对,infinite#一直循环比对,finite#限制比对次数]-->success
        </duplicateContrastMode>
        <duplicateContrastTimes>
          <!--opt, int, 重复比对次数, range:[1,99], step:, unit:, unitType:, desc:duplicateContrastMode=finite生效-->1
        </duplicateContrastTimes>
      </Custom>
    </QuickContrast>
    <mixedTargetDetectionWithFaceContrast>
      <!--opt, bool, 混合目标报警中带有人脸比对信息-->true
    </mixedTargetDetectionWithFaceContrast>
    <brokenNetHttp>
      <!--opt, bool, 断网续传-->true
    </brokenNetHttp>
    <relationId>
      <!--opt, string, 布防ID, range:[,]-->test
    </relationId>
    <alarmStorageEnable>
      <!--opt, bool, 人脸比对报警存储使能, desc:,默认为true。使能以后,会按照存储空间分配的大小存储报警信息,超过大小循环覆盖,关闭使能后,设备将不再存储,将无法查询报警信息。若不支持该字段设备也默认为开启存储-->true
    </alarmStorageEnable>
    <realTimeContrast>
      <!--opt, bool, 人脸实时比对使能, desc:本字段不返回,默认开启实时比对-->true
    </realTimeContrast>
    <analysisTime>
      <!--opt, datetime, 开始分析时间, desc:仅在realTimeContrast为false时生效-->1970-01-01T00:00:00+08:00
    </analysisTime>
    <contrastSuccessAlarmout>
      <!--opt, bool, 人脸比对成功关联布防, desc:默认为true-->true
    </contrastSuccessAlarmout>
    <contrastFailureAlarmout>
      <!--opt, bool, 人脸比对失败关联布防, desc:默认为true-->true
    </contrastFailureAlarmout>
    <removeDuplicateEnabled>
      <!--opt, bool, 人脸比对去重使能-->true
    </removeDuplicateEnabled>
    <removeDuplicateTime>
      <!--opt, float, 人脸比对去重时间, range:[,], step:, unit:s, unitType:时间-->0.000
    </removeDuplicateTime>
    <repetitionTime>
      <!--opt, int, 人脸去重时间, range:[,], step:, unit:, unitType:, desc:这个是人脸与其他智能,如客流统计结合使用,区别于聚类库的去重时间,配置为0,去重失效-->1
    </repetitionTime>
    <topOverlayNameEnabled>
      <!--opt, bool, 是否开启人脸抓拍头部叠加名字功能-->true
    </topOverlayNameEnabled>
    <personListShowEnabled>
      <!--opt, bool, 是否开启人员名单效果展示功能-->true
    </personListShowEnabled>
    <refreshListTime>
      <!--opt, int, 人员名单刷新周期配置, range:[,], step:, unit:s, unitType:时间, desc:当personListShowEnabled 为true时,该字段时有效-->1
    </refreshListTime>
    <personCountShowEnabled>
      <!--opt, bool, 是否开启识别到的会议人数显示-->true
    </personCountShowEnabled>
    <FaceROI>
      <!--opt, object, 人脸ROI配置信息, desc:带宽受限时进行部分人脸优化-->
      <enabled>
        <!--opt, bool, 是否开启人脸ROI开关-->true
      </enabled>
      <level>
        <!--opt, int, 配置等级, range:[,], step:, unit:, unitType:-->1
      </level>
    </FaceROI>
    <uploadResultCount>
      <!--opt, int, 每个人脸比对报警中比对结果最大个数, range:[,], step:, unit:, unitType:-->1
    </uploadResultCount>
    <normalTemperatureAlarmout>
      <!--opt, bool, 温度正常联动报警输出-->true
    </normalTemperatureAlarmout>
    <abnormalTemperatureAlarmout>
      <!--opt, bool, 温度异常联动报警输出-->true
    </abnormalTemperatureAlarmout>
    <matchType>
      <!--opt, enum, 比对报警模式, subType:int, [0#目标消失后报警,1#实时报警]-->0
    </matchType>
  </FaceContrast>
</FaceContrastList>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取人脸比对联动方式配置

4.1 命令

GET /ISAPI/Event/triggers/faceContrast-<channelID>

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceContrast-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->faceContrast
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

5. 配置人脸比对联动方式配置

5.1 命令

PUT /ISAPI/Event/triggers/faceContrast-<channelID>

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceContrast-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->faceContrast
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取人脸比对成功联动方式配置

6.1 命令

GET /ISAPI/Event/triggers/faceContrastSuccess-<channelID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceContrastSuccess-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->faceContrastSuccess
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

7. 配置人脸比对成功联动方式配置

7.1 命令

PUT /ISAPI/Event/triggers/faceContrastSuccess-<channelID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceContrastSuccess-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->faceContrastSuccess
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取人脸比对失败联动方式配置

8.1 命令

GET /ISAPI/Event/triggers/faceContrastFailure-<channelID>

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceContrastFailure-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->faceContrastFailure
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

9. 配置人脸比对失败联动方式配置

9.1 命令

PUT /ISAPI/Event/triggers/faceContrastFailure-<channelID>

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceContrastFailure-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->faceContrastFailure
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取授权名单人脸比对联动方式配置

10.1 命令

GET /ISAPI/Event/triggers/whiteListFaceContrast-<channelID>

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->whiteListFaceContrast-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->whiteListFaceContrast
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

11. 配置授权名单人脸比对联动方式配置

11.1 命令

PUT /ISAPI/Event/triggers/whiteListFaceContrast-<channelID>

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->whiteListFaceContrast-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->whiteListFaceContrast
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, 设备本地IO口号, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字通道IO口号, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取人脸库联动配置

12.1 命令

GET /ISAPI/Event/triggers/faceLib-<channelID>/<FDID>

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceLib-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->faceLib
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入通道ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入通道ID, range:[,]-->1
  </dynInputIOPortID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->1
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->1
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

13. 配置人脸库联动配置

13.1 命令

PUT /ISAPI/Event/triggers/faceLib-<channelID>/<FDID>

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceLib-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->faceLib
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入通道ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入通道ID, range:[,]-->1
  </dynInputIOPortID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->1
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->1
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取人脸比对单个通道时间布防配置

14.1 命令

GET /ISAPI/Event/schedules/faceContrast/faceContrast-<channelID>

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->faceContrast-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->faceContrast
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

15. 配置人脸比对单个通道时间布防配置

15.1 命令

PUT /ISAPI/Event/schedules/faceContrast/faceContrast-<channelID>

15.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->faceContrast-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->faceContrast
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

16. 获取授权名单人脸比对单个通道时间布防配置

16.1 命令

GET /ISAPI/Event/schedules/whiteListFaceContrast/whiteListFaceContrast-<channelID>

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->whiteListFaceContrast-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->whiteListFaceContrast
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

17. 配置授权名单人脸比对单个通道时间布防配置

17.1 命令

PUT /ISAPI/Event/schedules/whiteListFaceContrast/whiteListFaceContrast-<channelID>

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->whiteListFaceContrast-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->whiteListFaceContrast
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取人脸库单个通道时间布防参数

18.1 命令

GET /ISAPI/Event/schedules/faceLib/<channelID>/<FDID>?FDType=<FDType>

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->faceLib-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->faceLib
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

19. 配置人脸库单个通道时间布防参数

19.1 命令

PUT /ISAPI/Event/schedules/faceLib/<channelID>/<FDID>?FDType=<FDType>

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->faceLib-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->faceLib
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取人脸库总能力

20.1 命令

GET /ISAPI/Intelligent/FDLib/capabilities

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人脸库能力对象, attr:version{opt, string, xml版本, range:[,]}-->
  <CreateFDLibList size="15">
    <!--ro, req, array, 人脸库能力对象数组, subType:object, range:[,], attr:size{opt, string, 人脸库能力对象数组大小, range:[,]}-->
    <CreateFDLib>
      <!--ro, req, object, 人脸库能力对象-->
      <id max="15" min="1">
        <!--ro, req, int, 人脸库个数范围能力, range:[1,15], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->10
      </id>
      <name max="64" min="1">
        <!--ro, req, string, 人脸库名称长度能力, range:[1,64], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->64
      </name>
      <thresholdValue max="100" min="0" def="60">
        <!--ro, opt, int, 人脸库检测阈值范围能力, range:[0,100], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:阈值越大检测准确率越低-->50
      </thresholdValue>
      <customInfo max="128" min="1">
        <!--ro, opt, string, 人脸库自定义描述长度能力, range:[1,128], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->128
      </customInfo>
      <faceDataMax max="150000" min="1">
        <!--ro, opt, int, 人脸库最大支持人脸底图张数能力, range:[1,150000], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->30000
      </faceDataMax>
      <customFaceLibID max="64" min="1">
        <!--ro, opt, string, 人脸库自定义ID长度能力, range:[1,64], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->64
      </customFaceLibID>
      <PersonInfoExtendList size="128">
        <!--ro, opt, array, 人脸底图扩展信息对象数组能力, subType:object, range:[,], attr:size{opt, string, 数组大小, range:[,]}-->
        <PersonInfoExtend>
          <!--ro, opt, object, 人脸底图扩展信息对象能力-->
          <id max="15000" min="1">
            <!--ro, req, int, 扩展信息序号范围能力, range:[1,15000], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->30000
          </id>
          <enable opt="true,false">
            <!--ro, req, bool, 扩展信息使能能力, attr:opt{opt, string, 可选项, range:[,]}-->true
          </enable>
          <name max="128" min="1">
            <!--ro, opt, string, 扩展信息名称长度能力, range:[1,128], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->128
          </name>
          <value max="256" min="1">
            <!--ro, opt, string, 扩展信息内容长度能力, range:[1,256], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->256
          </value>
        </PersonInfoExtend>
      </PersonInfoExtendList>
      <indentityKey max="64" min="0">
        <!--ro, opt, string, 人脸私密库秘钥描述长度, range:[1,64], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->64
      </indentityKey>
      <autoUpdata opt="true,false">
        <!--ro, opt, bool, 人脸库聚类自动更新底图数据使能能力, attr:opt{opt, string, 可选值, range:[,]}, desc:自动更新只支持true时，表示人脸库聚类自动更新功能默认开启，不支持关闭。-->true
      </autoUpdata>
      <qualityThreshold max="100" min="0">
        <!--ro, opt, int, 人脸库聚类底图图片质量范围能力, range:[0,100], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}, desc:当<autoUpdata>=true时生效-->50
      </qualityThreshold>
      <importFDThreshold max="100" min="0">
        <!--ro, opt, int, 人脸库聚类自动入库相似度阈值范围能力, range:[0,100], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}, desc:当<autoUpdata>=true时生效-->40
      </importFDThreshold>
      <FaceCounting>
        <!--ro, req, object, 人脸库比对客流统计去重对象能力-->
        <enabled opt="true,false">
          <!--ro, req, bool, 人脸客流去重使能能力, attr:opt{opt, string, 可选值, range:[,]}-->true
        </enabled>
        <uploadType opt="out_repetition,noUpload">
          <!--ro, req, enum, 人脸客流去重开启后的上报模式能力, subType:string, [out_repetition#去重时间段外上报,noUpload#去重时间段外不上报], attr:opt{opt, string, 未定义, range:[,]}-->noUpload
        </uploadType>
      </FaceCounting>
      <strangerLibNum max="1" min="2">
        <!--ro, opt, int, 陌生人脸库数目范围能力, range:[1,2], step:, unit:, unitType:, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}, desc:陌生人库数目,注：可创建的人脸库数目= CreateFDLibList节点的size属性值- strangerLibNum节点的max属性值-->1
      </strangerLibNum>
    </CreateFDLib>
  </CreateFDLibList>
  <FaceAppendData>
    <!--ro, opt, object, 人脸库底图数据扩展对象能力-->
    <bornTime>
      <!--ro, opt, date, 人员出生日期-->1970-01-01+08:00
    </bornTime>
    <name max="64" min="1">
      <!--ro, opt, string, 人员姓名描述长度, range:[1,64], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->64
    </name>
    <sex opt="male,female">
      <!--ro, opt, enum, 人员性别, subType:string, [male#男,female#女], attr:opt{opt, string, 未定义, range:[,]}-->male
    </sex>
    <province>
      <!--ro, opt, string, 省份, range:[,]-->01
    </province>
    <city>
      <!--ro, opt, string, 城市, range:[,]-->01
    </city>
    <certificateType opt="ID,passportID,other">
      <!--ro, opt, enum, 证件类型能力, subType:string, [ID#身份证,passportID#护照,other#其他], attr:opt{opt, string, 未定义, range:[,]}-->ID
    </certificateType>
    <certificateNumber max="32" min="1">
      <!--ro, opt, string, 证件号长度能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->32
    </certificateNumber>
    <PersonInfoExtendList size="128">
      <!--ro, opt, array, 人脸底图扩展信息对象数组能力, subType:object, range:[,], attr:size{opt, string, 未定义, range:[,]}, desc:返回即表示支持对应URI(/ISAPI/Intelligent/FDLib/pictureUpload)-->
      <PersonInfoExtend>
        <!--ro, opt, object, 人脸底图扩展信息对象能力-->
        <id max="15000" min="1">
          <!--ro, req, int, 扩展信息序号范围能力, range:[1,15000], step:, unit:, unitType:, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->30000
        </id>
        <enable opt="true,false">
          <!--ro, req, bool, 扩展信息使能能力, attr:opt{opt, string, 未定义, range:[,]}-->true
        </enable>
        <name max="128" min="1">
          <!--ro, opt, string, 扩展信息名称长度能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->128
        </name>
        <value max="256" min="1">
          <!--ro, opt, string, 扩展信息内容长度能力, range:[1,256], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->256
        </value>
      </PersonInfoExtend>
    </PersonInfoExtendList>
    <isSupportPhoneNumber>
      <!--ro, opt, bool, 是否支持电话号码能力-->true
    </isSupportPhoneNumber>
    <isSupportImagesURLImport>
      <!--ro, opt, bool, 人脸库底图数据异步导入（通过URI）能力-->true
    </isSupportImagesURLImport>
    <customHumanID max="128" min="1">
      <!--ro, opt, string, 自定义人脸底图人员ID能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->64
    </customHumanID>
    <faceDescribe max="128" min="1">
      <!--ro, opt, string, 人脸底图描述信息能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->128
    </faceDescribe>
    <RegionCoordinatesList size="4">
      <!--ro, opt, array, 人脸目标, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--ro, req, object, 人脸目标区域-->
        <positionX min="0" max="1000">
          <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </positionX>
        <positionY min="0" max="1000">
          <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
    <IMSIList size="5">
      <!--ro, opt, array, IMSI列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
      <IMSI min="1" max="15">
        <!--ro, opt, string, IMSI号码, range:[1,15], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->123456789012345
      </IMSI>
    </IMSIList>
  </FaceAppendData>
  <FDSearchDescription>
    <!--ro, opt, object, 人脸库搜索对象能力-->
    <searchID max="63" min="1">
      <!--ro, opt, string, 搜索ID, range:[,], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]},
desc:搜索记录唯一标识,用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度);
        min/max按照设备实际能力返回,不返回默认:min=1 max=63-->63
    </searchID>
    <searchResultPosition>
      <!--ro, opt, int, 搜索起始位置, range:[,], step:, unit:, unitType:, desc:该节点未返回,确认<isSupportStandardSearch>存在并且为true,默认从0开始,未返回则默认从1开始-->1
    </searchResultPosition>
    <maxResults>
      <!--ro, opt, int, 本次查询条数, range:[,], step:, unit:, unitType:, desc:单次搜索范围为1-500条,如果超过设备实际支持的单次最大查询条数,设备默认返回单次最大查询条数结果;该节点未返回默认是1-500条-->30
    </maxResults>
    <FDID>
      <!--ro, opt, string, 人脸库ID, range:[,]-->1
    </FDID>
    <startTime>
      <!--ro, opt, datetime, 人脸库人员出生开始时间-->1970-01-01T00:00:00+08:00
    </startTime>
    <endTime>
      <!--ro, opt, datetime, 人脸库人员出生结束时间-->1970-01-01T00:00:00+08:00
    </endTime>
    <name max="64" min="1">
      <!--ro, opt, string, 人员姓名, range:[,], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->64
    </name>
    <sex opt="male,female">
      <!--ro, opt, enum, 人员性别, subType:string, [male#男,female#女], attr:opt{opt, string, 未定义, range:[,]}-->male
    </sex>
    <province>
      <!--ro, opt, string, 省份, range:[,]-->01
    </province>
    <city>
      <!--ro, opt, string, 城市, range:[,]-->01
    </city>
    <certificateType opt="ID,passportID,other">
      <!--ro, opt, enum, 证件类型能力, subType:string, [ID#身份证,passportID#护照,other#其他], attr:opt{opt, string, 未定义, range:[,]}-->ID
    </certificateType>
    <certificateNumber max="32" min="1">
      <!--ro, opt, string, 证件号长度能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->32
    </certificateNumber>
    <FaceModeCap>
      <!--ro, opt, object, 以图索图对象能力-->
      <FaceMode>
        <!--ro, opt, object, 人脸模型-->
        <similarity max="100.0" min="0.0">
          <!--ro, opt, float, 相似度, range:[,], step:, unit:, unitType:, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->50.0
        </similarity>
      </FaceMode>
      <maxResultNum>
        <!--ro, opt, int, 最大返回结果数目, range:[,], step:, unit:, unitType:-->30
      </maxResultNum>
    </FaceModeCap>
    <modelStatus opt="modeling,unmodeled,modelingFailed">
      <!--ro, opt, enum, 人脸库底图建模状态, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败], attr:opt{opt, string, 可选值, range:[,]}-->modeling
    </modelStatus>
    <modelingStatus opt="success,failed,none">
      <!--ro, opt, enum, 人脸库底图建模结果, subType:string, [success#建模成功,failed#建模失败,none#无], attr:opt{opt, string, 可选值, range:[,]}-->success
    </modelingStatus>
    <customFaceLibID max="64" min="0">
      <!--ro, opt, string, 人脸库自定义ID长度能力, range:[1,64], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->64
    </customFaceLibID>
    <indentityKey max="64" min="0">
      <!--ro, opt, string, 人脸库私密库秘钥长度能力, range:[,], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->64
    </indentityKey>
    <occurrences max="30" min="1">
      <!--ro, opt, int, 人员频次能力范围, range:[,], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->30
    </occurrences>
    <occurrencesSearchType opt="greaterThanOrEqual,lessThan,equal">
      <!--ro, opt, enum, 频次检索方式, subType:string, [greaterThanOrEqual#大于等于,lessThan#小于,equal#等于], attr:opt{opt, string, 可选值, range:[,]}, desc:当occurrences 字段返回时,该字段才能返回-->greaterThanOrEqual
    </occurrencesSearchType>
    <faceScore min="-1" max="100">
      <!--ro, opt, int, 人脸评分, range:[-1,100], step:, unit:, unitType:, attr:min{opt, string, 最小值, range:[,]},max{opt, string, 最大值, range:[,]}, desc:有效值[0-100],-1表示评分未知（未对该人脸评分）-->-1
    </faceScore>
    <isSupportFDIDList>
      <!--ro, opt, array, 是否支持多库以图搜图, subType:object, range:[,], desc:对应/ISAPI/Intelligent/FDLib/FDSearch中支持FDIDList-->
    </isSupportFDIDList>
    <FaceScoreRange>
      <!--ro, opt, object, 人脸评分范围-->
      <min min="0" max="100">
        <!--ro, req, int, 人脸评分范围最小值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </min>
      <max min="0" max="100">
        <!--ro, req, int, 人脸评分范围最大值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </max>
    </FaceScoreRange>
    <pictureStatus opt="normal,abnormal">
      <!--ro, opt, string, 人脸图片状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:正常人脸，异常人脸（建模失败+人脸评分为低+图片url下载失败的,此搜索结果是设备根据当前算法识别效果提供的评判标准,异常图片可能影响人脸抓拍和比对的效果,如果为异常图片的,建议更换图片，后期随着算法准确率的提提升,此判断标准可能发生变化，因此此判断标准结果仅供参考-->test
    </pictureStatus>
    <sortord opt="similarity,time,contrastSuccessTime,count">
      <!--ro, opt, enum, 排序主键, subType:string, [count#比对成功次数,contrastSuccessTime#比对成功时间,time#入库时间,similarity#相似度排序], attr:opt{req, string, 取值范围, range:[,]}, desc:"similarity",相似度排序,能力是后期加的，之前的设备可能不会返回该节点-->count
    </sortord>
    <order opt="DESC,ASC">
      <!--ro, opt, string, 搜索结果排序类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:DESC:顺序,最晚入库最先展示；ASC：逆序,最早入库最先展示;默认:DESC-->test
    </order>
    <importStartTime>
      <!--ro, opt, datetime, 入库开始时间-->1970-01-01T00:00:00+08:00
    </importStartTime>
    <importEndTime>
      <!--ro, opt, datetime, 入库结束时间-->1970-01-01T00:00:00+08:00
    </importEndTime>
    <IMSIList size="5">
      <!--ro, opt, array, IMSI列表(输出), subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
      <IMSIItem>
        <!--ro, opt, object, IMSI采集信息-->
        <IMSI min="1" max="15">
          <!--ro, opt, string, IMSI号码, range:[1,15], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->123456789012345
        </IMSI>
        <count min="1">
          <!--ro, opt, int, 比中次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:}-->10
        </count>
        <lastFMTime>
          <!--ro, opt, datetime, 最近比对成功时间-->1970-01-01T00:00:00+08:00
        </lastFMTime>
      </IMSIItem>
    </IMSIList>
    <lastFMTime>
      <!--ro, opt, datetime, 最近比对成功时间（输出）-->1970-01-01T00:00:00+08:00
    </lastFMTime>
    <faceContrastSuccessStartTime>
      <!--ro, opt, datetime, 人脸比对成功开始时间, desc:支持确认某段时间内监控场景有哪些人出现过。配合使用的查询条件：人脸库ID(FDID，包括：动态库、允许库、静态库)、排序类型（sortord）、排序顺序（order）-->1970-01-01T00:00:00+08:00
    </faceContrastSuccessStartTime>
    <faceContrastSuccessEndTime>
      <!--ro, opt, datetime, 人脸比对成功结束时间, desc:支持确认某段时间内监控场景有哪些人出现过。配合使用的查询条件：人脸库ID(FDID，包括：动态库，允许库、静态库)、排序类型（sortord）、排序顺序（order）-->1970-01-01T00:00:00+08:00
    </faceContrastSuccessEndTime>
  </FDSearchDescription>
  <isSuportAnalysisFace>
    <!--ro, opt, bool, 是否支持分析人脸-->true
  </isSuportAnalysisFace>
  <isSuportFDLibImpEmp opt="true,false">
    <!--ro, opt, bool, 是否支持人脸库导入导出, attr:opt{opt, string, 可选值, range:[,]}-->true
  </isSuportFDLibImpEmp>
  <isSuportFCSearch opt="true,false">
    <!--ro, opt, bool, 是否支持人脸抓拍库检索, attr:opt{opt, string, 可选值, range:[,]}-->true
  </isSuportFCSearch>
  <FDLibType opt="faceContrast,blacklistFaceContrast,whitelistFaceContrast">
    <!--ro, opt, enum, 人脸比对类型, subType:string, [faceContrast#人脸比对,blacklistFaceContrast#非授权名单人脸比对,whitelistFaceContrast#授权名单人脸比对], attr:opt{opt, string, 可选值, range:[,]}-->faceContrast
  </FDLibType>
  <isSupportFDLibEachImport>
    <!--ro, opt, bool, 人脸库相互导入底图数据-->true
  </isSupportFDLibEachImport>
  <FCSearchDescription>
    <!--ro, opt, object, 人脸抓拍库搜索对象能力-->
    <searchID max="63" min="1">
      <!--ro, opt, string, 搜索ID, range:[,], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->63
    </searchID>
    <searchResultPosition>
      <!--ro, opt, int, 搜索起始位置;该节点未返回, range:[,], step:, unit:, unitType:-->1
    </searchResultPosition>
    <maxResults>
      <!--ro, opt, int, 本次查询条数, range:[,], step:, unit:, unitType:-->30
    </maxResults>
    <snapStartTime>
      <!--ro, opt, datetime, ISO8601 time-->1970-01-01T00:00:00+08:00
    </snapStartTime>
    <snapEndTime>
      <!--ro, opt, datetime, ISO8601 time-->1970-01-01T00:00:00+08:00
    </snapEndTime>
    <faceMatchInfoEnable opt="true,false">
      <!--ro, opt, bool, 检索比对成功数据, attr:opt{opt, string, 可选项, range:[,]}-->true
    </faceMatchInfoEnable>
    <monitorName max="1" min="2">
      <!--ro, opt, string, 监控点名称, range:[,], attr:max{opt, string, 字符串长度最大值, range:[,]},min{opt, string, 字符串长度最小值, range:[,]}-->1
    </monitorName>
    <similarity max="100.0" min="0.0">
      <!--ro, opt, float, 相似度, range:[,], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->50.0
    </similarity>
    <eventType opt="unlimit,faceContrast,whiteFaceContrast,faceCapture,faceContrastFailure">
      <!--ro, opt, enum, 人脸抓拍事件类型, subType:string, [unlimit#不限,faceContrast#人脸比对,whiteFaceContrast#授权名单人脸比对（即陌生人报警),faceCapture#人脸抓拍,faceContrastFailure#比对失败], attr:opt{opt, string, 未定义, range:[,]}-->unlimit
    </eventType>
    <FaceModeCap>
      <!--ro, opt, object, 以图索图对象能力-->
      <FaceMode>
        <!--ro, opt, object, 人脸模型-->
        <similarity max="100.0" min="0.0">
          <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->50.0
        </similarity>
      </FaceMode>
      <maxResultNum>
        <!--ro, opt, int, 最大返回结果数目, range:[,], step:, unit:, unitType:, desc:抓拍库的容量可能非常大,检索时间较长,对于远程检索时更加明显,为了提高检索性能,限制检索的样本数和检索的结果数-->30
      </maxResultNum>
    </FaceModeCap>
    <PictureSearchCap>
      <!--ro, req, object, 支持按图片ID检索时返回-->
      <maxSearchPictureNum max="1" min="1">
        <!--ro, opt, int, 最大支持检索图片数目, range:[,], step:, unit:, unitType:, attr:max{opt, string, 最大值, range:[,]},min{opt, string, 最小值, range:[,]}-->50
      </maxSearchPictureNum>
    </PictureSearchCap>
    <isSupportMultiChannelSearch>
      <!--ro, opt, bool, 是否支持多通道检索-->null
    </isSupportMultiChannelSearch>
    <isSupportTotalSearchResult>
      <!--ro, opt, bool, 是否支持设备单次检索条数限制-->null
    </isSupportTotalSearchResult>
    <thermometryUnit opt="celsius,fahrenheit,kelvin">
      <!--ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文], attr:opt{req, string, 取值范围, range:[,]}-->celsius
    </thermometryUnit>
    <currTemperature min="-20.0" max="150.0℃">
      <!--ro, opt, float, 人脸温度, range:[-20.0,150.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:与thermometryUnit测温单位配合使用-->-20.0
    </currTemperature>
    <temperatureCondition opt="normal,abnormal,all,above">
      <!--ro, opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部,above#温度高于], attr:opt{req, string, 取值范围, range:[,]}, desc:温度高于用于指定高于具体温度值搜索，温度值参数temperatureValue-->normal
    </temperatureCondition>
    <temperatureValue>
      <!--ro, opt, float, 温度值, range:[-20,105], step:, unit:℃, unitType:温度, dep:and,{$.FDLibCap.FCSearchDescription.temperatureCondition,eq,above}-->37.2
    </temperatureValue>
    <IMSIList size="5">
      <!--ro, opt, array, IMSI列表(输出), subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
      <IMSI min="1" max="15">
        <!--ro, opt, string, IMSI号码, range:[1,15], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->123456789012345
      </IMSI>
    </IMSIList>
  </FCSearchDescription>
  <isSupportFDSearchDataPackage>
    <!--ro, opt, bool, 是否支持人脸库搜索数据打包-->true
  </isSupportFDSearchDataPackage>
  <isSupportFCSearchDataPackage>
    <!--ro, opt, bool, 是否支持人脸检索结果打包-->true
  </isSupportFCSearchDataPackage>
  <maxFCSearchDataPackageNum>
    <!--ro, opt, int, 最大支持人脸检索结果打包数目, range:[,], step:, unit:, unitType:-->50
  </maxFCSearchDataPackageNum>
  <isSupportFDExecuteControl>
    <!--ro, opt, bool, 是否支持人脸库布防关系-->true
  </isSupportFDExecuteControl>
  <isSupportManualModeling>
    <!--ro, opt, bool, 是否支持建模控制-->true
  </isSupportManualModeling>
  <isSupportSingleManualModeling>
    <!--ro, opt, bool, 是否支持单一建模-->true
  </isSupportSingleManualModeling>
  <isSupportRangeManualModeling>
    <!--ro, opt, bool, 是否支持整体建模-->true
  </isSupportRangeManualModeling>
  <isSupportSingleManualModelingSearch>
    <!--ro, opt, bool, 是否支持单一建模查询-->true
  </isSupportSingleManualModelingSearch>
  <isSupportRangeManualModelingSearch>
    <!--ro, opt, bool, 是否支持整体建模控制-->true
  </isSupportRangeManualModelingSearch>
  <isSupportModelingStatusSearch>
    <!--ro, opt, bool, 是否支持建模状态条件查询-->true
  </isSupportModelingStatusSearch>
  <Reboot>
    <!--ro, opt, object, 需要提示重启设备生效的具体参数内容-->
    <thresholdValue>
      <!--ro, opt, bool, 人脸库阈值修改后需要设备重启生效-->true
    </thresholdValue>
    <delFaceLib>
      <!--ro, opt, bool, 删除人脸库后需要重启设备生效-->true
    </delFaceLib>
  </Reboot>
  <isSupportCoverImportpictures>
    <!--ro, opt, bool, 表示是否支持图片覆盖式导入-->true
  </isSupportCoverImportpictures>
  <isSupportCoverImportFaceLib>
    <!--ro, opt, bool, 表示是否支持人脸库覆盖式导入-->true
  </isSupportCoverImportFaceLib>
  <isSupportConcurrentImportpictures>
    <!--ro, opt, bool, 表示是否支持图片并发式导入-->true
  </isSupportConcurrentImportpictures>
  <isSupportSurplusCapacity>
    <!--ro, opt, bool, 表示是否支持指定人脸库中剩余人脸图片张数查询-->true
  </isSupportSurplusCapacity>
  <isSupportFDlibProgress>
    <!--ro, opt, bool, 表示是否支持人脸库导入导出状态查询-->true
  </isSupportFDlibProgress>
  <isSupportFDlibPhotoWall>
    <!--ro, opt, bool, 表示是否支持4200业务显示照片能力-->true
  </isSupportFDlibPhotoWall>
  <isSupportFDCoverInfo>
    <!--ro, opt, bool, 表示是否支持获取指定人脸库导入会覆盖的人脸图片张数-->true
  </isSupportFDCoverInfo>
  <isSupportStandardSearch>
    <!--ro, opt, bool, 该节点用于给4200兼容前后协议实现不一致,
desc:当前前端实现和协议不一致,后续修改如下：
      responseStatus都返回为true,matchList和matchElement首字母都大写,和协议保持一致。
      包括人脸库搜索/ISAPI/Intelligent/FDLib/FDSearch,人脸比对搜索/ISAPI/Intelligent/FDLib/FCSearch,人脸模型状态搜索,searchResultPosition修改为从0开始-->true
  </isSupportStandardSearch>
  <isSupportFaceDataExport>
    <!--ro, opt, bool, 表示支持人脸库中数据是否支持导出-->true
  </isSupportFaceDataExport>
  <isSupportNewlyPictureUpload>
    <!--ro, opt, bool, 是否支持导入图片到人脸库, desc:用于设备端兼容大图片导入-->true
  </isSupportNewlyPictureUpload>
  <isSupportFCSearchNormal>
    <!--ro, opt, bool, 是否支持人脸数据全部检索, desc:用于4200采用ISAPI协议搜索人脸结果,普通人脸全部检索,以前如果不带搜索条件,即默认搜索所有时,会走NET_DVR_SmartSearchPicture接口获取图片-->true
  </isSupportFCSearchNormal>
  <FDLibEachImportCap>
    <!--ro, opt, object, 人脸库相互导入能力-->
    <isSupportImportLib>
      <!--ro, opt, bool, 是否支持整个库导入-->true
    </isSupportImportLib>
    <isSupportImportLibPicture>
      <!--ro, opt, bool, 是否支持人脸库指定图片导入-->true
    </isSupportImportLibPicture>
  </FDLibEachImportCap>
  <isSupportPrompt>
    <!--ro, opt, bool, 是否支持提示语自定义, desc:如果支持,对应支持URL(/ISAPI/Intelligent/FDLib/prompt/capabilities?format=json),再通过该URL可以判断具体支持的功能-->true
  </isSupportPrompt>
  <isSupportCustomHumanID>
    <!--ro, opt, bool, 表示是否支持集成客户自定义人员ID-->true
  </isSupportCustomHumanID>
  <isSupportCustomFaceLibID>
    <!--ro, opt, bool, 表示是否支持集成客户自定义人脸库ID-->true
  </isSupportCustomFaceLibID>
  <isSupportFCSearchAttendancePackage>
    <!--ro, opt, bool, 人脸比对签到文件导出-->true
  </isSupportFCSearchAttendancePackage>
  <isSupportFCSearchJsonFormat>
    <!--ro, opt, bool, 支持人脸比对报警信息查询json格式能力, desc:如果支持,对应支持URL(/ISAPI/Intelligent/FDLib/FCSearch/capabilities?format=json),再通过该URL可以判断具体支持的功能-->true
  </isSupportFCSearchJsonFormat>
  <isSupportFCSearchDataPackageJsonFormat>
    <!--ro, opt, bool, 支持人脸比对报警信息打包json格式能力, desc:如果支持,对应支持URL(POST /ISAPI/Intelligent/FDLib/FCSearch/dataPackage?format=json)-->true
  </isSupportFCSearchDataPackageJsonFormat>
  <isSupportFDCapacity>
    <!--ro, opt, bool, 表示是否支持获取人脸库容量-->true
  </isSupportFDCapacity>
  <SupportUploadPictureType opt="binary,url">
    <!--ro, opt, enum, 表示支持的导入图片类型, subType:string, [binary#二进制,url#url], attr:opt{opt, string, 未定义, range:[,]}, desc:不返回,默认为二进制-->binary
  </SupportUploadPictureType>
  <isSupportNoSaveUploadPicture>
    <!--ro, opt, bool, 支持不保存上传原图的操作-->true
  </isSupportNoSaveUploadPicture>
  <isSupportUploadModeling>
    <!--ro, opt, bool, 支持直接上传图片建模数据-->true
  </isSupportUploadModeling>
  <SupportUploadPictureUrlType opt="ipAddress,domain">
    <!--ro, opt, enum, 表示支持的以URL方式导入图片到人脸库URL类型, subType:string, [ipAddress#ip地址,domain#域名], attr:opt{opt, string, 未定义, range:[,]}, desc:不返回,默认为ip地址方式-->ipAddress
  </SupportUploadPictureUrlType>
  <isSptFDLibBatchFileManage>
    <!--ro, opt, bool, 支持人脸数据文件批量管理-->true
  </isSptFDLibBatchFileManage>
  <importImageSize max="300" min="1">
    <!--ro, opt, int, 支持导入JPG/JPEG图片的大小, range:[,], step:, unit:KB, unitType:信息量, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->30
  </importImageSize>
  <isSupportUpdateHumanID>
    <!--ro, opt, bool, 是否支持更新自定义人员ID, desc:/ISAPI/Intelligent/FDLib/<FDID>/updateHumanId?format=json-->true
  </isSupportUpdateHumanID>
  <FDModelingStatusSearchDescription>
    <!--ro, opt, object, 任务ID-->
    <searchID max="63" min="1">
      <!--ro, opt, string, 搜索ID, range:[,], attr:max{opt, string, searchID, range:[0,64], desc:无},min{opt, string, 未定义, range:[,]},
desc:搜索记录唯一标识,用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度);
        min/max按照设备实际能力返回,不返回默认:min=1 max=63-->searchIDtest
    </searchID>
    <searchResultPosition>
      <!--ro, opt, int, 搜索起始位置;该节点未返回, range:[,], step:, unit:, unitType:, desc:该节点未返回,确认<isSupportStandardSearch>存在并且为"true",默认从0开始,未返回则默认从1开始-->30
    </searchResultPosition>
    <maxResults>
      <!--ro, opt, int, 本次查询条数, range:[,], step:, unit:, unitType:, desc:单次搜索范围为1-500条,如果超过设备实际支持的单次最大查询条数,设备默认返回单次最大查询条数结果;该节点未返回默认是1-500条-->30
    </maxResults>
    <FDIDList>
      <!--ro, req, array, 设备支持人脸库中建模数据的查询的人脸库ID, subType:object, range:[,]-->
    </FDIDList>
    <taskID max="64" min="1">
      <!--ro, opt, string, 任务ID, range:[,], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}, desc:设备优先实现taskID,URL(/ISAPI/Intelligent/FDLib/manualModelingRangeTask 或者/ISAPI/Intelligent/FDLib/manualModeling?FDID=&&PID=),该节点返回-->64
    </taskID>
  </FDModelingStatusSearchDescription>
  <StrangerLibFaceAppendData>
    <!--ro, opt, object, 陌生人库支持人脸属性信息-->
    <PersonInfoExtendList size="128">
      <!--ro, opt, array, 人脸底图扩展信息对象数组能力, subType:object, range:[,], attr:size{opt, string, 未定义, range:[,]}, desc:返回即表示支持对应URI(/ISAPI/Intelligent/FDLib/pictureUpload)-->
      <PersonInfoExtend>
        <!--ro, opt, object, 人脸底图扩展信息对象能力-->
        <id max="15000" min="1">
          <!--ro, req, int, 扩展信息序号范围能力, range:[1,15000], step:, unit:, unitType:, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->30000
        </id>
        <enable opt="true,false">
          <!--ro, req, bool, 扩展信息使能能力, attr:opt{opt, string, 未定义, range:[,]}-->true
        </enable>
        <name max="128" min="1">
          <!--ro, opt, string, 扩展信息名称长度能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->128
        </name>
        <value max="256" min="1">
          <!--ro, opt, string, 扩展信息内容长度能力, range:[1,256], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->256
        </value>
      </PersonInfoExtend>
    </PersonInfoExtendList>
  </StrangerLibFaceAppendData>
  <StrangerLibFDSearchDescription>
    <!--ro, opt, object, 陌生人脸库对象能力-->
    <FDID>
      <!--ro, opt, string, 人脸比对库唯一标示ID, range:[,]-->1
    </FDID>
    <PersonInfoExtendList size="128">
      <!--ro, opt, array, 人脸底图扩展信息对象数组能力, subType:object, range:[,], attr:size{opt, string, 未定义, range:[,]}, desc:返回即表示支持对应URI(/ISAPI/Intelligent/FDLib/pictureUpload)-->
      <PersonInfoExtend>
        <!--ro, opt, object, 人脸底图扩展信息对象能力-->
        <id max="15000" min="1">
          <!--ro, req, int, 扩展信息序号范围能力, range:[1,15000], step:, unit:, unitType:, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->30000
        </id>
        <enable opt="true,false">
          <!--ro, req, bool, 扩展信息使能能力, attr:opt{opt, string, 未定义, range:[,]}-->true
        </enable>
        <name max="128" min="1">
          <!--ro, opt, string, 扩展信息名称长度能力, range:[1,128], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->128
        </name>
        <value max="256" min="1">
          <!--ro, opt, string, 扩展信息内容长度能力, range:[1,256], attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->256
        </value>
      </PersonInfoExtend>
    </PersonInfoExtendList>
    <occurrences max="30" min="1">
      <!--ro, opt, int, 人员频次能力范围, range:[,], step:, unit:, unitType:, attr:max{opt, string, 未定义, range:[,]},min{opt, string, 未定义, range:[,]}-->30
    </occurrences>
    <occurrencesSearchType opt="greaterThanOrEqual,lessThan,equal">
      <!--ro, opt, enum, 频次检索方式, subType:string, [greaterThanOrEqual#大于等于,lessThan#小于,equal#等于], attr:opt{opt, string, 未定义, range:[,]}, desc:当occurrences 字段返回时,该字段才能返回-->greaterThanOrEqual
    </occurrencesSearchType>
  </StrangerLibFDSearchDescription>
  <isSupportOccurrencesData>
    <!--ro, opt, bool, 支持直接获取图片频次信息, desc:对应协议/ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>/occurrenceData?format=json-->true
  </isSupportOccurrencesData>
  <isSupportCopyFaceRecord>
    <!--ro, opt, bool, 是否支持人脸记录复制-->true
  </isSupportCopyFaceRecord>
  <isSupportConferenceSmartCheck>
    <!--ro, opt, bool, 是否支持人脸签到任务配置-->true
  </isSupportConferenceSmartCheck>
  <isSupportControlSmartCheck>
    <!--ro, opt, bool, 是否支持人脸签到任务控制-->true
  </isSupportControlSmartCheck>
  <isSupportSmartCheckStatus>
    <!--ro, opt, bool, 是否支持人脸签到状态获取-->true
  </isSupportSmartCheckStatus>
  <isSupportSmartClockIn>
    <!--ro, opt, bool, 是否支持人脸考勤任务配置-->true
  </isSupportSmartClockIn>
  <isSupportControlSmartClockIn>
    <!--ro, opt, bool, 是否支持人脸考勤任务控制-->true
  </isSupportControlSmartClockIn>
  <isSupportSmartClockInStatus>
    <!--ro, opt, bool, 是否支持人脸考勤状态获取-->true
  </isSupportSmartClockInStatus>
  <isSupportSmartClockInTemplate>
    <!--ro, opt, bool, 是否支持人脸考勤模板配置-->true
  </isSupportSmartClockInTemplate>
  <isSupportFaceLibFormat>
    <!--ro, opt, bool, 支持人脸库格式化, desc:对应URL(/ISAPI/Intelligent/FDLib/format?format=json)-->true
  </isSupportFaceLibFormat>
  <isSupportSurplusCapacityALL>
    <!--ro, opt, bool, 是否支持全部人脸库容量查询, desc:对应url为/ISAPI/Intelligent/FDLib/surplusCapacity?format=json-->true
  </isSupportSurplusCapacityALL>
  <importImageSize min="1" max="300">
    <!--ro, opt, int, 支持导入JPG/JPEG图片的大小, range:[10,100], step:, unit:, unitType:, attr:min{opt, string, 最小图片大小, range:[,]},max{opt, string, 最大图片大小, range:[,]}-->10
  </importImageSize>
  <AsyncImportCap>
    <!--ro, opt, object, 单个数据文件大小范围-->
    <singleFileMaxFaceNum max="100">
      <!--ro, opt, int, 单个文件的最大人脸数量, range:[,], step:, unit:, unitType:, attr:max{opt, string, 单个文件的最大人脸数量, range:[,]}-->100
    </singleFileMaxFaceNum>
    <singleFileMaxSize max="100">
      <!--ro, opt, int, 单个数据文件大小范围, range:[,], step:, unit:KB, unitType:信息量, attr:max{opt, int, 单个数据文件大小范围, range:[,], step:, unit:, unitType:}, desc:单位:kb-->100
    </singleFileMaxSize>
  </AsyncImportCap>
  <isSupportAsyncImportData>
    <!--ro, opt, bool, 是否支持人脸库异步导入数据, desc:对应URL（/ISAPI/Intelligent/FDLib/asyncImportDatas/capabilities?format=json）-->true
  </isSupportAsyncImportData>
  <isSupportTaskStatusSearch>
    <!--ro, opt, bool, 是否支持人脸库异步导入任务状态查询, desc:对应URL（/ISAPI/Intelligent/FDLib/asyncImportDatasTasks?format=json）-->true
  </isSupportTaskStatusSearch>
  <SyncDeletePicNum max="10">
    <!--ro, opt, int, 支持单次同步删除人脸图片数量, range:[,], step:, unit:, unitType:, attr:max{opt, int, 单次同步删除图片最大数量, range:[,], step:, unit:, unitType:}-->1
  </SyncDeletePicNum>
  <isSupportPICCertification>
    <!--ro, opt, bool, 是否支持云存储（非武汉云）URI鉴URI权限鉴权, desc:对应URL（/ISAPI/Intelligent/FDLib/PICCertification?format=json）-->true
  </isSupportPICCertification>
  <deleteOriginalPicEnabled opt="true,false">
    <!--ro, opt, bool, 导入后不保存原始图片使能, attr:opt{opt, string, 可选项, range:[,]}-->true
  </deleteOriginalPicEnabled>
  <isSupportFaceScore>
    <!--ro, opt, bool, 是否支持人脸评分详情查询, desc:对应接口/ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>/faceScore?format=json-->true
  </isSupportFaceScore>
  <ImportDetails>
    <!--ro, opt, object, 人脸库整库导入能力, desc:对应URL /ISAPI/Intelligent/FDLib/<FDID>/importDetails-->
    <checkCode min="0" max="16">
      <!--ro, req, string, 文件头加密密码（只存在第一包数据中）, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </checkCode>
    <concurrentRequest>
      <!--ro, opt, int, 并发请求数, range:[,], step:, unit:, unitType:-->1
    </concurrentRequest>
    <chunkSize min="1024" max="2048">
      <!--ro, opt, int, 每个分包的大小, range:[,], step:, unit:KB, unitType:信息量, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:KB, unitType:信息量}-->1
    </chunkSize>
  </ImportDetails>
  <ExportDetails>
    <!--ro, opt, object, 人脸库整库导出能力, desc:对应URL /ISAPI/Intelligent/FDLib/<FDID>/exportDetails-->
    <checkCode min="0" max="16">
      <!--ro, req, string, 文件加密密码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </checkCode>
    <GUID min="1" max="36">
      <!--ro, req, string, 导出时的唯一标识GUID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </GUID>
    <concurrentRequest>
      <!--ro, opt, int, 并发请求数, range:[,], step:, unit:, unitType:-->1
    </concurrentRequest>
  </ExportDetails>
</FDLibCap>

21. 创建人脸库

21.1 命令

POST /ISAPI/Intelligent/FDLib

21.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<CreateFDLibList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 创建人脸库信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <CreateFDLib>
    <!--opt, object, 创建人脸库-->
    <id>
      <!--opt, int, 表示list中子项个数;从1开始赋值;依次增加, range:[1,15], step:, unit:, unitType:-->1
    </id>
    <name>
      <!--req, string, 人脸库名称, range:[1,64]-->faceLib1
    </name>
    <thresholdValue>
      <!--opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:-->50
    </thresholdValue>
    <customInfo>
      <!--opt, string, 人脸库附加信息, range:[1,128]-->test
    </customInfo>
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[1,64]-->test
    </customFaceLibID>
    <autoUpdata>
      <!--opt, bool, 人脸库自动更新库中底图使能-->true
    </autoUpdata>
    <qualityThreshold>
      <!--opt, int, 图片质量阈值, range:[0,100], step:, unit:, unitType:-->50
    </qualityThreshold>
    <importFDThreshold>
      <!--opt, int, 入库相似度阈值, range:[0,100], step:, unit:, unitType:-->40
    </importFDThreshold>
    <FaceCounting>
      <!--opt, object, 人脸库比对客流统计去重配置-->
      <enabled>
        <!--req, bool, 人脸客流去重是否开启-->true
      </enabled>
      <uploadType>
        <!--ro, req, enum, 人脸客流去重开启后的上报模式, subType:string, [out_repetition#去重时间段外上报,noUpload#去重时间段外不上报]-->noUpload
      </uploadType>
    </FaceCounting>
  </CreateFDLib>
</CreateFDLibList>

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 人脸库创建结果列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FDLibInfo>
    <!--ro, opt, object, 人脸库信息-->
    <id>
      <!--ro, req, int, 表示list中子项个数;从1开始赋值;依次增加;和<CreateFDLibList>中的id一一对应, range:[,], step:, unit:, unitType:-->1
    </id>
    <name>
      <!--ro, req, string, 人脸库名称, range:[1,64]-->faceLib1
    </name>
    <FDID>
      <!--ro, req, string, 人脸比对库唯一标示ID;批量处理时若有部分创建失败;则返回creatFailed, range:[1,64]-->test
    </FDID>
    <statusCode>
      <!--ro, opt, enum, 状态码;人脸库创建失败时返回, subType:int, [0#ok,1#ok,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->1
    </statusCode>
    <subStatusCode>
      <!--ro, opt, string, 子错误码;人脸库创建失败时返回, range:[,]-->existSameNameFacelib
    </subStatusCode>
  </FDLibInfo>
</FDLibInfoList>

22. 删除单个人脸库

22.1 命令

DELETE /ISAPI/Intelligent/FDLib/<FDID>

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

23. 删除所有人脸库

23.1 命令

DELETE /ISAPI/Intelligent/FDLib

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

24. 获取人脸比对库全部配置

24.1 命令

GET /ISAPI/Intelligent/FDLib

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibBaseCfgList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 人脸库信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FDLibBaseCfg>
    <!--ro, opt, object, 人脸库信息-->
    <id>
      <!--ro, opt, int, 表示list中子项个数;从1开始赋值;依次增加, range:[1,15], step:, unit:, unitType:-->1
    </id>
    <FDID>
      <!--ro, opt, string, 表示人脸库唯一ID, range:[,]-->test
    </FDID>
    <name>
      <!--ro, req, string, 人脸库名称, range:[1,64]-->faceLib1
    </name>
    <thresholdValue>
      <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:-->50
    </thresholdValue>
    <customInfo>
      <!--ro, opt, string, 人脸库附加信息, range:[1,128]-->test
    </customInfo>
    <customFaceLibID>
      <!--ro, opt, string, 自定义人脸库ID, range:[1,64]-->test
    </customFaceLibID>
    <faceLibType>
      <!--ro, opt, enum, 人脸库类型, subType:string, [ordinary#普通库,private#私密库,stranger#陌生人库,allowable#允许库]-->ordinary
    </faceLibType>
    <autoUpdata>
      <!--ro, opt, bool, 人脸库自动更新库中底图使能, desc:若能力集中autoUpdata只支持true,表示人脸库自动更新功能默认开启，不支持关闭-->true
    </autoUpdata>
    <qualityThreshold>
      <!--ro, opt, int, 图片质量阈值, range:[0,100], step:, unit:, unitType:-->50
    </qualityThreshold>
    <importFDThreshold>
      <!--ro, opt, int, 入库相似度阈值, range:[0,100], step:, unit:, unitType:-->40
    </importFDThreshold>
    <FaceCounting>
      <!--ro, opt, object, 人脸库比对客流统计去重配置-->
      <enabled>
        <!--ro, req, bool, 人脸客流去重是否开启-->true
      </enabled>
      <uploadType>
        <!--ro, req, enum, 人脸客流去重开启后的上报模式, subType:string, [out_repetition#去重时间段外上报,noUpload#去重时间段外不上报]-->noUpload
      </uploadType>
    </FaceCounting>
    <faceMonitor>
      <!--ro, opt, bool, 是否是智能人脸布防的人脸库-->true
    </faceMonitor>
    <monitorFaceNum>
      <!--ro, opt, int, 布防人脸支持的人脸最大个数, range:[,], step:, unit:, unitType:-->1
    </monitorFaceNum>
    <customNoConfig>
      <!--ro, opt, bool, 人员布防模式下, desc:返回为true-自定义库web不可配置,协议可以配置,web限制不可配置,不支持不返回-->true
    </customNoConfig>
    <uploadID>
      <!--ro, opt, string, 自学习人脸库人脸比对布防订阅上传策略ID;平台自己确保唯一性, range:[1,128], dep:and,{$.FDLibBaseCfglist.FDLibBaseCfg.autoUpdata,eq,true}, desc:autoUpdata=true时有效,因为自学习人脸库报警，对于不同的平台来说，报警结果是不一样的，因为A平台有这个人脸库，所以比对成功，对于B平台没有此人脸库，则应该属于比对失败,所以需要新增布防订阅上传策略ID，-->test
    </uploadID>
  </FDLibBaseCfg>
</FDLibBaseCfgList>

25. 配置人脸比对库全部配置

25.1 命令

PUT /ISAPI/Intelligent/FDLib

25.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibBaseCfgList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 人脸库信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FDLibBaseCfg>
    <!--opt, object, 人脸库信息-->
    <id>
      <!--opt, int, 表示list中子项个数;从1开始赋值;依次增加, range:[1,15], step:, unit:, unitType:-->1
    </id>
    <FDID>
      <!--opt, string, 表示人脸库唯一ID, range:[,]-->test
    </FDID>
    <name>
      <!--req, string, 人脸库名称, range:[1,64]-->faceLib1
    </name>
    <thresholdValue>
      <!--opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:-->50
    </thresholdValue>
    <customInfo>
      <!--opt, string, 人脸库附加信息, range:[1,128]-->test
    </customInfo>
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[1,64]-->test
    </customFaceLibID>
    <faceLibType>
      <!--ro, opt, enum, 人脸库类型, subType:string, [ordinary#普通库,private#私密库,stranger#陌生人库,allowable#允许库]-->allowable
    </faceLibType>
    <autoUpdata>
      <!--opt, bool, 人脸库自动更新库中底图使能, desc:若能力集中autoUpdata只支持true,表示人脸库自动更新功能默认开启，不支持关闭-->true
    </autoUpdata>
    <qualityThreshold>
      <!--opt, int, 图片质量阈值, range:[0,100], step:, unit:, unitType:-->50
    </qualityThreshold>
    <importFDThreshold>
      <!--opt, int, 入库相似度阈值, range:[0,100], step:, unit:, unitType:-->40
    </importFDThreshold>
    <FaceCounting>
      <!--opt, object, 人脸库比对客流统计去重配置-->
      <enabled>
        <!--req, bool, 人脸客流去重是否开启-->true
      </enabled>
      <uploadType>
        <!--ro, req, enum, 人脸客流去重开启后的上报模式, subType:string, [out_repetition#去重时间段外上报,noUpload#去重时间段外不上报]-->noUpload
      </uploadType>
    </FaceCounting>
    <faceMonitor>
      <!--ro, opt, bool, 是否是智能人脸布防的人脸库-->true
    </faceMonitor>
    <monitorFaceNum>
      <!--ro, opt, int, 布防人脸支持的人脸最大个数, range:[,], step:, unit:, unitType:-->1
    </monitorFaceNum>
    <customNoConfig>
      <!--ro, opt, bool, 人员布防模式下, desc:返回为true-自定义库web不可配置,协议可以配置,web限制不可配置,不支持不返回-->true
    </customNoConfig>
    <uploadID>
      <!--opt, string, 自学习人脸库人脸比对布防订阅上传策略ID;平台自己确保唯一性, range:[1,128], dep:and,{$.FDLibBaseCfglist.FDLibBaseCfg.autoUpdata,eq,true}, desc:autoUpdata=true时有效,因为自学习人脸库报警，对于不同的平台来说，报警结果是不一样的，因为A平台有这个人脸库，所以比对成功，对于B平台没有此人脸库，则应该属于比对失败,所以需要新增布防订阅上传策略ID，-->test
    </uploadID>
  </FDLibBaseCfg>
</FDLibBaseCfgList>

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

26. 获取单个人脸库参数

26.1 命令

GET /ISAPI/Intelligent/FDLib/<FDID>

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibBaseCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人脸库基础信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, opt, int, 索引, range:[,], step:, unit:, unitType:-->1
  </id>
  <FDID>
    <!--ro, opt, string, 人脸库唯一ID, range:[,]-->test
  </FDID>
  <name>
    <!--ro, opt, string, 人脸库名称, range:[,]-->test
  </name>
  <thresholdValue>
    <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:-->1
  </thresholdValue>
  <customInfo>
    <!--ro, opt, string, 自定义信息, range:[,]-->test
  </customInfo>
  <customFaceLibID>
    <!--ro, opt, string, 自定义人脸库ID, range:[,]-->test
  </customFaceLibID>
  <faceLibType>
    <!--ro, opt, enum, 人脸库类型, subType:string, [ordinary#普通库,private#私密库,stranger#陌生人库,allowable#允许库]-->ordinary
  </faceLibType>
  <autoUpdata>
    <!--ro, opt, bool, 人脸库自动更新库中底图使能, desc:若能力集中autoUpdata只支持true,表示人脸库自动更新功能默认开启，不支持关闭-->true
  </autoUpdata>
  <qualityThreshold>
    <!--ro, opt, int, 图片质量阈值, range:[0,100], step:, unit:, unitType:, desc:当<autoUpdata>=true时生效-->1
  </qualityThreshold>
  <importFDThreshold>
    <!--ro, opt, int, 入库相似度阈值, range:[0,100], step:, unit:, unitType:, desc:当<autoUpdata>=true时生效-->1
  </importFDThreshold>
  <FaceCounting>
    <!--ro, opt, object, 人脸统计-->
    <enabled>
      <!--ro, req, bool, 人脸客流去重是否开启-->true
    </enabled>
    <uploadType>
      <!--ro, req, string, 人脸客流去重开启后的上报模式, range:[,]-->test
    </uploadType>
  </FaceCounting>
  <faceMonitor>
    <!--ro, opt, bool, 是否是智能人脸布防的人脸库-->true
  </faceMonitor>
  <monitorFaceNum>
    <!--ro, opt, bool, 布防人脸支持的人脸最大个数-->true
  </monitorFaceNum>
  <customNoConfig>
    <!--ro, opt, bool, 自定义库web不可配置使能, desc:仅人员布防模式下有效-->true
  </customNoConfig>
</FDLibBaseCfg>

27. 配置单个人脸库参数

27.1 命令

PUT /ISAPI/Intelligent/FDLib/<FDID>

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibBaseCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人脸库基础信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--opt, int, 索引, range:[,], step:, unit:, unitType:-->1
  </id>
  <FDID>
    <!--opt, string, 人脸库唯一ID, range:[,]-->test
  </FDID>
  <name>
    <!--opt, string, 人脸库名称, range:[,]-->test
  </name>
  <thresholdValue>
    <!--opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:-->1
  </thresholdValue>
  <customInfo>
    <!--opt, string, 自定义信息, range:[,]-->test
  </customInfo>
  <customFaceLibID>
    <!--opt, string, 自定义人脸库ID, range:[,]-->test
  </customFaceLibID>
  <faceLibType>
    <!--opt, enum, 人脸库类型, subType:string, [ordinary#普通库,private#私密库,stranger#陌生人库,allowable#允许库]-->ordinary
  </faceLibType>
  <autoUpdata>
    <!--opt, bool, 人脸库自动更新库中底图使能, desc:若能力集中autoUpdata只支持true,表示人脸库自动更新功能默认开启，不支持关闭-->true
  </autoUpdata>
  <qualityThreshold>
    <!--opt, int, 图片质量阈值, range:[0,100], step:, unit:, unitType:, desc:当<autoUpdata>=true时生效-->1
  </qualityThreshold>
  <importFDThreshold>
    <!--opt, int, 入库相似度阈值, range:[0,100], step:, unit:, unitType:, desc:当<autoUpdata>=true时生效-->1
  </importFDThreshold>
  <FaceCounting>
    <!--opt, object, 人脸统计-->
    <enabled>
      <!--req, bool, 人脸客流去重是否开启-->true
    </enabled>
    <uploadType>
      <!--req, string, 人脸客流去重开启后的上报模式, range:[,]-->test
    </uploadType>
  </FaceCounting>
  <faceMonitor>
    <!--opt, bool, 是否是智能人脸布防的人脸库-->true
  </faceMonitor>
  <monitorFaceNum>
    <!--opt, bool, 布防人脸支持的人脸最大个数-->true
  </monitorFaceNum>
  <customNoConfig>
    <!--opt, bool, 自定义库web不可配置使能, desc:仅人员布防模式下有效-->true
  </customNoConfig>
</FDLibBaseCfg>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 获取人员标签信息扩展能力

28.1 命令

GET /ISAPI/Intelligent/faceContrast/personInfoExtend/capabilities

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonInfoExtendList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <PersonInfoExtend>
    <!--ro, opt, object, 未定义-->
    <id min="1" max="10">
      <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:从1开始赋值,依次增加-->1
    </id>
    <enable>
      <!--ro, req, bool, 人员扩展信息使能-->true
    </enable>
    <name min="1" max="10">
      <!--ro, opt, string, 人员标签信息扩展名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </name>
    <value min="1" max="10">
      <!--ro, opt, string, 人员标签信息扩展内容, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </value>
  </PersonInfoExtend>
</PersonInfoExtendList>

29. 获取人员标签信息扩展配置

29.1 命令

GET /ISAPI/Intelligent/faceContrast/personInfoExtend

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonInfoExtendList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <PersonInfoExtend>
    <!--ro, opt, object, 未定义-->
    <id>
      <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
    </id>
    <enable>
      <!--ro, req, bool, 人员扩展信息使能-->true
    </enable>
    <name>
      <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
    </name>
    <value>
      <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
    </value>
  </PersonInfoExtend>
</PersonInfoExtendList>

30. 配置人员标签信息扩展配置

30.1 命令

PUT /ISAPI/Intelligent/faceContrast/personInfoExtend

30.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonInfoExtendList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <PersonInfoExtend>
    <!--opt, object, 未定义-->
    <id>
      <!--req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
    </id>
    <enable>
      <!--req, bool, 人员扩展信息使能-->true
    </enable>
    <name>
      <!--opt, string, 人员标签信息扩展名称, range:[,]-->test
    </name>
    <value>
      <!--opt, string, 人员标签信息扩展内容, range:[,]-->test
    </value>
  </PersonInfoExtend>
</PersonInfoExtendList>

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

31. 获取指定人脸库的人员标签信息扩展配置

31.1 命令

GET /ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<FDID>

31.2 输入参数

无

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonInfoExtendList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 人员扩展信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <PersonInfoExtend>
    <!--ro, opt, object, 人员扩展信息-->
    <id>
      <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
    </id>
    <enable>
      <!--ro, req, bool, 人员扩展信息使能-->true
    </enable>
    <name>
      <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
    </name>
    <value>
      <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
    </value>
  </PersonInfoExtend>
</PersonInfoExtendList>

32. 配置指定人脸库的人员标签信息扩展配置

32.1 命令

PUT /ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<FDID>

32.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonInfoExtendList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 人员扩展信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <PersonInfoExtend>
    <!--opt, object, 人员扩展信息-->
    <id>
      <!--req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
    </id>
    <enable>
      <!--req, bool, 人员扩展信息使能-->true
    </enable>
    <name>
      <!--opt, string, 人员标签信息扩展名称, range:[,]-->test
    </name>
    <value>
      <!--opt, string, 人员标签信息扩展内容, range:[,]-->test
    </value>
  </PersonInfoExtend>
</PersonInfoExtendList>

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

33. 查询人脸图片数据

33.1 命令

POST /ISAPI/Intelligent/FDLib/FDSearch

33.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FDSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询描述, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <FDID>
    <!--opt, string, 人脸比对库唯一标示ID, range:[,]-->test
  </FDID>
  <startTime>
    <!--opt, date, 人脸库人员出生开始时间-->1970-01-01+08:00
  </startTime>
  <endTime>
    <!--opt, date, 人脸库人员出生结束时间-->1970-01-01+08:00
  </endTime>
  <name>
    <!--req, string, 姓名, range:[1,32]-->test
  </name>
  <sex>
    <!--opt, enum, 性别, subType:string, [male#男,female#女]-->male
  </sex>
  <province>
    <!--opt, string, 省份, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </province>
  <city>
    <!--opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </city>
  <certificateType>
    <!--opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他]-->ID
  </certificateType>
  <certificateNumber>
    <!--opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
  </certificateNumber>
  <phoneNumber>
    <!--opt, string, 电话号码, range:[1,64]-->test
  </phoneNumber>
  <FaceModeList>
    <!--opt, array, 人脸模型信息列表, subType:object, range:[,]-->
    <FaceMode>
      <!--opt, object, 人脸模型-->
      <ModeInfo>
        <!--opt, object, 模型数据, desc:以图搜图时<ModeInfo>字段必填-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModeInfo>
    </FaceMode>
  </FaceModeList>
  <modelStatus>
    <!--opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
  </modelStatus>
  <modelingStatus>
    <!--opt, string, 建模状态, range:[,], desc:success-建模成功,failed-建模失败,none-尚未建模；支持复选；后续使用这个字段,modelStatus将会去除-->success,failed,none
  </modelingStatus>
  <customFaceLibID>
    <!--opt, string, 自定义人脸库ID, range:[,], desc:当FDID和customFaceLibID同时存在时，以customFaceLibID为准-->test
  </customFaceLibID>
  <sortord>
    <!--opt, enum, 搜索结果排序类型, subType:string, [time#入库时间,contrastSuccessTime#比对成功时间,count#比对成功次数]-->time
  </sortord>
  <order>
    <!--opt, enum, 搜索结果排序方式, subType:string, [DESC#最晚入库最先展示,ASC#最早入库最先展示], desc:默认:DESC-->DESC
  </order>
  <StrangerLibFaceAppendData>
    <!--opt, object, 陌生人库支持人脸属性信息-->
    <PersonInfoExtendList size="4">
      <!--opt, array, 人员扩展信息列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <PersonInfoExtend>
        <!--opt, object, 人员扩展信息-->
        <id>
          <!--req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
        </id>
        <enable>
          <!--req, bool, 人员扩展信息使能-->true
        </enable>
        <name>
          <!--opt, string, 人员标签信息扩展名称, range:[,]-->test
        </name>
        <value>
          <!--opt, string, 人员标签信息扩展内容, range:[,]-->test
        </value>
      </PersonInfoExtend>
    </PersonInfoExtendList>
  </StrangerLibFaceAppendData>
  <OccurrencesInfo>
    <!--opt, object, 频次信息-->
    <enabled>
      <!--req, bool, 频次是否返回-->true
    </enabled>
    <occurrences>
      <!--opt, int, 频次, range:[,], step:, unit:, unitType:, desc:达到最低频次的人脸库图片才返回,当enabled为true时必须存在-->1
    </occurrences>
    <occurrencesSearchType>
      <!--opt, enum, 频次检索方式, subType:string, [greaterThanOrEqual#大于等于,lessThan#小于,equal#等于], desc:当enabled为true时必须存在-->greaterThanOrEqual
    </occurrencesSearchType>
  </OccurrencesInfo>
  <faceScore>
    <!--opt, int, 人脸评分, range:[-1,100], step:, unit:, unitType:, desc:-1表示评分未知（未对该人脸评分）-->1
  </faceScore>
  <FDIDList>
    <!--opt, object, 人脸库列表, desc:支持查询多个人脸库搜索,理论上FDID和FDIDList是互斥的，若用户同时下发，则以FDIDList为准-->
    <FDID>
      <!--req, string, 人脸库ID, range:[1,64]-->test
    </FDID>
  </FDIDList>
  <faceScoreMax>
    <!--opt, int, 人脸评分范围最大值, range:[-1,100], step:, unit:, unitType:, desc:有效值[0-100],-1表示评分未知（未对该人脸评分）,该节点可以和faceScore组合，此时faceScore表示该范围最小值，faceScore表示该范围最大值，如果单独使用,则最小值为0-->0
  </faceScoreMax>
  <pictureStatus>
    <!--opt, enum, 人脸图片状态, subType:string, [normal#正常人脸,abnormal#异常人脸],
desc:异常人脸（建模失败+人脸评分为低+图片url下载失败的）,
    Note:此搜索结果是设备根据当前算法识别效果提供的评判标准,异常图片可能影响人脸抓拍和比对的效果,如果为异常图片的,建议更换图片，后期随着算法准确率的提提升,此判断标准可能发生变化，因此此判断标准结果仅供参考，-->normal
  </pictureStatus>
  <importStartTime>
    <!--ro, opt, datetime, 入库开始时间-->1970-01-01T00:00:00+08:00
  </importStartTime>
  <importEndTime>
    <!--ro, opt, datetime, 入库结束时间-->1970-01-01T00:00:00+08:00
  </importEndTime>
  <faceContrastSuccessStartTime>
    <!--ro, opt, datetime, 人脸比对成功开始时间, desc:支持确认某段时间内监控场景有哪些人出现过。配合使用的查询条件：人脸库ID(FDID，包括：动态库、允许库、静态库)、排序类型（sortord）、排序顺序（order）-->1970-01-01T00:00:00+08:00
  </faceContrastSuccessStartTime>
  <faceContrastSuccessEndTime>
    <!--ro, opt, datetime, 人脸比对成功结束时间, desc:支持确认某段时间内监控场景有哪些人出现过。配合使用的查询条件：人脸库ID(FDID，包括：动态库，允许库、静态库)、排序类型（sortord）、排序顺序（order）-->1970-01-01T00:00:00+08:00
  </faceContrastSuccessEndTime>
</FDSearchDescription>

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <progress>
    <!--ro, opt, int, 查询进度, range:[0,100], step:, unit:, unitType:, desc:设备库的容量可能非常大，检索时间较长，对于远程检索时更加明显，为了提高检索性能，在交互链接中增加进度返回（只有在进度达到100的时候，就可以搜索出具体的数据<MatchList></MatchList>-->1
  </progress>
  <MatchList>
    <!--ro, opt, array, 匹配结果列表, subType:object, range:[,]-->
    <MatchElement>
      <!--ro, opt, object, 匹配结果-->
      <FDID>
        <!--ro, opt, string, 人脸比对库唯一标示ID, range:[,]-->test
      </FDID>
      <thresholdValue>
        <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越高-->1
      </thresholdValue>
      <bornTime>
        <!--ro, opt, date, 人员出生日期-->1970-01-01+08:00
      </bornTime>
      <name>
        <!--ro, req, string, 姓名, range:[1,32]-->test
      </name>
      <sex>
        <!--ro, opt, enum, 性别, subType:string, [male#男,female#女]-->male
      </sex>
      <province>
        <!--ro, opt, string, 省份, range:[,], desc:参考《全国各省份城市列表.txt》-->11
      </province>
      <city>
        <!--ro, opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
      </city>
      <certificateType>
        <!--ro, opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他]-->ID
      </certificateType>
      <certificateNumber>
        <!--ro, opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
      </certificateNumber>
      <picURL>
        <!--ro, req, picurl, 人脸信息的对应图片的URL, desc:上层根据这个返回的URL在获取图片数据-->http://127.0.0.1
      </picURL>
      <PID>
        <!--ro, req, string, 图片ID, range:[,]-->test
      </PID>
      <PersonInfoExtendList>
        <!--ro, opt, array, 人员扩展信息列表, subType:object, range:[,]-->
        <PersonInfoExtend>
          <!--ro, opt, object, 人员扩展信息-->
          <id>
            <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:-->1
          </id>
          <enable>
            <!--ro, req, bool, 人员扩展信息使能-->true
          </enable>
          <name>
            <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
          </name>
          <value>
            <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
          </value>
        </PersonInfoExtend>
      </PersonInfoExtendList>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
      </similarity>
      <ModelingStatus>
        <!--ro, opt, object, 建模状态, desc:后续使用这个字段,modelStatus将会去除-->
        <FDID>
          <!--ro, opt, string, 人脸库ID, range:[,]-->test
        </FDID>
        <PID>
          <!--ro, opt, string, 图片ID, range:[,]-->test
        </PID>
        <name>
          <!--ro, req, string, 图片名称, range:[,]-->test
        </name>
        <status>
          <!--ro, req, enum, 建模状态, subType:string, [success#建模成功,failed#建模失败,none#尚未建模]-->success
        </status>
        <reason>
          <!--ro, opt, enum, 建模失败原因, subType:string, [noface#没有人脸,faceSizeSmall#图片尺寸太小,shadeFace#人脸被遮挡,unknow#未知错误,imageURLDownloadFailed#图片下载失败,noJpgPicture#图片不是jpg格式,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,diskError#磁盘错误,diskFull#磁盘满,analysisFailed#分析失败,multipleFaces#存在多个人脸], desc:当<status>==failed时存在-->noface
        </reason>
        <customHumanID>
          <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
        </customHumanID>
        <customFaceLibID>
          <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
        </customFaceLibID>
        <modeData>
          <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModelingStatus>
      <isNoSaveFDPicture>
        <!--ro, opt, bool, 不保存人脸库图片, desc:若开启了导入图片或者建模时不保存原图功能,则需返回该节点为true,未开启则无需返回该节点-->true
      </isNoSaveFDPicture>
      <humanId>
        <!--ro, opt, string, 人员ID, range:[,]-->test
      </humanId>
      <modelStatus>
        <!--ro, opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
      </modelStatus>
      <FMCount>
        <!--ro, opt, int, 人脸比对成功总次数, range:[,], step:, unit:, unitType:-->1
      </FMCount>
      <importTime>
        <!--ro, opt, datetime, 入库时间-->1970-01-01T00:00:00+08:00
      </importTime>
      <UUPID>
        <!--ro, opt, string, 人脸库底库图片唯一标识ID, range:[,]-->test
      </UUPID>
      <occurrences>
        <!--ro, opt, int, 出现频次, range:[,], step:, unit:, unitType:, desc:仅搜索条件中启用频次返回,本字段才返回-->1
      </occurrences>
      <IMSIList>
        <!--ro, opt, array, IMSI列表, subType:object, range:[,], desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
        <IMSIItem>
          <!--ro, opt, object, IMSI采集信息-->
          <IMSI>
            <!--ro, opt, string, IMSI号码, range:[,]-->123456789012345
          </IMSI>
          <count>
            <!--ro, opt, int, 比中次数, range:[,], step:, unit:, unitType:-->10
          </count>
          <lastFMTime>
            <!--ro, opt, datetime, 最近比对成功时间-->1970-01-01T00:00:00+08:00
          </lastFMTime>
        </IMSIItem>
      </IMSIList>
      <lastFMTime>
        <!--ro, opt, datetime, 最近比对成功时间-->1970-01-01T00:00:00+08:00
      </lastFMTime>
    </MatchElement>
  </MatchList>
</FDSearchResult>

34. 获取人脸图片关联信息

34.1 命令

GET /ISAPI/Intelligent/FDLib/<FDID>/picture/<pictureID>

34.2 输入参数

无

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceAppendData xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人脸图片关联信息, attr:version{req, string, 协议版本, range:[,]}-->
  <bornTime>
    <!--ro, opt, date, 出生日期-->1970-01-01+08:00
  </bornTime>
  <name>
    <!--ro, req, string, 姓名, range:[1,32]-->test
  </name>
  <sex>
    <!--ro, opt, enum, 性别, subType:string, [male#男,female#女]-->male
  </sex>
  <province>
    <!--ro, opt, string, 省份, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </province>
  <city>
    <!--ro, opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </city>
  <certificateType>
    <!--ro, opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他]-->ID
  </certificateType>
  <certificateNumber>
    <!--ro, opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
  </certificateNumber>
  <PersonInfoExtendList>
    <!--ro, opt, array, 人员自定义扩展信息, subType:object, range:[,]-->
    <PersonInfoExtend>
      <!--ro, opt, object, 人员信息扩展-->
      <id>
        <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
      </id>
      <enable>
        <!--ro, req, bool, 人员扩展信息使能-->true
      </enable>
      <name>
        <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
      </name>
      <value>
        <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
      </value>
    </PersonInfoExtend>
  </PersonInfoExtendList>
  <phoneNumber>
    <!--ro, opt, string, 电话号码, range:[1,64]-->test
  </phoneNumber>
  <RegionCoordinatesList>
    <!--ro, opt, array, 人脸目标, subType:object, range:[0,4], desc:指导后续检索中的数据建模处理,矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 坐标, desc:屏幕左上角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <customHumanId>
    <!--ro, opt, string, 自定义人员ID, range:[1,64]-->test
  </customHumanId>
  <faceDescribe>
    <!--ro, opt, string, 人脸描述信息, range:[,]-->test
  </faceDescribe>
  <IMSIList>
    <!--ro, opt, array, IMSI列表, subType:object, range:[,], desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
    <IMSI>
      <!--ro, opt, string, IMSI号码, range:[1,15]-->123456789012345
    </IMSI>
  </IMSIList>
</FaceAppendData>

35. 配置人脸图片关联信息

35.1 命令

PUT /ISAPI/Intelligent/FDLib/<FDID>/picture/<pictureID>

35.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceAppendData xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 人脸图片关联信息, attr:version{req, string, 协议版本, range:[,]}-->
  <bornTime>
    <!--opt, date, 出生日期-->1970-01-01+08:00
  </bornTime>
  <name>
    <!--req, string, 姓名, range:[1,32]-->test
  </name>
  <sex>
    <!--opt, enum, 性别, subType:string, [male#男,female#女]-->male
  </sex>
  <province>
    <!--opt, string, 省份, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </province>
  <city>
    <!--opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </city>
  <certificateType>
    <!--opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他]-->ID
  </certificateType>
  <certificateNumber>
    <!--opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
  </certificateNumber>
  <PersonInfoExtendList>
    <!--opt, array, 人员自定义扩展信息, subType:object, range:[,]-->
    <PersonInfoExtend>
      <!--opt, object, 人员信息扩展-->
      <id>
        <!--req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
      </id>
      <enable>
        <!--req, bool, 人员扩展信息使能-->true
      </enable>
      <name>
        <!--opt, string, 人员标签信息扩展名称, range:[,]-->test
      </name>
      <value>
        <!--opt, string, 人员标签信息扩展内容, range:[,]-->test
      </value>
    </PersonInfoExtend>
  </PersonInfoExtendList>
  <phoneNumber>
    <!--opt, string, 电话号码, range:[1,64]-->test
  </phoneNumber>
  <RegionCoordinatesList>
    <!--opt, array, 人脸目标, subType:object, range:[0,4], desc:指导后续检索中的数据建模处理,矩形-->
    <RegionCoordinates>
      <!--opt, object, 坐标, desc:屏幕左上角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <customHumanId>
    <!--opt, string, 自定义人员ID, range:[1,64]-->test
  </customHumanId>
  <faceDescribe>
    <!--opt, string, 人脸描述信息, range:[,]-->test
  </faceDescribe>
  <IMSIList>
    <!--opt, array, IMSI列表, subType:object, range:[,], desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
    <IMSI>
      <!--opt, string, IMSI号码, range:[1,15]-->123456789012345
    </IMSI>
  </IMSIList>
</FaceAppendData>

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

36. 删除人脸图片

36.1 命令

DELETE /ISAPI/Intelligent/FDLib/<FDID>/picture/<pictureID>

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37. 获取统一建模控制信息

37.1 命令

GET /ISAPI/Intelligent/FDLib/manualModeling?range=<range>&FDID=<FDID>

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
  <id>
    <!--ro, opt, string, 任务ID, range:[,], desc:通过GET /ISAPI/Intelligent/FDLib/manualModeling/progressState?taskID=获取任务执行结果-->test
  </id>
</ResponseStatus>

38. 获取统一建模控制信息

38.1 命令

GET /ISAPI/Intelligent/FDLib/manualModeling?FDID=<FDID>&PID=<pictureID>

38.2 输入参数

无

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
  <id>
    <!--ro, opt, string, 任务ID, range:[,], desc:通过GET /ISAPI/Intelligent/FDLib/manualModeling/progressState?taskID=获取任务执行结果-->test
  </id>
</ResponseStatus>

39. 查询离散建模控制结果

39.1 命令

POST /ISAPI/Intelligent/FDLib/manualModelingRangeTask

39.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ModelingRangeList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ModelingRange>
    <!--opt, object, 未定义-->
    <FDID>
      <!--req, string, 人脸库ID, range:[,]-->test
    </FDID>
    <PID>
      <!--req, string, 图片ID, range:[,]-->test
    </PID>
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[,], desc:当FDID和customFaceLibID同时存在时，以customFaceLibID为准-->test
    </customFaceLibID>
  </ModelingRange>
</ModelingRangeList>

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <id>
    <!--ro, opt, string, 任务ID, range:[,], desc:通过GET /ISAPI/Intelligent/FDLib/manualModeling/progressState?taskID=协议获取具体结果-->test
  </id>
</ResponseStatus>

40. 获取建模进度状态

40.1 命令

GET /ISAPI/Intelligent/FDLib/manualModeling/progressState?taskID=<taskID>

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ModelingRangeTaskState xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 建模进度状态信息, attr:version{req, string, 协议版本, range:[,]}-->
  <taskTotalNumber>
    <!--ro, req, int, 任务总数, range:[,], step:, unit:, unitType:-->1
  </taskTotalNumber>
  <completeNumber>
    <!--ro, req, int, 已经完成的任务数, range:[,], step:, unit:, unitType:-->1
  </completeNumber>
  <failedNumber>
    <!--ro, opt, int, 建模失败的张数, range:[,], step:, unit:, unitType:, desc:如果全部成功,不返回该节点-->1
  </failedNumber>
</ModelingRangeTaskState>

41. 查询单一建模状态

41.1 命令

GET /ISAPI/Intelligent/FDLib/modelingStatus?FDID=<FDID>&PID=<pictureID>

41.2 输入参数

无

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ModelingStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <FDID>
    <!--ro, opt, string, 人脸库ID, range:[,]-->test
  </FDID>
  <PID>
    <!--ro, opt, string, 图片ID, range:[,]-->test
  </PID>
  <name>
    <!--ro, req, string, 图片名称, range:[,]-->test
  </name>
  <status>
    <!--ro, req, enum, 建模状态, subType:string, [success#建模成功,failed#建模失败,none#尚未建模]-->success
  </status>
  <reason>
    <!--ro, opt, enum, 建模失败原因, subType:string, [noface#没有人脸,faceSizeSmall#图片尺寸太小,shadeFace#人脸被遮挡,unknow#未知错误,imageURLDownloadFailed#图片下载失败,noJpgPicture#图片不是jpg格式,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,diskError#磁盘错误,diskFull#磁盘满,analysisFailed#分析失败,multipleFaces#存在多个人脸], desc:当<status>==failed时存在-->noface
  </reason>
  <customHumanID>
    <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
  </customHumanID>
  <customFaceLibID>
    <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
  </customFaceLibID>
  <modeData>
    <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
  </modeData>
</ModelingStatus>

42. 查询整体建模状态

42.1 命令

POST /ISAPI/Intelligent/FDLib/modelingStatusRange

42.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ModelingRangeList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ModelingRange>
    <!--opt, object, 未定义-->
    <FDID>
      <!--req, string, 人脸库ID, range:[,]-->test
    </FDID>
    <PID>
      <!--req, string, 图片ID, range:[,]-->test
    </PID>
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[,], desc:当FDID和customFaceLibID同时存在时，以customFaceLibID为准-->test
    </customFaceLibID>
  </ModelingRange>
</ModelingRangeList>

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ModelingStatusList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ModelingStatus>
    <!--ro, opt, object, 未定义-->
    <FDID>
      <!--ro, opt, string, 人脸库ID, range:[,]-->test
    </FDID>
    <PID>
      <!--ro, opt, string, 图片ID, range:[,]-->test
    </PID>
    <name>
      <!--ro, req, string, 图片名称, range:[,]-->test
    </name>
    <status>
      <!--ro, req, enum, 建模状态, subType:string, [success#建模成功,failed#建模失败,none#尚未建模]-->success
    </status>
    <reason>
      <!--ro, opt, enum, 建模失败原因, subType:string, [noface#没有人脸,faceSizeSmall#图片尺寸太小,shadeFace#人脸被遮挡,unknow#未知错误,imageURLDownloadFailed#图片下载失败,noJpgPicture#图片不是jpg格式,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,diskError#磁盘错误,diskFull#磁盘满,analysisFailed#分析失败,multipleFaces#存在多个人脸], desc:当<status>==failed时存在-->noface
    </reason>
    <customHumanID>
      <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
    </customHumanID>
    <customFaceLibID>
      <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
    </customFaceLibID>
    <modeData>
      <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
    </modeData>
  </ModelingStatus>
</ModelingStatusList>

43. 查询建模状态

43.1 命令

POST /ISAPI/Intelligent/FDLib/modelingStatus?status=<status>

43.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FDModelingStatusSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个，则设备记录内存，下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <CondList>
    <!--opt, array, 查询条件列表, subType:object, range:[,]-->
    <Cond>
      <!--opt, object, 查询条件-->
      <FDID>
        <!--opt, string, 人脸库ID, range:[,]-->test
      </FDID>
    </Cond>
  </CondList>
  <taskID>
    <!--opt, string, 任务ID, range:[,], desc:taskID和CondList互斥，设备优先实现taskID-->test
  </taskID>
</FDModelingStatusSearchDescription>

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDModelingStatusSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <ModelingStatusList>
    <!--ro, opt, array, 建模状态列表, subType:object, range:[,]-->
    <ModelingStatus>
      <!--ro, opt, object, 建模状态-->
      <FDID>
        <!--ro, opt, string, 人脸库ID, range:[,]-->test
      </FDID>
      <PID>
        <!--ro, opt, string, 图片ID, range:[,]-->test
      </PID>
      <name>
        <!--ro, req, string, 图片名称, range:[,]-->test
      </name>
      <status>
        <!--ro, req, enum, 建模状态, subType:string, [success#建模成功,failed#建模失败,none#尚未建模]-->success
      </status>
      <reason>
        <!--ro, opt, enum, 建模失败原因, subType:string, [noface#没有人脸,faceSizeSmall#图片尺寸太小,shadeFace#人脸被遮挡,unknow#未知错误,imageURLDownloadFailed#图片下载失败,noJpgPicture#图片不是jpg格式,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,diskError#磁盘错误,diskFull#磁盘满,analysisFailed#分析失败,multipleFaces#存在多个人脸], desc:当<status>==failed时存在-->noface
      </reason>
      <customHumanID>
        <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
      </customHumanID>
      <customFaceLibID>
        <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
      </customFaceLibID>
      <modeData>
        <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
      </modeData>
    </ModelingStatus>
  </ModelingStatusList>
</FDModelingStatusSearchResult>

44. 获取人脸库还可导入人脸数目

44.1 命令

GET /ISAPI/Intelligent/FDLib/<FDID>/picture/surplusCapacity

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SurplusCapacity xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <FDPicturesNumber>
    <!--ro, opt, int, 还可导入人脸数目, range:[,], step:, unit:, unitType:-->1
  </FDPicturesNumber>
</SurplusCapacity>

45. 配置将当前库的图片同步添加至另一个库

45.1 命令

PUT /ISAPI/Intelligent/FDLib/<FDID>/importFrom/FDLibSource

45.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FDLibSource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 源库信息, attr:version{req, string, 协议版本, range:[,]}-->
  <FDID>
    <!--req, string, 人脸比对库唯一标示ID, range:[,]-->test
  </FDID>
  <Picture>
    <!--opt, object, 源库人脸信息-->
    <PID>
      <!--req, string, 人脸图片唯一标示ID, range:[,]-->test
    </PID>
    <IMSIList>
      <!--ro, opt, array, IMSI列表, subType:object, range:[,], desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
      <IMSI>
        <!--ro, opt, string, IMSI号码, range:[1,15]-->123456789012345
      </IMSI>
    </IMSIList>
  </Picture>
  <notSaveSourcePic>
    <!--opt, bool, 是否要删除原库人脸图片及信息, desc:当不支持该字段默认不删除原库图片信息。-->true
  </notSaveSourcePic>
</FDLibSource>

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

46. 查询人脸图片分析

46.1 命令

POST /ISAPI/Intelligent/analysisImage/face

46.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceContrastData xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人脸比对数据, attr:version{req, string, 协议版本, range:[,]}-->
  <URL>
    <!--req, string, 图片URL, range:[,256],
desc:当url包含dataType=url时，表示图片采用url方式导入，此时传入报文为<FaceContrastData>，Content-Type: application/xml
当url不包含dataType=url时，表示图片采用二进制方式导入，此时传入报文为二进制图片数据，Content-Type: image/jpeg-->test
  </URL>
</FaceContrastData>

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceContrastTargetsList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 人脸比对目标列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FaceContrastTarget>
    <!--ro, opt, object, 人脸比对目标-->
    <Rect>
      <!--ro, opt, object, 人脸头像区域, desc:屏幕左上角为坐标原点-->
      <height>
        <!--ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </height>
      <width>
        <!--ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </width>
      <x>
        <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </x>
      <y>
        <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </y>
    </Rect>
    <modeData>
      <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理,当URL中modeling=false时无效-->test
    </modeData>
    <recommendFaceRect>
      <!--ro, opt, object, 人脸区域推荐位置, desc:用于抠图用,在人脸小图矩形框基础上向外放大. 人脸小图矩形框只能刚刚好标定出人脸,不适合作为抠图展示，屏幕左上角为坐标原点-->
      <height>
        <!--ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:, desc:精确度0.001-->0.000
      </height>
      <width>
        <!--ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:, desc:精确度0.001-->0.000
      </width>
      <x>
        <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:精确度0.001-->0.000
      </x>
      <y>
        <!--ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:精确度0.001-->0.000
      </y>
    </recommendFaceRect>
  </FaceContrastTarget>
</FaceContrastTargetsList>

47. 查询人脸（多通道）

47.1 命令

POST /ISAPI/Intelligent/FDLib/FCSearch

47.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 最早在进行人脸检索时, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <snapStartTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的开始时间-->1970-01-01T00:00:00+08:00
  </snapStartTime>
  <snapEndTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的结束时间-->1970-01-01T00:00:00+08:00
  </snapEndTime>
  <faceMatchInfoEnable>
    <!--opt, bool, 表示是否需要只上传有匹配信息的数据-->true
  </faceMatchInfoEnable>
  <monitorName>
    <!--opt, string, 监控点名称, range:[,]-->test
  </monitorName>
  <similarity>
    <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
  </similarity>
  <eventType>
    <!--opt, enum, 事件类型, subType:string, [unlimit#不限,faceContrast#人脸比对成功,whiteFaceContrast#授权名单人脸比对（即陌生人报警）,faceCapture#人脸抓拍,faceContrastFailure#人脸比对失败,faceMonitor#人脸布防], desc:最早在进行人脸检索时，由于记录的是人脸比对成功事件，则经常出现重复的人脸信息（例如：一张抓拍图与多个人脸库图进行比对，导致同一抓拍图有多个结果），-->unlimit
  </eventType>
  <FaceModeList>
    <!--opt, array, 人脸模型信息列表, subType:object, range:[,]-->
    <FaceMode>
      <!--opt, object, 人脸模型信息-->
      <ModeInfo>
        <!--opt, object, 模型信息-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModeInfo>
    </FaceMode>
  </FaceModeList>
  <PictureInfoList>
    <!--opt, array, 图片信息列表, subType:object, range:[,], desc:按图片检索时添加-->
    <PictureInfo>
      <!--opt, object, 图片信息-->
      <FDID>
        <!--req, string, 人脸比对库唯一标示ID, range:[,]-->test
      </FDID>
      <PID>
        <!--req, string, 图片数据对应的ID值, range:[,]-->test
      </PID>
    </PictureInfo>
  </PictureInfoList>
  <ChannelList>
    <!--opt, array, 查询通道列表, subType:object, range:[,]-->
    <Channel>
      <!--opt, object, 查询通道-->
      <channelID>
        <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
      </channelID>
    </Channel>
  </ChannelList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[,], step:, unit:, unitType:, desc:限制设备当搜索条件很低时无限制搜索，避免性能过高消耗。超脑设备此值默认为10000，当超过10000时仍然按照10000处理，不报错（范晶晶3修改）-->1
  </totalSearchResults>
  <FDIDList>
    <!--opt, array, 人脸库列表, subType:object, range:[,]-->
    <FDID>
      <!--opt, string, 人脸库ID, range:[,]-->test
    </FDID>
  </FDIDList>
  <sortord>
    <!--opt, enum, 返回结果排序, subType:string, [similarity#按相似度排序,time#按时间排序]-->similarity
  </sortord>
  <sex>
    <!--opt, enum, 性别, subType:string, [male#男,female#女], desc:选项互斥 不限制==不下发该节点-->male
  </sex>
  <glass>
    <!--opt, enum, 是否戴眼镜, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </glass>
  <smile>
    <!--opt, enum, 是否微笑, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </smile>
  <high_risk_group>
    <!--opt, enum, 是否高危人群镜, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </high_risk_group>
  <importLib>
    <!--opt, enum, 是否导入库, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </importLib>
  <CustomFaceLibIDList>
    <!--opt, array, 自定义人脸库ID列表, subType:object, range:[,]-->
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[,]-->test
    </customFaceLibID>
  </CustomFaceLibIDList>
  <thermometryUnit>
    <!--opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文]-->celsius
  </thermometryUnit>
  <currTemperature>
    <!--opt, float, 人脸温度, range:[-20.0,105.0], step:, unit:℃, unitType:温度, desc:与thermometryUnit测温单位配合使用-->36.7
  </currTemperature>
  <temperatureCondition>
    <!--opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部,above#温度高于], desc:温度高于用于指定高于具体温度值搜索，温度值参数temperatureValue-->normal
  </temperatureCondition>
  <temperatureValue>
    <!--ro, opt, float, 温度值, range:[-20,105], step:, unit:℃, unitType:温度, dep:and,{$.FCSearchDescription.temperatureCondition,eq,above}-->37.2
  </temperatureValue>
</FCSearchDescription>

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 搜索结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]-->MORE
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <progress>
    <!--ro, opt, int, 查询进度, range:[0,100], step:, unit:, unitType:, desc:设备库的容量可能非常大，检索时间较长，对于远程检索时更加明显，为了提高检索性能，在交互链接中增加进度返回（只有在进度达到100的时候，就可以搜索出具体的数据<MatchList></MatchList>-->1
  </progress>
  <MatchList>
    <!--ro, opt, array, 匹配结果列表, subType:object, range:[,]-->
    <MatchElement>
      <!--ro, opt, object, 匹配结果-->
      <snapPicURL>
        <!--ro, opt, picurl, 抓拍背景图URL-->http://127.0.0.1
      </snapPicURL>
      <snapTime>
        <!--ro, opt, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </snapTime>
      <facePicURL>
        <!--ro, opt, picurl, 人脸子图URL-->http://127.0.0.1
      </facePicURL>
      <FaceMatchInfoList>
        <!--ro, opt, array, 人脸匹配结果列表, subType:object, range:[,]-->
        <FaceMatchInfo>
          <!--ro, opt, object, 人脸匹配结果-->
          <FDID>
            <!--ro, req, string, 人脸比对库唯一标示ID, range:[,]-->test
          </FDID>
          <FDname>
            <!--ro, opt, string, 人脸库名称, range:[,]-->test
          </FDname>
          <thresholdValue>
            <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越低-->1
          </thresholdValue>
          <bornTime>
            <!--ro, opt, date, 出生日期-->1970-01-01+08:00
          </bornTime>
          <name>
            <!--ro, opt, string, 姓名, range:[,]-->test
          </name>
          <sex>
            <!--ro, opt, enum, 性别, subType:string, [male#男,female#女]-->male
          </sex>
          <province>
            <!--ro, req, enum, 中国省份索引, subType:int, [0#保留,1#澳,10#冀,11#豫,12#黑,13#鄂,14#湘,15#吉,16#苏,17#赣,18#辽,19#蒙,2#京,20#宁,21#青,22#鲁,23#晋,24#陕,25#沪,255#全部,26#川,27#台,28#津,29#藏,3#渝,30#港,31#新,32#云,33#浙,34#皖,4#闽,5#甘,6#粤,7#桂,8#贵,9#琼], desc:参考《全国各省份城市列表.txt》-->0
          </province>
          <city>
            <!--ro, opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
          </city>
          <certificateType>
            <!--ro, req, enum, 证件类型, subType:string, [ID#身份证,LawyerCertificate#律师证,birthCertificate#出生证明,householdRegister#户口簿,judgeCertificate#法官证,other#其他,passport#护照,policeID#警官证,pressCard#记者证,prosecutorCard#检察官证,studentIDCard#学生证,temporaryIDCard#临时身份证,temporaryResidencePermit#暂住证,workCard#工作证]-->ID
          </certificateType>
          <certificateNumber>
            <!--ro, opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
          </certificateNumber>
          <picURL>
            <!--ro, req, picurl, 人脸信息的对应图片的URL, desc:上层根据这个返回的URL在获取图片数据-->http://127.0.0.1
          </picURL>
          <PID>
            <!--ro, req, string, 图片ID, range:[,]-->test
          </PID>
          <PersonInfoExtendList>
            <!--ro, opt, array, 人员扩展信息列表, subType:object, range:[,]-->
            <PersonInfoExtend>
              <!--ro, opt, object, 人员扩展信息-->
              <id>
                <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:-->1
              </id>
              <enable>
                <!--ro, req, bool, 人员扩展信息使能-->true
              </enable>
              <name>
                <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
              </name>
              <value>
                <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
              </value>
            </PersonInfoExtend>
          </PersonInfoExtendList>
          <phoneNumber>
            <!--ro, opt, string, 手机号码, range:[,]-->test
          </phoneNumber>
          <caseInfo>
            <!--ro, opt, string, 案件描述, range:[,]-->test
          </caseInfo>
          <similarity>
            <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
          </similarity>
          <modelStatus>
            <!--ro, opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
          </modelStatus>
          <ModelingStatus>
            <!--ro, opt, object, 建模状态, desc:后续使用这个字段,modelStatus将会去除-->
            <FDID>
              <!--ro, opt, string, 人脸库ID, range:[,]-->test
            </FDID>
            <PID>
              <!--ro, opt, string, 图片ID, range:[,]-->test
            </PID>
            <name>
              <!--ro, req, string, 图片名称, range:[,]-->test
            </name>
            <status>
              <!--ro, req, enum, 人脸库图片建模状态, subType:string, [abnormal#异常,failed#建模失败,none#未建模,normal#正常,success#建模成功]-->abnormal
            </status>
            <reason>
              <!--ro, req, enum, 人脸库图片建模失败原因, subType:string, [analysisFailed#分析失败,diskError#磁盘错误,diskFull#磁盘满,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,faceSizeSmall#图片尺寸太小,imageURLDownloadFailed#图片下载失败,multipleFaces#存在多个人脸,noJpgPicture#图片不是jpg格式,noface#没有人脸,shadeFace#人脸被遮挡,unknow#未知错误], desc:当<status>==failed时存在-->analysisFailed
            </reason>
            <customHumanID>
              <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
            </customHumanID>
            <customFaceLibID>
              <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
            </customFaceLibID>
            <modeData>
              <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
            </modeData>
          </ModelingStatus>
        </FaceMatchInfo>
      </FaceMatchInfoList>
      <monitorName>
        <!--ro, opt, string, 监控点信息, range:[,]-->test
      </monitorName>
      <glass>
        <!--ro, req, enum, 是否戴眼镜（废弃）, subType:string, [any#条件不限（搜索的时候使用）,no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->any
      </glass>
      <smile>
        <!--ro, req, enum, 是否微笑, subType:string, [no#不微笑,unknown#未知,yes#微笑]-->no
      </smile>
      <high_risk_group>
        <!--ro, opt, enum, 是否高危人群, subType:string, [yes#是,no#否,unknown#未知]-->yes
      </high_risk_group>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:, desc:以图索图时返回-->0.0
      </similarity>
      <Rect>
        <!--ro, opt, object, 匹配图片人脸目标子图坐标-->
        <height>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:左上角原点-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:左上角原点-->0.000
        </y>
      </Rect>
      <channelID>
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:, desc:目前仅后端支持-->1
      </channelID>
      <name>
        <!--ro, opt, string, 抓拍图片的名称, range:[,]-->test
      </name>
      <sex>
        <!--ro, opt, enum, 性别, subType:string, [male#男,female#女,unknown#未知]-->male
      </sex>
      <ageGroup>
        <!--ro, req, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->any
      </ageGroup>
      <mask>
        <!--ro, req, enum, 是否戴口罩, subType:string, [no#否,unknown#未知,yes#是]-->no
      </mask>
      <imageQuality>
        <!--ro, opt, int, 图片质量, range:[,], step:, unit:, unitType:-->1
      </imageQuality>
      <contrastStatus>
        <!--ro, opt, bool, 比对结果-->true
      </contrastStatus>
      <age>
        <!--ro, opt, int, 年龄, range:[1,255], step:, unit:, unitType:-->1
      </age>
      <targetID>
        <!--ro, opt, string, 目标ID, range:[1,48]-->test
      </targetID>
      <thermometryUnit>
        <!--ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文]-->celsius
      </thermometryUnit>
      <currTemperature>
        <!--ro, opt, float, 人脸温度, range:[-20.0,105.0], step:, unit:℃, unitType:温度, desc:与thermometryUnit测温单位配合使用-->36.7
      </currTemperature>
      <temperatureCondition>
        <!--ro, opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部,above#温度高于], desc:温度高于用于指定高于具体温度值搜索，温度值参数temperatureValue-->normal
      </temperatureCondition>
      <temperatureValue>
        <!--ro, opt, float, 温度值, range:[-20,105], step:, unit:℃, unitType:温度, dep:and,{$.FCSearchResult.MatchList[*].MatchElement.temperatureCondition,eq,above}-->37.2
      </temperatureValue>
      <alarmTemperature>
        <!--ro, opt, float, 报警温度阈值, range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alarmTemperature>
    </MatchElement>
  </MatchList>
</FCSearchResult>

48. 查询人脸（单通道）

48.1 命令

POST /ISAPI/Intelligent/FDLib/FCSearch/channels/<channelID>

48.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 最早在进行人脸检索时, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <snapStartTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的开始时间-->1970-01-01T00:00:00+08:00
  </snapStartTime>
  <snapEndTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的结束时间-->1970-01-01T00:00:00+08:00
  </snapEndTime>
  <faceMatchInfoEnable>
    <!--opt, bool, 表示是否需要只上传有匹配信息的数据-->true
  </faceMatchInfoEnable>
  <monitorName>
    <!--opt, string, 监控点名称, range:[,]-->test
  </monitorName>
  <similarity>
    <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
  </similarity>
  <eventType>
    <!--opt, enum, 事件类型, subType:string, [unlimit#不限,faceContrast#人脸比对成功,whiteFaceContrast#授权名单人脸比对（即陌生人报警）,faceCapture#人脸抓拍,faceContrastFailure#人脸比对失败,faceMonitor#人脸布防], desc:最早在进行人脸检索时，由于记录的是人脸比对成功事件，则经常出现重复的人脸信息（例如：一张抓拍图与多个人脸库图进行比对，导致同一抓拍图有多个结果），-->unlimit
  </eventType>
  <FaceModeList>
    <!--opt, array, 人脸模型信息列表, subType:object, range:[,]-->
    <FaceMode>
      <!--opt, object, 人脸模型信息-->
      <ModeInfo>
        <!--opt, object, 模型信息-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModeInfo>
    </FaceMode>
  </FaceModeList>
  <PictureInfoList>
    <!--opt, array, 图片信息列表, subType:object, range:[,], desc:按图片检索时添加-->
    <PictureInfo>
      <!--opt, object, 图片信息-->
      <FDID>
        <!--req, string, 人脸比对库唯一标示ID, range:[,]-->test
      </FDID>
      <PID>
        <!--req, string, 图片数据对应的ID值, range:[,]-->test
      </PID>
    </PictureInfo>
  </PictureInfoList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[,], step:, unit:, unitType:, desc:限制设备当搜索条件很低时无限制搜索，避免性能过高消耗。超脑设备此值默认为10000，当超过10000时仍然按照10000处理，不报错（范晶晶3修改）-->1
  </totalSearchResults>
  <FDIDList>
    <!--opt, array, 人脸库列表, subType:object, range:[,]-->
    <FDID>
      <!--opt, string, 人脸库ID, range:[,]-->test
    </FDID>
  </FDIDList>
  <sortord>
    <!--opt, enum, 返回结果排序, subType:string, [similarity#按相似度排序,time#按时间排序]-->similarity
  </sortord>
  <sex>
    <!--opt, enum, 性别, subType:string, [male#男,female#女], desc:选项互斥 不限制==不下发该节点-->male
  </sex>
  <glass>
    <!--opt, enum, 是否戴眼镜, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </glass>
  <smile>
    <!--opt, enum, 是否微笑, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </smile>
  <high_risk_group>
    <!--opt, enum, 是否高危人群镜, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </high_risk_group>
  <importLib>
    <!--opt, enum, 是否导入库, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </importLib>
  <CustomFaceLibIDList>
    <!--opt, array, 自定义人脸库ID列表, subType:object, range:[,]-->null
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[,]-->test
    </customFaceLibID>
  </CustomFaceLibIDList>
</FCSearchDescription>

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 搜索结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]-->MORE
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <progress>
    <!--ro, opt, int, 查询进度, range:[0,100], step:, unit:, unitType:, desc:设备库的容量可能非常大，检索时间较长，对于远程检索时更加明显，为了提高检索性能，在交互链接中增加进度返回（只有在进度达到100的时候，就可以搜索出具体的数据<MatchList></MatchList>-->1
  </progress>
  <MatchList>
    <!--ro, opt, array, 匹配结果列表, subType:object, range:[,]-->
    <MatchElement>
      <!--ro, opt, object, 匹配结果-->
      <snapPicURL>
        <!--ro, opt, picurl, 抓拍背景图URL-->http://127.0.0.1
      </snapPicURL>
      <snapTime>
        <!--ro, opt, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </snapTime>
      <facePicURL>
        <!--ro, opt, picurl, 人脸子图URL-->http://127.0.0.1
      </facePicURL>
      <FaceMatchInfoList>
        <!--ro, opt, array, 人脸匹配结果列表, subType:object, range:[,]-->
        <FaceMatchInfo>
          <!--ro, opt, object, 人脸匹配结果-->
          <FDID>
            <!--ro, req, string, 人脸比对库唯一标示ID, range:[,]-->test
          </FDID>
          <FDname>
            <!--ro, opt, string, 人脸库名称, range:[,]-->test
          </FDname>
          <thresholdValue>
            <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越低-->1
          </thresholdValue>
          <bornTime>
            <!--ro, opt, date, 出生日期-->1970-01-01+08:00
          </bornTime>
          <name>
            <!--ro, opt, string, 姓名, range:[,]-->test
          </name>
          <sex>
            <!--ro, opt, enum, 性别, subType:string, [male#男,female#女]-->male
          </sex>
          <province>
            <!--ro, req, enum, 中国省份索引, subType:int, [0#保留,1#澳,10#冀,11#豫,12#黑,13#鄂,14#湘,15#吉,16#苏,17#赣,18#辽,19#蒙,2#京,20#宁,21#青,22#鲁,23#晋,24#陕,25#沪,255#全部,26#川,27#台,28#津,29#藏,3#渝,30#港,31#新,32#云,33#浙,34#皖,4#闽,5#甘,6#粤,7#桂,8#贵,9#琼], desc:参考《全国各省份城市列表.txt》-->0
          </province>
          <city>
            <!--ro, opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
          </city>
          <certificateType>
            <!--ro, req, enum, 证件类型, subType:string, [ID#身份证,LawyerCertificate#律师证,birthCertificate#出生证明,householdRegister#户口簿,judgeCertificate#法官证,other#其他,passport#护照,policeID#警官证,pressCard#记者证,prosecutorCard#检察官证,studentIDCard#学生证,temporaryIDCard#临时身份证,temporaryResidencePermit#暂住证,workCard#工作证]-->ID
          </certificateType>
          <certificateNumber>
            <!--ro, opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
          </certificateNumber>
          <picURL>
            <!--ro, req, picurl, 人脸信息的对应图片的URL, desc:上层根据这个返回的URL在获取图片数据-->http://127.0.0.1
          </picURL>
          <PID>
            <!--ro, req, string, 图片ID, range:[,]-->test
          </PID>
          <PersonInfoExtendList>
            <!--ro, opt, array, 人员扩展信息列表, subType:object, range:[,]-->
            <PersonInfoExtend>
              <!--ro, opt, object, 人员扩展信息-->
              <id>
                <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:-->1
              </id>
              <enable>
                <!--ro, req, bool, 人员扩展信息使能-->true
              </enable>
              <name>
                <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
              </name>
              <value>
                <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
              </value>
            </PersonInfoExtend>
          </PersonInfoExtendList>
          <phoneNumber>
            <!--ro, opt, string, 手机号码, range:[,]-->test
          </phoneNumber>
          <caseInfo>
            <!--ro, opt, string, 案件描述, range:[,]-->test
          </caseInfo>
          <similarity>
            <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
          </similarity>
          <modelStatus>
            <!--ro, opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
          </modelStatus>
          <ModelingStatus>
            <!--ro, opt, object, 建模状态, desc:后续使用这个字段,modelStatus将会去除-->
            <FDID>
              <!--ro, opt, string, 人脸库ID, range:[,]-->test
            </FDID>
            <PID>
              <!--ro, opt, string, 图片ID, range:[,]-->test
            </PID>
            <name>
              <!--ro, req, string, 图片名称, range:[,]-->test
            </name>
            <status>
              <!--ro, req, enum, 人脸库图片建模状态, subType:string, [abnormal#异常,failed#建模失败,none#未建模,normal#正常,success#建模成功]-->abnormal
            </status>
            <reason>
              <!--ro, req, enum, 人脸库图片建模失败原因, subType:string, [analysisFailed#分析失败,diskError#磁盘错误,diskFull#磁盘满,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,faceSizeSmall#图片尺寸太小,imageURLDownloadFailed#图片下载失败,multipleFaces#存在多个人脸,noJpgPicture#图片不是jpg格式,noface#没有人脸,shadeFace#人脸被遮挡,unknow#未知错误], desc:当<status>==failed时存在-->analysisFailed
            </reason>
            <customHumanID>
              <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
            </customHumanID>
            <customFaceLibID>
              <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
            </customFaceLibID>
            <modeData>
              <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
            </modeData>
          </ModelingStatus>
        </FaceMatchInfo>
      </FaceMatchInfoList>
      <monitorName>
        <!--ro, opt, string, 监控点信息, range:[,]-->test
      </monitorName>
      <glass>
        <!--ro, req, enum, 是否戴眼镜（废弃）, subType:string, [any#条件不限（搜索的时候使用）,no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->any
      </glass>
      <smile>
        <!--ro, req, enum, 是否微笑, subType:string, [no#不微笑,unknown#未知,yes#微笑]-->no
      </smile>
      <high_risk_group>
        <!--ro, opt, enum, 是否高危人群, subType:string, [yes#是,no#否,unknown#未知]-->yes
      </high_risk_group>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:, desc:以图索图时返回-->0.0
      </similarity>
      <Rect>
        <!--ro, opt, object, 匹配图片人脸目标子图坐标-->
        <height>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:左上角原点-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:左上角原点-->0.000
        </y>
      </Rect>
      <channelID>
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:, desc:目前仅后端支持-->1
      </channelID>
      <name>
        <!--ro, opt, string, 抓拍图片的名称, range:[,]-->test
      </name>
      <sex>
        <!--ro, opt, enum, 性别, subType:string, [male#男,female#女,unknown#未知]-->male
      </sex>
      <ageGroup>
        <!--ro, req, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->any
      </ageGroup>
      <mask>
        <!--ro, req, enum, 是否戴口罩, subType:string, [no#否,unknown#未知,yes#是]-->no
      </mask>
      <imageQuality>
        <!--ro, opt, int, 图片质量, range:[,], step:, unit:, unitType:-->1
      </imageQuality>
      <contrastStatus>
        <!--ro, opt, bool, 比对结果-->true
      </contrastStatus>
      <age>
        <!--ro, opt, int, 年龄, range:[1,255], step:, unit:, unitType:-->1
      </age>
      <targetID>
        <!--ro, opt, string, 目标ID, range:[1,48]-->test
      </targetID>
    </MatchElement>
  </MatchList>
</FCSearchResult>

49. 配置人脸比对报警信息打包

49.1 命令

POST /ISAPI/Intelligent/FDLib/FCSearch/dataPackage

49.2 输入参数

{
    "searchID":  "test",
    /*opt, string, 搜索记录唯一标识, range:[,], desc:在条件不变的情况下，searchID的内容不变*/
    "searchResultPosition":  0,
    /*req, int, 查询结果在结果列表中的起始位置, range:[0,4294967295], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
    "maxResultNumber":  100,
    /*req, int, 需要查询最大记录数, range:[1,4294967295], step:, unit:, unitType:*/
    "maxResults":  1,
    /*req, int, 单次返回(每页显示、打包)最大记录数, range:[1,100], step:, unit:, unitType:*/
    "FDID":  "aa,bb",
    /*req, string, 人脸库ID, range:[0,63], desc:-1表示所有, 多个库用逗号隔开*/
    "cameraID":  "aa,bb",
    /*opt, string, 监控点ID（通道ID）, range:[0,4095], desc:-1表示所有, 多个监控点用逗号隔开*/
    "snapStartTime":  "1970-01-01T00:00:00+08:00",
    /*opt, datetime, 抓拍开始时间*/
    "snapEndTime":  "1970-01-01T00:00:00+08:00",
    /*opt, datetime, 抓拍结束时间*/
    "maxSimilarity":  0.99,
    /*opt, float, 相似度最大值, range:[0.00,1.00], step:, unit:, unitType:*/
    "minSimilarity":  0.99,
    /*opt, float, 相似度最小值, range:[0.00,1.00], step:, unit:, unitType:*/
    "sortType":  "similarity",
    /*opt, enum, 排序类型, subType:string, [similarity#按相似度排序(默认),time#按时间排序,attendanceNumber#按签到次数排序]*/
    "Attendance": {
    /*opt, object, 考勤信息*/
        "Schedules": [
        /*opt, array, 考勤时间, subType:object, range:[,]*/
            {
                "startTime":  "00:00:00+08:00",
                /*opt, time, 起始时间*/
                "endTime":  "00:00:00+08:00",
                /*opt, time, 结束时间*/
                "dayOfWeek": [1, 2]
                /*opt, array, 上班周期, subType:int, range:[,], dep:and,{$.Attendance.type,eq,attendance}, desc:周一~周日，支持复选*/
            }
        ],
        "MatchFace": [
        /*opt, array, 匹配人脸信息, subType:object, range:[,]*/
            {
                "FDID":  "test",
                /*opt, string, 人脸库ID , range:[0,63]*/
                "PID":  "test"
                /*opt, string, 图片ID, range:[0,64]*/
            }
        ],
        "type":  "check-in"
        /*opt, enum, 模式切换 , subType:string, [attendance#考勤,check-in#签到]*/
    },
    "listType":  "blackList"
    /*opt, enum, 名单类型, subType:string, [blackList#非授权名单,whiteList#授权名单]*/
}

49.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[1,256]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "taskID":  "test"
    /*ro, opt, string, 打包的序列标示ID, range:[0,32], desc:通过该标识可以查询打包进度*/
}

50. 配置人脸检索结果导出（单通道）

50.1 命令

POST /ISAPI/Intelligent/FDLib/FCSearch/channels/<channelID>/dataPackage

50.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 最早在进行人脸检索时, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <snapStartTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的开始时间-->1970-01-01T00:00:00+08:00
  </snapStartTime>
  <snapEndTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的结束时间-->1970-01-01T00:00:00+08:00
  </snapEndTime>
  <faceMatchInfoEnable>
    <!--opt, bool, 表示是否需要只上传有匹配信息的数据-->true
  </faceMatchInfoEnable>
  <monitorName>
    <!--opt, string, 监控点名称, range:[,]-->test
  </monitorName>
  <similarity>
    <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
  </similarity>
  <eventType>
    <!--opt, enum, 事件类型, subType:string, [unlimit#不限,faceContrast#人脸比对成功,whiteFaceContrast#授权名单人脸比对（即陌生人报警）,faceCapture#人脸抓拍,faceContrastFailure#人脸比对失败,faceMonitor#人脸布防], desc:最早在进行人脸检索时，由于记录的是人脸比对成功事件，则经常出现重复的人脸信息（例如：一张抓拍图与多个人脸库图进行比对，导致同一抓拍图有多个结果），-->unlimit
  </eventType>
  <FaceModeList>
    <!--opt, array, 人脸模型信息列表, subType:object, range:[,]-->
    <FaceMode>
      <!--opt, object, 人脸模型信息-->
      <ModeInfo>
        <!--opt, object, 模型信息-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModeInfo>
    </FaceMode>
  </FaceModeList>
  <PictureInfoList>
    <!--opt, array, 图片信息列表, subType:object, range:[,], desc:按图片检索时添加-->
    <PictureInfo>
      <!--opt, object, 图片信息-->
      <FDID>
        <!--req, string, 人脸比对库唯一标示ID, range:[,]-->test
      </FDID>
      <PID>
        <!--req, string, 图片数据对应的ID值, range:[,]-->test
      </PID>
    </PictureInfo>
  </PictureInfoList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[,], step:, unit:, unitType:, desc:限制设备当搜索条件很低时无限制搜索，避免性能过高消耗。超脑设备此值默认为10000，当超过10000时仍然按照10000处理，不报错（范晶晶3修改）-->1
  </totalSearchResults>
</FCSearchDescription>

50.3 输出参数

无

51. 获取人脸比对报警检索能力集

51.1 命令

GET /ISAPI/Intelligent/FDLib/FCSearch/capabilities?format=json

51.2 输入参数

无

51.3 输出参数

{
    "FCSearchCap": {
    /*ro, opt, object, 人脸比对报警检索能力集*/
        "searchResultPosition": {
        /*ro, opt, object, 查询结果在结果列表中的起始位置*/
            "@min":  0,
            /*ro, opt, int, 查询结果在结果列表中的起始位置最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0,
            /*ro, opt, int, 查询结果在结果列表中的起始位置最大值, range:[,], step:, unit:, unitType:*/
            "#text":  0
            /*ro, opt, int, 查询结果在结果列表中的起始位置举例, range:[,], step:, unit:, unitType:*/
        },
        "maxResultNumber": {
        /*ro, opt, object, 需要查询最大记录数*/
            "@min":  0,
            /*ro, opt, int, 需要查询最大记录数最小值, range:[,], step:, unit:, unitType:*/
            "@max":  2000,
            /*ro, opt, int, 需要查询最大记录数最大值, range:[,], step:, unit:, unitType:*/
            "#text":  0
            /*ro, opt, int, 需要查询最大记录数举例, range:[,], step:, unit:, unitType:*/
        },
        "maxResults": {
        /*ro, opt, object, 本次查询最大记录数*/
            "@min":  1,
            /*ro, opt, int, 本次查询最大记录数最小值, range:[,], step:, unit:, unitType:*/
            "@max":  2000,
            /*ro, opt, int, 本次查询最大记录数最大值, range:[,], step:, unit:, unitType:*/
            "#text":  1
            /*ro, opt, int, 本次查询最大记录数举例, range:[,], step:, unit:, unitType:*/
        },
        "FDID": {
        /*ro, opt, object, 人脸库ID信息*/
            "@min":  1,
            /*ro, opt, int, 人脸库ID信息长度最小值, range:[,], step:, unit:, unitType:*/
            "@max":  64,
            /*ro, opt, int, 人脸库ID信息长度最大值, range:[,], step:, unit:, unitType:*/
            "#text":  "0"
            /*ro, opt, string, 人脸库ID信息举例, range:[,]*/
        },
        "cameraID": {
        /*ro, opt, object, 监控点ID*/
            "@min":  1,
            /*ro, opt, int, 监控点ID长度最小值, range:[,], step:, unit:, unitType:*/
            "@max":  4096,
            /*ro, opt, int, 监控点ID长度最大值, range:[,], step:, unit:, unitType:*/
            "#text":  "0"
            /*ro, opt, string, 监控点ID举例, range:[,]*/
        },
        "snapStartTime":  "1970-01-01T00:00:00+08:00",
        /*ro, opt, datetime, 抓拍开始时间*/
        "snapEndTime":  "1970-01-01T00:00:00+08:00",
        /*ro, opt, datetime, 抓拍结束时间*/
        "maxSimilarity": {
        /*ro, opt, object, 相似度最大值*/
            "@min":  0.00,
            /*ro, opt, float, 相似度最大值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  1.00,
            /*ro, opt, float, 相似度最大值最大值, range:[,], step:, unit:, unitType:*/
            "#text":  0.00
            /*ro, opt, float, 相似度最大值举例, range:[,], step:, unit:, unitType:*/
        },
        "minSimilarity": {
        /*ro, opt, object, 相似度最小值*/
            "@min":  0.00,
            /*ro, opt, float, 相似度最小值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  1.00,
            /*ro, opt, float, 相似度最小值最大值, range:[,], step:, unit:, unitType:*/
            "#text":  0.00
            /*ro, opt, float, 相似度最小值举例, range:[,], step:, unit:, unitType:*/
        },
        "sortType": {
        /*ro, opt, object, 排序类型, desc:similarity-按相似度排序(默认), time-按时间排序,attendanceNumber-按签到次数排序*/
            "@opt":  "similarity, time,attendanceNumber"
            /*ro, opt, string, 排序类型枚举, range:[,]*/
        },
        "Attendance": {
        /*ro, opt, object, 出勤信息*/
            "Schedules": [
            /*ro, opt, array, 时间表, subType:object, range:[,]*/
                {
                    "maxSize":  1,
                    /*ro, req, int, 时间表支持最大对象个数, range:[,], step:, unit:, unitType:*/
                    "startTime":  "00:00:00",
                    /*ro, opt, time, 起始时间*/
                    "endTime":  "00:00:00",
                    /*ro, opt, time, 结束时间*/
                    "dayOfWeek": {
                    /*ro, opt, object, 星期, desc:周一~周日，支持复选, integer类型, ISO8601 weekday number,1=Monday*/
                        "@min":  1,
                        /*ro, opt, int, 星期最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  7
                        /*ro, opt, int, 星期最大值, range:[,], step:, unit:, unitType:*/
                    }
                }
            ],
            "MatchFace": [
            /*ro, opt, array, 人脸比对, subType:object, range:[,]*/
                {
                    "maxSize":  1,
                    /*ro, req, int, 人脸比对支持最大对象个数, range:[,], step:, unit:, unitType:*/
                    "FDID": {
                    /*ro, opt, object, 人脸库ID信息*/
                        "@min":  1,
                        /*ro, opt, int, 人脸库ID长度最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  63,
                        /*ro, opt, int, 人脸库ID长度最大值, range:[,], step:, unit:, unitType:*/
                        "#text":  "0"
                        /*ro, opt, string, 人脸库ID信息举例, range:[,]*/
                    },
                    "PID": {
                    /*ro, opt, object, 图片ID信息*/
                        "@min":  1,
                        /*ro, opt, int, 图片ID信息长度最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  256,
                        /*ro, opt, int, 图片ID信息长度最大值, range:[,], step:, unit:, unitType:*/
                        "#text":  "0"
                        /*ro, opt, string, 图片ID信息举例, range:[,]*/
                    }
                }
            ],
            "type": {
            /*ro, opt, object, 考勤类型*/
                "@opt": ["check-in", "attendance"],
                /*ro, opt, array, 考勤类型枚举, subType:string, range:[,], desc:check-in-签到 attendance-出勤*/
                "@def":  "check-in"
                /*ro, opt, string, 考勤类型, range:[,]*/
            }
        }
    },
    "listType": {
    /*ro, opt, object, 名单库类型*/
        "@opt":  "blackList,whiteList"
        /*ro, opt, string, 名单库类型枚举, range:[,], desc:blackList-非授权名单,whiteList-授权名单*/
    },
    "facialAttendanceStatus": {
    /*ro, opt, object, 人脸考勤状态*/
        "@opt": ["success", "failed"]
        /*ro, opt, array, 人脸考勤状态枚举, subType:string, range:[,], desc:success-考勤成功,failed-考勤失败*/
    }
}

52. 查询人脸（多通道）

52.1 命令

POST /ISAPI/Intelligent/FDLib/FCSearch?format=json

52.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 最早在进行人脸检索时, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <snapStartTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的开始时间-->1970-01-01T00:00:00+08:00
  </snapStartTime>
  <snapEndTime>
    <!--opt, datetime, ISO8601 time;抓拍图片的结束时间-->1970-01-01T00:00:00+08:00
  </snapEndTime>
  <faceMatchInfoEnable>
    <!--opt, bool, 表示是否需要只上传有匹配信息的数据-->true
  </faceMatchInfoEnable>
  <monitorName>
    <!--opt, string, 监控点名称, range:[,]-->test
  </monitorName>
  <similarity>
    <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
  </similarity>
  <eventType>
    <!--opt, enum, 事件类型, subType:string, [unlimit#不限,faceContrast#人脸比对成功,whiteFaceContrast#授权名单人脸比对（即陌生人报警）,faceCapture#人脸抓拍,faceContrastFailure#人脸比对失败,faceMonitor#人脸布防], desc:最早在进行人脸检索时，由于记录的是人脸比对成功事件，则经常出现重复的人脸信息（例如：一张抓拍图与多个人脸库图进行比对，导致同一抓拍图有多个结果），-->unlimit
  </eventType>
  <FaceModeList>
    <!--opt, array, 人脸模型信息列表, subType:object, range:[,]-->
    <FaceMode>
      <!--opt, object, 人脸模型信息-->
      <ModeInfo>
        <!--opt, object, 模型信息-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModeInfo>
    </FaceMode>
  </FaceModeList>
  <PictureInfoList>
    <!--opt, array, 图片信息列表, subType:object, range:[,], desc:按图片检索时添加-->
    <PictureInfo>
      <!--opt, object, 图片信息-->
      <FDID>
        <!--req, string, 人脸比对库唯一标示ID, range:[,]-->test
      </FDID>
      <PID>
        <!--req, string, 图片数据对应的ID值, range:[,]-->test
      </PID>
    </PictureInfo>
  </PictureInfoList>
  <ChannelList>
    <!--opt, array, 查询通道列表, subType:object, range:[,]-->
    <Channel>
      <!--opt, object, 查询通道-->
      <channelID>
        <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
      </channelID>
    </Channel>
  </ChannelList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[,], step:, unit:, unitType:, desc:限制设备当搜索条件很低时无限制搜索，避免性能过高消耗。超脑设备此值默认为10000，当超过10000时仍然按照10000处理，不报错（范晶晶3修改）-->1
  </totalSearchResults>
  <FDIDList>
    <!--opt, array, 人脸库列表, subType:object, range:[,]-->
    <FDID>
      <!--opt, string, 人脸库ID, range:[,]-->test
    </FDID>
  </FDIDList>
  <sortord>
    <!--opt, enum, 返回结果排序, subType:string, [similarity#按相似度排序,time#按时间排序]-->similarity
  </sortord>
  <sex>
    <!--opt, enum, 性别, subType:string, [male#男,female#女], desc:选项互斥 不限制==不下发该节点-->male
  </sex>
  <glass>
    <!--opt, enum, 是否戴眼镜, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </glass>
  <smile>
    <!--opt, enum, 是否微笑, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </smile>
  <high_risk_group>
    <!--opt, enum, 是否高危人群镜, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </high_risk_group>
  <importLib>
    <!--opt, enum, 是否导入库, subType:string, [yes#是,no#否], desc:选项互斥 不限制==不下发该节点-->yes
  </importLib>
  <CustomFaceLibIDList>
    <!--opt, array, 自定义人脸库ID列表, subType:object, range:[,]-->
    <customFaceLibID>
      <!--opt, string, 自定义人脸库ID, range:[,]-->test
    </customFaceLibID>
  </CustomFaceLibIDList>
  <thermometryUnit>
    <!--opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文]-->celsius
  </thermometryUnit>
  <currTemperature>
    <!--opt, float, 人脸温度, range:[-20.0,105.0], step:, unit:℃, unitType:温度, desc:与thermometryUnit测温单位配合使用-->36.7
  </currTemperature>
  <temperatureCondition>
    <!--opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部,above#温度高于], desc:温度高于用于指定高于具体温度值搜索，温度值参数temperatureValue-->normal
  </temperatureCondition>
  <temperatureValue>
    <!--ro, opt, float, 温度值, range:[-20,105], step:, unit:℃, unitType:温度, dep:and,{$.FCSearchDescription.temperatureCondition,eq,above}-->37.2
  </temperatureValue>
</FCSearchDescription>

52.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FCSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 搜索结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]-->MORE
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <progress>
    <!--ro, opt, int, 查询进度, range:[0,100], step:, unit:, unitType:, desc:设备库的容量可能非常大，检索时间较长，对于远程检索时更加明显，为了提高检索性能，在交互链接中增加进度返回（只有在进度达到100的时候，就可以搜索出具体的数据<MatchList></MatchList>-->1
  </progress>
  <MatchList>
    <!--ro, opt, array, 匹配结果列表, subType:object, range:[,]-->
    <MatchElement>
      <!--ro, opt, object, 匹配结果-->
      <snapPicURL>
        <!--ro, opt, picurl, 抓拍背景图URL-->http://127.0.0.1
      </snapPicURL>
      <snapTime>
        <!--ro, opt, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </snapTime>
      <facePicURL>
        <!--ro, opt, picurl, 人脸子图URL-->http://127.0.0.1
      </facePicURL>
      <FaceMatchInfoList>
        <!--ro, opt, array, 人脸匹配结果列表, subType:object, range:[,]-->
        <FaceMatchInfo>
          <!--ro, opt, object, 人脸匹配结果-->
          <FDID>
            <!--ro, req, string, 人脸比对库唯一标示ID, range:[,]-->test
          </FDID>
          <FDname>
            <!--ro, opt, string, 人脸库名称, range:[,]-->test
          </FDname>
          <thresholdValue>
            <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越低-->1
          </thresholdValue>
          <bornTime>
            <!--ro, opt, date, 出生日期-->1970-01-01+08:00
          </bornTime>
          <name>
            <!--ro, opt, string, 姓名, range:[,]-->test
          </name>
          <sex>
            <!--ro, opt, enum, 性别, subType:string, [male#男,female#女]-->male
          </sex>
          <province>
            <!--ro, req, enum, 中国省份索引, subType:int, [0#保留,1#澳,10#冀,11#豫,12#黑,13#鄂,14#湘,15#吉,16#苏,17#赣,18#辽,19#蒙,2#京,20#宁,21#青,22#鲁,23#晋,24#陕,25#沪,255#全部,26#川,27#台,28#津,29#藏,3#渝,30#港,31#新,32#云,33#浙,34#皖,4#闽,5#甘,6#粤,7#桂,8#贵,9#琼], desc:参考《全国各省份城市列表.txt》-->0
          </province>
          <city>
            <!--ro, opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
          </city>
          <certificateType>
            <!--ro, req, enum, 证件类型, subType:string, [ID#身份证,LawyerCertificate#律师证,birthCertificate#出生证明,householdRegister#户口簿,judgeCertificate#法官证,other#其他,passport#护照,policeID#警官证,pressCard#记者证,prosecutorCard#检察官证,studentIDCard#学生证,temporaryIDCard#临时身份证,temporaryResidencePermit#暂住证,workCard#工作证]-->ID
          </certificateType>
          <certificateNumber>
            <!--ro, opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
          </certificateNumber>
          <picURL>
            <!--ro, req, picurl, 人脸信息的对应图片的URL, desc:上层根据这个返回的URL在获取图片数据-->http://127.0.0.1
          </picURL>
          <PID>
            <!--ro, req, string, 图片ID, range:[,]-->test
          </PID>
          <PersonInfoExtendList>
            <!--ro, opt, array, 人员扩展信息列表, subType:object, range:[,]-->
            <PersonInfoExtend>
              <!--ro, opt, object, 人员扩展信息-->
              <id>
                <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:-->1
              </id>
              <enable>
                <!--ro, req, bool, 人员扩展信息使能-->true
              </enable>
              <name>
                <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
              </name>
              <value>
                <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
              </value>
            </PersonInfoExtend>
          </PersonInfoExtendList>
          <phoneNumber>
            <!--ro, opt, string, 手机号码, range:[,]-->test
          </phoneNumber>
          <caseInfo>
            <!--ro, opt, string, 案件描述, range:[,]-->test
          </caseInfo>
          <similarity>
            <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
          </similarity>
          <modelStatus>
            <!--ro, opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
          </modelStatus>
          <ModelingStatus>
            <!--ro, opt, object, 建模状态, desc:后续使用这个字段,modelStatus将会去除-->
            <FDID>
              <!--ro, opt, string, 人脸库ID, range:[,]-->test
            </FDID>
            <PID>
              <!--ro, opt, string, 图片ID, range:[,]-->test
            </PID>
            <name>
              <!--ro, req, string, 图片名称, range:[,]-->test
            </name>
            <status>
              <!--ro, req, enum, 人脸库图片建模状态, subType:string, [abnormal#异常,failed#建模失败,none#未建模,normal#正常,success#建模成功]-->abnormal
            </status>
            <reason>
              <!--ro, req, enum, 人脸库图片建模失败原因, subType:string, [analysisFailed#分析失败,diskError#磁盘错误,diskFull#磁盘满,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,faceSizeSmall#图片尺寸太小,imageURLDownloadFailed#图片下载失败,multipleFaces#存在多个人脸,noJpgPicture#图片不是jpg格式,noface#没有人脸,shadeFace#人脸被遮挡,unknow#未知错误], desc:当<status>==failed时存在-->analysisFailed
            </reason>
            <customHumanID>
              <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
            </customHumanID>
            <customFaceLibID>
              <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
            </customFaceLibID>
            <modeData>
              <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
            </modeData>
          </ModelingStatus>
        </FaceMatchInfo>
      </FaceMatchInfoList>
      <monitorName>
        <!--ro, opt, string, 监控点信息, range:[,]-->test
      </monitorName>
      <glass>
        <!--ro, req, enum, 是否戴眼镜（废弃）, subType:string, [any#条件不限（搜索的时候使用）,no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->any
      </glass>
      <smile>
        <!--ro, req, enum, 是否微笑, subType:string, [no#不微笑,unknown#未知,yes#微笑]-->no
      </smile>
      <high_risk_group>
        <!--ro, opt, enum, 是否高危人群, subType:string, [yes#是,no#否,unknown#未知]-->yes
      </high_risk_group>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:, desc:以图索图时返回-->0.0
      </similarity>
      <Rect>
        <!--ro, opt, object, 匹配图片人脸目标子图坐标-->
        <height>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:左上角原点-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:左上角原点-->0.000
        </y>
      </Rect>
      <channelID>
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:, desc:目前仅后端支持-->1
      </channelID>
      <name>
        <!--ro, opt, string, 抓拍图片的名称, range:[,]-->test
      </name>
      <sex>
        <!--ro, opt, enum, 性别, subType:string, [male#男,female#女,unknown#未知]-->male
      </sex>
      <ageGroup>
        <!--ro, req, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->any
      </ageGroup>
      <mask>
        <!--ro, req, enum, 是否戴口罩, subType:string, [no#否,unknown#未知,yes#是]-->no
      </mask>
      <imageQuality>
        <!--ro, opt, int, 图片质量, range:[,], step:, unit:, unitType:-->1
      </imageQuality>
      <contrastStatus>
        <!--ro, opt, bool, 比对结果-->true
      </contrastStatus>
      <age>
        <!--ro, opt, int, 年龄, range:[1,255], step:, unit:, unitType:-->1
      </age>
      <targetID>
        <!--ro, opt, string, 目标ID, range:[1,48]-->test
      </targetID>
      <thermometryUnit>
        <!--ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文]-->celsius
      </thermometryUnit>
      <currTemperature>
        <!--ro, opt, float, 人脸温度, range:[-20.0,105.0], step:, unit:℃, unitType:温度, desc:与thermometryUnit测温单位配合使用-->36.7
      </currTemperature>
      <temperatureCondition>
        <!--ro, opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部,above#温度高于], desc:温度高于用于指定高于具体温度值搜索，温度值参数temperatureValue-->normal
      </temperatureCondition>
      <temperatureValue>
        <!--ro, opt, float, 温度值, range:[-20,105], step:, unit:℃, unitType:温度, dep:and,{$.FCSearchResult.MatchList[*].MatchElement.temperatureCondition,eq,above}-->37.2
      </temperatureValue>
      <alarmTemperature>
        <!--ro, opt, float, 报警温度阈值, range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alarmTemperature>
    </MatchElement>
  </MatchList>
</FCSearchResult>

53. 配置人脸比对报警信息打包

53.1 命令

POST /ISAPI/Intelligent/FDLib/FCSearch/dataPackage?format=json

53.2 输入参数

{
    "searchID":  "test",
    /*opt, string, 搜索记录唯一标识, range:[,], desc:在条件不变的情况下，searchID的内容不变*/
    "searchResultPosition":  0,
    /*req, int, 查询结果在结果列表中的起始位置, range:[0,4294967295], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
    "maxResultNumber":  100,
    /*req, int, 需要查询最大记录数, range:[1,4294967295], step:, unit:, unitType:*/
    "maxResults":  1,
    /*req, int, 单次返回(每页显示、打包)最大记录数, range:[1,100], step:, unit:, unitType:*/
    "FDID":  "aa,bb",
    /*req, string, 人脸库ID, range:[0,63], desc:-1表示所有, 多个库用逗号隔开*/
    "cameraID":  "aa,bb",
    /*opt, string, 监控点ID（通道ID）, range:[0,4095], desc:-1表示所有, 多个监控点用逗号隔开*/
    "snapStartTime":  "1970-01-01T00:00:00+08:00",
    /*opt, datetime, 抓拍开始时间*/
    "snapEndTime":  "1970-01-01T00:00:00+08:00",
    /*opt, datetime, 抓拍结束时间*/
    "maxSimilarity":  0.99,
    /*opt, float, 相似度最大值, range:[0.00,1.00], step:, unit:, unitType:*/
    "minSimilarity":  0.99,
    /*opt, float, 相似度最小值, range:[0.00,1.00], step:, unit:, unitType:*/
    "sortType":  "similarity",
    /*opt, enum, 排序类型, subType:string, [similarity#按相似度排序(默认),time#按时间排序,attendanceNumber#按签到次数排序]*/
    "Attendance": {
    /*opt, object, 考勤信息*/
        "Schedules": [
        /*opt, array, 考勤时间, subType:object, range:[,]*/
            {
                "startTime":  "00:00:00+08:00",
                /*opt, time, 起始时间*/
                "endTime":  "00:00:00+08:00",
                /*opt, time, 结束时间*/
                "dayOfWeek": [1, 2]
                /*opt, array, 上班周期, subType:int, range:[,], dep:and,{$.Attendance.type,eq,attendance}, desc:周一~周日，支持复选*/
            }
        ],
        "MatchFace": [
        /*opt, array, 匹配人脸信息, subType:object, range:[,]*/
            {
                "FDID":  "test",
                /*opt, string, 人脸库ID , range:[0,63]*/
                "PID":  "test"
                /*opt, string, 图片ID, range:[0,64]*/
            }
        ],
        "type":  "check-in"
        /*opt, enum, 模式切换 , subType:string, [attendance#考勤,check-in#签到]*/
    },
    "listType":  "blackList"
    /*opt, enum, 名单类型, subType:string, [blackList#非授权名单,whiteList#授权名单]*/
}

53.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[1,256]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "taskID":  "test"
    /*ro, opt, string, 打包的序列标示ID, range:[0,32], desc:通过该标识可以查询打包进度*/
}

54. 获取报警信息打包进度

54.1 命令

GET /ISAPI/Intelligent/FDLib/FCSearch/dataPackage/progress?format=json&taskID=<taskID>

54.2 输入参数

无

54.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[1,256]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "progress":  22,
    /*ro, opt, int, 打包进度, range:[0,100], step:, unit:, unitType:*/
    "URL":  "test"
    /*ro, opt, string, 打包成功后设备生成的存储URL, range:[1,128], desc:通过该URL可以访问下载数据文件*/
}

55. 配置停止数据打包

55.1 命令

PUT /ISAPI/Intelligent/FDLib/FCSearch/dataPackage/stop?format=json

55.2 输入参数

{
    "taskID ":  "test"
    /*req, string, 打包的序列标示ID, range:[1,32]*/
}

55.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

56. 获取1v1比对能力集

56.1 命令

GET /ISAPI/Intelligent/imagesComparision/face/capabilities?format=json

56.2 输入参数

无

56.3 输出参数

{
    "imagesComparision": {
    /*ro, opt, object, 图像对比*/
        "dataType":  "URL,modelData,binary",
        /*ro, opt, string, 数据类型, range:[,]*/
        "algorithmID": {
        /*ro, opt, object, 算法包标识ID*/
            "@min":  0,
            /*ro, opt, int, 最小长度, range:[,], step:, unit:, unitType:*/
            "@max":  64
            /*ro, opt, int, 最大长度, range:[,], step:, unit:, unitType:*/
        },
        "faceRect": {
        /*ro, opt, object, 图片中人脸框区域, desc:屏幕左上角为坐标原点*/
            "height": {
            /*ro, opt, object, 高度*/
                "@min":  0.000,
                /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000
                /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "width": {
            /*ro, opt, object, 宽度*/
                "@min":  0.000,
                /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000
                /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "x": {
            /*ro, opt, object, X坐标*/
                "@min":  0.000,
                /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000
                /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "y": {
            /*ro, opt, object, Y坐标*/
                "@min":  0.000,
                /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000
                /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
            }
        }
    }
}

57. 人脸1V1比对识别

57.1 命令

POST /ISAPI/Intelligent/imagesComparision/face

57.2 输入参数

{
    "dataType":  "URL",
    /*ro, opt, enum, 图片数据类型, subType:string, [URL#图片URL方式,modelData#模型数据,binary#图片二进制（提交时下发picData字段)], desc:(脸谱1.1.2Version不支持类型选择),datatype不传默认为URL格式*/
    "algorithmID":  "test",
    /*ro, opt, string, 算法包标识ID, range:[,]*/
    "TargetImage": {
    /*ro, req, object, 目标图片, desc:目标图片(图片大小要求小于8M, 格式支持: jpg, png, tif, bmp)*/
        "URL":  "test",
        /*ro, opt, string, 目标图片URL, range:[,256], desc:最大长度为256*/
        "targetModelData":  "test",
        /*ro, opt, string, 目标模型数据, range:[,], desc:最大长度2*1024字节*/
        "picData":  "base64转义的图片二进制数据",
        /*ro, opt, string, 图片数据, range:[,], desc:datatype为binary时必填，图片数据，base64转义，字符串传输*/
        "faceRect": {
        /*ro, opt, object, 图片中人脸框区域, desc:屏幕左上角为坐标原点*/
            "height":  0.810,
            /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
            "width":  0.430,
            /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
            "x":  0.130,
            /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
            "y":  0.870
            /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
        }
    },
    "ContrastImage": {
    /*ro, req, object, 对比图片, desc:对比图片(图片大小要求小于8M, 格式支持: jpg, png, tif, bmp)*/
        "URL":  "test",
        /*ro, opt, string, 对比图片URL, range:[,256], desc:最大长度为256*/
        "targetModelData":  "test",
        /*ro, opt, string, 目标模型数据, range:[,], desc:datatype为modelData时必填, 目标模型数据, string类型，最大长度2*1024字节*/
        "picData":  "base64转义的图片二进制数据",
        /*ro, opt, string, 图片数据, range:[,], desc:datatype为binary时必填，图片数据，base64转义，字符串传输*/
        "faceRect": {
        /*ro, opt, object, 图片中人脸框区域, desc:屏幕左上角为坐标原点*/
            "height":  0.810,
            /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
            "width":  0.430,
            /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
            "x":  0.130,
            /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
            "y":  0.870
            /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:归一化坐标, 精确度0.001*/
        }
    }
}

57.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "similarity":  1.0
    /*ro, opt, float, 相似度, range:[0,1], step:, unit:, unitType:*/
}

58. 获取手动触发人脸比对检测命令结果

58.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceContrast/analyze?customID=<customHumanID>

58.2 输入参数

无

58.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

59. 查询手动触发人脸比对结果

59.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceContrast/analyze/search?startTime=<time>&endTime=<time>

59.2 输入参数

无

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceContrastStatisticsList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <FaceContrastStatistics>
    <!--ro, opt, object, 未定义-->
    <beginTime>
      <!--ro, req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
    </beginTime>
    <endTime>
      <!--ro, req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
    </endTime>
    <FDID>
      <!--ro, opt, string, 人脸库ID, range:[,]-->test
    </FDID>
    <CustomID>
      <!--ro, opt, string, 自定义人员信息ID, range:[,], desc:平台给每个人脸一个自定义人员ID，以供上层管理；具体赋值规则如下：在导入人脸时，传入的人员附加信息中FaceAppendData->PersonInfoExtendList->PersonInfoExtend->name 、value字段如果赋值，且name字段为customID，此处CustomID为value字段的赋值。-->test
    </CustomID>
    <pictureURL>
      <!--ro, req, picurl, 图片URL-->http://127.0.0.1
    </pictureURL>
    <similarity>
      <!--ro, req, float, 相似度, range:[0.000,100.000], step:, unit:, unitType:-->0.000
    </similarity>
  </FaceContrastStatistics>
</FaceContrastStatisticsList>

60. 获取去误报统计模式配置能力

60.1 命令

GET /ISAPI/Intelligent/misinfoFilter/statisticalMode/capabilities?format=json

60.2 输入参数

无

60.3 输出参数

{
    "StatisticalModeCap": {
    /*ro, req, object, 统计模式信息*/
        "ChannelInfo": {
        /*ro, req, object, 通道信息*/
            "channelID": {
            /*ro, req, object, 支持统计模式配置的通道, desc:返回支持统计模式配置的通道，英文逗号进行分隔*/
                "@opt":  "1,2,3"
                /*ro, req, string, 选项, range:[,]*/
            },
            "channelName": {
            /*ro, opt, object, 通道名称*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  32,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "#text":  "12345"
                /*ro, opt, string, 示例, range:[,]*/
            },
            "targetType": {
            /*ro, req, object, 目标类型, desc:human-人体,vehicle-车辆,humanOrVehicle-人或车,none-无*/
                "@opt":  "human,vehicle,humanOrVehicle,none",
                /*ro, req, string, 选项, range:[,]*/
                "@text":  "none"
                /*ro, req, string, 示例, range:[,]*/
            }
        },
        "ReportInfo": {
        /*ro, req, object, 上报信息*/
            "type": {
            /*ro, req, object, 上报方式, desc:email-邮件,none-无（不上报）, string类型*/
                "@opt":  "email,none",
                /*ro, req, string, 选项, range:[,]*/
                "@text":  "none"
                /*ro, req, string, 示例, range:[,]*/
            },
            "period": {
            /*ro, req, object, 上报周期, desc:integer类型, [1,30]*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  30,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "#text":  5
                /*ro, opt, int, 示例, range:[,], step:, unit:, unitType:*/
            }
        }
    }
}

61. 获取去误报统计模式

61.1 命令

GET /ISAPI/Intelligent/misinfoFilter/statisticalMode?format=json

61.2 输入参数

无

61.3 输出参数

{
    "StatisticalMode": {
    /*ro, req, object, 统计模式信息*/
        "ChannelInfo": [
        /*ro, req, array, 通道信息, subType:object, range:[,]*/
            {
                "channelID":  "1",
                /*ro, req, string, 通道号, range:[,]*/
                "channelName":  "test",
                /*ro, opt, string, 通道名称, range:[,]*/
                "targetType":  "human"
                /*ro, req, enum, 目标类型, subType:string, [human#人体,vehicle#车辆,humanOrVehicle#人或车,none#无], desc:最大长度为32*/
            }
        ],
        "ReportInfo": {
        /*ro, req, object, 上报信息*/
            "type":  "email",
            /*ro, req, enum, 上报方式, subType:string, [email#邮件,none#无], desc:最大长度为32*/
            "period":  1
            /*ro, req, int, 上报周期, range:[1,30], step:, unit:, unitType:*/
        }
    }
}

62. 配置去误报统计模式

62.1 命令

PUT /ISAPI/Intelligent/misinfoFilter/statisticalMode?format=json

62.2 输入参数

{
    "StatisticalMode": {
    /*req, object, 统计模式信息*/
        "ChannelInfo": [
        /*req, array, 通道信息, subType:object, range:[,]*/
            {
                "channelID":  "1",
                /*req, string, 通道号, range:[,]*/
                "channelName":  "test",
                /*opt, string, 通道名称, range:[,]*/
                "targetType":  "human"
                /*req, enum, 目标类型, subType:string, [human#人体,vehicle#车辆,humanOrVehicle#人或车,none#无], desc:最大长度为32*/
            }
        ],
        "ReportInfo": {
        /*req, object, 上报信息*/
            "type":  "email",
            /*req, enum, 上报方式, subType:string, [email#邮件,none#无], desc:最大长度为32*/
            "period":  1
            /*req, int, 上报周期, range:[1,30], step:, unit:, unitType:*/
        }
    }
}

62.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

63. 获取人脸比对评分能力集

63.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceContrast/faceScore/capabilities?format=json

63.2 输入参数

无

63.3 输出参数

{
    "FaceScore": {
    /*ro, opt, object, 人脸评分参数*/
        "enable":  "true,false",
        /*ro, req, string, 功能开启使能, range:[,]*/
        "featureSimilarity": {
        /*ro, opt, object, 特征点相似度*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval": {
                /*ro, opt, object, 左区间*/
                    "@min":  0.0,
                    /*ro, opt, float, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  1.0,
                    /*ro, opt, float, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  0.5
                    /*ro, req, float, 值, range:[,], step:, unit:, unitType:*/
                },
                "rightInterval": {
                /*ro, opt, object, 右区间*/
                    "@min":  0.0,
                    /*ro, opt, float, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  1.0,
                    /*ro, opt, float, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  0.5
                    /*ro, req, float, 值, range:[,], step:, unit:, unitType:*/
                }
            }
        },
        "pupillaryDistance": {
        /*ro, opt, object, 瞳距*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval": {
                /*ro, opt, object, 左区间*/
                    "@min":  100,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  1000,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  400
                    /*ro, req, int, 值, range:[,], step:, unit:, unitType:*/
                },
                "rightInterval": {
                /*ro, opt, object, 右区间*/
                    "@min":  100,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  1000,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  400
                    /*ro, req, int, 值, range:[,], step:, unit:, unitType:*/
                }
            }
        },
        "pitchAngle": {
        /*ro, opt, object, 俯仰角*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval": {
                /*ro, opt, object, 左区间*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  90,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  45
                    /*ro, req, int, 值, range:[,], step:, unit:, unitType:*/
                },
                "rightInterval": {
                /*ro, opt, object, 右区间*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  90,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  45
                    /*ro, req, int, 值, range:[,], step:, unit:, unitType:*/
                }
            }
        },
        "yawAngle": {
        /*ro, opt, object, 左右角*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval": {
                /*ro, opt, object, 左区间*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  90,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  45
                    /*ro, req, int, 值, range:[,], step:, unit:, unitType:*/
                },
                "rightInterval": {
                /*ro, opt, object, 右区间*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  90,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  45
                    /*ro, req, int, 值, range:[,], step:, unit:, unitType:*/
                }
            }
        }
    }
}

64. 人脸评分配置（通道级）

64.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceContrast/faceScore?format=json

64.2 输入参数

无

64.3 输出参数

{
    "FaceScore": {
    /*ro, opt, object, 人脸评分参数*/
        "enable":  true,
        /*ro, req, bool, 功能开启使能*/
        "featureSimilarity": {
        /*ro, opt, object, 特征点相似度*/
            "medium": {
            /*ro, opt, object, 中分值, desc:float类型，保留一位小数*/
                "leftInterval":  0.1,
                /*ro, req, float, 左区间, range:[,], step:, unit:, unitType:, desc:float类型，保留一位小数*/
                "rightInterval":  0.2
                /*ro, req, float, 右区间, range:[,], step:, unit:, unitType:, desc:float类型，保留一位小数*/
            }
        },
        "pupillaryDistance": {
        /*ro, opt, object, 瞳距*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval":  100,
                /*ro, req, int, 左区间, range:[,], step:, unit:, unitType:*/
                "rightInterval":  200
                /*ro, req, int, 右区间, range:[,], step:, unit:, unitType:*/
            }
        },
        "pitchAngle": {
        /*ro, opt, object, 俯仰角*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval":  0,
                /*ro, req, int, 左区间, range:[,], step:, unit:°, unitType:平面角, desc:单位：度*/
                "rightInterval":  90
                /*ro, req, int, 右区间, range:[,], step:, unit:°, unitType:平面角, desc:单位：度*/
            }
        },
        "yawAngle": {
        /*ro, opt, object, 左右角*/
            "medium": {
            /*ro, opt, object, 中分值*/
                "leftInterval":  0,
                /*ro, req, int, 左区间, range:[,], step:, unit:°, unitType:平面角*/
                "rightInterval":  90
                /*ro, req, int, 右区间, range:[,], step:, unit:°, unitType:平面角*/
            }
        }
    }
}

65. 配置人脸评分参数（通道级）

65.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/faceContrast/faceScore?format=json

65.2 输入参数

{
    "FaceScore": {
    /*opt, object, 人脸评分参数*/
        "enable":  true,
        /*req, bool, 功能开启使能*/
        "featureSimilarity": {
        /*opt, object, 特征点相似度*/
            "medium": {
            /*opt, object, 中分值, desc:float类型，保留一位小数*/
                "leftInterval":  0.1,
                /*req, float, 左区间, range:[,], step:, unit:, unitType:, desc:float类型，保留一位小数*/
                "rightInterval":  0.2
                /*req, float, 右区间, range:[,], step:, unit:, unitType:, desc:float类型，保留一位小数*/
            }
        },
        "pupillaryDistance": {
        /*opt, object, 瞳距*/
            "medium": {
            /*opt, object, 中分值*/
                "leftInterval":  100,
                /*req, int, 左区间, range:[,], step:, unit:, unitType:*/
                "rightInterval":  200
                /*req, int, 右区间, range:[,], step:, unit:, unitType:*/
            }
        },
        "pitchAngle": {
        /*opt, object, 俯仰角*/
            "medium": {
            /*opt, object, 中分值*/
                "leftInterval":  0,
                /*req, int, 左区间, range:[,], step:, unit:°, unitType:平面角, desc:单位：度*/
                "rightInterval":  90
                /*req, int, 右区间, range:[,], step:, unit:°, unitType:平面角, desc:单位：度*/
            }
        },
        "yawAngle": {
        /*opt, object, 左右角*/
            "medium": {
            /*opt, object, 中分值*/
                "leftInterval":  0,
                /*req, int, 左区间, range:[,], step:, unit:°, unitType:平面角*/
                "rightInterval":  90
                /*req, int, 右区间, range:[,], step:, unit:°, unitType:平面角*/
            }
        }
    }
}

65.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

66. 获取人脸比对提示语配置能力集

66.1 命令

GET /ISAPI/Intelligent/FDLib/prompt/capabilities?format=json

66.2 输入参数

无

66.3 输出参数

{
    "faceContrastPromptLen": {
    /*ro, opt, object, 人脸比对失败提示语长度,
    desc:支持中英文，限制16个字节，8个汉字；
    配置生效后，会在人脸比对报警中（eventType：alarmResult）通过prompt字段上报*/
        "@min":  "0",
        /*ro, req, string, 最小值, range:[0,16]*/
        "@max":  "16"
        /*ro, req, string, 最大值, range:[0,16]*/
    },
    "whiteListFaceContrastPromptLen": {
    /*ro, opt, object, 授权名单人脸比对提示语长度,
    desc:支持中英文，限制16个字节，8个汉字；
    配置生效后，会在人脸比对报警中（eventType：alarmResult）通过prompt字段上报*/
        "@min":  "0",
        /*ro, req, string, 最小值, range:[0,16]*/
        "@max":  "16"
        /*ro, req, string, 最大值, range:[0,16]*/
    }
}

67. 获取人脸比对失败提示语

67.1 命令

GET /ISAPI/Intelligent/FDLib/faceContrastPrompt/channels/<channelID>?format=json

67.2 输入参数

无

67.3 输出参数

{
    "prompt":  "test"
    /*ro, req, string, 提示语, range:[0,16],
    desc:支持中英文，限制16个字节，8个汉字；
    配置生效后，会在人脸比对报警中（eventType：alarmResult）通过prompt字段上报*/
}

68. 配置人脸比对失败提示语

68.1 命令

PUT /ISAPI/Intelligent/FDLib/faceContrastPrompt/channels/<channelID>?format=json

68.2 输入参数

{
    "prompt":  "test"
    /*req, string, 提示语, range:[0,16],
    desc:支持中英文，限制16个字节，8个汉字；
    配置生效后，会在人脸比对报警中（eventType：alarmResult）通过prompt字段上报*/
}

68.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

69. 获取陌生人比对成功提示语

69.1 命令

GET /ISAPI/Intelligent/FDLib/whiteListFaceContrastPrompt/channels/<channelID>?format=json

69.2 输入参数

无

69.3 输出参数

{
    "prompt":  "test"
    /*ro, req, string, 提示语, range:[0,16],
    desc:支持中英文，限制16个字节，8个汉字；
    配置生效后，会在人脸比对报警中（eventType：alarmResult）通过prompt字段上报*/
}

70. 配置陌生人比对成功提示语

70.1 命令

PUT /ISAPI/Intelligent/FDLib/whiteListFaceContrastPrompt/channels/<channelID>?format=json

70.2 输入参数

{
    "prompt":  "test"
    /*req, string, 提示语, range:[0,16],
    desc:支持中英文，限制16个字节，8个汉字；
    配置生效后，会在人脸比对报警中（eventType：alarmResult）通过prompt字段上报*/
}

70.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

71. 获取人脸抓拍库检索能力集

71.1 命令

GET /ISAPI/SDT/Face/captureSearch/capabilities

71.2 输入参数

无

71.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, req, int, 状态码, range:[,], step:, unit:, unitType:*/
    "statusString":  "test",
    /*ro, req, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, req, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, opt, string, 错误详细信息, range:[,], desc:当statusCode不为1时,必填,能具体到某一个参数的错误*/
    "startTime":  "2004-05-03T17:30:08+08:00 ",
    /*ro, req, datetime, 支持检索的起始时间, desc:ISO8601_time格式*/
    "endTime":  "2004-05-03T17:30:08+08:00 ",
    /*ro, req, datetime, 支持检索的结束时间, desc:ISO8601_time格式*/
    "channelNum":  100,
    /*ro, req, int, 支持可选择的监控点数量, range:[,], step:, unit:, unitType:, desc:integer32类型*/
    "resultMaxNum":  500,
    /*ro, req, int, 支持检索的最大数量, range:[,], step:, unit:, unitType:, desc:integer32类型*/
    "ageGroup": [
    /*ro, opt, array, 年龄段, subType:object, range:[,], desc:取值详见属性参数取值字典*/
        {
            "value":  "child"
            /*ro, opt, string, 枚举值, range:[,]*/
        }
    ],
    "gender": [
    /*ro, req, array, 性别, subType:object, range:[,], desc:取值详见属性参数取值字典*/
        {
            "value":  "male"
            /*ro, opt, string, 枚举值, range:[,]*/
        }
    ],
    "glasses": [
    /*ro, req, array, 是否戴眼镜, subType:object, range:[,], desc:取值详见属性参数取值字典*/
        {
            "value":  "yes"
            /*ro, opt, string, 枚举值, range:[,]*/
        }
    ],
    "smile": [
    /*ro, req, array, 是否微笑, subType:object, range:[,], desc:取值详见属性参数取值字典*/
        {
            "value":  "yes"
            /*ro, opt, string, 枚举值, range:[,]*/
        }
    ],
    "isInLibrary": [
    /*ro, req, array, 是否入库状态, subType:object, range:[,], desc:即按建模是否成功来进行查询*/
        {
            "value":  "yes"
            /*ro, opt, string, 枚举值 , range:[,]*/
        }
    ],
    "generateMaxNum":  1234,
    /*ro, req, int, 最大导出条数, range:[,], step:, unit:, unitType:, desc:integer32类型*/
    "FDID": {
    /*ro, opt, object, 人脸库ID*/
        "@min":  0,
        /*ro, opt, int, 最小值 , range:[,], step:, unit:, unitType:*/
        "@max":  0
        /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
    },
    "FPID": {
    /*ro, opt, object, 人脸记录ID*/
        "@min":  0,
        /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
        "@max":  0
        /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
    },
    "FaceModeCap": {
    /*ro, opt, object, 以图搜图能力*/
        "modeDataMaxNum":  1,
        /*ro, req, int, 以图搜图支持建模数据个数, range:[,], step:, unit:, unitType:, desc:integer32类型*/
        "similarity": {
        /*ro, req, object, 以图搜图相似度, desc:integer32类型*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[0,100], step:, unit:, unitType:*/
            "@max":  1
            /*ro, opt, int, 最大值, range:[0,100], step:, unit:, unitType:*/
        }
    },
    "LocalDataPackage": {
    /*ro, opt, object, 本地导出能力*/
        "filePath": {
        /*ro, opt, object, 导出文件路径长度范围 , desc:integer32类型*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[1,256], step:, unit:, unitType:*/
            "@max":  256
            /*ro, opt, int, 最大值, range:[1,256], step:, unit:, unitType:*/
        },
        "commandType": {
        /*ro, opt, object, 导出时支持的操作类型, desc:pause-暂停,resume-继续,delete-删除（不能获取当前结果）,getProgress-获取进度,cancel-取消（仍然可以获取当前结果）*/
            "@opt": ["pause", "resume", "delete", "getProgress", "cancel"]
            /*ro, opt, array, 可选值, subType:string, range:[,]*/
        }
    },
    "mask": {
    /*ro, opt, object, 是否支持口罩的所有枚举*/
        "@opt": ["unknown", "yes", "no"]
        /*ro, opt, array, 可选值 , subType:string, range:[,]*/
    },
    "linkFaceBodyId": {
    /*ro, opt, object, 人脸人体关联id, desc:长度64字节*/
        "@min":  0,
        /*ro, opt, int, 最小值, range:[0,64], step:, unit:, unitType:*/
        "@max":  64
        /*ro, opt, int, 最大值 , range:[0,64], step:, unit:, unitType:*/
    },
    "thermometryUnit": {
    /*ro, opt, object, 测温单位, desc:"celsius"摄氏度，"fahrenheit"华氏度，"kelvin"开尔文*/
        "@opt": ["celsius", "fahrenheit", "kelvin"],
        /*ro, opt, array, 可选值 , subType:string, range:[,]*/
        "#text":  "celsius"
        /*ro, opt, string, 最大值, range:[,]*/
    },
    "currTemperature": {
    /*ro, opt, object, 人脸温度, desc:（-20.0℃~150.0℃，精确到小数点后1位）*/
        "@min":  0.0,
        /*ro, opt, float, 最小值, range:[0.0,150.0], step:, unit:, unitType:*/
        "@max":  150.0
        /*ro, opt, float, 最大值 , range:[0.0,150.0], step:, unit:, unitType:*/
    },
    "temperatureCondition": {
    /*ro, opt, object, 人脸测温温度状况 , desc:normal-正常 abnormal-异常 all-全部*/
        "@opt": ["normal", "abnormal", "all"],
        /*ro, opt, array, 可选值, subType:string, range:[,]*/
        "#text":  "abnormal"
        /*ro, opt, string, 默认值, range:[,]*/
    },
    "exportTrainingData": {
    /*ro, opt, object, 导出为训练数据格式, desc:没有该节点表示设备的默认行为导出（主要是用于用户存储）,有该节点表示同时支持其他类型的数据导出*/
        "@opt": [true, false]
        /*ro, opt, array, 可选值 , subType:bool, range:[,]*/
    }
}

72. 按属性检索人脸抓拍库

72.1 命令

POST /ISAPI/SDT/Face/captureSearch

72.2 输入参数

{
    "searchID":  "test",
    /*opt, string, 搜索记录唯一标识, range:[,], desc:在条件不变的情况下,searchID的内容不变*/
    "searchResultPosition":  0,
    /*req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
    "maxResults":  100,
    /*req, int, 本次查询最大记录数, range:[,], step:, unit:, unitType:*/
    "startTime":  "2004-05-03T17:30:08Z",
    /*opt, datetime, 检索的起始时间, desc:这里不采用+08:00格式,因为设备是按照字符串解析的,按照utc时间解析yyyy-MM-ddTHH:mm:ss*/
    "endTime":  "2004-05-03T17:30:08Z",
    /*opt, datetime, 检索的结束时间, desc:这里不采用+08:00格式,因为设备是按照字符串解析的,按照utc时间解析yyyy-MM-ddTHH:mm:ss*/
    "choiceChannel": [
    /*opt, array, 选择的监控点列表, subType:object, range:[,]*/
        {
            "channelID":  "1"
            /*opt, string, 监控点ID, range:[,]*/
        }
    ],
    "ageGroup":  "child",
    /*opt, string, 年龄段, range:[,], desc:取值详见属性参数取值字典*/
    "gender":  "male",
    /*opt, string, 性别, range:[,], desc:取值详见属性参数取值字典*/
    "glasses":  "yes",
    /*opt, string, 是否戴眼镜, range:[,], desc:取值详见属性参数取值字典*/
    "smile":  "yes",
    /*opt, string, 是否微笑, range:[,], desc:取值详见属性参数取值字典*/
    "isInLibrary":  "yes",
    /*opt, string, 是否入库(即按建模是否成功来进行查询), range:[,], desc:状态: unknown-未知, no-未入库, yes-已入库, string类型*/
    "mask":  "yes",
    /*opt, string, 是否戴口罩, range:[,], desc:取值详见属性参数取值字典*/
    "FPID":  "123",
    /*opt, string, 人脸记录ID, range:[,]*/
    "rowKey":  "123",
    /*opt, string, 人脸记录数据库主键, range:[,], desc:根据rowKey进行查询,能提高查找效率*/
    "FaceMode": [
    /*opt, array, 建模数据列表, subType:object, range:[,]*/
        {
            "similarity":  0,
            /*req, int, 以图搜图相似度, range:[0,100], step:, unit:, unitType:*/
            "modelData":  "test"
            /*req, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理*/
        }
    ],
    "linkFaceBodyId":  "XXX",
    /*opt, string, 人脸人体关联id, range:[0,64]*/
    "thermometryUnit":  "celsius",
    /*opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文]*/
    "currTemperature":  38.0,
    /*opt, float, 人脸温度, range:[-20.0,150.0], step:, unit:, unitType:, desc:精确到小数点后1位*/
    "temperatureCondition":  "normal"
    /*opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部]*/
}

72.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, req, int, 状态码, range:[,], step:, unit:, unitType:*/
    "statusString":  "test",
    /*ro, req, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, req, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, opt, int, 当statusCode不为1时, range:[,], step:, unit:, unitType:*/
    "errorMsg":  "ok",
    /*ro, opt, string, 当statusCode不为1时, range:[,]*/
    "responseStatusStrg":  "OK",
    /*ro, req, enum, 返回状态, subType:string, [OK#OK,NO_MATCHES#未匹配到,MORE#还有更多]*/
    "numOfMatches":  1,
    /*ro, req, int, 本次返回匹配条数, range:[,], step:, unit:, unitType:*/
    "totalMatches":  1,
    /*ro, req, int, 本次搜索总匹配条数, range:[,], step:, unit:, unitType:*/
    "progress":  100,
    /*ro, opt, int, 进度, range:[0,100], step:, unit:, unitType:*/
    "targets": [
    /*ro, opt, array, 目标列表, subType:object, range:[,]*/
        {
            "id":  1,
            /*ro, req, int, 序号, range:[,], step:, unit:, unitType:*/
            "captureTime":  "2004-05-03T17:30:08+08:00",
            /*ro, opt, string, 抓拍时间, range:[,]*/
            "isSummerTime":  false,
            /*ro, opt, bool, 当前返回时间是否为夏令时*/
            "deviceType":  0,
            /*ro, opt, int, 监控点设备类型, range:[,], step:, unit:, unitType:*/
            "deviceId":  "test",
            /*ro, opt, string, 监控点设备Id值, range:[,]*/
            "captureSite":  "3#大门处",
            /*ro, opt, string, 抓拍地点(即监控点名称), range:[,]*/
            "monitorId":  "1",
            /*ro, opt, string, 流ID（CVR中的编码器流ID）, range:[,]*/
            "ageGroup":  "child",
            /*ro, opt, string, 年龄段, range:[,]*/
            "gender":  "male",
            /*ro, opt, string, 性别, range:[,]*/
            "glasses":  "yes",
            /*ro, opt, string, 是否戴眼镜, range:[,]*/
            "smile":  "yes",
            /*ro, opt, string, 是否微笑, range:[,]*/
            "mask":  "unknown",
            /*ro, opt, string, 口罩, range:[,]*/
            "isInLibrary":  "yes",
            /*ro, opt, string, 是否入库(建模是否成功)状态, range:[,]*/
            "picUrl":  "xxx",
            /*ro, opt, string, 背景大图URL, range:[,]*/
            "subpicUrl":  "xxx",
            /*ro, req, string, 人脸小图URL, range:[,]*/
            "traceUuid":  "xxxxxxxx",
            /*ro, opt, string, 目标ID, range:[,]*/
            "traceIdx":  1,
            /*ro, opt, int, 同一个人的一批图片中的具体第几张, range:[,], step:, unit:, unitType:*/
            "rect": {
            /*ro, opt, object, 人脸矩形框, desc:屏幕左上角为坐标原点*/
                "height":  0.000,
                /*ro, opt, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                "width":  0.000,
                /*ro, opt, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                "x":  0.000,
                /*ro, opt, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "y":  0.000
                /*ro, opt, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "face_pose": {
            /*ro, opt, object, 人脸角度*/
                "pitch":  0.514,
                /*ro, opt, float, 平面外上下俯仰角, range:[,], step:, unit:, unitType:*/
                "yaw":  0.2909,
                /*ro, opt, float, 平面外左右偏转角, range:[,], step:, unit:, unitType:*/
                "roll":  0.3669
                /*ro, opt, float, 平面内旋转角, range:[,], step:, unit:, unitType:*/
            },
            "face_rect": {
            /*ro, opt, object, 人脸小图矩形框, desc:屏幕左上角为坐标原点*/
                "height":  0.000,
                /*ro, opt, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                "width":  0.000,
                /*ro, opt, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                "x":  0.000,
                /*ro, opt, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "y":  0.000
                /*ro, opt, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "FDID":  "test",
            /*ro, opt, string, 人脸库ID, range:[,]*/
            "FPID":  " ",
            /*ro, opt, string, 人脸记录ID, range:[,]*/
            "rowKey":  "test",
            /*ro, opt, string, 人脸记录数据库主键, range:[,]*/
            "similarity":  0,
            /*ro, opt, int, 相似度, range:[,], step:, unit:, unitType:*/
            "thermometryUnit":  "celsius",
            /*ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度fahrenheit,kelvin#开尔文]*/
            "currTemperature":  38.0,
            /*ro, opt, float, string, range:[,], step:, unit:, unitType:*/
            "temperatureCondition":  "normal",
            /*ro, opt, enum, 人脸测温温度状况, subType:string, [normal#正常,abnormal#异常,all#全部]*/
            "linkFaceBodyId":  "XXX",
            /*ro, opt, string, 人脸人体关联id, range:[,]*/
            "monitorPointID":  "test",
            /*ro, opt, string, 监控点ID, range:[,]*/
            "Human": {
            /*ro, opt, object, 人体信息*/
                "TargetRect": {
                /*ro, req, object, 目标框, desc:屏幕左上角为坐标原点*/
                    "height":  0.000,
                    /*ro, opt, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "width":  0.000,
                    /*ro, opt, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "x":  0.000,
                    /*ro, opt, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.000
                    /*ro, opt, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "picUrl":  "test",
                /*ro, opt, string, 大图URL, range:[,], desc:引擎会收到两张图片（人脸和人体）进行分析，但是会对人脸和人体进行一一对应*/
                "subPicUrl":  "test"
                /*ro, opt, string, 小图URL, range:[,]*/
            }
        }
    ]
}

73. 获取人脸抓拍识别通道智能资源能力

73.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/intelliResource/capabilities

73.2 输入参数

无

73.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelliResourceCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能资源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <BehaviorInfo>
    <!--ro, opt, object, 异常行为识别信息-->
    <IntelliImage>
      <!--ro, opt, object, 智能图像-->
      <isUpload opt="true,false">
        <!--ro, req, bool, 是否上传图片, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isUpload>
      <imgQuality opt="best,good,general">
        <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般], attr:opt{req, string, 取值范围, range:[,]}-->best
      </imgQuality>
      <isSupportImgResolutionCfg>
        <!--ro, opt, bool, 是否支持图片分辨率配置-->true
      </isSupportImgResolutionCfg>
      <isImgTargetOverlap opt="true,false">
        <!--ro, req, bool, 是否支持叠加目标信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isImgTargetOverlap>
      <isImgRuleOverlap opt="true,false">
        <!--ro, req, bool, 是否支持叠加规则信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isImgRuleOverlap>
      <imgResolutionWidth opt="704,1280,1920">
        <!--ro, req, string, 分辨率宽度值, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </imgResolutionWidth>
      <imgResolutionHeight opt="576,720,1080">
        <!--ro, req, string, 分辨率高度值, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </imgResolutionHeight>
      <isImgSizeOverlap opt="true,false">
        <!--ro, opt, bool, 是否支持叠加尺寸信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isImgSizeOverlap>
    </IntelliImage>
    <VideoOverlapInfo>
      <!--ro, opt, object, 视频叠加信息-->
      <isOverlapIntelli opt="true,false">
        <!--ro, req, bool, 是否叠加智能信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapIntelli>
      <isOverlapTarget opt="true,false">
        <!--ro, req, bool, 是否叠加目标信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapTarget>
      <isOverlapRule opt="true,false">
        <!--ro, req, bool, 是否叠加规则信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapRule>
    </VideoOverlapInfo>
    <IntelliAnalysisEnable opt="true,false">
      <!--ro, req, bool, 是否开启智能分析, attr:opt{req, string, 取值范围, range:[,]}-->true
    </IntelliAnalysisEnable>
    <DisplayTrajectory>
      <!--ro, opt, object, 目标路径叠加-->
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <durationLimit opt="5s,10s,20s,30s">
        <!--ro, opt, string, 最长叠加时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </durationLimit>
    </DisplayTrajectory>
    <targetMarkingColorEnabled opt="true,false">
      <!--ro, req, bool, 属性分类颜色开启使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </targetMarkingColorEnabled>
  </BehaviorInfo>
  <FaceCaptureInfo>
    <!--ro, opt, object, 人脸抓拍信息-->
    <imgQuality opt="best,good,general">
      <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般], attr:opt{req, string, 取值范围, range:[,]}-->best
    </imgQuality>
    <isImgTargetOverlap opt="true,false">
      <!--ro, req, bool, 是否叠加目标信息, attr:opt{req, string, 取值范围, range:[,]}-->true
    </isImgTargetOverlap>
    <VideoOverlapInfo>
      <!--ro, opt, object, 视频叠加信息-->
      <isOverlapIntelli opt="true,false">
        <!--ro, req, bool, 是否叠加智能信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapIntelli>
      <isOverlapTarget opt="true,false">
        <!--ro, opt, bool, 是否叠加目标信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapTarget>
      <isOverlapRule opt="true,false">
        <!--ro, opt, bool, 是否叠加规则信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapRule>
    </VideoOverlapInfo>
    <backgroundUpload opt="true,false">
      <!--ro, opt, bool, 是否上传背景图片, attr:opt{req, string, 取值范围, range:[,]}-->true
    </backgroundUpload>
    <imgResolutionWidth opt="1280,1280,1920,2560,3072,3840">
      <!--ro, req, string, 分辨率宽度值, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </imgResolutionWidth>
    <imgResolutionHeight opt="720,960,1080,1440,1720,2160">
      <!--ro, req, string, 分辨率高度值, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </imgResolutionHeight>
    <TargetImgInfoCap>
      <!--ro, opt, object, 目标抓图相关配置能力-->
      <targetImgType opt="custom,head,headShoulders,human">
        <!--ro, opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#头肩照,human#人体（全身）照], attr:opt{req, string, 取值范围, range:[,]}-->custom
      </targetImgType>
      <TargetImgSize>
        <!--ro, opt, object, 目标图抓图大小, desc:当targetImgType == custom时生效-->
        <widthRatio min="1.0" max="5.0">
          <!--ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </widthRatio>
        <upperPartHeightRatio min="1.0" max="3.0">
          <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以上部分-->0.000
        </upperPartHeightRatio>
        <underPartHeightRatio min="0.000" max="10.0">
          <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以下部分-->0.000
        </underPartHeightRatio>
      </TargetImgSize>
      <fixedPixelEnable opt="true,false">
        <!--ro, opt, bool, 目标抓图固定像素使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </fixedPixelEnable>
      <heightPixel min="50" max="1000" def="100">
        <!--ro, opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:当fixedPixelEnable == true时生效-->1
      </heightPixel>
      <HeadTargetImgSizeCap>
        <!--ro, opt, object, 大头照尺寸能力-->
        <widthRatio>
          <!--ro, opt, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
        </widthRatio>
        <upperPartHeightRatio>
          <!--ro, opt, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
        </upperPartHeightRatio>
        <underPartHeightRatio>
          <!--ro, opt, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
        </underPartHeightRatio>
      </HeadTargetImgSizeCap>
      <HeadShouldersTargetImgSizeCap>
        <!--ro, opt, object, 上半身照即头肩照尺寸能力-->
        <widthRatio>
          <!--ro, opt, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
        </widthRatio>
        <upperPartHeightRatio>
          <!--ro, opt, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
        </upperPartHeightRatio>
        <underPartHeightRatio>
          <!--ro, opt, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
        </underPartHeightRatio>
      </HeadShouldersTargetImgSizeCap>
      <HumanShouldersTargetImgSizeCap>
        <!--ro, opt, object, 全身照尺寸能力-->
        <widthRatio>
          <!--ro, opt, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
        </widthRatio>
        <upperPartHeightRatio>
          <!--ro, opt, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
        </upperPartHeightRatio>
        <underPartHeightRatio>
          <!--ro, opt, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
        </underPartHeightRatio>
      </HumanShouldersTargetImgSizeCap>
      <FaceBeautification>
        <!--ro, opt, object, 人脸美颜-->
        <enabled opt="true,false" def="false">
          <!--ro, opt, bool, 是否开启美颜功能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->true
        </enabled>
        <level min="0" max="100" def="50">
          <!--ro, opt, int, 美颜级别配置范围, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认50-->1
        </level>
      </FaceBeautification>
      <faceEnhancement opt="true,false" def="false">
        <!--ro, opt, bool, 是否开启人脸增强, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:增强人脸抓拍小图的清晰度,默认:false-->true
      </faceEnhancement>
    </TargetImgInfoCap>
    <backgroundIntervalUpload min="0" max="65535">
      <!--ro, opt, int, 人脸抓拍图片上传时间间隔, range:[0,65534], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:该配置主要针对流量和存储敏感的用户（互联网接入）；场景中触发人脸温度报警的时候，无视该字段配置；场景中没有人脸出现，无视该字段配置；当值为0的时候，实时抓拍人脸上传。当<backgroundUpload> == false 的时候，<backgroundIntervalUpload>字段设置无效。-->1
    </backgroundIntervalUpload>
  </FaceCaptureInfo>
  <isSupportAlgVersionInfoCfg>
    <!--ro, opt, bool, 是否支持算法库版本信息配置-->true
  </isSupportAlgVersionInfoCfg>
  <AlgVersionInfo>
    <!--ro, opt, object, 算法库版本信息-->
    <AlgItem>
      <!--ro, opt, object, 算法库-->
      <id>
        <!--ro, opt, string, 索引, range:[,]-->test
      </id>
      <algName>
        <!--ro, opt, string, 算法库名称, range:[,]-->test
      </algName>
    </AlgItem>
  </AlgVersionInfo>
  <JudiciaryInfo>
    <!--ro, opt, object, 司法信息-->
    <IntelliImage>
      <!--ro, req, string, 智能图像, range:[,]-->test
      <isUpload opt="true,false">
        <!--ro, req, bool, 是否上传图片, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isUpload>
      <imgQuality opt="best,good,general">
        <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般], attr:opt{req, string, 取值范围, range:[,]}-->best
      </imgQuality>
      <isSupportImgResolutionCfg>
        <!--ro, opt, bool, 是否支持图片分辨率配置-->true
      </isSupportImgResolutionCfg>
    </IntelliImage>
    <VideoOverlapInfo>
      <!--ro, opt, object, 视频叠加信息-->
      <isOverlapIntelli opt="true,false">
        <!--ro, req, bool, 是否叠加智能信息, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isOverlapIntelli>
    </VideoOverlapInfo>
  </JudiciaryInfo>
  <QRCodeUrl>
    <!--ro, opt, object, 二维码信息, desc:设备支持的所有用来生成二维码图片的Url，接收端可以根据Url生成二维码，用户扫码可以读取文档、演示视频等；录制的演示视频会提醒用户以实际设备为准，后续更新配置界面后，会重新录制视频，并更新上传的Url-->
    <vcaVideoQRCodeUrl>
      <!--ro, opt, string, 放置异常行为识别演示视频Url, range:[1,256]-->test
    </vcaVideoQRCodeUrl>
  </QRCodeUrl>
</IntelliResourceCap>

74. 获取人脸抓拍识别通道智能资源配置

74.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/intelliResource

74.2 输入参数

无

74.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelliResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 智能资源, attr:version{req, string, 协议版本, range:[,]}-->
  <BehaviorInfo>
    <!--ro, opt, object, 异常行为识别信息-->
    <IntelliImage>
      <!--ro, opt, object, 智能图像-->
      <isUpload>
        <!--ro, req, bool, 是否上传图片-->true
      </isUpload>
      <imgQuality>
        <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
      </imgQuality>
      <imgResolutionWidth>
        <!--ro, req, int, 分辨率宽度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionWidth>
      <imgResolutionHeight>
        <!--ro, req, int, 分辨率高度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionHeight>
      <isImgTargetOverlap>
        <!--ro, req, bool, 是否叠加目标信息-->true
      </isImgTargetOverlap>
      <isImgRuleOverlap>
        <!--ro, req, bool, 是否叠加规则信息-->true
      </isImgRuleOverlap>
      <isImgSizeOverlap>
        <!--ro, opt, bool, 是否叠加尺寸信息-->bool
      </isImgSizeOverlap>
    </IntelliImage>
    <VideoOverlapInfo>
      <!--ro, opt, object, 视频叠加信息-->
      <isOverlapIntelli>
        <!--ro, req, bool, 是否叠加智能信息-->true
      </isOverlapIntelli>
      <isOverlapTarget>
        <!--ro, req, bool, 是否叠加目标信息-->true
      </isOverlapTarget>
      <isOverlapRule>
        <!--ro, req, bool, 是否叠加规则信息-->true
      </isOverlapRule>
    </VideoOverlapInfo>
    <IntelliAnalysisEnable>
      <!--ro, req, bool, 是否开启智能分析-->true
    </IntelliAnalysisEnable>
    <DisplayTrajectory>
      <!--ro, opt, object, 目标路径叠加-->
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <durationLimit>
        <!--ro, opt, enum, 最长叠加时间, subType:int, [5#5,10#10,20#20,30#30], desc:单位：秒-->5
      </durationLimit>
    </DisplayTrajectory>
    <targetMarkingColorEnabled>
      <!--ro, req, bool, 属性分类颜色开启使能-->true
    </targetMarkingColorEnabled>
  </BehaviorInfo>
  <FaceCaptureInfo>
    <!--ro, opt, object, 人脸抓拍信息-->
    <imgQuality>
      <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
    </imgQuality>
    <isImgTargetOverlap>
      <!--ro, req, bool, 是否叠加目标信息-->true
    </isImgTargetOverlap>
    <VideoOverlapInfo>
      <!--ro, opt, object, 视频叠加信息-->
      <isOverlapIntelli>
        <!--ro, req, bool, 是否叠加智能信息-->true
      </isOverlapIntelli>
      <isOverlapTarget>
        <!--ro, opt, bool, 是否叠加目标信息-->true
      </isOverlapTarget>
      <isOverlapRule>
        <!--ro, opt, bool, 是否叠加规则信息-->true
      </isOverlapRule>
    </VideoOverlapInfo>
    <backgroundUpload>
      <!--ro, opt, bool, 是否上传背景图片-->true
    </backgroundUpload>
    <imgResolutionWidth>
      <!--ro, req, int, 分辨率宽度值, range:[,], step:, unit:, unitType:-->1
    </imgResolutionWidth>
    <imgResolutionHeight>
      <!--ro, req, int, 分辨率高度值, range:[,], step:, unit:, unitType:-->1
    </imgResolutionHeight>
    <TargetImgInfo>
      <!--ro, opt, object, 目标抓图相关配置-->
      <targetImgType>
        <!--ro, opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#头肩照,human#人体（全身）照]-->custom
      </targetImgType>
      <TargetImgSize>
        <!--ro, opt, object, 目标图抓图大小, desc:当targetImgType == custom时生效-->
        <widthRatio>
          <!--ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
        </widthRatio>
        <upperPartHeightRatio>
          <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
        </upperPartHeightRatio>
        <underPartHeightRatio>
          <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
        </underPartHeightRatio>
      </TargetImgSize>
      <fixedPixelEnable>
        <!--ro, opt, bool, 目标抓图固定像素使能-->true
      </fixedPixelEnable>
      <heightPixel>
        <!--ro, opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, desc:当fixedPixelEnable == true时生效-->1
      </heightPixel>
      <FaceBeautification>
        <!--ro, opt, object, 人脸美颜-->
        <enabled>
          <!--ro, opt, bool, 是否开启美颜功能-->true
        </enabled>
        <level>
          <!--ro, opt, int, 美颜级别配置范围, range:[0,100], step:, unit:, unitType:, desc:默认50-->1
        </level>
      </FaceBeautification>
      <faceEnhancement>
        <!--ro, opt, bool, 是否开启人脸增强, desc:增强人脸抓拍小图的清晰度,默认:false-->true
      </faceEnhancement>
    </TargetImgInfo>
    <backgroundIntervalUpload>
      <!--ro, opt, int, 人脸抓拍图片上传时间间隔, range:[0,65534], step:, unit:s, unitType:时间, desc:该配置主要针对流量和存储敏感的用户（互联网接入）；场景中触发人脸温度报警的时候，无视该字段配置；场景中没有人脸出现，无视该字段配置；当值为0的时候，实时抓拍人脸上传。当<backgroundUpload> == false 的时候，<backgroundIntervalUpload>字段设置无效。-->1
    </backgroundIntervalUpload>
  </FaceCaptureInfo>
  <AlgVersionInfo>
    <!--ro, opt, object, 算法库版本信息-->
    <AlgItem>
      <!--ro, opt, object, 算法库-->
      <id>
        <!--ro, opt, string, 索引, range:[,]-->test
      </id>
      <algName>
        <!--ro, opt, string, 算法库名称, range:[,]-->test
      </algName>
    </AlgItem>
  </AlgVersionInfo>
  <JudiciaryInfo>
    <!--ro, opt, object, 司法信息-->
    <IntelliImage>
      <!--ro, req, string, 智能图像, range:[,]-->test
      <isUpload>
        <!--ro, req, bool, 是否上传图片-->true
      </isUpload>
      <imgQuality>
        <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
      </imgQuality>
      <imgResolutionWidth>
        <!--ro, req, int, 分辨率宽度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionWidth>
      <imgResolutionHeight>
        <!--ro, req, int, 分辨率高度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionHeight>
    </IntelliImage>
    <VideoOverlapInfo>
      <!--ro, opt, object, 视频叠加信息-->
      <isOverlapIntelli>
        <!--ro, req, bool, 是否叠加智能信息-->true
      </isOverlapIntelli>
    </VideoOverlapInfo>
  </JudiciaryInfo>
  <QRCodeUrl>
    <!--ro, opt, object, 二维码信息, desc:设备支持的所有用来生成二维码图片的Url，接收端可以根据Url生成二维码，用户扫码可以读取文档、演示视频等；录制的演示视频会提醒用户以实际设备为准，后续更新配置界面后，会重新录制视频，并更新上传的Url-->
    <vcaVideoQRCodeUrl>
      <!--ro, opt, string, 放置异常行为识别演示视频Url, range:[0,256]-->http://127.0.0.1
    </vcaVideoQRCodeUrl>
  </QRCodeUrl>
</IntelliResource>

75. 配置人脸抓拍识别通道智能资源配置

75.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/intelliResource

75.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelliResource xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 智能资源, attr:version{req, string, 协议版本, range:[,]}-->
  <BehaviorInfo>
    <!--opt, object, 异常行为识别信息-->
    <IntelliImage>
      <!--opt, object, 智能图像-->
      <isUpload>
        <!--req, bool, 是否上传图片-->true
      </isUpload>
      <imgQuality>
        <!--opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
      </imgQuality>
      <imgResolutionWidth>
        <!--req, int, 分辨率宽度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionWidth>
      <imgResolutionHeight>
        <!--req, int, 分辨率高度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionHeight>
      <isImgTargetOverlap>
        <!--req, bool, 是否叠加目标信息-->true
      </isImgTargetOverlap>
      <isImgRuleOverlap>
        <!--req, bool, 是否叠加规则信息-->true
      </isImgRuleOverlap>
      <isImgSizeOverlap>
        <!--opt, bool, 是否叠加尺寸信息-->bool
      </isImgSizeOverlap>
    </IntelliImage>
    <VideoOverlapInfo>
      <!--opt, object, 视频叠加信息-->
      <isOverlapIntelli>
        <!--req, bool, 是否叠加智能信息-->true
      </isOverlapIntelli>
      <isOverlapTarget>
        <!--req, bool, 是否叠加目标信息-->true
      </isOverlapTarget>
      <isOverlapRule>
        <!--req, bool, 是否叠加规则信息-->true
      </isOverlapRule>
    </VideoOverlapInfo>
    <IntelliAnalysisEnable>
      <!--req, bool, 是否开启智能分析-->true
    </IntelliAnalysisEnable>
    <DisplayTrajectory>
      <!--opt, object, 目标路径叠加-->
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <durationLimit>
        <!--opt, enum, 最长叠加时间, subType:int, [5#5,10#10,20#20,30#30], desc:单位：秒-->5
      </durationLimit>
    </DisplayTrajectory>
    <targetMarkingColorEnabled>
      <!--req, bool, 属性分类颜色开启使能-->true
    </targetMarkingColorEnabled>
  </BehaviorInfo>
  <FaceCaptureInfo>
    <!--opt, object, 人脸抓拍信息-->
    <imgQuality>
      <!--opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
    </imgQuality>
    <isImgTargetOverlap>
      <!--req, bool, 是否叠加目标信息-->true
    </isImgTargetOverlap>
    <VideoOverlapInfo>
      <!--opt, object, 视频叠加信息-->
      <isOverlapIntelli>
        <!--req, bool, 是否叠加智能信息-->true
      </isOverlapIntelli>
      <isOverlapTarget>
        <!--opt, bool, 是否叠加目标信息-->true
      </isOverlapTarget>
      <isOverlapRule>
        <!--opt, bool, 是否叠加规则信息-->true
      </isOverlapRule>
    </VideoOverlapInfo>
    <backgroundUpload>
      <!--opt, bool, 是否上传背景图片-->true
    </backgroundUpload>
    <imgResolutionWidth>
      <!--req, int, 分辨率宽度值, range:[,], step:, unit:, unitType:-->1
    </imgResolutionWidth>
    <imgResolutionHeight>
      <!--req, int, 分辨率高度值, range:[,], step:, unit:, unitType:-->1
    </imgResolutionHeight>
    <TargetImgInfo>
      <!--opt, object, 目标抓图相关配置-->
      <targetImgType>
        <!--opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#头肩照,human#人体（全身）照]-->custom
      </targetImgType>
      <TargetImgSize>
        <!--opt, object, 目标图抓图大小, desc:当targetImgType == custom时生效-->
        <widthRatio>
          <!--req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
        </widthRatio>
        <upperPartHeightRatio>
          <!--req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
        </upperPartHeightRatio>
        <underPartHeightRatio>
          <!--req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
        </underPartHeightRatio>
      </TargetImgSize>
      <fixedPixelEnable>
        <!--opt, bool, 目标抓图固定像素使能-->true
      </fixedPixelEnable>
      <heightPixel>
        <!--opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, desc:当fixedPixelEnable == true时生效-->1
      </heightPixel>
      <FaceBeautification>
        <!--opt, object, 人脸美颜-->
        <enabled>
          <!--opt, bool, 是否开启美颜功能-->true
        </enabled>
        <level>
          <!--opt, int, 美颜级别配置范围, range:[0,100], step:, unit:, unitType:, desc:默认50-->1
        </level>
      </FaceBeautification>
      <faceEnhancement>
        <!--opt, bool, 是否开启人脸增强, desc:增强人脸抓拍小图的清晰度,默认:false-->true
      </faceEnhancement>
    </TargetImgInfo>
    <backgroundIntervalUpload>
      <!--opt, int, 人脸抓拍图片上传时间间隔, range:[0,65534], step:, unit:s, unitType:时间, desc:该配置主要针对流量和存储敏感的用户（互联网接入）；场景中触发人脸温度报警的时候，无视该字段配置；场景中没有人脸出现，无视该字段配置；当值为0的时候，实时抓拍人脸上传。当<backgroundUpload> == false 的时候，<backgroundIntervalUpload>字段设置无效。-->1
    </backgroundIntervalUpload>
  </FaceCaptureInfo>
  <AlgVersionInfo>
    <!--opt, object, 算法库版本信息-->
    <AlgItem>
      <!--opt, object, 算法库-->
      <id>
        <!--opt, string, 索引, range:[,]-->test
      </id>
      <algName>
        <!--opt, string, 算法库名称, range:[,]-->test
      </algName>
    </AlgItem>
  </AlgVersionInfo>
  <JudiciaryInfo>
    <!--opt, object, 司法信息-->
    <IntelliImage>
      <!--req, string, 智能图像, range:[,]-->test
      <isUpload>
        <!--req, bool, 是否上传图片-->true
      </isUpload>
      <imgQuality>
        <!--opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
      </imgQuality>
      <imgResolutionWidth>
        <!--req, int, 分辨率宽度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionWidth>
      <imgResolutionHeight>
        <!--req, int, 分辨率高度值, range:[,], step:, unit:, unitType:-->1
      </imgResolutionHeight>
    </IntelliImage>
    <VideoOverlapInfo>
      <!--opt, object, 视频叠加信息-->
      <isOverlapIntelli>
        <!--req, bool, 是否叠加智能信息-->true
      </isOverlapIntelli>
    </VideoOverlapInfo>
  </JudiciaryInfo>
  <QRCodeUrl>
    <!--opt, object, 二维码信息, desc:设备支持的所有用来生成二维码图片的Url，接收端可以根据Url生成二维码，用户扫码可以读取文档、演示视频等；录制的演示视频会提醒用户以实际设备为准，后续更新配置界面后，会重新录制视频，并更新上传的Url-->
    <vcaVideoQRCodeUrl>
      <!--opt, string, 放置异常行为识别演示视频Url, range:[0,256]-->http://127.0.0.1
    </vcaVideoQRCodeUrl>
  </QRCodeUrl>
</IntelliResource>

75.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

76. 获取人脸抓拍高级配置能力

76.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceSnap/advancedParam/capabilities?format=json

76.2 输入参数

无

76.3 输出参数

{
    "AdvancedParamCap": {
    /*ro, req, object, 人脸抓拍高级参数*/
        "tarGenerateRate ": {
        /*ro, opt, object, 目标生成速度*/
            "@min":  1,
            /*ro, opt, int, 目标生成速度最小值, range:[,], step:, unit:, unitType:*/
            "@max":  5,
            /*ro, opt, int, 目标生成速度最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, req, int, 目标生成速度默认值, range:[,], step:, unit:, unitType:*/
        },
        "sensitivity": {
        /*ro, opt, object, 目标检测灵敏度*/
            "@min":  1,
            /*ro, opt, int, 目标检测灵敏度最小值, range:[,], step:, unit:, unitType:*/
            "@max":  5,
            /*ro, opt, int, 目标检测灵敏度最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, opt, int, 目标检测灵敏度默认值, range:[,], step:, unit:, unitType:*/
        },
        "snapMode": {
        /*ro, opt, object, 抓拍模式*/
            "@opt": ["fast", "best"]
            /*ro, opt, array, 抓拍模式取值, subType:string, range:[,]*/
        },
        "quicksnapThreshold ": {
        /*ro, opt, object, 快速抓拍阀值*/
            "@min":  0,
            /*ro, opt, int, 快速抓拍阀值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 快速抓拍阀值最大值, range:[,], step:, unit:, unitType:*/
            "@def":  70
            /*ro, opt, int, 快速抓拍阀值默认值, range:[,], step:, unit:, unitType:*/
        },
        "quicksnapMaxtime ": {
        /*ro, opt, object, 快速最长抓拍时间*/
            "@min":  0,
            /*ro, opt, int, 快速最长抓拍时间最小值, range:[,], step:, unit:, unitType:*/
            "@max":  300,
            /*ro, opt, int, 快速最长抓拍时间最大值, range:[,], step:, unit:, unitType:*/
            "@def":  5
            /*ro, opt, int, 快速最长抓拍时间默认值, range:[,], step:, unit:, unitType:*/
        },
        "quicksnapCount ": {
        /*ro, opt, object, 快速抓拍抓拍次数*/
            "@min":  1,
            /*ro, opt, int, 快速抓拍抓拍次数最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 快速抓拍抓拍次数最大值, range:[,], step:, unit:, unitType:*/
            "@def":  1
            /*ro, opt, int, 快速抓拍抓拍次数默认值, range:[,], step:, unit:, unitType:*/
        },
        "snapTime ": {
        /*ro, opt, object, 单个目标人脸的抓拍次数*/
            "@min":  1,
            /*ro, opt, int, 单个目标人脸的抓拍次数最小值, range:[,], step:, unit:, unitType:*/
            "@max":  3,
            /*ro, opt, int, 单个目标人脸的抓拍次数最大值, range:[,], step:, unit:, unitType:*/
            "@def":  1
            /*ro, opt, int, 单个目标人脸的抓拍次数默认值, range:[,], step:, unit:, unitType:*/
        },
        "snapThreshold": {
        /*ro, opt, object, 抓拍阈值*/
            "@min":  0,
            /*ro, opt, int, 抓拍阈值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 抓拍阈值最大值, range:[,], step:, unit:, unitType:*/
            "@def":  20
            /*ro, opt, int, 抓拍阈值默认值, range:[,], step:, unit:, unitType:*/
        },
        "snapInterval ": {
        /*ro, opt, object, 抓拍间隔*/
            "@min":  1,
            /*ro, opt, int, 抓拍间隔最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100
            /*ro, opt, int, 抓拍间隔最大值, range:[,], step:, unit:, unitType:*/
        },
        "faceExposurEnable": {
        /*ro, opt, object, 人脸曝光使能*/
            "@opt": [true, false],
            /*ro, opt, array, 人脸曝光使能取值, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 人脸曝光使能默认值*/
        },
        "referenceBright": {
        /*ro, opt, object, 参考亮度*/
            "@min":  0,
            /*ro, opt, int, 参考亮度最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 参考亮度最大值, range:[,], step:, unit:, unitType:*/
            "@def":  50
            /*ro, opt, int, 参考亮度默认值, range:[,], step:, unit:, unitType:*/
        },
        "minContinueTime": {
        /*ro, opt, object, 最短持续时间*/
            "@min":  0,
            /*ro, opt, int, 最短持续时间最小值, range:[,], step:, unit:, unitType:*/
            "@max":  60,
            /*ro, opt, int, 最短持续时间最大值, range:[,], step:, unit:, unitType:*/
            "@def":  5
            /*ro, opt, int, 最短持续时间默认值, range:[,], step:, unit:, unitType:*/
        },
        "faceFilterTime ": {
        /*ro, opt, object, 人脸过滤时间*/
            "@min":  0,
            /*ro, opt, int, 人脸过滤时间最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100000,
            /*ro, opt, int, 人脸过滤时间最大值, range:[,], step:, unit:, unitType:*/
            "@def":  0
            /*ro, opt, int, 人脸过滤时间默认值, range:[,], step:, unit:, unitType:*/
        },
        "faceAttributEnable": {
        /*ro, opt, object, 是否上传人脸属性*/
            "@opt": [true, false]
            /*ro, opt, array, 是否上传人脸属性取值, subType:bool, range:[,]*/
        },
        "facesnapFilterEnable": {
        /*ro, opt, object, 是否开启人脸抓拍过滤*/
            "@opt": [true, false],
            /*ro, opt, array, 是否开启人脸抓拍过滤取值, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 是否开启人脸抓拍过滤默认值*/
        },
        "swingAngleLeft": {
        /*ro, opt, object, 目标人脸旋转角左边界值*/
            "@min":  0,
            /*ro, opt, int, 目标人脸旋转角左边界值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  70
            /*ro, opt, int, 目标人脸旋转角左边界值最大值, range:[,], step:, unit:, unitType:*/
        },
        "swingAngleRight": {
        /*ro, opt, object, 目标人脸旋转角右边界值*/
            "@min":  0,
            /*ro, opt, int, 目标人脸旋转角右边界值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  70
            /*ro, opt, int, 目标人脸旋转角右边界值最大值, range:[,], step:, unit:, unitType:*/
        },
        "tiltAngleUp": {
        /*ro, opt, object, 目标人脸俯仰角上边界值*/
            "@min":  0,
            /*ro, opt, int, 目标人脸俯仰角上边界值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  50
            /*ro, opt, int, 目标人脸俯仰角上边界值最大值, range:[,], step:, unit:, unitType:*/
        },
        "tiltAngleDown": {
        /*ro, opt, object, 目标人脸俯仰角下边界值*/
            "@min":  0,
            /*ro, opt, int, 目标人脸俯仰角下边界值最小值, range:[,], step:, unit:, unitType:*/
            "@max":  50
            /*ro, opt, int, 目标人脸俯仰角下边界值最大值, range:[,], step:, unit:, unitType:*/
        },
        "instantLightMidEnable": {
        /*ro, opt, object, 目标人脸遮挡状态-瞬时遮挡轻中是否启用*/
            "@opt": [true, false],
            /*ro, opt, array, 目标人脸遮挡状态-瞬时遮挡轻中是否启用取值, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 目标人脸遮挡状态-瞬时遮挡轻中是否启用默认值*/
        },
        "fixedLightMidEnable": {
        /*ro, opt, object, 目标人脸遮挡状态-固定遮挡轻中是否启用*/
            "@opt": [true, false],
            /*ro, opt, array, 目标人脸遮挡状态-固定遮挡轻中是否启用取值, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 目标人脸遮挡状态-固定遮挡轻中是否启用默认值*/
        },
        "severeEnable": {
        /*ro, opt, object, 目标人脸遮挡状态-严重遮挡是否启用*/
            "@opt": [true, false],
            /*ro, opt, array, 目标人脸遮挡状态-严重遮挡是否启用取值, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 目标人脸遮挡状态-严重遮挡是否启用默认值*/
        },
        "OSDEnable": {
        /*ro, opt, object, 目标人脸遮挡状态-OSD遮挡是否启用*/
            "@opt": [true, false],
            /*ro, opt, array, 目标人脸遮挡状态-OSD遮挡是否启用取值, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 目标人脸遮挡状态-OSD遮挡是否启用默认值*/
        },
        "RemoveDuplicate": {
        /*ro, opt, object, 人脸抓拍去重参数, dep:and,{$.AdvancedParam.snapMode,eq,best}*/
            "enabled": {
            /*ro, opt, object, 去重使能*/
                "@opt": [true, false]
                /*ro, opt, array, 去重使能, subType:bool, range:[,]*/
            },
            "threshold": {
            /*ro, opt, object, 去重阈值, desc:当比对相似度大于去重阈值时认为是重复人脸*/
                "@min":  70,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  88
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "faceScore": {
            /*ro, opt, object, 去重评分阈值, desc:当人脸评分大于20（配置值）时,才能进入动态去重库,防止评分过低导致比对效果较差*/
                "@min":  20,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  60,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  20
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "updateTime": {
            /*ro, opt, object, 去重库更新时间, desc:人脸模型,从入库开始,到去重库更新时间,人脸数据模型将会被删除*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  300,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  60
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            }
        },
        "quickContinueSnapEnable": {
        /*ro, opt, object, 是否开启快速抓拍连续抓拍使能, dep:and,{$.AdvancedParamCap.snapMode,eq,fast}, desc:默认不开启;当该只字段为true时,quicksnapCount值无效*/
            "@opt": [true, false],
            /*ro, opt, array, 是否开启快速抓拍连续抓拍使能, subType:bool, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 默认值*/
        }
    }
}

77. 获取人脸抓拍高级配置

77.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceSnap/advancedParam?format=json

77.2 输入参数

无

77.3 输出参数

{
    "AdvancedParam": {
    /*ro, req, object, 人脸抓拍高级参数*/
        "tarGenerateRate ":  3,
        /*ro, opt, int, 目标生成速度, range:[1,5], step:, unit:, unitType:*/
        "sensitivity":  3,
        /*ro, opt, int, 目标检测灵敏度, range:[1,5], step:, unit:, unitType:*/
        "snapMode":  "fast",
        /*ro, req, enum, 抓拍模式, subType:string, [fast#快速抓拍,best#最佳抓拍]*/
        "quicksnapThreshold ":  70,
        /*ro, opt, int, 快速抓拍阀值, range:[0,100], step:, unit:s, unitType:无*/
        "quicksnapMaxtime ":  5,
        /*ro, opt, int, 快速最长抓拍时间, range:[0,300], step:1, unit:s, unitType:时间*/
        "quicksnapCount ":  1,
        /*ro, opt, int, 快速抓拍抓拍次数, range:[1,100], step:, unit:, unitType:, desc:分为有限次和无限次，无限次是只要人存在就会一直抓拍,有限次的范围是1-100，默认1*/
        "snapTime ":  1,
        /*ro, opt, int, 单个目标人脸的抓拍次数, range:[1,3], step:, unit:, unitType:*/
        "snapThreshold":  20,
        /*ro, opt, int, 抓拍阈值, range:[0,100], step:, unit:, unitType:*/
        "snapInterval ":  1,
        /*ro, opt, int, 抓拍间隔, range:[,], step:, unit:, unitType:, desc:单位:帧*/
        "faceExposurEnable":  true,
        /*ro, opt, bool, 人脸曝光使能*/
        "referenceBright":  50,
        /*ro, opt, int, 参考亮度, range:[0,100], step:, unit:, unitType:*/
        "minContinueTime":  5,
        /*ro, opt, int, 最短持续时间, range:[0,60], step:1, unit:min, unitType:时间*/
        "faceFilterTime ":  0,
        /*ro, opt, int, 人脸过滤时间, range:[0,100000], step:1, unit:ms, unitType:时间*/
        "faceAttributEnable":  true,
        /*ro, opt, bool, 是否上传人脸属性*/
        "facesnapFilterEnable":  false,
        /*ro, opt, bool, 是否开启人脸抓拍过滤, desc:默认不开启*/
        "swingAngleLeft":  10,
        /*ro, opt, int, 目标人脸旋转角左边界值, range:[0,70], step:1, unit:°, unitType:平面角*/
        "swingAngleRight":  1,
        /*ro, opt, int, 目标人脸旋转角右边界值, range:[0,70], step:1, unit:°, unitType:平面角*/
        "tiltAngleUp":  10,
        /*ro, opt, int, 目标人脸俯仰角上边界值, range:[0,50], step:1, unit:°, unitType:平面角*/
        "tiltAngleDown":  10,
        /*ro, opt, int, 目标人脸俯仰角下边界值, range:[0,50], step:1, unit:°, unitType:平面角*/
        "instantLightMidEnable":  true,
        /*ro, opt, bool, 目标人脸遮挡状态-瞬时遮挡轻中是否启用*/
        "fixedLightMidEnable":  true,
        /*ro, opt, bool, 目标人脸遮挡状态-固定遮挡轻中是否启用*/
        "severeEnable":  true,
        /*ro, opt, bool, 目标人脸遮挡状态-严重遮挡是否启用*/
        "OSDEnable":  true,
        /*ro, opt, bool, 目标人脸遮挡状态-OSD遮挡是否启用*/
        "RemoveDuplicate": {
        /*ro, opt, object, 人脸抓拍去重参数, dep:and,{$.AdvancedParam.snapMode,eq,best}*/
            "enabled":  true,
            /*ro, opt, bool, 去重使能*/
            "threshold":  88,
            /*ro, opt, int, 去重阈值, range:[,], step:, unit:, unitType:, desc:当比对相似度大于去重阈值时认为是重复人脸*/
            "faceScore":  20,
            /*ro, opt, int, 去重评分阈值, range:[,], step:, unit:, unitType:, desc:当人脸评分大于20（配置值）时,才能进入动态去重库,防止评分过低导致比对效果较差*/
            "updateTime":  60
            /*ro, opt, int, 去重库更新时间, range:[,], step:, unit:, unitType:, desc:人脸模型,从入库开始,到去重库更新时间,人脸数据模型将会被删除*/
        },
        "quickContinueSnapEnable":  false
        /*ro, opt, bool, 是否开启快速抓拍连续抓拍使能, dep:and,{$.AdvancedParam.snapMode,eq,fast}, desc:默认不开启;当该只字段为true时,quicksnapCount值无效*/
    }
}

78. 配置人脸抓拍高级配置

78.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/faceSnap/advancedParam?format=json

78.2 输入参数

{
    "AdvancedParam": {
    /*wo, req, object, 人脸抓拍高级参数*/
        "tarGenerateRate ":  3,
        /*wo, opt, int, 目标生成速度, range:[1,5], step:, unit:, unitType:*/
        "sensitivity":  3,
        /*wo, opt, int, 目标检测灵敏度, range:[1,5], step:, unit:, unitType:*/
        "snapMode":  "fast",
        /*wo, req, enum, 抓拍模式, subType:string, [fast#快速抓拍,best#最佳抓拍]*/
        "quicksnapThreshold ":  70,
        /*wo, opt, int, 快速抓拍阀值, range:[0,100], step:, unit:s, unitType:无*/
        "quicksnapMaxtime ":  5,
        /*wo, opt, int, 快速最长抓拍时间, range:[0,300], step:1, unit:s, unitType:时间*/
        "quicksnapCount ":  1,
        /*wo, opt, int, 快速抓拍抓拍次数, range:[1,100], step:, unit:, unitType:, desc:分为有限次和无限次，无限次是只要人存在就会一直抓拍,有限次的范围是1-100，默认1*/
        "snapTime ":  1,
        /*wo, opt, int, 单个目标人脸的抓拍次数, range:[1,3], step:, unit:, unitType:*/
        "snapThreshold":  20,
        /*wo, opt, int, 抓拍阈值, range:[0,100], step:, unit:, unitType:*/
        "snapInterval ":  1,
        /*wo, opt, int, 抓拍间隔, range:[,], step:, unit:, unitType:, desc:单位:帧*/
        "faceExposurEnable":  true,
        /*wo, opt, bool, 人脸曝光使能*/
        "referenceBright":  50,
        /*wo, opt, int, 参考亮度, range:[0,100], step:, unit:, unitType:*/
        "minContinueTime":  5,
        /*wo, opt, int, 最短持续时间, range:[0,60], step:1, unit:min, unitType:时间*/
        "faceFilterTime ":  0,
        /*wo, opt, int, 人脸过滤时间, range:[0,100000], step:1, unit:ms, unitType:时间*/
        "faceAttributEnable":  true,
        /*wo, opt, bool, 是否上传人脸属性*/
        "facesnapFilterEnable":  false,
        /*wo, opt, bool, 是否开启人脸抓拍过滤, desc:默认不开启*/
        "swingAngleLeft":  10,
        /*wo, opt, int, 目标人脸旋转角左边界值, range:[0,70], step:1, unit:°, unitType:平面角*/
        "swingAngleRight":  1,
        /*wo, opt, int, 目标人脸旋转角右边界值, range:[0,70], step:1, unit:°, unitType:平面角*/
        "tiltAngleUp":  10,
        /*wo, opt, int, 目标人脸俯仰角上边界值, range:[0,50], step:1, unit:°, unitType:平面角*/
        "tiltAngleDown":  10,
        /*wo, opt, int, 目标人脸俯仰角下边界值, range:[0,50], step:1, unit:°, unitType:平面角*/
        "instantLightMidEnable":  true,
        /*wo, opt, bool, 目标人脸遮挡状态-瞬时遮挡轻中是否启用*/
        "fixedLightMidEnable":  true,
        /*wo, opt, bool, 目标人脸遮挡状态-固定遮挡轻中是否启用*/
        "severeEnable":  true,
        /*wo, opt, bool, 目标人脸遮挡状态-严重遮挡是否启用*/
        "OSDEnable":  true,
        /*wo, opt, bool, 目标人脸遮挡状态-OSD遮挡是否启用*/
        "RemoveDuplicate": {
        /*wo, opt, object, 人脸抓拍去重参数, dep:and,{$.AdvancedParam.snapMode,eq,best}*/
            "enabled":  true,
            /*wo, opt, bool, 去重使能*/
            "threshold":  88,
            /*wo, opt, int, 去重阈值, range:[,], step:, unit:, unitType:, desc:当比对相似度大于去重阈值时认为是重复人脸*/
            "faceScore":  20,
            /*wo, opt, int, 去重评分阈值, range:[,], step:, unit:, unitType:, desc:当人脸评分大于20（配置值）时,才能进入动态去重库,防止评分过低导致比对效果较差*/
            "updateTime":  60
            /*wo, opt, int, 去重库更新时间, range:[,], step:, unit:, unitType:, desc:人脸模型,从入库开始,到去重库更新时间,人脸数据模型将会被删除*/
        },
        "quickContinueSnapEnable":  false
        /*wo, opt, bool, 是否开启快速抓拍连续抓拍使能, dep:and,{$.AdvancedParam.snapMode,eq,fast}, desc:默认不开启;当该只字段为true时,quicksnapCount值无效*/
    }
}

78.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

79. 获取人脸抓拍检测事件屏蔽区域

79.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/Shield/faceCapture

79.2 输入参数

无

79.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Shield xmlns="http://www.isapi.org/ver20/XMLSchema" version="1.0">
  <!--ro, req, object, 屏蔽区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, enum, 使能, subType:string, [true#是,false#否]-->true
  </enabled>
  <RegionList>
    <!--ro, opt, array, 屏蔽区域列表, subType:object, range:[,]-->
    <Region>
      <!--ro, opt, object, 屏蔽区域-->
      <id>
        <!--ro, req, string, 区域索引, range:[,]-->1
      </id>
      <enabled>
        <!--ro, req, enum, 使能, subType:string, [true#是,false#否]-->true
      </enabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenWidth-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenHeight-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </Region>
  </RegionList>
</Shield>

80. 配置人脸抓拍检测事件屏蔽区域

80.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/Shield/faceCapture

80.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Shield xmlns="http://www.isapi.org/ver20/XMLSchema" version="1.0">
  <!--req, object, 屏蔽区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, enum, 使能, subType:string, [true#是,false#否]-->true
  </enabled>
  <RegionList>
    <!--opt, array, 屏蔽区域列表, subType:object, range:[,]-->
    <Region>
      <!--opt, object, 屏蔽区域-->
      <id>
        <!--req, string, 区域索引, range:[,]-->1
      </id>
      <enabled>
        <!--req, enum, 使能, subType:string, [true#是,false#否]-->true
      </enabled>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenWidth-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenHeight-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </Region>
  </RegionList>
</Shield>

80.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

81. 获取人脸抓拍检测屏蔽区域配置能力

81.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceSnap/shieldRegion/capabilities?format=json

81.2 输入参数

无

81.3 输出参数

{
    "ShieldRegionCap": {
    /*ro, opt, object, 人脸抓拍检测屏蔽区域*/
        "@size":  8,
        /*ro, req, int, 最大支持屏蔽区域数目, range:[,], step:, unit:, unitType:*/
        "enable": {
        /*ro, req, object, 规则使能*/
            "@opt": [true, false]
            /*ro, req, array, 取值范围, subType:bool, range:[,]*/
        },
        "PointF": {
        /*ro, opt, object, 区域点*/
            "@minSize":  0,
            /*ro, req, int, 规则区域最小支持的点数, range:[,], step:, unit:, unitType:*/
            "@maxSize":  4,
            /*ro, req, int, 规则区域最大支持的点数, range:[,], step:, unit:, unitType:*/
            "x": {
            /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                "@min":  0.000,
                /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000,
                /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@def":  0.001
                /*ro, req, float, 默认值, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "y": {
            /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                "@min":  0.000,
                /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000,
                /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@def":  0.001
                /*ro, req, float, 默认值, range:[0.000,1.000], step:, unit:, unitType:*/
            }
        }
    }
}

82. 获取人脸抓拍检测屏蔽区域配置

82.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/faceSnap/shieldRegion?format=json

82.2 输入参数

无

82.3 输出参数

{
    "ShieldRegion": [
    /*ro, opt, array, 屏蔽区域, subType:object, range:[,]*/
        {
            "ruleID":  1,
            /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
            "enable":  true,
            /*ro, req, bool, 规则使能*/
            "PointF": [
            /*ro, opt, array, 规则区域, subType:object, range:[3,10]*/
                {
                    "x":  0.120,
                    /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标原点是左下*/
                    "y":  0.120
                    /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标原点是左下*/
                }
            ]
        }
    ]
}

83. 配置人脸抓拍检测屏蔽区域配置

83.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/faceSnap/shieldRegion?format=json

83.2 输入参数

{
    "ShieldRegion": [
    /*opt, array, 屏蔽区域, subType:object, range:[,]*/
        {
            "ruleID":  1,
            /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
            "enable":  true,
            /*req, bool, 规则使能*/
            "PointF": [
            /*opt, array, 规则区域, subType:object, range:[3,10]*/
                {
                    "x":  0.120,
                    /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标原点是左下*/
                    "y":  0.120
                    /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标原点是左下*/
                }
            ]
        }
    ]
}

83.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

84. 获取人脸抓拍联动配置

84.1 命令

GET /ISAPI/Event/triggers/faceSnap-<channelID>

84.2 输入参数

无

84.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LES#物流扫描事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,faceSnap#人脸抓拍]-->faceSnap
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:如果事件类型是"移动侦测, 视频丢失, 遮挡报警, 进入区域侦测, 离开区域侦测, 徘徊侦测, 人员聚集侦测, 快速运动侦测, 停车侦测, 物品遗留侦测, 物品拿取侦测,热成像, 防区报警联动, 紧急求助报警联动, 业务咨询报警联动"时节点存在-->test
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:1, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->test
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 事件联动触发配置表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, list-->
      <id>
        <!--ro, req, string, 联动配置ID, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#仅开始,beginningandend#开始和结束,recurring#循环]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:1, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频输入ID, range:[,]-->test
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入ID, range:[,]-->test
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动动作-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动数值, range:[,], step:, unit:, unitType:-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动-->
        <whiteLightDurationTime>
          <!--ro, req, int, 白光灯闪烁持续时长, range:[1,60], step:1, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

85. 配置人脸抓拍联动

85.1 命令

PUT /ISAPI/Event/triggers/faceSnap-<channelID>

85.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--wo, req, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--wo, req, string, 通道号, range:[,]-->test
  </id>
  <eventType>
    <!--wo, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LES#物流扫描事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,faceSnap#人脸抓拍]-->faceSnap
  </eventType>
  <eventDescription>
    <!--wo, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--wo, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--wo, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--wo, opt, string, 视频输入通道ID, range:[,], desc:如果事件类型是"移动侦测, 视频丢失, 遮挡报警, 进入区域侦测, 离开区域侦测, 徘徊侦测, 人员聚集侦测, 快速运动侦测, 停车侦测, 物品遗留侦测, 物品拿取侦测,热成像, 防区报警联动, 紧急求助报警联动, 业务咨询报警联动"时节点存在-->test
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--wo, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--wo, opt, int, 事件抓拍间隔, range:[,], step:1, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--wo, opt, string, 无线ID, range:[,]-->test
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--wo, opt, array, 事件联动触发配置表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--wo, opt, object, list-->
      <id>
        <!--wo, req, string, 联动配置ID, range:[,]-->test
      </id>
      <notificationMethod>
        <!--wo, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--wo, opt, enum, 联动周期, subType:string, [beginning#仅开始,beginningandend#开始和结束,recurring#循环]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--wo, opt, int, 联动时间间隔, range:[,], step:1, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--wo, opt, string, 视频输入ID, range:[,]-->test
      </videoInputID>
      <dynVideoInputID>
        <!--wo, opt, string, 动态视频输入ID, range:[,]-->test
      </dynVideoInputID>
      <ptzAction>
        <!--wo, opt, object, PTZ联动动作-->
        <ptzChannelID>
          <!--wo, req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--wo, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--wo, opt, int, 联动数值, range:[,], step:, unit:, unitType:-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--wo, opt, object, 白光灯联动-->
        <whiteLightDurationTime>
          <!--wo, req, int, 白光灯闪烁持续时长, range:[1,60], step:1, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

85.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

86. 获取人脸抓拍单个通道布防时间

86.1 命令

GET /ISAPI/Event/schedules/faceSnap/faceSnap-<channelID>

86.2 输入参数

无

86.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人脸抓拍单个通道布防时间, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LES#物流扫描事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,faceSnap#人脸抓拍]-->faceSnap
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道号, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间段-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--ro, opt, object, 布防高级配置-->
        <vehicleDetectSceneID>
          <!--ro, opt, int, 车辆检测场景ID, range:[,], step:, unit:, unitType:-->1
        </vehicleDetectSceneID>
        <sceneID>
          <!--ro, opt, int, 场景ID, range:[,], step:, unit:, unitType:-->1
        </sceneID>
        <SceneList>
          <!--ro, opt, array, 多场景切换配置, subType:object, range:[,], desc:与<sceneID>节点互斥-->
          <Scene>
            <!--ro, opt, object, 多场景列表-->
            <sceneID>
              <!--ro, req, string, 关联场景ID, range:[,]-->1
            </sceneID>
            <durationTime>
              <!--ro, req, int, 单场景停留的持续时间, range:[,], step:, unit:, unitType:-->1
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间列表, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

87. 配置人脸抓拍单个通道布防时间

87.1 命令

PUT /ISAPI/Event/schedules/faceSnap/faceSnap-<channelID>

87.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--wo, opt, object, 人脸抓拍单个通道布防时间, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--wo, req, string, 通道号, range:[,]-->test
  </id>
  <eventType>
    <!--wo, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LES#物流扫描事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,faceSnap#人脸抓拍]-->faceSnap
  </eventType>
  <videoInputChannelID>
    <!--wo, opt, string, 视频输入通道号, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--wo, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->null
    <TimeBlock>
      <!--wo, opt, object, 布防时间段-->null
      <dayOfWeek>
        <!--wo, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--wo, req, object, 时间范围-->null
        <beginTime>
          <!--wo, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--wo, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--wo, opt, object, 布防高级配置-->null
        <vehicleDetectSceneID>
          <!--wo, opt, int, 车辆检测场景ID, range:[,], step:, unit:, unitType:-->1
        </vehicleDetectSceneID>
        <sceneID>
          <!--wo, opt, int, 场景ID, range:[,], step:, unit:, unitType:-->1
        </sceneID>
        <SceneList>
          <!--wo, opt, array, 多场景切换配置, subType:object, range:[,], desc:与<sceneID>节点互斥-->null
          <Scene>
            <!--wo, opt, object, 多场景列表-->null
            <sceneID>
              <!--wo, req, string, 关联场景ID, range:[,]-->1
            </sceneID>
            <durationTime>
              <!--ro, req, int, 单场景停留的持续时间, range:[,], step:, unit:, unitType:-->1
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间列表, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

87.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


人体目标识别

1. 获取全局目标识别能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognition xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人体识别, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <HumanRecognitionRegionList size="8">
    <!--ro, opt, array, 人体识别区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <HumanRecognitionRegion>
      <!--ro, opt, object, 人体识别区域-->
      <id>
        <!--ro, req, string, 区域id, range:[,]-->test
      </id>
      <regionName min="1" max="10">
        <!--ro, req, string, 区域名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </regionName>
      <enabled opt="true,false">
        <!--ro, req, bool, 规则开关使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <LineCoordinatesList size="2">
        <!--ro, opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LineCoordinates>
          <!--ro, opt, object, 线坐标, desc:屏幕左下角坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </LineCoordinates>
      </LineCoordinatesList>
    </HumanRecognitionRegion>
  </HumanRecognitionRegionList>
  <isSupportHumanMisinfoFilter>
    <!--ro, opt, bool, 人体去误报, desc:支持返回true,不支持不返回-->true
  </isSupportHumanMisinfoFilter>
  <isSupportPicRecognition>
    <!--ro, opt, bool, 图片二次识别, desc:支持返回true,不支持不返回-->true
  </isSupportPicRecognition>
  <HumanRecognitionModeSearchCap>
    <!--ro, opt, object, 认识识别模式查询能力-->
    <searchTargetsNumMax>
      <!--ro, req, int, 查询目标最大数目, range:[,], step:, unit:, unitType:-->5
    </searchTargetsNumMax>
    <HumanMode>
      <!--ro, opt, object, 人体模式-->
      <age_group opt="test">
        <!--ro, opt, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年], attr:opt{req, string, 取值范围, range:[,]}-->unknown
      </age_group>
      <gender opt="test">
        <!--ro, opt, enum, 性别, subType:string, [any#条件不限（搜索的时候使用）,female#女,male#男,unknown#未知], attr:opt{req, string, 取值范围, range:[,]}-->unknown
      </gender>
      <jacet_color opt="test">
        <!--ro, opt, enum, 上衣颜色, subType:string, [any#条件不限（搜索的时候使用）,black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,mixture#混色,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄], attr:opt{req, string, 取值范围, range:[,]}-->unknown
      </jacet_color>
      <glass opt="test">
        <!--ro, opt, enum, 是否戴眼镜, subType:string, [no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是], attr:opt{req, string, 取值范围, range:[,]}-->no
      </glass>
      <bag opt="test">
        <!--ro, opt, enum, 是否背包, subType:string, [no#否,unknown#未知,yes#是], attr:opt{req, string, 取值范围, range:[,]}-->yes
      </bag>
      <ride opt="test">
        <!--ro, opt, enum, 是否骑车, subType:string, [any#条件不限（搜索的时候使用）,no#否,unknown#未知,yes#是], attr:opt{req, string, 取值范围, range:[,]}-->unknown
      </ride>
      <similarity min="0" max="100">
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </similarity>
    </HumanMode>
    <eventType opt="unlimit,humanRecognition">
      <!--ro, opt, enum, 事件类型, subType:string, [unlimit#不限,humanRecognition#人体事件], attr:opt{req, string, 取值范围, range:[,]}-->unlimit
    </eventType>
  </HumanRecognitionModeSearchCap>
  <analysisParamList>
    <!--ro, opt, array, 分析参数列表, subType:object, range:[,]-->
    <analysisParam>
      <!--ro, opt, object, 分析参数-->
      <analysisMode opt="normal,groupBehavior,individualBehavior">
        <!--ro, opt, enum, 分析模式, subType:string, [normal#普通模式（本字段未返回即为普通模式）,groupBehavior#群体行为,individualBehavior#个体行为], attr:opt{req, string, 取值范围, range:[,]}-->normal
      </analysisMode>
      <captureInterval min="5" max="3600" def="12">
        <!--ro, opt, int, 抓拍间隔, range:[5,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:dep,if <analysisMode> is groupBehavior，仅群体分析模式支持-->12
      </captureInterval>
      <maxRegionNum>
        <!--ro, opt, int, 规则区域数目, range:[,], step:, unit:, unitType:, desc:个体分析仅支持一个区域-->1
      </maxRegionNum>
      <cruiseLinkageCapture opt="true,false">
        <!--ro, opt, bool, 巡航联动抓图使能, attr:opt{req, string, 取值范围, range:[,]}, desc:dep,if <analysisMode> is individualBehavior，个体分析模式时支持-->true
      </cruiseLinkageCapture>
      <analysisControl opt="auto,non-auto">
        <!--ro, opt, enum, 分析控制, subType:string, [auto#自动,non-auto#非自动], attr:opt{req, string, 取值范围, range:[,]}, desc:依赖于<analysisMode>==individualBehavior,auto(自动),non-auto(非自动),默认为自动模式,自动下个体异常行为识别走的是IPC报警图片去做分析,非自动下个体异常行为识别是设备向IPC抓图去作分析-->auto
      </analysisControl>
      <timeInterval min="1" max="60" def="12">
        <!--ro, opt, int, 异常行为识别时间间隔, range:[0,60], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:依赖于<analysisMode>==groupBehavior或者(<analysisMode>==individualBehavior && <analysisControl>==non-auto)情况下支持-->1
      </timeInterval>
    </analysisParam>
  </analysisParamList>
  <isSupportConfidenceConfig>
    <!--ro, opt, bool, 人体目标识别置信度配置是否支持-->true
  </isSupportConfidenceConfig>
  <InterPupileRegion>
    <!--ro, opt, object, 区域, desc:屏幕左下角为坐标原点-->
    <positionX min="0" max="1000">
      <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </positionX>
    <positionY min="0" max="1000">
      <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </positionY>
    <width min="0" max="1000">
      <!--ro, req, int, 宽度, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </width>
    <height min="0" max="1000">
      <!--ro, req, int, 高度, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </height>
  </InterPupileRegion>
  <sid min="1" max="8">
    <!--ro, opt, string, 多场景id, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单场景max为1-->test
  </sid>
  <sceneDurationTime min="1" max="86400" def="5">
    <!--ro, opt, int, 场景停留时间, range:[1,86400], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </sceneDurationTime>
  <targetCutout>
    <!--ro, opt, object, 目标抠图-->
    <enabled>
      <!--ro, opt, bool, 目标抠图使能-->true
    </enabled>
    <size>
      <!--ro, req, int, 抠取比例, range:[,], step:, unit:, unitType:-->1
    </size>
    <zoom>
      <!--ro, req, int, 缩放比例, range:[,], step:, unit:, unitType:-->1
    </zoom>
  </targetCutout>
  <isSupportpicOverlay>
    <!--ro, opt, bool, 是否支持学生姓名展示控制-->true
  </isSupportpicOverlay>
  <isSupportRealTimeShow>
    <!--ro, opt, bool, 是否支持实时展示控制-->true
  </isSupportRealTimeShow>
</HumanRecognition>

2. 获取全局目标识别配置

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognition xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人体识别, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <HumanRecognitionRegionList>
    <!--ro, opt, array, 人体识别区域列表, subType:object, range:[,]-->
    <HumanRecognitionRegion>
      <!--ro, opt, object, 人体识别区域-->
      <id>
        <!--ro, req, string, 区域id, range:[,]-->test
      </id>
      <regionName>
        <!--ro, req, string, 区域名称, range:[,]-->test
      </regionName>
      <enabled>
        <!--ro, req, bool, 规则开关使能-->true
      </enabled>
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <LineCoordinatesList size="2">
        <!--ro, opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LineCoordinates>
          <!--ro, opt, object, 线坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </LineCoordinates>
      </LineCoordinatesList>
    </HumanRecognitionRegion>
  </HumanRecognitionRegionList>
  <humanMisinfoFilterEnabled>
    <!--ro, opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <picRecognitionEnabled>
    <!--ro, opt, bool, 图片二次识别使能-->true
  </picRecognitionEnabled>
  <analysisParam>
    <!--ro, opt, object, 分析参数-->
    <analysisMode>
      <!--ro, opt, enum, 分析模式, subType:string, [normal#普通模式（本字段未返回即为普通模式）,groupBehavior#群体行为,individualBehavior#个体行为]-->normal
    </analysisMode>
    <captureInterval>
      <!--ro, opt, int, 抓拍间隔, range:[5,3600], step:, unit:s, unitType:时间, desc:dep,if <analysisMode> is groupBehavior，仅群体分析模式支持-->12
    </captureInterval>
    <maxRegionNum>
      <!--ro, opt, int, 规则区域数目, range:[,], step:, unit:, unitType:, desc:个体分析仅支持一个区域-->1
    </maxRegionNum>
    <cruiseLinkageCapture>
      <!--ro, opt, bool, 巡航联动抓图使能, desc:dep,if <analysisMode> is individualBehavior，个体分析模式时支持-->true
    </cruiseLinkageCapture>
    <analysisControl>
      <!--ro, opt, enum, 分析控制, subType:string, [auto#自动,non-auto#非自动], desc:依赖于<analysisMode>==individualBehavior,auto(自动),non-auto(非自动),默认为自动模式,自动下个体异常行为识别走的是IPC报警图片去做分析,非自动下个体异常行为识别是设备向IPC抓图去作分析-->auto
    </analysisControl>
    <timeInterval>
      <!--ro, opt, int, 异常行为识别时间间隔, range:[0,60], step:, unit:s, unitType:时间, desc:依赖于<analysisMode>==groupBehavior或者(<analysisMode>==individualBehavior && <analysisControl>==non-auto)情况下支持-->1
    </timeInterval>
  </analysisParam>
  <InterPupileRegion>
    <!--ro, opt, object, 区域, desc:屏幕左下角为坐标原点-->
    <positionX>
      <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionX>
    <positionY>
      <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionY>
    <width>
      <!--ro, req, int, 宽度, range:[0,1000], step:, unit:, unitType:-->1
    </width>
    <height>
      <!--ro, req, int, 高度, range:[0,1000], step:, unit:, unitType:-->1
    </height>
  </InterPupileRegion>
  <targetCutout>
    <!--ro, opt, object, 目标抠图-->
    <enabled>
      <!--ro, opt, bool, 目标抠图使能-->true
    </enabled>
    <size>
      <!--ro, req, int, 抠取比例, range:[,], step:, unit:, unitType:-->1
    </size>
    <zoom>
      <!--ro, req, int, 缩放比例, range:[,], step:, unit:, unitType:-->1
    </zoom>
  </targetCutout>
  <realTimeShowEnabled>
    <!--ro, opt, bool, 显示实时框使能-->true
  </realTimeShowEnabled>
</HumanRecognition>

3. 配置全局目标识别

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognition xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人体识别, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->test
  </id>
  <normalizedScreenSize>
    <!--req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <HumanRecognitionRegionList>
    <!--opt, array, 人体识别区域列表, subType:object, range:[,]-->
    <HumanRecognitionRegion>
      <!--opt, object, 人体识别区域-->
      <id>
        <!--req, string, 区域id, range:[,]-->test
      </id>
      <regionName>
        <!--req, string, 区域名称, range:[,]-->test
      </regionName>
      <enabled>
        <!--req, bool, 规则开关使能-->true
      </enabled>
      <RegionCoordinatesList size="10">
        <!--opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <LineCoordinatesList size="2">
        <!--opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LineCoordinates>
          <!--opt, object, 线坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </LineCoordinates>
      </LineCoordinatesList>
    </HumanRecognitionRegion>
  </HumanRecognitionRegionList>
  <humanMisinfoFilterEnabled>
    <!--opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <picRecognitionEnabled>
    <!--opt, bool, 图片二次识别使能-->true
  </picRecognitionEnabled>
  <analysisParam>
    <!--opt, object, 分析参数-->
    <analysisMode>
      <!--opt, enum, 分析模式, subType:string, [normal#普通模式（本字段未返回即为普通模式）,groupBehavior#群体行为,individualBehavior#个体行为]-->normal
    </analysisMode>
    <captureInterval>
      <!--opt, int, 抓拍间隔, range:[5,3600], step:, unit:s, unitType:时间, desc:dep,if <analysisMode> is groupBehavior，仅群体分析模式支持-->12
    </captureInterval>
    <maxRegionNum>
      <!--opt, int, 规则区域数目, range:[,], step:, unit:, unitType:, desc:个体分析仅支持一个区域-->1
    </maxRegionNum>
    <cruiseLinkageCapture>
      <!--opt, bool, 巡航联动抓图使能, desc:dep,if <analysisMode> is individualBehavior，个体分析模式时支持-->true
    </cruiseLinkageCapture>
    <analysisControl>
      <!--opt, enum, 分析控制, subType:string, [auto#自动,non-auto#非自动], desc:依赖于<analysisMode>==individualBehavior,auto(自动),non-auto(非自动),默认为自动模式,自动下个体异常行为识别走的是IPC报警图片去做分析,非自动下个体异常行为识别是设备向IPC抓图去作分析-->auto
    </analysisControl>
    <timeInterval>
      <!--opt, int, 异常行为识别时间间隔, range:[0,60], step:, unit:s, unitType:时间, desc:依赖于<analysisMode>==groupBehavior或者(<analysisMode>==individualBehavior && <analysisControl>==non-auto)情况下支持-->1
    </timeInterval>
  </analysisParam>
  <InterPupileRegion>
    <!--opt, object, 区域, desc:屏幕左下角为坐标原点-->
    <positionX>
      <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionX>
    <positionY>
      <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
    </positionY>
    <width>
      <!--req, int, 宽度, range:[0,1000], step:, unit:, unitType:-->1
    </width>
    <height>
      <!--req, int, 高度, range:[0,1000], step:, unit:, unitType:-->1
    </height>
  </InterPupileRegion>
  <targetCutout>
    <!--opt, object, 目标抠图-->
    <enabled>
      <!--opt, bool, 目标抠图使能-->true
    </enabled>
    <size>
      <!--req, int, 抠取比例, range:[,], step:, unit:, unitType:-->1
    </size>
    <zoom>
      <!--req, int, 缩放比例, range:[,], step:, unit:, unitType:-->1
    </zoom>
  </targetCutout>
  <realTimeShowEnabled>
    <!--opt, bool, 显示实时框使能-->true
  </realTimeShowEnabled>
</HumanRecognition>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取全局目标识别区域批量配置

4.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/regions

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionRegionList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 人体识别区域列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <HumanRecognitionRegion>
    <!--ro, opt, object, 人体识别区域-->
    <id>
      <!--ro, req, string, 区域索引, range:[,]-->test
    </id>
    <regionName>
      <!--ro, req, string, 区域名称, range:[,]-->test
    </regionName>
    <enabled>
      <!--ro, req, bool, 规则开关使能-->true
    </enabled>
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
    <LineCoordinatesList size="10">
      <!--ro, opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LineCoordinates>
        <!--ro, opt, object, 线坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </LineCoordinates>
    </LineCoordinatesList>
  </HumanRecognitionRegion>
</HumanRecognitionRegionList>

5. 配置全局目标识别批量区域

5.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/regions

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionRegionList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, array, 人体识别区域列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <HumanRecognitionRegion>
    <!--opt, object, 人体识别区域-->
    <id>
      <!--req, string, 区域索引, range:[,]-->test
    </id>
    <regionName>
      <!--req, string, 区域名称, range:[,]-->test
    </regionName>
    <enabled>
      <!--req, bool, 规则开关使能-->true
    </enabled>
    <RegionCoordinatesList size="10">
      <!--opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
    <LineCoordinatesList size="10">
      <!--opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LineCoordinates>
        <!--opt, object, 线坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </LineCoordinates>
    </LineCoordinatesList>
  </HumanRecognitionRegion>
</HumanRecognitionRegionList>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取全局目标识别区域(单个)

6.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/regions/<regionID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人体识别区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域索引, range:[,]-->test
  </id>
  <regionName>
    <!--ro, req, string, 区域名称, range:[,]-->test
  </regionName>
  <enabled>
    <!--ro, req, bool, 规则开关使能-->true
  </enabled>
  <RegionCoordinatesList size="10">
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <LineCoordinatesList size="10">
    <!--ro, opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <LineCoordinates>
      <!--ro, opt, object, 线坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </LineCoordinates>
  </LineCoordinatesList>
</HumanRecognitionRegion>

7. 配置全局目标识别区域(单个)

7.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/regions/<regionID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人体识别区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域索引, range:[,]-->test
  </id>
  <regionName>
    <!--req, string, 区域名称, range:[,]-->test
  </regionName>
  <enabled>
    <!--req, bool, 规则开关使能-->true
  </enabled>
  <RegionCoordinatesList size="10">
    <!--opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <LineCoordinatesList size="10">
    <!--opt, array, 线坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <LineCoordinates>
      <!--opt, object, 线坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </LineCoordinates>
  </LineCoordinatesList>
</HumanRecognitionRegion>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取人体识别图片参数能力

8.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picParam/capabilities

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionPicParamCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人体识别图片参数配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <humanPicUploadEnabled opt="true,false">
    <!--ro, req, bool, 人体小图上传开关使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </humanPicUploadEnabled>
  <CaptureResolutionType opt="deviceRecognitionRange,eyeRecognitionRange,FaceRecognitionRange,manuallyRecognitionRange">
    <!--ro, opt, enum, 抓拍分辨率类型, subType:string, [deviceRecognitionRange#设备识别范围,eyeRecognitionRange#人眼识别范围,FaceRecognitionRange#人脸抓拍范围,manuallyRecognitionRange#手动识别范围], attr:opt{req, string, 取值范围, range:[,]}-->deviceRecognitionRange
  </CaptureResolutionType>
  <RecognitionPix>
    <!--ro, req, object, 视频识别过滤像素, desc:dep  manuallyRecognitionRange-->
    <maxPix min="0" max="10">
      <!--ro, req, int, 最大像素, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </maxPix>
    <minPix min="0" max="10">
      <!--ro, req, int, 最小像素, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </minPix>
  </RecognitionPix>
  <CaptureRatioCoefficient min="0" max="100" def="50">
    <!--ro, opt, int, 抓拍倍率系数, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </CaptureRatioCoefficient>
  <CaptureVerticalOffsetCoefficient min="0" max="100" def="50">
    <!--ro, opt, int, 抓拍垂直偏移系数, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </CaptureVerticalOffsetCoefficient>
  <subGraphCoefficient min="1" max="3" def="1">
    <!--ro, opt, int, 子图倍率系数, range:[1,3], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:用于控制目标子图相对于目标框的大小,便于后续算法分析-->1
  </subGraphCoefficient>
  <captureStayDuration min="2" max="10" def="5">
    <!--ro, opt, int, 抓拍停留时间, range:[2,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->2
  </captureStayDuration>
  <TargetImgInfoCap>
    <!--ro, opt, object, 目标抓图相关配置能力-->
    <targetImgType opt="custom,head,headShoulders,human">
      <!--ro, opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#上半身照即头肩照,human#全身照], attr:opt{req, string, 取值范围, range:[,]}-->custom
    </targetImgType>
    <TargetImgSize>
      <!--ro, opt, object, 目标图抓图大小, desc:当targetImgType == custom时生效-->
      <widthRatio min="1.0" max="5.0">
        <!--ro, req, float, 目标抓图宽度比例倍数, range:[1,5], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </widthRatio>
      <upperPartHeightRatio min="1.0" max="3.0">
        <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以上部分-->0.000
      </upperPartHeightRatio>
      <underPartHeightRatio min="0" max="10.0">
        <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以下部分-->0.000
      </underPartHeightRatio>
    </TargetImgSize>
    <fixedPixelEnable opt="true,false">
      <!--ro, opt, bool, 目标抓图固定像素使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </fixedPixelEnable>
    <heightPixel min="50" max="400" def="100">
      <!--ro, opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:当fixedPixelEnable == true时生效-->1
    </heightPixel>
    <HeadTargetImgSizeCap>
      <!--ro, opt, object, 大头照尺寸能力-->
      <widthRatio min="1.0" max="5.0">
        <!--ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </widthRatio>
      <upperPartHeightRatio min="1.0" max="3.0">
        <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以上部分-->0.000
      </upperPartHeightRatio>
      <underPartHeightRatio min="0" max="10.0">
        <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以下部分-->0.000
      </underPartHeightRatio>
    </HeadTargetImgSizeCap>
    <HeadShouldersTargetImgSizeCap>
      <!--ro, opt, object, 上半身照即头肩照尺寸能力-->
      <widthRatio min="1.0" max="5.0">
        <!--ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </widthRatio>
      <upperPartHeightRatio min="1.0" max="3.0">
        <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以上部分-->0.000
      </upperPartHeightRatio>
      <underPartHeightRatio min="0" max="10.0">
        <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以下部分-->0.000
      </underPartHeightRatio>
    </HeadShouldersTargetImgSizeCap>
    <HumanShouldersTargetImgSizeCap>
      <!--ro, opt, object, 全身照尺寸能力-->
      <widthRatio min="1.0" max="5.0">
        <!--ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </widthRatio>
      <upperPartHeightRatio min="1.0" max="3.0">
        <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以上部分-->0.000
      </upperPartHeightRatio>
      <underPartHeightRatio min="0" max="10.0">
        <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:目标下巴以下部分-->0.000
      </underPartHeightRatio>
    </HumanShouldersTargetImgSizeCap>
  </TargetImgInfoCap>
</HumanRecognitionPicParamCap>

9. 获取人体识别图片参数

9.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picParam

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionPicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人体识别图片参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <humanPicUploadEnabled>
    <!--ro, req, bool, 人体小图上传开关使能-->true
  </humanPicUploadEnabled>
  <CaptureResolutionType>
    <!--ro, opt, enum, 抓拍分辨率类型, subType:string, [deviceRecognitionRange#设备识别范围,eyeRecognitionRange#人眼识别范围,FaceRecognitionRange#人脸抓拍范围,manuallyRecognitionRange#手动识别范围]-->deviceRecognitionRange
  </CaptureResolutionType>
  <RecognitionPix>
    <!--ro, req, object, 视频识别过滤像素-->
    <maxPix>
      <!--ro, req, int, 最大像素, range:[,], step:, unit:, unitType:-->0
    </maxPix>
    <minPix>
      <!--ro, req, int, 最小像素, range:[,], step:, unit:, unitType:-->0
    </minPix>
  </RecognitionPix>
  <CaptureRatioCoefficient>
    <!--ro, opt, int, 抓拍倍率系数, range:[,], step:, unit:, unitType:-->0
  </CaptureRatioCoefficient>
  <CaptureVerticalOffsetCoefficient>
    <!--ro, opt, int, 抓拍垂直偏移系数, range:[0,100], step:, unit:, unitType:-->0
  </CaptureVerticalOffsetCoefficient>
  <subGraphCoefficient>
    <!--ro, opt, int, 子图倍率系数, range:[1,3], step:, unit:, unitType:, desc:用于控制目标子图相对于目标框的大小,便于后续算法分析，默认1-->1
  </subGraphCoefficient>
  <captureStayDuration>
    <!--ro, opt, int, 抓拍停留时间, range:[2,10], step:, unit:, unitType:, desc:默认5s-->2
  </captureStayDuration>
  <TargetImgInfo>
    <!--ro, opt, object, 目标抓图相关配置能力-->
    <targetImgType>
      <!--ro, opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#上半身照即头肩照,human#全身照]-->custom
    </targetImgType>
    <TargetImgSize>
      <!--ro, opt, object, 目标图抓图大小, desc:当targetImgType == custom时生效-->
      <widthRatio>
        <!--ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
      </widthRatio>
      <upperPartHeightRatio>
        <!--ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
      </upperPartHeightRatio>
      <underPartHeightRatio>
        <!--ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
      </underPartHeightRatio>
    </TargetImgSize>
    <fixedPixelEnable>
      <!--ro, opt, bool, 目标抓图固定像素使能-->true
    </fixedPixelEnable>
    <heightPixel>
      <!--ro, opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, desc:当fixedPixelEnable == true时生效-->1
    </heightPixel>
  </TargetImgInfo>
</HumanRecognitionPicParam>

10. 配置人体识别图片参数

10.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picParam

10.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionPicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 人体识别图片参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <humanPicUploadEnabled>
    <!--req, bool, 人体小图上传开关使能-->true
  </humanPicUploadEnabled>
  <CaptureResolutionType>
    <!--opt, enum, 抓拍分辨率类型, subType:string, [deviceRecognitionRange#设备识别范围,eyeRecognitionRange#人眼识别范围,FaceRecognitionRange#人脸抓拍范围,manuallyRecognitionRange#手动识别范围]-->deviceRecognitionRange
  </CaptureResolutionType>
  <RecognitionPix>
    <!--req, object, 视频识别过滤像素-->
    <maxPix>
      <!--req, int, 最大像素, range:[,], step:, unit:, unitType:-->0
    </maxPix>
    <minPix>
      <!--req, int, 最小像素, range:[,], step:, unit:, unitType:-->0
    </minPix>
  </RecognitionPix>
  <CaptureRatioCoefficient>
    <!--opt, int, 抓拍倍率系数, range:[,], step:, unit:, unitType:-->0
  </CaptureRatioCoefficient>
  <CaptureVerticalOffsetCoefficient>
    <!--opt, int, 抓拍垂直偏移系数, range:[0,100], step:, unit:, unitType:-->0
  </CaptureVerticalOffsetCoefficient>
  <subGraphCoefficient>
    <!--opt, int, 子图倍率系数, range:[1,3], step:, unit:, unitType:, desc:用于控制目标子图相对于目标框的大小,便于后续算法分析，默认1-->1
  </subGraphCoefficient>
  <captureStayDuration>
    <!--opt, int, 抓拍停留时间, range:[2,10], step:, unit:, unitType:, desc:默认5s-->2
  </captureStayDuration>
  <TargetImgInfo>
    <!--opt, object, 目标抓图相关配置能力-->
    <targetImgType>
      <!--opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#上半身照即头肩照,human#全身照]-->custom
    </targetImgType>
    <TargetImgSize>
      <!--opt, object, 目标图抓图大小, desc:当targetImgType == custom时生效-->
      <widthRatio>
        <!--req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:-->0.000
      </widthRatio>
      <upperPartHeightRatio>
        <!--req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分-->0.000
      </upperPartHeightRatio>
      <underPartHeightRatio>
        <!--req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分-->0.000
      </underPartHeightRatio>
    </TargetImgSize>
    <fixedPixelEnable>
      <!--opt, bool, 目标抓图固定像素使能-->true
    </fixedPixelEnable>
    <heightPixel>
      <!--opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, desc:当fixedPixelEnable == true时生效-->1
    </heightPixel>
  </TargetImgInfo>
</HumanRecognitionPicParam>

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

11. 获取全局目标识别联动参数

11.1 命令

GET /ISAPI/Event/triggers/humanRecognition-<channelID>

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->humanRecognition-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->humanRecognition
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, 报警输入口, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字通道报警输入口, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

12. 配置全局目标识别联动参数

12.1 命令

PUT /ISAPI/Event/triggers/humanRecognition-<channelID>

12.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->humanRecognition-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->humanRecognition
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, 报警输入口, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字通道报警输入口, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

13. 获取全局目标识别单个通道布防时间参数

13.1 命令

GET /ISAPI/Event/schedules/humanRecognition/humanRecognition-<channelID>?mode=<mode>

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->humanRecognition-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->humanRecognition
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--ro, opt, object, 场景参数-->
        <vehicleDetectSceneID>
          <!--ro, opt, int, 车辆检测场景编号, range:[1,16], step:, unit:, unitType:-->0
        </vehicleDetectSceneID>
        <sceneID>
          <!--ro, opt, int, 单场景切换配置, range:[1,16], step:, unit:, unitType:, desc:与<SceneList>节点互斥-->1
        </sceneID>
        <SceneList>
          <!--ro, opt, array, 多场景切换配置, subType:object, range:[,], desc:与<sceneID>节点互斥-->
          <Scene>
            <!--ro, opt, object, 场景信息-->
            <sceneID>
              <!--ro, req, string, 关联场景ID, range:[1,16]-->test
            </sceneID>
            <durationTime>
              <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:-->0
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

14. 配置全局目标识别单个通道布防时间参数

14.1 命令

PUT /ISAPI/Event/schedules/humanRecognition/humanRecognition-<channelID>?mode=<mode>

14.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->humanRecognition-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->humanRecognition
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--opt, object, 场景参数-->
        <vehicleDetectSceneID>
          <!--opt, int, 车辆检测场景编号, range:[1,16], step:, unit:, unitType:-->0
        </vehicleDetectSceneID>
        <sceneID>
          <!--opt, int, 单场景切换配置, range:[1,16], step:, unit:, unitType:, desc:与<SceneList>节点互斥-->1
        </sceneID>
        <SceneList>
          <!--opt, array, 多场景切换配置, subType:object, range:[,], desc:与<sceneID>节点互斥-->
          <Scene>
            <!--opt, object, 场景信息-->
            <sceneID>
              <!--req, string, 关联场景ID, range:[1,16]-->test
            </sceneID>
            <durationTime>
              <!--req, int, 持续时间, range:[,], step:, unit:, unitType:-->0
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

15. 查询人体图片分析

15.1 命令

POST /ISAPI/Intelligent/analysisImage/human

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionTargetsList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 人体识别目标列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <HumanRecognitionTarget>
    <!--ro, opt, object, 人体识别目标-->
    <age_group>
      <!--ro, opt, enum, 年龄段, subType:string, [child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->child
    </age_group>
    <gender>
      <!--ro, opt, enum, 性别, subType:string, [female#女,male#男,unknown#未知]-->female
    </gender>
    <jacet_color>
      <!--ro, opt, enum, 上衣颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,mixture#混色,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄], desc:参考协议字典-->black
    </jacet_color>
    <glass>
      <!--ro, opt, enum, 是否戴眼镜, subType:string, [no#否,yes#是,unknow#未知,sunglasses#戴墨镜]-->no
    </glass>
    <bag>
      <!--ro, opt, enum, 是否背包, subType:string, [no#否,yes#是,unknown#未知]-->no
    </bag>
    <ride>
      <!--ro, opt, enum, 是否骑车, subType:string, [no#否,unknown#未知,yes#是]-->no
    </ride>
    <Rect>
      <!--ro, opt, object, 人体区域, desc:屏幕左上角为坐标原点-->
      <height>
        <!--ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </height>
      <width>
        <!--ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </width>
      <x>
        <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </x>
      <y>
        <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
      </y>
    </Rect>
    <modeData>
      <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
    </modeData>
  </HumanRecognitionTarget>
</HumanRecognitionTargetsList>

16. 查询人体属性（多通道）

16.1 命令

POST /ISAPI/Intelligent/humanRecognition/Search/channels

16.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[1,64], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[1,4294967295], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[1,4294967295], step:, unit:, unitType:-->1
  </maxResults>
  <timeSpanList>
    <!--opt, array, 时间段列表, subType:object, range:[,]-->
    <timeSpan>
      <!--opt, object, 时间段-->
      <startTime>
        <!--req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </timeSpan>
  </timeSpanList>
  <positive>
    <!--req, bool, 是否查询人体误报信息-->true
  </positive>
  <HumanModeList>
    <!--opt, array, 人员信息列表, subType:object, range:[,]-->
    <HumanMode>
      <!--opt, object, 人员信息-->
      <HumanInfo>
        <!--opt, object, 按属性搜图信息-->
        <age_group>
          <!--opt, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->unknown
        </age_group>
        <gender>
          <!--opt, enum, 性别, subType:string, [any#条件不限（搜索的时候使用）,female#女,male#男,unknown#未知]-->any
        </gender>
        <jacet_color>
          <!--opt, enum, 上衣颜色, subType:string, [any#条件不限（搜索的时候使用）,black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,mixture#混色,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->any
        </jacet_color>
        <glass>
          <!--opt, enum, 是否戴眼镜, subType:string, [any#条件不限（搜索的时候使用）,no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->unknown
        </glass>
        <bag>
          <!--opt, enum, 是否背包, subType:string, [any#条件不限（搜索的时候使用）,no#否,unknown#未知,yes#是]-->unknown
        </bag>
        <ride>
          <!--opt, enum, 是否骑车, subType:string, [any#条件不限（搜索的时候使用）,no#否,unknown#未知,yes#是]-->unknown
        </ride>
      </HumanInfo>
      <ModeInfo>
        <!--opt, object, 以图搜图信息-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[0,1024]-->test
        </modeData>
      </ModeInfo>
    </HumanMode>
  </HumanModeList>
  <eventType>
    <!--opt, enum, 事件类型, subType:string, [unlimit#不限,humanRecognition#人体报警], dep:and,{$.HumanRecognitionSearchDescription.positive,eq,false}-->unlimit
  </eventType>
  <ChannelList>
    <!--opt, array, 查询通道列表, subType:object, range:[,]-->
    <Channel>
      <!--opt, object, 通道信息-->
      <channelID>
        <!--req, int, 通道号, range:[1,4294967295], step:, unit:, unitType:-->0
      </channelID>
    </Channel>
  </ChannelList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[1,10000], step:, unit:, unitType:,
desc:限制设备当搜索条件很低时无限制搜索，避免性能过高消耗。
超脑设备此值默认为10000，当超过10000时仍然按照10000处理，不报错-->1
  </totalSearchResults>
  <TaskInfoList>
    <!--opt, array, 任务列表, subType:object, range:[,]-->
    <TaskInfo>
      <!--opt, object, 任务信息-->
      <taskID>
        <!--req, string, 任务ID, range:[1,64], desc:来自于视频化结构分析任务（/ISAPI/SDT/Management/Task/Video/monitorPort?format=json返回的taskID）-->test
      </taskID>
    </TaskInfo>
  </TaskInfoList>
</HumanRecognitionSearchDescription>

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[1,64], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[1,4294967295], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[1,4294967295], step:, unit:, unitType:-->1
  </totalMatches>
  <HumanModeList>
    <!--ro, opt, array, 人体数据列表, subType:object, range:[,]-->
    <HumanMode>
      <!--ro, opt, object, 人体数据-->
      <imageURL>
        <!--ro, req, string, 匹配图片的URL, range:[1,256]-->test
      </imageURL>
      <captureTime>
        <!--ro, req, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </captureTime>
      <imageName>
        <!--ro, req, string, 图片名称, range:[1,128]-->test
      </imageName>
      <age_group>
        <!--ro, opt, enum, 年龄段, subType:string, [child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->unknown
      </age_group>
      <gender>
        <!--ro, opt, enum, 性别, subType:string, [female#女,male#男,unknown#未知]-->female
      </gender>
      <jacet_color>
        <!--ro, opt, enum, 上衣颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,mixture#混色,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
      </jacet_color>
      <glass>
        <!--ro, opt, enum, 是否戴眼镜, subType:string, [no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->unknown
      </glass>
      <bag>
        <!--ro, opt, enum, 是否背包, subType:string, [no#否,unknown#未知,yes#是]-->unknown
      </bag>
      <ride>
        <!--ro, opt, enum, 是否骑车, subType:string, [no#否,unknown#未知,yes#是]-->unknown
      </ride>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
      </similarity>
      <Rect>
        <!--ro, req, object, 匹配图片人体目标子图坐标, desc:屏幕左上角为坐标原点-->
        <height>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </y>
      </Rect>
      <channelID>
        <!--ro, opt, int, 通道号, range:[1,4294967295], step:, unit:, unitType:-->0
      </channelID>
      <taskID>
        <!--ro, opt, string, 任务ID, range:[1,64]-->test
      </taskID>
    </HumanMode>
  </HumanModeList>
</HumanRecognitionSearchResult>

17. 查询人体属性（单通道）

17.1 命令

POST /ISAPI/Intelligent/humanRecognition/Search/channels/<channelID>

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[1,64], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[1,4294967295], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[1,4294967295], step:, unit:, unitType:-->1
  </maxResults>
  <timeSpanList>
    <!--opt, array, 时间段列表, subType:object, range:[,]-->
    <timeSpan>
      <!--opt, object, 时间段-->
      <startTime>
        <!--req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </timeSpan>
  </timeSpanList>
  <positive>
    <!--req, bool, 是否查询人体误报信息-->true
  </positive>
  <HumanModeList>
    <!--opt, array, 人员信息列表, subType:object, range:[,]-->
    <HumanMode>
      <!--opt, object, 人员信息-->
      <HumanInfo>
        <!--opt, object, 按属性搜图信息-->
        <age_group>
          <!--opt, enum, 年龄段, subType:string, [any#条件不限（搜索的时候使用）,child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->unknown
        </age_group>
        <gender>
          <!--opt, enum, 性别, subType:string, [any#条件不限（搜索的时候使用）,female#女,male#男,unknown#未知]-->any
        </gender>
        <jacet_color>
          <!--opt, enum, 上衣颜色, subType:string, [any#条件不限（搜索的时候使用）,black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,mixture#混色,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->any
        </jacet_color>
        <glass>
          <!--opt, enum, 是否戴眼镜, subType:string, [any#条件不限（搜索的时候使用）,no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->unknown
        </glass>
        <bag>
          <!--opt, enum, 是否背包, subType:string, [any#条件不限（搜索的时候使用）,no#否,unknown#未知,yes#是]-->unknown
        </bag>
        <ride>
          <!--opt, enum, 是否骑车, subType:string, [any#条件不限（搜索的时候使用）,no#否,unknown#未知,yes#是]-->unknown
        </ride>
      </HumanInfo>
      <ModeInfo>
        <!--opt, object, 以图搜图信息-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[0,1024]-->test
        </modeData>
      </ModeInfo>
    </HumanMode>
  </HumanModeList>
  <eventType>
    <!--opt, enum, 事件类型, subType:string, [unlimit#不限,humanRecognition#人体报警], dep:and,{$.HumanRecognitionSearchDescription.positive,eq,false}-->unlimit
  </eventType>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[1,10000], step:, unit:, unitType:,
desc:限制设备当搜索条件很低时无限制搜索，避免性能过高消耗。
超脑设备此值默认为10000，当超过10000时仍然按照10000处理，不报错-->1
  </totalSearchResults>
  <TaskInfoList>
    <!--opt, array, 任务列表, subType:object, range:[,]-->
    <TaskInfo>
      <!--opt, object, 任务信息-->
      <taskID>
        <!--req, string, 任务ID, range:[1,64], desc:来自于视频化结构分析任务（/ISAPI/SDT/Management/Task/Video/monitorPort?format=json返回的taskID）-->test
      </taskID>
    </TaskInfo>
  </TaskInfoList>
</HumanRecognitionSearchDescription>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanRecognitionSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[1,64], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[1,4294967295], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[1,4294967295], step:, unit:, unitType:-->1
  </totalMatches>
  <HumanModeList>
    <!--ro, opt, array, 人体数据列表, subType:object, range:[,]-->
    <HumanMode>
      <!--ro, opt, object, 人体数据-->
      <imageURL>
        <!--ro, req, string, 匹配图片的URL, range:[1,256]-->test
      </imageURL>
      <captureTime>
        <!--ro, req, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </captureTime>
      <imageName>
        <!--ro, req, string, 图片名称, range:[1,128]-->test
      </imageName>
      <age_group>
        <!--ro, opt, enum, 年龄段, subType:string, [child#少年,infant#婴幼儿,kid#儿童,middle#中年,middleAged#中老年,old#老年,prime#壮年,teenager#青少年,unknown#未知,young#青年]-->unknown
      </age_group>
      <gender>
        <!--ro, opt, enum, 性别, subType:string, [female#女,male#男,unknown#未知]-->female
      </gender>
      <jacet_color>
        <!--ro, opt, enum, 上衣颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,mixture#混色,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
      </jacet_color>
      <glass>
        <!--ro, opt, enum, 是否戴眼镜, subType:string, [no#不戴眼镜,sunglasses#戴墨镜,unknown#未知,yes#是]-->unknown
      </glass>
      <bag>
        <!--ro, opt, enum, 是否背包, subType:string, [no#否,unknown#未知,yes#是]-->unknown
      </bag>
      <ride>
        <!--ro, opt, enum, 是否骑车, subType:string, [no#否,unknown#未知,yes#是]-->unknown
      </ride>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
      </similarity>
      <Rect>
        <!--ro, req, object, 匹配图片人体目标子图坐标, desc:屏幕左上角为坐标原点-->
        <height>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </y>
      </Rect>
      <taskID>
        <!--ro, opt, string, 任务ID, range:[1,64]-->test
      </taskID>
    </HumanMode>
  </HumanModeList>
</HumanRecognitionSearchResult>


人员排队检测

1. 获取排队检测规则能力(区域关注度)

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/capabilities?format=json

1.2 输入参数

无

1.3 输出参数

{
    "PersonQueueDetectionInfoCap": {
    /*ro, req, object, 排队检测配置信息能力*/
        "countingEnabled":  "true,false",
        /*ro, req, string, 区域人数检测使能, range:[,]*/
        "queueTimeEnabled":  "true,false",
        /*ro, req, string, 排队时长检测使能, range:[,]*/
        "RuleInfoCap": {
        /*ro, req, object, 排队检测规则信息, desc:规则数范围1~8*/
            "maxSize":  8,
            /*ro, req, int, 最大支持的排队检测规则数能力, range:[,], step:, unit:, unitType:*/
            "ruleID": {
            /*ro, req, object, 规则ID*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  8
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "ruleName": {
            /*ro, req, object, 规则名称, desc:string类型,规则名称,字符串长度范围为0~32*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "OSDOverlayEnabled":  "true,false",
            /*ro, req, string, OSD叠加使能, range:[,]*/
            "alarmIntervalTime": {
            /*ro, req, object, 报警时间间隔, desc:integer类型, 报警时间间隔,范围为0~3600s,默认为300s*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3600,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "#text":  300
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "PersonQueueCounting": {
            /*ro, req, object, 区域人数检测参数*/
                "alarmCount": {
                /*ro, opt, object, 人数报警值, desc:integer类型,人数报警值,范围为0~60人,默认为10人*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  60,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  10
                    /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
                },
                "countTriggerType": {
                /*ro, opt, object, 等待人数报警触发类型*/
                    "@opt":  "greater,less,equal,unequal,range",
                    /*ro, opt, string, 选项, range:[,],
                    desc:大于、小于、等于、不等于，区间范围。
                    该节点需与alarmCount节点配合使用。例如:alarmCount=8,countTriggerType=greater时，则设备当等待人数大于8人时才会上报报警，
                    注：该节点若不支持，设备的报警触发类型默认当大于来处理*/
                    "@def":  "greater"
                    /*ro, opt, string, 默认值, range:[,]*/
                }
            },
            "PersonQueueTime": {
            /*ro, req, object, 排队时长检测参数*/
                "alarmTime": {
                /*ro, req, object, 排队时长报警值, desc:integer类型,排队时长报警值,范围为0~3600s,默认为600s*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  3600,
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                    "#text":  600
                    /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
                },
                "timeTriggerType": {
                /*ro, opt, object, 等待时间报警触发类型*/
                    "@opt":  "greater,less,equal,unequal",
                    /*ro, opt, string, 选项, range:[,],
                    desc:大于、小于、等于、不等于，区间范围。
                    该节点需与alarmTime节点配合使用。例如:alarmTime=600,countTriggerType=greater时，则设备当等待时间大于600s时才会上报报警，
                    注：该节点若不支持，设备的报警触发类型默认当大于来处理*/
                    "@def":  "greater"
                    /*ro, opt, string, 默认值, range:[,]*/
                }
            },
            "regionColor": {
            /*ro, req, object, 规则区域颜色, desc:string类型,规则区域颜色,支持blue,red,yellow三种颜色*/
                "@opt":  "blue,red,yellow",
                /*ro, opt, string, 选项, range:[,]*/
                "#text":  "yellow"
                /*ro, opt, string, 默认颜色, range:[,]*/
            },
            "RegionCap": {
            /*ro, req, object, 规则区域坐标, desc:3~10边形*/
                "minSize":  3,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, opt, float, 最小值, range:[0,1000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, opt, float, 最大值, range:[0,1000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 默认值, range:[0,1000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, opt, float, 最小值, range:[0,1000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, opt, float, 最大值, range:[0,1000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 默认值, range:[0,1000], step:, unit:, unitType:*/
                }
            },
            "alarmPicEnabled": {
            /*ro, opt, object, 报警是否上报图片使能, desc:boolean类型，控制对应的排队时长、排队人数报警中是否上报报警图片,包含背景大图及人体目标小图。默认为true,当true时,报警中上报报警图片,当false时,报警中不上报报警图片。若设备不支持该字段,则默认报警中上报报警图片。*/
                "@opt":  "true,false",
                /*ro, opt, string, 选项, range:[,]*/
                "@def":  "true"
                /*ro, opt, string, 默认值, range:[,]*/
            },
            "realTimeEnabled": {
            /*ro, opt, object, 是否开启排队检测实时数据上报, desc:boolean类型,对应事件类型为：personQueueRealTime。默认为true,当true时,开启排队检测实时数据上报,当false时, 关闭排队检测实时数据上报。*/
                "@opt":  "true,false",
                /*ro, opt, string, 选项, range:[,]*/
                "@def":  "true"
                /*ro, opt, string, 默认值, range:[,]*/
            },
            "OSDOverlay": {
            /*ro, opt, object, OSD预览位置*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, opt, float, 最小值, range:[0,1000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, opt, float, 最大值, range:[0,1000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, opt, object, y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, opt, float, 最小值, range:[0,1000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, opt, float, 最大值, range:[0,1000], step:, unit:, unitType:*/
                }
            }
        }
    },
    "PersonQueueCountingCap": {
    /*ro, opt, object, 获取排队人数检测报表结果及文件能力*/
        "fileType": {
        /*ro, opt, object, 文件类型, desc:string类型,文件类型,共excel,txt二种*/
            "@opt":  "excel,txt",
            /*ro, opt, string, 文件类型选项, range:[,]*/
            "#text":  "excel"
            /*ro, opt, string, 默认类型, range:[,]*/
        },
        "reportType": {
        /*ro, req, object, 报表类型, desc:string类型,共daily,weekly,monthly,custom四种*/
            "@opt":  "daily,weekly,monthly,custom",
            /*ro, opt, string, 报表类型选项, range:[,]*/
            "#text":  "daily"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "isSupportStartTime":  " true,false",
        /*ro, req, string, 是否支持报表开始查询时间, range:[,]*/
        "RuleListCap": {
        /*ro, req, object, 规则条件信息, desc:可支持3个规则*/
            "maxSize":  3,
            /*ro, req, int, 最大支持的排队检测规则数能力, range:[,], step:, unit:, unitType:*/
            "ruleID": {
            /*ro, req, object, 规则ID*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "WaitTimeListCap": {
        /*ro, req, object, 排队等待时长条件信息, desc:最大支持3段时长区间*/
            "maxSize":  3,
            /*ro, req, int, 最大支持的时长区间数能力, range:[,], step:, unit:, unitType:*/
            "minWaitTime": {
            /*ro, req, object, 排队等待时长最小值, desc:范围为0~3600s*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3600
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "maxWaitTime": {
            /*ro, req, object, 排队等待时长最大值, desc:范围为0~3600s*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3600
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "isSupportEndTime":  "true,false",
        /*ro, opt, string, 是否支持报表结束查询时间, range:[,], desc:依赖项, bool类型, 当reportType支持custom时需返回。*/
        "customReportAccuracy": {
        /*ro, opt, object, 自定义报表精度, desc:依赖项,目前仅支持按天进行统计,当reportType支持custom时需返回*/
            "@opt":  "day",
            /*ro, opt, string, 选项, range:[,]*/
            "@def":  "day"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "isSupportAverageTime":  "true,false"
        /*ro, opt, string, 排队人数检测报表结果是否支持平均等待时长返回, range:[,], desc:无该节点表示不支持*/
    },
    "PersonQueueTimeCap": {
    /*ro, opt, object, 获取排队时长检测报表结果及文件能力*/
        "fileType": {
        /*ro, opt, object, 文件类型, desc:string类型,共excel,txt二种*/
            "@opt":  "excel,txt",
            /*ro, opt, string, 选项, range:[,]*/
            "#text":  "excel"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "reportType": {
        /*ro, req, object, 报表类型, desc:string类型,共daily,weekly,monthly,custom四种*/
            "@opt":  "daily,weekly,monthly,custom",
            /*ro, opt, string, 选项, range:[,]*/
            "#text":  "daily"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "isSupportStartTime":  "true,false",
        /*ro, req, string, 是否支持报表开始查询时间, range:[,]*/
        "RuleListCap": {
        /*ro, req, object, 规则条件信息, desc:可支持3个规则*/
            "maxSize":  3,
            /*ro, req, int, 最大支持的排队检测规则数能力, range:[,], step:, unit:, unitType:*/
            "ruleID": {
            /*ro, req, object, 规则ID*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "CountListCap": {
        /*ro, req, object, 排队等待人数条件信息, desc:最大支持3段人数区间*/
            "maxSize":  3,
            /*ro, req, int, 最大支持的时长区间数能力, range:[,], step:, unit:, unitType:*/
            "minCount": {
            /*ro, req, object, 排队等待人数最小值, desc:integer类型,范围为0~60人*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  60
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "maxCount": {
            /*ro, req, object, 排队等待人数最大值, desc:integer类型,范围为0~60人*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  60
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "isSupportEndTime":  "true,false",
        /*ro, opt, string, 是否支持报表结束查询时间, range:[,], desc:依赖项, bool类型, 是否支持报表结束查询时间，当reportType支持custom时需返回*/
        "customReportAccuracy": {
        /*ro, opt, object, 自定义报表精度, desc:依赖项, 自定义报表精度,目前仅支持按天进行统计当reportType支持custom时需返回*/
            "@opt":  "day",
            /*ro, opt, string, 选项, range:[,]*/
            "@def":  "day"
            /*ro, opt, string, 默认值, range:[,]*/
        }
    },
    "isSupportRawDataFile":  "true,false",
    /*ro, req, string, 是否支持人员排队检测原始数据文件获取, range:[,]*/
    "isSupportAlgParam":  "true,false",
    /*ro, opt, string, 是否支持算法库高级参数配置, range:[,]*/
    "PersonQueueTimingStatistics": {
    /*ro, opt, object, 排队检测定时人数统计参数, desc:对应报警事件为：personQueueTimingStatistics*/
        "enabled": {
        /*ro, req, object, 开启定时上传使能, desc:开启后设备默认支持开启上传中心及7*24小时布防时间上报*/
            "@opt": [true, false],
            /*ro, opt, array, 选项, subType:bool, range:[,]*/
            "@def":  true
            /*ro, opt, bool, 默认值*/
        },
        "QueueTimeCap": {
        /*ro, req, object, 排队时长人数统计区间能力, desc:设备可在间隔时间范围内,定时统计每个规则区域中各排队时长区间内的人数,并上报结果。如统计的最大时长无上限（例如大于等于60s的人数）,则最小排队时长minQueueTime赋值为60s,并不下发最大时长maxQueueTime*/
            "maxSize":  4,
            /*ro, req, int, 最大支持的区间数能力, range:[1,4], step:, unit:, unitType:*/
            "minQueueTime": {
            /*ro, opt, object, 最小排队时长(即该区间内大于等于该时长), desc:最小排队时长的值必须小于最大排队时长。*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:s, unitType:*/
                "@max":  3600
                /*ro, opt, int, 最大值, range:[,], step:, unit:s, unitType:*/
            },
            "maxQueueTime": {
            /*ro, opt, object, 最大排队时长(即该区间内小于等于该时长;若未下发该字段则代表最大时长无上限), desc:最大排队时长的值必须大于最小排队时长.*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:s, unitType:*/
                "@max":  3600
                /*ro, opt, int, 最大值, range:[,], step:, unit:s, unitType:*/
            }
        }
    },
    "isSupportCapturePicOverlap":  true
    /*ro, req, bool, 是否支持排队检测叠加与抓图配置参数, desc:对应接口:/ISAPI/Intelligent/channels/<channelID>/personQueueDetection/capturePicOverlap?format=json*/
}

2. 获取排队检测规则(区域关注度)

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/personQueueDetection?format=json

2.2 输入参数

无

2.3 输出参数

{
    "PersonQueueDetectionInfo": {
    /*ro, req, object, 排队检测配置信息*/
        "countingEnabled":  true,
        /*ro, req, bool, 区域人数检测使能*/
        "queueTimeEnabled":  true,
        /*ro, req, bool, 排队时长检测使能*/
        "RuleInfo": [
        /*ro, req, array, 排队检测规则信息, subType:object, range:[1,8], desc:规则数范围1~8*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[1,8], step:, unit:, unitType:*/
                "ruleName":  "queue1",
                /*ro, req, string, 规则名称, range:[0,32]*/
                "OSDOverlayEnabled":  true,
                /*ro, req, bool, OSD叠加使能*/
                "alarmIntervalTime":  300,
                /*ro, req, int, 报警时间间隔, range:[0,3600], step:, unit:s, unitType:时间*/
                "PersonQueueCounting": {
                /*ro, req, object, 区域人数检测参数*/
                    "alarmCount":  10,
                    /*ro, req, int, 人数报警值, range:[0,60], step:, unit:, unitType:*/
                    "countTriggerType":  "range",
                    /*ro, opt, enum, 等待人数报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于,range#区间], desc:该节点需与alarmCount节点配合使用。例如：alarmCount=8,countTriggerType=greater时,则设备当等待人数大于8人时才会上报报警。注：该节点若不支持，设备的报警触发类型默认当大于来处理。例如：alarmCount=8,countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警。*/
                    "maxAlarmCount":  5,
                    /*ro, opt, int, 最大人数报警值, range:[,], step:, unit:, unitType:, desc:依赖项, 当countTriggerType=range时生效。例如：alarmCount=8,且countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警。maxAlarmCount值必须大于alarmCount值。*/
                    "durationTime":  300
                    /*ro, opt, int, 排队人数报警的持续时间过滤值, range:[0,3600], step:, unit:s, unitType:时间, desc:当排队人数达到该持续时间时,才上报报警*/
                },
                "PersonQueueTime": {
                /*ro, req, object, 排队时长检测参数*/
                    "alarmTime":  600,
                    /*ro, req, int, 排队时长报警值, range:[0,3600], step:, unit:s, unitType:时间*/
                    "timeTriggerType":  "greater"
                    /*ro, opt, enum, 等待时间报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于], desc:该节点需与alarmTime节点配合使用。例如：alarmTime=600s,countingTriggerType=greater时,则设备当等待时间大于600s时才会上报报警。注：该节点若不支持，设备的报警触发类型默认当大于来处理。*/
                },
                "regionColor":  "blue",
                /*ro, req, enum, 规则区域颜色, subType:string, [blue#蓝色,red#红色,yellow#黄色]*/
                "Region": [
                /*ro, req, array, 规则区域坐标, subType:object, range:[3,10], desc:屏幕左上角为坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "OSDOverlay": {
                /*ro, opt, object, OSD预览位置, desc:屏幕左上角为坐标原点*/
                    "x":  0.012,
                    /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.012
                    /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        ],
        "alarmPicEnabled":  true,
        /*ro, opt, bool, 报警是否上报图片使能, desc:控制对应的排队时长、排队人数报警中是否上报报警图片,包含背景大图及人体目标小图。默认为true,当true时,报警中上报报警图片,当false时,报警中不上报报警图片。若设备不支持该字段,则默认报警中上报报警图片。*/
        "realTimeEnabled":  true,
        /*ro, opt, bool, 是否开启排队检测实时数据上报, desc:对应事件类型为：personQueueRealTime。默认为true,当true时,开启排队检测实时数据上报,当false时, 关闭排队检测实时数据上报。*/
        "PersonQueueTimingStatistics": {
        /*ro, opt, object, 排队检测定时人数统计参数, desc:对应报警事件为：personQueueTimingStatistics*/
            "enabled":  true,
            /*ro, req, bool, 开启定时上传使能, desc:开启后设备默认支持开启上传中心及7*24小时布防时间上报*/
            "QueueTime": [
            /*ro, req, array, 排队时长人数统计区间, subType:object, range:[1,4], desc:设备可在间隔时间范围内,定时统计每个规则区域中各排队时长区间内的人数,并上报结果。如统计的最大时长无上限（例如大于等于60s的人数）,则最小排队时长minQueueTime赋值为60s,并不下发最大时长maxQueueTime*/
                {
                    "minQueueTime":  1,
                    /*ro, req, int, 最小排队时长(即该区间内大于等于该时长), range:[1,3600], step:, unit:s, unitType:, desc:最小排队时长的值必须小于最大排队时长。*/
                    "maxQueueTime":  1
                    /*ro, opt, int, 最大排队时长(即该区间内小于等于该时长;若未下发该字段则代表最大时长无上限), range:[1,3600], step:, unit:s, unitType:, desc:最大排队时长的值必须大于最小排队时长。*/
                }
            ]
        }
    }
}

3. 配置排队检测规则(区域关注度)

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/personQueueDetection?format=json

3.2 输入参数

{
    "PersonQueueDetectionInfo": {
    /*req, object, 排队检测配置信息*/
        "countingEnabled":  true,
        /*req, bool, 区域人数检测使能*/
        "queueTimeEnabled":  true,
        /*req, bool, 排队时长检测使能*/
        "RuleInfo": [
        /*req, array, 排队检测规则信息, subType:object, range:[1,8], desc:规则数范围1~8*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[1,8], step:, unit:, unitType:*/
                "ruleName":  "queue1",
                /*req, string, 规则名称, range:[0,32]*/
                "OSDOverlayEnabled":  true,
                /*req, bool, OSD叠加使能*/
                "alarmIntervalTime":  300,
                /*req, int, 报警时间间隔, range:[0,3600], step:, unit:s, unitType:时间*/
                "PersonQueueCounting": {
                /*req, object, 区域人数检测参数*/
                    "alarmCount":  10,
                    /*req, int, 人数报警值, range:[0,60], step:, unit:, unitType:*/
                    "countTriggerType":  "range",
                    /*opt, enum, 等待人数报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于,range#区间], desc:该节点需与alarmCount节点配合使用。例如：alarmCount=8,countTriggerType=greater时,则设备当等待人数大于8人时才会上报报警。注：该节点若不支持，设备的报警触发类型默认当大于来处理。例如：alarmCount=8,countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警。*/
                    "maxAlarmCount":  5,
                    /*opt, int, 最大人数报警值, range:[,], step:, unit:, unitType:, desc:依赖项, 当countTriggerType=range时生效。例如：alarmCount=8,且countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警。maxAlarmCount值必须大于alarmCount值。*/
                    "durationTime":  300
                    /*opt, int, 排队人数报警的持续时间过滤值, range:[0,3600], step:, unit:s, unitType:时间, desc:当排队人数达到该持续时间时,才上报报警*/
                },
                "PersonQueueTime": {
                /*req, object, 排队时长检测参数*/
                    "alarmTime":  600,
                    /*req, int, 排队时长报警值, range:[0,3600], step:, unit:s, unitType:时间*/
                    "timeTriggerType":  "greater"
                    /*opt, enum, 等待时间报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于], desc:该节点需与alarmTime节点配合使用。例如：alarmTime=600s,countingTriggerType=greater时,则设备当等待时间大于600s时才会上报报警。注：该节点若不支持，设备的报警触发类型默认当大于来处理。*/
                },
                "regionColor":  "blue",
                /*req, enum, 规则区域颜色, subType:string, [blue#蓝色,red#红色,yellow#黄色]*/
                "Region": [
                /*req, array, 规则区域坐标, subType:object, range:[3,10], desc:屏幕左上角为坐标原点*/
                    {
                        "x":  0.120,
                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "OSDOverlay": {
                /*opt, object, OSD预览位置, desc:屏幕左上角为坐标原点*/
                    "x":  0.012,
                    /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.012
                    /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        ],
        "alarmPicEnabled":  true,
        /*opt, bool, 报警是否上报图片使能, desc:控制对应的排队时长、排队人数报警中是否上报报警图片,包含背景大图及人体目标小图。默认为true,当true时,报警中上报报警图片,当false时,报警中不上报报警图片。若设备不支持该字段,则默认报警中上报报警图片。*/
        "realTimeEnabled":  true,
        /*opt, bool, 是否开启排队检测实时数据上报, desc:对应事件类型为：personQueueRealTime。默认为true,当true时,开启排队检测实时数据上报,当false时, 关闭排队检测实时数据上报。*/
        "PersonQueueTimingStatistics": {
        /*opt, object, 排队检测定时人数统计参数, desc:对应报警事件为：personQueueTimingStatistics*/
            "enabled":  true,
            /*req, bool, 开启定时上传使能, desc:开启后设备默认支持开启上传中心及7*24小时布防时间上报*/
            "QueueTime": [
            /*req, array, 排队时长人数统计区间, subType:object, range:[1,4], desc:设备可在间隔时间范围内,定时统计每个规则区域中各排队时长区间内的人数,并上报结果。如统计的最大时长无上限（例如大于等于60s的人数）,则最小排队时长minQueueTime赋值为60s,并不下发最大时长maxQueueTime*/
                {
                    "minQueueTime":  1,
                    /*req, int, 最小排队时长(即该区间内大于等于该时长), range:[1,3600], step:, unit:s, unitType:, desc:最小排队时长的值必须小于最大排队时长。*/
                    "maxQueueTime":  1
                    /*opt, int, 最大排队时长(即该区间内小于等于该时长;若未下发该字段则代表最大时长无上限), range:[1,3600], step:, unit:s, unitType:, desc:最大排队时长的值必须大于最小排队时长。*/
                }
            ]
        }
    }
}

3.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

4. 获取排队检测单个通道联动

4.1 命令

GET /ISAPI/Event/triggers/personQueueDetection-<channelID>

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 获取排队检测单个通道联动, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->personQueueDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

5. 配置排队检测单个通道联动

5.1 命令

PUT /ISAPI/Event/triggers/personQueueDetection-<channelID>

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置排队检测单个通道联动, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->personQueueDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取单个排队检测布防计划

6.1 命令

GET /ISAPI/Event/schedules/personQueueDetection/<channelID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取单个排队检测布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 事件类型-通道号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->personQueueDetection
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间, subType:object, range:[,], attr:size{req, string, 大小, range:[,]}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:string, [1#Monday,2#Tuesday,3#Wednesday,4#Thursday,5#Friday,6#Saturday,7#Sunday]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

7. 配置单个排队检测布防计划

7.1 命令

PUT /ISAPI/Event/schedules/personQueueDetection/<channelID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置单个排队检测布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 事件类型-通道号, range:[,]-->1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->personQueueDetection
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间, subType:object, range:[,], attr:size{req, string, 大小, range:[,]}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:string, [1#Monday,2#Tuesday,3#Wednesday,4#Thursday,5#Friday,6#Saturday,7#Sunday]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 查询排队人数检测报表文件

8.1 命令

POST /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/queueCountingFile?format=json

8.2 输入参数

{
    "PersonQueueCountingDescription": {
    /*req, object, 单个区域下多段人数区间报表条件*/
        "fileType":  "excel",
        /*opt, string, 文件类型, range:[,], desc:共excel,txt二种, 当调用/ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueCountingFile?format=json 接口时下发*/
        "reportType":  "daily",
        /*req, string, 报表类型, range:[,], desc:共daily,weekly,monthly,custom四种*/
        "startTime":  "2004-05-03T00:00:00+08:00",
        /*req, datetime, 报表开始查询时间*/
        "RuleList": [
        /*req, array, 规则条件信息, subType:object, range:[,], desc:可支持3个规则*/
            {
                "ruleID":  1
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:, desc:对应配置中规则区域ID*/
            }
        ],
        "WaitTimeList": [
        /*req, array, 排队等待时长条件信息, subType:object, range:[,], desc:最大支持3段时长区间.minWaitTime及maxWaitTime字段必须至少下发一个参数，若minWaitTime下发了参数,而没有下发maxWaitTime参数,则代表无上限。若maxWaitTime下发了参数,而没有下发minWaitTime参数,则代表无下限。例如minWaitTime = 600,而maxWaitTime参数不下发,则代表查询大于600排队时长的所有统计数据。例如maxWaitTime = 600,而minWaitTime参数不下发,则代表查询小于或等于600排队时长的所有统计数据。*/
            {
                "minWaitTime":  600,
                /*opt, int, 排队等待时长最小值, range:[0,3600], step:, unit:s, unitType:时间*/
                "maxWaitTime":  600
                /*opt, int, 排队等待时长最大值, range:[0,3600], step:, unit:, unitType:*/
            }
        ],
        "endTime":  "2004-05-03T00:00:00+08:00",
        /*opt, datetime, 报表结束查询时间, desc:依赖项,ios_8601类型, 报表结束查询时间,例如:2004-05-03T00:00:00+08:00,当reportType选择custom时生效*/
        "customReportAccuracy":  "day"
        /*opt, string, 自定义报表精度, range:[,], desc:依赖项, 自定义报表精度,目前仅支持按天进行统计,当reportType选择custom时生效*/
    }
}

8.3 输出参数

{
    "PersonQueueCountingFileResult": {
    /*ro, req, object, 排队时长检测统计结果*/
        "fileURL":  "test"
        /*ro, opt, string, 排队人数检测报表文件URL, range:[,]*/
    }
}

9. 查询排队人数检测报表结果信息

9.1 命令

POST /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/queueCountingResult?format=json

9.2 输入参数

{
    "PersonQueueCountingDescription": {
    /*req, object, 单个区域下多段人数区间报表条件*/
        "fileType":  "excel",
        /*opt, string, 文件类型, range:[,], desc:共excel,txt二种, 当调用/ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueCountingFile?format=json 接口时下发*/
        "reportType":  "daily",
        /*req, string, 报表类型, range:[,], desc:共daily,weekly,monthly,custom四种*/
        "startTime":  "2004-05-03T00:00:00+08:00",
        /*req, datetime, 报表开始查询时间*/
        "RuleList": [
        /*req, array, 规则条件信息, subType:object, range:[,], desc:可支持3个规则*/
            {
                "ruleID":  1
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:, desc:对应配置中规则区域ID*/
            }
        ],
        "WaitTimeList": [
        /*req, array, 排队等待时长条件信息, subType:object, range:[,], desc:最大支持3段时长区间.minWaitTime及maxWaitTime字段必须至少下发一个参数，若minWaitTime下发了参数,而没有下发maxWaitTime参数,则代表无上限。若maxWaitTime下发了参数,而没有下发minWaitTime参数,则代表无下限。例如minWaitTime = 600,而maxWaitTime参数不下发,则代表查询大于600排队时长的所有统计数据。例如maxWaitTime = 600,而minWaitTime参数不下发,则代表查询小于或等于600排队时长的所有统计数据。*/
            {
                "minWaitTime":  600,
                /*opt, int, 排队等待时长最小值, range:[0,3600], step:, unit:s, unitType:时间*/
                "maxWaitTime":  600
                /*opt, int, 排队等待时长最大值, range:[0,3600], step:, unit:, unitType:*/
            }
        ],
        "endTime":  "2004-05-03T00:00:00+08:00",
        /*opt, datetime, 报表结束查询时间, desc:依赖项,ios_8601类型, 报表结束查询时间,例如:2004-05-03T00:00:00+08:00,当reportType选择custom时生效*/
        "customReportAccuracy":  "day"
        /*opt, string, 自定义报表精度, range:[,], desc:依赖项, 自定义报表精度,目前仅支持按天进行统计,当reportType选择custom时生效*/
    }
}

9.3 输出参数

{
    "PersonQueueCountingResult": {
    /*ro, req, object, 排队人数检测统计结果*/
        "RuleList": [
        /*ro, req, array, 多个规则下的所有排队等待时长区间数据, subType:object, range:[,], desc:最大支持3个规则*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, desc:对应配置中规则区域ID*/
                "WaitTimeRangeList": [
                /*ro, req, array, 单个规则下所有排队等待时长区间数据, subType:object, range:[,], desc:最大支持3段时长区间。minWaitTime及maxWaitTime字段必须至少上报一个参数，若minWaitTime上报了参数,而没有上报maxWaitTime参数,则代表无上限。若maxWaitTime上报了参数,而没有上报minWaitTime参数,则代表无下限。例如minWaitTime = 600,而maxWaitTime参数不上报,则代表查询大于600排队时长的所有统计数据。例如maxWaitTime = 600,而minWaitTime参数不上报,则代表查询小于600排队时长的所有统计数据。*/
                    {
                        "minWaitTime":  600,
                        /*ro, opt, int, 排队等待时长最小值, range:[0,3600], step:, unit:s, unitType:时间*/
                        "maxWaitTime":  600,
                        /*ro, opt, int, 排队等待时长最大值, range:[0,3600], step:, unit:s, unitType:时间*/
                        "CountingInfoList": [
                        /*ro, req, array, 人数信息结果, subType:object, range:[,], desc:若为日报表则每个整点返回一个结果,共24个结果。若为周报表则该周中每一天返回一个结果,共7个结果。若为月报表则该月中每一天返回一个结果,共30个结果。若为自定义报表,可根据用户选择的报表精度进行返回；目前customReportAccuracy精度配置仅支持按天返回,则代表设备将返回开始到结束时间的实际天数,每一天返回一个结果；若开始到结束时间不满一天，则当一天进行返回。*/
                            {
                                "startTime":  "2004-05-03T00:00:00.000Z",
                                /*ro, req, datetime, 该时段内的开始时间, desc:例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
                                "endTime":  "2004-05-03T01:00:00.000Z",
                                /*ro, req, datetime, 该时段内的结束时间, desc:例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
                                "count":  5
                                /*ro, req, int, 统计人数值, range:[0,60], step:, unit:, unitType:*/
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

10. 查询排队时长检测报表文件

10.1 命令

POST /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/queueTimeFile?format=json

10.2 输入参数

{
    "PersonQueueTimeDescription": {
    /*req, object, 单个区域下多段人数区间报表条件*/
        "fileType":  "excel",
        /*opt, string, 文件类型, range:[,], desc:共excel,txt二种, 当调用/ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueCountingFile?format=json 接口时下发*/
        "reportType":  "daily",
        /*req, string, 报表类型, range:[,], desc:共daily,weekly,monthly,custom四种*/
        "startTime":  "2004-05-03T00:00:00+08:00",
        /*req, datetime, 报表开始查询时间*/
        "RuleList": [
        /*req, array, 规则条件信息, subType:object, range:[,], desc:可支持3个规则*/
            {
                "ruleID":  1
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:, desc:对应配置中规则区域ID*/
            }
        ],
        "CountList": [
        /*req, array, 排队等待人数条件信息, subType:object, range:[,], desc:最大支持3段时长区间.minCount及maxCount字段必须至少下发一个参数，若minCount下发了参数,而没有下发maxCount参数,则代表无上限。若maxCount下发了参数,而没有下发minCount参数,则代表无下限。例如minCount = 10,而maxCount参数不下发,则代表查询大于10人数的所有统计数据。例如maxCount = 10,而minCount参数不下发,则代表查询小于或等于10人数的所有统计数据。*/
            {
                "minCount":  10,
                /*opt, int, 排队等待人数最小值, range:[0,60], step:, unit:, unitType:*/
                "maxCount":  10
                /*opt, int, 排队等待人数最大值, range:[0,60], step:, unit:, unitType:*/
            }
        ],
        "endTime":  "2004-05-03T00:00:00+08:00",
        /*opt, datetime, 报表结束查询时间, desc:依赖项,ios_8601类型, 报表结束查询时间,例如:2004-05-03T00:00:00+08:00,当reportType选择custom时生效*/
        "customReportAccuracy":  "day"
        /*opt, string, 自定义报表精度, range:[,], desc:依赖项, 自定义报表精度,目前仅支持按天进行统计,当reportType选择custom时生效*/
    }
}

10.3 输出参数

{
    "PersonQueueTimeFileResult": {
    /*ro, req, object, 排队时长检测统计结果*/
        "fileURL":  "test"
        /*ro, opt, string, 排队时长检测报表文件URL, range:[,]*/
    }
}

11. 查询排队时长检测报表结果信息

11.1 命令

POST /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/queueTimeResult?format=json

11.2 输入参数

{
    "PersonQueueTimeDescription": {
    /*req, object, 单个区域下多段人数区间报表条件*/
        "fileType":  "excel",
        /*opt, string, 文件类型, range:[,], desc:共excel,txt二种, 当调用/ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueCountingFile?format=json 接口时下发*/
        "reportType":  "daily",
        /*req, string, 报表类型, range:[,], desc:共daily,weekly,monthly,custom四种*/
        "startTime":  "2004-05-03T00:00:00+08:00",
        /*req, datetime, 报表开始查询时间*/
        "RuleList": [
        /*req, array, 规则条件信息, subType:object, range:[,], desc:可支持3个规则*/
            {
                "ruleID":  1
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:, desc:对应配置中规则区域ID*/
            }
        ],
        "CountList": [
        /*req, array, 排队等待人数条件信息, subType:object, range:[,], desc:最大支持3段时长区间.minCount及maxCount字段必须至少下发一个参数，若minCount下发了参数,而没有下发maxCount参数,则代表无上限。若maxCount下发了参数,而没有下发minCount参数,则代表无下限。例如minCount = 10,而maxCount参数不下发,则代表查询大于10人数的所有统计数据。例如maxCount = 10,而minCount参数不下发,则代表查询小于或等于10人数的所有统计数据。*/
            {
                "minCount":  10,
                /*opt, int, 排队等待人数最小值, range:[0,60], step:, unit:, unitType:*/
                "maxCount":  10
                /*opt, int, 排队等待人数最大值, range:[0,60], step:, unit:, unitType:*/
            }
        ],
        "endTime":  "2004-05-03T00:00:00+08:00",
        /*opt, datetime, 报表结束查询时间, desc:依赖项,ios_8601类型, 报表结束查询时间,例如:2004-05-03T00:00:00+08:00,当reportType选择custom时生效*/
        "customReportAccuracy":  "day"
        /*opt, string, 自定义报表精度, range:[,], desc:依赖项, 自定义报表精度,目前仅支持按天进行统计,当reportType选择custom时生效*/
    }
}

11.3 输出参数

{
    "PersonQueueTimeResult": {
    /*ro, req, object, 排队时长检测统计结果*/
        "RuleList": [
        /*ro, req, array, 多个规则下的所有排队等待人数区间数据, subType:object, range:[,], desc:array数组,最大支持3个规则*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, desc:对应配置中规则区域ID*/
                "CountRangeList": [
                /*ro, req, array, 单个规则下所有排队等待人数区间数据, subType:object, range:[,], desc:array数组,最大支持3段人数区间。minCount及maxCount字段必须至少上报一个参数，若minCount上报了参数,而没有上报maxCount参数,则代表无上限。若maxCount上报了参数,而没有上报minCount参数,则代表无下限。例如minCount = 10,而maxWaitTime参数不上报,则代表查询大于10人数的所有统计数据。例如maxCount = 10,而minCount参数不上报,则代表查询小于10人数的所有统计数据。*/
                    {
                        "minCount":  10,
                        /*ro, opt, int, 排队等待人数最小值, range:[0,60], step:, unit:, unitType:*/
                        "maxCount":  10,
                        /*ro, opt, int, 排队等待人数最大值, range:[0,60], step:, unit:, unitType:, desc:若maxCount下发空值则代表无上限*/
                        "TimeInfoList": [
                        /*ro, req, array, 排队时长结果, subType:object, range:[,], desc:若为日报表则每个整点返回一个结果,共24个结果。若为周报表则该周中每一天返回一个结果,共7个结果。若为月报表则该月中每一天返回一个结果,共30个结果。若为自定义报表,可根据用户选择的报表精度进行返回；目前customReportAccuracy精度配置仅支持按天返回,则代表设备将返回开始到结束时间的实际天数,每一天返回一个结果；若开始到结束时间不满一天，则当一天进行返回。*/
                            {
                                "startTime":  "2004-05-03T00:00:00.000Z",
                                /*ro, req, datetime, 该时段内的开始时间, desc:ios_8601类型,该时段内的开始时间,例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
                                "endTime":  "2004-05-03T01:00:00.000Z",
                                /*ro, req, datetime, 该时段内的结束时间, desc:ios_8601类型, 该时段内的结束时间,例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
                                "time":  60
                                /*ro, req, int, 排队的等待时长值, range:[0,3600], step:, unit:s, unitType:时间*/
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

12. 查询排队检测原始数据文件

12.1 命令

POST /ISAPI/Intelligent/channels/<channelID>/personQueueDetection/rawDataFile?format=json

12.2 输入参数

{
    "PersonQueueRawDataFileDescription": {
    /*req, object, 单个区域下多段人数区间报表条件*/
        "searchID":  1,
        /*req, int, 搜索记录唯一标识, range:[,], step:, unit:, unitType:, desc:用来确认上层客户端是否为同一个(倘若是同一个，则设备记录内存，下次搜索加快速度*/
        "searchResultPosition":  1,
        /*req, int, 表示查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:*/
        "maxResults":  4000,
        /*req, int, 本次查询条数, range:[,], step:, unit:, unitType:, desc:单次最多4000条*/
        "startTime":  "2004-05-03T00:00:00.000Z",
        /*req, datetime, 开始查询时间, desc:ios_8601类型, 例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
        "endTime":  "2004-05-03T00:00:00.000Z"
        /*req, datetime, 结束查询时间, desc:ios_8601类型, 例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
    }
}

12.3 输出参数

{
    "PersonQueueRawDataFileResult": {
    /*ro, req, object, 排队时长检测统计结果*/
        "searchID":  1,
        /*ro, req, int, 搜索记录唯一标识, range:[,], step:, unit:, unitType:, desc:用来确认上层客户端是否为同一个(倘若是同一个，则设备记录内存，下次搜索加快速度)*/
        "responseStatus":  "OK",
        /*ro, req, enum, 查询状态, subType:object, [OK#代表接收数据完成,NO MATCHES#代表找不到匹配数据。,MORE#代表后续还有更多数据]*/
        "numOfMatches":  4000,
        /*ro, req, int, 返回的记录条数, range:[,], step:, unit:, unitType:*/
        "totalMatches":  100000,
        /*ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:*/
        "endTime":  "2004-05-03T00:00:00.000Z",
        /*ro, req, datetime, 本次返回的数据最后时间, desc:ios_8601类型, 例如:2004-05-03T00:00:00+08:00或者2004-05-03T00:00:00.000Z*/
        "fileURL":  "test"
        /*ro, req, string, 文件URL, range:[,]*/
    }
}


人员密度检测

1. 获取人员密度检测能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonDensityDetectionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 获取人员密度检测能力, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 规则开关使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <densityType opt="level,exception">
    <!--ro, opt, enum, 人员密度检测类型, subType:string, [level#人员密度等级,exception#人数异常], attr:opt{req, string, 取值范围, range:[,]}-->level
  </densityType>
  <DensityLevel>
    <!--ro, opt, object, 人员密度等级-->
    <itemNumber min="1" max="3">
      <!--ro, opt, int, 人员密度等级限制, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </itemNumber>
    <item opt="personCnt,customName">
      <!--ro, opt, enum, 人员密度等级类型, subType:string, [personCnt#人数,customName#自定义名称], attr:opt{req, string, 取值范围, range:[,]}-->personCnt
    </item>
    <personCnt min="1" max="999999">
      <!--ro, opt, int, 人数等级限制, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </personCnt>
    <customNameLen min="0" max="256">
      <!--ro, opt, string, 自定义名称长度限制, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </customNameLen>
  </DensityLevel>
  <DensityExceptionList>
    <!--ro, opt, array, 人数异常信息列表, subType:object, range:[,]-->
    <DensityException>
      <!--ro, opt, object, 人数异常信息-->
      <id min="1" max="10">
        <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </id>
      <personCnt min="1" max="10">
        <!--ro, req, int, 报警人数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </personCnt>
      <customName min="1" max="10">
        <!--ro, opt, string, 自定义名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:min/max限制名称范围-->test
      </customName>
    </DensityException>
  </DensityExceptionList>
  <AnalyzeDataUploadCtrl>
    <!--ro, opt, object, 报警事件数据上传控制-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <picUploadEnabled opt="true,false">
      <!--ro, req, bool, 图片上传使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </picUploadEnabled>
    <Mode>
      <!--ro, opt, object, 模式-->
      <timeing>
        <!--ro, opt, object, 定时上传-->
        <enabled opt="true,false">
          <!--ro, req, bool, true, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
        <interval opt="1,5,10,15,20,30,60">
          <!--ro, opt, int, 间隔, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:默认:opt=" 1,5,10,15,20,30,60".单位是：min-->1
        </interval>
        <isSupportIntervalSecond>
          <!--ro, opt, bool, 是否支持秒-->true
        </isSupportIntervalSecond>
      </timeing>
      <trigger>
        <!--ro, opt, object, 触发上传-->
        <enabled opt="true,false">
          <!--ro, req, bool, false, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
      </trigger>
    </Mode>
    <transferProtocol opt="sdk,ehome">
      <!--ro, opt, string, 传输协议, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->sdk
    </transferProtocol>
  </AnalyzeDataUploadCtrl>
  <advancedConfiguration opt="osdOverlay,streamOverlay">
    <!--ro, req, string, 高级参数, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->osdOverlay
  </advancedConfiguration>
  <isSupportRealTimeStatistics>
    <!--ro, req, bool, 实时统计-->true
  </isSupportRealTimeStatistics>
  <isSupportPersonDensitySearch>
    <!--ro, req, bool, 查询-->true
  </isSupportPersonDensitySearch>
  <OSDOverlay>
    <!--ro, opt, object, 单个OSD叠加能力, desc:该能力与MultiOSDOverlay能力互斥-->
    <type opt="densityLevel,personCnt,personCnt_densityLevel">
      <!--ro, opt, string, 类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->densityLevel
    </type>
    <isSupportCoordinates>
      <!--ro, opt, bool, 是否支持目标坐标-->true
    </isSupportCoordinates>
  </OSDOverlay>
  <MultiOSDOverlay>
    <!--ro, opt, object, 多个OSD叠加能力, desc:该能力与OSDOverlay能力互斥-->
    <OSDRegionNum max="8">
      <!--ro, opt, int, OSD叠加区域最大个数, range:[,], step:, unit:, unitType:, attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </OSDRegionNum>
    <type opt="densityLevel,personCnt,personCnt_densityLevel,personCnt_densityLevel_occupancyRatio">
      <!--ro, opt, string, 类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:densityLevel-等级,personCnt-人数,personCnt_densityLevel-人数/等级,personCnt_densityLevel_occupancyRatio-人数/等级/占空比-->densityLevel
    </type>
    <isSupportCoordinates>
      <!--ro, opt, bool, 是否支持目标坐标-->true
    </isSupportCoordinates>
    <name min="1" max="20">
      <!--ro, opt, string, OSD叠加区域名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </name>
    <id min="1" max="10">
      <!--ro, opt, int, 区域序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
  </MultiOSDOverlay>
  <PersonDensityDetectionRegionCap>
    <!--ro, opt, object, 人员密度检测区域能力-->
    <detectionRegionNum max="8">
      <!--ro, opt, int, 人员密度检测区域最大个数, range:[,], step:, unit:, unitType:, attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </detectionRegionNum>
    <id min="1" max="10">
      <!--ro, req, int, 人员密度检测区域ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <DetectionRegion>
      <!--ro, opt, object, 侦测区域, desc:多区域时返回区域点个数-->
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 坐标点信息列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 坐标点信息, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </DetectionRegion>
    <name min="1" max="20">
      <!--ro, opt, string, 人员密度检测区域名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </name>
    <detectionMode opt="bigTarget,smallTarget">
      <!--ro, opt, string, 检测模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:大目标检测、小目标检测-->bigTarget
    </detectionMode>
    <BigTargetRegion>
      <!--ro, opt, object, 大目标区域能力-->
      <width>
        <!--ro, req, int, 大目标宽度, range:[,], step:, unit:, unitType:-->1
      </width>
      <height>
        <!--ro, req, int, 大目标高度, range:[,], step:, unit:, unitType:-->1
      </height>
    </BigTargetRegion>
    <SmallTargetRegion>
      <!--ro, opt, object, 小目标区域能力-->
      <width>
        <!--ro, req, int, 小目标宽度, range:[,], step:, unit:, unitType:-->1
      </width>
      <height>
        <!--ro, req, int, 小目标高度, range:[,], step:, unit:, unitType:-->1
      </height>
    </SmallTargetRegion>
    <Mode>
      <!--ro, opt, object, 模式-->
      <timeing>
        <!--ro, opt, object, 定时上传-->
        <enabled opt="true,false">
          <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
        <interval opt="1,5,10,15,20,30,60">
          <!--ro, opt, int, 间隔, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:默认:opt=" 1,5,10,15,20,30,60".单位是：min;isSupportIntervalSecond=true,opt="5,10,30,60,300,600,1200,1800,3600",单位是:s/秒-->1
        </interval>
        <isSupportIntervalSecond>
          <!--ro, opt, bool, 使能-->true
        </isSupportIntervalSecond>
      </timeing>
      <trigger>
        <!--ro, opt, object, 人员密度等级（拥堵等级）变化触发上传-->
        <enabled opt="true,false">
          <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
      </trigger>
      <PDC>
        <!--ro, opt, object, 区域内人数变化触发上传, desc:当任何一个检测区域的人数发生变化时上报报警-->
        <enabled opt="true,false" def="false">
          <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认false（不上报）-->true
        </enabled>
      </PDC>
      <ExceptionTrigger>
        <!--ro, opt, object, 当区域内人数或者人员停留时间发现异常时则上报报警-->
        <PQA>
          <!--ro, opt, object, 人数异常报警(PQA)配置-->
          <enabled opt="true,false" def="false">
            <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认false（不上报）-->true
          </enabled>
          <alarmCount min="0" max="60" def="1">
            <!--ro, req, int, 人数报警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:范围为0~60人,默认为1人-->0
          </alarmCount>
          <countTriggerType opt="greater,less,equal,unequal,range, outOfRange" def="greater">
            <!--ro, req, string, 等待人数报警触发类型, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:},
desc:该节点需与alarmCount节点配合使用。
                例如：alarmCount=8,countTriggerType=greater时,则设备当等待人数大于8人时才会上报报警。
                例如：alarmCount=8,countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警,
例如：alarmCount=8,且countTriggerType=outOfRange时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在"<8"和">10"区间人数时上报报警。maxAlarmCount值必须大于alarmCount值-->greater
          </countTriggerType>
          <maxAlarmCount min="0" max="60" def="60">
            <!--ro, opt, int, 最大人数报警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:},
desc:范围为0~60人,默认60,当countTriggerType=range时生效。
                例如：alarmCount=8,且countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警。maxAlarmCount值必须大于alarmCount值。-->0
          </maxAlarmCount>
        </PQA>
        <DSA>
          <!--ro, opt, object, 人员停留时间报警 (DSA)配置-->
          <enabled opt="true,false" def="false">
            <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认false（不上报）-->true
          </enabled>
          <alarmTime min="0" max="3600" def="300">
            <!--ro, req, int, 停留时长报警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:范围为0~3600s,默认为300s-->0
          </alarmTime>
          <timeTriggerType opt="greater,less,equal,unequal,range" def="greater">
            <!--ro, req, string, 停留时间报警触发类型, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:},
desc:该节点需与alarmTime节点配合使用。
                例如：alarmTime=600s,timeTriggerType=greater时,则设备当停留时间大于600s时才会上报报警。
                例如：alarmTime=10s,timeTriggerType=range时,就必须对maxAlarmTime进行赋值,若maxAlarmTime赋值为600s,则代表设备将在10~600s区间时上报报警。-->greater
          </timeTriggerType>
          <maxAlarmTime min="0" max="3600" def="3600">
            <!--ro, opt, int, 最大停留时长报警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:},
desc:范围为0~3600s,默认3600s,timeTriggerType=range时生效。
                例如：alarmTime=10s,timeTriggerType=range时,就必须对maxAlarmTime进行赋值,若maxAlarmTime赋值为600s,则代表设备将在10~600s区间时上报报警-->0
          </maxAlarmTime>
        </DSA>
        <durationAlarmEnabled opt="true,false" def="false">
          <!--ro, opt, bool, 异常触发报警(人数、时长异常触发)持续报警使能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认false（不上报）。使能情况下可配置报警上报次数;不使能情况下,相同目标产生的报警触发后一直上报-->true
        </durationAlarmEnabled>
        <alarmTimes min="1" max="100" def="1">
          <!--ro, opt, int, 异常触发报警(人数、时长异常触发)持续报警次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:当durationAlarmEnabled=true时生效;范围1-100次,默认1-->0
        </alarmTimes>
        <alarmIntervalTime min="0" max="3600" def="5">
          <!--ro, opt, int, 异常触发报警(人数、时长异常触发)持续报警间隔时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:范围0-3600s,默认5s-->0
        </alarmIntervalTime>
        <alarmDelayTime min="0" max="60" def="5">
          <!--ro, opt, int, 异常触发报警(人数、时长异常触发)持续报警延时配置, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:配置后报警将延时上报;范围0-60s,默认5s-->0
        </alarmDelayTime>
      </ExceptionTrigger>
    </Mode>
  </PersonDensityDetectionRegionCap>
  <sensitivity min="1" max="10">
    <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </sensitivity>
  <isSupportDataSearch>
    <!--ro, opt, bool, 是否支持人员密度数据查询-->true
  </isSupportDataSearch>
  <occupancyRatioEnabled opt="true,false">
    <!--ro, opt, bool, 占空比使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </occupancyRatioEnabled>
  <isSupportCapturePicOverlap>
    <!--ro, opt, bool, 是否支持人员密度检测叠加与抓图配置参数, desc:对应接口：/ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection/capturePicOverlap?format=json-->true
  </isSupportCapturePicOverlap>
</PersonDensityDetectionCap>

2. 获取人员密度检测参数

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonDensityDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 配置人员密度检测, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--ro, req, bool, 规则开关使能-->true
  </enabled>
  <densityType>
    <!--ro, opt, enum, 人员密度检测类型, subType:string, [level#人员密度等级,exception#人数异常], desc:level-人员密度等级,对应DensityLevelList;exception-人数异常,对应于DensityExceptionList-->level
  </densityType>
  <DensityLevelList>
    <!--ro, req, array, 密度等级配置, subType:object, range:[,]-->
    <DensityLevel>
      <!--ro, opt, object, 人员密度等级-->
      <id>
        <!--ro, req, int, 序号id, range:[,], step:, unit:, unitType:-->1
      </id>
      <personCnt>
        <!--ro, req, int, 报警人数, range:[,], step:, unit:, unitType:-->1
      </personCnt>
      <customName>
        <!--ro, req, string, 自定义名称, range:[,]-->test
      </customName>
      <occupancyRatio>
        <!--ro, opt, int, 占空比, range:[0,100], step:, unit:, unitType:, desc:occupancyRatioEnabled==true时需配置,区域中人员所占像素占整个区域面积的比例,单位:%,范围[0-100]-->1
      </occupancyRatio>
    </DensityLevel>
  </DensityLevelList>
  <DensityExceptionList>
    <!--ro, opt, array, 人员密度异常信息列表, subType:object, range:[,]-->
    <DensityException>
      <!--ro, opt, object, 人员密度信息异常-->
      <id>
        <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:, desc:此id与PersonDensityDetectionRegion中的id相对应-->1
      </id>
      <personCnt>
        <!--ro, req, int, 报警人数, range:[,], step:, unit:, unitType:-->1
      </personCnt>
      <customName>
        <!--ro, req, string, 自定义名称, range:[,]-->test
      </customName>
    </DensityException>
  </DensityExceptionList>
  <PersonDensityDetectionRegionList>
    <!--ro, opt, array, 人员密度检测区域列表, subType:object, range:[,]-->
    <PersonDensityDetectionRegion>
      <!--ro, opt, object, 人员密度检测区域-->
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 坐标点信息列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <id>
        <!--ro, req, int, id序号, range:[,], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--ro, opt, string, 名称, range:[,]-->test
      </name>
      <detectionMode>
        <!--ro, opt, string, 检测模式, range:[,]-->test
      </detectionMode>
      <Mode>
        <!--ro, opt, object, 模式-->
        <timeing>
          <!--ro, opt, object, 定时上传-->
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
          <interval>
            <!--ro, opt, int, 间隔, range:[,], step:, unit:, unitType:, desc:默认:opt=" 1,5,10,15,20,30,60".单位是：min;如果/ISAPI/Intelligent/channels/<ID>/PersonDensityDetection/capabilities->AnalyzeDataUploadCtrl->isSupportIntervalSecond=true,opt="1,5,10,30,60,300,600,1200,1800,3600",def="60"单位是:s/秒-->1
          </interval>
        </timeing>
        <trigger>
          <!--ro, opt, object, 人员密度等级（拥堵等级）变化触发上传-->
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </trigger>
        <PDC>
          <!--ro, opt, object, 区域内人数变化触发上传, desc:当任何一个检测区域的人数发生变化时上报报警-->
          <enabled>
            <!--ro, req, bool, 使能, desc:默认false（不上报）-->false
          </enabled>
        </PDC>
        <ExceptionTrigger>
          <!--ro, opt, object, 当区域内人数或者人员停留时间发现异常时则上报报警-->
          <PQA>
            <!--ro, opt, object, 人数异常报警(PQA)配置-->
            <enabled>
              <!--ro, req, bool, 使能, desc:默认false（不上报）-->false
            </enabled>
            <alarmCount>
              <!--ro, req, int, 人数报警值, range:[0,60], step:, unit:, unitType:-->1
            </alarmCount>
            <countTriggerType>
              <!--ro, req, string, 等待人数报警触发类型, range:[,], desc:greater,less,equal,unequal,range,outOfRange-->greater
            </countTriggerType>
            <maxAlarmCount>
              <!--ro, opt, int, 最大人数报警值, range:[0,60], step:, unit:, unitType:, desc:最大人数报警值,范围为0~60人,默认60,当countTriggerType=range时生效。-->60
            </maxAlarmCount>
          </PQA>
          <DSA>
            <!--ro, opt, object, 人员停留时间报警 (DSA)配置-->
            <enabled>
              <!--ro, req, bool, 使能, desc:默认false（不上报）-->true
            </enabled>
            <alarmTime>
              <!--ro, req, int, 停留时长报警值, range:[0,3600], step:, unit:s, unitType:时间-->300
            </alarmTime>
            <timeTriggerType>
              <!--ro, req, string, 停留时间报警触发类型, range:[,], desc:停留时间报警触发类型：greater,less,equal,unequal,range。-->greater
            </timeTriggerType>
            <maxAlarmTime>
              <!--ro, opt, int, 最大停留时长报警值, range:[0,3600], step:, unit:s, unitType:时间, desc:timeTriggerType=range时生效。-->1
            </maxAlarmTime>
          </DSA>
          <durationAlarmEnabled>
            <!--ro, opt, bool, 异常触发报警(人数、时长异常触发)持续报警使能, desc:默认false（不上报）。使能情况下可配置报警上报次数;不使能情况下,相同目标产生的报警触发后一直上报-->true
          </durationAlarmEnabled>
          <alarmTimes>
            <!--ro, opt, int, 异常触发报警(人数、时长异常触发)持续报警次数, range:[1,100], step:, unit:, unitType:, desc:当durationAlarmEnabled=true时生效-->1
          </alarmTimes>
          <alarmIntervalTime>
            <!--ro, opt, int, 异常触发报警(人数、时长异常触发)持续报警间隔时间, range:[0,3600], step:, unit:, unitType:-->5
          </alarmIntervalTime>
          <alarmDelayTime>
            <!--ro, opt, int, 异常触发报警(人数、时长异常触发)持续报警延时配置, range:[0,60], step:, unit:, unitType:, desc:配置后报警将延时上报-->5
          </alarmDelayTime>
        </ExceptionTrigger>
      </Mode>
    </PersonDensityDetectionRegion>
  </PersonDensityDetectionRegionList>
  <sensitivity>
    <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivity>
  <occupancyRatioEnabled>
    <!--ro, opt, bool, 占空比使能-->true
  </occupancyRatioEnabled>
</PersonDensityDetection>

3. 配置人员密度检测

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonDensityDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置人员密度检测, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--req, bool, 规则开关使能-->true
  </enabled>
  <densityType>
    <!--opt, enum, 人员密度检测类型, subType:string, [level#人员密度等级,exception#人数异常], desc:level-人员密度等级,对应DensityLevelList;exception-人数异常,对应于DensityExceptionList-->level
  </densityType>
  <DensityLevelList>
    <!--req, array, 密度等级配置, subType:object, range:[,]-->
    <DensityLevel>
      <!--opt, object, 人员密度等级-->
      <id>
        <!--req, int, 序号id, range:[,], step:, unit:, unitType:-->1
      </id>
      <personCnt>
        <!--req, int, 报警人数, range:[,], step:, unit:, unitType:-->1
      </personCnt>
      <customName>
        <!--req, string, 自定义名称, range:[,]-->test
      </customName>
      <occupancyRatio>
        <!--opt, int, 占空比, range:[0,100], step:, unit:, unitType:, desc:occupancyRatioEnabled==true时需配置,区域中人员所占像素占整个区域面积的比例,单位:%,范围[0-100]-->1
      </occupancyRatio>
    </DensityLevel>
  </DensityLevelList>
  <DensityExceptionList>
    <!--opt, array, 人员密度异常信息列表, subType:object, range:[,]-->
    <DensityException>
      <!--opt, object, 人员密度信息异常-->
      <id>
        <!--req, int, 序号, range:[,], step:, unit:, unitType:, desc:此id与PersonDensityDetectionRegion中的id相对应-->1
      </id>
      <personCnt>
        <!--req, int, 报警人数, range:[,], step:, unit:, unitType:-->1
      </personCnt>
      <customName>
        <!--req, string, 自定义名称, range:[,]-->test
      </customName>
    </DensityException>
  </DensityExceptionList>
  <PersonDensityDetectionRegionList>
    <!--opt, array, 人员密度检测区域列表, subType:object, range:[,]-->
    <PersonDensityDetectionRegion>
      <!--opt, object, 人员密度检测区域-->
      <RegionCoordinatesList size="10">
        <!--opt, array, 坐标点信息列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <id>
        <!--req, int, id序号, range:[,], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--opt, string, 名称, range:[,]-->test
      </name>
      <detectionMode>
        <!--opt, string, 检测模式, range:[,]-->test
      </detectionMode>
      <Mode>
        <!--opt, object, 模式-->
        <timeing>
          <!--opt, object, 定时上传-->
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
          <interval>
            <!--opt, int, 间隔, range:[,], step:, unit:, unitType:, desc:默认:opt=" 1,5,10,15,20,30,60".单位是：min;如果/ISAPI/Intelligent/channels/<ID>/PersonDensityDetection/capabilities->AnalyzeDataUploadCtrl->isSupportIntervalSecond=true,opt="1,5,10,30,60,300,600,1200,1800,3600",def="60"单位是:s/秒-->1
          </interval>
        </timeing>
        <trigger>
          <!--opt, object, 人员密度等级（拥堵等级）变化触发上传-->
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </trigger>
        <PDC>
          <!--opt, object, 区域内人数变化触发上传, desc:当任何一个检测区域的人数发生变化时上报报警-->
          <enabled>
            <!--req, bool, 使能, desc:默认false（不上报）-->false
          </enabled>
        </PDC>
        <ExceptionTrigger>
          <!--opt, object, 当区域内人数或者人员停留时间发现异常时则上报报警-->
          <PQA>
            <!--opt, object, 人数异常报警(PQA)配置-->
            <enabled>
              <!--req, bool, 使能, desc:默认false（不上报）-->false
            </enabled>
            <alarmCount>
              <!--req, int, 人数报警值, range:[0,60], step:, unit:, unitType:-->1
            </alarmCount>
            <countTriggerType>
              <!--req, string, 等待人数报警触发类型, range:[,], desc:greater,less,equal,unequal,range,outOfRange-->greater
            </countTriggerType>
            <maxAlarmCount>
              <!--opt, int, 最大人数报警值, range:[0,60], step:, unit:, unitType:, desc:最大人数报警值,范围为0~60人,默认60,当countTriggerType=range时生效。-->60
            </maxAlarmCount>
          </PQA>
          <DSA>
            <!--opt, object, 人员停留时间报警 (DSA)配置-->
            <enabled>
              <!--req, bool, 使能, desc:默认false（不上报）-->true
            </enabled>
            <alarmTime>
              <!--req, int, 停留时长报警值, range:[0,3600], step:, unit:s, unitType:时间-->300
            </alarmTime>
            <timeTriggerType>
              <!--req, string, 停留时间报警触发类型, range:[,], desc:停留时间报警触发类型：greater,less,equal,unequal,range。-->greater
            </timeTriggerType>
            <maxAlarmTime>
              <!--opt, int, 最大停留时长报警值, range:[0,3600], step:, unit:s, unitType:时间, desc:timeTriggerType=range时生效。-->1
            </maxAlarmTime>
          </DSA>
          <durationAlarmEnabled>
            <!--opt, bool, 异常触发报警(人数、时长异常触发)持续报警使能, desc:默认false（不上报）。使能情况下可配置报警上报次数;不使能情况下,相同目标产生的报警触发后一直上报-->true
          </durationAlarmEnabled>
          <alarmTimes>
            <!--opt, int, 异常触发报警(人数、时长异常触发)持续报警次数, range:[1,100], step:, unit:, unitType:, desc:当durationAlarmEnabled=true时生效-->1
          </alarmTimes>
          <alarmIntervalTime>
            <!--opt, int, 异常触发报警(人数、时长异常触发)持续报警间隔时间, range:[0,3600], step:, unit:, unitType:-->5
          </alarmIntervalTime>
          <alarmDelayTime>
            <!--opt, int, 异常触发报警(人数、时长异常触发)持续报警延时配置, range:[0,60], step:, unit:, unitType:, desc:配置后报警将延时上报-->5
          </alarmDelayTime>
        </ExceptionTrigger>
      </Mode>
    </PersonDensityDetectionRegion>
  </PersonDensityDetectionRegionList>
  <sensitivity>
    <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivity>
  <occupancyRatioEnabled>
    <!--opt, bool, 占空比使能-->true
  </occupancyRatioEnabled>
</PersonDensityDetection>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取人员密度统计上传协议配置

4.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/analyzeDataUploadCtrl

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalyzeDataUploadCtrl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取人员密度统计上传协议配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 数据上传使能-->true
  </enabled>
  <picUploadEnabled>
    <!--ro, req, bool, 图片上传使能-->true
  </picUploadEnabled>
  <Mode>
    <!--ro, opt, object, 模式-->
    <timeing>
      <!--ro, opt, object, 定时上传-->
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <interval>
        <!--ro, opt, int, 间隔, range:[,], step:, unit:, unitType:, desc:默认:opt=" 1,5,10,15,20,30,60".单位是：min-->1
      </interval>
    </timeing>
    <trigger>
      <!--ro, opt, object, 人员密度等级（拥堵等级）变化触发上传-->
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
    </trigger>
  </Mode>
  <transferProtocol>
    <!--ro, opt, object, 传输协议-->
    <sdk>
      <!--ro, req, bool, sdk协议上报使能-->true
    </sdk>
    <ehome>
      <!--ro, req, bool, ehome协议上报使能-->true
    </ehome>
  </transferProtocol>
</AnalyzeDataUploadCtrl>

5. 配置人员密度统计上传协议配置

5.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/analyzeDataUploadCtrl

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AnalyzeDataUploadCtrl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置人员密度统计上传协议配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 数据上传使能-->true
  </enabled>
  <picUploadEnabled>
    <!--req, bool, 图片上传使能-->true
  </picUploadEnabled>
  <Mode>
    <!--opt, object, 模式-->
    <timeing>
      <!--opt, object, 定时上传-->
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <interval>
        <!--opt, int, 间隔, range:[,], step:, unit:, unitType:, desc:默认:opt=" 1,5,10,15,20,30,60".单位是：min-->1
      </interval>
    </timeing>
    <trigger>
      <!--opt, object, 人员密度等级（拥堵等级）变化触发上传-->
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
    </trigger>
  </Mode>
  <transferProtocol>
    <!--opt, object, 传输协议-->
    <sdk>
      <!--req, bool, sdk协议上报使能-->true
    </sdk>
    <ehome>
      <!--req, bool, ehome协议上报使能-->true
    </ehome>
  </transferProtocol>
</AnalyzeDataUploadCtrl>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取人员密度检测高级配置

6.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/advancedConfiguration

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AdvancedConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 配置人员密度检测高级配置, attr:version{req, string, 协议版本, range:[,]}-->
  <OSD>
    <!--ro, opt, object, 单个OSD区域叠加配置-->
    <enabled>
      <!--ro, req, bool, osd叠加使能-->true
    </enabled>
    <type>
      <!--ro, opt, enum, 类型, subType:string, [densityLevel#等级,personCnt#人数,personCnt_densityLevel#人数/等级]-->densityLevel
    </type>
    <Coordinates>
      <!--ro, opt, object, 字符叠加位置的左上角坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </Coordinates>
  </OSD>
  <streamOverlayRuleInfos>
    <!--ro, req, bool, 码流叠加规则信息使能-->true
  </streamOverlayRuleInfos>
  <OSDList>
    <!--ro, opt, array, 多个OSD区域叠加配置, subType:object, range:[,], desc:与OSD节点互斥-->
    <OSD>
      <!--ro, opt, object, OSD-->
      <id>
        <!--ro, opt, int, 人员密度检测区域ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <enabled>
        <!--ro, req, bool, osd叠加使能-->true
      </enabled>
      <type>
        <!--ro, opt, enum, 类型, subType:string, [densityLevel#等级,personCnt#人数,personCnt_densityLevel#人数/等级,personCnt_densityLevel_occupancyRatio#人数/等级/占空比]-->densityLevel
      </type>
      <Coordinates>
        <!--ro, opt, object, 字符叠加位置的左上角坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </Coordinates>
      <name>
        <!--ro, opt, string, 叠加区域名称, range:[,]-->test
      </name>
    </OSD>
  </OSDList>
</AdvancedConfiguration>

7. 配置人员密度检测高级配置

7.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/personDensityDetection/advancedConfiguration

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AdvancedConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置人员密度检测高级配置, attr:version{req, string, 协议版本, range:[,]}-->
  <OSD>
    <!--opt, object, 单个OSD区域叠加配置-->
    <enabled>
      <!--req, bool, osd叠加使能-->true
    </enabled>
    <type>
      <!--opt, enum, 类型, subType:string, [densityLevel#等级,personCnt#人数,personCnt_densityLevel#人数/等级]-->densityLevel
    </type>
    <Coordinates>
      <!--opt, object, 字符叠加位置的左上角坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </Coordinates>
  </OSD>
  <streamOverlayRuleInfos>
    <!--req, bool, 码流叠加规则信息使能-->true
  </streamOverlayRuleInfos>
  <OSDList>
    <!--opt, array, 多个OSD区域叠加配置, subType:object, range:[,], desc:与OSD节点互斥-->
    <OSD>
      <!--opt, object, OSD-->
      <id>
        <!--req, int, 人员密度检测区域ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <enabled>
        <!--req, bool, osd叠加使能-->true
      </enabled>
      <type>
        <!--opt, enum, 类型, subType:string, [densityLevel#等级,personCnt#人数,personCnt_densityLevel#人数/等级,personCnt_densityLevel_occupancyRatio#人数/等级/占空比]-->densityLevel
      </type>
      <Coordinates>
        <!--opt, object, 字符叠加位置的左上角坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </Coordinates>
      <name>
        <!--opt, string, 叠加区域名称, range:[,]-->test
      </name>
    </OSD>
  </OSDList>
</AdvancedConfiguration>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取人员密度检测联动配置

8.1 命令

GET /ISAPI/Event/triggers/personDensityDetection-<channelID>

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取热度图联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->personDensityDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

9. 配置人员密度检测联动

9.1 命令

PUT /ISAPI/Event/triggers/personDensityDetection-<channelID>

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置人员密度检测联动, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->personDensityDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取人员密度检测单个通道时间布防配置

10.1 命令

GET /ISAPI/Event/schedules/personDensityDetection/personDensityDetection-<channelID>

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取人员密度检测单个通道时间布防配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 事件类型-通道号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->personDensityDetection
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间, subType:object, range:[,], attr:size{req, string, 大小, range:[,]}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:string, [1#Monday,2#Tuesday,3#Wednesday,4#Thursday,5#Friday,6#Saturday,7#Sunday]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

11. 配置人员密度检测单个通道时间布防

11.1 命令

PUT /ISAPI/Event/schedules/personDensityDetection/personDensityDetection-<channelID>

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置人员密度检测单个通道时间布防, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 事件类型-通道号, range:[,]-->1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->personDensityDetection
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间, subType:object, range:[,], attr:size{req, string, 大小, range:[,]}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:string, [1#Monday,2#Tuesday,3#Wednesday,4#Thursday,5#Friday,6#Saturday,7#Sunday]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取人员密度检测结果

12.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection/result

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonDensityDetectionResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取人员密度检测结果, attr:version{req, string, 协议版本, range:[,]}-->
  <peopleNumber>
    <!--ro, req, int, 人数统计总数, range:[,], step:, unit:, unitType:-->1
  </peopleNumber>
  <densityLevel>
    <!--ro, req, int, 人员密度等级, range:[,], step:, unit:, unitType:-->1
  </densityLevel>
</PersonDensityDetectionResult>

13. 查询人员密度检测搜索记录

13.1 命令

POST /ISAPI/Intelligent/channels/<channelID>/PersonDensityDetection/search

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonDensityStatisticsDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询人员密度检测搜索记录, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 搜索结果位置, range:[,], step:, unit:, unitType:-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <statisticType>
    <!--req, enum, 统计类型, subType:string, [personNumber#人员数量,densityLevel#人员密度等级], desc:互斥-->personNumber
  </statisticType>
  <PersonNumberRange>
    <!--opt, object, 人员数量范围-->
    <min>
      <!--req, int, 最小值, range:[,], step:, unit:, unitType:-->1
    </min>
    <max>
      <!--req, int, 最大值, range:[,], step:, unit:, unitType:-->1
    </max>
  </PersonNumberRange>
  <densityLevel>
    <!--opt, int, 人员密度等级, range:[,], step:, unit:, unitType:-->1
  </densityLevel>
  <TimeSpanList>
    <!--req, array, 时间段, subType:object, range:[,], desc:当前只支持一个时间段-->
    <timeSpan>
      <!--opt, object, 时间段-->
      <startTime>
        <!--req, datetime, 开始时间, desc:eg."2004-05-03T17:30:08+08:00或者2004-05-03T17:30:08.000Z-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--req, datetime, 结束时间, desc:eg."2004-05-03T17:30:08+08:00或者2004-05-03T17:30:08.000Z-->1970-01-01T00:00:00+08:00
      </endTime>
    </timeSpan>
  </TimeSpanList>
</PersonDensityStatisticsDescription>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PersonDensityStatisticsResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询人员密度检测搜索记录, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询状态-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#接收数据完成,后续无数据。,NO MATCHES#找不到匹配数据,MORE#后续还有更多数据,需用户进行下一次接收]-->test
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 匹配数量, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 匹配总数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <matchList>
    <!--ro, opt, array, 匹配列表, subType:object, range:[,]-->null
    <matchElement>
      <!--ro, opt, object, 匹配元素-->null
      <dataSource>
        <!--ro, req, enum, 数据来源, subType:string, [timing#定时,trigger#触发]-->timing
      </dataSource>
      <time>
        <!--ro, req, time, 时间-->22:30:05+08:00
      </time>
      <peopleNumber>
        <!--ro, req, int, 人数统计总数, range:[,], step:, unit:, unitType:-->1
      </peopleNumber>
    </matchElement>
  </matchList>
</PersonDensityStatisticsResult>


安全帽检测

1. 获取安全帽检测参数能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SafetyHelmetDetectionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 安全帽能力, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, opt, object, ro-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[1,1000], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[1,1000], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled opt="true,false">
    <!--ro, opt, bool, 是否启用未佩戴安全帽检测, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <SafetyHelmetDetectionRegionList size="8">
    <!--ro, opt, array, 检测区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <SafetyHelmetDetectionRegion>
      <!--ro, opt, object, 检测区域-->
      <id>
        <!--ro, opt, string, id, range:[,]-->test
      </id>
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 区域, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点(0,0)-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SafetyHelmetDetectionRegion>
  </SafetyHelmetDetectionRegionList>
  <stackTarget opt="true,false">
    <!--ro, req, bool, 报警目标框是否叠加 (报警图片叠加), attr:opt{req, string, 取值范围, range:[,]}-->true
  </stackTarget>
  <stackRule opt="true,false">
    <!--ro, req, bool, 报警规则框是否叠加 (报警图片叠加), attr:opt{req, string, 取值范围, range:[,]}-->true
  </stackRule>
  <alarmLinkageDuration opt="5,10,30,60,120,300,600">
    <!--ro, req, int, 报警联动持续时间, range:[,], step:, unit:s, unitType:时间, attr:opt{req, string, 取值范围, range:[,]}-->1
  </alarmLinkageDuration>
  <ImageParam>
    <!--ro, opt, object, 图片参数-->
    <ResolutionList size="3">
      <!--ro, opt, array, 分辨率, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <Resolution>
        <!--ro, opt, object, 分辨率-->
        <id>
          <!--ro, req, string, id, range:[,]-->test
        </id>
        <name>
          <!--ro, req, enum, 分辨率名称, subType:string, [1080p#1080p,720p#720p,D1#D1]-->1080p
        </name>
        <value>
          <!--ro, req, enum, 分辨率值, subType:string, [1920*1080#1920*1080,1280*720#1280*720,740*576#740*576]-->1920*1080
        </value>
      </Resolution>
    </ResolutionList>
    <quality opt="best,good,general">
      <!--ro, req, enum, 图片质量：最好, subType:string, [general#一般,good#不错,best#最好], attr:opt{req, string, 取值范围, range:[,]}-->best
    </quality>
    <alarmUpload opt="true,false">
      <!--ro, req, bool, 是否上传报警图片, attr:opt{req, string, 取值范围, range:[,]}-->true
    </alarmUpload>
    <localStorage opt="true,false">
      <!--ro, opt, bool, 图片是否在本地存储, attr:opt{req, string, 取值范围, range:[,]}-->true
    </localStorage>
  </ImageParam>
  <AdvanceConfiguration>
    <!--ro, opt, object, 高级参数配置-->
    <headSensitivity min="1" max="5" def="3">
      <!--ro, opt, int, 人头检测灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:越大检出越灵敏-->1
    </headSensitivity>
    <humanSensitivity min="1" max="5" def="3">
      <!--ro, opt, int, 人体检测灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:越大检出越灵敏-->1
    </humanSensitivity>
    <alarmAnalysisFrame min="1" max="50" def="12">
      <!--ro, opt, int, 告警分析所需帧数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:越大则需要判断帧数越多,则越慢报警-->1
    </alarmAnalysisFrame>
    <FDLibList size="10">
      <!--ro, opt, array, 通道关联人脸库列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <FDLib>
        <!--ro, opt, object, 人脸库-->
        <id min="1" max="10">
          <!--ro, req, int, 序号, range:[1,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </id>
        <FDID min="1" max="10">
          <!--ro, req, string, 人脸比对库唯一标示ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </FDID>
        <thresholdValue min="1" max="10">
          <!--ro, opt, int, 针对单个关联的人脸库的检测阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:针对单个关联的人脸库的检测阈值,阈值越大检测准确率越高,范围[0,100]"；字段使用说明,如果总人脸库阈值启用后,那么单个人脸库阈值不作用-->1
        </thresholdValue>
        <customFaceLibID min="1" max="10">
          <!--ro, opt, string, 自定义人脸库ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:若填入customID,则设备无需校验FDID字段,以该字段为准-->test
        </customFaceLibID>
      </FDLib>
    </FDLibList>
  </AdvanceConfiguration>
  <SearchDescriptionCap>
    <!--ro, opt, object, 安全帽事件查询能力, desc:/ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection/search?format=json-->
    <timeSpanMaxNum>
      <!--ro, req, enum, 支持同时检索的最大时间段数目, subType:string, [all#全部（包括人脸匹配成功和人脸匹配失败）,success#人脸匹配成功,failed#人脸匹配失败]-->all
    </timeSpanMaxNum>
    <resultMaxNum>
      <!--ro, req, int, 支持检索的最大条数, range:[,], step:, unit:, unitType:-->1
    </resultMaxNum>
    <faceContrastResult opt="all,success,failed">
      <!--ro, req, string, 匹配类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </faceContrastResult>
    <FDLibList size="10">
      <!--ro, opt, array, （检索条件）人脸库列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:该列表和关联人脸库的人脸库ID重复，因此该节点的值参考SafetyHelmetDetectionCap.AdvanceConfiguration.FDLibList-->
      <FDLib>
        <!--ro, opt, object, 人脸库-->
        <FDID min="1" max="10">
          <!--ro, req, string, 人脸比对库唯一标示ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </FDID>
      </FDLib>
    </FDLibList>
    <name min="1" max="10">
      <!--ro, opt, string, （检索条件）姓名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:（检索条件）姓名,当FDLibList存在时有效-->test
    </name>
  </SearchDescriptionCap>
  <videoOverlay>
    <!--ro, opt, object, 视频预览叠加-->
    <stackTarget opt="true,false">
      <!--ro, req, bool, 目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, req, bool, 规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </videoOverlay>
  <wearHelmetEnabled opt="true,false">
    <!--ro, opt, bool, 是否启用佩戴安全帽检测, attr:opt{req, string, 取值范围, range:[,]}-->true
  </wearHelmetEnabled>
  <analysisMode opt="realTimeMode,autoSwitchMode">
    <!--ro, opt, string, 分析模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:realTimeMode实时模式,autoSwitchMode#轮询模式, desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode）,设备会根据负载均衡的方式，添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->test
  </analysisMode>
</SafetyHelmetDetectionCap>

2. 获取安全帽检测参数

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SafetyHelmetDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 安全帽检测, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[1,1000], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[1,1000], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--ro, opt, bool, 规则开关使能-->true
  </enabled>
  <SafetyHelmetDetectionRegionList>
    <!--ro, opt, array, 安全帽检测区域列表, subType:object, range:[,]-->
    <SafetyHelmetDetectionRegion>
      <!--ro, opt, object, 安全帽检测区域-->
      <id>
        <!--ro, opt, string, 区域ID, range:[,]-->test
      </id>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点(0,0)-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SafetyHelmetDetectionRegion>
  </SafetyHelmetDetectionRegionList>
  <stackTarget>
    <!--ro, req, bool, 报警目标框是否叠加-->true
  </stackTarget>
  <stackRule>
    <!--ro, req, bool, 报警规则框是否叠加-->true
  </stackRule>
  <alarmLinkageDuration>
    <!--ro, req, enum, 报警联动持续时间, subType:string, [5#5s,10#10s,30#30s,60#60s,120#120s,300#300s,600#600s]-->5
  </alarmLinkageDuration>
  <ImageParam>
    <!--ro, opt, object, 图像参数-->
    <Resolution>
      <!--ro, opt, object, 解析-->
      <id>
        <!--ro, req, string, 图片ID, range:[,]-->test
      </id>
      <name>
        <!--ro, req, enum, 像素, subType:string, [1080p#1080p,720p#720p,D1#D1]-->1080p
      </name>
      <value>
        <!--ro, req, enum, 分辨率, subType:string, [1920*1080#1920*1080,1280*720#1280*720,740*576#740*576]-->1920*1080
      </value>
    </Resolution>
    <quality>
      <!--ro, req, enum, 图片质量, subType:string, [best#最好,good#不错,general#general]-->best
    </quality>
    <alarmUpload>
      <!--ro, req, bool, 是否上传报警图片-->true
    </alarmUpload>
    <localStorage>
      <!--ro, opt, bool, 图片是否在本地存储-->true
    </localStorage>
  </ImageParam>
  <videoOverlay>
    <!--ro, opt, object, 视频预览叠加-->
    <stackTarget>
      <!--ro, req, bool, 目标框是否叠加-->true
    </stackTarget>
    <stackRule>
      <!--ro, req, bool, 规则框是否叠加-->true
    </stackRule>
  </videoOverlay>
  <wearHelmetEnabled>
    <!--ro, opt, bool, 是否启用佩戴安全帽检测, desc:enabled字段表示开启"未佩戴"安全帽检测,wearHelmetEnabled字段表示开启"佩戴"安全帽检测-->true
  </wearHelmetEnabled>
  <analysisMode>
    <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#轮询模式], desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode）,设备会根据负载均衡的方式，添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->realTimeMode
  </analysisMode>
</SafetyHelmetDetection>

3. 配置安全帽检测参数

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SafetyHelmetDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 安全帽检测, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽, range:[1,1000], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高, range:[1,1000], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--opt, bool, 规则开关使能-->true
  </enabled>
  <SafetyHelmetDetectionRegionList>
    <!--opt, array, 安全帽检测区域列表, subType:object, range:[,]-->
    <SafetyHelmetDetectionRegion>
      <!--opt, object, 安全帽检测区域-->
      <id>
        <!--opt, string, 区域ID, range:[,]-->test
      </id>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左上角为坐标原点(0,0)-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SafetyHelmetDetectionRegion>
  </SafetyHelmetDetectionRegionList>
  <stackTarget>
    <!--req, bool, 报警目标框是否叠加-->true
  </stackTarget>
  <stackRule>
    <!--req, bool, 报警规则框是否叠加-->true
  </stackRule>
  <alarmLinkageDuration>
    <!--req, enum, 报警联动持续时间, subType:string, [5#5s,10#10s,30#30s,60#60s,120#120s,300#300s,600#600s]-->5
  </alarmLinkageDuration>
  <ImageParam>
    <!--opt, object, 图像参数-->
    <Resolution>
      <!--opt, object, 解析-->
      <id>
        <!--req, string, 图片ID, range:[,]-->test
      </id>
      <name>
        <!--req, enum, 像素, subType:string, [1080p#1080p,720p#720p,D1#D1]-->1080p
      </name>
      <value>
        <!--req, enum, 分辨率, subType:string, [1920*1080#1920*1080,1280*720#1280*720,740*576#740*576]-->1920*1080
      </value>
    </Resolution>
    <quality>
      <!--req, enum, 图片质量, subType:string, [best#最好,good#不错,general#general]-->best
    </quality>
    <alarmUpload>
      <!--req, bool, 是否上传报警图片-->true
    </alarmUpload>
    <localStorage>
      <!--opt, bool, 图片是否在本地存储-->true
    </localStorage>
  </ImageParam>
  <videoOverlay>
    <!--opt, object, 视频预览叠加-->
    <stackTarget>
      <!--req, bool, 目标框是否叠加-->true
    </stackTarget>
    <stackRule>
      <!--req, bool, 规则框是否叠加-->true
    </stackRule>
  </videoOverlay>
  <wearHelmetEnabled>
    <!--opt, bool, 是否启用佩戴安全帽检测, desc:enabled字段表示开启"未佩戴"安全帽检测,wearHelmetEnabled字段表示开启"佩戴"安全帽检测-->true
  </wearHelmetEnabled>
  <analysisMode>
    <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#轮询模式], desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode）,设备会根据负载均衡的方式，添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->realTimeMode
  </analysisMode>
</SafetyHelmetDetection>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取安全帽检测高级配置

4.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AdvanceConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 安全帽检测高级配置, attr:version{req, string, 协议版本, range:[,]}-->
  <headSensitivity>
    <!--ro, opt, int, 人头检测灵敏度, range:[1,5], step:, unit:, unitType:, desc:越大检出越灵敏-->3
  </headSensitivity>
  <humanSensitivity>
    <!--ro, opt, int, 人体检测灵敏度, range:[1,5], step:, unit:, unitType:, desc:越大检出越灵敏-->3
  </humanSensitivity>
  <alarmAnalysisFrame>
    <!--ro, opt, int, 告警分析所需帧数, range:[1,50], step:, unit:, unitType:, desc:越大则需要判断帧数越多,则越慢报警-->1
  </alarmAnalysisFrame>
  <FDLibList>
    <!--ro, opt, array, 通道关联人脸库列表, subType:object, range:[,]-->
    <FDLib>
      <!--ro, opt, object, 通道关联人脸库-->
      <id>
        <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:-->1
      </id>
      <FDID>
        <!--ro, req, int, 人脸比对库唯一标示ID, range:[,], step:, unit:, unitType:-->1
      </FDID>
      <thresholdValue>
        <!--ro, opt, int, 人脸库的检测阈, range:[0,100], step:, unit:, unitType:, desc:针对单个关联的人脸库的检测阈值,阈值越大检测准确率越高；字段使用说明,如果总人脸库阈值启用后,那么单个人脸库阈值不作用-->1
      </thresholdValue>
      <customFaceLibID>
        <!--ro, opt, string, 自定义人脸库ID, range:[,], desc:若填入customID,则设备无需校验FDID字段,以该字段为准-->test
      </customFaceLibID>
    </FDLib>
  </FDLibList>
</AdvanceConfiguration>

5. 配置安全帽检测高级配置

5.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AdvanceConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 安全帽检测高级配置, attr:version{req, string, 协议版本, range:[,]}-->
  <headSensitivity>
    <!--opt, int, 人头检测灵敏度, range:[1,5], step:, unit:, unitType:, desc:越大检出越灵敏-->3
  </headSensitivity>
  <humanSensitivity>
    <!--opt, int, 人体检测灵敏度, range:[1,5], step:, unit:, unitType:, desc:越大检出越灵敏-->3
  </humanSensitivity>
  <alarmAnalysisFrame>
    <!--opt, int, 告警分析所需帧数, range:[1,50], step:, unit:, unitType:, desc:越大则需要判断帧数越多,则越慢报警-->1
  </alarmAnalysisFrame>
  <FDLibList>
    <!--opt, array, 通道关联人脸库列表, subType:object, range:[,]-->
    <FDLib>
      <!--opt, object, 通道关联人脸库-->
      <id>
        <!--req, int, 序号, range:[,], step:, unit:, unitType:-->1
      </id>
      <FDID>
        <!--req, int, 人脸比对库唯一标示ID, range:[,], step:, unit:, unitType:-->1
      </FDID>
      <thresholdValue>
        <!--opt, int, 人脸库的检测阈, range:[0,100], step:, unit:, unitType:, desc:针对单个关联的人脸库的检测阈值,阈值越大检测准确率越高；字段使用说明,如果总人脸库阈值启用后,那么单个人脸库阈值不作用-->1
      </thresholdValue>
      <customFaceLibID>
        <!--opt, string, 自定义人脸库ID, range:[,], desc:若填入customID,则设备无需校验FDID字段,以该字段为准-->test
      </customFaceLibID>
    </FDLib>
  </FDLibList>
</AdvanceConfiguration>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取安全帽检测联动配置

6.1 命令

GET /ISAPI/Event/triggers/safetyHelmetDetection-<channelID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 事件联动方式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->test
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->test
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->null
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->null
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:如果 eventType是thermometry有效-->null
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,], desc:如果 eventType是thermometry有效-->null
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->null
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 事件联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 事件联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,cloud#cloud,whiteLight#白光灯,faceContrast#声音], desc:notificationMethod选项中faceContrast  对应能力 /ISAPI/Event/triggersCap 中SafetyHelmetDetectionTriggerCap 的 isSupportFaceContrast-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->null
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->null
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, 云台-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 可以是预置点号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

7. 配置安全帽检测联动

7.1 命令

PUT /ISAPI/Event/triggers/safetyHelmetDetection-<channelID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 事件联动方式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->test
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->test
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->null
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->null
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:如果 eventType是thermometry有效-->null
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,], desc:如果 eventType是thermometry有效-->null
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->null
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 事件联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 事件联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,cloud#cloud,whiteLight#白光灯,faceContrast#声音], desc:notificationMethod选项中faceContrast  对应能力 /ISAPI/Event/triggersCap 中SafetyHelmetDetectionTriggerCap 的 isSupportFaceContrast-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, IO输出端口ID, range:[,]-->null
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->null
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, 云台-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 可以是预置点号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取安全帽检测单个通道时间布防配置

8.1 命令

GET /ISAPI/Event/schedules/safetyHelmetDetection/safetyHelmetDetection-<channelID>

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->test
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->safetyHelmetDetection
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->null
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 时间段列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 时间块-->
      <dayOfWeek>
        <!--ro, opt, int, 星期时间, range:[,], step:, unit:, unitType:, desc:1=Monday,…-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假期时间段列表, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 时间段-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

9. 配置安全帽检测单个通道时间布防

9.1 命令

PUT /ISAPI/Event/schedules/safetyHelmetDetection/safetyHelmetDetection-<channelID>

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->safetyHelmetDetection
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->null
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 时间段列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 时间块-->
      <dayOfWeek>
        <!--opt, int, 星期时间, range:[,], step:, unit:, unitType:, desc:1=Monday,…-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假期时间段列表, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 时间段-->
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


区域人数统计

1. 获取区域人数统计能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 周期统计范围, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, req, object, 归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[1,1000], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[1,1000], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled opt="true,false">
    <!--ro, req, bool, 规则开关使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <countingMode opt="timing,cycle">
    <!--ro, opt, string, 人数统计方式 , range:[,], attr:opt{req, string, 取值范围, range:[,]}-->timing
  </countingMode>
  <timingListNum min="1" max="30">
    <!--ro, opt, int, 定时统计个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </timingListNum>
  <cycletime min="20" max="3600">
    <!--ro, opt, int, 周期统计范围, range:[20,3600], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </cycletime>
  <isSupportSerachCountingResult>
    <!--ro, opt, bool, 是否支持统计结果查询, desc:对应URL:/ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/result-->true
  </isSupportSerachCountingResult>
  <isSupportOSDOverlay>
    <!--ro, opt, bool, 是否支持人数统计OSD叠加-->ture
  </isSupportOSDOverlay>
  <FramesPeopleCountingRegionList size="7">
    <!--ro, opt, array, 区域列表 , subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[0,7], step:, unit:, unitType:}-->
    <FramesPeopleCountingRegion>
      <!--ro, opt, object, 区域信息-->
      <id>
        <!--ro, req, string, 区域ID , range:[1,7]-->test
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 规则开关使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <peopleNumThreshold min="0" max="64">
        <!--ro, opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </peopleNumThreshold>
      <countTriggerType opt="greaterThan,lessThan,equal">
        <!--ro, opt, string, 人数触发方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->0
      </countTriggerType>
      <picOverlayRuleRectEnabled opt="true,false">
        <!--ro, opt, bool, 报警图片是否叠加规则框, attr:opt{req, string, 取值范围, range:[,]}-->true
      </picOverlayRuleRectEnabled>
    </FramesPeopleCountingRegion>
  </FramesPeopleCountingRegionList>
  <analysisMode opt="realTimeMode,autoSwitchMode">
    <!--ro, opt, string, 分析模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:realTimeMode实时模式,autoSwitchMode#轮询模式, desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode）,设备会根据负载均衡的方式，添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->test
  </analysisMode>
</FramesPeopleCountingCap>

2. 获取区域人数统计参数

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCounting xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 区域统计配置, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一高, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化宽 , range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--ro, req, bool, 规则开关使能-->true
  </enabled>
  <countingMode>
    <!--ro, req, enum, 人数统计方式, subType:string, [timing#定时上报,cycle#循环上报]-->timing
  </countingMode>
  <TimingList>
    <!--ro, opt, object, 定时列表, dep:and,{$.FramesPeopleCounting.countingMode,eq,timing}, desc:定时上报人数-->
    <Timing>
      <!--ro, opt, time, 定时时间, desc:格式  HH:MM:SS-->00:00:00+08:00
    </Timing>
  </TimingList>
  <cycleTime>
    <!--ro, opt, int, 上报间隔, range:[20,3600], step:, unit:s, unitType:时间, dep:and,{$.FramesPeopleCounting.countingMode,eq,cycle}-->20
  </cycleTime>
  <FramesPeopleCountingRegionList>
    <!--ro, opt, array, 区域列表, subType:object, range:[,]-->
    <FramesPeopleCountingRegion>
      <!--ro, opt, object, 区域-->
      <id>
        <!--ro, req, string, 规则框ID , range:[1,7]-->test
      </id>
      <enabled>
        <!--ro, req, bool, 规则开关使能-->true
      </enabled>
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 坐标点列表 , subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标 , range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标 , range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <peopleNumThreshold>
        <!--ro, opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:-->0
      </peopleNumThreshold>
      <countTriggerType>
        <!--ro, opt, enum, 人数触发方式, subType:, [greaterThan#大于,lessThan#小于,equal#等于], desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->greaterThan
      </countTriggerType>
      <picOverlayRuleRectEnabled>
        <!--ro, opt, bool, 报警图片是否叠加规则框-->true
      </picOverlayRuleRectEnabled>
    </FramesPeopleCountingRegion>
  </FramesPeopleCountingRegionList>
  <OSD>
    <!--ro, req, object, 人数统计叠加-->
    <enabled>
      <!--ro, req, bool, 规则开关使能-->true
    </enabled>
    <Coordinates>
      <!--ro, opt, object, 字符叠加位置, desc:字符叠加位置的左上角坐标, 屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </Coordinates>
  </OSD>
  <analysisMode>
    <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#轮询模式], desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode）,设备会根据负载均衡的方式，添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->realTimeMode
  </analysisMode>
</FramesPeopleCounting>

3. 配置区域人数统计参数

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCounting xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 区域统计配置, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--req, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--req, int, 归一高, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化宽 , range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--req, bool, 规则开关使能-->true
  </enabled>
  <countingMode>
    <!--req, enum, 人数统计方式, subType:string, [timing#定时上报,cycle#循环上报]-->timing
  </countingMode>
  <TimingList>
    <!--opt, object, 定时列表, dep:and,{$.FramesPeopleCounting.countingMode,eq,timing}, desc:定时上报人数-->
    <Timing>
      <!--opt, time, 定时时间, desc:格式  HH:MM:SS-->00:00:00+08:00
    </Timing>
  </TimingList>
  <cycleTime>
    <!--opt, int, 上报间隔, range:[20,3600], step:, unit:s, unitType:时间, dep:and,{$.FramesPeopleCounting.countingMode,eq,cycle}-->20
  </cycleTime>
  <FramesPeopleCountingRegionList>
    <!--opt, array, 区域列表, subType:object, range:[,]-->
    <FramesPeopleCountingRegion>
      <!--opt, object, 区域-->
      <id>
        <!--req, string, 规则框ID , range:[1,7]-->test
      </id>
      <enabled>
        <!--req, bool, 规则开关使能-->true
      </enabled>
      <RegionCoordinatesList size="10">
        <!--opt, array, 坐标点列表 , subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标 , range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标 , range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <peopleNumThreshold>
        <!--ro, opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:-->0
      </peopleNumThreshold>
      <countTriggerType>
        <!--ro, opt, enum, 人数触发方式, subType:, [greaterThan#大于,lessThan#小于,equal#等于], desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->greaterThan
      </countTriggerType>
      <picOverlayRuleRectEnabled>
        <!--opt, bool, 报警图片是否叠加规则框-->true
      </picOverlayRuleRectEnabled>
    </FramesPeopleCountingRegion>
  </FramesPeopleCountingRegionList>
  <OSD>
    <!--req, object, 人数统计叠加-->
    <enabled>
      <!--req, bool, 规则开关使能-->true
    </enabled>
    <Coordinates>
      <!--opt, object, 字符叠加位置, desc:字符叠加位置的左上角坐标, 屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </Coordinates>
  </OSD>
  <analysisMode>
    <!--ro, opt, enum, 分析模式, subType:string, [realTimeMode#实时模式,autoSwitchMode#轮询模式], desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode）,设备会根据负载均衡的方式，添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->realTimeMode
  </analysisMode>
</FramesPeopleCounting>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取区域人数统计区域参数（批量）

4.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/regions

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingRegionList xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, req, array, 区域列表, subType:object, range:[,]-->
  <FramesPeopleCountingRegion>
    <!--ro, opt, object, 区域-->
    <id>
      <!--ro, req, string, 规则框ID , range:[1,7]-->test
    </id>
    <enabled>
      <!--ro, req, bool, 规则开关使能-->true
    </enabled>
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 坐标点列表 , subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--ro, opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, X坐标 , range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, Y坐标 , range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
    <peopleNumThreshold>
      <!--ro, opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:-->0
    </peopleNumThreshold>
    <countTriggerType>
      <!--ro, opt, enum, 人数触发方式, subType:, [greaterThan#大于,lessThan#小于,equal#等于], desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->greaterThan
    </countTriggerType>
  </FramesPeopleCountingRegion>
</FramesPeopleCountingRegionList>

5. 配置区域人数统计区域参数（批量）

5.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/regions

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingRegionList xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--req, array, 区域列表, subType:object, range:[,]-->
  <FramesPeopleCountingRegion>
    <!--opt, object, 区域-->
    <id>
      <!--req, string, 规则框ID , range:[1,7]-->test
    </id>
    <enabled>
      <!--req, bool, 规则开关使能-->true
    </enabled>
    <RegionCoordinatesList size="10">
      <!--opt, array, 坐标点列表 , subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, X坐标 , range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, Y坐标 , range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
    <peopleNumThreshold>
      <!--opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:-->0
    </peopleNumThreshold>
    <countTriggerType>
      <!--opt, enum, 人数触发方式, subType:, [greaterThan#大于,lessThan#小于,equal#等于], desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->greaterThan
    </countTriggerType>
  </FramesPeopleCountingRegion>
</FramesPeopleCountingRegionList>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取区域人数统计区域参数

6.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/regions/<regionID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingRegion xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, req, object, 区域-->
  <id>
    <!--ro, req, string, 规则框ID , range:[1,7]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 规则开关使能-->true
  </enabled>
  <RegionCoordinatesList size="10">
    <!--ro, opt, array, 坐标点列表 , subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--ro, opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标 , range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标 , range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <peopleNumThreshold>
    <!--ro, opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:-->0
  </peopleNumThreshold>
  <countTriggerType>
    <!--ro, opt, enum, 人数触发方式, subType:, [greaterThan#大于,lessThan#小于,equal#等于], desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->greaterThan
  </countTriggerType>
</FramesPeopleCountingRegion>

7. 配置区域人数统计区域参数

7.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/regions/<regionID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingRegion xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, req, object, 区域-->
  <id>
    <!--ro, req, string, 规则框ID , range:[1,7]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 规则开关使能-->true
  </enabled>
  <RegionCoordinatesList size="10">
    <!--ro, opt, array, 坐标点列表 , subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--ro, opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标 , range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标 , range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <peopleNumThreshold>
    <!--ro, opt, int, 区域内的人数阈值, range:[0,64], step:, unit:, unitType:-->0
  </peopleNumThreshold>
  <countTriggerType>
    <!--ro, opt, enum, 人数触发方式, subType:, [greaterThan#大于,lessThan#小于,equal#等于], desc:该节点需要和peopleNumThreshold配合使用,如peopleNumThreshold =4,countTriggerType=greaterThan,则该检测区域内人数大于4人，才会触发报警-->greaterThan
  </countTriggerType>
</FramesPeopleCountingRegion>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 查询区域人数统计人数统计结果

8.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/statistics/search?startTime=<startTime>&endTime=<endTime>

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingStatisticsList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人数统计结果列表 , attr:version{req, string, 协议版本, range:[,]}-->
  <FramesPeopleCountingStatistics>
    <!--ro, opt, object, 人数统计结果-->
    <beginTime>
      <!--ro, req, datetime, 分段的开始时间, desc:ISO8601 time-->1970-01-01T00:00:00+08:00
    </beginTime>
    <endTime>
      <!--ro, req, datetime, 分段的结束时间, desc:ISO8601 time-->1970-01-01T00:00:00+08:00
    </endTime>
    <peopleNumber>
      <!--ro, req, int, 人数统计数量, range:[0,64], step:, unit:, unitType:-->0
    </peopleNumber>
    <pictureURL>
      <!--ro, req, string, 图片URL, range:[0,64]-->test
    </pictureURL>
  </FramesPeopleCountingStatistics>
</FramesPeopleCountingStatisticsList>

9. 查询区域人数统计事件

9.1 命令

POST /ISAPI/Intelligent/framesPeopleCounting/search?format=json

9.2 输入参数

{
    "searchID":  "C93A238C-6AD0-0001-4CB8-1D961A901701",
    /*req, string, 搜索ID, range:[0,64]*/
    "searchResultPosition":  0,
    /*req, int, 查询结果在结果列表中的起始位置, range:[0,4294967295], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
    "maxResultNumber":  10000,
    /*opt, int, 需要查询最大记录数（设备查询到这么多条就不再查询了）, range:[,], step:, unit:, unitType:*/
    "maxResults":  100,
    /*req, int, 本次查询最大记录数, range:[0,100], step:, unit:, unitType:*/
    "TimeSpanList": [
    /*opt, array, 查询时间列表, subType:object, range:[0,1]*/
        {
            "startTime":  "2004-05-03T17:30:08:000+08:00",
            /*opt, datetime, 开始时间*/
            "endTime":  "2004-05-03T17:30:08:000+08:00"
            /*opt, datetime, 结束时间*/
        }
    ],
    "channelID": [1, 2, 3]
    /*opt, array, 通道号, subType:int, range:[0,1], desc:支持多个通道号查询*/
}

9.3 输出参数

{
    "responseStatusStrg":  "MORE",
    /*ro, req, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]*/
    "numOfMatches":  1,
    /*ro, opt, int, 本次返回的记录条数, range:[0,100], step:, unit:, unitType:*/
    "totalMatches":  1,
    /*ro, opt, int, 符合条件的记录总条数, range:[0,4294967295], step:, unit:, unitType:*/
    "MatchResults": [
    /*ro, opt, array, 检索结果, subType:object, range:[,]*/
        {
            "time":  "2004-05-03T17:30:08:000+08:00",
            /*ro, opt, datetime, 统计时间*/
            "channel":  1,
            /*ro, req, int, 通道号, range:[0,64], step:, unit:, unitType:*/
            "peopleNumber":  4,
            /*ro, req, int, 当前人数数量, range:[0,64], step:, unit:, unitType:*/
            "pictureURL":  "test"
            /*ro, req, string, 图片URL, range:[0,64]*/
        }
    ]
}

10. 触发单帧画面人数统计结果上传

10.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/statistics

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

11. 获取区域人数统计当前最新的人数报警结果

11.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/framesPeopleCounting/result

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FramesPeopleCountingResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 区域人数统计当前最新的人数报警结果, attr:version{req, string, 协议版本, range:[,]}-->
  <peopleNumber>
    <!--ro, req, int, 人数统计总数, range:[,], step:, unit:, unitType:-->0
  </peopleNumber>
  <framesURL>
    <!--ro, opt, string, 画面统计人数功能中统计画面的URL, range:[1,256]-->test
  </framesURL>
</FramesPeopleCountingResult>

12. 获取单帧画面人数统计联动参数

12.1 命令

GET /ISAPI/Event/triggers/framesPeopleCounting-<channelID>

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->framesPeopleCounting-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->framesPeopleCounting
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <cellphoneNumber>
        <!--ro, opt, string, 电话号码, range:[0,11]-->test
      </cellphoneNumber>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

13. 配置单帧画面人数统计联动参数

13.1 命令

PUT /ISAPI/Event/triggers/framesPeopleCounting-<channelID>

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->framesPeopleCounting-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->framesPeopleCounting
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <cellphoneNumber>
        <!--opt, string, 电话号码, range:[0,11]-->test
      </cellphoneNumber>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取单帧画面人数统计单个通道布防时间参数

14.1 命令

GET /ISAPI/Event/schedules/framesPeopleCounting/framesPeopleCounting-<channelID>

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->framesPeopleCounting-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->framesPeopleCounting
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

15. 配置单帧画面人数统计单个通道布防时间参数

15.1 命令

PUT /ISAPI/Event/schedules/framesPeopleCounting/framesPeopleCounting-<channelID>

15.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->framesPeopleCounting-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->framesPeopleCounting
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


混合目标检测

1. 获取混合目标规则参数能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capabilities?format=json

1.2 输入参数

无

1.3 输出参数

{
    "MixedTargetDetectionCap": {
    /*ro, opt, object, 混合目标规则参数能力*/
        "enabled":  "true,false",
        /*ro, req, string, 总使能, range:[,]*/
        "TypesDetectionCap": [
        /*ro, opt, array, 每类目标检测使能和属性检测使能, subType:object, range:[,], desc:当无此节点时,默认为全部开启*/
            {
                "ruleMode":  "human,face,vehice,nonMotor",
                /*ro, opt, string, 规则模式, range:[,]*/
                "enabled":  "true,false",
                /*ro, opt, string, 使能, range:[,]*/
                "Property": [
                /*ro, opt, array, 属性信息, subType:object, range:[,]*/
                    {
                        "description":  "playMobilePhone",
                        /*ro, opt, string, 属性描述, range:[,]*/
                        "enabled":  "true,false"
                        /*ro, opt, string, 使能, range:[,]*/
                    }
                ]
            }
        ],
        "RuleInfoCap": {
        /*ro, opt, object, 规则信息, desc:规则数目前仅支持1个*/
            "maxSize":  1,
            /*ro, req, int, 最大支持的排队检测规则数能力, range:[,], step:, unit:, unitType:*/
            "ruleID": {
            /*ro, req, object, 规则ID*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "ruleMode": {
            /*ro, opt, object, 规则模式, desc:人脸+人体+车辆+非机动车、人体+车辆+非机动车、人脸+人体*/
                "@opt":  "face_human_vehice_nonMotor,human_vehice_nonMotor,face_human",
                /*ro, req, string, 可选项, range:[,]*/
                "@def":  "face_human_vehice_nonMotor"
                /*ro, req, string, 默认值, range:[,]*/
            },
            "RegionCap": {
            /*ro, req, object, 规则区域能力, desc:3~10边形*/
                "minSize":  3,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "InterPupileRegionCap": {
            /*ro, req, object, 最小瞳距区域能力*/
                "x": {
                /*ro, req, object, 左上角点x坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, 左上角点y坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "width": {
                /*ro, req, object, 矩形的宽度, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "height": {
                /*ro, req, object, 矩形的高度, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "MaxInterPupilRegionCap": {
            /*ro, opt, object, 最大瞳距区域能力*/
                "x": {
                /*ro, req, object, 左上角点x坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, 左上角点y坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "width": {
                /*ro, req, object, 矩形的宽度, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "height": {
                /*ro, req, object, 矩形的高度, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "LaneLineInfoCap": {
            /*ro, opt, object, 车道信息能力, desc:当ruleMode规则为face_human_vehice时生效*/
                "LaneListCap": {
                /*ro, req, object, 车道信息列表能力*/
                    "maxSize":  4,
                    /*ro, req, int, 左车道线最大个数能力, range:[,], step:, unit:, unitType:*/
                    "LeftLaneLineCap": {
                    /*ro, req, object, 左车道线能力*/
                        "maxSize":  2,
                        /*ro, req, int, 车道线最大坐标点个数能力, range:[,], step:, unit:, unitType:*/
                        "x": {
                        /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                            "@min":  0.000,
                            /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                            "@max":  1.000,
                            /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                            "#text":  0.120
                            /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                        },
                        "y": {
                        /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                            "@min":  0.000,
                            /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                            "@max":  1.000,
                            /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                            "#text":  0.120
                            /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    }
                },
                "RightLaneLineCap": {
                /*ro, req, object, 右车道线能力*/
                    "maxSize":  2,
                    /*ro, req, int, 车道线最大坐标点个数能力, range:[,], step:, unit:, unitType:*/
                    "x": {
                    /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                        "@min":  0.000,
                        /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "@max":  1.000,
                        /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "#text":  0.120
                        /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "y": {
                    /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                        "@min":  0.000,
                        /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "@max":  1.000,
                        /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "#text":  0.120
                        /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                }
            }
        },
        "KeyRegionInfo": {
        /*ro, opt, object, 重点区域信息*/
            "enabled":  "true,false",
            /*ro, req, string, 是否启用重点区域, range:[,]*/
            "RegionList": {
            /*ro, opt, object, 重点区域数组*/
                "maxSize":  8,
                /*ro, req, int, 最大支持的重点区域个数, range:[,], step:, unit:, unitType:*/
                "id": {
                /*ro, req, object, 区域ID*/
                    "@min":  1,
                    /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  8
                    /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "Region": {
                /*ro, req, object, 重点区域*/
                    "x": {
                    /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                        "@min":  0.000,
                        /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "@max":  1.000,
                        /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "#text":  0.120
                        /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "y": {
                    /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                        "@min":  0.000,
                        /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "@max":  1.000,
                        /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "#text":  0.120
                        /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "width": {
                    /*ro, req, object, 矩形的宽度, desc:屏幕左下角为坐标原点*/
                        "@min":  0.000,
                        /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "@max":  1.000,
                        /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "#text":  0.120
                        /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "height": {
                    /*ro, req, object, 矩形的高度, desc:屏幕左下角为坐标原点*/
                        "@min":  0.000,
                        /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "@max":  1.000,
                        /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                        "#text":  0.120
                        /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                }
            }
        },
        "MultiScene": {
        /*ro, opt, object, 多场景信息*/
            "maxSceneNum":  8,
            /*ro, req, int, 最大场景个数, range:[,], step:, unit:, unitType:*/
            "sid": {
            /*ro, req, object, 场景ID*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  8
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "sceneName": {
            /*ro, opt, object, 场景名称*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  256
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            },
            "parkTime": {
            /*ro, opt, object, 场景巡航恢复时间*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  256
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "isSupportCapturePicture":  true,
        /*ro, opt, bool, 是否支持混合目标抓图配置, desc:接口：/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/capturePicture?format=json*/
        "isSupportCapturePicOverlap":  true,
        /*ro, opt, bool, 是否支持混合目标抓图叠加配置, desc:接口：/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/capturePicOverlap?format=json*/
        "isSupportAlgParam":  true,
        /*ro, opt, bool, 是否支持混合目标算法库高级参数配置, desc:接口：/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/algParam?format=json*/
        "isSupportAlarmInfoGet":  true,
        /*ro, opt, bool, 是否支持混合目标抓拍信息获取, desc:/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/alarmInfo?format=json*/
        "province": {
        /*ro, opt, object, 设备运行省份（国内）索引, desc: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-皖，255-全部*/
            "@opt":  "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,255",
            /*ro, opt, string, 可选项, range:[,]*/
            "@def":  33
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "ruleModeChangedPrompt": {
        /*ro, opt, object, 混合目标抓拍切换后重启提示语能力*/
            "opt":  "prompt1"
            /*ro, req, string, 可选项, range:[,], desc:prompt1: 人员聚集检测功能需要枪机通道混合目标抓拍模式为人脸+人体+车辆，否则无法生效；是否重启设备？确定/取消;People Gathering Detection requires the multi-target-type capture mode of the box camera channel to be Face + Human Body + Vehicle. Change the multi-target-type capture mode and reboot the device now? OK/Cancel*/
        },
        "MultiSceneMode": {
        /*ro, opt, object, 多场景模式(普通模式或专家模式)*/
            "sceneMode": {
            /*ro, opt, object, 场景模式*/
                "@opt":  "normal,expert",
                /*ro, req, string, 可选项, range:[,]*/
                "@def":  "normal"
                /*ro, req, string, 默认值, range:[,]*/
            },
            "normalSceneNum": {
            /*ro, opt, object, 普通模式场景数*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "expertSceneNum": {
            /*ro, opt, object, 专家模式场景数*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  8
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "isSupportOverlay":  true,
        /*ro, opt, bool, 是否支持混合目标OSD叠加, desc:不支持不返回,/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/overlay?format=json*/
        "pictureQuality": {
        /*ro, opt, object, 图片质量*/
            "@opt":  "high,middle,low",
            /*ro, req, string, 可选项, range:[,]*/
            "@def":  "middle"
            /*ro, req, string, 默认值, range:[,]*/
        },
        "isSupportBinaryPicUp":  true,
        /*ro, opt, bool, 是否支持二值图上传*/
        "convertBinToBmpEnabled": {
        /*ro, opt, object, 是否使能将二值图转化为BMP格式*/
            "@opt": [true, false]
            /*ro, req, array, 取值范围, subType:bool, range:[,]*/
        },
        "MEF": {
        /*ro, opt, object, 混合目标电子围栏数据上传配置*/
            "enabled":  "true,false",
            /*ro, req, string, 混合目标事件中是否上报移动电子围栏数据(Mobile electronic fence), range:[,], desc:默认:false*/
            "offsetTimes": {
            /*ro, opt, object, 电围数据上报时间偏移*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:min, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发前和触发后各自偏移的时间*/
                "@max":  10,
                /*ro, req, int, 最大值, range:[,], step:, unit:min, unitType:时间*/
                "@def":  1
                /*ro, req, int, 默认值, range:[,], step:, unit:min, unitType:时间*/
            },
            "leftOffsetTimes": {
            /*ro, opt, object, 电围数据上报时间左偏移*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:s, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发前偏移的时间*/
                "@max":  300,
                /*ro, req, int, 最大值, range:[,], step:, unit:s, unitType:时间*/
                "@def":  60
                /*ro, req, int, 默认值, range:[,], step:, unit:s, unitType:时间*/
            },
            "rightOffsetTimes": {
            /*ro, opt, object, 电围数据上报时间右偏移*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:s, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发后偏移的时间*/
                "@max":  30,
                /*ro, req, int, 最大值, range:[,], step:, unit:s, unitType:时间*/
                "@def":  30
                /*ro, req, int, 默认值, range:[,], step:, unit:s, unitType:时间*/
            }
        }
    }
}

2. 获取混合目标规则参数(默认第一场景)

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection?format=json

2.2 输入参数

无

2.3 输出参数

{
    "MixedTargetDetection": {
    /*ro, opt, object, 混合目标规则参数(默认第一场景)*/
        "enabled":  true,
        /*ro, req, bool, 总使能*/
        "TypesDetection": [
        /*ro, opt, array, 每类目标检测使能和属性检测使能, subType:object, range:[,], desc:当无此节点时,默认为全部开启*/
            {
                "ruleMode":  "human",
                /*ro, opt, enum, 规则模式, subType:string, [human#人体,face#人脸,vehice#车辆,nonMotor#非机动车]*/
                "enabled":  true,
                /*ro, opt, bool, 使能*/
                "Property": [
                /*ro, opt, array, 属性信息, subType:object, range:[,]*/
                    {
                        "description":  "jacketColor",
                        /*ro, opt, enum, 属性描述, subType:string, [jacketColor#上衣颜色]*/
                        "enabled":  false
                        /*ro, opt, bool, 使能*/
                    }
                ]
            }
        ],
        "RuleInfo": [
        /*ro, opt, array, 规则信息, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "ruleMode":  "face_human_vehice_nonMotor",
                /*ro, req, enum, 规则模式, subType:string, [face_human_vehice_nonMotor#人脸+人体+车辆+非机动车,human_vehice_nonMotor#人体+车辆+非机动车,face_human#人脸+人体]*/
                "Region": [
                /*ro, req, array, 规则区域, subType:object, range:[3,10], desc:屏幕左下角为坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "InterPupileRegion": {
                /*ro, req, object, 最小瞳距区域, desc:屏幕左下角为坐标原点*/
                    "x":  0.120,
                    /*ro, req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.120,
                    /*ro, req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "width":  0.120,
                    /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "height":  0.120
                    /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "MaxInterPupilRegion": {
                /*ro, opt, object, 最大瞳距区域, desc:屏幕左下角为坐标原点*/
                    "x":  0.120,
                    /*ro, req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.120,
                    /*ro, req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "width":  0.120,
                    /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "height":  0.120
                    /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "LaneInfo": {
                /*ro, opt, object, 车道信息, desc:当ruleMode规则为face_human_vehice时生效*/
                    "LaneList": [
                    /*ro, req, array, 车道信息列表, subType:object, range:[,]*/
                        {
                            "LeftLaneLine": [
                            /*ro, req, array, 左车道线能力, subType:object, range:[0,2], desc:屏幕左下角为坐标原点*/
                                {
                                    "x":  0.120,
                                    /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                    "y":  0.120
                                    /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                }
                            ]
                        }
                    ],
                    "RightLaneLine": [
                    /*ro, req, array, 右车道线, subType:object, range:[0,2], desc:屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120
                            /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ]
                }
            }
        ],
        "KeyRegionInfo": {
        /*ro, opt, object, 重点区域信息*/
            "enabled":  true,
            /*ro, req, bool, 是否启用重点区域*/
            "RegionList": [
            /*ro, opt, array, 重点区域数组, subType:object, range:[,]*/
                {
                    "id":  1,
                    /*ro, req, int, 区域ID, range:[,], step:, unit:, unitType:*/
                    "Region": [
                    /*ro, req, array, 重点区域, subType:object, range:[,], desc:屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120,
                            /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "width":  0.120,
                            /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                            "height":  0.120
                            /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ]
                }
            ]
        },
        "province":  1,
        /*ro, opt, enum, 设备运行省份（国内）索引, subType:int, [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#皖,255#全部]*/
        "pictureQuality":  "high",
        /*ro, opt, enum, 图片质量, subType:string, [high#高,middle#中,low#低], desc:用于对视频流中抓图的质量控制*/
        "isSupportBinaryPicUp":  true,
        /*ro, opt, bool, 是否支持二值图上传*/
        "convertBinToBmpEnabled":  true,
        /*ro, opt, bool, 是否将二值图转化为BMP格式*/
        "MEF": {
        /*ro, opt, object, 混合目标电子围栏数据上传配置*/
            "enabled":  true,
            /*ro, req, bool, 混合目标事件中是否上报移动电子围栏数据(Mobile electronic fence)*/
            "offsetTimes":  1,
            /*ro, opt, int, 电围数据上报时间同步偏移, range:[0,10], step:, unit:min, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发前和触发后各自偏移的时间,若为0xffffffff表示同步配置无效*/
            "leftOffsetTimes":  60,
            /*ro, opt, int, 电围数据上报时间左偏移, range:[0,300], step:, unit:s, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发前偏移的时间,offsetTimes字段为0xffffffff时有效*/
            "rightOffsetTimes":  30
            /*ro, opt, int, 电围数据上报时间右偏移, range:[0,30], step:, unit:s, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发后偏移的时间,offsetTimes字段为0xffffffff时有效*/
        }
    }
}

3. 配置混合目标规则参数(默认第一场景)

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection?format=json

3.2 输入参数

{
    "MixedTargetDetection": {
    /*opt, object, 混合目标规则参数(默认第一场景)*/
        "enabled":  true,
        /*req, bool, 总使能*/
        "TypesDetection": [
        /*opt, array, 每类目标检测使能和属性检测使能, subType:object, range:[,], desc:当无此节点时,默认为全部开启*/
            {
                "ruleMode":  "human",
                /*opt, enum, 规则模式, subType:string, [human#人体,face#人脸,vehice#车辆,nonMotor#非机动车]*/
                "enabled":  true,
                /*opt, bool, 使能*/
                "Property": [
                /*opt, array, 属性信息, subType:object, range:[,]*/
                    {
                        "description":  "jacketColor",
                        /*opt, enum, 属性描述, subType:string, [jacketColor#上衣颜色]*/
                        "enabled":  false
                        /*opt, bool, 使能*/
                    }
                ]
            }
        ],
        "RuleInfo": [
        /*opt, array, 规则信息, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "ruleMode":  "face_human_vehice_nonMotor",
                /*req, enum, 规则模式, subType:string, [face_human_vehice_nonMotor#人脸+人体+车辆+非机动车,human_vehice_nonMotor#人体+车辆+非机动车,face_human#人脸+人体]*/
                "Region": [
                /*req, array, 规则区域, subType:object, range:[3,10], desc:屏幕左下角为坐标原点*/
                    {
                        "x":  0.120,
                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "InterPupileRegion": {
                /*req, object, 最小瞳距区域, desc:屏幕左下角为坐标原点*/
                    "x":  0.120,
                    /*req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.120,
                    /*req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "width":  0.120,
                    /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "height":  0.120
                    /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "MaxInterPupilRegion": {
                /*opt, object, 最大瞳距区域, desc:屏幕左下角为坐标原点*/
                    "x":  0.120,
                    /*req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.120,
                    /*req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "width":  0.120,
                    /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "height":  0.120
                    /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "LaneInfo": {
                /*opt, object, 车道信息, desc:当ruleMode规则为face_human_vehice时生效*/
                    "LaneList": [
                    /*req, array, 车道信息列表, subType:object, range:[,]*/
                        {
                            "LeftLaneLine": [
                            /*req, array, 左车道线能力, subType:object, range:[0,2], desc:屏幕左下角为坐标原点*/
                                {
                                    "x":  0.120,
                                    /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                    "y":  0.120
                                    /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                }
                            ]
                        }
                    ],
                    "RightLaneLine": [
                    /*req, array, 右车道线, subType:object, range:[0,2], desc:屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120
                            /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ]
                }
            }
        ],
        "KeyRegionInfo": {
        /*opt, object, 重点区域信息*/
            "enabled":  true,
            /*req, bool, 是否启用重点区域*/
            "RegionList": [
            /*opt, array, 重点区域数组, subType:object, range:[,]*/
                {
                    "id":  1,
                    /*req, int, 区域ID, range:[,], step:, unit:, unitType:*/
                    "Region": [
                    /*req, array, 重点区域, subType:object, range:[,], desc:屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120,
                            /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "width":  0.120,
                            /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                            "height":  0.120
                            /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ]
                }
            ]
        },
        "province":  1,
        /*opt, enum, 设备运行省份（国内）索引, subType:int, [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#皖,255#全部]*/
        "pictureQuality":  "high",
        /*opt, enum, 图片质量, subType:string, [high#高,middle#中,low#低], desc:用于对视频流中抓图的质量控制*/
        "isSupportBinaryPicUp":  true,
        /*opt, bool, 是否支持二值图上传*/
        "convertBinToBmpEnabled":  true,
        /*opt, bool, 是否将二值图转化为BMP格式*/
        "MEF": {
        /*opt, object, 混合目标电子围栏数据上传配置*/
            "enabled":  true,
            /*req, bool, 混合目标事件中是否上报移动电子围栏数据(Mobile electronic fence)*/
            "offsetTimes":  1,
            /*opt, int, 电围数据上报时间同步偏移, range:[0,10], step:, unit:min, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发前和触发后各自偏移的时间,若为0xffffffff表示同步配置无效*/
            "leftOffsetTimes":  60,
            /*opt, int, 电围数据上报时间左偏移, range:[0,300], step:, unit:s, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发前偏移的时间,offsetTimes字段为0xffffffff时有效*/
            "rightOffsetTimes":  30
            /*opt, int, 电围数据上报时间右偏移, range:[0,30], step:, unit:s, unitType:时间, desc:混合目标数据会延迟,和电围数据一起上报,指的是报警触发后偏移的时间,offsetTimes字段为0xffffffff时有效*/
        }
    }
}

3.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

4. 获取混合目标规则多场景配置

4.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene?format=json

4.2 输入参数

无

4.3 输出参数

{
    "MultiSceneMixedTargetDetection": [
    /*ro, req, array, 多场景参数, subType:object, range:[,]*/
        {
            "SingleSceneMixedTargetDetection": {
            /*ro, opt, object, 单场景参数*/
                "sid":  1,
                /*ro, req, int, 场景ID, range:[,], step:, unit:, unitType:*/
                "MixedTargetDetection": {
                /*ro, opt, object, 混合目标参数*/
                    "enabled":  true,
                    /*ro, req, bool, 使能*/
                    "RuleInfo": [
                    /*ro, opt, array, 规则信息, subType:object, range:[,], desc:规则数目前仅支持1个*/
                        {
                            "ruleID":  1,
                            /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                            "ruleMode":  "face_human_vehice_nonMotor",
                            /*ro, req, enum, 规则模式, subType:string, [face_human_vehice_nonMotor#人脸+人体+车辆+非机动车,human_vehice_nonMotor#人体+车辆+非机动车,face_human#人脸+人体,human_vehice#人体+车辆]*/
                            "Region": [
                            /*ro, req, array, 规则区域, subType:object, range:[,], desc:3~10边形*/
                                {
                                    "x":  0.120,
                                    /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                    "y":  0.120
                                    /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                }
                            ],
                            "InterPupileRegion": {
                            /*ro, req, object, 最小瞳距区域, desc:矩形*/
                                "x":  0.120,
                                /*ro, req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120,
                                /*ro, req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "width":  0.120,
                                /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                "height":  0.120
                                /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                            },
                            "MaxInterPupilRegion": {
                            /*ro, opt, object, 最大瞳距区域, desc:矩形*/
                                "x":  0.120,
                                /*ro, req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120,
                                /*ro, req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "width":  0.120,
                                /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                "height":  0.120
                                /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                            },
                            "LaneInfo": {
                            /*ro, opt, object, 车道信息, desc:当ruleMode规则为face_human_vehice时生效*/
                                "LaneList": [
                                /*ro, req, array, 车道信息列表, subType:object, range:[,]*/
                                    {
                                        "LeftLaneLine": [
                                        /*ro, req, array, 左车道线, subType:object, range:[,]*/
                                            {
                                                "x":  0.120,
                                                /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                                "y":  0.120
                                                /*ro, req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                                            }
                                        ]
                                    }
                                ],
                                "RightLaneLine": [
                                /*ro, req, array, 右车道线, subType:object, range:[,]*/
                                    {
                                        "x":  0.120,
                                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "y":  0.120
                                        /*ro, req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                                    }
                                ]
                            }
                        }
                    ],
                    "KeyRegionInfo": {
                    /*ro, opt, object, 重点区域信息*/
                        "enabled":  true,
                        /*ro, req, bool, 是否启用重点区域*/
                        "RegionList": [
                        /*ro, opt, array, 重点区域数组, subType:object, range:[,], desc:至少两个重点区域*/
                            {
                                "id":  1,
                                /*ro, req, int, 区域ID, range:[,], step:, unit:, unitType:*/
                                "Region": [
                                /*ro, req, array, 重点区域, subType:object, range:[,], desc:矩形框*/
                                    {
                                        "x":  0.120,
                                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "y":  0.120,
                                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "width":  0.120,
                                        /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "height":  0.120
                                        /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                                    }
                                ]
                            }
                        ]
                    },
                    "province":  1
                    /*ro, opt, int, 设备运行省份（国内）索引, range:[,], step:, unit:, unitType:*/
                },
                "sceneName":  "场景1"
                /*ro, opt, string, 场景名称, range:[,]*/
            }
        }
    ]
}

5. 配置混合目标规则多场景配置

5.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene?format=json

5.2 输入参数

{
    "MultiSceneMixedTargetDetection": [
    /*req, array, 多场景参数, subType:object, range:[,]*/
        {
            "SingleSceneMixedTargetDetection": {
            /*opt, object, 单场景参数*/
                "sid":  1,
                /*req, int, 场景ID, range:[,], step:, unit:, unitType:*/
                "MixedTargetDetection": {
                /*opt, object, 混合目标参数*/
                    "enabled":  true,
                    /*req, bool, 使能*/
                    "RuleInfo": [
                    /*opt, array, 规则信息, subType:object, range:[,], desc:规则数目前仅支持1个*/
                        {
                            "ruleID":  1,
                            /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                            "ruleMode":  "face_human_vehice_nonMotor",
                            /*req, enum, 规则模式, subType:string, [face_human_vehice_nonMotor#人脸+人体+车辆+非机动车,human_vehice_nonMotor#人体+车辆+非机动车,face_human#人脸+人体,human_vehice#人体+车辆]*/
                            "Region": [
                            /*req, array, 规则区域, subType:object, range:[,], desc:3~10边形*/
                                {
                                    "x":  0.120,
                                    /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                    "y":  0.120
                                    /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                }
                            ],
                            "InterPupileRegion": {
                            /*req, object, 最小瞳距区域, desc:矩形*/
                                "x":  0.120,
                                /*req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120,
                                /*req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "width":  0.120,
                                /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                "height":  0.120
                                /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                            },
                            "MaxInterPupilRegion": {
                            /*opt, object, 最大瞳距区域, desc:矩形*/
                                "x":  0.120,
                                /*req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120,
                                /*req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "width":  0.120,
                                /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                "height":  0.120
                                /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                            },
                            "LaneInfo": {
                            /*opt, object, 车道信息, desc:当ruleMode规则为face_human_vehice时生效*/
                                "LaneList": [
                                /*req, array, 车道信息列表, subType:object, range:[,]*/
                                    {
                                        "LeftLaneLine": [
                                        /*req, array, 左车道线, subType:object, range:[,]*/
                                            {
                                                "x":  0.120,
                                                /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                                "y":  0.120
                                                /*req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                                            }
                                        ]
                                    }
                                ],
                                "RightLaneLine": [
                                /*req, array, 右车道线, subType:object, range:[,]*/
                                    {
                                        "x":  0.120,
                                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "y":  0.120
                                        /*req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                                    }
                                ]
                            }
                        }
                    ],
                    "KeyRegionInfo": {
                    /*opt, object, 重点区域信息*/
                        "enabled":  true,
                        /*req, bool, 是否启用重点区域*/
                        "RegionList": [
                        /*opt, array, 重点区域数组, subType:object, range:[,], desc:至少两个重点区域*/
                            {
                                "id":  1,
                                /*req, int, 区域ID, range:[,], step:, unit:, unitType:*/
                                "Region": [
                                /*req, array, 重点区域, subType:object, range:[,], desc:矩形框*/
                                    {
                                        "x":  0.120,
                                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "y":  0.120,
                                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "width":  0.120,
                                        /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "height":  0.120
                                        /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                                    }
                                ]
                            }
                        ]
                    },
                    "province":  1
                    /*opt, int, 设备运行省份（国内）索引, range:[,], step:, unit:, unitType:*/
                },
                "sceneName":  "场景1"
                /*opt, string, 场景名称, range:[,]*/
            }
        }
    ]
}

5.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

6. 获取混合目标规则指定场景配置

6.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene/<SID>?format=json

6.2 输入参数

无

6.3 输出参数

{
    "SingleSceneMixedTargetDetection": {
    /*ro, req, object, 单场景参数*/
        "sid":  1,
        /*ro, req, int, 场景ID, range:[,], step:, unit:, unitType:*/
        "MixedTargetDetection": {
        /*ro, opt, object, 混合目标参数*/
            "enabled":  true,
            /*ro, req, bool, 使能*/
            "RuleInfo": [
            /*ro, opt, array, 规则信息, subType:object, range:[,], desc:规则数目前仅支持1个*/
                {
                    "ruleID":  1,
                    /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                    "ruleMode":  "face_human_vehice_nonMotor",
                    /*ro, req, enum, 规则模式, subType:string, [face_human_vehice_nonMotor#人脸+人体+车辆+非机动车,human_vehice_nonMotor#人体+车辆+非机动车,face_human#人脸+人体,human_vehice#人体+车辆]*/
                    "Region": [
                    /*ro, req, array, 规则区域, subType:object, range:[,], desc:3~10边形*/
                        {
                            "x":  0.120,
                            /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120
                            /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ],
                    "InterPupileRegion": {
                    /*ro, req, object, 最小瞳距区域, desc:矩形*/
                        "x":  0.120,
                        /*ro, req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120,
                        /*ro, req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  0.120,
                        /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "height":  0.120
                        /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "MaxInterPupilRegion": {
                    /*ro, opt, object, 最大瞳距区域, desc:矩形*/
                        "x":  0.120,
                        /*ro, req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120,
                        /*ro, req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  0.120,
                        /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "height":  0.120
                        /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "LaneInfo": {
                    /*ro, opt, object, 车道信息, desc:当ruleMode规则为face_human_vehice时生效*/
                        "LaneList": [
                        /*ro, req, array, 车道信息列表, subType:object, range:[,]*/
                            {
                                "LeftLaneLine": [
                                /*ro, req, array, 左车道线, subType:object, range:[,]*/
                                    {
                                        "x":  0.120,
                                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "y":  0.120
                                        /*ro, req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                                    }
                                ]
                            }
                        ],
                        "RightLaneLine": [
                        /*ro, req, array, 右车道线, subType:object, range:[,]*/
                            {
                                "x":  0.120,
                                /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120
                                /*ro, req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                            }
                        ]
                    }
                }
            ],
            "KeyRegionInfo": {
            /*ro, opt, object, 重点区域信息*/
                "enabled":  true,
                /*ro, req, bool, 是否启用重点区域*/
                "RegionList": [
                /*ro, opt, array, 重点区域数组, subType:object, range:[,], desc:至少两个重点区域*/
                    {
                        "id":  1,
                        /*ro, req, int, 区域ID, range:[,], step:, unit:, unitType:*/
                        "Region": [
                        /*ro, req, array, 重点区域, subType:object, range:[,], desc:矩形框*/
                            {
                                "x":  0.120,
                                /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120,
                                /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "width":  0.120,
                                /*ro, req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                "height":  0.120
                                /*ro, req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                            }
                        ]
                    }
                ]
            },
            "province":  1
            /*ro, opt, int, 设备运行省份（国内）索引, range:[,], step:, unit:, unitType:*/
        },
        "sceneName":  "场景1"
        /*ro, opt, string, 场景名称, range:[,]*/
    }
}

7. 配置混合目标规则指定场景配置

7.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/multiScene/<SID>?format=json

7.2 输入参数

{
    "SingleSceneMixedTargetDetection": {
    /*req, object, 单场景参数*/
        "sid":  1,
        /*req, int, 场景ID, range:[,], step:, unit:, unitType:*/
        "MixedTargetDetection": {
        /*opt, object, 混合目标参数*/
            "enabled":  true,
            /*req, bool, 使能*/
            "RuleInfo": [
            /*opt, array, 规则信息, subType:object, range:[,], desc:规则数目前仅支持1个*/
                {
                    "ruleID":  1,
                    /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                    "ruleMode":  "face_human_vehice_nonMotor",
                    /*req, enum, 规则模式, subType:string, [face_human_vehice_nonMotor#人脸+人体+车辆+非机动车,human_vehice_nonMotor#人体+车辆+非机动车,face_human#人脸+人体,human_vehice#人体+车辆]*/
                    "Region": [
                    /*req, array, 规则区域, subType:object, range:[3,10], desc:3~10边形, 屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120
                            /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ],
                    "InterPupileRegion": {
                    /*req, object, 最小瞳距区域, desc:矩形, 屏幕左下角为坐标原点*/
                        "x":  0.120,
                        /*req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120,
                        /*req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  0.120,
                        /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "height":  0.120
                        /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "MaxInterPupilRegion": {
                    /*opt, object, 最大瞳距区域, desc:矩形, 屏幕左下角为坐标原点*/
                        "x":  0.120,
                        /*req, float, 左上角点x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120,
                        /*req, float, 左上角点y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  0.120,
                        /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "height":  0.120
                        /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "LaneInfo": {
                    /*opt, object, 车道信息, desc:当ruleMode规则为face_human_vehice时生效*/
                        "LaneList": [
                        /*req, array, 车道信息列表, subType:object, range:[,]*/
                            {
                                "LeftLaneLine": [
                                /*req, array, 左车道线, subType:object, range:[0,2]*/
                                    {
                                        "x":  0.120,
                                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                        "y":  0.120
                                        /*req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                                    }
                                ]
                            }
                        ],
                        "RightLaneLine": [
                        /*req, array, 右车道线, subType:object, range:[0,2]*/
                            {
                                "x":  0.120,
                                /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120
                                /*req, float, y坐标。, range:[0.000,1.000], step:, unit:, unitType:*/
                            }
                        ]
                    }
                }
            ],
            "KeyRegionInfo": {
            /*opt, object, 重点区域信息*/
                "enabled":  true,
                /*req, bool, 是否启用重点区域*/
                "RegionList": [
                /*opt, array, 重点区域数组, subType:object, range:[,], desc:至少两个重点区域*/
                    {
                        "id":  1,
                        /*req, int, 区域ID, range:[,], step:, unit:, unitType:*/
                        "Region": [
                        /*req, array, 重点区域, subType:object, range:[,], desc:矩形框, 屏幕左下角为坐标原点*/
                            {
                                "x":  0.120,
                                /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "y":  0.120,
                                /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                                "width":  0.120,
                                /*req, float, 矩形的宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                                "height":  0.120
                                /*req, float, 矩形的高度, range:[0.000,1.000], step:, unit:, unitType:*/
                            }
                        ]
                    }
                ]
            },
            "province":  1
            /*opt, int, 设备运行省份（国内）索引, range:[,], step:, unit:, unitType:*/
        },
        "sceneName":  "场景1"
        /*opt, string, 场景名称, range:[,]*/
    }
}

7.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

8. 获取混合目标检测联动配置

8.1 命令

GET /ISAPI/Event/triggers/mixedTargetDetection-<channelID>

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->mixedTargetDetection-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->mixedTargetDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, string, 联动方式, range:[,]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

9. 配置混合目标检测联动配置

9.1 命令

PUT /ISAPI/Event/triggers/mixedTargetDetection-<channelID>

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->mixedTargetDetection-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->mixedTargetDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取混合目标检测布防时间

10.1 命令

GET /ISAPI/Event/schedules/mixedTargetDetection/mixedTargetDetection-<channelID>

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间列表, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->mixedTargetDetection-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->mixedTargetDetection
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, opt, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--ro, opt, object, 场景循环参数-->
        <vehicleDetectSceneID>
          <!--ro, opt, int, 车辆检测场景ID, range:[,], step:, unit:, unitType:-->1
        </vehicleDetectSceneID>
        <sceneID>
          <!--ro, opt, int, 单场景切换配置, range:[,], step:, unit:, unitType:-->1
        </sceneID>
        <SceneList>
          <!--ro, opt, array, 多场景切换配置, subType:object, range:[,]-->
          <Scene>
            <!--ro, opt, object, 场景信息-->
            <sceneID>
              <!--ro, req, string, 关联场景ID, range:[1,16]-->1
            </sceneID>
            <durationTime>
              <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:-->1
            </durationTime>
          </Scene>
        </SceneList>
        <ruleID>
          <!--ro, opt, int, 单规则定时切换配置, range:[1,4], step:, unit:, unitType:,
desc:可通过规则ID进行定时切换；用户可通过GET方法返回ruleID字段来判断是否支持单规则定时切换配置。
               使用场景为：定焦设备,在白天监测环境比较清晰，可以配置大范围远距离规则框（设定为规则1），在夜晚监测环境比较模糊，可以配置小范围近距离规则框（设定为规则2），则可以配置规则1、2的切换时间。
               设置规则ID对应接口：/ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capabilities?format=json-->1
        </ruleID>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
  <parkTime>
    <!--ro, opt, int, 停车时间, range:[,], step:, unit:s, unitType:时间-->1
  </parkTime>
</Schedule>

11. 配置混合目标检测布防时间

11.1 命令

PUT /ISAPI/Event/schedules/mixedTargetDetection/mixedTargetDetection-<channelID>

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间列表, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->mixedTargetDetection-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->mixedTargetDetection
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--opt, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--opt, object, 布防时段巡航参数-->
        <vehicleDetectSceneID>
          <!--opt, int, 车辆检测场景ID, range:[,], step:, unit:, unitType:-->1
        </vehicleDetectSceneID>
        <sceneID>
          <!--opt, int, 单场景切换配置, range:[,], step:, unit:, unitType:-->1
        </sceneID>
        <SceneList>
          <!--opt, array, 多场景切换配置, subType:object, range:[,]-->
          <Scene>
            <!--opt, object, 场景信息-->
            <sceneID>
              <!--req, string, 关联场景ID, range:[1,16]-->1
            </sceneID>
            <durationTime>
              <!--req, int, 持续时间, range:[,], step:, unit:, unitType:-->1
            </durationTime>
          </Scene>
        </SceneList>
        <ruleID>
          <!--opt, int, 单规则定时切换配置, range:[1,4], step:, unit:, unitType:,
desc:可通过规则ID进行定时切换；用户可通过GET方法返回ruleID字段来判断是否支持单规则定时切换配置。
               使用场景为：定焦设备,在白天监测环境比较清晰，可以配置大范围远距离规则框（设定为规则1），在夜晚监测环境比较模糊，可以配置小范围近距离规则框（设定为规则2），则可以配置规则1、2的切换时间。
               设置规则ID对应接口：/ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capabilities?format=json-->1
        </ruleID>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
  <parkTime>
    <!--opt, int, 停车时间, range:[,], step:, unit:s, unitType:时间-->1
  </parkTime>
</Schedule>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取混合目标检测事件屏蔽区域

12.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/Shield/mixedTargetDetection

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Shield xmlns="http://www.isapi.org/ver20/XMLSchema" version="1.0">
  <!--ro, req, object, 屏蔽区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, enum, 使能, subType:string, [true#是,false#否]-->true
  </enabled>
  <RegionList>
    <!--ro, opt, array, 屏蔽区域列表, subType:object, range:[,]-->
    <Region>
      <!--ro, opt, object, 屏蔽区域-->
      <id>
        <!--ro, req, string, 区域索引, range:[,]-->1
      </id>
      <enabled>
        <!--ro, req, enum, 使能, subType:string, [true#是,false#否]-->true
      </enabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], desc:屏幕左下角为坐标原点-->
        <RegionCoordinates>
          <!--ro, req, object, 区域坐标-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenWidth-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenHeight-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </Region>
  </RegionList>
</Shield>

13. 配置混合目标检测事件屏蔽区域

13.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/Shield/mixedTargetDetection

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Shield xmlns="http://www.isapi.org/ver20/XMLSchema" version="1.0">
  <!--req, object, 屏蔽区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, enum, 使能, subType:string, [true#是,false#否]-->true
  </enabled>
  <RegionList>
    <!--opt, array, 屏蔽区域列表, subType:object, range:[,]-->
    <Region>
      <!--opt, object, 屏蔽区域-->
      <id>
        <!--req, string, 区域索引, range:[,]-->1
      </id>
      <enabled>
        <!--req, enum, 使能, subType:string, [true#是,false#否]-->true
      </enabled>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[3,10], desc:屏幕左下角为坐标原点-->
        <RegionCoordinates>
          <!--req, object, 区域坐标-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenWidth-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenHeight-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </Region>
  </RegionList>
</Shield>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取混合目标抓拍信息

14.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/alarmInfo?format=json

14.2 输入参数

无

14.3 输出参数

{
    "MixedTargetDetectionResult": {
    /*ro, opt, object, 混合目标检测结果*/
        "ResultList": [
        /*ro, req, array, 抓拍结果列表, subType:object, range:[,]*/
            {
                "captureTime":  "2004-05-03T17:30:08.500+08:00",
                /*ro, opt, date, 起始抓拍时间*/
                "faceImageURL":  "test",
                /*ro, opt, picurl, 抓拍人脸小图图片URL*/
                "humanImageURL":  "test",
                /*ro, opt, picurl, 抓拍人体小图图片URL*/
                "targetID":  1,
                /*ro, opt, int, 抓拍的目标ID, range:[,], step:, unit:, unitType:*/
                "Face": {
                /*ro, opt, object, 人脸属性*/
                    "Rect": {
                    /*ro, req, object, 人脸小图矩形框, desc:屏幕左下角为坐标原点*/
                        "height":  1.000,
                        /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "Property": [
                    /*ro, opt, array, 属性数据, subType:object, range:[,]*/
                        {
                            "description":  "age",
                            /*ro, opt, enum, 属性描述, subType:string, [age#年龄,ageGroup#年龄段,gender#性别,glass#是否戴眼镜,smile#是否微笑,mask#是否戴口罩,hat#戴帽子,score#人脸评分]*/
                            "value":  "23"
                            /*ro, opt, string, 依赖description的赋值, range:[,]*/
                        }
                    ],
                    "faceImageURL":  "test",
                    /*ro, opt, string, 人脸小图, range:[,]*/
                    "faceBackgroundImageURL":  "test"
                    /*ro, opt, string, 人脸背景大图, range:[,]*/
                },
                "Human": {
                /*ro, opt, object, 人体属性*/
                    "Rect": {
                    /*ro, req, object, 人体小图矩形框, desc:屏幕左下角为坐标原点*/
                        "height":  1.000,
                        /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "Property": [
                    /*ro, opt, array, 属性数据, subType:object, range:[,]*/
                        {
                            "description":  "jacketColor",
                            /*ro, opt, enum, 属性描述, subType:string, [jacketColor#上衣颜色,trousersColor#下衣颜色,ageGroup#年龄段,gender#性别,glass#是否戴眼镜,ride#是否骑车,bag#是否背包,things#是否拎东西,hat#是否戴帽子,trousersType#下装类型,mask#是否戴口罩,hairStyle#发型,cyclingPersonNumber#骑车人数,direction#目标方向,score#人体评分,hatStyle#帽子款式,cyclingType#骑车类型]*/
                            "value":  "23"
                            /*ro, opt, string, 依赖description的赋值, range:[,]*/
                        }
                    ],
                    "modeldata":  "test",
                    /*ro, opt, string, 人体附带建模模型base64编码数据, range:[,]*/
                    "humanImageURL":  "test",
                    /*ro, opt, string, 人体小图, range:[,]*/
                    "humanBackgroundImageURL":  "test"
                    /*ro, opt, string, 人体背景大图, range:[,]*/
                },
                "NonMotor": {
                /*ro, opt, object, 非机动车属性*/
                    "Rect": {
                    /*ro, req, object, 非机动车小图矩形框, desc:屏幕左下角为坐标原点*/
                        "height":  1.000,
                        /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "Property": [
                    /*ro, opt, array, 属性数据, subType:object, range:[,]*/
                        {
                            "description":  "nonMotorType",
                            /*ro, opt, enum, 属性描述, subType:string, [nonMotorType#非机动车类型,plateColor#非机动车牌颜色,plateNo#非机动车牌号码,directionIndex#车辆行驶方向,laneNo#车道号,RFID#关联的RFID]*/
                            "value":  "23"
                            /*ro, opt, string, 依赖description的赋值, range:[,]*/
                        }
                    ],
                    "nonMotorImageURL":  "test"
                    /*ro, opt, string, 非机动车子图, range:[,]*/
                },
                "Vehicle": {
                /*ro, opt, object, 机动车属性*/
                    "VehicleRect": {
                    /*ro, req, object, 机动车车辆区域矩形框, desc:屏幕左下角为坐标原点*/
                        "height":  1.000,
                        /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "PlateRect": {
                    /*ro, req, object, 车牌区域, desc:屏幕左下角为坐标原点*/
                        "height":  1.000,
                        /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "Property": [
                    /*ro, opt, array, 属性数据, subType:object, range:[,]*/
                        {
                            "description":  "plateNo",
                            /*ro, opt, enum, 属性描述, subType:string, [plateNo#车牌号码,plateType#车牌类型,plateColor#车牌颜色,vehicleType#车辆类型,vehicleColor#车辆颜色,vehicleLogo#车辆品牌,vehicleSublogo#车辆子品牌,vehicleSize#车辆大小]*/
                            "value":  "23"
                            /*ro, opt, string, 依赖description的赋值, range:[,]*/
                        }
                    ],
                    "vehicleImageURL":  "test",
                    /*ro, opt, string, 机动车子图, range:[,]*/
                    "plateImageURL":  "test",
                    /*ro, opt, string, 车牌小图, range:[,]*/
                    "vehicleBackgroundImageURL":  "test"
                    /*ro, opt, string, 车辆背景大图, range:[,]*/
                },
                "AbsoluteHigh": {
                /*ro, opt, object, PTZ位置*/
                    "elevation":  11,
                    /*ro, opt, int, 仰角, range:[,], step:, unit:, unitType:, desc:对应T,0..3600*/
                    "azimuth":  22,
                    /*ro, opt, int, 方位角, range:[,], step:, unit:, unitType:, desc:对应P,0..3600,*/
                    "absoluteZoom":  33
                    /*ro, opt, int, 变倍倍率, range:[,], step:, unit:, unitType:, desc:1.. 1000, 变倍倍率，对应Z*/
                },
                "sid":  "123",
                /*ro, opt, string, 场景编号, range:[,]*/
                "sceneName":  "场景1"
                /*ro, opt, string, 场景名称, range:[,]*/
            }
        ]
    }
}

15. 获取混合目标算法库高级参数能力

15.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/algParam/capabilities?format=json

15.2 输入参数

无

15.3 输出参数

{
    "MixedTargetAlgParamCap": {
    /*ro, req, object, 混合目标算法库参数能力*/
        "enabled":  "true,false",
        /*ro, req, string, 算法参数总使能, range:[,]*/
        "targetSpeed": {
        /*ro, opt, object, 目标生成速度*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  5,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "sensitiveLevel": {
        /*ro, opt, object, 灵敏度*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  5,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "snapMode": {
        /*ro, opt, object, 抓拍模式*/
            "@opt":  "best, quick",
            /*ro, opt, string, 最佳抓拍-best、快速抓拍-quick, range:[,]*/
            "@def":  "best"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "bestSnapInterval": {
        /*ro, opt, object, 最佳抓拍间隔;1~255帧;当snapMode=best时或bestSnapEnabled为true时生效*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  255,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  1
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "bestSnapThreshold": {
        /*ro, opt, object, 最佳抓拍阈值;0~100帧;当snapMode=best时或bestSnapEnabled为true时生效*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  20
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "quickSnapThreshold": {
        /*ro, opt, object, 快速抓拍阈值；20~80；当snapMode=quick时或quickSnapEnabled为true时生效*/
            "@min":  20,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  80,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  50
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "exposureEnabled":  "true,false",
        /*ro, opt, string, 人脸曝光使能, range:[,]*/
        "brightRef": {
        /*ro, opt, object, 亮度参考值*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  50
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "expDurationTime": {
        /*ro, opt, object, 最短曝光时间*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  3600,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  60
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "faceFilteringTime": {
        /*ro, opt, object, 人脸过滤时间*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  5
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "bestSnapNum": {
        /*ro, opt, object, 最佳抓拍次数*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  10,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  1
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "longestSnapTime": {
        /*ro, opt, object, 最长抓拍时间;1~10秒;当snapMode=quick时生效*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  10,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  5
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "UploadDataType": {
        /*ro, opt, object, 混合目标上传的数据类型配置;可以过滤设备上报的数据类型, desc:备注1：若该节点不支持;则设备默认根据混合目标模式全量上报目标属性。备注2：混合目标模式为控制设备支持检测的目标属性类型;而该节点不影响设备的检测属性类型;仅仅只是过滤事件上报中的属性;做的降低带宽消耗的目的。本节点需要基于混合目标模式中所支持的属性类型。例如：若混合目标选择了face_human_vehice_nonMotor;则设备同时支持目标中人脸、人体、非机动车、机动车属性的检测;该情况下可以通过该节点进行上述四种属性的过滤。若混合目标选择了face_human;则设备只支持目标中人脸、人体属性的检测;该情况下本节点中的nonMotorEnabled、vehiceEnabled节点将不生效。*/
            "faceEnabled":  "true,false",
            /*ro, opt, string, 人脸属性数据上报配置, range:[,]*/
            "humanEnabled":  "true,false",
            /*ro, opt, string, 人体属性数据上报配置, range:[,]*/
            "nonMotorEnabled":  "true,false",
            /*ro, opt, string, 非机动车属性数据上报配置, range:[,]*/
            "vehiceEnabled":  "true,false"
            /*ro, opt, string, 机动车属性数据上报配置, range:[,]*/
        },
        "RemoveDuplicateCap": {
        /*ro, opt, object, 人脸抓拍去重;snapMode = best是生效*/
            "enabled":  "true,false",
            /*ro, req, string, 去重使能, range:[,]*/
            "threshold": {
            /*ro, opt, object, 去重阈值;当比对相似度大于去重阈值时认为是重复人脸*/
                "@min":  70,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  88
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "faceScore": {
            /*ro, opt, object, 去重评分阈值;当人脸评分大于20(配置值)时;才能进入动态去重库;防止评分过低导致比对效果较差*/
                "@min":  20,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  60,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  20
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "updateTime": {
            /*ro, opt, object, 去重库更新时间;人脸模型*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  300,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  60
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            }
        },
        "uploadWithoutLicense":  "true,false",
        /*ro, opt, string, 无车牌的报警是否上传, range:[,]*/
        "panoramaTargetRemoveDuplicate":  "true,false",
        /*ro, opt, string, 全景目标去重是否使能;默认关闭；全景去重功能开启后;通过上下关联功能;将关联成功的目标保留细节路人脸和全景路人体（细节路的人体和全景路人脸丢弃不上传）；通过通道1上传, range:[,]*/
        "miscatchFilterEnabled":  "true,false",
        /*ro, opt, string, 误抓使能；开启后保证不误抓；但是可能会漏抓。不开启不保证误抓；但是保证不漏抓, range:[,]*/
        "capturingPeopleEnabled":  "true,false"
        /*ro, opt, string, 抓拍多人;非机动车载人的情况下;默认对非机动车多人均进行抓拍;抓拍多人;能保证后座的人如果能够识别;均不会漏, range:[,]*/
    }
}

16. 设置混合目标算法库高级参数

16.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/algParam?format=json

16.2 输入参数

{
    "MixedTargetAlgParam": {
    /*req, object, 混合目标算法库参数*/
        "enabled":  true,
        /*req, bool, 算法参数总使能*/
        "targetSpeed":  3,
        /*opt, int, 目标生成速度, range:[1,5], step:, unit:, unitType:*/
        "sensitiveLevel":  3,
        /*opt, int, 灵敏度, range:[1,5], step:, unit:, unitType:*/
        "snapMode":  "best",
        /*opt, enum, 抓拍模式；最佳抓拍-best、快速抓拍-quick, subType:string, [best#最佳抓拍,quick#快速抓拍]*/
        "bestSnapInterval":  1,
        /*opt, int, 最佳抓拍间隔;1~255帧;当snapMode=best时或bestSnapEnabled为true时生效, range:[1,255], step:, unit:, unitType:*/
        "bestSnapThreshold":  20,
        /*opt, int, 最佳抓拍阈值;0~100帧;当snapMode=best时或bestSnapEnabled为true时生效, range:[0,100], step:, unit:, unitType:*/
        "quickSnapThreshold":  50,
        /*opt, int, 快速抓拍阈值；20~80；当snapMode=quick时或quickSnapEnabled为true时生效, range:[20,80], step:, unit:, unitType:*/
        "exposureEnabled":  true,
        /*ro, opt, bool, 人脸曝光使能*/
        "brightRef":  50,
        /*opt, int, 亮度参考值, range:[0,100], step:, unit:, unitType:*/
        "expDurationTime":  60,
        /*opt, int, 最短曝光时间, range:[0,3600], step:, unit:, unitType:*/
        "faceFilteringTime":  5,
        /*opt, int, 人脸过滤时间, range:[0,100], step:, unit:, unitType:*/
        "bestSnapNum":  1,
        /*opt, int, 最佳抓拍次数, range:[0,10], step:, unit:, unitType:*/
        "longestSnapTime":  5,
        /*opt, int, 最长抓拍时间;1~10秒;当snapMode=quick时生效, range:[1,10], step:, unit:, unitType:*/
        "UploadDataType": {
        /*opt, object, 混合目标上传的数据类型配置;可以过滤设备上报的数据类型, desc:备注1：若该节点不支持;则设备默认根据混合目标模式全量上报目标属性。备注2：混合目标模式为控制设备支持检测的目标属性类型;而该节点不影响设备的检测属性类型;仅仅只是过滤事件上报中的属性;做的降低带宽消耗的目的。本节点需要基于混合目标模式中所支持的属性类型。例如：若混合目标选择了face_human_vehice_nonMotor;则设备同时支持目标中人脸、人体、非机动车、机动车属性的检测;该情况下可以通过该节点进行上述四种属性的过滤。若混合目标选择了face_human;则设备只支持目标中人脸、人体属性的检测;该情况下本节点中的nonMotorEnabled、vehiceEnabled节点将不生效。*/
            "faceEnabled":  true,
            /*opt, bool, 人脸属性数据上报配置*/
            "humanEnabled":  true,
            /*opt, bool, 人体属性数据上报配置*/
            "nonMotorEnabled":  true,
            /*opt, bool, 非机动车属性数据上报配置*/
            "vehiceEnabled":  true
            /*opt, bool, 机动车属性数据上报配置*/
        },
        "RemoveDuplicate": {
        /*opt, object, 人脸抓拍去重;snapMode = best是生效*/
            "enabled":  true,
            /*req, bool, 去重使能*/
            "threshold":  88,
            /*opt, int, 去重阈值;当比对相似度大于去重阈值时认为是重复人脸, range:[70,100], step:, unit:, unitType:*/
            "faceScore":  20,
            /*opt, int, 去重评分阈值;当人脸评分大于20(配置值)时;才能进入动态去重库;防止评分过低导致比对效果较差, range:[20,60], step:, unit:, unitType:*/
            "updateTime":  60
            /*opt, int, 去重库更新时间;人脸模型, range:[0,300], step:, unit:, unitType:*/
        },
        "uploadWithoutLicense":  true,
        /*opt, bool, 无车牌的报警是否上传*/
        "panoramaTargetRemoveDuplicate":  true,
        /*opt, bool, 全景目标去重是否使能;默认关闭；全景去重功能开启后;通过上下关联功能;将关联成功的目标保留细节路人脸和全景路人体（细节路的人体和全景路人脸丢弃不上传）；通过通道1上传*/
        "miscatchFilterEnabled":  true,
        /*opt, bool, 误抓使能；开启后保证不误抓；但是可能会漏抓。不开启不保证误抓；但是保证不漏抓*/
        "capturingPeopleEnabled":  true
        /*opt, bool, 抓拍多人;非机动车载人的情况下;默认对非机动车多人均进行抓拍;抓拍多人;能保证后座的人如果能够识别;均不会漏*/
    }
}

16.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

17. 获取混合目标算法库高级参数配置

17.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/algParam?format=json

17.2 输入参数

无

17.3 输出参数

{
    "MixedTargetAlgParam": {
    /*ro, req, object, 混合目标算法库参数（目前使用HMS海康目标结构化算法）*/
        "enabled":  true,
        /*ro, req, bool, 算法参数总使能*/
        "targetSpeed":  3,
        /*ro, req, int, 目标生成速度, range:[,], step:, unit:, unitType:*/
        "sensitiveLevel":  3,
        /*ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:*/
        "snapMode":  "best",
        /*ro, opt, enum, 抓拍模式, subType:string, [best#最佳抓拍,quick#快速抓拍]*/
        "bestSnapInterval":  1,
        /*ro, opt, int, 最佳抓拍间隔, range:[1,255], step:, unit:, unitType:无, desc:当snapMode=best时生效，单位：帧*/
        "bestSnapThreshold":  20,
        /*ro, opt, int, 最佳抓拍阈值, range:[0,100], step:, unit:, unitType:, desc:当snapMode=best时生效，单位：帧*/
        "quickSnapThreshold":  20,
        /*ro, opt, int, 快速抓拍阈值, range:[20,80], step:, unit:, unitType:, desc:当snapMode=quick时生效*/
        "exposureEnabled":  true,
        /*ro, opt, bool, 人脸曝光使能*/
        "brightRef":  50,
        /*ro, opt, int, 亮度参考值, range:[0,100], step:, unit:, unitType:*/
        "expDurationTime":  60,
        /*ro, req, int, 最短曝光时间, range:[0,3600], step:, unit:s, unitType:时间*/
        "faceFilteringTime":  5,
        /*ro, req, int, 人脸过滤时间, range:[0,100], step:, unit:s, unitType:时间*/
        "bestSnapNum":  1,
        /*ro, opt, int, 最佳抓拍次数, range:[0,10], step:, unit:, unitType:*/
        "longestSnapTime":  1,
        /*ro, opt, int, 最长抓拍时间, range:[1,10], step:, unit:s, unitType:时间, desc:当snapMode=quick时生效*/
        "UploadDataType": {
        /*ro, opt, object, 混合目标上传的数据类型配置, desc:可以过滤设备上报的数据类型。备注1：若该节点不支持,则设备默认根据混合目标模式全量上报目标属性。备注2：混合目标模式为控制设备支持检测的目标属性类型，而该节点不影响设备的检测属性类型，仅仅只是过滤事件上报中的属性，做的降低带宽消耗的目的。本节点需要基于混合目标模式中所支持的属性类型。例如：若混合目标选择了face_human_vehice_nonMotor,则设备同时支持目标中人脸、人体、非机动车、机动车属性的检测,该情况下可以通过该节点进行上述四种属性的过滤。若混合目标选择了face_human,则设备只支持目标中人脸、人体属性的检测,该情况下本节点中的nonMotorEnabled、vehiceEnabled节点将不生效。*/
            "faceEnabled":  true,
            /*ro, opt, bool, 人脸属性数据上报配置*/
            "humanEnabled":  true,
            /*ro, opt, bool, 人体属性数据上报配置*/
            "nonMotorEnabled":  true,
            /*ro, opt, bool, 非机动车属性数据上报配置*/
            "vehiceEnabled":  true
            /*ro, opt, bool, 机动车属性数据上报配置*/
        },
        "RemoveDuplicate": {
        /*ro, req, object, 人脸抓拍去重, desc:snapMode = best时生效*/
            "enabled":  true,
            /*ro, req, bool, 去重使能*/
            "threshold":  88,
            /*ro, req, int, 去重阈值, range:[,], step:, unit:, unitType:, desc:当比对相似度大于去重阈值时认为是重复人脸*/
            "faceScore":  20,
            /*ro, opt, int, 去重评分阈值, range:[,], step:, unit:, unitType:, desc:当人脸评分大于20(配置值)时,才能进入动态去重库,防止评分过低导致比对效果较差*/
            "updateTime":  60
            /*ro, opt, int, 去重库更新时间, range:[0,300], step:, unit:, unitType:, desc:人脸模型,从入库开始,到去重库更新时间,人脸数据模型将会被删除*/
        },
        "uploadWithoutLicense":  true,
        /*ro, opt, bool, 无车牌的报警是否上传*/
        "panoramaTargetRemoveDuplicate":  false,
        /*ro, opt, bool, 全景目标去重是否使能, desc:默认关闭.全景去重功能开启后，通过上下关联功能，将关联成功的目标保留细节路人脸和全景路人体（细节路的人体和全景路人脸丢弃，不上传）,通过通道1上传*/
        "miscatchFilterEnabled":  false,
        /*ro, opt, bool, 误抓使能, desc:开启后保证不误抓,但是可能会漏抓。不开启不保证误抓,但是保证不漏抓,默认: false*/
        "capturingPeopleEnabled":  true
        /*ro, opt, bool, 抓拍多人, desc:非机动车载人的情况下,默认对非机动车多人均进行抓拍,抓拍多人,能保证后座的人如果能够识别,均不会漏,默认: true*/
    }
}

18. 获取混合目标抓图叠加配置能力

18.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capturePicOverlap/capabilities?format=json

18.2 输入参数

{
    "MixedTargetCapturePicOverlapCap": {
    /*req, object, 混合目标抓图叠加配置能力*/
        "overlapItemNum": {
        /*opt, object, 图片叠加元素最大数值*/
            "@max":  1
            /*req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "overlapItemId": {
        /*opt, object, 图片叠加元素Id*/
            "@min":  1,
            /*opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  "3"
            /*req, string, 最大值, range:[,]*/
        },
        "itemType": {
        /*opt, object, 图片叠加中目标属性展示能力*/
            "@opt":  "cameraNo,captureTime,positionInfo,motionDirection,jacketColor,trousersColor,jacketType,trousersType,bag,things,hat,plateNo,vehicleLogo,vehicleType,GPS,enterLeaveTime,hatStyle,cyclingType"
            /*opt, string, 图片叠加中目标属性展示能力, range:[,]*/
        },
        "targetAttribute": {
        /*opt, object, 未定义*/
            "@opt":  "motionDirection,jacketColor,trousersColor,jacketType,trousersType,bag,things,hat,plateNo,vehicleLogo,vehicleType,enterLeaveTime,hatStyle,cyclingType"
            /*opt, string, 图片叠加中目标属性展示能力, range:[,]*/
        }
    }
}

18.3 输出参数

{
    "MixedTargetCapturePicOverlapCap": {
    /*ro, req, object, 混合目标抓图叠加配置能力*/
        "overlapItemNum": {
        /*ro, req, object, 图片叠加元素最大数值*/
            "@max":  1
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "overlapItemId": {
        /*ro, req, object, 图片叠加元素Id*/
            "@min":  1,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  "3"
            /*ro, req, string, 最大值, range:[,]*/
        },
        "itemType": {
        /*ro, req, object, 图片叠加类型*/
            "@opt":  "cameraNo"
            /*ro, req, enum, 可选项, subType:string, [cameraNo#设备编号,captureTime#抓拍时间,positionInfo#监控点信息,motionDirection#运动方向,jacketColor#上衣颜色,trousersColor#下装颜色,jacketType#上衣类型,trousersType#下装类型,bag#是否背包,things#是否拎东西,hat#是否戴帽子,plateNo#车牌号,vehicleLogo#车辆主品牌,vehicleType#车辆类型,GPS#设备GPS经纬度信息,enterLeaveTime#进入离开时间,hatStyle#帽子款式,cyclingType#骑车类型,facingPupil#人脸瞳距]*/
        },
        "targetAttribute": {
        /*ro, opt, object, 图片叠加中目标属性展示能力*/
            "@opt":  "motionDirection"
            /*ro, req, enum, 图片叠加中目标属性展示能力, subType:string, [motionDirection#运动方向,jacketColor#上衣颜色,trousersColor#下装颜色,jacketType#上衣类型,trousersType#下装类型,bag#是否背包,things#是否拎东西,hat#是否戴帽子,plateNo#车牌号,vehicleLogo#车辆主品牌,vehicleType#车辆类型,hatStyle#帽子款式,cyclingType#骑车类型]*/
        }
    }
}

19. 配置混合目标抓图叠加参数

19.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capturePicOverlap?format=json

19.2 输入参数

{
    "MixedTargetCapturePicOverlap": {
    /*req, object, 混合目标抓图叠加配置*/
        "OverlapItemList": [
        /*req, array, 图片叠加元素列表, subType:object, range:[,]*/
            {
                "overlapItem": {
                /*req, object, 图片叠加元素配置*/
                    "overlapItemId":  1,
                    /*req, int, 图片叠加元素Id, range:[,], step:, unit:, unitType:*/
                    "itemType":  "cameraNo"
                    /*req, enum, 图片叠加类型, subType:string, [cameraNo#设备编号,captureTime#抓拍时间,positionInfo#监控点信息,motionDirection#运动方向,jacketColor#上衣颜色,trousersColor#下装颜色,jacketType#上衣类型,trousersType#下装类型,bag#是否背包,things#是否拎东西,hat#是否戴帽子,plateNo#车牌号,vehicleLogo#车辆主品牌,vehicleType#车辆类型,GPS#设备GPS经纬度信息,enterLeaveTime#进入离开时间,hatStyle#帽子款式,cyclingType#骑车类型,facingPupil#人脸瞳距]*/
                }
            }
        ]
    }
}

19.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

20. 获取混合目标抓图叠加参数

20.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capturePicOverlap?format=json

20.2 输入参数

无

20.3 输出参数

{
    "MixedTargetCapturePicOverlap": {
    /*ro, req, object, 混合目标抓图叠加配置*/
        "OverlapItemList": [
        /*ro, req, array, 图片叠加元素列表, subType:object, range:[,]*/
            {
                "overlapItem": {
                /*ro, req, object, 图片叠加元素配置*/
                    "overlapItemId":  1,
                    /*ro, req, int, 图片叠加元素Id, range:[,], step:, unit:, unitType:*/
                    "itemType":  "cameraNo"
                    /*ro, req, enum, 图片叠加类型, subType:string, [cameraNo#设备编号,captureTime#抓拍时间,positionInfo#监控点信息,motionDirection#运动方向,jacketColor#上衣颜色,trousersColor#下装颜色,jacketType#上衣类型,trousersType#下装类型,bag#是否背包,things#是否拎东西,hat#是否戴帽子,plateNo#车牌号,vehicleLogo#车辆主品牌,vehicleType#车辆类型,GPS#设备GPS经纬度信息,enterLeaveTime#进入离开时间,hatStyle#帽子款式,cyclingType#骑车类型,facingPuil#人脸瞳距]*/
                }
            }
        ]
    }
}

21. 获取混合目标抓图配置能力

21.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capturePicture/capabilities?format=json

21.2 输入参数

无

21.3 输出参数

{
    "MixedTargetCapturePictureCap": {
    /*ro, req, object, 抓图配置能力*/
        "pictureTargetOverlapEnabled":  "true,false",
        /*ro, req, string, 报警抓图叠加目标信息, range:[,]*/
        "targetOverlapEnabled":  "true,false",
        /*ro, req, string, 码流叠加目标信息, range:[,]*/
        "pictureQualityType": {
        /*ro, req, object, 抓图质量类型*/
            "@opt":  "best,good,general",
            /*ro, req, string, 取值范围, range:[,]*/
            "@def":  "good"
            /*ro, req, string, 默认值, range:[,]*/
        },
        "backgroundPictureUpload":  "true,false",
        /*ro, req, string, 背景图片上传, range:[,]*/
        "BackgroundpictureResolution": {
        /*ro, req, object, 背景图片分辨率：1280*/
            "resolutionWidth": {
            /*ro, req, object, 背景图片分辨率宽度选择*/
                "@opt":  "1280,1920",
                /*ro, req, string, 取值范围, range:[,]*/
                "@def":  "1920"
                /*ro, req, string, 默认值, range:[,]*/
            },
            "resolutionHeight": {
            /*ro, req, object, 背景图片分辨率高度选择*/
                "@opt":  "720,960,1080",
                /*ro, req, string, 取值范围, range:[,]*/
                "@def":  "1080"
                /*ro, req, string, 默认值, range:[,]*/
            }
        },
        "FaceTargetPictureInfo": {
        /*ro, req, object, 人脸目标抓图相关配置能力*/
            "targetPictureType": {
            /*ro, req, object, 目标抓图类型*/
                "@opt":  "custom,head,headShoulders,human",
                /*ro, req, string, 取值范围, range:[,], desc:custom-自定义,head-大头照,headShoulders-头肩照,human-全身照*/
                "@def":  "custom"
                /*ro, req, string, 默认值, range:[,]*/
            },
            "TargetPictureSize": {
            /*ro, opt, object, 目标图抓图大小, desc:当targetPictureType == custom时生效*/
                "widthRatio": {
                /*ro, req, object, 目标抓图宽度比例倍数*/
                    "@min":  1.0,
                    /*ro, req, float, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  5.0
                    /*ro, req, float, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "upperPartHeightRatio": {
                /*ro, req, object, 目标抓图上半部分高度比例倍数, desc:目标下巴以上部分*/
                    "@min":  1.0,
                    /*ro, req, float, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  3.0
                    /*ro, req, float, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "underPartHeightRatio": {
                /*ro, req, object, 目标抓图下半部分高度比例倍数, desc:目标下巴以下部分*/
                    "@min":  0.0,
                    /*ro, req, float, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  10.0
                    /*ro, req, float, 最大值, range:[,], step:, unit:, unitType:*/
                }
            },
            "fixedPixelEnable":  "true,false",
            /*ro, opt, string, 目标抓图固定像素使能, range:[,]*/
            "heightPixel": {
            /*ro, opt, object, 目标抓图高度像素值, desc:当fixedPixelEnable == true时生效,目标抓图高度像素值*/
                "@min":  50,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1000,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  100
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "HeadTargetPictureSizeCap": {
            /*ro, opt, object, 大头照尺寸能力*/
                "widthRatio":  1.5,
                /*ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:*/
                "upperPartHeightRatio":  1.5,
                /*ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分*/
                "underPartHeightRatio":  1.5
                /*ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分*/
            },
            "HeadShouldersTargetPictureSizeCap": {
            /*ro, opt, object, 上半身照即头肩照尺寸能力*/
                "widthRatio":  3.0,
                /*ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:*/
                "upperPartHeightRatio":  2.0,
                /*ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分*/
                "underPartHeightRatio":  3.5
                /*ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分*/
            },
            "HumanShouldersTargetPictureSizeCap": {
            /*ro, opt, object, 全身照尺寸能力*/
                "widthRatio":  3.0,
                /*ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:*/
                "upperPartHeightRatio":  2.0,
                /*ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分*/
                "underPartHeightRatio":  3.5
                /*ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分*/
            }
        },
        "ROIRegionListCap": {
        /*ro, opt, object, ROI区域列表能力*/
            "id": {
            /*ro, req, object, 索引*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "enabled":  "true,false",
            /*ro, req, string, 使能, range:[,]*/
            "name":  "Region1",
            /*ro, opt, string, 区域名称, range:[,]*/
            "qualityLevelOfROI": {
            /*ro, req, object, 质量等级*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "RegionCap": {
            /*ro, opt, object, 规则区域能力*/
                "minSize":  3,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        },
        "linkHumanTrack":  "true,false",
        /*ro, opt, string, 报警抓图叠加目标, range:[,]*/
        "FaceBeautification": {
        /*ro, opt, object, 人脸美颜*/
            "enabled":  "true,false",
            /*ro, opt, string, 是否开启美颜功能, range:[,]*/
            "level": {
            /*ro, opt, object, 美颜级别配置范围*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  50
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            }
        },
        "faceEnhancement":  "true,false",
        /*ro, opt, string, 是否开启人脸增强, range:[,], desc:增强人脸抓拍小图的清晰度*/
        "vehicleTrackOverlay":  "true,false",
        /*ro, opt, string, 报警抓图叠加车辆目标, range:[,]*/
        "PlateEnhancement": {
        /*ro, opt, object, 车牌增强, desc:增强车牌抓拍后的效果*/
            "enabled":  "true,false",
            /*ro, opt, string, 是否开启车牌增强, range:[,]*/
            "level": {
            /*ro, opt, object, 车牌增强级别配置范围*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  50
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            }
        },
        "faceHumanSharedBackground":  "true,false",
        /*ro, opt, string, 人脸人体是否共用同一张背景图, range:[,], desc:默认:flase,不共用*/
        "humanMergePicture":  "true,false",
        /*ro, opt, string, 报警是否上传人体融合细节小图, range:[,], desc:默认:flase,不上传*/
        "framesCapture":  "true,false",
        /*ro, opt, string, 同帧抓拍使能, range:[,], desc:开启后,人脸小图、人体小图与背景图属于同一帧抓拍,默认:flase*/
        "facePictureUpload":  "true,false"
        /*ro, opt, string, 人脸小图是否上传, range:[,], desc:人脸小图为只有五官的特征图，无该字段默认上传*/
    }
}

22. 获取混合目标抓图配置

22.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capturePicture?format=json

22.2 输入参数

无

22.3 输出参数

{
    "MixedTargetCapturePicture": {
    /*ro, req, object, 抓图配置参数*/
        "pictureTargetOverlapEnabled":  true,
        /*ro, req, bool, 报警抓图叠加目标信息*/
        "targetOverlapEnabled":  true,
        /*ro, req, bool, 码流叠加目标信息*/
        "pictureQualityType":  "good",
        /*ro, req, enum, 抓图质量类型, subType:string, [best#最好,good#较好,general#一般]*/
        "backgroundPictureUpload":  true,
        /*ro, req, bool, 背景图片上传*/
        "BackgroundpictureResolution": {
        /*ro, req, object, 背景图片分辨率*/
            "resolutionWidth":  1920,
            /*ro, req, enum, 背景图片分辨率宽度, subType:int, [1920#1920]*/
            "resolutionHeight":  1080
            /*ro, req, enum, 背景图片分辨率高度, subType:int, [1080#1080]*/
        },
        "FaceTargetPictureInfo": {
        /*ro, req, object, 人脸目标抓图相关配置*/
            "targetPictureType":  "custom",
            /*ro, opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#头肩照,human#全身照]*/
            "TargetPictureSize": {
            /*ro, opt, object, 目标图抓图大小, desc:当targetPictureType == custom时生效*/
                "widthRatio":  1.0,
                /*ro, req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:*/
                "upperPartHeightRatio":  3.0,
                /*ro, req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分*/
                "underPartHeightRatio":  3.0
                /*ro, req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分*/
            },
            "fixedPixelEnable":  true,
            /*ro, opt, bool, 目标抓图固定像素使能*/
            "heightPixel":  100
            /*ro, opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, desc:当fixedPixelEnable == true时生效*/
        },
        "BackgroundpictureROI": {
        /*ro, opt, object, 背景图ROI*/
            "enabled":  true,
            /*ro, opt, bool, 使能*/
            "smoothLevel":  0,
            /*ro, opt, int, ROI平滑等级, range:[,], step:, unit:, unitType:, desc:除ROI区域外的图像平滑等级*/
            "ROIRegionList": [
            /*ro, opt, array, ROI区域列表, subType:object, range:[,]*/
                {
                    "id":  1,
                    /*ro, req, int, 索引, range:[,], step:, unit:, unitType:, desc:从1开始*/
                    "enabled":  true,
                    /*ro, req, bool, 使能*/
                    "name":  "Region1",
                    /*ro, req, string, 区域名称, range:[,]*/
                    "qualityLevelOfROI":  1,
                    /*ro, opt, int, 质量等级, range:[0,100], step:, unit:, unitType:*/
                    "Region": [
                    /*ro, opt, array, 区域坐标, subType:object, range:[3,10], desc:屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120
                            /*ro, opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ]
                }
            ]
        },
        "linkHumanTrack":  true,
        /*ro, opt, bool, 报警抓图叠加目标, desc:默认不开启*/
        "FaceBeautification": {
        /*ro, opt, object, 人脸美颜*/
            "enabled":  false,
            /*ro, opt, bool, 是否开启美颜功能*/
            "level":  50
            /*ro, opt, int, 美颜级别, range:[0,100], step:, unit:, unitType:*/
        },
        "faceEnhancement":  false,
        /*ro, opt, bool, 是否开启人脸增强, desc:增强人脸抓拍小图的清晰度,默认:false*/
        "vehicleTrackOverlay":  true,
        /*ro, opt, bool, 报警抓图叠加车辆目标, desc:默认不开启*/
        "PlateEnhancement": {
        /*ro, opt, object, 车牌增强*/
            "enabled":  true,
            /*ro, opt, bool, 是否开启车牌增强, desc:默认:false*/
            "level":  50
            /*ro, opt, int, 车牌增强级别, range:[0,100], step:, unit:, unitType:*/
        },
        "faceHumanSharedBackground":  false,
        /*ro, opt, bool, 人脸人体是否共用同一张背景图, desc:默认:flase,不共用*/
        "humanMergePicture":  false,
        /*ro, opt, bool, 报警是否上传人体融合细节小图, desc:默认:flase,不上传*/
        "framesCapture":  false,
        /*ro, opt, bool, 同帧抓拍使能, desc:true-开启,开启后,人脸小图、人体小图与背景图属于同一帧抓拍;false-不开启,人脸人体背景图实际抓拍效果最优,可能不属于同一帧;默认:flase*/
        "facePictureUpload":  true
        /*ro, opt, bool, 人脸小图是否上传, desc:true-上传，false-不上传，无该节点默认上传，人脸小图为只有五官的特征图*/
    }
}

23. 配置混合目标抓图配置

23.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/capturePicture?format=json

23.2 输入参数

{
    "MixedTargetCapturePicture": {
    /*req, object, 抓图配置参数*/
        "pictureTargetOverlapEnabled":  true,
        /*req, bool, 报警抓图叠加目标信息*/
        "targetOverlapEnabled":  true,
        /*req, bool, 码流叠加目标信息*/
        "pictureQualityType":  "good",
        /*req, enum, 抓图质量类型, subType:string, [best#最好,good#较好,general#一般]*/
        "backgroundPictureUpload":  true,
        /*req, bool, 背景图片上传*/
        "BackgroundpictureResolution": {
        /*req, object, 背景图片分辨率*/
            "resolutionWidth":  1920,
            /*req, enum, 背景图片分辨率宽度, subType:int, [1280#1280,1920#1920]*/
            "resolutionHeight":  1080
            /*req, enum, 背景图片分辨率高度, subType:int, [720#720,960#960,1080#1080]*/
        },
        "FaceTargetPictureInfo": {
        /*req, object, 人脸目标抓图相关配置*/
            "targetPictureType":  "custom",
            /*opt, enum, 目标抓图类型, subType:string, [custom#自定义,head#大头照,headShoulders#头肩照,human#全身照]*/
            "TargetPictureSize": {
            /*opt, object, 目标图抓图大小, desc:当targetPictureType == custom时生效*/
                "widthRatio":  1.0,
                /*req, float, 目标抓图宽度比例倍数, range:[,], step:, unit:, unitType:*/
                "upperPartHeightRatio":  3.0,
                /*req, float, 目标抓图上半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以上部分*/
                "underPartHeightRatio":  3.0
                /*req, float, 目标抓图下半部分高度比例倍数, range:[,], step:, unit:, unitType:, desc:目标下巴以下部分*/
            },
            "fixedPixelEnable":  true,
            /*opt, bool, 目标抓图固定像素使能*/
            "heightPixel":  100
            /*opt, int, 目标抓图高度像素值, range:[,], step:, unit:, unitType:, desc:当fixedPixelEnable == true时生效*/
        },
        "BackgroundpictureROI": {
        /*opt, object, 背景图ROI*/
            "enabled":  true,
            /*opt, bool, 使能*/
            "smoothLevel":  0,
            /*opt, int, ROI平滑等级, range:[,], step:, unit:, unitType:, desc:除ROI区域外的图像平滑等级*/
            "ROIRegionList": [
            /*opt, array, ROI区域列表, subType:object, range:[,]*/
                {
                    "id":  1,
                    /*req, int, 索引, range:[,], step:, unit:, unitType:, desc:从1开始*/
                    "enabled":  true,
                    /*req, bool, 使能*/
                    "name":  "Region1",
                    /*req, string, 区域名称, range:[,]*/
                    "qualityLevelOfROI":  1,
                    /*opt, int, 质量等级, range:[0,100], step:, unit:, unitType:*/
                    "Region": [
                    /*opt, array, 区域坐标, subType:object, range:[3,10], desc:屏幕左下角为坐标原点*/
                        {
                            "x":  0.120,
                            /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                            "y":  0.120
                            /*opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        }
                    ]
                }
            ]
        },
        "linkHumanTrack":  true,
        /*opt, bool, 报警抓图叠加目标, desc:默认不开启*/
        "FaceBeautification": {
        /*opt, object, 人脸美颜*/
            "enabled":  false,
            /*opt, bool, 是否开启美颜功能*/
            "level":  50
            /*opt, int, 美颜级别, range:[0,100], step:, unit:, unitType:*/
        },
        "faceEnhancement":  false,
        /*opt, bool, 是否开启人脸增强, desc:增强人脸抓拍小图的清晰度,默认:false*/
        "vehicleTrackOverlay":  true,
        /*opt, bool, 报警抓图叠加车辆目标, desc:默认不开启*/
        "PlateEnhancement": {
        /*opt, object, 车牌增强*/
            "enabled":  true,
            /*opt, bool, 是否开启车牌增强, desc:默认:false*/
            "level":  50
            /*opt, int, 车牌增强级别, range:[0,100], step:, unit:, unitType:*/
        },
        "faceHumanSharedBackground":  false,
        /*opt, bool, 人脸人体是否共用同一张背景图, desc:默认:flase,不共用*/
        "humanMergePicture":  false,
        /*opt, bool, 报警是否上传人体融合细节小图, desc:默认:flase,不上传*/
        "framesCapture":  false,
        /*opt, bool, 同帧抓拍使能, desc:true-开启,开启后,人脸小图、人体小图与背景图属于同一帧抓拍;false-不开启,人脸人体背景图实际抓拍效果最优,可能不属于同一帧;默认:flase*/
        "facePictureUpload":  true
        /*opt, bool, 人脸小图是否上传, desc:true-上传，false-不上传，无该节点默认上传，人脸小图为只有五官的特征图*/
    }
}

23.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

24. 获取混合目标检测OSD计数自动清零能力

24.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay/OSDAutoReset/capabilities?format=json

24.2 输入参数

无

24.3 输出参数

{
    "OSDAutoResetCap": {
    /*ro, opt, object, 自动清零参数能力*/
        "enabled": {
        /*ro, req, object, 自动清零总使能*/
            "@opt": [true, false]
            /*ro, req, array, 自动清零总能力, subType:bool, range:[,]*/
        },
        "type": {
        /*ro, opt, object, 自动清零方式*/
            "@opt": ["daily", "weekly", "monthly"],
            /*ro, req, array, 选项, subType:string, range:[,]*/
            "@def":  "daily"
            /*ro, opt, string, 默认值, range:[,]*/
        }
    }
}

25. 设置混合目标检测OSD计数自动清零

25.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay/OSDAutoReset?format=json

25.2 输入参数

{
    "OSDAutoReset": {
    /*opt, object, 自动清零参数*/
        "enabled":  true,
        /*req, bool, 自动清零总能力*/
        "type":  "daily"
        /*req, enum, 自动清零方式, subType:string, [daily#按每天00:00:00清零,weekly#每周周一的00:00:00清零,monthly#每月1号的00:00:00清零]*/
    }
}

25.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

26. 获取混合目标检测OSD计数自动清零参数

26.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay/OSDAutoReset?format=json

26.2 输入参数

无

26.3 输出参数

{
    "OSDAutoReset": {
    /*ro, opt, object, 自动清零参数*/
        "enabled":  true,
        /*ro, req, bool, 自动清零总能力*/
        "type":  "daily"
        /*ro, req, enum, 自动清零方式, subType:string, [daily#按每天00:00:00清零,weekly#每周周一的00:00:00清零,monthly#每月1号的00:00:00清零]*/
    }
}

27. 控制混合目标检测OSD计数手动清零

27.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay/OSDReset?format=json

27.2 输入参数

无

27.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

28. 获取混合目标OSD叠加配置能力

28.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay/capabilities?format=json

28.2 输入参数

无

28.3 输出参数

{
    "MixedTargetOverlayCap": {
    /*ro, req, object, OSD叠加混合目标能力*/
        "enabled": {
        /*ro, opt, object, OSD是否叠加混合目标;重新使能OSD清零*/
            "@opt":  "true,false",
            /*ro, opt, string, 选项, range:[,]*/
            "@def":  false
            /*ro, opt, bool, 默认值*/
        },
        "x": {
        /*ro, opt, object, x坐标;范围为0.000~1;坐标系为左上角原点*/
            "@min":  0.000,
            /*ro, opt, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
            "@max":  1.000
            /*ro, opt, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
        },
        "y": {
        /*ro, opt, object, y坐标;范围为0.000~1;坐标系为左上角原点*/
            "@min":  0.000,
            /*ro, opt, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
            "@max":  1.000
            /*ro, opt, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
        },
        "fontSize": {
        /*ro, opt, object, 字符叠加大小*/
            "@opt": ["16*16", "32*32", "48*48", "64*64", "96*96", "adaptive"]
            /*ro, opt, array, 选填;adaptive-自动, subType:string, range:[,]*/
        },
        "isSupportOSDReset":  true,
        /*ro, opt, bool, 返回为true;表示支持混合目标检测OSD计数手动清零;/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/overlay/OSDReset?format=json*/
        "isSupportOSDAutoReset":  true
        /*ro, opt, bool, 返回为true;表示支持混合目标检测OSD计数自动清零;/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection/overlay/OSDAutoReset?format=json*/
    }
}

29. 获取混合目标OSD叠加配置

29.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay?format=json

29.2 输入参数

无

29.3 输出参数

{
    "MixedTargetOverlay": {
    /*ro, req, object, OSD叠加混合目标参数*/
        "enabled":  false,
        /*ro, opt, bool, OSD是否叠加混合目标;重新使能OSD清零*/
        "x":  0.120,
        /*ro, opt, float, x坐标;范围为0.000~1;坐标系为左上角原点, range:[0.000,1.000], step:, unit:, unitType:*/
        "y":  0.120,
        /*ro, opt, float, y坐标;范围为0.000~1;坐标系为左上角原点, range:[0.000,1.000], step:, unit:, unitType:*/
        "fontSize":  "adaptive"
        /*ro, opt, enum, 字符叠加大小, subType:string, [16*16#16*16,32*32#32*32,48*48#48*48,64*64#64*64,96*96#96*96,adaptive#自动]*/
    }
}

30. 设置混合目标OSD叠加配置

30.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/mixedTargetDetection/overlay?format=json

30.2 输入参数

{
    "MixedTargetOverlay": {
    /*req, object, OSD叠加混合目标参数*/
        "enabled":  false,
        /*opt, bool, OSD是否叠加混合目标;重新使能OSD清零*/
        "x":  0.120,
        /*opt, float, x坐标;范围为0.000~1;坐标系为左上角原点, range:[0.000,1.000], step:, unit:, unitType:*/
        "y":  0.120,
        /*opt, float, y坐标;范围为0.000~1;坐标系为左上角原点, range:[0.000,1.000], step:, unit:, unitType:*/
        "fontSize":  "adaptive"
        /*opt, enum, 字符叠加大小, subType:string, [16*16#16*16,32*32#32*32,48*48#48*48,64*64#64*64,96*96#96*96,adaptive#自动]*/
    }
}

30.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}


异常行为识别

1. 获取专业智能行为检测能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RuleInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 规则信息, attr:version{req, string, 协议版本, range:[,]}-->
  <ruleId opt="1,2,3,4,5,6,7,8">
    <!--ro, req, string, 规则ID, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </ruleId>
  <ruleName min="1" max="10">
    <!--ro, req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ruleName>
  <combinedRuleId opt="15,16">
    <!--ro, req, string, 规则ID, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </combinedRuleId>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <ruleType opt="region,line,none">
    <!--ro, req, enum, 规则类型, subType:string, [region#区域,line#线,none#不支持规则区域配置], attr:opt{req, string, 取值范围, range:[,]}-->region
  </ruleType>
  <LineDetectionParam>
    <!--ro, opt, object, 越界侦测-->
    <detectionTarget opt="all,human,vehicle,human_vehicle">
      <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], attr:opt{req, string, 取值范围, range:[,]}, desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
    </detectionTarget>
    <directionSensitivity opt="left-right,right-left,any" def="any">
      <!--ro, req, enum, 方向灵敏度, subType:string, [left-right#左右,right-left#右左,any#任意], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->left-right
    </directionSensitivity>
    <isSupportHumanMisinfoFilter>
      <!--ro, opt, bool, 人体去误报-->true
    </isSupportHumanMisinfoFilter>
    <isSupportVehicleMisinfoFilter>
      <!--ro, opt, bool, 车辆去误报使能-->true
    </isSupportVehicleMisinfoFilter>
    <sensitivity min="1" max="100" default="50">
      <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </sensitivity>
    <priority opt="high,middle,low" def="low">
      <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->high
    </priority>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </LineDetectionParam>
  <FieldDetectionParam>
    <!--ro, opt, object, 区域入侵-->
    <durationTime min="0" max="100" def="5">
      <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <sensitivityLevel min="1" max="100" def="50">
      <!--ro, req, int, 入侵灵敏度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivityLevel>
    <detectionTarget opt="all,human,vehicle,human_vehicle">
      <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], attr:opt{req, string, 取值范围, range:[,]}, desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
    </detectionTarget>
    <isSupportHumanMisinfoFilter>
      <!--ro, opt, bool, 人体去误报-->true
    </isSupportHumanMisinfoFilter>
    <isSupportVehicleMisinfoFilter>
      <!--ro, opt, bool, 车辆去误报-->true
    </isSupportVehicleMisinfoFilter>
    <sensitivity>
      <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
    </sensitivity>
    <priority opt="high,middle,low" def="low">
      <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->high
    </priority>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </FieldDetectionParam>
  <RegionEntranceParam>
    <!--ro, opt, object, 进入区域-->
    <detectionTarget opt="all,human,vehicle,human_vehicle">
      <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], attr:opt{req, string, 取值范围, range:[,]}, desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
    </detectionTarget>
    <isSupportHumanMisinfoFilter>
      <!--ro, opt, bool, 人体去误报-->true
    </isSupportHumanMisinfoFilter>
    <isSupportVehicleMisinfoFilter>
      <!--ro, opt, bool, 车辆去误报-->true
    </isSupportVehicleMisinfoFilter>
    <sensitivity>
      <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
    </sensitivity>
    <priority opt="high,middle,low" def="low">
      <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->high
    </priority>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </RegionEntranceParam>
  <RegionExitingParam>
    <!--ro, opt, object, 离开区域-->
    <detectionTarget opt="all,human,vehicle,human_vehicle">
      <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], attr:opt{req, string, 取值范围, range:[,]}, desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
    </detectionTarget>
    <isSupportHumanMisinfoFilter>
      <!--ro, opt, bool, 人体去误报-->true
    </isSupportHumanMisinfoFilter>
    <isSupportVehicleMisinfoFilter>
      <!--ro, opt, bool, 车辆去误报-->true
    </isSupportVehicleMisinfoFilter>
    <sensitivity min="1" max="100" def="50">
      <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <priority opt="high,middle,low" def="low">
      <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->high
    </priority>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </RegionExitingParam>
  <LoiteringParam>
    <!--ro, opt, object, 徘徊侦测-->
    <durationTime min="1" max="100" def="5">
      <!--ro, req, int, 持续时间, range:[1,100], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <sensitivity min="1" max="100" def="50">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </LoiteringParam>
  <GroupParam>
    <!--ro, opt, object, 人员聚集-->
    <populDensity min="1" max="10">
      <!--ro, opt, int, 人口密度, range:[1,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </populDensity>
    <durationTime min="1" max="10" def="1">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <interval min="1" max="10" def="1">
      <!--ro, opt, int, 报警间隔时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </interval>
    <threshold min="1" max="10" def="1">
      <!--ro, opt, int, 人数阀值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </threshold>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </GroupParam>
  <PeopleNumChangeParam>
    <!--ro, opt, object, 人数变化-->
    <peopleNumThreshold min="1" max="10" default="null">
      <!--ro, opt, int, 人数阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </peopleNumThreshold>
    <detectMode opt="greaterthan,lessThan,equal,notEqual">
      <!--ro, opt, enum, 检测模式, subType:string, [greaterthan#大于,lessThan#小于,equal#等于,notEqual#不等于], attr:opt{req, string, 取值范围, range:[,]}-->greaterthan
    </detectMode>
    <noneStateEffectiveEnabled>
      <!--ro, opt, bool, 使能-->true
    </noneStateEffectiveEnabled>
    <durationTime min="1" max="10" default="null">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </durationTime>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </PeopleNumChangeParam>
  <SpacingChangeParam>
    <!--ro, opt, object, 间距变化-->
    <spacingThreshold min="1" max="10" default="null">
      <!--ro, opt, int, 间隔阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </spacingThreshold>
    <detectMode>
      <!--ro, opt, enum, 检测模式, subType:string, [greaterthan#大于,lessThan#小于]-->greaterthan
    </detectMode>
    <durationTime min="1" max="10" default="null">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </durationTime>
  </SpacingChangeParam>
  <ViolentMotionParam>
    <!--ro, opt, object, 剧烈运动-->
    <sensitivity min="1" max="10" default="null">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </sensitivity>
    <durationTime min="1" max="10" def="1">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <interval min="1" max="10" def="1">
      <!--ro, opt, int, 报警间隔时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </interval>
    <mode opt="video,audio" def="1">
      <!--ro, opt, enum, 模式, subType:string, [video#视频模式(默认),videoAndAudio#视音频模式], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->video
    </mode>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </ViolentMotionParam>
  <LeavePositionParam>
    <!--ro, opt, object, 离岗-->
    <leaveDelay min="1" max="3600" def="60">
      <!--ro, opt, int, 离岗时间, range:[1,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </leaveDelay>
    <onPosition min="1" max="10" default="1">
      <!--ro, opt, int, 在岗人数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}, desc:算法返回的在岗人数-->1
    </onPosition>
    <mode opt="leavePosition,sleep,leavePositionAndSleep,onAndLeavePosition" def="1">
      <!--ro, opt, enum, 模式, subType:string, [leavePosition#离岗(默认),sleep#睡觉,leavePositionAndSleep#离岗&睡觉,onAndLeavePosition#在离岗], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:onAndLeavePosition-在离岗,该模式指的是配置在岗人数2人,1人离开,触发离岗leavePosition,设备上报离岗;画面恢复到两个人时,报警才会上报在岗onPosition的模式-->leavePosition
    </mode>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
    <personType opt="single,double" def="double">
      <!--ro, opt, enum, 岗人数类型, subType:string, [single#单人值岗,double#双人值岗], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->single
    </personType>
    <sleepDelay min="1" max="10" def="1">
      <!--ro, opt, int, 睡觉时间, range:[1,1800], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->120
    </sleepDelay>
    <alarmFrames min="1" max="10">
      <!--ro, opt, int, 报警帧数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:设备分析了多少帧后才上报报警-->1
    </alarmFrames>
    <stackPersonCountEnabled opt="true,false" def="true">
      <!--ro, opt, bool, 是否进行OSD叠加使能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:码流中每个规则区域中是否进行实际人数的OSD叠加-->true
    </stackPersonCountEnabled>
    <stackPersonPositionX>
      <!--ro, opt, int, 人数显示OSD预览位置X坐标, range:[,], step:, unit:, unitType:, desc:依赖于stackPersonCountEnabled节点支持配置-->1
    </stackPersonPositionX>
    <stackPersonPositionY>
      <!--ro, opt, int, 人数显示OSD预览位置y坐标, range:[,], step:, unit:, unitType:, desc:依赖于stackPersonCountEnabled节点支持配置-->1
    </stackPersonPositionY>
    <sensitivity min="0" max="10" def="0">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
    </sensitivity>
  </LeavePositionParam>
  <FailDownParam>
    <!--ro, opt, object, 倒地-->
    <durationTime min="1" max="10" default="null">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </durationTime>
    <sensitivity min="1" max="10" def="1">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <heightThreshold min="1" max="10" default="null">
      <!--ro, opt, int, 高度阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </heightThreshold>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
    <interval min="4" max="600" def="1">
      <!--ro, opt, int, 报警间隔时间, range:[4,600], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </interval>
  </FailDownParam>
  <RunningParam>
    <!--ro, opt, object, 奔跑检测-->
    <speed min="1" max="10" default="null">
      <!--ro, opt, int, 速度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </speed>
    <durationTime min="1" max="10" def="1">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <sensitivity min="1" max="10" def="1">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->&gt; true
    </stackRule>
    <mode opt="single,many">
      <!--ro, opt, string, 奔跑模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </mode>
    <peopleNum min="1" max="50" def="1">
      <!--ro, opt, int, 奔跑人数, range:[1,50], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
    </peopleNum>
  </RunningParam>
  <RetentionParam>
    <!--ro, opt, object, 滞留-->
    <durationTime min="1" max="10" default="null">
      <!--ro, req, int, 滞留时间, range:[60,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1800
    </durationTime>
    <mode opt="single,any" def="any">
      <!--ro, opt, enum, 模式, subType:string, [single#单人模式,any#任意模式], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->single
    </mode>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </RetentionParam>
  <RapidMoveParam>
    <!--ro, opt, object, 快速移动-->
    <rapidMoveMode opt="pixels,actualSize">
      <!--ro, opt, enum, 快速移动模式, subType:string, [pixels#像素,actualSize#实际大小], attr:opt{req, string, 取值范围, range:[,]}-->pixels
    </rapidMoveMode>
    <distanceThreshold min="1" max="20">
      <!--ro, opt, int, 距离阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:距离  1.像素1-10 2.实际尺寸1-20-->1
    </distanceThreshold>
  </RapidMoveParam>
  <ParkingParam>
    <!--ro, opt, object, 停车-->
    <durationTime min="5" max="100">
      <!--ro, req, int, 持续时间, range:[5,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->5
    </durationTime>
  </ParkingParam>
  <UnattendedBaggageParam>
    <!--ro, opt, object, 无人值守行李参数-->
    <durationTime min="5" max="100" def="5">
      <!--ro, req, int, 持续时间, range:[5,100], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
    </durationTime>
  </UnattendedBaggageParam>
  <AttendedBaggageParam>
    <!--ro, opt, object, 行李托运参数-->
    <durationTime min="5" max="100" def="5">
      <!--ro, req, int, 持续时间, range:[5,100], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
    </durationTime>
  </AttendedBaggageParam>
  <AdvReachHightParam>
    <!--ro, opt, object, 折线攀高-->
    <crossDirection opt="bothDirection,leftGoRight,rightGoLeft">
      <!--ro, opt, enum, 跨越方向, subType:string, [bothDirection#双向,leftGoRight#从左到右,rightGoLeft#从右到左], attr:opt{req, string, 取值范围, range:[,]}-->bothDirection
    </crossDirection>
  </AdvReachHightParam>
  <SituationAnalysisParam>
    <!--ro, opt, object, 态势分析-->
    <peopleNumThreshold>
      <!--ro, opt, int, 人数阀值, range:[,], step:, unit:, unitType:-->1
    </peopleNumThreshold>
    <stackRule>
      <!--ro, opt, bool, 报警规则框是否叠加-->true
    </stackRule>
  </SituationAnalysisParam>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
  </eventType>
  <GetUpParam>
    <!--ro, opt, object, 离床检测参数-->
    <durationTime min="1" max="10">
      <!--ro, opt, int, 触发起床报警阈值, range:[1,100], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <mode opt="overBed,areaMove,sitting">
      <!--ro, opt, enum, 起身检测模式, subType:string, [overBed#大床通铺,areaMove#高低铺,sitting#大床通铺坐立起身], attr:opt{req, string, 取值范围, range:[,]}-->overBed
    </mode>
    <sensitivity min="1" max="100" def="60">
      <!--ro, opt, int, 灵敏度参数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
  </GetUpParam>
  <ToiletTarryParam>
    <!--ro, opt, object, 如厕超时-->
    <durationTime min="1" max="3600" def="120">
      <!--ro, opt, int, 如厕超时时间, range:[1,3600], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->5
    </durationTime>
  </ToiletTarryParam>
  <SizeFilter>
    <!--ro, opt, object, 尺寸过滤器-->
    <enabled opt="true,false">
      <!--ro, req, string, 使能, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </enabled>
    <mode opt="pixels,actualSize">
      <!--ro, req, enum, 模式, subType:string, [pixels#像素,actualSize#实际大小], attr:opt{req, string, 取值范围, range:[,]}-->pixels
    </mode>
    <MaxObjectSize>
      <!--ro, opt, object, 最大尺寸, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
      <width>
        <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
      </width>
      <height>
        <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
      </height>
    </MaxObjectSize>
    <MinObjectSize>
      <!--ro, opt, object, 最小尺寸, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
      <width>
        <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
      </width>
      <height>
        <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
      </height>
    </MinObjectSize>
    <ObjectSizeList size="4">
      <!--ro, opt, object, 目标尺寸列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <ObjectSize>
        <!--ro, opt, object, 仅返回支持的检测类型的默认值-->
        <detectionTarget>
          <!--ro, opt, string, 过滤目标, range:[,], desc:节点中带_符号的代表支持多选项,all代表全部,human代表人,vehicle代表车,human_vehicle代表人与车-->test
        </detectionTarget>
        <MaxObjectSize>
          <!--ro, opt, object, 最大尺寸, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
          <width>
            <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
          </width>
          <height>
            <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
          </height>
        </MaxObjectSize>
        <MinObjectSize>
          <!--ro, opt, object, 最小尺寸, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
          <width>
            <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
          </width>
          <height>
            <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
          </height>
        </MinObjectSize>
      </ObjectSize>
    </ObjectSizeList>
  </SizeFilter>
  <RuleRegion>
    <!--ro, opt, object, 规则区域-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
    <minRegionCoordinatesNum>
      <!--ro, opt, int, 最小节点个数, range:[,], step:, unit:, unitType:-->1
    </minRegionCoordinatesNum>
    <maxRegionCoordinatesNum>
      <!--ro, opt, int, 最大节点个数, range:[,], step:, unit:, unitType:-->1
    </maxRegionCoordinatesNum>
  </RuleRegion>
  <backgroundSuppression opt="open,close,selfAdapt">
    <!--ro, opt, enum, 背景干扰抑制, subType:string, [open#开启,close#关闭,selfAdapt#自适应], attr:opt{req, string, 取值范围, range:[,]}-->open
  </backgroundSuppression>
  <KeyPersonGetUpParam>
    <!--ro, opt, object, 重点人员起身-->
    <durationTime min="1" max="100" def="20">
      <!--ro, opt, int, 触发起床报警阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <sensitivity min="1" max="100" def="60">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <mode opt="overBed,areaMove,sitting" def="overBed">
      <!--ro, opt, enum, 模式, subType:string, [overBed#大床通铺模式,areaMove#高低铺模式,sitting#大床通铺坐立起身模式], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->overBed
    </mode>
  </KeyPersonGetUpParam>
  <YardTarryParam>
    <!--ro, opt, object, 放风场滞留-->
    <durationTime min="1" max="600" def="20">
      <!--ro, opt, int, 放风场滞留时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
  </YardTarryParam>
  <StandUpParam>
    <!--ro, opt, object, 站立-->
    <sensitivity min="1" max="100" def="60">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <heightThreshold min="0" max="250" def="130">
      <!--ro, opt, int, 高度阈值, range:[,], step:, unit:cm, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </heightThreshold>
    <durationTime min="1" max="3600" def="300">
      <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
  </StandUpParam>
  <PlayCellphoneParam>
    <!--ro, opt, object, 玩手机检测-->
    <durationTime min="1" max="600" def="20">
      <!--ro, opt, int, 玩手机持续时间, range:[1,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </durationTime>
    <stackTarget opt="true,false">
      <!--ro, opt, bool, 报警目标框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, opt, bool, 报警规则框是否叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </stackRule>
  </PlayCellphoneParam>
  <AudioAbnormalParam>
    <!--ro, opt, object, 声强突变参数能力-->
    <audioMode opt="sensitivity,decibel">
      <!--ro, opt, string, 声强突变检测模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </audioMode>
    <sensitivity min="1" max="100" def="60">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <decibel min="1" max="300" def="70">
      <!--ro, opt, int, 分贝值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </decibel>
  </AudioAbnormalParam>
  <alarmDelay opt="0,1,2,3,4,5,6">
    <!--ro, opt, enum, 智能报警延时, subType:int, [0#5s,1#10s,2#30s,3#60s,4#120s,5#300s,6#600s], attr:opt{req, string, 取值范围, range:[,]}-->1
  </alarmDelay>
  <streetBehavior opt="running,group,violentMotion,failDown">
    <!--ro, opt, string, 街面行为能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:running人员奔跑,group人员聚集,violentMotion剧烈运动,failDown人员倒地-->test
  </streetBehavior>
  <workBehavior opt="playCellphone,peopleNumChange,leavePosition,retention">
    <!--ro, opt, string, 岗位行为能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:playCellphone-玩手机,peopleNumChange人数变化,leavePosition离岗,retention人员滞留-->test
  </workBehavior>
  <isSupportMultiRules>
    <!--ro, opt, bool, 是否支持同一个事件, desc:配置多个规则,默认是一个事件只能配置一个规则-->true
  </isSupportMultiRules>
  <isSupportSchedulesEventType>
    <!--ro, opt, bool, 是否按照事件类型配置布防时间, desc:也即支持配置/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/schedules中的EventList，默认按规则ID配置-->true
  </isSupportSchedulesEventType>
  <isSupportTriggerEventType>
    <!--ro, opt, bool, 是否按照事件类型配置布防联动, desc:也即配置/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/notifications中的EventList，默认按规则ID配置-->true
  </isSupportTriggerEventType>
  <analysisMode opt="realTimeMode,autoSwitchMode">
    <!--ro, opt, string, realTimeMode, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:realTimeMode-实时模式,autoSwitchMode-轮询模式，不返回该节点默认为实时模式，说明：引擎也有分析模式，设备会根据负载均衡的方式，添加到相同分析模式的引擎中-->test
  </analysisMode>
  <WorkBehaviorParam>
    <!--ro, opt, object, 岗位异常行为识别参数, desc:岗位行为和离岗不一样，岗位行为包括RuleInfo.workBehavior中opt的所以事件-->
    <interval min="2" max="1200" def="5">
      <!--ro, opt, int, 岗位行为报警间隔配置, range:[2,1200], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:单位S，范围：2-1200S,针对所有的岗位行为有效,如事件一直触发，则报警事件按照该间隔进行报警，直到上层处理该报警-->1
    </interval>
  </WorkBehaviorParam>
</RuleInfo>

2. 获取场景所有规则

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BehaviorRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 场景所有规则配置, attr:version{req, string, 协议版本, range:[,]}-->
  <sid>
    <!--ro, req, string, 场景ID, range:[,]-->test
  </sid>
  <RuleInfoList>
    <!--ro, opt, array, 规则信息列表, subType:object, range:[,]-->
    <RuleInfo>
      <!--ro, opt, object, 规则信息-->
      <ruleId>
        <!--ro, req, string, 规则ID, range:[,]-->test
      </ruleId>
      <ruleName>
        <!--ro, req, string, 规则名称, range:[,]-->test
      </ruleName>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <eventType>
        <!--ro, req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
      </eventType>
      <ruleType>
        <!--ro, req, enum, 规则类型, subType:string, [region#区域,line#线,none#不支持规则区域配置]-->region
      </ruleType>
      <LineDetectionParam>
        <!--ro, opt, object, 越界侦测-->
        <directionSensitivity>
          <!--ro, req, enum, 方向灵敏度, subType:string, [left-right#左右,right-left#右左,any#任意]-->left-right
        </directionSensitivity>
        <detectionTarget>
          <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--ro, opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--ro, opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </LineDetectionParam>
      <FieldDetectionParam>
        <!--ro, opt, object, 区域入侵-->
        <durationTime>
          <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivityLevel>
          <!--ro, req, int, 入侵灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivityLevel>
        <detectionTarget>
          <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--ro, opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--ro, opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </FieldDetectionParam>
      <RegionEntranceParam>
        <!--ro, opt, object, 进入区域-->
        <detectionTarget>
          <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--ro, opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--ro, opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </RegionEntranceParam>
      <RegionExitingParam>
        <!--ro, opt, object, 离开区域-->
        <detectionTarget>
          <!--ro, opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--ro, opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--ro, opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--ro, opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </RegionExitingParam>
      <LoiteringParam>
        <!--ro, opt, object, 徘徊侦测-->
        <durationTime>
          <!--ro, req, int, 持续时间, range:[1,100], step:, unit:s, unitType:时间-->1
        </durationTime>
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </LoiteringParam>
      <GroupParam>
        <!--ro, opt, object, 人员聚集-->
        <populDensity>
          <!--ro, opt, int, 人口密度, range:[1,10], step:, unit:, unitType:-->1
        </populDensity>
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <interval>
          <!--ro, opt, int, 报警间隔时间, range:[,], step:, unit:, unitType:-->1
        </interval>
        <threshold>
          <!--ro, opt, int, 人数阀值, range:[,], step:, unit:, unitType:-->1
        </threshold>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </GroupParam>
      <RapidMoveParam>
        <!--ro, opt, object, 快速移动-->
        <rapidMoveMode>
          <!--ro, opt, enum, 快速移动模式, subType:string, [pixels#像素,actualSize#实际大小]-->pixels
        </rapidMoveMode>
        <distanceThreshold>
          <!--ro, opt, int, 距离阈值, range:[,], step:, unit:, unitType:, desc:距离  1.像素1-10 2.实际尺寸1-20-->1
        </distanceThreshold>
      </RapidMoveParam>
      <ParkingParam>
        <!--ro, opt, object, 停车-->
        <durationTime>
          <!--ro, req, int, 持续时间, range:[5,100], step:, unit:, unitType:-->5
        </durationTime>
      </ParkingParam>
      <UnattendedBaggageParam>
        <!--ro, opt, object, 无人值守行李参数-->
        <durationTime>
          <!--ro, req, int, 持续时间, range:[5,100], step:, unit:s, unitType:时间-->5
        </durationTime>
      </UnattendedBaggageParam>
      <AttendedBaggageParam>
        <!--ro, opt, object, 行李托运参数-->
        <durationTime>
          <!--ro, req, int, 持续时间, range:[5,100], step:, unit:s, unitType:时间-->5
        </durationTime>
      </AttendedBaggageParam>
      <TeacherParam>
        <!--ro, opt, object, 教师参数-->
        <durationTime>
          <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </TeacherParam>
      <StudentParam>
        <!--ro, opt, string, 学生参数, range:[,]-->null
      </StudentParam>
      <GetUpParam>
        <!--ro, opt, object, 起床参数-->
        <durationTime>
          <!--ro, opt, int, 触发起床报警阈值, range:[1,100], step:, unit:s, unitType:时间-->1
        </durationTime>
        <mode>
          <!--ro, opt, enum, 起身检测模式, subType:string, [overBed#大床通铺,areaMove#高低铺,sitting#大床通铺坐立起身]-->overBed
        </mode>
        <sensitivity>
          <!--ro, opt, int, 灵敏度参数, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
      </GetUpParam>
      <ToiletTarryParam>
        <!--ro, opt, object, 如厕超时-->
        <durationTime>
          <!--ro, opt, int, 如厕超时时间, range:[1,3600], step:, unit:, unitType:-->5
        </durationTime>
      </ToiletTarryParam>
      <PeopleNumChangeParam>
        <!--ro, opt, object, 人数变化-->
        <peopleNumThreshold>
          <!--ro, opt, int, 人数阈值, range:[,], step:, unit:, unitType:-->1
        </peopleNumThreshold>
        <detectMode>
          <!--ro, opt, enum, 检测模式, subType:string, [greaterthan#大于,lessThan#小于,equal#等于,notEqual#不等于]-->greaterthan
        </detectMode>
        <noneStateEffectiveEnabled>
          <!--ro, opt, bool, 使能-->true
        </noneStateEffectiveEnabled>
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </PeopleNumChangeParam>
      <SpacingChangeParam>
        <!--ro, opt, object, 间距变化-->
        <spacingThreshold>
          <!--ro, opt, int, 间隔阈值, range:[,], step:, unit:, unitType:-->1
        </spacingThreshold>
        <detectMode>
          <!--ro, opt, enum, 检测模式, subType:string, [greaterthan#大于,lessThan#小于]-->greaterthan
        </detectMode>
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </SpacingChangeParam>
      <ViolentMotionParam>
        <!--ro, opt, object, 剧烈运动-->
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <interval>
          <!--ro, opt, int, 报警间隔时间, range:[,], step:, unit:, unitType:-->1
        </interval>
        <mode>
          <!--ro, opt, enum, 模式, subType:string, [video#视频模式(默认),videoAndAudio#视音频模式]-->video
        </mode>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </ViolentMotionParam>
      <LeavePositionParam>
        <!--ro, opt, object, 离岗-->
        <leaveDelay>
          <!--ro, opt, int, 离岗时间, range:[1,3600], step:, unit:s, unitType:时间-->1
        </leaveDelay>
        <onPosition>
          <!--ro, opt, int, 在岗人数, range:[,], step:, unit:, unitType:, desc:算法返回的在岗人数-->1
        </onPosition>
        <mode>
          <!--ro, opt, enum, 模式, subType:string, [leavePosition#离岗(默认),sleep#睡觉,leavePositionAndSleep#离岗&睡觉,onAndLeavePosition#在离岗], desc:onAndLeavePosition-在离岗,该模式指的是配置在岗人数2人,1人离开,触发离岗leavePosition,设备上报离岗;画面恢复到两个人时,报警才会上报在岗onPosition的模式-->leavePosition
        </mode>
        <sleepDelay>
          <!--ro, opt, int, 睡觉时间, range:[1,1800], step:, unit:s, unitType:时间-->120
        </sleepDelay>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
        <personType>
          <!--ro, opt, enum, 岗人数类型, subType:string, [single#单人值岗,double#双人值岗]-->single
        </personType>
        <alarmFrames>
          <!--ro, opt, int, 报警帧数, range:[,], step:, unit:, unitType:, desc:设备分析了多少帧后才上报报警-->1
        </alarmFrames>
        <stackPersonCountEnabled>
          <!--ro, opt, bool, 是否进行OSD叠加使能, desc:码流中每个规则区域中是否进行实际人数的OSD叠加-->true
        </stackPersonCountEnabled>
        <stackPersonPositionX>
          <!--ro, opt, int, 人数显示OSD预览位置X坐标, range:[,], step:, unit:, unitType:, desc:依赖于stackPersonCountEnabled节点支持配置-->1
        </stackPersonPositionX>
        <stackPersonPositionY>
          <!--ro, opt, int, 人数显示OSD预览位置y坐标, range:[,], step:, unit:, unitType:, desc:依赖于stackPersonCountEnabled节点支持配置-->1
        </stackPersonPositionY>
      </LeavePositionParam>
      <FailDownParam>
        <!--ro, opt, object, 倒地-->
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <heightThreshold>
          <!--ro, opt, int, 高度阈值, range:[,], step:, unit:, unitType:-->1
        </heightThreshold>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
        <interval>
          <!--ro, opt, int, 报警间隔时间, range:[4,600], step:, unit:s, unitType:时间, desc:单位秒-->4
        </interval>
      </FailDownParam>
      <RunningParam>
        <!--ro, opt, object, 奔跑-->
        <speed>
          <!--ro, opt, int, 速度, range:[,], step:, unit:, unitType:-->1
        </speed>
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
        <mode>
          <!--ro, opt, string, 奔跑模式, range:[,]-->test
        </mode>
        <peopleNum>
          <!--ro, opt, int, 奔跑人数, range:[1,50], step:, unit:, unitType:-->0
        </peopleNum>
      </RunningParam>
      <RetentionParam>
        <!--ro, opt, object, 滞留-->
        <durationTime>
          <!--ro, req, int, 滞留时间, range:[60,3600], step:, unit:s, unitType:时间-->1800
        </durationTime>
        <mode>
          <!--ro, opt, enum, 模式, subType:string, [single#单人模式,any#任意模式]-->single
        </mode>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </RetentionParam>
      <AdvReachHightParam>
        <!--ro, opt, object, 折线攀高-->
        <crossDirection>
          <!--ro, opt, enum, 跨越方向, subType:string, [bothDirection#双向,leftGoRight#从左到右,rightGoLeft#从右到左]-->bothDirection
        </crossDirection>
      </AdvReachHightParam>
      <SituationAnalysisParam>
        <!--ro, opt, object, 态势分析-->
        <peopleNumThreshold>
          <!--ro, opt, int, 人数阀值, range:[,], step:, unit:, unitType:-->1
        </peopleNumThreshold>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </SituationAnalysisParam>
      <SizeFilter>
        <!--ro, opt, object, 尺寸过滤器-->
        <enabled>
          <!--ro, req, string, 使能, range:[,]-->test
        </enabled>
        <mode>
          <!--ro, req, enum, 模式, subType:string, [pixels#像素,actualSize#实际大小]-->pixels
        </mode>
        <MaxObjectSize>
          <!--ro, opt, object, 最大尺寸, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
          <width>
            <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
          </width>
          <height>
            <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
          </height>
        </MaxObjectSize>
        <MinObjectSize>
          <!--ro, opt, object, 最小尺, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
          <width>
            <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
          </width>
          <height>
            <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
          </height>
        </MinObjectSize>
      </SizeFilter>
      <RuleRegion>
        <!--ro, opt, object, 规则区域-->
        <RegionCoordinatesList>
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </RuleRegion>
      <backgroundSuppression>
        <!--ro, opt, enum, 背景干扰抑制, subType:string, [open#开启,close#关闭,selfAdapt#自适应]-->open
      </backgroundSuppression>
      <KeyPersonGetUpParam>
        <!--ro, opt, object, 重点人员起身-->
        <durationTime>
          <!--ro, opt, int, 触发起床报警阈值, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <mode>
          <!--ro, opt, enum, 模式, subType:string, [overBed#大床通铺模式,areaMove#高低铺模式,sitting#大床通铺坐立起身模式]-->overBed
        </mode>
      </KeyPersonGetUpParam>
      <YardTarryParam>
        <!--ro, opt, object, 放风场滞留-->
        <durationTime>
          <!--ro, opt, int, 放风场滞留时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </YardTarryParam>
      <StandUpParam>
        <!--ro, opt, object, 站立-->
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <heightThreshold>
          <!--ro, opt, int, 高度阈值, range:[,], step:, unit:cm, unitType:长度-->1
        </heightThreshold>
        <durationTime>
          <!--ro, opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </StandUpParam>
      <PlayCellphoneParam>
        <!--ro, opt, object, 玩手机检测-->
        <durationTime>
          <!--ro, opt, int, 玩手机持续时间, range:[1,3600], step:, unit:s, unitType:时间-->1
        </durationTime>
        <stackTarget>
          <!--ro, opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--ro, opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </PlayCellphoneParam>
      <AudioAbnormalParam>
        <!--ro, opt, object, 声强突变参数能力-->
        <audioMode>
          <!--ro, opt, string, 声强突变检测模式, range:[,]-->test
        </audioMode>
        <sensitivity>
          <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <decibel>
          <!--ro, opt, int, 分贝值, range:[,], step:, unit:, unitType:-->1
        </decibel>
      </AudioAbnormalParam>
      <alarmDelay>
        <!--ro, opt, enum, 智能报警延时, subType:int, [0#5s,1#10s,2#30s,3#60s,4#120s,5#300s,6#600s]-->1
      </alarmDelay>
    </RuleInfo>
  </RuleInfoList>
  <enabledAllRules>
    <!--ro, opt, bool, 开启通道智能, desc:开启智能通道后，才可以配置所有的规则，未启用，无法配置规则-->true
  </enabledAllRules>
  <subBehaviorType>
    <!--ro, opt, enum, 子异常行为识别类型, subType:string, [streetBehavior#街道行为,workBehavior#岗位行为]-->streetBehavior
  </subBehaviorType>
  <analysisMode>
    <!--ro, opt, enum, realTimeMode, subType:string, [realTimeMode#实时模式,autoSwitchMode#轮询模式], desc:不返回该节点默认为实时模式，说明：引擎也有分析模式，设备会根据负载均衡的方式，添加到相同分析模式的引擎中-->realTimeMode
  </analysisMode>
  <WorkBehaviorParam>
    <!--ro, opt, object, 岗位异常行为识别参数, desc:岗位行为和离岗不一样，岗位行为包括RuleInfo.workBehavior中opt的所以事件-->
    <interval>
      <!--ro, opt, int, 岗位行为报警间隔配置, range:[2,1200], step:, unit:, unitType:, desc:单位S，范围：2-1200S,针对所有的岗位行为有效,如事件一直触发，则报警事件按照该间隔进行报警，直到上层处理该报警-->1
    </interval>
  </WorkBehaviorParam>
  <sceneName>
    <!--ro, opt, string, 场景名称, range:[,], desc:与sid对应-->test
  </sceneName>
</BehaviorRule>

3. 配置场景所有规则

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BehaviorRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 场景所有规则配置, attr:version{req, string, 协议版本, range:[,]}-->
  <sid>
    <!--req, string, 场景ID, range:[,]-->test
  </sid>
  <RuleInfoList>
    <!--opt, array, 规则信息列表, subType:object, range:[,]-->
    <RuleInfo>
      <!--opt, object, 规则信息-->
      <ruleId>
        <!--req, string, 规则ID, range:[,]-->test
      </ruleId>
      <ruleName>
        <!--req, string, 规则名称, range:[,]-->test
      </ruleName>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <eventType>
        <!--req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
      </eventType>
      <ruleType>
        <!--req, enum, 规则类型, subType:string, [region#区域,line#线,none#不支持规则区域配置]-->region
      </ruleType>
      <LineDetectionParam>
        <!--opt, object, 越界侦测-->
        <directionSensitivity>
          <!--req, enum, 方向灵敏度, subType:string, [left-right#左右,right-left#右左,any#任意]-->left-right
        </directionSensitivity>
        <detectionTarget>
          <!--opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </LineDetectionParam>
      <FieldDetectionParam>
        <!--opt, object, 区域入侵-->
        <durationTime>
          <!--req, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivityLevel>
          <!--req, int, 入侵灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivityLevel>
        <detectionTarget>
          <!--opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </FieldDetectionParam>
      <RegionEntranceParam>
        <!--opt, object, 进入区域-->
        <detectionTarget>
          <!--opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </RegionEntranceParam>
      <RegionExitingParam>
        <!--opt, object, 离开区域-->
        <detectionTarget>
          <!--opt, enum, 检测目标, subType:string, [all#所有,human#人,vehicle#车辆,human_vehicle#人与车], desc:节点中带_符号的代表支持多选项,例如human_vehicle 代表人与车-->all
        </detectionTarget>
        <humanMisinfoFilterEnabled>
          <!--opt, bool, 人体去误报使能-->true
        </humanMisinfoFilterEnabled>
        <vehicleMisinfoFilterEnabled>
          <!--opt, bool, 车辆去误报使能-->true
        </vehicleMisinfoFilterEnabled>
        <sensitivity>
          <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
        </sensitivity>
        <priority>
          <!--opt, enum, 优先级, subType:string, [high#高,middle#中,low#低]-->high
        </priority>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </RegionExitingParam>
      <LoiteringParam>
        <!--opt, object, 徘徊侦测-->
        <durationTime>
          <!--req, int, 持续时间, range:[1,100], step:, unit:s, unitType:时间-->1
        </durationTime>
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </LoiteringParam>
      <GroupParam>
        <!--opt, object, 人员聚集-->
        <populDensity>
          <!--opt, int, 人口密度, range:[1,10], step:, unit:, unitType:-->1
        </populDensity>
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <interval>
          <!--opt, int, 报警间隔时间, range:[,], step:, unit:, unitType:-->1
        </interval>
        <threshold>
          <!--opt, int, 人数阀值, range:[,], step:, unit:, unitType:-->1
        </threshold>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </GroupParam>
      <RapidMoveParam>
        <!--opt, object, 快速移动-->
        <rapidMoveMode>
          <!--opt, enum, 快速移动模式, subType:string, [pixels#像素,actualSize#实际大小]-->pixels
        </rapidMoveMode>
        <distanceThreshold>
          <!--opt, int, 距离阈值, range:[,], step:, unit:, unitType:, desc:距离  1.像素1-10 2.实际尺寸1-20-->1
        </distanceThreshold>
      </RapidMoveParam>
      <ParkingParam>
        <!--opt, object, 停车-->
        <durationTime>
          <!--req, int, 持续时间, range:[5,100], step:, unit:, unitType:-->5
        </durationTime>
      </ParkingParam>
      <UnattendedBaggageParam>
        <!--opt, object, 无人值守行李参数-->
        <durationTime>
          <!--req, int, 持续时间, range:[5,100], step:, unit:s, unitType:时间-->5
        </durationTime>
      </UnattendedBaggageParam>
      <AttendedBaggageParam>
        <!--opt, object, 行李托运参数-->
        <durationTime>
          <!--req, int, 持续时间, range:[5,100], step:, unit:s, unitType:时间-->5
        </durationTime>
      </AttendedBaggageParam>
      <TeacherParam>
        <!--opt, object, 教师参数-->
        <durationTime>
          <!--req, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </TeacherParam>
      <StudentParam>
        <!--opt, string, 学生参数, range:[,]-->null
      </StudentParam>
      <GetUpParam>
        <!--opt, object, 起床参数-->
        <durationTime>
          <!--opt, int, 触发起床报警阈值, range:[1,100], step:, unit:s, unitType:时间-->1
        </durationTime>
        <mode>
          <!--opt, enum, 起身检测模式, subType:string, [overBed#大床通铺,areaMove#高低铺,sitting#大床通铺坐立起身]-->overBed
        </mode>
        <sensitivity>
          <!--opt, int, 灵敏度参数, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
      </GetUpParam>
      <ToiletTarryParam>
        <!--opt, object, 如厕超时-->
        <durationTime>
          <!--opt, int, 如厕超时时间, range:[1,3600], step:, unit:, unitType:-->5
        </durationTime>
      </ToiletTarryParam>
      <PeopleNumChangeParam>
        <!--opt, object, 人数变化-->
        <peopleNumThreshold>
          <!--opt, int, 人数阈值, range:[,], step:, unit:, unitType:-->1
        </peopleNumThreshold>
        <detectMode>
          <!--opt, enum, 检测模式, subType:string, [greaterthan#大于,lessThan#小于,equal#等于,notEqual#不等于]-->greaterthan
        </detectMode>
        <noneStateEffectiveEnabled>
          <!--opt, bool, 使能-->true
        </noneStateEffectiveEnabled>
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </PeopleNumChangeParam>
      <SpacingChangeParam>
        <!--opt, object, 间距变化-->
        <spacingThreshold>
          <!--opt, int, 间隔阈值, range:[,], step:, unit:, unitType:-->1
        </spacingThreshold>
        <detectMode>
          <!--opt, enum, 检测模式, subType:string, [greaterthan#大于,lessThan#小于]-->greaterthan
        </detectMode>
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </SpacingChangeParam>
      <ViolentMotionParam>
        <!--opt, object, 剧烈运动-->
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <interval>
          <!--opt, int, 报警间隔时间, range:[,], step:, unit:, unitType:-->1
        </interval>
        <mode>
          <!--opt, enum, 模式, subType:string, [video#视频模式(默认),videoAndAudio#视音频模式]-->video
        </mode>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </ViolentMotionParam>
      <LeavePositionParam>
        <!--opt, object, 离岗-->
        <leaveDelay>
          <!--opt, int, 离岗时间, range:[1,3600], step:, unit:s, unitType:时间-->1
        </leaveDelay>
        <onPosition>
          <!--opt, int, 在岗人数, range:[,], step:, unit:, unitType:, desc:算法返回的在岗人数-->1
        </onPosition>
        <mode>
          <!--opt, enum, 模式, subType:string, [leavePosition#离岗(默认),sleep#睡觉,leavePositionAndSleep#离岗&睡觉,onAndLeavePosition#在离岗], desc:onAndLeavePosition-在离岗,该模式指的是配置在岗人数2人,1人离开,触发离岗leavePosition,设备上报离岗;画面恢复到两个人时,报警才会上报在岗onPosition的模式-->leavePosition
        </mode>
        <sleepDelay>
          <!--opt, int, 睡觉时间, range:[1,1800], step:, unit:s, unitType:时间-->120
        </sleepDelay>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
        <personType>
          <!--opt, enum, 岗人数类型, subType:string, [single#单人值岗,double#双人值岗]-->single
        </personType>
        <alarmFrames>
          <!--opt, int, 报警帧数, range:[,], step:, unit:, unitType:, desc:设备分析了多少帧后才上报报警-->1
        </alarmFrames>
        <stackPersonCountEnabled>
          <!--opt, bool, 是否进行OSD叠加使能, desc:码流中每个规则区域中是否进行实际人数的OSD叠加-->true
        </stackPersonCountEnabled>
        <stackPersonPositionX>
          <!--opt, int, 人数显示OSD预览位置X坐标, range:[,], step:, unit:, unitType:, desc:依赖于stackPersonCountEnabled节点支持配置-->1
        </stackPersonPositionX>
        <stackPersonPositionY>
          <!--opt, int, 人数显示OSD预览位置y坐标, range:[,], step:, unit:, unitType:, desc:依赖于stackPersonCountEnabled节点支持配置-->1
        </stackPersonPositionY>
      </LeavePositionParam>
      <FailDownParam>
        <!--opt, object, 倒地-->
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <heightThreshold>
          <!--opt, int, 高度阈值, range:[,], step:, unit:, unitType:-->1
        </heightThreshold>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
        <interval>
          <!--opt, int, 报警间隔时间, range:[4,600], step:, unit:s, unitType:时间, desc:单位秒-->4
        </interval>
      </FailDownParam>
      <RunningParam>
        <!--opt, object, 奔跑-->
        <speed>
          <!--opt, int, 速度, range:[,], step:, unit:, unitType:-->1
        </speed>
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
        <mode>
          <!--opt, string, 奔跑模式, range:[,]-->test
        </mode>
        <peopleNum>
          <!--opt, int, 奔跑人数, range:[1,50], step:, unit:, unitType:-->0
        </peopleNum>
      </RunningParam>
      <RetentionParam>
        <!--opt, object, 滞留-->
        <durationTime>
          <!--req, int, 滞留时间, range:[60,3600], step:, unit:s, unitType:时间-->1800
        </durationTime>
        <mode>
          <!--opt, enum, 模式, subType:string, [single#单人模式,any#任意模式]-->single
        </mode>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </RetentionParam>
      <AdvReachHightParam>
        <!--opt, object, 折线攀高-->
        <crossDirection>
          <!--opt, enum, 跨越方向, subType:string, [bothDirection#双向,leftGoRight#从左到右,rightGoLeft#从右到左]-->bothDirection
        </crossDirection>
      </AdvReachHightParam>
      <SituationAnalysisParam>
        <!--opt, object, 态势分析-->
        <peopleNumThreshold>
          <!--opt, int, 人数阀值, range:[,], step:, unit:, unitType:-->1
        </peopleNumThreshold>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </SituationAnalysisParam>
      <SizeFilter>
        <!--opt, object, 尺寸过滤器-->
        <enabled>
          <!--req, string, 使能, range:[,]-->test
        </enabled>
        <mode>
          <!--req, enum, 模式, subType:string, [pixels#像素,actualSize#实际大小]-->pixels
        </mode>
        <MaxObjectSize>
          <!--opt, object, 最大尺寸, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
          <width>
            <!--req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
          </width>
          <height>
            <!--req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
          </height>
        </MaxObjectSize>
        <MinObjectSize>
          <!--opt, object, 最小尺, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
          <width>
            <!--req, int, 宽, range:[0,1000], step:, unit:, unitType:-->1
          </width>
          <height>
            <!--req, int, 高, range:[0,1000], step:, unit:, unitType:-->1
          </height>
        </MinObjectSize>
      </SizeFilter>
      <RuleRegion>
        <!--opt, object, 规则区域-->
        <RegionCoordinatesList>
          <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </RuleRegion>
      <backgroundSuppression>
        <!--opt, enum, 背景干扰抑制, subType:string, [open#开启,close#关闭,selfAdapt#自适应]-->open
      </backgroundSuppression>
      <KeyPersonGetUpParam>
        <!--opt, object, 重点人员起身-->
        <durationTime>
          <!--opt, int, 触发起床报警阈值, range:[,], step:, unit:, unitType:-->1
        </durationTime>
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <mode>
          <!--opt, enum, 模式, subType:string, [overBed#大床通铺模式,areaMove#高低铺模式,sitting#大床通铺坐立起身模式]-->overBed
        </mode>
      </KeyPersonGetUpParam>
      <YardTarryParam>
        <!--opt, object, 放风场滞留-->
        <durationTime>
          <!--opt, int, 放风场滞留时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </YardTarryParam>
      <StandUpParam>
        <!--opt, object, 站立-->
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <heightThreshold>
          <!--opt, int, 高度阈值, range:[,], step:, unit:cm, unitType:长度-->1
        </heightThreshold>
        <durationTime>
          <!--opt, int, 持续时间, range:[,], step:, unit:, unitType:-->1
        </durationTime>
      </StandUpParam>
      <PlayCellphoneParam>
        <!--opt, object, 玩手机检测-->
        <durationTime>
          <!--opt, int, 玩手机持续时间, range:[1,3600], step:, unit:s, unitType:时间-->1
        </durationTime>
        <stackTarget>
          <!--opt, bool, 报警目标框是否叠加-->true
        </stackTarget>
        <stackRule>
          <!--opt, bool, 报警规则框是否叠加-->true
        </stackRule>
      </PlayCellphoneParam>
      <AudioAbnormalParam>
        <!--opt, object, 声强突变参数能力-->
        <audioMode>
          <!--opt, string, 声强突变检测模式, range:[,]-->test
        </audioMode>
        <sensitivity>
          <!--opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
        </sensitivity>
        <decibel>
          <!--opt, int, 分贝值, range:[,], step:, unit:, unitType:-->1
        </decibel>
      </AudioAbnormalParam>
      <alarmDelay>
        <!--opt, enum, 智能报警延时, subType:int, [0#5s,1#10s,2#30s,3#60s,4#120s,5#300s,6#600s]-->1
      </alarmDelay>
    </RuleInfo>
  </RuleInfoList>
  <enabledAllRules>
    <!--opt, bool, 开启通道智能, desc:开启智能通道后，才可以配置所有的规则，未启用，无法配置规则-->true
  </enabledAllRules>
  <subBehaviorType>
    <!--opt, enum, 子异常行为识别类型, subType:string, [streetBehavior#街道行为,workBehavior#岗位行为]-->streetBehavior
  </subBehaviorType>
  <analysisMode>
    <!--opt, enum, realTimeMode, subType:string, [realTimeMode#实时模式,autoSwitchMode#轮询模式], desc:不返回该节点默认为实时模式，说明：引擎也有分析模式，设备会根据负载均衡的方式，添加到相同分析模式的引擎中-->realTimeMode
  </analysisMode>
  <WorkBehaviorParam>
    <!--opt, object, 岗位异常行为识别参数, desc:岗位行为和离岗不一样，岗位行为包括RuleInfo.workBehavior中opt的所以事件-->
    <interval>
      <!--opt, int, 岗位行为报警间隔配置, range:[2,1200], step:, unit:, unitType:, desc:单位S，范围：2-1200S,针对所有的岗位行为有效,如事件一直触发，则报警事件按照该间隔进行报警，直到上层处理该报警-->1
    </interval>
  </WorkBehaviorParam>
  <sceneName>
    <!--opt, string, 场景名称, range:[,], desc:与sid对应-->test
  </sceneName>
</BehaviorRule>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取事件联动

4.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RuleNotification xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 规则通知, attr:version{req, string, 协议版本, range:[,]}-->
  <sid>
    <!--ro, req, string, 场景ID, range:[,]-->test
  </sid>
  <RuleList>
    <!--ro, opt, array, 规则列表, subType:object, range:[,]-->
    <RuleInfo>
      <!--ro, opt, object, 规则信息-->
      <ruleId>
        <!--ro, req, string, 规则ID, range:[,]-->test
      </ruleId>
      <EventTriggerNotificationList>
        <!--ro, opt, array, 事件触发通知列表, subType:object, range:[,]-->
        <EventTriggerNotification>
          <!--ro, opt, object, 事件触发通知-->
          <id>
            <!--ro, req, string, 序号, range:[,]-->test
          </id>
          <notificationMethod>
            <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IO#IO输出,record#录像,center#上传中心,cloud#cloud,whiteLight#白光灯,audio#视频]-->email
          </notificationMethod>
          <notificationRecurrence>
            <!--ro, opt, string, 联动时间点, range:[,]-->test
          </notificationRecurrence>
          <notificationInterval>
            <!--ro, opt, int, 联动间隔, range:[,], step:, unit:ms, unitType:时间, desc:当<notificationMethod>为"IO"时可填-->1
          </notificationInterval>
          <outputIOPortID>
            <!--ro, opt, string, IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </outputIOPortID>
          <dynOutputIOPortID>
            <!--ro, opt, string, 动态IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </dynOutputIOPortID>
        </EventTriggerNotification>
      </EventTriggerNotificationList>
    </RuleInfo>
  </RuleList>
  <EventList>
    <!--ro, opt, array, 事件列表, subType:object, range:[,], desc:按照事件类型配置联动，能力为/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中的isSupportTriggerEventType，RuleList和EventList节点互斥-->
    <Event>
      <!--ro, opt, object, 事件-->
      <eventType>
        <!--ro, req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#无人值守行李,attendedBaggage#行李托运,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
      </eventType>
      <mode>
        <!--ro, opt, enum, 模式, subType:string, [leavePosition#离岗,sleep#睡觉], desc:目前只有leavePosition事件需要使用mode-->leavePosition
      </mode>
      <EventTriggerNotificationList>
        <!--ro, opt, array, 事件触发通知列表, subType:object, range:[,]-->
        <EventTriggerNotification>
          <!--ro, opt, object, 事件触发通知-->
          <id>
            <!--ro, req, string, 序号, range:[,]-->test
          </id>
          <notificationMethod>
            <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IO#IO输出,record#录像,center#上传中心,cloud#cloud,whiteLight#白光灯,audio#视频]-->email
          </notificationMethod>
          <notificationRecurrence>
            <!--ro, opt, string, 联动时间点, range:[,]-->test
          </notificationRecurrence>
          <notificationInterval>
            <!--ro, opt, int, 联动间隔, range:[,], step:, unit:ms, unitType:时间, desc:当<notificationMethod>为"IO"时可填-->1
          </notificationInterval>
          <outputIOPortID>
            <!--ro, opt, string, IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </outputIOPortID>
          <dynOutputIOPortID>
            <!--ro, opt, string, 动态IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </dynOutputIOPortID>
        </EventTriggerNotification>
      </EventTriggerNotificationList>
    </Event>
  </EventList>
  <sceneName>
    <!--ro, opt, string, 场景名称, range:[,], desc:与sid对应-->test
  </sceneName>
</RuleNotification>

5. 配置事件联动

5.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RuleNotification xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 规则通知, attr:version{req, string, 协议版本, range:[,]}-->
  <sid>
    <!--req, string, 场景ID, range:[,]-->test
  </sid>
  <RuleList>
    <!--opt, array, 规则列表, subType:object, range:[,]-->
    <RuleInfo>
      <!--opt, object, 规则信息-->
      <ruleId>
        <!--req, string, 规则ID, range:[,]-->test
      </ruleId>
      <EventTriggerNotificationList>
        <!--opt, array, 事件触发通知列表, subType:object, range:[,]-->
        <EventTriggerNotification>
          <!--opt, object, 事件触发通知-->
          <id>
            <!--req, string, 序号, range:[,]-->test
          </id>
          <notificationMethod>
            <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IO#IO输出,record#录像,center#上传中心,cloud#cloud,whiteLight#白光灯,audio#视频]-->email
          </notificationMethod>
          <notificationRecurrence>
            <!--opt, string, 联动时间点, range:[,]-->test
          </notificationRecurrence>
          <notificationInterval>
            <!--opt, int, 联动间隔, range:[,], step:, unit:ms, unitType:时间, desc:当<notificationMethod>为"IO"时可填-->1
          </notificationInterval>
          <outputIOPortID>
            <!--opt, string, IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </outputIOPortID>
          <dynOutputIOPortID>
            <!--opt, string, 动态IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </dynOutputIOPortID>
        </EventTriggerNotification>
      </EventTriggerNotificationList>
    </RuleInfo>
  </RuleList>
  <EventList>
    <!--opt, array, 事件列表, subType:object, range:[,], desc:按照事件类型配置联动，能力为/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities中的isSupportTriggerEventType，RuleList和EventList节点互斥-->
    <Event>
      <!--opt, object, 事件-->
      <eventType>
        <!--req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#无人值守行李,attendedBaggage#行李托运,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
      </eventType>
      <mode>
        <!--opt, enum, 模式, subType:string, [leavePosition#离岗,sleep#睡觉], desc:目前只有leavePosition事件需要使用mode-->leavePosition
      </mode>
      <EventTriggerNotificationList>
        <!--opt, array, 事件触发通知列表, subType:object, range:[,]-->
        <EventTriggerNotification>
          <!--opt, object, 事件触发通知-->
          <id>
            <!--req, string, 序号, range:[,]-->test
          </id>
          <notificationMethod>
            <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IO#IO输出,record#录像,center#上传中心,cloud#cloud,whiteLight#白光灯,audio#视频]-->email
          </notificationMethod>
          <notificationRecurrence>
            <!--opt, string, 联动时间点, range:[,]-->test
          </notificationRecurrence>
          <notificationInterval>
            <!--opt, int, 联动间隔, range:[,], step:, unit:ms, unitType:时间, desc:当<notificationMethod>为"IO"时可填-->1
          </notificationInterval>
          <outputIOPortID>
            <!--opt, string, IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </outputIOPortID>
          <dynOutputIOPortID>
            <!--opt, string, 动态IO输出通道编号, range:[,], desc:当<notificationMethod>为IO时可填-->test
          </dynOutputIOPortID>
        </EventTriggerNotification>
      </EventTriggerNotificationList>
    </Event>
  </EventList>
  <sceneName>
    <!--opt, string, 场景名称, range:[,], desc:与sid对应-->test
  </sceneName>
</RuleNotification>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取专业智能行为检测场景规则解除时间

6.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RuleSchedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 场景规则, attr:version{req, string, 协议版本, range:[,]}-->
  <sid>
    <!--ro, req, string, 场景号, range:[,]-->test
  </sid>
  <RuleList>
    <!--ro, opt, array, 规则信息列表, subType:object, range:[,]-->
    <RuleInfo>
      <!--ro, opt, object, 规则信息-->
      <ruleId>
        <!--ro, req, string, 规则ID, range:[,]-->test
      </ruleId>
      <Schedule>
        <!--ro, opt, object, 计划-->
        <TimeBlockList>
          <!--ro, req, array, 事件段列表, subType:object, range:[,]-->
          <TimeBlock>
            <!--ro, opt, object, 时间段-->
            <dayOfWeek>
              <!--ro, opt, int, 星期数, range:[1,7], step:, unit:, unitType:, desc:ISO8601 weekday number,1=Monday,…-->1
            </dayOfWeek>
            <TimeRange>
              <!--ro, req, object, 时间范围-->
              <beginTime>
                <!--ro, req, time, 开始时间-->00:00:00+08:00
              </beginTime>
              <endTime>
                <!--ro, req, time, 结束时间-->00:00:00+08:00
              </endTime>
            </TimeRange>
          </TimeBlock>
        </TimeBlockList>
        <HolidayBlockList>
          <!--ro, opt, array, 假日计划, subType:object, range:[,]-->
          <TimeBlock>
            <!--ro, opt, object, 时间段-->
            <TimeRange>
              <!--ro, req, object, 时间范围-->
              <beginTime>
                <!--ro, req, time, 开始时间-->00:00:00+08:00
              </beginTime>
              <endTime>
                <!--ro, req, time, 结束时间-->00:00:00+08:00
              </endTime>
            </TimeRange>
          </TimeBlock>
        </HolidayBlockList>
      </Schedule>
    </RuleInfo>
  </RuleList>
  <EventList>
    <!--ro, opt, array, 事件信息列表, subType:object, range:[,], desc:按照事件类型配置布防时间，能力为/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities 中的isSupportSchedulesEventType,RuleList和EventList节点互斥-->
    <Event>
      <!--ro, opt, object, 事件信息-->
      <eventType>
        <!--ro, req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#无人值守行李,attendedBaggage#行李托运,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
      </eventType>
      <mode>
        <!--ro, opt, enum, 模式, subType:string, [leavePosition#离岗,sleep#睡觉]-->leavePosition
      </mode>
      <Schedule>
        <!--ro, opt, object, 计划-->
        <TimeBlockList>
          <!--ro, req, array, 事件段列表, subType:object, range:[,]-->
          <TimeBlock>
            <!--ro, opt, object, 时间段-->
            <dayOfWeek>
              <!--ro, opt, int, 星期数, range:[1,7], step:, unit:, unitType:, desc:ISO8601 weekday number,1=Monday,…-->1
            </dayOfWeek>
            <TimeRange>
              <!--ro, req, object, 时间范围-->
              <beginTime>
                <!--ro, req, time, 开始时间-->00:00:00+08:00
              </beginTime>
              <endTime>
                <!--ro, req, time, 结束时间-->00:00:00+08:00
              </endTime>
            </TimeRange>
          </TimeBlock>
        </TimeBlockList>
      </Schedule>
    </Event>
  </EventList>
  <sceneName>
    <!--ro, opt, string, 场景名称, range:[,], desc:与sid对应-->test
  </sceneName>
</RuleSchedule>

7. 配置专业智能行为检测场景规则解除时间

7.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RuleSchedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 场景规则, attr:version{req, string, 协议版本, range:[,]}-->
  <sid>
    <!--req, string, 场景号, range:[,]-->test
  </sid>
  <RuleList>
    <!--opt, array, 规则信息列表, subType:object, range:[,]-->
    <RuleInfo>
      <!--opt, object, 规则信息-->
      <ruleId>
        <!--req, string, 规则ID, range:[,]-->test
      </ruleId>
      <Schedule>
        <!--opt, object, 计划-->
        <TimeBlockList>
          <!--req, array, 事件段列表, subType:object, range:[,]-->
          <TimeBlock>
            <!--opt, object, 时间段-->
            <dayOfWeek>
              <!--opt, int, 星期数, range:[1,7], step:, unit:, unitType:, desc:ISO8601 weekday number,1=Monday,…-->1
            </dayOfWeek>
            <TimeRange>
              <!--req, object, 时间范围-->
              <beginTime>
                <!--req, time, 开始时间-->00:00:00+08:00
              </beginTime>
              <endTime>
                <!--req, time, 结束时间-->00:00:00+08:00
              </endTime>
            </TimeRange>
          </TimeBlock>
        </TimeBlockList>
        <HolidayBlockList>
          <!--opt, array, 假日计划, subType:object, range:[,]-->
          <TimeBlock>
            <!--opt, object, 时间段-->
            <TimeRange>
              <!--req, object, 时间范围-->
              <beginTime>
                <!--req, time, 开始时间-->00:00:00+08:00
              </beginTime>
              <endTime>
                <!--req, time, 结束时间-->00:00:00+08:00
              </endTime>
            </TimeRange>
          </TimeBlock>
        </HolidayBlockList>
      </Schedule>
    </RuleInfo>
  </RuleList>
  <EventList>
    <!--opt, array, 事件信息列表, subType:object, range:[,], desc:按照事件类型配置布防时间，能力为/ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities 中的isSupportSchedulesEventType,RuleList和EventList节点互斥-->
    <Event>
      <!--opt, object, 事件信息-->
      <eventType>
        <!--req, enum, 事件类型, subType:string, [none#无,lineDetection#越界侦测,fieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊侦测,group#人员聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#无人值守行李,attendedBaggage#行李托运,teacher#教师,student#学生,peopleNumChange#人数变化,spacingChange#间距变化,violentMotion#剧烈运动,leavePosition#离岗,failDown#倒地,running#奔跑,retentionParam#滞留,advReachHight#折线攀高,situationAnalysis#态势分析,toiletTarry#如厕超时,audioAbnormal#声强突变,standUp#站立,getUp#起床,playCellphone#玩手机检测]-->none
      </eventType>
      <mode>
        <!--opt, enum, 模式, subType:string, [leavePosition#离岗,sleep#睡觉]-->leavePosition
      </mode>
      <Schedule>
        <!--opt, object, 计划-->
        <TimeBlockList>
          <!--req, array, 事件段列表, subType:object, range:[,]-->
          <TimeBlock>
            <!--opt, object, 时间段-->
            <dayOfWeek>
              <!--opt, int, 星期数, range:[1,7], step:, unit:, unitType:, desc:ISO8601 weekday number,1=Monday,…-->1
            </dayOfWeek>
            <TimeRange>
              <!--req, object, 时间范围-->
              <beginTime>
                <!--req, time, 开始时间-->00:00:00+08:00
              </beginTime>
              <endTime>
                <!--req, time, 结束时间-->00:00:00+08:00
              </endTime>
            </TimeRange>
          </TimeBlock>
        </TimeBlockList>
      </Schedule>
    </Event>
  </EventList>
  <sceneName>
    <!--opt, string, 场景名称, range:[,], desc:与sid对应-->test
  </sceneName>
</RuleSchedule>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取学生行为布防时间

8.1 命令

GET /ISAPI/Event/schedules/studentBehavior

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<studentBehaviorScheduleList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 学生行为布防时间列表, subType:object, range:[,], attr:version{opt, string, 版本号, range:[,]}-->
  <Schedule>
    <!--ro, opt, object, 布防计划-->
    <id>
      <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->studentBehavior-1
    </id>
    <eventType>
      <!--ro, opt, string, 事件类型, range:[,]-->studentBehavior
    </eventType>
    <inputIOPortID>
      <!--ro, opt, string, IO输入端口ID, range:[,]-->1
    </inputIOPortID>
    <outputIOPortID>
      <!--ro, opt, string, IO输出端口ID, range:[,]-->1
    </outputIOPortID>
    <videoInputChannelID>
      <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
    </videoInputChannelID>
    <TimeBlockList size="8">
      <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <dayOfWeek>
          <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
</studentBehaviorScheduleList>

9. 配置学生行为布防时间

9.1 命令

PUT /ISAPI/Event/schedules/studentBehavior

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<studentBehaviorScheduleList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 学生行为布防时间列表, subType:object, range:[,], attr:version{opt, string, 版本号, range:[,]}-->
  <Schedule>
    <!--opt, object, 布防计划-->
    <id>
      <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->studentBehavior-1
    </id>
    <eventType>
      <!--opt, string, 事件类型, range:[,]-->studentBehavior
    </eventType>
    <inputIOPortID>
      <!--opt, string, IO输入端口ID, range:[,]-->1
    </inputIOPortID>
    <outputIOPortID>
      <!--opt, string, IO输出端口ID, range:[,]-->1
    </outputIOPortID>
    <videoInputChannelID>
      <!--opt, string, 视频输入通道ID, range:[,]-->1
    </videoInputChannelID>
    <TimeBlockList size="8">
      <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <dayOfWeek>
          <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
</studentBehaviorScheduleList>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取学生起立检测所有通道时间布防配置

10.1 命令

GET /ISAPI/Event/schedules/studentsStoodUp

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpScheduleList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 布防时间信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <Schedule>
    <!--ro, req, object, 布防时间信息-->
    <id>
      <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->studentsStoodUp-1
    </id>
    <eventType>
      <!--ro, opt, string, 事件类型, range:[,]-->studentsStoodUp
    </eventType>
    <videoInputChannelID>
      <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
    </videoInputChannelID>
    <TimeBlockList size="8">
      <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <dayOfWeek>
          <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
</StudentsStoodUpScheduleList>

11. 配置学生起立检测所有通道时间布防配置

11.1 命令

PUT /ISAPI/Event/schedules/studentsStoodUp

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpScheduleList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 布防时间信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <Schedule>
    <!--req, object, 布防时间信息-->
    <id>
      <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->studentsStoodUp-1
    </id>
    <eventType>
      <!--opt, string, 事件类型, range:[,]-->studentsStoodUp
    </eventType>
    <videoInputChannelID>
      <!--opt, string, 视频输入通道ID, range:[,]-->1
    </videoInputChannelID>
    <TimeBlockList size="8">
      <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <dayOfWeek>
          <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
</StudentsStoodUpScheduleList>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取学生起立检测单个通道时间布防配置

12.1 命令

GET /ISAPI/Event/schedules/studentsStoodUp/studentsStoodUp-<channelID>

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->studentsStoodUp-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->studentsStoodUp
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

13. 配置学生起立检测单个通道时间布防配置

13.1 命令

PUT /ISAPI/Event/schedules/studentsStoodUp/studentsStoodUp-<channelID>

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->studentsStoodUp-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->studentsStoodUp
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取教师行为检测所有通道时间布防配置

14.1 命令

GET /ISAPI/Event/schedules/teacherBehaviorDetect

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TeacherBehaviorDetectScheduleList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 布防时间信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <Schedule>
    <!--ro, req, object, 布防时间信息-->
    <id>
      <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->teacherBehaviorDetect-1
    </id>
    <eventType>
      <!--ro, opt, string, 事件类型, range:[,]-->teacherBehaviorDetect
    </eventType>
    <inputIOPortID>
      <!--ro, opt, string, IO输入端口ID, range:[,]-->1
    </inputIOPortID>
    <outputIOPortID>
      <!--ro, opt, string, IO输出端口ID, range:[,]-->1
    </outputIOPortID>
    <videoInputChannelID>
      <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
    </videoInputChannelID>
    <TimeBlockList size="8">
      <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <dayOfWeek>
          <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
</TeacherBehaviorDetectScheduleList>

15. 配置教师行为检测所有通道时间布防配置

15.1 命令

PUT /ISAPI/Event/schedules/teacherBehaviorDetect

15.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TeacherBehaviorDetectScheduleList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 布防时间信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <Schedule>
    <!--req, object, 布防时间信息-->
    <id>
      <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->teacherBehaviorDetect-1
    </id>
    <eventType>
      <!--opt, string, 事件类型, range:[,]-->teacherBehaviorDetect
    </eventType>
    <inputIOPortID>
      <!--opt, string, IO输入端口ID, range:[,]-->1
    </inputIOPortID>
    <outputIOPortID>
      <!--opt, string, IO输出端口ID, range:[,]-->1
    </outputIOPortID>
    <videoInputChannelID>
      <!--opt, string, 视频输入通道ID, range:[,]-->1
    </videoInputChannelID>
    <TimeBlockList size="8">
      <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <dayOfWeek>
          <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
</TeacherBehaviorDetectScheduleList>

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

16. 获取教师行为检测单个通道时间布防配置

16.1 命令

GET /ISAPI/Event/schedules/teacherBehaviorDetect/teacherBehaviorDetect-<channelID>

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->teacherBehaviorDetect-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->teacherBehaviorDetect
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

17. 配置教师行为检测单个通道时间布防配置

17.1 命令

PUT /ISAPI/Event/schedules/teacherBehaviorDetect/teacherBehaviorDetect-<channelID>

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->teacherBehaviorDetect-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->teacherBehaviorDetect
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取学生起立检测联动方式配置

18.1 命令

GET /ISAPI/Event/triggers/studentsStoodUp-<channelID>

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->studentsStoodUp-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->studentsStoodUp
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <cellphoneNumber>
        <!--ro, opt, string, 电话号码, range:[0,11]-->test
      </cellphoneNumber>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

19. 配置学生起立检测联动方式配置

19.1 命令

PUT /ISAPI/Event/triggers/studentsStoodUp-<channelID>

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->studentsStoodUp-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->studentsStoodUp
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <cellphoneNumber>
        <!--opt, string, 电话号码, range:[0,11]-->test
      </cellphoneNumber>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取学生起立检测触发方式配置

20.1 命令

GET /ISAPI/Event/triggers/studentsStoodUp-<channelID>/notifications

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTriggerNotificationList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 联动方式列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <EventTriggerNotification>
    <!--ro, opt, object, 联动方式-->
    <id>
      <!--ro, req, string, 索引, range:[,]-->test
    </id>
    <notificationMethod>
      <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
    </notificationMethod>
    <notificationRecurrence>
      <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
    </notificationRecurrence>
    <notificationInterval>
      <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
    </notificationInterval>
    <videoInputID>
      <!--ro, opt, string, 视频通道号ID, range:[,]-->1
    </videoInputID>
    <dynVideoInputID>
      <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
    </dynVideoInputID>
    <ptzAction>
      <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
      <ptzChannelID>
        <!--ro, req, string, PTZ联动通道号, range:[,]-->1
      </ptzChannelID>
      <actionName>
        <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
      </actionName>
      <actionNum>
        <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
      </actionNum>
      <presetDurationTime>
        <!--ro, opt, int, 预置点持续时间, range:[,], step:, unit:s, unitType:时间-->0
      </presetDurationTime>
    </ptzAction>
    <cellphoneNumber>
      <!--ro, opt, string, 电话号码, range:[0,11]-->test
    </cellphoneNumber>
  </EventTriggerNotification>
</EventTriggerNotificationList>

21. 配置学生起立检测触发方式配置

21.1 命令

PUT /ISAPI/Event/triggers/studentsStoodUp-<channelID>/notifications

21.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTriggerNotificationList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 联动方式列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <EventTriggerNotification>
    <!--opt, object, 联动方式-->
    <id>
      <!--req, string, 索引, range:[,]-->test
    </id>
    <notificationMethod>
      <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,whiteLight#白光灯]-->FTP
    </notificationMethod>
    <notificationRecurrence>
      <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
    </notificationRecurrence>
    <notificationInterval>
      <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
    </notificationInterval>
    <videoInputID>
      <!--opt, string, 视频通道号ID, range:[,]-->1
    </videoInputID>
    <dynVideoInputID>
      <!--opt, string, 动态视频输入通道ID, range:[,]-->1
    </dynVideoInputID>
    <ptzAction>
      <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
      <ptzChannelID>
        <!--req, string, PTZ联动通道号, range:[,]-->1
      </ptzChannelID>
      <actionName>
        <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
      </actionName>
      <actionNum>
        <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
      </actionNum>
      <presetDurationTime>
        <!--opt, int, 预置点持续时间, range:[,], step:, unit:s, unitType:时间-->0
      </presetDurationTime>
    </ptzAction>
    <cellphoneNumber>
      <!--opt, string, 电话号码, range:[0,11]-->test
    </cellphoneNumber>
  </EventTriggerNotification>
</EventTriggerNotificationList>

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

22. 获取抬头率参数能力

22.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/headRiseRate/capabilities?format=json

22.2 输入参数

无

22.3 输出参数

{
    "HeadRiseRateCap": {
    /*ro, req, object, 抬头率配置能力, desc:抬头率=人脸数量/人体数量*/
        "enabled": {
        /*ro, req, object, 使能*/
            "@opt": [true, false]
            /*ro, req, array, 取值范围, subType:bool, range:[0,2]*/
        },
        "isSupportSearch":  true
        /*ro, opt, bool, 是否支持当前抬头率信息查询, desc:对应接口:/ISAPI/Intelligent/channels/<channelID>/headRiseRate/search?format=json*/
    }
}

23. 查询当前抬头率信息

23.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/headRiseRate/search?format=json

23.2 输入参数

无

23.3 输出参数

{
    "HeadRiseRate": {
    /*ro, opt, object, 抬头率事件信息*/
        "rateValue":  66
        /*ro, req, int, 抬头率1-100%, range:[1,100], step:, unit:, unitType:, desc:抬头率配置,抬头率=人脸数量/人体数量*/
    }
}

24. 获取抬头率参数

24.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/headRiseRate?format=json

24.2 输入参数

无

24.3 输出参数

{
    "HeadRiseRate": {
    /*ro, req, object, 抬头率配置, desc:抬头率=人脸数量/人体数量*/
        "enabled":  true
        /*ro, req, bool, 使能*/
    }
}

25. 配置抬头率参数

25.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/headRiseRate?format=json

25.2 输入参数

{
    "HeadRiseRate": {
    /*req, object, 抬头率配置, desc:抬头率=人脸数量/人体数量*/
        "enabled":  true
        /*req, bool, 使能*/
    }
}

25.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

26. 获取全局目标识别置信度配置能力

26.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/confidenceConfig/capabilities?format=json

26.2 输入参数

无

26.3 输出参数

{
    "ConfidenceConfigCap": {
    /*ro, opt, object, 置信度能力*/
        "Property": {
        /*ro, opt, object, 属性*/
            "description": {
            /*ro, req, object, 属性名称*/
                "@opt":  "posture,listening,reading,writing,raisingHand,headOnDesk,playMobilePhone,direction,discuss,withBackToCamera",
                /*ro, opt, string, 可选值, range:[,], desc:withBackToCamera背坐（针对身体的）*/
                "#text":  "posture"
                /*ro, opt, string, 当前值, range:[,]*/
            },
            "value": {
            /*ro, req, object, 置信度*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[0,100], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, opt, int, 最大值, range:[0,100], step:, unit:, unitType:*/
                "#text":  1
                /*ro, opt, int, 当前值, range:[0,100], step:, unit:, unitType:*/
            }
        }
    }
}

27. 获取全局目标识别置信度参数

27.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/confidenceConfig?format=json

27.2 输入参数

无

27.3 输出参数

{
    "ConfidenceConfig": {
    /*ro, opt, object, 置信度配置*/
        "Property": [
        /*ro, opt, array, 属性, subType:object, range:[,]*/
            {
                "description":  "posture",
                /*ro, req, enum, 属性名称, subType:string, [posture#姿势,listening#听讲,reading#阅读,writing#书写,raisingHand#举手,headOnDesk#趴桌子,playMobilePhone#玩手机,direction#目标方向,discuss#讨论,withBackToCamera#背坐（针对身体朝向）]*/
                "value":  20
                /*ro, req, int, 置信度, range:[0,100], step:, unit:, unitType:*/
            }
        ]
    }
}

28. 配置全局目标识别置信度参数

28.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/confidenceConfig?format=json

28.2 输入参数

{
    "ConfidenceConfig": {
    /*opt, object, 置信度配置*/
        "Property": [
        /*opt, array, 属性, subType:object, range:[,]*/
            {
                "description":  "posture",
                /*req, enum, 属性名称, subType:string, [posture#姿势,listening#听讲,reading#阅读,writing#书写,raisingHand#举手,headOnDesk#趴桌子,playMobilePhone#玩手机,direction#目标方向,discuss#讨论,withBackToCamera#背坐（针对身体）]*/
                "value":  20
                /*req, int, 置信度, range:[0,100], step:, unit:, unitType:*/
            }
        ]
    }
}

28.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

29. 配置学生姓名展示协议

29.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picOverlay?format=json

29.2 输入参数

{
    "picOverlay": [
    /*req, array, 图片叠加, subType:object, range:[,]*/
        {
            "hID":  "F4F665D6A18E41308CE9934DCDDD2222",
            /*req, string, 人脸库图片ID（表示图片数据的唯一性）, range:[1,32], desc:由录播主机匹配人脸图片得到*/
            "name":  "小王",
            /*req, string, 人员名称, range:[1,32]*/
            "humanURL":  "test",
            /*opt, string, 人脸库图片URL, range:[,]*/
            "ClassRegions": [
            /*opt, array, 教室中人员坐标, subType:object, range:[,], desc:第一个点为左上角,依次顺时针方向*/
                {
                    "x":  0.120,
                    /*opt, float, x坐标, range:[,], step:, unit:, unitType:*/
                    "y":  0.120
                    /*opt, float, y坐标, range:[,], step:, unit:, unitType:*/
                }
            ]
        }
    ]
}

29.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

30. 获取学生姓名展示控制

30.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picOverlayControl?format=json

30.2 输入参数

无

30.3 输出参数

{
    "enabled":  false
    /*ro, req, bool, 学生姓名展示控制使能*/
}

31. 配置学生姓名展示控制

31.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picOverlayControl?format=json

31.2 输入参数

{
    "enabled":  false
    /*req, bool, 学生姓名展示控制使能*/
}

31.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

32. 配置学生点名信息重置

32.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/humanRecognition/picOverlayReset?format=json

32.2 输入参数

无

32.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

33. 获取学生异常行为识别规则能力

33.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentBehavior/capabilities?format=json

33.2 输入参数

无

33.3 输出参数

{
    "StudentBehaviorCap": {
    /*ro, req, object, 学生异常行为识别规则参数*/
        "enabled": {
        /*ro, req, object, 总使能*/
            "@opt": [true, false],
            /*ro, opt, array, 选项, subType:bool, range:[,]*/
            "@def":  true
            /*ro, opt, bool, 默认值*/
        },
        "SizeFilter": {
        /*ro, opt, object, 尺寸过滤参数*/
            "enabled": {
            /*ro, opt, object, 过滤使能;是否开启尺寸过滤*/
                "@opt": [true, false],
                /*ro, opt, array, 选项, subType:bool, range:[,]*/
                "@def":  false
                /*ro, opt, bool, 默认值*/
            },
            "mode": {
            /*ro, opt, object, 过滤模式*/
                "@opt": ["pixels"]
                /*ro, opt, array, 选项, subType:string, range:[,], desc:pixels为像素尺寸过滤*/
            },
            "MaxObjectSize": {
            /*ro, opt, object, 最大尺寸过滤*/
                "x": {
                /*ro, req, object, 左上角x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, 左上角y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "width": {
                /*ro, opt, object, 宽度*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "height": {
                /*ro, opt, object, 高度*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "MinObjectSize": {
            /*ro, opt, object, 最小尺寸过滤*/
                "x": {
                /*ro, req, object, 左上角x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, 左上角y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "width": {
                /*ro, opt, object, 宽度*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "height": {
                /*ro, opt, object, 高度*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        },
        "isSupportShield":  true,
        /*ro, opt, bool, 是否支持学生异常行为识别屏蔽区域配置, desc:对应接口:/ISAPI/Intelligent/channels/<channelID>/studentBehavior/shield?format=json*/
        "isSupportPicture":  true
        /*ro, opt, bool, 是否支持学生异常行为识别图片参数配置, desc:对应接口：/ISAPI/Intelligent/channels/<channelID>/studentBehavior/picture/capabilities?format=json*/
    }
}

34. 获取学生异常行为识别屏蔽区域配置能力

34.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentBehavior/shield/capabilities?format=json

34.2 输入参数

无

34.3 输出参数

{
    "ShieldCap": {
    /*ro, req, object, 屏蔽区域配置能力;*/
        "ShieldRegionCap": {
        /*ro, opt, object, 屏蔽区域信息*/
            "maxSize":  1,
            /*ro, req, int, 最大支持的区域数能力, range:[,], step:, unit:, unitType:*/
            "regionID": {
            /*ro, req, object, 区域ID*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  8
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "RegionCap": {
            /*ro, req, object, 区域能力, desc:3~10边形*/
                "minSize":  3,
                /*ro, req, int, 区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        }
    }
}

35. 获取学生异常行为识别屏蔽区域配置

35.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentBehavior/shield?format=json

35.2 输入参数

无

35.3 输出参数

{
    "Shield": {
    /*ro, req, object, 屏蔽区域配置;*/
        "ShieldRegion": [
        /*ro, opt, array, 屏蔽区域信息, subType:object, range:[,]*/
            {
                "regionID":  1,
                /*ro, req, int, 区域ID, range:[1,8], step:, unit:, unitType:*/
                "Region": [
                /*ro, req, array, 区域坐标, subType:object, range:[3,10], desc:屏幕左上角为坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ]
            }
        ]
    }
}

36. 设置学生异常行为识别屏蔽区域配置

36.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentBehavior/shield?format=json

36.2 输入参数

{
    "Shield": {
    /*req, object, 屏蔽区域配置;*/
        "ShieldRegion": [
        /*opt, array, 屏蔽区域信息, subType:object, range:[,]*/
            {
                "regionID":  1,
                /*req, int, 区域ID, range:[1,8], step:, unit:, unitType:*/
                "Region": [
                /*req, array, 区域坐标, subType:object, range:[3,10], desc:屏幕左上角为坐标原点*/
                    {
                        "x":  0.120,
                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ]
            }
        ]
    }
}

36.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

37. 获取学生异常行为识别规则

37.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentBehavior?format=json

37.2 输入参数

无

37.3 输出参数

{
    "StudentBehavior": {
    /*ro, req, object, 学生异常行为识别规则参数*/
        "enabled":  true,
        /*ro, req, bool, 总使能*/
        "SizeFilter": {
        /*ro, opt, object, 像素尺寸过滤参数;当filterType=pixelSize时生效*/
            "enabled":  false,
            /*ro, opt, bool, 是否开启尺寸过滤*/
            "mode":  "pixels",
            /*ro, opt, enum, 过滤模式, subType:string, [pixels#像素尺寸过滤]*/
            "MaxObjectSize": {
            /*ro, opt, object, 最大尺寸过滤, desc:屏幕左上角为坐标原点*/
                "x":  0.120,
                /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "y":  0.120,
                /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "width":  0.120,
                /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                "height":  0.120
                /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "MinObjectSize": {
            /*ro, opt, object, 最小尺寸过滤, desc:屏幕左上角为坐标原点*/
                "x":  0.120,
                /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "y":  0.120,
                /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "width":  0.120,
                /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                "height":  0.120
                /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
            }
        }
    }
}

38. 配置学生异常行为识别规则

38.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentBehavior?format=json

38.2 输入参数

{
    "StudentBehavior": {
    /*ro, req, object, 学生异常行为识别规则参数*/
        "enabled":  true,
        /*ro, req, bool, 总使能*/
        "SizeFilter": {
        /*opt, object, 像素尺寸过滤参数;当filterType=pixelSize时生效*/
            "enabled":  false,
            /*opt, bool, 是否开启尺寸过滤*/
            "mode":  "pixels",
            /*opt, enum, 过滤模式, subType:string, [pixels#像素尺寸过滤]*/
            "MaxObjectSize": {
            /*opt, object, 最大尺寸过滤, desc:屏幕左上角为坐标原点*/
                "x":  0.120,
                /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "y":  0.120,
                /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "width":  0.120,
                /*req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                "height":  0.120
                /*req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "MinObjectSize": {
            /*opt, object, 最小尺寸过滤, desc:屏幕左上角为坐标原点*/
                "x":  0.120,
                /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "y":  0.120,
                /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                "width":  0.120,
                /*req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                "height":  0.120
                /*req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
            }
        }
    }
}

38.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

39. 获取学生起立检测配置

39.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUp xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 学生起立检测, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--ro, req, string, 规则开关使能, range:[,]-->test
  </enabled>
  <imgQuality>
    <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
  </imgQuality>
  <backgroundImgEnabled>
    <!--ro, opt, string, 背景图片上传使能, range:[,]-->test
  </backgroundImgEnabled>
  <alarmPicOverlayRuleEnabled>
    <!--ro, opt, string, 报警抓图叠加智能规则信息使能, range:[,]-->test
  </alarmPicOverlayRuleEnabled>
  <alarmPicOverlayTargetEnabled>
    <!--ro, opt, string, 报警抓图叠加目标信息使能, range:[,]-->test
  </alarmPicOverlayTargetEnabled>
  <highThreshold>
    <!--ro, opt, int, 学生起立高度检测阈值, range:[0,250], step:, unit:cm, unitType:长度-->2
  </highThreshold>
  <StudentsStoodUpRegionList>
    <!--ro, opt, array, 规则区域列表, subType:object, range:[,]-->
    <StudentsStoodUpRegion>
      <!--ro, opt, object, 规则区域-->
      <regionType>
        <!--ro, opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界]-->stand_up
      </regionType>
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </StudentsStoodUpRegion>
  </StudentsStoodUpRegionList>
  <nonHumanTargetFilterEnabled>
    <!--ro, opt, bool, 非人目标过滤使能-->true
  </nonHumanTargetFilterEnabled>
  <relativeHeightModelEnabled>
    <!--ro, opt, bool, 相对高度模型使能-->true
  </relativeHeightModelEnabled>
</StudentsStoodUp>

40. 配置学生起立检测配置

40.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp

40.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUp xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 学生起立检测, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--opt, object, 归一化数值-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--req, string, 规则开关使能, range:[,]-->test
  </enabled>
  <imgQuality>
    <!--opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般]-->best
  </imgQuality>
  <backgroundImgEnabled>
    <!--opt, string, 背景图片上传使能, range:[,]-->test
  </backgroundImgEnabled>
  <alarmPicOverlayRuleEnabled>
    <!--opt, string, 报警抓图叠加智能规则信息使能, range:[,]-->test
  </alarmPicOverlayRuleEnabled>
  <alarmPicOverlayTargetEnabled>
    <!--opt, string, 报警抓图叠加目标信息使能, range:[,]-->test
  </alarmPicOverlayTargetEnabled>
  <highThreshold>
    <!--opt, int, 学生起立高度检测阈值, range:[0,250], step:, unit:cm, unitType:长度-->2
  </highThreshold>
  <StudentsStoodUpRegionList>
    <!--opt, array, 规则区域列表, subType:object, range:[,]-->
    <StudentsStoodUpRegion>
      <!--opt, object, 规则区域-->
      <regionType>
        <!--opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界]-->stand_up
      </regionType>
      <RegionCoordinatesList size="10">
        <!--opt, array, 坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--opt, object, 坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </StudentsStoodUpRegion>
  </StudentsStoodUpRegionList>
  <nonHumanTargetFilterEnabled>
    <!--opt, bool, 非人目标过滤使能-->true
  </nonHumanTargetFilterEnabled>
  <relativeHeightModelEnabled>
    <!--opt, bool, 相对高度模型使能-->true
  </relativeHeightModelEnabled>
</StudentsStoodUp>

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

41. 获取学生起立算法库高级参数配置能力

41.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/algParam/capabilities?format=json

41.2 输入参数

无

41.3 输出参数

{
    "StudentsStoodUpAlgParamCap": {
    /*ro, opt, object, 参数能力*/
        "misSensitivity": {
        /*ro, opt, object, 误报灵敏度, desc:用于控制起立目标的误报量*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  25
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "countingRatioLevel": {
        /*ro, opt, object, 教室人数占比等级*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  4,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "movementSensitivity": {
        /*ro, opt, object, 动作识别灵敏度, desc:表示识别目标起立动作的速度。等级越低报警越快，但可能增加漏检*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  25
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "recognitionTimeLevel": {
        /*ro, opt, object, 动作识别时间等级, desc:表示目标起立过程经历所需要的时间。当出现目标缓慢起立漏检时，可以将等级调高，延长识别时间*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  4,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "stoodUpSensitivity": {
        /*ro, opt, object, 起来识别灵敏度, desc:等级越低检出越高，但误报也可能增加。检出少，可以将等级调低，误报多，可以将等级调高*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  25
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "stoodUpTimeLevel": {
        /*ro, opt, object, 最大站立时长等级, desc:表示允许目标站立的最长时间。当目标站立时间较长，出现坐下误报时，可以将等级调高*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  4,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  1
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "calibrationLineDisplay":  "true,false"
        /*ro, opt, string, 是否显示安装标定线, range:[,], desc:H5教育球增加,安装时地面第一排不能超过此线*/
    }
}

42. 获取学生起立算法库高级参数配置

42.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/algParam?format=json

42.2 输入参数

无

42.3 输出参数

{
    "StudentsStoodUpAlgParam": {
    /*ro, opt, object, 学生起立算法库参数能力*/
        "misSensitivity":  25,
        /*ro, opt, int, 误报灵敏度, range:[0,100], step:, unit:, unitType:, desc:用于控制起立目标的误报量，默认25*/
        "countingRatioLevel":  3,
        /*ro, opt, enum, 教室人数占比等级, subType:int, [0#最多识别1人,1#最多识别10人,2#最多识别48人,3#最多识别64人,4#最多识别96人],
        desc:默认3*/
        "movementSensitivity":  25,
        /*ro, opt, int, 动作识别灵敏度, range:[0,100], step:, unit:, unitType:, desc:默认25。表示识别目标起立动作的速度。等级越低报警越快，但可能增加漏检*/
        "recognitionTimeLevel":  3,
        /*ro, opt, int, 动作识别时间等级, range:[0,4], step:, unit:, unitType:, desc:表示目标起立过程经历所需要的时间。当出现目标缓慢起立漏检时，可以将等级调高，延长识别时间，默认3*/
        "stoodUpSensitivity":  25,
        /*ro, opt, int, 起来识别灵敏度, range:[0,4], step:, unit:, unitType:, desc:等级越低检出越高，但误报也可能增加。检出少，可以将等级调低，误报多，可以将等级调高，默认2*/
        "stoodUpTimeLevel":  1,
        /*ro, opt, int, 最大站立时长等级, range:[0,4], step:, unit:, unitType:, desc:表示允许目标站立的最长时间。当目标站立时间较长，出现坐下误报时，可以将等级调高，默认1*/
        "calibrationLineDisplay":  true
        /*ro, opt, bool, 是否显示安装标定线, desc:H5教育球增加,安装时地面第一排不能超过此线*/
    }
}

43. 配置学生起立算法库高级参数配置

43.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/algParam?format=json

43.2 输入参数

{
    "StudentsStoodUpAlgParam": {
    /*opt, object, 学生起立算法库参数能力*/
        "misSensitivity":  25,
        /*opt, int, 误报灵敏度, range:[0,100], step:, unit:, unitType:, desc:用于控制起立目标的误报量，默认25*/
        "countingRatioLevel":  3,
        /*ro, opt, enum, 教室人数占比等级, subType:int, [0#最多识别1人,1#最多识别10人,2#最多识别48人,3#最多识别64人,4#最多识别96人], desc:默认3*/
        "movementSensitivity":  25,
        /*opt, int, 动作识别灵敏度, range:[0,100], step:, unit:, unitType:, desc:默认25。表示识别目标起立动作的速度。等级越低报警越快，但可能增加漏检*/
        "recognitionTimeLevel":  3,
        /*opt, int, 动作识别时间等级, range:[0,4], step:, unit:, unitType:, desc:表示目标起立过程经历所需要的时间。当出现目标缓慢起立漏检时，可以将等级调高，延长识别时间，默认3*/
        "stoodUpSensitivity":  25,
        /*opt, int, 起来识别灵敏度, range:[0,4], step:, unit:, unitType:, desc:等级越低检出越高，但误报也可能增加。检出少，可以将等级调低，误报多，可以将等级调高，默认2*/
        "stoodUpTimeLevel":  1,
        /*opt, int, 最大站立时长等级, range:[0,4], step:, unit:, unitType:, desc:表示允许目标站立的最长时间。当目标站立时间较长，出现坐下误报时，可以将等级调高，默认1*/
        "calibrationLineDisplay":  true
        /*opt, bool, 是否显示安装标定线, desc:H5教育球增加,安装时地面第一排不能超过此线*/
    }
}

43.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

44. 获取学生起立检测能力

44.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/capabilities

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 规则开关使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <regionType opt="stand_up,sit_down,platform_boundary">
    <!--ro, opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界], attr:opt{req, string, 取值范围, range:[,]}-->stand_up
  </regionType>
  <regionNumber min="0" max="3">
    <!--ro, opt, int, 检测区域配置, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </regionNumber>
  <imgQuality opt="best,good,general">
    <!--ro, opt, enum, 图片质量, subType:string, [best#最好,good#好,general#一般], attr:opt{req, string, 取值范围, range:[,]}-->best
  </imgQuality>
  <backgroundImgEnabled opt="true,false">
    <!--ro, opt, string, 背景图片上传使能, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </backgroundImgEnabled>
  <alarmPicOverlayRuleEnabled opt="true,false">
    <!--ro, opt, string, 报警抓图叠加智能规则信息使能, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </alarmPicOverlayRuleEnabled>
  <alarmPicOverlayTargetEnabled opt="true,false">
    <!--ro, opt, string, 报警抓图叠加目标信息使能, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </alarmPicOverlayTargetEnabled>
  <highThreshold min="0" max="250">
    <!--ro, opt, string, 学生起立高度检测阈值, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位cm,[0,250]-->test
  </highThreshold>
  <singleRegionPointNumber min="0" max="3">
    <!--ro, opt, int, 单个区域支持的点个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </singleRegionPointNumber>
  <nonHumanTargetFilterEnabled opt="true,false">
    <!--ro, opt, bool, 非人目标过滤使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </nonHumanTargetFilterEnabled>
  <relativeHeightModelEnabled opt="true,false">
    <!--ro, opt, bool, 相对高度模式使能开关, attr:opt{req, string, 取值范围, range:[,]}-->true
  </relativeHeightModelEnabled>
  <isSupportAlgParam>
    <!--ro, opt, bool, 是否支持学生起立算法库参数配置-->true
  </isSupportAlgParam>
  <isSupportEventLinkage>
    <!--ro, opt, bool, 是否支持学生起立事件联动配置参数-->true
  </isSupportEventLinkage>
</StudentsStoodUpCap>

45. 获取学生起立事件联动配置能力

45.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/eventLinkage/capabilities?format=json

45.2 输入参数

无

45.3 输出参数

{
    "StudentsStoodEventLinkageCap": {
    /*ro, req, object, 学生起立事件联动配置参数能力*/
        "linkageMode": {
        /*ro, req, object, 联动方式*/
            "@opt": ["close", "videoAmplification", "linkageCapture"],
            /*ro, req, array, 取值范围, subType:string, range:[,], desc:close-关闭,videoAmplification-视频放大,linkageCapture-联动抓拍*/
            "@def":  "close"
            /*ro, req, string, 默认值, range:[,]*/
        },
        "linkageTrackDelayTime": {
        /*ro, req, object, 联动云台跟踪延迟时间, desc:起立报警结束后，要在经过设置的报警延迟时间细节联动抓拍、视频放大联动才结束*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  60,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  2
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "LinkageCapture": {
        /*ro, opt, object, 联动抓拍参数, desc:当linkageMode=linkageCapture时生效*/
            "linkageChannelID": {
            /*ro, req, object, 联动抓拍的通道号*/
                "@opt": [1],
                /*ro, req, array, 取值范围, subType:int, range:[,]*/
                "@def":  1
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "durationTime": {
            /*ro, req, object, 联动持续时间*/
                "@min":  30,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  120,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  60
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "linkageZoom": {
            /*ro, req, object, 抓拍倍率系数可以调节范围*/
                "@min":  50,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  150,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  110
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            }
        }
    }
}

46. 获取学生起立事件联动配置

46.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/eventLinkage?format=json

46.2 输入参数

无

46.3 输出参数

{
    "StudentsStoodEventLinkage": {
    /*ro, req, object, 学生起立事件联动配置参数*/
        "linkageMode":  "videoAmplification",
        /*ro, req, enum, 联动方式, subType:string, [close#关闭,videoAmplification#视频放大,linkageCapture#联动抓拍]*/
        "linkageTrackDelayTime":  2,
        /*ro, opt, int, 联动云台跟踪延迟时间, range:[0,60], step:, unit:s, unitType:时间, desc:起立报警结束后，要在经过设置的报警延迟时间细节联动抓拍、视频放大联动才结束。默认2s*/
        "LinkageCapture": {
        /*ro, req, object, 联动抓拍参数, desc:当linkageMode=linkageCapture时生效*/
            "linkageChannelID":  1,
            /*ro, req, int, 联动抓拍的通道号, range:[,], step:, unit:, unitType:*/
            "durationTime":  30,
            /*ro, req, int, 联动持续时间, range:[30,120], step:, unit:s, unitType:时间, desc:默认60s*/
            "linkageZoom":  50
            /*ro, opt, int, 抓拍倍率系数可以调节范围, range:[50,150], step:, unit:, unitType:, desc:默认110*/
        }
    }
}

47. 配置学生起立事件联动配置

47.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/eventLinkage?format=json

47.2 输入参数

{
    "StudentsStoodEventLinkage": {
    /*req, object, 学生起立事件联动配置参数*/
        "linkageMode":  "videoAmplification",
        /*req, enum, 联动方式, subType:string, [close#关闭,videoAmplification#视频放大,linkageCapture#联动抓拍]*/
        "linkageTrackDelayTime":  2,
        /*opt, int, 联动云台跟踪延迟时间, range:[0,60], step:, unit:s, unitType:时间, desc:起立报警结束后，要在经过设置的报警延迟时间细节联动抓拍、视频放大联动才结束。默认2s*/
        "LinkageCapture": {
        /*req, object, 联动抓拍参数, desc:当linkageMode=linkageCapture时生效*/
            "linkageChannelID":  1,
            /*req, int, 联动抓拍的通道号, range:[,], step:, unit:, unitType:*/
            "durationTime":  30,
            /*req, int, 联动持续时间, range:[30,120], step:, unit:s, unitType:时间, desc:默认60s*/
            "linkageZoom":  50
            /*opt, int, 抓拍倍率系数可以调节范围, range:[50,150], step:, unit:, unitType:, desc:默认110*/
        }
    }
}

47.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

48. 获取学生起立检测所有区域配置

48.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/regions

48.2 输入参数

无

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpRegionList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 学生起立检测所有区域, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <StudentsStoodUpRegion>
    <!--ro, opt, object, 规则区域-->
    <regionType>
      <!--ro, opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界]-->stand_up
    </regionType>
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--ro, opt, object, 坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </StudentsStoodUpRegion>
</StudentsStoodUpRegionList>

49. 配置学生起立检测所有区域配置

49.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/regions

49.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpRegionList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 学生起立检测所有区域, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <StudentsStoodUpRegion>
    <!--opt, object, 规则区域-->
    <regionType>
      <!--opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界]-->stand_up
    </regionType>
    <RegionCoordinatesList size="10">
      <!--opt, array, 坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <RegionCoordinates>
        <!--opt, object, 坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </StudentsStoodUpRegion>
</StudentsStoodUpRegionList>

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

50. 获取学生起立检测单个区域配置

50.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/regions/<regionID>

50.2 输入参数

无

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 规则区域, attr:version{req, string, 协议版本, range:[,]}-->
  <regionType>
    <!--ro, opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界]-->stand_up
  </regionType>
  <RegionCoordinatesList size="10">
    <!--ro, opt, array, 坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--ro, opt, object, 坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</StudentsStoodUpRegion>

51. 配置学生起立检测单个区域配置

51.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/studentsStoodUp/regions/<regionID>

51.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<StudentsStoodUpRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 规则区域, attr:version{req, string, 协议版本, range:[,]}-->
  <regionType>
    <!--opt, enum, 区域类型, subType:string, [stand_up#站立,sit_down#坐下,platform_boundary#平台边界]-->stand_up
  </regionType>
  <RegionCoordinatesList size="10">
    <!--opt, array, 坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--opt, object, 坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</StudentsStoodUpRegion>

51.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

52. 获取教师行为检测规则配置能力

52.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/teacherBehaviorDetect/capabilities?format=json

52.2 输入参数

无

52.3 输出参数

{
    "TeacherBehaviorDetectCap": {
    /*ro, req, object, 教师行为检测规则配置信息*/
        "enabled":  "true,false",
        /*ro, req, string, 规则使能开关, range:[,], desc:在录播主机中，该字段不配置给前端，仅表示设备是否接收前端上来的报警*/
        "deskHeight ": {
        /*ro, opt, object, 课桌桌面高度*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  250,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  60
            /*ro, opt, int, 示例值, range:[,], step:, unit:, unitType:*/
        },
        "podiumDesktopHeight ": {
        /*ro, opt, object, 讲台桌面高度*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  250,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  100
            /*ro, opt, int, 示例值, range:[,], step:, unit:, unitType:*/
        },
        "podiumHeight ": {
        /*ro, opt, object, 讲台授课区域地平面的高度*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  250,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  0
            /*ro, opt, int, 示例值, range:[,], step:, unit:, unitType:*/
        },
        "teacherRunSpeed ": {
        /*ro, opt, object, 奔跑速度检测*/
            "@min":  1,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  10,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  3
            /*ro, opt, int, 示例值, range:[,], step:, unit:, unitType:*/
        },
        "highThreshold": {
        /*ro, opt, object, 教师高度检测阈值*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  250,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  144
            /*ro, opt, int, 示例值, range:[,], step:, unit:, unitType:*/
        },
        "nonHumanTargetFilterEnabled":  "true,false",
        /*ro, opt, string, 非人目标过滤开关, range:[,]*/
        "alarmPicOverlayRuleEnabled":  "true,false",
        /*ro, opt, string, 教师行为检测报警抓图叠加智能规则信息使能, range:[,]*/
        "ruleType":  "teacher_area,podium_area,platform_boundary",
        /*ro, req, string, 规则类型, range:[,], desc:teacher_area-教师区域, podium_area-讲台区域,platform_boundary-平台边界*/
        "TeacherBehaviorDetectRegionListCap": [
        /*ro, req, array, 区域能力, subType:object, range:[,]*/
            {
                "regionType":  "teacher_area",
                /*ro, req, enum, 区域类型, subType:string, [teacher_area#教师区域,podium_area#讲台区域,platform_boundary#平台边界]*/
                "minSize":  3,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        ],
        "teacherTrackingMode": {
        /*ro, opt, object, 教师跟踪模式*/
            "@opt":  "realTime, dynamic",
            /*ro, opt, string, 取值范围, range:[,], desc:realTime为实时跟踪模式,教师走动时根据特写效果需求，对教师进行实时切割200万后跟踪，使教师在水平方向居于特写画面中心。dynamic为动态跟踪模式,教师在特写画面内小幅挪动，保持特写，教师走动离开特写区域后为教师全景画面，教师再次站定后切换到教师特写*/
            "@def":  "realTime"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "levelTrackingThreshold": {
        /*ro, opt, object, 教师水平跟踪阈值, desc:当teacherTrackingMode为realTime模式下生效。教师水平跟踪阈值,阈值越大,目标移动越大,才开始跟踪。*/
            "@min":  1,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  15,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  10
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "sensitivity": {
        /*ro, opt, object, 目标检测灵敏度*/
            "@min":  1,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  5,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  3
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "backgroundUpdate": {
        /*ro, opt, object, 背景更新速度, desc:背景模型更新的速度，值越大，背景更新速度越快。*/
            "@min":  1,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  5,
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  2
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        }
    }
}

53. 配置教师行为检测规则配置

53.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/teacherBehaviorDetect?format=json

53.2 输入参数

{
    "TeacherBehaviorDetect": {
    /*req, object, 教师行为检测规则配置信息*/
        "enabled":  true,
        /*req, bool, 规则使能开关, desc:在录播主机中，该字段不配置给前端，仅表示设备是否接收前端上来的报警*/
        "deskHeight":  60,
        /*opt, int, 课桌桌面高度, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：60*/
        "podiumDesktopHeight":  100,
        /*opt, int, 讲台桌面高度, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：100*/
        "podiumHeight":  0,
        /*opt, int, 讲台授课区域地平面的高度, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：0*/
        "teacherRunSpeed":  1,
        /*opt, int, 奔跑速度检测, range:[1,10], step:, unit:m/s, unitType:速度, desc:默认为：3*/
        "highThreshold":  144,
        /*opt, int, 教师高度检测阈值, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：144*/
        "nonHumanTargetFilterEnabled":  true,
        /*opt, bool, 非人目标过滤开关*/
        "alarmPicOverlayRuleEnabled":  false,
        /*opt, bool, 教师行为检测报警抓图叠加智能规则信息使能*/
        "TeacherBehaviorDetectRegionList": [
        /*req, array, 教师行为检测规则区域, subType:object, range:[,]*/
            {
                "TeacherBehaviorDetectRegion": {
                /*req, object, 教师行为检测规则某一个区域*/
                    "regionType":  "teacher_area",
                    /*req, enum, 区域类型, subType:string, [teacher_area#教师区域,podium_area#讲台区域,platform_boundary#平台边界]*/
                    "RegionCoordinatesList": [
                    /*req, array, 区域坐标, subType:object, range:[3,10]*/
                        {
                            "RegionCoordinates": {
                            /*req, object, 区域坐标, desc:屏幕左上角为坐标原点*/
                                "positionX":  0.000,
                                /*opt, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                                "positionY":  0.000
                                /*opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                            }
                        }
                    ]
                }
            }
        ],
        "Platform_boundary": {
        /*opt, object, 教师与学生分界线*/
            "LineCoordinatesList": [
            /*opt, array, 区域坐标, subType:object, range:[3,10]*/
                {
                    "LineCoordinates": {
                    /*opt, object, 区域坐标, desc:屏幕左上角为坐标原点*/
                        "positionX":  0.000,
                        /*opt, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                        "positionY":  0.000
                        /*opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                    }
                }
            ]
        },
        "Edge_line": {
        /*opt, object, 教师特写上边沿*/
            "LineCoordinatesList": [
            /*opt, array, 区域坐标, subType:object, range:[3,10]*/
                {
                    "LineCoordinates": {
                    /*opt, object, 区域坐标, desc:屏幕左上角为坐标原点*/
                        "positionX":  0.000,
                        /*opt, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                        "positionY":  0.000
                        /*opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                    }
                }
            ]
        },
        "teacherTrackingMode":  "realTime",
        /*opt, string, 教师跟踪模式, range:[,], desc:realTime为实时跟踪模式,教师走动时根据特写效果需求，对教师进行实时切割200万后跟踪，使教师在水平方向居于特写画面中心。dynamic为动态跟踪模式,教师在特写画面内小幅挪动，保持特写，教师走动离开特写区域后为教师全景画面，教师再次站定后切换到教师特写*/
        "levelTrackingThreshold":  1,
        /*opt, int, 教师水平跟踪阈值, range:[1,15], step:, unit:, unitType:, desc:当teacherTrackingMode为realTime模式下生效，教师目标水平移动跟踪阈值,阈值越大,目标移动越大,才开始跟踪。*/
        "sensitivity":  3,
        /*opt, int, 目标检测灵敏度, range:[1,5], step:, unit:, unitType:, desc:默认为：3*/
        "backgroundUpdate":  2
        /*opt, int, 背景更新速度, range:[1,5], step:, unit:, unitType:, desc:默认为:2；背景模型更新的速度，值越大，背景更新速度越快。*/
    }
}

53.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

54. 获取教师行为检测规则配置

54.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/teacherBehaviorDetect?format=json

54.2 输入参数

无

54.3 输出参数

{
    "TeacherBehaviorDetect": {
    /*ro, req, object, 教师行为检测规则配置信息*/
        "enabled":  true,
        /*ro, req, bool, 规则使能开关, desc:在录播主机中，该字段不配置给前端，仅表示设备是否接收前端上来的报警*/
        "deskHeight":  60,
        /*ro, opt, int, 课桌桌面高度, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：60*/
        "podiumDesktopHeight":  100,
        /*ro, opt, int, 讲台桌面高度, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：100*/
        "podiumHeight":  0,
        /*ro, opt, int, 讲台授课区域地平面的高度, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：0*/
        "teacherRunSpeed":  1,
        /*ro, opt, int, 奔跑速度检测, range:[1,10], step:, unit:m/s, unitType:速度, desc:默认为：3*/
        "highThreshold":  144,
        /*ro, opt, int, 教师高度检测阈值, range:[0,250], step:, unit:cm, unitType:长度, desc:默认为：144*/
        "nonHumanTargetFilterEnabled":  true,
        /*ro, opt, bool, 非人目标过滤开关*/
        "alarmPicOverlayRuleEnabled":  false,
        /*ro, opt, bool, 教师行为检测报警抓图叠加智能规则信息使能*/
        "TeacherBehaviorDetectRegionList": [
        /*ro, req, array, 教师行为检测规则区域, subType:object, range:[,]*/
            {
                "TeacherBehaviorDetectRegion": {
                /*ro, req, object, 教师行为检测规则某一个区域*/
                    "regionType":  "teacher_area",
                    /*ro, req, enum, 区域类型, subType:string, [teacher_area#教师区域,podium_area#讲台区域,platform_boundary#平台边界]*/
                    "RegionCoordinatesList": [
                    /*ro, req, array, 区域坐标, subType:object, range:[3,10]*/
                        {
                            "RegionCoordinates": {
                            /*ro, req, object, 区域坐标, desc:屏幕左上角为坐标原点*/
                                "positionX":  0.000,
                                /*ro, opt, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                                "positionY":  0.000
                                /*ro, opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                            }
                        }
                    ]
                }
            }
        ],
        "Platform_boundary": {
        /*ro, opt, object, 教师与学生分界线*/
            "LineCoordinatesList": [
            /*ro, opt, array, 区域坐标, subType:object, range:[3,10]*/
                {
                    "LineCoordinates": {
                    /*ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点*/
                        "positionX":  0.000,
                        /*ro, opt, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                        "positionY":  0.000
                        /*ro, opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                    }
                }
            ]
        },
        "Edge_line": {
        /*ro, opt, object, 教师特写上边沿*/
            "LineCoordinatesList": [
            /*ro, opt, array, 区域坐标, subType:object, range:[3,10]*/
                {
                    "LineCoordinates": {
                    /*ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点*/
                        "positionX":  0.000,
                        /*ro, opt, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                        "positionY":  0.000
                        /*ro, opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:默认为：0*/
                    }
                }
            ]
        },
        "teacherTrackingMode":  "realTime",
        /*ro, opt, string, 教师跟踪模式, range:[,], desc:realTime为实时跟踪模式,教师走动时根据特写效果需求，对教师进行实时切割200万后跟踪，使教师在水平方向居于特写画面中心。dynamic为动态跟踪模式,教师在特写画面内小幅挪动，保持特写，教师走动离开特写区域后为教师全景画面，教师再次站定后切换到教师特写*/
        "levelTrackingThreshold":  1,
        /*ro, opt, int, 教师水平跟踪阈值, range:[1,15], step:, unit:, unitType:, desc:当teacherTrackingMode为realTime模式下生效，教师目标水平移动跟踪阈值,阈值越大,目标移动越大,才开始跟踪。*/
        "sensitivity":  3,
        /*ro, opt, int, 目标检测灵敏度, range:[1,5], step:, unit:, unitType:, desc:默认为：3*/
        "backgroundUpdate":  2
        /*ro, opt, int, 背景更新速度, range:[1,5], step:, unit:, unitType:, desc:默认为:2；背景模型更新的速度，值越大，背景更新速度越快。*/
    }
}

55. 获取空座率规则配置能力

55.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/vacantSeatRate/capabilities?format=json

55.2 输入参数

无

55.3 输出参数

{
    "VacantSeatRateCap": {
    /*ro, req, object, 空座率配置能力;空座率=识别框内总人数/识别框座位总数*/
        "enabled": {
        /*ro, opt, object, 总使能*/
            "@opt": [true, false],
            /*ro, opt, array, 选项, subType:bool, range:[,]*/
            "@def":  true
            /*ro, opt, bool, 默认值*/
        },
        "RuleInfoCap": {
        /*ro, opt, object, 规则信息, desc:规则数目前仅支持1个*/
            "maxSize":  1,
            /*ro, req, int, 最大支持的规则数能力, range:[,], step:, unit:, unitType:*/
            "ruleID": {
            /*ro, req, object, 规则ID*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "seatNum": {
            /*ro, req, object, 该规则内的座位总数*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  0
                /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "RegionCap": {
            /*ro, req, object, 规则区域能力, desc:4~10边形*/
                "minSize":  4,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左上角为坐标原点*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            }
        },
        "isSupportSearch":  true
        /*ro, req, bool, 是否支持当前空座率信息查询, desc:对应接口:/ISAPI/Intelligent/channels/<channelID>/vacantSeatRate/search?format=json*/
    }
}

56. 查询当前空座率信息

56.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/vacantSeatRate/search?format=json

56.2 输入参数

无

56.3 输出参数

{
    "VacantSeatRate": [
    /*ro, opt, array, 空座率事件信息, subType:object, range:[,]*/
        {
            "ruleID":  1,
            /*ro, req, int, 规则ID, range:[,1], step:, unit:, unitType:*/
            "rateValue":  66
            /*ro, req, int, 空座率 1-100%, range:[1,100], step:, unit:, unitType:, desc:空座率=识别框内总人数/识别框座位总数*/
        }
    ]
}

57. 获取空座率规则配置

57.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/vacantSeatRate?format=json

57.2 输入参数

无

57.3 输出参数

{
    "VacantSeatRate": {
    /*ro, req, object, 空座率配置;空座率=识别框内总人数/识别框座位总数*/
        "enabled":  true,
        /*ro, req, bool, 总使能*/
        "RuleInfo": [
        /*ro, opt, array, 规则信息, subType:object, range:[,1], desc:规则数目前仅支持1个*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,1], step:, unit:, unitType:*/
                "seatNum":  0,
                /*ro, req, int, 该规则内的座位总数, range:[0,100], step:, unit:, unitType:*/
                "Region": [
                /*ro, req, array, 规则区域能力, subType:object, range:[4,10], desc:屏幕左上角为坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ]
            }
        ]
    }
}

58. 设置空座率规则配置

58.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/vacantSeatRate?format=json

58.2 输入参数

{
    "VacantSeatRate": {
    /*req, object, 空座率配置;空座率=识别框内总人数/识别框座位总数*/
        "enabled":  true,
        /*req, bool, 总使能*/
        "RuleInfo": [
        /*opt, array, 规则信息, subType:object, range:[,1], desc:规则数目前仅支持1个*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[,1], step:, unit:, unitType:*/
                "dede":  11,
                /*opt, int, 2sws, range:[,], step:, unit:, unitType:*/
                "seatNum":  100,
                /*req, int, 该规则内的座位总数, range:[1,100], step:, unit:, unitType:*/
                "Region": [
                /*req, array, 规则区域能力, subType:object, range:[4,10], desc:4~10边形*/
                    {
                        "x":  0.120,
                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ]
            }
        ]
    }
}

58.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

59. 获取抬头率查询能力

59.1 命令

GET /ISAPI/Intelligent/headRiseRate/search/capabilities?format=json

59.2 输入参数

无

59.3 输出参数

{
    "SearchDescription": {
    /*ro, opt, object, 搜索描述*/
        "TimeSpanList": [
        /*ro, req, array, 时间列表, subType:object, range:[,]*/
            {
                "@size":  1,
                /*ro, opt, int, 数组大小, range:[,], step:, unit:, unitType:*/
                "startTime": {
                /*ro, req, object, 开始时间*/
                    "@min":  0,
                    /*ro, opt, int, 时间字符串长度最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  0
                    /*ro, opt, int, 时间字符串长度最大值, range:[,], step:, unit:, unitType:*/
                },
                "endTime": {
                /*ro, req, object, 结束时间*/
                    "@min":  0,
                    /*ro, opt, int, 时间字符串长度最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  0
                    /*ro, opt, int, 时间字符串长度最大值, range:[,], step:, unit:, unitType:*/
                }
            }
        ]
    }
}

60. 查询抬头率

60.1 命令

POST /ISAPI/Intelligent/headRiseRate/search?format=json

60.2 输入参数

{
    "SearchDescription": {
    /*opt, object, 搜索条件*/
        "TimeSpanList": [
        /*req, array, 时间间隔列表, subType:object, range:[,]*/
            {
                "startTime":  "2004-05-03T17:30:08+08:00",
                /*req, datetime, 起始时间*/
                "endTime":  "2004-05-03T17:30:08+08:00"
                /*req, datetime, 结束时间*/
            }
        ]
    }
}

60.3 输出参数

{
    "HeadRiseRate": [
    /*ro, req, array, 查询结果, subType:object, range:[,]*/
        {
            "channelID":  1,
            /*ro, req, int, 通道号, range:[,], step:, unit:, unitType:*/
            "RateList": [
            /*ro, req, array, 抬头率列表, subType:object, range:[,]*/
                {
                    "time":  "2019-04-22T15:39:01+08:00",
                    /*ro, req, datetime, 统计抬头率的时刻的绝对时间*/
                    "rateValue":  66
                    /*ro, req, int, 抬头率, range:[1,100], step:, unit:, unitType:,*/
                }
            ]
        }
    ]
}

61. 获取学生异常行为识别图片参数能力

61.1 命令

GET /ISAPI/Intelligent/studentBehavior/picture/capabilities?format=json

61.2 输入参数

无

61.3 输出参数

{
    "PictureCfg": {
    /*ro, opt, object, 图片参数*/
        "SubscribeUploadPicture": {
        /*ro, opt, object, 订阅上传图片参数, desc:用户指定了该参数，任何事件上传链路（萤石布防，SDK布防，ISUP布防，ISAPI布防等）只上报订阅的图片信息*/
            "posture": {
            /*ro, opt, object, 姿态, desc:"sitting,standingUp"*/
                "@opt": ["sitting", "standingUp"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": []
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "listening": {
            /*ro, opt, object, 听讲, desc:"yes,no,"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "reading": {
            /*ro, opt, object, 阅读, desc:"yes,no"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "writing": {
            /*ro, opt, object, 书写, desc:"yes,no"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "raisingHand": {
            /*ro, opt, object, 举手, desc:"yes,no"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "headOnDesk": {
            /*ro, opt, object, 趴桌子, desc:"yes,no"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "playMobilePhone": {
            /*ro, opt, object, 玩手机, desc:"yes,no"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "direction": {
            /*ro, opt, object, 朝向, desc:"forward,backward,leftward,rightward,",*/
                "@opt": ["forward", "backward", "leftward", "rightward"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["forward", "backward", "leftward", "rightward"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "discuss": {
            /*ro, opt, object, 讨论, desc:"yes,no"*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            },
            "withBackToCamera": {
            /*ro, opt, object, 背坐, desc:"yes,no",背坐和朝向中朝后的区别是:背坐是身体也转到后面去了，朝后是指头部朝后*/
                "@opt": ["yes", "no"],
                /*ro, opt, array, 可选值, subType:string, range:[,]*/
                "@def": ["no"]
                /*ro, opt, array, 默认值, subType:string, range:[,]*/
            }
        }
    }
}

62. 获取学生异常行为识别图片参数

62.1 命令

GET /ISAPI/Intelligent/studentBehavior/picture?format=json

62.2 输入参数

无

62.3 输出参数

{
    "PictureCfg": {
    /*ro, opt, object, 学生异常行为识别报警图片参数*/
        "SubscribeUploadPicture": {
        /*ro, opt, object, 订阅图片参数, desc:用户指定了该参数，任何事件上传链路（萤石布防，SDK布防，ISUP布防，ISAPI布防等）只上报订阅的图片信息*/
            "posture": ["standingUp"],
            /*ro, opt, array, 姿态, subType:string, range:[,], desc:"sitting,standingUp",如果数组为空，则表示不要该类型的所有图片*/
            "listening": ["no"],
            /*ro, opt, array, 听讲, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "reading": ["no"],
            /*ro, opt, array, 阅读, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "writing": ["no"],
            /*ro, opt, array, 书写, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "raisingHand": ["no"],
            /*ro, opt, array, 举手, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "headOnDesk": ["no"],
            /*ro, opt, array, 趴桌子, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "playMobilePhone": ["no"],
            /*ro, opt, array, 玩手机, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "direction": ["forward", "backward", "leftward", "rightward"],
            /*ro, opt, array, 朝向, subType:string, range:[,], desc:"forward,backward,leftward,rightward",如果数组为空，则表示不要该类型的所有图片*/
            "discuss": ["yes"],
            /*ro, opt, array, 讨论, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "withBackToCamera": ["yes"]
            /*ro, opt, array, 背坐, subType:string, range:[,], desc:desc:"yes,no",如果数组为空，则表示不要该类型的所有图片,背坐和朝向中朝后的区别是:背坐是身体也转到后面去了，朝后是指头部朝后*/
        }
    }
}

63. 配置学生异常行为识别图片参数

63.1 命令

PUT /ISAPI/Intelligent/studentBehavior/picture?format=json

63.2 输入参数

{
    "PictureCfg": {
    /*opt, object, 学生异常行为识别报警图片参数*/
        "SubscribeUploadPicture": {
        /*opt, object, 订阅图片参数, desc:用户指定了该参数，任何事件上传链路（萤石布防，SDK布防，ISUP布防，ISAPI布防等）只上报订阅的图片信息*/
            "posture": ["standingUp"],
            /*opt, array, 姿态, subType:string, range:[,], desc:"sitting,standingUp",如果数组为空，则表示不要该类型的所有图片*/
            "listening": ["no"],
            /*opt, array, 听讲, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "reading": ["no"],
            /*opt, array, 阅读, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "writing": ["no"],
            /*opt, array, 书写, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "raisingHand": ["no"],
            /*opt, array, 举手, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "headOnDesk": ["no"],
            /*opt, array, 趴桌子, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "playMobilePhone": ["no"],
            /*opt, array, 玩手机, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "direction": ["forward", "backward", "leftward", "rightward"],
            /*opt, array, 朝向, subType:string, range:[,], desc:"forward,backward,leftward,rightward",如果数组为空，则表示不要该类型的所有图片*/
            "discuss": ["yes"],
            /*opt, array, 讨论, subType:string, range:[,], desc:"yes,no",如果数组为空，则表示不要该类型的所有图片*/
            "withBackToCamera": ["yes"]
            /*opt, array, 背坐, subType:string, range:[,], desc:desc:"yes,no",如果数组为空，则表示不要该类型的所有图片,背坐和朝向中朝后的区别是:背坐是身体也转到后面去了，朝后是指头部朝后*/
        }
    }
}

63.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

64. 获取教师异常行为识别事件查询能力

64.1 命令

GET /ISAPI/Intelligent/teacherBehavior/search/capabilities?format=json

64.2 输入参数

无

64.3 输出参数

{
    "SearchDescription": {
    /*ro, opt, object, 未定义*/
        "searchID": {
        /*ro, opt, object, 搜索记录唯一标识, desc:在条件不变的情况下，searchID的内容不变（用于标明检索是否为同一次检索，在设备性能受限时，通过多次下发条件（searchID需保持不变）并返回进度来实现异步检索）*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "maxResults": {
        /*ro, opt, object, 本次查询最大记录数*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "timeSpanList": [
        /*ro, opt, array, 时间段数组, subType:object, range:[,]*/
            {
                "@size":  1,
                /*ro, req, int, timeSpanList数组大小, range:[,], step:, unit:, unitType:*/
                "startTime": {
                /*ro, opt, object, 开始时间*/
                    "@min":  0,
                    /*ro, req, int, 时间字符串长度最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  0
                    /*ro, req, int, 时间字符串长度最大值, range:[,], step:, unit:, unitType:*/
                },
                "endTime": {
                /*ro, opt, object, 结束时间*/
                    "@min":  0,
                    /*ro, req, int, 时间字符串长度最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  0
                    /*ro, req, int, 时间字符串长度最大值, range:[,], step:, unit:, unitType:*/
                }
            }
        ]
    }
}

65. 查询教师异常行为识别事件

65.1 命令

POST /ISAPI/Intelligent/teacherBehavior/search?format=json

65.2 输入参数

{
    "SearchDescription": {
    /*opt, object, 搜索描述*/
        "searchID":  "test",
        /*opt, string, 搜索记录唯一标识, range:[,], desc:在条件不变的情况下，searchID的内容不变（用于标明检索是否为同一次检索，在设备性能受限时，通过多次下发条件（searchID需保持不变）并返回进度来实现异步检索）*/
        "searchResultPosition":  0,
        /*req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
        "maxResults":  100,
        /*opt, int, 本次查询最大记录数, range:[,], step:, unit:, unitType:, desc:不填默认设备支持的最大值,对应/ISAPI/Intelligent/teacherBehavior/search/capabilities?format=json中SearchDescription.maxResults.@max*/
        "timeSpanList": [
        /*opt, array, 时间段列表, subType:object, range:[,]*/
            {
                "startTime":  "2019-04-22T15:39:01+08:00",
                /*req, datetime, 开始时间*/
                "endTime":  "2019-04-22T16:39:01+08:00"
                /*req, datetime, 结束时间*/
            }
        ]
    }
}

65.3 输出参数

{
    "SearchResult": {
    /*ro, opt, object, 搜索结果*/
        "responseStatusStrg":  "OK",
        /*ro, opt, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]*/
        "numOfMatches":  1,
        /*ro, opt, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:*/
        "totalMatches":  1,
        /*ro, opt, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:*/
        "Target": [
        /*ro, opt, array, 目标信息, subType:object, range:[,]*/
            {
                "time":  "2017-08-25T11:34:59+08:00",
                /*ro, req, datetime, 时间*/
                "personNum":  0,
                /*ro, opt, int, 在讲台上人数, range:[,], step:, unit:, unitType:*/
                "isWritingOnBlackboard":  true,
                /*ro, opt, bool, 是否在写板书*/
                "isGivingLesson":  false,
                /*ro, opt, bool, 是否在授课, desc:讲台1人+面向学生*/
                "isPlayCellPhone":  true,
                /*ro, opt, bool, 是否在玩手机*/
                "isLeftFromDesk":  false,
                /*ro, opt, bool, 是否离开讲台, desc:从讲台规则左右两侧离开*/
                "imageURL":  "http://127.0.0.1",
                /*ro, opt, string, 图片URL, range:[,]*/
                "isTeachTextBooksOrTestPaper":  true,
                /*ro, opt, bool, 是否教师讲授课本或试题, desc:讲台1人+面向学生or低头+手拿课本or试卷*/
                "isPointBlackboard":  true,
                /*ro, opt, bool, 是否教师手指黑板*/
                "isPointProjector":  true,
                /*ro, opt, bool, 是否教师手指投影*/
                "isNoGesture":  true,
                /*ro, opt, bool, 是否教师无手势*/
                "isDescribeWithBothHands":  true,
                /*ro, opt, bool, 是否教师双手比划*/
                "isRaiseHand":  true,
                /*ro, opt, bool, 是否教师做举手状*/
                "isHeadDownOrBendDown":  true,
                /*ro, opt, bool, 是否教师低头或弯腰操作桌面*/
                "isTurnAround":  true,
                /*ro, opt, bool, 是否教师转身*/
                "isWalkAround":  true
                /*ro, opt, bool, 是否教师来回走动, desc:讲台区域内走来走去*/
            }
        ]
    }
}

66. 获取进入区域参数配置能力

66.1 命令

GET /ISAPI/Smart/regionEntrance/<channelID>/capabilities

66.2 输入参数

无

66.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionEntrance xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取进入区域参数配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->test
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化屏幕尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化屏幕宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化屏幕高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionEntranceRegionList size="4">
    <!--ro, opt, array, 区域入侵区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionEntranceRegion>
      <!--ro, opt, object, 入侵区域-->
      <id>
        <!--ro, req, string, 序号, range:[,]-->1
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, req, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </sensitivityLevel>
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:增加size表示进入区域支持点能力,若设备不返回size节点,默认为4个节点-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <maxRegionCoordinatesNum>
        <!--ro, opt, int, 最大区域点数目, range:[,], step:, unit:, unitType:-->1
      </maxRegionCoordinatesNum>
      <minRegionCoordinatesNum>
        <!--ro, opt, int, 最小区域点数目, range:[,], step:, unit:, unitType:-->1
      </minRegionCoordinatesNum>
      <detectionTarget>
        <!--ro, opt, enum, 检测目标, subType:string, [all#所有目标,human#人,vehicle#车,others#其他]-->all
      </detectionTarget>
      <alarmConfidence opt="low,mediumLow,mediumHigh,high" def="low">
        <!--ro, opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认:low-->low
      </alarmConfidence>
      <recordConfidence opt="low,mediumLow,mediumHigh,high" def="low">
        <!--ro, opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认:low-->low
      </recordConfidence>
    </RegionEntranceRegion>
  </RegionEntranceRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene opt="true,false">
    <!--ro, req, bool, 是否支持多场景, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isSupportMultiScene>
  <isSupportHumanMisinfoFilter>
    <!--ro, opt, bool, 人体去误报, desc:支持返回true,不支持不返回-->true
  </isSupportHumanMisinfoFilter>
  <isSupportVehicleMisinfoFilter>
    <!--ro, opt, bool, 车辆去误报, desc:支持返回true,不支持不返回-->true
  </isSupportVehicleMisinfoFilter>
  <isSupportTargetMultiSelect>
    <!--ro, opt, bool, 检测目标多选, desc:支持返回true,不支持不返回-->true
  </isSupportTargetMultiSelect>
  <isSupportAllDayUpload>
    <!--ro, opt, bool, 是否支持全天事件上传-->true
  </isSupportAllDayUpload>
</RegionEntrance>

67. 获取单个通道进入区域参数配置

67.1 命令

GET /ISAPI/Smart/regionEntrance/<channelID>

67.2 输入参数

无

67.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionEntrance xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 进入区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionEntranceRegionList>
    <!--ro, opt, object, 区域列表-->
    <RegionEntranceRegion>
      <!--ro, opt, object, 入侵区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--ro, opt, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--ro, opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
      </detectionTarget>
      <humanMisinfoFilterEnabled>
        <!--ro, opt, bool, 人体去误报使能-->true
      </humanMisinfoFilterEnabled>
      <vehicleMisinfoFilterEnabled>
        <!--ro, opt, bool, 车辆去误报使能-->true
      </vehicleMisinfoFilterEnabled>
      <priority>
        <!--ro, opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
      </priority>
      <alarmConfidence>
        <!--ro, opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </alarmConfidence>
      <recordConfidence>
        <!--ro, opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </recordConfidence>
    </RegionEntranceRegion>
  </RegionEntranceRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
  <humanMisinfoFilterEnabled>
    <!--ro, opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--ro, opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
</RegionEntrance>

68. 配置单个通道进入区域参数配置

68.1 命令

PUT /ISAPI/Smart/regionEntrance/<channelID>

68.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionEntrance xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 进入区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->test
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionEntranceRegionList>
    <!--opt, object, 区域列表-->null
    <RegionEntranceRegion>
      <!--opt, object, 入侵区域-->null
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--opt, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--opt, object, 区域坐标列表-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标-->
          <positionX>
            <!--req, int, x坐标, range:[,], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[,], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
      </detectionTarget>
      <humanMisinfoFilterEnabled>
        <!--opt, bool, 人体去误报使能-->true
      </humanMisinfoFilterEnabled>
      <vehicleMisinfoFilterEnabled>
        <!--opt, bool, 车辆去误报使能-->true
      </vehicleMisinfoFilterEnabled>
      <priority>
        <!--opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
      </priority>
      <alarmConfidence>
        <!--opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </alarmConfidence>
      <recordConfidence>
        <!--opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </recordConfidence>
    </RegionEntranceRegion>
  </RegionEntranceRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
  <humanMisinfoFilterEnabled>
    <!--opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
</RegionEntrance>

68.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

69. 获取进入区域单个配置

69.1 命令

GET /ISAPI/Smart/regionEntrance/<channelID>/regions/<regionID>

69.2 输入参数

无

69.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionEntranceRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 进入区域单个配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, req, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <detectionTarget>
    <!--ro, opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
  </detectionTarget>
  <humanMisinfoFilterEnabled>
    <!--ro, opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--ro, opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
  <priority>
    <!--ro, opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
  </priority>
  <alarmConfidence>
    <!--ro, opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </alarmConfidence>
  <recordConfidence>
    <!--ro, opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </recordConfidence>
</RegionEntranceRegion>

70. 配置进入区域单个配置

70.1 命令

PUT /ISAPI/Smart/regionEntrance/<channelID>/regions/<regionID>

70.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionEntranceRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 进入区域单个配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--req, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <detectionTarget>
    <!--opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
  </detectionTarget>
  <humanMisinfoFilterEnabled>
    <!--opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
  <priority>
    <!--opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
  </priority>
  <alarmConfidence>
    <!--opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </alarmConfidence>
  <recordConfidence>
    <!--opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </recordConfidence>
</RegionEntranceRegion>

70.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

71. 获取进入区域事件联动配置

71.1 命令

GET /ISAPI/Event/triggers/regionEntrance-<channelID>

71.2 输入参数

无

71.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 获取进入区域事件联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->regionEntrance
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO通道号ID, range:[,]-->１
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出通道ID, range:[,]-->１
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <SupplementLightAlarm>
        <!--ro, opt, object, 补光灯报警联动参数, desc:当notificationMethod = supplementLight生效-->
        <durationTime>
          <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间-->5
        </durationTime>
      </SupplementLightAlarm>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

72. 配置进入区域事件联动配置

72.1 命令

PUT /ISAPI/Event/triggers/regionEntrance-<channelID>

72.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 进入区域事件联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->regionEntrance
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO通道号ID, range:[,]-->１
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出通道ID, range:[,]-->１
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <SupplementLightAlarm>
        <!--opt, object, 补光灯报警联动参数, desc:当notificationMethod = supplementLight生效-->
        <durationTime>
          <!--opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间-->5
        </durationTime>
      </SupplementLightAlarm>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

72.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

73. 获取进入区域单个通道时间布防配置

73.1 命令

GET /ISAPI/Event/schedules/regionEntrances/regionEntrance-<channelID>

73.2 输入参数

无

73.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个通道进入区域布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->regionEntrance
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, object, 假日布防时间-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

74. 配置进入区域单个通道时间布防配置

74.1 命令

PUT /ISAPI/Event/schedules/regionEntrances/regionEntrance-<channelID>

74.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个通道进入区域布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->regionEntrance
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, object, 假日布防时间-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

74.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

75. 获取离开区域参数配置能力

75.1 命令

GET /ISAPI/Smart/regionExiting/<channelID>/capabilities

75.2 输入参数

无

75.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionExiting xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 获取进入区域参数配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化屏幕尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化屏幕宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化屏幕高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionExitingRegionList size="4">
    <!--ro, opt, array, 区域入侵区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionExitingRegion>
      <!--ro, opt, object, 入侵区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, req, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], desc:增加size表示进入区域支持点能力,若设备不返回size节点,默认为4个节点-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <maxRegionCoordinatesNum>
        <!--ro, opt, int, 最大区域点数目, range:[,], step:, unit:, unitType:-->1
      </maxRegionCoordinatesNum>
      <minRegionCoordinatesNum>
        <!--ro, opt, int, 最小区域点数目, range:[,], step:, unit:, unitType:-->1
      </minRegionCoordinatesNum>
      <detectionTarget opt="all,human,vehicle,others">
        <!--ro, opt, enum, 检测目标, subType:string, [all#所有目标,human#人,vehicle#车,others#其他], attr:opt{req, string, 取值范围, range:[,]}-->all
      </detectionTarget>
      <alarmConfidence opt="low,mediumLow,mediumHigh,high" def="low">
        <!--ro, opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认:low-->low
      </alarmConfidence>
      <recordConfidence opt="low,mediumLow,mediumHigh,high" def="low">
        <!--ro, opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认:low-->low
      </recordConfidence>
    </RegionExitingRegion>
  </RegionExitingRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, req, bool, 是否支持多场景-->true
  </isSupportMultiScene>
  <isSupportHumanMisinfoFilter>
    <!--ro, opt, bool, 人体去误报, desc:支持返回true,不支持不返回-->true
  </isSupportHumanMisinfoFilter>
  <isSupportVehicleMisinfoFilter>
    <!--ro, opt, bool, 车辆去误报, desc:支持返回true,不支持不返回-->true
  </isSupportVehicleMisinfoFilter>
  <isSupportTargetMultiSelect>
    <!--ro, opt, bool, 检测目标多选, desc:支持返回true,不支持不返回-->true
  </isSupportTargetMultiSelect>
  <isSupportAllDayUpload>
    <!--ro, opt, bool, 是否支持全天事件上传-->true
  </isSupportAllDayUpload>
</RegionExiting>

76. 获取单个通道离开区域参数

76.1 命令

GET /ISAPI/Smart/regionExiting/<channelID>

76.2 输入参数

无

76.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionExiting xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 离开区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionExitingRegionList>
    <!--ro, opt, array, 离开区域区域列表, subType:object, range:[,]-->
    <RegionExitingRegion>
      <!--ro, opt, object, 离开区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--ro, opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
      </detectionTarget>
      <humanMisinfoFilterEnabled>
        <!--ro, opt, bool, 人体去误报使能-->true
      </humanMisinfoFilterEnabled>
      <vehicleMisinfoFilterEnabled>
        <!--ro, opt, bool, 车辆去误报使能-->true
      </vehicleMisinfoFilterEnabled>
      <priority>
        <!--ro, opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
      </priority>
      <alarmConfidence>
        <!--ro, opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </alarmConfidence>
      <recordConfidence>
        <!--ro, opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </recordConfidence>
    </RegionExitingRegion>
  </RegionExitingRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
  <humanMisinfoFilterEnabled>
    <!--ro, opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--ro, opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
</RegionExiting>

77. 配置单个通道离开区域参数

77.1 命令

PUT /ISAPI/Smart/regionExiting/<channelID>

77.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionExiting xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 离开区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionExitingRegionList>
    <!--opt, array, 离开区域区域列表, subType:object, range:[,]-->
    <RegionExitingRegion>
      <!--opt, object, 离开区域-->
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
      </detectionTarget>
      <humanMisinfoFilterEnabled>
        <!--opt, bool, 人体去误报使能-->true
      </humanMisinfoFilterEnabled>
      <vehicleMisinfoFilterEnabled>
        <!--opt, bool, 车辆去误报使能-->true
      </vehicleMisinfoFilterEnabled>
      <priority>
        <!--opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
      </priority>
      <alarmConfidence>
        <!--opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </alarmConfidence>
      <recordConfidence>
        <!--opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
      </recordConfidence>
    </RegionExitingRegion>
  </RegionExitingRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
  <humanMisinfoFilterEnabled>
    <!--opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
</RegionExiting>

77.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

78. 获取离开区域单个配置

78.1 命令

GET /ISAPI/Smart/regionExiting/<channelID>/regions/<regionID>

78.2 输入参数

无

78.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionExitingRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 离开区域单个配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <detectionTarget>
    <!--ro, opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
  </detectionTarget>
  <humanMisinfoFilterEnabled>
    <!--ro, opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--ro, opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
  <priority>
    <!--ro, opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
  </priority>
  <alarmConfidence>
    <!--ro, opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </alarmConfidence>
  <recordConfidence>
    <!--ro, opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </recordConfidence>
</RegionExitingRegion>

79. 配置离开区域单个配置

79.1 命令

PUT /ISAPI/Smart/regionExiting/<channelID>/regions/<regionID>

79.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionExitingRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 离开区域单个配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <detectionTarget>
    <!--opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车,others#其他]-->all
  </detectionTarget>
  <humanMisinfoFilterEnabled>
    <!--opt, bool, 人体去误报使能-->true
  </humanMisinfoFilterEnabled>
  <vehicleMisinfoFilterEnabled>
    <!--opt, bool, 车辆去误报使能-->true
  </vehicleMisinfoFilterEnabled>
  <priority>
    <!--opt, enum, 优先级, subType:string, [low#低,middle#中,high#高]-->low
  </priority>
  <alarmConfidence>
    <!--opt, enum, 报警置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </alarmConfidence>
  <recordConfidence>
    <!--opt, enum, 录像置信度, subType:string, [low#低,mediumLow#较低,mediumHigh#较高,high#高], desc:默认:low-->low
  </recordConfidence>
</RegionExitingRegion>

79.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

80. 获取离开区域事件联动配置

80.1 命令

GET /ISAPI/Event/triggers/regionExiting-<channelID>

80.2 输入参数

无

80.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 离开区域事件联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->regionEntrance
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO通道号ID, range:[,]-->１
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出通道ID, range:[,]-->１
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <SupplementLightAlarm>
        <!--ro, opt, object, 补光灯报警联动参数, desc:当notificationMethod = supplementLight生效-->
        <durationTime>
          <!--ro, opt, int, 补光灯持续时长, range:[0,90], step:, unit:s, unitType:时间-->5
        </durationTime>
      </SupplementLightAlarm>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

81. 配置离开区域事件联动参数

81.1 命令

PUT /ISAPI/Event/triggers/regionExiting-<channelID>

81.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 离开区域事件联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->regionExiting
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, 报警联动IO输出口, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 报警联动数字通道IO输出口, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
        <presetDurationTime>
          <!--opt, int, 预设持续时间, range:[,], step:, unit:s, unitType:时间, desc:seconds-->1
        </presetDurationTime>
      </ptzAction>
      <cellphoneNumber>
        <!--opt, string, 电话号码, range:[0,11]-->test
      </cellphoneNumber>
      <LightAudioByIPAction>
        <!--opt, object, 声光报警通过IP地址联动, desc:当notificationMethod为LightAudioByIP（声光报警通过IP地址联动）时有效-->
        <notificationType>
          <!--req, enum, 声光报警联动类型, subType:string, [audio#声音,whiteLight#白光灯]-->audio
        </notificationType>
        <notificationName>
          <!--opt, string, 声光报警联动方式的名称, range:[,], desc:格式为 IP:port:声音/光，eg.10.16.99.98:8000:光-->10.16.99.98:8000:光
        </notificationName>
      </LightAudioByIPAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

81.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

82. 获取离开区域单个通道时间布防配置

82.1 命令

GET /ISAPI/Event/schedules/regionExitings/regionExiting-<channelID>

82.2 输入参数

无

82.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 离开区域布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->regionExiting
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, object, 假日布防时间-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

83. 配置离开区域单个通道时间布防配置

83.1 命令

PUT /ISAPI/Event/schedules/regionExitings/regionExiting-<channelID>

83.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 离开区域布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->regionExiting
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, object, 假日布防时间-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

83.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

84. 获取徘徊侦测能力

84.1 命令

GET /ISAPI/Smart/loitering/<channelID>/capabilities

84.2 输入参数

无

84.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Loitering xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 徘徊侦测能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <LoiteringRegionList size="4">
    <!--ro, opt, array, 徘徊检测区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <LoiteringRegion>
      <!--ro, opt, object, 徘徊检测区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, opt, int, 灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:1 is the least sensitive-->1
      </sensitivityLevel>
      <timeThreshold min="1" max="10">
        <!--ro, req, int, 时间阈值, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </LoiteringRegion>
  </LoiteringRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Loitering>

85. 获取单个通道徘徊侦测参数

85.1 命令

GET /ISAPI/Smart/loitering/<channelID>

85.2 输入参数

无

85.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Loitering xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个通道徘徊侦测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <LoiteringRegionList>
    <!--ro, opt, array, 徘徊侦测区域列表, subType:object, range:[,]-->
    <LoiteringRegion>
      <!--ro, opt, object, 徘徊侦测区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--ro, opt, int, 灵敏度, range:[0,100], step:, unit:, unitType:, desc:0 is the least sensitive-->1
      </sensitivityLevel>
      <timeThreshold>
        <!--ro, opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->1
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </LoiteringRegion>
  </LoiteringRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Loitering>

86. 配置单个通道徘徊侦测参数

86.1 命令

PUT /ISAPI/Smart/loitering/<channelID>

86.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Loitering xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个通道徘徊侦测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <LoiteringRegionList>
    <!--opt, array, 徘徊侦测区域列表, subType:object, range:[,]-->
    <LoiteringRegion>
      <!--opt, object, 徘徊侦测区域-->
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--opt, int, 灵敏度, range:[0,100], step:, unit:, unitType:, desc:0 is the least sensitive-->1
      </sensitivityLevel>
      <timeThreshold>
        <!--opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->1
      </timeThreshold>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </LoiteringRegion>
  </LoiteringRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Loitering>

86.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

87. 获取区域单个配置

87.1 命令

GET /ISAPI/Smart/loitering/<channelID>/regions/<regionID>

87.2 输入参数

无

87.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LoiteringRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 徘徊侦测区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, opt, int, 灵敏度, range:[0,100], step:, unit:, unitType:, desc:0 is the least sensitive-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--ro, opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->1
  </timeThreshold>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</LoiteringRegion>

88. 配置区域单个配置

88.1 命令

PUT /ISAPI/Smart/loitering/<channelID>/regions/<regionID>

88.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LoiteringRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 徘徊侦测区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--opt, int, 灵敏度, range:[0,100], step:, unit:, unitType:, desc:0 is the least sensitive-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->1
  </timeThreshold>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</LoiteringRegion>

88.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

89. 获取徘徊侦测联动配置

89.1 命令

GET /ISAPI/Event/triggers/loitering-<channelID>

89.2 输入参数

无

89.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 徘徊侦测联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->loitering
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

90. 配置徘徊侦测联动配置

90.1 命令

PUT /ISAPI/Event/triggers/loitering-<channelID>

90.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 徘徊侦测联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->loitering
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

90.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

91. 获取徘徊侦测单个通道时间布防配置

91.1 命令

GET /ISAPI/Event/schedules/loiterings/loitering-<channelID>

91.2 输入参数

无

91.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 徘徊侦测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->loitering
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, object, 假日布防时间-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

92. 配置徘徊侦测单个通道时间布防配置

92.1 命令

PUT /ISAPI/Event/schedules/loiterings/loitering-<channelID>

92.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 徘徊侦测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->loitering
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, object, 假日布防时间-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

92.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

93. 获取人员聚集能力

93.1 命令

GET /ISAPI/Smart/group/<channelID>/capabilities

93.2 输入参数

无

93.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Group xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取人员聚集能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <GroupRegionList size="4">
    <!--ro, opt, object, 人员聚集区域列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <GroupRegion>
      <!--ro, opt, object, 人员聚集区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <objectOccupation min="1" max="100">
        <!--ro, req, int, 占比, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </objectOccupation>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </GroupRegion>
  </GroupRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Group>

94. 获取单个通道人员聚集参数

94.1 命令

GET /ISAPI/Smart/group/<channelID>

94.2 输入参数

无

94.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Group xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个通道人员聚集参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <GroupRegionList>
    <!--ro, opt, array, 人员聚集区域列表, subType:object, range:[,]-->
    <GroupRegion>
      <!--ro, opt, object, 人员聚集区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <objectOccupation>
        <!--ro, opt, int, 占比, range:[,], step:, unit:, unitType:-->1
      </objectOccupation>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </GroupRegion>
  </GroupRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Group>

95. 配置单个通道人员聚集参数

95.1 命令

PUT /ISAPI/Smart/group/<channelID>

95.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Group xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个通道人员聚集参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <GroupRegionList>
    <!--opt, array, 人员聚集区域列表, subType:object, range:[,]-->
    <GroupRegion>
      <!--opt, object, 人员聚集区域-->
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <objectOccupation>
        <!--opt, int, 占比, range:[,], step:, unit:, unitType:-->1
      </objectOccupation>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </GroupRegion>
  </GroupRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Group>

95.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

96. 获取人员聚集区域单个配置

96.1 命令

GET /ISAPI/Smart/group/<channelID>/regions/<regionID>

96.2 输入参数

无

96.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GroupRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员聚集区域单个配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->1
  </id>
  <objectOccupation>
    <!--ro, opt, int, 占比, range:[,], step:, unit:, unitType:-->1
  </objectOccupation>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</GroupRegion>

97. 配置人员聚集区域单个配置

97.1 命令

PUT /ISAPI/Smart/group/<channelID>/regions/<regionID>

97.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<GroupRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 人员聚集区域单个配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域ID, range:[,]-->1
  </id>
  <objectOccupation>
    <!--opt, int, 占比, range:[,], step:, unit:, unitType:-->1
  </objectOccupation>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</GroupRegion>

97.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

98. 获取人员聚集联动配置

98.1 命令

GET /ISAPI/Event/triggers/group-<channelID>

98.2 输入参数

无

98.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人员聚集联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->group
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

99. 配置人员聚集联动配置

99.1 命令

PUT /ISAPI/Event/triggers/group-<channelID>

99.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人员聚集联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->group
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

99.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

100. 获取人员聚集单个通道时间布防配置

100.1 命令

GET /ISAPI/Event/schedules/groups/group-<channelID>

100.2 输入参数

无

100.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员聚集布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->group
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, object, 假日布防时间-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

101. 配置人员聚集单个通道时间布防配置

101.1 命令

PUT /ISAPI/Event/schedules/groups/group-<channelID>

101.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 人员聚集布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->group
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, object, 假日布防时间-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

101.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

102. 获取快速移动能力

102.1 命令

GET /ISAPI/Smart/rapidMove/<channelID>/capabilities

102.2 输入参数

无

102.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RapidMove xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 快速移动能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RapidMoveRegionList size="4">
    <!--ro, opt, object, 快速移动区域列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RapidMoveRegion>
      <!--ro, opt, object, 快速移动区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:1 is the least sensitive-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--ro, opt, enum, 检测目标, subType:string, [all#所有目标,human#人,vehicle#车]-->all
      </detectionTarget>
    </RapidMoveRegion>
  </RapidMoveRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</RapidMove>

103. 获取单个通道快速移动参数

103.1 命令

GET /ISAPI/Smart/rapidMove/<channelID>

103.2 输入参数

无

103.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RapidMove xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 快速移动, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RapidMoveRegionList>
    <!--ro, opt, array, 快速移动区域列表, subType:object, range:[,]-->
    <RapidMoveRegion>
      <!--ro, opt, object, 快速移动区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--ro, opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车]-->all
      </detectionTarget>
    </RapidMoveRegion>
  </RapidMoveRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</RapidMove>

104. 配置单个通道快速移动参数

104.1 命令

PUT /ISAPI/Smart/rapidMove/<channelID>

104.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RapidMove xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 快速移动, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->test
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RapidMoveRegionList>
    <!--opt, array, 快速移动区域列表, subType:object, range:[,]-->
    <RapidMoveRegion>
      <!--opt, object, 快速移动区域-->
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <detectionTarget>
        <!--opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车]-->all
      </detectionTarget>
    </RapidMoveRegion>
  </RapidMoveRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</RapidMove>

104.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

105. 获取快速移动单个配置

105.1 命令

GET /ISAPI/Smart/rapidMove/<channelID>/regions/<regionID>

105.2 输入参数

无

105.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RapidMoveRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 快速移动区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <detectionTarget>
    <!--ro, opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车]-->all
  </detectionTarget>
</RapidMoveRegion>

106. 配置快速移动单个配置

106.1 命令

PUT /ISAPI/Smart/rapidMove/<channelID>/regions/<regionID>

106.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RapidMoveRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 快速移动区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <detectionTarget>
    <!--opt, enum, 检测目标, subType:string, [all#全部目标,human#人,vehicle#车]-->all
  </detectionTarget>
</RapidMoveRegion>

106.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

107. 获取快速移动联动配置

107.1 命令

GET /ISAPI/Event/triggers/rapidMove-<channelID>

107.2 输入参数

无

107.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 快速移动联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->rapidMove
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

108. 配置快速移动联动配置

108.1 命令

PUT /ISAPI/Event/triggers/rapidMove-<channelID>

108.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 快速移动联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->rapidMove
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

108.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

109. 获取快速移动单个通道时间布防

109.1 命令

GET /ISAPI/Event/schedules/rapidMoves/rapidMove-<channelID>

109.2 输入参数

无

109.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 快速移动布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->rapidMove
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, object, 假日布防时间-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

110. 配置快速移动单个通道时间布防

110.1 命令

PUT /ISAPI/Event/schedules/rapidMoves/rapidMove-<channelID>

110.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 快速移动布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->rapidMove
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, object, 假日布防时间-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

110.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

111. 获取停车检测配置能力

111.1 命令

GET /ISAPI/Smart/parking/<channelID>/capabilities

111.2 输入参数

无

111.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Parking xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 停车检测配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ParkingRegionList size="4">
    <!--ro, opt, object, 停车检测区域列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ParkingRegion>
      <!--ro, opt, object, 停车区域-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </sensitivityLevel>
      <timeThreshold min="5" max="100">
        <!--ro, req, int, 时间阈值, range:[5,100], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->5
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </ParkingRegion>
  </ParkingRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</Parking>

112. 获取单个通道停车检测参数

112.1 命令

GET /ISAPI/Smart/parking/<channelID>

112.2 输入参数

无

112.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Parking xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 停车检测, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <sentivity>
    <!--ro, req, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:, desc:默认50-->1
  </sentivity>
  <durationTime>
    <!--ro, req, int, 检测持续时间, range:[1,180], step:, unit:s, unitType:时间, desc:默认5S-->1
  </durationTime>
  <snapImgNum>
    <!--ro, req, int, 抓拍张数, range:[1,6], step:, unit:, unitType:, desc:1~6张,默认1张-->1
  </snapImgNum>
  <LaneParam>
    <!--ro, opt, object, 车道参数-->
    <laneNum>
      <!--ro, req, int, 车道数, range:[1,6], step:, unit:, unitType:, desc:默认值为4-->1
    </laneNum>
    <SingleLaneList>
      <!--ro, req, object, 车道参数列表-->
      <SingleLane>
        <!--ro, opt, object, 单个车道参数-->
        <laneNo>
          <!--ro, req, int, 车道号, range:[1,6], step:, unit:, unitType:-->1
        </laneNo>
        <laneLineType>
          <!--ro, opt, enum, 车道属性, subType:string, [unknown#未知,white#白实线,singleYellow#单黄线,doubleYellow#双黄线,solidDotted#实虚线,dottedSolid#虚实线]-->unknown
        </laneLineType>
        <laneDirection>
          <!--ro, opt, enum, 车道线方向, subType:string, [unknown#未知,up#上行,down#下行]-->unknown
        </laneDirection>
        <voiceLinkageEnabled>
          <!--ro, opt, bool, 是否语音联动-->true
        </voiceLinkageEnabled>
        <LaneLine>
          <!--ro, req, object, 左车道线, desc:屏幕左下角为坐标原点-->
          <StartPoint>
            <!--ro, opt, object, 起始点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </StartPoint>
          <EndPoint>
            <!--ro, opt, object, 终止点, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </EndPoint>
        </LaneLine>
      </SingleLane>
    </SingleLaneList>
    <RightLaneLine>
      <!--ro, req, object, 右车道线-->
      <laneLineType>
        <!--ro, opt, enum, 车道属性, subType:string, [unknown#未知,white#白实线,singleYellow#单黄线,doubleYellow#双黄线,solidDotted#实虚线,dottedSolid#虚实线]-->unknown
      </laneLineType>
      <LaneLine>
        <!--ro, req, object, 右车道线-->
        <StartPoint>
          <!--ro, opt, object, 起始点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </StartPoint>
        <EndPoint>
          <!--ro, opt, object, 终止点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </EndPoint>
      </LaneLine>
    </RightLaneLine>
  </LaneParam>
  <RelatedDriveWay>
    <!--ro, req, object, 关联车道参数-->
    <RelatedDriveWayNoList>
      <!--ro, req, object, 关联车道号, desc:最大可关联6个车道号-->
      <relatedDriveWayNo>
        <!--ro, opt, int, 关联车道号, range:[1,6], step:, unit:, unitType:-->1
      </relatedDriveWayNo>
    </RelatedDriveWayNoList>
  </RelatedDriveWay>
  <normalizedScreenSize>
    <!--ro, opt, object, 上层与设备之间的坐标倍率, desc:一般默认为1000倍,该参数为只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
</Parking>

113. 配置单个通道停车检测参数

113.1 命令

PUT /ISAPI/Smart/parking/<channelID>

113.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Parking xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 停车检测, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <sentivity>
    <!--req, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:, desc:默认50-->1
  </sentivity>
  <durationTime>
    <!--req, int, 检测持续时间, range:[1,180], step:, unit:s, unitType:时间, desc:默认5S-->1
  </durationTime>
  <snapImgNum>
    <!--req, int, 抓拍张数, range:[1,6], step:, unit:, unitType:, desc:1~6张,默认1张-->1
  </snapImgNum>
  <LaneParam>
    <!--opt, object, 车道参数-->
    <laneNum>
      <!--req, int, 车道数, range:[1,6], step:, unit:, unitType:, desc:默认值为4-->1
    </laneNum>
    <SingleLaneList>
      <!--req, object, 车道参数列表-->
      <SingleLane>
        <!--opt, object, 单个车道参数-->
        <laneNo>
          <!--req, int, 车道号, range:[1,6], step:, unit:, unitType:-->1
        </laneNo>
        <laneLineType>
          <!--opt, enum, 车道属性, subType:string, [unknown#未知,white#白实线,singleYellow#单黄线,doubleYellow#双黄线,solidDotted#实虚线,dottedSolid#虚实线]-->unknown
        </laneLineType>
        <laneDirection>
          <!--opt, enum, 车道线方向, subType:string, [unknown#未知,up#上行,down#下行]-->unknown
        </laneDirection>
        <voiceLinkageEnabled>
          <!--opt, bool, 是否语音联动-->true
        </voiceLinkageEnabled>
        <LaneLine>
          <!--req, object, 左车道线, desc:屏幕左下角为坐标原点-->
          <StartPoint>
            <!--opt, object, 起始点-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </StartPoint>
          <EndPoint>
            <!--opt, object, 终止点, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </EndPoint>
        </LaneLine>
      </SingleLane>
    </SingleLaneList>
    <RightLaneLine>
      <!--req, object, 右车道线-->
      <laneLineType>
        <!--opt, enum, 车道属性, subType:string, [unknown#未知,white#白实线,singleYellow#单黄线,doubleYellow#双黄线,solidDotted#实虚线,dottedSolid#虚实线]-->unknown
      </laneLineType>
      <LaneLine>
        <!--req, object, 右车道线-->
        <StartPoint>
          <!--opt, object, 起始点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </StartPoint>
        <EndPoint>
          <!--opt, object, 终止点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </EndPoint>
      </LaneLine>
    </RightLaneLine>
  </LaneParam>
  <RelatedDriveWay>
    <!--req, object, 关联车道参数-->
    <RelatedDriveWayNoList>
      <!--req, object, 关联车道号, desc:最大可关联6个车道号-->
      <relatedDriveWayNo>
        <!--opt, int, 关联车道号, range:[1,6], step:, unit:, unitType:-->1
      </relatedDriveWayNo>
    </RelatedDriveWayNoList>
  </RelatedDriveWay>
  <normalizedScreenSize>
    <!--ro, opt, object, 上层与设备之间的坐标倍率, desc:一般默认为1000倍,该参数为只读-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
</Parking>

113.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

114. 获取停车区域单一配置

114.1 命令

GET /ISAPI/Smart/parking/<channelID>/regions/<regionID>

114.2 输入参数

无

114.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 停车区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, req, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--ro, opt, int, 时间阈值, range:[5,20], step:, unit:, unitType:-->5
  </timeThreshold>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</ParkingRegion>

115. 配置停车区域单一配置

115.1 命令

PUT /ISAPI/Smart/parking/<channelID>/regions/<regionID>

115.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 停车区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域ID, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--req, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--opt, int, 时间阈值, range:[5,20], step:, unit:, unitType:-->5
  </timeThreshold>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</ParkingRegion>

115.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

116. 获取停车检测联动配置

116.1 命令

GET /ISAPI/Event/triggers/parking-<channelID>

116.2 输入参数

无

116.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, req, object, 停车检测联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->parking-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->parking
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

117. 配置停车检测联动配置

117.1 命令

PUT /ISAPI/Event/triggers/parking-<channelID>

117.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--req, object, 停车检测联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->parking-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->parking
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

117.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

118. 获取停车检测单个通道时间布防

118.1 命令

GET /ISAPI/Event/schedules/parkings/parking-<channelID>

118.2 输入参数

无

118.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 快速移动布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->parking
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, object, 假日布防时间-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

119. 配置停车检测单个通道时间布防

119.1 命令

PUT /ISAPI/Event/schedules/parkings/parking-<channelID>

119.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 快速移动布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->parking
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, object, 布防时间列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, object, 假日布防时间-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

119.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

120. 获取物品拿取检测能力

120.1 命令

GET /ISAPI/Smart/attendedBaggage/<channelID>/capabilities

120.2 输入参数

无

120.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AttendedBaggage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品拿取检测能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <AttendedBaggageRegionList size="4">
    <!--ro, opt, array, 物品拿取检测区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <AttendedBaggageRegion>
      <!--ro, opt, object, 物品拿取检测区域-->
      <id>
        <!--ro, req, string, 区域索引, range:[,]-->1
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, req, int, 1..100, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </sensitivityLevel>
      <timeThreshold min="5" max="100">
        <!--ro, req, int, 时间阈值, range:[5,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->10
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </AttendedBaggageRegion>
  </AttendedBaggageRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</AttendedBaggage>

121. 获取单个通道物品拿取检测参数

121.1 命令

GET /ISAPI/Smart/attendedBaggage/<channelID>

121.2 输入参数

无

121.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AttendedBaggage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品拿取检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <AttendedBaggageRegionList>
    <!--ro, opt, array, 物品拿取检测区域列表, subType:object, range:[,]-->
    <AttendedBaggageRegion>
      <!--ro, opt, object, 物品拿取检测区域-->
      <id>
        <!--ro, req, string, 区域索引, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <timeThreshold>
        <!--ro, opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </AttendedBaggageRegion>
  </AttendedBaggageRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</AttendedBaggage>

122. 配置单个通道物品拿取检测参数

122.1 命令

PUT /ISAPI/Smart/attendedBaggage/<channelID>

122.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AttendedBaggage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品拿取检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <AttendedBaggageRegionList>
    <!--opt, array, 物品拿取检测区域列表, subType:object, range:[,]-->
    <AttendedBaggageRegion>
      <!--opt, object, 物品拿取检测区域-->
      <id>
        <!--req, string, 区域索引, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <timeThreshold>
        <!--opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
      </timeThreshold>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </AttendedBaggageRegion>
  </AttendedBaggageRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</AttendedBaggage>

122.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

123. 获取物品拿取检测区域单一配置

123.1 命令

GET /ISAPI/Smart/attendedBaggage/<channelID>/regions/<regionID>

123.2 输入参数

无

123.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AttendedBaggageRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品拿取检测区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 区域索引, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--ro, opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
  </timeThreshold>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</AttendedBaggageRegion>

124. 配置物品拿取检测区域单一配置

124.1 命令

PUT /ISAPI/Smart/attendedBaggage/<channelID>/regions/<regionID>

124.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AttendedBaggageRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品拿取检测区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 区域索引, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
  </timeThreshold>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</AttendedBaggageRegion>

124.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

125. 获取物品拿取联动配置

125.1 命令

GET /ISAPI/Event/triggers/attendedBaggage-<channelID>

125.2 输入参数

无

125.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 物品拿取联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->attendedBaggage-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->attendedBaggage
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

126. 配置物品拿取联动配置

126.1 命令

PUT /ISAPI/Event/triggers/attendedBaggage-<channelID>

126.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 物品拿取联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->attendedBaggage-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->attendedBaggage
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

126.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

127. 获取物品拿取检测单个通道时间布防配置

127.1 命令

GET /ISAPI/Event/schedules/attendedBaggages/attendedBaggage-<channelID>

127.2 输入参数

无

127.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品拿取检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->attendedBaggage-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->attendedBaggage
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

128. 配置物品拿取检测单个通道时间布防配置

128.1 命令

PUT /ISAPI/Event/schedules/attendedBaggages/attendedBaggage-<channelID>

128.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品拿取检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->attendedBaggage-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->attendedBaggage
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

128.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

129. 获取物品遗留检测参数能力

129.1 命令

GET /ISAPI/Smart/unattendedBaggage/<channelID>/capabilities

129.2 输入参数

无

129.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<UnattendedBaggage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品遗留, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <UnattendedBaggageRegionList size="4">
    <!--ro, opt, array, 物品遗留区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <UnattendedBaggageRegion>
      <!--ro, opt, object, 物品遗留区域-->
      <id>
        <!--ro, req, string, 区域索引, range:[,]-->test
      </id>
      <sensitivityLevel min="1" max="100">
        <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </sensitivityLevel>
      <timeThreshold min="5" max="100">
        <!--ro, req, int, 时间阈值, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->10
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标 , range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </UnattendedBaggageRegion>
  </UnattendedBaggageRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</UnattendedBaggage>

130. 获取单个通道物品遗留检测参数

130.1 命令

GET /ISAPI/Smart/unattendedBaggage/<channelID>

130.2 输入参数

无

130.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<UnattendedBaggage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品遗留, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <UnattendedBaggageRegionList>
    <!--ro, opt, array, 物品遗留区域列表, subType:object, range:[,]-->
    <UnattendedBaggageRegion>
      <!--ro, opt, object, 物品遗留区域-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <timeThreshold>
        <!--ro, opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
      </timeThreshold>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </UnattendedBaggageRegion>
  </UnattendedBaggageRegionList>
  <mutexAbility opt="PDC">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--ro, opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</UnattendedBaggage>

131. 配置单个通道物品遗留检测参数

131.1 命令

PUT /ISAPI/Smart/unattendedBaggage/<channelID>

131.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<UnattendedBaggage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品遗留, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道号, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <UnattendedBaggageRegionList>
    <!--opt, array, 物品遗留区域列表, subType:object, range:[,]-->
    <UnattendedBaggageRegion>
      <!--opt, object, 物品遗留区域-->
      <id>
        <!--req, string, 索引, range:[,]-->1
      </id>
      <sensitivityLevel>
        <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <timeThreshold>
        <!--opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
      </timeThreshold>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </UnattendedBaggageRegion>
  </UnattendedBaggageRegionList>
  <mutexAbility opt="PDC">
    <!--opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->PDC
  </mutexAbility>
  <isSupportMultiScene>
    <!--opt, bool, 是否支持多场景-->true
  </isSupportMultiScene>
</UnattendedBaggage>

131.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

132. 获取物品遗留单个检测区域参数

132.1 命令

GET /ISAPI/Smart/unattendedBaggage/<channelID>/regions/<regionID>

132.2 输入参数

无

132.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<UnattendedBaggageRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品遗留区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--ro, req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--ro, opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
  </timeThreshold>
  <RegionCoordinatesList>
    <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</UnattendedBaggageRegion>

133. 配置物品遗留单个检测区域参数

133.1 命令

PUT /ISAPI/Smart/unattendedBaggage/<channelID>/regions/<regionID>

133.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<UnattendedBaggageRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品遗留区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,]-->1
  </id>
  <sensitivityLevel>
    <!--req, int, 灵敏度, range:[0,100], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <timeThreshold>
    <!--opt, int, 时间阈值, range:[,], step:, unit:, unitType:-->10
  </timeThreshold>
  <RegionCoordinatesList>
    <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</UnattendedBaggageRegion>

133.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

134. 获取物品遗留联动参数

134.1 命令

GET /ISAPI/Event/triggers/unattendedBaggage-<channelID>

134.2 输入参数

无

134.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 物品遗漏联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->unattendedBaggage-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->unattendedBaggage
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

135. 配置物品遗留联动参数

135.1 命令

PUT /ISAPI/Event/triggers/unattendedBaggage-<channelID>

135.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 物品遗漏联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->unattendedBaggage-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->unattendedBaggage
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,whiteLight#白光灯,cloud#云]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

135.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

136. 获取物品遗留检测单个通道时间布防参数

136.1 命令

GET /ISAPI/Event/schedules/unattendedBaggages/unattendedBaggage-<channelID>

136.2 输入参数

无

136.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品遗留检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->unattendedBaggage-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->unattendedBaggage
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[0,56], attr:size{req, int, 数组元素总数, range:[0,8], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[0,8]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

137. 配置物品遗留检测单个通道时间布防参数

137.1 命令

PUT /ISAPI/Event/schedules/unattendedBaggages/unattendedBaggage-<channelID>

137.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品遗留检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号 unattendedBaggage-1-->test
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->unattendedBaggage
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[0,56], attr:size{req, int, 数组元素总数, range:[0,8], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[0,8]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

137.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


高空抛物

1. 获取高空抛物事件规则能力

1.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection/capabilities?format=json

1.2 输入参数

无

1.3 输出参数

{
    "ObjectsThrownDetectionCap": {
    /*ro, req, object, 抛物检测规则能力*/
        "enabled": {
        /*ro, opt, object, 抛物检测使能*/
            "@opt": [true, false],
            /*ro, opt, array, 使能, subType:bool, range:[,]*/
            "@def":  true
            /*ro, opt, bool, 默认开启*/
        },
        "RuleInfoCap": {
        /*ro, opt, object, 规则信息, desc:规则数目前仅支持3个*/
            "maxSize":  3,
            /*ro, req, int, 最大支持的规则数能力, range:[,], step:, unit:, unitType:*/
            "ruleID": {
            /*ro, req, object, 规则ID*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "ruleName": {
            /*ro, req, object, 规则名称, desc:支持中文A-Z a-z 0-9 !"#$%&'()*+,-./;<=>?@[]^_`{|}~空格*/
                "@min":  1,
                /*ro, req, int, 最小字符, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, req, int, 最大字符, range:[,], step:, unit:, unitType:*/
            },
            "sensitive": {
            /*ro, opt, object, 目标灵敏度, desc:高灵敏度对应低漏报;低灵敏度对应低误报*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  50
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "confidence": {
            /*ro, opt, object, 事件上报置信度, desc:算法判定报警置信度高于配置值后;进行报警上报*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  100,
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  50
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "uploadPicEnabled": {
            /*ro, opt, object, 该规则对应触发事件是否联动图片上报*/
                "@opt": [true, false],
                /*ro, opt, array, 使能, subType:bool, range:[,]*/
                "@def":  true
                /*ro, opt, bool, 默认开启*/
            },
            "overlayPicEnabled": {
            /*ro, opt, object, 是否对事件图片中做抛物线OSD叠加*/
                "@opt": [true, false],
                /*ro, opt, array, 使能, subType:bool, range:[,]*/
                "@def":  true
                /*ro, opt, bool, 默认开启*/
            },
            "debugModeEnabled": {
            /*ro, opt, object, 调试模式开启时;pos信息和相关打印接口会放开*/
                "@opt": [true, false],
                /*ro, opt, array, 使能, subType:bool, range:[,]*/
                "@def":  false
                /*ro, opt, bool, 默认值*/
            },
            "confidenceEnabled": {
            /*ro, opt, object, 置信度过滤使能*/
                "@opt": [true, false],
                /*ro, opt, array, 使能, subType:bool, range:[,]*/
                "@def":  true
                /*ro, opt, bool, 默认值*/
            },
            "RegionCap": {
            /*ro, req, object, 规则检测区域, desc:4~10边形,左下角坐标原点*/
                "minSize":  4,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "LineCap": {
            /*ro, opt, object, 折线检测线, desc:检测线可设定为折线段;最多支持10段折线设定,左下角坐标原点*/
                "minSize":  1,
                /*ro, req, int, 折线段最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 折线段最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标*/
                    "@min":  0.000,
                    /*ro, req, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000
                    /*ro, req, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "uploadVideoEnabled": {
            /*ro, opt, object, 该规则对应触发事件联动小视频上报,
            desc:注1：短视频上传走云存储流模式方式；在未接入云的情况下，走二进制方式。
                 注2：ISUPSDK配套SS存储服务器时不支持短视频。
                 注3：该视频非录像视频,不受码流编码参数以及隐私遮蔽影响。*/
                "@opt": [true, false],
                /*ro, opt, array, 使能, subType:bool, range:[,]*/
                "@def":  true
                /*ro, opt, bool, 默认开启*/
            }
        },
        "isSupportCapturePicOverlap":  true,
        /*ro, opt, bool, 返回为true;表示支持高空抛物事件抓图叠加配置;/ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection/capturePicOverlap?format=json*/
        "isSupportSearch":  true
        /*ro, opt, bool, 返回为true;表示支持查询高空抛物事件信息;/ISAPI/Intelligent/objectsThrownDetection/search?format=json*/
    }
}

2. 获取高空抛物事件规则配置

2.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json

2.2 输入参数

无

2.3 输出参数

{
    "ObjectsThrownDetection": {
    /*ro, req, object, 抛物检测规则参数*/
        "enabled":  true,
        /*ro, opt, bool, 抛物检测使能*/
        "RuleInfo": [
        /*ro, opt, array, 规则信息, subType:object, range:[1,3], desc:规则数目前仅支持3个*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[1,3], step:, unit:, unitType:*/
                "ruleName":  "rule1",
                /*ro, req, string, 规则名称, range:[1,32], desc:支持中文A-Z a-z 0-9 !"#$%&'()*+,-./;<=>?@[]^_`{|}~空格*/
                "sensitive":  50,
                /*ro, opt, int, 目标灵敏度, range:[1,100], step:, unit:, unitType:, desc:高灵敏度对应低漏报;低灵敏度对应低误报*/
                "confidence":  50,
                /*ro, opt, int, 事件上报置信度, range:[1,100], step:, unit:, unitType:, dep:and,{$.ObjectsThrownDetection.RuleInfo[*].confidenceEnabled,eq,true}, desc:算法判定报警置信度高于配置值后;进行报警上报*/
                "uploadPicEnabled":  true,
                /*ro, opt, bool, 该规则对应触发事件是否联动图片上报*/
                "overlayPicEnabled":  true,
                /*ro, opt, bool, 是否对事件图片中做抛物线OSD叠加*/
                "debugModeEnabled":  true,
                /*ro, opt, bool, 调试模式开启时;pos信息和相关打印接口会放开*/
                "confidenceEnabled":  true,
                /*ro, opt, bool, 置信度过滤使能, desc:默认为true*/
                "Region": [
                /*ro, req, array, 规则区域能力, subType:object, range:[4,10], desc:4~10边形,左下角坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "Line": [
                /*ro, opt, array, 折线检测线, subType:object, range:[1,10], desc:检测线可设定为折线段;最多支持10段折线设定,左下角坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "uploadVideoEnabled":  true
                /*ro, opt, bool, 该规则对应触发事件联动小视频数据上报,
                desc:注1：短视频上传走云存储流模式方式；在未接入云的情况下，走二进制方式。
                     注2：ISUPSDK配套SS存储服务器时不支持短视频。
                     注3：该视频非录像视频,不受码流编码参数以及隐私遮蔽影响。*/
            }
        ]
    }
}

3. 设置高空抛物事件规则配置

3.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json

3.2 输入参数

{
    "ObjectsThrownDetection": {
    /*req, object, 抛物检测规则参数*/
        "enabled":  true,
        /*opt, bool, 抛物检测使能*/
        "RuleInfo": [
        /*opt, array, 规则信息, subType:object, range:[1,3], desc:规则数目前仅支持3个*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[1,3], step:, unit:, unitType:*/
                "ruleName":  "rule1",
                /*req, string, 规则名称, range:[1,32], desc:支持中文A-Z a-z 0-9 !"#$%&'()*+,-./;<=>?@[]^_`{|}~空格*/
                "sensitive":  50,
                /*opt, int, 目标灵敏度, range:[1,100], step:, unit:, unitType:, desc:高灵敏度对应低漏报;低灵敏度对应低误报*/
                "confidence":  50,
                /*opt, int, 事件上报置信度, range:[1,100], step:, unit:, unitType:, dep:and,{$.ObjectsThrownDetection.RuleInfo[*].confidenceEnabled,eq,true}, desc:算法判定报警置信度高于配置值后;进行报警上报*/
                "uploadPicEnabled":  true,
                /*opt, bool, 该规则对应触发事件是否联动图片上报*/
                "overlayPicEnabled":  true,
                /*opt, bool, 是否对事件图片中做抛物线OSD叠加*/
                "debugModeEnabled":  true,
                /*ro, opt, bool, 调试模式开启时;pos信息和相关打印接口会放开*/
                "confidenceEnabled":  true,
                /*ro, opt, bool, 置信度过滤使能, desc:默认为true*/
                "Region": [
                /*req, array, 规则区域能力, subType:object, range:[4,10], desc:4~10边形,左下角坐标原点*/
                    {
                        "x":  0.120,
                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "Line": [
                /*opt, array, 折线检测线, subType:object, range:[1,10], desc:检测线可设定为折线段;最多支持10段折线设定,左下角坐标原点*/
                    {
                        "x":  0.120,
                        /*req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "uploadVideoEnabled":  true
                /*opt, bool, 该规则对应触发事件联动录像小视频数据上报,
                desc:注1：短视频上传走云存储流模式方式；在未接入云的情况下，走二进制方式。
                     注2：ISUPSDK配套SS存储服务器时不支持短视频。
                     注3：该视频非录像视频,不受码流编码参数以及隐私遮蔽影响。*/
            }
        ]
    }
}

3.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

4. 获取高空抛物事件联动配置

4.1 命令

GET /ISAPI/Event/triggers/objectsThrownDetection-<channelID>

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 获取报警输入事件联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->objectsThrownDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->Objects Thrown From Buildings Detection
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

5. 设置高空抛物事件联动配置

5.1 命令

PUT /ISAPI/Event/triggers/objectsThrownDetection-<channelID>

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 获取报警输入事件联动配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->objectsThrownDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->Objects Thrown From Buildings Detection
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取高空抛物检测单个通道布防时间

6.1 命令

GET /ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->objectsThrownDetection-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->objectsThrownDetection
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="56">
    <!--ro, req, array, 布防时间列表;支持一周7天;一天8个时段, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

7. 配置高空抛物检测单个通道布防时间

7.1 命令

PUT /ISAPI/Event/schedules/objectsThrownDetection/objectsThrownDetection-<channelID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->objectsThrownDetection-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->objectsThrownDetection
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


客流统计

1. 配置客流量统计数据重置

1.1 命令

PUT /ISAPI/System/Video/inputs/channels/<channelID>/counting/resetCount

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

2. 配置移除Flash存储客流量统计数据

2.1 命令

PUT /ISAPI/ContentMgmt/FlashStorage/remove/channels/<channelID>

2.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FlashStorageRemove xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 移除Flash存储客流量统计数据, attr:version{opt, string, 未定义, range:[,]}-->
  <coutingRemove>
    <!--opt, bool, 人数统计清除-->true
  </coutingRemove>
</FlashStorageRemove>

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

3. 获取客流量统计推荐肩宽

3.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/counting/RecommendValue

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CountingRecommendValue xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取客流量统计推荐肩宽, attr:version{opt, string, 版本, range:[,]}-->
  <width>
    <!--ro, opt, int, 肩宽, range:[,], step:, unit:, unitType:-->1
  </width>
</CountingRecommendValue>

4. 获取客流量统计运行状态

4.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/counting/status

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CountingStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取客流量统计运行状态, attr:version{req, string, 未定义, range:[,]}-->
  <status>
    <!--ro, req, enum, 状态, subType:string, [counting#统计,stopped#停止,paused#暂停]-->counting
  </status>
  <time>
    <!--ro, req, time, 返回设备操作的时间（本地时间+时区）-->22:00:00+08:00
  </time>
  <doorStatus>
    <!--ro, opt, enum, 公交车门触发状态, subType:string, [open#开,close#关,N_A#N_A]-->open
  </doorStatus>
</CountingStatus>

5. 获取客流统计事件屏蔽区域

5.1 命令

GET /ISAPI/Intelligent/channels/<channelID>/Shield/peopleCounting

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Shield xmlns="http://www.isapi.org/ver20/XMLSchema" version="1.0">
  <!--ro, req, object, 屏蔽区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, enum, 使能, subType:string, [true#是,false#否]-->true
  </enabled>
  <RegionList>
    <!--ro, opt, array, 屏蔽区域列表, subType:object, range:[,]-->
    <Region>
      <!--ro, opt, object, 屏蔽区域-->
      <id>
        <!--ro, req, string, 区域索引, range:[,]-->1
      </id>
      <enabled>
        <!--ro, req, enum, 使能, subType:string, [true#是,false#否]-->true
      </enabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenWidth-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenHeight-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </Region>
  </RegionList>
</Shield>

6. 配置客流统计事件屏蔽区域

6.1 命令

PUT /ISAPI/Intelligent/channels/<channelID>/Shield/peopleCounting

6.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Shield xmlns="http://www.isapi.org/ver20/XMLSchema" version="1.0">
  <!--req, object, 屏蔽区域配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, enum, 使能, subType:string, [true#是,false#否]-->true
  </enabled>
  <RegionList>
    <!--opt, array, 屏蔽区域列表, subType:object, range:[,]-->
    <Region>
      <!--opt, object, 屏蔽区域-->
      <id>
        <!--req, string, 区域索引, range:[,]-->1
      </id>
      <enabled>
        <!--req, enum, 使能, subType:string, [true#是,false#否]-->true
      </enabled>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenWidth-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:最小值为0，最大值参考能力集/ISAPI/Intelligent/channels/<channelID>/Shield/capabilities中的normalizedScreenHeight-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </Region>
  </RegionList>
</Shield>

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


AI开放平台

1. 获取设备支持AI开放平台的功能能力

1.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json

1.2 输入参数

无

1.3 输出参数

{
    "isSupportVideoTask":  true,
    /*ro, opt, bool, 设备是否支持视频分析任务的能力*/
    "isSupportVideoPollingAnalysisTask":  true,
    /*ro, opt, bool, 设备是否支持视频分析轮询任务的能力*/
    "isSupportPictureTask":  true,
    /*ro, opt, bool, 设备是否支持图片分析任务的能力*/
    "isSupportPicturePollingAnalysisTask":  true,
    /*ro, opt, bool, 设备是否支持抓图轮询任务的能力*/
    "isSupportHistoryVideoTask":  true,
    /*ro, opt, bool, 设备是否支持历史视频分析任务的能力*/
    "isSupportResetEngine":  true,
    /*ro, opt, bool, 设备是否支持芯片重置的能力*/
    "isSupportUploadModelwithURL":  true,
    /*ro, opt, bool, 设备是否支持按照URL导入算法模型的方案的能力*/
    "isSupportUploadModelwithPushBinaryData":  true,
    /*ro, opt, bool, 设备是否支持以二进制数据的方式导入算法模型的方案的能力*/
    "isSupportAIRuleConfig":  true,
    /*ro, opt, bool, 设备是否支持AI规则配置的能力*/
    "isSupportAIIntelligentSearch":  true,
    /*ro, opt, bool, 设备是否支持AI智能检索的能力*/
    "isSupportAIPictureUpLoad":  true,
    /*ro, opt, bool, 设备是否支持AI图片（二进制）批量下发*/
    "isSupportAuthorizationModel":  true,
    /*ro, opt, bool, 设备是否支持授权模型*/
    "isSupportPresetAIRuleConfig":  true,
    /*ro, opt, bool, 设备是否支持预置点AI规则配置能力的能力*/
    "isSupportModelSchedule":  true,
    /*ro, opt, bool, 设备是否支持模型调度能力*/
    "isSupportEventTrigger":  true,
    /*ro, opt, bool, 设备是否支持联动配置能力*/
    "isSupportOSDConfig":  true,
    /*ro, opt, bool, 设备是否支持OSD叠加配置能力*/
    "isSupportConfidenceConfig":  true,
    /*ro, opt, bool, 设备是否支持AI规则配置中置信度配置的能力, dep:and,{当isSupportAIRuleConfig,eq,true}, desc:当isSupportAIRuleConfig=true时该节点有效*/
    "isSupportOCRDetection":  true,
    /*ro, opt, bool, 设备是否支持OCR检测模型导入*/
    "isSupportAIRuleOverlay":  true,
    /*ro, opt, bool, 设备是否支持AI规则框在视频预览时的叠加使能配置能力*/
    "isSupportAITargetOverlay":  true,
    /*ro, opt, bool, 设备是否支持AI目标框在视频预览时的叠加使能配置能力*/
    "isSupportAIRuleCount":  true,
    /*ro, opt, bool, 设备是否支持AI跨线规则手动计数*/
    "isSupportAIRuleCapabilities":  true,
    /*ro, opt, bool, 设备是否支持AI规则能力获取, desc:支持的话上层通过能力接口/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<ID>/channels/<ID>/capabilities?format=json获取支持的参数(不包括算法透传参数、上报时间间隔、OSD字符叠加配置、规则框与目标框在视频预览中的叠加功能*/
    "isSupportContrast":  true,
    /*ro, opt, bool, 设备是否支持比对模型导入, desc:目标检测比对模型包*/
    "isSupportBehavior":  true,
    /*ro, opt, bool, 设备是否支持异常行为识别分析模型包导入, desc:AI算法实现异常行为识别，不是专业智能异常行为识别检测*/
    "isSupportAIRuleCountManualReset":  true,
    /*ro, opt, bool, 设备是否支持跨线目标计数手动清零, desc:/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/channels/<channelID>/manualReset?format=json*/
    "isSupportAITargetLibrary":  true,
    /*ro, opt, bool, 设备是否支持AI目标比对库, desc:/ISAPI/Intelligent/AIOpenPlatform/AITargetLibrary/capabilities?format=json*/
    "isSupportAITargetBP":  true,
    /*ro, opt, bool, 设备是否支持AI目标比对基准图片(导入、修改、删除、下载)的能力, desc:返回该能力,不一定支持/ISAPI/Intelligent/AIOpenPlatform/AITargetBP/capabilities?format=json，若不未返回,则使用能力中的默认值*/
    "isSupportAIRuleTrigger":  true
    /*ro, opt, bool, 设备是否支持AI规则联动的能力, desc:/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/channels/<ID>/trigger/capabilities?format=json*/
}

2. 获取设备在AI开放平台上支持的计算能力

2.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform?format=json

2.2 输入参数

无

2.3 输出参数

{
    "algorithmVersion":  "AV1.5.0",
    /*ro, req, string, 表示HCNN算法版本, range:[,], desc:该数值的字典由研究院统一提供，用于算法模型的匹配*/
    "firmware":  "FW006",
    /*ro, req, string, 表示固件版本, range:[,], desc:该数值的字典由研究院统一提供，用于算法模型的匹配*/
    "engine": [1, 2, 3, 4],
    /*ro, req, array, 引擎编号, subType:int, range:[,], desc:设备计算能力*/
    "platform":  1,
    /*ro, req, enum, 算法运行平台, subType:int, [1#TX1,2#P4,3#3559,4#3519,5#3516,6#H930/KT2,7#T4], desc:H930和KT2是同一种芯片的不同名称*/
    "platformName":  "K81",
    /*ro, req, string, 算法运行平台对外展现名称, range:[,], desc:产品自定义，该字段仅用于直接展现。    K81--后端NVR，KT--数据中心，H5--前端；   H7--前端，K82--后端NVR； G3--前端； GW-H5  --物联网主机（B80、B81）；*/
    "loadMPMaxNum":  4,
    /*ro, opt, int, 单个计算引擎支持加载算法包的个数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段，用于集成用户判断计算引擎还能加载的模型个数（当前只有物联网主机产品实现）。*/
    "maxRelChannelNum":  64
    /*ro, opt, int, 设备支持关联通道最大数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段，用于集成用户判断设备总共能支持多少路通道分析（当前只有物联网主机产品实现）。*/
}

3. 预设设备算法模型

3.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/algorithmModel?format=json

3.2 输入参数

{
    "engine": [1, 2, 3, 4],
    /*opt, array, 用于区分不同引擎中运行的模型, subType:int, range:[,], desc:用于区分不同引擎中运行的模型，当不填写该字段的时候表示不做绑定，只存储在设备内部，如果携带engine，默认进行绑定*/
    "MPID":  "example",
    /*req, string, 模型包ID, range:[0,64], desc:由业务平台管理，设备透传记录，用于区分模型包信息*/
    "URL":  "http://example",
    /*opt, string, 算法模型包下载的URL, range:[0,256], desc:业务平台需要保证下发到设备的模型下载URL是有效可访问的，鉴权需要在URL中实现*/
    "MPName":  "example",
    /*opt, string, 模型包名称, range:[0,128], desc:用户可以自定义模型包名称*/
    "description": [
    /*opt, array, description 来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件, subType:object, range:[,]*/
        {}
    ],
    "algSortingParams": {},
    /*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库，增加一个节点透传编排平台的算法参数，告知WEB如何展示界面，比如支持人脸库和版本信息展示，算法引擎不需要这个字段里的值。*/
    "authorized":  true,
    /*opt, bool, 是否为授权模型*/
    "appID":  "example",
    /*opt, string, 训练任务ID生成的appID, range:[0,64], desc:用户提交训练任务后,后台执行模型训练操作（该步骤与原有步骤相同）,Saas保存训练任务ID作appID*/
    "licenseKeyUrl":  "https://example"
    /*opt, string, licenseKey文件下载的URL, range:[0,256], desc:licenseKey文件下载的URL,业务平台需要保证下发到设备下载licenseKeyURL是有效可访问的，鉴权需要在URL中实现*/
}

3.3 输出参数

{
    "requestURL":  "/ISAPI/Intelligent/FDLib/asyncImportDatas?format=json",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

4. 获取设备预设模型包的下载进度

4.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/progress/<MPID>?format=json

4.2 输入参数

无

4.3 输出参数

{
    "percent":  100
    /*ro, req, int, 设备算法下载模型进度, range:[0,100], step:, unit:, unitType:, desc:0-表示尚未开始，100-表示下载完成，在进度为100的时候，需要重启设备生效*/
}

5. 芯片重启

5.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engine/<engineID>/reset?format=json

5.2 输入参数

无

5.3 输出参数

{
    "requestURL":  "/ISAPI/Intelligent/FDLib/asyncImportDatas?format=json",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

6. 获取所有引擎的状态信息

6.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engines?format=json

6.2 输入参数

无

6.3 输出参数

{
    "LoadingInfoList": [
    /*ro, req, array, 引擎状态信息列表, subType:object, range:[,]*/
        {
            "engine":  1,
            /*ro, req, int, 用于区分不同引擎编号, range:[,], step:, unit:, unitType:*/
            "status":  1,
            /*ro, req, enum, 引擎状态信息, subType:int, [0#模型包尚未加载,1#模型包加载&运行良好,2#模型包运行异常,3#模型解密失败,10#引擎初始化中,11#引擎异常,12#当前引擎用作人脸智能使用]*/
            "MPID":  "example",
            /*ro, req, string, 模型包ID, range:[0,64], desc:用于区分模型包信息*/
            "MPName":  "example",
            /*ro, req, string, 模型包名称, range:[0,128]*/
            "description": [
            /*ro, opt, array, 模型描述信息, subType:object, range:[,], desc:description*/
                {}
            ],
            "algSortingParams": {},
            /*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库，增加一个节点透传编排平台的算法参数，告知WEB如何展示界面，比如支持人脸库和版本信息展示，算法引擎不需要这个字段里的值。*/
            "relVideoChannelNum":  4,
            /*ro, opt, int, 该引擎已关联视频通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。用于集成用户展示已关联的视频通道数（当前只有物联网主机产品实现）。*/
            "surplusVideoChannelNum":  1,
            /*ro, opt, int, 剩余可关联视频通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。集成用户根据该字段判断，该引擎是否可以关联新的视频通道（当前只有物联网主机产品实现）。*/
            "relPictureChannelNum":  4,
            /*ro, opt, int, 该引擎已关联图片通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。用于集成用户展示已关联的图片通道数（当前只有物联网主机产品实现）。*/
            "surplusPictureChannelNum":  1
            /*ro, opt, int, 剩余可关联图片通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。集成用户根据该字段判断，该引擎是否可以关联新的图片通道（当前只有物联网主机产品实现）。*/
        }
    ]
}

7. 获取指定引擎的状态信息

7.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/engine/<engineID>?format=json

7.2 输入参数

无

7.3 输出参数

{
    "LoadingInfo": {
    /*ro, req, object, 引擎状态信息*/
        "status":  1,
        /*ro, req, enum, 引擎状态信息, subType:int, [0#模型包尚未加载,1#模型包加载&运行良好,2#模型包运行异常,3#模型解密失败,10#引擎初始化中,11#引擎异常,12#当前引擎用作人脸智能使用]*/
        "MPID":  "example",
        /*ro, req, string, 模型包ID, range:[0,64], desc:用于区分模型包信息*/
        "MPName":  "example",
        /*ro, req, string, 模型包名称, range:[0,128]*/
        "description": [
        /*ro, opt, array, 模型描述信息, subType:object, range:[,], desc:description 来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件*/
            {}
        ],
        "algSortingParams": {},
        /*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库，增加一个节点透传编排平台的算法参数，告知WEB如何展示界面，比如支持人脸库和版本信息展示，算法引擎不需要这个字段里的值。*/
        "relVideoChannelNum":  4,
        /*ro, opt, int, 该引擎已关联视频通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。用于集成用户展示已关联的视频通道数（当前只有物联网主机产品实现）。*/
        "surplusVideoChannelNum":  1,
        /*ro, opt, int, 剩余可关联视频通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。集成用户根据该字段判断，该引擎是否可以关联新的视频通道（当前只有物联网主机产品实现）。*/
        "relPictureChannelNum":  4,
        /*ro, opt, int, 该引擎已关联图片通道数, range:[0,4], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。用于集成用户展示已关联的图片通道数（当前只有物联网主机产品实现）。*/
        "surplusPictureChannelNum":  1
        /*ro, opt, int, 剩余可关联图片通道数, range:[,], step:, unit:, unitType:, desc:计算引擎支持多模型加载的时候，返回该字段。集成用户根据该字段判断，该引擎是否可以关联新的图片通道（当前只有物联网主机产品实现）。*/
    }
}

8. 模型包绑定引擎

8.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/loading/<engineID>?format=json

8.2 输入参数

{
    "MPID":  "example",
    /*req, string, 模型ID, range:[0,64], desc:由业务平台管理，设备透传记录，用于区分模型包信息*/
    "MPName":  "example"
    /*opt, string, 模型包名称, range:[0,128]*/
}

8.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

9. 模型包解绑引擎

9.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/unloading/<engineID>?format=json

9.2 输入参数

无

9.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

10. 设备模型包存储空间查询

10.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management/space?format=json

10.2 输入参数

无

10.3 输出参数

{
    "totalCapacity":  1024,
    /*ro, req, int, 设备支持存储模型包的总容量, range:[,], step:, unit:MB, unitType:信息量*/
    "surplusCapacity":  1024,
    /*ro, req, int, 设备剩余支持存储模型包的总容量, range:[,], step:, unit:MB, unitType:信息量*/
    "MPNumbers":  1
    /*ro, req, int, 设备支持的模型包总个数, range:[,], step:, unit:, unitType:*/
}

11. 设备模型包删除

11.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management/space/<MPID>?format=json

11.2 输入参数

无

11.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

12. 设备模型包查询

12.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json

12.2 输入参数

无

12.3 输出参数

{
    "AlgorithmModels": [
    /*ro, req, array, 算法模型信息列表, subType:object, range:[,]*/
        {
            "MPID":  "example",
            /*ro, req, string, 模型包ID, range:[0,64], desc:用于区分模型信息*/
            "MPName":  "example",
            /*ro, req, string, 模型包名称, range:[0,128]*/
            "status":  1,
            /*ro, req, int, 状态信息, range:[,], step:, unit:, unitType:*/
            "engine": [1, 2],
            /*ro, opt, array, 一个模型有可能在多个engine上运行, subType:int, range:[,], desc:一个模型有可能在多个engine上运行，所以使用数组方式，用于区分不同引擎中运行的模型，如果没有返回engine字段，则表示对应的MPID没有和engine加载，反之则表示加载*/
            "description": [
            /*ro, opt, array, description 来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件, subType:object, range:[,]*/
                {}
            ],
            "algSortingParams": {}
            /*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库，增加一个节点透传编排平台的算法参数，告知WEB如何展示界面，比如支持人脸库和版本信息展示，算法引擎不需要这个字段里的值。*/
        }
    ]
}

13. 更新指定模型包的参数信息

13.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/update?format=json

13.2 输入参数

{
    "MPID":  "example",
    /*req, string, 模型ID, range:[0,64], desc:由业务平台管理，设备透传记录，用于区分模型包信息*/
    "URL":  "example",
    /*opt, string, 算法模型下载的URL, range:[0,256], desc:业务平台需要保证下发到设备的模型下载URL是有效可访问的，鉴权需要在URL中实现*/
    "MPName":  "example",
    /*opt, string, 模型包名称, range:[0,128]*/
    "description": [
    /*opt, array, description节点为可选节点, subType:object, range:[,], desc:来自于 萤石下载模型返回一个打包后的模型url+一个json格式的描述文件，需要从文件中整段截取"description"节点*/
        {}
    ],
    "algSortingParams": {}
    /*ro, opt, object, 新增算法规则编排平台参数透传节点, desc:编排平台组合下发AIOP和其它算法动态库，增加一个节点透传编排平台的算法参数，告知WEB如何展示界面，比如支持人脸库和版本信息展示，算法引擎不需要这个字段里的值。*/
}

13.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

14. 获取视频任务信息能力

14.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoTask/capabilities?format=json

14.2 输入参数

无

14.3 输出参数

{
    "tasksNum":  1,
    /*ro, req, int, 设备支持的并发任务数, range:[,], step:, unit:, unitType:*/
    "taskIDLen": {
    /*ro, req, object, 任务ID长度范围*/
        "@min":  0,
        /*ro, req, int, 任务ID长度最小值, range:[,], step:, unit:, unitType:*/
        "@max":  64
        /*ro, req, int, 任务ID长度最大值, range:[,], step:, unit:, unitType:*/
    },
    "engine": {
    /*ro, req, object, 支持的引擎编号*/
        "@opt": [1, 2, 3, 4]
        /*ro, req, array, 引擎编号数组, subType:int, range:[,]*/
    },
    "channel": {
    /*ro, opt, object, 设备通道号, desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
        "@opt": [1, 2]
        /*ro, req, array, 设备通道号数组, subType:int, range:[,]*/
    },
    "Stream": {
    /*ro, opt, object, 实时流码流信息, desc:Stream和channel二选一*/
        "streamType": {
        /*ro, req, object, 流类型, desc:[realTime#远程实时流,historyVideo#远程历史录像],默认实时流*/
            "@opt": ["realTime", "historyVideo"]
            /*ro, req, array, 可选值, subType:string, range:[,]*/
        },
        "streamSourceType": {
        /*ro, req, object, 取流方式,
        desc:[URL #中心URL取流方式,Camera#根据接入协议进行取流]
                                 2、根据(设备接入到平台)接入协议进行取流，是根据接入协议，然后设备通道接入协议，获取对应的取流rtsp的URL，进行取流。分为两种情况
                  a、不需要添加设备。本地直连模式下发分析设备IP、PORT、用户名、密码、通道信息、设备添加协议类型（Onvif/SDK）,设备通过这些信息获取到相机的取流信息，进行直连取流
                  b、需要添加设备。添加设备的情况，就不需要用户名和密码，直接通过唯一标识。映射模式,如ISUP的场景，需要事先在思维盒上完成设备添加，并配置deviceID, 任务中下发deviceID以及通道信息,思维盒根据deviceID和通道映射得到对应的取流信息，直连设备进行取流*/
            "@opt": ["URL", "Camera"]
            /*ro, opt, array, 可选值, subType:string, range:[,]*/
        },
        "StreamSourceList": [
        /*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
            {
                "cameraIndexCode": {
                /*ro, req, object, 监控点编号,
                desc:虚拟出该监控点的价值在于可以复用基于<channel>的规则配置：
                例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>）,
                /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>*/
                    "@min":  0,
                    /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  64
                    /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "isSupportTargetAttrs":  true,
                /*ro, opt, bool, 是否支持透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                "URL": {
                /*ro, opt, object, 中心取流信息, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为sURL时有效。中心取流是平台可以自己组装取流的URL*/
                    "URLMode": {
                    /*ro, opt, object, 取流URL类型, desc:RTSP#RTSP协议,DAC#DAC组件取流,desc:不填写该字段，默认为RTSP协议取流*/
                        "@opt": ["DAC", "RTSP"]
                        /*ro, opt, array, 可选值 , subType:string, range:[,]*/
                    },
                    "URL": {
                    /*ro, req, object, RTSP URL取流*/
                        "@min":  0,
                        /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  1024
                        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                    },
                    "userName": {
                    /*ro, opt, object, 用户名*/
                        "@min":  0,
                        /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  128
                        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                    },
                    "password": {
                    /*ro, opt, object, 密码*/
                        "@min":  0,
                        /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  128
                        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                    }
                },
                "Camera": {
                /*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                    "protocol": {
                    /*ro, opt, object, 设备接入(任务下发方)平台的协议, desc:[Private#海康私有协议,Onvif#Onvif],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                        "@opt": ["Private", "Onvif", "ISUP"],
                        /*ro, req, array, 可选值, subType:string, range:[,]*/
                        "@def":  "Private"
                        /*ro, req, string, 默认值, range:[,]*/
                    },
                    "StreamingViaIP": {
                    /*ro, opt, object, 通过IP取流, desc:依赖于 proxyProtocol == Private,ONVIF*/
                        "ipV4Address": {
                        /*ro, opt, object, IPV4地址*/
                            "@min":  0,
                            /*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  32
                            /*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "port": {
                        /*ro, req, object, 端口号*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  65535
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "userName": {
                        /*ro, req, object, 用户名*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  128
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "password": {
                        /*ro, req, object, 密码*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  128
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "channel": {
                        /*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  256
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        }
                    },
                    "StreamingViaDeviceID": {
                    /*ro, opt, object, 本地直连取流信息, desc:依赖于 proxyProtocol == ISUP*/
                        "deviceID": {
                        /*ro, req, object, 设备ID, desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                            "@min":  0,
                            /*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  256
                            /*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "channel": {
                        /*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  256
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        }
                    }
                },
                "RecordTime": {
                /*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                    "startTime":  "1970-01-01T00:00:00+08:00",
                    /*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                    "endTime":  "1970-01-01T00:00:00+08:00"
                    /*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                }
            }
        ]
    },
    "frameRate": {
    /*ro, req, object, 检测帧率*/
        "@opt": [2500, 3000]
        /*ro, req, array, 检测帧率数组, subType:int, range:[,]*/
    },
    "alertInterval": {
    /*ro, opt, object, 报警间隔, desc:报警间隔，1s/次 赋值 1；1s两次 赋值 0.5*/
        "@opt": [1, 0.5],
        /*ro, opt, array, 报警间隔支持的值数组, subType:float, range:[,]*/
        "@def":  0.5
        /*ro, opt, float, 报警间隔默认值, range:[,], step:, unit:, unitType:*/
    },
    "isSupportTimeRange":  true,
    /*ro, opt, bool, 是否支持任务的按天布防, desc:周为单位，默认单天8个时间段*/
    "alarmTargetOverlay": {
    /*ro, opt, object, 报警目标框叠加使能*/
        "@opt": ["true", "false"]
        /*ro, opt, array, 使能选项, subType:string, range:[,]*/
    },
    "alarmRuleOverlay": {
    /*ro, opt, object, 报警规则信息叠加使能*/
        "@opt": [true, false]
        /*ro, opt, array, 使能选项, subType:bool, range:[,]*/
    },
    "alarmRuleOverlayCap": {
    /*ro, opt, object, 报警规则信息叠加元素能力, desc:叠加报警事件对应的ruleID规则ID（序号）、ruleName规则名称*/
        "@opt": ["ruleID", "ruleName"]
        /*ro, opt, array, 可选值, subType:string, range:[,]*/
    },
    "EventTrigger": {
    /*ro, opt, object, 任务联动配置能力, desc:不返回该节点表示不支持联动配置*/
        "notificationMethod": {
        /*ro, opt, object, 联动方式*/
            "@opt": ["email", "IM", "IO", "syslog", "HTTP", "FTP", "beep", "ptz", "record", "monitorAlarm", "center", "LightAudioAlarm", "focus", "trace", "cloud", "SMS", "whiteLight"],
            /*ro, req, array, 设备支持的联动方式, subType:string, range:[,]*/
            "@def":  "center"
            /*ro, req, string, 默认联动方式, range:[,]*/
        }
    },
    "maxRelChannelNum":  2,
    /*ro, opt, int, 单个实时视频任务支持的最大关联通道数目, range:[,], step:, unit:, unitType:*/
    "Destination": [
    /*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType": {
            /*ro, opt, object, 结果接收类型, desc:具体取值参数字典*/
                "@opt": ["AlarmRMQ", "ServerClient", "ServerHCS"]
                /*ro, opt, array, 可选值 , subType:string, range:[,]*/
            },
            "destinationURL": {
            /*ro, req, object, 结果接收URL, desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1024
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "userName": {
            /*ro, opt, object, 结果接收方用户名*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  128
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "password": {
            /*ro, opt, object, 结果接收方密码*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  128
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        }
    ]
}

15. 下发视频任务

15.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json

15.2 输入参数

{
    "taskID":  "example",
    /*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
    "engine":  1,
    /*req, int, 用于区分不同引擎中运行的模型, range:[,], step:, unit:, unitType:*/
    "channel": [1, 2],
    /*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
    "Stream": {
    /*opt, object, 流信息, desc:任务中分析的码流来源，Stream和channel二选一*/
        "streamType":  "realTime",
        /*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
        "streamSourceType":  "URL",
        /*req, enum, 取流方式, subType:string, [URL#指定RTSP URL取流,Camera#指定监控点取流（一般采集设备和分析设备在一个局域网内]*/
        "StreamSourceList": [
        /*opt, array, 取流信息列表 , subType:object, range:[,]*/
            {
                "cameraIndexCode":  "UUIDTest",
                /*req, string, 监控点编号, range:[0,64],
                desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置：
                例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
                          /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>）*/
                "TargetAttrs": {},
                /*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                "URL": {
                /*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景。*/
                    "URLMode":  "DAC",
                    /*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
                    desc:不填写该字段，默认为RTSP协议取流。
                    DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
                    DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
                    "URL":  "test",
                    /*req, string, 取流url, range:[0,1024]*/
                    "userName":  "admin",
                    /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                    "password":  "abc12345"
                    /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                },
                "Camera": {
                /*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                    "protocol":  "Private",
                    /*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                    "StreamingViaIP": {
                    /*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
                        "ipV4Address":  "10.21.42.34",
                        /*opt, string, IPV4地址, range:[0,32]*/
                        "port":  8080,
                        /*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
                        "userName":  "admin",
                        /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                        "password":  "abc12345",
                        /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
                    },
                    "StreamingViaDeviceID": {
                    /*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
                        "deviceID":  "test",
                        /*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
                    }
                },
                "RecordTime": {
                /*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                    "startTime":  "1970-01-01T00:00:00+08:00",
                    /*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                    "endTime":  "1970-01-01T00:00:00+08:00"
                    /*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                }
            }
        ]
    },
    "frameRate":  2500,
    /*req, int, (frame rate)*100 检测帧率, range:[,], step:, unit:, unitType:*/
    "alertInterval":  0.5,
    /*opt, float, 报警间隔, range:[0,2000], step:, unit:, unitType:, desc:1s/次,赋值 1；1s两次,赋值 0.5*/
    "TimeRange": [
    /*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段,desc:该节点对于历史流无效*/
        {
            "week":  1,
            /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
            "beginTime":  "00:00",
            /*req, string, 开始时间, range:[,]*/
            "endTime":  "24:00"
            /*req, string, 结束时间, range:[,]*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "alarmRuleOverlay":  true,
    /*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID（序号）、规则名称*/
    "EventTrigger": [
    /*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置，不下发该节点表示不对已配置的联动做操作，下发空节点表示删除联动方式*/
        {
            "notificationMethod":  "center",
            /*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]*/
            "outputIOPortID":  "1",
            /*opt, string, 联动报警输出端口, range:[,]*/
            "videoInputID":  "1",
            /*opt, string, 模拟通道号（用于表示联动哪个通道进行操作, range:[,]*/
            "dynOutputIOPortID":  "1"
            /*opt, string, 数字通道号（用于表示联动哪个通道进行操作, range:[,]*/
        }
    ],
    "Destination": [
    /*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType":  "AlarmRMQ",
            /*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
            "destinationURL":  "test",
            /*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
            "userName":  "test",
            /*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
            "password":  "test"
            /*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
        }
    ]
}

15.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "channelID": [1, 2, 3]
    /*ro, opt, array, 失败的通道号, subType:int, range:[,], desc:多通道任务时,部分通道因为分辨率的问题，可能任务下发失败，所以此处返回失败的通道号，成功时，不返回*/
}

16. 修改视频任务

16.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/videoTask/<taskID>?format=json

16.2 输入参数

{
    "channel": [1, 2],
    /*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
    "Stream": {
    /*opt, object, 流信息, desc:任务中分析的码流来源，Stream和channel二选一*/
        "streamType":  "realTime",
        /*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
        "streamSourceType":  "URL",
        /*req, enum, 取流方式, subType:string, [URL#指定RTSP URL取流,Camera#指定监控点取流（一般采集设备和分析设备在一个局域网内]*/
        "StreamSourceList": [
        /*opt, array, 取流信息列表 , subType:object, range:[,]*/
            {
                "cameraIndexCode":  "UUIDTest",
                /*req, string, 监控点编号, range:[0,64],
                desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置：
                例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
                          /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>）*/
                "TargetAttrs": {},
                /*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                "URL": {
                /*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
                    "URLMode":  "DAC",
                    /*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
                    desc:不填写该字段，默认为RTSP协议取流。
                    DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
                    DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
                    "URL":  "test",
                    /*req, string, 取流url, range:[0,1024]*/
                    "userName":  "admin",
                    /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                    "password":  "abc12345"
                    /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                },
                "Camera": {
                /*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                    "protocol":  "Private",
                    /*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                    "StreamingViaIP": {
                    /*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
                        "ipV4Address":  "10.21.42.34",
                        /*opt, string, IPV4地址, range:[0,32]*/
                        "port":  8080,
                        /*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
                        "userName":  "admin",
                        /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                        "password":  "abc12345",
                        /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
                    },
                    "StreamingViaDeviceID": {
                    /*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
                        "deviceID":  "test",
                        /*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
                    }
                },
                "RecordTime": {
                /*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                    "startTime":  "1970-01-01T00:00:00+08:00",
                    /*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                    "endTime":  "1970-01-01T00:00:00+08:00"
                    /*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                }
            }
        ]
    },
    "frameRate":  2500,
    /*req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100*/
    "alertInterval":  0.5,
    /*opt, float, 报警间隔, range:[0,2000], step:, unit:, unitType:, desc:1s/次,赋值 1；1s两次,赋值 0.5*/
    "TimeRange": [
    /*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段;该节点对于历史流无效*/
        {
            "week":  1,
            /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
            "beginTime":  "00:00",
            /*req, string, 开始时间, range:[,]*/
            "endTime":  "24:00"
            /*req, string, 结束时间, range:[,]*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "alarmRuleOverlay":  true,
    /*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID（序号）、规则名称*/
    "EventTrigger": [
    /*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置，不下发该节点表示不对已配置的联动做操作，下发空节点表示删除联动方式*/
        {
            "notificationMethod":  "center",
            /*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]*/
            "outputIOPortID":  "1",
            /*opt, string, 联动报警输出端口, range:[,]*/
            "videoInputID":  "1",
            /*opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
            "dynOutputIOPortID":  "1"
            /*opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
        }
    ],
    "Destination": [
    /*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType":  "AlarmRMQ",
            /*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
            "destinationURL":  "test",
            /*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
            "userName":  "test",
            /*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
            "password":  "test"
            /*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
        }
    ]
}

16.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

17. 删除视频任务

17.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/videoTask/<taskID>?format=json

17.2 输入参数

无

17.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

18. 查询视频任务

18.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoTask?format=json

18.2 输入参数

无

18.3 输出参数

{
    "Tasks": [
    /*ro, req, array, 任务信息列表, subType:object, range:[,]*/
        {
            "taskID":  "example",
            /*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
            "engine":  1,
            /*ro, req, int, 引擎编号ID, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
            "channel": [1, 2],
            /*ro, req, array, 设备通道号, subType:int, range:[,]*/
            "Stream": {
            /*ro, opt, object, 流信息, desc:任务中分析的码流来源，Stream和channel二选一*/
                "streamType":  "realTime",
                /*ro, req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
                "streamSourceType":  "URL",
                /*ro, req, enum, 取流方式, subType:string, [URL#指定RTSP URL取流,Camera#指定监控点取流（一般采集设备和分析设备在一个局域网内]*/
                "StreamSourceList": [
                /*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
                    {
                        "cameraIndexCode":  "UUIDTest",
                        /*ro, req, string, 监控点编号, range:[0,64],
                        desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置：
                        例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
                                  /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>）*/
                        "TargetAttrs": {},
                        /*ro, opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                        "URL": {
                        /*ro, opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
                            "URLMode":  "DAC",
                            /*ro, opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
                            desc:不填写该字段，默认为RTSP协议取流。
                            DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
                            DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
                            "URL":  "test",
                            /*ro, req, string, 取流url, range:[0,1024]*/
                            "userName":  "admin",
                            /*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                            "password":  "abc12345"
                            /*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                        },
                        "Camera": {
                        /*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                            "protocol":  "Private",
                            /*ro, opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                            "StreamingViaIP": {
                            /*ro, opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
                                "ipV4Address":  "10.21.42.34",
                                /*ro, opt, string, IPV4地址, range:[0,32]*/
                                "port":  8080,
                                /*ro, opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
                                "userName":  "admin",
                                /*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                                "password":  "abc12345",
                                /*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                                "channel":  1
                                /*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
                            },
                            "StreamingViaDeviceID": {
                            /*ro, opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
                                "deviceID":  "test",
                                /*ro, opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                                "channel":  1
                                /*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
                            }
                        },
                        "RecordTime": {
                        /*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                            "startTime":  "1970-01-01T00:00:00+08:00",
                            /*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                            "endTime":  "1970-01-01T00:00:00+08:00"
                            /*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                        }
                    }
                ]
            },
            "frameRate":  2500,
            /*ro, req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100 =检测帧率*/
            "alertInterval":  0.5,
            /*ro, opt, float, 报警间隔, range:[,], step:, unit:, unitType:*/
            "status":  0,
            /*ro, req, enum, 状态信息, subType:int, [0#未执行,1#执行中,2#执行异常,3#排队等待,4#任务和模型不匹配,5#初始化中]*/
            "TimeRange": [
            /*ro, opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段;该节点对于历史流无效*/
                {
                    "week":  1,
                    /*ro, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
                    "beginTime":  "00:00",
                    /*ro, req, string, 开始时间, range:[,]*/
                    "endTime":  "24:00"
                    /*ro, req, string, 结束时间, range:[,]*/
                }
            ],
            "alarmTargetOverlay":  true,
            /*ro, opt, bool, 报警目标框叠加使能*/
            "alarmRuleOverlay":  true,
            /*ro, opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID（序号）、规则名称*/
            "EventTrigger": [
            /*ro, opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置，不下发该节点表示不对已配置的联动做操作，下发空节点表示删除联动方式*/
                {
                    "notificationMethod":  "center",
                    /*ro, req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]*/
                    "outputIOPortID":  "1",
                    /*ro, opt, string, 联动报警输出端口, range:[,]*/
                    "videoInputID":  "1",
                    /*ro, opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
                    "dynOutputIOPortID":  "1"
                    /*ro, opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
                }
            ],
            "Destination": [
            /*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
                {
                    "destinationType":  "AlarmRMQ",
                    /*ro, req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
                    "destinationURL":  "test",
                    /*ro, opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
                    "userName":  "test",
                    /*ro, opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
                    "password":  "test"
                    /*ro, opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
                }
            ]
        }
    ]
}

19. 获取图片任务信息能力

19.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/pictureTask/capabilities?format=json

19.2 输入参数

无

19.3 输出参数

{
    "tasksNum":  1,
    /*ro, req, int, 设备支持任务数, range:[,], step:, unit:, unitType:*/
    "taskIDLen": {
    /*ro, req, object, 任务ID长度范围*/
        "@min":  0,
        /*ro, req, int, 任务ID长度最小值, range:[,], step:, unit:Byte, unitType:信息量*/
        "@max":  64
        /*ro, req, int, 任务ID长度最大值, range:[,], step:, unit:Byte, unitType:信息量*/
    },
    "engine": {
    /*ro, req, object, 引擎编号ID范围*/
        "@opt": [1, 2, 3, 4]
        /*ro, req, array, 引擎编号ID可选值, subType:int, range:[,]*/
    },
    "analysisURLs":  100,
    /*ro, req, int, 单次图片任务能够处理的URL的最大数量, range:[,], step:, unit:, unitType:*/
    "pictureType": {
    /*ro, opt, object, 图片类型范围*/
        "@opt": ["binary", "url"]
        /*ro, opt, array, 返回设备支持的图片类型, subType:string, range:[,]*/
    },
    "alarmTargetOverlay": {
    /*ro, opt, object, 报警目标框叠加使能*/
        "@opt": ["true", "false"]
        /*ro, opt, array, 使能选项, subType:string, range:[,]*/
    },
    "PictureCap": {
    /*ro, opt, object, 图片能力, desc:不返回此节点全都为默认值*/
        "MaxResolution": {
        /*ro, opt, object, 支持最大分辨率, desc:默认最大4096*4096*/
            "width":  4096,
            /*ro, opt, int, 最大横向分辨率, range:[,], step:, unit:px, unitType:图像显示*/
            "height":  4096
            /*ro, opt, int, 最大纵向分辨率, range:[,], step:, unit:px, unitType:图像显示*/
        },
        "maxSize":  2097152,
        /*ro, opt, int, 文件最大字节数, range:[,], step:, unit:Byte, unitType:信息量, desc:默认5 MB*/
        "supportFormat": ["JPG", "BMP", "PNG", "GIF", "TIF"],
        /*ro, opt, array, 支持的图片格式, subType:string, range:[,], desc:默认只支持JPG*/
        "AIRuleConfig": {
        /*ro, opt, object, 有此节点表示支持图片IED配置*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100000
            /*ro, opt, int, 每个图片的AIRuleConfig最大文本长度, range:[,], step:, unit:, unitType:, desc:@max*analysisURLs的值应该小于传输链路报文最大限制(比如萤石单次请求最大报文256KB)*/
        },
        "AITaskType": {
        /*ro, opt, object, AI比对任务类型, desc:[AITargetBPTask#AI基准图比对任务],desc:不填默认就是常规任务*/
            "@opt": ["AITargetBPTask"]
            /*ro, req, array, 可选值, subType:string, range:[,]*/
        },
        "cameraIndexCode": {
        /*ro, opt, object, 监控点ID, desc:,该监控点ID目前仅对基准图比对任务(AITaskType = AITargetBPTask)有效。表示关联的图集信息*/
            "@min":  0,
            /*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
            "@max":  64
            /*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
        }
    },
    "Destination": [
    /*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType": {
            /*ro, opt, object, 结果接收类型, desc:具体取值参数字典*/
                "@opt": ["AlarmRMQ", "ServerClient", "ActiveMQ"]
                /*ro, opt, array, 可选值 , subType:string, range:[,]*/
            },
            "destinationURL": {
            /*ro, req, object, 结果接收URL, desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1024
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "userName": {
            /*ro, opt, object, 结果接收方用户名*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  128
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "password": {
            /*ro, opt, object, 结果接收方密码*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  128
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        }
    ]
}

20. 下发图片任务

20.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json

20.2 输入参数

{
    "taskID":  "example",
    /*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
    "engine":  1,
    /*req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
    "URLs": [
    /*opt, array, 图片URL列表, subType:object, range:[,]*/
        {
            "PID":  "example",
            /*req, string, 图片id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
            "URL":  "example",
            /*req, string, 图片下载的URL, range:[0,256], desc:业务平台需要保证下发的下载URL是有效可访问的，鉴权需要在URL中实现*/
            "AIRuleConfig": {
            /*opt, object, 将研究院提供的AI算法参数填入此处, desc:以下为填写示例*/
                "VCA_config": {
                /*opt, object, AI规则参数*/
                    "ApplicationInfo": [
                    /*opt, array, 应用模块的配置信息, subType:object, range:[,]*/
                        {}
                    ],
                    "ConfigInfo": {}
                    /*opt, object, 配置模块信息*/
                }
            },
            "AITaskType":  "AITargetBPTask",
            /*opt, enum, AI比对任务类型, subType:string, [AITargetBPTask#AI基准图比对任务]*/
            "cameraIndexCode":  "UUIDTest"
            /*opt, string, 监控点ID , range:[0,64], dep:and,{$.URLs[*].AITaskType,eq,AITargetBPTask}, desc:该监控点ID目前仅对基准图比对任务(AITaskType = AITargetBPTask)有效。表示关联的图集信息*/
        }
    ],
    "pictureType":  "binary",
    /*opt, enum, 发送图片类型, subType:, [binary#二进制图片,url#url图片], desc:该节点不传时表示默认采用二进制图片*/
    "RegionCoordinatesList": [
    /*opt, array, 图片检测区域点坐标列表, subType:object, range:[,]*/
        {
            "positionX":  0.653,
            /*req, float, X坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
            "positionY":  0.653
            /*req, float, Y坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "Destination": [
    /*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType":  "AlarmRMQ",
            /*ro, req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ActiveMQ#ActiveMQ,ServerHCS#微视云,ActiveMQ#ActiveMQ], desc:具体取值参考字典*/
            "destinationURL":  "test",
            /*ro, opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
            "userName":  "test",
            /*ro, opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
            "password":  "test"
            /*ro, opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
        }
    ]
}

20.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

21. 删除图片任务

21.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/pictureTask/<taskID>?format=json

21.2 输入参数

无

21.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

22. 查询图片任务信息

22.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/pictureTask?format=json

22.2 输入参数

无

22.3 输出参数

{
    "Tasks": [
    /*ro, req, array, 任务信息列表, subType:object, range:[,]*/
        {
            "taskID":  "example",
            /*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
            "engine":  1,
            /*ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
            "unfinishedPids": ["exampleA", "exampleB"],
            /*ro, req, array, 未完成分析的图片id, subType:string, range:[,], desc:图片ID长度最大为64字节*/
            "status":  1,
            /*ro, req, enum, 状态信息, subType:int, [0#未执行,1#执行中,2#执行异常,3#排队等待,4#任务和模型不匹配,5#初始化中]*/
            "pictureType":  "binary",
            /*ro, opt, enum, 发送图片类型, subType:, [binary#二进制图片,url#url图片], desc:该节点不传时表示默认采用二进制图片*/
            "RegionCoordinatesList": [
            /*ro, opt, array, 图片检测区域点坐标列表, subType:object, range:[,]*/
                {
                    "positionX":  0.653,
                    /*ro, req, float, X坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
                    "positionY":  0.653
                    /*ro, req, float, Y坐标, range:[0.000,1.000], step:0.001, unit:, unitType:*/
                }
            ],
            "alarmTargetOverlay":  true,
            /*ro, opt, bool, 报警目标框叠加使能*/
            "URLs": [
            /*ro, opt, array, 图片信息, subType:object, range:[,]*/
                {
                    "PID":  "test",
                    /*ro, req, string, 图片id, range:[,]*/
                    "URL":  "test",
                    /*ro, opt, string, 图片下载的URL, range:[,]*/
                    "AIRuleConfig": {
                    /*ro, opt, object, 将研究院提供的AI算法参数填入此处, desc:以下为填写示例*/
                        "VCA_config": {
                        /*ro, opt, object, AI规则参数*/
                            "ApplicationInfo": [
                            /*ro, opt, array, 应用模块的配置信息, subType:object, range:[,]*/
                                {}
                            ],
                            "ConfigInfo": {}
                            /*ro, opt, object, 配置模块信息*/
                        }
                    }
                }
            ]
        }
    ]
}

23. 获取视频轮询任务参数能力

23.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/capabilities?format=json

23.2 输入参数

无

23.3 输出参数

{
    "tasksNum":  1,
    /*ro, req, int, 设备支持任务数, range:[,], step:, unit:, unitType:*/
    "taskIDLen": {
    /*ro, req, object, 任务ID长度范围*/
        "@min":  0,
        /*ro, req, int, 任务ID长度的最小值, range:[,], step:, unit:Byte, unitType:信息量*/
        "@max":  64
        /*ro, req, int, 任务ID长度的最大值, range:[,], step:, unit:Byte, unitType:信息量*/
    },
    "engine": {
    /*ro, req, object, 引擎编号范围*/
        "@opt": [1, 2, 3, 4]
        /*ro, req, array, 引擎编号取值, subType:int, range:[,]*/
    },
    "channel": {
    /*ro, req, object, 设备通道号范围*/
        "@opt": [1, 2]
        /*ro, req, array, 设备通道号取值, subType:int, range:[,]*/
    },
    "frameRate": {
    /*ro, req, object, 检测帧率范围*/
        "@opt": [2500, 3000]
        /*ro, req, array, 检测帧率取值, subType:int, range:[,], desc:(frame rate)*100 =检测帧率*/
    },
    "alertInterval": {
    /*ro, opt, object, 报警间隔范围*/
        "opt": [1, 0.5]
        /*ro, opt, array, 报警间隔取值, subType:float, range:[,], desc:1s/次 赋值 1；1s两次 赋值 0.5*/
    },
    "pollingTime": {
    /*ro, opt, object, 视频轮询时间范围*/
        "@min":  1,
        /*ro, opt, int, 视频轮询时间最小值, range:[,], step:, unit:s, unitType:时间*/
        "@max":  65535,
        /*ro, opt, int, 视频轮询时间最大值, range:[,], step:, unit:s, unitType:时间*/
        "@def":  1
        /*ro, req, int, 视频轮询时间默认值, range:[,], step:, unit:s, unitType:时间*/
    },
    "status": {
    /*ro, opt, object, 任务状态值范围*/
        "@opt": [0, 1, 2, 3]
        /*ro, req, array, 任务状态信息取值, subType:int, range:[,], desc:0为未执行，1为执行中，2为执行异常，3位排队等待*/
    },
    "isSupportTimeRange":  true,
    /*ro, opt, bool, 是否支持任务的按天布防, desc:周为单位，默认单天8个时间段*/
    "alarmTargetOverlay": {
    /*ro, opt, object, 报警目标框叠加使能*/
        "@opt": ["true", "false"]
        /*ro, opt, array, 使能选项, subType:string, range:[,]*/
    },
    "alarmRuleOverlay": {
    /*ro, opt, object, 报警规则信息叠加使能*/
        "@opt": [true, false]
        /*ro, opt, array, 使能选项, subType:bool, range:[,]*/
    },
    "alarmRuleOverlayCap": {
    /*ro, opt, object, 报警规则信息叠加元素能力, desc:叠加报警事件对应的ruleID规则ID（序号）、ruleName规则名称*/
        "@opt": ["ruleID", "ruleName"]
        /*ro, opt, array, 可选值, subType:string, range:[,]*/
    },
    "maxRelChannelNum":  16
    /*ro, opt, int, 单个视频轮询任务支持的最大关联通道数目, range:[,], step:, unit:, unitType:*/
}

24. 创建视频轮询任务

24.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json

24.2 输入参数

{
    "taskID":  "example",
    /*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
    "engine":  1,
    /*req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
    "channel": [1, 2],
    /*req, array, 设备通道号, subType:int, range:[,]*/
    "frameRate":  2500,
    /*req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100= 检测帧率*/
    "alertInterval":  0.5,
    /*opt, float, 报警间隔, range:[,], step:, unit:, unitType:*/
    "pollingTime":  60,
    /*req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
    "TimeRange": [
    /*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段*/
        {
            "week":  1,
            /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
            "beginTime":  "00:00",
            /*req, string, 开始时间, range:[,]*/
            "endTime":  "24:00"
            /*req, string, 结束时间, range:[,]*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "alarmRuleOverlay":  true
    /*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID（序号）、规则名称*/
}

24.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

25. 配置视频轮询任务

25.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/<taskID>?format=json

25.2 输入参数

{
    "channel": [1, 2],
    /*req, array, 设备通道号, subType:int, range:[,]*/
    "frameRate":  2500,
    /*req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100= 检测帧率*/
    "alertInterval":  0.5,
    /*opt, float, 报警间隔, range:[,], step:, unit:, unitType:, desc:1s/次 赋值 1；1s两次 赋值 0.5*/
    "pollingTime":  60,
    /*req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
    "TimeRange": [
    /*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段*/
        {
            "week":  1,
            /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
            "beginTime":  "00:00",
            /*req, string, 开始时间, range:[,]*/
            "endTime":  "24:00"
            /*req, string, 结束时间, range:[,]*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "alarmRuleOverlay":  true
    /*opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID（序号）、规则名称*/
}

25.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

26. 删除视频轮询任务

26.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask/<taskID>?format=json

26.2 输入参数

无

26.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

27. 查询视频轮询任务信息

27.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/videoPollingAnalysisTask?format=json

27.2 输入参数

无

27.3 输出参数

{
    "Tasks": [
    /*ro, req, array, 任务信息列表, subType:object, range:[,]*/
        {
            "taskID":  "example",
            /*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
            "engine":  1,
            /*ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
            "channel": [1, 2],
            /*ro, req, array, 设备通道号, subType:int, range:[,]*/
            "frameRate":  2500,
            /*ro, req, int, 检测帧率, range:[,], step:, unit:, unitType:, desc:(frame rate)*100= 检测帧率*/
            "alertInterval":  0.5,
            /*ro, opt, float, 报警间隔, range:[,], step:, unit:, unitType:, desc:1s/次 赋值 1；1s两次 赋值 0.5*/
            "pollingTime":  60,
            /*ro, req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
            "status":  1,
            /*ro, req, enum, 状态信息, subType:int, [0#未执行,1#执行中,2#执行异常,3#排队等待,4#任务和模型不匹配,5#初始化中]*/
            "TimeRange": [
            /*ro, opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段*/
                {
                    "week":  1,
                    /*ro, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
                    "beginTime":  "00:00",
                    /*ro, req, string, 开始时间, range:[,]*/
                    "endTime":  "24:00"
                    /*ro, req, string, 结束时间, range:[,]*/
                }
            ],
            "alarmTargetOverlay":  true,
            /*ro, opt, bool, 报警目标框叠加使能*/
            "alarmRuleOverlay":  true
            /*ro, opt, bool, 报警规则信息叠加使能, desc:开启后报警抓图中叠加报警事件对应的规则ID（序号）、规则名称*/
        }
    ]
}

28. 获取抓图轮询任务信息能力

28.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/capabilities?format=json

28.2 输入参数

无

28.3 输出参数

{
    "tasksNum":  1,
    /*ro, req, int, 设备支持的并发任务数, range:[,], step:, unit:, unitType:*/
    "taskIDLen": {
    /*ro, req, object, 任务ID长度范围*/
        "@min":  0,
        /*ro, req, int, 任务ID长度最小值, range:[,], step:, unit:Byte, unitType:信息量*/
        "@max":  64
        /*ro, req, int, 任务ID长度最大值, range:[,], step:, unit:Byte, unitType:信息量*/
    },
    "engine": {
    /*ro, req, object, 支持的引擎编号*/
        "@opt": [1, 2, 3, 4]
        /*ro, req, array, 引擎编号数组, subType:int, range:[,]*/
    },
    "channel": {
    /*ro, opt, object, 设备通道号, desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
        "@opt": [1, 2]
        /*ro, req, array, 设备通道号数组, subType:int, range:[,]*/
    },
    "Stream": {
    /*ro, opt, object, 实时流码流信息, desc:Stream和channel二选一*/
        "streamType": {
        /*ro, req, object, 流类型, desc:[realTime#远程实时流,historyVideo#远程历史录像],默认实时流*/
            "@opt": ["realTime", "historyVideo"]
            /*ro, req, array, 可选值, subType:string, range:[,]*/
        },
        "streamSourceType": {
        /*ro, req, object, 取流方式,
        desc:[URL #中心URL取流方式,Camera#根据接入协议进行取流]
                                 2、根据(设备接入到平台)接入协议进行取流，是根据接入协议，然后设备通道接入协议，获取对应的取流rtsp的URL，进行取流。分为两种情况
                  a、不需要添加设备。本地直连模式下发分析设备IP、PORT、用户名、密码、通道信息、设备添加协议类型（Onvif/SDK）,设备通过这些信息获取到相机的取流信息，进行直连取流
                  b、需要添加设备。添加设备的情况，就不需要用户名和密码，直接通过唯一标识。映射模式,如ISUP的场景，需要事先在思维盒上完成设备添加，并配置deviceID, 任务中下发deviceID以及通道信息,思维盒根据deviceID和通道映射得到对应的取流信息，直连设备进行取流*/
            "@opt": ["URL", "Camera"]
            /*ro, opt, array, 可选值, subType:string, range:[,]*/
        },
        "StreamSourceList": [
        /*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
            {
                "cameraIndexCode ": {
                /*ro, req, object, 自定义设备本地通道号（实际设备没有接入到分析设备内）,
                desc:虚拟出该通道号的价值在于可以复用基于<channel>的规则配置：
                例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>）,
                /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>*/
                    "@min":  0,
                    /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  64
                    /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "AITaskType": {
                /*ro, opt, object, AI比对任务类型, desc:[AITargetBPTask#AI基准图比对任务],desc:每天默认常规任务*/
                    "@opt": ["AITargetBPTask"]
                    /*ro, req, array, 可选值, subType:string, range:[,]*/
                },
                "isSupportTargetAttrs":  true,
                /*ro, opt, bool, 是否支持透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                "URL": {
                /*ro, opt, object, 中心取流信息, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为sURL时有效。中心取流是平台可以自己组装取流的URL*/
                    "URLMode": {
                    /*ro, opt, object, 取流URL类型, desc:RTSP#RTSP协议,DAC#DAC组件取流,desc:不填写该字段，默认为RTSP协议取流*/
                        "@opt": ["DAC", "RTSP"]
                        /*ro, opt, array, 可选值 , subType:string, range:[,]*/
                    },
                    "URL": {
                    /*ro, req, object, RTSP URL取流*/
                        "@min":  0,
                        /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  1024
                        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                    },
                    "userName": {
                    /*ro, opt, object, 用户名*/
                        "@min":  0,
                        /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  128
                        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                    },
                    "password": {
                    /*ro, opt, object, 密码*/
                        "@min":  0,
                        /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                        "@max":  128
                        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                    }
                },
                "Camera": {
                /*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                    "protocol": {
                    /*ro, opt, object, 设备接入(任务下发方)平台的协议, desc:[Private#海康私有协议,Onvif#Onvif],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                        "@opt": ["Private", "Onvif", "ISUP"],
                        /*ro, req, array, 可选值, subType:string, range:[,]*/
                        "@def":  "Private"
                        /*ro, req, string, 默认值, range:[,]*/
                    },
                    "StreamingViaIP": {
                    /*ro, opt, object, 通过IP取流, desc:依赖于 proxyProtocol == Private,ONVIF*/
                        "ipV4Address": {
                        /*ro, opt, object, IPV4地址*/
                            "@min":  0,
                            /*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  32
                            /*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "port": {
                        /*ro, req, object, 端口号*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  65535
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "userName": {
                        /*ro, req, object, 用户名*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  128
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "password": {
                        /*ro, req, object, 密码*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  128
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "channel": {
                        /*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  256
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        }
                    },
                    "StreamingViaDeviceID": {
                    /*ro, opt, object, 本地直连取流信息, desc:依赖于 proxyProtocol == ISUP*/
                        "deviceID": {
                        /*ro, req, object, 设备ID, desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                            "@min":  0,
                            /*ro, req, int, 字符串长度最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  256
                            /*ro, req, int, 字符串长度最大值, range:[,], step:, unit:, unitType:*/
                        },
                        "channel": {
                        /*ro, opt, object, 被接入设备的本地通道号, desc:该通道号是监控点的通道号,也即ip对应的设备的通道号*/
                            "@min":  0,
                            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                            "@max":  256
                            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                        }
                    }
                },
                "RecordTime": {
                /*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                    "startTime":  "1970-01-01T00:00:00+08:00",
                    /*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                    "endTime":  "1970-01-01T00:00:00+08:00"
                    /*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                }
            }
        ]
    },
    "pollingTime": {
    /*ro, req, object, 视频轮询时间范围*/
        "@min":  1,
        /*ro, req, int, 视频轮询时间最小值, range:[,], step:1, unit:s, unitType:时间*/
        "@max":  86400,
        /*ro, req, int, 视频轮询时间最大值, range:[,], step:1, unit:s, unitType:时间*/
        "@def":  1
        /*ro, req, int, 默认值, range:[,], step:1, unit:s, unitType:时间*/
    },
    "isSupportTimeRange":  true,
    /*ro, opt, bool, 是否支持任务的按天布防, desc:周为单位，默认单天8个时间段*/
    "alarmTargetOverlay": {
    /*ro, opt, object, 报警目标框叠加使能*/
        "@opt": ["true", "false"]
        /*ro, opt, array, 使能选项, subType:string, range:[,]*/
    },
    "EventTrigger": {
    /*ro, opt, object, 任务联动配置能力, desc:不返回该节点表示不支持联动配置*/
        "notificationMethod": {
        /*ro, opt, object, 联动方式*/
            "@opt": ["email", "IM", "IO", "syslog", "HTTP", "FTP", "beep", "ptz", "record", "monitorAlarm", "center", "LightAudioAlarm", "focus", "trace", "cloud", "SMS", "whiteLight"],
            /*ro, req, array, 设备支持的联动方式, subType:string, range:[,]*/
            "@def":  "center"
            /*ro, req, string, 默认联动方式, range:[,]*/
        }
    },
    "maxRelChannelNum":  2,
    /*ro, opt, int, 单个实时视频任务支持的最大关联通道数目, range:[,], step:, unit:, unitType:*/
    "Destination": [
    /*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType": {
            /*ro, opt, object, 结果接收类型, desc:具体取值参数字典*/
                "@opt": ["AlarmRMQ", "ServerClient", "ServerHCS", "ActiveMQ"]
                /*ro, opt, array, 可选值 , subType:string, range:[,]*/
            },
            "destinationURL": {
            /*ro, req, object, 结果接收URL, desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1024
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "userName": {
            /*ro, opt, object, 结果接收方用户名*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  128
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "password": {
            /*ro, opt, object, 结果接收方密码*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  128
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        }
    ]
}

29. 创建抓图轮询任务

29.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json

29.2 输入参数

{
    "taskID":  "example",
    /*req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
    "engine":  1,
    /*req, int, 用于区分不同引擎中运行的模型, range:[,], step:, unit:, unitType:*/
    "channel": [1, 2],
    /*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
    "Stream": {
    /*opt, object, 流信息, desc:任务中分析的码流来源，Stream和channel二选一*/
        "streamType":  "realTime",
        /*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
        "streamSourceType":  "URL",
        /*req, enum, 取流方式, subType:, [URL#指定RTSP URL取流,Camera#指定监控点取流（一般采集设备和分析设备在一个局域网内]*/
        "StreamSourceList": [
        /*opt, array, 取流信息列表 , subType:object, range:[,]*/
            {
                "cameraIndexCode":  "UUIDTest",
                /*req, string, 监控点编号, range:[0,64],
                desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置：
                例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
                          /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>）*/
                "TargetAttrs": {},
                /*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                "URL": {
                /*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
                    "URLMode":  "DAC",
                    /*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
                    desc:不填写该字段，默认为RTSP协议取流。
                    DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
                    DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
                    "URL":  "test",
                    /*req, string, 取流url, range:[0,1024]*/
                    "userName":  "admin",
                    /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                    "password":  "abc12345"
                    /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                },
                "Camera": {
                /*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                    "protocol":  "Private",
                    /*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                    "StreamingViaIP": {
                    /*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
                        "ipV4Address":  "10.21.42.34",
                        /*opt, string, IPV4地址, range:[0,32]*/
                        "port":  8080,
                        /*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
                        "userName":  "admin",
                        /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                        "password":  "abc12345",
                        /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
                    },
                    "StreamingViaDeviceID": {
                    /*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
                        "deviceID":  "test",
                        /*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
                    }
                },
                "RecordTime": {
                /*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                    "startTime":  "1970-01-01T00:00:00+08:00",
                    /*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                    "endTime":  "1970-01-01T00:00:00+08:00"
                    /*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                }
            }
        ]
    },
    "pollingTime":  1,
    /*req, int, 抓图轮询时间, range:[1,65535], step:, unit:s, unitType:时间*/
    "TimeRange": [
    /*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段,该节点对于历史流无效*/
        {
            "week":  1,
            /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
            "beginTime":  "00:00",
            /*req, string, 开始时间, range:[,]*/
            "endTime":  "24:00"
            /*req, string, 结束时间, range:[,]*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "EventTrigger": [
    /*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置，不下发该节点表示不对已配置的联动做操作，下发空节点表示删除联动方式*/
        {
            "notificationMethod":  "center",
            /*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]*/
            "outputIOPortID":  "1",
            /*opt, string, 联动报警输出端口, range:[,]*/
            "videoInputID":  "1",
            /*opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
            "dynOutputIOPortID":  "1"
            /*opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
        }
    ],
    "Destination": [
    /*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType":  "AlarmRMQ",
            /*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
            "destinationURL":  "test",
            /*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
            "userName":  "test",
            /*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
            "password":  "test"
            /*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
        }
    ]
}

29.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

30. 配置抓图轮询任务

30.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/<taskID>?format=json

30.2 输入参数

{
    "channel": [1, 2],
    /*opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
    "Stream": {
    /*opt, object, 流信息, desc:任务中分析的码流来源，Stream和channel二选一*/
        "streamType":  "realTime",
        /*req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
        "streamSourceType":  "URL",
        /*req, enum, 取流方式, subType:, [URL#指定RTSP URL取流,Camera#指定监控点取流（一般采集设备和分析设备在一个局域网内]*/
        "StreamSourceList": [
        /*opt, array, 取流信息列表 , subType:object, range:[,]*/
            {
                "cameraIndexCode":  "UUIDTest",
                /*req, string, 监控点编号, range:[0,64],
                desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置：
                例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
                          /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>）*/
                "TargetAttrs": {},
                /*opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                "URL": {
                /*opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
                    "URLMode":  "DAC",
                    /*opt, enum, 取流URL类型, subType:string, [RTSP#RTSP协议,DAC#DAC组件取流],
                    desc:不填写该字段，默认为RTSP协议取流。
                    DAC预览取流URL:rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
                    DAC回放取流URL:rtsp://10.5.160.103:6304/EUrl/qFD77n9*/
                    "URL":  "test",
                    /*req, string, 取流url, range:[0,1024]*/
                    "userName":  "admin",
                    /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                    "password":  "abc12345"
                    /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                },
                "Camera": {
                /*opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                    "protocol":  "Private",
                    /*opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                    "StreamingViaIP": {
                    /*opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
                        "ipV4Address":  "10.21.42.34",
                        /*opt, string, IPV4地址, range:[0,32]*/
                        "port":  8080,
                        /*opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
                        "userName":  "admin",
                        /*opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                        "password":  "abc12345",
                        /*opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
                    },
                    "StreamingViaDeviceID": {
                    /*opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
                        "deviceID":  "test",
                        /*opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                        "channel":  1
                        /*opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
                    }
                },
                "RecordTime": {
                /*opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                    "startTime":  "1970-01-01T00:00:00+08:00",
                    /*req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                    "endTime":  "1970-01-01T00:00:00+08:00"
                    /*req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                }
            }
        ]
    },
    "pollingTime":  1,
    /*req, int, 抓图轮询时间, range:[1,65535], step:, unit:s, unitType:时间*/
    "TimeRange": [
    /*opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段,该节点对于历史流无效*/
        {
            "week":  1,
            /*req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
            "beginTime":  "00:00",
            /*req, string, 开始时间, range:[,]*/
            "endTime":  "24:00"
            /*req, string, 结束时间, range:[,]*/
        }
    ],
    "alarmTargetOverlay":  true,
    /*opt, bool, 报警目标框叠加使能*/
    "EventTrigger": [
    /*opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置，不下发该节点表示不对已配置的联动做操作，下发空节点表示删除联动方式*/
        {
            "notificationMethod":  "center",
            /*req, enum, 联动方式, subType:string, [email#邮件联动,IM#IM联动,IO#IO联动,syslog#系统日志联动,HTTP#HTTP联动,FTP#FTP联动,beep#蜂鸣器联动,ptz#ptz联动,record#录像联动,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]*/
            "outputIOPortID":  "1",
            /*opt, string, 联动报警输出端口, range:[,]*/
            "videoInputID":  "1",
            /*opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
            "dynOutputIOPortID":  "1"
            /*opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
        }
    ],
    "Destination": [
    /*opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
        {
            "destinationType":  "AlarmRMQ",
            /*req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云], desc:具体取值参考字典*/
            "destinationURL":  "test",
            /*opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
            "userName":  "test",
            /*opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
            "password":  "test"
            /*opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
        }
    ]
}

30.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

31. 删除抓图轮询任务

31.1 命令

DELETE /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask/<taskID>?format=json

31.2 输入参数

无

31.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

32. 获取抓图轮询任务信息

32.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/picturePollingAnalysisTask?format=json

32.2 输入参数

无

32.3 输出参数

{
    "Tasks": [
    /*ro, opt, array, 任务信息列表, subType:object, range:[,]*/
        {
            "taskID":  "example",
            /*ro, req, string, 任务id, range:[0,64], desc:业务平台统一维护管理，设备透传处理*/
            "engine":  1,
            /*ro, req, int, 引擎编号, range:[,], step:, unit:, unitType:, desc:用于区分不同引擎中运行的模型*/
            "channel": [1, 2],
            /*ro, opt, array, 设备本地通道号, subType:int, range:[,], desc:之前通道是必填,由于取流方式发生变化,与设备和平台达成一致,channel修改为可选,Stream和channel二选一*/
            "Stream": {
            /*ro, opt, object, 流信息, desc:任务中分析的码流来源，Stream和channel二选一*/
                "streamType":  "realTime",
                /*ro, req, enum, 流类型, subType:string, [realTime#远程实时流,historyVideo#远程历史录像], desc:默认实时流*/
                "streamSourceType":  "URL",
                /*ro, req, enum, 取流方式, subType:, [URL#指定RTSP URL取流,Camera#指定监控点取流（一般采集设备和分析设备在一个局域网内]*/
                "StreamSourceList": [
                /*ro, opt, array, 取流信息列表 , subType:object, range:[,]*/
                    {
                        "cameraIndexCode":  "UUIDTest",
                        /*ro, req, string, 监控点编号, range:[0,64],
                        desc:平台需要保证ID的唯一性。该监控点的价值在于可以复用基于<channel>的规则配置：
                        例如（/ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json&channelType=<channelType>,
                                  /ISAPI/Intelligent/AIOpenPlatform/AITargetBP/channels/<videoID>?format=json&channelType=<channelType>）*/
                        "AITaskAnalysisType":  "AITargetBPTask",
                        /*ro, opt, enum, AI任务分析类型, subType:string, [AITargetBPTask#AI基准图比对任务], desc:若AITaskAnalysisType=AITargetBPTask, 则cameraIndexCode还表示需要管理对应的基准图集*/
                        "TargetAttrs": {},
                        /*ro, opt, object, 透传参数, desc:目前仅对接数据中心的产品使用,事件上传中使用*/
                        "URL": {
                        /*ro, opt, object, RTSP URL取流, dep:and,{$.Stream.streamSourceType,eq,URL}, desc:当streamSourceType为URL时有效。中心取流是平台可以自己组装取流的URL。主要用于中心能组装取流实际的取流URL的场景*/
                            "URL":  "dac://rtsp://10.5.160.103:6304/EUrl/qFD77n9",
                            /*ro, req, string, 取流url, range:[0,1024],
                            desc:URL格式依赖能力中(/ISAPI/Intelligent/AIOpenPlatform/videoTask/capabilities?format=json)Stream.StreamSourceList.URL.URLMode.@opt的取值
                                                       1.若取值包括DAC:则取流格式可以为：dac://+取流URL+&dactoken=XXX, eg:dac://rtsp://10.5.160.103:6304/EUrl/qFD77n9 ;  dac://rtsp://10.33.43.159:655/dac/realplay/30219e1e924648e68f3fab59b838bfec/MAIN/TCP
                                                       2.若取值包括RTSP:则取流格式可以为：device://rtsp://xxx, eg:device://rtsp://10.66.108.224:554/Streaming/Channels/101?transportmode=unicast*/
                            "userName":  "admin",
                            /*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                            "password":  "abc12345"
                            /*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                        },
                        "Camera": {
                        /*ro, opt, object, 本地直连取流信息, dep:and,{$.Stream.streamSourceType,eq,Camera}, desc:当streamSourceType为Camera时有效。本地取流是因为平台有多个模块组成，自己组装取流URL功能覆盖了流媒体模块的工作，所以想设备端组装取流URL*/
                            "protocol":  "Private",
                            /*ro, opt, string, 设备接入(任务下发方)平台的协议, range:[,], desc:[Private#海康私有协议,Onvif#Onvif,ISUP#ISUP协议],desc:这个是根据接入协议类型,获取rtsp的取流URL*/
                            "StreamingViaIP": {
                            /*ro, opt, object, 通过IP取流, dep:or,{$.Stream.StreamSourceList[*].Camera.protocol,eq,Onvif},{$.Stream.StreamSourceList[*].Camera.protocol,eq,Private}, desc:依赖于 protocol == Private,ONVIF*/
                                "ipV4Address":  "10.21.42.34",
                                /*ro, opt, string, IPV4地址, range:[0,32]*/
                                "port":  8080,
                                /*ro, opt, int, 端口号, range:[0,65535], step:, unit:, unitType:*/
                                "userName":  "admin",
                                /*ro, opt, string, 取流用户名, range:[0,128], desc:敏感信息需要加密*/
                                "password":  "abc12345",
                                /*ro, opt, string, 取流密码, range:[0,128], desc:敏感信息需要加密*/
                                "channel":  1
                                /*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:, desc:该通道号是ip对应的设备的通道号*/
                            },
                            "StreamingViaDeviceID": {
                            /*ro, opt, object, 通过DeviceID取流信息, dep:and,{$.Stream.StreamSourceList[*].Camera.protocol,eq,ISUP}, desc:依赖于 protocol == ISUP*/
                                "deviceID":  "test",
                                /*ro, opt, string, 设备ID, range:[0,256], desc:也即ISUP的deviceID,通过/ISAPI/System/Network/Ehome获取deviceID*/
                                "channel":  1
                                /*ro, opt, int, 被接入设备的本地通道号, range:[0,256], step:, unit:, unitType:*/
                            }
                        },
                        "RecordTime": {
                        /*ro, opt, object, 历史流取流时间, dep:and,{$.Stream.streamType,eq,historyVideo}, desc:streamType= historyVideo时有效*/
                            "startTime":  "1970-01-01T00:00:00+08:00",
                            /*ro, req, datetime, 取流开始时间, desc:ISO8601_time格式 string 类型*/
                            "endTime":  "1970-01-01T00:00:00+08:00"
                            /*ro, req, datetime, 取流结束时间, desc:ISO8601_time格式 string 类型*/
                        }
                    }
                ]
            },
            "pollingTime":  60,
            /*ro, req, int, 轮询时间, range:[1,65535], step:1, unit:s, unitType:时间*/
            "status":  1,
            /*ro, req, int, 状态信息, range:[,], step:, unit:, unitType:*/
            "TimeRange": [
            /*ro, opt, array, 布防时间, subType:object, range:[,], desc:任务的按天布防（周为单位），默认单天8个时间段;该节点对于历史流无效*/
                {
                    "week":  1,
                    /*ro, req, int, 星期, range:[,], step:, unit:, unitType:*/
                    "beginTime":  "00:00",
                    /*ro, req, string, 开始时间, range:[,]*/
                    "endTime":  "24:00"
                    /*ro, req, string, 结束时间, range:[,]*/
                }
            ],
            "alarmTargetOverlay":  true,
            /*ro, opt, bool, 报警目标框叠加使能*/
            "EventTrigger": [
            /*ro, opt, array, 联动方式配置, subType:object, range:[,], desc:任务的联动配置，不下发该节点表示不对已配置的联动做操作，下发空节点表示删除联动方式*/
                {
                    "notificationMethod":  "center",
                    /*ro, req, string, 联动方式, range:[,]*/
                    "outputIOPortID":  "1",
                    /*ro, opt, string, 联动报警输出端口, range:[,]*/
                    "videoInputID":  "1",
                    /*ro, opt, string, 模拟通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
                    "dynOutputIOPortID":  "1"
                    /*ro, opt, string, 数字通道号, range:[,], desc:用于表示联动哪个通道进行操作*/
                }
            ],
            "Destination": [
            /*ro, opt, array, 结果接收信息, subType:object, range:[,], desc:目前仅对接数据中心的产品使用,有此节点,则报警上传以此节点地址为准*/
                {
                    "destinationType":  "AlarmRMQ",
                    /*ro, req, enum, 结果接收类型, subType:string, [AlarmRMQ#RabbitMQ,ServerClient#ISAPI第三方接收地址,ServerHCS#微视云,ActiveMQ#ActiveMQ], desc:具体取值参考字典*/
                    "destinationURL":  "test",
                    /*ro, opt, string, 结果接收URL, range:[0,1024], desc:该URL是由destinationType决定,对应表参考《destinationType与destinationUrl对应关系.xlsx》*/
                    "userName":  "test",
                    /*ro, opt, string, 结果接收方用户名, range:[0,128], desc:敏感信息需要加密*/
                    "password":  "test"
                    /*ro, opt, string, 结果接收方密码, range:[0,128], desc:敏感信息需要加密*/
                }
            ]
        }
    ]
}

33. 获取AI规则

33.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json

33.2 输入参数

无

33.3 输出参数

{
    "AIRuleConfig": {
    /*ro, req, object, 规则配置的具体参数*/
        "VCA_config": {},
        /*ro, opt, object, 规则配置的具体参数, desc:由算法直接提供,协议透传处理*/
        "AlertIntervalList": [
        /*ro, opt, array, 上报时间间隔列表, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*ro, opt, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
                "value":  1,
                /*ro, opt, int, 上报时间间隔, range:[1,1800], step:1, unit:s, unitType:时间*/
                "ruleEnable":  true
                /*ro, opt, bool, 表示当前规则是否使能*/
            }
        ],
        "OSDList": [
        /*ro, opt, array, OSD字符叠加配置列表, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "enabled":  true,
                /*ro, req, bool, OSD叠加使能*/
                "OSDRegion": {
                /*ro, opt, object, OSD叠加框坐标, dep:and,{$.AIRuleConfig.OSDList[*].enabled,eq,true}, desc:屏幕左上角为坐标原点(0.000,0.000)*/
                    "pointX":  0.100,
                    /*ro, req, float, 区域左上角顶点的水平坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "pointY":  0.100
                    /*ro, req, float, 区域左上角顶点的垂直坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "TriggerType":  1073758212,
                /*ro, req, enum, 进行OSD叠加的规则触发事件类型 , subType:int, [1073758212#跨线目标统计,1073758213#区域目标数统计]*/
                "ruleEnable":  true
                /*ro, req, bool, 表示当前规则是否使能*/
            }
        ],
        "OverlayInPreviewList": [
        /*ro, opt, array, 规则框与目标框在视频预览中的叠加使能列表, subType:object, range:[,], desc:后端超脑实现，前端不实现*/
            {
                "ruleID":  1,
                /*ro, req, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
                "ruleOverlayEnable":  true,
                /*ro, opt, bool, 规则框叠加使能*/
                "targetOverlayEnable":  true
                /*ro, opt, bool, 目标框叠加使能*/
            }
        ],
        "LineCrossingTargetStatisticsMode": [
        /*ro, opt, array, 跨线目标统计计数模式, subType:object, range:[,], desc:默认采用固定间隔*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "mode":  "ScheduledCounting",
                /*ro, req, enum, 跨线计数模式, subType:string, [ScheduledCounting#定时计数,BatchCounting#批次计数,ManualCounting#手动计数]*/
                "BatchCounting": {
                /*ro, opt, object, 批次计数参数设置, dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,BatchCounting}*/
                    "timeInterval":  5
                    /*ro, req, int, 批次计数时的间隔时间, range:[1,60], step:1, unit:min, unitType:时间*/
                },
                "ScheduledCounting": [
                /*ro, opt, array, 定时计数参数列表, subType:object, range:[,], dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,ScheduledCounting}*/
                    {
                        "id":  1,
                        /*ro, req, int, 定时计数时间段ID, range:[,], step:, unit:, unitType:*/
                        "startTime":  "23:59:59",
                        /*ro, req, string, 定时开始时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
                        "endTime":  "23:59:59"
                        /*ro, req, string, 定时结束时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
                    }
                ]
            }
        ],
        "RuleNameInfo": [
        /*ro, opt, array, 规则名称配置信息, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "ruleName":  "test"
                /*ro, req, string, 规则名称, range:[,]*/
            }
        ]
    }
}

34. 配置AI规则

34.1 命令

PUT /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/channels/<channelID>?format=json

34.2 输入参数

{
    "AIRuleConfig": {
    /*req, object, 规则配置的具体参数*/
        "VCA_config": {},
        /*req, object, 规则配置的具体参数, desc:由算法直接提供,协议透传处理*/
        "AlertIntervalList": [
        /*opt, array, 上报时间间隔列表, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*opt, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
                "value":  1,
                /*opt, int, 上报时间间隔, range:[1,1800], step:1, unit:s, unitType:时间*/
                "ruleEnable":  true
                /*opt, bool, 表示当前规则是否使能*/
            }
        ],
        "OSDList": [
        /*opt, array, OSD字符叠加配置列表, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "enabled":  true,
                /*req, bool, OSD叠加使能*/
                "OSDRegion": {
                /*opt, object, OSD叠加框坐标, dep:and,{$.AIRuleConfig.OSDList[*].enabled,eq,true}, desc:屏幕左上角为坐标原点(0.000,0.000)*/
                    "pointX":  0.100,
                    /*req, float, 区域左上角顶点的水平坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "pointY":  0.100
                    /*req, float, 区域左上角顶点的垂直坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "TriggerType":  1073758212,
                /*req, enum, 进行OSD叠加的规则触发事件类型 , subType:int, [1073758212#跨线目标统计,1073758213#区域目标数统计]*/
                "ruleEnable":  true
                /*req, bool, 表示当前规则是否使能*/
            }
        ],
        "OverlayInPreviewList": [
        /*opt, array, 规则框与目标框在视频预览中的叠加使能列表, subType:object, range:[,], desc:后端超脑实现，前端不实现*/
            {
                "ruleID":  1,
                /*req, int, 事件类型为区域目标数统计的规则ID, range:[,], step:, unit:, unitType:*/
                "ruleOverlayEnable":  true,
                /*opt, bool, 规则框叠加使能*/
                "targetOverlayEnable":  true
                /*opt, bool, 目标框叠加使能*/
            }
        ],
        "LineCrossingTargetStatisticsMode": [
        /*opt, array, 跨线目标统计计数模式, subType:object, range:[,], desc:默认采用固定间隔*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "mode":  "ScheduledCounting",
                /*req, enum, 跨线计数模式, subType:string, [ScheduledCounting#定时计数,BatchCounting#批次计数,ManualCounting#手动计数]*/
                "BatchCounting": {
                /*opt, object, 批次计数参数设置, dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,BatchCounting}*/
                    "timeInterval":  5
                    /*req, int, 批次计数时的间隔时间, range:[1,60], step:1, unit:min, unitType:时间*/
                },
                "ScheduledCounting": [
                /*opt, array, 定时计数参数列表, subType:object, range:[,], dep:and,{$.AIRuleConfig.LineCrossingTargetStatisticsMode[*].mode,eq,ScheduledCounting}*/
                    {
                        "id":  1,
                        /*req, int, 定时计数时间段ID, range:[,], step:, unit:, unitType:*/
                        "startTime":  "23:59:59",
                        /*req, string, 定时开始时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
                        "endTime":  "23:59:59"
                        /*req, string, 定时结束时间, range:[,], desc:time格式(hh:mm:ss),时间精确到秒*/
                    }
                ]
            }
        ],
        "RuleNameInfo": [
        /*opt, array, 规则名称配置信息, subType:object, range:[,]*/
            {
                "ruleID":  1,
                /*req, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "ruleName":  "test"
                /*req, string, 规则名称, range:[,]*/
            }
        ]
    }
}

34.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

35. 获取AI规则配置状态信息

35.1 命令

GET /ISAPI/Intelligent/AIOpenPlatform/AIRuleConfig/task/<taskID>/status?format=json

35.2 输入参数

无

35.3 输出参数

{
    "AIRuleConfigStatus": [
    /*ro, req, array, AI规则配置状态信息列表, subType:object, range:[,]*/
        {
            "channleID":  1,
            /*ro, opt, int, 设备通道号, range:[,], step:, unit:, unitType:, desc:channleID和cameraIndexCode二选一,提交任务有两种方式,一种是通道ID,另一种为监控点ID,因此必填修改为可选*/
            "cameraIndexCode":  "test",
            /*ro, opt, string, 监控点ID, range:[1,64]*/
            "status":  "success"
            /*ro, req, enum, 规则配置状态, subType:string, [success#规则配置成功,failed#规则配置失败]*/
        }
    ]
}

36. AI智能检索

36.1 命令

POST /ISAPI/Intelligent/AIOpenPlatform/AIIntelligentSearch?format=json

36.2 输入参数

{
    "SearchCondition": {
    /*opt, object, 搜索条件*/
        "searchID":  "test",
        /*req, string, 搜索记录唯一标识, range:[,], desc:搜索记录唯一标识，在条件不变的情况下，searchID的内容不变（用于标明检索是否为同一次检索，在设备性能受限时，通过多次下发条件（searchID需保持不变）并返回进度来实现异步检索*/
        "searchResultPosition":  0,
        /*req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录*/
        "maxResults":  100,
        /*req, int, 本次查询的最大记录数, range:[,], step:, unit:, unitType:*/
        "startTime":  "2004-05-03T17:30:08+08:00",
        /*req, string, 起始时间, range:[,]*/
        "endTime":  "2004-05-03T17:30:08+08:00",
        /*req, string, 结束时间, range:[,]*/
        "channelID": [1, 2, 3],
        /*opt, array, 支持多个通道号检索, subType:int, range:[,]*/
        "engine": [1, 2, 3],
        /*opt, array, 支持多个引擎检索, subType:int, range:[,]*/
        "taskType":  "pictureTask",
        /*opt, enum, 任务类型, subType:string, [pictureTask#图片任务,otherTask#其他任务]*/
        "taskID":  "test",
        /*opt, string, 任务ID, range:[,], desc:多个任务ID用逗号隔开*/
        "algorithmId":  "test"
        /*opt, string, 算法ID, range:[,], desc:多个算法ID用逗号隔开*/
    }
}

36.3 输出参数

{
    "SearchResult": {
    /*ro, opt, object, 搜索结果*/
        "searchID":  "test",
        /*ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)*/
        "requestURL":  "test",
        /*ro, opt, string, 请求URL, range:[,]*/
        "statusCode":  1,
        /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示（1表示成功且无特殊状态）必须返回*/
        "statusString":  "test",
        /*ro, opt, string, 状态描述, range:[,], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
        "subStatusCode":  "test",
        /*ro, opt, string, 子状态码, range:[,], desc:无法用ok表示（ok表示成功且无特殊状态）时必须返回*/
        "errorCode":  1,
        /*ro, opt, int, 当statusCode不为1时, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，必填。错误码,与subStatusCode对应*/
        "errorMsg":  "ok",
        /*ro, opt, string, 当statusCode不为1时必填, range:[,], desc:当statusCode不为1时必填,错误详细信息,能具体到某一个参数的错误*/
        "responseStatusStrg":  "OK",
        /*ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO_MATCHES#没有匹配数据]*/
        "numOfMatches":  1,
        /*ro, req, int, 本次返回匹配条数, range:[,], step:, unit:, unitType:*/
        "totalMatches":  1,
        /*ro, req, int, 本次搜索总匹配条数, range:[,], step:, unit:, unitType:*/
        "AIAlarmInfo": [
        /*ro, opt, array, 报警信息列表, subType:object, range:[,]*/
            {
                "dateTime":  "2018-07-06T15:56:47+08:00",
                /*ro, req, string, 报警触发时间, range:[,]*/
                "channelID":  1,
                /*ro, req, int, 设备通道号, range:[,], step:, unit:, unitType:*/
                "eventType":  "AIOP_Video",
                /*ro, req, enum, 事件类型, subType:string, [AIOP_Video#视频任务检测事件,AIOP_Picture#图片任务检测事件,AIOP_Polling_Video#视频轮询任务检测事件,AIOP_Polling_Snap#抓拍轮询任务检测事件]*/
                "taskID":  "test",
                /*ro, opt, string, 任务ID, range:[,]*/
                "PID":  "test",
                /*ro, opt, string, 图片ID, range:[,], desc:来自于图片任务派发,报警类型为图片任务检测事件时该节点有效*/
                "AIOPData":  "{}",
                /*ro, opt, string, 由算法库直接输出；具体的结构体参考算法库提供, range:[,]*/
                "url":  "test",
                /*ro, opt, string, 返回图片对应URL, range:[,]*/
                "algorithmInfo": {
                /*ro, opt, object, algorithm version information*/
                    "algorithmId":  "test",
                    /*ro, opt, string, algorithm package ID, range:[,]*/
                    "algoVendorId":  "test",
                    /*ro, opt, string, manufacturer ID, range:[,]*/
                    "algoVersionId":  "test",
                    /*ro, opt, string, algorithm version ID, range:[,]*/
                    "algoChipType":  "test",
                    /*ro, opt, string, chip type, range:[,]*/
                    "algoModelVersion":  "test"
                    /*ro, opt, string, model version, range:[,]*/
                }
            }
        ]
    }
}


明眸门禁

1. 获取布防信息能力

1.1 命令

GET /ISAPI/AccessControl/DeployInfo/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DeployInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防信息, attr:version{req, string, 协议版本, range:[,]}-->
  <DeployList size="5">
    <!--ro, opt, array, 布防列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Content>
      <!--ro, opt, object, 报文-->
      <deployNo min="1" max="10">
        <!--ro, req, int, 布防编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </deployNo>
      <deployType opt="0,1,2">
        <!--ro, req, int, 布防类型, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:0-客户端布防,1-实时布防,2-ISAPI布防-->1
      </deployType>
      <ipAddr min="1" max="10">
        <!--ro, req, string, IP地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </ipAddr>
    </Content>
  </DeployList>
</DeployInfo>

2. 获取布防信息

2.1 命令

GET /ISAPI/AccessControl/DeployInfo

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DeployInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防信息, attr:version{req, string, 协议版本, range:[,]}-->
  <DeployList size="5">
    <!--ro, opt, array, 布防列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Content>
      <!--ro, opt, object, 报文-->
      <deployNo>
        <!--ro, req, int, 布防编号, range:[,], step:, unit:, unitType:-->1
      </deployNo>
      <deployType>
        <!--ro, req, enum, 布防类型, subType:int, [0#客户端布防,1#实时布防,2#ISAPI布防]-->1
      </deployType>
      <ipAddr>
        <!--ro, req, string, IP地址, range:[,]-->test
      </ipAddr>
    </Content>
  </DeployList>
</DeployInfo>

3. 获取人员数量查询

3.1 命令

GET /ISAPI/AccessControl/UserInfo/Count?format=json

3.2 输入参数

无

3.3 输出参数

{
    "UserInfoCount": {
    /*ro, req, object, 用户数量*/
        "userNumber":  100
        /*ro, req, int, 数量, range:[,], step:, unit:, unitType:*/
    }
}

4. 获取门禁设备事件总条数能力

4.1 命令

GET /ISAPI/AccessControl/AcsEventTotalNum/capabilities?format=json

4.2 输入参数

无

4.3 输出参数

{
    "AcsEvent": {
    /*ro, opt, object, 门禁设备事件*/
        "AcsEventTotalNumCond": {
        /*ro, opt, object, 查找条件*/
            "major": {
            /*ro, opt, object, 主类型*/
                "@opt":  "0,1,2,3,5"
                /*ro, req, string, 主类型, range:[,]*/
            },
            "minorAlarm": {
            /*ro, opt, object, 报警次类型*/
                "@opt":  "1024,1025,1026,1027"
                /*ro, req, string, 报警次类型, range:[,]*/
            },
            "minorException": {
            /*ro, opt, object, 异常次类型*/
                "@opt":  "39,58,59,1024"
                /*ro, req, string, 异常次类型, range:[,]*/
            },
            "minorOperation": {
            /*ro, opt, object, 操作次类型*/
                "@opt":  "80,90,112,113"
                /*ro, req, string, 操作次类型, range:[,]*/
            },
            "minorEvent": {
            /*ro, opt, object, 事件次类型*/
                "@opt":  "1,2,3,4"
                /*ro, req, string, 事件次类型, range:[,]*/
            },
            "startTime": {
            /*ro, opt, object, 开始时间*/
                "@min":  1,
                /*ro, opt, int, 开始时间（UTC时间）, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, opt, int, 结束时间（UTC时间）, range:[,], step:, unit:, unitType:*/
            },
            "endTime": {
            /*ro, opt, object, 结束时间*/
                "@min":  1,
                /*ro, opt, int, 开始时间（UTC时间）, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, opt, int, 结束时间（UTC时间）, range:[,], step:, unit:, unitType:*/
            },
            "cardNo": {
            /*ro, opt, object, 卡号*/
                "@min":  1,
                /*ro, opt, int, 卡号, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, opt, int, 卡号, range:[,], step:, unit:, unitType:*/
            },
            "name": {
            /*ro, opt, object, 持卡人姓名*/
                "@min":  1,
                /*ro, opt, int, 持卡人姓名, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, opt, int, 持卡人姓名, range:[,], step:, unit:, unitType:*/
            },
            "picEnable":  "true,false",
            /*ro, opt, string, 是否带图片：false-不带图片, range:[,]*/
            "beginSerialNo": {
            /*ro, opt, object, 起始流水号*/
                "@min":  1,
                /*ro, opt, int, 起始流水号, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, opt, int, 起始流水号, range:[,], step:, unit:, unitType:*/
            },
            "endSerialNo": {
            /*ro, opt, object, 结束流水号*/
                "@min":  1,
                /*ro, opt, int, 结束流水号, range:[,], step:, unit:, unitType:*/
                "@max":  1
                /*ro, opt, int, 结束流水号, range:[,], step:, unit:, unitType:*/
            },
            "employeeNoString": {
            /*ro, opt, object, 工号（人员ID）*/
                "@min":  1,
                /*ro, opt, int, 工号（人员ID）, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, opt, int, 工号（人员ID）, range:[,], step:, unit:, unitType:*/
            }
        },
        "totalNum": {
        /*ro, opt, object, 满足搜索条件的事件总条数*/
            "@min":  1,
            /*ro, opt, int, 满足搜索条件的事件总条数, range:[,], step:, unit:, unitType:*/
            "@max":  1
            /*ro, req, int, 满足搜索条件的事件总条数, range:[,], step:, unit:, unitType:*/
        }
    }
}

5. 配置门禁设备事件总条数

5.1 命令

POST /ISAPI/AccessControl/AcsEventTotalNum?format=json

5.2 输入参数

{
    "AcsEventTotalNumCond": {
    /*opt, object, 门禁设备事件总条数*/
        "major":  1,
        /*req, int, 主类型, range:[,], step:, unit:, unitType:, desc:参考事件上传宏定义，0-全部（此处传递的是10进制数据，不能传递16进制，如传递1代表0x1（报警主类型））*/
        "minor":  1024,
        /*req, int, 次类型, range:[,], step:, unit:, unitType:, desc:参考事件上传宏定义，0-全部（此处传递的是10进制数据，不能传递16进制，如传递1024代表0x400（防区短路报警次类型））*/
        "startTime":  "1970-01-01+08:00",
        /*opt, date, 开始时间（UTC时间）*/
        "endTime":  "1970-01-01+08:00",
        /*opt, date, 结束时间（UTC时间）*/
        "cardNo":  "test",
        /*opt, string, 卡号, range:[,]*/
        "name":  "test",
        /*opt, string, 持卡人姓名, range:[,]*/
        "picEnable":  true,
        /*opt, bool, 是否带图片, desc:false-不带图片，true-带图片*/
        "beginSerialNo":  1,
        /*opt, int, 起始流水号, range:[,], step:, unit:, unitType:*/
        "endSerialNo":  100,
        /*opt, int, 结束流水号, range:[,], step:, unit:, unitType:*/
        "employeeNoString":  "test"
        /*opt, string, 工号（人员ID）, range:[1,32]*/
    }
}

5.3 输出参数

{
    "AcsEventTotalNum": {
    /*ro, opt, object, 门禁设备事件总条数*/
        "totalNum":  1
        /*ro, req, int, 满足搜索条件的事件总条数, range:[,], step:, unit:, unitType:*/
    }
}

6. 获取事件优化配置能力

6.1 命令

GET /ISAPI/AccessControl/EventOptimizationCfg/capabilities?format=json

6.2 输入参数

无

6.3 输出参数

{
    "EventOptimizationCfg": {
    /*ro, opt, object, 事件优化配置*/
        "enable":  "true,false",
        /*ro, opt, string, 是否启用事件优化, range:[,]*/
        "isCombinedLinkageEvents":  "true,false"
        /*ro, opt, string, 是否启用联动事件合并, range:[,]*/
    }
}

7. 获取事件优化

7.1 命令

GET /ISAPI/AccessControl/EventOptimizationCfg?format=json

7.2 输入参数

无

7.3 输出参数

{
    "EventOptimizationCfg": {
    /*ro, opt, object, 事件优化配置*/
        "enable":  true,
        /*ro, opt, bool, 是否启用事件优化*/
        "isCombinedLinkageEvents":  true
        /*ro, opt, bool, 是否启用联动事件合并*/
    }
}

8. 配置事件优化

8.1 命令

PUT /ISAPI/AccessControl/EventOptimizationCfg?format=json

8.2 输入参数

{
    "EventOptimizationCfg": {
    /*opt, object, 事件优化配置*/
        "enable":  true,
        /*opt, bool, 是否启用事件优化*/
        "isCombinedLinkageEvents":  true
        /*opt, bool, 是否启用联动事件合并*/
    }
}

8.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, URI, range:[,]*/
    "statusCode":  "test",
    /*ro, opt, string, 状态码, range:[,]*/
    "statusString":  "test",
    /*ro, opt, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, opt, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:*/
    "errorMsg":  "ok"
    /*ro, req, string, 错误信息, range:[,]*/
}

9. 获取抓拍参数能力

9.1 命令

GET /ISAPI/AccessControl/SnapConfig/capabilities

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SnapConfig xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 抓拍参数, attr:version{req, string, 协议版本, range:[,]}-->
  <snapTimes min="0" max="5">
    <!--ro, req, int, 线圈抓拍次数, range:[0,5], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </snapTimes>
  <snapWaitTime min="0" max="6000">
    <!--ro, req, int, 抓拍等待时间, range:[0,6000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:此字段未使用-->1
  </snapWaitTime>
  <intervalTimeList size="4">
    <!--ro, req, array, 间隔列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <intervalTime min="0" max="6000">
      <!--ro, req, int, 连拍时间间隔, range:[0,6000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </intervalTime>
  </intervalTimeList>
  <JPEGParam>
    <!--ro, opt, object, 图片参数-->
    <pictureSize>
      <!--ro, req, string, 图片分辨率, range:[,],
desc://0-CIF，1-QCIF，2-D1，3-UXGA(1600x1200),4-SVGA(800x600),5-HD720p(1280x720)，6-VGA，7-XVGA，8-HD900p，9-HD1080，10-2560*1920，
        //11-1600*304，12-2048*1536，13-2448*2048,14-2448*1200，15-2448*800，16-XGA(1024*768), 17-SXGA(1280*1024),18-WD1(960*576/960*480), 19-1080i,20-576*576，
        //21-1536*1536, 22-1920*1920, 23-320*240, 24-720*720, 25-1024*768,26-1280*1280, 27-1600*600,28-2048*768,29-160*120,75-336*256,
        //78-384*256,79-384*216,80-320*256,82-320*192,83-512*384,127-480*272,128-512*272，161-288*320, 162-144*176,163-480*640,164-240*320,165-120*160,166-576*720,167-720*1280,
        //168-576*960，180-180*240,181-360*480,182-540*720,183-720*960,184-960*1280,185-1080*1440，0xff-Auto(使用当前码流分辨率)-->0xff
    </pictureSize>
    <pictureQuality opt="best, better, general">
      <!--ro, req, enum, 图片质量系数, subType:string, [best#best,better#better,general#general], attr:opt{req, string, 取值范围, range:[,]}-->best
    </pictureQuality>
  </JPEGParam>
  <isSupportSetSnapConfig>
    <!--ro, opt, bool, 是否支持抓拍参数配置, desc:支持时返回true，不支持时不返回该字段或返回false-->true
  </isSupportSetSnapConfig>
</SnapConfig>

10. 获取抓拍参数

10.1 命令

GET /ISAPI/AccessControl/SnapConfig

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SnapConfig xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 抓拍参数, attr:version{req, string, 协议版本, range:[,]}-->
  <snapTimes>
    <!--ro, req, int, 线圈抓拍次数, range:[0,5], step:, unit:, unitType:-->1
  </snapTimes>
  <snapWaitTime>
    <!--ro, req, int, 抓拍等待时间, range:[0,6000], step:, unit:, unitType:-->1
  </snapWaitTime>
  <intervalTimeList size="4">
    <!--ro, opt, array, 间隔列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <intervalTime>
      <!--ro, req, int, 连拍时间间隔, range:[0,6000], step:, unit:, unitType:-->1
    </intervalTime>
  </intervalTimeList>
  <JPEGParam>
    <!--ro, opt, object, 图片参数-->
    <pictureSize>
      <!--ro, req, string, 图片分辨率, range:[,],
desc://0-CIF，1-QCIF，2-D1，3-UXGA(1600x1200),4-SVGA(800x600),5-HD720p(1280x720)，6-VGA，7-XVGA，8-HD900p，9-HD1080，10-2560*1920，
        //11-1600*304，12-2048*1536，13-2448*2048,14-2448*1200，15-2448*800，16-XGA(1024*768), 17-SXGA(1280*1024),18-WD1(960*576/960*480), 19-1080i,20-576*576，
        //21-1536*1536, 22-1920*1920, 23-320*240, 24-720*720, 25-1024*768,26-1280*1280, 27-1600*600,28-2048*768,29-160*120,75-336*256,
        //78-384*256,79-384*216,80-320*256,82-320*192,83-512*384,127-480*272,128-512*272，161-288*320, 162-144*176,163-480*640,164-240*320,165-120*160,166-576*720,167-720*1280,
        //168-576*960，180-180*240,181-360*480,182-540*720,183-720*960,184-960*1280,185-1080*1440，0xff-Auto(使用当前码流分辨率)-->0xff
    </pictureSize>
    <pictureQuality>
      <!--ro, req, enum, 图片质量系数, subType:string, [best#best,better#better,general#general]-->best
    </pictureQuality>
  </JPEGParam>
</SnapConfig>

11. 获取人员数量查询

11.1 命令

GET /ISAPI/AccessControl/UserInfo/Count?format=json

11.2 输入参数

无

11.3 输出参数

{
    "UserInfoCount": {
    /*ro, req, object, 用户数量*/
        "userNumber":  100
        /*ro, req, int, 数量, range:[,], step:, unit:, unitType:*/
    }
}

12. 查询人员信息

12.1 命令

POST /ISAPI/AccessControl/UserInfo/Search?format=json

12.2 输入参数

{
    "UserInfoSearchCond": {
    /*opt, object, 查询条件*/
        "searchID":  "123",
        /*req, string, 搜索记录唯一标识, range:[,], desc:搜索记录唯一标识,用来确认上层客户端是否为同一个(倘若是同一个,设备记录内存,下次搜索加快速度),string类型*/
        "searchResultPosition":  0,
        /*opt, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时,一次查询不能获取所有的记录,下一次查询时指定位置可以查询后面的记录（若设备支持的最大totalMatches为M个，但是当前设备已存储的totalMatches为N个（N<=M），则该字段的合法范围为0~N-1）*/
        "maxResults":  30,
        /*opt, int, 本次协议调用可获取的最大记录数, range:[,], step:, unit:, unitType:, desc:如maxResults值大于设备能力集返回的范围，则设备按照能力集最大值返回，设备不进行报错*/
        "EmployeeNoList": [
        /*opt, array, 人员ID列表, subType:object, range:[,]*/
            {
                "employeeNo":  "test"
                /*opt, string, 工号, range:[,]*/
            }
        ],
        "fuzzySearch":  "test"
        /*opt, string, 模糊查询关键字, range:[,]*/
    }
}

12.3 输出参数

{
    "UserInfoSearch": {
    /*ro, opt, object, 查询结果*/
        "searchID":  "test",
        /*ro, req, string, 搜索记录唯一标识, range:[,]*/
        "responseStatusStrg":  "OK",
        /*ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据], desc:OK-查询结束,MORE-还有数据等待查询,NO MATCH-没有匹配数据*/
        "numOfMatches":  1,
        /*ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:*/
        "totalMatches":  1,
        /*ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:*/
        "UserInfo": [
        /*ro, opt, array, 人员信息, subType:object, range:[,]*/
            {
                "employeeNo":  "test",
                /*ro, req, string, 工号（人员ID）, range:[,]*/
                "name":  "test",
                /*ro, opt, string, 姓名, range:[,]*/
                "userType":  "normal",
                /*ro, req, string, 人员类型, range:[,]*/
                "closeDelayEnabled":  true,
                /*ro, opt, bool, 是否关门延迟*/
                "Valid": {
                /*ro, opt, object, 有效期参数*/
                    "enable":  true,
                    /*ro, req, bool, 使能有效期*/
                    "beginTime":  "test",
                    /*ro, req, string, 有效期起始时间, range:[,], desc:timeType字段不存在或为local时*/
                    "endTime":  "test",
                    /*ro, req, string, 有效期结束时间, range:[,], desc:timeType字段不存在或为local时*/
                    "timeType":  "test"
                    /*ro, opt, string, 时间类型, range:[,]*/
                },
                "belongGroup":  "1,3,5",
                /*ro, opt, string, 所属群组, range:[,]*/
                "password":  "123456",
                /*ro, opt, string, 密码, range:[,]*/
                "doorRight":  "1,3",
                /*ro, opt, string, 门权限, range:[,], desc:（代表对门1、门3有权限）（锁权限*/
                "RightPlan": [
                /*ro, opt, array, 门权限计划, subType:object, range:[,]*/
                    {
                        "doorNo":  1,
                        /*ro, opt, int, 门编号（锁ID）, range:[,], step:, unit:, unitType:*/
                        "planTemplateNo":  "1,3,5"
                        /*ro, opt, string, 计划模板编号, range:[,]*/
                    }
                ],
                "maxOpenDoorTime":  0,
                /*ro, opt, int, 最大认证次数, range:[,], step:, unit:, unitType:*/
                "openDoorTime":  0,
                /*ro, opt, int, 已认证次数, range:[,], step:, unit:, unitType:*/
                "roomNumber":  123,
                /*ro, opt, int, 房间号, range:[,], step:, unit:, unitType:*/
                "floorNumber":  1,
                /*ro, opt, int, 层号, range:[,], step:, unit:, unitType:*/
                "doubleLockRight":  true,
                /*ro, opt, bool, 反锁开门权限, desc:true-有权限，false-无权限*/
                "localUIRight":  true,
                /*ro, opt, bool, 是否具有设备本地UI访问权限, desc:true-有权限，false-无权限*/
                "userVerifyMode":  "card",
                /*ro, opt, enum, 人员验证方式, subType:string, [cardAndPw#刷卡+密码,card#刷卡,cardOrPw#刷卡或密码,fp#指纹,fpAndPw#指纹+密码,fpOrCard#指纹或刷卡,fpAndCard#指纹+刷卡,fpAndCardAndPw#指纹+刷卡+密码,faceOrFpOrCardOrPw#人脸或指纹或刷卡或密码,faceAndFp#人脸+指纹,faceAndPw#人脸+密码,faceAndCard#人脸+刷卡,face#人脸,employeeNoAndPw#工号+密码,fpOrPw#指纹或密码,employeeNoAndFp#工号+指纹,employeeNoAndFpAndPw#工号+指纹+密码,faceAndFpAndCard#人脸+指纹+刷卡,faceAndPwAndFp#人脸+密码+指纹,employeeNoAndFace#工号+人脸,faceOrfaceAndCard#人脸或人脸+刷卡,fpOrface#指纹或人脸,cardOrfaceOrPw#刷卡或人脸或密码,cardOrFace#刷卡或人脸,cardOrFaceOrFp刷卡或人脸或指纹faceOrPw#人脸或密码,employeeNoAndFaceAndPw#工号+人脸+密码,cardOrFaceOrFaceAndCard#刷卡或人脸或人脸+刷卡], desc:人员验证方式的优先级高于读卡器验证方式*/
                "dynamicCode":  "123456",
                /*ro, opt, string, 动态权限码, range:[,]*/
                "callNumbers": ["1-1-1-401", "1-1-1-402", "1-1-1-403"],
                /*ro, opt, array, 呼叫号码列表, subType:string, range:[,], desc:默认规则X-X-X-X，如1-1-1-401, roomNumber字段扩展，支持列表时，使用列表配置相关信息*/
                "floorNumbers": [1, 2],
                /*ro, opt, array, 层号列表, subType:int, range:[,], desc:floorNumber扩展，支持列表时，可使用该字段配置层号*/
                "numOfFace":  0,
                /*ro, opt, int, 关联人脸数量, range:[,], step:, unit:, unitType:, desc:不返回不支持*/
                "numOfFP":  0,
                /*ro, opt, int, 关联指纹数量, range:[,], step:, unit:, unitType:, desc:不返回不支持*/
                "numOfCard":  0,
                /*ro, opt, int, 关联卡数量, range:[,], step:, unit:, unitType:, desc:不返回不支持*/
                "gender":  "male",
                /*ro, opt, enum, 人脸图片对应的人员性别, subType:string, [male#男,female#女,unknown#未知]*/
                "PersonInfoExtends": [
                /*ro, opt, array, 人员信息扩展, subType:object, range:[,]*/
                    {
                        "value":  "test"
                        /*ro, opt, string, 人员信息扩展内容, range:[,]*/
                    }
                ],
                "groupName":  "test"
                /*ro, opt, string, 组织架构, range:[1,64]*/
            }
        ]
    }
}

13. 配置人员信息

13.1 命令

PUT /ISAPI/AccessControl/UserInfo/SetUp?format=json

13.2 输入参数

{
    "UserInfo": {
    /*opt, object, 人员信息*/
        "employeeNo":  "test",
        /*req, string, 工号（人员ID）, range:[,]*/
        "deleteUser":  true,
        /*opt, bool, 是否删除该人员*/
        "name":  "test",
        /*opt, string, 姓名, range:[,]*/
        "userType ":  "normal",
        /*req, enum, 人员类型, subType:string, [normal#普通人（主人）,visitor#来宾（访客）,blackList#非授权名单人]*/
        "closeDelayEnabled":  true,
        /*opt, bool, 是否关门延迟, desc:true-是，false-否*/
        "Valid": {
        /*opt, object, 有效期参数, desc:（enable不使能代表长期有效）（有效时间跨度为1970年1月1日0点0分0秒~2037年12月31日23点59分59秒）*/
            "enable":  true,
            /*req, bool, 使能有效期, desc:false-不使能，true-使能*/
            "beginTime":  "test",
            /*req, string, 有效期起始时间, range:[,], desc:timeType字段不存在或为local时，beginTime为设备本地时间，如：2017-08-01T17:30:08；timeType字段为UTC时，beginTime为UTC时间，如：2017-08-01T17:30:08+08:00*/
            "endTime":  "test",
            /*req, string, 有效期结束时间, range:[,], desc:timeType字段不存在或为local时，endTime为设备本地时间，如：2017-08-01T17:30:08；timeType字段为UTC时，endTime为UTC时间，如：2017-08-01T17:30:08+08:00*/
            "timeType":  "local"
            /*opt, enum, 时间类型, subType:string, [local#设备本地时间,UTC#UTC时间]*/
        },
        "belongGroup ":  "1,3,5",
        /*opt, string, 所属群组, range:[,]*/
        "password":  "123456",
        /*opt, string, 密码, range:[,]*/
        "doorRight":  "1,3",
        /*opt, string, 门权限, range:[,], desc:代表对门1、门3有权限*/
        "RightPlan": [
        /*opt, array, 门权限计划, subType:object, range:[,]*/
            {
                "doorNo":  1,
                /*opt, int, 门编号（锁ID）, range:[,], step:, unit:, unitType:*/
                "planTemplateNo":  "1,3,5"
                /*opt, string, 计划模板编号, range:[,], desc:同个门不同计划模板采用权限或的方式处理*/
            }
        ],
        "maxOpenDoorTime":  0,
        /*opt, int, 最大认证次数, range:[,], step:, unit:, unitType:*/
        "openDoorTime":  0,
        /*opt, int, 已认证次数, range:[,], step:, unit:, unitType:*/
        "roomNumber":  123,
        /*opt, int, 房间号, range:[,], step:, unit:, unitType:*/
        "floorNumber":  1,
        /*opt, int, 层号, range:[,], step:, unit:, unitType:*/
        "doubleLockRight":  true,
        /*opt, bool, 反锁开门权限, desc:true-有权限，false-无权限*/
        "localUIRight":  true,
        /*opt, bool, 是否具有设备本地UI访问权限, desc:true-有权限，false-无权限*/
        "userVerifyMode":  "card",
        /*opt, enum, 人员验证方式, subType:string, [cardAndPw#刷卡+密码,card#刷卡,cardOrPw#刷卡或密码,fp#指纹,fpAndPw#指纹+密码,fpOrCard#指纹或刷卡,fpAndCard#指纹+刷卡,fpAndCardAndPw#指纹+刷卡+密码,faceOrFpOrCardOrPw#人脸或指纹或刷卡或密码,faceAndFp#人脸+指纹,faceAndPw#人脸+密码,faceAndCard#人脸+刷卡,face#人脸,employeeNoAndPw#工号+密码,fpOrPw#指纹或密码,employeeNoAndFp#工号+指纹,employeeNoAndFpAndPw#工号+指纹+密码,faceAndFpAndCard#人脸+指纹+刷卡,faceAndPwAndFp#人脸+密码+指纹,employeeNoAndFace#工号+人脸,faceOrfaceAndCard#人脸或人脸+刷卡,fpOrface#指纹或人脸,cardOrfaceOrPw#刷卡或人脸或密码,cardOrFace#刷卡或人脸,cardOrFaceOrFp#刷卡或人脸或指纹],
        desc:人员验证方式的优先级高于读卡器验证方式
        若为空表示人员验证方式无效*/
        "checkUser":  true,
        /*opt, bool, 设备是否进行人员重复添加校验, desc:false-不校验，true-校验（如果不配置该字段，则设备默认进行人员重复校验）（如果确认设备端不存在任何人员信息，可将其置为false，则设备不进行重复校验，这样会加快下发速度；如果不确认，则不建议配置该字段）*/
        "gender":  "male",
        /*opt, enum, 人脸图片对应的人员性别, subType:string, [male#男,female#女,unknown#未知]*/
        "PersonInfoExtends": [
        /*opt, array, 人员扩展信息, subType:object, range:[,]*/
            {
                "value":  "test"
                /*opt, string, 人员信息扩展内容, range:[,]*/
            }
        ],
        "dynamicCode":  "123456",
        /*opt, string, 动态权限码, range:[,]*/
        "callNumbers": ["1-1-1-401", "1-1-1-402", "1-1-1-403"],
        /*opt, array, 呼叫号码列表, subType:string, range:[,], desc:默认规则X-X-X-X，如1-1-1-401, roomNumber字段扩展，支持列表时，使用列表配置相关信息*/
        "floorNumbers": [1, 2],
        /*opt, array, 层号列表, subType:int, range:[,], desc:floorNumber扩展，支持列表时，可使用该字段配置层号*/
        "groupName":  "test"
        /*opt, string, 组织架构, range:[1,64]*/
    }
}

13.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

14. 添加人员信息

14.1 命令

POST /ISAPI/AccessControl/UserInfo/Record?format=json

14.2 输入参数

{
    "UserInfo": {
    /*opt, object, 人员信息*/
        "employeeNo":  "test",
        /*req, string, 工号（人员ID）, range:[,]*/
        "name":  "test",
        /*opt, string, 姓名, range:[,]*/
        "userType":  "normal",
        /*req, enum, 人员类型, subType:string, [normal#普通人（主人）,visitor#来宾（访客）,blackList#非授权名单人]*/
        "closeDelayEnabled":  true,
        /*opt, bool, 是否关门延迟*/
        "Valid": {
        /*opt, object, Valid*/
            "enable":  true,
            /*req, bool, 使能有效期*/
            "beginTime":  "2017-08-01T17:30:08+08:00",
            /*req, datetime, 有效期起始时间, desc:timeType字段不存在或为local时，beginTime为设备本地时间，如：2017-08-01T17:30:08；timeType字段为UTC时，beginTime为UTC时间，如：2017-08-01T17:30:08+08:00*/
            "endTime":  "2017-08-01T17:30:08+08:00",
            /*req, datetime, 有效期结束时间（timeType字段不存在或为local时, desc:timeType字段不存在或为local时，beginTime为设备本地时间，如：2017-08-01T17:30:08；timeType字段为UTC时，beginTime为UTC时间，如：2017-08-01T17:30:08+08:00*/
            "timeType":  "local"
            /*opt, enum, 时间类型, subType:string, [local#设备本地时间,UTC#UTC时间]*/
        },
        "belongGroup":  "1,3,5",
        /*opt, string, 所属群组, range:[,]*/
        "password":  "123456",
        /*opt, string, 密码, range:[,]*/
        "doorRight":  "1,3",
        /*opt, string, 门权限, range:[,]*/
        "RightPlan": [
        /*opt, array, 门权限计划（锁权限计划）, subType:object, range:[,]*/
            {
                "doorNo":  1,
                /*opt, int, 门编号（锁ID）, range:[,], step:, unit:, unitType:*/
                "planTemplateNo":  "1,3,5"
                /*opt, string, 计划模板编号, range:[,], desc:同个门不同计划模板采用权限或的方式处理*/
            }
        ],
        "maxOpenDoorTime":  0,
        /*opt, int, 最大认证次数, range:[,], step:, unit:, unitType:, desc:0为无次数限制*/
        "openDoorTime":  1,
        /*opt, int, 已认证次数, range:[,], step:, unit:, unitType:*/
        "roomNumber":  123,
        /*opt, int, 房间号, range:[,], step:, unit:, unitType:*/
        "floorNumber":  1,
        /*opt, int, 层号, range:[,], step:, unit:, unitType:*/
        "doubleLockRight":  true,
        /*opt, bool, 反锁开门权限*/
        "localUIRight":  true,
        /*opt, bool, 是否具有设备本地UI访问权限*/
        "userVerifyMode":  "card",
        /*opt, enum, 人员验证方式, subType:string, [cardAndPw#刷卡+密码,card#刷卡,cardOrPw#刷卡或密码,fp#指纹,fpAndPw#指纹+密码,fpOrCard#指纹或刷卡,fpAndCard#指纹+刷卡,fpAndCardAndPw#指纹+刷卡+密码,faceOrFpOrCardOrPw#人脸或指纹或刷卡或密码,faceAndFp#人脸+指纹,faceAndPw#人脸+密码,faceAndCard#人脸+刷卡,face#人脸,employeeNoAndPw#工号+密码,fpOrPw#指纹或密码,employeeNoAndFp#工号+指纹,employeeNoAndFpAndPw#工号+指纹+密码,faceAndFpAndCard#人脸+指纹+刷卡,faceAndPwAndFp#人脸+密码+指纹,employeeNoAndFace#工号+人脸,faceOrfaceAndCard#人脸或人脸+刷卡,fpOrface#指纹或人脸,cardOrfaceOrPw#刷卡或人脸或密码],
        desc:人员验证方式的优先级高于读卡器验证方式
        若为空表示人员验证方式无效*/
        "checkUser":  true,
        /*opt, bool, 设备是否进行人员重复添加校验, desc:false-不校验，true-校验（如果不配置该字段，则设备默认进行人员重复校验）（如果确认设备端不存在任何人员信息，可将其置为false，则设备不进行重复校验，这样会加快下发速度；如果不确认，则不建议配置该字段）*/
        "numOfFace":  0,
        /*opt, int, 关联人脸数量, range:[,], step:, unit:, unitType:, desc:不返回不支持*/
        "numOfFP":  0,
        /*opt, int, 关联指纹数量, range:[,], step:, unit:, unitType:, desc:不返回不支持*/
        "numOfCard":  0,
        /*opt, int, 关联卡数量, range:[,], step:, unit:, unitType:, desc:不返回不支持*/
        "gender":  "male",
        /*opt, enum, 人脸图片对应的人员性别, subType:string, [male#男,female#女,unknown#未知], desc:male-男, female-女, unknown-未知*/
        "PersonInfoExtends": [
        /*opt, array, 人员信息扩展, subType:object, range:[,]*/
            {
                "value":  "test"
                /*opt, string, 人员信息扩展内容, range:[,]*/
            }
        ],
        "operateType":  "byTerminal",
        /*opt, string, 操作类型, range:[,], desc:byTerminal:按终端操作*/
        "terminalNoList": [1],
        /*opt, array, 终端ID列表, subType:int, range:[,], desc:type为byTerminal,byTerminalOrg时必填,终端ID列表（目前仅支持单个终端）*/
        "dynamicCode":  "123456",
        /*opt, string, 动态权限码, range:[,]*/
        "callNumbers": ["1-1-1-401"],
        /*opt, array, 呼叫号码列表, subType:string, range:[,], desc:默认规则X-X-X-X，如1-1-1-401, roomNumber字段扩展，支持列表时，使用列表配置相关信息*/
        "floorNumbers": [1, 2],
        /*opt, array, 层号列表, subType:int, range:[,], desc:floorNumber扩展，支持列表时，可使用该字段配置层号*/
        "groupName":  "test"
        /*opt, string, 组织架构, range:[1,64]*/
    }
}

14.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

15. 修改人员信息

15.1 命令

PUT /ISAPI/AccessControl/UserInfo/Modify?format=json

15.2 输入参数

{
    "UserInfo": {
    /*opt, object, 人员信息*/
        "employeeNo":  "test",
        /*req, string, 工号（人员ID）, range:[,]*/
        "name":  "test",
        /*opt, string, 姓名, range:[,]*/
        "userType ":  "normal",
        /*req, enum, 人员类型, subType:string, [normal#普通人（主人）,visitor#来宾（访客）,blackList#非授权名单人]*/
        "closeDelayEnabled":  true,
        /*opt, bool, 是否关门延迟*/
        "Valid": {
        /*opt, object, Valid*/
            "enable":  true,
            /*req, bool, 使能有效期*/
            "beginTime":  "2017-08-01T17:30:08+08:00",
            /*req, datetime, 有效期起始时间, desc:timeType字段不存在或为local时，beginTime为设备本地时间，如：2017-08-01T17:30:08；timeType字段为UTC时，beginTime为UTC时间，如：2017-08-01T17:30:08+08:00*/
            "endTime":  "2017-08-01T17:30:08+08:00",
            /*req, datetime, 有效期结束时间（timeType字段不存在或为local时, desc:timeType字段不存在或为local时，beginTime为设备本地时间，如：2017-08-01T17:30:08；timeType字段为UTC时，beginTime为UTC时间，如：2017-08-01T17:30:08+08:00*/
            "timeType":  "local"
            /*opt, enum, 时间类型, subType:string, [local#设备本地时间,UTC#UTC时间]*/
        },
        "belongGroup ":  "1,3,5",
        /*opt, string, 所属群组, range:[,]*/
        "password":  "123456",
        /*opt, string, 密码, range:[,]*/
        "doorRight":  "1,3",
        /*opt, string, 门权限, range:[,]*/
        "RightPlan": [
        /*opt, array, 门权限计划（锁权限计划）, subType:object, range:[,]*/
            {
                "doorNo":  1,
                /*opt, int, 门编号（锁ID）, range:[,], step:, unit:, unitType:*/
                "planTemplateNo":  "1,3,5"
                /*opt, string, 计划模板编号, range:[,], desc:同个门不同计划模板采用权限或的方式处理*/
            }
        ],
        "maxOpenDoorTime":  0,
        /*opt, int, 最大认证次数, range:[,], step:, unit:, unitType:, desc:0为无次数限制*/
        "openDoorTime":  1,
        /*opt, int, 已认证次数, range:[,], step:, unit:, unitType:*/
        "roomNumber":  123,
        /*opt, int, 房间号, range:[,], step:, unit:, unitType:*/
        "floorNumber":  1,
        /*opt, int, 层号, range:[,], step:, unit:, unitType:*/
        "doubleLockRight":  true,
        /*opt, bool, 反锁开门权限*/
        "localUIRight":  true,
        /*opt, bool, 是否具有设备本地UI访问权限*/
        "userVerifyMode":  "card",
        /*opt, enum, 人员验证方式, subType:string, [cardAndPw#刷卡+密码,card#刷卡,cardOrPw#刷卡或密码,fp#指纹,fpAndPw#指纹+密码,fpOrCard#指纹或刷卡,fpAndCard#指纹+刷卡,fpAndCardAndPw#指纹+刷卡+密码,faceOrFpOrCardOrPw#人脸或指纹或刷卡或密码,faceAndFp#人脸+指纹,faceAndPw#人脸+密码,faceAndCard#人脸+刷卡,face#人脸,employeeNoAndPw#工号+密码,fpOrPw#指纹或密码,employeeNoAndFp#工号+指纹,employeeNoAndFpAndPw#工号+指纹+密码,faceAndFpAndCard#人脸+指纹+刷卡,faceAndPwAndFp#人脸+密码+指纹,employeeNoAndFace#工号+人脸,faceOrfaceAndCard#人脸或人脸+刷卡,fpOrface#指纹或人脸,cardOrfaceOrPw#刷卡或人脸或密码],
        desc:人员验证方式的优先级高于读卡器验证方式。
        若为空表示清空人员验证方式*/
        "checkUser":  true,
        /*opt, bool, 设备是否进行人员重复添加校验, desc:false-不校验，true-校验（如果不配置该字段，则设备默认进行人员重复校验）（如果确认设备端不存在任何人员信息，可将其置为false，则设备不进行重复校验，这样会加快下发速度；如果不确认，则不建议配置该字段）*/
        "gender":  "male",
        /*opt, enum, 人脸图片对应的人员性别, subType:string, [male#男,female#女,unknown#未知], desc:male-男, female-女, unknown-未知*/
        "PersonInfoExtends": [
        /*opt, array, 人员信息扩展, subType:object, range:[,]*/
            {
                "value":  "test"
                /*opt, string, 人员信息扩展内容, range:[,]*/
            }
        ],
        "dynamicCode":  "123456",
        /*opt, string, 动态权限码, range:[,]*/
        "callNumbers": ["1-1-1-401"],
        /*opt, array, 呼叫号码列表, subType:string, range:[,], desc:默认规则X-X-X-X，如1-1-1-401, roomNumber字段扩展，支持列表时，使用列表配置相关信息*/
        "floorNumbers": [1, 2],
        /*opt, array, 层号列表, subType:int, range:[,], desc:floorNumber扩展，支持列表时，可使用该字段配置层号*/
        "operateType":  "byTerminal",
        /*opt, string, 操作类型, range:[,], desc:byTerminal:按终端操作*/
        "terminalNoList": [1],
        /*opt, array, 终端ID列表, subType:int, range:[,], desc:type为byTerminal,byTerminalOrg时必填,终端ID列表（目前仅支持单个终端）*/
        "groupName":  "test"
        /*opt, string, 组织架构, range:[1,64]*/
    }
}

15.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

16. 配置人员信息及权限删除

16.1 命令

PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json

16.2 输入参数

{
    "UserInfoDetail": {
    /*opt, object, 用户信息*/
        "mode":  "all",
        /*req, enum, 删除模式, subType:string, [all#删除所有,byEmployeeNo#按工号]*/
        "EmployeeNoList": [
        /*opt, array, 人员ID列表, subType:object, range:[,]*/
            {
                "employeeNo":  "test"
                /*opt, string, 工号, range:[,]*/
            }
        ],
        "operateType":  "byTerminal",
        /*opt, enum, 操作类型, subType:string, [byTerminal#按终端操作,byOrg#按组织操作,byTerminalOrg#按终端组织操作]*/
        "terminalNoList": [1, 2, 3, 4],
        /*opt, array, 终端列表, subType:int, range:[,], dep:and,{$.UserInfoDetail.operateType,eq,byTerminal}*/
        "orgNoList": [1, 2, 3, 4]
        /*opt, array, 组织列表, subType:int, range:[,], dep:or,{$.UserInfoDetail.operateType,eq,byOrg},{$.UserInfoDetail.operateType,eq,byTerminalOrg}*/
    }
}

16.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

17. 获取人员信息及权限删除进度

17.1 命令

GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json

17.2 输入参数

无

17.3 输出参数

{
    "UserInfoDetailDeleteProcess": {
    /*ro, req, object, 人员删除信息*/
        "status":  "processing"
        /*ro, req, enum, 状态, subType:string, [processing#处理中,success#成功,failed#失败]*/
    }
}

18. 获取指定工号的卡数量查询

18.1 命令

GET /ISAPI/AccessControl/CardInfo/Count?format=json

18.2 输入参数

无

18.3 输出参数

{
    "CardInfoCount": {
    /*ro, req, object, 卡数量*/
        "cardNumber":  100
        /*ro, opt, int, 卡数量, range:[,], step:, unit:, unitType:*/
    }
}

19. 查询卡信息

19.1 命令

POST /ISAPI/AccessControl/CardInfo/Search?format=json

19.2 输入参数

{
    "CardInfoSearchCond": {
    /*req, object, 卡查询条件*/
        "searchID":  "test",
        /*req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,设备记录内存,下次搜索加快速度)*/
        "searchResultPosition":  0,
        /*req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:,
        desc:当记录条数很多时,一次查询不能获取所有的记录,下一次查询时指定位置可以查询后面的记录。
        若设备支持的最大totalMatches为M个，但是当前设备已存储的totalMatches为N个（N<=M），则该字段的合法范围为0~N-1*/
        "maxResults":  30,
        /*req, int, 本次协议调用可获取的最大记录数, range:[,], step:, unit:, unitType:, desc:如maxResults值大于设备能力集返回的范围，则设备按照能力集最大值返回，设备不进行报错*/
        "EmployeeNoList": [
        /*opt, array, 人员ID列表, subType:object, range:[,]*/
            {
                "employeeNo":  "test"
                /*opt, string, 工号（人员ID）, range:[,]*/
            }
        ],
        "CardNoList": [
        /*opt, array, 卡号列表, subType:object, range:[,], desc:与人员ID列表互斥，两者选一*/
            {
                "cardNo":  "1234567890"
                /*opt, string, 卡号, range:[,]*/
            }
        ]
    }
}

19.3 输出参数

{
    "CardInfoSearch": {
    /*ro, opt, object, 卡查询信息*/
        "searchID":  "test",
        /*ro, req, string, 搜索记录唯一标识, range:[,]*/
        "responseStatusStrg":  "OK",
        /*ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]*/
        "numOfMatches":  1,
        /*ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:*/
        "totalMatches":  1,
        /*ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:*/
        "CardInfo": [
        /*ro, opt, array, 卡信息, subType:object, range:[,]*/
            {
                "employeeNo":  "test",
                /*ro, req, string, 工号（人员ID）, range:[,]*/
                "cardNo":  "test",
                /*ro, req, string, 卡号, range:[,]*/
                "cardType":  "normalCard",
                /*ro, req, enum, 卡类型, subType:, [normalCard#普通卡,patrolCard#巡更卡,hijackCard#胁迫卡,superCard#超级卡,dismissingCard#解除卡,emergencyCard#应急管理卡], desc:（用于授权临时卡权限，本身不能开门）*/
                "leaderCard":  "1,3,5"
                /*ro, opt, string, 是否有首次认证功能, range:[,], desc:（表示该卡对于门1、门3、门5有首次认证功能）*/
            }
        ]
    }
}

20. 配置卡信息

20.1 命令

PUT /ISAPI/AccessControl/CardInfo/SetUp?format=json

20.2 输入参数

{
    "CardInfo": {
    /*opt, object, 卡信息*/
        "employeeNo":  "test",
        /*req, string, 工号（人员ID）, range:[,]*/
        "cardNo":  "1234567890",
        /*req, string, 卡号, range:[,]*/
        "deleteCard":  true,
        /*opt, bool, 是否删除该卡, desc:true-是（只有删除该卡时，才填写该字段；新增或修改卡时，不填写该字段）*/
        "cardType":  "normalCard",
        /*req, enum, 卡类型, subType:string, [normalCard#普通卡,patrolCard#巡更卡,hijackCard#胁迫卡,superCard#超级卡,dismissingCard#解除卡,emergencyCard#应急管理卡]*/
        "leaderCard":  "1,3,5",
        /*opt, string, 是否有首次认证功能, range:[,], desc:（表示该卡对于门1、门3、门5有首次认证功能）*/
        "checkCardNo":  true,
        /*opt, bool, 设备是否进行卡重复添加校验, desc:false-不校验，true-校验（如果不配置该字段，则设备默认进行卡重复校验）（如果确认设备端不存在任何卡信息，可将其置为false，则设备不进行重复校验，这样会加快下发速度；如果不确认，则不建议配置该字段）*/
        "checkEmployeeNo":  true
        /*opt, bool, 设备是否进行工号（人员ID）存在校验,
        desc:false-不校验，true-校验（如果不配置该字段，则设备默认进行工号（人员ID）存在校验）
        （该字段配置为false时，设备不进行工号（人员ID）存在校验（可加快设备下发卡的速度）；该字段配置为true或不配置该字段时，设备进行工号（人员ID）存在校验，如不对处理速度有强烈要求，建议使用该方式）*/
    }
}

20.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

21. 添加卡信息

21.1 命令

POST /ISAPI/AccessControl/CardInfo/Record?format=json

21.2 输入参数

{
    "CardInfo": {
    /*req, object, 卡信息*/
        "employeeNo":  "test",
        /*req, string, 工号（人员ID）, range:[,]*/
        "cardNo":  "1234567890",
        /*req, string, 卡号, range:[,]*/
        "cardType ":  "normalCard",
        /*opt, enum, 卡类型, subType:string, [normalCard#普通卡,patrolCard#巡更卡,hijackCard#胁迫卡,superCard#超级卡,dismissingCard#解除卡,emergencyCard#应急管理卡（用于授权临时卡权限]*/
        "leaderCard":  "1,3,5",
        /*opt, string, 是否有首次认证功能, range:[,], desc:（表示该卡对于门1、门3、门5有首次认证功能）*/
        "checkCardNo":  true,
        /*opt, bool, 设备是否进行卡重复添加校验,
        desc:如果不配置该字段，则设备默认进行卡重复校验
        如果确认设备端不存在任何卡信息，可将其置为false，则设备不进行重复校验，这样会加快下发速度；如果不确认，则不建议配置该字段*/
        "checkEmployeeNo":  true,
        /*opt, bool, 设备是否进行工号存在校验,
        desc:如果不配置该字段，则设备默认进行工号存在校验
        该字段配置为false时，设备不进行工号（人员ID）存在校验（可加快设备下发卡的速度）；该字段配置为true或不配置该字段时，设备进行工号（人员ID）存在校验，如不对处理速度有强烈要求，建议使用该方式*/
        "operateType":  "byTerminal",
        /*opt, string, 操作类型, range:[,]*/
        "terminalNoList": [1]
        /*opt, array, 终端ID列表, subType:int, range:[,], desc:type为byTerminal,byTerminalOrg时必填,终端ID列表（目前仅支持单个终端*/
    }
}

21.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

22. 修改卡信息

22.1 命令

PUT /ISAPI/AccessControl/CardInfo/Modify?format=json

22.2 输入参数

{
    "CardInfo": {
    /*req, object, 卡信息*/
        "employeeNo":  "test",
        /*req, string, 工号（人员ID）, range:[,]*/
        "cardNo":  "1234567890",
        /*req, string, 卡号, range:[,]*/
        "cardType ":  "normalCard",
        /*opt, enum, 卡类型, subType:string, [normalCard#普通卡,patrolCard#巡更卡,hijackCard#胁迫卡,superCard#超级卡,dismissingCard#解除卡,emergencyCard#应急管理卡（用于授权临时卡权限]*/
        "leaderCard":  "1,3,5",
        /*opt, string, 是否有首次认证功能, range:[,], desc:（表示该卡对于门1、门3、门5有首次认证功能）*/
        "operateType":  "byTerminal",
        /*opt, string, 操作类型, range:[,]*/
        "terminalNoList": [1]
        /*opt, array, 终端ID列表, subType:int, range:[,], desc:type为byTerminal,byTerminalOrg时必填,终端ID列表（目前仅支持单个终端*/
    }
}

22.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

23. 删除卡信息

23.1 命令

PUT /ISAPI/AccessControl/CardInfo/Delete?format=json

23.2 输入参数

{
    "CardInfoDelCond": {
    /*req, object, 删除卡条件信息*/
        "EmployeeNoList": [
        /*opt, array, 人员ID列表, subType:object, range:[,]*/
            {
                "employeeNo":  "test"
                /*opt, string, 工号（人员ID）, range:[,]*/
            }
        ],
        "CardNoList": [
        /*opt, array, 卡号列表, subType:object, range:[,], desc:与人员ID列表互斥，两者选一*/
            {
                "cardNo":  "1234567890"
                /*opt, string, 卡号, range:[,]*/
            }
        ],
        "operateType":  "byTerminal",
        /*opt, enum, 操作类型, subType:string, [byTerminal#按终端操作]*/
        "terminalNoList": [1]
        /*opt, array, type为byTerminal, subType:int, range:[,]*/
    }
}

23.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

24. 获取人脸库中人脸记录总数

24.1 命令

GET /ISAPI/Intelligent/FDLib/Count?format=json

24.2 输入参数

无

24.3 输出参数

{
    "requestURL":  "http://10.7.52.31:8080/kms/services/rest/dataInfoService/downloadFile",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "FDRecordDataInfo": [
    /*ro, opt, array, 人脸库记录信息, subType:object, range:[,], desc:人脸库记录信息, {dep if errcode==1&&errMsg==ok}*/
        {
            "FDID":  "test",
            /*ro, opt, string, 人脸库ID, range:[,], desc:人脸库ID, string类型, 最大长度为63字节*/
            "faceLibType":  "blackFD",
            /*ro, opt, enum, 人脸库类型, subType:string, [blackFD#名单库,staticFD#静态库], desc:人脸库类型: blackFD-名单库, staticFD-静态库, string类型, 最大长度为32*/
            "name":  "test",
            /*ro, opt, string, 人脸库的名称, range:[,], desc:人脸库的名称, string类型, 最大长度为48字节*/
            "recordDataNumber":  123,
            /*ro, opt, int, 记录数据条数, range:[,], step:, unit:, unitType:*/
            "libArmingType":  "armingLib",
            /*ro, opt, enum, 库布防类型, subType:string, [armingLib#布防库,nonArmingLib#非布防库], desc:可选，库布防类型:”armingLib:布防库, nonArmingLib:非布防库",老设备不支持该字段，默认是布防库,即新建的所有库都运行进行布防,strin*/
            "libAttribute":  "general",
            /*ro, opt, enum, 库属性类型, subType:string, [general#普通库,blackList#非授权名单库,VIP#VIP库,passerby#路人库], desc:可选，库属性类型:"general:普通库,blackList:非授权名单库,VIP:VIP库, passerby:路人库",string*/
            "personnelFileEnabled":  true
            /*ro, opt, bool, 是否启用人员档案配置*/
        }
    ],
    "totalRecordDataNumber":  500000,
    /*ro, opt, int, 所有记录数据条数, range:[,], step:, unit:, unitType:, desc:所有记录数据条数, integer32类型*/
    "FDCapacity": {
    /*ro, opt, object, 人脸库容量信息*/
        "total":  0,
        /*ro, req, int, 总容量, range:[,], step:, unit:, unitType:, desc:单位GB*/
        "use":  0,
        /*ro, req, int, 已用容量, range:[,], step:, unit:, unitType:, desc:单位GB*/
        "remain":  0,
        /*ro, req, int, 剩余容量, range:[,], step:, unit:, unitType:, desc:单位GB*/
        "maxRecordDataNumber":  0,
        /*ro, opt, int, 最大记录数据条数, range:[,], step:, unit:, unitType:*/
        "useRecordDataNumber":  0,
        /*ro, opt, int, 已记录数据条数, range:[,], step:, unit:, unitType:*/
        "remainRecordDataNumber":  0
        /*ro, opt, int, 剩余记录数据条数, range:[,], step:, unit:, unitType:*/
    }
}

25. 查询人脸图片数据

25.1 命令

POST /ISAPI/Intelligent/FDLib/FDSearch?format=json

25.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FDSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询描述, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <FDID>
    <!--opt, string, 人脸比对库唯一标示ID, range:[,]-->test
  </FDID>
  <startTime>
    <!--opt, date, 人脸库人员出生开始时间-->1970-01-01+08:00
  </startTime>
  <endTime>
    <!--opt, date, 人脸库人员出生结束时间-->1970-01-01+08:00
  </endTime>
  <name>
    <!--req, string, 姓名, range:[1,32]-->test
  </name>
  <sex>
    <!--opt, enum, 性别, subType:string, [male#男,female#女]-->male
  </sex>
  <province>
    <!--opt, string, 省份, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </province>
  <city>
    <!--opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
  </city>
  <certificateType>
    <!--opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他]-->ID
  </certificateType>
  <certificateNumber>
    <!--opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
  </certificateNumber>
  <phoneNumber>
    <!--opt, string, 电话号码, range:[1,64]-->test
  </phoneNumber>
  <FaceModeList>
    <!--opt, array, 人脸模型信息列表, subType:object, range:[,]-->
    <FaceMode>
      <!--opt, object, 人脸模型-->
      <ModeInfo>
        <!--opt, object, 模型数据, desc:以图搜图时<ModeInfo>字段必填-->
        <similarity>
          <!--opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
        </similarity>
        <modeData>
          <!--opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModeInfo>
    </FaceMode>
  </FaceModeList>
  <modelStatus>
    <!--opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
  </modelStatus>
  <modelingStatus>
    <!--opt, string, 建模状态, range:[,], desc:success-建模成功,failed-建模失败,none-尚未建模；支持复选；后续使用这个字段,modelStatus将会去除-->success,failed,none
  </modelingStatus>
  <customFaceLibID>
    <!--opt, string, 自定义人脸库ID, range:[,], desc:当FDID和customFaceLibID同时存在时，以customFaceLibID为准-->test
  </customFaceLibID>
  <sortord>
    <!--opt, enum, 搜索结果排序类型, subType:string, [time#入库时间,contrastSuccessTime#比对成功时间,count#比对成功次数]-->time
  </sortord>
  <order>
    <!--opt, enum, 搜索结果排序方式, subType:string, [DESC#最晚入库最先展示,ASC#最早入库最先展示], desc:默认:DESC-->DESC
  </order>
  <StrangerLibFaceAppendData>
    <!--opt, object, 陌生人库支持人脸属性信息-->
    <PersonInfoExtendList size="4">
      <!--opt, array, 人员扩展信息列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <PersonInfoExtend>
        <!--opt, object, 人员扩展信息-->
        <id>
          <!--req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:, desc:从1开始赋值,依次增加-->1
        </id>
        <enable>
          <!--req, bool, 人员扩展信息使能-->true
        </enable>
        <name>
          <!--opt, string, 人员标签信息扩展名称, range:[,]-->test
        </name>
        <value>
          <!--opt, string, 人员标签信息扩展内容, range:[,]-->test
        </value>
      </PersonInfoExtend>
    </PersonInfoExtendList>
  </StrangerLibFaceAppendData>
  <OccurrencesInfo>
    <!--opt, object, 频次信息-->
    <enabled>
      <!--req, bool, 频次是否返回-->true
    </enabled>
    <occurrences>
      <!--opt, int, 频次, range:[,], step:, unit:, unitType:, desc:达到最低频次的人脸库图片才返回,当enabled为true时必须存在-->1
    </occurrences>
    <occurrencesSearchType>
      <!--opt, enum, 频次检索方式, subType:string, [greaterThanOrEqual#大于等于,lessThan#小于,equal#等于], desc:当enabled为true时必须存在-->greaterThanOrEqual
    </occurrencesSearchType>
  </OccurrencesInfo>
  <faceScore>
    <!--opt, int, 人脸评分, range:[-1,100], step:, unit:, unitType:, desc:-1表示评分未知（未对该人脸评分）-->1
  </faceScore>
  <FDIDList>
    <!--opt, object, 人脸库列表, desc:支持查询多个人脸库搜索,理论上FDID和FDIDList是互斥的，若用户同时下发，则以FDIDList为准-->
    <FDID>
      <!--req, string, 人脸库ID, range:[1,64]-->test
    </FDID>
  </FDIDList>
  <faceScoreMax>
    <!--opt, int, 人脸评分范围最大值, range:[-1,100], step:, unit:, unitType:, desc:有效值[0-100],-1表示评分未知（未对该人脸评分）,该节点可以和faceScore组合，此时faceScore表示该范围最小值，faceScore表示该范围最大值，如果单独使用,则最小值为0-->0
  </faceScoreMax>
  <pictureStatus>
    <!--opt, enum, 人脸图片状态, subType:string, [normal#正常人脸,abnormal#异常人脸],
desc:异常人脸（建模失败+人脸评分为低+图片url下载失败的）,
    Note:此搜索结果是设备根据当前算法识别效果提供的评判标准,异常图片可能影响人脸抓拍和比对的效果,如果为异常图片的,建议更换图片，后期随着算法准确率的提提升,此判断标准可能发生变化，因此此判断标准结果仅供参考，-->normal
  </pictureStatus>
  <importStartTime>
    <!--ro, opt, datetime, 入库开始时间-->1970-01-01T00:00:00+08:00
  </importStartTime>
  <importEndTime>
    <!--ro, opt, datetime, 入库结束时间-->1970-01-01T00:00:00+08:00
  </importEndTime>
  <faceContrastSuccessStartTime>
    <!--ro, opt, datetime, 人脸比对成功开始时间, desc:支持确认某段时间内监控场景有哪些人出现过。配合使用的查询条件：人脸库ID(FDID，包括：动态库、允许库、静态库)、排序类型（sortord）、排序顺序（order）-->1970-01-01T00:00:00+08:00
  </faceContrastSuccessStartTime>
  <faceContrastSuccessEndTime>
    <!--ro, opt, datetime, 人脸比对成功结束时间, desc:支持确认某段时间内监控场景有哪些人出现过。配合使用的查询条件：人脸库ID(FDID，包括：动态库，允许库、静态库)、排序类型（sortord）、排序顺序（order）-->1970-01-01T00:00:00+08:00
  </faceContrastSuccessEndTime>
</FDSearchDescription>

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FDSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <progress>
    <!--ro, opt, int, 查询进度, range:[0,100], step:, unit:, unitType:, desc:设备库的容量可能非常大，检索时间较长，对于远程检索时更加明显，为了提高检索性能，在交互链接中增加进度返回（只有在进度达到100的时候，就可以搜索出具体的数据<MatchList></MatchList>-->1
  </progress>
  <MatchList>
    <!--ro, opt, array, 匹配结果列表, subType:object, range:[,]-->
    <MatchElement>
      <!--ro, opt, object, 匹配结果-->
      <FDID>
        <!--ro, opt, string, 人脸比对库唯一标示ID, range:[,]-->test
      </FDID>
      <thresholdValue>
        <!--ro, opt, int, 检测阈值, range:[0,100], step:, unit:, unitType:, desc:阈值越大检测准确率越高-->1
      </thresholdValue>
      <bornTime>
        <!--ro, opt, date, 人员出生日期-->1970-01-01+08:00
      </bornTime>
      <name>
        <!--ro, req, string, 姓名, range:[1,32]-->test
      </name>
      <sex>
        <!--ro, opt, enum, 性别, subType:string, [male#男,female#女]-->male
      </sex>
      <province>
        <!--ro, opt, string, 省份, range:[,], desc:参考《全国各省份城市列表.txt》-->11
      </province>
      <city>
        <!--ro, opt, string, 城市, range:[,], desc:参考《全国各省份城市列表.txt》-->11
      </city>
      <certificateType>
        <!--ro, opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他]-->ID
      </certificateType>
      <certificateNumber>
        <!--ro, opt, string, 证件号, range:[8,32], desc:当certificateType为ID时，certificateNumber长度范围[8,18]；当certificateType为passportID时，certificateNumber长度范围[8,32]；当certificateType为other时，certificateNumber长度范围[8,18]；-->test
      </certificateNumber>
      <picURL>
        <!--ro, req, picurl, 人脸信息的对应图片的URL, desc:上层根据这个返回的URL在获取图片数据-->http://127.0.0.1
      </picURL>
      <PID>
        <!--ro, req, string, 图片ID, range:[,]-->test
      </PID>
      <PersonInfoExtendList>
        <!--ro, opt, array, 人员扩展信息列表, subType:object, range:[,]-->
        <PersonInfoExtend>
          <!--ro, opt, object, 人员扩展信息-->
          <id>
            <!--ro, req, int, 人员扩展信息序号, range:[,], step:, unit:, unitType:-->1
          </id>
          <enable>
            <!--ro, req, bool, 人员扩展信息使能-->true
          </enable>
          <name>
            <!--ro, opt, string, 人员标签信息扩展名称, range:[,]-->test
          </name>
          <value>
            <!--ro, opt, string, 人员标签信息扩展内容, range:[,]-->test
          </value>
        </PersonInfoExtend>
      </PersonInfoExtendList>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
      </similarity>
      <ModelingStatus>
        <!--ro, opt, object, 建模状态, desc:后续使用这个字段,modelStatus将会去除-->
        <FDID>
          <!--ro, opt, string, 人脸库ID, range:[,]-->test
        </FDID>
        <PID>
          <!--ro, opt, string, 图片ID, range:[,]-->test
        </PID>
        <name>
          <!--ro, req, string, 图片名称, range:[,]-->test
        </name>
        <status>
          <!--ro, req, enum, 建模状态, subType:string, [success#建模成功,failed#建模失败,none#尚未建模]-->success
        </status>
        <reason>
          <!--ro, opt, enum, 建模失败原因, subType:string, [noface#没有人脸,faceSizeSmall#图片尺寸太小,shadeFace#人脸被遮挡,unknow#未知错误,imageURLDownloadFailed#图片下载失败,noJpgPicture#图片不是jpg格式,errorPictureResolution#错误的图片分辨率,faceSizeBig#图片尺寸太大,diskError#磁盘错误,diskFull#磁盘满,analysisFailed#分析失败,multipleFaces#存在多个人脸], desc:当<status>==failed时存在-->noface
        </reason>
        <customHumanID>
          <!--ro, opt, string, 集成客户自定义人员ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
        </customHumanID>
        <customFaceLibID>
          <!--ro, opt, string, 集成客户自定义人脸库ID, range:[,], desc:最小长度32-->12345678901234567890123456789012
        </customFaceLibID>
        <modeData>
          <!--ro, opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理-->test
        </modeData>
      </ModelingStatus>
      <isNoSaveFDPicture>
        <!--ro, opt, bool, 不保存人脸库图片, desc:若开启了导入图片或者建模时不保存原图功能,则需返回该节点为true,未开启则无需返回该节点-->true
      </isNoSaveFDPicture>
      <humanId>
        <!--ro, opt, string, 人员ID, range:[,]-->test
      </humanId>
      <modelStatus>
        <!--ro, opt, enum, 建模状态（旧）, subType:string, [modeling#已建模,unmodeled#未建模,modelingFailed#建模失败]-->modeling
      </modelStatus>
      <FMCount>
        <!--ro, opt, int, 人脸比对成功总次数, range:[,], step:, unit:, unitType:-->1
      </FMCount>
      <importTime>
        <!--ro, opt, datetime, 入库时间-->1970-01-01T00:00:00+08:00
      </importTime>
      <UUPID>
        <!--ro, opt, string, 人脸库底库图片唯一标识ID, range:[,]-->test
      </UUPID>
      <occurrences>
        <!--ro, opt, int, 出现频次, range:[,], step:, unit:, unitType:, desc:仅搜索条件中启用频次返回,本字段才返回-->1
      </occurrences>
      <IMSIList>
        <!--ro, opt, array, IMSI列表, subType:object, range:[,], desc:若人脸库类型为允许库，必须绑定至少一个IMSI号码，最多5个-->
        <IMSIItem>
          <!--ro, opt, object, IMSI采集信息-->
          <IMSI>
            <!--ro, opt, string, IMSI号码, range:[,]-->123456789012345
          </IMSI>
          <count>
            <!--ro, opt, int, 比中次数, range:[,], step:, unit:, unitType:-->10
          </count>
          <lastFMTime>
            <!--ro, opt, datetime, 最近比对成功时间-->1970-01-01T00:00:00+08:00
          </lastFMTime>
        </IMSIItem>
      </IMSIList>
      <lastFMTime>
        <!--ro, opt, datetime, 最近比对成功时间-->1970-01-01T00:00:00+08:00
      </lastFMTime>
    </MatchElement>
  </MatchList>
</FDSearchResult>

26. 配置人脸库中的人脸数据

26.1 命令

PUT /ISAPI/Intelligent/FDLib/FDSetUp?format=json

26.2 输入参数

{
    "faceURL":  "http",
    /*opt, string, 图片url, range:[,]*/
    "faceLibType":  "blackFD",
    /*req, enum, 人脸库类型, subType:string, [blackFD#名单库,staticFD#静态库], desc:必填, 人脸库类型: blackFD-名单库, staticFD-静态库, string类型, 最大长度为32*/
    "FDID":  "test",
    /*req, string, 人脸库ID, range:[,], desc:最大长度为63字节,多个人脸库用逗号隔开*/
    "FPID":  " ",
    /*opt, string, 人脸记录ID, range:[,], desc:可选, 人脸记录ID, string类型, 如果外部传入,最长63字节, 字母数字组合, 需要保证唯一性; 如果外部不传则由设备自动生成（与非视频工号（人员ID）字段一致）*/
    "deleteFP":  true,
    /*opt, bool, 是否删除该人脸, desc:可选，boolean，是否删除该人脸，true-是（只有删除该人脸时，才填写该字段；新增或修改人脸时，不填写该字段）*/
    "modelData":  "test",
    /*opt, string, 目标模型数据, range:[,], desc:可选，目标模型数据，字符串类型，传输过程中针对二进制非建模数据进行base64的加密处理*/
    "PicFeaturePoints": [
    /*opt, array, 特征图片坐标, subType:object, range:[,],
    desc:图片特征点下发,若设备仅支持3种类型的特征点,平台下发3种以上特征点时,设备不能报错
        背景：不同设备人脸评分算法不一致,导致平台评分通过的人脸下发至设备评分不通过，无法建模
        解决方法：由上层平台采用统一的人脸评分以及特征点提取算法计算出图片的特征点并下发至设备,有了特征点可以保证设备建模成功,兼容不同设备人脸评分算法的差异性
        特征点下发方式：特征点数据编码至人脸图片数据下发、特征点数据以json参数格式随人脸图片url下发
        设备获取特征点优先级从高到低：1.图片内携带特征点 2.json格式特征点*/
        {
            "featurePointType":  "face",
            /*req, enum, 特征点类型, subType:string, [face#人脸,leftEye#左眼,rightEye#右眼,leftMouthCorner#左嘴角,rightMouthCorner#右嘴角,nose#鼻子], desc:必填,string,特征点类型:face-人脸,leftEye-左眼,rightEye-右眼,leftMouthCorner-左嘴角,rightMouthCorner-右嘴角,nose-鼻子*/
            "coordinatePoint": {
            /*opt, object, 点坐标*/
                "x":  1,
                /*req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:坐标进行归一化处理*/
                "y":  1,
                /*req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:坐标进行归一化处理*/
                "width":  1,
                /*opt, int, 宽度, range:[0,1000], step:, unit:, unitType:, desc:当featurePointType为face时必填*/
                "height":  1
                /*opt, int, 高度, range:[0,1000], step:, unit:, unitType:, desc:当featurePointType为face时必填*/
            }
        }
    ],
    "faceType":  "normalFace",
    /*opt, enum, 人脸类型, subType:string, [normalFace#普通人脸（默认）,patrolFace#巡更人脸,hijackFace#胁迫人脸,superFace#超级人脸]*/
    "saveFacePic":  true,
    /*opt, bool, 是否保存人脸底图*/
    "leaderPermission": [1, 2, 3, 4]
    /*opt, array, 首次认证权限, subType:int, range:[1,4],
    desc:数组为空表示清空人员首次认证权限
    表示人员具有1,2,3,4门编号的首次认证权限*/
}

26.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

27. 添加人脸数据

27.1 命令

POST /ISAPI/Intelligent/FDLib/FaceDataRecord?format=json

27.2 输入参数

{
    "faceURL":  "test",
    /*opt, string, 人脸url, range:[,]*/
    "faceLibType":  "blackFD",
    /*req, enum, 人脸库类型, subType:string, [blackFD#名单库,staticFD#静态库], desc:人脸库类型: blackFD-名单库, staticFD-静态库, string类型, 最大长度为32*/
    "FDID":  "test",
    /*req, string, 人脸库ID, range:[,], desc:人脸库ID, string类型, 最大长度为63字节,多个人脸库用逗号隔开;*/
    "FPID":  " test",
    /*opt, string, 人脸记录ID, range:[,], desc:人脸记录ID（与非视频工号（人员ID）字段一致）, string类型, 最大长度为63字节*/
    "name":  "张三",
    /*req, string, 人脸图片对应的人员姓名, range:[,], desc:最大长度为96字节*/
    "gender":  "male",
    /*opt, enum, 人脸图片对应的人员性别, subType:string, [male#男,female#女,unknown#未知], desc:最大长度为32*/
    "bornTime":  "2004-05-03",
    /*req, string, 人脸图片对应的人员出生日期, range:[,], desc:最大长度为20*/
    "city":  "130100",
    /*opt, string, 人脸图片对应的人员出生城市编号, range:[,], desc:人脸图片对应的人员出生城市编号(详见:全国各省份城市列表), string类型, 最大长度为32*/
    "certificateType ":  "ID",
    /*opt, enum, 证件类型, subType:string, [ID#身份证,other#其他], desc:最大长度为10*/
    "certificateNumber":  "test",
    /*opt, string, 证件号, range:[,], desc:string类型, 最大长度为32字节（由数字和字母 "0-9a-zA-Z"组成）*/
    "caseInfo":  "test",
    /*opt, string, 备注信息, range:[,], desc:string类型, 最大长度为192字节, {dep if type == blackFD}*/
    "tag":  "aa,bb,cc,dd",
    /*opt, string, 自定义标签, range:[,], desc:自定义标签,单个标签最大48字节,(最多4个标签, 英文逗号隔开, 最大长度为195字节), string类型, , {dep if faceLibType == blackFD}*/
    "address":  "test",
    /*opt, string, 人员住址, range:[,], desc:最大长度为192字节, {dep if faceLibType == staticFD }*/
    "customInfo":  "test",
    /*opt, string, 自定义信息, range:[,], desc:最大长度为192字节, {dep if faceLibType == staticFD }*/
    "modelData":  "test",
    /*opt, string, 目标模型数据, range:[,], desc:目标模型数据，字符串类型，传输过程中针对二进制非建模数据进行base64的加密处理*/
    "transfer":  true,
    /*opt, bool, PBG对接,
    desc:boolean类型，PBG对接，需要设备开启微视云安全认证，为了兼容原有功能，对部分协议进行变更，
        涉及到名单添加和名单修改2个接口，协议中增加是否转存的字段，不填默认不转存，如果是web操作，需要将此字段写成需要转存，智能应用服务器1.1.0增加*/
    "operateType":  "byTerminal",
    /*opt, enum, 操作类型, subType:string, [byTerminal#按终端操作]*/
    "terminalNoList": [1],
    /*opt, array, type为byTerminal, subType:int, range:[,], desc:type为byTerminal,byTerminalOrg时必填,终端ID列表（目前仅支持单个终端）*/
    "PicFeaturePoints": [
    /*opt, array, 图片特征点坐标, subType:object, range:[,]*/
        {
            "featurePointType":  "face",
            /*req, enum, 特征点类型, subType:string, [face#人脸,leftEye#左眼,rightEye#右眼,leftMouthCorner#左嘴角,rightMouthCorner#右嘴角,nose#鼻子], desc:特征点类型:face-人脸,leftEye-左眼,rightEye-右眼,leftMouthCorner-左嘴角,rightMouthCorner-右嘴角,nose-鼻子*/
            "coordinatePoint": {
            /*opt, object, 坐标点, desc:坐标原点位于左上方*/
                "x":  1,
                /*req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:坐标进行归一化处理*/
                "y":  1,
                /*req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:坐标进行归一化处理*/
                "width":  1,
                /*opt, int, 宽度, range:[0,1000], step:, unit:, unitType:, desc:当featurePointType为face时必填*/
                "height":  1
                /*opt, int, 高度, range:[0,1000], step:, unit:, unitType:, desc:当featurePointType为face时必填*/
            }
        }
    ],
    "faceType":  "normalFace",
    /*opt, enum, 人脸类型, subType:string, [normalFace#普通人脸（默认）,patrolFace#巡更人脸,hijackFace#胁迫人脸,superFace#超级人脸]*/
    "saveFacePic":  true,
    /*opt, bool, 是否保存人脸底图*/
    "leaderPermission": [1, 2, 3, 4]
    /*opt, array, 首次认证权限, subType:int, range:[1,4],
    desc:数组为空表示清空人员首次认证权限
    表示人员具有1,2,3,4门编号的首次认证权限*/
}

27.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, req, int, 状态码, range:[,], step:, unit:, unitType:*/
    "statusString":  "test",
    /*ro, req, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, req, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时*/
    "errorMsg":  "ok",
    /*ro, opt, string, 错误描述, range:[,], desc:当statusCode不为1时*/
    "FPID":  "test",
    /*ro, opt, string, 人脸记录ID, range:[,], desc:人脸数据添加成功之后返回的人脸记录ID, 具有唯一性, string类型,最大长度为63字节, {dep if errcode == 1 && errMsg == ok}*/
    "rowKey":  "test"
    /*ro, opt, string, 人脸记录rowKey, range:[,], desc:人脸数据添加成功之后返回的人脸记录rowKey, 具有唯一性, string类型,最大长度为64字节, {dep if errcode == 1 && errMsg == ok*/
}

28. 修改人脸库中的人脸数据

28.1 命令

PUT /ISAPI/Intelligent/FDLib/FDSearch?format=json&FDID=1&FPID=<FPID>&faceLibType=blackFD

28.2 输入参数

{
    "faceURL":  "test",
    /*opt, string, 人脸图片URL方式上传时输入的图片存储URL, range:[0,256]*/
    "name":  "张三",
    /*req, string, 人脸图片对应的人员姓名, range:[0,96]*/
    "gender":  "male",
    /*opt, enum, 人脸图片对应的人员性别, subType:string, [male#男,female#女,unknown#未知]*/
    "bornTime":  "1970-01-01+08:00",
    /*req, date, 人脸图片对应的人员出生日期*/
    "city":  "130100",
    /*opt, string, 人脸图片对应的人员出生城市编号(详见全国各省份城市列表), range:[,]*/
    "certificateType ":  "ID",
    /*opt, enum, 证件类型, subType:string, [ID#身份证]*/
    "certificateNumber":  "test",
    /*opt, string, 证件号, range:[,]*/
    "caseInfo":  "test",
    /*opt, string, 备注信息, range:[0,192], desc:dep if type == blackFD*/
    "tag":  "aa,bb,cc,dd",
    /*opt, string, 自定义标签, range:[0,195], desc:单个标签最大48字节,(最多4个标签,  英文逗号隔开,  最大长度为195字节), dep if faceLibType == blackFD*/
    "address":  "test",
    /*opt, string, 人员住址, range:[0,192], desc:dep if faceLibType == staticFD*/
    "customInfo":  "test",
    /*opt, string, 自定义信息, range:[0,192], desc:dep if faceLibType == staticFD*/
    "modelData":  "test",
    /*opt, string, 目标模型数据, range:[,], desc:传输过程中针对二进制非建模数据进行base64的加密处理*/
    "rowKey ":  "test",
    /*opt, string, 人脸记录数据库主键, range:[0,64], desc:根据rowKey进行查询,能提高查找效率*/
    "transfer":  true,
    /*opt, bool, 是否转存,
    desc:PBG对接,需要设备开启微视云安全认证,为了兼容原有功能,对部分协议进行变更,
        涉及到名单添加和名单修改2个接口,协议中增加是否转存的字段,不填默认不转存,如果是web操作,需要将此字段写成需要转存,智能应用服务器1.1.0增加*/
    "PicFeaturePoints": [
    /*opt, array, 图片特征点下发, subType:object, range:[,],
    desc:若设备仅支持3种类型的特征点,平台下发3种以上特征点时,设备不能报错
        背景：不同设备人脸评分算法不一致,导致平台评分通过的人脸下发至设备评分不通过，无法建模
        解决方法：由上层平台采用统一的人脸评分以及特征点提取算法计算出图片的特征点并下发至设备,有了特征点可以保证设备建模成功,兼容不同设备人脸评分算法的差异性
        特征点下发方式：特征点数据编码至人脸图片数据下发、特征点数据以json参数格式随人脸图片url下发
        设备获取特征点优先级从高到低：1.图片内携带特征点 2.json格式特征点*/
        {
            "featurePointType":  "face",
            /*req, enum, 特征点类型, subType:string, [face#人脸,leftEye#左眼,rightEye#右眼,leftMouthCorner#左嘴角,rightMouthCorner#右嘴角,nose#鼻子]*/
            "coordinatePoint": {
            /*opt, object, 区域, desc:坐标原点位于左上方*/
                "x":  1,
                /*req, int, x坐标, range:[0,1000], step:, unit:, unitType:, desc:坐标进行归一化处理,归至0-1000*/
                "y":  1,
                /*req, int, y坐标, range:[0,1000], step:, unit:, unitType:, desc:坐标进行归一化处理,归至0-1000*/
                "width":  1,
                /*opt, int, 宽度, range:[0,1000], step:, unit:, unitType:, desc:当featurePointType为face时必填*/
                "height":  1
                /*opt, int, 高度, range:[0,1000], step:, unit:, unitType:, desc:当featurePointType为face时必填*/
            }
        }
    ],
    "faceType":  "normalFace",
    /*opt, enum, 人脸类型, subType:string, [normalFace#普通人脸（默认）,patrolFace#巡更人脸,hijackFace#胁迫人脸,superFace#超级人脸]*/
    "saveFacePic":  true,
    /*opt, bool, 是否保存人脸底图*/
    "leaderPermission": [1, 2, 3, 4]
    /*opt, array, 首次认证权限, subType:int, range:[1,4],
    desc:数组为空表示清空人员首次认证权限
    表示人员具有1,2,3,4门编号的首次认证权限*/
}

28.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

29. 删除人脸库中的人脸数据

29.1 命令

PUT /ISAPI/Intelligent/FDLib/FDSearch/Delete?format=json&FDID=1&faceLibType=blackFD

29.2 输入参数

{
    "FPID": [
    /*opt, array, 人脸记录ID列表, subType:object, range:[,]*/
        {
            "value":  "test",
            /*req, string, 人脸记录ID, range:[0,63]*/
            "rowKey":  "test"
            /*opt, string, 人脸记录数据库主键, range:[0,64], desc:可选,人脸记录数据库主键,根据rowKey进行查询,能提高查找效率,string,64字节 在轻量级产品中是必填字段*/
        }
    ],
    "operateType":  "byTerminal",
    /*opt, enum, 操作类型, subType:string, [byTerminal#按终端操作]*/
    "terminalNoList": [1]
    /*opt, array, 终端ID列表, subType:int, range:[,], desc:可选,array,type为byTerminal,byTerminalOrg时必填,终端ID列表（目前仅支持单个终端）*/
}

29.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

30. 查询指纹信息

30.1 命令

POST /ISAPI/AccessControl/FingerPrintUpload?format=json

30.2 输入参数

{
    "FingerPrintCond": {
    /*opt, object, 搜索条件*/
        "searchID":  "test",
        /*req, string, 搜索记录唯一标识, range:[1,32], desc:用来确认上层客户端是否为同一个(倘若是同一个,设备记录内存,下次搜索加快速度)*/
        "employeeNo":  "test",
        /*req, string, 指纹关联的工号（人员ID）, range:[1,32]*/
        "cardReaderNo":  1,
        /*opt, int, 读卡器编号, range:[,], step:, unit:, unitType:*/
        "fingerPrintID":  1
        /*opt, int, 手指编号, range:[1,10], step:, unit:, unitType:*/
    }
}

30.3 输出参数

{
    "FingerPrintInfo": {
    /*ro, opt, object, 指纹信息*/
        "searchID":  "test",
        /*ro, req, string, 搜索记录唯一标识, range:[,]*/
        "status":  "OK",
        /*ro, req, enum, 状态, subType:string, [OK#存在指纹,NoFP#不存在指纹]*/
        "FingerPrintList": [
        /*ro, opt, array, 指纹列表, subType:object, range:[,]*/
            {
                "cardReaderNo":  1,
                /*ro, req, int, 读卡器编号, range:[1,10], step:, unit:, unitType:*/
                "fingerPrintID":  1,
                /*ro, req, int, 手指编号, range:[,], step:, unit:, unitType:*/
                "fingerType":  "normalFP",
                /*ro, req, enum, 指纹类型, subType:string, [normalFP#普通指纹,hijackFP#胁迫指纹,patrolFP#巡更指纹,superFP#超级指纹,dismissingFP#解除指纹]*/
                "fingerData":  "test",
                /*ro, req, string, 指纹数据, range:[,]*/
                "leaderFP": [1, 3, 5]
                /*ro, opt, array, 是否有首次认证功能, subType:int, range:[,], desc:（[1,3,5]代表指纹对于门1、门3、门5有首次认证功能）*/
            }
        ]
    }
}

31. 配置指纹信息

31.1 命令

POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json

31.2 输入参数

{
    "FingerPrintCfg": {
    /*opt, object, 指纹配置*/
        "employeeNo":  "test",
        /*req, string, 指纹关联的工号, range:[1,32]*/
        "enableCardReader": [1, 3, 5],
        /*req, array, 需要下发指纹的读卡器, subType:int, range:[,], desc:[1,3,5]代表需要下发给读卡器1、读卡器3、读卡器5*/
        "fingerPrintID":  1,
        /*req, int, 手指编号, range:[1,10], step:, unit:, unitType:*/
        "deleteFingerPrint":  true,
        /*opt, bool, 是否删除该指纹, desc:true-是（只有删除该指纹时，才填写该字段；新增或修改指纹时，不填写该字段）*/
        "fingerType":  "normalFP",
        /*req, enum, 指纹类型, subType:string, [normalFP#普通指纹,hijackFP#胁迫指纹,patrolFP#巡更指纹,superFP#超级指纹,dismissingFP#解除指纹]*/
        "fingerData":  "test",
        /*opt, string, 指纹数据, range:[,], desc:base64处理，如果需要加密，则指纹数据仅做一次base64处理，直接进行aes加密*/
        "leaderFP": [1, 3, 5],
        /*opt, array, 是否有首次认证功能, subType:int, range:[1,5], desc:（[1,3,5]代表指纹对于门1、门3、门5有首次认证功能）*/
        "checkEmployeeNo":  true
        /*opt, bool, 设备是否进行工号（人员ID）存在校验*/
    }
}

31.3 输出参数

{
    "FingerPrintStatus": {
    /*ro, opt, object, 指纹状态*/
        "status":  "success",
        /*ro, opt, enum, 状态, subType:string, [success#成功,failed#失败], desc:（对于实际下发指纹数据到读卡器时，不会返回该字段。如果仅是修改指纹参数（不涉及到指纹数据下发到读卡器）或删除指纹，才会返回该字段）*/
        "StatusList": [
        /*ro, opt, array, 状态列表, subType:object, range:[,], desc:（对于实际下发指纹数据到读卡器时，才会返回该列表。如果仅是修改指纹参数（不涉及到指纹数据下发到读卡器）或删除指纹，则不会返回该列表）*/
            {
                "id":  1,
                /*ro, opt, int, 读卡器编号, range:[,], step:, unit:, unitType:*/
                "cardReaderRecvStatus":  "1",
                /*ro, opt, enum, 指纹读卡器状态, subType:, [0#失败,1#成功,2#该指纹模组不在线,3#重试或指纹质量差,4#内存已满,5#已存在该指纹,7#非法指纹ID,8#该指纹模组无需配置,10#指纹读卡器版本过低]*/
                "errorMsg":  "test"
                /*ro, opt, string, 下发错误信息, range:[1,32], desc:当cardReaderRecvStatus为5时，表示已存在指纹对应的工号（人员ID）*/
            }
        ]
    }
}

32. 获取门禁主机参数

32.1 命令

GET /ISAPI/AccessControl/AcsCfg?format=json

32.2 输入参数

无

32.3 输出参数

{
    "AcsCfg": {
    /*ro, req, object, 门禁主机参数配置*/
        "RS485Backup":  true,
        /*ro, opt, bool, 是否启用下行RS485通信备份功能：false-不启用*/
        "showCapPic":  true,
        /*ro, opt, bool, 是否显示抓拍图片*/
        "showUserInfo":  true,
        /*ro, opt, bool, 是否显示用户信息*/
        "overlayUserInfo":  true,
        /*ro, opt, bool, 是否叠加用户信息*/
        "voicePrompt":  true,
        /*ro, opt, bool, 是否启用语音提示*/
        "uploadCapPic":  true,
        /*ro, opt, bool, 联动抓拍是否上传图片*/
        "saveCapPic":  true,
        /*ro, opt, bool, 是否保存抓拍图片*/
        "inputCardNo":  true,
        /*ro, opt, bool, 是否是否允许按键输入卡号*/
        "enable3G4G":  true,
        /*ro, opt, bool, 3G4G使能*/
        "protocol":  "Private",
        /*ro, opt, enum, 读卡器通信协议类型, subType:string, [Private#私有协议,OSDP#OSDP协议]*/
        "enableCaptureCertificate":  true,
        /*ro, opt, bool, 是否启动证件抓拍, desc:false-不启动，true-启动， 无该字段不支持*/
        "showPicture":  true,
        /*ro, opt, bool, 是否显示认证照片*/
        "showEmployeeNo":  true,
        /*ro, opt, bool, 是否显示认证工号*/
        "showName":  true,
        /*ro, opt, bool, 是否显示认证姓名*/
        "thermalEnabled":  true,
        /*ro, opt, bool, 测温开关使能*/
        "thermalMode":  true,
        /*ro, opt, bool, 是否开启仅测温模式*/
        "thermalPictureEnabled":  true,
        /*ro, opt, bool, 仅测温模式可见光图片上传使能（用于控制抓拍图片和热成像可见光图片是否上传）*/
        "thermalIp":  "192.168.1.1",
        /*ro, opt, string, 热成像测温仪ip, range:[,], desc:门禁设备采用和卡片机定制的协议集成的，只需要一个ip地址即可添加到网络；对于安检门设备，专门用一个网口连接热成像测温仪，故不需要配置*/
        "highestThermalThreshold":  37.3,
        /*ro, opt, float, 温度阈值上限, range:[,], step:, unit:, unitType:*/
        "lowestThermalThreshold":  38.5,
        /*ro, opt, float, 温度阈值下限, range:[,], step:, unit:, unitType:*/
        "thermalDoorEnabled":  false,
        /*ro, opt, bool, 温度阈值开门使能, desc:超过温度阈值上限（highestThermalThreshold）/低于温度阈值下限（lowestThermalThreshold）后是否开门，true-开门，false-不开门（默认）*/
        "QRCodeEnabled":  false,
        /*ro, opt, bool, 二维码功能使能*/
        "remoteCheckDoorEnabled":  false,
        /*ro, opt, bool, 远程核验是否控制门的开关*/
        "checkChannelType":  "Ezviz",
        /*ro, opt, enum, 核验通道类型, subType:string, [Ezviz#萤石通道,ISUP#ISUP（原EHome）通道,ISAPI#ISAPI通道,PrivateSDK#私有SDK通道,ISAPIListen#ISAPI监听], desc:当remoteCheckDoorEnabled字段为true时，该字段生效*/
        "channelIp":  "test",
        /*ro, opt, string, 核验通道ip, range:[,], desc:当checkChannelType字段为PrivateSDK时，该字段生效*/
        "uploadVerificationPic":  true,
        /*ro, opt, bool, 认证是否上传图片*/
        "saveVerificationPic":  true,
        /*ro, opt, bool, 是否保存认证图片*/
        "saveFacePic":  true,
        /*ro, opt, bool, 是否保存人脸底图*/
        "thermalUnit":  "celsius",
        /*ro, opt, enum, 测温单位配置, subType:string, [celsius#摄氏度,fahrenheit#华氏度]*/
        "highestThermalThresholdF":  1.0,
        /*ro, opt, float, 华氏度温度阈值上限, range:[,], step:, unit:, unitType:, desc:单位：华氏度，精度：小数点后一位。用于判断超出该阈值门禁设备是否开门,温度字段若未0表明不启用该字段，需增加注释*/
        "lowestThermalThresholdF":  1.0,
        /*ro, opt, float, 华氏度温度阈值下限, range:[,], step:, unit:, unitType:, desc:单位：华氏度，精度：小数点后一位。用于判断超出该阈值门禁设备是否开门,温度字段若未0表明不启用该字段，需增加注释*/
        "thermalCompensation":  1.0
        /*ro, opt, float, 温度补偿, range:[,], step:, unit:, unitType:, desc:单位根据thermalUnit字段确定，若thermalUnit字段不存在认为单位为摄氏度*/
    }
}

33. 配置门禁主机参数

33.1 命令

PUT /ISAPI/AccessControl/AcsCfg?format=json

33.2 输入参数

{
    "AcsCfg": {
    /*req, object, 门禁主机参数配置*/
        "RS485Backup":  true,
        /*opt, bool, 是否启用下行RS485通信备份功能：false-不启用*/
        "showCapPic":  true,
        /*opt, bool, 是否显示抓拍图片*/
        "showUserInfo":  true,
        /*opt, bool, 是否显示用户信息*/
        "overlayUserInfo":  true,
        /*opt, bool, 是否叠加用户信息*/
        "voicePrompt":  true,
        /*opt, bool, 是否启用语音提示*/
        "uploadCapPic":  true,
        /*opt, bool, 联动抓拍是否上传图片*/
        "saveCapPic":  true,
        /*opt, bool, 是否保存抓拍图片*/
        "inputCardNo":  true,
        /*opt, bool, 是否是否允许按键输入卡号*/
        "enable3G4G":  true,
        /*opt, bool, 3G4G使能*/
        "protocol":  "Private",
        /*opt, enum, 读卡器通信协议类型, subType:string, [Private#私有协议,OSDP#OSDP协议]*/
        "enableCaptureCertificate":  true,
        /*opt, bool, 是否启动证件抓拍, desc:false-不启动，true-启动， 无该字段不支持*/
        "showPicture":  true,
        /*opt, bool, 是否显示认证照片*/
        "showEmployeeNo":  true,
        /*opt, bool, 是否显示认证工号*/
        "showName":  true,
        /*opt, bool, 是否显示认证姓名*/
        "thermalEnabled":  true,
        /*opt, bool, 测温开关使能*/
        "thermalMode":  true,
        /*opt, bool, 是否开启仅测温模式*/
        "thermalPictureEnabled":  true,
        /*opt, bool, 仅测温模式可见光图片上传使能（用于控制抓拍图片和热成像可见光图片是否上传）*/
        "thermalIp":  "192.168.1.1",
        /*opt, string, 热成像测温仪ip, range:[,], desc:门禁设备采用和卡片机定制的协议集成的，只需要一个ip地址即可添加到网络；对于安检门设备，专门用一个网口连接热成像测温仪，故不需要配置*/
        "highestThermalThreshold":  37.3,
        /*opt, float, 温度阈值上限, range:[,], step:, unit:, unitType:*/
        "lowestThermalThreshold":  38.5,
        /*opt, float, 温度阈值下限, range:[,], step:, unit:, unitType:*/
        "thermalDoorEnabled":  false,
        /*opt, bool, 温度阈值开门使能, desc:超过温度阈值上限（highestThermalThreshold）/低于温度阈值下限（lowestThermalThreshold）后是否开门，true-开门，false-不开门（默认）*/
        "QRCodeEnabled":  false,
        /*opt, bool, 二维码功能使能*/
        "remoteCheckDoorEnabled":  false,
        /*opt, bool, 远程核验是否控制门的开关*/
        "checkChannelType":  "Ezviz",
        /*opt, enum, 核验通道类型, subType:string, [Ezviz#萤石通道,ISUP#ISUP（原EHome）通道,ISAPI#ISAPI通道,PrivateSDK#私有SDK通道,ISAPIListen#ISAPI监听通道], desc:当remoteCheckDoorEnabled字段为true时，该字段生效*/
        "channelIp":  "test",
        /*opt, string, 核验通道ip, range:[,], desc:当checkChannelType字段为PrivateSDK时，该字段生效*/
        "uploadVerificationPic":  true,
        /*opt, bool, 认证是否上传图片*/
        "saveVerificationPic":  true,
        /*opt, bool, 是否保存认证图片*/
        "saveFacePic":  true,
        /*opt, bool, 是否保存人脸底图*/
        "thermalUnit":  "celsius",
        /*opt, enum, 测温单位配置, subType:string, [celsius#摄氏度,fahrenheit#华氏度]*/
        "highestThermalThresholdF":  1.0,
        /*opt, float, 华氏度温度阈值上限, range:[,], step:, unit:, unitType:, desc:单位：华氏度，精度：小数点后一位。用于判断超出该阈值门禁设备是否开门,温度字段若未0表明不启用该字段，需增加注释*/
        "lowestThermalThresholdF":  1.0,
        /*opt, float, 华氏度温度阈值下限, range:[,], step:, unit:, unitType:, desc:单位：华氏度，精度：小数点后一位。用于判断超出该阈值门禁设备是否开门,温度字段若未0表明不启用该字段，需增加注释*/
        "thermalCompensation":  1.0
        /*opt, float, 温度补偿, range:[,], step:, unit:, unitType:, desc:单位根据thermalUnit字段确定，若thermalUnit字段不存在认为单位为摄氏度*/
    }
}

33.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, URI, range:[,]*/
    "statusCode":  "test",
    /*ro, opt, string, 状态码, range:[,]*/
    "statusString":  "test",
    /*ro, opt, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, opt, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:*/
    "errorMsg":  "ok"
    /*ro, req, string, 错误信息, range:[,]*/
}

34. 配置远程核验

34.1 命令

PUT /ISAPI/AccessControl/remoteCheck?format=json

34.2 输入参数

{
    "RemoteCheck": {
    /*req, object, 远程核验*/
        "serialNo":  1,
        /*req, int, 事件流水号, range:[,], step:, unit:, unitType:, desc:与事件上传的流水号保持一致*/
        "checkResult":  "success",
        /*req, enum, 核验结果, subType:string, [success#核验成功,failed#核验失败]*/
        "info":  "test"
        /*opt, string, 附加信息, range:[1,32]*/
    }
}

34.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

35. 获取就地控制器参数能力

35.1 命令

GET /ISAPI/AccessControl/localController/capabilities

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LocalController xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 就地控制器参数能力, attr:version{req, string, 协议版本, range:[,]}-->
  <localControllerID min="1" max="64">
    <!--ro, req, int, 就地控制器编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </localControllerID>
  <devName min="1" max="32">
    <!--ro, req, string, 设备名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </devName>
  <devType opt="1door,2doors,4doors">
    <!--ro, req, string, 设备类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->1door
  </devType>
  <offlineWorkMode opt="notSupport,configuration,autoLearn">
    <!--ro, req, string, 离线工作模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:notSupport-不支持，configuration-配置模式, autoLearn-自学习模式-->configuration
  </offlineWorkMode>
  <networkEnable>
    <!--ro, req, bool, 是否启用网络通信-->true
  </networkEnable>
  <ipAddress min="1" max="64">
    <!--ro, opt, string, IPV4地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ipAddress>
  <subnetMask min="1" max="64">
    <!--ro, opt, string, IPV4掩码地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </subnetMask>
  <ipv6Address min="1" max="64">
    <!--ro, opt, string, IPV6地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ipv6Address>
  <bitMask min="1" max="64">
    <!--ro, opt, string, IPV6掩码地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </bitMask>
  <DefaultGateway>
    <!--ro, opt, object, 默认网关-->
    <ipAddress min="1" max="64">
      <!--ro, opt, string, IPV4地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </ipAddress>
    <ipv6Address min="1" max="64">
      <!--ro, opt, string, IPV6地址, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </ipv6Address>
  </DefaultGateway>
  <portNo min="1" max="65535">
    <!--ro, req, int, 端口, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </portNo>
</LocalController>

36. 配置添加就地控制器

36.1 命令

PUT /ISAPI/AccessControl/localController/addDevice

36.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LocalController xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 添加就地控制器, attr:version{req, string, 协议版本, range:[,]}-->
  <localControllerID>
    <!--req, int, 就地控制器编号, range:[1,64], step:1, unit:, unitType:-->1
  </localControllerID>
  <devName>
    <!--req, string, 设备名称, range:[1,32]-->test
  </devName>
  <devType>
    <!--req, enum, 设备类型, subType:string, [1door#1门,2doors#2门,4doors#4门]-->1door
  </devType>
  <offlineWorkMode>
    <!--req, enum, 离线工作模式, subType:string, [notSupport#不支持,configuration#配置模式,autoLearn#自学习模式]-->configuration
  </offlineWorkMode>
  <networkEnable>
    <!--req, bool, 是否启用网络通信-->true
  </networkEnable>
  <ipAddress>
    <!--opt, string, IPV4地址, range:[1,64]-->test
  </ipAddress>
  <subnetMask>
    <!--opt, string, IPV4掩码地址, range:[1,64]-->test
  </subnetMask>
  <ipv6Address>
    <!--opt, string, IPV6地址, range:[1,64]-->test
  </ipv6Address>
  <bitMask>
    <!--opt, string, IPV6掩码地址, range:[1,64]-->test
  </bitMask>
  <DefaultGateway>
    <!--opt, object, 网关地址-->
    <ipAddress>
      <!--opt, string, IPV4地址, range:[1,64]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, IPV6地址, range:[1,64]-->test
    </ipv6Address>
  </DefaultGateway>
  <portNo>
    <!--req, int, 端口号, range:[1,65535], step:1, unit:, unitType:-->1
  </portNo>
</LocalController>

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37. 获取就地控制器参数

37.1 命令

GET /ISAPI/AccessControl/localController/localControllerID/<localControllerID>

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LocalController xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 添加就地控制器, attr:version{req, string, 协议版本, range:[,]}-->
  <localControllerID>
    <!--ro, req, int, 就地控制器编号, range:[1,64], step:1, unit:, unitType:-->1
  </localControllerID>
  <devName>
    <!--ro, req, string, 设备名称, range:[1,32]-->test
  </devName>
  <devType>
    <!--ro, req, enum, 设备类型, subType:string, [1door#1门,2doors#2门,4doors#4门]-->1door
  </devType>
  <offlineWorkMode>
    <!--ro, req, enum, 离线工作模式, subType:string, [notSupport#不支持,configuration#配置模式,autoLearn#自学习模式]-->configuration
  </offlineWorkMode>
  <networkEnable>
    <!--ro, req, bool, 是否启用网络通信-->true
  </networkEnable>
  <ipAddress>
    <!--ro, opt, string, IPV4地址, range:[1,64]-->test
  </ipAddress>
  <subnetMask>
    <!--ro, opt, string, IPV4掩码地址, range:[1,64]-->test
  </subnetMask>
  <ipv6Address>
    <!--ro, opt, string, IPV6地址, range:[1,64]-->test
  </ipv6Address>
  <bitMask>
    <!--ro, opt, string, IPV6掩码地址, range:[1,64]-->test
  </bitMask>
  <DefaultGateway>
    <!--ro, opt, object, 网关地址-->
    <ipAddress>
      <!--ro, opt, string, IPV4地址, range:[1,64]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, IPV6地址, range:[1,64]-->test
    </ipv6Address>
  </DefaultGateway>
  <portNo>
    <!--ro, req, int, 端口号, range:[1,65535], step:1, unit:, unitType:-->1
  </portNo>
</LocalController>

38. 配置就地控制器参数

38.1 命令

PUT /ISAPI/AccessControl/localController/localControllerID/<localControllerID>

38.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LocalController xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 添加就地控制器, attr:version{req, string, 协议版本, range:[,]}-->
  <localControllerID>
    <!--req, int, 就地控制器编号, range:[1,64], step:1, unit:, unitType:-->1
  </localControllerID>
  <devName>
    <!--req, string, 设备名称, range:[1,32]-->test
  </devName>
  <devType>
    <!--req, enum, 设备类型, subType:string, [1door#1门,2doors#2门,4doors#4门]-->1door
  </devType>
  <offlineWorkMode>
    <!--req, enum, 离线工作模式, subType:string, [notSupport#不支持,configuration#配置模式,autoLearn#自学习模式]-->configuration
  </offlineWorkMode>
  <networkEnable>
    <!--req, bool, 是否启用网络通信-->true
  </networkEnable>
  <ipAddress>
    <!--opt, string, IPV4地址, range:[1,64]-->test
  </ipAddress>
  <subnetMask>
    <!--opt, string, IPV4掩码地址, range:[1,64]-->test
  </subnetMask>
  <ipv6Address>
    <!--opt, string, IPV6地址, range:[1,64]-->test
  </ipv6Address>
  <bitMask>
    <!--opt, string, IPV6掩码地址, range:[1,64]-->test
  </bitMask>
  <DefaultGateway>
    <!--opt, object, 网关地址-->
    <ipAddress>
      <!--opt, string, IPV4地址, range:[1,64]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, IPV6地址, range:[1,64]-->test
    </ipv6Address>
  </DefaultGateway>
  <portNo>
    <!--req, int, 端口号, range:[1,65535], step:1, unit:, unitType:-->1
  </portNo>
</LocalController>

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

39. 删除单个就地控制器

39.1 命令

DELETE /ISAPI/AccessControl/localController/localControllerID/<localControllerID>

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

40. 删除所有就地控制器

40.1 命令

DELETE /ISAPI/AccessControl/localController

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

41. 获取就地控制器控制能力

41.1 命令

GET /ISAPI/AccessControl/localController/control/capabilities

41.2 输入参数

无

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LocalControllerControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 就地控制器控制能力, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType opt="restore,reboot">
    <!--ro, req, string, 控制命令类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:restore-恢复，reboot-重启-->restore
  </commandType>
</LocalControllerControl>

42. 配置就地控制器控制命令

42.1 命令

PUT /ISAPI/AccessControl/localController/control/localControllerID/<localControllerID>

42.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LocalControllerControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 就地控制器控制命令, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType>
    <!--req, enum, 控制命令类型, subType:string, [restore#恢复,reboot#重启]-->restore
  </commandType>
</LocalControllerControl>

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

43. 获取USB设备状态能力

43.1 命令

GET /ISAPI/AccessControl/USBStatus/capabilities

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<USBStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, USB设备状态能力, attr:version{req, string, 协议版本, range:[,]}-->
  <connectStatus opt="connected,disconnected">
    <!--ro, req, string, 设备连接状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </connectStatus>
  <DeviceInfo>
    <!--ro, opt, object, 设备信息-->
    <deviceName min="1" max="32">
      <!--ro, opt, string, 设备名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </deviceName>
  </DeviceInfo>
</USBStatus>

44. 获取USB设备状态

44.1 命令

GET /ISAPI/AccessControl/USBStatus/USBNumber/<USBID>

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<USBStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, USB设备状态, attr:version{req, string, 协议版本, range:[,]}-->
  <connectStatus>
    <!--ro, req, enum, 设备连接状态, subType:string, [connected#连接,disconnected#未连接]-->connected
  </connectStatus>
  <DeviceInfo>
    <!--ro, opt, object, 设备信息-->
    <deviceName>
      <!--ro, opt, string, 设备名称, range:[1,32]-->test
    </deviceName>
  </DeviceInfo>
</USBStatus>

45. 获取USB控制能力

45.1 命令

GET /ISAPI/AccessControl/USBControl/capabilities

45.2 输入参数

无

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<USBControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, USB控制能力, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType opt="commonParamImport,commonParamExport,cardParamImport,cardParamExport,attendanceParamExport">
    <!--ro, req, string, 命令类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </commandType>
</USBControl>

46. 配置USB控制

46.1 命令

PUT /ISAPI/AccessControl/USBControl/USBNumber/<USBID>

46.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<USBControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, USB控制, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType>
    <!--req, enum, 命令类型, subType:string, [commonParamImport#通用参数导入,commonParamExport#通用参数导出,cardParamImport#卡参数导入,cardParamExport#卡参数导出,attendanceParamExport#考勤参数导出]-->commonParamImport
  </commandType>
</USBControl>

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

47. 获取USB控制进度能力

47.1 命令

GET /ISAPI/AccessControl/USBControlProgress/capabilities

47.2 输入参数

无

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<USBControlProgress xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, USB控制进度能力, attr:version{req, string, 协议版本, range:[,]}-->
  <operationProgress min="0" max="100">
    <!--ro, req, int, 操作进度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </operationProgress>
</USBControlProgress>

48. 获取USB控制进度

48.1 命令

GET /ISAPI/AccessControl/USBControlProgress/USBNumber/<USBID>

48.2 输入参数

无

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<USBControlProgress xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, USB控制进度, attr:version{req, string, 协议版本, range:[,]}-->
  <operationProgress>
    <!--ro, req, int, 操作进度, range:[0,100], step:1, unit:, unitType:-->0
  </operationProgress>
</USBControlProgress>

49. 获取韦根参数能力

49.1 命令

GET /ISAPI/AccessControl/WiegandCfg/capabilities

49.2 输入参数

无

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WiegandCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 韦根配置, attr:version{req, string, 协议版本, range:[,]}-->
  <wiegandNo min="0" max="4">
    <!--ro, opt, int, 韦根接口编号, range:[0,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:韦根编号为0表示针对主机的韦根参数配置-->1
  </wiegandNo>
  <communicateDirection opt="receive,send">
    <!--ro, opt, enum, 通信方向, subType:string, [receive#接收,send#发送], attr:opt{req, string, 取值范围, range:[,]}-->receive
  </communicateDirection>
  <wiegandMode opt="wiegand26,wiegand34,wiegand27,wiegand35,Corporate1000_35,Corporate1000_48,H10302_37,H10304_37,wiegand_26CSN,H103130_32CSN,wiegand_56CSN,wiegand_58">
    <!--ro, opt, enum, 韦根模式, subType:string, [wiegand26#韦根26,wiegand34#韦根34,wiegand27#韦根27,wiegand35#韦根35,Corporate1000_35#韦根Corporate 1000 35bits,Corporate1000_48#韦根Corporate 1000 48bits,H10302_37#韦根H10302 37bits,H10304_37#韦根H10304 37bits,wiegand_26CSN#韦根26 CSN,H103130_32CSN#韦根H103130 32bits CSN,wiegand_56CSN#韦根56 CSN,wiegand_58#韦根58], attr:opt{req, string, 取值范围, range:[,]}-->wiegand26
  </wiegandMode>
  <signalInterval min="1" max="20">
    <!--ro, opt, int, 韦根信号发送间隔, range:[1,20], step:, unit:, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位 ms-->1
  </signalInterval>
  <enable opt="true,false">
    <!--ro, opt, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <pulseDuration min="1" max="10">
    <!--ro, opt, int, 脉冲宽度, range:[1,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位us-->1
  </pulseDuration>
  <facilityCodeEnabled opt="true,false">
    <!--ro, opt, bool, facilityCode使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </facilityCodeEnabled>
  <facilityCode min="0" max="65535">
    <!--ro, opt, int, facilityCode, range:[0,65535], step:, unit:, unitType:, dep:and,{$.WiegandCfg.facilityCodeEnabled,eq,true}, attr:min{req, int, 最小值, range:[0,65535], step:, unit:, unitType:},max{req, int, 最大值, range:[0,65535], step:, unit:, unitType:},
desc:当wiegandMode为输出时，facilityCode可配置，且生效（用于设备输出卡号+facilityCode至三方设备进行校验）
当wiegandMode为输入时，facilityCode可配置，但不生效（即设备接收韦根数据时，不对输入的facilityCode进行校验）-->1
  </facilityCode>
</WiegandCfg>

50. 获取韦根参数

50.1 命令

GET /ISAPI/AccessControl/WiegandCfg/wiegandNo/<wiegandID>

50.2 输入参数

无

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WiegandCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 韦根参数, attr:version{req, string, 协议版本, range:[,]}-->
  <communicateDirection>
    <!--ro, req, enum, 通信方向, subType:string, [receive#接收,send#发送]-->receive
  </communicateDirection>
  <wiegandMode>
    <!--ro, opt, enum, 韦根模式, subType:string, [wiegand26#韦根26,wiegand34#韦根34,wiegand27#韦根27,wiegand35#韦根35,Corporate1000_35#韦根Corporate 1000 35bits,Corporate1000_48#韦根Corporate 1000 48bits,H10302_37#韦根H10302 37bits,H10304_37#韦根H10304 37bits,wiegand_26CSN#韦根26 CSN,H103130_32CSN#韦根H103130 32bits CSN,wiegand_56CSN#韦根56 CSN,wiegand_58#韦根58]-->wiegand26
  </wiegandMode>
  <signalInterval>
    <!--ro, opt, int, 韦根信号发送间隔, range:[1,20], step:, unit:, unitType:, desc:单位 ms-->1
  </signalInterval>
  <enable>
    <!--ro, opt, bool, 使能开关-->true
  </enable>
  <pulseDuration>
    <!--ro, opt, int, 脉冲宽度, range:[1,10], step:, unit:, unitType:, desc:单位 us-->1
  </pulseDuration>
  <facilityCodeEnabled>
    <!--ro, opt, bool, facilityCode使能-->true
  </facilityCodeEnabled>
  <facilityCode>
    <!--ro, opt, int, facilityCode, range:[0,65535], step:, unit:, unitType:, dep:and,{$.WiegandCfg.facilityCodeEnabled,eq,true},
desc:当wiegandMode为输出时，facilityCode可配置，且生效（用于设备输出卡号+facilityCode至三方设备进行校验）
当wiegandMode为输入时，facilityCode可配置，但不生效（即设备接收韦根数据时，不对输入的facilityCode进行校验）-->1
  </facilityCode>
</WiegandCfg>

51. 配置韦根参数

51.1 命令

PUT /ISAPI/AccessControl/WiegandCfg/wiegandNo/<wiegandID>

51.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<WiegandCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--wo, req, object, 韦根参数, attr:version{req, string, 协议版本, range:[,]}-->
  <communicateDirection>
    <!--wo, req, enum, 通信方向, subType:string, [receive#接收,send#发送]-->receive
  </communicateDirection>
  <wiegandMode>
    <!--wo, opt, enum, 韦根模式, subType:string, [wiegand26#韦根26,wiegand34#韦根34,wiegand27#韦根27,wiegand35#韦根35,Corporate1000_35#韦根Corporate 1000 35bits,Corporate1000_48#韦根Corporate 1000 48bits,H10302_37#韦根H10302 37bits,H10304_37#韦根H10304 37bits,wiegand_26CSN#韦根26 CSN,H103130_32CSN#韦根H103130 32bits CSN,wiegand_56CSN#韦根56 CSN,wiegand_58#韦根58]-->wiegand26
  </wiegandMode>
  <signalInterval>
    <!--wo, opt, int, 韦根信号发送间隔, range:[1,20], step:, unit:, unitType:, desc:单位 ms-->1
  </signalInterval>
  <enable>
    <!--wo, opt, bool, 使能开关-->true
  </enable>
  <pulseDuration>
    <!--wo, opt, int, 脉冲宽度, range:[1,10], step:, unit:, unitType:, desc:单位 us-->1
  </pulseDuration>
  <facilityCodeEnabled>
    <!--ro, opt, bool, facilityCode使能-->true
  </facilityCodeEnabled>
  <facilityCode>
    <!--ro, opt, int, facilityCode, range:[0,65535], step:, unit:, unitType:, dep:and,{$.WiegandCfg.facilityCodeEnabled,eq,true},
desc:当wiegandMode为输出时，facilityCode可配置，且生效（用于设备输出卡号+facilityCode至三方设备进行校验）
当wiegandMode为输入时，facilityCode可配置，但不生效（即设备接收韦根数据时，不对输入的facilityCode进行校验）-->1
  </facilityCode>
</WiegandCfg>

51.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

52. 获取韦根规则配置能力

52.1 命令

GET /ISAPI/AccessControl/WiegandRuleCfg/capabilities

52.2 输入参数

无

52.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WiegandRuleCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 韦根规则配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <name min="1" max="10">
    <!--ro, req, string, 韦根名称, range:[1,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </name>
  <CustomerCardIn>
    <!--ro, opt, object, 消费卡输入-->
    <totalLength min="1" max="10">
      <!--ro, req, int, 韦根总长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </totalLength>
    <checkMethod opt="parityCheck,xorCheck,noCheck,">
      <!--ro, req, enum, 校验方式, subType:string, [parityCheck#奇偶校验规则,xorCheck#异或校验配置规则,noCheck#无校验], attr:opt{req, string, 取值范围, range:[,]}-->parityCheck
    </checkMethod>
    <ParityCheck>
      <!--ro, opt, object, 奇偶校验配置规则, desc:校验方式为parityCheck时存在-->
      <oddBeginBit min="1" max="10">
        <!--ro, opt, int, 奇校验开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </oddBeginBit>
      <oddLength min="1" max="10">
        <!--ro, opt, int, 奇校验长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </oddLength>
      <evenBeginBit min="1" max="10">
        <!--ro, opt, int, 偶校验开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </evenBeginBit>
      <evenLength min="1" max="10">
        <!--ro, opt, int, 偶校验长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </evenLength>
    </ParityCheck>
    <XorCheck>
      <!--ro, opt, object, 异或校验配置规则, desc:校验方式为xorCheck时存在-->
      <xorBeginBit min="1" max="10">
        <!--ro, opt, int, 异或校验开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </xorBeginBit>
      <xorPerLength min="1" max="10">
        <!--ro, opt, int, 异或校验每组长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </xorPerLength>
      <xorTotalLength min="1" max="10">
        <!--ro, opt, int, 异或校验数据位总长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </xorTotalLength>
    </XorCheck>
    <cardIdBeginBit min="1" max="10">
      <!--ro, req, int, 卡号开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </cardIdBeginBit>
    <cardIdLength min="1" max="10">
      <!--ro, req, int, 卡号长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </cardIdLength>
    <siteCodeBeginBit min="1" max="10">
      <!--ro, req, int, 现场码开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </siteCodeBeginBit>
    <siteCodeLength min="1" max="10">
      <!--ro, req, int, 现场码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </siteCodeLength>
    <oemBeginBit min="1" max="10">
      <!--ro, req, int, OEM开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </oemBeginBit>
    <oemLength min="1" max="10">
      <!--ro, req, int, OEM长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </oemLength>
    <manufacturerCodeBeginBit min="1" max="10">
      <!--ro, req, int, 发行码开始位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </manufacturerCodeBeginBit>
    <manufacturerCodeLength min="1" max="10">
      <!--ro, req, int, 发行码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </manufacturerCodeLength>
  </CustomerCardIn>
  <CustomerCardOut>
    <!--ro, opt, object, 消费卡输出-->
    <CardContentList size="4">
      <!--ro, opt, array, 卡内容列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <Action>
        <!--ro, opt, object, 卡信息-->
        <No min="1" max="10">
          <!--ro, req, int, 编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </No>
        <type opt="cardId,siteCode,oem,manufacturerCode">
          <!--ro, req, enum, 类型, subType:string, [cardId#卡片ID,siteCode#现场码,oem#OEM号,manufacturerCode#发行码], attr:opt{req, string, 取值范围, range:[,]}-->cardId
        </type>
        <length min="1" max="10">
          <!--ro, req, int, 对应十进制数据长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </length>
      </Action>
    </CardContentList>
  </CustomerCardOut>
</WiegandRuleCfg>

53. 获取韦根规则配置

53.1 命令

GET /ISAPI/AccessControl/WiegandRuleCfg

53.2 输入参数

无

53.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WiegandRuleCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 韦根规则配置, attr:version{req, string, 协议版本, range:[,]}-->
  <name>
    <!--ro, req, string, 韦根名称, range:[,]-->test
  </name>
  <CustomerCardIn>
    <!--ro, opt, object, 消费卡输入-->
    <totalLength>
      <!--ro, req, int, 韦根总长度, range:[,], step:, unit:, unitType:, desc:当该字段传递的值为0时，则清除自定义的韦根规则设置-->1
    </totalLength>
    <checkMethod>
      <!--ro, req, enum, 校验方式, subType:string, [parityCheck#奇偶校验配置规则,xorCheck#异或校验配置规则,noCheck#无校验]-->parityCheck
    </checkMethod>
    <ParityCheck>
      <!--ro, opt, object, 奇偶校验配置规则, desc:校验方式为parityCheck时存在-->
      <oddBeginBit>
        <!--ro, opt, int, 奇校验开始位, range:[,], step:, unit:, unitType:-->1
      </oddBeginBit>
      <oddLength>
        <!--ro, opt, int, 奇校验长度, range:[,], step:, unit:, unitType:-->1
      </oddLength>
      <evenBeginBit>
        <!--ro, opt, int, 偶校验开始位, range:[,], step:, unit:, unitType:-->1
      </evenBeginBit>
      <evenLength>
        <!--ro, opt, int, 偶校验长度, range:[,], step:, unit:, unitType:-->1
      </evenLength>
    </ParityCheck>
    <XorCheck>
      <!--ro, opt, object, 异或校验配置规则, desc:校验方式为xorCheck时存在-->
      <xorBeginBit>
        <!--ro, opt, int, 异或校验开始位, range:[,], step:, unit:, unitType:-->1
      </xorBeginBit>
      <xorPerLength>
        <!--ro, opt, int, 异或校验每组长度, range:[,], step:, unit:, unitType:-->1
      </xorPerLength>
      <xorTotalLength>
        <!--ro, opt, int, 异或校验数据位总长度, range:[,], step:, unit:, unitType:-->1
      </xorTotalLength>
    </XorCheck>
    <cardIdBeginBit>
      <!--ro, req, int, 卡号开始位, range:[,], step:, unit:, unitType:-->1
    </cardIdBeginBit>
    <cardIdLength>
      <!--ro, req, int, 卡号长度, range:[,], step:, unit:, unitType:-->1
    </cardIdLength>
    <siteCodeBeginBit>
      <!--ro, req, int, 现场码开始位, range:[,], step:, unit:, unitType:-->1
    </siteCodeBeginBit>
    <siteCodeLength>
      <!--ro, req, int, 现场码长度, range:[,], step:, unit:, unitType:-->1
    </siteCodeLength>
    <oemBeginBit>
      <!--ro, req, int, OEM开始位, range:[,], step:, unit:, unitType:-->1
    </oemBeginBit>
    <oemLength>
      <!--ro, req, int, OEM长度, range:[,], step:, unit:, unitType:-->1
    </oemLength>
    <manufacturerCodeBeginBit>
      <!--ro, req, int, 发行码开始位, range:[,], step:, unit:, unitType:-->1
    </manufacturerCodeBeginBit>
    <manufacturerCodeLength>
      <!--ro, req, int, 发行码长度, range:[,], step:, unit:, unitType:-->1
    </manufacturerCodeLength>
  </CustomerCardIn>
  <CustomerCardOut>
    <!--ro, opt, object, 消费卡输出-->
    <CardContentList size="4">
      <!--ro, opt, array, 卡内容列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <Action>
        <!--ro, opt, object, 卡信息-->
        <No>
          <!--ro, req, int, 编号, range:[,], step:, unit:, unitType:-->1
        </No>
        <type>
          <!--ro, req, enum, 类型, subType:string, [cardId#卡片ID,siteCode#现场码,oem#OEM号,manufacturerCode#发行码]-->cardId
        </type>
        <length>
          <!--ro, req, int, 对应十进制数据长度, range:[,], step:, unit:, unitType:-->1
        </length>
      </Action>
    </CardContentList>
  </CustomerCardOut>
</WiegandRuleCfg>

54. 韦根规则配置

54.1 命令

PUT /ISAPI/AccessControl/WiegandRuleCfg

54.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<WiegandRuleCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 韦根规则配置, attr:version{req, string, 协议版本, range:[,]}-->
  <name>
    <!--req, string, 韦根名称, range:[,]-->test
  </name>
  <CustomerCardIn>
    <!--opt, object, 消费卡输入-->
    <totalLength>
      <!--req, int, 韦根总长度, range:[,], step:, unit:, unitType:, desc:当该字段传递的值为0时，则清除自定义的韦根规则设置-->1
    </totalLength>
    <checkMethod>
      <!--req, enum, 校验方式, subType:string, [parityCheck#奇偶校验配置规则,xorCheck#异或校验配置规则,noCheck#无校验]-->parityCheck
    </checkMethod>
    <ParityCheck>
      <!--opt, object, 奇偶校验配置规则, desc:校验方式为parityCheck时存在-->
      <oddBeginBit>
        <!--opt, int, 奇校验开始位, range:[,], step:, unit:, unitType:-->1
      </oddBeginBit>
      <oddLength>
        <!--opt, int, 奇校验长度, range:[,], step:, unit:, unitType:-->1
      </oddLength>
      <evenBeginBit>
        <!--opt, int, 偶校验开始位, range:[,], step:, unit:, unitType:-->1
      </evenBeginBit>
      <evenLength>
        <!--opt, int, 偶校验长度, range:[,], step:, unit:, unitType:-->1
      </evenLength>
    </ParityCheck>
    <XorCheck>
      <!--opt, object, 异或校验配置规则, desc:校验方式为xorCheck时存在-->
      <xorBeginBit>
        <!--opt, int, 异或校验开始位, range:[,], step:, unit:, unitType:-->1
      </xorBeginBit>
      <xorPerLength>
        <!--opt, int, 异或校验每组长度, range:[,], step:, unit:, unitType:-->1
      </xorPerLength>
      <xorTotalLength>
        <!--opt, int, 异或校验数据位总长度, range:[,], step:, unit:, unitType:-->1
      </xorTotalLength>
    </XorCheck>
    <cardIdBeginBit>
      <!--req, int, 卡号开始位, range:[,], step:, unit:, unitType:-->1
    </cardIdBeginBit>
    <cardIdLength>
      <!--req, int, 卡号长度, range:[,], step:, unit:, unitType:-->1
    </cardIdLength>
    <siteCodeBeginBit>
      <!--req, int, 现场码开始位, range:[,], step:, unit:, unitType:-->1
    </siteCodeBeginBit>
    <siteCodeLength>
      <!--req, int, 现场码长度, range:[,], step:, unit:, unitType:-->1
    </siteCodeLength>
    <oemBeginBit>
      <!--req, int, OEM开始位, range:[,], step:, unit:, unitType:-->1
    </oemBeginBit>
    <oemLength>
      <!--req, int, OEM长度, range:[,], step:, unit:, unitType:-->1
    </oemLength>
    <manufacturerCodeBeginBit>
      <!--req, int, 发行码开始位, range:[,], step:, unit:, unitType:-->1
    </manufacturerCodeBeginBit>
    <manufacturerCodeLength>
      <!--req, int, 发行码长度, range:[,], step:, unit:, unitType:-->1
    </manufacturerCodeLength>
  </CustomerCardIn>
  <CustomerCardOut>
    <!--opt, object, 消费卡输出-->
    <CardContentList size="4">
      <!--opt, array, 卡内容列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <Action>
        <!--opt, object, 卡信息-->
        <No>
          <!--req, int, 编号, range:[,], step:, unit:, unitType:-->1
        </No>
        <type>
          <!--req, enum, 类型, subType:string, [cardId#卡片ID,siteCode#现场码,oem#OEM号,manufacturerCode#发行码]-->cardId
        </type>
        <length>
          <!--req, int, 对应十进制数据长度, range:[,], step:, unit:, unitType:-->1
        </length>
      </Action>
    </CardContentList>
  </CustomerCardOut>
</WiegandRuleCfg>

54.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 响应状态, attr:version{req, string, 协议版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求url, range:[,]-->test
  </requestURL>
  <statusCode>
    <!--ro, req, int, 状态码, range:[,], step:, unit:, unitType:-->1
  </statusCode>
  <statusString>
    <!--ro, req, string, 状态描述, range:[,]-->test
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码的英文描述, range:[,]-->test
  </subStatusCode>
</ResponseStatus>

55. 获取门控安全模块状态能力

55.1 命令

GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus/capabilities

55.2 输入参数

无

55.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ModuleStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 模块状态, attr:version{req, string, 协议版本, range:[,]}-->
  <securityModuleNo min="1" max="256">
    <!--ro, req, string, 门控安全模块编号, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </securityModuleNo>
  <onlineStatus opt="0,1">
    <!--ro, req, enum, 在线状态, subType:int, [0#不在线,1#在线], attr:opt{req, string, 取值范围, range:[,]}-->1
  </onlineStatus>
  <desmantelStatus opt="0,1">
    <!--ro, req, enum, 防拆状态, subType:int, [0#关闭,1#防拆], attr:opt{req, string, 取值范围, range:[,]}-->1
  </desmantelStatus>
</ModuleStatus>

56. 获取门控安全模块状态

56.1 命令

GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus

56.2 输入参数

无

56.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ModuleStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 模块状态, attr:version{req, string, 协议版本, range:[,]}-->
  <securityModuleNo min="1" max="256">
    <!--ro, req, string, 门控安全模块编号, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </securityModuleNo>
  <onlineStatus opt="0,1">
    <!--ro, req, enum, 在线状态, subType:int, [0#不在线,1#在线], attr:opt{req, string, 取值范围, range:[,]}-->1
  </onlineStatus>
  <desmantelStatus opt="0,1">
    <!--ro, req, enum, 防拆状态, subType:int, [0#关闭,1#防拆], attr:opt{req, string, 取值范围, range:[,]}-->1
  </desmantelStatus>
</ModuleStatus>

57. 获取分控器参数配置能力

57.1 命令

GET /ISAPI/AccessControl/LadderControlRelay/capabilities

57.2 输入参数

无

57.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LadderControlRelay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 分控器参数配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <floorNo min="1" max="128">
    <!--ro, req, int, 楼层序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </floorNo>
  <KeyControl>
    <!--ro, req, object, 按键梯控-->
    <distractControlNo min="3" max="26">
      <!--ro, req, int, 分控器拨码编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </distractControlNo>
    <relayNo min="1" max="16">
      <!--ro, req, int, 继电器编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </relayNo>
  </KeyControl>
  <CallLadder>
    <!--ro, req, object, 呼梯-->
    <distractControlNo min="3" max="26">
      <!--ro, req, int, 分控器拨码编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </distractControlNo>
    <relayNo min="1" max="16">
      <!--ro, req, int, 继电器编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </relayNo>
  </CallLadder>
  <AutoKey>
    <!--ro, req, object, 自动按键-->
    <distractControlNo min="3" max="26">
      <!--ro, req, int, 分控器拨码编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </distractControlNo>
    <relayNo min="1" max="16">
      <!--ro, req, int, 继电器编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </relayNo>
  </AutoKey>
</LadderControlRelay>

58. 获取分控器参数

58.1 命令

GET /ISAPI/AccessControl/LadderControlRelay/FloorNo/<floorID>

58.2 输入参数

无

58.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LadderControlRelay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 分控器参数, attr:version{req, string, 协议版本, range:[,]}-->
  <CallLadder>
    <!--ro, req, object, 呼梯-->
    <distractControlNo>
      <!--ro, req, int, 分控器拨码编号, range:[3,26], step:1, unit:, unitType:-->3
    </distractControlNo>
    <relayNo>
      <!--ro, req, int, 继电器编号, range:[1,16], step:1, unit:, unitType:-->1
    </relayNo>
  </CallLadder>
  <KeyControl>
    <!--ro, req, object, 按键梯控-->
    <distractControlNo>
      <!--ro, req, int, 分控器拨码编号, range:[3,26], step:1, unit:, unitType:-->3
    </distractControlNo>
    <relayNo>
      <!--ro, req, int, 继电器编号, range:[1,16], step:1, unit:, unitType:-->1
    </relayNo>
  </KeyControl>
  <AutoKey>
    <!--ro, req, object, 自动按键-->
    <distractControlNo>
      <!--ro, req, int, 分控器拨码编号, range:[3,26], step:1, unit:, unitType:-->3
    </distractControlNo>
    <relayNo>
      <!--ro, req, int, 继电器编号, range:[1,16], step:1, unit:, unitType:-->1
    </relayNo>
  </AutoKey>
</LadderControlRelay>

59. 配置分控器参数

59.1 命令

PUT /ISAPI/AccessControl/LadderControlRelay/FloorNo/<floorID>

59.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LadderControlRelay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 分控器参数, attr:version{req, string, 协议版本, range:[,]}-->
  <CallLadder>
    <!--req, object, 呼梯-->
    <distractControlNo>
      <!--req, int, 分控器拨码编号, range:[3,26], step:1, unit:, unitType:-->3
    </distractControlNo>
    <relayNo>
      <!--req, int, 继电器编号, range:[1,16], step:1, unit:, unitType:-->1
    </relayNo>
  </CallLadder>
  <KeyControl>
    <!--req, object, 按键梯控-->
    <distractControlNo>
      <!--req, int, 分控器拨码编号, range:[3,26], step:1, unit:, unitType:-->3
    </distractControlNo>
    <relayNo>
      <!--req, int, 继电器编号, range:[1,16], step:1, unit:, unitType:-->1
    </relayNo>
  </KeyControl>
  <AutoKey>
    <!--req, object, 自动按键-->
    <distractControlNo>
      <!--req, int, 分控器拨码编号, range:[3,26], step:1, unit:, unitType:-->3
    </distractControlNo>
    <relayNo>
      <!--req, int, 继电器编号, range:[1,16], step:1, unit:, unitType:-->1
    </relayNo>
  </AutoKey>
</LadderControlRelay>

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

60. M1卡加密验证功能配置能力

60.1 命令

GET /ISAPI/AccessControl/M1CardEncryptCfg/capabilities

60.2 输入参数

无

60.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<M1CardEncryptCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, M1卡加密验证功能配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <sectionID min="0" max="100">
    <!--ro, req, int, 扇区ID, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </sectionID>
</M1CardEncryptCfg>

61. 获取M1卡加密验证功能配置

61.1 命令

GET /ISAPI/AccessControl/M1CardEncryptCfg

61.2 输入参数

无

61.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<M1CardEncryptCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, M1卡加密验证功能配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 使能-->true
  </enable>
  <sectionID>
    <!--ro, req, int, 扇区ID, range:[,], step:, unit:, unitType:, desc:每次只配置一个扇区，M1卡从0开始-->1
  </sectionID>
</M1CardEncryptCfg>

62. 设置M1卡加密验证功能配置

62.1 命令

PUT /ISAPI/AccessControl/M1CardEncryptCfg

62.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<M1CardEncryptCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, M1卡加密验证功能配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--req, bool, 使能-->true
  </enable>
  <sectionID>
    <!--req, int, 扇区ID, range:[,], step:, unit:, unitType:, desc:每次只配置一个扇区，M1卡从0开始-->1
  </sectionID>
</M1CardEncryptCfg>

62.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应状态, attr:version{req, string, 协议版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求URL, range:[,], desc:请求的URL-->test
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:string, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required], desc:0和1-OK, 2-Device Busy, 3-Device Error, 4-Invalid Operation, 5-Invalid XML Format, 6-Invalid XML Content; 7-Reboot Required-->1
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态描述, subType:string, [OK#成功,Device Busy#设备繁忙,Device Error#设备出错,Invalid Operation#非法操作,Invalid XML Format#非法XML,Invalid XML Content#非法XML内容,Reboot#重启], desc:OK,Device Busy,Device Error,Invalid Operation,Invalid XML Format,Invalid XML Content,Reboot-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 子状态码, range:[,], desc:详细错误码的英文描述，可描述的很详细-->test
  </subStatusCode>
</ResponseStatus>

63. 获取日志模式参数配置能力

63.1 命令

GET /ISAPI/AccessControl/LogModeCfg/capabilities?format=json

63.2 输入参数

无

63.3 输出参数

{
    "LogModeCfg": {
    /*ro, opt, object, 日志模式*/
        "type": {
        /*ro, opt, object, 日志模式类别*/
            "@opt":  "1, 2"
            /*ro, opt, string, 可选项, range:[,], desc:日志模式：1-16字节（主机日志存储支持25w，工号支持16字节存储），2-12字节（主机日志存储支持25w，工号支持12字节存储）*/
        }
    }
}

64. 获取日志模式参数

64.1 命令

GET /ISAPI/AccessControl/LogModeCfg?format=json

64.2 输入参数

无

64.3 输出参数

{
    "LogModeCfg": {
    /*ro, opt, object, 日志模式节点*/
        "type":  1
        /*ro, opt, enum, 日志模式, subType:int, [1#16字节（主机日志存储支持25w,2#12字节（主机日志存储支持25w]*/
    }
}

65. 配置日志模式参数

65.1 命令

PUT /ISAPI/AccessControl/LogModeCfg?format=json

65.2 输入参数

{
    "LogModeCfg": {
    /*opt, object, 日志模式节点*/
        "type":  1
        /*opt, enum, 日志模式, subType:int, [1#16字节（主机日志存储支持25w,2#12字节（主机日志存储支持25w], desc:1-16字节（主机日志存储支持25w，工号支持16字节存储）（设备默认16字节），2-12字节（主机日志存储支持25w，工号支持12字节存储）*/
    }
}

65.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

66. 获取OSDP读卡器状态查询能力

66.1 命令

GET /ISAPI/AccessControl/OSDPStatus/capabilities?format=json

66.2 输入参数

无

66.3 输出参数

{
    "OSDPStatus": {
    /*ro, req, object, OSDP状态*/
        "id": {
        /*ro, req, object, OSDP读卡器ID范围*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  1
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "status":  "online,offline"
        /*ro, req, string, 在线状态, range:[,], desc:online-在线，offline-离线*/
    }
}

67. 获取OSDP读卡器状态

67.1 命令

GET /ISAPI/AccessControl/OSDPStatus/<doorID>?format=json

67.2 输入参数

无

67.3 输出参数

{
    "OSDPStatus": {
    /*ro, req, object, OSDP状态*/
        "status":  "online"
        /*ro, req, enum, 在线状态, subType:string, [online#在线,offline#离线]*/
    }
}

68. 获取OSDP读卡器ID修改能力

68.1 命令

GET /ISAPI/AccessControl/OSDPModify/capabilities?format=json

68.2 输入参数

无

68.3 输出参数

{
    "OSDPModify": {
    /*ro, opt, object, OSD读卡器修改能力参数*/
        "id": {
        /*ro, opt, object, 原OSDP读卡器ID范围*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  1
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "newID": {
        /*ro, opt, object, 目标OSDP读卡器ID范围*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  1
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        }
    }
}

69. 配置OSDP读卡器ID

69.1 命令

PUT /ISAPI/AccessControl/OSDPModify/<cardReaderID>?format=json

69.2 输入参数

{
    "OSDPModify": {
    /*ro, req, object, OSDP修改参数*/
        "newID":  1
        /*ro, req, int, 目标OSDP读卡器ID, range:[,], step:, unit:, unitType:*/
    }
}

69.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

70. 获取远程控制读卡器蜂鸣器能力

70.1 命令

GET /ISAPI/AccessControl/RemoteControl/buzzer/capabilities?format=json

70.2 输入参数

无

70.3 输出参数

{
    "RemoteControlBuzzer": {
    /*ro, req, object, 读卡器蜂鸣器能力*/
        "cardReaderNo": {
        /*ro, opt, object, 读卡器编号*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  512
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "cmd": {
        /*ro, req, object, 命令*/
            "@opt":  "start,stop"
            /*ro, req, string, 命令：start-蜂鸣, range:[,]*/
        }
    }
}

71. 配置远程控制读卡器蜂鸣器

71.1 命令

PUT /ISAPI/AccessControl/RemoteControl/buzzer/<cardReaderID>?format=json

71.2 输入参数

{
    "RemoteControlBuzzer": {
    /*ro, req, object, 读卡器蜂鸣器命令*/
        "cmd":  "start"
        /*req, enum, 命令, subType:string, [start#蜂鸣,stop#停止蜂鸣], desc:start-蜂鸣，stop-停止蜂鸣*/
    }
}

71.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, URI, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

72. 获取权限控制器音频文件参数配置能力

72.1 命令

GET /ISAPI/AccessControl/RightControllerAudio/capabilities

72.2 输入参数

无

72.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RightControllerAudio xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 权限控制器音频文件参数配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="2" max="32">
    <!--ro, req, int, 音频ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->2
  </id>
  <audioName min="1" max="32">
    <!--ro, req, string, 音频名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </audioName>
  <playCondition opt="NotPlay,CompleteAuth,AuthFail,Alarm">
    <!--ro, req, string, 播放条件, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:NotPlay-不播放，CompleteAuth-完整认证通过，AuthFail-认证失败，Alarm-报警-->CompleteAuth
  </playCondition>
</RightControllerAudio>

73. 获取权限控制器音频文件参数

73.1 命令

GET /ISAPI/AccessControl/RightControllerAudio/<audioID>

73.2 输入参数

无

73.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RightControllerAudio xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 权限控制器音频文件参数, attr:version{req, string, 协议版本, range:[,]}-->
  <audioName>
    <!--ro, req, string, 音频名称, range:[1,32]-->test
  </audioName>
  <playCondition>
    <!--ro, req, enum, 播放条件, subType:string, [NotPlay#不播放,CompleteAuth#完整认证通过,AuthFail#认证失败,Alarm#报警]-->CompleteAuth
  </playCondition>
</RightControllerAudio>

74. 配置权限控制器音频文件参数

74.1 命令

PUT /ISAPI/AccessControl/RightControllerAudio/<audioID>

74.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RightControllerAudio xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 权限控制器音频文件参数, attr:version{req, string, 协议版本, range:[,]}-->
  <audioName>
    <!--req, string, 音频名称, range:[1,32]-->test
  </audioName>
  <playCondition>
    <!--req, enum, 播放条件, subType:string, [NotPlay#不播放,CompleteAuth#完整认证通过,AuthFail#认证失败,Alarm#报警]-->CompleteAuth
  </playCondition>
</RightControllerAudio>

74.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

75. 删除权限控制器音频文件

75.1 命令

DELETE /ISAPI/AccessControl/RightControllerAudio/<audioID>

75.2 输入参数

无

75.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

76. 获取人员通道状态能力

76.1 命令

GET /ISAPI/AccessControl/GateStatus/capabilities

76.2 输入参数

无

76.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 人员通道状态, attr:version{req, string, 协议版本, range:[,]}-->
  <busSync opt="Normal,DropArmPoorSyn,BusCommFailed">
    <!--ro, req, string, 总线同步性状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常，DropArmPoorSync-摆臂同步性差，BusCommFailed-总线通信失败-->
  </busSync>
  <inDoorPassCount min="0" max="0xffffffff">
    <!--ro, req, int, 进门红外通行计数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </inDoorPassCount>
  <inDoorAuthCount min="0" max="0xffffffff">
    <!--ro, req, int, 进门认证计数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </inDoorAuthCount>
  <outDoorPassCount min="0" max="0xffffffff">
    <!--ro, req, int, 出门红外通行计数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </outDoorPassCount>
  <outDoorAuthCount min="0" max="0xffffffff">
    <!--ro, req, int, 出门认证计数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </outDoorAuthCount>
  <remoteControlRecvModule opt="Normal,Abnormal">
    <!--ro, req, string, 遥控器接收模块状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常，Abnormal-通信失败或未安装-->
  </remoteControlRecvModule>
  <caseTempUnit opt="Centigrade,Fahrenheit">
    <!--ro, req, string, 闸机腔体温度显示单位, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Centigrade-摄氏度，Fahrenheit-华氏度-->
  </caseTempUnit>
  <currentInDoorMode opt="Controlled,Forbid,Free">
    <!--ro, req, string, 当前进门通行模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Controlled-受控，Forbid-禁止，Free-自由-->
  </currentInDoorMode>
  <currentOutDoorMode opt="Controlled,Forbid,Free">
    <!--ro, req, string, 当前出门通行模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Controlled-受控，Forbid-禁止，Free-自由-->
  </currentOutDoorMode>
  <powerSupplyMode opt="ACPower,Battery">
    <!--ro, req, string, 通道供电方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:ACPower-交流电供电，Battery-蓄电池供电-->
  </powerSupplyMode>
  <gateCurrentStatus opt="InDoorOpen,OutDoorOpen,Close">
    <!--ro, req, string, 闸门状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:InDoorOpen-进门开，OutDoorOpen-出门开，Close-关门-->
  </gateCurrentStatus>
</GateStatus>

77. 获取人员通道状态

77.1 命令

GET /ISAPI/AccessControl/GateStatus

77.2 输入参数

无

77.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道状态, attr:version{req, string, 协议版本, range:[,]}-->
  <busSync>
    <!--ro, req, enum, 总线同步性状态, subType:string, [Normal#正常,DropArmPoorSync#摆臂同步性差,BusCommFailed#总线通信失败]-->Normal
  </busSync>
  <inDoorPassCount>
    <!--ro, req, int, 进门红外通行计数, range:[0,], step:1, unit:, unitType:, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </inDoorPassCount>
  <inDoorAuthCount>
    <!--ro, req, int, 进门认证计数, range:[0,], step:1, unit:, unitType:, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </inDoorAuthCount>
  <outDoorPassCount>
    <!--ro, req, int, 出门红外通行计数, range:[0,], step:1, unit:, unitType:, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </outDoorPassCount>
  <outDoorAuthCount>
    <!--ro, req, int, 出门认证计数, range:[0,], step:1, unit:, unitType:, desc:到0xFFFFFFFF后从0开始重新计数-->1
  </outDoorAuthCount>
  <remoteControlRecvModule>
    <!--ro, req, enum, 遥控器接收模块状态, subType:string, [Normal#正常,Abnormal#通信失败或未安装]-->Normal
  </remoteControlRecvModule>
  <caseTempUnit>
    <!--ro, req, enum, 闸机腔体温度显示单位, subType:string, [Centigrade#摄氏度,Fahrenheit#华氏度]-->Centigrade
  </caseTempUnit>
  <currentInDoorMode>
    <!--ro, req, enum, 当前进门通行模式, subType:string, [Controlled#受控,Forbid#禁止,Free#自由]-->Controlled
  </currentInDoorMode>
  <currentOutDoorMode>
    <!--ro, req, enum, 当前出门通行模式, subType:string, [Controlled#受控,Forbid#禁止,Free#自由]-->Controlled
  </currentOutDoorMode>
  <powerSupplyMode>
    <!--ro, req, enum, 通道供电方式, subType:string, [ACPower#交流电供电,Battery#蓄电池供电]-->ACPower
  </powerSupplyMode>
  <gateCurrentStatus>
    <!--ro, opt, enum, 闸门状态, subType:string, [InDoorOpen#进门开,OutDoorOpen#出门开,Close#关门]-->InDoorOpen
  </gateCurrentStatus>
</GateStatus>

78. 获取人员通道红外状态能力

78.1 命令

GET /ISAPI/AccessControl/GateIRStatus/capabilities

78.2 输入参数

无

78.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateIRStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道红外状态, attr:version{req, string, 协议版本, range:[,]}-->
  <IREmitter>
    <!--ro, opt, object, 红外对射状态-->
    <triggered min="1" max="48">
      <!--ro, req, string, 红外对射被触发ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,3,5,7
    </triggered>
    <triggeredTimeout min="1" max="48">
      <!--ro, req, string, 红外对射被触发超时ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,3,5,7
    </triggeredTimeout>
    <receiveBoardAbnormal min="1" max="48">
      <!--ro, req, string, 接收板通信异常ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,3,5,7
    </receiveBoardAbnormal>
    <sendBoardAbnormal min="1" max="48">
      <!--ro, req, string, 发送板通信异常ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,3,5,7
    </sendBoardAbnormal>
    <sendAndReceiveLocateAbnormal min="1" max="48">
      <!--ro, req, string, 发送及接收对应位置异常ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,3,5,7
    </sendAndReceiveLocateAbnormal>
  </IREmitter>
  <masterIRAdaptorCommFailed min="1" max="2">
    <!--ro, req, string, 主通道控制器红外转接板通信失败ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,2
  </masterIRAdaptorCommFailed>
  <slaveIRAdaptorCommFailed min="1" max="2">
    <!--ro, req, string, 从通道控制器红外转接板通信失败ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1,2
  </slaveIRAdaptorCommFailed>
</GateIRStatus>

79. 获取人员通道红外状态

79.1 命令

GET /ISAPI/AccessControl/GateIRStatus

79.2 输入参数

无

79.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateIRStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道红外状态, attr:version{req, string, 协议版本, range:[,]}-->
  <IREmitter>
    <!--ro, opt, object, 红外对射状态-->
    <triggered>
      <!--ro, req, string, 红外对射被触发ID, range:[1,48]-->1,3,5,7
    </triggered>
    <triggeredTimeout>
      <!--ro, req, string, 红外对射被触发超时ID, range:[1,48]-->1,3,5,7
    </triggeredTimeout>
    <receiveBoardAbnormal>
      <!--ro, req, string, 接收板通信异常ID, range:[1,48]-->1,3,5,7
    </receiveBoardAbnormal>
    <sendBoardAbnormal>
      <!--ro, req, string, 发送板通信异常ID, range:[1,48]-->1,3,5,7
    </sendBoardAbnormal>
    <sendAndReceiveLocateAbnormal>
      <!--ro, req, string, 发送及接收对应位置异常ID, range:[1,48]-->1,3,5,7
    </sendAndReceiveLocateAbnormal>
  </IREmitter>
  <masterIRAdaptorCommFailed>
    <!--ro, req, string, 主通道控制器红外转接板通信失败ID, range:[1,2]-->1,2
  </masterIRAdaptorCommFailed>
  <slaveIRAdaptorCommFailed>
    <!--ro, req, string, 从通道控制器红外转接板通信失败ID, range:[1,2]-->1,2
  </slaveIRAdaptorCommFailed>
</GateIRStatus>

80. 获取人员通道相关器件状态能力

80.1 命令

GET /ISAPI/AccessControl/GateRelatedPartsStatus/capabilities

80.2 输入参数

无

80.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateRelatedPartsStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道相关器件状态, attr:version{req, string, 协议版本, range:[,]}-->
  <MasterChannelController>
    <!--ro, opt, object, 主通道控制器相关器件状态-->
    <motorSensor opt="Normal,Abnormal">
      <!--ro, req, string, 电机或传感器是否正常, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:1.检测电机的编码器与霍尔传感器的一致性；
2.Normal-正常，Abnormal-异常-->test
    </motorSensor>
    <dropArmSensorAbnormal min="1" max="4">
      <!--ro, req, string, 摆臂位置传感器异常ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:检测摆臂到位开关-->test
    </dropArmSensorAbnormal>
    <dropArm opt="Normal,Abnormal">
      <!--ro, req, string, 摆臂状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常，Abnormal-异常（被阻挡或未转动）-->test
    </dropArm>
    <fireInput opt="Normal,Alarm">
      <!--ro, req, string, 消防输入状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常，Alarm-报警-->test
    </fireInput>
    <caseTemp min="-2000.0" max="3000.0">
      <!--ro, req, float, 闸机腔体温度, range:[,], step:0.1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.1
    </caseTemp>
    <alarmInTriggered min="1" max="8">
      <!--ro, req, string, 报警输入触发ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </alarmInTriggered>
    <alarmOutTriggered min="1" max="4">
      <!--ro, req, string, 报警输出触发ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </alarmOutTriggered>
    <brakeStatus opt="NotBrake,Brake">
      <!--ro, req, string, 制动器状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:NotBrake-未制动，Brake-制动-->test
    </brakeStatus>
    <fanStatus opt="NotStart,Start">
      <!--ro, req, string, 风扇状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:NotStart-未启动，Start-启动-->test
    </fanStatus>
    <lampBoardCommFailed min="1" max="4">
      <!--ro, req, string, 灯板通信失败ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </lampBoardCommFailed>
  </MasterChannelController>
  <SlaveChannelController>
    <!--ro, opt, object, 从通道控制器相关器件状态-->
    <motorSensor opt="Normal,Abnormal">
      <!--ro, req, string, 电机或传感器是否正常, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:1.检测电机的编码器与霍尔传感器的一致性；
2.Normal-正常，Abnormal-异常-->test
    </motorSensor>
    <dropArmSensorAbnormal min="1" max="4">
      <!--ro, req, string, 摆臂位置传感器异常ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:检测摆臂到位开关-->test
    </dropArmSensorAbnormal>
    <dropArm opt="Normal,Abnormal">
      <!--ro, req, string, 摆臂状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常，Abnormal-异常（被阻挡或未转动）-->test
    </dropArm>
    <fireInput opt="Normal,Alarm">
      <!--ro, req, string, 消防输入状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常，Alarm-报警-->test
    </fireInput>
    <caseTemp min="-2000.0" max="3000.0">
      <!--ro, req, float, 闸机腔体温度, range:[,], step:0.1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.1
    </caseTemp>
    <alarmInTriggered min="1" max="8">
      <!--ro, req, string, 报警输入触发ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </alarmInTriggered>
    <alarmOutTriggered min="1" max="4">
      <!--ro, req, string, 报警输出触发ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </alarmOutTriggered>
    <brakeStatus opt="NotBrake,Brake">
      <!--ro, req, string, 制动器状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:NotBrake-未制动，Brake-制动-->test
    </brakeStatus>
    <fanStatus opt="NotStart,Start">
      <!--ro, req, string, 风扇状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:NotStart-未启动，Start-启动-->test
    </fanStatus>
    <lampBoardCommFailed min="1" max="4">
      <!--ro, req, string, 灯板通信失败ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </lampBoardCommFailed>
  </SlaveChannelController>
</GateRelatedPartsStatus>

81. 获取人员通道相关器件状态

81.1 命令

GET /ISAPI/AccessControl/GateRelatedPartsStatus

81.2 输入参数

无

81.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateRelatedPartsStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道相关器件状态, attr:version{req, string, 协议版本, range:[,]}-->
  <MasterChannelController>
    <!--ro, opt, object, 主通道控制器相关器件状态-->
    <motorSensor>
      <!--ro, req, enum, 电机或传感器是否正常, subType:string, [Normal#正常,Abnormal#异常], desc:检测电机的编码器与霍尔传感器的一致性-->Normal
    </motorSensor>
    <dropArmSensorAbnormal>
      <!--ro, req, string, 摆臂位置传感器异常ID, range:[1,4], desc:检测摆臂到位开关-->1,3
    </dropArmSensorAbnormal>
    <dropArm>
      <!--ro, req, enum, 摆臂状态, subType:string, [Normal#正常,Abnormal#异常（被阻挡或未转动）]-->Normal
    </dropArm>
    <fireInput>
      <!--ro, req, enum, 消防输入状态, subType:string, [Normal#正常,Alarm#报警]-->Normal
    </fireInput>
    <caseTemp>
      <!--ro, req, float, 闸机腔体温度, range:[-2000.0,3000.0], step:0.1, unit:, unitType:-->0.1
    </caseTemp>
    <alarmInTriggered>
      <!--ro, req, string, 报警输入触发ID, range:[1,8]-->1,3,5
    </alarmInTriggered>
    <alarmOutTriggered>
      <!--ro, req, string, 报警输出触发ID, range:[1,4]-->1,3
    </alarmOutTriggered>
    <brakeStatus>
      <!--ro, req, enum, 制动器状态, subType:string, [NotBrake#未制动,Brake#制动]-->NotBrake
    </brakeStatus>
    <fanStatus>
      <!--ro, req, enum, 风扇状态, subType:string, [NotStart#未启动,Start#启动]-->NotStart
    </fanStatus>
    <lampBoardCommFailed>
      <!--ro, req, string, 灯板通信失败ID, range:[1,4]-->1,3
    </lampBoardCommFailed>
  </MasterChannelController>
  <SlaveChannelController>
    <!--ro, opt, object, 从通道控制器相关器件状态-->
    <motorSensor>
      <!--ro, req, enum, 电机或传感器是否正常, subType:string, [Normal#正常,Abnormal#异常], desc:检测电机的编码器与霍尔传感器的一致性-->Normal
    </motorSensor>
    <dropArmSensorAbnormal>
      <!--ro, req, string, 摆臂位置传感器异常ID, range:[1,4], desc:检测摆臂到位开关-->1,3
    </dropArmSensorAbnormal>
    <dropArm>
      <!--ro, req, enum, 摆臂状态, subType:string, [Normal#正常,Abnormal#异常（被阻挡或未转动）]-->Normal
    </dropArm>
    <fireInput>
      <!--ro, req, enum, 消防输入状态, subType:string, [Normal#正常,Alarm#报警]-->Normal
    </fireInput>
    <caseTemp>
      <!--ro, req, float, 闸机腔体温度, range:[-2000.0,3000.0], step:0.1, unit:, unitType:-->0.1
    </caseTemp>
    <alarmInTriggered>
      <!--ro, req, string, 报警输入触发ID, range:[1,8]-->1,3,5
    </alarmInTriggered>
    <alarmOutTriggered>
      <!--ro, req, string, 报警输出触发ID, range:[1,4]-->1,3
    </alarmOutTriggered>
    <brakeStatus>
      <!--ro, req, enum, 制动器状态, subType:string, [NotBrake#未制动,Brake#制动]-->NotBrake
    </brakeStatus>
    <fanStatus>
      <!--ro, req, enum, 风扇状态, subType:string, [NotStart#未启动,Start#启动]-->NotStart
    </fanStatus>
    <lampBoardCommFailed>
      <!--ro, req, string, 灯板通信失败ID, range:[1,4]-->1,3
    </lampBoardCommFailed>
  </SlaveChannelController>
</GateRelatedPartsStatus>

82. 获取人员通道本地拨码及信息能力

82.1 命令

GET /ISAPI/AccessControl/GateDialAndInfo/capabilities

82.2 输入参数

无

82.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateDialAndInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道本地拨码及信息, attr:version{req, string, 协议版本, range:[,]}-->
  <workMode opt="Normal,Origin,Debug">
    <!--ro, req, string, 工作模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常工作模式，Origin-原点设置模式，Debug-测试模式-->test
  </workMode>
  <memoryModeEnabled opt="enable,disable">
    <!--ro, req, string, 记忆模式是否开启, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:enable-开启，disable-未开启-->test
  </memoryModeEnabled>
  <alarmAreaNoAuth opt="true,false">
    <!--ro, req, bool, 报警区域是否禁止开门, attr:opt{req, string, 取值范围, range:[,]}-->true
  </alarmAreaNoAuth>
  <deviceType opt="DropGate,WingGate,ThreeRollerGate">
    <!--ro, req, string, 设备型号, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:DropGate-摆闸，WingGate-翼闸，ThreeRollerGate-三辊闸-->test
  </deviceType>
  <DialMode>
    <!--ro, opt, object, 本地拨码通信模式-->
    <InDoor opt="Controlled,Forbid,Free">
      <!--ro, req, string, 进门, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Controlled-受控，Forbid-禁止，Free-自由-->test
    </InDoor>
    <OutDoor opt="Controlled,Forbid,Free">
      <!--ro, req, string, 出门, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Controlled-受控，Forbid-禁止，Free-自由-->test
    </OutDoor>
  </DialMode>
  <remoteControllerMode opt="Normal,LocalCode">
    <!--ro, opt, string, 遥控器模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Normal-正常模式，LocalCode-本地对码模式-->test
  </remoteControllerMode>
</GateDialAndInfo>

83. 获取人员通道本地拨码及信息

83.1 命令

GET /ISAPI/AccessControl/GateDialAndInfo

83.2 输入参数

无

83.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GateDialAndInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人员通道本地拨码及信息, attr:version{req, string, 协议版本, range:[,]}-->
  <workMode>
    <!--ro, req, enum, 工作模式, subType:string, [Normal#正常工作模式,Origin#原点设置模式,Debug#测试模式]-->Normal
  </workMode>
  <memoryModeEnabled>
    <!--ro, req, enum, 记忆模式是否开启, subType:string, [enable#开启,disable#未开启]-->enable
  </memoryModeEnabled>
  <alarmAreaNoAuth>
    <!--ro, req, bool, 报警区域是否禁止开门-->true
  </alarmAreaNoAuth>
  <deviceType>
    <!--ro, req, enum, 设备型号, subType:string, [DropGate#摆闸,WingGate#翼闸,ThreeRollerGate#三辊闸]-->DropGate
  </deviceType>
  <DialMode>
    <!--ro, opt, object, 本地拨码通信模式-->
    <InDoor>
      <!--ro, req, enum, 进门, subType:string, [Controlled#受控,Forbid#禁止,Free#自由]-->Controlled
    </InDoor>
    <OutDoor>
      <!--ro, req, enum, 出门, subType:string, [Controlled#受控,Forbid#禁止,Free#自由]-->Controlled
    </OutDoor>
  </DialMode>
  <remoteControllerMode>
    <!--ro, opt, enum, 遥控器模式, subType:string, [Normal#正常模式,LocalCode#本地对码模式]-->Normal
  </remoteControllerMode>
</GateDialAndInfo>

84. 获取通道控制器参数配置能力

84.1 命令

GET /ISAPI/AccessControl/ChannelControllerCfg/capabilities

84.2 输入参数

无

84.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道控制器参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <gatePassingMode opt="ByChannelController,ByRightController">
    <!--ro, req, string, 闸机通行模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:ByChannelController-以通道控制器本地拨码为准，ByRightController-以权限控制器配置为准-->test
  </gatePassingMode>
  <freePassAuthEnabled opt="enable,disable">
    <!--ro, req, string, 自由通行是否需要认证, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:enable-需要，disable-不需要-->test
  </freePassAuthEnabled>
  <openAndCloseSpeed min="1" max="10">
    <!--ro, req, int, 开关门速度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:1-10，代表10%-100%的十档-->1
  </openAndCloseSpeed>
  <alarmSoundTime min="0" max="599">
    <!--ro, req, int, 报警提示音时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:0代表一直输出-->1
  </alarmSoundTime>
  <tempUnit opt="Centigrade,Fahrenheit">
    <!--ro, req, string, 温度显示单位, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Centigrade-摄氏度，Fahrenheit-华氏度-->test
  </tempUnit>
  <alarmAreaNoAuth opt="true,false">
    <!--ro, req, bool, 报警区域是否禁止开门, attr:opt{req, string, 取值范围, range:[,]}-->true
  </alarmAreaNoAuth>
  <gateWingMaterial opt="Acrylic,StellPipe,SinglePUGate,DoublePUGate">
    <!--ro, opt, string, 门翼材质, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Acrylic-亚克力，StellPipe-钢管，SinglePUGate-单PU门，DoublePUGate-双PU门-->test
  </gateWingMaterial>
  <channelLength min="550" max="1400">
    <!--ro, opt, int, 通道长度, range:[,], step:, unit:mm, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->550
  </channelLength>
  <motorDirection opt="Clockwise,AntiClockwise">
    <!--ro, opt, string, 电机转动方向, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Clockwise-顺时针，AntiClockwise-逆时针-->test
  </motorDirection>
  <lampBoardLight min="0" max="100">
    <!--ro, opt, int, 灯板亮度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </lampBoardLight>
  <openSpeed min="1" max="10">
    <!--ro, opt, int, 门翼开门速度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:1-10，代表10%-100%的十档，默认速度5档-->5
  </openSpeed>
  <closeSpeed min="1" max="10">
    <!--ro, opt, int, 门翼关门速度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:1-10，代表10%-100%的十档，默认速度4档-->4
  </closeSpeed>
  <runMode opt="doubleGateWing,singleGateWing">
    <!--ro, opt, string, 运行模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:doubleGateWing-双门翼运行模式（默认），singleGateWing-单门翼运行模式-->test
  </runMode>
</ChannelControllerCfg>

85. 获取通道控制器参数

85.1 命令

GET /ISAPI/AccessControl/ChannelControllerCfg

85.2 输入参数

无

85.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 通道控制器参数, attr:version{req, string, 协议版本, range:[,]}-->
  <gatePassingMode>
    <!--ro, req, enum, 闸机通行模式, subType:string, [ByChannelController#以通道控制器本地拨码为准,ByRightController#以权限控制器配置为准]-->ByChannelController
  </gatePassingMode>
  <freePassAuthEnabled>
    <!--ro, req, enum, 自由通行是否需要认证, subType:string, [enable#需要,disable#不需要]-->enable
  </freePassAuthEnabled>
  <openAndCloseSpeed>
    <!--ro, req, int, 开关门速度, range:[1,10], step:1, unit:, unitType:, desc:1-10，代表10%-100%的十档-->1
  </openAndCloseSpeed>
  <alarmSoundTime>
    <!--ro, req, int, 报警提示音时间, range:[0,599], step:1, unit:s, unitType:时间, desc:0代表一直输出-->1
  </alarmSoundTime>
  <tempUnit>
    <!--ro, req, enum, 温度显示单位, subType:string, [Centigrade#摄氏度,Fahrenheit#华氏度]-->Centigrade
  </tempUnit>
  <alarmAreaNoAuth>
    <!--ro, opt, bool, 报警区域是否禁止开门-->true
  </alarmAreaNoAuth>
  <gateWingMaterial>
    <!--ro, opt, enum, 门翼材质, subType:string, [Acrylic#亚克力,StellPipe#钢管,SinglePUGate#单PU门,DoublePUGate#双PU门]-->Acrylic
  </gateWingMaterial>
  <channelLength>
    <!--ro, opt, int, 通道长度, range:[550,1400], step:1, unit:mm, unitType:长度-->550
  </channelLength>
  <motorDirection>
    <!--ro, opt, enum, 电机转动方向, subType:string, [Clockwise#顺时针,AntiClockwise#逆时针]-->Clockwise
  </motorDirection>
  <lampBoardLight>
    <!--ro, opt, int, 灯板亮度, range:[0,100], step:1, unit:, unitType:-->1
  </lampBoardLight>
  <openSpeed>
    <!--ro, opt, int, 门翼开门速度, range:[1,10], step:1, unit:, unitType:,
desc:1.1-10，代表10%-100%的十档，默认速度5档；
2.如openAndCloseSpeed和openSpeed同时配置，开门速度以openSpeed为准-->5
  </openSpeed>
  <closeSpeed>
    <!--ro, opt, int, 门翼关门速度, range:[1,10], step:1, unit:, unitType:,
desc:1.1-10，代表10%-100%的十档，默认速度4档；
2.如openAndCloseSpeed和closeSpeed同时配置，开门速度以closeSpeed为准-->4
  </closeSpeed>
  <runMode>
    <!--ro, opt, enum, 运行模式, subType:string, [doubleGateWing#双门翼运行模式（默认）,singleGateWing#单门翼运行模式]-->doubleGateWing
  </runMode>
</ChannelControllerCfg>

86. 配置通道控制器参数

86.1 命令

PUT /ISAPI/AccessControl/ChannelControllerCfg

86.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 通道控制器参数, attr:version{req, string, 协议版本, range:[,]}-->
  <gatePassingMode>
    <!--req, enum, 闸机通行模式, subType:string, [ByChannelController#以通道控制器本地拨码为准,ByRightController#以权限控制器配置为准]-->ByChannelController
  </gatePassingMode>
  <freePassAuthEnabled>
    <!--req, enum, 自由通行是否需要认证, subType:string, [enable#需要,disable#不需要]-->enable
  </freePassAuthEnabled>
  <openAndCloseSpeed>
    <!--req, int, 开关门速度, range:[1,10], step:1, unit:, unitType:, desc:1-10，代表10%-100%的十档-->1
  </openAndCloseSpeed>
  <alarmSoundTime>
    <!--req, int, 报警提示音时间, range:[0,599], step:1, unit:s, unitType:时间, desc:0代表一直输出-->1
  </alarmSoundTime>
  <tempUnit>
    <!--req, enum, 温度显示单位, subType:string, [Centigrade#摄氏度,Fahrenheit#华氏度]-->Centigrade
  </tempUnit>
  <alarmAreaNoAuth>
    <!--opt, bool, 报警区域是否禁止开门-->true
  </alarmAreaNoAuth>
  <gateWingMaterial>
    <!--opt, enum, 门翼材质, subType:string, [Acrylic#亚克力,StellPipe#钢管,SinglePUGate#单PU门,DoublePUGate#双PU门]-->Acrylic
  </gateWingMaterial>
  <channelLength>
    <!--opt, int, 通道长度, range:[550,1400], step:1, unit:mm, unitType:长度-->550
  </channelLength>
  <motorDirection>
    <!--opt, enum, 电机转动方向, subType:string, [Clockwise#顺时针,AntiClockwise#逆时针]-->Clockwise
  </motorDirection>
  <lampBoardLight>
    <!--opt, int, 灯板亮度, range:[0,100], step:1, unit:, unitType:-->1
  </lampBoardLight>
  <openSpeed>
    <!--opt, int, 门翼开门速度, range:[1,10], step:1, unit:, unitType:,
desc:1.1-10，代表10%-100%的十档，默认速度5档；
2.如openAndCloseSpeed和openSpeed同时配置，开门速度以openSpeed为准-->5
  </openSpeed>
  <closeSpeed>
    <!--opt, int, 门翼关门速度, range:[1,10], step:1, unit:, unitType:,
desc:1.1-10，代表10%-100%的十档，默认速度4档；
2.如openAndCloseSpeed和closeSpeed同时配置，开门速度以closeSpeed为准-->4
  </closeSpeed>
  <runMode>
    <!--opt, enum, 运行模式, subType:string, [doubleGateWing#双门翼运行模式（默认）,singleGateWing#单门翼运行模式]-->doubleGateWing
  </runMode>
</ChannelControllerCfg>

86.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

87. 获取通道控制器报警联动配置能力

87.1 命令

GET /ISAPI/AccessControl/ChannelControllerAlarmLinkage/capabilities

87.2 输入参数

无

87.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmLinkage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道控制器报警联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <Trailing>
    <!--ro, req, object, 尾随通行-->
    <masterAlarmOut min="1" max="4">
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </masterAlarmOut>
    <slaveAlarmOut min="1" max="4">
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </slaveAlarmOut>
  </Trailing>
  <ReverseAccess>
    <!--ro, req, object, 反向闯入-->
    <masterAlarmOut min="1" max="4">
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </masterAlarmOut>
    <slaveAlarmOut min="1" max="4">
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </slaveAlarmOut>
  </ReverseAccess>
  <ForceAccess>
    <!--ro, req, object, 外力强行冲撞打开挡门-->
    <masterAlarmOut min="1" max="4">
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </masterAlarmOut>
    <slaveAlarmOut min="1" max="4">
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </slaveAlarmOut>
  </ForceAccess>
  <ClimbingOverGate>
    <!--ro, req, object, 翻越-->
    <masterAlarmOut min="1" max="4">
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </masterAlarmOut>
    <slaveAlarmOut min="1" max="4">
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </slaveAlarmOut>
  </ClimbingOverGate>
  <PassingTimeout>
    <!--ro, req, object, 通行超时-->
    <masterAlarmOut min="1" max="4">
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </masterAlarmOut>
    <slaveAlarmOut min="1" max="4">
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </slaveAlarmOut>
  </PassingTimeout>
  <IntrusionAlarm>
    <!--ro, req, object, 误闯报警-->
    <masterAlarmOut min="1" max="4">
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </masterAlarmOut>
    <slaveAlarmOut min="1" max="4">
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </slaveAlarmOut>
  </IntrusionAlarm>
</ChannelControllerAlarmLinkage>

88. 获取通道控制器报警联动配置

88.1 命令

GET /ISAPI/AccessControl/ChannelControllerAlarmLinkage

88.2 输入参数

无

88.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmLinkage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道控制器报警联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <Trailing>
    <!--ro, req, object, 尾随通行-->
    <masterAlarmOut>
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </Trailing>
  <ReverseAccess>
    <!--ro, req, object, 反向闯入-->
    <masterAlarmOut>
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </ReverseAccess>
  <ForceAccess>
    <!--ro, req, object, 外力强行冲撞打开挡门-->
    <masterAlarmOut>
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </ForceAccess>
  <ClimbingOverGate>
    <!--ro, req, object, 翻越-->
    <masterAlarmOut>
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </ClimbingOverGate>
  <PassingTimeout>
    <!--ro, req, object, 通行超时-->
    <masterAlarmOut>
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </PassingTimeout>
  <IntrusionAlarm>
    <!--ro, req, object, 误闯报警-->
    <masterAlarmOut>
      <!--ro, req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--ro, req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </IntrusionAlarm>
</ChannelControllerAlarmLinkage>

89. 配置通道控制器报警联动配置

89.1 命令

PUT /ISAPI/AccessControl/ChannelControllerAlarmLinkage

89.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmLinkage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 通道控制器报警联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <Trailing>
    <!--req, object, 尾随通行-->
    <masterAlarmOut>
      <!--req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </Trailing>
  <ReverseAccess>
    <!--req, object, 反向闯入-->
    <masterAlarmOut>
      <!--req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </ReverseAccess>
  <ForceAccess>
    <!--req, object, 外力强行冲撞打开挡门-->
    <masterAlarmOut>
      <!--req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </ForceAccess>
  <ClimbingOverGate>
    <!--req, object, 翻越-->
    <masterAlarmOut>
      <!--req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </ClimbingOverGate>
  <PassingTimeout>
    <!--req, object, 通行超时-->
    <masterAlarmOut>
      <!--req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </PassingTimeout>
  <IntrusionAlarm>
    <!--req, object, 误闯报警-->
    <masterAlarmOut>
      <!--req, string, 主通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </masterAlarmOut>
    <slaveAlarmOut>
      <!--req, string, 从通道控制器联动本地报警输出ID, range:[1,4]-->1,3
    </slaveAlarmOut>
  </IntrusionAlarm>
</ChannelControllerAlarmLinkage>

89.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

90. 获取通道控制器报警输出参数配置能力

90.1 命令

GET /ISAPI/AccessControl/ChannelControllerAlarmOut/capabilities

90.2 输入参数

无

90.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmOut xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道控制器报警输出参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <controllerType opt="Master,Slave">
    <!--ro, req, string, controllerType, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Master-主通道控制器，Slave-从通道控制器-->test
  </controllerType>
  <alarmOutNo min="1" max="4">
    <!--ro, req, int, 报警输出序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </alarmOutNo>
  <delay min="0" max="5999">
    <!--ro, req, int, 报警输出时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:0代表一直输出-->1
  </delay>
</ChannelControllerAlarmOut>

91. 获取通道控制器报警输出参数

91.1 命令

GET /ISAPI/AccessControl/ChannelControllerAlarmOut?controllerType=Master&alarmOutNo=1

91.2 输入参数

无

91.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmOut xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道控制器报警输出参数, attr:version{req, string, 协议版本, range:[,]}-->
  <delay>
    <!--ro, req, int, 报警输出时间, range:[0,5999], step:1, unit:s, unitType:时间, desc:0代表一直输出-->1
  </delay>
</ChannelControllerAlarmOut>

92. 配置通道控制器报警输出参数

92.1 命令

PUT /ISAPI/AccessControl/ChannelControllerAlarmOut?controllerType=Master&alarmOutNo=1

92.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmOut xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 通道控制器报警输出参数, attr:version{req, string, 协议版本, range:[,]}-->
  <delay>
    <!--req, int, 报警输出时间, range:[0,5999], step:1, unit:s, unitType:时间, desc:0代表一直输出-->1
  </delay>
</ChannelControllerAlarmOut>

92.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

93. 获取通道控制器报警输出控制能力

93.1 命令

GET /ISAPI/AccessControl/ChannelControllerAlarmOutControl/capabilities

93.2 输入参数

无

93.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmOutControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道控制器报警输出控制, attr:version{req, string, 协议版本, range:[,]}-->
  <controllerType opt="Master,Slave">
    <!--ro, req, string, 通道控制器类别, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Master-主通道控制器，Slave-从通道控制器-->test
  </controllerType>
  <alarmOutNo min="1" max="4">
    <!--ro, opt, int, 报警输出序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当不传递该节点时，代表全部报警输出口-->1
  </alarmOutNo>
  <alarmOutControl opt="Start,Stop">
    <!--ro, opt, string, 报警输出控制, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:Start-开始报警输出；Stop-停止报警输出-->test
  </alarmOutControl>
</ChannelControllerAlarmOutControl>

94. 配置通道控制器报警输出控制

94.1 命令

PUT /ISAPI/AccessControl/ChannelControllerAlarmOutControl

94.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelControllerAlarmOutControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 通道控制器报警输出控制, attr:version{req, string, 协议版本, range:[,]}-->
  <controllerType>
    <!--req, enum, 通道控制器类别, subType:string, [Master#主通道控制器,Slave#从通道控制器]-->Master
  </controllerType>
  <alarmOutNo>
    <!--opt, int, 报警输出序号, range:[1,4], step:1, unit:, unitType:, desc:不传递该节点时，代表全部报警输出口-->1
  </alarmOutNo>
  <alarmOutControl>
    <!--opt, enum, 报警输出控制, subType:string, [Start#开始报警输出,Stop#停止报警输出]-->Start
  </alarmOutControl>
</ChannelControllerAlarmOutControl>

94.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

95. 获取跨主机反潜回服务器参数能力

95.1 命令

GET /ISAPI/AccessControl/SubmarineBack/capabilities

95.2 输入参数

无

95.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBack xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回服务器配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
</SubmarineBack>

96. 获取跨主机反潜回服务器

96.1 命令

GET /ISAPI/AccessControl/SubmarineBack

96.2 输入参数

无

96.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBack xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回服务器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
</SubmarineBack>

97. 配置跨主机反潜回服务器

97.1 命令

PUT /ISAPI/AccessControl/SubmarineBack

97.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBack xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--wo, req, object, 跨主机反潜回服务器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--wo, req, bool, 使能-->true
  </enabled>
</SubmarineBack>

97.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

98. 获取加入跨主机反潜回主机参数能力

98.1 命令

GET /ISAPI/AccessControl/SubmarineBackHostInfo/capabilities

98.2 输入参数

无

98.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackHostInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回主机配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <ID min="1" max="4">
    <!--ro, req, int, 配置序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </ID>
  <HostInfoList size="16">
    <!--ro, req, array, 主机信息列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Action>
      <!--ro, req, object, 主机信息-->
      <deviceNo min="1" max="64">
        <!--ro, req, int, 设备编号, range:[1,64], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </deviceNo>
      <serial min="9" max="9">
        <!--ro, req, const, 设备序列号, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->E12345678
      </serial>
      <registrationCode min="4" max="8">
        <!--ro, opt, string, 注册码, range:[4,8], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:用于设备间校验，字符类型：数字+字母  敏感信息加密-->test
      </registrationCode>
    </Action>
  </HostInfoList>
</SubmarineBackHostInfo>

99. 获取加入跨主机反潜回主机参数

99.1 命令

GET /ISAPI/AccessControl/SubmarineBackHostInfo/ConfigureNo/<indexID>

99.2 输入参数

无

99.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackHostInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回主机配置, attr:version{req, string, 协议版本, range:[,]}-->
  <HostInfoList size="16">
    <!--ro, req, array, 主机列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Action>
      <!--ro, req, object, 主机配置-->
      <deviceNo>
        <!--ro, req, int, 设备编号, range:[,], step:, unit:, unitType:-->1
      </deviceNo>
      <serial>
        <!--ro, req, string, 设备序列号, range:[,], desc:string长度固定为9-->E12345678
      </serial>
      <registrationCode>
        <!--ro, opt, string, 注册码, range:[4,8], desc:用于设备间校验，字符类型：数字+字母  敏感信息加密-->test
      </registrationCode>
    </Action>
  </HostInfoList>
</SubmarineBackHostInfo>

100. 配置加入跨主机反潜回主机参数

100.1 命令

PUT /ISAPI/AccessControl/SubmarineBackHostInfo/ConfigureNo/<indexID>

100.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackHostInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 跨主机反潜回主机配置, attr:version{req, string, 协议版本, range:[,]}-->
  <HostInfoList size="16">
    <!--req, array, 跨主机列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Action>
      <!--req, object, 跨主机信息-->
      <deviceNo>
        <!--req, int, 设备编号, range:[1,64], step:, unit:, unitType:-->1
      </deviceNo>
      <serial>
        <!--req, string, 设备序列号, range:[,], desc:String长度固定，为9-->E12345678
      </serial>
      <registrationCode>
        <!--opt, string, 注册码, range:[4,8], desc:用于设备间校验，字符类型：数字+字母  敏感信息加密-->test
      </registrationCode>
    </Action>
  </HostInfoList>
</SubmarineBackHostInfo>

100.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

101. 获取跨主机反潜回读卡器配置能力

101.1 命令

GET /ISAPI/AccessControl/SubmarineBackReader/capabilities

101.2 输入参数

无

101.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackReader xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 跨主机反潜回读卡器配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <ID min="1" max="1">
    <!--ro, req, int, 配置序号, range:[1,128], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[1,128], step:, unit:, unitType:}-->1
  </ID>
  <selfHostNo min="1" max="64">
    <!--ro, req, int, 配置对象主机编号, range:[1,64], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </selfHostNo>
  <selfReaderNo min="1" max="8">
    <!--ro, req, int, 配置对象读卡器编号, range:[1,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->4
  </selfReaderNo>
  <FollowReaderList size="16">
    <!--ro, opt, array, 后续主机列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Action>
      <!--ro, opt, object, 后续主机-->
      <followHostNo min="1" max="64">
        <!--ro, req, int, 后续主机编号, range:[1,64], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </followHostNo>
      <followReaderNo min="1" max="8">
        <!--ro, req, int, 后续读卡器编号, range:[1,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </followReaderNo>
    </Action>
  </FollowReaderList>
</SubmarineBackReader>

102. 获取跨主机反潜回读卡器

102.1 命令

GET /ISAPI/AccessControl/SubmarineBackReader/ConfigureNo/<indexID>

102.2 输入参数

无

102.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackReader xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回读卡器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <selfHostNo>
    <!--ro, req, int, 配置对象主机编号, range:[1,64], step:, unit:, unitType:-->1
  </selfHostNo>
  <selfReaderNo>
    <!--ro, req, int, 配置对象读卡器编号, range:[1,8], step:, unit:, unitType:-->1
  </selfReaderNo>
  <FollowReaderList size="16">
    <!--ro, req, array, 后续主机列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Action>
      <!--ro, req, object, 后续主机列表信息-->
      <followHostNo>
        <!--ro, req, int, 后续主机编号, range:[1,64], step:, unit:, unitType:-->1
      </followHostNo>
      <followReaderNo>
        <!--ro, req, int, 后续读卡器编号, range:[1,8], step:, unit:, unitType:-->1
      </followReaderNo>
    </Action>
  </FollowReaderList>
</SubmarineBackReader>

103. 配置跨主机反潜回读卡器

103.1 命令

PUT /ISAPI/AccessControl/SubmarineBackReader/ConfigureNo/<indexID>

103.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackReader xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 跨主机反潜回读卡器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <selfHostNo>
    <!--req, int, 配置对象主机编号, range:[1,64], step:, unit:, unitType:-->1
  </selfHostNo>
  <selfReaderNo>
    <!--req, int, 配置对象读卡器编号, range:[1,8], step:, unit:, unitType:-->1
  </selfReaderNo>
  <FollowReaderList size="16">
    <!--req, array, 后续主机列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <Action>
      <!--req, object, 后续主机信息-->
      <followHostNo>
        <!--req, int, 后续主机编号, range:[1,64], step:, unit:, unitType:-->1
      </followHostNo>
      <followReaderNo>
        <!--req, int, 后续读卡器编号, range:[1,8], step:, unit:, unitType:-->1
      </followReaderNo>
    </Action>
  </FollowReaderList>
</SubmarineBackReader>

103.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

104. 获取跨主机反潜回模式参数能力

104.1 命令

GET /ISAPI/AccessControl/SubmarineBackMode/capabilities

104.2 输入参数

无

104.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回模式配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <mode opt="disable,internetCommunicate,cardReadAndWrite">
    <!--ro, req, enum, 反潜回模式, subType:string, [disable#不启用,internetCommunicate#基于网络通信,cardReadAndWrite#基于卡读写], attr:opt{req, string, 取值范围, range:[,]}-->disable
  </mode>
  <rule opt="line,inOrOut">
    <!--ro, req, enum, 反潜回规则, subType:string, [line#线路反潜回,inOrOut#进出反潜回], attr:opt{req, string, 取值范围, range:[,]}, desc:mode节点为disable时该节点无效-->line
  </rule>
  <sectionID min="1" max="1">
    <!--ro, req, int, 扇区ID, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{opt, int, 最大值, range:[1,100], step:, unit:, unitType:无, desc:mode节点为cardReadAndWrite时有效,扇区ID每次只能配置一个}, desc:扇区ID（mode节点为cardReadAndWrite时有效,扇区ID每次只能配置一个）-->1
  </sectionID>
</SubmarineBackMode>

105. 获取跨主机反潜回模式

105.1 命令

GET /ISAPI/AccessControl/SubmarineBackMode

105.2 输入参数

无

105.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回模式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 反潜回模式, subType:string, [disable#不启用,internetCommunicate#基于网络通信,cardReadAndWrite#基于卡读写]-->disable
  </mode>
  <rule>
    <!--ro, req, enum, 反潜回规则, subType:string, [line#线路反潜回,inOrOut#进出反潜回], desc:mode节点为disable时该节点无效-->line
  </rule>
  <sectionID>
    <!--ro, req, int, 扇区ID, range:[1,100], step:, unit:, unitType:无, desc:扇区ID（mode节点为cardReadAndWrite时有效,扇区ID每次只能配置一个）-->1
  </sectionID>
</SubmarineBackMode>

106. 配置跨主机反潜回模式

106.1 命令

PUT /ISAPI/AccessControl/SubmarineBackMode

106.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SubmarineBackMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 跨主机反潜回模式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 反潜回模式, subType:string, [disable#不启用,internetCommunicate#基于网络通信,cardReadAndWrite#基于卡读写]-->disable
  </mode>
  <rule>
    <!--ro, req, enum, 反潜回规则, subType:string, [line#线路反潜回,inOrOut#进出反潜回], desc:mode节点为disable时该节点无效-->line
  </rule>
  <sectionID>
    <!--ro, req, int, 扇区ID, range:[1,100], step:, unit:, unitType:无, desc:mode节点为cardReadAndWrite时有效,扇区ID每次只能配置一个-->1
  </sectionID>
</SubmarineBackMode>

106.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

107. 获取跨主机反潜回信息清除能力

107.1 命令

GET /ISAPI/AccessControl/ClearSubmarineBack/capabilities

107.2 输入参数

无

107.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClearSubmarineBack xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回信息清除, attr:version{req, string, 协议版本, range:[,]}-->
  <clearHostInfo opt="true,false">
    <!--ro, opt, bool, 清除主机信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearHostInfo>
  <clearReaderInfo opt="true,false">
    <!--ro, opt, bool, 清除读卡器信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearReaderInfo>
  <clearSubmarineBack opt="true,false">
    <!--ro, opt, bool, 清除跨主机反潜回服务器配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearSubmarineBack>
  <clearSubmarineBackHostInfo opt="true,false">
    <!--ro, opt, bool, 清除加入跨主机反潜回主机配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearSubmarineBackHostInfo>
  <clearStartReaderInfo opt="true,false">
    <!--ro, opt, bool, 清除起始读卡器配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearStartReaderInfo>
  <clearSubmarineBackReader opt="true,false">
    <!--ro, opt, bool, 清除跨主机反潜回读卡器配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearSubmarineBackReader>
  <clearSubmarineBackMode opt="true,false">
    <!--ro, opt, bool, 清除跨主机反潜回模式配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearSubmarineBackMode>
  <clearServerDevice opt="true,false">
    <!--ro, opt, bool, 清除加入跨主机反潜回配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearServerDevice>
  <clearReaderAcrossHost opt="true,false">
    <!--ro, opt, bool, 清除读卡器跨主机反潜回配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearReaderAcrossHost>
</ClearSubmarineBack>

108. 配置跨主机反潜回信息清除

108.1 命令

PUT /ISAPI/AccessControl/ClearSubmarineBack

108.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ClearSubmarineBack xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 跨主机反潜回信息, attr:version{req, string, 协议版本, range:[,]}-->
  <clearHostInfo>
    <!--opt, bool, 清除主机信息-->true
  </clearHostInfo>
  <clearReaderInfo>
    <!--opt, bool, 清除读卡器信息-->true
  </clearReaderInfo>
  <clearSubmarineBack>
    <!--opt, bool, 清除跨主机反潜回服务器配置-->true
  </clearSubmarineBack>
  <clearSubmarineBackHostInfo>
    <!--opt, bool, 清除加入跨主机反潜回主机配置-->true
  </clearSubmarineBackHostInfo>
  <clearStartReaderInfo>
    <!--opt, bool, 清除起始读卡器配置-->true
  </clearStartReaderInfo>
  <clearSubmarineBackReader>
    <!--opt, bool, 清除跨主机反潜回读卡器配置-->true
  </clearSubmarineBackReader>
  <clearSubmarineBackMode>
    <!--opt, bool, 清除跨主机反潜回模式配置-->true
  </clearSubmarineBackMode>
  <clearServerDevice>
    <!--opt, bool, 清除加入跨主机反潜回配置-->true
  </clearServerDevice>
  <clearReaderAcrossHost>
    <!--opt, bool, 清除读卡器跨主机反潜回配置-->true
  </clearReaderAcrossHost>
</ClearSubmarineBack>

108.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

109. 获取起始读卡器配置能力

109.1 命令

GET /ISAPI/AccessControl/StartReaderInfo/capabilities

109.2 输入参数

无

109.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StartReaderInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 起始读卡器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <hostNo min="1" max="64">
    <!--ro, req, int, 主机编号, range:[1,64], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </hostNo>
  <readerNo min="1" max="8">
    <!--ro, req, int, 读卡器编号, range:[1,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </readerNo>
</StartReaderInfo>

110. 获取起始读卡器配置

110.1 命令

GET /ISAPI/AccessControl/StartReaderInfo

110.2 输入参数

无

110.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StartReaderInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 起始读卡器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <hostNo>
    <!--ro, req, int, 主机编号, range:[1,64], step:, unit:, unitType:-->1
  </hostNo>
  <readerNo>
    <!--ro, req, int, 读卡器编号, range:[1,8], step:, unit:, unitType:-->1
  </readerNo>
</StartReaderInfo>

111. 配置起始读卡器

111.1 命令

PUT /ISAPI/AccessControl/StartReaderInfo

111.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<StartReaderInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 起始读卡器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <hostNo>
    <!--req, int, 主机编号, range:[1,64], step:, unit:, unitType:-->1
  </hostNo>
  <readerNo>
    <!--req, int, 读卡器编号, range:[1,8], step:, unit:, unitType:-->1
  </readerNo>
</StartReaderInfo>

111.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

112. 获取反潜回刷卡记录清除能力

112.1 命令

GET /ISAPI/AccessControl/ClearCardRecord/capabilities

112.2 输入参数

无

112.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClearCardRecord xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 反潜回刷卡记录清除能力, attr:version{req, string, 协议版本, range:[,]}-->
  <clearAllCard opt="true,false">
    <!--ro, req, bool, 清除所有刷卡记录, attr:opt{req, string, 取值范围, range:[,]}-->true
  </clearAllCard>
  <CardList size="32">
    <!--ro, opt, array, 卡号列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <cardNo min="1" max="32">
      <!--ro, opt, string, 卡号, range:[1,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </cardNo>
  </CardList>
  <EmployeeNoList size="32">
    <!--ro, opt, array, 工号列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <employeeNo min="1" max="10">
      <!--ro, opt, string, 工号（人员ID）, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </employeeNo>
  </EmployeeNoList>
</ClearCardRecord>

113. 配置反潜回刷卡记录清除

113.1 命令

PUT /ISAPI/AccessControl/ClearCardRecord

113.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ClearCardRecord xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 反潜回刷卡记录, attr:version{req, string, 协议版本, range:[,]}-->
  <clearAllCard>
    <!--req, bool, 清除所有刷卡记录-->true
  </clearAllCard>
  <CardList size="32">
    <!--opt, array, 卡号列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <cardNo>
      <!--opt, string, 卡号, range:[,]-->1
    </cardNo>
  </CardList>
  <EmployeeNoList size="32">
    <!--opt, array, 工号列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <employeeNo>
      <!--opt, string, 工号（人员ID）, range:[,]-->1
    </employeeNo>
  </EmployeeNoList>
</ClearCardRecord>

113.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

114. 获取加入跨主机反潜回参数能力

114.1 命令

GET /ISAPI/AccessControl/ServerDevice/capabilities

114.2 输入参数

无

114.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ServerDevice xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回配置, attr:version{req, string, 协议版本, range:[,]}-->
  <ipAddr min="1" max="10">
    <!--ro, req, object, IP地址, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->127.127.0.1
  </ipAddr>
  <port min="1" max="10">
    <!--ro, req, object, 端口, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
  </port>
  <registrationCode min="4" max="8">
    <!--ro, opt, string, 注册码, range:[4,8], attr:min{req, int, 最小值, range:[4,8], step:, unit:, unitType:},max{req, int, 最大值, range:[4,8], step:, unit:, unitType:}-->test
  </registrationCode>
</ServerDevice>

115. 获取加入跨主机反潜回

115.1 命令

GET /ISAPI/AccessControl/ServerDevice

115.2 输入参数

无

115.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ServerDevice xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跨主机反潜回配置, attr:version{req, string, 协议版本, range:[,]}-->
  <ipAddr>
    <!--ro, req, string, IP地址, range:[,]-->test
  </ipAddr>
  <port>
    <!--ro, req, int, 端口, range:[,], step:, unit:, unitType:-->3000
  </port>
  <registrationCode>
    <!--ro, opt, string, 注册码, range:[4,8], desc:用于设备间校验，字符类型：数字+字母，敏感信息加密-->test
  </registrationCode>
</ServerDevice>

116. 配置加入跨主机反潜回

116.1 命令

PUT /ISAPI/AccessControl/ServerDevice

116.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ServerDevice xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 跨主机反潜回配置, attr:version{req, string, 协议版本, range:[,]}-->
  <ipAddr>
    <!--req, string, IP地址, range:[,]-->127.127.0.1
  </ipAddr>
  <port>
    <!--req, int, 端口, range:[,], step:, unit:, unitType:-->30000
  </port>
  <registrationCode>
    <!--opt, string, 注册码, range:[4,8], desc:用于设备间校验，字符类型：数字+字母， 敏感信息加密-->test
  </registrationCode>
</ServerDevice>

116.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

117. 获取读卡器跨主机反潜回配置能力

117.1 命令

GET /ISAPI/AccessControl/ReaderAcrossHost/capabilities

117.2 输入参数

无

117.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ReaderAcrossHost xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 读卡器跨主机反潜回配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <AcrossHostList size="8">
    <!--ro, req, array, 读卡器跨主机反潜回配置列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <AcrossHostAction>
      <!--ro, req, object, 读卡器跨主机反潜回配置-->
      <readerNo min="1" max="8">
        <!--ro, req, int, 读卡器编号, range:[1,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </readerNo>
      <submarineBackEnabled opt="true,false">
        <!--ro, req, bool, 读卡器是否加入跨主机反潜回, attr:opt{req, string, 取值范围, range:[,]}-->true
      </submarineBackEnabled>
    </AcrossHostAction>
  </AcrossHostList>
</ReaderAcrossHost>

118. 获取读卡器跨主机反潜回配置

118.1 命令

GET /ISAPI/AccessControl/ReaderAcrossHost

118.2 输入参数

无

118.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ReaderAcrossHost xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 读卡器跨主机反潜回列表, attr:version{req, string, 协议版本, range:[,]}-->
  <AcrossHostList size="8">
    <!--ro, req, array, 读卡器跨主机反潜回, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <AcrossHostAction>
      <!--ro, req, object, 读卡器跨主机反潜回-->
      <readerNo>
        <!--ro, req, int, 读卡器编号, range:[1,8], step:, unit:, unitType:无-->1
      </readerNo>
      <submarineBackEnabled>
        <!--ro, req, bool, 读卡器是否加入跨主机反潜回-->true
      </submarineBackEnabled>
    </AcrossHostAction>
  </AcrossHostList>
</ReaderAcrossHost>

119. 配置读卡器跨主机反潜回

119.1 命令

PUT /ISAPI/AccessControl/ReaderAcrossHost

119.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ReaderAcrossHost xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 读卡器跨主机反潜回列表, attr:version{req, string, 协议版本, range:[,]}-->
  <AcrossHostList size="8">
    <!--req, array, 读卡器跨主机反潜回, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <AcrossHostAction>
      <!--req, object, 读卡器跨主机反潜回-->
      <readerNo>
        <!--req, int, 读卡器编号, range:[1,8], step:, unit:, unitType:-->1
      </readerNo>
      <submarineBackEnabled>
        <!--req, bool, 读卡器是否加入跨主机反潜回-->true
      </submarineBackEnabled>
    </AcrossHostAction>
  </AcrossHostList>
</ReaderAcrossHost>

119.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

120. 获取设备内反潜回记录清除能力

120.1 命令

GET /ISAPI/AccessControl/ClearAntiSneak/capabilities?format=json

120.2 输入参数

无

120.3 输出参数

{
    "ClearAntiSneak": {
    /*ro, req, object, 反潜回记录清除能力*/
        "EmployeeNoList": {
        /*ro, opt, object, 人员ID列表*/
            "maxSize":  32,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "employeeNo": {
            /*ro, opt, object, 工号（人员ID）*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  32
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "clearMode": {
        /*ro, opt, object, 清除模式*/
            "@opt": ["employeeNo", "all"]
            /*ro, opt, array, 枚举, subType:string, range:[,]*/
        }
    }
}

121. 配置设备内反潜回记录清除

121.1 命令

PUT /ISAPI/AccessControl/ClearAntiSneak?format=json

121.2 输入参数

{
    "ClearAntiSneak": {
    /*ro, req, object, 反潜回记录清除, desc:门禁V2.1设备的设备内反潜回记录清除只支持按人员ID清除，不支持清除全部的操作。如果EmployeeNoList内不填写，那么设备返回失败*/
        "EmployeeNoList": [
        /*opt, array, 人员ID列表, subType:object, range:[,], dep:and,{$.ClearAntiSneak.clearMode,eq,employeeNo}, desc:不支持数组为空*/
            {
                "employeeNo":  "test"
                /*opt, string, 工号（人员ID）, range:[,]*/
            }
        ],
        "clearMode":  "employeeNo"
        /*opt, enum, 清除模式, subType:string, [employeeNo#按工号列表EmployeeNoList清除（默认）,all#清除所有人],
        desc:当为all时，无论EmployeeNoList存在与否，均认为清除所有人
        当为employeeNo时，EmployeeNoList必须存在，且不能为空*/
    }
}

121.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, URI, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}


可视对讲

1. 获取可视对讲设备特有能力集

1.1 命令

GET /ISAPI/VideoIntercom/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoIntercomCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 可视对讲设备特有能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportSceneManage>
    <!--ro, opt, bool, 场景管理（对应场景切换配置接口）-->true
  </isSupportSceneManage>
  <isSupportDeviceId>
    <!--ro, opt, bool, 是否支持设备ID-->true
  </isSupportDeviceId>
  <isSupportOperationTime>
    <!--ro, opt, bool, 是否支持操作时间-->true
  </isSupportOperationTime>
  <isSupportCallerInfo>
    <!--ro, opt, bool, 是否支持通话人员信息管理-->true
  </isSupportCallerInfo>
  <isSupportCallSignal>
    <!--ro, opt, bool, 是否支持通话信令交互, desc:对应/ISAPI/VideoIntercom/callSignal?format=json-->true
  </isSupportCallSignal>
  <isSupportCallStatus>
    <!--ro, opt, bool, 是否支持获取通话状态, desc:对应/ISAPI/VideoIntercom/callStatus?format=json-->true
  </isSupportCallStatus>
  <isSupportCallElevator>
    <!--ro, req, bool, 是否支持呼叫电梯-->true
  </isSupportCallElevator>
  <isSupportRelatedDeviceAdress>
    <!--ro, opt, bool, 是否支持关联设备地址-->true
  </isSupportRelatedDeviceAdress>
  <isSupportCardSectorCheck>
    <!--ro, req, bool, 卡扇区加密校验-->true
  </isSupportCardSectorCheck>
  <isSupportKeyCfg>
    <!--ro, opt, bool, 按键呼叫住户配置-->true
  </isSupportKeyCfg>
  <isSupportWorkModeCfg>
    <!--ro, opt, bool, 是否支持工作状态配置-->true
  </isSupportWorkModeCfg>
  <isSupportSystemSwitchCfg>
    <!--ro, opt, bool, 可视对讲系统切换配置-->true
  </isSupportSystemSwitchCfg>
  <isSupportPrivilegePasswordStatus>
    <!--ro, req, bool, 设备权限密码状态获取-->true
  </isSupportPrivilegePasswordStatus>
  <isSupportSmartHomeRoomsCfg>
    <!--ro, opt, bool, 是否支持房间信息配置-->true
  </isSupportSmartHomeRoomsCfg>
  <isSupportSmartHomeDevices>
    <!--ro, req, bool, 是否支持智能家居智能设备管理-->true
  </isSupportSmartHomeDevices>
  <isSupportScenesCfg>
    <!--ro, opt, bool, 是否支持场景配置（增删改查）-->true
  </isSupportScenesCfg>
  <isSupportNameModify>
    <!--ro, opt, bool, 是否支持防区名称修改（app使用）-->true
  </isSupportNameModify>
  <isSupportElevatorControlCfg>
    <!--ro, opt, bool, 是否支持电梯控制-->true
  </isSupportElevatorControlCfg>
  <isSupportPrivilegePassword>
    <!--ro, opt, bool, 是否支持特权密码-->true
  </isSupportPrivilegePassword>
  <isSupportSubModules>
    <!--ro, opt, bool, 是否支持子模块管理-->true
  </isSupportSubModules>
  <isSupportIssueCards>
    <!--ro, opt, bool, 是否支持母卡发卡功能配置-->true
  </isSupportIssueCards>
  <isSupportSendCardCfg>
    <!--ro, opt, bool, 门口机是否支持发卡功能配置-->true
  </isSupportSendCardCfg>
  <isSupportRingBackTone>
    <!--ro, opt, bool, 是否支持回铃音导入-->true
  </isSupportRingBackTone>
  <isSupportCallPriority>
    <!--ro, opt, bool, 是否支持呼叫权限-->true
  </isSupportCallPriority>
  <isSupportPhoneCfg>
    <!--ro, opt, bool, 是否支持住户电话配置-->true
  </isSupportPhoneCfg>
  <isSupportWatchPoint>
    <!--ro, opt, bool, 是否支持观察点, desc:/ISAPI/VideoIntercom/WatchPoint-->true
  </isSupportWatchPoint>
  <isSupportVoiceConfiguration>
    <!--ro, opt, bool, 是否支持语音识别和播报使能配置-->true
  </isSupportVoiceConfiguration>
  <isSupportSubModulesCfg>
    <!--ro, opt, bool, 是否支持子模块参数配置调节-->true
  </isSupportSubModulesCfg>
  <isSupportDisplayRegion>
    <!--ro, opt, bool, 是否支持显示区域配置-->true
  </isSupportDisplayRegion>
  <isSupportUpdateData>
    <!--ro, opt, bool, 是否支持升级文件导入-->true
  </isSupportUpdateData>
  <isSupportUpdateStrategy>
    <!--ro, opt, bool, 是否支持升级配置-->true
  </isSupportUpdateStrategy>
  <isSupportMetaInfo>
    <!--ro, opt, bool, 是否支持获取升级文件信息-->true
  </isSupportMetaInfo>
  <isSupportStreamAbility>
    <!--ro, opt, bool, 是否支持IPC管理-->true
  </isSupportStreamAbility>
  <platform opt="R0,R1">
    <!--ro, opt, enum, 平台类型, subType:string, [R0#R0,R1#R1], attr:opt{req, string, 取值范围, range:[,]}, desc:根据实际支持返回-->R0
  </platform>
  <isSupportSecurityMode>
    <!--ro, opt, bool, 是否支持安全协议版本切换-->true
  </isSupportSecurityMode>
  <isSupportDeviceCommunication>
    <!--ro, opt, bool, 是否支持设备组网通信参数配置-->true
  </isSupportDeviceCommunication>
  <isSupportAutoSync>
    <!--ro, opt, bool, 是否支持自动同步参数配置-->true
  </isSupportAutoSync>
  <isSupportDifferentKeystrokes>
    <!--ro, opt, bool, 是否支持区分长短按-->true
  </isSupportDifferentKeystrokes>
  <isSupportKeyCfgWeekPlan>
    <!--ro, opt, bool, 按键呼叫周计划参数配置-->true
  </isSupportKeyCfgWeekPlan>
  <isSupportKeyCfgHolidayPlan>
    <!--ro, opt, bool, 按键呼叫假日计划参数配置-->true
  </isSupportKeyCfgHolidayPlan>
  <isSupportKeyCfgHolidayGroup>
    <!--ro, opt, bool, 按键呼叫假日组参数配置-->true
  </isSupportKeyCfgHolidayGroup>
  <isSupportKeyCfgPlanTemplate>
    <!--ro, opt, bool, 按键呼叫计划模板参数配置-->true
  </isSupportKeyCfgPlanTemplate>
  <isSupportCallCfg>
    <!--ro, opt, bool, 设备呼叫参数配置-->true
  </isSupportCallCfg>
  <isSupportAccessParams>
    <!--ro, opt, bool, app接入参数-->true
  </isSupportAccessParams>
  <isSupportTransmitRequestEventConfirm>
    <!--ro, opt, bool, 透传请求响应-->true
  </isSupportTransmitRequestEventConfirm>
  <isSupportIncomingCallLinkage>
    <!--ro, opt, bool, 是否支持来电联动配置-->true
  </isSupportIncomingCallLinkage>
  <isSupportAdbControl>
    <!--ro, opt, bool, 是否支持ADB远程启停-->true
  </isSupportAdbControl>
  <isSupportProtocolFileManage>
    <!--ro, req, bool, 是否支持协议须知文件管理, desc:/ISAPI/VideoIntercom/protocolFileManage/capabilities?format=json-->true
  </isSupportProtocolFileManage>
  <isSupportStreamSwitch>
    <!--ro, req, bool, 是否支持码流切换, desc:/ISAPI/VideoIntercom/streamSwitch/capabilities?format=json-->true
  </isSupportStreamSwitch>
  <isSupportKeywordAudioRecognition>
    <!--ro, req, bool, 是否支持关键字语音识别, desc:/ISAPI/VideoIntercom/keywordAudioRecognition/capabilities?format=json-->true
  </isSupportKeywordAudioRecognition>
  <isSupportPositionInfo>
    <!--ro, req, bool, 是否支持设备位置信息配置, desc:/ISAPI/VideoIntercom/positionInfo?format=json-->true
  </isSupportPositionInfo>
  <isSupportElevatorControlDisplay>
    <!--ro, req, bool, 是否支持梯控显示配置, desc:/ISAPI/VideoIntercom/elevatorControlDisplay?format=json-->true
  </isSupportElevatorControlDisplay>
  <isSupportBroadcastRealtime>
    <!--ro, opt, bool, 是否支持音频实时广播-->true
  </isSupportBroadcastRealtime>
  <isSupportOrganizationNodes>
    <!--ro, opt, bool, 是否组织架构管理-->true
  </isSupportOrganizationNodes>
  <isSupportCallForwarding>
    <!--ro, opt, bool, 是否支持主动呼叫转移-->true
  </isSupportCallForwarding>
  <isSupportAudioPlayStatus>
    <!--ro, opt, bool, 是否支持音频播放状态上报-->true
  </isSupportAudioPlayStatus>
  <isSupportDeviceIdAnalysisRuleCfg>
    <!--ro, opt, bool, 是否支持设备编号解析规则配置（URI /ISAPI/VideoIntercom/AnalysisRuleCfg/capabilities?format=json）-->true
  </isSupportDeviceIdAnalysisRuleCfg>
  <isSupportOperationTimeByChannel>
    <!--ro, opt, bool, 是否支持按通道配置操作时间-->true
  </isSupportOperationTimeByChannel>
  <isSupportCallAuthorization>
    <!--ro, opt, bool, 是否支持来电授权配置, desc:/ISAPI/VideoIntercom/CallAuthorization/capbilities?format=json-->true
  </isSupportCallAuthorization>
  <isSupportRecordControl>
    <!--ro, opt, bool, 是否支持录音/录像控制, desc:/ISAPI/VideoIntercom/recordControl/capabilities?format=json-->true
  </isSupportRecordControl>
  <isSupportTrusteeship>
    <!--ro, opt, bool, 是否支持托管配置, desc:/ISAPI/VideoIntercom/trusteeship/capabilities?format=json-->true
  </isSupportTrusteeship>
  <isSupportAnalogIndoorStation>
    <!--ro, opt, bool, 是否支持模拟室内机管理, desc:/ISAPI/VideoIntercom/analogIndoorStation/capabilities?format=json-->true
  </isSupportAnalogIndoorStation>
  <isSupportImportPartitions>
    <!--ro, opt, bool, 是否支持导入终端列表, desc:(平台给寻呼话筒设备下发在平台上的分区列表)    (/ISAPI/VideoIntercom/ImportTerminals/capabilities?format=json)-->true
  </isSupportImportPartitions>
  <isSupportBroadcastPlan>
    <!--ro, opt, bool, 是否支持全量计划广播下发, desc:对应URI:/ISAPI/VideoIntercom/broadcast/plan/capabilities?format=json-->true
  </isSupportBroadcastPlan>
  <isSupportBroadcastPlanSearch>
    <!--ro, opt, bool, 是否支持全量计划广播查询, desc:对应URI: /ISAPI/VideoIntercom/broadcast/planSearch?format=json-->true
  </isSupportBroadcastPlanSearch>
  <isSupportBroadcastPlanPause>
    <!--ro, opt, bool, 是否支持全量计划广播暂停, desc:对应URI:/ISAPI/VideoIntercom/broadcast/plan/pause?format=json-->true
  </isSupportBroadcastPlanPause>
  <isSupportBroadcastPlanResume>
    <!--ro, opt, bool, 是否支持全量计划广播恢复, desc:对应URI:/ISAPI/VideoIntercom/broadcast/plan/resume?format=json-->true
  </isSupportBroadcastPlanResume>
  <isSupportBroadcastPlanTest>
    <!--ro, opt, bool, 是否支持全量计划广播试运行, desc:对应URI:/ISAPI/VideoIntercom/broadcast/plan/test?format=json-->true
  </isSupportBroadcastPlanTest>
  <isSupportBroadcastPlanEx>
    <!--ro, opt, bool, 是否支持增量计划广播下发, desc:对应URI:/ISAPI/VideoIntercom/broadcast/planEx/capabilities?format=json-->true
  </isSupportBroadcastPlanEx>
  <isSupportBroadcastPlanExSearch>
    <!--ro, opt, bool, 是否支持增量计划广播查询, desc:对应URI: /ISAPI/VideoIntercom/broadcast/planExSearch?format=json-->true
  </isSupportBroadcastPlanExSearch>
  <isSupportBroadcastPlanModify>
    <!--ro, opt, bool, 是否支持单个计划广播修改, desc:仅在增量下发时有效-->true
  </isSupportBroadcastPlanModify>
  <isSupportBroadcastPlanDelete>
    <!--ro, opt, bool, 是否支持单个计划广播删除, desc:仅在增量下发时有效-->true
  </isSupportBroadcastPlanDelete>
  <isSupportTrusteeship>
    <!--ro, opt, bool, 是否支持托管配置, desc:对应能力集/ISAPI/VideoIntercom/trusteeship/capabilities?format=json-->true
  </isSupportTrusteeship>
</VideoIntercomCap>

2. 获取远程呼梯能力

2.1 命令

GET /ISAPI/VideoIntercom/callElevator/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CallElevatorCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 远程呼梯能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <floorNumber min="0" max="999">
    <!--ro, opt, int, 呼梯停靠的楼层编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </floorNumber>
  <authorizedFloorList size="10">
    <!--ro, opt, object, 电梯授权可到达的楼层编号列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <number min="0" max="999">
      <!--ro, opt, int, 电梯授权可到达的楼层编号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </number>
  </authorizedFloorList>
</CallElevatorCfg>

3. 配置远程呼梯

3.1 命令

PUT /ISAPI/VideoIntercom/callElevator

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<CallElevatorCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 远程呼梯参数, attr:version{req, string, 协议版本, range:[,]}-->
  <floorNumber>
    <!--opt, int, 呼梯停靠的楼层编号, range:[0,999], step:, unit:, unitType:-->0
  </floorNumber>
  <authorizedFloorList>
    <!--opt, object, 电梯授权可到达的楼层编号列表-->
    <number>
      <!--opt, int, 电梯授权可到达的楼层编号, range:[0,999], step:, unit:, unitType:-->0
    </number>
  </authorizedFloorList>
</CallElevatorCfg>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取回铃音参数能力

4.1 命令

GET /ISAPI/VideoIntercom/ringBackTone/capabilities?format=json

4.2 输入参数

无

4.3 输出参数

{
    "RingBackToneCap": {
    /*ro, opt, object, 回铃音参数*/
        "ringID": {
        /*ro, req, object, 铃音编号, desc:从1开始编号*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "ringName": {
        /*ro, opt, object, 铃音名称*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "ringSize": {
        /*ro, opt, object, 铃音文件大小*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "ringType": {
        /*ro, opt, object, 铃音类型*/
            "@opt": ["wav"]
            /*ro, req, array, 取值范围, subType:string, range:[,]*/
        },
        "isSupportConfigMetaData":  true,
        /*ro, opt, bool, 是否支持配置铃音信息接口*/
        "isSupportImportData":  true,
        /*ro, opt, bool, 是否支持导入铃音文件接口*/
        "isSupportDeleteTheData":  true
        /*ro, opt, bool, 是否支持删除指定铃音文件接口*/
    }
}

5. 获取回铃音参数

5.1 命令

GET /ISAPI/VideoIntercom/ringBackTone/params?format=json

5.2 输入参数

无

5.3 输出参数

{
    "RingParam": [
    /*ro, opt, array, 回铃音参数, subType:object, range:[,]*/
        {
            "enable":  true,
            /*ro, opt, bool, 使能*/
            "ringID":  1,
            /*ro, req, int, 铃音编号, range:[,], step:, unit:, unitType:*/
            "ringName":  "test",
            /*ro, opt, string, 铃音名称, range:[,]*/
            "ringSize":  0,
            /*ro, opt, int, 铃音文件大小, range:[,], step:, unit:, unitType:*/
            "ringType":  "wav"
            /*ro, opt, enum, 铃音类型, subType:string, [wav#wav]*/
        }
    ]
}

6. 配置回铃音参数

6.1 命令

PUT /ISAPI/VideoIntercom/ringBackTone/params?format=json

6.2 输入参数

{
    "RingParam": [
    /*opt, array, 回铃音参数, subType:object, range:[,]*/
        {
            "enable":  true,
            /*opt, bool, 使能*/
            "ringID":  1,
            /*req, int, 铃音编号, range:[,], step:, unit:, unitType:*/
            "ringName":  "test",
            /*opt, string, 铃音名称, range:[,]*/
            "ringSize":  0,
            /*opt, int, 铃音文件大小, range:[,], step:, unit:, unitType:*/
            "ringType":  "wav"
            /*opt, enum, 铃音类型, subType:string, [wav#wav]*/
        }
    ]
}

6.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

7. 删除回铃音文件

7.1 命令

DELETE /ISAPI/VideoIntercom/ringBackTone/<FileID>?format=json

7.2 输入参数

无

7.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

8. 获取场景切换参数能力

8.1 命令

GET /ISAPI/VideoIntercom/scene/nowMode/capabilities?format=json

8.2 输入参数

无

8.3 输出参数

{
    "SceneNowModeCap": {
    /*ro, opt, object, 场景切换参数*/
        "sceneId": {
        /*ro, req, object, 当前场景编号*/
            "@min":  0,
            /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  0
            /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
        }
    }
}

9. 获取场景切换参数

9.1 命令

GET /ISAPI/VideoIntercom/scene/nowMode?format=json

9.2 输入参数

无

9.3 输出参数

{
    "SceneNowMode": {
    /*ro, opt, object, 场景切换参数*/
        "sceneId":  1
        /*ro, req, int, 当前场景编号, range:[,], step:, unit:, unitType:*/
    }
}

10. 配置场景切换参数

10.1 命令

PUT /ISAPI/VideoIntercom/scene/nowMode?format=json

10.2 输入参数

{
    "SceneNowMode": {
    /*opt, object, 场景切换参数*/
        "sceneId":  1
        /*req, int, 当前场景编号, range:[,], step:, unit:, unitType:*/
    }
}

10.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

11. 获取场景防区参数能力

11.1 命令

GET /ISAPI/SecurityCP/BasicParam/sceneZoneCfg/capabilities

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SceneZoneCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 场景防区参数, attr:version{req, string, 协议版本, range:[,]}-->
  <zoneEnable min="1" max="64">
    <!--ro, opt, string, 防区使能, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </zoneEnable>
</SceneZoneCfg>

12. 获取场景防区参数

12.1 命令

GET /ISAPI/SecurityCP/BasicParam/sceneZoneCfg?sceneMode=<sceneMode>

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SceneZoneCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 场景防区参数, attr:version{req, string, 协议版本, range:[,]}-->
  <zoneEnable>
    <!--ro, opt, string, 防区使能, range:[1,64], desc:字符串里面第n个数字表示，第n个防区号，0-不启用，1-启用-->0101
  </zoneEnable>
</SceneZoneCfg>

13. 配置场景防区参数

13.1 命令

PUT /ISAPI/SecurityCP/BasicParam/sceneZoneCfg?sceneMode=<sceneMode>

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SceneZoneCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 场景防区参数, attr:version{req, string, 协议版本, range:[,]}-->
  <zoneEnable>
    <!--opt, string, 防区使能, range:[1,64], desc:字符串里面第n个数字表示，第n个防区号，0-不启用，1-启用-->0101
  </zoneEnable>
</SceneZoneCfg>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取智能锁信息列表能力

14.1 命令

GET /ISAPI/VideoIntercom/SmartLock/lockParam/capabilities

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LockParamList xmlns="http://www.isapi.org/ver20/XMLSchema" size="2" version="2.0">
  <!--ro, opt, object, 智能锁信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:},version{req, string, 协议版本, range:[,]}-->
  <LockParam>
    <!--ro, opt, object, 智能锁参数-->
    <lockID min="0" max="1">
      <!--ro, req, int, 智能锁ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </lockID>
    <lockName min="1" max="32">
      <!--ro, req, string, 智能锁名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </lockName>
  </LockParam>
</LockParamList>

15. 获取智能锁信息列表

15.1 命令

GET /ISAPI/VideoIntercom/SmartLock/lockParam

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LockParamList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 智能锁信息列表, attr:version{req, string, 协议版本, range:[,]}-->
  <LockParam>
    <!--ro, opt, object, 智能锁参数-->
    <lockID>
      <!--ro, req, int, 智能锁ID, range:[0,1], step:1, unit:, unitType:-->0
    </lockID>
    <lockName>
      <!--ro, req, string, 智能锁名称, range:[1,32]-->test
    </lockName>
  </LockParam>
</LockParamList>

16. 获取APPKey配置能力

16.1 命令

GET /ISAPI/VideoIntercom/AppKeyConfiguration/capabilities

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AppKeyConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, APPKey配置, attr:version{req, string, 协议版本, range:[,]}-->
  <appKeyCode min="1" max="64">
    <!--ro, opt, string, APPKey信息, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </appKeyCode>
</AppKeyConfiguration>

17. 配置APPKey

17.1 命令

PUT /ISAPI/VideoIntercom/AppKeyConfiguration

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AppKeyConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, APPKey配置, attr:version{req, string, 协议版本, range:[,]}-->
  <appKeyCode>
    <!--opt, string, APPKey信息, range:[1,64]-->test
  </appKeyCode>
</AppKeyConfiguration>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取门锁状态

18.1 命令

GET /ISAPI/VideoIntercom/WorkStatus

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WorkStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 状态信息, attr:version{req, string, 协议版本, range:[,]}-->
  <lockStatusList>
    <!--ro, opt, object, 门锁状态列表, desc:对于门口机，本机电锁ID是0一直在线的，可以不返回状态，外接门禁安全模块上的锁需要返回状态，目前只有两把锁，能力集体现-->
    <node>
      <!--ro, opt, object, 节点-->
      <lockID>
        <!--ro, req, int, 锁ID, range:[0,1], step:1, unit:, unitType:-->0
      </lockID>
      <lockStatus>
        <!--ro, req, enum, 锁状态, subType:string, [online#在线,offline#离线]-->online
      </lockStatus>
    </node>
  </lockStatusList>
</WorkStatus>

19. 获取发卡功能配置能力

19.1 命令

GET /ISAPI/VideoIntercom/SendCardCfg/capabilities

19.2 输入参数

无

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SendCardCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 发卡功能配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 发卡功能使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
</SendCardCfg>

20. 获取发卡功能参数

20.1 命令

GET /ISAPI/VideoIntercom/SendCardCfg

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SendCardCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 发卡功能参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 发卡功能使能-->true
  </enabled>
</SendCardCfg>

21. 配置发卡功能参数

21.1 命令

PUT /ISAPI/VideoIntercom/SendCardCfg

21.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SendCardCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 发卡功能参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 发卡功能使能-->true
  </enabled>
</SendCardCfg>

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

22. 扇区加密配置能力

22.1 命令

GET /ISAPI/AccessControl/Card/sectorCheck/capabilities

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SectorCheck xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 扇区加密配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 是否启用-->true
  </enabled>
</SectorCheck>

23. 获取扇区加密配置

23.1 命令

GET /ISAPI/AccessControl/Card/sectorCheck

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SectorCheck xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 扇区加密配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 是否启用-->true
  </enabled>
</SectorCheck>

24. 设置扇区加密配置

24.1 命令

PUT /ISAPI/AccessControl/Card/sectorCheck

24.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SectorCheck xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 设置扇区加密配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 是否启用-->true
  </enabled>
</SectorCheck>

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 状态, attr:version{req, string, 协议版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,], desc:请求的URL-->test
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->1
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态描述, subType:string, [OK#成功,Device Busy#设备繁忙,Device Error#设备出错,Invalid Operation#非法操作,Invalid XML Format#非法XML,Invalid XML Content#非法XML内容,Reboot#重启], desc:OK,Device Busy,Device Error,Invalid Operation,Invalid XML Format,Invalid XML Content,Reboot-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 子状态码, range:[,], desc:详细错误码的英文描述，可描述的很详细-->test
  </subStatusCode>
</ResponseStatus>

25. 获取布防参数能力

25.1 命令

GET /ISAPI/SecurityCP/AlarmControlByPhone/capabilities

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AlarmControlByPhoneCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防参数, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType opt="setupAlarm,closeAlarm">
    <!--ro, req, enum, 防区控制命令, subType:string, [setupAlarm#布防,closeAlarm#撤防], attr:opt{req, string, 取值范围, range:[,]}-->setupAlarm
  </commandType>
</AlarmControlByPhoneCfg>

26. 获取布防参数

26.1 命令

GET /ISAPI/SecurityCP/AlarmControlByPhone

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AlarmControlByPhoneCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防参数, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType>
    <!--ro, req, enum, 防区控制命令, subType:string, [setupAlarm#布防,closeAlarm#撤防]-->setupAlarm
  </commandType>
</AlarmControlByPhoneCfg>

27. 配置布防参数

27.1 命令

PUT /ISAPI/SecurityCP/AlarmControlByPhone

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AlarmControlByPhoneCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 布防参数, attr:version{req, string, 协议版本, range:[,]}-->
  <commandType>
    <!--req, enum, 防区控制命令, subType:string, [setupAlarm#布防,closeAlarm#撤防]-->setupAlarm
  </commandType>
</AlarmControlByPhoneCfg>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 获取对讲协议切换参数能力

28.1 命令

GET /ISAPI/VideoIntercom/IntercomProtocolType/capabilities

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntercomProtocolType xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 对讲协议切换参数, attr:version{req, string, 协议版本, range:[,]}-->
  <protocolType opt="Private, StandardSIP">
    <!--ro, req, enum, 协议类型, subType:string, [Private#私有对讲协议,StandardSIP#标准SIP协议], attr:opt{req, string, 取值范围, range:[,]}-->Private
  </protocolType>
</IntercomProtocolType>

29. 获取对讲协议切换参数

29.1 命令

GET /ISAPI/VideoIntercom/IntercomProtocolType

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntercomProtocolType xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 对讲协议切换参数, attr:version{req, string, 协议版本, range:[,]}-->
  <protocolType>
    <!--ro, req, enum, 协议类型, subType:string, [Private#私有对讲协议,StandardSIP#标准SIP协议]-->Private
  </protocolType>
</IntercomProtocolType>

30. 配置对讲协议切换参数

30.1 命令

PUT /ISAPI/VideoIntercom/IntercomProtocolType

30.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IntercomProtocolType xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 对讲协议切换参数, attr:version{req, string, 协议版本, range:[,]}-->
  <protocolType>
    <!--req, enum, 协议类型, subType:string, [Private#私有对讲协议,StandardSIP#标准SIP协议]-->Private
  </protocolType>
</IntercomProtocolType>

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


出入口控制

1. 获取停车场服务能力

1.1 命令

GET /ISAPI/Parking/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 停车场服务能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportTME>
    <!--ro, opt, bool, 是否支持TME节点-->true
  </isSupportTME>
  <isSupportLampCtrl>
    <!--ro, opt, bool, 支持车位灯参数配置和控制-->true
  </isSupportLampCtrl>
  <isSupportparkingStatus>
    <!--ro, opt, bool, 支持车位状态获取-->true
  </isSupportparkingStatus>
  <isSupportPicDevision>
    <!--ro, opt, bool, 是否支持车位图片分割-->true
  </isSupportPicDevision>
  <isSupportAlterCtrlLampCap>
    <!--ro, opt, bool, 是否支持交替控灯-->true
  </isSupportAlterCtrlLampCap>
  <isSupportParkingSpace>
    <!--ro, opt, bool, 是否支持停车区域配置-->true
  </isSupportParkingSpace>
  <isSupportVideoParkingPole>
    <!--ro, opt, bool, 是否支持视频桩-->true
  </isSupportVideoParkingPole>
  <isSupportBollard>
    <!--ro, opt, bool, 是否支持升降柱-->true
  </isSupportBollard>
  <isSupportLEDConfigurationsMultiScene>
    <!--ro, opt, bool, 是否支持LED多场景显示配置-->true
  </isSupportLEDConfigurationsMultiScene>
  <isSupportVoiceCombinateBroadcast>
    <!--ro, opt, bool, 是否支持语音播报组合配置-->true
  </isSupportVoiceCombinateBroadcast>
  <isSupportLCD>
    <!--ro, opt, bool, 是否支持LCD参数配置-->true
  </isSupportLCD>
  <isSupportPackingSpaceRecognition>
    <!--ro, opt, bool, 是否支持车位检测, desc:对应/ISAPI/Parking/channels/<channelID>/packingSpaceRecognition?format=json-->true
  </isSupportPackingSpaceRecognition>
  <isSupportPackingSpaceIndicatorLamp>
    <!--ro, opt, bool, 是否支持车位指示灯参数配置, desc:对应 /ISAPI/Parking/parkingSpace/indicatorLamp/capabilities?format=json是否支持-->true
  </isSupportPackingSpaceIndicatorLamp>
  <isSupportManualPackingLock>
    <!--ro, opt, bool, 是否支持车位锁手动管理参数配置, desc:对应/ISAPI/Parking/channels/<channelID>/packingSpaceRecognition/parkingLock/capabilities?format=json是否支持-->true
  </isSupportManualPackingLock>
  <isSupportAutoPackingLock>
    <!--ro, opt, bool, 是否支持车位锁自动管理参数配置, desc:对应/ISAPI/Parking/channels/<channelID>/packingSpaceRecognition/autoParkingLock/capabilities?format=json是否支持-->true
  </isSupportAutoPackingLock>
  <isSupportTempParking>
    <!--ro, opt, bool, 是否支持绿色泊位参数配置, desc:对应/ISAPI/Parking/channels/<channelID>/tempParking/capabilities?format=json是否支持-->true
  </isSupportTempParking>
  <isSupportTempParkingScreen>
    <!--ro, opt, bool, 是否支持绿色泊位屏接入参数配置, desc:对应/ISAPI/Parking/channels/<channelID>/tempParkingScreen/capabilities?format=json是否支持-->true
  </isSupportTempParkingScreen>
  <isSupportTempParkingScreenDisplay>
    <!--ro, opt, bool, 是否支持绿色泊位屏显示参数配置, desc:对应/ISAPI/Parking/channels/<channelID>/tempParkingScreen/displayParam/capabilities?format=json是否支持-->true
  </isSupportTempParkingScreenDisplay>
  <isSupportParkingInfo>
    <!--ro, opt, bool, 是否支持车位数据管理, desc:对应/ISAPI/Parking/packingSpaceRecognition/parkingInfo/capabilities?format=json是否支持-->true
  </isSupportParkingInfo>
  <isSupportTempParkingImageMerge>
    <!--ro, opt, bool, 是否支持绿色泊位图片合成参数配置, desc:对应/ISAPI/Parking/channels/<channelID>/tempParking/imageMerge/capabilities?format=json是否支持-->true
  </isSupportTempParkingImageMerge>
</ParkingCap>

2. 获取票箱设备总能力

2.1 命令

GET /ISAPI/Parking/TME/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMECap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱设备总能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportTMEChargeRule>
    <!--ro, opt, bool, 是否支持脱机收费规则配置, desc:对应/ISAPI/Parking/channels/<ID>/TMEChargeRule/capabilities-->true
  </isSupportTMEChargeRule>
  <isSupportPaperCharge>
    <!--ro, opt, bool, 是否支持充电缴费信息配置, desc:对应/ISAPI/Parking/channels/<ID>/paperChargeInfo/capabilities-->true
  </isSupportPaperCharge>
  <isSupportParkingSpace>
    <!--ro, opt, bool, 是否支持车位信息配置, desc:对应/ISAPI/Parking/channels/<ID>/parkingSpaceInfo/capabilities-->true
  </isSupportParkingSpace>
  <isSupportTMEOffline>
    <!--ro, opt, bool, 是否支持票箱设备脱机模式下参数配置, desc:对应/ISAPI/Parking/channels/<ID>/TMEOfflineConfiguration/capabilities-->true
  </isSupportTMEOffline>
  <isSupportTMEMultiCtrl>
    <!--ro, opt, bool, 是否支持票箱从属设备多角度参数配置, desc:对应/ISAPI/Parking/channels/<ID>/TMEMultiCtrlConfiguration/capabilities-->true
  </isSupportTMEMultiCtrl>
  <isSupportTMECFG>
    <!--ro, opt, bool, 是否支持票箱参数配置, desc:对应/ISAPI/Parking/channels/<ID>/TMEConfiguration/capabilities-->true
  </isSupportTMECFG>
  <isSupportChargeAmount>
    <!--ro, opt, bool, 是否支持充电账户配置, desc:对应/ISAPI/Parking/channels/<ID>/chargeAmount/capabilities-->true
  </isSupportChargeAmount>
  <isSupportVehicleCtrl>
    <!--ro, opt, bool, 是否支持车辆布防配置, desc:对应/ISAPI/Parking/channels/<ID>/vehicleControl/capabilities-->true
  </isSupportVehicleCtrl>
  <isSupportBarrierGate>
    <!--ro, opt, bool, 是否支持道闸控制, desc:对应/ISAPI/Parking/channels/<ID>/barrierGate/capabilities-->true
  </isSupportBarrierGate>
  <isSupportTemporaryParkingCard>
    <!--ro, opt, bool, 是否支持临时卡-->true
  </isSupportTemporaryParkingCard>
  <isSupportLEDConfiguration>
    <!--ro, opt, bool, 是否支持LED屏幕显示参数配置, desc:对应/ISAPI/Parking/channels/<ID>/LEDConfiguration/capabilities-->true
  </isSupportLEDConfiguration>
  <isSupportVoiceBroadcastInfo>
    <!--ro, opt, bool, 是否支持语音播报控制, desc:对应/ISAPI/Parking/channels/<ID>/voiceBroadcastInfo/capabilities-->true
  </isSupportVoiceBroadcastInfo>
  <isSupportPaperPrintFormatInfo>
    <!--ro, opt, bool, 是否支持纸票打印格式内容配置, desc:对应/ISAPI/Parking/channels/<ID>/paperPrintFormatInfo/capabilities-->true
  </isSupportPaperPrintFormatInfo>
  <isSupportLockGateConfig>
    <!--ro, opt, bool, 是否支持智能锁闸配置, desc:对应/ISAPI/Parking/channels/<ID>/lockGateConfiguration/capabilities-->true
  </isSupportLockGateConfig>
  <isSupportTMEVoiceConfiguration>
    <!--ro, opt, bool, 是否支持语音参数配置, desc:对应/ISAPI/Parking/channels/<ID>/TMEVoiceConfiguration-->true
  </isSupportTMEVoiceConfiguration>
  <isSupportVoiceFileUpload>
    <!--ro, opt, bool, 是否支持导入语音文件, desc:对应/ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>-->true
  </isSupportVoiceFileUpload>
  <isSupportVoiceFileList>
    <!--ro, opt, bool, 是否支持获取音频文件列表, desc:对应/ISAPI/Parking/channels/<ID>/VoiceFileList-->true
  </isSupportVoiceFileList>
</TMECap>

3. 获取同步状态

3.1 命令

GET /ISAPI/Parking/channels/<channelID>/SyncStateInfo

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SyncStateInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 同步状态, attr:version{req, string, 协议版本, range:[,]}-->
  <syncState>
    <!--ro, req, enum, 同步状态, subType:string, [正在进行#正在进行,同步完成#同步完成,同步失败#同步失败]-->正在进行
  </syncState>
  <syncStartTime>
    <!--ro, req, datetime, 同步开始时间-->1970-01-01T00:00:00+08:00
  </syncStartTime>
  <syncEndTime>
    <!--ro, req, datetime, 同步结束时间-->1970-01-01T00:00:00+08:00
  </syncEndTime>
  <syncCenter>
    <!--ro, req, string, 同步中心, range:[,]-->192.168.1.100
  </syncCenter>
  <syncDetail>
    <!--ro, req, string, 同步详情, range:[,]-->test
  </syncDetail>
</SyncStateInfo>

4. 获取导出车卡信息

4.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMECardChargeData

4.2 输入参数

无

4.3 输出参数

无

5. 获取出入口车卡信息

5.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMECardVehicle

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMECardVehicle xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 出入口车卡信息, attr:version{req, string, 协议版本, range:[,]}-->
  <ParkingCardVehicleList>
    <!--ro, opt, array, 停车车卡信息列表, subType:object, range:[,]-->
    <ParkingCardVehicle>
      <!--ro, opt, object, 停车车卡信息-->
      <CardList>
        <!--ro, opt, array, 卡信息列表, subType:object, range:[,]-->
        <Card>
          <!--ro, opt, object, 卡信息-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <cardNo>
            <!--ro, req, string, 卡号, range:[,]-->test
          </cardNo>
          <ruleID>
            <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
          </ruleID>
          <type opt="fixed,temporary">
            <!--ro, req, enum, 卡片类型, subType:string, [fixed#固定卡,temporary#临时卡], attr:opt{req, string, 取值范围, range:[,]}-->fixed
          </type>
          <status opt="normal,reportLoss,cancel">
            <!--ro, req, enum, 卡片状态, subType:string, [normal#正常,reportLoss#挂失,cancel#注销], attr:opt{req, string, 取值范围, range:[,]}-->normal
          </status>
          <availablePeriodStartTime>
            <!--ro, req, date, 有效开始时间-->1970-01-01+08:00
          </availablePeriodStartTime>
          <availablePeriodEndTime>
            <!--ro, req, date, 有效结束时间-->1970-01-01+08:00
          </availablePeriodEndTime>
        </Card>
      </CardList>
      <VehicleInfoList>
        <!--ro, opt, array, 车信息列表, subType:object, range:[,]-->
        <VehicleInfo>
          <!--ro, opt, object, 车信息-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <relatedCardNo>
            <!--ro, opt, string, 关联卡号, range:[,], desc:可以为空，在一车多卡的情况,可以复数填写,逗号隔开-->test
          </relatedCardNo>
          <licensePlate>
            <!--ro, req, string, 车牌号码, range:[,]-->test
          </licensePlate>
          <vehicleType opt="other,small,large,notype">
            <!--ro, req, enum, 车辆类型, subType:string, [other#其他,small#小型车,large#大型车,notype#未知], attr:opt{req, string, 取值范围, range:[,]}-->other
          </vehicleType>
          <plateColor opt="blue,yellow,white,black,other">
            <!--ro, req, enum, 车牌颜色, subType:string, [blue#蓝,yellow#黄,white#白,black#黑,other#其他], attr:opt{req, string, 取值范围, range:[,]}-->blue
          </plateColor>
        </VehicleInfo>
      </VehicleInfoList>
    </ParkingCardVehicle>
  </ParkingCardVehicleList>
</TMECardVehicle>

6. 配置出入口车卡信息

6.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMECardVehicle

6.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMECardVehicle xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 出入口车卡信息, attr:version{req, string, 协议版本, range:[,]}-->
  <ParkingCardVehicleList>
    <!--opt, array, 停车车卡信息列表, subType:object, range:[,]-->
    <ParkingCardVehicle>
      <!--opt, object, 停车车卡信息-->
      <CardList>
        <!--opt, array, 卡信息列表, subType:object, range:[,]-->
        <Card>
          <!--opt, object, 卡信息-->
          <id>
            <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <cardNo>
            <!--req, string, 卡号, range:[,]-->test
          </cardNo>
          <ruleID>
            <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
          </ruleID>
          <type opt="fixed,temporary">
            <!--req, enum, 卡片类型, subType:string, [fixed#固定卡,temporary#临时卡], attr:opt{req, string, 取值范围, range:[,]}-->fixed
          </type>
          <status opt="normal,reportLoss,cancel">
            <!--req, enum, 卡片状态, subType:string, [normal#正常,reportLoss#挂失,cancel#注销], attr:opt{req, string, 取值范围, range:[,]}-->normal
          </status>
          <availablePeriodStartTime>
            <!--req, date, 有效开始时间-->1970-01-01+08:00
          </availablePeriodStartTime>
          <availablePeriodEndTime>
            <!--req, date, 有效结束时间-->1970-01-01+08:00
          </availablePeriodEndTime>
        </Card>
      </CardList>
      <VehicleInfoList>
        <!--opt, array, 车信息列表, subType:object, range:[,]-->
        <VehicleInfo>
          <!--opt, object, 车信息-->
          <id>
            <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <relatedCardNo>
            <!--opt, string, 关联卡号, range:[,], desc:可以为空，在一车多卡的情况,可以复数填写,逗号隔开-->test
          </relatedCardNo>
          <licensePlate>
            <!--req, string, 车牌号码, range:[,]-->test
          </licensePlate>
          <vehicleType opt="other,small,large,notype">
            <!--req, enum, 车辆类型, subType:string, [other#其他,small#小型车,large#大型车,notype#未知], attr:opt{req, string, 取值范围, range:[,]}-->other
          </vehicleType>
          <plateColor opt="blue,yellow,white,black,other">
            <!--req, enum, 车牌颜色, subType:string, [blue#蓝,yellow#黄,white#白,black#黑,other#其他], attr:opt{req, string, 取值范围, range:[,]}-->blue
          </plateColor>
        </VehicleInfo>
      </VehicleInfoList>
    </ParkingCardVehicle>
  </ParkingCardVehicleList>
</TMECardVehicle>

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

7. 配置单个出入口车卡信息

7.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMECardVehicle/<cardID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingCardVehicle xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 停车车卡信息, attr:version{req, string, 协议版本, range:[,]}-->
  <CardList>
    <!--opt, array, 卡信息列表, subType:object, range:[,]-->
    <Card>
      <!--opt, object, 卡信息-->
      <id>
        <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <cardNo>
        <!--req, string, 卡号, range:[,]-->test
      </cardNo>
      <ruleID>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </ruleID>
      <type opt="fixed,temporary">
        <!--req, enum, 卡片类型, subType:string, [fixed#固定卡,temporary#临时卡], attr:opt{req, string, 取值范围, range:[,]}-->fixed
      </type>
      <status opt="normal,reportLoss,cancel">
        <!--req, enum, 卡片状态, subType:string, [normal#正常,reportLoss#挂失,cancel#注销], attr:opt{req, string, 取值范围, range:[,]}-->normal
      </status>
      <availablePeriodStartTime>
        <!--req, date, 有效开始时间-->1970-01-01+08:00
      </availablePeriodStartTime>
      <availablePeriodEndTime>
        <!--req, date, 有效结束时间-->1970-01-01+08:00
      </availablePeriodEndTime>
    </Card>
  </CardList>
  <VehicleInfoList>
    <!--opt, array, 车信息列表, subType:object, range:[,]-->
    <VehicleInfo>
      <!--opt, object, 车信息-->
      <id>
        <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <relatedCardNo>
        <!--opt, string, 关联卡号, range:[,], desc:可以为空，在一车多卡的情况,可以复数填写,逗号隔开-->test
      </relatedCardNo>
      <licensePlate>
        <!--req, string, 车牌号码, range:[,]-->test
      </licensePlate>
      <vehicleType opt="other,small,large,notype">
        <!--req, enum, 车辆类型, subType:string, [other#其他,small#小型车,large#大型车,notype#未知], attr:opt{req, string, 取值范围, range:[,]}-->other
      </vehicleType>
      <plateColor opt="blue,yellow,white,black,other">
        <!--req, enum, 车牌颜色, subType:string, [blue#蓝,yellow#黄,white#白,black#黑,other#其他], attr:opt{req, string, 取值范围, range:[,]}-->blue
      </plateColor>
    </VehicleInfo>
  </VehicleInfoList>
</ParkingCardVehicle>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取单个出入口车卡信息

8.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMECardVehicle/<cardID>

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingCardVehicle xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 停车车卡信息, attr:version{req, string, 协议版本, range:[,]}-->
  <CardList>
    <!--ro, opt, array, 卡信息列表, subType:object, range:[,]-->
    <Card>
      <!--ro, opt, object, 卡信息-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <cardNo>
        <!--ro, req, string, 卡号, range:[,]-->test
      </cardNo>
      <ruleID>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </ruleID>
      <type opt="fixed,temporary">
        <!--ro, req, enum, 卡片类型, subType:string, [fixed#固定卡,temporary#临时卡], attr:opt{req, string, 取值范围, range:[,]}-->fixed
      </type>
      <status opt="normal,reportLoss,cancel">
        <!--ro, req, enum, 卡片状态, subType:string, [normal#正常,reportLoss#挂失,cancel#注销], attr:opt{req, string, 取值范围, range:[,]}-->normal
      </status>
      <availablePeriodStartTime>
        <!--ro, req, date, 有效开始时间-->1970-01-01+08:00
      </availablePeriodStartTime>
      <availablePeriodEndTime>
        <!--ro, req, date, 有效结束时间-->1970-01-01+08:00
      </availablePeriodEndTime>
    </Card>
  </CardList>
  <VehicleInfoList>
    <!--ro, opt, array, 车信息列表, subType:object, range:[,]-->
    <VehicleInfo>
      <!--ro, opt, object, 车信息-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <relatedCardNo>
        <!--ro, opt, string, 关联卡号, range:[,], desc:可以为空，在一车多卡的情况,可以复数填写,逗号隔开-->test
      </relatedCardNo>
      <licensePlate>
        <!--ro, req, string, 车牌号码, range:[,]-->test
      </licensePlate>
      <vehicleType opt="other,small,large,notype">
        <!--ro, req, enum, 车辆类型, subType:string, [other#其他,small#小型车,large#大型车,notype#未知], attr:opt{req, string, 取值范围, range:[,]}-->other
      </vehicleType>
      <plateColor opt="blue,yellow,white,black,other">
        <!--ro, req, enum, 车牌颜色, subType:string, [blue#蓝,yellow#黄,white#白,black#黑,other#其他], attr:opt{req, string, 取值范围, range:[,]}-->blue
      </plateColor>
    </VehicleInfo>
  </VehicleInfoList>
</ParkingCardVehicle>

9. 获取脱机收费规则能力集

9.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEChargeRule/capabilities

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeRuleInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 收费规则信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ChargeRuleInfo>
    <!--ro, opt, object, 收费规则信息-->
    <ruleID min="0" max="10000">
      <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </ruleID>
    <ruleName min="0" max="10000">
      <!--ro, req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </ruleName>
    <NoCharge>
      <!--ro, opt, object, 不收费信息-->
      <ruleType opt="noCharge">
        <!--ro, req, enum, 规则类型, subType:string, [noCharge#不收费], attr:opt{req, string, 取值范围, range:[,]}-->noCharge
      </ruleType>
    </NoCharge>
    <ChargeByTimeRule>
      <!--ro, opt, object, 按时收费信息-->
      <ruleType opt="chargeByTime">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByTime#按时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTime
      </ruleType>
      <firstChargeDuration min="0" max="10000">
        <!--ro, req, int, 首段收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </firstChargeDuration>
      <firstDurationChargeAmount min="0" max="10000">
        <!--ro, req, int, 首段收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </firstDurationChargeAmount>
      <intervalChargeDuration min="0" max="10000">
        <!--ro, req, int, 间隔收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </intervalChargeDuration>
      <intervalChargeAmount min="0" max="10000">
        <!--ro, req, int, 间隔收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </intervalChargeAmount>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <dailyMaxAmount min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
    </ChargeByTimeRule>
    <ChargeByOnceRule>
      <!--ro, opt, object, 按次收费规则信息-->
      <ruleType opt="chargeByOnce">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByOnce#按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByOnce
      </ruleType>
      <chargeAmount min="0" max="10000">
        <!--ro, req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </chargeAmount>
    </ChargeByOnceRule>
    <ChargeByTimeSegRule>
      <!--ro, opt, object, 分时段收费规则信息-->
      <ruleType opt="chargeByTimeSeg">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByTimeSeg#分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSeg
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <timeSegAmountList size="100">
        <!--ro, opt, object, 时段信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <timeSegAmount>
          <!--ro, opt, object, 时段信息-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime min="0" max="10000">
            <!--ro, req, int, 开始时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </startTime>
          <endTime min="0" max="10000">
            <!--ro, req, int, 结束时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </endTime>
          <amount min="0" max="10000">
            <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </amount>
        </timeSegAmount>
      </timeSegAmountList>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <maxAccountPerDay min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </maxAccountPerDay>
    </ChargeByTimeSegRule>
    <ChargeByDataSegRule>
      <!--ro, opt, object, 分时收费规则信息-->
      <ruleType opt="chargeByDateSeg">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByDateSeg#分时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDateSeg
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <parkingAccountList size="100">
        <!--ro, opt, object, 停车账户列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <parkingAmount>
          <!--ro, opt, object, 停车总额-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime opt="HH:MM">
            <!--ro, req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
          </startTime>
          <endTime opt="HH:MM">
            <!--ro, req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
          </endTime>
          <account min="0" max="10000">
            <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </account>
        </parkingAmount>
      </parkingAccountList>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <maxAccountPerDay min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </maxAccountPerDay>
    </ChargeByDataSegRule>
    <ChargeByTimeSegUnitRule>
      <!--ro, opt, object, 单位分时段收费规则信息-->
      <ruleType opt="chargeByTimeSegUnit">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByTimeSegUnit#单位分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSegUnit
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <parkingAmountList size="100">
        <!--ro, opt, object, 停车总额列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <parkingAmount>
          <!--ro, opt, object, 停车总额-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime opt="HH:MM">
            <!--ro, req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
          </startTime>
          <endTime opt="HH:MM">
            <!--ro, req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
          </endTime>
          <account min="0" max="10000">
            <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </account>
          <chargeCostUnit opt="minute">
            <!--ro, req, string, 收费单元, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
          </chargeCostUnit>
          <minAmount min="0" max="10000">
            <!--ro, req, int, 封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </minAmount>
          <minTimePeriod min="0" max="10000">
            <!--ro, req, int, 最小跨段时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </minTimePeriod>
        </parkingAmount>
      </parkingAmountList>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶-->true
      </enableMaxAmount>
      <dailyMaxAmount min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
      <enableFreeParkingDuration>
        <!--ro, req, bool, 是否包含免费时长-->true
      </enableFreeParkingDuration>
    </ChargeByTimeSegUnitRule>
    <ChargeByDayNightTimeSegRule>
      <!--ro, opt, object, 日夜分时按次收费信息-->
      <ruleType opt="chargeByDayNightTimeSeg">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByDayNightTimeSeg#日夜分时按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDayNightTimeSeg
      </ruleType>
      <initialfreeParkingDuration min="0" max="10000">
        <!--ro, req, int, 初始免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </initialfreeParkingDuration>
      <enableFreeTimeExceedingCharge>
        <!--ro, req, bool, 超出免费时长是否收费-->true
      </enableFreeTimeExceedingCharge>
      <dayStartTime opt="HH:MM">
        <!--ro, req, string, 白天开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
      </dayStartTime>
      <firstUnitDuration min="0" max="10000">
        <!--ro, req, int, 首段单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </firstUnitDuration>
      <firstDurationAmount min="0" max="10000">
        <!--ro, req, int, 首段收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </firstDurationAmount>
      <unitTime min="0" max="10000">
        <!--ro, req, int, 单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </unitTime>
      <unitTimeAccount min="0" max="10000">
        <!--ro, req, int, 单位时间收费, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </unitTimeAccount>
      <payByOnceStartTime opt="HH:MM">
        <!--ro, req, string, 按次收费时间段开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
      </payByOnceStartTime>
      <payByOnce min="0" max="10000">
        <!--ro, req, int, 按次收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </payByOnce>
      <dailyMaxAmount min="0" max="10000">
        <!--ro, req, int, 24小时内封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
      <enableChargeByTime>
        <!--ro, req, bool, 24小时内存在时间收费时段-->true
      </enableChargeByTime>
      <enableChargeByOnce>
        <!--ro, req, bool, 按次收费的情况下一次出入算一次-->true
      </enableChargeByOnce>
      <maxfreeChargeNumber min="0" max="10000">
        <!--ro, req, int, 最大免费次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </maxfreeChargeNumber>
    </ChargeByDayNightTimeSegRule>
  </ChargeRuleInfo>
</ChargeRuleInfoList>

10. 获取脱机收费规则

10.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEChargeRule

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeRuleInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 收费规则信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ChargeRuleInfo>
    <!--ro, opt, object, 收费规则信息-->
    <ruleID min="0" max="10000">
      <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </ruleID>
    <ruleName min="0" max="10000">
      <!--ro, req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </ruleName>
    <NoCharge>
      <!--ro, opt, object, 不收费信息-->
      <ruleType opt="noCharge">
        <!--ro, req, enum, 规则类型, subType:string, [noCharge#不收费], attr:opt{req, string, 取值范围, range:[,]}-->noCharge
      </ruleType>
    </NoCharge>
    <ChargeByTimeRule>
      <!--ro, opt, object, 按时收费信息-->
      <ruleType opt="chargeByTime">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByTime#按时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTime
      </ruleType>
      <firstChargeDuration min="0" max="10000">
        <!--ro, req, int, 首段收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </firstChargeDuration>
      <firstDurationChargeAmount min="0" max="10000">
        <!--ro, req, int, 首段收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </firstDurationChargeAmount>
      <intervalChargeDuration min="0" max="10000">
        <!--ro, req, int, 间隔收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </intervalChargeDuration>
      <intervalChargeAmount min="0" max="10000">
        <!--ro, req, int, 间隔收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </intervalChargeAmount>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <dailyMaxAmount min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
    </ChargeByTimeRule>
    <ChargeByOnceRule>
      <!--ro, opt, object, 按次收费规则信息-->
      <ruleType opt="chargeByOnce">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByOnce#按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByOnce
      </ruleType>
      <chargeAmount min="0" max="10000">
        <!--ro, req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </chargeAmount>
    </ChargeByOnceRule>
    <ChargeByTimeSegRule>
      <!--ro, opt, object, 分时段收费规则信息-->
      <ruleType opt="chargeByTimeSeg">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByTimeSeg#分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSeg
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <timeSegAmountList size="100">
        <!--ro, opt, object, 时段信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <timeSegAmount>
          <!--ro, opt, object, 时段信息-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime min="0" max="10000">
            <!--ro, req, int, 开始时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </startTime>
          <endTime min="0" max="10000">
            <!--ro, req, int, 结束时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </endTime>
          <amount min="0" max="10000">
            <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </amount>
        </timeSegAmount>
      </timeSegAmountList>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <maxAccountPerDay min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </maxAccountPerDay>
    </ChargeByTimeSegRule>
    <ChargeByDataSegRule>
      <!--ro, opt, object, 分时收费规则信息-->
      <ruleType opt="chargeByDateSeg">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByDateSeg#分时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDateSeg
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <parkingAccountList size="100">
        <!--ro, opt, object, 停车账户列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <parkingAmount>
          <!--ro, opt, object, 停车总额-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime opt="HH:MM">
            <!--ro, req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
          </startTime>
          <endTime opt="HH:MM">
            <!--ro, req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
          </endTime>
          <account min="0" max="10000">
            <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </account>
        </parkingAmount>
      </parkingAccountList>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <maxAccountPerDay min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </maxAccountPerDay>
    </ChargeByDataSegRule>
    <ChargeByTimeSegUnitRule>
      <!--ro, opt, object, 单位分时段收费规则信息-->
      <ruleType opt="chargeByTimeSegUnit">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByTimeSegUnit#单位分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSegUnit
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <parkingAmountList size="100">
        <!--ro, opt, object, 停车总额列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <parkingAmount>
          <!--ro, opt, object, 停车总额-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime opt="HH:MM">
            <!--ro, req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
          </startTime>
          <endTime opt="HH:MM">
            <!--ro, req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
          </endTime>
          <account min="0" max="10000">
            <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </account>
          <chargeCostUnit opt="minute">
            <!--ro, req, string, 收费单元, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
          </chargeCostUnit>
          <minAmount min="0" max="10000">
            <!--ro, req, int, 封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </minAmount>
          <minTimePeriod min="0" max="10000">
            <!--ro, req, int, 最小跨段时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </minTimePeriod>
        </parkingAmount>
      </parkingAmountList>
      <enableMaxAmount>
        <!--ro, req, bool, 是否启用封顶-->true
      </enableMaxAmount>
      <dailyMaxAmount min="0" max="10000">
        <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
      <enableFreeParkingDuration>
        <!--ro, req, bool, 是否包含免费时长-->true
      </enableFreeParkingDuration>
    </ChargeByTimeSegUnitRule>
    <ChargeByDayNightTimeSegRule>
      <!--ro, opt, object, 日夜分时按次收费信息-->
      <ruleType opt="chargeByDayNightTimeSeg">
        <!--ro, req, enum, 规则类型, subType:string, [chargeByDayNightTimeSeg#日夜分时按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDayNightTimeSeg
      </ruleType>
      <initialfreeParkingDuration min="0" max="10000">
        <!--ro, req, int, 初始免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </initialfreeParkingDuration>
      <enableFreeTimeExceedingCharge>
        <!--ro, req, bool, 超出免费时长是否收费-->true
      </enableFreeTimeExceedingCharge>
      <dayStartTime opt="HH:MM">
        <!--ro, req, string, 白天开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
      </dayStartTime>
      <firstUnitDuration min="0" max="10000">
        <!--ro, req, int, 首段单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </firstUnitDuration>
      <firstDurationAmount min="0" max="10000">
        <!--ro, req, int, 首段收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </firstDurationAmount>
      <unitTime min="0" max="10000">
        <!--ro, req, int, 单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </unitTime>
      <unitTimeAccount min="0" max="10000">
        <!--ro, req, int, 单位时间收费, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </unitTimeAccount>
      <payByOnceStartTime opt="HH:MM">
        <!--ro, req, string, 按次收费时间段开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
      </payByOnceStartTime>
      <payByOnce min="0" max="10000">
        <!--ro, req, int, 按次收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </payByOnce>
      <dailyMaxAmount min="0" max="10000">
        <!--ro, req, int, 24小时内封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
      <enableChargeByTime>
        <!--ro, req, bool, 24小时内存在时间收费时段-->true
      </enableChargeByTime>
      <enableChargeByOnce>
        <!--ro, req, bool, 按次收费的情况下一次出入算一次-->true
      </enableChargeByOnce>
      <maxfreeChargeNumber min="0" max="10000">
        <!--ro, req, int, 最大免费次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </maxfreeChargeNumber>
    </ChargeByDayNightTimeSegRule>
  </ChargeRuleInfo>
</ChargeRuleInfoList>

11. 配置脱机收费规则

11.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMEChargeRule

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeRuleInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 收费规则信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ChargeRuleInfo>
    <!--opt, object, 收费规则信息-->
    <ruleID min="0" max="10000">
      <!--req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </ruleID>
    <ruleName min="0" max="10000">
      <!--req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </ruleName>
    <NoCharge>
      <!--opt, object, 不收费信息-->
      <ruleType opt="noCharge">
        <!--req, enum, 规则类型, subType:string, [noCharge#不收费], attr:opt{req, string, 取值范围, range:[,]}-->noCharge
      </ruleType>
    </NoCharge>
    <ChargeByTimeRule>
      <!--opt, object, 按时收费信息-->
      <ruleType opt="chargeByTime">
        <!--req, enum, 规则类型, subType:string, [chargeByTime#按时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTime
      </ruleType>
      <firstChargeDuration min="0" max="10000">
        <!--req, int, 首段收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </firstChargeDuration>
      <firstDurationChargeAmount min="0" max="10000">
        <!--req, int, 首段收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </firstDurationChargeAmount>
      <intervalChargeDuration min="0" max="10000">
        <!--req, int, 间隔收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </intervalChargeDuration>
      <intervalChargeAmount min="0" max="10000">
        <!--req, int, 间隔收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </intervalChargeAmount>
      <freePackingDuration min="0" max="10000">
        <!--req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <enableMaxAmount>
        <!--req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <dailyMaxAmount min="0" max="10000">
        <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
    </ChargeByTimeRule>
    <ChargeByOnceRule>
      <!--opt, object, 按次收费规则信息-->
      <ruleType opt="chargeByOnce">
        <!--req, enum, 规则类型, subType:string, [chargeByOnce#按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByOnce
      </ruleType>
      <chargeAmount min="0" max="10000">
        <!--req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </chargeAmount>
    </ChargeByOnceRule>
    <ChargeByTimeSegRule>
      <!--opt, object, 分时段收费规则信息-->
      <ruleType opt="chargeByTimeSeg">
        <!--req, enum, 规则类型, subType:string, [chargeByTimeSeg#分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSeg
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--req, int, 免费停车时长, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <timeSegAmountList size="100">
        <!--opt, object, 时段信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <timeSegAmount>
          <!--opt, object, 时段信息-->
          <id>
            <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime min="0" max="10000">
            <!--req, int, 开始时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </startTime>
          <endTime min="0" max="10000">
            <!--req, int, 结束时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </endTime>
          <amount min="0" max="10000">
            <!--req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </amount>
        </timeSegAmount>
      </timeSegAmountList>
      <enableMaxAmount>
        <!--req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <maxAccountPerDay min="0" max="10000">
        <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </maxAccountPerDay>
    </ChargeByTimeSegRule>
    <ChargeByDataSegRule>
      <!--opt, object, 分时收费规则信息-->
      <ruleType opt="chargeByDateSeg">
        <!--req, enum, 规则类型, subType:string, [chargeByDateSeg#分时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDateSeg
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <parkingAccountList size="100">
        <!--opt, object, 停车账户列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <parkingAmount>
          <!--opt, object, 停车总额-->
          <id>
            <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime opt="HH:MM">
            <!--req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
          </startTime>
          <endTime opt="HH:MM">
            <!--req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
          </endTime>
          <account min="0" max="10000">
            <!--req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </account>
        </parkingAmount>
      </parkingAccountList>
      <enableMaxAmount>
        <!--req, bool, 是否启用封顶金额-->true
      </enableMaxAmount>
      <maxAccountPerDay min="0" max="10000">
        <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </maxAccountPerDay>
    </ChargeByDataSegRule>
    <ChargeByTimeSegUnitRule>
      <!--opt, object, 单位分时段收费规则信息-->
      <ruleType opt="chargeByTimeSegUnit">
        <!--req, enum, 规则类型, subType:string, [chargeByTimeSegUnit#单位分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSegUnit
      </ruleType>
      <freePackingDuration min="0" max="10000">
        <!--req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </freePackingDuration>
      <timeSegNumber min="0" max="10000">
        <!--req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </timeSegNumber>
      <parkingAmountList size="100">
        <!--opt, object, 停车总额列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <parkingAmount>
          <!--opt, object, 停车总额-->
          <id>
            <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <startTime opt="HH:MM">
            <!--req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
          </startTime>
          <endTime opt="HH:MM">
            <!--req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
          </endTime>
          <account min="0" max="10000">
            <!--req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </account>
          <chargeCostUnit opt="minute">
            <!--req, string, 收费单元, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
          </chargeCostUnit>
          <minAmount min="0" max="10000">
            <!--req, int, 封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
          </minAmount>
          <minTimePeriod min="0" max="10000">
            <!--req, int, 最小跨段时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </minTimePeriod>
        </parkingAmount>
      </parkingAmountList>
      <enableMaxAmount>
        <!--req, bool, 是否启用封顶-->true
      </enableMaxAmount>
      <dailyMaxAmount min="0" max="10000">
        <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
      <enableFreeParkingDuration>
        <!--req, bool, 是否包含免费时长-->true
      </enableFreeParkingDuration>
    </ChargeByTimeSegUnitRule>
    <ChargeByDayNightTimeSegRule>
      <!--opt, object, 日夜分时按次收费信息-->
      <ruleType opt="chargeByDayNightTimeSeg">
        <!--req, enum, 规则类型, subType:string, [chargeByDayNightTimeSeg#日夜分时按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDayNightTimeSeg
      </ruleType>
      <initialfreeParkingDuration min="0" max="10000">
        <!--req, int, 初始免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </initialfreeParkingDuration>
      <enableFreeTimeExceedingCharge>
        <!--req, bool, 超出免费时长是否收费-->true
      </enableFreeTimeExceedingCharge>
      <dayStartTime opt="HH:MM">
        <!--req, string, 白天开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
      </dayStartTime>
      <firstUnitDuration min="0" max="10000">
        <!--req, int, 首段单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </firstUnitDuration>
      <firstDurationAmount min="0" max="10000">
        <!--req, int, 首段收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </firstDurationAmount>
      <unitTime min="0" max="10000">
        <!--req, int, 单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </unitTime>
      <unitTimeAccount min="0" max="10000">
        <!--req, int, 单位时间收费, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </unitTimeAccount>
      <payByOnceStartTime opt="HH:MM">
        <!--req, string, 按次收费时间段开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
      </payByOnceStartTime>
      <payByOnce min="0" max="10000">
        <!--req, int, 按次收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </payByOnce>
      <dailyMaxAmount min="0" max="10000">
        <!--req, int, 24小时内封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
      </dailyMaxAmount>
      <enableChargeByTime>
        <!--req, bool, 24小时内存在时间收费时段-->true
      </enableChargeByTime>
      <enableChargeByOnce>
        <!--req, bool, 按次收费的情况下一次出入算一次-->true
      </enableChargeByOnce>
      <maxfreeChargeNumber min="0" max="10000">
        <!--req, int, 最大免费次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </maxfreeChargeNumber>
    </ChargeByDayNightTimeSegRule>
  </ChargeRuleInfo>
</ChargeRuleInfoList>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 配置单个脱机收费规则

12.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMEChargeRule/<ruleID>

12.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeRuleInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 收费规则信息, attr:version{req, string, 协议版本, range:[,]}-->
  <ruleID min="0" max="10000">
    <!--req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </ruleID>
  <ruleName min="0" max="10000">
    <!--req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ruleName>
  <NoCharge>
    <!--opt, object, 不收费信息-->
    <ruleType opt="noCharge">
      <!--req, enum, 规则类型, subType:string, [noCharge#不收费], attr:opt{req, string, 取值范围, range:[,]}-->noCharge
    </ruleType>
  </NoCharge>
  <ChargeByTimeRule>
    <!--opt, object, 按时收费信息-->
    <ruleType opt="chargeByTime">
      <!--req, enum, 规则类型, subType:string, [chargeByTime#按时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTime
    </ruleType>
    <firstChargeDuration min="0" max="10000">
      <!--req, int, 首段收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </firstChargeDuration>
    <firstDurationChargeAmount min="0" max="10000">
      <!--req, int, 首段收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </firstDurationChargeAmount>
    <intervalChargeDuration min="0" max="10000">
      <!--req, int, 间隔收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </intervalChargeDuration>
    <intervalChargeAmount min="0" max="10000">
      <!--req, int, 间隔收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </intervalChargeAmount>
    <freePackingDuration min="0" max="10000">
      <!--req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <enableMaxAmount>
      <!--req, bool, 是否启用封顶金额-->true
    </enableMaxAmount>
    <dailyMaxAmount min="0" max="10000">
      <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </dailyMaxAmount>
  </ChargeByTimeRule>
  <ChargeByOnceRule>
    <!--opt, object, 按次收费规则信息-->
    <ruleType opt="chargeByOnce">
      <!--req, enum, 规则类型, subType:string, [chargeByOnce#按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByOnce
    </ruleType>
    <chargeAmount min="0" max="10000">
      <!--req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </chargeAmount>
  </ChargeByOnceRule>
  <ChargeByTimeSegRule>
    <!--opt, object, 分时段收费规则信息-->
    <ruleType opt="chargeByTimeSeg">
      <!--req, enum, 规则类型, subType:string, [chargeByTimeSeg#分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSeg
    </ruleType>
    <freePackingDuration min="0" max="10000">
      <!--req, int, 免费停车时长, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <timeSegNumber min="0" max="10000">
      <!--req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </timeSegNumber>
    <timeSegAmountList size="100">
      <!--opt, object, 时段信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <timeSegAmount>
        <!--opt, object, 时段信息-->
        <id>
          <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <startTime min="0" max="10000">
          <!--req, int, 开始时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </startTime>
        <endTime min="0" max="10000">
          <!--req, int, 结束时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </endTime>
        <amount min="0" max="10000">
          <!--req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </amount>
      </timeSegAmount>
    </timeSegAmountList>
    <enableMaxAmount>
      <!--req, bool, 是否启用封顶金额-->true
    </enableMaxAmount>
    <maxAccountPerDay min="0" max="10000">
      <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </maxAccountPerDay>
  </ChargeByTimeSegRule>
  <ChargeByDataSegRule>
    <!--opt, object, 分时收费规则信息-->
    <ruleType opt="chargeByDateSeg">
      <!--req, enum, 规则类型, subType:string, [chargeByDateSeg#分时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDateSeg
    </ruleType>
    <freePackingDuration min="0" max="10000">
      <!--req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <timeSegNumber min="0" max="10000">
      <!--req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </timeSegNumber>
    <parkingAccountList size="100">
      <!--opt, object, 停车账户列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <parkingAmount>
        <!--opt, object, 停车总额-->
        <id>
          <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <startTime opt="HH:MM">
          <!--req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
        </startTime>
        <endTime opt="HH:MM">
          <!--req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
        </endTime>
        <account min="0" max="10000">
          <!--req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </account>
      </parkingAmount>
    </parkingAccountList>
    <enableMaxAmount>
      <!--req, bool, 是否启用封顶金额-->true
    </enableMaxAmount>
    <maxAccountPerDay min="0" max="10000">
      <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </maxAccountPerDay>
  </ChargeByDataSegRule>
  <ChargeByTimeSegUnitRule>
    <!--opt, object, 单位分时段收费规则信息-->
    <ruleType opt="chargeByTimeSegUnit">
      <!--req, enum, 规则类型, subType:string, [chargeByTimeSegUnit#单位分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSegUnit
    </ruleType>
    <freePackingDuration min="0" max="10000">
      <!--req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <timeSegNumber min="0" max="10000">
      <!--req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </timeSegNumber>
    <parkingAmountList size="100">
      <!--opt, object, 停车总额列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <parkingAmount>
        <!--opt, object, 停车总额-->
        <id>
          <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <startTime opt="HH:MM">
          <!--req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
        </startTime>
        <endTime opt="HH:MM">
          <!--req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
        </endTime>
        <account min="0" max="10000">
          <!--req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </account>
        <chargeCostUnit opt="minute">
          <!--req, string, 收费单元, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
        </chargeCostUnit>
        <minAmount min="0" max="10000">
          <!--req, int, 封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </minAmount>
        <minTimePeriod min="0" max="10000">
          <!--req, int, 最小跨段时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </minTimePeriod>
      </parkingAmount>
    </parkingAmountList>
    <enableMaxAmount>
      <!--req, bool, 是否启用封顶-->true
    </enableMaxAmount>
    <dailyMaxAmount min="0" max="10000">
      <!--req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </dailyMaxAmount>
    <enableFreeParkingDuration>
      <!--req, bool, 是否包含免费时长-->true
    </enableFreeParkingDuration>
  </ChargeByTimeSegUnitRule>
  <ChargeByDayNightTimeSegRule>
    <!--opt, object, 日夜分时按次收费信息-->
    <ruleType opt="chargeByDayNightTimeSeg">
      <!--req, enum, 规则类型, subType:string, [chargeByDayNightTimeSeg#日夜分时按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDayNightTimeSeg
    </ruleType>
    <initialfreeParkingDuration min="0" max="10000">
      <!--req, int, 初始免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </initialfreeParkingDuration>
    <enableFreeTimeExceedingCharge>
      <!--req, bool, 超出免费时长是否收费-->true
    </enableFreeTimeExceedingCharge>
    <dayStartTime opt="HH:MM">
      <!--req, string, 白天开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
    </dayStartTime>
    <firstUnitDuration min="0" max="10000">
      <!--req, int, 首段单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </firstUnitDuration>
    <firstDurationAmount min="0" max="10000">
      <!--req, int, 首段收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </firstDurationAmount>
    <unitTime min="0" max="10000">
      <!--req, int, 单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </unitTime>
    <unitTimeAccount min="0" max="10000">
      <!--req, int, 单位时间收费, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </unitTimeAccount>
    <payByOnceStartTime opt="HH:MM">
      <!--req, string, 按次收费时间段开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
    </payByOnceStartTime>
    <payByOnce min="0" max="10000">
      <!--req, int, 按次收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </payByOnce>
    <dailyMaxAmount min="0" max="10000">
      <!--req, int, 24小时内封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </dailyMaxAmount>
    <enableChargeByTime>
      <!--req, bool, 24小时内存在时间收费时段-->true
    </enableChargeByTime>
    <enableChargeByOnce>
      <!--req, bool, 按次收费的情况下一次出入算一次-->true
    </enableChargeByOnce>
    <maxfreeChargeNumber min="0" max="10000">
      <!--req, int, 最大免费次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </maxfreeChargeNumber>
  </ChargeByDayNightTimeSegRule>
</ChargeRuleInfo>

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

13. 获取单个脱机收费规则

13.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEChargeRule/<ruleID>

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeRuleInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 收费规则信息, attr:version{req, string, 协议版本, range:[,]}-->
  <ruleID min="0" max="10000">
    <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </ruleID>
  <ruleName min="0" max="10000">
    <!--ro, req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ruleName>
  <NoCharge>
    <!--ro, opt, object, 不收费信息-->
    <ruleType opt="noCharge">
      <!--ro, req, enum, 规则类型, subType:string, [noCharge#不收费], attr:opt{req, string, 取值范围, range:[,]}-->noCharge
    </ruleType>
  </NoCharge>
  <ChargeByTimeRule>
    <!--ro, opt, object, 按时收费信息-->
    <ruleType opt="chargeByTime">
      <!--ro, req, enum, 规则类型, subType:string, [chargeByTime#按时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTime
    </ruleType>
    <firstChargeDuration min="0" max="10000">
      <!--ro, req, int, 首段收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </firstChargeDuration>
    <firstDurationChargeAmount min="0" max="10000">
      <!--ro, req, int, 首段收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </firstDurationChargeAmount>
    <intervalChargeDuration min="0" max="10000">
      <!--ro, req, int, 间隔收费时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </intervalChargeDuration>
    <intervalChargeAmount min="0" max="10000">
      <!--ro, req, int, 间隔收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </intervalChargeAmount>
    <freePackingDuration min="0" max="10000">
      <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <enableMaxAmount>
      <!--ro, req, bool, 是否启用封顶金额-->true
    </enableMaxAmount>
    <dailyMaxAmount min="0" max="10000">
      <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </dailyMaxAmount>
  </ChargeByTimeRule>
  <ChargeByOnceRule>
    <!--ro, opt, object, 按次收费规则信息-->
    <ruleType opt="chargeByOnce">
      <!--ro, req, enum, 规则类型, subType:string, [chargeByOnce#按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByOnce
    </ruleType>
    <chargeAmount min="0" max="10000">
      <!--ro, req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </chargeAmount>
  </ChargeByOnceRule>
  <ChargeByTimeSegRule>
    <!--ro, opt, object, 分时段收费规则信息-->
    <ruleType opt="chargeByTimeSeg">
      <!--ro, req, enum, 规则类型, subType:string, [chargeByTimeSeg#分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSeg
    </ruleType>
    <freePackingDuration min="0" max="10000">
      <!--ro, req, int, 免费停车时长, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <timeSegNumber min="0" max="10000">
      <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </timeSegNumber>
    <timeSegAmountList size="100">
      <!--ro, opt, object, 时段信息列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <timeSegAmount>
        <!--ro, opt, object, 时段信息-->
        <id>
          <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <startTime min="0" max="10000">
          <!--ro, req, int, 开始时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </startTime>
        <endTime min="0" max="10000">
          <!--ro, req, int, 结束时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </endTime>
        <amount min="0" max="10000">
          <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </amount>
      </timeSegAmount>
    </timeSegAmountList>
    <enableMaxAmount>
      <!--ro, req, bool, 是否启用封顶金额-->true
    </enableMaxAmount>
    <maxAccountPerDay min="0" max="10000">
      <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </maxAccountPerDay>
  </ChargeByTimeSegRule>
  <ChargeByDataSegRule>
    <!--ro, opt, object, 分时收费规则信息-->
    <ruleType opt="chargeByDateSeg">
      <!--ro, req, enum, 规则类型, subType:string, [chargeByDateSeg#分时收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDateSeg
    </ruleType>
    <freePackingDuration min="0" max="10000">
      <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <timeSegNumber min="0" max="10000">
      <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </timeSegNumber>
    <parkingAccountList size="100">
      <!--ro, opt, object, 停车账户列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <parkingAmount>
        <!--ro, opt, object, 停车总额-->
        <id>
          <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <startTime opt="HH:MM">
          <!--ro, req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
        </startTime>
        <endTime opt="HH:MM">
          <!--ro, req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
        </endTime>
        <account min="0" max="10000">
          <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </account>
      </parkingAmount>
    </parkingAccountList>
    <enableMaxAmount>
      <!--ro, req, bool, 是否启用封顶金额-->true
    </enableMaxAmount>
    <maxAccountPerDay min="0" max="10000">
      <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </maxAccountPerDay>
  </ChargeByDataSegRule>
  <ChargeByTimeSegUnitRule>
    <!--ro, opt, object, 单位分时段收费规则信息-->
    <ruleType opt="chargeByTimeSegUnit">
      <!--ro, req, enum, 规则类型, subType:string, [chargeByTimeSegUnit#单位分时段收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByTimeSegUnit
    </ruleType>
    <freePackingDuration min="0" max="10000">
      <!--ro, req, int, 免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </freePackingDuration>
    <timeSegNumber min="0" max="10000">
      <!--ro, req, int, 具体时段个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </timeSegNumber>
    <parkingAmountList size="100">
      <!--ro, opt, object, 停车总额列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <parkingAmount>
        <!--ro, opt, object, 停车总额-->
        <id>
          <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <startTime opt="HH:MM">
          <!--ro, req, string, 开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->21:00
        </startTime>
        <endTime opt="HH:MM">
          <!--ro, req, string, 结束时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为"HH:MM"-->22:00
        </endTime>
        <account min="0" max="10000">
          <!--ro, req, int, 金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </account>
        <chargeCostUnit opt="minute">
          <!--ro, req, string, 收费单元, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
        </chargeCostUnit>
        <minAmount min="0" max="10000">
          <!--ro, req, int, 封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
        </minAmount>
        <minTimePeriod min="0" max="10000">
          <!--ro, req, int, 最小跨段时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </minTimePeriod>
      </parkingAmount>
    </parkingAmountList>
    <enableMaxAmount>
      <!--ro, req, bool, 是否启用封顶-->true
    </enableMaxAmount>
    <dailyMaxAmount min="0" max="10000">
      <!--ro, req, int, 每天最高限额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </dailyMaxAmount>
    <enableFreeParkingDuration>
      <!--ro, req, bool, 是否包含免费时长-->true
    </enableFreeParkingDuration>
  </ChargeByTimeSegUnitRule>
  <ChargeByDayNightTimeSegRule>
    <!--ro, opt, object, 日夜分时按次收费信息-->
    <ruleType opt="chargeByDayNightTimeSeg">
      <!--ro, req, enum, 规则类型, subType:string, [chargeByDayNightTimeSeg#日夜分时按次收费], attr:opt{req, string, 取值范围, range:[,]}-->chargeByDayNightTimeSeg
    </ruleType>
    <initialfreeParkingDuration min="0" max="10000">
      <!--ro, req, int, 初始免费停车时长, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </initialfreeParkingDuration>
    <enableFreeTimeExceedingCharge>
      <!--ro, req, bool, 超出免费时长是否收费-->true
    </enableFreeTimeExceedingCharge>
    <dayStartTime opt="HH:MM">
      <!--ro, req, string, 白天开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
    </dayStartTime>
    <firstUnitDuration min="0" max="10000">
      <!--ro, req, int, 首段单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </firstUnitDuration>
    <firstDurationAmount min="0" max="10000">
      <!--ro, req, int, 首段收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </firstDurationAmount>
    <unitTime min="0" max="10000">
      <!--ro, req, int, 单位时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </unitTime>
    <unitTimeAccount min="0" max="10000">
      <!--ro, req, int, 单位时间收费, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </unitTimeAccount>
    <payByOnceStartTime opt="HH:MM">
      <!--ro, req, string, 按次收费时间段开始时间, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:格式为："HH:MM"-->21:00
    </payByOnceStartTime>
    <payByOnce min="0" max="10000">
      <!--ro, req, int, 按次收费, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </payByOnce>
    <dailyMaxAmount min="0" max="10000">
      <!--ro, req, int, 24小时内封顶金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
    </dailyMaxAmount>
    <enableChargeByTime>
      <!--ro, req, bool, 24小时内存在时间收费时段-->true
    </enableChargeByTime>
    <enableChargeByOnce>
      <!--ro, req, bool, 按次收费的情况下一次出入算一次-->true
    </enableChargeByOnce>
    <maxfreeChargeNumber min="0" max="10000">
      <!--ro, req, int, 最大免费次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </maxfreeChargeNumber>
  </ChargeByDayNightTimeSegRule>
</ChargeRuleInfo>

14. 获取票箱参数能力集

14.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEConfiguration/capabilities

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱设备参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <illegalCardFilteringEnabled>
    <!--ro, req, bool, 启用非法卡过滤的意思-->true
  </illegalCardFilteringEnabled>
  <LEDDefaultInfo min="0" max="512">
    <!--ro, req, string, LED默认显示内容, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </LEDDefaultInfo>
  <sendCardSensingCoilEnabled>
    <!--ro, req, bool, 发卡机是否关联地感线圈-->true
  </sendCardSensingCoilEnabled>
  <wiegendSensingCoilEnabled>
    <!--ro, req, bool, 远距离卡是否关联地感线圈-->true
  </wiegendSensingCoilEnabled>
  <gateSwitchSignalEnabled>
    <!--ro, req, bool, 是否有道闸开关信息-->true
  </gateSwitchSignalEnabled>
  <verifyKeyWriteCardEnabled>
    <!--ro, req, bool, 是否验证密钥和写卡-->true
  </verifyKeyWriteCardEnabled>
  <noplateTakePermissionEnabled>
    <!--ro, req, bool, 是否启用无车牌取凭据放行-->true
  </noplateTakePermissionEnabled>
</TMEConfiguration>

15. 配置票箱参数

15.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMEConfiguration

15.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 票箱设备参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <illegalCardFilteringEnabled>
    <!--req, bool, 启用非法卡过滤的意思-->true
  </illegalCardFilteringEnabled>
  <LEDDefaultInfo min="0" max="512">
    <!--req, string, LED默认显示内容, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </LEDDefaultInfo>
  <sendCardSensingCoilEnabled>
    <!--req, bool, 发卡机是否关联地感线圈-->true
  </sendCardSensingCoilEnabled>
  <wiegendSensingCoilEnabled>
    <!--req, bool, 远距离卡是否关联地感线圈-->true
  </wiegendSensingCoilEnabled>
  <gateSwitchSignalEnabled>
    <!--req, bool, 是否有道闸开关信息-->true
  </gateSwitchSignalEnabled>
  <verifyKeyWriteCardEnabled>
    <!--req, bool, 是否验证密钥和写卡-->true
  </verifyKeyWriteCardEnabled>
  <noplateTakePermissionEnabled>
    <!--req, bool, 是否启用无车牌取凭据放行-->true
  </noplateTakePermissionEnabled>
</TMEConfiguration>

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

16. 获取票箱参数

16.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEConfiguration

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱设备参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <illegalCardFilteringEnabled>
    <!--ro, req, bool, 启用非法卡过滤的意思-->true
  </illegalCardFilteringEnabled>
  <LEDDefaultInfo min="0" max="512">
    <!--ro, req, string, LED默认显示内容, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </LEDDefaultInfo>
  <sendCardSensingCoilEnabled>
    <!--ro, req, bool, 发卡机是否关联地感线圈-->true
  </sendCardSensingCoilEnabled>
  <wiegendSensingCoilEnabled>
    <!--ro, req, bool, 远距离卡是否关联地感线圈-->true
  </wiegendSensingCoilEnabled>
  <gateSwitchSignalEnabled>
    <!--ro, req, bool, 是否有道闸开关信息-->true
  </gateSwitchSignalEnabled>
  <verifyKeyWriteCardEnabled>
    <!--ro, req, bool, 是否验证密钥和写卡-->true
  </verifyKeyWriteCardEnabled>
  <noplateTakePermissionEnabled>
    <!--ro, req, bool, 是否启用无车牌取凭据放行-->true
  </noplateTakePermissionEnabled>
</TMEConfiguration>

17. 获取从属设备多角度参数配置能力

17.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEMultiCtrlConfiguration/capabilities

17.2 输入参数

无

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEMultiCtrlConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱多通道抓拍参数, attr:version{req, string, 协议版本, range:[,]}-->
  <multiChansCapEnabled>
    <!--ro, req, bool, 是否启用多通道抓拍-->true
  </multiChansCapEnabled>
  <multiChansWaitTime min="1" max="1000">
    <!--ro, req, int, 多通道抓拍匹配时间, range:[,], step:, unit:ms, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </multiChansWaitTime>
</TMEMultiCtrlConfiguration>

18. 获取从属设备多角度参数

18.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEMultiCtrlConfiguration

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEMultiCtrlConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱多通道抓拍参数, attr:version{req, string, 协议版本, range:[,]}-->
  <multiChansCapEnabled>
    <!--ro, req, bool, 是否启用多通道抓拍-->true
  </multiChansCapEnabled>
  <multiChansWaitTime>
    <!--ro, req, int, 多通道抓拍匹配时间, range:[,], step:, unit:ms, unitType:时间-->1
  </multiChansWaitTime>
</TMEMultiCtrlConfiguration>

19. 配置从属设备多角度参数

19.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMEMultiCtrlConfiguration

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEMultiCtrlConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 票箱多通道抓拍参数, attr:version{req, string, 协议版本, range:[,]}-->
  <multiChansCapEnabled>
    <!--req, bool, 是否启用多通道抓拍-->true
  </multiChansCapEnabled>
  <multiChansWaitTime>
    <!--req, int, 多通道抓拍匹配时间, range:[,], step:, unit:ms, unitType:时间-->1
  </multiChansWaitTime>
</TMEMultiCtrlConfiguration>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取脱机模式下参数配置能力

20.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEOfflineConfiguration/capabilities

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEOfflineConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱脱机参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 是否启用脱机-->true
  </enabled>
  <chargeEnabled>
    <!--ro, req, bool, 是否收费-->true
  </chargeEnabled>
  <alarmEnabled>
    <!--ro, req, bool, 是否报警-->true
  </alarmEnabled>
  <recordSource opt="plate,card">
    <!--ro, req, enum, 记录产生依据, subType:string, [plate#车牌,card#卡], attr:opt{req, string, 取值范围, range:[,]}-->plate
  </recordSource>
  <timeWait min="1" max="300">
    <!--ro, req, int, 票箱进入脱机模式前的等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </timeWait>
  <releaseMode opt="fixed,fixCard,tempCar,tempCard,noPlate,freefixCar,freetempCar">
    <!--ro, req, enum, 放行方式, subType:string, [fixed#固定车放行,fixCard#固定卡放行,tempCar#临时车放行,tempCard#临时卡放行,noPlate#无车牌放行,freefixCar#固定车若免费则自动放行,freetempCar#临时车若免费则自动放行], attr:opt{req, string, 取值范围, range:[,]}-->fixed
  </releaseMode>
  <vehicleCardMatchEnabled>
    <!--ro, req, bool, 是否启用车卡一致-->true
  </vehicleCardMatchEnabled>
  <singleInSingleOutEnabled>
    <!--ro, req, bool, 是否单进单出-->true
  </singleInSingleOutEnabled>
</TMEOfflineConfiguration>

21. 获取脱机模式下参数

21.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEOfflineConfiguration

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEOfflineConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱脱机参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 是否启用脱机-->true
  </enabled>
  <chargeEnabled>
    <!--ro, req, bool, 是否收费-->true
  </chargeEnabled>
  <alarmEnabled>
    <!--ro, req, bool, 是否报警-->true
  </alarmEnabled>
  <recordSource opt="plate,card">
    <!--ro, req, enum, 记录产生依据, subType:string, [plate#车牌,card#卡], attr:opt{req, string, 取值范围, range:[,]}-->plate
  </recordSource>
  <timeWait min="1" max="300">
    <!--ro, req, int, 票箱进入脱机模式前的等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </timeWait>
  <releaseMode opt="fixed,fixCard,tempCar,tempCard,noPlate,freefixCar,freetempCar">
    <!--ro, req, enum, 放行方式, subType:string, [fixed#固定车放行,fixCard#固定卡放行,tempCar#临时车放行,tempCard#临时卡放行,noPlate#无车牌放行,freefixCar#固定车若免费则自动放行,freetempCar#临时车若免费则自动放行], attr:opt{req, string, 取值范围, range:[,]}-->fixed
  </releaseMode>
  <vehicleCardMatchEnabled>
    <!--ro, req, bool, 是否启用车卡一致-->true
  </vehicleCardMatchEnabled>
  <singleInSingleOutEnabled>
    <!--ro, req, bool, 是否单进单出-->true
  </singleInSingleOutEnabled>
</TMEOfflineConfiguration>

22. 配置脱机模式下参数

22.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMEOfflineConfiguration

22.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEOfflineConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 票箱脱机参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 是否启用脱机-->true
  </enabled>
  <chargeEnabled>
    <!--req, bool, 是否收费-->true
  </chargeEnabled>
  <alarmEnabled>
    <!--req, bool, 是否报警-->true
  </alarmEnabled>
  <recordSource opt="plate,card">
    <!--req, enum, 记录产生依据, subType:string, [plate#车牌,card#卡], attr:opt{req, string, 取值范围, range:[,]}-->plate
  </recordSource>
  <timeWait min="1" max="300">
    <!--req, int, 票箱进入脱机模式前的等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </timeWait>
  <releaseMode opt="fixed,fixCard,tempCar,tempCard,noPlate,freefixCar,freetempCar">
    <!--req, enum, 放行方式, subType:string, [fixed#固定车放行,fixCard#固定卡放行,tempCar#临时车放行,tempCard#临时卡放行,noPlate#无车牌放行,freefixCar#固定车若免费则自动放行,freetempCar#临时车若免费则自动放行], attr:opt{req, string, 取值范围, range:[,]}-->fixed
  </releaseMode>
  <vehicleCardMatchEnabled>
    <!--req, bool, 是否启用车卡一致-->true
  </vehicleCardMatchEnabled>
  <singleInSingleOutEnabled>
    <!--req, bool, 是否单进单出-->true
  </singleInSingleOutEnabled>
</TMEOfflineConfiguration>

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

23. 获取票箱系统状态

23.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMESystemInfo

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMESystemInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 票箱系统状态, attr:version{req, string, 协议版本, range:[,]}-->
  <AlarmNum min="0" max="32">
    <!--ro, req, int, 布防个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </AlarmNum>
  <AlarmInfo>
    <!--ro, opt, object, 布防信息-->
    <alarmedMode opt="private,sdk">
      <!--ro, req, enum, 布防方式, subType:string, [private#private,sdk#sdk], attr:opt{req, string, 取值范围, range:[,]}-->private
    </alarmedMode>
    <alarmedHost min="0" max="32">
      <!--ro, req, string, 布防主机的IP, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </alarmedHost>
  </AlarmInfo>
  <AlarmInfo>
    <!--ro, opt, object, 布防信息-->
    <alarmedMode opt="private,sdk">
      <!--ro, req, enum, 布防方式, subType:string, [private#private,sdk#sdk], attr:opt{req, string, 取值范围, range:[,]}-->private
    </alarmedMode>
    <alarmedHost min="0" max="32">
      <!--ro, req, string, 布防主机的IP, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </alarmedHost>
  </AlarmInfo>
</TMESystemInfo>

24. 配置语音参数

24.1 命令

PUT /ISAPI/Parking/channels/<channelID>/TMEVoiceConfiguration

24.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEVoiceConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 语音播报控制配置参数, attr:version{req, string, 协议版本, range:[,]}-->
  <voiceSpeed>
    <!--req, int, 语速, range:[0,100], step:, unit:, unitType:-->0
  </voiceSpeed>
  <voicePitch>
    <!--req, int, 语调, range:[0,100], step:, unit:, unitType:-->0
  </voicePitch>
  <voiceVolum>
    <!--req, int, 音量, range:[0,100], step:, unit:, unitType:-->0
  </voiceVolum>
  <voiceRole>
    <!--req, int, 发音人, range:[,], step:, unit:, unitType:, desc:可选为：3,51,52,53,54,55-->0
  </voiceRole>
  <voiceContent>
    <!--req, string, 语音内容（出入口压线圈播报的语音内容）, range:[,]-->test
  </voiceContent>
  <voiceFileName>
    <!--req, string, 语音文件名, range:[,]-->test
  </voiceFileName>
  <voicePlate>
    <!--opt, bool, 语音播报车牌-->true
  </voicePlate>
</TMEVoiceConfiguration>

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

25. 获取语音参数

25.1 命令

GET /ISAPI/Parking/channels/<channelID>/TMEVoiceConfiguration

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEVoiceConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 语音播报控制配置参数, attr:version{req, string, 协议版本, range:[,]}-->
  <voiceSpeed>
    <!--ro, req, int, 语速, range:[0,100], step:, unit:, unitType:-->0
  </voiceSpeed>
  <voicePitch>
    <!--ro, req, int, 语调, range:[0,100], step:, unit:, unitType:-->0
  </voicePitch>
  <voiceVolum>
    <!--ro, req, int, 音量, range:[0,100], step:, unit:, unitType:-->0
  </voiceVolum>
  <voiceRole>
    <!--ro, req, int, 发音人, range:[,], step:, unit:, unitType:, desc:可选为：3,51,52,53,54,55-->0
  </voiceRole>
  <voiceContent>
    <!--ro, req, string, 语音内容（出入口压线圈播报的语音内容）, range:[,]-->test
  </voiceContent>
  <voiceFileName>
    <!--ro, req, string, 语音文件名, range:[,]-->test
  </voiceFileName>
  <voicePlate>
    <!--ro, opt, bool, 语音播报车牌-->true
  </voicePlate>
</TMEVoiceConfiguration>

26. 获取充电账户能力集

26.1 命令

GET /ISAPI/Parking/channels/<channelID>/chargeAmount/capabilities

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeAmount xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 收费信息, attr:version{req, string, 协议版本, range:[,]}-->
  <amount min="1" max="10">
    <!--ro, req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
  </amount>
</ChargeAmount>

27. 配置充电账户参数

27.1 命令

PUT /ISAPI/Parking/channels/<channelID>/chargeAmount

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ChargeAmount xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 收费信息, attr:version{req, string, 协议版本, range:[,]}-->
  <amount min="1" max="10">
    <!--req, int, 收费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
  </amount>
</ChargeAmount>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 获取充电缴费信息能力

28.1 命令

GET /ISAPI/Parking/channels/<channelID>/paperChargeInfo/capabilities

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PaperChargeInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 充电缴费信息能力, attr:version{req, string, 协议版本, range:[,]}-->
  <barCode>
    <!--ro, req, string, 条形码, range:[1,16]-->test
  </barCode>
  <licensePlate>
    <!--ro, req, string, 车牌号, range:[1,16]-->test
  </licensePlate>
  <inTime opt="YYYY-MM-DD HH:MM:SS">
    <!--ro, req, datetime, 入场时间, attr:opt{req, string, 取值范围, range:[,]}-->1970-01-01T00:00:00+08:00
  </inTime>
  <paymentTime opt="YYYY-MM-DD HH:MM:SS">
    <!--ro, req, datetime, 缴费时间, attr:opt{req, string, 取值范围, range:[,]}-->1970-01-01T00:00:00+08:00
  </paymentTime>
  <paymentAmount min="0" max="10000">
    <!--ro, req, int, 缴费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
  </paymentAmount>
  <outTimeOut min="0" max="60">
    <!--ro, req, int, 缴费出场失效时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </outTimeOut>
  <outType opt="noOut,out">
    <!--ro, req, enum, 是否出场, subType:string, [noOut#未出场,out#已出场], attr:opt{req, string, 取值范围, range:[,]}-->noOut
  </outType>
</PaperChargeInfo>

29. 配置充电缴费信息

29.1 命令

PUT /ISAPI/Parking/channels/<channelID>/paperChargeInfo

29.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PaperChargeInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 充电缴费信息能力, attr:version{req, string, 协议版本, range:[,]}-->
  <barCode min="1" max="16">
    <!--req, string, 条形码, range:[1,16], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->&gt; test
  </barCode>
  <licensePlate max="16">
    <!--req, string, 车牌号, range:[1,16], attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </licensePlate>
  <inTime opt="YYYY-MM-DD HH:MM:SS">
    <!--req, datetime, 入场时间, attr:opt{req, string, 取值范围, range:[,]}-->1970-01-01T00:00:00+08:00
  </inTime>
  <paymentTime opt="YYYY-MM-DD HH:MM:SS">
    <!--req, datetime, 缴费时间, attr:opt{req, string, 取值范围, range:[,]}-->1970-01-01T00:00:00+08:00
  </paymentTime>
  <paymentAmount min="0" max="10000">
    <!--req, int, 缴费金额, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:单位：分-->1
  </paymentAmount>
  <outTimeOut min="0" max="60">
    <!--req, int, 缴费出场失效时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </outTimeOut>
  <outType opt="noOut,out">
    <!--req, enum, 是否出场, subType:string, [noOut#未出场,out#已出场], attr:opt{req, string, 取值范围, range:[,]}-->noOut
  </outType>
</PaperChargeInfo>

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

30. 获取纸票打印格式内容能力

30.1 命令

GET /ISAPI/Parking/channels/<channelID>/paperPrintFormatInfo/capabilities

30.2 输入参数

无

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PaperPrintFormatInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 纸票打印格式内容下发, attr:version{req, string, 协议版本, range:[,]}-->
  <titleInfo min="0" max="64">
    <!--ro, req, string, 纸票标题内容, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </titleInfo>
  <customInfo min="0" max="64">
    <!--ro, req, string, 纸票自定义信息内容, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </customInfo>
  <phoneNumber min="0" max="16">
    <!--ro, req, string, 联系电话, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </phoneNumber>
  <printInTimeEnabled>
    <!--ro, req, bool, 是否打印入场时间-->true
  </printInTimeEnabled>
</PaperPrintFormatInfo>

31. 配置纸票打印格式内容

31.1 命令

PUT /ISAPI/Parking/channels/<channelID>/paperPrintFormatInfo

31.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PaperPrintFormatInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 纸票打印格式内容下发, attr:version{req, string, 协议版本, range:[,]}-->
  <titleInfo>
    <!--req, string, 纸票标题内容, range:[0,64]-->test
  </titleInfo>
  <customInfo>
    <!--req, string, 纸票自定义信息内容, range:[0,64]-->test
  </customInfo>
  <phoneNumber>
    <!--req, string, 联系电话, range:[0,16]-->test
  </phoneNumber>
  <printInTimeEnabled>
    <!--req, bool, 是否打印入场时间-->true
  </printInTimeEnabled>
</PaperPrintFormatInfo>

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

32. 获取纸票打印格式内容

32.1 命令

GET /ISAPI/Parking/channels/<channelID>/paperPrintFormatInfo

32.2 输入参数

无

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PaperPrintFormatInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 纸票打印格式内容下发, attr:version{req, string, 协议版本, range:[,]}-->
  <titleInfo>
    <!--ro, req, string, 纸票标题内容, range:[0,64]-->test
  </titleInfo>
  <customInfo>
    <!--ro, req, string, 纸票自定义信息内容, range:[0,64]-->test
  </customInfo>
  <phoneNumber>
    <!--ro, req, string, 联系电话, range:[0,16]-->test
  </phoneNumber>
  <printInTimeEnabled>
    <!--ro, req, bool, 是否打印入场时间-->true
  </printInTimeEnabled>
</PaperPrintFormatInfo>

33. 查询出入口卡片信息

33.1 命令

POST /ISAPI/Parking/channels/<channelID>/search/TMECard

33.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMECardSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <cardNo>
    <!--opt, string, 卡号, range:[,], desc:支持多选,逗号分隔-->test
  </cardNo>
  <type opt="fixed,temporary">
    <!--opt, string, 卡片类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:支持多选,逗号分隔,fixed-固定卡,temporary-临时卡-->fixed
  </type>
  <status opt="normal,reportLoss,cancel">
    <!--opt, string, 卡片状态, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:支持多选,逗号分隔,normal-正常,reportLoss-挂失,cancel-注销-->normal
  </status>
  <startTime>
    <!--opt, datetime, 有效开始时间-->1970-01-01T00:00:00+08:00
  </startTime>
  <endTime>
    <!--opt, datetime, 有效结束时间-->1970-01-01T00:00:00+08:00
  </endTime>
</TMECardSearchDescription>

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMECardSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <CardList>
    <!--ro, opt, array, 卡片信息列表, subType:object, range:[,]-->
    <Card>
      <!--ro, opt, object, 卡片信息-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <cardNo>
        <!--ro, req, string, 卡号, range:[,]-->test
      </cardNo>
      <ruleID>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </ruleID>
      <type opt="fixed,temporary">
        <!--ro, req, enum, 卡片类型, subType:string, [fixed#固定卡,temporary#临时卡], attr:opt{req, string, 取值范围, range:[,]}-->fixed
      </type>
      <status opt="normal,reportLoss,cancel">
        <!--ro, req, enum, 卡片状态, subType:string, [normal#正常,reportLoss#挂失,cancel#注销], attr:opt{req, string, 取值范围, range:[,]}-->normal
      </status>
      <startTime>
        <!--ro, req, datetime, 有效开始时间-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--ro, req, datetime, 有效结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </Card>
  </CardList>
</TMECardSearchResult>

34. 查询出入口车辆信息

34.1 命令

POST /ISAPI/Parking/channels/<channelID>/search/TMEVehicle

34.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEVehicleSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <licensePlate>
    <!--opt, string, 车牌号码, range:[,], desc:支持多选,逗号分隔-->test
  </licensePlate>
  <vehicleType opt="other,small,large,notype">
    <!--req, string, 车辆类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:支持多选,逗号分隔，other-其他，small-小型车，large-大型车，notype-未知-->other
  </vehicleType>
  <plateColor opt="blue,yellow,white,black,other">
    <!--req, string, 车牌颜色, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:支持多选,逗号分隔，blue-蓝，yellow-黄,white-白,black-黑,other-其他-->blue
  </plateColor>
</TMEVehicleSearchDescription>

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TMEVehicleSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态字符串描述, subType:string, [OK#查询结束,MORE#还有数据等待查询,NO MATCH#没有匹配数据]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <VehicleInfoList>
    <!--ro, opt, array, 车辆信息列表, subType:object, range:[,]-->
    <VehicleInfo>
      <!--ro, opt, object, 车辆信息-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <relatedCardNo>
        <!--ro, opt, string, 关联卡号, range:[,], desc:可以为空，在一车多卡的情况,可以复数填写,逗号隔开-->test
      </relatedCardNo>
      <licensePlate>
        <!--ro, req, string, 车牌号码, range:[,]-->test
      </licensePlate>
      <delete>
        <!--ro, req, bool, 是否删除-->true
      </delete>
      <vehicleType opt="other,small,large,notype">
        <!--ro, req, enum, 车辆类型, subType:string, [other#其他,small#小型车,large#大型车,notype#未知], attr:opt{req, string, 取值范围, range:[,]}-->other
      </vehicleType>
      <plateColor opt="blue,yellow,white,black,other">
        <!--ro, req, enum, 车牌颜色, subType:string, [blue#蓝,yellow#黄,white#白,black#黑,other#其他], attr:opt{req, string, 取值范围, range:[,]}-->blue
      </plateColor>
    </VehicleInfo>
  </VehicleInfoList>
</TMEVehicleSearchResult>

35. 获取车位信息能力集

35.1 命令

GET /ISAPI/Parking/channels/<channelID>/parkingSpaceInfo/capabilities

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingSpaceInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 车位信息, attr:version{req, string, 协议版本, range:[,]}-->
  <totalParkingLot min="0" max="10000">
    <!--ro, req, int, 总停车位数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </totalParkingLot>
  <currentParkingLot min="0" max="10000">
    <!--ro, req, int, 当前剩余停车位数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </currentParkingLot>
</ParkingSpaceInfo>

36. 配置车位信息

36.1 命令

PUT /ISAPI/Parking/channels/<channelID>/parkingSpaceInfo

36.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ParkingSpaceInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 车位信息, attr:version{req, string, 协议版本, range:[,]}-->
  <totalParkingLot min="0" max="10000">
    <!--req, int, 总停车位数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </totalParkingLot>
  <currentParkingLot min="0" max="10000">
    <!--req, int, 当前剩余停车位数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </currentParkingLot>
</ParkingSpaceInfo>

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37. 获取语音播报控制参数能力

37.1 命令

GET /ISAPI/Parking/channels/<channelID>/voiceBroadcastInfo/capabilities

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceBroadcastInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 语音播报控制参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <information min="0" max="128">
    <!--ro, req, string, 语音播报内容, range:[0,128], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </information>
  <customAppendInfo>
    <!--ro, opt, string, 自定义附加语音播报信息, range:[,]-->test
  </customAppendInfo>
  <broadcastNum min="1" max="10">
    <!--ro, opt, string, 语音播报次数, range:[1,10], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </broadcastNum>
  <intervalTime min="1" max="5">
    <!--ro, opt, string, 语音播报间隔时间, range:[1,5], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:仅当<broadcastNum>字段存在时有效,单位为：s-->test
  </intervalTime>
</VoiceBroadcastInfo>

38. 获取语音播报控制参数

38.1 命令

GET /ISAPI/Parking/channels/<channelID>/voiceBroadcastInfo

38.2 输入参数

无

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceBroadcastInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 语音播报控制参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <information>
    <!--ro, req, string, 语音播报内容, range:[0,128], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url参数voiceContent-->test
  </information>
  <broadcastNum>
    <!--ro, opt, string, 语音播报次数, range:[1,10]-->test
  </broadcastNum>
  <intervalTime>
    <!--ro, opt, string, 语音播报间隔时间, range:[1,5], desc:仅当<broadcastNum>字段存在时有效,单位为：s-->test
  </intervalTime>
  <voiceFileName>
    <!--ro, opt, string, 音频文件名, range:[,], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url中的<NAME>-->test
  </voiceFileName>
  <customAppendInfo>
    <!--ro, opt, string, 自定义附加语音播报信息, range:[,]-->test
  </customAppendInfo>
</VoiceBroadcastInfo>

39. 配置语音播报控制参数

39.1 命令

PUT /ISAPI/Parking/channels/<channelID>/voiceBroadcastInfo

39.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceBroadcastInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 语音播报控制参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <information>
    <!--req, string, 语音播报内容, range:[0,128], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url参数voiceContent-->test
  </information>
  <broadcastNum>
    <!--opt, string, 语音播报次数, range:[1,10]-->test
  </broadcastNum>
  <intervalTime>
    <!--opt, string, 语音播报间隔时间, range:[1,5], desc:仅当<broadcastNum>字段存在时有效,单位为：s-->test
  </intervalTime>
  <voiceFileName>
    <!--opt, string, 音频文件名, range:[,], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url中的<NAME>-->test
  </voiceFileName>
  <customAppendInfo>
    <!--opt, string, 自定义附加语音播报信息, range:[,]-->test
  </customAppendInfo>
</VoiceBroadcastInfo>

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

40. 获取智能锁闸参数能力集

40.1 命令

GET /ISAPI/Parking/channels/<channelID>/lockGateConfiguration/capabilities

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LockGateConfigList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 智能锁闸参数配置信息, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <LockGateConfig>
    <!--ro, opt, object, 智能锁闸单个时间段参数配置信息-->
    <beginTime>
      <!--ro, req, time, 开始时间-->00:00:00+08:00
    </beginTime>
    <endTime>
      <!--ro, req, time, 结束时间-->00:00:00+08:00
    </endTime>
  </LockGateConfig>
</LockGateConfigList>

41. 获取智能锁闸参数

41.1 命令

GET /ISAPI/Parking/channels/<channelID>/lockGateConfiguration

41.2 输入参数

无

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LockGateConfigList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 智能锁闸参数配置信息, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <LockGateConfig>
    <!--ro, opt, object, 智能锁闸单个时间段参数配置信息-->
    <beginTime>
      <!--ro, req, time, 开始时间-->00:00:00+08:00
    </beginTime>
    <endTime>
      <!--ro, req, time, 结束时间-->00:00:00+08:00
    </endTime>
  </LockGateConfig>
</LockGateConfigList>

42. 配置智能锁闸参数

42.1 命令

PUT /ISAPI/Parking/channels/<channelID>/lockGateConfiguration

42.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LockGateConfigList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 智能锁闸参数配置信息, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <LockGateConfig>
    <!--opt, object, 智能锁闸单个时间段参数配置信息-->
    <beginTime>
      <!--req, time, 开始时间-->00:00:00+08:00
    </beginTime>
    <endTime>
      <!--req, time, 结束时间-->00:00:00+08:00
    </endTime>
  </LockGateConfig>
</LockGateConfigList>

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

43. 配置导入语音文件

43.1 命令

PUT /ISAPI/Parking/channels/<channelID>/VoiceFileUpload/<NAME>?type=<type>&voiceContent=<voiceContent>

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

44. 获取音频文件列表

44.1 命令

GET /ISAPI/Parking/channels/<channelID>/VoiceFileList

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceFileList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 语音文件列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <VoiceFile>
    <!--ro, opt, object, 语音文件-->
    <voiceFileName>
      <!--ro, req, string, 语音文件名, range:[,]-->test
    </voiceFileName>
    <voiceContent>
      <!--ro, req, string, 语音文件播报内容, range:[,]-->test
    </voiceContent>
    <type>
      <!--ro, opt, enum, 文件用途, subType:string, [all#所有,loop#循环播报,alarm#报警播报,paymentSucceeded#支付成功,paymentFailed#支付失败,triggerPayment#触发支付,triggerPaymentwithAmount#播报金额]-->all
    </type>
  </VoiceFile>
</VoiceFileList>

45. 删除音频文件列表

45.1 命令

DELETE /ISAPI/Parking/channels/<channelID>/VoiceFileList

45.2 输入参数

无

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

46. 获取语音播报控制参数能力

46.1 命令

GET /ISAPI/Parking/channels/<channelID>/voiceBroadcastInfo/capabilities

46.2 输入参数

无

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceBroadcastInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 语音播报控制参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <information min="0" max="128">
    <!--ro, req, string, 语音播报内容, range:[0,128], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </information>
  <customAppendInfo>
    <!--ro, opt, string, 自定义附加语音播报信息, range:[,]-->test
  </customAppendInfo>
  <broadcastNum min="1" max="10">
    <!--ro, opt, string, 语音播报次数, range:[1,10], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </broadcastNum>
  <intervalTime min="1" max="5">
    <!--ro, opt, string, 语音播报间隔时间, range:[1,5], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:仅当<broadcastNum>字段存在时有效,单位为：s-->test
  </intervalTime>
</VoiceBroadcastInfo>

47. 获取语音播报控制参数

47.1 命令

GET /ISAPI/Parking/channels/<channelID>/voiceBroadcastInfo

47.2 输入参数

无

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceBroadcastInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 语音播报控制参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <information>
    <!--ro, req, string, 语音播报内容, range:[0,128], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url参数voiceContent-->test
  </information>
  <broadcastNum>
    <!--ro, opt, string, 语音播报次数, range:[1,10]-->test
  </broadcastNum>
  <intervalTime>
    <!--ro, opt, string, 语音播报间隔时间, range:[1,5], desc:仅当<broadcastNum>字段存在时有效,单位为：s-->test
  </intervalTime>
  <voiceFileName>
    <!--ro, opt, string, 音频文件名, range:[,], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url中的<NAME>-->test
  </voiceFileName>
  <customAppendInfo>
    <!--ro, opt, string, 自定义附加语音播报信息, range:[,]-->test
  </customAppendInfo>
</VoiceBroadcastInfo>

48. 配置语音播报控制参数

48.1 命令

PUT /ISAPI/Parking/channels/<channelID>/voiceBroadcastInfo

48.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VoiceBroadcastInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 语音播报控制参数配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <information>
    <!--req, string, 语音播报内容, range:[0,128], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url参数voiceContent-->test
  </information>
  <broadcastNum>
    <!--opt, string, 语音播报次数, range:[1,10]-->test
  </broadcastNum>
  <intervalTime>
    <!--opt, string, 语音播报间隔时间, range:[1,5], desc:仅当<broadcastNum>字段存在时有效,单位为：s-->test
  </intervalTime>
  <voiceFileName>
    <!--opt, string, 音频文件名, range:[,], desc:如果是PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>上传文件，则对应url中的<NAME>-->test
  </voiceFileName>
  <customAppendInfo>
    <!--opt, string, 自定义附加语音播报信息, range:[,]-->test
  </customAppendInfo>
</VoiceBroadcastInfo>

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

49. 获取LED配置能力

49.1 命令

GET /ISAPI/Traffic/LEDCfg/capabilities?format=json

49.2 输入参数

无

49.3 输出参数

{
    "LEDCfg": {
    /*ro, opt, object, LED配置能力*/
        "Brightness": {
        /*ro, opt, object, 亮度*/
            "mode": {
            /*ro, req, object, 亮度调节模式*/
                "@opt": ["manual", "schedule"]
                /*ro, req, array, 取值范围, subType:string, range:[,], desc:manual-手动，schedule-时刻表*/
            },
            "brightness": {
            /*ro, req, object, 亮度取值范围, desc:0~15,0-表示最暗，15-表示最亮，默认：15,当mode为manual时生效*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "ScheduleList": {
            /*ro, opt, object, 时间段列表*/
                "@size":  3,
                /*ro, req, int, 最大个数, range:[,], step:, unit:, unitType:*/
                "startTime":  "00:00",
                /*ro, req, string, 一天之内的小时分钟, range:[,], desc:当startTime小于endTime时表示跨天*/
                "endTime":  "00:00",
                /*ro, req, string, 一天之内的小时分钟, range:[,], desc:当startTime小于endTime时表示跨天*/
                "brightness": {
                /*ro, req, object, 亮度取值范围, desc:0~15,0-表示最暗，15-表示最亮，默认：15,当mode为manual时生效*/
                    "@min":  1,
                    /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  255
                    /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                }
            }
        },
        "NormalDisplay": {
        /*ro, req, object, 常规显示*/
            "@size":  3,
            /*ro, req, int, 常规显示个数, range:[,], step:, unit:, unitType:*/
            "enabled": {
            /*ro, opt, object, 使能*/
                "@opt": [true, false]
                /*ro, req, array, 取值范围, subType:bool, range:[,]*/
            },
            "color": {
            /*ro, opt, object, 颜色*/
                "@opt": ["red", "green", "yellow", "blue", "purple", "cyan", "white"]
                /*ro, req, array, 取值范围, subType:string, range:[,], desc:red-红，green-绿，yellow-黄，blue-蓝，purple-紫，cyan-青，white-白*/
            },
            "style": {
            /*ro, opt, object, 显示方式*/
                "@opt": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
                /*ro, req, array, 取值范围, subType:int, range:[,], desc:0-静止显示，1-向上移动，2-向下移动，3-向左移动，4-向右移动，5-向上连续移动，6-向下连续移动，7-向左连续移动，8-向右连续移动，9-闪烁*/
            },
            "duration": {
            /*ro, opt, object, 显示时长, desc:单位秒*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "speed": {
            /*ro, opt, object, 显示速度, desc:1~255；1-最快，255-最慢；默认：10*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "dateTime": {
            /*ro, opt, object, 显示时间*/
                "@opt": [true, false]
                /*ro, req, array, 取值范围, subType:bool, range:[,]*/
            },
            "text": {
            /*ro, opt, object, 指定显示内容*/
                "@size":  128
                /*ro, req, int, 最大长度, range:[,], step:, unit:, unitType:*/
            }
        },
        "SucceededDisplay": {
        /*ro, req, object, 支付成功显示*/
            "@size":  3,
            /*ro, req, int, 支付成功显示个数, range:[,], step:, unit:, unitType:*/
            "enabled": {
            /*ro, opt, object, 使能*/
                "@opt": [true, false]
                /*ro, req, array, 取值范围, subType:bool, range:[,]*/
            },
            "color": {
            /*ro, opt, object, 颜色*/
                "@opt": ["red", "green", "yellow", "blue", "purple", "cyan", "white"]
                /*ro, req, array, 取值范围, subType:string, range:[,], desc:red-红，green-绿，yellow-黄，blue-蓝，purple-紫，cyan-青，white-白*/
            },
            "style": {
            /*ro, opt, object, 显示方式*/
                "@opt": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
                /*ro, req, array, 取值范围, subType:int, range:[,], desc:0-静止显示，1-向上移动，2-向下移动，3-向左移动，4-向右移动，5-向上连续移动，6-向下连续移动，7-向左连续移动，8-向右连续移动，9-闪烁*/
            },
            "duration": {
            /*ro, opt, object, 显示时长, desc:单位秒*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "speed": {
            /*ro, opt, object, 显示速度, desc:1~255；1-最快，255-最慢；默认：10*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "dateTime": {
            /*ro, opt, object, 显示时间*/
                "@opt": [true, false]
                /*ro, req, array, 取值范围, subType:bool, range:[,]*/
            },
            "text": {
            /*ro, opt, object, 指定显示内容*/
                "@size":  128
                /*ro, req, int, 最大长度, range:[,], step:, unit:, unitType:*/
            }
        },
        "FailedDisplay": {
        /*ro, req, object, 支付失败显示*/
            "@size":  3,
            /*ro, req, int, 常规显示个数, range:[,], step:, unit:, unitType:*/
            "enabled": {
            /*ro, opt, object, 使能*/
                "@opt": ["true", "false"]
                /*ro, opt, array, 取值范围, subType:string, range:[,]*/
            },
            "color": {
            /*ro, opt, object, 颜色*/
                "@opt": ["red", "green", "yellow", "blue", "purple", "cyan", "white"]
                /*ro, req, array, 取值范围, subType:string, range:[,], desc:red-红，green-绿，yellow-黄，blue-蓝，purple-紫，cyan-青，white-白*/
            },
            "style": {
            /*ro, opt, object, 显示方式*/
                "@opt": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
                /*ro, req, array, 取值范围, subType:int, range:[,], desc:0-静止显示，1-向上移动，2-向下移动，3-向左移动，4-向右移动，5-向上连续移动，6-向下连续移动，7-向左连续移动，8-向右连续移动，9-闪烁*/
            },
            "duration": {
            /*ro, opt, object, 显示时长, desc:单位秒*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "speed": {
            /*ro, opt, object, 显示速度, desc:1~255；1-最快，255-最慢；默认：10*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "dateTime": {
            /*ro, opt, object, 显示时间*/
                "@opt": [true, false]
                /*ro, req, array, 取值范围, subType:bool, range:[,]*/
            },
            "text": {
            /*ro, opt, object, 指定显示内容*/
                "@size":  128
                /*ro, req, int, 最大长度, range:[,], step:, unit:, unitType:*/
            },
            "faultToleranceTimes": {
            /*ro, opt, object, 容错次数*/
                "@min":  0,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  10,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  3
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            }
        },
        "TriggerDisplay": {
        /*ro, req, object, 扫码触发显示*/
            "@size":  3,
            /*ro, req, int, 扫码触发显示个数, range:[,], step:, unit:, unitType:*/
            "enabled": {
            /*ro, opt, object, 使能*/
                "@opt": [true, false]
                /*ro, req, array, 取值范围, subType:bool, range:[,]*/
            },
            "color": {
            /*ro, opt, object, 颜色*/
                "@opt": ["red", "green", "yellow", "blue", "purple", "cyan", "white"],
                /*ro, req, array, 取值范围, subType:string, range:[,], desc:red-红，green-绿，yellow-黄，blue-蓝，purple-紫，cyan-青，white-白*/
                "@def":  "red"
                /*ro, req, string, 默认值, range:[,]*/
            },
            "style": {
            /*ro, opt, object, 显示方式*/
                "@opt": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
                /*ro, req, array, 取值范围, subType:int, range:[,], desc:0-静止显示，1-向上移动，2-向下移动，3-向左移动，4-向右移动，5-向上连续移动，6-向下连续移动，7-向左连续移动，8-向右连续移动，9-闪烁*/
                "@def":  0
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "duration": {
            /*ro, opt, object, 显示时长, desc:单位秒*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  5
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "speed": {
            /*ro, opt, object, 显示速度, desc:1~255；1-最快，255-最慢；默认：10*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  255,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "@def":  10
                /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
            },
            "text": {
            /*ro, opt, object, 指定显示内容*/
                "@size":  32
                /*ro, req, int, 最大长度, range:[,], step:, unit:, unitType:*/
            }
        }
    }
}

50. 获取LED配置参数

50.1 命令

GET /ISAPI/Traffic/LEDCfg?format=json

50.2 输入参数

无

50.3 输出参数

{
    "LEDCfg": {
    /*ro, opt, object, LED配置参数*/
        "Brightness": {
        /*ro, opt, object, 亮度*/
            "mode":  "manual",
            /*ro, req, enum, 亮度调节模式, subType:string, [manual#手动,schedule#时刻表]*/
            "brightness":  15,
            /*ro, req, int, 亮度值, range:[0,15], step:, unit:, unitType:, dep:and,{$.LEDCfg.Brightness.mode,eq,manual}, desc:0-表示最暗，15-表示最亮，默认：15*/
            "ScheduleList": [
            /*ro, opt, array, 时间列表, subType:object, range:[,], dep:and,{$.LEDCfg.Brightness.mode,eq,schedule}*/
                {
                    "startTime":  "00:00",
                    /*ro, req, string, 一天之内的小时分钟, range:[,], desc:当startTime小于endTime时表示跨天*/
                    "endTime":  "00:00",
                    /*ro, req, string, 一天之内的小时分钟, range:[,], desc:当startTime小于endTime时表示跨天*/
                    "brightness":  15
                    /*ro, req, int, 亮度值, range:[0,15], step:, unit:, unitType:, desc:0-表示最暗，15-表示最亮，默认：15*/
                }
            ]
        },
        "NormalDisplay": [
        /*ro, req, array, 常规显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "dateTime":  false,
                /*ro, opt, bool, 显示时间*/
                "text":  "test"
                /*ro, opt, string, 指定显示的内容, range:[,]*/
            }
        ],
        "SucceededDisplay": [
        /*ro, req, array, 支付成功显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "dateTime":  false,
                /*ro, opt, bool, 显示时间*/
                "text":  "test"
                /*ro, opt, string, 指定显示的内容, range:[,]*/
            }
        ],
        "FailedDisplay": [
        /*ro, req, array, 支付失败显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "dateTime":  false,
                /*ro, opt, bool, 显示时间*/
                "text":  "test",
                /*ro, opt, string, 指定显示的内容, range:[,]*/
                "faultToleranceTimes":  3
                /*ro, opt, int, 容错次数, range:[,], step:, unit:, unitType:*/
            }
        ],
        "TriggerDisplay": [
        /*ro, req, array, 扫码触发显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "text":  "test"
                /*ro, opt, string, 指定显示的内容, range:[,]*/
            }
        ],
        "paymentTimeout":  1,
        /*ro, opt, int, 支付超时时长, range:[1,300], step:, unit:s, unitType:时间, desc:默认:300s*/
        "normalDisplayDurationAfterPayment":  1
        /*ro, opt, int, 支付后返回常规显示时长, range:[1,180], step:, unit:s, unitType:时间, desc:默认:10s*/
    }
}

51. 配置LED配置参数

51.1 命令

PUT /ISAPI/Traffic/LEDCfg?format=json

51.2 输入参数

{
    "LEDCfg": {
    /*ro, opt, object, LED配置参数*/
        "Brightness": {
        /*ro, opt, object, 亮度*/
            "mode":  "manual",
            /*ro, req, enum, 亮度调节模式, subType:string, [manual#手动,schedule#时刻表]*/
            "brightness":  15,
            /*ro, req, int, 亮度值, range:[0,15], step:, unit:, unitType:, dep:and,{$.LEDCfg.Brightness.mode,eq,manual}, desc:0-表示最暗，15-表示最亮，默认：15*/
            "ScheduleList": [
            /*ro, opt, array, 时间列表, subType:object, range:[,], dep:and,{$.LEDCfg.Brightness.mode,eq,schedule}*/
                {
                    "startTime":  "00:00",
                    /*ro, req, string, 一天之内的小时分钟, range:[,], desc:当startTime小于endTime时表示跨天*/
                    "endTime":  "00:00",
                    /*ro, req, string, 一天之内的小时分钟, range:[,], desc:当startTime小于endTime时表示跨天*/
                    "brightness":  15
                    /*ro, req, int, 亮度值, range:[0,15], step:, unit:, unitType:, desc:0-表示最暗，15-表示最亮，默认：15*/
                }
            ]
        },
        "NormalDisplay": [
        /*ro, req, array, 常规显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "dateTime":  false,
                /*ro, opt, bool, 显示时间*/
                "text":  "test"
                /*ro, opt, string, 指定显示的内容, range:[,]*/
            }
        ],
        "SucceededDisplay": [
        /*ro, req, array, 支付成功显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "dateTime":  false,
                /*ro, opt, bool, 显示时间*/
                "text":  "test"
                /*ro, opt, string, 指定显示的内容, range:[,]*/
            }
        ],
        "FailedDisplay": [
        /*ro, req, array, 支付失败显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "dateTime":  false,
                /*ro, opt, bool, 显示时间*/
                "text":  "test",
                /*ro, opt, string, 指定显示的内容, range:[,]*/
                "faultToleranceTimes":  3
                /*ro, opt, int, 容错次数, range:[,], step:, unit:, unitType:*/
            }
        ],
        "TriggerDisplay": [
        /*ro, req, array, 扫码触发显示, subType:object, range:[,]*/
            {
                "enabled":  true,
                /*ro, req, bool, 使能*/
                "color":  "red",
                /*ro, req, enum, 颜色, subType:string, [red#红,green#绿,yellow#黄,blue#蓝,purple#紫,cyan#青,white#白]*/
                "style":  0,
                /*ro, req, enum, 显示方式, subType:int, [0#静止显示,1#向上移动,2#向下移动,3#向左移动,4#向右移动,5#向上连续移动,6#向下连续移动,7#向左连续移动,8#向右连续移动,9#闪烁]*/
                "duration":  10,
                /*ro, req, int, 持续时间, range:[,], step:, unit:s, unitType:时间*/
                "speed":  10,
                /*ro, req, int, 显示速度, range:[,], step:, unit:, unitType:*/
                "text":  "test"
                /*ro, opt, string, 指定显示的内容, range:[,]*/
            }
        ],
        "paymentTimeout":  1,
        /*ro, opt, int, 支付超时时长, range:[1,300], step:, unit:s, unitType:时间, desc:默认:300s*/
        "normalDisplayDurationAfterPayment":  1
        /*ro, opt, int, 支付后返回常规显示时长, range:[1,180], step:, unit:s, unitType:时间, desc:默认:10s*/
    }
}

51.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

52. 获取支付结果推送能力

52.1 命令

GET /ISAPI/Traffic/paymentInfo/capabilities?format=json

52.2 输入参数

无

52.3 输出参数

{
    "PaymentInfo": {
    /*ro, req, object, 支付信息*/
        "UUID": {
        /*ro, opt, object, UUID, desc:UUID用于匹配扫码信息上报*/
            "@size":  64
            /*ro, opt, int, UUID最大长度, range:[,], step:, unit:, unitType:*/
        },
        "paymentState": {
        /*ro, req, object, 支付状态*/
            "@opt": ["paying", "succeeded", "failed", "defalut"]
            /*ro, opt, array, 支付中, subType:string, range:[,], desc:paying-触发设备扫码，succeeded-收款成功，failed-收款失败，defalut-默认状态*/
        },
        "paymentMessage": {
        /*ro, opt, object, 支付信息, desc:支付失败时为支付失败原因*/
            "@size":  256
            /*ro, opt, int, 最大长度, range:[,], step:, unit:, unitType:*/
        },
        "amounts": {
        /*ro, opt, object, 金额*/
            "@min":  0.0,
            /*ro, req, float, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  10000.0
            /*ro, req, float, 最大值, range:[,], step:, unit:, unitType:*/
        }
    }
}

53. 配置支付结果

53.1 命令

PUT /ISAPI/Traffic/paymentInfo?format=json

53.2 输入参数

{
    "PaymentInfo": {
    /*req, object, 支付信息*/
        "UUID":  "123456789",
        /*req, string, 本条消息的UUID, range:[,], desc:用于匹配扫码信息上报*/
        "paymentState":  "failed",
        /*req, enum, 支付结果, subType:string, [succeeded#成功,failed#失败,defalut#默认状态]*/
        "amounts":  20.0,
        /*opt, float, 金额, range:[,], step:, unit:, unitType:*/
        "paymentMessage":  "余额不足"
        /*opt, string, 支付信息, range:[,]*/
    }
}

53.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

54. 获取读写器基本参数能力

54.1 命令

GET /ISAPI/Traffic/UHFRFIDReader/basicInformation/capabilities

54.2 输入参数

无

54.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BasicInformation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 读写器基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <workMode opt="network,serialPort,wiegand">
    <!--ro, req, enum, 工作模式, subType:string, [network#网络,serialPort#串口,wiegand#韦根], attr:opt{req, string, 取值范围, range:[,]}-->network
  </workMode>
  <workFrequencyType opt="chinese,american,european,japanese" def="chinese">
    <!--ro, req, enum, 工作频率类型, subType:string, [chinese#中国频率920～925MHz,american#美国频率902～928MHz,european#欧洲频率865～868MHz,japanese#日本频率952～954MHz], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->chinese
  </workFrequencyType>
  <outputPower min="15" max="30">
    <!--ro, req, int, 输出功率, range:[15,30], step:, unit:dBm, unitType:功率, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </outputPower>
  <readWriteMode opt="single,timing,trigger">
    <!--ro, req, enum, 读写模式, subType:string, [single#主从模式（在线工作模式）,timing#定时模式,trigger#触发模式], attr:opt{req, string, 取值范围, range:[,]}-->single
  </readWriteMode>
  <TimeBlockList size="3">
    <!--ro, opt, array, 时间段列表, subType:object, range:[0,3], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, req, object, 时间段-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <repeatLabelFilterTime min="1" max="600">
    <!--ro, req, int, 重复标签过滤时间, range:[1,600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:配置该时间后,重复标签的报警在该时间段内只会上报一次。-->1
  </repeatLabelFilterTime>
  <centerFrequency opt="2.4G,840M">
    <!--ro, opt, enum, 中心频率, subType:string, [2.4G#2.4G,840M#840M], attr:opt{req, string, 取值范围, range:[,]}, desc:读卡器和RFID交互的通信频率-->2.4G
  </centerFrequency>
  <beatheartInterval min="0" max="10" def="3">
    <!--ro, opt, int, 心跳间隔, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </beatheartInterval>
  <attenVal min="0" max="31">
    <!--ro, opt, int, 阅读器衰减值, range:[0,31], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </attenVal>
  <flowStatistics>
    <!--ro, opt, int, 标签流量, range:[,], step:, unit:, unitType:-->1
  </flowStatistics>
  <regionID>
    <!--ro, opt, string, 区域ID, range:[,]-->test
  </regionID>
  <uploadType opt="wire,4G,RS485">
    <!--ro, opt, string, 数据上传方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </uploadType>
</BasicInformation>

55. 获取读写器基本参数

55.1 命令

GET /ISAPI/Traffic/UHFRFIDReader/basicInformation

55.2 输入参数

无

55.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BasicInformation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 读写器基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <workMode opt="network,serialPort,wiegand">
    <!--ro, req, enum, 工作模式, subType:string, [network#网络,serialPort#串口,wiegand#韦根], attr:opt{req, string, 取值范围, range:[,]}-->network
  </workMode>
  <workFrequencyType opt="chinese,american,european,japanese" def="chinese">
    <!--ro, req, enum, 工作频率类型, subType:string, [chinese#中国频率920～925MHz,american#美国频率902～928MHz,european#欧洲频率865～868MHz,japanese#日本频率952～954MHz], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->chinese
  </workFrequencyType>
  <outputPower min="15" max="30">
    <!--ro, req, int, 输出功率, range:[15,30], step:, unit:dBm, unitType:功率, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </outputPower>
  <readWriteMode opt="single,timing,trigger">
    <!--ro, req, enum, 读写模式, subType:string, [single#主从模式（在线工作模式）,timing#定时模式,trigger#触发模式], attr:opt{req, string, 取值范围, range:[,]}-->single
  </readWriteMode>
  <TimeBlockList size="3">
    <!--ro, opt, array, 时间段列表, subType:object, range:[0,3], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:当且仅当readWriteMode为timing时"该节点才存在-->
    <TimeBlock>
      <!--ro, req, object, 时间段-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <repeatLabelFilterTime min="1" max="600">
    <!--ro, req, int, 重复标签过滤时间, range:[1,600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:配置该时间后,重复标签的报警在该时间段内只会上报一次。-->1
  </repeatLabelFilterTime>
  <centerFrequency>
    <!--ro, opt, enum, 中心频率, subType:string, [2.4G#2.4G,840M#840M], desc:读卡器和RFID交互的通信频率-->2.4G
  </centerFrequency>
  <beatheartInterval>
    <!--ro, opt, int, 心跳间隔, range:[,], step:, unit:, unitType:-->0
  </beatheartInterval>
  <attenVal>
    <!--ro, opt, int, 阅读器衰减值, range:[0,31], step:, unit:, unitType:-->0
  </attenVal>
  <flowStatistics>
    <!--ro, opt, int, 标签流量, range:[,], step:, unit:, unitType:-->1
  </flowStatistics>
  <regionID>
    <!--ro, opt, string, 区域ID, range:[,]-->test
  </regionID>
  <uploadType>
    <!--ro, opt, string, 数据上传方式, range:[,]-->test
  </uploadType>
</BasicInformation>

56. 配置读写器基本参数

56.1 命令

PUT /ISAPI/Traffic/UHFRFIDReader/basicInformation

56.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BasicInformation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 读写器基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <workMode opt="network,serialPort,wiegand">
    <!--req, enum, 工作模式, subType:string, [network#网络,serialPort#串口,wiegand#韦根], attr:opt{req, string, 取值范围, range:[,]}-->network
  </workMode>
  <workFrequencyType opt="chinese,american,european,japanese" def="chinese">
    <!--req, enum, 工作频率类型, subType:string, [chinese#中国频率920～925MHz,american#美国频率902～928MHz,european#欧洲频率865～868MHz,japanese#日本频率952～954MHz], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->chinese
  </workFrequencyType>
  <outputPower min="15" max="30">
    <!--req, int, 输出功率, range:[15,30], step:, unit:dBm, unitType:功率, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </outputPower>
  <readWriteMode opt="single,timing,trigger">
    <!--req, enum, 读写模式, subType:string, [single#主从模式（在线工作模式）,timing#定时模式,trigger#触发模式], attr:opt{req, string, 取值范围, range:[,]}-->single
  </readWriteMode>
  <TimeBlockList size="3">
    <!--opt, array, 时间段列表, subType:object, range:[0,3], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:当且仅当readWriteMode为timing时"该节点才存在-->
    <TimeBlock>
      <!--req, object, 时间段-->
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <repeatLabelFilterTime min="1" max="600">
    <!--req, int, 重复标签过滤时间, range:[1,600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:配置该时间后,重复标签的报警在该时间段内只会上报一次。-->1
  </repeatLabelFilterTime>
  <centerFrequency>
    <!--opt, enum, 中心频率, subType:string, [2.4G#2.4G,840M#840M], desc:读卡器和RFID交互的通信频率-->2.4G
  </centerFrequency>
  <beatheartInterval>
    <!--opt, int, 心跳间隔, range:[,], step:, unit:, unitType:-->0
  </beatheartInterval>
  <attenVal>
    <!--opt, int, 阅读器衰减值, range:[0,31], step:, unit:, unitType:-->0
  </attenVal>
  <flowStatistics>
    <!--opt, int, 标签流量, range:[,], step:, unit:, unitType:-->1
  </flowStatistics>
  <regionID>
    <!--opt, string, 区域ID, range:[,]-->test
  </regionID>
  <uploadType>
    <!--opt, string, 数据上传方式, range:[,]-->test
  </uploadType>
</BasicInformation>

56.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

57. 获取盘存测试参数能力

57.1 命令

GET /ISAPI/Traffic/UHFRFIDReader/hardDiskStorageTest/capabilities

57.2 输入参数

无

57.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HardDiskStorageTest xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 盘存测试参数, attr:version{req, string, 协议版本, range:[,]}-->
  <cardNo min="0" max="32">
    <!--ro, req, string, 卡号, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </cardNo>
  <rssi min="-100" max="100">
    <!--ro, req, int, 接收信号强度, range:[-100,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </rssi>
</HardDiskStorageTest>

58. 获取盘存测试参数

58.1 命令

GET /ISAPI/Traffic/UHFRFIDReader/hardDiskStorageTest

58.2 输入参数

无

58.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HardDiskStorageTest xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 盘存测试参数, attr:version{req, string, 协议版本, range:[,]}-->
  <cardNo>
    <!--ro, req, string, 卡号, range:[0,32]-->test
  </cardNo>
  <rssi>
    <!--ro, req, int, 接收信号强度, range:[-100,100], step:, unit:, unitType:-->0
  </rssi>
</HardDiskStorageTest>

59. 配置盘存测试参数

59.1 命令

PUT /ISAPI/Traffic/UHFRFIDReader/hardDiskStorageTest

59.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HardDiskStorageTest xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 盘存测试参数, attr:version{req, string, 协议版本, range:[,]}-->
  <cardNo>
    <!--req, string, 卡号, range:[0,32]-->test
  </cardNo>
  <rssi>
    <!--req, int, 接收信号强度, range:[-100,100], step:, unit:, unitType:-->0
  </rssi>
</HardDiskStorageTest>

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


交通车辆相关

1. 获取车辆检测参数能力

1.1 命令

GET /ISAPI/Traffic/channels/<channelID>/vehicleDetect/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleDetectCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 集成流程：新用户如果能力中有CRIndex字段, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <nation opt="EU,ER,EUandCIS,ME,APAC,AfricaAndAmerica,All">
    <!--ro, req, enum, 区域（地区）, subType:string, [AfricaAndAmerica#非美 Africa and America,AP#亚太区,All#所有区域（All Region）,ER#俄语区域（Russian Region）,EU#欧洲（Europe Region）,EUandCIS#欧洲&俄罗斯（EU&CIS）,ME#中东（Middle East）,All#所有区域], attr:opt{req, string, 取值范围, range:[,]}-->All
  </nation>
  <bestDetectionSize>
    <!--ro, opt, int, 最佳抓拍框大小像素, range:[0,1000], step:, unit:, unitType:, desc:抓拍框是一个正方形,这里表示的是正方形的宽度范围-->0
  </bestDetectionSize>
  <stateOrProvince>
    <!--ro, opt, enum, 区域或省份名称, subType:string, [云#云南省,京#北京市,冀#河北省,内蒙古#内蒙古自治区,台#台湾省,吉#吉林省,宁#宁夏回族自治区,川#四川省,新#新疆维吾尔自治区,晋#山西省,桂#广西壮族自治区,沪#上海市,津#天津市,浙#浙江省,渝#重庆市,港#香港特别行政区,湘#湖南省,滇#云南省,澳#澳门特别行政区,琼#海南省,甘#甘肃省,皖#安徽省,秦#陕西省,粤#广东省,苏#江苏省,藏#西藏自治区,蜀#四川省,豫#河南省,贵#贵州省,赣#江西省,辽#辽宁省,鄂#湖北省,闽#福建省,陇#甘肃省,陕#陕西省,青#青海省,鲁#山东省,黑#黑龙江省,黔#贵州省]-->云
  </stateOrProvince>
  <VehicleDetectSceneList size="10">
    <!--ro, opt, array, 车辆检测场景列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <VehicleDetectScene>
      <!--ro, opt, object, 车辆检测场景-->
      <id>
        <!--ro, req, int, 索引, range:[1,10], step:, unit:, unitType:-->0
      </id>
      <sceneName min="0" max="64">
        <!--ro, opt, string, 场景名称, range:[0,64], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </sceneName>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <PlateRecogParam>
        <!--ro, opt, object, 牌识参数-->
        <PlateRecogRegionList size="10">
          <!--ro, opt, array, 牌识区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <PlateRecogRegion>
            <!--ro, opt, object, 牌识区域-->
            <id>
              <!--ro, req, string, 索引, range:[1,10]-->test
            </id>
            <RegionCoordinatesList size="10">
              <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
              <RegionCoordinates>
                <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
                <positionX>
                  <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionX>
                <positionY>
                  <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
          </PlateRecogRegion>
        </PlateRecogRegionList>
      </PlateRecogParam>
      <LaneConfig>
        <!--ro, opt, object, 车道线-->
        <LaneList size="4">
          <!--ro, opt, array, 车道列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <Lane>
            <!--ro, opt, object, 车道-->
            <laneId min="1" max="4">
              <!--ro, req, int, 车道号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
            </laneId>
            <RegionCoordinatesList size="10">
              <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
              <RegionCoordinates>
                <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
                <positionX>
                  <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionX>
                <positionY>
                  <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
            <lineType opt="laneBoundaryLine,laneLine">
              <!--ro, req, enum, 车道线类型, subType:string, [laneBoundaryLine#车道边界线,laneLine#车道线], attr:opt{req, string, 取值范围, range:[,]}-->laneBoundaryLine
            </lineType>
            <carDriveDirect opt="unknow,up_to_down,down_to_up">
              <!--ro, req, enum, 行车方向, subType:string, [down2up#从下到上,up2down#从上到下], attr:opt{req, string, 取值范围, range:[,]}-->down2up
            </carDriveDirect>
          </Lane>
        </LaneList>
      </LaneConfig>
      <ParkingDetection>
        <!--ro, opt, object, 停车检测-->
        <enabled opt="true,false">
          <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
        <duration min="5" max="60">
          <!--ro, req, int, 检测时间间隔, range:[5,60], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </duration>
        <alarmIntervalTime min="1" max="30">
          <!--ro, req, int, 上传时间间隔, range:[1,30], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </alarmIntervalTime>
      </ParkingDetection>
    </VehicleDetectScene>
  </VehicleDetectSceneList>
  <PlateDetectionRegion>
    <!--ro, opt, object, 牌识检测区域-->
    <PlateSize>
      <!--ro, opt, object, 牌识检测区域范围-->
      <minWidth min="0" max="1000">
        <!--ro, opt, int, 最小宽度, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </minWidth>
      <maxWidth min="0" max="10">
        <!--ro, opt, int, 最大宽度, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </maxWidth>
    </PlateSize>
    <plateMode opt="small,large">
      <!--ro, opt, enum, 车牌模式, subType:string, [small#小车牌,large#大车牌], attr:opt{req, string, 取值范围, range:[,]}-->small
    </plateMode>
  </PlateDetectionRegion>
  <autoBuildRecogArea opt="line,region">
    <!--ro, opt, enum, 自动生成识别区域类型, subType:string, [line#线,region#区域], attr:opt{req, string, 取值范围, range:[,]}-->line
  </autoBuildRecogArea>
  <RodeType>
    <!--ro, opt, object, 道路类型-->
    <type opt="entrance,city,custom,alarmInput,post,publicSecurity">
      <!--ro, opt, enum, 类型, subType:string, [entrance#出入口,city#城市,custom#自定义,alarmInput#报警输入(通过线圈触发),post#卡口,publicSecurity#治安监控], attr:opt{req, string, 取值范围, range:[,]}, desc:publicSecurity(治安监控：该模式下可以检测车辆比较混乱且没有车道线的场景，无需配置车道线)-->entrance
    </type>
    <Custom>
      <!--ro, opt, object, 自定义参数-->
      <delayTime min="0" max="10">
        <!--ro, opt, int, 延迟时间, range:[0,15000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </delayTime>
      <delayTimeUnit opt="ms">
        <!--ro, opt, enum, 延迟时间单位, subType:string, [ms#毫秒], attr:opt{req, string, 取值范围, range:[,]}-->ms
      </delayTimeUnit>
    </Custom>
    <gateType opt="entry,exit">
      <!--ro, opt, enum, 出入口类型, subType:string, [entry#入口,exit#出口], attr:opt{req, string, 取值范围, range:[,]}-->entry
    </gateType>
    <LaneLineNum>
      <!--ro, opt, object, 可配置车道数目-->
      <entrance min="0" max="10">
        <!--ro, opt, int, 出入口车道数, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </entrance>
      <city min="0" max="10">
        <!--ro, opt, int, 城市道路模式（卡口）车道数, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </city>
      <alarmInput min="0" max="10">
        <!--ro, opt, int, 报警输入模式车道数, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </alarmInput>
    </LaneLineNum>
  </RodeType>
  <AtRoadsideCalib>
    <!--ro, opt, object, 侧装校正参数-->
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </AtRoadsideCalib>
  <AboveRoadCalib>
    <!--ro, opt, object, 正装校正参数-->
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </AboveRoadCalib>
  <enhancedMode opt="true,false">
    <!--ro, opt, bool, 增强模式, attr:opt{req, string, 取值范围, range:[,]}, desc:仅超脑接入非专业智能相机时支持-->true
  </enhancedMode>
  <picRecognition opt="true,false">
    <!--ro, opt, bool, 车辆报警图片二次识别, attr:opt{req, string, 取值范围, range:[,]}, desc:仅超脑接入专业智能相机时支持-->true
  </picRecognition>
  <countryIndex opt="1,2,3,4,5,6,7,8,12,14,17,18,19,20,23,39,44,55">
    <!--ro, opt, int, 国家索引, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->0
  </countryIndex>
  <supportCountryIndex opt="1,2,3,4,5,6,7,8,11,12,14,17,18,19,20,21,23,39,44,46,55,73">
    <!--ro, opt, int, 支持的国家索引, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->0
  </supportCountryIndex>
  <RelatedLaneParam>
    <!--ro, opt, object, 关联车道参数-->
    <RelatedLaneNoList size="6">
      <!--ro, req, array, 关联车道号, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:最大可关联6个车道号-->
      <relatedLaneNo min="1" max="6">
        <!--ro, req, int, 关联车道号, range:[1,6], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </relatedLaneNo>
      <RelatedParkingNoList size="8">
        <!--ro, opt, array, 关联车位号, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:最大可关联8个车位号-->
        <relatedParkingNo min="1" max="8">
          <!--ro, req, int, 关联车位号, range:[1,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </relatedParkingNo>
      </RelatedParkingNoList>
    </RelatedLaneNoList>
  </RelatedLaneParam>
  <IntelligentMode>
    <!--ro, opt, object, 全景云台智能参数配置-->
    <mountingType opt="1,2" def="1">
      <!--ro, opt, enum, 安装方式, subType:int, [1#镜头正装,2#镜头侧装], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认正装-->1
    </mountingType>
    <captureStrategy opt="1,2" def="1">
      <!--ro, opt, enum, 出图策略（前后车牌匹配）, subType:int, [1#前后镜头抓拍的车牌结同时才会抓拍出图,2#前后车牌不匹配], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认不匹配-->2
    </captureStrategy>
    <pictureSplicingFormat opt="2,3">
      <!--ro, opt, enum, 拼接格式, subType:string, [2#两路拼接,3#三路拼接], attr:opt{req, string, 取值范围, range:[,]}, desc:两路拼接(2,3拼接，5,6拼接), 三路拼接(1,2,3拼接，4,5,6拼接)-->2
    </pictureSplicingFormat>
  </IntelligentMode>
  <CameralDirection>
    <!--ro, opt, object, 相机方向-->
    <frontLensFacingDirection opt="0,1,2,3,4,5">
      <!--ro, opt, enum, 前镜头方向, subType:int, [0#正前,1#右前,2#右后,3#正后,4#左后,5#左前], attr:opt{req, string, 取值范围, range:[,]}-->0
    </frontLensFacingDirection>
    <rearLensFacingDirection opt="0,1,2,3,4,5">
      <!--ro, opt, enum, 后镜头方向, subType:int, [0#正前,1#右前,2#右后,3#正后,4#左后,5#左前], attr:opt{req, string, 取值范围, range:[,]}-->0
    </rearLensFacingDirection>
  </CameralDirection>
  <isSupportDailyVehicleMonitor>
    <!--ro, opt, bool, 日常车辆布防支持能力, desc:日常车辆布防时,设备不仅会上报ANPR报警还会实时上报dailyVehicleMonitor车辆布防报警-->true
  </isSupportDailyVehicleMonitor>
  <listType opt="white,black,other">
    <!--ro, opt, enum, 名单类型, subType:string, [white#授权名单,black#非授权名单,other#其他], attr:opt{req, string, 取值范围, range:[,]}, desc:选择某种名单类型表示车辆检测进行该名单比对并上报报警-->other
  </listType>
  <CRIndex opt="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,28,29,30,31,33,34,35,36,37,38,39,40,42,43,44,45,46,47,49,51,53,55,59,60,62,65,68,70,71,72,73,76,77,84,87,89,90,94,95,91,104,107,108,110,114,115,130,137,139,140,144,145,146,151,156,157,169,174,175,177,180,181,188,206,210,215,216,217,218,219,220,221,222,227,228,256">
    <!--ro, req, enum, 国家/区域, subType:int, [0#Unsupported算法库不支持牌识国家,1#Czech Republic捷克共和国,10#Moldova摩尔多瓦,100#Reserved保留字段,101#Reserved保留字段,102#Reserved保留字段,103#Reserved保留字段,104#Egypt埃及,105#Libya利比亚,106#Sudan苏丹,107#Tunisia突尼斯,108#Algeria阿尔及利亚,109#Morocco摩洛哥,11#Russia俄罗斯,110#Ethiopia埃塞俄比亚,111#Eritrea厄立特里亚,112#Somalia Democratic索马里,113#Djibouti吉布提,114#Kenya肯尼亚,115#Tanzania坦桑尼亚,116#Uganda乌干达,117#Rwanda卢旺达,118#Burundi布隆迪,119#Seychelles塞舌尔,12#Ukraine乌克兰,120#Chad乍得,121#Central African中非,122#Cameroon喀麦隆,123#Equatorial Guinea赤道几内亚,124#Gabon加蓬,125#Congo刚果共和国（即：刚果（布））,126#Democratic Republic of the Congo刚果民主共和国（即：刚果（金））,127#Sao Tome and Principe圣多美和普林西比,128#Mauritania毛里塔尼亚,129#Western Sahara西撒哈拉（撒拉威）,13#Belgium比利时,130#Senegal塞内加尔,131#Gambia冈比亚,132#Mali马里,133#Burkina Faso布基纳法索,134#Guinea几内亚,135#Guinea-Bissau几内亚比绍,136#Cape Verde佛得角,137#Sierra Leone塞拉利昂,138#Liberia利比里亚,139#Ivory Coast科特迪瓦,14#Bulgaria保加利亚,140#Ghana加纳,141#Togo多哥,142#Benin贝宁,143#Niger尼日尔,144#Zambia赞比亚,145#Angola安哥拉,146#Zimbabwe津巴布韦,147#Malawi马拉维,148#Mozambique莫桑比克,149#Botswana博茨瓦纳,15#Denmark丹麦,150#Namibia纳米比亚,151#South Africa南非,152#Swaziland斯威士兰,153#Lesotho莱索托,154#Madagasca马达加斯加,155#Comoros科摩罗,156#Mauritius毛里求斯,157#Nigeria尼日利亚,158#South Sudan南苏丹,159#Saint Helena圣赫勒拿（英国海外省）,16#Finland芬兰,160#Mayotte马约特（法国海外省）,161#Reunion留尼旺（法国海外省）,162#Canary Islands加那利群岛（西班牙海外领土）,163#AZORES亚速尔群岛（北大西洋非洲西海岸（葡萄牙））,164#Madeira马德拉群岛（北大西洋非洲西海岸（葡萄牙））,165#Reserved保留字段,166#Reserved保留字段,167#Reserved保留字段,168#Reserved保留字段,169#Canada加拿大,17#United Kingdom英国 之前叫Great Britain,170#Greenland Nuuk格陵兰（丹麦王国的海外自治领土）,171#Pierre and Miquelon圣皮埃尔和密克隆（法国海外领土）,172#United State美国,173#Bermuda百慕大（英国海外领土）,174#Mexico墨西哥,175#Guatemala危地马拉,176#Belize伯利兹,177#El Salvador萨尔瓦多,178#Honduras洪都拉斯,179#Nicaragua尼加拉瓜,18#Greece希腊,180#Costa Rica哥斯达黎加,181#Panama巴拿马,182#Bahamas巴哈马,183#Turks and  Caicos Islands特克斯群岛和凯科斯群岛（英国海外领土）,184#Cuba古巴,185#Jamaica牙买加,186#Cayman Islands开曼群岛（英国海外领土）,187#Haiti海地,188#Dominican多米尼加,189#Puerto Rico波多黎各（美国海外领土）,19#Croatia克罗地亚,190#United States Virgin Islands美属维尔京群岛,191#British Virgin Islands英属维尔京群岛,192#Anguilla安圭拉（英国海外领土）,193#Antigua and Barbuda安提瓜和巴布达,194#Collectivité de Saint-Martin法属圣马丁（法国海外领土）,195#Autonomous country荷属圣马丁（荷兰王国的自治国）,196#Saint-Barthélemy圣巴泰勒米岛（法国海外领土）,197#Saint Kitts and Nevis圣基茨和尼维斯,198#Montserrat蒙特塞拉特（英国海外领土）,199#Guadeloupe瓜德罗普（法国海外领土）,2#France法国,20#Hungary匈牙利,200#Dominica多米尼克,201#Martinique马提尼克（法国海外领土）,202#St. Lucia圣卢西亚,203#Saint Vincent and the Grenadines圣文森特和格林纳丁斯,204#Grenada格林纳达,205#Barbados巴巴多斯,206#Trinidad and Tobago特立尼达和多巴哥,207#Cura?ao库拉索（荷兰王国的一个自治国）,208#Aruba阿鲁巴（荷兰王国的一个自治国）,209#Netherlands Antilles荷属安的列斯,21#Israel以色列(亚洲),210#Colombia哥伦比亚,211#Venezuela委内瑞拉,212#Guyana圭亚那,213#Suriname苏里南,214#Guyane Francaise法属圭亚那,215#Ecuador厄瓜多尔,216#Peru秘鲁,217#Bolivia玻利维亚,218#Paraguay巴拉圭,219#Chile智利,22#Luxembourg卢森堡,220#Brazil巴西,221#Uruguay乌拉圭,222#Argentina阿根廷,223#Reserved保留字段,224#Reserved保留字段,225#Reserved保留字段,226#Reserved保留字段,227#Australia澳大利亚,228#New Zealand 新西兰,229#Papua New Guinea巴布亚新几内亚,23#Macedonia马其顿共和国  2018年改为North Macedonia,230#Salomonen所罗门群岛,231#Vanuatu瓦努阿图,232#New Caledonia新喀里多尼亚（法国的海外属地）,233#Palau帕劳,234#Federated States of Micronesia密克罗尼西亚联邦,235#Marshall Island马绍尔群岛,236#Northern Mariana Islands北马里亚纳群岛（美国的海外属地）,237#Guam关岛（美国的海外属地）,238#Nauru瑙鲁,239#Kiribati基里巴斯,24#Norway挪威,240#Fidschi斐济群岛,241#Tonga汤加,242#Tuvalu图瓦卢,243#Wallis et Futuna瓦利斯和富图纳（法国的海外属地）,244#Samoa萨摩亚,245#Eastern Samoa美属萨摩亚,246#Tokelau托克劳（新西兰）,247#Niue纽埃（新西兰）,248#Cook Islands库克群岛（新西兰）,249#French Polynesia法属波利尼西亚,25#Portuga葡萄牙,250#Pitcairn Islands皮特凯恩群岛（英国的海外属地）,251#Hawaii State夏威夷（美国的海外属地）,252#Reserved保留字段,253#Reserved保留字段,254#Unrecognized无法识别,255#ALL全部,256#Taiwan (China) 台湾（中国）,257#Hong Kong (China)中国香港,258#Macau (China)中国澳门,26#Romania罗马尼亚,27#Serbia塞尔维亚,28#Azerbaijan阿塞拜疆共和国(亚洲),29#Georgia格鲁吉亚(亚洲),3#Germany德国,30#Kazakhstan哈萨克斯坦(亚洲),31#Lithuania立陶宛共和国,32#Turkmenistan土库曼斯坦(亚洲),33#Uzbekistan乌兹别克斯坦(亚洲),34#Latvia拉脱维亚,35#Estonia爱沙尼亚,36#Albania阿尔巴尼亚,37#Austria奥地利,38#Bosnia and Herzegovina波斯尼亚和黑塞哥维那,39#Ireland爱尔兰,4#Spain西班牙,40#Iceland冰岛,41#Vatican梵蒂冈,42#Malta马耳他,43#Sweden瑞典,44#Switzerland瑞士,45#Cyprus塞浦路斯,46#Turkey土耳其,47#Slovenia斯洛文尼亚,48#Montenegro黑山共和国,49#Kosovo科索沃,5#Italy意大利,50#Andorra安道尔,51#Armenia亚美尼亚(亚洲),52#Monaco摩纳哥,53#Liechtenstein列支敦士登,54#San Marino圣马力诺,55#Reserved保留字段,56#Reserved保留字段,57#Reserved保留字段,58#Reserved保留字段,59#China中国,6#Netherlands荷兰,60#Bahrain巴林,61#South Korea韩国,62#Lebanon黎巴嫩,63#Nepal尼泊尔,64#Thailand泰国,65#Pakistan巴基斯坦,66#United Arab Emirates阿拉伯联合酋长国,67#Bhutan不丹,68#Oman阿曼,69#North Korea朝鲜,7#Poland波兰,70#Philippines菲律宾,71#Cambodia柬埔寨,72#Qatar卡塔尔,73#Kyrgyzstan吉尔吉斯斯坦,74#Maldives马尔代夫,75#Malaysia马来西亚,76#Mongolia蒙古,77#Saudi Arabia沙特阿拉伯,78#Brunei文莱,79#Laos老挝,8#Slovakia斯洛伐克,80#Japan日本,81#Turkey土耳其,82#Palestinian巴勒斯坦国,83#Tajikistan塔吉克斯坦,84#Kuwait科威特,85#Syria叙利亚,86#India印度,87#Indonesia印度尼西亚,88#Afghanistan阿富汗,89#Sri Lanka斯里兰卡,9#Belarus白俄罗斯,90#Iraq伊拉克,91#Vietnam越南,92#Iran伊朗,93#Yemen也门,94#Jordan约旦,95#Burma/Myanmar缅甸,96#Sikkim锡金,97#Bangladesh孟加拉国,98#Singapore新加坡,99#Democratic Republic of Timor-Leste东帝汶（已宣布独立], attr:opt{req, string, 取值范围, range:[,]},
desc:countryIndex和CRIndex兼容逻辑
设备兼容：为了兼容老用户，新老字段都有返回，当值为CRIndex<=255时，countryIndex取值和CRIndex相同，当CRIndex>255时,countryIndex字段取值为253（该字段无效，需要使用CRIndex字段）
集成流程：新用户如果能力中有CRIndex字段，优先使用CRIndex，如果能力中没有，则使用countryIndex。  老用户只集成了countryIndex，如果遇到countryIndex为253时，需要增加处理逻辑，使用CRIndex字段-->0
  </CRIndex>
  <detectionMode opt="vehiclePriority,licensePlateOrVehicle">
    <!--ro, opt, enum, 检测模式, subType:string, [vehiclePriority#先车辆后车牌,licensePlateOrVehicle#根据场景调整先识别车牌还是先识别车辆], attr:opt{req, string, 取值范围, range:[,]},
desc:默认: licensePlateOrVehicle;
vehiclePriority,先车辆识别，再车牌识别,避免出入口场景人举着车牌也被开闸,该模式存在一定风险识别不出车辆;
licensePlateOrVehicle,根据场景调整先识别车牌还是先识别车辆.在光线很暗的情况下,车辆可能无法识别,这种模式可以识别车牌.常规场景下,这种模式可先识别车辆再识别车牌,推荐使用,默认也是该模式;-->vehiclePriority
  </detectionMode>
  <Filtration>
    <!--ro, opt, object, 同车牌过滤-->
    <enabled opt="true,false" def="false">
      <!--ro, opt, bool, 是否开启同车牌过滤, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认false-->true
    </enabled>
    <filtrationTime min="1" max="5" def="4">
      <!--ro, opt, int, 过滤时间, range:[1,5], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认4分钟-->1
    </filtrationTime>
  </Filtration>
  <RelatedNationAndCRListCap>
    <!--ro, opt, array, 区域国家关联列表能力, subType:object, range:[,], desc:将区域和国家相关联，用于界面展示-->
    <RelatedNationAndCR>
      <!--ro, opt, object, 地区国家关联-->
      <nation>
        <!--ro, opt, enum, 区域(地区), subType:string, [AfricaAndAmerica#非美,AP#亚太区,All#所有区域（All Region）,ER#俄语区域（Russian Region）,EU#欧洲（Europe Region）,EUandCIS#欧洲&俄罗斯（EU&CIS）,ME#中东（Middle East）]-->EU
      </nation>
      <CRIndex opt="1,2,3,4,5,6,7">
        <!--ro, opt, int, 国家及区域索引, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
      </CRIndex>
    </RelatedNationAndCR>
  </RelatedNationAndCRListCap>
</VehicleDetectCfg>

2. 获取车辆检测参数

2.1 命令

GET /ISAPI/Traffic/channels/<channelID>/vehicleDetect

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleDetectCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 车辆检测参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <nation>
    <!--ro, req, enum, 区域（地区）, subType:string, [AfricaAndAmerica#非美 Africa and America,AP#亚太区,All#所有区域（All Region）,ER#俄语区域（Russian Region）,EU#欧洲（Europe Region）,EUandCIS#欧洲&俄罗斯（EU&CIS）,ME#中东（Middle East）,All#所有区域]-->All
  </nation>
  <bestDetectionSize>
    <!--ro, opt, int, 最佳抓拍框大小像素, range:[0,1000], step:, unit:, unitType:, desc:抓拍框是一个正方形,这里表示的是正方形的宽度范围-->0
  </bestDetectionSize>
  <stateOrProvince>
    <!--ro, opt, enum, 区域或省份名称, subType:string, [云#云南省,京#北京市,冀#河北省,内蒙古#内蒙古自治区,台#台湾省,吉#吉林省,宁#宁夏回族自治区,川#四川省,新#新疆维吾尔自治区,晋#山西省,桂#广西壮族自治区,沪#上海市,津#天津市,浙#浙江省,渝#重庆市,港#香港特别行政区,湘#湖南省,滇#云南省,澳#澳门特别行政区,琼#海南省,甘#甘肃省,皖#安徽省,秦#陕西省,粤#广东省,苏#江苏省,藏#西藏自治区,蜀#四川省,豫#河南省,贵#贵州省,赣#江西省,辽#辽宁省,鄂#湖北省,闽#福建省,陇#甘肃省,陕#陕西省,青#青海省,鲁#山东省,黑#黑龙江省,黔#贵州省]-->云
  </stateOrProvince>
  <VehicleDetectSceneList size="10">
    <!--ro, opt, array, 车辆检测场景列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <VehicleDetectScene>
      <!--ro, opt, object, 车辆检测场景-->
      <id>
        <!--ro, req, int, 索引, range:[1,10], step:, unit:, unitType:-->0
      </id>
      <sceneName>
        <!--ro, opt, string, 场景名称, range:[0,64]-->test
      </sceneName>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <PlateRecogParam>
        <!--ro, opt, object, 牌识参数-->
        <PlateRecogRegionList>
          <!--ro, opt, array, 牌识区域列表, subType:object, range:[,]-->
          <PlateRecogRegion>
            <!--ro, opt, object, 牌识区域-->
            <id>
              <!--ro, req, string, 索引, range:[1,10]-->test
            </id>
            <RegionCoordinatesList>
              <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10]-->
              <RegionCoordinates>
                <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
                <positionX>
                  <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionX>
                <positionY>
                  <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
          </PlateRecogRegion>
        </PlateRecogRegionList>
      </PlateRecogParam>
      <LaneConfig>
        <!--ro, opt, object, 车道线-->
        <LaneList size="10">
          <!--ro, opt, object, 车道列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <Lane>
            <!--ro, opt, object, 车道-->
            <laneId>
              <!--ro, req, int, 车道号, range:[1,10], step:, unit:, unitType:-->1
            </laneId>
            <RegionCoordinatesList>
              <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,2], desc:RightLaneLine节点返回时,这里只配置左车道线-->
              <RegionCoordinates>
                <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
                <positionX>
                  <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionX>
                <positionY>
                  <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
            <lineType>
              <!--ro, req, enum, 车道线类型, subType:string, [laneBoundaryLine#车道边界线,laneLine#车道线]-->laneBoundaryLine
            </lineType>
            <carDriveDirect>
              <!--ro, req, enum, 行车方向, subType:string, [down2up#从下到上,up2down#从上到下]-->down2up
            </carDriveDirect>
            <RightLaneLine>
              <!--ro, opt, object, 右车道线, desc:返回该能力则代表每个车道都需要配置左右车道线-->
              <RegionCoordinatesList size="2">
                <!--ro, req, array, 区域坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
                <RegionCoordinates>
                  <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
                  <positionX>
                    <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                  </positionX>
                  <positionY>
                    <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                  </positionY>
                </RegionCoordinates>
              </RegionCoordinatesList>
            </RightLaneLine>
          </Lane>
        </LaneList>
      </LaneConfig>
      <AtRoadsideCalib>
        <!--ro, opt, object, 侧装校正参数-->
        <RegionCoordinatesList>
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </AtRoadsideCalib>
      <ParkingDetection>
        <!--ro, opt, object, 停车检测-->
        <enabled>
          <!--ro, req, bool, 使能-->true
        </enabled>
        <duration>
          <!--ro, req, int, 检测时间间隔, range:[5,60], step:, unit:s, unitType:时间-->0
        </duration>
        <alarmIntervalTime>
          <!--ro, req, int, 上传时间间隔, range:[1,30], step:, unit:min, unitType:时间-->0
        </alarmIntervalTime>
      </ParkingDetection>
      <AboveRoadCalib>
        <!--ro, opt, object, 正装校正参数-->
        <RegionCoordinatesList>
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </AboveRoadCalib>
      <RelatedLaneParam>
        <!--ro, opt, object, 关联车道参数-->
        <RelatedLaneNoList>
          <!--ro, req, array, 关联车道号, subType:object, range:[,]-->
          <relatedLaneNo>
            <!--ro, req, int, 关联车道号, range:[1,6], step:, unit:, unitType:-->0
          </relatedLaneNo>
        </RelatedLaneNoList>
      </RelatedLaneParam>
    </VehicleDetectScene>
  </VehicleDetectSceneList>
  <PlateDetectionRegion>
    <!--ro, opt, object, 牌识检测区域-->
    <PlateSize>
      <!--ro, opt, object, 牌识区域范围-->
      <minWidth>
        <!--ro, opt, int, 最小宽度, range:[0,1000], step:, unit:, unitType:-->0
      </minWidth>
      <maxWidth>
        <!--ro, opt, int, 最大宽度, range:[0,1000], step:, unit:, unitType:-->0
      </maxWidth>
    </PlateSize>
    <plateMode>
      <!--ro, opt, enum, 车牌模式, subType:string, [small#小车牌,large#大车牌]-->small
    </plateMode>
  </PlateDetectionRegion>
  <autoBuildRecogArea>
    <!--ro, opt, enum, 自动生成识别区域类型, subType:string, [line#线,region#区域]-->line
  </autoBuildRecogArea>
  <RodeType>
    <!--ro, opt, object, 道路类型-->
    <type>
      <!--ro, opt, enum, 类型, subType:string, [entrance#出入口,city#城市,custom#自定义,alarmInput#报警输入(通过线圈触发),post#卡口,publicSecurity#治安监控], desc:publicSecurity(治安监控：该模式下可以检测车辆比较混乱且没有车道线的场景，无需配置车道线)-->entrance
    </type>
    <Custom>
      <!--ro, opt, object, 自定义参数-->
      <delayTime>
        <!--ro, opt, int, 延迟时间, range:[0,15000], step:, unit:, unitType:-->0
      </delayTime>
      <delayTimeUnit>
        <!--ro, opt, enum, 延迟时间单位, subType:string, [ms#毫秒]-->ms
      </delayTimeUnit>
    </Custom>
    <gateType>
      <!--ro, opt, enum, 出入口类型, subType:string, [entry#入口,exit#出口], desc:仅当type为entrance存在-->entry
    </gateType>
  </RodeType>
  <enhancedMode>
    <!--ro, opt, bool, 增强模式, desc:仅超脑接入非专业智能相机时支持-->true
  </enhancedMode>
  <picRecognition>
    <!--ro, opt, bool, 车辆报警图片二次识别, desc:仅超脑接入专业智能相机时支持-->true
  </picRecognition>
  <countryIndex>
    <!--ro, opt, int, 国家索引, range:[1,255], step:, unit:, unitType:-->0
  </countryIndex>
  <IntelligentMode>
    <!--ro, opt, object, 全景云台智能参数配置-->
    <mountingType>
      <!--ro, opt, enum, 安装方式, subType:int, [1#镜头正装,2#镜头侧装], desc:默认正装-->1
    </mountingType>
    <captureStrategy>
      <!--ro, opt, enum, 出图策略（前后车牌匹配）, subType:int, [1#前后镜头抓拍的车牌结同时才会抓拍出图,2#前后车牌不匹配], desc:默认不匹配-->2
    </captureStrategy>
    <pictureSplicingFormat>
      <!--ro, opt, enum, 拼接格式, subType:string, [2#两路拼接,3#三路拼接], desc:两路拼接(2,3拼接，5,6拼接), 三路拼接(1,2,3拼接，4,5,6拼接)-->2
    </pictureSplicingFormat>
  </IntelligentMode>
  <CameralDirection>
    <!--ro, opt, object, 相机方向-->
    <frontLensFacingDirection>
      <!--ro, opt, enum, 前镜头方向, subType:int, [0#正前,1#右前,2#右后,3#正后,4#左后,5#左前]-->0
    </frontLensFacingDirection>
    <rearLensFacingDirection>
      <!--ro, opt, enum, 后镜头方向, subType:int, [0#正前,1#右前,2#右后,3#正后,4#左后,5#左前]-->0
    </rearLensFacingDirection>
  </CameralDirection>
  <CRIndex>
    <!--ro, req, enum, 国家/区域, subType:int, [0#Unsupported算法库不支持牌识国家,1#Czech Republic捷克共和国,10#Moldova摩尔多瓦,100#Reserved保留字段,101#Reserved保留字段,102#Reserved保留字段,103#Reserved保留字段,104#Egypt埃及,105#Libya利比亚,106#Sudan苏丹,107#Tunisia突尼斯,108#Algeria阿尔及利亚,109#Morocco摩洛哥,11#Russia俄罗斯,110#Ethiopia埃塞俄比亚,111#Eritrea厄立特里亚,112#Somalia Democratic索马里,113#Djibouti吉布提,114#Kenya肯尼亚,115#Tanzania坦桑尼亚,116#Uganda乌干达,117#Rwanda卢旺达,118#Burundi布隆迪,119#Seychelles塞舌尔,12#Ukraine乌克兰,120#Chad乍得,121#Central African中非,122#Cameroon喀麦隆,123#Equatorial Guinea赤道几内亚,124#Gabon加蓬,125#Congo刚果共和国（即：刚果（布））,126#Democratic Republic of the Congo刚果民主共和国（即：刚果（金））,127#Sao Tome and Principe圣多美和普林西比,128#Mauritania毛里塔尼亚,129#Western Sahara西撒哈拉（撒拉威）,13#Belgium比利时,130#Senegal塞内加尔,131#Gambia冈比亚,132#Mali马里,133#Burkina Faso布基纳法索,134#Guinea几内亚,135#Guinea-Bissau几内亚比绍,136#Cape Verde佛得角,137#Sierra Leone塞拉利昂,138#Liberia利比里亚,139#Ivory Coast科特迪瓦,14#Bulgaria保加利亚,140#Ghana加纳,141#Togo多哥,142#Benin贝宁,143#Niger尼日尔,144#Zambia赞比亚,145#Angola安哥拉,146#Zimbabwe津巴布韦,147#Malawi马拉维,148#Mozambique莫桑比克,149#Botswana博茨瓦纳,15#Denmark丹麦,150#Namibia纳米比亚,151#South Africa南非,152#Swaziland斯威士兰,153#Lesotho莱索托,154#Madagasca马达加斯加,155#Comoros科摩罗,156#Mauritius毛里求斯,157#Nigeria尼日利亚,158#South Sudan南苏丹,159#Saint Helena圣赫勒拿（英国海外省）,16#Finland芬兰,160#Mayotte马约特（法国海外省）,161#Reunion留尼旺（法国海外省）,162#Canary Islands加那利群岛（西班牙海外领土）,163#AZORES亚速尔群岛（北大西洋非洲西海岸（葡萄牙））,164#Madeira马德拉群岛（北大西洋非洲西海岸（葡萄牙））,165#Reserved保留字段,166#Reserved保留字段,167#Reserved保留字段,168#Reserved保留字段,169#Canada加拿大,17#United Kingdom英国 之前叫Great Britain,170#Greenland Nuuk格陵兰（丹麦王国的海外自治领土）,171#Pierre and Miquelon圣皮埃尔和密克隆（法国海外领土）,172#United State美国,173#Bermuda百慕大（英国海外领土）,174#Mexico墨西哥,175#Guatemala危地马拉,176#Belize伯利兹,177#El Salvador萨尔瓦多,178#Honduras洪都拉斯,179#Nicaragua尼加拉瓜,18#Greece希腊,180#Costa Rica哥斯达黎加,181#Panama巴拿马,182#Bahamas巴哈马,183#Turks and  Caicos Islands特克斯群岛和凯科斯群岛（英国海外领土）,184#Cuba古巴,185#Jamaica牙买加,186#Cayman Islands开曼群岛（英国海外领土）,187#Haiti海地,188#Dominican多米尼加,189#Puerto Rico波多黎各（美国海外领土）,19#Croatia克罗地亚,190#United States Virgin Islands美属维尔京群岛,191#British Virgin Islands英属维尔京群岛,192#Anguilla安圭拉（英国海外领土）,193#Antigua and Barbuda安提瓜和巴布达,194#Collectivité de Saint-Martin法属圣马丁（法国海外领土）,195#Autonomous country荷属圣马丁（荷兰王国的自治国）,196#Saint-Barthélemy圣巴泰勒米岛（法国海外领土）,197#Saint Kitts and Nevis圣基茨和尼维斯,198#Montserrat蒙特塞拉特（英国海外领土）,199#Guadeloupe瓜德罗普（法国海外领土）,2#France法国,20#Hungary匈牙利,200#Dominica多米尼克,201#Martinique马提尼克（法国海外领土）,202#St. Lucia圣卢西亚,203#Saint Vincent and the Grenadines圣文森特和格林纳丁斯,204#Grenada格林纳达,205#Barbados巴巴多斯,206#Trinidad and Tobago特立尼达和多巴哥,207#Cura?ao库拉索（荷兰王国的一个自治国）,208#Aruba阿鲁巴（荷兰王国的一个自治国）,209#Netherlands Antilles荷属安的列斯,21#Israel以色列(亚洲),210#Colombia哥伦比亚,211#Venezuela委内瑞拉,212#Guyana圭亚那,213#Suriname苏里南,214#Guyane Francaise法属圭亚那,215#Ecuador厄瓜多尔,216#Peru秘鲁,217#Bolivia玻利维亚,218#Paraguay巴拉圭,219#Chile智利,22#Luxembourg卢森堡,220#Brazil巴西,221#Uruguay乌拉圭,222#Argentina阿根廷,223#Reserved保留字段,224#Reserved保留字段,225#Reserved保留字段,226#Reserved保留字段,227#Australia澳大利亚,228#New Zealand 新西兰,229#Papua New Guinea巴布亚新几内亚,23#Macedonia马其顿共和国  2018年改为North Macedonia,230#Salomonen所罗门群岛,231#Vanuatu瓦努阿图,232#New Caledonia新喀里多尼亚（法国的海外属地）,233#Palau帕劳,234#Federated States of Micronesia密克罗尼西亚联邦,235#Marshall Island马绍尔群岛,236#Northern Mariana Islands北马里亚纳群岛（美国的海外属地）,237#Guam关岛（美国的海外属地）,238#Nauru瑙鲁,239#Kiribati基里巴斯,24#Norway挪威,240#Fidschi斐济群岛,241#Tonga汤加,242#Tuvalu图瓦卢,243#Wallis et Futuna瓦利斯和富图纳（法国的海外属地）,244#Samoa萨摩亚,245#Eastern Samoa美属萨摩亚,246#Tokelau托克劳（新西兰）,247#Niue纽埃（新西兰）,248#Cook Islands库克群岛（新西兰）,249#French Polynesia法属波利尼西亚,25#Portuga葡萄牙,250#Pitcairn Islands皮特凯恩群岛（英国的海外属地）,251#Hawaii State夏威夷（美国的海外属地）,252#Reserved保留字段,253#Reserved保留字段,254#Unrecognized无法识别,255#ALL全部,256#Taiwan (China) 台湾（中国）,257#Hong Kong (China)中国香港,258#Macau (China)中国澳门,26#Romania罗马尼亚,27#Serbia塞尔维亚,28#Azerbaijan阿塞拜疆共和国(亚洲),29#Georgia格鲁吉亚(亚洲),3#Germany德国,30#Kazakhstan哈萨克斯坦(亚洲),31#Lithuania立陶宛共和国,32#Turkmenistan土库曼斯坦(亚洲),33#Uzbekistan乌兹别克斯坦(亚洲),34#Latvia拉脱维亚,35#Estonia爱沙尼亚,36#Albania阿尔巴尼亚,37#Austria奥地利,38#Bosnia and Herzegovina波斯尼亚和黑塞哥维那,39#Ireland爱尔兰,4#Spain西班牙,40#Iceland冰岛,41#Vatican梵蒂冈,42#Malta马耳他,43#Sweden瑞典,44#Switzerland瑞士,45#Cyprus塞浦路斯,46#Turkey土耳其,47#Slovenia斯洛文尼亚,48#Montenegro黑山共和国,49#Kosovo科索沃,5#Italy意大利,50#Andorra安道尔,51#Armenia亚美尼亚(亚洲),52#Monaco摩纳哥,53#Liechtenstein列支敦士登,54#San Marino圣马力诺,55#Reserved保留字段,56#Reserved保留字段,57#Reserved保留字段,58#Reserved保留字段,59#China中国,6#Netherlands荷兰,60#Bahrain巴林,61#South Korea韩国,62#Lebanon黎巴嫩,63#Nepal尼泊尔,64#Thailand泰国,65#Pakistan巴基斯坦,66#United Arab Emirates阿拉伯联合酋长国,67#Bhutan不丹,68#Oman阿曼,69#North Korea朝鲜,7#Poland波兰,70#Philippines菲律宾,71#Cambodia柬埔寨,72#Qatar卡塔尔,73#Kyrgyzstan吉尔吉斯斯坦,74#Maldives马尔代夫,75#Malaysia马来西亚,76#Mongolia蒙古,77#Saudi Arabia沙特阿拉伯,78#Brunei文莱,79#Laos老挝,8#Slovakia斯洛伐克,80#Japan日本,81#Turkey土耳其,82#Palestinian巴勒斯坦国,83#Tajikistan塔吉克斯坦,84#Kuwait科威特,85#Syria叙利亚,86#India印度,87#Indonesia印度尼西亚,88#Afghanistan阿富汗,89#Sri Lanka斯里兰卡,9#Belarus白俄罗斯,90#Iraq伊拉克,91#Vietnam越南,92#Iran伊朗,93#Yemen也门,94#Jordan约旦,95#Burma/Myanmar缅甸,96#Sikkim锡金,97#Bangladesh孟加拉国,98#Singapore新加坡,99#Democratic Republic of Timor-Leste东帝汶（已宣布独立],
desc:countryIndex和CRIndex兼容逻辑
设备兼容：为了兼容老用户，新老字段都有返回，当值为CRIndex<=255时，countryIndex取值和CRIndex相同，当CRIndex>255时,countryIndex字段取值为253（该字段无效，需要使用CRIndex字段）
集成流程：新用户如果能力中有CRIndex字段，优先使用CRIndex，如果能力中没有，则使用countryIndex。  老用户只集成了countryIndex，如果遇到countryIndex为253时，需要增加处理逻辑，使用CRIndex字段-->0
  </CRIndex>
  <detectionMode>
    <!--ro, opt, enum, 检测模式, subType:string, [vehiclePriority#先车辆后车牌,licensePlateOrVehicle#根据场景调整先识别车牌还是先识别车辆],
desc:默认: licensePlateOrVehicle;
vehiclePriority,先车辆识别，再车牌识别,避免出入口场景人举着车牌也被开闸,该模式存在一定风险识别不出车辆;
licensePlateOrVehicle,根据场景调整先识别车牌还是先识别车辆.在光线很暗的情况下,车辆可能无法识别,这种模式可以识别车牌.常规场景下,这种模式可先识别车辆再识别车牌,推荐使用,默认也是该模式;-->vehiclePriority
  </detectionMode>
  <Filtration>
    <!--ro, opt, object, 同车牌过滤-->
    <enabled>
      <!--ro, opt, bool, 是否开启同车牌过滤, desc:默认false-->true
    </enabled>
    <filtrationTime>
      <!--ro, opt, int, 过滤时间, range:[1,5], step:, unit:min, unitType:时间, desc:默认4分钟-->1
    </filtrationTime>
  </Filtration>
</VehicleDetectCfg>

3. 配置车辆检测参数

3.1 命令

PUT /ISAPI/Traffic/channels/<channelID>/vehicleDetect

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleDetectCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 车辆检测参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <nation>
    <!--req, enum, 区域（地区）, subType:string, [AfricaAndAmerica#非美 Africa and America,AP#亚太区,All#所有区域（All Region）,ER#俄语区域（Russian Region）,EU#欧洲（Europe Region）,EUandCIS#欧洲&俄罗斯（EU&CIS）,ME#中东（Middle East）,All#所有区域]-->All
  </nation>
  <bestDetectionSize>
    <!--opt, int, 最佳抓拍框大小像素, range:[0,1000], step:, unit:, unitType:, desc:抓拍框是一个正方形,这里表示的是正方形的宽度范围-->0
  </bestDetectionSize>
  <stateOrProvince>
    <!--opt, enum, 区域或省份名称, subType:string, [云#云南省,京#北京市,冀#河北省,内蒙古#内蒙古自治区,台#台湾省,吉#吉林省,宁#宁夏回族自治区,川#四川省,新#新疆维吾尔自治区,晋#山西省,桂#广西壮族自治区,沪#上海市,津#天津市,浙#浙江省,渝#重庆市,港#香港特别行政区,湘#湖南省,滇#云南省,澳#澳门特别行政区,琼#海南省,甘#甘肃省,皖#安徽省,秦#陕西省,粤#广东省,苏#江苏省,藏#西藏自治区,蜀#四川省,豫#河南省,贵#贵州省,赣#江西省,辽#辽宁省,鄂#湖北省,闽#福建省,陇#甘肃省,陕#陕西省,青#青海省,鲁#山东省,黑#黑龙江省,黔#贵州省]-->云
  </stateOrProvince>
  <VehicleDetectSceneList size="10">
    <!--opt, array, 车辆检测场景列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <VehicleDetectScene>
      <!--opt, object, 车辆检测场景-->
      <id>
        <!--req, int, 索引, range:[1,10], step:, unit:, unitType:-->0
      </id>
      <sceneName>
        <!--opt, string, 场景名称, range:[0,64]-->test
      </sceneName>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <PlateRecogParam>
        <!--opt, object, 牌识参数-->
        <PlateRecogRegionList>
          <!--opt, array, 牌识区域列表, subType:object, range:[,]-->
          <PlateRecogRegion>
            <!--opt, object, 牌识区域-->
            <id>
              <!--req, string, 索引, range:[1,10]-->test
            </id>
            <RegionCoordinatesList>
              <!--opt, array, 区域坐标列表, subType:object, range:[,]-->
              <RegionCoordinates>
                <!--opt, object, 区域坐标-->
                <positionX>
                  <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionX>
                <positionY>
                  <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
          </PlateRecogRegion>
        </PlateRecogRegionList>
      </PlateRecogParam>
      <LaneConfig>
        <!--opt, object, 车道线-->
        <LaneList size="10">
          <!--opt, object, 车道列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <Lane>
            <!--opt, object, 车道-->
            <laneId>
              <!--req, int, 车道号, range:[1,10], step:, unit:, unitType:-->1
            </laneId>
            <RegionCoordinatesList>
              <!--opt, array, 区域坐标列表, subType:object, range:[,], desc:RightLaneLine节点返回时,这里只配置左车道线-->
              <RegionCoordinates>
                <!--opt, object, 区域坐标-->
                <positionX>
                  <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionX>
                <positionY>
                  <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
            <lineType>
              <!--req, enum, 车道线类型, subType:string, [laneBoundaryLine#车道边界线,laneLine#车道线]-->laneBoundaryLine
            </lineType>
            <carDriveDirect>
              <!--req, enum, 行车方向, subType:string, [down2up#从下到上,up2down#从上到下]-->down2up
            </carDriveDirect>
            <RightLaneLine>
              <!--opt, object, 右车道线, desc:返回该能力则代表每个车道都需要配置左右车道线-->
              <RegionCoordinatesList size="2">
                <!--req, array, 区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
                <RegionCoordinates>
                  <!--opt, object, 区域坐标-->
                  <positionX>
                    <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
                  </positionX>
                  <positionY>
                    <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
                  </positionY>
                </RegionCoordinates>
              </RegionCoordinatesList>
            </RightLaneLine>
          </Lane>
        </LaneList>
      </LaneConfig>
      <AtRoadsideCalib>
        <!--opt, object, 侧装校正参数-->
        <RegionCoordinatesList>
          <!--opt, array, 区域坐标列表, subType:object, range:[,]-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </AtRoadsideCalib>
      <ParkingDetection>
        <!--opt, object, 停车检测-->
        <enabled>
          <!--req, bool, 使能-->true
        </enabled>
        <duration>
          <!--req, int, 检测时间间隔, range:[5,60], step:, unit:s, unitType:时间-->0
        </duration>
        <alarmIntervalTime>
          <!--req, int, 上传时间间隔, range:[1,30], step:, unit:min, unitType:时间-->0
        </alarmIntervalTime>
      </ParkingDetection>
      <AboveRoadCalib>
        <!--opt, object, 正装校正参数-->
        <RegionCoordinatesList>
          <!--opt, array, 区域坐标列表, subType:object, range:[,]-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </AboveRoadCalib>
      <RelatedLaneParam>
        <!--opt, object, 关联车道参数-->
        <RelatedLaneNoList>
          <!--req, array, 关联车道号, subType:object, range:[,]-->
          <relatedLaneNo>
            <!--req, int, 关联车道号, range:[1,6], step:, unit:, unitType:-->0
          </relatedLaneNo>
        </RelatedLaneNoList>
      </RelatedLaneParam>
    </VehicleDetectScene>
  </VehicleDetectSceneList>
  <PlateDetectionRegion>
    <!--opt, object, 牌识检测区域-->
    <PlateSize>
      <!--opt, object, 牌识区域范围-->
      <minWidth>
        <!--opt, int, 最小宽度, range:[0,1000], step:, unit:, unitType:-->0
      </minWidth>
      <maxWidth>
        <!--opt, int, 最大宽度, range:[0,1000], step:, unit:, unitType:-->0
      </maxWidth>
    </PlateSize>
    <plateMode>
      <!--opt, enum, 车牌模式, subType:string, [small#小车牌,large#大车牌]-->small
    </plateMode>
  </PlateDetectionRegion>
  <autoBuildRecogArea>
    <!--opt, enum, 自动生成识别区域类型, subType:string, [line#线,region#区域]-->line
  </autoBuildRecogArea>
  <RodeType>
    <!--opt, object, 道路类型-->
    <type>
      <!--opt, enum, 类型, subType:string, [entrance#出入口,city#城市,custom#自定义,alarmInput#报警输入(通过线圈触发),post#卡口,publicSecurity#治安监控], desc:publicSecurity(治安监控：该模式下可以检测车辆比较混乱且没有车道线的场景，无需配置车道线)-->entrance
    </type>
    <Custom>
      <!--opt, object, 自定义参数-->
      <delayTime>
        <!--opt, int, 延迟时间, range:[0,15000], step:, unit:, unitType:-->0
      </delayTime>
      <delayTimeUnit>
        <!--opt, enum, 延迟时间单位, subType:string, [ms#毫秒]-->ms
      </delayTimeUnit>
    </Custom>
    <gateType>
      <!--opt, enum, 出入口类型, subType:string, [entry#入口,exit#出口], desc:仅当type为entrance存在-->entry
    </gateType>
  </RodeType>
  <enhancedMode>
    <!--opt, bool, 增强模式, desc:仅超脑接入非专业智能相机时支持-->true
  </enhancedMode>
  <picRecognition>
    <!--opt, bool, 车辆报警图片二次识别, desc:仅超脑接入专业智能相机时支持-->true
  </picRecognition>
  <countryIndex>
    <!--opt, int, 国家索引, range:[1,255], step:, unit:, unitType:-->0
  </countryIndex>
  <IntelligentMode>
    <!--opt, object, 全景云台智能参数配置-->
    <mountingType>
      <!--opt, enum, 安装方式, subType:int, [1#镜头正装,2#镜头侧装], desc:默认正装-->1
    </mountingType>
    <captureStrategy>
      <!--opt, enum, 出图策略（前后车牌匹配）, subType:int, [1#前后镜头抓拍的车牌结同时才会抓拍出图,2#前后车牌不匹配], desc:默认不匹配-->2
    </captureStrategy>
    <pictureSplicingFormat>
      <!--opt, enum, 拼接格式, subType:string, [2#两路拼接,3#三路拼接], desc:两路拼接(2,3拼接，5,6拼接), 三路拼接(1,2,3拼接，4,5,6拼接)-->2
    </pictureSplicingFormat>
  </IntelligentMode>
  <CameralDirection>
    <!--opt, object, 相机方向-->
    <frontLensFacingDirection>
      <!--opt, enum, 前镜头方向, subType:int, [0#正前,1#右前,2#右后,3#正后,4#左后,5#左前]-->0
    </frontLensFacingDirection>
    <rearLensFacingDirection>
      <!--opt, enum, 后镜头方向, subType:int, [0#正前,1#右前,2#右后,3#正后,4#左后,5#左前]-->0
    </rearLensFacingDirection>
  </CameralDirection>
  <CRIndex>
    <!--req, enum, 国家/区域, subType:int, [0#Unsupported算法库不支持牌识国家,1#Czech Republic捷克共和国,10#Moldova摩尔多瓦,100#Reserved保留字段,101#Reserved保留字段,102#Reserved保留字段,103#Reserved保留字段,104#Egypt埃及,105#Libya利比亚,106#Sudan苏丹,107#Tunisia突尼斯,108#Algeria阿尔及利亚,109#Morocco摩洛哥,11#Russia俄罗斯,110#Ethiopia埃塞俄比亚,111#Eritrea厄立特里亚,112#Somalia Democratic索马里,113#Djibouti吉布提,114#Kenya肯尼亚,115#Tanzania坦桑尼亚,116#Uganda乌干达,117#Rwanda卢旺达,118#Burundi布隆迪,119#Seychelles塞舌尔,12#Ukraine乌克兰,120#Chad乍得,121#Central African中非,122#Cameroon喀麦隆,123#Equatorial Guinea赤道几内亚,124#Gabon加蓬,125#Congo刚果共和国（即：刚果（布））,126#Democratic Republic of the Congo刚果民主共和国（即：刚果（金））,127#Sao Tome and Principe圣多美和普林西比,128#Mauritania毛里塔尼亚,129#Western Sahara西撒哈拉（撒拉威）,13#Belgium比利时,130#Senegal塞内加尔,131#Gambia冈比亚,132#Mali马里,133#Burkina Faso布基纳法索,134#Guinea几内亚,135#Guinea-Bissau几内亚比绍,136#Cape Verde佛得角,137#Sierra Leone塞拉利昂,138#Liberia利比里亚,139#Ivory Coast科特迪瓦,14#Bulgaria保加利亚,140#Ghana加纳,141#Togo多哥,142#Benin贝宁,143#Niger尼日尔,144#Zambia赞比亚,145#Angola安哥拉,146#Zimbabwe津巴布韦,147#Malawi马拉维,148#Mozambique莫桑比克,149#Botswana博茨瓦纳,15#Denmark丹麦,150#Namibia纳米比亚,151#South Africa南非,152#Swaziland斯威士兰,153#Lesotho莱索托,154#Madagasca马达加斯加,155#Comoros科摩罗,156#Mauritius毛里求斯,157#Nigeria尼日利亚,158#South Sudan南苏丹,159#Saint Helena圣赫勒拿（英国海外省）,16#Finland芬兰,160#Mayotte马约特（法国海外省）,161#Reunion留尼旺（法国海外省）,162#Canary Islands加那利群岛（西班牙海外领土）,163#AZORES亚速尔群岛（北大西洋非洲西海岸（葡萄牙））,164#Madeira马德拉群岛（北大西洋非洲西海岸（葡萄牙））,165#Reserved保留字段,166#Reserved保留字段,167#Reserved保留字段,168#Reserved保留字段,169#Canada加拿大,17#United Kingdom英国 之前叫Great Britain,170#Greenland Nuuk格陵兰（丹麦王国的海外自治领土）,171#Pierre and Miquelon圣皮埃尔和密克隆（法国海外领土）,172#United State美国,173#Bermuda百慕大（英国海外领土）,174#Mexico墨西哥,175#Guatemala危地马拉,176#Belize伯利兹,177#El Salvador萨尔瓦多,178#Honduras洪都拉斯,179#Nicaragua尼加拉瓜,18#Greece希腊,180#Costa Rica哥斯达黎加,181#Panama巴拿马,182#Bahamas巴哈马,183#Turks and  Caicos Islands特克斯群岛和凯科斯群岛（英国海外领土）,184#Cuba古巴,185#Jamaica牙买加,186#Cayman Islands开曼群岛（英国海外领土）,187#Haiti海地,188#Dominican多米尼加,189#Puerto Rico波多黎各（美国海外领土）,19#Croatia克罗地亚,190#United States Virgin Islands美属维尔京群岛,191#British Virgin Islands英属维尔京群岛,192#Anguilla安圭拉（英国海外领土）,193#Antigua and Barbuda安提瓜和巴布达,194#Collectivité de Saint-Martin法属圣马丁（法国海外领土）,195#Autonomous country荷属圣马丁（荷兰王国的自治国）,196#Saint-Barthélemy圣巴泰勒米岛（法国海外领土）,197#Saint Kitts and Nevis圣基茨和尼维斯,198#Montserrat蒙特塞拉特（英国海外领土）,199#Guadeloupe瓜德罗普（法国海外领土）,2#France法国,20#Hungary匈牙利,200#Dominica多米尼克,201#Martinique马提尼克（法国海外领土）,202#St. Lucia圣卢西亚,203#Saint Vincent and the Grenadines圣文森特和格林纳丁斯,204#Grenada格林纳达,205#Barbados巴巴多斯,206#Trinidad and Tobago特立尼达和多巴哥,207#Cura?ao库拉索（荷兰王国的一个自治国）,208#Aruba阿鲁巴（荷兰王国的一个自治国）,209#Netherlands Antilles荷属安的列斯,21#Israel以色列(亚洲),210#Colombia哥伦比亚,211#Venezuela委内瑞拉,212#Guyana圭亚那,213#Suriname苏里南,214#Guyane Francaise法属圭亚那,215#Ecuador厄瓜多尔,216#Peru秘鲁,217#Bolivia玻利维亚,218#Paraguay巴拉圭,219#Chile智利,22#Luxembourg卢森堡,220#Brazil巴西,221#Uruguay乌拉圭,222#Argentina阿根廷,223#Reserved保留字段,224#Reserved保留字段,225#Reserved保留字段,226#Reserved保留字段,227#Australia澳大利亚,228#New Zealand 新西兰,229#Papua New Guinea巴布亚新几内亚,23#Macedonia马其顿共和国  2018年改为North Macedonia,230#Salomonen所罗门群岛,231#Vanuatu瓦努阿图,232#New Caledonia新喀里多尼亚（法国的海外属地）,233#Palau帕劳,234#Federated States of Micronesia密克罗尼西亚联邦,235#Marshall Island马绍尔群岛,236#Northern Mariana Islands北马里亚纳群岛（美国的海外属地）,237#Guam关岛（美国的海外属地）,238#Nauru瑙鲁,239#Kiribati基里巴斯,24#Norway挪威,240#Fidschi斐济群岛,241#Tonga汤加,242#Tuvalu图瓦卢,243#Wallis et Futuna瓦利斯和富图纳（法国的海外属地）,244#Samoa萨摩亚,245#Eastern Samoa美属萨摩亚,246#Tokelau托克劳（新西兰）,247#Niue纽埃（新西兰）,248#Cook Islands库克群岛（新西兰）,249#French Polynesia法属波利尼西亚,25#Portuga葡萄牙,250#Pitcairn Islands皮特凯恩群岛（英国的海外属地）,251#Hawaii State夏威夷（美国的海外属地）,252#Reserved保留字段,253#Reserved保留字段,254#Unrecognized无法识别,255#ALL全部,256#Taiwan (China) 台湾（中国）,257#Hong Kong (China)中国香港,258#Macau (China)中国澳门,26#Romania罗马尼亚,27#Serbia塞尔维亚,28#Azerbaijan阿塞拜疆共和国(亚洲),29#Georgia格鲁吉亚(亚洲),3#Germany德国,30#Kazakhstan哈萨克斯坦(亚洲),31#Lithuania立陶宛共和国,32#Turkmenistan土库曼斯坦(亚洲),33#Uzbekistan乌兹别克斯坦(亚洲),34#Latvia拉脱维亚,35#Estonia爱沙尼亚,36#Albania阿尔巴尼亚,37#Austria奥地利,38#Bosnia and Herzegovina波斯尼亚和黑塞哥维那,39#Ireland爱尔兰,4#Spain西班牙,40#Iceland冰岛,41#Vatican梵蒂冈,42#Malta马耳他,43#Sweden瑞典,44#Switzerland瑞士,45#Cyprus塞浦路斯,46#Turkey土耳其,47#Slovenia斯洛文尼亚,48#Montenegro黑山共和国,49#Kosovo科索沃,5#Italy意大利,50#Andorra安道尔,51#Armenia亚美尼亚(亚洲),52#Monaco摩纳哥,53#Liechtenstein列支敦士登,54#San Marino圣马力诺,55#Reserved保留字段,56#Reserved保留字段,57#Reserved保留字段,58#Reserved保留字段,59#China中国,6#Netherlands荷兰,60#Bahrain巴林,61#South Korea韩国,62#Lebanon黎巴嫩,63#Nepal尼泊尔,64#Thailand泰国,65#Pakistan巴基斯坦,66#United Arab Emirates阿拉伯联合酋长国,67#Bhutan不丹,68#Oman阿曼,69#North Korea朝鲜,7#Poland波兰,70#Philippines菲律宾,71#Cambodia柬埔寨,72#Qatar卡塔尔,73#Kyrgyzstan吉尔吉斯斯坦,74#Maldives马尔代夫,75#Malaysia马来西亚,76#Mongolia蒙古,77#Saudi Arabia沙特阿拉伯,78#Brunei文莱,79#Laos老挝,8#Slovakia斯洛伐克,80#Japan日本,81#Turkey土耳其,82#Palestinian巴勒斯坦国,83#Tajikistan塔吉克斯坦,84#Kuwait科威特,85#Syria叙利亚,86#India印度,87#Indonesia印度尼西亚,88#Afghanistan阿富汗,89#Sri Lanka斯里兰卡,9#Belarus白俄罗斯,90#Iraq伊拉克,91#Vietnam越南,92#Iran伊朗,93#Yemen也门,94#Jordan约旦,95#Burma/Myanmar缅甸,96#Sikkim锡金,97#Bangladesh孟加拉国,98#Singapore新加坡,99#Democratic Republic of Timor-Leste东帝汶（已宣布独立],
desc:countryIndex和CRIndex兼容逻辑
设备兼容：为了兼容老用户，新老字段都有返回，当值为CRIndex<=255时，countryIndex取值和CRIndex相同，当CRIndex>255时,countryIndex字段取值为253（该字段无效，需要使用CRIndex字段）
集成流程：新用户如果能力中有CRIndex字段，优先使用CRIndex，如果能力中没有，则使用countryIndex。  老用户只集成了countryIndex，如果遇到countryIndex为253时，需要增加处理逻辑，使用CRIndex字段-->0
  </CRIndex>
  <detectionMode>
    <!--opt, enum, 检测模式, subType:string, [vehiclePriority#先车辆后车牌,licensePlateOrVehicle#根据场景调整先识别车牌还是先识别车辆],
desc:默认: licensePlateOrVehicle;
vehiclePriority,先车辆识别，再车牌识别,避免出入口场景人举着车牌也被开闸,该模式存在一定风险识别不出车辆;
licensePlateOrVehicle,根据场景调整先识别车牌还是先识别车辆.在光线很暗的情况下,车辆可能无法识别,这种模式可以识别车牌.常规场景下,这种模式可先识别车辆再识别车牌,推荐使用,默认也是该模式;-->vehiclePriority
  </detectionMode>
  <Filtration>
    <!--opt, object, 同车牌过滤-->
    <enabled>
      <!--opt, bool, 是否开启同车牌过滤, desc:默认false-->true
    </enabled>
    <filtrationTime>
      <!--opt, int, 过滤时间, range:[1,5], step:, unit:min, unitType:时间, desc:默认4分钟-->1
    </filtrationTime>
  </Filtration>
</VehicleDetectCfg>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取单通道车辆检测布防时间

4.1 命令

GET /ISAPI/Event/schedules/vehicledetects/vehicledetect-<channelID>

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->vehicledetect-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->vehicledetect
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--ro, opt, object, 布防属性-->
        <vehicleDetectSceneID>
          <!--ro, opt, int, 车辆检测场景ID, range:[,], step:, unit:, unitType:-->0
        </vehicleDetectSceneID>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

5. 配置单通道车辆检测布防时间

5.1 命令

PUT /ISAPI/Event/schedules/vehicledetects/vehicledetect-<channelID>

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->vehicledetect-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->vehicledetect
  </eventType>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--opt, object, 布防属性-->
        <vehicleDetectSceneID>
          <!--opt, int, 车辆检测场景ID, range:[,], step:, unit:, unitType:-->0
        </vehicleDetectSceneID>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取车辆检测联动配置

6.1 命令

GET /ISAPI/Event/triggers/vehicledetect-<channelID>

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 事件联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->vehicledetect-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->vehicledetect
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字IO输入ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <AudioAction>
        <!--ro, opt, object, 声音联动, desc:isSupportBeep为true时有效-->
        <audioID>
          <!--ro, req, int, 报警声音类型, range:[,], step:, unit:, unitType:-->0
        </audioID>
        <alarmTimes>
          <!--ro, req, int, 报警次数, range:[0,255], step:, unit:, unitType:, desc:255表示持续-->0
        </alarmTimes>
      </AudioAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

7. 配置车辆检测联动配置

7.1 命令

PUT /ISAPI/Event/triggers/vehicledetect-<channelID>

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 事件联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->vehicledetect-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->vehicledetect
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字IO输入ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
      <AudioAction>
        <!--opt, object, 声音联动, desc:isSupportBeep为true时有效-->
        <audioID>
          <!--req, int, 报警声音类型, range:[,], step:, unit:, unitType:-->0
        </audioID>
        <alarmTimes>
          <!--req, int, 报警次数, range:[0,255], step:, unit:, unitType:, desc:255表示持续-->0
        </alarmTimes>
      </AudioAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取手动触发车辆检测结果

8.1 命令

GET /ISAPI/Traffic/channels/<channelID>/vehicleDetect/manualTrigger

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleDetectManualTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 手动触发车辆检测结果, attr:version{req, string, 协议版本, range:[,]}-->
  <captureTime>
    <!--ro, req, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
  </captureTime>
  <imageName>
    <!--ro, req, string, 图片名称, range:[,], desc:eg:"ch0001_000000000040000000512000.jpg"-->test
  </imageName>
  <ANPRList>
    <!--ro, opt, array, 车牌识别信息列表, subType:object, range:[,]-->
    <ANPR>
      <!--ro, opt, object, 车牌识别信息-->
      <region>
        <!--ro, req, enum, 区域（地区）, subType:string, [AFandAM#非美 Africa and America,APAC#亚太区 Asia-Pacific Region,All#所有区域（All Region）,ER#俄语区域（Russian Region）,EU#欧洲（Europe Region）,EUandCIS#欧洲&俄罗斯（EU&CIS）,HKandMO#港澳区 Hong Kong and Macao,India#印度（India）,ME#中东（Middle East）,THAandLA#泰国老挝区Thailand and Laos,other#其他（other）]-->AFandAM
      </region>
      <country>
        <!--ro, req, enum, 国家, subType:int, [0#Unsupported算法库不支持牌识国家,1#Czech Republic捷克共和国,10#Moldova摩尔多瓦,100#Reserved保留字段,101#Reserved保留字段,102#Reserved保留字段,103#Reserved保留字段,104#Egypt埃及,105#Libya利比亚,106#Sudan苏丹,107#Tunisia突尼斯,108#Algeria阿尔及利亚,109#Morocco摩洛哥,11#Russia俄罗斯,110#Ethiopia埃塞俄比亚,111#Eritrea厄立特里亚,112#Somalia Democratic索马里,113#Djibouti吉布提,114#Kenya肯尼亚,115#Tanzania坦桑尼亚,116#Uganda乌干达,117#Rwanda卢旺达,118#Burundi布隆迪,119#Seychelles塞舌尔,12#Ukraine乌克兰,120#Chad乍得,121#Central African中非,122#Cameroon喀麦隆,123#Equatorial Guinea赤道几内亚,124#Gabon加蓬,125#Congo刚果共和国（即：刚果（布））,126#Democratic Republic of the Congo刚果民主共和国（即：刚果（金））,127#Sao Tome and Principe圣多美和普林西比,128#Mauritania毛里塔尼亚,129#Western Sahara西撒哈拉（撒拉威）,13#Belgium比利时,130#Senegal塞内加尔,131#Gambia冈比亚,132#Mali马里,133#Burkina Faso布基纳法索,134#Guinea几内亚,135#Guinea-Bissau几内亚比绍,136#Cape Verde佛得角,137#Sierra Leone塞拉利昂,138#Liberia利比里亚,139#Ivory Coast科特迪瓦,14#Bulgaria保加利亚,140#Ghana加纳,141#Togo多哥,142#Benin贝宁,143#Niger尼日尔,144#Zambia赞比亚,145#Angola安哥拉,146#Zimbabwe津巴布韦,147#Malawi马拉维,148#Mozambique莫桑比克,149#Botswana博茨瓦纳,15#Denmark丹麦,150#Namibia纳米比亚,151#South Africa南非,152#Swaziland斯威士兰,153#Lesotho莱索托,154#Madagasca马达加斯加,155#Comoros科摩罗,156#Mauritius毛里求斯,157#Nigeria尼日利亚,158#South Sudan南苏丹,159#Saint Helena圣赫勒拿（英国海外省）,16#Finland芬兰,160#Mayotte马约特（法国海外省）,161#Reunion留尼旺（法国海外省）,162#Canary Islands加那利群岛（西班牙海外领土）,163#AZORES亚速尔群岛（北大西洋非洲西海岸（葡萄牙））,164#Madeira马德拉群岛（北大西洋非洲西海岸（葡萄牙））,165#Reserved保留字段,166#Reserved保留字段,167#Reserved保留字段,168#Reserved保留字段,169#Canada加拿大,17#United Kingdom英国 之前叫Great Britain,170#Greenland Nuuk格陵兰（丹麦王国的海外自治领土）,171#Pierre and Miquelon圣皮埃尔和密克隆（法国海外领土）,172#United State美国,173#Bermuda百慕大（英国海外领土）,174#Mexico墨西哥,175#Guatemala危地马拉,176#Belize伯利兹,177#El Salvador萨尔瓦多,178#Honduras洪都拉斯,179#Nicaragua尼加拉瓜,18#Greece希腊,180#Costa Rica哥斯达黎加,181#Panama巴拿马,182#Bahamas巴哈马,183#Turks and  Caicos Islands特克斯群岛和凯科斯群岛（英国海外领土）,184#Cuba古巴,185#Jamaica牙买加,186#Cayman Islands开曼群岛（英国海外领土）,187#Haiti海地,188#Dominican多米尼加,189#Puerto Rico波多黎各（美国海外领土）,19#Croatia克罗地亚,190#United States Virgin Islands美属维尔京群岛,191#British Virgin Islands英属维尔京群岛,192#Anguilla安圭拉（英国海外领土）,193#Antigua and Barbuda安提瓜和巴布达,194#Collectivité de Saint-Martin法属圣马丁（法国海外领土）,195#Autonomous country荷属圣马丁（荷兰王国的自治国）,196#Saint-Barthélemy圣巴泰勒米岛（法国海外领土）,197#Saint Kitts and Nevis圣基茨和尼维斯,198#Montserrat蒙特塞拉特（英国海外领土）,199#Guadeloupe瓜德罗普（法国海外领土）,2#France法国,20#Hungary匈牙利,200#Dominica多米尼克,201#Martinique马提尼克（法国海外领土）,202#St. Lucia圣卢西亚,203#Saint Vincent and the Grenadines圣文森特和格林纳丁斯,204#Grenada格林纳达,205#Barbados巴巴多斯,206#Trinidad and Tobago特立尼达和多巴哥,207#Cura?ao库拉索（荷兰王国的一个自治国）,208#Aruba阿鲁巴（荷兰王国的一个自治国）,209#Netherlands Antilles荷属安的列斯,21#Israel以色列(亚洲),210#Colombia哥伦比亚,211#Venezuela委内瑞拉,212#Guyana圭亚那,213#Suriname苏里南,214#Guyane Francaise法属圭亚那,215#Ecuador厄瓜多尔,216#Peru秘鲁,217#Bolivia玻利维亚,218#Paraguay巴拉圭,219#Chile智利,22#Luxembourg卢森堡,220#Brazil巴西,221#Uruguay乌拉圭,222#Argentina阿根廷,223#Reserved保留字段,224#Reserved保留字段,225#Reserved保留字段,226#Reserved保留字段,227#Australia澳大利亚,228#New Zealand 新西兰,229#Papua New Guinea巴布亚新几内亚,23#Macedonia马其顿共和国  2018年改为North Macedonia,230#Salomonen所罗门群岛,231#Vanuatu瓦努阿图,232#New Caledonia新喀里多尼亚（法国的海外属地）,233#Palau帕劳,234#Federated States of Micronesia密克罗尼西亚联邦,235#Marshall Island马绍尔群岛,236#Northern Mariana Islands北马里亚纳群岛（美国的海外属地）,237#Guam关岛（美国的海外属地）,238#Nauru瑙鲁,239#Kiribati基里巴斯,24#Norway挪威,240#Fidschi斐济群岛,241#Tonga汤加,242#Tuvalu图瓦卢,243#Wallis et Futuna瓦利斯和富图纳（法国的海外属地）,244#Samoa萨摩亚,245#Eastern Samoa美属萨摩亚,246#Tokelau托克劳（新西兰）,247#Niue纽埃（新西兰）,248#Cook Islands库克群岛（新西兰）,249#French Polynesia法属波利尼西亚,25#Portuga葡萄牙,250#Pitcairn Islands皮特凯恩群岛（英国的海外属地）,251#Hawaii State夏威夷（美国的海外属地）,252#Reserved保留字段,253#invalid （字段无效,254#Unrecognized无法识别,255#ALL全部,26#Romania罗马尼亚,27#Serbia塞尔维亚,28#Azerbaijan阿塞拜疆共和国(亚洲),29#Georgia格鲁吉亚(亚洲),3#Germany德国,30#Kazakhstan哈萨克斯坦(亚洲),31#Lithuania立陶宛共和国,32#Turkmenistan土库曼斯坦(亚洲),33#Uzbekistan乌兹别克斯坦(亚洲),34#Latvia拉脱维亚,35#Estonia爱沙尼亚,36#Albania阿尔巴尼亚,37#Austria奥地利,38#Bosnia and Herzegovina波斯尼亚和黑塞哥维那,39#Ireland爱尔兰,4#Spain西班牙,40#Iceland冰岛,41#Vatican梵蒂冈,42#Malta马耳他,43#Sweden瑞典,44#Switzerland瑞士,45#Cyprus塞浦路斯,46#Turkey土耳其,47#Slovenia斯洛文尼亚,48#Montenegro黑山共和国,49#Kosovo科索沃,5#Italy意大利,50#Andorra安道尔,51#Armenia亚美尼亚(亚洲),52#Monaco摩纳哥,53#Liechtenstein列支敦士登,54#San Marino圣马力诺,55#Reserved保留字段,56#Reserved保留字段,57#Reserved保留字段,58#Reserved保留字段,59#China中国,6#Netherlands荷兰,60#Bahrain巴林,61#South Korea韩国,62#Lebanon黎巴嫩,63#Nepal尼泊尔,64#Thailand泰国,65#Pakistan巴基斯坦,66#United Arab Emirates阿拉伯联合酋长国,67#Bhutan不丹,68#Oman阿曼,69#North Korea朝鲜,7#Poland波兰,70#Philippines菲律宾,71#Cambodia柬埔寨,72#Qatar卡塔尔,73#Kyrgyzstan吉尔吉斯斯坦,74#Maldives马尔代夫,75#Malaysia马来西亚,76#Mongolia蒙古,77#Saudi Arabia沙特阿拉伯,78#Brunei文莱,79#Laos老挝,8#Slovakia斯洛伐克,80#Japan日本,81#Turkey土耳其,82#Palestinian巴勒斯坦国,83#Tajikistan塔吉克斯坦,84#Kuwait科威特,85#Syria叙利亚,86#India印度,87#Indonesia印度尼西亚,88#Afghanistan阿富汗,89#Sri Lanka斯里兰卡,9#Belarus白俄罗斯,90#Iraq伊拉克,91#Vietnam越南,92#Iran伊朗,93#Yemen也门,94#Jordan约旦,95#Burma/Myanmar缅甸,96#Sikkim锡金,97#Bangladesh孟加拉国,98#Singapore新加坡,99#Democratic Republic of Timor-Leste东帝汶（已宣布独立]-->0
      </country>
      <licensePlate>
        <!--ro, req, string, 车牌号码, range:[1,16], desc:eg."浙A12345"-->test
      </licensePlate>
      <line>
        <!--ro, req, int, 识别车道号, range:[1,10], step:, unit:, unitType:-->1
      </line>
      <direction>
        <!--ro, req, enum, 牌识方向, subType:string, [reverse#背向,forward#正向,unknown#未知]-->reverse
      </direction>
      <confidenceLevel>
        <!--ro, req, int, 置信度等级, range:[0,100], step:, unit:, unitType:-->0
      </confidenceLevel>
      <plateType>
        <!--ro, req, enum, 车牌类型, subType:string, [02TypePersonalized#02式个性化车,04NewMilitay#04式新军车,92FarmVehicle#民用车双行尾牌（补录）,92TypeArm#92式武警车,92TypeCivil#92式民用车,arm#警车,civilAviation#民航车牌,coach#教练车,consulate#领馆汽车,embassy#使馆车,emergency#应急车牌,green1325FarmVehicle#绿色1325农用车,hongKongMacao#港澳入出车,leftRightMilitay#左右军车,motorola#摩托车,newEnergy#新能源车牌,oneLineArm#一行结构的新武警车,oneLineArmHeadquarters#一行结构武警总部车牌,tempEntry#临时入境车,tempTravl#临时行驶车,trailer#挂车,twoLineArm#两行结构的新武警车,twoLineArmHeadquarters#两行结构武警总部车牌,unknown#未知,upDownMilitay#上下军车,yellow1225FarmVehicle#黄色1225农用车,yellow1325FarmVehicle#黄色1325结构农用车,yellowTwoLine#黄色双行尾牌]-->02TypePersonalized
      </plateType>
      <plateColor>
        <!--ro, req, enum, 车牌颜色, subType:string, [black#黑色,blue#蓝色,civilAviationBlack#民航黑色,civilAviationGreen#民航绿色,golden#金色,green#绿色,mixedColor#花底,newEnergyGreen#新能源绿色,newEnergyYellowGreen#新能源黄绿色,orange#橙色,other#其他颜色,red#红色,unknown#未知,white#白色,yellow#黄色]-->black
      </plateColor>
      <licenseBright>
        <!--ro, opt, int, 车牌亮度值, range:[0,255], step:, unit:, unitType:-->0
      </licenseBright>
      <Rect>
        <!--ro, opt, object, 匹配图片车牌子图坐标, desc:屏幕左上角为坐标原点-->
        <height>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </y>
      </Rect>
      <CarFeature>
        <!--ro, opt, object, 车辆特征-->
        <vehicleLogo>
          <!--ro, opt, int, 车辆主品牌, range:[,], step:, unit:, unitType:, desc:参见海康威视主子品牌表-->0
        </vehicleLogo>
        <vehicleSubLogo>
          <!--ro, opt, int, 车辆子品牌, range:[,], step:, unit:, unitType:, desc:参见海康威视主子品牌表-->0
        </vehicleSubLogo>
        <vehicleModel>
          <!--ro, opt, int, 车辆子品牌年款, range:[,], step:, unit:, unitType:, desc:参见海康威视主子品牌表-->0
        </vehicleModel>
        <vehicleColor>
          <!--ro, req, enum, 车辆颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
        </vehicleColor>
        <vehicleType>
          <!--ro, req, enum, 车辆类型, subType:string, [SUVMPV#SUV/MPV,buggy#小货车,bus#客车,concreteMixer#混凝土搅拌车,containerTruck#集装箱卡车,coupe#轿跑,crane#吊车,hatchback#两厢轿车,largeBus#大型客车,lightTruck#轻微货车,mediumBus#中型客车,mediumHeavyTruck#中重型货车,miniCar#微型轿车（平台转成：轿车）,minibus#小型客车,minitruck#微卡,motorVehicle#机动车（平台转成：轿车）,nonmotorVehicle#非机动车（平台转成：三轮车）,oilTankTruck#油罐车,pedestrian#行人,pickupTruck#皮卡车（平台转成：小货车）,platformTrailer#平板拖车,saloon#三厢轿车,slagTruck#渣土车,smallCar#小型轿车（平台转成：轿车）,threeWheelVehicle#三轮车,truck#货车,twoWheelVehicle#二轮车,unknown#未知,van#面包车,vehicle#轿车]-->SUVMPV
        </vehicleType>
        <PilotSafetyBelt>
          <!--ro, opt, object, 检测主驾驶安全带-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </PilotSafetyBelt>
        <CoPilotSafetyBelt>
          <!--ro, opt, object, 检测副驾驶安全带-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </CoPilotSafetyBelt>
        <SunVisor>
          <!--ro, opt, object, 检测主驾驶遮阳板-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </SunVisor>
        <CoPilotSunVisor>
          <!--ro, opt, object, 副驾驶检测遮阳板-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </CoPilotSunVisor>
        <HighPollutVehicle>
          <!--ro, opt, object, 检测黄标车-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </HighPollutVehicle>
        <DangerousVehicle>
          <!--ro, opt, object, 检测危险品车-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </DangerousVehicle>
        <PilotCall>
          <!--ro, opt, object, 检测驾驶员打电话-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </PilotCall>
        <Pendant>
          <!--ro, opt, object, 检测车窗悬挂物-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </Pendant>
        <TissueBox>
          <!--ro, opt, object, 纸巾盒检测-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </TissueBox>
        <FrontChild>
          <!--ro, opt, object, 副驾驶环保婴儿/儿童单独乘坐副驾检测-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </FrontChild>
        <Label>
          <!--ro, opt, object, 标签检测-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
          <labelNum>
            <!--ro, opt, int, 标签个数, range:[0,255], step:, unit:, unitType:, dep:and,{$.VehicleDetectManualTrigger.ANPRList[*].ANPR.CarFeature.Label.detectionResult,eq,yes}-->1
          </labelNum>
        </Label>
        <SunroofPdvs>
          <!--ro, opt, object, 天窗站人-->
          <detectionResult>
            <!--ro, req, enum, 检测结果, subType:string, [unknown#未知,yes#是,no#否]-->unknown
          </detectionResult>
        </SunroofPdvs>
      </CarFeature>
    </ANPR>
  </ANPRList>
</VehicleDetectManualTrigger>

9. 获取车辆检测ftp信息上传

9.1 命令

GET /ISAPI/System/Network/ftp/uploadInfo

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FtpUpload xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, ftp信息上传配置, attr:version{req, string, 协议版本, range:[,]}-->
  <vehiclePicName>
    <!--ro, opt, object, 图片名称-->
    <mode>
      <!--ro, req, enum, 模式, subType:string, [default#默认,custom#自定义]-->default
    </mode>
    <NameRuleType>
      <!--ro, opt, object, 命名规则, dep:and,{$.FtpUpload.vehiclePicName.mode,eq,custom}-->
      <RuleTypeItemList>
        <!--ro, opt, array, 规则列表, subType:object, range:[,]-->
        <RuleTypeItem>
          <!--ro, opt, object, 规则-->
          <id>
            <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <item>
            <!--ro, opt, enum, 规则项, subType:string, [capture_time#抓拍时间,plate_No#车牌号,alarm_type#报警类型,camera_name#相机名称,countryOrRegion#国家/区域,carDirectionType#车辆行驶方向（上行、下行）]-->capture_time
          </item>
          <cameraName>
            <!--ro, opt, string, 相机名称, range:[1,32], dep:and,{$.FtpUpload.vehiclePicName.NameRuleType.RuleTypeItemList.RuleTypeItem.item,eq,camera_name}-->test
          </cameraName>
        </RuleTypeItem>
      </RuleTypeItemList>
    </NameRuleType>
  </vehiclePicName>
</FtpUpload>

10. 配置车辆检测ftp信息上传

10.1 命令

PUT /ISAPI/System/Network/ftp/uploadInfo

10.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FtpUpload xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, ftp信息上传配置, attr:version{req, string, 协议版本, range:[,]}-->
  <vehiclePicName>
    <!--opt, object, 图片名称-->
    <mode>
      <!--req, enum, 模式, subType:string, [default#默认,custom#自定义]-->default
    </mode>
    <NameRuleType>
      <!--opt, object, 命名规则, dep:and,{$.FtpUpload.vehiclePicName.mode,eq,custom}-->
      <RuleTypeItemList>
        <!--opt, array, 规则列表, subType:object, range:[,]-->
        <RuleTypeItem>
          <!--opt, object, 规则-->
          <id>
            <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
          </id>
          <item>
            <!--opt, enum, 规则项, subType:string, [capture_time#抓拍时间,plate_No#车牌号,alarm_type#报警类型,camera_name#相机名称,countryOrRegion#国家/区域,carDirectionType#车辆行驶方向（上行、下行）]-->capture_time
          </item>
          <cameraName>
            <!--opt, string, 相机名称, range:[1,32], dep:and,{$.FtpUpload.vehiclePicName.NameRuleType.RuleTypeItemList.RuleTypeItem.item,eq,camera_name}-->test
          </cameraName>
        </RuleTypeItem>
      </RuleTypeItemList>
    </NameRuleType>
  </vehiclePicName>
</FtpUpload>

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

11. 获取断网续传参数

11.1 命令

GET /ISAPI/Traffic/ANR

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ANRControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 断网续传参数, attr:version{req, string, 协议版本, range:[,]}-->
  <uploadInterval>
    <!--ro, req, int, 上传间隔, range:[,], step:, unit:ms, unitType:时间-->0
  </uploadInterval>
  <uploadTimeout>
    <!--ro, opt, int, 上传超时, range:[,], step:, unit:ms, unitType:时间-->0
  </uploadTimeout>
  <DeviceIpAddress>
    <!--ro, opt, object, 断网续传布防主机IP-->
    <addressingFormatType>
      <!--ro, req, enum, 地址类型, subType:string, [ipaddress#ip地址,hostname#主机名]-->ipaddress
    </addressingFormatType>
    <hostName>
      <!--ro, opt, string, 主机名, range:[0,64], dep:and,{$.ANRControl.DeviceIpAddress.addressingFormatType,eq,hostname}-->test
    </hostName>
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[0,32], dep:and,{$.ANRControl.DeviceIpAddress.addressingFormatType,eq,ipaddress}-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[0,128], dep:and,{$.ANRControl.DeviceIpAddress.addressingFormatType,eq,ipaddress}-->test
    </ipv6Address>
  </DeviceIpAddress>
</ANRControl>

12. 配置断网续传参数

12.1 命令

PUT /ISAPI/Traffic/ANR

12.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ANRControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 断网续传参数, attr:version{req, string, 协议版本, range:[,]}-->
  <uploadInterval>
    <!--req, int, 上传间隔, range:[,], step:, unit:ms, unitType:时间-->0
  </uploadInterval>
  <uploadTimeout>
    <!--opt, int, 上传超时, range:[,], step:, unit:ms, unitType:时间-->0
  </uploadTimeout>
  <DeviceIpAddress>
    <!--opt, object, 断网续传布防主机IP-->
    <addressingFormatType>
      <!--req, enum, 地址类型, subType:string, [ipaddress#ip地址,hostname#主机名]-->ipaddress
    </addressingFormatType>
    <hostName>
      <!--opt, string, 主机名, range:[0,64], dep:and,{$.ANRControl.DeviceIpAddress.addressingFormatType,eq,hostname}-->test
    </hostName>
    <ipAddress>
      <!--opt, string, ipv4地址, range:[0,32], dep:and,{$.ANRControl.DeviceIpAddress.addressingFormatType,eq,ipaddress}-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[0,128], dep:and,{$.ANRControl.DeviceIpAddress.addressingFormatType,eq,ipaddress}-->test
    </ipv6Address>
  </DeviceIpAddress>
</ANRControl>

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

13. 获取车辆校准参数能力

13.1 命令

GET /ISAPI/Traffic/channels/<channelID>/vehicleCalibration/capabilities

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Calibration xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, opt, object, 校准参数-->
  <CalibrationRegionList size="1">
    <!--ro, opt, array, 校准区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <CalibrationRegion>
      <!--ro, opt, object, 校准区域-->
      <id>
        <!--ro, req, string, 索引, range:[0,1]-->test
      </id>
      <RegionCoordinatesList size="4">
        <!--ro, opt, array, 区域列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--ro, req, object, 区域, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CalibrationRegion>
  </CalibrationRegionList>
</Calibration>

14. 获取车辆校准参数

14.1 命令

GET /ISAPI/Traffic/channels/<channelID>/vehicleCalibration

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Calibration xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, opt, object, 校准参数-->
  <CalibrationRegionList size="1">
    <!--ro, opt, array, 校准区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <CalibrationRegion>
      <!--ro, opt, object, 校准区域-->
      <id>
        <!--ro, req, string, 索引, range:[0,1]-->test
      </id>
      <RegionCoordinatesList size="4">
        <!--ro, opt, array, 区域列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--ro, req, object, 区域, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CalibrationRegion>
  </CalibrationRegionList>
</Calibration>

15. 配置车辆校准参数

15.1 命令

PUT /ISAPI/Traffic/channels/<channelID>/vehicleCalibration

15.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Calibration xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--opt, object, 校准参数-->
  <CalibrationRegionList size="1">
    <!--opt, array, 校准区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <CalibrationRegion>
      <!--opt, object, 校准区域-->
      <id>
        <!--req, string, 索引, range:[0,1]-->test
      </id>
      <RegionCoordinatesList size="4">
        <!--opt, array, 区域列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
        <RegionCoordinates>
          <!--req, object, 区域, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CalibrationRegion>
  </CalibrationRegionList>
</Calibration>

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

16. 查询多通道车辆信息

16.1 命令

POST /ISAPI/Intelligent/vehicleRecognition/Search/channels

16.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleRecognitionSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <timeSpanList>
    <!--opt, array, 时间段列表, subType:object, range:[,]-->
    <timeSpan>
      <!--opt, object, 时间段-->
      <startTime>
        <!--req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </timeSpan>
  </timeSpanList>
  <eventType>
    <!--req, enum, 事件类型, subType:string, [unlimit#不限,vehicleBlackList#车辆非授权名单,vehicleWhiteList#车辆授权名单]-->unlimit
  </eventType>
  <VehicleModeList>
    <!--opt, array, 车辆模型列表, subType:object, range:[,]-->
    <VehicleMode>
      <!--opt, object, 车辆模型-->
      <VehicleInfo>
        <!--opt, object, 车辆信息-->
        <licensePlate>
          <!--opt, string, 车牌号, range:[0,32]-->test
        </licensePlate>
        <vehicleLogoRecog>
          <!--opt, int, 车辆主品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
        </vehicleLogoRecog>
        <vehicleSubLogoRecog>
          <!--opt, int, 车辆子品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
        </vehicleSubLogoRecog>
        <vehicleModel>
          <!--opt, int, 车辆子品牌年款, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
        </vehicleModel>
        <vehicleColor>
          <!--req, enum, 车辆颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
        </vehicleColor>
        <vehicleType>
          <!--req, enum, 车辆类型, subType:string, [SUVMPV#SUV/MPV,buggy#小货车,bus#客车,concreteMixer#混凝土搅拌车,containerTruck#集装箱卡车,coupe#轿跑,crane#吊车,hatchback#两厢轿车,largeBus#大型客车,lightTruck#轻微货车,mediumBus#中型客车,mediumHeavyTruck#中重型货车,miniCar#微型轿车（平台转成：轿车）,minibus#小型客车,minitruck#微卡,motorVehicle#机动车（平台转成：轿车）,nonmotorVehicle#非机动车（平台转成：三轮车）,oilTankTruck#油罐车,pedestrian#行人,pickupTruck#皮卡车（平台转成：小货车）,platformTrailer#平板拖车,saloon#三厢轿车,slagTruck#渣土车,smallCar#小型轿车（平台转成：轿车）,threeWheelVehicle#三轮车,truck#货车,twoWheelVehicle#二轮车,unknown#未知,van#面包车,vehicle#轿车]-->SUVMPV
        </vehicleType>
      </VehicleInfo>
    </VehicleMode>
  </VehicleModeList>
  <ChannelList>
    <!--opt, array, 查询通道列表, subType:object, range:[,]-->
    <Channel>
      <!--opt, object, 通道号信息-->
      <channelID>
        <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
      </channelID>
    </Channel>
  </ChannelList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[,], step:, unit:, unitType:-->0
  </totalSearchResults>
</VehicleRecognitionSearchDescription>

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleRecognitionSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]-->MORE
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <VehicleModeList>
    <!--ro, opt, array, 车辆模型列表, subType:object, range:[,]-->
    <VehicleMode>
      <!--ro, opt, object, 车辆模型-->
      <imageURL>
        <!--ro, req, string, 匹配图片的URL, range:[0,256]-->test
      </imageURL>
      <captureTime>
        <!--ro, req, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </captureTime>
      <imageName>
        <!--ro, req, string, 图片名称, range:[0,256]-->test
      </imageName>
      <licensePlate>
        <!--ro, opt, string, 车牌号, range:[1,32]-->test
      </licensePlate>
      <vehicleLogoRecog>
        <!--ro, opt, int, 车辆主品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
      </vehicleLogoRecog>
      <vehicleSubLogoRecog>
        <!--ro, opt, int, 车辆子品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
      </vehicleSubLogoRecog>
      <vehicleModel>
        <!--ro, opt, int, 车辆子品牌年款, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
      </vehicleModel>
      <vehicleColor>
        <!--ro, req, enum, 车辆颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
      </vehicleColor>
      <vehicleType>
        <!--ro, req, enum, 车辆类型, subType:string, [SUVMPV#SUV/MPV,buggy#小货车,bus#客车,concreteMixer#混凝土搅拌车,containerTruck#集装箱卡车,coupe#轿跑,crane#吊车,hatchback#两厢轿车,largeBus#大型客车,lightTruck#轻微货车,mediumBus#中型客车,mediumHeavyTruck#中重型货车,miniCar#微型轿车（平台转成：轿车）,minibus#小型客车,minitruck#微卡,motorVehicle#机动车（平台转成：轿车）,nonmotorVehicle#非机动车（平台转成：三轮车）,oilTankTruck#油罐车,pedestrian#行人,pickupTruck#皮卡车（平台转成：小货车）,platformTrailer#平板拖车,saloon#三厢轿车,slagTruck#渣土车,smallCar#小型轿车（平台转成：轿车）,threeWheelVehicle#三轮车,truck#货车,twoWheelVehicle#二轮车,unknown#未知,van#面包车,vehicle#轿车]-->SUVMPV
      </vehicleType>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
      </similarity>
      <Rect>
        <!--ro, req, object, 匹配图片车辆目标子图坐标-->
        <height>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </y>
      </Rect>
      <vehicle_direction>
        <!--ro, opt, enum, 车辆行驶方向, subType:string, [unknown#未知,eastWest#由东向西,westEast#由西向东,southNorth#由南向北,northSouth#由北向南,southeastToNorthwest#由东南向西北,northwestToSoutheast#由西北向东南,northeastToSouthwest#由东北向西南,southwestToNortheast#由西南向东北,forward#正向,back#背向]-->unknown
      </vehicle_direction>
      <host_safe_belt>
        <!--ro, opt, enum, 主驾驶员安全带, subType:string, [unknown#未知,no#未系安全带,yes#系安全带]-->unknown
      </host_safe_belt>
      <host_sun_board>
        <!--ro, opt, enum, 主驾驶遮阳板, subType:string, [unknown#未知,no#未打开,yes#打开]-->unknown
      </host_sun_board>
      <user_phone>
        <!--ro, opt, enum, 打电话, subType:string, [unknown#未知,no#未打电话,yes#打电话]-->unknown
      </user_phone>
      <vice_safe_belt>
        <!--ro, opt, enum, 副驾驶员安全带, subType:string, [unknown#未知,no#未系安全带,yes#系安全带]-->unknown
      </vice_safe_belt>
      <vice_sun_board>
        <!--ro, opt, enum, 副驾驶遮阳板, subType:string, [unknown#未知,no#未打开,yes#打开]-->unknown
      </vice_sun_board>
      <channelID>
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:-->0
      </channelID>
    </VehicleMode>
  </VehicleModeList>
</VehicleRecognitionSearchResult>

17. 查询单通道车辆信息

17.1 命令

POST /ISAPI/Intelligent/vehicleRecognition/Search/channels/<channelID>

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleRecognitionSearchDescription xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 查询条件, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 查询结果在结果列表中的起始位置, range:[,], step:, unit:, unitType:, desc:当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录-->1
  </searchResultPosition>
  <maxResults>
    <!--req, int, 本次查询(每页显示)最大记录数, range:[,], step:, unit:, unitType:-->1
  </maxResults>
  <timeSpanList>
    <!--opt, array, 时间段列表, subType:object, range:[,]-->
    <timeSpan>
      <!--opt, object, 时间段-->
      <startTime>
        <!--req, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </startTime>
      <endTime>
        <!--req, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </timeSpan>
  </timeSpanList>
  <eventType>
    <!--req, enum, 事件类型, subType:string, [unlimit#不限,vehicleBlackList#车辆非授权名单,vehicleWhiteList#车辆授权名单]-->unlimit
  </eventType>
  <VehicleModeList>
    <!--opt, array, 车辆模型列表, subType:object, range:[,]-->
    <VehicleMode>
      <!--opt, object, 车辆模型-->
      <VehicleInfo>
        <!--opt, object, 车辆信息-->
        <licensePlate>
          <!--opt, string, 车牌号, range:[0,32]-->test
        </licensePlate>
        <vehicleLogoRecog>
          <!--opt, int, 车辆主品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
        </vehicleLogoRecog>
        <vehicleSubLogoRecog>
          <!--opt, int, 车辆子品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
        </vehicleSubLogoRecog>
        <vehicleModel>
          <!--opt, int, 车辆子品牌年款, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
        </vehicleModel>
        <vehicleColor>
          <!--req, enum, 车辆颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
        </vehicleColor>
        <vehicleType>
          <!--req, enum, 车辆类型, subType:string, [SUVMPV#SUV/MPV,buggy#小货车,bus#客车,concreteMixer#混凝土搅拌车,containerTruck#集装箱卡车,coupe#轿跑,crane#吊车,hatchback#两厢轿车,largeBus#大型客车,lightTruck#轻微货车,mediumBus#中型客车,mediumHeavyTruck#中重型货车,miniCar#微型轿车（平台转成：轿车）,minibus#小型客车,minitruck#微卡,motorVehicle#机动车（平台转成：轿车）,nonmotorVehicle#非机动车（平台转成：三轮车）,oilTankTruck#油罐车,pedestrian#行人,pickupTruck#皮卡车（平台转成：小货车）,platformTrailer#平板拖车,saloon#三厢轿车,slagTruck#渣土车,smallCar#小型轿车（平台转成：轿车）,threeWheelVehicle#三轮车,truck#货车,twoWheelVehicle#二轮车,unknown#未知,van#面包车,vehicle#轿车]-->SUVMPV
        </vehicleType>
      </VehicleInfo>
    </VehicleMode>
  </VehicleModeList>
  <totalSearchResults>
    <!--opt, int, 单次搜索总数, range:[,], step:, unit:, unitType:-->0
  </totalSearchResults>
</VehicleRecognitionSearchDescription>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VehicleRecognitionSearchResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 查询结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索记录唯一标识, range:[,], desc:用来确认上层客户端是否为同一个(倘若是同一个,则设备记录内存,下次搜索加快速度)-->test
  </searchID>
  <responseStatus>
    <!--ro, req, bool, 查询结果-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 查询状态描述, subType:string, [MORE#还有数据等待查询,NO MATCHES#没有匹配数据,OK#查询结束]-->MORE
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 本次返回的记录条数, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 符合条件的记录总条数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <VehicleModeList>
    <!--ro, opt, array, 车辆模型列表, subType:object, range:[,]-->
    <VehicleMode>
      <!--ro, opt, object, 车辆模型-->
      <imageURL>
        <!--ro, req, string, 匹配图片的URL, range:[0,256]-->test
      </imageURL>
      <captureTime>
        <!--ro, req, datetime, 抓拍时间-->1970-01-01T00:00:00+08:00
      </captureTime>
      <imageName>
        <!--ro, req, string, 图片名称, range:[0,256]-->test
      </imageName>
      <licensePlate>
        <!--ro, opt, string, 车牌号, range:[1,32]-->test
      </licensePlate>
      <vehicleLogoRecog>
        <!--ro, opt, int, 车辆主品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
      </vehicleLogoRecog>
      <vehicleSubLogoRecog>
        <!--ro, opt, int, 车辆子品牌, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
      </vehicleSubLogoRecog>
      <vehicleModel>
        <!--ro, opt, int, 车辆子品牌年款, range:[,], step:, unit:, unitType:, desc:参见车辆主子品牌表-->0
      </vehicleModel>
      <vehicleColor>
        <!--ro, req, enum, 车辆颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
      </vehicleColor>
      <vehicleType>
        <!--ro, req, enum, 车辆类型, subType:string, [SUVMPV#SUV/MPV,buggy#小货车,bus#客车,concreteMixer#混凝土搅拌车,containerTruck#集装箱卡车,coupe#轿跑,crane#吊车,hatchback#两厢轿车,largeBus#大型客车,lightTruck#轻微货车,mediumBus#中型客车,mediumHeavyTruck#中重型货车,miniCar#微型轿车（平台转成：轿车）,minibus#小型客车,minitruck#微卡,motorVehicle#机动车（平台转成：轿车）,nonmotorVehicle#非机动车（平台转成：三轮车）,oilTankTruck#油罐车,pedestrian#行人,pickupTruck#皮卡车（平台转成：小货车）,platformTrailer#平板拖车,saloon#三厢轿车,slagTruck#渣土车,smallCar#小型轿车（平台转成：轿车）,threeWheelVehicle#三轮车,truck#货车,twoWheelVehicle#二轮车,unknown#未知,van#面包车,vehicle#轿车]-->SUVMPV
      </vehicleType>
      <similarity>
        <!--ro, opt, float, 相似度, range:[0.0,100.0], step:, unit:, unitType:-->0.0
      </similarity>
      <Rect>
        <!--ro, req, object, 匹配图片车辆目标子图坐标-->
        <height>
          <!--ro, req, float, 高, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </height>
        <width>
          <!--ro, req, float, 宽, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </width>
        <x>
          <!--ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </x>
        <y>
          <!--ro, req, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:-->0.000
        </y>
      </Rect>
      <vehicle_direction>
        <!--ro, opt, enum, 车辆行驶方向, subType:string, [unknown#未知,eastWest#由东向西,westEast#由西向东,southNorth#由南向北,northSouth#由北向南,southeastToNorthwest#由东南向西北,northwestToSoutheast#由西北向东南,northeastToSouthwest#由东北向西南,southwestToNortheast#由西南向东北,forward#正向,back#背向]-->unknown
      </vehicle_direction>
      <host_safe_belt>
        <!--ro, opt, enum, 主驾驶员安全带, subType:string, [unknown#未知,no#未系安全带,yes#系安全带]-->unknown
      </host_safe_belt>
      <host_sun_board>
        <!--ro, opt, enum, 主驾驶遮阳板, subType:string, [unknown#未知,no#未打开,yes#打开]-->unknown
      </host_sun_board>
      <user_phone>
        <!--ro, opt, enum, 打电话, subType:string, [unknown#未知,no#未打电话,yes#打电话]-->unknown
      </user_phone>
      <vice_safe_belt>
        <!--ro, opt, enum, 副驾驶员安全带, subType:string, [unknown#未知,no#未系安全带,yes#系安全带]-->unknown
      </vice_safe_belt>
      <vice_sun_board>
        <!--ro, opt, enum, 副驾驶遮阳板, subType:string, [unknown#未知,no#未打开,yes#打开]-->unknown
      </vice_sun_board>
      <channelID>
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:-->0
      </channelID>
    </VehicleMode>
  </VehicleModeList>
</VehicleRecognitionSearchResult>

18. 获取车辆授权名单检测单个通道时间布防

18.1 命令

GET /ISAPI/Event/schedules/whiteList/whiteList-<channelID>

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品拿取检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->whiteList-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->whiteList
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

19. 配置车辆授权名单检测单个通道时间布防

19.1 命令

PUT /ISAPI/Event/schedules/whiteList/whiteList-<channelID>

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品拿取检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->whiteList-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->whiteList
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取车辆授权名单联动方式

20.1 命令

GET /ISAPI/Event/triggers/whitelist-<channelID>

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 车辆授权名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->whitelist
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

21. 配置车辆授权名单联动方式

21.1 命令

PUT /ISAPI/Event/triggers/whitelist-<channelID>

21.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 车辆授权名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->whitelist
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

22. 获取车辆非授权名单检测单个通道时间布防

22.1 命令

GET /ISAPI/Event/schedules/blackList/blackList-<channelID>

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 物品拿取检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式：事件类型-通道号-->blackList-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->blackList
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

23. 配置车辆非授权名单检测单个通道时间布防

23.1 命令

PUT /ISAPI/Event/schedules/blackList/blackList-<channelID>

23.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 物品拿取检测布防时间配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式：事件类型-通道号-->blackList-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->blackList
  </eventType>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->test
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

24. 获取车辆非授权名单联动方式

24.1 命令

GET /ISAPI/Event/triggers/blackList-<channelID>

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 车辆非授权名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->blackList
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

25. 配置车辆非授权名单联动方式

25.1 命令

PUT /ISAPI/Event/triggers/blackList-<channelID>

25.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 车辆非授权名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->blackList
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,], desc:格式：IO-outputIOPortID-->IO-1
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

26. 获取车辆所有名单联动方式

26.1 命令

GET /ISAPI/Event/triggers/allVehicleList-<channelID>

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 车辆所有名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->allVehicleList
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

27. 配置车辆所有名单联动方式

27.1 命令

PUT /ISAPI/Event/triggers/allVehicleList-<channelID>

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 车辆所有名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->allVehicleList
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 获取车辆其他名单联动方式

28.1 命令

GET /ISAPI/Event/triggers/otherVehicleList-<channelID>

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 车辆其他名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->otherVehicleList
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, ptz联动-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

29. 配置车辆其他名单联动方式

29.1 命令

PUT /ISAPI/Event/triggers/otherVehicleList-<channelID>

29.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 车辆其他名单联动方式配置, attr:version{req, string, 版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,]-->1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->otherVehicleList
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,], desc:if <eventType> is "VMD,videoloss,tamperdetection,regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音,supplementLight#补光灯]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,], dep:and,{$.EventTrigger.EventTriggerNotificationList[*].EventTriggerNotification.notificationMethod,eq,IO}, desc:当notificationMethod节点为IO时该节点必填-->1
      </outputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, ptz联动-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 联动号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


热成像功能

1. 获取热成像总能力

1.1 命令

GET /ISAPI/Thermal/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像总能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportFireDetection>
    <!--ro, opt, bool, 是否支持火点检测, desc:接口:/ISAPI/Thermal/channels/<ID>/fireDetection/capabilities-->true
  </isSupportFireDetection>
  <isFireFocusZoomSupport>
    <!--ro, opt, bool, 是否支持火点可见光镜头聚焦变倍, desc:接口:/ISAPI/Thermal/channels/<ID>/fireFocusZoom-->true
  </isFireFocusZoomSupport>
  <isSupportThermometry>
    <!--ro, opt, bool, 是否支持测温, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities-->true
  </isSupportThermometry>
  <isSupportRealtimeThermometry>
    <!--ro, opt, bool, 是否支持实时测温数据上传-->true
  </isSupportRealtimeThermometry>
  <isSupportThermIntell>
    <!--ro, opt, bool, 是否支持热成像智能互斥配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermIntell/capabilities-->true
  </isSupportThermIntell>
  <isSupportNVR>
    <!--ro, opt, bool, 用于客户端判断-->true
  </isSupportNVR>
  <isSupportThermometrySchedule>
    <!--ro, opt, bool, 是否支持测温布防时间, desc:接口:/ISAPI/Event/schedules/thermometry-->true
  </isSupportThermometrySchedule>
  <isSupportTemperatureSchedule>
    <!--ro, opt, bool, 是否支持温差布防时间, desc:接口:/ISAPI/Event/schedules/temperature-->true
  </isSupportTemperatureSchedule>
  <isSupportFireDetectionSchedule>
    <!--ro, opt, bool, 是否支持火点检测布防时间, desc:接口:/ISAPI/Event/schedules/fireDetections-->true
  </isSupportFireDetectionSchedule>
  <isSupportPower>
    <!--ro, opt, bool, 是否支持电源开关支持能力, desc:接口:/ISAPI/Thermal/Power/capabilities-->true
  </isSupportPower>
  <isSupportRealtimeTempHumi>
    <!--ro, opt, bool, 是否支持设备环境实时温湿度能力, desc:接口:/ISAPI/Thermal/TempHumi/capabilities-->true
  </isSupportRealtimeTempHumi>
  <ManualThermCap>
    <!--ro, opt, object, 手动测温能力-->
    <manualThermRuleNum>
      <!--ro, opt, int, 若不返回该节点则设备不支持手动测温, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/Thermal/manualThermometry/capabilities-->true
    </manualThermRuleNum>
  </ManualThermCap>
  <isSupportManualThermBasic>
    <!--ro, opt, bool, 否支持手动测温基本参数配置, desc:接口:/ISAPI/Thermal/manualThermBasic/capabilities-->true
  </isSupportManualThermBasic>
  <isSupportFireShieldMask>
    <!--ro, opt, bool, 是否支持火点区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/fireShieldMask/capabilities-->true
  </isSupportFireShieldMask>
  <isSupportSmokeShieldMask>
    <!--ro, opt, bool, 是否支持烟雾区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/smokeShieldMask/capabilities-->true
  </isSupportSmokeShieldMask>
  <isSupportThermometryMode>
    <!--ro, opt, bool, 是否支持测温模式配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryMode/capabilities-->true
  </isSupportThermometryMode>
  <isSupportThermalPip>
    <!--ro, opt, bool, 是否支持热成像画中画配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/pip/capabilities-->true
  </isSupportThermalPip>
  <isSupportThermalIntelRuleDisplay>
    <!--ro, opt, bool, 是否支持热成像智能规则配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/IntelRuleDisplay/capabilities-->true
  </isSupportThermalIntelRuleDisplay>
  <AlgVersionInfo>
    <!--ro, opt, object, 是否支持获取热成像相关算法库版本能力, desc:接口:/ISAPI/Thermal/AlgVersion-->
    <thermometryAlgName min="1" max="128">
      <!--ro, opt, string, 测温算法库版本信息, range:[,], attr:min{opt, string, 算法名称最小值, range:[,]},max{opt, string, 测温算法库版本信息长度最大值, range:[,]}-->null
    </thermometryAlgName>
    <shipsAlgName min="1" max="128">
      <!--ro, opt, string, 船只算法库版本名称, range:[,], attr:min{opt, string, 船只算法库版本名称最小值, range:[,]},max{opt, string, 船只算法库版本名称最大值, range:[,]}-->null
    </shipsAlgName>
  </AlgVersionInfo>
  <isSupportFaceThermometry>
    <!--ro, opt, bool, 是否支持人脸测温配置, desc:接口:/ISAPI/Thermal/channels/<ID>/faceThermometry/capabilities-->true
  </isSupportFaceThermometry>
  <isSupportThermalBlackBody>
    <!--ro, opt, bool, 是否支持热成像黑体参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/blackBody/capabilities-->true
  </isSupportThermalBlackBody>
  <isSupportThermalStreamParam>
    <!--ro, opt, bool, 是否支持热成像码流参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/streamParam/capabilities-->true
  </isSupportThermalStreamParam>
  <isSupportBodyTemperatureCompensation>
    <!--ro, opt, bool, 是否支持体温温度补偿参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation/capabilities-->true
  </isSupportBodyTemperatureCompensation>
  <isSupportClickToThermometry>
    <!--ro, opt, bool, 是否支持点击测温, desc:接口:/ISAPI/Thermal/channels/<ID>/clickToThermometry/initialization-->true
  </isSupportClickToThermometry>
  <isSupportThermometryHistorySearch>
    <!--ro, opt, bool, 是否支持测温历史数据查询, desc:接口:/ISAPI/Thermal/channels/<ID>/historyTemperature/capabilities-->true
  </isSupportThermometryHistorySearch>
  <isSupportThermometryShieldMask>
    <!--ro, opt, bool, 是否支持测温区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryShieldMask/capabilities-->true
  </isSupportThermometryShieldMask>
  <isSupportTemperatureCorrection>
    <!--ro, opt, bool, 是否支持测温矫正, desc:接口:/ISAPI/Thermal/channels/<ID>/CorrectionParam/capabilities-->true
  </isSupportTemperatureCorrection>
  <isSupportBurningPrevention>
    <!--ro, opt, bool, 是否支持防灼伤, desc:接口:/ISAPI/Thermal/channels/<ID>/burningPrevention/capabilities-->true
  </isSupportBurningPrevention>
  <isSupportTemperatureCollection>
    <!--ro, opt, bool, 是否支持温度补录, desc:接口:ISAPI/Thermal/temperature/collection/capabilities?format=json-->true
  </isSupportTemperatureCollection>
  <isSupportJpegPicWithAppendData>
    <!--ro, opt, bool, 是否支持抓热图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/jpegPicWithAppendData?format=json-->true
  </isSupportJpegPicWithAppendData>
  <isSupportRealTimethermometryForHTTP>
    <!--ro, opt, bool, 是否支持实时温度检测, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/realTimethermometry/rules?format=json-->true
  </isSupportRealTimethermometryForHTTP>
  <isSupportthermometryOffLineCapture>
    <!--ro, opt, bool, 是否支持离线抓图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/OffLineCapture?format=json-->true
  </isSupportthermometryOffLineCapture>
  <isSupportShipsDetectionWithScene>
    <!--ro, opt, bool, 是否支持按场景划分的船只检测, desc:接口:/ISAPI/Thermal/channels/<ID>/shipsDetection/capabilities?format=json-->true
  </isSupportShipsDetectionWithScene>
  <isSupportWasteGasDetection>
    <!--ro, opt, bool, 是否支持废气排放监测-->true
  </isSupportWasteGasDetection>
  <isSupportGreyScaleAlarm>
    <!--ro, opt, bool, 是否支持灰度报警-->true
  </isSupportGreyScaleAlarm>
  <isSupportFaceSnapThermometry>
    <!--ro, opt, bool, 是否支持人脸抓拍测温-->true
  </isSupportFaceSnapThermometry>
  <isSupportThermalTemperatureCorrect>
    <!--ro, opt, bool, 是否支持热成像温度二次校准, desc:接口:/ISAPI/Thermal/channels/<ID>/temperatureCorrect?format=json-->true
  </isSupportThermalTemperatureCorrect>
  <isSupportThermalVehicleDetection>
    <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
  </isSupportThermalVehicleDetection>
  <isSupportTemperatureIntervalMeasurement>
    <!--ro, opt, bool, 是否支持温度区间检测-->true
  </isSupportTemperatureIntervalMeasurement>
  <isSupportIndustryThermometryTemperatureRise>
    <!--ro, opt, bool, 是否支持热成像工业测温温升补偿参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/industryThermometry/temperatureRise?format=json-->true
  </isSupportIndustryThermometryTemperatureRise>
</ThermalCap>

2. 获取烟火检测参数配置能力

2.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟火检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <sensitivity min="0" max="120">
    <!--ro, opt, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </sensitivity>
  <fireComfirmTime>
    <!--ro, opt, int, 发现火点等待时间, range:[0,120], step:, unit:, unitType:-->1
  </fireComfirmTime>
  <fireRegionOverlay>
    <!--ro, opt, bool, 码流叠加火点框-->true
  </fireRegionOverlay>
  <fireFrameDis>
    <!--ro, opt, bool, 火点框显示-->true
  </fireFrameDis>
  <fireMaxTemp>
    <!--ro, opt, bool, 最高温度-->true
  </fireMaxTemp>
  <fireMaxTempPosition>
    <!--ro, opt, bool, 最高温度位置显示-->true
  </fireMaxTempPosition>
  <fireDistance>
    <!--ro, opt, bool, 最高温度距离-->true
  </fireDistance>
  <detectionMode opt="multipleFarme,singleFarme">
    <!--ro, opt, enum, 火点检测模式, subType:string, [multipleFarme#二次判别,singleFarme#单帧检测], attr:opt{req, string, 取值范围, range:[,]}-->multipleFarme
  </detectionMode>
  <fireFocusMode opt="auto,cruise">
    <!--ro, opt, enum, 火点聚焦模式, subType:string, [auto#自动模式,cruise#巡航模式], attr:opt{req, string, 取值范围, range:[,]}-->auto
  </fireFocusMode>
  <FireZoom>
    <!--ro, opt, object, 火点变倍(光学变倍), desc:当发生火点时变倍生效-->
    <zoomMode opt="auto,manual">
      <!--ro, req, enum, 火点光学变倍模式, subType:string, [auto#自动模,manual#手动模式], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </zoomMode>
    <zoomLevel min="1" max="100">
      <!--ro, opt, int, 火点光学变倍倍率, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当光学变倍模式为手动模式时生效-->1
    </zoomLevel>
  </FireZoom>
  <AlarmStrategy>
    <!--ro, opt, object, 报警策略-->
    <strategyType opt="any,cooperate,multisystem,appointFire,appointSmoke">
      <!--ro, req, enum, 报警策略类型, subType:string, [any#任意报警,cooperate#协同报警,multisystem#多系统报警,appointFire#指定火点报警,appointSmoke#指定烟雾报警], attr:opt{req, string, 取值范围, range:[,]},
desc:any- 任意报警,只要任何一个识别系统发现疑似火情时候,均实现报警上传,只要任何一种发生报警,
        报警信息则按照该种报警信息上传;cooperate- 协同报警,某一系统识别火情后暂不报警,疑似目标由剩下的系统确认,
        两个均认为是目标则标识两个报警,如不是则单一报警 上传的报警信息中需要说明为协同报警下,
        如有两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF （归一化处理）数值,
        （包含热成像和可见光的ZF）,经纬度,画面中的坐标）,一个确认则上传一个的信息;
        multisystem- 多系统报警,多个系统均识别后才报警,
        否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中需要说明为多系统报警下,
        两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF（归一化处理）数值,
        （包含热成像和可见光的ZF）,经纬度,画面中的坐标）;
        appointFire- 指定火点报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的火点报警发生才上传,不指定的报警不上传不显示任何报警信息;
        appointSmoke- 指定烟雾报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的烟雾报警发生才上传,不指定的报警不上传不显示任何报警信息-->any
    </strategyType>
  </AlarmStrategy>
  <SmokeDetection>
    <!--ro, opt, object, 烟雾检测-->
    <enabled>
      <!--ro, req, bool, 控制烟雾检测是否开启-->true
    </enabled>
    <sensitivity min="1" max="100">
      <!--ro, opt, int, 烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </sensitivity>
    <patrolSensitivity min="1" max="100" default="50">
      <!--ro, opt, int, 巡航检测灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </patrolSensitivity>
    <doubleCheckSensitivity min="1" max="100" default="50">
      <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]},
desc:启用二次确认灵敏度后.巡航模式，触发报警，会在触发场景停留5分钟，5分钟后重新触发巡航计划生效;
                场景模式,设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->50
    </doubleCheckSensitivity>
    <displaySmokeInfoOnStreamEnabled opt="true,false">
      <!--ro, opt, bool, 码流叠加烟雾信息, attr:opt{req, string, 取值范围, range:[,]}-->true
    </displaySmokeInfoOnStreamEnabled>
    <SceneMode>
      <!--ro, opt, object, 场景模式参数能力-->
      <sceneSpeed min="1" max="40" def="30">
        <!--ro, opt, int, 场景模式巡航速度, range:[1,40], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->30
      </sceneSpeed>
      <sceneSensitivity min="1" max="100" def="50">
        <!--ro, opt, int, 场景模式烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->50
      </sceneSensitivity>
      <sceneDoubleCheckSensitivity min="1" max="100" default="50">
        <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}, desc:设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->50
      </sceneDoubleCheckSensitivity>
    </SceneMode>
    <mode opt="patrol,scene" def="patrol">
      <!--ro, opt, enum, 检测模式, subType:string, [patrol#巡航模式,scene#场景模式], attr:opt{req, enum, 取值范围, subType:object, [patrol#巡航模式,scene#场景模式]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->patrol
    </mode>
    <darkSmokeDetectionEnabled opt="true,false" def="false">
      <!--ro, opt, bool, 黑烟检测使能是否开启, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->false
    </darkSmokeDetectionEnabled>
  </SmokeDetection>
  <smokeFireEnabled>
    <!--ro, opt, bool, 烟火总使能, desc:该使能与火点以及烟雾的单独使能能力互斥,若返回总使能能力,则无需返回火点以及烟雾的单独使能能力-->true
  </smokeFireEnabled>
  <ApplicationScene>
    <!--ro, opt, object, 应用场景-->
    <mode opt="forest-Fire_Prevention,strawBurning,high-building,Indoor/Perimeter,shortDistance,longDistance">
      <!--ro, opt, enum, 模式, subType:string, [forest-Fire_Prevention#森林防火,strawBurning#秸秆燃烧,high-building#高层建筑,Indoor/Perimeter#室内,shortDistance#近距离（≤200m）,longDistance#远距离（＞200m）], attr:opt{req, string, 取值范围, range:[,]}-->forest-Fire_Prevention
    </mode>
    <InstallationHeight min="1" max="500">
      <!--ro, opt, int, 安装高度, range:[1,500], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:如果 mode=strawBurning,high-building,Indoor/Perimeter有效-->1
    </InstallationHeight>
  </ApplicationScene>
  <cancelRepeatedAlarmEnabled opt="true,false">
    <!--ro, opt, bool, 取消重复报警使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </cancelRepeatedAlarmEnabled>
  <fireManualWaitEnabled opt="true,false">
    <!--ro, opt, bool, 火点手动等待使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </fireManualWaitEnabled>
  <isSupportFireScanStart opt="true,false">
    <!--ro, opt, bool, 是否支持火点继续扫描命令, attr:opt{req, string, 取值范围, range:[,]}, desc:对应URI：/ISAPI/Thermal/channels/<ID>/fireScanStart-->true
  </isSupportFireScanStart>
  <isSupportFireScanState opt="true,false">
    <!--ro, opt, bool, 是否支持火点扫描状态命令, attr:opt{req, string, 取值范围, range:[,]}, desc:对应URI：/ISAPI/Thermal/channels/<ID>/fireScanState-->true
  </isSupportFireScanState>
  <displayFireInfoOnStreamEnabled opt="true,false">
    <!--ro, opt, bool, 码流叠加火点信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayFireInfoOnStreamEnabled>
  <smokeAuxiliaryDetectionEnabled opt="true,false">
    <!--ro, opt, bool, 烟雾辅助判断启用使能, attr:opt{req, string, 取值范围, range:[,]}, desc:检测模式是二次判别时生效-->true
  </smokeAuxiliaryDetectionEnabled>
  <fireSourceDetection opt="dynamicFire,smokingMode">
    <!--ro, opt, enum, 火点搜索模式, subType:string, [dynamicFire#动态火点,smokingMode#吸烟模式], attr:opt{req, string, 取值范围, range:[,]}-->dynamicFire
  </fireSourceDetection>
  <verificationSensitivity min="1" max="100" default="50">
    <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->50
  </verificationSensitivity>
  <fireAlgorithmMode opt="patternRecognition, machineLearning">
    <!--ro, opt, enum, 火点算法模式, subType:string, [patternRecognition#模式识别,machineLearning#机器学习], attr:opt{req, string, 取值范围, range:[,]}-->patternRecognition
  </fireAlgorithmMode>
  <agriculturalMachineryFilterEnabled opt="true,false">
    <!--ro, opt, bool, 农机过滤模块使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </agriculturalMachineryFilterEnabled>
  <waterReflectionEnabled opt="true,false">
    <!--ro, opt, bool, 水面阳光反射模块使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </waterReflectionEnabled>
  <patrolSensitivity min="1" max="100" default="50">
    <!--ro, opt, int, 巡航检测灵敏度 （针对火点检测）, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->50
  </patrolSensitivity>
  <displayFireInOpticalChannelEnabled opt="true,false">
    <!--ro, opt, bool, 可见光通道显示火点信息使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayFireInOpticalChannelEnabled>
  <alarmInterval min="0" max="300" default="0">
    <!--ro, opt, int, 报警时间间隔, range:[0,300], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
  </alarmInterval>
</FireDetection>

3. 获取烟火检测参数

3.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟火检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <sensitivity>
    <!--ro, opt, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </sensitivity>
  <fireComfirmTime>
    <!--ro, opt, int, 发现火点等待时间, range:[0,120], step:, unit:, unitType:-->1
  </fireComfirmTime>
  <fireRegionOverlay>
    <!--ro, opt, bool, 码流叠加火点框-->true
  </fireRegionOverlay>
  <fireFrameDis>
    <!--ro, opt, bool, 火点框显示-->true
  </fireFrameDis>
  <fireMaxTemp>
    <!--ro, opt, bool, 最高温度-->true
  </fireMaxTemp>
  <fireMaxTempPosition>
    <!--ro, opt, bool, 最高温度位置显示-->true
  </fireMaxTempPosition>
  <fireDistance>
    <!--ro, opt, bool, 最高温度距离-->true
  </fireDistance>
  <detectionMode>
    <!--ro, opt, enum, 火点检测模式, subType:string, [multipleFarme#二次判别,singleFarme#单帧检测]-->multipleFarme
  </detectionMode>
  <fireFocusMode>
    <!--ro, opt, enum, 火点聚焦模式, subType:string, [auto#自动模式,cruise#巡航模式]-->auto
  </fireFocusMode>
  <FireZoom>
    <!--ro, opt, object, 火点变倍(光学变倍), desc:当发生火点时变倍生效-->
    <zoomMode>
      <!--ro, req, enum, 火点光学变倍模式, subType:string, [auto#自动模,manual#手动模式]-->auto
    </zoomMode>
    <zoomLevel>
      <!--ro, opt, int, 火点光学变倍倍率, range:[,], step:, unit:, unitType:, desc:当光学变倍模式为手动模式时生效-->1
    </zoomLevel>
  </FireZoom>
  <AlarmStrategy>
    <!--ro, opt, object, 报警策略-->
    <strategyType>
      <!--ro, req, enum, 报警策略类型, subType:string, [any#任意报警,cooperate#协同报警,multisystem#多系统报警,appointFire#指定火点报警,appointSmoke#指定烟雾报警],
desc:any- 任意报警,只要任何一个识别系统发现疑似火情时候,均实现报警上传,只要任何一种发生报警,
        报警信息则按照该种报警信息上传;cooperate- 协同报警,某一系统识别火情后暂不报警,疑似目标由剩下的系统确认,
        两个均认为是目标则标识两个报警,如不是则单一报警 上传的报警信息中需要说明为协同报警下,
        如有两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF （归一化处理）数值,
        （包含热成像和可见光的ZF）,经纬度,画面中的坐标）,一个确认则上传一个的信息;
        multisystem- 多系统报警,多个系统均识别后才报警,
        否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中需要说明为多系统报警下,
        两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF（归一化处理）数值,
        （包含热成像和可见光的ZF）,经纬度,画面中的坐标）;
        appointFire- 指定火点报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的火点报警发生才上传,不指定的报警不上传不显示任何报警信息;
        appointSmoke- 指定烟雾报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的烟雾报警发生才上传,不指定的报警不上传不显示任何报警信息-->any
    </strategyType>
  </AlarmStrategy>
  <SmokeDetection>
    <!--ro, opt, object, 烟雾检测-->
    <enabled>
      <!--ro, req, bool, 控制烟雾检测是否开启-->true
    </enabled>
    <sensitivity>
      <!--ro, opt, int, 烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </sensitivity>
    <patrolSensitivity>
      <!--ro, opt, int, 巡航检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </patrolSensitivity>
    <doubleCheckSensitivity>
      <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:,
desc:启用二次确认灵敏度后.巡航模式，触发报警，会在触发场景停留5分钟，5分钟后重新触发巡航计划生效;
                场景模式,设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->1
    </doubleCheckSensitivity>
    <displaySmokeInfoOnStreamEnabled>
      <!--ro, opt, bool, 码流叠加烟雾信息-->true
    </displaySmokeInfoOnStreamEnabled>
    <mode>
      <!--ro, opt, enum, 检测模式, subType:string, [patrol#巡航模式,scene#场景模式]-->patrol
    </mode>
    <speed>
      <!--ro, opt, int, mode为scene时支持巡航速, range:[1,40], step:, unit:, unitType:, dep:and,{$.FireDetection.SmokeDetection.mode,eq,scene}-->30
    </speed>
    <darkSmokeDetectionEnabled>
      <!--ro, opt, bool, 黑烟检测使能是否开启-->false
    </darkSmokeDetectionEnabled>
  </SmokeDetection>
  <smokeFireEnabled>
    <!--ro, opt, bool, 烟火总使能, desc:该使能与火点以及烟雾的单独使能能力互斥,若返回总使能能力,则无需返回火点以及烟雾的单独使能能力-->true
  </smokeFireEnabled>
  <ApplicationScene>
    <!--ro, opt, object, 应用场景-->
    <mode>
      <!--ro, opt, enum, 模式, subType:string, [forest-Fire_Prevention#森林防火,strawBurning#秸秆燃烧,high-building#高层建筑,Indoor/Perimeter#室内,shortDistance#近距离（≤200m）,longDistance#远距离（＞200m）]-->forest-Fire_Prevention
    </mode>
    <InstallationHeight>
      <!--ro, opt, int, 安装高度, range:[1,500], step:, unit:, unitType:, desc:如果 mode=strawBurning,high-building,Indoor/Perimeter有效-->1
    </InstallationHeight>
  </ApplicationScene>
  <cancelRepeatedAlarmEnabled>
    <!--ro, opt, bool, 取消重复报警使能-->true
  </cancelRepeatedAlarmEnabled>
  <fireManualWaitEnabled>
    <!--ro, opt, bool, 火点手动等待使能-->true
  </fireManualWaitEnabled>
  <isSupportFireScanStart>
    <!--ro, opt, bool, 是否支持火点继续扫描命令, desc:对应URI：/ISAPI/Thermal/channels/<ID>/fireScanStart-->true
  </isSupportFireScanStart>
  <isSupportFireScanState>
    <!--ro, opt, bool, 是否支持火点扫描状态命令, desc:对应URI：/ISAPI/Thermal/channels/<ID>/fireScanState-->true
  </isSupportFireScanState>
  <displayFireInfoOnStreamEnabled>
    <!--ro, opt, bool, 码流叠加火点信息-->true
  </displayFireInfoOnStreamEnabled>
  <smokeAuxiliaryDetectionEnabled>
    <!--ro, opt, bool, 烟雾辅助判断启用使能, desc:检测模式是二次判别时生效-->true
  </smokeAuxiliaryDetectionEnabled>
  <fireSourceDetection>
    <!--ro, opt, enum, 火点搜索模式, subType:string, [dynamicFire#动态火点,smokingMode#吸烟模式]-->dynamicFire
  </fireSourceDetection>
  <verificationSensitivity>
    <!--ro, opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </verificationSensitivity>
  <fireAlgorithmMode>
    <!--ro, opt, enum, 火点算法模式, subType:string, [patternRecognition#模式识别,machineLearning#机器学习]-->patternRecognition
  </fireAlgorithmMode>
  <agriculturalMachineryFilterEnabled>
    <!--ro, opt, bool, 农机过滤模块使能-->true
  </agriculturalMachineryFilterEnabled>
  <waterReflectionEnabled>
    <!--ro, opt, bool, 水面阳光反射模块使能-->true
  </waterReflectionEnabled>
  <patrolSensitivity>
    <!--ro, opt, int, 巡航检测灵敏度 （针对火点检测）, range:[1,100], step:, unit:, unitType:-->1
  </patrolSensitivity>
  <displayFireInOpticalChannelEnabled>
    <!--ro, opt, bool, 可见光通道显示火点信息使能-->true
  </displayFireInOpticalChannelEnabled>
  <alarmInterval>
    <!--ro, opt, int, 报警时间间隔, range:[0,300], step:, unit:s, unitType:-->0
  </alarmInterval>
</FireDetection>

4. 配置烟火检测参数

4.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireDetection

4.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FireDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 烟火检测参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <sensitivity>
    <!--opt, int, 检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </sensitivity>
  <fireComfirmTime>
    <!--opt, int, 发现火点等待时间, range:[0,120], step:, unit:, unitType:-->1
  </fireComfirmTime>
  <fireRegionOverlay>
    <!--opt, bool, 码流叠加火点框-->true
  </fireRegionOverlay>
  <fireFrameDis>
    <!--ro, opt, bool, 火点框显示-->true
  </fireFrameDis>
  <fireMaxTemp>
    <!--ro, opt, bool, 最高温度-->true
  </fireMaxTemp>
  <fireMaxTempPosition>
    <!--ro, opt, bool, 最高温度位置显示-->true
  </fireMaxTempPosition>
  <fireDistance>
    <!--ro, opt, bool, 最高温度距离-->true
  </fireDistance>
  <detectionMode>
    <!--opt, enum, 火点检测模式, subType:string, [multipleFarme#二次判别,singleFarme#单帧检测]-->multipleFarme
  </detectionMode>
  <fireFocusMode>
    <!--opt, enum, 火点聚焦模式, subType:string, [auto#自动模式,cruise#巡航模式]-->auto
  </fireFocusMode>
  <FireZoom>
    <!--opt, object, 火点变倍(光学变倍), desc:当发生火点时变倍生效-->
    <zoomMode>
      <!--req, enum, 火点光学变倍模式, subType:string, [auto#自动模,manual#手动模式]-->auto
    </zoomMode>
    <zoomLevel>
      <!--opt, int, 火点光学变倍倍率, range:[,], step:, unit:, unitType:, desc:当光学变倍模式为手动模式时生效-->1
    </zoomLevel>
  </FireZoom>
  <AlarmStrategy>
    <!--opt, object, 报警策略-->
    <strategyType>
      <!--req, enum, 报警策略类型, subType:string, [any#任意报警,cooperate#协同报警,multisystem#多系统报警,appointFire#指定火点报警,appointSmoke#指定烟雾报警],
desc:any- 任意报警,只要任何一个识别系统发现疑似火情时候,均实现报警上传,只要任何一种发生报警,
        报警信息则按照该种报警信息上传;cooperate- 协同报警,某一系统识别火情后暂不报警,疑似目标由剩下的系统确认,
        两个均认为是目标则标识两个报警,如不是则单一报警 上传的报警信息中需要说明为协同报警下,
        如有两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF （归一化处理）数值,
        （包含热成像和可见光的ZF）,经纬度,画面中的坐标）,一个确认则上传一个的信息;
        multisystem- 多系统报警,多个系统均识别后才报警,
        否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中需要说明为多系统报警下,
        两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF（归一化处理）数值,
        （包含热成像和可见光的ZF）,经纬度,画面中的坐标）;
        appointFire- 指定火点报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的火点报警发生才上传,不指定的报警不上传不显示任何报警信息;
        appointSmoke- 指定烟雾报警,指定的识别系统发现疑似火情才报警上传,
        非指定的发现不报警上传,只有指定的烟雾报警发生才上传,不指定的报警不上传不显示任何报警信息-->any
    </strategyType>
  </AlarmStrategy>
  <SmokeDetection>
    <!--opt, object, 烟雾检测-->
    <enabled>
      <!--req, bool, 控制烟雾检测是否开启-->true
    </enabled>
    <sensitivity>
      <!--opt, int, 烟雾检测的灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </sensitivity>
    <patrolSensitivity>
      <!--opt, int, 巡航检测灵敏度, range:[1,100], step:, unit:, unitType:-->1
    </patrolSensitivity>
    <doubleCheckSensitivity>
      <!--opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:,
desc:启用二次确认灵敏度后.巡航模式，触发报警，会在触发场景停留5分钟，5分钟后重新触发巡航计划生效;
                场景模式,设备在某一场景中停留时,设备会识别到烟雾时会进行二次检测,停留时间结束时,会立即结束烟雾检测运动至下一场景-->1
    </doubleCheckSensitivity>
    <displaySmokeInfoOnStreamEnabled>
      <!--opt, bool, 码流叠加烟雾信息-->true
    </displaySmokeInfoOnStreamEnabled>
    <mode>
      <!--opt, enum, 检测模式, subType:string, [patrol#巡航模式,scene#场景模式]-->patrol
    </mode>
    <speed>
      <!--opt, int, mode为scene时支持巡航速, range:[1,40], step:, unit:, unitType:-->30
    </speed>
    <darkSmokeDetectionEnabled>
      <!--ro, opt, bool, 黑烟检测使能是否开启-->false
    </darkSmokeDetectionEnabled>
  </SmokeDetection>
  <smokeFireEnabled>
    <!--opt, bool, 烟火总使能, desc:该使能与火点以及烟雾的单独使能能力互斥,若返回总使能能力,则无需返回火点以及烟雾的单独使能能力-->true
  </smokeFireEnabled>
  <ApplicationScene>
    <!--opt, object, 应用场景-->
    <mode>
      <!--opt, enum, 模式, subType:string, [forest-Fire_Prevention#森林防火,strawBurning#秸秆燃烧,high-building#高层建筑,Indoor/Perimeter#室内,shortDistance#近距离（≤200m）,longDistance#远距离（＞200m）]-->forest-Fire_Prevention
    </mode>
    <InstallationHeight>
      <!--opt, int, 安装高度, range:[1,500], step:, unit:, unitType:, desc:如果 mode=strawBurning,high-building,Indoor/Perimeter有效-->1
    </InstallationHeight>
  </ApplicationScene>
  <cancelRepeatedAlarmEnabled>
    <!--opt, bool, 取消重复报警使能-->true
  </cancelRepeatedAlarmEnabled>
  <fireManualWaitEnabled>
    <!--opt, bool, 火点手动等待使能-->true
  </fireManualWaitEnabled>
  <isSupportFireScanStart>
    <!--opt, bool, 是否支持火点继续扫描命令, desc:对应URI：/ISAPI/Thermal/channels/<ID>/fireScanStart-->true
  </isSupportFireScanStart>
  <isSupportFireScanState>
    <!--opt, bool, 是否支持火点扫描状态命令, desc:对应URI：/ISAPI/Thermal/channels/<ID>/fireScanState-->true
  </isSupportFireScanState>
  <displayFireInfoOnStreamEnabled>
    <!--opt, bool, 码流叠加火点信息-->true
  </displayFireInfoOnStreamEnabled>
  <smokeAuxiliaryDetectionEnabled>
    <!--opt, bool, 烟雾辅助判断启用使能, desc:检测模式是二次判别时生效-->true
  </smokeAuxiliaryDetectionEnabled>
  <fireSourceDetection>
    <!--opt, enum, 火点搜索模式, subType:string, [dynamicFire#动态火点,smokingMode#吸烟模式]-->dynamicFire
  </fireSourceDetection>
  <verificationSensitivity>
    <!--opt, int, 二次确认灵敏度, range:[1,100], step:, unit:, unitType:-->1
  </verificationSensitivity>
  <fireAlgorithmMode>
    <!--opt, enum, 火点算法模式, subType:string, [patternRecognition#模式识别,machineLearning#机器学习]-->patternRecognition
  </fireAlgorithmMode>
  <agriculturalMachineryFilterEnabled>
    <!--opt, bool, 农机过滤模块使能-->true
  </agriculturalMachineryFilterEnabled>
  <waterReflectionEnabled>
    <!--opt, bool, 水面阳光反射模块使能-->true
  </waterReflectionEnabled>
  <patrolSensitivity>
    <!--opt, int, 巡航检测灵敏度 （针对火点检测）, range:[1,100], step:, unit:, unitType:-->1
  </patrolSensitivity>
  <displayFireInOpticalChannelEnabled>
    <!--opt, bool, 可见光通道显示火点信息使能-->true
  </displayFireInOpticalChannelEnabled>
  <alarmInterval>
    <!--opt, int, 报警时间间隔, range:[0,300], step:, unit:s, unitType:-->0
  </alarmInterval>
</FireDetection>

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

5. 获取烟火检测事件联动配置

5.1 命令

GET /ISAPI/Event/triggers/fireDetection-<channelID>

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->fireDetection-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道id, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道id, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频输入id, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入id, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动相关参数, desc:白光灯联动相关参数；当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

6. 配置烟火检测事件联动配置

6.1 命令

PUT /ISAPI/Event/triggers/fireDetection-<channelID>

6.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->fireDetection-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道id, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道id, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频输入id, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入id, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动相关参数, desc:白光灯联动相关参数；当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

7. 获取烟火检测单个通道布防时间参数

7.1 命令

GET /ISAPI/Event/schedules/fireDetections/fireDetection-<channelID>

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->fireDetection-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--ro, opt, object, 场景巡航-->
        <SceneList>
          <!--ro, opt, array, 多场景切换配置, subType:object, range:[,]-->
          <Scene>
            <!--ro, opt, object, 场景信息-->
            <sceneID>
              <!--ro, req, string, 关联场景ID, range:[1,16]-->test
            </sceneID>
            <durationTime>
              <!--ro, req, int, 持续时间, range:[,], step:, unit:, unitType:-->0
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

8. 配置烟火检测单个通道布防时间参数

8.1 命令

PUT /ISAPI/Event/schedules/fireDetections/fireDetection-<channelID>

8.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->fireDetection-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->fireDetection
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
      <ScheduleProperity>
        <!--opt, object, 场景巡航-->
        <SceneList>
          <!--opt, array, 多场景切换配置, subType:object, range:[,]-->
          <Scene>
            <!--opt, object, 场景信息-->
            <sceneID>
              <!--req, string, 关联场景ID, range:[1,16]-->test
            </sceneID>
            <durationTime>
              <!--req, int, 持续时间, range:[,], step:, unit:, unitType:-->0
            </durationTime>
          </Scene>
        </SceneList>
      </ScheduleProperity>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

9. 获取火点高级参数配置能力

9.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection/advanceParam/capabilities?format=json

9.2 输入参数

无

9.3 输出参数

{
    "AdvanceParamCap": {
    /*ro, opt, object, 火点高级参数配置能力*/
        "minPixel": {
        /*ro, opt, object, 火点检测最小像素*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  10
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "isFocusEnabled": {
        /*ro, opt, object, 可见光居中变倍后是否执行聚焦*/
            "@opt": [true, false]
            /*ro, opt, array, false-不执行, subType:bool, range:[,], desc:可见光居中变倍后是否执行聚焦：true-执行，false-不执行*/
        },
        "sceneMode": {
        /*ro, opt, object, 场景类型*/
            "@opt": ["mountain", "plain"]
            /*ro, opt, array, 场景类型, subType:string, range:[,], desc:场景类型：mountain-山地 plain-平原*/
        },
        "skylineDetectEnabled": {
        /*ro, opt, object, 天际线检测使能*/
            "@opt": [true, false]
            /*ro, opt, array, 天际线检测使能, subType:bool, range:[,]*/
        },
        "skylineDetectionLevel": {
        /*ro, opt, object, 天际线检测等级*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  4
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        }
    }
}

10. 获取火点高级参数配置

10.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireDetection/advanceParam?format=json

10.2 输入参数

无

10.3 输出参数

{
    "AdvanceParam": {
    /*ro, opt, object, 火点高级参数配置*/
        "minPixel":  1,
        /*ro, opt, int, 火点检测最小像素, range:[,], step:, unit:, unitType:*/
        "isFocusEnabled":  true,
        /*ro, opt, bool, 可见光居中变倍后是否执行聚焦, desc:可见光居中变倍后是否执行聚焦：true-执行，false-不执行*/
        "sceneMode":  "mountain",
        /*ro, opt, enum, 场景类型, subType:string, [mountain#山地,plain#平原]*/
        "skylineDetectEnabled":  true,
        /*ro, opt, bool, 天际线检测使能*/
        "skylineDetectionLevel":  1
        /*ro, opt, int, 天际线检测等级, range:[0,4], step:, unit:, unitType:*/
    }
}

11. 配置火点高级参数配置

11.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireDetection/advanceParam?format=json

11.2 输入参数

{
    "AdvanceParam": {
    /*ro, opt, object, 火点高级参数配置*/
        "minPixel":  1,
        /*ro, opt, int, 火点检测最小像素, range:[,], step:, unit:, unitType:*/
        "isFocusEnabled":  true,
        /*ro, opt, bool, 可见光居中变倍后是否执行聚焦, desc:可见光居中变倍后是否执行聚焦：true-执行，false-不执行*/
        "sceneMode":  "mountain",
        /*ro, opt, enum, 场景类型, subType:string, [mountain#山地,plain#平原]*/
        "skylineDetectEnabled":  true,
        /*ro, opt, bool, 天际线检测使能*/
        "skylineDetectionLevel":  1
        /*ro, opt, int, 天际线检测等级, range:[0,4], step:, unit:, unitType:*/
    }
}

11.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

12. 获取人体测温基本参数能力

12.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam/capabilities

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryBasicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人体测温基本参数, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 启用, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <streamOverlay opt="true,false">
    <!--ro, req, bool, 码流是否叠加温度信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </streamOverlay>
  <pictureOverlay opt="true,false">
    <!--ro, req, bool, 抓图是否叠加温度信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </pictureOverlay>
  <temperatureRange opt="-20~150,0~550,0~650,-4~302,32~1022,32~1200,-20~650,-20~1500,automatic,-20~120,100-550,28-45">
    <!--ro, req, enum, 测温范围, subType:string, [-20~150#-20~150,0~550#0~550,0~650#0~650,-4~302#-4~302,32~1022#32~1022,32~1200#32~1200,-20~650#-20~650,-20~1500#-20~1500,automatic#自动,-20~120#-20~120,100-550#100-550,28-45#28-45], attr:opt{req, string, 取值范围, range:[,]}-->-20~150
  </temperatureRange>
  <temperatureUnit opt="degreeCentigrade,degreeFahrenheit,degreeKelvin">
    <!--ro, req, enum, 测温单位, subType:string, [degreeCentigrade#摄氏度（℃）,degreeFahrenheit#华氏度（华氏度）,degreeKelvin#开尔文（K）], attr:opt{req, string, 取值范围, range:[,]}-->degreeCentigrade
  </temperatureUnit>
  <temperatureCurve opt="close,transverseTemperatureTrend,longitudinalTemperatureTrend">
    <!--ro, opt, enum, 纵向温度趋势线模式, subType:string, [close#关闭,transverseTemperatureTrend#横向温度趋势线模式,longitudinalTemperatureTrend#纵向温度趋势线模式], attr:opt{req, string, 取值范围, range:[,]}-->close
  </temperatureCurve>
  <fireImageMode opt="blackWhite,thermalProbe,fireGround">
    <!--ro, opt, enum, 消防模式, subType:string, [blackWhite#黑白模式,thermalProbe#热探测模式,fireGround#火场模式], attr:opt{req, string, 取值范围, range:[,]}-->blackWhite
  </fireImageMode>
  <emissivity min="0.01" max="1.00" default="0.8">
    <!--ro, opt, float, 发射率, range:[0.01,1.00], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},default{opt, float, 未定义, range:[,], step:, unit:, unitType:}-->0.01
  </emissivity>
  <distanceUnit opt="meter,feet,centimeter">
    <!--ro, req, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米], attr:opt{req, string, 取值范围, range:[,]}-->meter
  </distanceUnit>
  <TemperatureColor>
    <!--ro, opt, object, 温度颜色-->
    <type opt="highTemperature,lowTemperature,rangeTemperature,heatPreservation">
      <!--ro, req, enum, 设置类型, subType:string, [highTemperature#高温报警类型,lowTemperature#低温报警类型,rangeTemperature#区间报警类型,heatPreservation#保温报警类型], attr:opt{req, string, 取值范围, range:[,]},
desc:highTemperature: 高温报警类型,此时<highTemperature>字段生效,当高于该温度值时会有进行颜色标注;
lowTemperature: 低温报警类型,此时<lowTemperature>字段生效,当低于该温度值时会有进行颜色标注;
rangeTemperature: 区间报警类型,此时<highTemperature>、<lowTemperature>字段生效,当在温度在该温度区间时会有进行颜色标注;
heatPreservation: 保温报警类型,此时<highTemperature>、<lowTemperature>字段生效,当温度不在该温度区间时会有进行颜色标注;-->highTemperature
    </type>
    <highTemperature min="-273" max="10000">
      <!--ro, opt, int, 最高温度, range:[-273,10000], step:1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->100
    </highTemperature>
    <lowTemperature min="-273" max="10000">
      <!--ro, opt, int, 最低温度, range:[-273,10000], step:1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->100
    </lowTemperature>
  </TemperatureColor>
  <enviroTemperature min="-273" max="10000">
    <!--ro, opt, int, 环境温度, range:[,], step:, unit:℃,"环境温度", unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </enviroTemperature>
  <enviroHumidity min="0" max="100">
    <!--ro, opt, int, 环境相对湿度, range:[,], step:, unit:%,"环境相对湿度", unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </enviroHumidity>
  <correctionVolume min="-100" max="100" def="0">
    <!--ro, opt, int, 测温修正量, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </correctionVolume>
  <specialPointThermType opt="centerPoint,highestPoint,lowestPoint">
    <!--ro, opt, enum, 特殊测温点显示, subType:string, [centerPoint#中心点测温,highestPoint#最高点测温,lowestPoint#最低点测温,null#不支持], attr:opt{req, string, 取值范围, range:[,]}-->lowestPoint
  </specialPointThermType>
  <distance min="0" max="10000">
    <!--ro, req, int, 距离, range:[,], step:, unit:m,"距离", unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </distance>
  <reflectiveEnable>
    <!--ro, req, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature min="0.0" max="1000.0">
    <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数-->1.0
  </reflectiveTemperature>
  <alert min="-100.0" max="1000.0">
    <!--ro, opt, float, 全局预警阈值, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数-->1.0
  </alert>
  <alarm min="-100.0" max="1000.0">
    <!--ro, opt, float, 全局报警阈值, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数-->1.0
  </alarm>
  <showTempStripEnable>
    <!--ro, opt, bool, 温度条显示使能-->1
  </showTempStripEnable>
  <thermalOpticalTransmittance min="0.001" max="1.000" def="1.000">
    <!--ro, opt, float, 光学透过率, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数点-->1.0
  </thermalOpticalTransmittance>
  <externalOpticsWindowCorrection min="-40.0" max="80.0" def="20.0">
    <!--ro, opt, float, 外部光学温度, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数点-->1.0
  </externalOpticsWindowCorrection>
  <isSupportAlertOutputIOPortList>
    <!--ro, opt, bool, 是否支持获取预警输出口-->true
  </isSupportAlertOutputIOPortList>
  <isSupportAlarmOutputIOPortList>
    <!--ro, opt, bool, 是否支持获取报警输出口-->true
  </isSupportAlarmOutputIOPortList>
  <alertFilteringTime min="0" max="200" default="0">
    <!--ro, opt, int, 温度预警等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
  </alertFilteringTime>
  <alarmFilteringTime min="0" max="200" default="0">
    <!--ro, opt, int, 温度报警等待时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
  </alarmFilteringTime>
  <displayMaxTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示最高温, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayMaxTemperatureEnabled>
  <displayMinTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示最低温, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayMinTemperatureEnabled>
  <displayAverageTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示平均温, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayAverageTemperatureEnabled>
  <thermometryInfoDisplayposition opt="rules_around,top_left_of_screen">
    <!--ro, opt, string, 测温信息显示位置, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:rules_around跟随规则、top_left_of_screen屏幕左上}-->test
  </thermometryInfoDisplayposition>
  <calibrationCoefficientEnabled opt="true,false">
    <!--ro, opt, bool, 启用标定系数使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </calibrationCoefficientEnabled>
  <calibrationCoefficient min="0.00" max="30.00">
    <!--ro, opt, float, 标定系数, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:精确小数点后2位-->0.00
  </calibrationCoefficient>
  <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
    <!--ro, opt, string, 发射率配置类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:rougher(粗糙0.95),rough(较粗糙0.80),smooth(较光滑0.60),smoother(光滑0.30),customsettings(自定义0.01-1.00)-->test
  </emissivityMode>
  <displayTemperatureInOpticalChannelEnabled opt="true,false">
    <!--ro, opt, bool, 可见光通道显示温度信息使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayTemperatureInOpticalChannelEnabled>
  <displayCentreTemperatureEnabled opt="true,false">
    <!--ro, opt, bool, 显示中心点温度, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayCentreTemperatureEnabled>
  <distanceMode opt="selfAdapt,fixed">
    <!--ro, opt, string, 距离模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:selfAdapt-自适应,fixed-固定-->test
  </distanceMode>
  <faceTemperatureInfoUploadEnabled opt="true,false">
    <!--ro, opt, bool, 人脸温度信息报警上传使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceTemperatureInfoUploadEnabled>
  <calibrationFileVersion>
    <!--ro, opt, string, 标定文件版本信息, range:[,]-->test
  </calibrationFileVersion>
  <alarmInterval min="1" max="300">
    <!--ro, opt, int, 测温报警时间间隔配置, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </alarmInterval>
  <rulesOverlayMode opt="all,alarm">
    <!--ro, opt, string, 规则信息图片叠加模式, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:all-所有规则,alarm-触发报警规则}-->test
  </rulesOverlayMode>
  <toleranceTemperature min="1" max="5">
    <!--ro, opt, float, 容差温度, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->0.000
  </toleranceTemperature>
  <alarmMode opt="temperatureIntervalMeasurement,alarm_alert">
    <!--ro, opt, string, 报警模式, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:"temperatureIntervalMeasurement"-温度区间检测,"alarm_alert"-预警／报警}-->test
  </alarmMode>
  <NormalRulesColor>
    <!--ro, opt, object, 正常规则颜色 , dep:and,{$.ThermometryBasicParam.alarmMode,eq,temperatureIntervalMeasurement}, desc:<alarmMode>==temperatureIntervalMeasurement时生效-->
    <R>
      <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
    </R>
    <G>
      <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
    </G>
    <B>
      <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
    </B>
  </NormalRulesColor>
  <NormalTemperatureIntervalMeasurement>
    <!--ro, opt, object, 普通温度区间检测-->
    <alarmType opt="highestTemp,lowestTemp">
      <!--ro, opt, string, 报警类型, range:[,], attr:opt{req, string, 取值范围, range:[,], desc:highestTemp-最高温 lowestTemp-最低温}-->test
    </alarmType>
    <TemperatureIntervalList size="4">
      <!--ro, opt, array, 温度区间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <TemperatureInterval>
        <!--ro, opt, object, 温度区间-->
        <id min="1" max="4">
          <!--ro, opt, int, 序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </id>
        <enabled opt="true,false">
          <!--ro, opt, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}-->true
        </enabled>
        <name min="1" max="96">
          <!--ro, opt, string, 区间名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </name>
        <minTemperature min="-20.0" max="550.0">
          <!--ro, opt, float, 最低温, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}, desc:保留后一位小数点-->0.0
        </minTemperature>
        <maxTemperature min="-20.0" max="550.0">
          <!--ro, opt, float, 最高温, range:[,], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->0.0
        </maxTemperature>
        <AlarmColor>
          <!--ro, opt, object, 温度区间报警颜色-->
          <R>
            <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
          </R>
          <G>
            <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
          </G>
          <B>
            <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
          </B>
        </AlarmColor>
        <AlarmOutputIOPortList size="null">
          <!--ro, opt, array, 报警输出端口列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <OutputIOPort>
            <!--ro, opt, object, 报警输出端口-->
            <portID min="null" max="null">
              <!--ro, req, string, 端口号, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
            </portID>
            <enabled opt="true,false">
              <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
            </enabled>
          </OutputIOPort>
        </AlarmOutputIOPortList>
      </TemperatureInterval>
    </TemperatureIntervalList>
  </NormalTemperatureIntervalMeasurement>
  <SunReflectionBlur>
    <!--ro, opt, object, 太阳反光过滤-->
    <enabled opt="true,false">
      <!--ro, req, bool, 太阳反光过滤使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <sensitivity min="1" max="100">
      <!--ro, opt, int, 太阳反光过滤灵敏度, range:[1,100], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->50
    </sensitivity>
    <filterEnabled opt="true,false">
      <!--ro, opt, bool, 是否开启过滤提示, attr:opt{req, string, 取值范围, range:[,]}, desc:配置OSD显示是否已过滤，提示语仅显示在热成像图像上，内容和位置（右下角）固定，用户不可配置-->true
    </filterEnabled>
  </SunReflectionBlur>
  <VehicleBlur>
    <!--ro, opt, object, 车辆过滤-->
    <enabled opt="true,false">
      <!--ro, req, bool, 车辆过滤使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <sensitiveLevel min="0" max="4">
      <!--ro, opt, int, 车辆过滤检测灵敏度等级, range:[0,4], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->4
    </sensitiveLevel>
    <filterEnabled opt="true,false">
      <!--ro, opt, bool, 是否开启过滤提示, attr:opt{req, string, 取值范围, range:[,]}, desc:配置OSD显示是否已过滤，提示语仅显示在热成像图像上，内容和位置（右下角）固定，用户不可配置-->true
    </filterEnabled>
  </VehicleBlur>
  <TemperatureSuddenChange>
    <!--ro, opt, object, 普通测温模式下温度突变配置-->
    <mode opt="close,temperatureSuddenIncrease,temperatureSuddenDecrease">
      <!--ro, req, enum, 温度突变模式, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降], attr:opt{opt, enum, 取值范围, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]}-->close
    </mode>
    <alarm min="0" max="570">
      <!--ro, opt, float, 报警值, range:[0,570], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{opt, float, 温度突变值, range:[0,570], step:, unit:, unitType:, desc:精确到小数点后一位}, desc:精确到小数点后一位-->0.0
    </alarm>
    <cycleCfg min="5" max="3600">
      <!--ro, opt, int, 记录周期, range:[5,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->60
    </cycleCfg>
  </TemperatureSuddenChange>
</ThermometryBasicParam>

13. 获取人体测温基本参数

13.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryBasicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 基本参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled>
    <!--ro, req, bool, 启用-->true
  </enabled>
  <streamOverlay>
    <!--ro, req, bool, 码流是否叠加温度信息-->true
  </streamOverlay>
  <pictureOverlay>
    <!--ro, req, bool, 抓图是否叠加温度信息-->true
  </pictureOverlay>
  <temperatureRange>
    <!--ro, req, enum, 测温范围, subType:string, [30~45#温度范围30~45,-20~150#温度范围-20~150,0~550#温度范围0~550,0~650#温度范围0~650,-4~302#温度范围-4~302,32~1022#温度范围32~1022,32~1200#温度范围32~1200,-20~650#温度范围-20~650,-20~1500#温度范围-20~1500,automatic#自动,-20~120#温度范围-20~120,20~45#温度范围20~45,20~350#温度范围20~350,30~45#温度范围30~45,100-550#温度范围100-550,28-45#温度范围28-45]-->30~45
  </temperatureRange>
  <temperatureUnit>
    <!--ro, req, enum, 测温单位, subType:string, [degreeCentigrade#摄氏度（℃）,degreeFahrenheit#华氏度（华氏度）,degreeKelvin#开尔文（K）]-->degreeCentigrade
  </temperatureUnit>
  <temperatureCurve>
    <!--ro, opt, enum, 纵向温度趋势线模式, subType:string, [close#关闭,transverseTemperatureTrend#横向温度趋势线模式,longitudinalTemperatureTrend#纵向温度趋势线模式]-->close
  </temperatureCurve>
  <fireImageMode>
    <!--ro, opt, enum, 消防模式, subType:string, [blackWhite#黑白模式,thermalProbe#热探测模式,fireGround#火场模式]-->blackWhite
  </fireImageMode>
  <emissivity>
    <!--ro, opt, float, 发射率, range:[0.01,1.00], step:, unit:, unitType:-->0.01
  </emissivity>
  <distanceUnit>
    <!--ro, req, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <TemperatureColor>
    <!--ro, opt, object, 温度颜色-->
    <type>
      <!--ro, req, enum, 设置类型, subType:string, [highTemperature#高温报警类型,lowTemperature#低温报警类型,rangeTemperature#区间报警类型,heatPreservation#保温报警类型]-->highTemperature
    </type>
    <highTemperature>
      <!--ro, opt, int, 最高温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </highTemperature>
    <lowTemperature>
      <!--ro, opt, int, 最低温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </lowTemperature>
  </TemperatureColor>
  <enviroTemperature>
    <!--ro, opt, int, 环境温度, range:[,], step:, unit:℃,"环境温度", unitType:-->1
  </enviroTemperature>
  <enviroHumidity>
    <!--ro, opt, int, 环境相对湿度, range:[,], step:, unit:%,"环境相对湿度", unitType:-->1
  </enviroHumidity>
  <correctionVolume>
    <!--ro, opt, int, 测温修正量, range:[,], step:, unit:, unitType:-->1
  </correctionVolume>
  <specialPointThermType>
    <!--ro, opt, enum, 特殊测温点显示, subType:string, [centerPoint#中心点测温,highestPoint#最高点测温,lowestPoint#最低点测温,null#不支持]-->lowestPoint
  </specialPointThermType>
  <distance>
    <!--ro, req, int, 距离, range:[,], step:, unit:m,"距离", unitType:-->1
  </distance>
  <reflectiveEnable>
    <!--ro, req, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:-->1.0
  </reflectiveTemperature>
  <alert>
    <!--ro, opt, float, 全局预警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alert>
  <alarm>
    <!--ro, opt, float, 全局报警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alarm>
  <showTempStripEnable>
    <!--ro, opt, bool, 温度条显示使能-->1
  </showTempStripEnable>
  <thermalOpticalTransmittance>
    <!--ro, opt, float, 光学透过率, range:[,], step:, unit:, unitType:-->1.0
  </thermalOpticalTransmittance>
  <externalOpticsWindowCorrection>
    <!--ro, opt, float, 外部光学温度, range:[,], step:, unit:, unitType:-->1.0
  </externalOpticsWindowCorrection>
  <AlertOutputIOPortList>
    <!--ro, opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--ro, opt, object, 测温预警输出端口-->
      <portID>
        <!--ro, req, string, 测温预警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--ro, req, bool, 测温预警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlertOutputIOPortList>
  <AlarmOutputIOPortList>
    <!--ro, opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--ro, opt, object, 测温报警输出端口-->
      <portID>
        <!--ro, req, string, 测温报警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--ro, req, bool, 测温报警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlarmOutputIOPortList>
  <alertFilteringTime>
    <!--ro, opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alertFilteringTime>
  <alarmFilteringTime>
    <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alarmFilteringTime>
  <displayMaxTemperatureEnabled>
    <!--ro, opt, bool, 显示最高温-->true
  </displayMaxTemperatureEnabled>
  <displayMinTemperatureEnabled>
    <!--ro, opt, bool, 显示最低温-->true
  </displayMinTemperatureEnabled>
  <displayAverageTemperatureEnabled>
    <!--ro, opt, bool, 显示平均温-->true
  </displayAverageTemperatureEnabled>
  <thermometryInfoDisplayposition>
    <!--ro, opt, enum, 测温信息显示位置, subType:string, [rules_around#跟随规则,top_left_of_screen#屏幕左上角]-->rules_around
  </thermometryInfoDisplayposition>
  <calibrationCoefficientEnabled>
    <!--ro, opt, bool, 启用标定系数使能-->true
  </calibrationCoefficientEnabled>
  <calibrationCoefficient>
    <!--ro, opt, float, 标定系数, range:[,], step:, unit:, unitType:-->0.0
  </calibrationCoefficient>
  <emissivityMode>
    <!--ro, opt, enum, 发射率配置类型, subType:string, [rougher#粗糙0.95,rough#较粗糙0.80,smooth#较光滑0.60,smoother#光滑0.30,customsettings#自定义0.01-1.00]-->rougher
  </emissivityMode>
  <displayTemperatureInOpticalChannelEnabled>
    <!--ro, opt, bool, 可见光通道显示温度信息使能-->true
  </displayTemperatureInOpticalChannelEnabled>
  <displayCentreTemperatureEnabled>
    <!--ro, opt, bool, 显示中心点温度-->true
  </displayCentreTemperatureEnabled>
  <distanceMode>
    <!--ro, opt, enum, 距离模式, subType:string, [selfAdapt#自适应,fixed#固定]-->fixed
  </distanceMode>
  <faceTemperatureInfoUploadEnabled>
    <!--ro, opt, bool, 人脸温度信息报警上传使能, desc:1）报警叠加温度信息关闭，人体测温报警、预警和人脸抓拍报警，设备端这边会上传一个异常值65535，第三方平台接收到这个异常值不显示。 2）报警叠加温度信息开启，人体测温报警、预警和人脸抓拍报警，设备端上传的是真实的温度值-->true
  </faceTemperatureInfoUploadEnabled>
  <calibrationFileVersion>
    <!--ro, opt, string, 标定文件版本信息, range:[,]-->test
  </calibrationFileVersion>
  <alarmInterval>
    <!--ro, opt, int, 测温报警时间间隔配置, range:[1,300], step:, unit:s, unitType:时间-->1
  </alarmInterval>
  <rulesOverlayMode>
    <!--ro, opt, enum, 规则信息图片叠加模式, subType:string, [all#所有规则,alarm#触发报警规则]-->all
  </rulesOverlayMode>
  <toleranceTemperature>
    <!--ro, opt, float, 容差温度, range:[1,5], step:, unit:, unitType:-->1
  </toleranceTemperature>
  <alarmMode>
    <!--ro, opt, enum, 报警模式, subType:string, [temperatureIntervalMeasurement#温度区间检测,alarm_alert#预警／报警]-->temperatureIntervalMeasurement
  </alarmMode>
  <NormalRulesColor>
    <!--ro, opt, object, 正常规则颜色, desc:<alarmMode>=="temperatureIntervalMeasurement"时生效-->
    <R>
      <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
    </R>
    <G>
      <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
    </G>
    <B>
      <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
    </B>
  </NormalRulesColor>
  <NormalTemperatureIntervalMeasurement>
    <!--ro, opt, object, 普通温度区间检测-->
    <alarmType>
      <!--ro, opt, enum, 报警类型, subType:string, [highestTemp#最高温,lowestTemp#最低温]-->highestTemp
    </alarmType>
    <TemperatureIntervalList>
      <!--ro, opt, array, 温度区间列表, subType:object, range:[,], desc:最多四段-->
      <TemperatureInterval>
        <!--ro, opt, object, 温度区间-->
        <id>
          <!--ro, opt, int, 序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <enabled>
          <!--ro, opt, bool, 使能开关-->true
        </enabled>
        <name>
          <!--ro, opt, string, 区间名称, range:[,]-->test
        </name>
        <minTemperature>
          <!--ro, opt, float, 最低温, range:[-20,550], step:, unit:℃, unitType:温度, desc:保留后一位小数点-->0.0
        </minTemperature>
        <maxTemperature>
          <!--ro, opt, float, 最高温, range:[-20,550], step:, unit:℃, unitType:温度-esc:保留后一位小数点-->0.0
        </maxTemperature>
        <AlarmColor>
          <!--ro, opt, object, 温度区间报警颜色-->
          <R>
            <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->1
          </R>
          <G>
            <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->1
          </G>
          <B>
            <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->1
          </B>
        </AlarmColor>
        <AlarmOutputIOPortList>
          <!--ro, opt, array, 报警输出端口列表, subType:object, range:[,]-->
          <OutputIOPort>
            <!--ro, opt, object, 报警输出端口-->
            <portID>
              <!--ro, req, string, 端口号, range:[,]-->test
            </portID>
            <enabled>
              <!--ro, req, bool, 使能-->true
            </enabled>
          </OutputIOPort>
        </AlarmOutputIOPortList>
      </TemperatureInterval>
    </TemperatureIntervalList>
  </NormalTemperatureIntervalMeasurement>
  <SunReflectionBlur>
    <!--ro, opt, object, 太阳反光过滤-->
    <enabled>
      <!--ro, req, bool, 太阳反光过滤使能-->true
    </enabled>
    <sensitivity>
      <!--ro, opt, int, 太阳反光过滤灵敏度, range:[1,100], step:, unit:s, unitType:-->50
    </sensitivity>
    <filterEnabled>
      <!--ro, opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤，提示语仅显示在热成像图像上，内容和位置（右下角）固定，用户不可配置-->true
    </filterEnabled>
  </SunReflectionBlur>
  <VehicleBlur>
    <!--ro, opt, object, 车辆过滤-->
    <enabled>
      <!--ro, req, bool, 车辆过滤使能-->true
    </enabled>
    <sensitiveLevel>
      <!--ro, opt, int, 车辆过滤检测灵敏度等级, range:[0,4], step:, unit:s, unitType:-->4
    </sensitiveLevel>
    <filterEnabled>
      <!--ro, opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤，提示语仅显示在热成像图像上，内容和位置（右下角）固定，用户不可配置-->true
    </filterEnabled>
  </VehicleBlur>
  <TemperatureSuddenChange>
    <!--ro, opt, object, 普通测温模式下温度突变配置-->
    <mode>
      <!--ro, req, enum, 温度突变模式, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
    </mode>
    <alarm>
      <!--ro, opt, float, 报警值, range:[0,570], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
    </alarm>
    <cycleCfg>
      <!--ro, opt, int, 记录周期, range:[5,3600], step:, unit:s, unitType:时间-->60
    </cycleCfg>
  </TemperatureSuddenChange>
</ThermometryBasicParam>

14. 配置人体测温基本参数

14.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/basicParam

14.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryBasicParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 基本参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled>
    <!--req, bool, 启用-->true
  </enabled>
  <streamOverlay>
    <!--req, bool, 码流是否叠加温度信息-->true
  </streamOverlay>
  <pictureOverlay>
    <!--req, bool, 抓图是否叠加温度信息-->true
  </pictureOverlay>
  <temperatureRange>
    <!--req, enum, 测温范围, subType:string, [30~45#温度范围30~45,-20~150#温度范围-20~150,0~550#温度范围0~550,0~650#温度范围0~650,-4~302#温度范围-4~302,32~1022#温度范围32~1022,32~1200#温度范围32~1200,-20~650#温度范围-20~650,-20~1500#温度范围-20~1500,automatic#自动,-20~120#温度范围-20~120,20~45#温度范围20~45,20~350#温度范围20~350,30~45#温度范围30~45,100-550#温度范围100-550,28-45#温度范围28-45]-->30~45
  </temperatureRange>
  <temperatureUnit>
    <!--req, enum, 测温单位, subType:string, [degreeCentigrade#摄氏度（℃）,degreeFahrenheit#华氏度（华氏度）,degreeKelvin#开尔文（K）]-->degreeCentigrade
  </temperatureUnit>
  <temperatureCurve>
    <!--opt, enum, 纵向温度趋势线模式, subType:string, [close#关闭,transverseTemperatureTrend#横向温度趋势线模式,longitudinalTemperatureTrend#纵向温度趋势线模式]-->close
  </temperatureCurve>
  <fireImageMode>
    <!--opt, enum, 消防模式, subType:string, [blackWhite#黑白模式,thermalProbe#热探测模式,fireGround#火场模式]-->blackWhite
  </fireImageMode>
  <emissivity>
    <!--opt, float, 发射率, range:[0.01,1.00], step:, unit:, unitType:-->0.01
  </emissivity>
  <distanceUnit>
    <!--req, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <TemperatureColor>
    <!--opt, object, 温度颜色-->
    <type>
      <!--req, enum, 设置类型, subType:string, [highTemperature#高温报警类型,lowTemperature#低温报警类型,rangeTemperature#区间报警类型,heatPreservation#保温报警类型]-->highTemperature
    </type>
    <highTemperature>
      <!--opt, int, 最高温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </highTemperature>
    <lowTemperature>
      <!--opt, int, 最低温度, range:[-273,10000], step:1, unit:, unitType:-->100
    </lowTemperature>
  </TemperatureColor>
  <enviroTemperature>
    <!--opt, int, 环境温度, range:[,], step:, unit:℃,"环境温度", unitType:-->1
  </enviroTemperature>
  <enviroHumidity>
    <!--opt, int, 环境相对湿度, range:[,], step:, unit:%,"环境相对湿度", unitType:-->1
  </enviroHumidity>
  <correctionVolume>
    <!--opt, int, 测温修正量, range:[,], step:, unit:, unitType:-->1
  </correctionVolume>
  <specialPointThermType>
    <!--opt, enum, 特殊测温点显示, subType:string, [centerPoint#中心点测温,highestPoint#最高点测温,lowestPoint#最低点测温,null#不支持]-->lowestPoint
  </specialPointThermType>
  <distance>
    <!--req, int, 距离, range:[,], step:, unit:m,"距离", unitType:-->1
  </distance>
  <reflectiveEnable>
    <!--req, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--opt, float, 反射温度, range:[,], step:, unit:, unitType:-->1.0
  </reflectiveTemperature>
  <alert>
    <!--opt, float, 全局预警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alert>
  <alarm>
    <!--opt, float, 全局报警阈值, range:[,], step:, unit:, unitType:-->1.0
  </alarm>
  <showTempStripEnable>
    <!--opt, bool, 温度条显示使能-->1
  </showTempStripEnable>
  <thermalOpticalTransmittance>
    <!--opt, float, 光学透过率, range:[,], step:, unit:, unitType:-->1.0
  </thermalOpticalTransmittance>
  <externalOpticsWindowCorrection>
    <!--opt, float, 外部光学温度, range:[,], step:, unit:, unitType:-->1.0
  </externalOpticsWindowCorrection>
  <AlertOutputIOPortList>
    <!--opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--opt, object, 测温预警输出端口-->
      <portID>
        <!--req, string, 测温预警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--req, bool, 测温预警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlertOutputIOPortList>
  <AlarmOutputIOPortList>
    <!--opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
    <OutputIOPort>
      <!--opt, object, 测温报警输出端口-->
      <portID>
        <!--req, string, 测温报警输出端口号, range:[,]-->3333
      </portID>
      <enabled>
        <!--req, bool, 测温报警输出端口使能-->true
      </enabled>
    </OutputIOPort>
  </AlarmOutputIOPortList>
  <alertFilteringTime>
    <!--opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alertFilteringTime>
  <alarmFilteringTime>
    <!--opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:-->1
  </alarmFilteringTime>
  <displayMaxTemperatureEnabled>
    <!--opt, bool, 显示最高温-->true
  </displayMaxTemperatureEnabled>
  <displayMinTemperatureEnabled>
    <!--opt, bool, 显示最低温-->true
  </displayMinTemperatureEnabled>
  <displayAverageTemperatureEnabled>
    <!--opt, bool, 显示平均温-->true
  </displayAverageTemperatureEnabled>
  <thermometryInfoDisplayposition>
    <!--opt, enum, 测温信息显示位置, subType:string, [rules_around#跟随规则,top_left_of_screen#屏幕左上角]-->rules_around
  </thermometryInfoDisplayposition>
  <calibrationCoefficientEnabled>
    <!--opt, bool, 启用标定系数使能-->true
  </calibrationCoefficientEnabled>
  <calibrationCoefficient>
    <!--opt, float, 标定系数, range:[,], step:, unit:, unitType:-->0.0
  </calibrationCoefficient>
  <emissivityMode>
    <!--opt, enum, 发射率配置类型, subType:string, [rougher#粗糙0.95,rough#较粗糙0.80,smooth#较光滑0.60,smoother#光滑0.30,customsettings#自定义0.01-1.00]-->rougher
  </emissivityMode>
  <displayTemperatureInOpticalChannelEnabled>
    <!--opt, bool, 可见光通道显示温度信息使能-->true
  </displayTemperatureInOpticalChannelEnabled>
  <displayCentreTemperatureEnabled>
    <!--opt, bool, 显示中心点温度-->true
  </displayCentreTemperatureEnabled>
  <distanceMode>
    <!--opt, enum, 距离模式, subType:string, [selfAdapt#自适应,fixed#固定]-->fixed
  </distanceMode>
  <faceTemperatureInfoUploadEnabled>
    <!--opt, bool, 人脸温度信息报警上传使能, desc:1）报警叠加温度信息关闭，人体测温报警、预警和人脸抓拍报警，设备端这边会上传一个异常值65535，第三方平台接收到这个异常值不显示。 2）报警叠加温度信息开启，人体测温报警、预警和人脸抓拍报警，设备端上传的是真实的温度值-->true
  </faceTemperatureInfoUploadEnabled>
  <calibrationFileVersion>
    <!--opt, string, 标定文件版本信息, range:[,]-->test
  </calibrationFileVersion>
  <alarmInterval>
    <!--opt, int, 测温报警时间间隔配置, range:[1,300], step:, unit:s, unitType:时间-->1
  </alarmInterval>
  <rulesOverlayMode>
    <!--opt, enum, 规则信息图片叠加模式, subType:string, [all#所有规则,alarm#触发报警规则]-->all
  </rulesOverlayMode>
  <toleranceTemperature>
    <!--opt, float, 容差温度, range:[1,5], step:, unit:, unitType:-->1
  </toleranceTemperature>
  <alarmMode>
    <!--opt, enum, 报警模式, subType:string, [temperatureIntervalMeasurement#温度区间检测,alarm_alert#预警／报警]-->temperatureIntervalMeasurement
  </alarmMode>
  <NormalRulesColor>
    <!--opt, object, 正常规则颜色, desc:<alarmMode>=="temperatureIntervalMeasurement"时生效-->
    <R>
      <!--req, int, R, range:[,], step:, unit:, unitType:-->1
    </R>
    <G>
      <!--req, int, G, range:[,], step:, unit:, unitType:-->1
    </G>
    <B>
      <!--req, int, B, range:[,], step:, unit:, unitType:-->1
    </B>
  </NormalRulesColor>
  <NormalTemperatureIntervalMeasurement>
    <!--opt, object, 普通温度区间检测-->
    <alarmType>
      <!--opt, enum, 报警类型, subType:string, [highestTemp#最高温,lowestTemp#最低温]-->highestTemp
    </alarmType>
    <TemperatureIntervalList>
      <!--opt, array, 温度区间列表, subType:object, range:[,], desc:最多四段-->
      <TemperatureInterval>
        <!--opt, object, 温度区间-->
        <id>
          <!--opt, int, 序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <enabled>
          <!--opt, bool, 使能开关-->true
        </enabled>
        <name>
          <!--opt, string, 区间名称, range:[,]-->test
        </name>
        <minTemperature>
          <!--opt, float, 最低温, range:[-20,550], step:, unit:℃, unitType:温度, desc:保留后一位小数点-->0.0
        </minTemperature>
        <maxTemperature>
          <!--opt, float, 最高温, range:[-20,550], step:, unit:℃, unitType:温度-esc:保留后一位小数点-->0.0
        </maxTemperature>
        <AlarmColor>
          <!--opt, object, 温度区间报警颜色-->
          <R>
            <!--req, int, R, range:[,], step:, unit:, unitType:-->1
          </R>
          <G>
            <!--req, int, G, range:[,], step:, unit:, unitType:-->1
          </G>
          <B>
            <!--req, int, B, range:[,], step:, unit:, unitType:-->1
          </B>
        </AlarmColor>
        <AlarmOutputIOPortList>
          <!--opt, array, 报警输出端口列表, subType:object, range:[,]-->
          <OutputIOPort>
            <!--opt, object, 报警输出端口-->
            <portID>
              <!--req, string, 端口号, range:[,]-->test
            </portID>
            <enabled>
              <!--req, bool, 使能-->true
            </enabled>
          </OutputIOPort>
        </AlarmOutputIOPortList>
      </TemperatureInterval>
    </TemperatureIntervalList>
  </NormalTemperatureIntervalMeasurement>
  <SunReflectionBlur>
    <!--opt, object, 太阳反光过滤-->
    <enabled>
      <!--req, bool, 太阳反光过滤使能-->true
    </enabled>
    <sensitivity>
      <!--opt, int, 太阳反光过滤灵敏度, range:[1,100], step:, unit:s, unitType:-->50
    </sensitivity>
    <filterEnabled>
      <!--opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤，提示语仅显示在热成像图像上，内容和位置（右下角）固定，用户不可配置-->true
    </filterEnabled>
  </SunReflectionBlur>
  <VehicleBlur>
    <!--opt, object, 车辆过滤-->
    <enabled>
      <!--req, bool, 车辆过滤使能-->true
    </enabled>
    <sensitiveLevel>
      <!--opt, int, 车辆过滤检测灵敏度等级, range:[0,4], step:, unit:s, unitType:-->4
    </sensitiveLevel>
    <filterEnabled>
      <!--opt, bool, 是否开启过滤提示, desc:配置OSD显示是否已过滤，提示语仅显示在热成像图像上，内容和位置（右下角）固定，用户不可配置-->true
    </filterEnabled>
  </VehicleBlur>
  <TemperatureSuddenChange>
    <!--opt, object, 普通测温模式下温度突变报警配置-->
    <mode>
      <!--req, enum, 温度突变模式, subType:string, [close#关闭,temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
    </mode>
    <alarm>
      <!--opt, float, 报警值, range:[0,570], step:, unit:, unitType:, desc:精确到小数点后一位-->0.0
    </alarm>
    <cycleCfg>
      <!--opt, int, 记录周期, range:[5,3600], step:, unit:s, unitType:时间-->60
    </cycleCfg>
  </TemperatureSuddenChange>
</ThermometryBasicParam>

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

15. 获取测温模式能力

15.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometryMode/capabilities

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 测温模式配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <mode opt="normal,expert,AI" def="normal">
    <!--ro, req, enum, 测温模式, subType:string, [normal#普通,expert#专家,AI#AI测温], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->normal
  </mode>
  <thermometryROIEnabled opt="true,false">
    <!--ro, opt, bool, 测温ROI使能, attr:opt{req, string, 取值范围, range:[,]}, desc:测温ROI使能-->true
  </thermometryROIEnabled>
</ThermometryMode>

16. 获取测温模式

16.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometryMode

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 测温模式配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <mode>
    <!--ro, req, enum, 测温模式, subType:string, [normal#普通,expert#专家,AI#AI测温]-->normal
  </mode>
  <thermometryROIEnabled>
    <!--ro, opt, bool, 测温ROI使能, desc:测温ROI使能-->true
  </thermometryROIEnabled>
</ThermometryMode>

17. 配置测温模式

17.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometryMode

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 测温模式配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <mode>
    <!--req, enum, 测温模式, subType:string, [normal#普通,expert#专家,AI#AI测温], desc:"normal,expert,AI", 测温模式,依次为:普通,专家,AI测温-->normal
  </mode>
  <thermometryROIEnabled>
    <!--opt, bool, 测温ROI使能, desc:测温ROI使能-->true
  </thermometryROIEnabled>
</ThermometryMode>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取热成像智能调度能力

18.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermIntell/capabilities

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermIntell xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 热成像智能互斥能力, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <intellType opt="thermometryAndSmart,shipsDetection,fireDetection,pip,faceThermometry,thermometryAndSmokeFireDetection,thermometryAndFireDetection,thermometryAndOpenPlatForm,basicBehavior,thermometry,thermometryAndFireDetectionAndAIOpenPlatForm" def="thermometryAndSmart">
    <!--ro, req, string, 智能功能资源配置类型, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:thermometryAndSmart-测温+异常行为识别(默认), shipsDetection-船只检测,fireDetection-火点检测, pip-画中画功能, faceThermometry-人脸测温,thermometryAndSmokeFireDetection-测温+烟火检测,thermometryAndFireDetection-测温+火点检测, basicBehavior-异常行为识别, thermometry-测温,thermometryAndFireDetectionAndAIOpenPlatForm-测温+火点检测+AI开放平-->thermometryAndSmart
  </intellType>
</ThermIntell>

19. 获取热成像智能调度参数

19.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermIntell

19.2 输入参数

无

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermIntell xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 热成像智能互斥配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <intellType>
    <!--ro, req, enum, 智能类型, subType:string, [thermometryAndSmart#测温+异常行为识别(默认),shipsDetection#船只检测,fireDetection#火点检测,pip#画中画功能,faceThermometry#人脸测温,thermometryAndSmokeFireDetection#测温+烟火检测,thermometryAndFireDetection#测温+火点检测,basicBehavior#异常行为识别,thermometry#测温,thermometryAndFireDetectionAndAIOpenPlatForm#测温+火点检测+AI开放平台]-->thermometryAndSmart
  </intellType>
</ThermIntell>

20. 配置热成像智能调度参数

20.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermIntell

20.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermIntell xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 热成像智能互斥配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <intellType>
    <!--req, enum, 智能类型, subType:string, [thermometryAndSmart#测温+异常行为识别(默认),shipsDetection#船只检测,fireDetection#火点检测,pip#画中画功能,faceThermometry#人脸测温,thermometryAndFireDetectionAndAIOpenPlatForm#测温+火点检测+AI开放平台]-->thermometryAndSmart
  </intellType>
</ThermIntell>

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

21. 获取预置点关联信息参数能力

21.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/capabilities

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryScene xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 预置点关联信息参数, attr:version{req, string, 协议版本, range:[,]}-->
  <normalizedScreenSize>
    <!--ro, req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRegionList size="10">
    <!--ro, opt, array, 区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ThermometryRegion>
      <!--ro, opt, object, 区域-->
      <id min="1" max="40">
        <!--ro, req, int, 通道号, range:[1,40], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 是否使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <name min="0" max="32">
        <!--ro, req, string, 规则名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <emissivity min="0.01" max="1.00">
        <!--ro, req, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </emissivity>
      <distance min="0" max="10000">
        <!--ro, req, int, 距离, range:[0,100], step:, unit:m, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </distance>
      <reflectiveEnable opt="true,false">
        <!--ro, req, bool, 反射温度使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </reflectiveEnable>
      <reflectiveTemperature min="0" max="10">
        <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </reflectiveTemperature>
      <type opt="point,region,line">
        <!--ro, req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线], attr:opt{req, string, 取值范围, range:[,]}-->point
      </type>
      <Point>
        <!--ro, opt, object, 点测温, desc:显示平均温度-->
        <TempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </TempValue>
        <CalibratingCoordinates>
          <!--ro, opt, object, 标定点, desc:左下角为坐标原点-->
          <positionX min="0" max="1000">
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
          </positionX>
          <positionY min="0" max="1000">
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--ro, opt, object, 框测温, desc:显示最高温、最低温、平均温、温差-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <averageTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </averageTempValue>
        <diffTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </diffTempValue>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[3,10], step:, unit:, unitType:}, desc:左下角为坐标原点-->
          <RegionCoordinates>
            <!--ro, opt, object, 框的区域坐标点-->
            <positionX min="0" max="1000">
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionX>
            <positionY min="0" max="1000">
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <Line>
        <!--ro, opt, object, 线测温, desc:显示最高温、最低温-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 线的端点坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:左下角为坐标原点-->
          <RegionCoordinates>
            <!--ro, opt, object, 坐标点-->
            <positionX min="0" max="1000">
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionX>
            <positionY min="0" max="1000">
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Line>
      <distanceUnit opt="meter,feet,centimeter">
        <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米], attr:opt{req, string, 取值范围, range:[,]}-->meter
      </distanceUnit>
      <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
        <!--ro, opt, enum, 发射率配置类型, subType:string, [rougher#粗糙,rough#较粗糙,smooth#较光滑,smoother#光滑,customsettings#自定义], attr:opt{req, string, 取值范围, range:[,]}-->rougher
      </emissivityMode>
      <RegionBoundary>
        <!--ro, opt, object, 规则区域边界-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:左下角为坐标原点-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域-->
            <positionX min="0" max="1000">
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionX>
            <positionY min="0" max="1000">
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </RegionBoundary>
      <regionMode>
        <!--ro, opt, enum, 规则区域模式, subType:string, [polygon#多边形,rect#矩形]-->polygon
      </regionMode>
    </ThermometryRegion>
    <maxPointNum>
      <!--ro, req, int, 设备支持的点规则配置最大值, range:[,], step:, unit:, unitType:-->0
    </maxPointNum>
    <maxLineNum>
      <!--ro, req, int, 设备支持的线规则配置最大值, range:[,], step:, unit:, unitType:-->0
    </maxLineNum>
    <maxRegionNum>
      <!--ro, req, int, 设备支持的框规则配置最大值, range:[,], step:, unit:, unitType:-->0
    </maxRegionNum>
  </ThermometryRegionList>
  <ThermalFOVRegion>
    <!--ro, opt, object, 热成像视域-->
    <RegionCoordinatesList size="10">
      <!--ro, opt, array, 区域列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域, desc:左上角为坐标原点-->
        <positionX min="0" max="1000">
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </positionX>
        <positionY min="0" max="1000">
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </ThermalFOVRegion>
</ThermometryScene>

22. 获取预置点关联信息参数

22.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryScene xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 预置点关联信息参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <normalizedScreenSize>
    <!--ro, req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRegionList>
    <!--ro, opt, array, 区域列表, subType:object, range:[,]-->
    <ThermometryRegion>
      <!--ro, opt, object, 区域-->
      <id>
        <!--ro, req, int, 通道号, range:[1,40], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--ro, req, bool, 是否使能-->true
      </enabled>
      <name>
        <!--ro, req, string, 规则名称, range:[0,32]-->test
      </name>
      <emissivity>
        <!--ro, req, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:-->0.000
      </emissivity>
      <distance>
        <!--ro, req, int, 距离, range:[0,100], step:, unit:m, unitType:长度-->0
      </distance>
      <reflectiveEnable>
        <!--ro, req, bool, 反射温度使能-->true
      </reflectiveEnable>
      <reflectiveTemperature>
        <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:-->0.000
      </reflectiveTemperature>
      <type>
        <!--ro, req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线]-->point
      </type>
      <Point>
        <!--ro, opt, object, 点测温, desc:显示平均温度-->
        <TempValue>
          <!--ro, opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </TempValue>
        <CalibratingCoordinates>
          <!--ro, opt, object, 标定点, desc:左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--ro, opt, object, 框测温, desc:显示最高温、最低温、平均温、温差-->
        <highestTempValue>
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <averageTempValue>
          <!--ro, opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </averageTempValue>
        <diffTempValue>
          <!--ro, opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--ro, opt, object, 框的区域坐标点, desc:左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <distanceUnit>
        <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
      </distanceUnit>
      <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
        <!--ro, opt, enum, 发射率配置类型, subType:string, [rougher#粗糙,rough#较粗糙,smooth#较光滑,smoother#光滑,customsettings#自定义], attr:opt{req, string, 取值范围, range:[,]}-->rougher
      </emissivityMode>
    </ThermometryRegion>
  </ThermometryRegionList>
</ThermometryScene>

23. 配置预置点关联信息参数

23.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>

23.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryScene xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 预置点关联信息参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <normalizedScreenSize>
    <!--req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRegionList>
    <!--opt, array, 区域列表, subType:object, range:[,]-->
    <ThermometryRegion>
      <!--opt, object, 区域-->
      <id>
        <!--req, int, 通道号, range:[1,40], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--req, bool, 是否使能-->true
      </enabled>
      <name>
        <!--req, string, 规则名称, range:[0,32]-->test
      </name>
      <emissivity>
        <!--req, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:-->0.000
      </emissivity>
      <distance>
        <!--req, int, 距离, range:[0,100], step:, unit:m, unitType:长度-->0
      </distance>
      <reflectiveEnable>
        <!--req, bool, 反射温度使能-->true
      </reflectiveEnable>
      <reflectiveTemperature>
        <!--opt, float, 反射温度, range:[,], step:, unit:, unitType:-->0.000
      </reflectiveTemperature>
      <type>
        <!--req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线]-->point
      </type>
      <Point>
        <!--opt, object, 点测温, desc:显示平均温度-->
        <TempValue>
          <!--opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </TempValue>
        <CalibratingCoordinates>
          <!--opt, object, 标定点, desc:左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--opt, object, 框测温, desc:显示最高温、最低温、平均温、温差-->
        <highestTempValue>
          <!--opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <averageTempValue>
          <!--opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </averageTempValue>
        <diffTempValue>
          <!--opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--opt, object, 框的区域坐标点, desc:左下角为坐标原点-->
            <positionX>
              <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <distanceUnit>
        <!--opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
      </distanceUnit>
      <emissivityMode opt="rougher,rough,smooth,smoother,customsettings">
        <!--opt, enum, 发射率配置类型, subType:string, [rougher#粗糙,rough#较粗糙,smooth#较光滑,smoother#光滑,customsettings#自定义], attr:opt{req, string, 取值范围, range:[,]}-->rougher
      </emissivityMode>
    </ThermometryRegion>
  </ThermometryRegionList>
</ThermometryScene>

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

24. 获取报警规则参数能力

24.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules/capabilities

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryAlarmRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 报警规则参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ThermometryAlarmModeList size="10">
    <!--ro, req, array, 测温预置点报警规则配置参数列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ThermometryAlarmMode>
      <!--ro, opt, object, 测温预置点报警规则配置参数-->
      <id min="0" max="10">
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <name min="0" max="32">
        <!--ro, req, string, 规则名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <pointRule opt="averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 点测温的报警温度比较方式, subType:string, [averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->averageGreater
      </pointRule>
      <lineRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 线测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </lineRule>
      <regionRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess,diffTempGreater,diffTempLess" def="averageGreater">
        <!--ro, req, enum, 框测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </regionRule>
      <alert min="0" max="32">
        <!--ro, req, float, 预警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alert>
      <alarm min="0" max="32">
        <!--ro, req, float, 报警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alarm>
      <threshold min="0" max="32">
        <!--ro, req, float, 门限温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </threshold>
      <isSupportAlertOutputIOPortList>
        <!--ro, opt, bool, 是否支持IO输出预警-->true
      </isSupportAlertOutputIOPortList>
      <isSupportAlarmOutputIOPortList>
        <!--ro, opt, bool, 是否支持IO输出报警-->true
      </isSupportAlarmOutputIOPortList>
      <alertFilteringTime min="0" max="200" default="0">
        <!--ro, opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
      </alertFilteringTime>
      <alarmFilteringTime min="0" max="200" default="0">
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
      </alarmFilteringTime>
      <visibleLightLinkageEnabled opt="true,false">
        <!--ro, opt, bool, 可见光联动, attr:opt{req, string, 取值范围, range:[,]}-->true
      </visibleLightLinkageEnabled>
      <TemperatureSuddenChange>
        <!--ro, opt, object, 温度突变-->
        <mode opt="close,temperatureSuddenIncrease,temperatureSuddenDecrease">
          <!--ro, req, enum, 温度突变模式, subType:string, [temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降], attr:opt{req, string, 取值范围, range:[,]}-->temperatureSuddenIncrease
        </mode>
        <cycle opt="1,5,10,30,60">
          <!--ro, opt, int, 记录周期, range:[,], step:, unit:s, unitType:时间, attr:opt{req, string, 取值范围, range:[,]}-->0
        </cycle>
        <alert min="0" max="10">
          <!--ro, opt, float, 预警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </alert>
        <alarm min="0" max="570">
          <!--ro, opt, float, 报警值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </alarm>
        <cycleCfg min="5" max="3600">
          <!--ro, opt, int, 记录周期（可配置方式）, range:[5,3600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->60
        </cycleCfg>
      </TemperatureSuddenChange>
    </ThermometryAlarmMode>
  </ThermometryAlarmModeList>
  <TemperatureDifferenceComparisonList size="10">
    <!--ro, req, array, 测温预置点温差规则配置参数列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TemperatureDifferenceComparison>
      <!--ro, opt, object, 测温预置点温差规则配置参数-->
      <id min="0" max="10">
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <ruleID1 min="0" max="10">
        <!--ro, req, string, 报警点1, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </ruleID1>
      <ruleID2 min="0" max="10">
        <!--ro, req, string, 报警点2, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </ruleID2>
      <pointRule opt="averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 点测温的报警温度比较方式, subType:string, [averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->averageGreater
      </pointRule>
      <lineRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess" def="averageGreater">
        <!--ro, req, enum, 线测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </lineRule>
      <regionRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess,diffTempGreater,diffTempLess" def="averageGreater">
        <!--ro, req, enum, 框测温的报警温度比较方式, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->highestGreater
      </regionRule>
      <temperatureDifference min="0" max="32">
        <!--ro, req, float, 温差值, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </temperatureDifference>
      <isSupportAlarmOutputIOPortList>
        <!--ro, opt, bool, 是否支持IO输出报警-->true
      </isSupportAlarmOutputIOPortList>
      <alarmFilteringTime min="0" max="200" default="0">
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
      </alarmFilteringTime>
      <alert min="0" max="32">
        <!--ro, req, float, 温差预警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alert>
      <alarm min="0" max="32">
        <!--ro, req, float, 温差报警温度, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </alarm>
    </TemperatureDifferenceComparison>
  </TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>

25. 获取报警规则参数

25.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryAlarmRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 报警规则参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ThermometryAlarmModeList>
    <!--ro, req, array, 测温预置点报警规则配置参数列表, subType:object, range:[,]-->
    <ThermometryAlarmMode>
      <!--ro, opt, object, 测温预置点报警规则配置参数-->
      <id>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <name>
        <!--ro, req, string, 规则名称, range:[0,32]-->test
      </name>
      <rule>
        <!--ro, req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <alert>
        <!--ro, req, float, 预警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alert>
      <alarm>
        <!--ro, req, float, 报警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alarm>
      <threshold>
        <!--ro, req, float, 门限温度, range:[0,32], step:, unit:, unitType:-->0.000
      </threshold>
      <AlertOutputIOPortList>
        <!--ro, opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--ro, opt, object, 测温预警输出端口-->
          <portID>
            <!--ro, req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlertOutputIOPortList>
      <AlarmOutputIOPortList>
        <!--ro, opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--ro, opt, object, 测温报警输出端口-->
          <portID>
            <!--ro, req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alertFilteringTime>
        <!--ro, opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alertFilteringTime>
      <alarmFilteringTime>
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
      <visibleLightLinkageEnabled>
        <!--ro, opt, bool, 可见光联动-->true
      </visibleLightLinkageEnabled>
      <TemperatureSuddenChange>
        <!--ro, opt, object, 温度突变-->
        <mode>
          <!--ro, req, enum, 温度突变模式, subType:string, [temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
        </mode>
        <cycle>
          <!--ro, opt, enum, 记录周期, subType:int, [1#1s,5#5s,10#10s,30#30s,60#60s]-->1
        </cycle>
        <alert>
          <!--ro, opt, float, 预警值, range:[,], step:, unit:, unitType:-->0.000
        </alert>
        <alarm>
          <!--ro, opt, float, 报警值, range:[0,570], step:, unit:, unitType:-->0.000
        </alarm>
        <cycleCfg>
          <!--ro, opt, int, 记录周期（可配置方式）, range:[5,3600], step:, unit:s, unitType:时间-->60
        </cycleCfg>
      </TemperatureSuddenChange>
    </ThermometryAlarmMode>
  </ThermometryAlarmModeList>
  <TemperatureDifferenceComparisonList>
    <!--ro, req, array, 测温预置点温差规则配置参数列表, subType:object, range:[,]-->
    <TemperatureDifferenceComparison>
      <!--ro, opt, object, 测温预置点温差规则配置参数-->
      <id>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <ruleID1>
        <!--ro, req, string, 报警点1, range:[,]-->test
      </ruleID1>
      <ruleID2>
        <!--ro, req, string, 报警点2, range:[,]-->test
      </ruleID2>
      <rule>
        <!--ro, req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <temperatureDifference>
        <!--ro, req, float, 温差值, range:[0,32], step:, unit:, unitType:-->0.000
      </temperatureDifference>
      <AlarmOutputIOPortList>
        <!--ro, opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--ro, opt, object, 测温报警输出端口-->
          <portID>
            <!--ro, req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alarmFilteringTime>
        <!--ro, opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
    </TemperatureDifferenceComparison>
  </TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>

26. 配置报警规则参数

26.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/alarmRules

26.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermometryAlarmRule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 报警规则参数, attr:version{req, string, 协议版本, range:[,]}-->
  <ThermometryAlarmModeList>
    <!--req, array, 测温预置点报警规则配置参数列表, subType:object, range:[,]-->
    <ThermometryAlarmMode>
      <!--opt, object, 测温预置点报警规则配置参数-->
      <id>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <name>
        <!--req, string, 规则名称, range:[0,32]-->test
      </name>
      <rule>
        <!--req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <alert>
        <!--req, float, 预警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alert>
      <alarm>
        <!--req, float, 报警温度, range:[0,32], step:, unit:, unitType:-->0.000
      </alarm>
      <threshold>
        <!--req, float, 门限温度, range:[0,32], step:, unit:, unitType:-->0.000
      </threshold>
      <AlertOutputIOPortList>
        <!--opt, array, 测温预警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--opt, object, 测温预警输出端口-->
          <portID>
            <!--req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlertOutputIOPortList>
      <AlarmOutputIOPortList>
        <!--opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--opt, object, 测温报警输出端口-->
          <portID>
            <!--req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alertFilteringTime>
        <!--opt, int, 温度预警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alertFilteringTime>
      <alarmFilteringTime>
        <!--opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
      <visibleLightLinkageEnabled>
        <!--opt, bool, 可见光联动-->true
      </visibleLightLinkageEnabled>
      <TemperatureSuddenChange>
        <!--opt, object, 温度突变-->
        <mode>
          <!--req, enum, 温度突变模式, subType:string, [temperatureSuddenIncrease#陡升,temperatureSuddenDecrease#抖降]-->temperatureSuddenIncrease
        </mode>
        <cycle>
          <!--opt, enum, 记录周期, subType:int, [1#1s,5#5s,10#10s,30#30s,60#60s]-->1
        </cycle>
        <alert>
          <!--opt, float, 预警值, range:[,], step:, unit:, unitType:-->0.000
        </alert>
        <alarm>
          <!--opt, float, 报警值, range:[0,570], step:, unit:, unitType:-->0.000
        </alarm>
        <cycleCfg>
          <!--opt, int, 记录周期（可配置方式）, range:[5,3600], step:, unit:s, unitType:时间-->60
        </cycleCfg>
      </TemperatureSuddenChange>
    </ThermometryAlarmMode>
  </ThermometryAlarmModeList>
  <TemperatureDifferenceComparisonList>
    <!--req, array, 测温预置点温差规则配置参数列表, subType:object, range:[,]-->
    <TemperatureDifferenceComparison>
      <!--opt, object, 测温预置点温差规则配置参数-->
      <id>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->0
      </id>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <ruleID1>
        <!--req, string, 报警点1, range:[,]-->test
      </ruleID1>
      <ruleID2>
        <!--req, string, 报警点2, range:[,]-->test
      </ruleID2>
      <rule>
        <!--req, enum, 规则, subType:string, [highestGreater#高温大于,highestLess#高温小于,lowestGreater#低温大于,lowestLess#低温小于,averageGreater#平均温大于(默认),averageLess#平均温小于,diffTempGreater#温差大于,diffTempLess#温差小于]-->highestGreater
      </rule>
      <temperatureDifference>
        <!--req, float, 温差值, range:[0,32], step:, unit:, unitType:-->0.000
      </temperatureDifference>
      <AlarmOutputIOPortList>
        <!--opt, array, 测温报警输出端口列表, subType:object, range:[,]-->
        <OutputIOPort>
          <!--opt, object, 测温报警输出端口-->
          <portID>
            <!--req, string, 端口号, range:[,]-->test
          </portID>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
        </OutputIOPort>
      </AlarmOutputIOPortList>
      <alarmFilteringTime>
        <!--opt, int, 温度报警等待时间, range:[0,200], step:, unit:s, unitType:时间-->0
      </alarmFilteringTime>
    </TemperatureDifferenceComparison>
  </TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

27. 获取温度检测联动参数

27.1 命令

GET /ISAPI/Event/triggers/thermometry-<channelID>/preset/<presetID>

27.2 输入参数

无

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->thermometry-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--ro, opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

28. 配置温度检测联动参数

28.1 命令

PUT /ISAPI/Event/triggers/thermometry-<channelID>/preset/<presetID>

28.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->thermometry-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

29. 获取温度检测单个通道布防时间参数

29.1 命令

GET /ISAPI/Event/schedules/thermometry/thermometry-<channelID>

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->thermometry-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

30. 配置温度检测单个通道布防时间参数

30.1 命令

PUT /ISAPI/Event/schedules/thermometry/thermometry-<channelID>

30.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->thermometry-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->thermometry
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

31. 获取温差检测单个通道布防时间参数

31.1 命令

GET /ISAPI/Event/schedules/temperature/temperature-<channelID>

31.2 输入参数

无

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->temperature-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->temperature
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

32. 配置温差检测单个通道布防时间参数

32.1 命令

PUT /ISAPI/Event/schedules/temperature/temperature-<channelID>

32.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->temperature-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->temperature
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

33. 获取人体测温能力

33.1 命令

GET /ISAPI/Thermal/channels/<channelID>/faceThermometry/capabilities

33.2 输入参数

无

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人体测温能力, attr:version{req, string, 协议版本, range:[,]}-->
  <faceThermometryEnabled opt="true,false">
    <!--ro, opt, bool, 人脸测温功能使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceThermometryEnabled>
  <thermometryShowEnabled opt="true,false">
    <!--ro, opt, bool, 温度信息通过OSD叠加方式显示位置使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </thermometryShowEnabled>
  <alarmEnabled opt="true,false">
    <!--ro, opt, bool, 是否开启报警订阅, attr:opt{req, string, 取值范围, range:[,]}-->true
  </alarmEnabled>
  <alarmIntervalTime min="0.5" max="600" def="1">
    <!--ro, opt, float, 报警间隔时间, range:[0.5,600], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0.5
  </alarmIntervalTime>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数-->
    <normalizedScreenWidth>
      <!--ro, req, int, 设备返回的归一化坐标宽度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 设备返回的归一化坐标高度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FaceThermometryRegionList size="1">
    <!--ro, opt, array, 人脸测温规则列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ThermometryRegion>
      <!--ro, opt, object, 人脸测温单一规则-->
      <id min="1" max="40">
        <!--ro, req, int, 规则ID, range:[1,40], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </id>
      <name min="0" max="32">
        <!--ro, opt, string, 规则名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <sensitivity min="1" max="5" def="3">
        <!--ro, req, int, 灵敏度, range:[1,5], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:归一化值-->1
      </sensitivity>
      <PupilParam>
        <!--ro, req, object, 瞳孔参数-->
        <pupilDistance min="42" max="1000">
          <!--ro, req, int, 瞳距范围, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:归一化值-->1
        </pupilDistance>
        <Region>
          <!--ro, opt, object, 瞳孔区域-->
          <RegionCoordinatesList size="10">
            <!--ro, req, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </PupilParam>
      <MaxPupilParam>
        <!--ro, opt, object, 最大瞳距-->
        <pupilDistance min="10" max="625">
          <!--ro, opt, int, 瞳距范围, range:[0,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </pupilDistance>
        <Region>
          <!--ro, opt, object, 规则区域-->
          <RegionCoordinatesList size="10">
            <!--ro, req, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </MaxPupilParam>
      <targetSpeed min="1" max="5" def="3">
        <!--ro, req, int, 目标生成速度, range:[1,5], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:归一化值-->1
      </targetSpeed>
      <alarmTemperature min="-20.0" max="60.0">
        <!--ro, opt, float, 报警温度, range:[-20.0,60.0], step:, unit:℃, unitType:温度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->36.7
      </alarmTemperature>
      <type opt="region">
        <!--ro, req, enum, 规则类型, subType:string, [region#区域], attr:opt{req, string, 取值范围, range:[,]}-->region
      </type>
      <Region>
        <!--ro, opt, object, 规则区域-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <RegionBoundary>
        <!--ro, opt, object, 规则区域最大可配置边界-->
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y轴坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </RegionBoundary>
      <alarmRule opt="highestGreater,highestLess">
        <!--ro, opt, enum, 报警规则, subType:string, [highestGreater#最高温度大于预定值,highestLess#最高温度小于预定值], attr:opt{req, string, 取值范围, range:[,]}-->highestGreater
      </alarmRule>
      <alert min="-100.0" max="1000.000">
        <!--ro, opt, float, 全局预警阈值, range:[-100.0,1000.0], step:, unit:℃, unitType:温度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:}-->36.7
      </alert>
    </ThermometryRegion>
  </FaceThermometryRegionList>
  <isSupportFaceThermDetectionInfo>
    <!--ro, opt, bool, 是否支持人脸测温检测结果获取-->true
  </isSupportFaceThermDetectionInfo>
  <imageQuality opt="high,medium,low">
    <!--ro, opt, enum, 抓图质量, subType:string, [high#高,medium#中,low#低], attr:opt{req, string, 取值范围, range:[,]}-->high
  </imageQuality>
  <mode opt="barrierPassing,targeting">
    <!--ro, opt, enum, 人体测温模式, subType:string, [barrierPassing#通关,targeting#筛查], attr:opt{req, string, 取值范围, range:[,]}-->barrierPassing
  </mode>
  <faceSnapUploadEnabled opt="true,false">
    <!--ro, opt, bool, 人脸抓拍上传使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceSnapUploadEnabled>
  <maxTemperatureCoordinatesEnabled opt="true,false">
    <!--ro, opt, bool, 最高温位置显示（在码流私有包中叠加）, attr:opt{req, string, 取值范围, range:[,]}-->true
  </maxTemperatureCoordinatesEnabled>
  <faceRectShowEnabled opt="true,false">
    <!--ro, opt, bool, 人脸框叠加使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceRectShowEnabled>
  <faceTemperatureShowEnabled opt="true,false">
    <!--ro, opt, bool, 人脸温度叠加使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </faceTemperatureShowEnabled>
  <detectionMode opt="forehead,comprehensiveness" def="test">
    <!--ro, opt, enum, 人体测温检测模式, subType:string, [forehead#额头检测,comprehensiveness#综合检测], attr:opt{req, string, 取值范围, range:[,]},def{req, string, 默认值, range:[,]},
desc:综合检测：人体测温结果由额头测温和眼角测温共同决定。室外温度很低会造成额头温度很低且恢复速度缓慢，此时会出现检测出体温过低的情况，因此需要切换为综合检测。
     额头检测：人体测温始终使用额头区域进行测温。在较热的环境，眼角温度会过高，容易发生体温过高误报，此时需切换为额头检测。-->comprehensiveness
  </detectionMode>
</FaceThermometry>

34. 获取人体测温参数

34.1 命令

GET /ISAPI/Thermal/channels/<channelID>/faceThermometry

34.2 输入参数

无

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 人脸测温功能规则列表, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <faceThermometryEnabled>
    <!--ro, req, bool, 人脸测温功能使能-->true
  </faceThermometryEnabled>
  <thermometryShowEnabled>
    <!--ro, req, bool, 温度信息通过OSD叠加方式显示位置使能-->true
  </thermometryShowEnabled>
  <alarmEnabled>
    <!--ro, opt, bool, 是否开启报警订阅-->true
  </alarmEnabled>
  <alarmIntervalTime>
    <!--ro, opt, float, 报警间隔时间, range:[0.5,600], step:, unit:s, unitType:时间, desc:当无门禁卡模式下生效，默认1s-->1
  </alarmIntervalTime>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数-->
    <normalizedScreenWidth>
      <!--ro, req, int, 设备返回的归一化坐标宽度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 设备返回的归一化坐标高度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FaceThermometryRegionList>
    <!--ro, opt, object, 人脸测温功能规则列表-->
    <ThermometryRegion>
      <!--ro, opt, object, 人脸测温单一规则-->
      <id>
        <!--ro, req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--ro, opt, string, 规则名称, range:[0,32]-->test
      </name>
      <sensitivity>
        <!--ro, req, int, 灵敏度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </sensitivity>
      <PupilParam>
        <!--ro, req, object, 瞳孔参数-->
        <Region>
          <!--ro, opt, object, 瞳孔区域-->
          <RegionCoordinatesList>
            <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </PupilParam>
      <MaxPupilParam>
        <!--ro, opt, object, 最大瞳距-->
        <Region>
          <!--ro, opt, object, 规则区域-->
          <RegionCoordinatesList>
            <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--ro, req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </MaxPupilParam>
      <targetSpeed>
        <!--ro, req, int, 目标生成速度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </targetSpeed>
      <alarmTemperature>
        <!--ro, opt, float, 报警温度, range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alarmTemperature>
      <type>
        <!--ro, req, enum, 规则类型, subType:string, [region#区域]-->region
      </type>
      <Region>
        <!--ro, opt, object, 规则区域-->
        <RegionCoordinatesList>
          <!--ro, opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <alarmRule>
        <!--ro, opt, enum, 报警规则, subType:string, [highestGreater#最高温大于,highestLess#最高温小于]-->highestGreater
      </alarmRule>
      <alert>
        <!--ro, opt, float, 全局预警阈值 , range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alert>
    </ThermometryRegion>
  </FaceThermometryRegionList>
  <imageQuality>
    <!--ro, opt, enum, 抓图质量, subType:string, [high#高质量,medium#中质量,low#低质量]-->high
  </imageQuality>
  <mode>
    <!--ro, opt, enum, 人体测温模式, subType:string, [barrierPassing#通关,targeting#筛查]-->targeting
  </mode>
  <faceSnapUploadEnabled>
    <!--ro, opt, bool, 人脸抓拍上传使能-->true
  </faceSnapUploadEnabled>
  <maxTemperatureCoordinatesEnabled>
    <!--ro, opt, bool, 最高温位置显示使能, desc:在码流私有包中叠加-->true
  </maxTemperatureCoordinatesEnabled>
  <faceRectShowEnabled>
    <!--ro, opt, bool, 人脸框叠加使能-->true
  </faceRectShowEnabled>
  <faceTemperatureShowEnabled>
    <!--ro, opt, bool, 人脸温度叠加使能-->true
  </faceTemperatureShowEnabled>
  <detectionMode>
    <!--ro, opt, enum, 人体测温检测模式, subType:string, [forehead#额头检测,comprehensiveness#综合检测],
desc:综合检测：人体测温结果由额头测温和眼角测温共同决定。室外温度很低会造成额头温度很低且恢复速度缓慢，此时会出现检测出体温过低的情况，因此需要切换为综合检测。
     额头检测：人体测温始终使用额头区域进行测温。在较热的环境，眼角温度会过高，容易发生体温过高误报，此时需切换为额头检测。-->comprehensiveness
  </detectionMode>
</FaceThermometry>

35. 配置人体测温参数

35.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/faceThermometry

35.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FaceThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 人脸测温功能规则列表, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <faceThermometryEnabled>
    <!--req, bool, 人脸测温功能使能-->true
  </faceThermometryEnabled>
  <thermometryShowEnabled>
    <!--req, bool, 温度信息通过OSD叠加方式显示位置使能-->true
  </thermometryShowEnabled>
  <alarmEnabled>
    <!--opt, bool, 是否开启报警订阅-->true
  </alarmEnabled>
  <alarmIntervalTime>
    <!--opt, float, 报警间隔时间, range:[0.5,600], step:, unit:s, unitType:时间, desc:当无门禁卡模式下生效，默认1s-->1
  </alarmIntervalTime>
  <normalizedScreenSize>
    <!--req, object, 设备返回的归一化坐标倍数-->
    <normalizedScreenWidth>
      <!--req, int, 设备返回的归一化坐标宽度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 设备返回的归一化坐标高度, range:[,], step:, unit:, unitType:-->1000
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FaceThermometryRegionList>
    <!--opt, object, 人脸测温功能规则列表-->
    <ThermometryRegion>
      <!--opt, object, 人脸测温单一规则-->
      <id>
        <!--req, int, 规则ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--opt, string, 规则名称, range:[0,32]-->test
      </name>
      <sensitivity>
        <!--req, int, 灵敏度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </sensitivity>
      <PupilParam>
        <!--req, object, 瞳孔参数-->
        <Region>
          <!--opt, object, 瞳孔区域-->
          <RegionCoordinatesList>
            <!--opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </PupilParam>
      <MaxPupilParam>
        <!--opt, object, 最大瞳距-->
        <Region>
          <!--opt, object, 规则区域-->
          <RegionCoordinatesList>
            <!--opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
            <RegionCoordinates>
              <!--opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
              <positionX>
                <!--req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
              </positionY>
            </RegionCoordinates>
          </RegionCoordinatesList>
        </Region>
      </MaxPupilParam>
      <targetSpeed>
        <!--req, int, 目标生成速度, range:[1,5], step:, unit:, unitType:, desc:归一化值-->1
      </targetSpeed>
      <alarmTemperature>
        <!--opt, float, 报警温度, range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alarmTemperature>
      <type>
        <!--req, enum, 规则类型, subType:string, [region#区域]-->region
      </type>
      <Region>
        <!--opt, object, 规则区域-->
        <RegionCoordinatesList>
          <!--opt, array, 区域顶点列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--opt, object, 点坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[1,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <alarmRule>
        <!--opt, enum, 报警规则, subType:string, [highestGreater#最高温大于,highestLess#最高温小于]-->highestGreater
      </alarmRule>
      <alert>
        <!--opt, float, 全局预警阈值 , range:[-20.0,60.0], step:, unit:℃, unitType:温度-->37.6
      </alert>
    </ThermometryRegion>
  </FaceThermometryRegionList>
  <imageQuality>
    <!--opt, enum, 抓图质量, subType:string, [high#高质量,medium#中质量,low#低质量]-->high
  </imageQuality>
  <mode>
    <!--opt, enum, 人体测温模式, subType:string, [barrierPassing#通关,targeting#筛查]-->targeting
  </mode>
  <faceSnapUploadEnabled>
    <!--opt, bool, 人脸抓拍上传使能-->true
  </faceSnapUploadEnabled>
  <maxTemperatureCoordinatesEnabled>
    <!--opt, bool, 最高温位置显示使能, desc:在码流私有包中叠加-->true
  </maxTemperatureCoordinatesEnabled>
  <faceRectShowEnabled>
    <!--opt, bool, 人脸框叠加使能-->true
  </faceRectShowEnabled>
  <faceTemperatureShowEnabled>
    <!--opt, bool, 人脸温度叠加使能-->true
  </faceTemperatureShowEnabled>
  <detectionMode>
    <!--opt, enum, 人体测温检测模式, subType:string, [forehead#额头检测,comprehensiveness#综合检测],
desc:综合检测：人体测温结果由额头测温和眼角测温共同决定。室外温度很低会造成额头温度很低且恢复速度缓慢，此时会出现检测出体温过低的情况，因此需要切换为综合检测。
     额头检测：人体测温始终使用额头区域进行测温。在较热的环境，眼角温度会过高，容易发生体温过高误报，此时需切换为额头检测。-->comprehensiveness
  </detectionMode>
</FaceThermometry>

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

36. 获取人体测温联动参数

36.1 命令

GET /ISAPI/Event/triggers/faceThermometry-<channelID>

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceThermometry-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--ro, opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

37. 配置人体测温联动参数

37.1 命令

PUT /ISAPI/Event/triggers/faceThermometry-<channelID>

37.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:由事件类型-通道号组成-->faceThermometry-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->test
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->test
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

38. 获取人体测温单个通道布防时间参数

38.1 命令

GET /ISAPI/Event/schedules/faceThermometrys/faceThermometrys-<channelID>

38.2 输入参数

无

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->faceThermometry-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

39. 配置人体测温单个通道布防时间参数

39.1 命令

PUT /ISAPI/Event/schedules/faceThermometrys/faceThermometrys-<channelID>

39.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->faceThermometry-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->faceThermometry
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

40. 获取热成像黑体参数能力

40.1 命令

GET /ISAPI/Thermal/channels/<channelID>/blackBody/capabilities

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalBlackBody xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像黑体参数, attr:version{opt, string, 未定义, range:[,]}-->
  <emissivity min="0.01" max="1.00" def="0.97">
    <!--ro, req, float, 黑体发射率, range:[0.01,1.00], step:, unit:, unitType:, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:默认0.97,精确到小数点后2位-->0.97
  </emissivity>
  <distance min="0.0" max="10.0" def="2.0">
    <!--ro, req, float, 黑体距离, range:[0.0,10.0], step:, unit:m, unitType:长度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:镜头距离黑体直线距离，默认2.0m,精确到小数点后1位-->2.0
  </distance>
  <temperature min="30.0" max="50.0" def="35.0">
    <!--ro, req, float, 黑体温度, range:[30.0,50.0], step:, unit:℃, unitType:温度, attr:min{req, float, 最小值, range:[,], step:, unit:, unitType:},max{req, float, 最大值, range:[,], step:, unit:, unitType:},def{req, float, 默认值, range:[,], step:, unit:, unitType:}, desc:默认35.0℃,精确到小数点后1位）-->35.0
  </temperature>
  <CentrePoint>
    <!--ro, req, object, 黑体中心点位置, desc:通过鼠标在热成像通道上点击黑体中心点,IE、4200下发黑体中心点位置的归一化的坐标信息（0~1000）-->
    <CalibratingCoordinates>
      <!--ro, opt, object, 校准坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </CalibratingCoordinates>
  </CentrePoint>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数, desc:该参数只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled opt="true,false">
    <!--ro, opt, bool, 是否启用黑体, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <blackBodyRegiontype opt="point,region">
    <!--ro, opt, enum, 黑体检测区域类型, subType:string, [point#点(<CentrePoint>生效),region#框(<BlackBodyRegion>生效)], attr:opt{req, string, 取值范围, range:[,]}-->region
  </blackBodyRegiontype>
  <BlackBodyRegion>
    <!--ro, opt, object, 框坐标-->
    <RegionCoordinatesList size="4">
      <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[0,4], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 框的区域坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </BlackBodyRegion>
</ThermalBlackBody>

41. 获取热成像黑体参数

41.1 命令

GET /ISAPI/Thermal/channels/<channelID>/blackBody

41.2 输入参数

无

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalBlackBody xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像黑体参数, attr:version{opt, string, 未定义, range:[,]}-->
  <emissivity>
    <!--ro, req, float, 黑体发射率, range:[0.01,1.00], step:, unit:, unitType:, desc:默认0.97,精确到小数点后2位-->0.97
  </emissivity>
  <distance>
    <!--ro, req, float, 黑体距离, range:[0.0,10.0], step:, unit:m, unitType:长度, desc:镜头距离黑体直线距离，默认2.0m,精确到小数点后1位-->2.0
  </distance>
  <temperature>
    <!--ro, req, float, 黑体温度, range:[30.0,50.0], step:, unit:℃, unitType:温度, desc:默认35.0℃,精确到小数点后1位）-->35.0
  </temperature>
  <CentrePoint>
    <!--ro, req, object, 黑体中心点位置, desc:通过鼠标在热成像通道上点击黑体中心点,IE、4200下发黑体中心点位置的归一化的坐标信息（0~1000）-->
    <CalibratingCoordinates>
      <!--ro, opt, object, 校准坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </CalibratingCoordinates>
  </CentrePoint>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数, desc:该参数只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--ro, opt, bool, 是否启用黑体-->true
  </enabled>
  <blackBodyRegiontype>
    <!--ro, opt, enum, 黑体检测区域类型, subType:string, [point#点(<CentrePoint>生效),region#框(<BlackBodyRegion>生效)]-->point
  </blackBodyRegiontype>
  <BlackBodyRegion>
    <!--ro, opt, object, 框坐标-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 区域坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </BlackBodyRegion>
</ThermalBlackBody>

42. 配置热成像黑体参数

42.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/blackBody

42.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalBlackBody xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 热成像黑体参数, attr:version{opt, string, 未定义, range:[,]}-->
  <emissivity>
    <!--req, float, 黑体发射率, range:[0.01,1.00], step:, unit:, unitType:, desc:默认0.97,精确到小数点后2位-->0.97
  </emissivity>
  <distance>
    <!--req, float, 黑体距离, range:[0.0,10.0], step:, unit:m, unitType:长度, desc:镜头距离黑体直线距离，默认2.0m,精确到小数点后1位-->2.0
  </distance>
  <temperature>
    <!--req, float, 黑体温度, range:[30.0,50.0], step:, unit:℃, unitType:温度, desc:默认35.0℃,精确到小数点后1位）-->35.0
  </temperature>
  <CentrePoint>
    <!--req, object, 黑体中心点位置, desc:通过鼠标在热成像通道上点击黑体中心点,IE、4200下发黑体中心点位置的归一化的坐标信息（0~1000）-->
    <CalibratingCoordinates>
      <!--opt, object, 校准坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </CalibratingCoordinates>
  </CentrePoint>
  <normalizedScreenSize>
    <!--ro, req, object, 设备返回的归一化坐标倍数, desc:该参数只读-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled>
    <!--opt, bool, 是否启用黑体-->true
  </enabled>
  <blackBodyRegiontype>
    <!--opt, enum, 黑体检测区域类型, subType:string, [point#点(<CentrePoint>生效),region#框(<BlackBodyRegion>生效)]-->point
  </blackBodyRegiontype>
  <BlackBodyRegion>
    <!--opt, object, 框坐标-->
    <RegionCoordinatesList>
      <!--opt, array, 框的区域坐标点列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--opt, object, 区域坐标点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </BlackBodyRegion>
</ThermalBlackBody>

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

43. 获取温度补偿能力

43.1 命令

GET /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation/capabilities

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BodyTemperatureCompensationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温度补偿能力, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="manual, auto">
    <!--ro, req, enum, 体温温度补偿方式, subType:string, [manual#手动补偿,auto#自动补偿], attr:opt{req, string, 取值范围, range:[,]}, desc:体温温度补偿方式分为两种:手动补偿、自动补偿-->manual
  </type>
  <ManualParam>
    <!--ro, opt, object, 手动补偿配置-->
    <compensationValue min="-10.0" max="10.0">
      <!--ro, opt, float, 补偿温度, range:[-10.0,10.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </compensationValue>
    <smartCorrection min="-10.0" max="10.0">
      <!--ro, opt, float, 手动校准, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </smartCorrection>
    <environmentalTemperature min="0" max="10">
      <!--ro, opt, int, 环境参考温度, range:[0.0,10.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:手动模式可配，自动模式下只读-->1
    </environmentalTemperature>
    <temperatureCompensation opt="true,false">
      <!--ro, opt, bool, 补偿开关, attr:opt{req, string, 取值范围, range:[,]}-->true
    </temperatureCompensation>
    <environmentalTemperatureMode opt="auto,manual,precision">
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动,manual#手动,precision#高精度], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </environmentalTemperatureMode>
  </ManualParam>
  <AutoParam>
    <!--ro, opt, object, 自动补偿模式, desc:type="auto"-->
    <compensationValue min="-10.0" max="10.0">
      <!--ro, opt, float, 补偿温度, range:[-10.0,10.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </compensationValue>
    <smartCorrection min="-10.0" max="10.0">
      <!--ro, opt, float, 智能校准, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:℃, unitType:温度-->0.000
    </environmentalTemperature>
    <temperatureCompensation opt="true,false">
      <!--ro, opt, bool, 补偿开关, attr:opt{req, string, 取值范围, range:[,]}-->true
    </temperatureCompensation>
    <environmentalTemperatureMode opt="auto,manual,precision">
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动,manual#手动,precision#高精度], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </environmentalTemperatureMode>
  </AutoParam>
</BodyTemperatureCompensationCap>

44. 获取温度补偿参数

44.1 命令

GET /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BodyTemperatureCompensationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温度补偿配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <type>
    <!--ro, req, enum, 体温温度补偿方式, subType:string, [manual#手动补偿,auto#自动补偿], desc:体温温度补偿方式分为两种:手动补偿、自动补偿-->auto
  </type>
  <ManualParam>
    <!--ro, opt, object, 手动校准参数, desc:手动校准参数-->
    <compensationValue>
      <!--ro, opt, float, 补偿温度, range:[-10.0,10.0], step:0.1, unit:℃, unitType:温度, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿温度-->-10
    </compensationValue>
    <smartCorrection>
      <!--ro, opt, float, 手动校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:手动校准，范围根据设备实际情况而定-->2.00
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--ro, opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿开关-->true
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </ManualParam>
  <AutoParam>
    <!--ro, opt, object, 自动补偿参数信息, desc:自动补偿参数信息-->
    <compensationValue>
      <!--ro, opt, float, 补偿温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿温度-->38.00
    </compensationValue>
    <smartCorrection>
      <!--ro, opt, float, 智能校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:智能校准-->3.00
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--ro, opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿开关-->false
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--ro, opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:string,"环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </AutoParam>
</BodyTemperatureCompensationCap>

45. 配置温度补偿参数

45.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/bodyTemperatureCompensation

45.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BodyTemperatureCompensationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 温度补偿配置信息, attr:version{opt, string, 未定义, range:[,]}-->
  <type>
    <!--req, enum, 体温温度补偿方式, subType:string, [manual#手动补偿,auto#自动补偿], desc:体温温度补偿方式分为两种:手动补偿、自动补偿-->auto
  </type>
  <ManualParam>
    <!--opt, object, 手动校准参数, desc:手动校准参数-->
    <compensationValue>
      <!--opt, float, 补偿温度, range:[-10.0,10.0], step:0.1, unit:℃, unitType:温度, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿温度-->-10
    </compensationValue>
    <smartCorrection>
      <!--opt, float, 手动校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:手动校准，范围根据设备实际情况而定-->2.00
    </smartCorrection>
    <environmentalTemperature>
      <!--opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:补偿开关-->true
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,manual}, desc:环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </ManualParam>
  <AutoParam>
    <!--opt, object, 自动补偿参数信息, desc:自动补偿参数信息-->
    <compensationValue>
      <!--ro, opt, float, 补偿温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿温度-->38.00
    </compensationValue>
    <smartCorrection>
      <!--opt, float, 智能校准, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:智能校准-->3.00
    </smartCorrection>
    <environmentalTemperature>
      <!--ro, opt, float, 环境参考温度, range:[,], step:, unit:, unitType:, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:环境参考温度-->38.00
    </environmentalTemperature>
    <temperatureCompensation>
      <!--opt, bool, 补偿开关, dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:补偿开关-->false
    </temperatureCompensation>
    <environmentalTemperatureMode>
      <!--opt, enum, 环境温度模式, subType:string, [auto#自动模式,manual#手动模式,precision#高精度], dep:and,{$.BodyTemperatureCompensationCap.type,eq,auto}, desc:环境温度模式,auto自动模式,manual手动模式,precision高精度-->auto
    </environmentalTemperatureMode>
  </AutoParam>
</BodyTemperatureCompensationCap>

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->/ISAPI/xxxx
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

46. 获取全屏测温参数

46.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam

46.2 输入参数

无

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PixelToPixelParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 全屏测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <maxFrameRate>
    <!--ro, opt, int, 最大帧率, range:[,], step:, unit:, unitType:-->0
  </maxFrameRate>
  <reflectiveEnable>
    <!--ro, opt, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--ro, opt, float, 反射温度, range:[,], step:, unit:, unitType:, desc:精确到小数后一位-->0.0
  </reflectiveTemperature>
  <emissivity>
    <!--ro, opt, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:, desc:精确到小数后两位-->0.00
  </emissivity>
  <distance>
    <!--ro, req, int, 距离, range:[0,10000], step:, unit:m, unitType:长度-->0
  </distance>
  <refreshInterval>
    <!--ro, opt, int, 全屏测温映射表间隔, range:[1,500], step:, unit:, unitType:, desc:刷新一次映射表的测温次数-->1
  </refreshInterval>
  <distanceUnit>
    <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <temperatureDataLength>
    <!--ro, opt, enum, 测温数据长度, subType:int, [2#2,4#4]-->2
  </temperatureDataLength>
  <JpegPictureWithAppendData>
    <!--ro, opt, object, 抓热图参数配置-->
    <jpegPicEnabled>
      <!--ro, opt, bool, 抓热图设备是否返回jpeg图片-->true
    </jpegPicEnabled>
    <visiblePicEnabled>
      <!--ro, opt, bool, 抓热图设备是否返回可见光图片-->true
    </visiblePicEnabled>
    <captureMode>
      <!--ro, opt, enum, 抓图模式, subType:string, [standard#标准模式]-->standard
    </captureMode>
    <rulesOverlayEnabled>
      <!--ro, opt, bool, 抓热图是否叠加测温规则使能-->true
    </rulesOverlayEnabled>
    <visiblePicResolution>
      <!--ro, opt, enum, 可见光图片分辨率, subType:string, [600*800#600*800,1200*1600#1200*1600]-->600*800
    </visiblePicResolution>
    <thermalPicResolution>
      <!--ro, opt, enum, 热成像图片分辨率, subType:string, [160*120#160*120,640*480#640*480]-->160*120
    </thermalPicResolution>
  </JpegPictureWithAppendData>
</PixelToPixelParam>

47. 配置全屏测温参数

47.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/thermometry/pixelToPixelParam

47.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PixelToPixelParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 全屏测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <maxFrameRate>
    <!--opt, int, 最大帧率, range:[,], step:, unit:, unitType:-->0
  </maxFrameRate>
  <reflectiveEnable>
    <!--opt, bool, 反射温度使能-->true
  </reflectiveEnable>
  <reflectiveTemperature>
    <!--opt, float, 反射温度, range:[,], step:, unit:, unitType:, desc:精确到小数后一位-->0.0
  </reflectiveTemperature>
  <emissivity>
    <!--opt, float, 发射率, range:[0.00,1.00], step:, unit:, unitType:, desc:精确到小数后两位-->0.00
  </emissivity>
  <distance>
    <!--req, int, 距离, range:[0,10000], step:, unit:m, unitType:长度-->0
  </distance>
  <refreshInterval>
    <!--opt, int, 全屏测温映射表间隔, range:[1,500], step:, unit:, unitType:, desc:刷新一次映射表的测温次数-->1
  </refreshInterval>
  <distanceUnit>
    <!--opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
  <temperatureDataLength>
    <!--opt, enum, 测温数据长度, subType:int, [2#2,4#4]-->2
  </temperatureDataLength>
  <JpegPictureWithAppendData>
    <!--opt, object, 抓热图参数配置-->
    <jpegPicEnabled>
      <!--opt, bool, 抓热图设备是否返回jpeg图片-->true
    </jpegPicEnabled>
    <visiblePicEnabled>
      <!--opt, bool, 抓热图设备是否返回可见光图片-->true
    </visiblePicEnabled>
    <captureMode>
      <!--opt, enum, 抓图模式, subType:string, [standard#标准模式]-->standard
    </captureMode>
    <rulesOverlayEnabled>
      <!--opt, bool, 抓热图是否叠加测温规则使能-->true
    </rulesOverlayEnabled>
    <visiblePicResolution>
      <!--opt, enum, 可见光图片分辨率, subType:string, [600*800#600*800,1200*1600#1200*1600]-->600*800
    </visiblePicResolution>
    <thermalPicResolution>
      <!--opt, enum, 热成像图片分辨率, subType:string, [160*120#160*120,640*480#640*480]-->160*120
    </thermalPicResolution>
  </JpegPictureWithAppendData>
</PixelToPixelParam>

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

48. 获取热成像码流参数

48.1 命令

GET /ISAPI/Thermal/channels/<channelID>/streamParam

48.2 输入参数

无

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalStreamParamCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <videoCodingType>
    <!--ro, opt, enum, 码流数据编解码类型, subType:string, [thermal_raw_data#热成像裸数据,pixel-to-pixel_thermometry_data#全屏测温数据,real-time_raw_data#实时裸数据], desc:thermal_raw_data: 热成像裸数据,是指机芯输出的原始数据;pixel-to-pixel_thermometry_data: 全屏测温数据,是指对原始数据经过算法处理后的温度数据;real-time_raw_data: 实时裸数据,主要用于第三方进行二次开发,可以保证裸数据的实时性和连续性,默认thermal_raw_data-->thermal_raw_data
  </videoCodingType>
</ThermalStreamParamCap>

49. 配置热成像码流参数

49.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/streamParam

49.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalStreamParamCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <videoCodingType>
    <!--opt, enum, 码流数据编解码类型, subType:string, [thermal_raw_data#热成像裸数据,pixel-to-pixel_thermometry_data#全屏测温数据,real-time_raw_data#实时裸数据], desc:thermal_raw_data: 热成像裸数据,是指机芯输出的原始数据;pixel-to-pixel_thermometry_data: 全屏测温数据,是指对原始数据经过算法处理后的温度数据;real-time_raw_data: 实时裸数据,主要用于第三方进行二次开发,可以保证裸数据的实时性和连续性,默认thermal_raw_data-->thermal_raw_data
  </videoCodingType>
</ThermalStreamParamCap>

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

50. 获取手动测温单通道参数能力

50.1 命令

GET /ISAPI/Thermal/manualThermometry/channels/<channelID>/capabilities

50.2 输入参数

无

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 手动测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="0" max="10">
    <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </id>
  <currentTime>
    <!--ro, req, datetime, 当前UTC时间(只读)-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperatureUnit opt="degreeCentigrade, degreeFahrenheit, degreeKelvin">
    <!--ro, req, enum, 温度单位(只读), subType:string, [degreeCentigrade#摄氏度（℃）,degreeFahrenheit#华氏度（华氏度）,degreeKelvin#尔文(K)], attr:opt{req, string, 取值范围, range:[,]}-->degreeKelvin
  </temperatureUnit>
  <normalizedScreenSize>
    <!--ro, req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRuleList>
    <!--ro, opt, array, 测温规则列表, subType:object, range:[,]-->
    <ThermometryRule>
      <!--ro, opt, object, 测温规则-->
      <ruleId min="1" max="10">
        <!--ro, req, int, 规则名称, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </ruleId>
      <enabled opt="true, false">
        <!--ro, req, bool, 是否使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <name min="0" max="32">
        <!--ro, req, string, 规则名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </name>
      <type opt="point, region, line">
        <!--ro, req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线], attr:opt{req, string, 取值范围, range:[,]}-->point
      </type>
      <Point>
        <!--ro, opt, object, 点测温-->
        <TempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.0
        </TempValue>
        <CalibratingCoordinates>
          <!--ro, opt, object, 点坐标, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--ro, opt, object, 框测温, desc:显示最高温, 最低温, 平均温, 温差-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <averageTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </averageTempValue>
        <diffTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--ro, opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--ro, opt, object, 框的区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <Line>
        <!--ro, opt, object, 线测温, desc:显示最高温, 最低温-->
        <highestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </highestTempValue>
        <lowestTempValue min="-40.0" max="1000.0">
          <!--ro, opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
        </lowestTempValue>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Line>
    </ThermometryRule>
  </ThermometryRuleList>
</ManualThermometry>

51. 获取手动测温单通道基本参数能力

51.1 命令

GET /ISAPI/Thermal/manualThermBasic/channels/<channelID>/capabilities

51.2 输入参数

无

51.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermBasic xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="0" max="10">
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </id>
  <distance min="0" max="10000">
    <!--ro, req, int, 距离, range:[,], step:, unit:m, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </distance>
  <emissivity min="0.01" max="1.00">
    <!--ro, req, float, 发射率, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
  </emissivity>
  <distanceUnit opt="meter,feet,centimeter">
    <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米], attr:opt{req, string, 取值范围, range:[,]}-->meter
  </distanceUnit>
</ManualThermBasic>

52. 获取手动测温单通道基本参数

52.1 命令

GET /ISAPI/Thermal/manualThermBasic/channels/<channelID>

52.2 输入参数

无

52.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermBasic xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <distance>
    <!--ro, req, int, 距离, range:[,], step:, unit:m, unitType:长度-->0
  </distance>
  <emissivity>
    <!--ro, req, float, 发射率, range:[,], step:, unit:, unitType:-->0.000
  </emissivity>
  <distanceUnit>
    <!--ro, opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
</ManualThermBasic>

53. 配置手动测温单通道基本参数

53.1 命令

PUT /ISAPI/Thermal/manualThermBasic/channels/<channelID>

53.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermBasic xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 基本参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 通道号, range:[,], step:, unit:, unitType:-->0
  </id>
  <distance>
    <!--req, int, 距离, range:[,], step:, unit:m, unitType:长度-->0
  </distance>
  <emissivity>
    <!--req, float, 发射率, range:[,], step:, unit:, unitType:-->0.000
  </emissivity>
  <distanceUnit>
    <!--opt, enum, 距离单位, subType:string, [meter#米,feet#英尺,centimeter#厘米]-->meter
  </distanceUnit>
</ManualThermBasic>

53.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

54. 配置手动测温单通道参数

54.1 命令

PUT /ISAPI/Thermal/manualThermometry/channels/<channelID>

54.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualThermometry xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 手动测温参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 索引, range:[,], step:, unit:, unitType:-->0
  </id>
  <currentTime>
    <!--req, datetime, 当前UTC时间(只读)-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperatureUnit>
    <!--req, enum, 温度单位(只读), subType:string, [degreeCentigrade#摄氏度（℃）,degreeFahrenheit#华氏度（华氏度）,degreeKelvin#尔文(K)]-->degreeKelvin
  </temperatureUnit>
  <normalizedScreenSize>
    <!--req, object, 坐标归一化-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ThermometryRuleList>
    <!--opt, array, 测温规则列表, subType:object, range:[,]-->
    <ThermometryRule>
      <!--opt, object, 测温规则-->
      <ruleId>
        <!--req, int, 规则名称, range:[,], step:, unit:, unitType:-->0
      </ruleId>
      <enabled>
        <!--req, bool, 是否使能-->true
      </enabled>
      <name>
        <!--req, string, 规则名称, range:[,]-->test
      </name>
      <type>
        <!--req, enum, 规则标定类型, subType:string, [point#点,region#框,line#线]-->point
      </type>
      <Point>
        <!--opt, object, 点测温-->
        <TempValue>
          <!--opt, float, 温度值, range:[-40.0,1000.0], step:, unit:, unitType:-->0.0
        </TempValue>
        <CalibratingCoordinates>
          <!--opt, object, 点坐标, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </CalibratingCoordinates>
      </Point>
      <Region>
        <!--opt, object, 框测温, desc:显示最高温, 最低温, 平均温, 温差-->
        <highestTempValue>
          <!--opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <averageTempValue>
          <!--opt, float, 平均温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </averageTempValue>
        <diffTempValue>
          <!--opt, float, 温差, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </diffTempValue>
        <RegionCoordinatesList>
          <!--opt, array, 框的区域坐标点列表, subType:object, range:[3,10]-->
          <RegionCoordinates>
            <!--opt, object, 框的区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
      <Line>
        <!--opt, object, 线测温, desc:显示最高温, 最低温-->
        <highestTempValue>
          <!--opt, float, 最高温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </highestTempValue>
        <lowestTempValue>
          <!--opt, float, 最低温, range:[-40.0,1000.0], step:, unit:, unitType:-->0.000
        </lowestTempValue>
        <RegionCoordinatesList>
          <!--opt, array, 区域坐标列表, subType:object, range:[0,2]-->
          <RegionCoordinates>
            <!--opt, object, 区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Line>
    </ThermometryRule>
  </ThermometryRuleList>
</ManualThermometry>

54.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

55. 配置点击测温初始化

55.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/clickToThermometry/initialization

55.2 输入参数

无

55.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

56. 配置点击测温规则参数

56.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/clickToThermometry/rules/<ruleID>?format=json

56.2 输入参数

{
    "ClickToThermometryRule": {
    /*opt, object, 点击测温规则参数*/
        "Point": {
        /*opt, object, 点测温*/
            "positionX":  0.123,
            /*req, float, 点测温坐标, range:[0.000,1.000], step:, unit:, unitType:*/
            "positionY":  0.123
            /*req, float, 点测温坐标, range:[0.000,1.000], step:, unit:, unitType:*/
        }
    }
}

56.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

57. 获取全部测温规则温度信息

57.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/rulesTemperatureInfo?format=json

57.2 输入参数

无

57.3 输出参数

{
    "ThermometryRulesTemperatureInfoList": {
    /*ro, opt, object, 测温规则温度信息列表*/
        "ThermometryRulesTemperatureInfo": [
        /*ro, opt, array, 测温规则温度信息, subType:object, range:[,]*/
            {
                "id":  1,
                /*ro, opt, int, 规则ID, range:[,], step:, unit:, unitType:*/
                "maxTemperature":  30.1,
                /*ro, req, float, 最高温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
                "minTemperature":  30.1,
                /*ro, req, float, 最低温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
                "averageTemperature":  30.1,
                /*ro, req, float, 平均温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
                "MaxTemperaturePoint": {
                /*ro, opt, object, 最高温位置*/
                    "positionX":  0.123,
                    /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                    "positionY":  0.123
                    /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                },
                "MinTemperaturePoint": {
                /*ro, opt, object, 最低温位置*/
                    "positionX":  0.123,
                    /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                    "positionY":  0.123
                    /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
                },
                "isFreezedata":  false
                /*ro, opt, bool, 是否数据冻结*/
            }
        ]
    }
}

58. 获取单个测温规则温度信息

58.1 命令

GET /ISAPI/Thermal/channels/<channelID>/thermometry/<SID>/rulesTemperatureInfo/<ruleID>?format=json

58.2 输入参数

无

58.3 输出参数

{
    "ThermometryRulesTemperatureInfo": {
    /*ro, opt, object, 测温规则温度信息*/
        "id":  1,
        /*ro, opt, int, 规则ID, range:[,], step:, unit:, unitType:*/
        "maxTemperature":  30.1,
        /*ro, req, float, 最高温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
        "minTemperature":  30.1,
        /*ro, req, float, 最低温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
        "averageTemperature":  30.1,
        /*ro, req, float, 平均温, range:[,], step:, unit:℃, unitType:温度, desc:精确到小数点后1位*/
        "MaxTemperaturePoint": {
        /*ro, opt, object, 最高温位置*/
            "positionX":  0.123,
            /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
            "positionY":  0.123
            /*ro, req, float, 最高温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
        },
        "MinTemperaturePoint": {
        /*ro, opt, object, 最低温位置*/
            "positionX":  0.123,
            /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
            "positionY":  0.123
            /*ro, req, float, 最低温位置坐标, range:[0.000,1.000], step:, unit:, unitType:, desc:坐标参考原点为图像左上角*/
        },
        "isFreezedata":  false
        /*ro, opt, bool, 是否数据冻结*/
    }
}

59. 获取通道裸码流能力

59.1 命令

GET /ISAPI/Streaming/channels/<channelID>/bareDataOverlay/capabilities

59.2 输入参数

无

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BareDataOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <intervalTime min="1" max="5" def="3">
    <!--ro, req, int, 间隔时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </intervalTime>
</BareDataOverlay>

60. 获取通道裸码流参数

60.1 命令

GET /ISAPI/Streaming/channels/<channelID>/bareDataOverlay

60.2 输入参数

无

60.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BareDataOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <intervalTime>
    <!--ro, req, int, 间隔时间, range:[,], step:, unit:s, unitType:时间-->1
  </intervalTime>
</BareDataOverlay>

61. 配置通道裸码流参数

61.1 命令

PUT /ISAPI/Streaming/channels/<channelID>/bareDataOverlay

61.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BareDataOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <intervalTime>
    <!--req, int, 间隔时间, range:[,], step:, unit:s, unitType:时间-->1
  </intervalTime>
</BareDataOverlay>

61.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

62. 获取相机电源能力

62.1 命令

GET /ISAPI/Thermal/Power/capabilities

62.2 输入参数

无

62.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Power xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 相机电源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <powerSwitch>
    <!--ro, req, bool, 开关使能, desc:true为开启, 重载云台设备将唤醒为正常工作状态;false为关闭, 重载云台设备将处于低消耗的睡眠状态-->true
  </powerSwitch>
  <batteryPower min="1" max="100">
    <!--ro, opt, int, 电池电量百分比, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </batteryPower>
</Power>

63. 获取相机电源配置

63.1 命令

GET /ISAPI/Thermal/Power

63.2 输入参数

无

63.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Power xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 相机电源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <powerSwitch>
    <!--ro, req, bool, 开关使能, desc:true为开启, 重载云台设备将唤醒为正常工作状态;false为关闭, 重载云台设备将处于低消耗的睡眠状态-->true
  </powerSwitch>
  <batteryPower>
    <!--ro, opt, int, 电池电量百分比, range:[1,100], step:, unit:, unitType:-->1
  </batteryPower>
</Power>

64. 设置相机电源配置

64.1 命令

PUT /ISAPI/Thermal/Power

64.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Power xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 相机电源能力, attr:version{req, string, 协议版本, range:[,]}-->
  <powerSwitch>
    <!--req, bool, 开关使能, desc:true为开启, 重载云台设备将唤醒为正常工作状态;false为关闭, 重载云台设备将处于低消耗的睡眠状态-->true
  </powerSwitch>
  <batteryPower>
    <!--opt, int, 电池电量百分比, range:[1,100], step:, unit:, unitType:-->1
  </batteryPower>
</Power>

64.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

65. 获取单个温湿度参数能力

65.1 命令

GET /ISAPI/Thermal/TempHumi/<channelID>/capabilities

65.2 输入参数

无

65.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TempHumi xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温湿度参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id min="0" max="10">
    <!--ro, opt, int, 代表着对应的通道, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </id>
  <currentTime>
    <!--ro, req, datetime, 当前时间-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperature min="-273.00" max="1000.00">
    <!--ro, opt, float, 设备环境温度, range:[-273.00,1000.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后两位-->0.00
  </temperature>
  <humidity min="0" max="100.00">
    <!--ro, opt, float, 设备环境湿度, range:[0.00,100.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后两位-->0.00
  </humidity>
</TempHumi>

66. 获取单个温湿度参数

66.1 命令

GET /ISAPI/Thermal/TempHumi/<channelID>

66.2 输入参数

无

66.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TempHumi xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温湿度参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, opt, int, 代表着对应的通道, range:[,], step:, unit:, unitType:-->0
  </id>
  <currentTime>
    <!--ro, req, datetime, 当前时间-->1970-01-01T00:00:00+08:00
  </currentTime>
  <temperature>
    <!--ro, opt, float, 设备环境温度, range:[-273.00,1000.00], step:, unit:, unitType:, desc:精确到小数点后两位-->0.00
  </temperature>
  <humidity>
    <!--ro, opt, float, 设备环境湿度, range:[0.00,100.00], step:, unit:, unitType:, desc:精确到小数点后两位-->0.00
  </humidity>
</TempHumi>

67. 获取火点屏蔽区域配置能力

67.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask/capabilities

67.2 输入参数

无

67.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 火点屏蔽区域能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 屏蔽区域功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FireShieldMaskRegionList size="24">
    <!--ro, opt, array, 火点屏蔽区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <FireShieldMaskRegion>
      <!--ro, opt, object, 单个火点屏蔽区域-->
      <id min="1" max="24">
        <!--ro, req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <showEnabled>
        <!--ro, req, bool, 区域显示使能(该节点为只读-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个火点屏蔽区域使能-->true
      </enabled>
      <maskName min="0" max="32">
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </maskName>
      <shieldZoom min="0" max="32">
        <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </shieldZoom>
      <regionType opt="quadrilateral">
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形], attr:opt{req, string, 取值范围, range:[,]}-->quadrilateral
      </regionType>
      <maskType opt="gray,red,yellow,blue,orange,green,transparent,half-transparent,mosaic">
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克], attr:opt{req, string, 取值范围, range:[,]}-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <drawingMode opt="inFOV,outFOV,inPanoramaMap">
        <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], attr:opt{req, string, 取值范围, range:[,]}, desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
      </drawingMode>
      <vertexId min="1" max="4">
        <!--ro, opt, int, 顶点序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </vertexId>
    </FireShieldMaskRegion>
  </FireShieldMaskRegionList>
  <shieldAreaTransparency opt="no_transparent,transparent,semi_transparent">
    <!--ro, opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#不透明,transparent#透明,semi_transparent#半透明], attr:opt{req, string, 取值范围, range:[,]}-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled opt="true,false">
    <!--ro, opt, bool, 码流叠加屏蔽区域使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayShieldAreaEnabled>
</FireShieldMask>

68. 获取火点屏蔽区域配置

68.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask

68.2 输入参数

无

68.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 屏蔽区域功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FireShieldMaskRegionList>
    <!--ro, opt, array, 火点屏蔽区域列表, subType:object, range:[,]-->
    <FireShieldMaskRegion>
      <!--ro, opt, array, 单个火点屏蔽区域, subType:object, range:[,]-->
      <id>
        <!--ro, req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--ro, req, bool, 区域显示使能-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个火点屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--ro, opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
      </shieldZoom>
      <regionType>
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <drawingMode>
        <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
      </drawingMode>
    </FireShieldMaskRegion>
  </FireShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--ro, opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#不透明,transparent#透明,semi_transparent#半透明]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--ro, opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</FireShieldMask>

69. 配置火点屏蔽区域配置

69.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireShieldMask

69.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 屏蔽区域功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <FireShieldMaskRegionList>
    <!--opt, array, 火点屏蔽区域列表, subType:object, range:[,]-->
    <FireShieldMaskRegion>
      <!--opt, array, 单个火点屏蔽区域, subType:object, range:[,]-->
      <id>
        <!--req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--req, bool, 区域显示使能-->true
      </showEnabled>
      <enabled>
        <!--req, bool, 单个火点屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
      </shieldZoom>
      <regionType>
        <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <drawingMode>
        <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
      </drawingMode>
    </FireShieldMaskRegion>
  </FireShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#不透明,transparent#透明,semi_transparent#半透明]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</FireShieldMask>

69.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

70. 删除火点屏蔽区域规则单个配置

70.1 命令

DELETE /ISAPI/Thermal/channels/<channelID>/fireShieldMask/regions/<regionID>

70.2 输入参数

无

70.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

71. 获取火点屏蔽区域规则单个配置

71.1 命令

GET /ISAPI/Thermal/channels/<channelID>/fireShieldMask/regions/<regionID>

71.2 输入参数

无

71.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--ro, req, bool, 区域显示使能(该节点为只读-->true
  </showEnabled>
  <enabled>
    <!--ro, req, bool, 单个火点屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--ro, opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
  </shieldZoom>
  <regionType>
    <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <drawingMode>
    <!--ro, opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
  </drawingMode>
</FireShieldMaskRegion>

72. 配置火点屏蔽区域规则单个配置

72.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireShieldMask/regions/<regionID>

72.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FireShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个火点屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 火点屏蔽区域ID编号, range:[1,24], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--req, bool, 区域显示使能(该节点为只读-->true
  </showEnabled>
  <enabled>
    <!--req, bool, 单个火点屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--opt, int, 屏蔽倍率, range:[1,32], step:, unit:, unitType:, desc:屏蔽大于等于该值的光学变倍-->1
  </shieldZoom>
  <regionType>
    <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <drawingMode>
    <!--opt, enum, 绘制模式, subType:string, [inFOV#视角内绘制,outFOV#超视角绘制,inPanoramaMap#360度可见光拼接图], desc:360度可见光拼接图为web通过PTZ转动将不同视角下的图像拼接为360度的全景静态图片。-->inFOV
  </drawingMode>
</FireShieldMaskRegion>

72.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

73. 获取烟雾屏蔽区域配置能力

73.1 命令

GET /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/capabilities

73.2 输入参数

无

73.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟雾区域屏蔽能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 烟雾区域屏蔽功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <SmokeShieldMaskRegionList size="4">
    <!--ro, opt, array, 烟雾屏蔽区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <SmokeShieldMaskRegion>
      <!--ro, opt, object, 区域显示使能(该节点为只读-->
      <id min="1" max="4">
        <!--ro, req, int, 烟雾屏蔽区域ID编号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <showEnabled>
        <!--ro, opt, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个烟雾屏蔽区域使能-->true
      </enabled>
      <maskName min="0" max="32">
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </maskName>
      <shieldZoom min="0" max="32">
        <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </shieldZoom>
      <regionType opt="quadrilateral">
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形], attr:opt{req, string, 取值范围, range:[,]}-->quadrilateral
      </regionType>
      <maskType opt="gray,red,yellow,blue,orange,green,transparent,half-transparent,mosaic">
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克], attr:opt{req, string, 取值范围, range:[,]}-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SmokeShieldMaskRegion>
  </SmokeShieldMaskRegionList>
  <shieldAreaTransparency opt="no_transparent,transparent,semi_transparent">
    <!--ro, opt, string, 屏蔽区域透明度, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </shieldAreaTransparency>
  <displayShieldAreaEnabled opt="true,false">
    <!--ro, opt, bool, false, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayShieldAreaEnabled>
  <MultiScene>
    <!--ro, opt, object, 多场景烟火检测能力-->
    <sid min="1" max="8">
      <!--ro, opt, int, 所支持的多场景个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </sid>
    <regionNum>
      <!--ro, opt, int, 单场景最大支持4个屏蔽区域, range:[,], step:, unit:, unitType:-->0
    </regionNum>
  </MultiScene>
</SmokeShieldMask>

74. 获取烟雾屏蔽区域配置

74.1 命令

GET /ISAPI/Thermal/channels/<channelID>/SmokeShieldMask

74.2 输入参数

无

74.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 烟雾区域屏蔽能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 烟雾区域屏蔽功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <SmokeShieldMaskRegionList>
    <!--ro, opt, array, 烟雾屏蔽区域列表, subType:object, range:[,]-->
    <SmokeShieldMaskRegion>
      <!--ro, opt, object, 单个烟雾屏蔽区域-->
      <id>
        <!--ro, req, int, 烟雾屏蔽区域ID编号, range:[1,4], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--ro, req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
      </showEnabled>
      <enabled>
        <!--ro, req, bool, 单个烟雾屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
      </shieldZoom>
      <regionType>
        <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SmokeShieldMaskRegion>
  </SmokeShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--ro, opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#no_transparent,transparent#transparent,semi_transparent#semi_transparent]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--ro, opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</SmokeShieldMask>

75. 配置烟雾屏蔽区域配置

75.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/SmokeShieldMask

75.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMask xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 烟雾区域屏蔽能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 烟雾区域屏蔽功能使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高度, range:[,], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <SmokeShieldMaskRegionList>
    <!--opt, array, 烟雾屏蔽区域列表, subType:object, range:[,]-->
    <SmokeShieldMaskRegion>
      <!--opt, object, 单个烟雾屏蔽区域-->
      <id>
        <!--req, int, 烟雾屏蔽区域ID编号, range:[1,4], step:, unit:, unitType:-->0
      </id>
      <showEnabled>
        <!--req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
      </showEnabled>
      <enabled>
        <!--req, bool, 单个烟雾屏蔽区域使能-->true
      </enabled>
      <maskName>
        <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
      </maskName>
      <shieldZoom>
        <!--opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
      </shieldZoom>
      <regionType>
        <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
      </regionType>
      <maskType>
        <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
      </maskType>
      <RegionCoordinatesList>
        <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SmokeShieldMaskRegion>
  </SmokeShieldMaskRegionList>
  <shieldAreaTransparency>
    <!--opt, enum, 屏蔽区域透明度, subType:string, [no_transparent#no_transparent,transparent#transparent,semi_transparent#semi_transparent]-->no_transparent
  </shieldAreaTransparency>
  <displayShieldAreaEnabled>
    <!--opt, bool, 码流叠加屏蔽区域使能-->true
  </displayShieldAreaEnabled>
</SmokeShieldMask>

75.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

76. 删除烟雾屏蔽区域规则单个配置

76.1 命令

DELETE /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/regions/<regionID>

76.2 输入参数

无

76.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

77. 获取烟雾屏蔽区域规则单个配置

77.1 命令

GET /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/regions/<regionID>

77.2 输入参数

无

77.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 单个烟雾屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 烟雾屏蔽区域ID编号, range:[,], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--ro, req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
  </showEnabled>
  <enabled>
    <!--ro, req, bool, 单个烟雾屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--ro, opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--ro, opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
  </shieldZoom>
  <regionType>
    <!--ro, opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--ro, opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--ro, req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</SmokeShieldMaskRegion>

78. 配置烟雾屏蔽区域规则单个配置

78.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/smokeShieldMask/regions/<regionID>

78.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SmokeShieldMaskRegion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 单个烟雾屏蔽区域, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 烟雾屏蔽区域ID编号, range:[,], step:, unit:, unitType:-->0
  </id>
  <showEnabled>
    <!--req, bool, 区域显示使能, desc:区域显示使能(该节点为只读,若该使能为false则上层不显示该区域相关信息,为True则显示该区域相关信息-->true
  </showEnabled>
  <enabled>
    <!--req, bool, 单个烟雾屏蔽区域使能-->true
  </enabled>
  <maskName>
    <!--opt, string, 屏蔽区域名称长度, range:[0,32]-->test
  </maskName>
  <shieldZoom>
    <!--opt, int, 屏蔽倍率, range:[0,32], step:, unit:, unitType:-->0
  </shieldZoom>
  <regionType>
    <!--opt, enum, 区域类型, subType:string, [quadrilateral#四边形]-->quadrilateral
  </regionType>
  <maskType>
    <!--opt, enum, 屏蔽区域颜色类型, subType:string, [gray#灰色,red#红色,yellow#黄色,blue#蓝色,orange#橙色,green#绿色,transparent#透明,half-transparent#半透明,mosaic#马赛克]-->gray
  </maskType>
  <RegionCoordinatesList>
    <!--req, array, 屏蔽区域坐标点列表, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 屏蔽区域坐标点, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
</SmokeShieldMaskRegion>

78.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

79. 配置镜头聚焦变倍

79.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/fireFocusZoom

79.2 输入参数

无

79.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

80. 配置快门置位参数

80.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/shutterSetting

80.2 输入参数

无

80.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

81. 获取热成像画中画能力

81.1 命令

GET /ISAPI/Thermal/channels/<channelID>/pip/capabilities

81.2 输入参数

无

81.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalPip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像画中画参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 画中画功能使能-->true
  </enabled>
  <pipMode opt="overlap,fusion,normal" def="normal">
    <!--ro, req, enum, 画中画模式, subType:string, [overlap#叠加模式,fusion#融合模式,normal#普通模式], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->overlap
  </pipMode>
  <overlapType opt="visibleOverlapThermal,thermalOverlapVisible">
    <!--ro, req, enum, 叠加类型, subType:string, [visibleOverlapThermal#可见光叠加热成像图片,thermalOverlapVisible#热成像叠加可见光图片], attr:opt{req, string, 取值范围, range:[,]}-->visibleOverlapThermal
  </overlapType>
  <transparency min="0" max="100">
    <!--ro, opt, int, 透明度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </transparency>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PipRegion>
    <!--ro, opt, object, 画中画区域位置-->
    <RegionCoordinatesList size="4">
      <!--ro, opt, array, 画中画区域坐标列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 画中画区域点坐标, desc:屏幕左上角为坐标原点-->
        <positionX>
          <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </PipRegion>
  <imageFusionRatio min="0" max="100" default="75">
    <!--ro, opt, int, 图像融合比例, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 默认值, range:[,]}, desc:融合模式下生效-->1
  </imageFusionRatio>
  <borderFusionRatio min="0" max="100" default="100">
    <!--ro, opt, int, 边缘融合比例, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 默认值, range:[,]}, desc:融合模式下生效-->1
  </borderFusionRatio>
  <distance min="0.1" max="4.0">
    <!--ro, opt, int, 融合距离, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:融合模式下生效-->1
  </distance>
  <borderEnhancementSensitivity min="0" max="100" default="80">
    <!--ro, opt, int, 边缘凸显灵敏度, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 默认值, range:[,]}, desc:控制叠加细节丰富程度，灵敏度低细节少，噪声少；灵敏度高细节多，噪声大, 融合模式下生效-->1
  </borderEnhancementSensitivity>
</ThermalPip>

82. 获取热成像画中画参数

82.1 命令

GET /ISAPI/Thermal/channels/<channelID>/pip

82.2 输入参数

无

82.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalPip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热成像画中画参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 画中画功能使能-->true
  </enabled>
  <pipMode>
    <!--ro, req, enum, 画中画模式, subType:string, [overlap#叠加模式,fusion#融合模式,normal#普通模式]-->overlap
  </pipMode>
  <overlapType>
    <!--ro, req, enum, 叠加类型, subType:string, [visibleOverlapThermal#可见光叠加热成像图片,thermalOverlapVisible#热成像叠加可见光图片]-->visibleOverlapThermal
  </overlapType>
  <transparency>
    <!--ro, opt, int, 透明度, range:[0,100], step:, unit:, unitType:-->1
  </transparency>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PipRegion>
    <!--ro, opt, object, 画中画区域位置-->
    <RegionCoordinatesList>
      <!--ro, opt, array, 画中画区域坐标列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--ro, opt, object, 画中画区域点坐标, desc:屏幕左上角为坐标原点-->
        <positionX>
          <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </PipRegion>
  <imageFusionRatio>
    <!--ro, opt, int, 图像融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认75-->1
  </imageFusionRatio>
  <borderFusionRatio>
    <!--ro, opt, int, 边缘融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认100-->1
  </borderFusionRatio>
  <distance>
    <!--ro, opt, float, 融合距离, range:[0.1,4.0], step:, unit:m, unitType:长度, dep:and,{$.ThermalPip.pipMode,eq,fusion}-->0.1
  </distance>
  <borderEnhancementSensitivity>
    <!--ro, opt, int, 边缘凸显灵敏度, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:控制叠加细节丰富程度，灵敏度低细节少，噪声少；灵敏度高细节多，噪声大-->1
  </borderEnhancementSensitivity>
</ThermalPip>

83. 配置热成像画中画参数

83.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/pip

83.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ThermalPip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 热成像画中画参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 画中画功能使能-->true
  </enabled>
  <pipMode>
    <!--req, enum, 画中画模式, subType:string, [overlap#叠加模式,fusion#融合模式,normal#普通模式]-->overlap
  </pipMode>
  <overlapType>
    <!--req, enum, 叠加类型, subType:string, [visibleOverlapThermal#可见光叠加热成像图片,thermalOverlapVisible#热成像叠加可见光图片]-->visibleOverlapThermal
  </overlapType>
  <transparency>
    <!--opt, int, 透明度, range:[0,100], step:, unit:, unitType:-->1
  </transparency>
  <normalizedScreenSize>
    <!--req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <PipRegion>
    <!--opt, object, 画中画区域位置-->
    <RegionCoordinatesList>
      <!--opt, array, 画中画区域坐标列表, subType:object, range:[0,4], desc:矩形-->
      <RegionCoordinates>
        <!--opt, object, 画中画区域点坐标, desc:屏幕左上角为坐标原点-->
        <positionX>
          <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionX>
        <positionY>
          <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
        </positionY>
      </RegionCoordinates>
    </RegionCoordinatesList>
  </PipRegion>
  <imageFusionRatio>
    <!--opt, int, 图像融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认75-->1
  </imageFusionRatio>
  <borderFusionRatio>
    <!--opt, int, 边缘融合比例, range:[0,100], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:默认100-->1
  </borderFusionRatio>
  <distance>
    <!--opt, float, 融合距离, range:[0.1,4.0], step:, unit:m, unitType:长度, dep:and,{$.ThermalPip.pipMode,eq,fusion}-->0.1
  </distance>
  <borderEnhancementSensitivity>
    <!--opt, int, 边缘凸显灵敏度, range:[,], step:, unit:, unitType:, dep:and,{$.ThermalPip.pipMode,eq,fusion}, desc:控制叠加细节丰富程度，灵敏度低细节少，噪声少；灵敏度高细节多，噪声大-->1
  </borderEnhancementSensitivity>
</ThermalPip>

83.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

84. 获取智能规则显示参数能力

84.1 命令

GET /ISAPI/Thermal/channels/<channelID>/IntelRuleDisplay/capabilities

84.2 输入参数

无

84.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelRuleDisplay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 智能规则显示参数, attr:version{req, string, 协议版本, range:[,]}-->
  <fontSize opt="8, 12, 16, 20, 24" def="12">
    <!--ro, req, enum, 字体大小倍率, subType:string, [8#小,12#标准(默认值),16#大,20#超大,24#特大], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)"-->8
  </fontSize>
  <NormalRulesLine>
    <!--ro, opt, object, 正常规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R min="0" max="255">
        <!--ro, req, int, R(红色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </R>
      <G min="0" max="255">
        <!--ro, req, int, G(绿色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </G>
      <B min="0" max="255">
        <!--ro, req, int, B(蓝色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </B>
    </LineColor>
  </NormalRulesLine>
  <AlertRulesLine>
    <!--ro, opt, object, 预警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R min="0" max="255">
        <!--ro, req, int, R(红色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </R>
      <G min="0" max="255">
        <!--ro, req, int, G(绿色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </G>
      <B min="0" max="255">
        <!--ro, req, int, B(蓝色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </B>
    </LineColor>
  </AlertRulesLine>
  <AlarmRulesLine>
    <!--ro, opt, object, 报警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R min="0" max="255">
        <!--ro, req, int, R(红色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </R>
      <G min="0" max="255">
        <!--ro, req, int, G(绿色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </G>
      <B min="0" max="255">
        <!--ro, req, int, B(蓝色)值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </B>
    </LineColor>
  </AlarmRulesLine>
</IntelRuleDisplay>

85. 获取智能规则显示参数

85.1 命令

GET /ISAPI/Thermal/channels/<channelID>/IntelRuleDisplay

85.2 输入参数

无

85.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelRuleDisplay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 智能规则显示参数, attr:version{req, string, 协议版本, range:[,]}-->
  <fontSize>
    <!--ro, req, enum, 字体大小倍率, subType:string, [8#小,12#标准(默认值),16#大,20#超大,24#特大], desc:播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)"-->8
  </fontSize>
  <NormalRulesLine>
    <!--ro, opt, object, 正常规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R>
        <!--ro, req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--ro, req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--ro, req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </NormalRulesLine>
  <AlertRulesLine>
    <!--ro, opt, object, 预警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R>
        <!--ro, req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--ro, req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--ro, req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlertRulesLine>
  <AlarmRulesLine>
    <!--ro, opt, object, 报警规则线相关属性参数-->
    <LineColor>
      <!--ro, req, object, 规则线RGB颜色配置-->
      <R>
        <!--ro, req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--ro, req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--ro, req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlarmRulesLine>
</IntelRuleDisplay>

86. 配置智能规则显示参数

86.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/IntelRuleDisplay

86.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IntelRuleDisplay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 智能规则显示参数, attr:version{req, string, 协议版本, range:[,]}-->
  <fontSize>
    <!--req, enum, 字体大小倍率, subType:string, [8#小,12#标准(默认值),16#大,20#超大,24#特大], desc:播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)"-->8
  </fontSize>
  <NormalRulesLine>
    <!--opt, object, 正常规则线相关属性参数-->
    <LineColor>
      <!--req, object, 规则线RGB颜色配置-->
      <R>
        <!--req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </NormalRulesLine>
  <AlertRulesLine>
    <!--opt, object, 预警规则线相关属性参数-->
    <LineColor>
      <!--req, object, 规则线RGB颜色配置-->
      <R>
        <!--req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlertRulesLine>
  <AlarmRulesLine>
    <!--opt, object, 报警规则线相关属性参数-->
    <LineColor>
      <!--req, object, 规则线RGB颜色配置-->
      <R>
        <!--req, int, R(红色)值, range:[0,255], step:, unit:, unitType:-->0
      </R>
      <G>
        <!--req, int, G(绿色)值, range:[0,255], step:, unit:, unitType:-->0
      </G>
      <B>
        <!--req, int, B(蓝色)值, range:[0,255], step:, unit:, unitType:-->0
      </B>
    </LineColor>
  </AlarmRulesLine>
</IntelRuleDisplay>

86.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

87. 获取防灼伤参数能力

87.1 命令

GET /ISAPI/Thermal/channels/<channelID>/burningPrevention/capabilities

87.2 输入参数

无

87.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BurningPreventionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 防灼伤参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 防灼伤功能使, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <mode opt="manual,automatic">
    <!--ro, opt, enum, 模式, subType:string, [manual#手动,automatic#自动], attr:opt{req, string, 取值范围, range:[,]}-->manual
  </mode>
  <closedDuration min="1" max="10" default="0">
    <!--ro, opt, int, 保护时间, range:[1,10], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </closedDuration>
  <shutterStatus opt="closed,open">
    <!--ro, opt, enum, 挡片状态, subType:string, [open#开启,close#关闭], attr:opt{req, string, 取值范围, range:[,]}-->open
  </shutterStatus>
  <protectionMode opt="lensMovement,shutterClose">
    <!--ro, opt, enum, 保护方式, subType:string, [lensMovement#运动躲避,shutterClose#挡片遮挡], attr:opt{req, string, 取值范围, range:[,]}-->lensMovement
  </protectionMode>
  <burningRecoveryEnabled opt="true,false">
    <!--ro, opt, bool, 灼伤恢复使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </burningRecoveryEnabled>
  <movementDuration min="0" max="10" default="0">
    <!--ro, opt, int, 运动躲避保护时间, range:[,], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </movementDuration>
</BurningPreventionCap>

88. 获取防灼伤参数

88.1 命令

GET /ISAPI/Thermal/channels/<channelID>/burningPrevention

88.2 输入参数

无

88.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BurningPrevention xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 防灼伤参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 防灼伤功能使-->true
  </enabled>
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [manual#手动,automatic#自动]-->manual
  </mode>
  <closedDuration>
    <!--ro, opt, int, 保护时间, range:[1,10], step:, unit:s, unitType:时间-->1
  </closedDuration>
  <shutterStatus>
    <!--ro, opt, enum, 挡片状态, subType:string, [open#开启,close#关闭]-->open
  </shutterStatus>
  <protectionMode>
    <!--ro, opt, enum, 保护方式, subType:string, [lensMovement#运动躲避,shutterClose#挡片遮挡]-->lensMovement
  </protectionMode>
  <burningRecoveryEnabled>
    <!--ro, opt, bool, 灼伤恢复使能-->true
  </burningRecoveryEnabled>
  <movementDuration>
    <!--ro, opt, int, 运动躲避保护时间, range:[,], step:, unit:min, unitType:时间-->0
  </movementDuration>
</BurningPrevention>

89. 配置防灼伤参数

89.1 命令

PUT /ISAPI/Thermal/channels/<channelID>/burningPrevention

89.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BurningPrevention xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 防灼伤参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 防灼伤功能使-->true
  </enabled>
  <mode>
    <!--opt, enum, 模式, subType:string, [manual#手动,automatic#自动]-->manual
  </mode>
  <closedDuration>
    <!--opt, int, 保护时间, range:[1,10], step:, unit:s, unitType:时间-->1
  </closedDuration>
  <shutterStatus>
    <!--opt, enum, 挡片状态, subType:string, [open#开启,close#关闭]-->open
  </shutterStatus>
  <protectionMode>
    <!--opt, enum, 保护方式, subType:string, [lensMovement#运动躲避,shutterClose#挡片遮挡]-->lensMovement
  </protectionMode>
  <burningRecoveryEnabled>
    <!--opt, bool, 灼伤恢复使能-->true
  </burningRecoveryEnabled>
  <movementDuration>
    <!--opt, int, 运动躲避保护时间, range:[,], step:, unit:min, unitType:时间-->0
  </movementDuration>
</BurningPrevention>

89.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

90. 获取船只检测能力

90.1 命令

GET /ISAPI/Smart/shipsDetection/<channelID>/capabilities

90.2 输入参数

无

90.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ShipsDetectionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 船只检测能力, attr:version{req, string, 协议版本, range:[,]}-->
  <ShipsDetection>
    <!--ro, opt, object, 船只检测-->
    <id min="1" max="10">
      <!--ro, req, string, 规则ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <enabled opt="true, false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <lookDownUpAngle min="1" max="10">
      <!--ro, req, float, 设备俯仰角度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后一位-->0.000
    </lookDownUpAngle>
    <horizontalHeight min="1" max="10">
      <!--ro, req, float, 设备水平高度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后一位-->0.000
    </horizontalHeight>
    <normalizedScreenSize>
      <!--ro, opt, object, 归一化屏幕尺寸-->
      <normalizedScreenWidth>
        <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
      </normalizedScreenWidth>
      <normalizedScreenHeight>
        <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
      </normalizedScreenHeight>
    </normalizedScreenSize>
    <ShipsDetectionRegionList size="4">
      <!--ro, opt, array, 船只检测区域列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <ShipsDetectionRegion>
        <!--ro, opt, object, 船只检测区域-->
        <id>
          <!--ro, req, string, 区域ID, range:[,]-->test
        </id>
        <enabled>
          <!--ro, req, bool, 使能-->true
        </enabled>
        <sensitivityLevel min="1" max="100">
          <!--ro, req, int, 灵敏度参数, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </sensitivityLevel>
        <frameOverlayEnabled>
          <!--ro, req, bool, 视频是否叠加检测框-->true
        </frameOverlayEnabled>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 坐标点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
        <TriggerLineCoordinatesList size="2">
          <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <TriggerLineCoordinates>
            <!--ro, opt, object, 触发线坐标点-->
            <positionX>
              <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:-->1
            </positionY>
          </TriggerLineCoordinates>
        </TriggerLineCoordinatesList>
        <TriggerLineList size="16">
          <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <TriggerLine>
            <!--ro, opt, object, 触发线坐标点-->
            <id>
              <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:-->1
            </id>
            <enabled opt="true, false">
              <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
            </enabled>
            <sensitivity min="1" max="100" default="1">
              <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:, attr:min{opt, int, 最小值, range:[,], step:, unit:, unitType:},max{opt, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->50
            </sensitivity>
            <MinimumTargetSize>
              <!--ro, req, object, 最小目标尺寸-->
              <width min="0" max="1000" default="1">
                <!--ro, req, int, 宽, range:[1,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:52, unit:, unitType:}-->52
              </width>
              <height min="0" max="1000" default="35">
                <!--ro, req, int, 高, range:[1,1000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->35
              </height>
            </MinimumTargetSize>
            <TriggerLineCoordinatesList size="2">
              <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
              <TriggerLineCoordinates>
                <!--ro, opt, object, 触发线坐标点-->
                <positionX>
                  <!--ro, req, int, X坐标, range:[,], step:, unit:, unitType:-->1
                </positionX>
                <positionY>
                  <!--ro, req, int, Y坐标, range:[,], step:, unit:, unitType:-->1
                </positionY>
              </TriggerLineCoordinates>
            </TriggerLineCoordinatesList>
          </TriggerLine>
        </TriggerLineList>
      </ShipsDetectionRegion>
    </ShipsDetectionRegionList>
  </ShipsDetection>
  <isSupportShipsDetectionCount>
    <!--ro, opt, bool, 是否支持船只计数-->true
  </isSupportShipsDetectionCount>
  <backToSceneTime min="5" max="100" default="15">
    <!--ro, opt, int, 场景恢复时间, range:[5,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->15
  </backToSceneTime>
  <targetDetectionThreshold min="0" max="4" default="1">
    <!--ro, opt, int, 目标检测阈值, range:[0,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </targetDetectionThreshold>
  <targetGenerationSpeed min="0" max="4" default="0">
    <!--ro, opt, int, 目标生成速度, range:[0,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </targetGenerationSpeed>
  <regionEnOrExAlarmEnabled>
    <!--ro, opt, bool, 进入或离开区域报警使能-->true
  </regionEnOrExAlarmEnabled>
  <displayShipInfoOnStreamEnabled opt="true, false">
    <!--ro, opt, bool, 码流叠加船只信息, attr:opt{req, string, 取值范围, range:[,]}-->true
  </displayShipInfoOnStreamEnabled>
</ShipsDetectionCap>

91. 获取船只检测参数单个配置

91.1 命令

GET /ISAPI/Smart/shipsDetection/<channelID>

91.2 输入参数

无

91.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ShipsDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 船只检测, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 规则ID, range:[,]-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <lookDownUpAngle>
    <!--ro, req, float, 设备俯仰角度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </lookDownUpAngle>
  <horizontalHeight>
    <!--ro, req, float, 设备水平高度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </horizontalHeight>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化屏幕尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ShipsDetectionRegionList>
    <!--ro, opt, array, 船只检测区域列表, subType:object, range:[,]-->
    <ShipsDetectionRegion version="2.0">
      <!--ro, opt, object, 船只检测区域, attr:version{req, string, 协议版本, range:[,]}-->
      <id>
        <!--ro, req, string, 区域ID, range:[,]-->1
      </id>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <sensitivityLevel>
        <!--ro, req, int, 敏感度参数, range:[1,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <frameOverlayEnabled>
        <!--ro, req, bool, 视频是否叠加检测框-->true
      </frameOverlayEnabled>
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <TriggerLineCoordinatesList>
        <!--ro, opt, array, 触发线坐标点列表, subType:object, range:[0,2]-->
        <TriggerLineCoordinates>
          <!--ro, opt, object, 触发线坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </TriggerLineCoordinates>
      </TriggerLineCoordinatesList>
      <TriggerLineList>
        <!--ro, opt, array, 出发线列表, subType:object, range:[,]-->
        <TriggerLine>
          <!--ro, opt, object, 出发线-->
          <id>
            <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:-->1
          </id>
          <enabled>
            <!--ro, req, bool, 使能-->true
          </enabled>
          <sensitivity>
            <!--ro, req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
          </sensitivity>
          <MinimumTargetSize>
            <!--ro, req, object, 最小目标尺寸-->
            <width>
              <!--ro, req, int, 宽, range:[0,1000], step:, unit:, unitType:-->52
            </width>
            <height>
              <!--ro, req, int, 高, range:[0,1000], step:, unit:, unitType:-->35
            </height>
          </MinimumTargetSize>
          <TriggerLineCoordinatesList>
            <!--ro, opt, array, 触发线坐标列表, subType:object, range:[0,2]-->
            <TriggerLineCoordinates>
              <!--ro, opt, object, 触发线坐标, desc:屏幕左上角为坐标原点-->
              <positionX>
                <!--ro, req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--ro, req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </TriggerLineCoordinates>
          </TriggerLineCoordinatesList>
        </TriggerLine>
      </TriggerLineList>
    </ShipsDetectionRegion>
  </ShipsDetectionRegionList>
  <backToSceneTime>
    <!--ro, opt, int, 场景恢复时间, range:[5,100], step:, unit:, unitType:-->15
  </backToSceneTime>
  <targetDetectionThreshold>
    <!--ro, opt, int, 目标检测阈值, range:[0,4], step:, unit:, unitType:-->1
  </targetDetectionThreshold>
  <targetGenerationSpeed>
    <!--ro, opt, int, 目标生成速度, range:[0,4], step:, unit:, unitType:-->0
  </targetGenerationSpeed>
  <regionEnOrExAlarmEnabled>
    <!--ro, opt, bool, 进入或离开区域报警使能-->true
  </regionEnOrExAlarmEnabled>
  <displayShipInfoOnStreamEnabled>
    <!--ro, opt, bool, 码流叠加船只信息-->true
  </displayShipInfoOnStreamEnabled>
</ShipsDetection>

92. 配置船只检测参数单个配置

92.1 命令

PUT /ISAPI/Smart/shipsDetection/<channelID>

92.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ShipsDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 船只检测, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 规则ID, range:[,]-->1
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <lookDownUpAngle>
    <!--req, float, 设备俯仰角度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </lookDownUpAngle>
  <horizontalHeight>
    <!--req, float, 设备水平高度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位-->0.000
  </horizontalHeight>
  <normalizedScreenSize>
    <!--opt, object, 归一化屏幕尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ShipsDetectionRegionList>
    <!--opt, array, 船只检测区域列表, subType:object, range:[,]-->
    <ShipsDetectionRegion version="2.0">
      <!--opt, object, 船只检测区域, attr:version{req, string, 协议版本, range:[,]}-->
      <id>
        <!--req, string, 区域ID, range:[,]-->1
      </id>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <sensitivityLevel>
        <!--req, int, 敏感度参数, range:[1,100], step:, unit:, unitType:-->1
      </sensitivityLevel>
      <frameOverlayEnabled>
        <!--req, bool, 视频是否叠加检测框-->true
      </frameOverlayEnabled>
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--opt, object, 坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <TriggerLineCoordinatesList>
        <!--opt, array, 触发线坐标点列表, subType:object, range:[0,2]-->
        <TriggerLineCoordinates>
          <!--opt, object, 触发线坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </TriggerLineCoordinates>
      </TriggerLineCoordinatesList>
      <TriggerLineList>
        <!--opt, array, 出发线列表, subType:object, range:[,]-->
        <TriggerLine>
          <!--opt, object, 出发线-->
          <id>
            <!--req, int, 序号, range:[,], step:, unit:, unitType:-->1
          </id>
          <enabled>
            <!--req, bool, 使能-->true
          </enabled>
          <sensitivity>
            <!--req, int, 灵敏度, range:[1,100], step:, unit:, unitType:-->1
          </sensitivity>
          <MinimumTargetSize>
            <!--req, object, 最小目标尺寸-->
            <width>
              <!--req, int, 宽, range:[0,1000], step:, unit:, unitType:-->52
            </width>
            <height>
              <!--req, int, 高, range:[0,1000], step:, unit:, unitType:-->35
            </height>
          </MinimumTargetSize>
          <TriggerLineCoordinatesList>
            <!--opt, array, 触发线坐标列表, subType:object, range:[0,2]-->
            <TriggerLineCoordinates>
              <!--opt, object, 触发线坐标, desc:屏幕左上角为坐标原点-->
              <positionX>
                <!--req, int, X坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionX>
              <positionY>
                <!--req, int, Y坐标, range:[0,1000], step:, unit:, unitType:-->1
              </positionY>
            </TriggerLineCoordinates>
          </TriggerLineCoordinatesList>
        </TriggerLine>
      </TriggerLineList>
    </ShipsDetectionRegion>
  </ShipsDetectionRegionList>
  <backToSceneTime>
    <!--opt, int, 场景恢复时间, range:[5,100], step:, unit:, unitType:-->15
  </backToSceneTime>
  <targetDetectionThreshold>
    <!--opt, int, 目标检测阈值, range:[0,4], step:, unit:, unitType:-->1
  </targetDetectionThreshold>
  <targetGenerationSpeed>
    <!--opt, int, 目标生成速度, range:[0,4], step:, unit:, unitType:-->0
  </targetGenerationSpeed>
  <regionEnOrExAlarmEnabled>
    <!--opt, bool, 进入或离开区域报警使能-->true
  </regionEnOrExAlarmEnabled>
  <displayShipInfoOnStreamEnabled>
    <!--opt, bool, 码流叠加船只信息-->true
  </displayShipInfoOnStreamEnabled>
</ShipsDetection>

92.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

93. 获取船只检测联动配置

93.1 命令

GET /ISAPI/Event/triggers/shipsDetection-<channelID>

93.2 输入参数

无

93.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号, range:[,], desc:由事件类型-通道号组成-->shipsDetection-1
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->shipsDetection
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->test
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->0
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, object, 联动方式-->
    <EventTriggerNotification>
      <!--ro, opt, array, 索引, subType:object, range:[,]-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->recurring
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--ro, opt, string, IO输出端口ID, range:[,]-->1
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--ro, opt, string, 动态IO输出端口ID, range:[,]-->1
      </dynOutputIOPortID>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--ro, opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

94. 配置船只检测联动配置

94.1 命令

PUT /ISAPI/Event/triggers/shipsDetection-<channelID>

94.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 联动配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 序号, range:[,], desc:由事件类型-通道号组成-->shipsDetection-1
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->shipsDetection
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->1
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->test
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->0
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, object, 联动方式-->
    <EventTriggerNotification>
      <!--opt, array, 索引, subType:object, range:[,]-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [email#电子邮件,IM#即时通讯,IO#IO输出,syslog#系统日志,HTTP#HTTP上报,FTP#FTP上报,beep#蜂鸣器,ptz#云台,record#录像,monitorAlarm#监视器报警,center#上传中心,LightAudioAlarm#声光报警,focus#聚焦,trace#跟踪,whiteLight#白光灯,audio#声音]-->email
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->recurring
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <outputIOPortID>
        <!--opt, string, IO输出端口ID, range:[,]-->1
      </outputIOPortID>
      <dynOutputIOPortID>
        <!--opt, string, 动态IO输出端口ID, range:[,]-->1
      </dynOutputIOPortID>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->test
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航,target#目标]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <presetID>
        <!--opt, int, 预置点号, range:[,], step:, unit:, unitType:-->0
      </presetID>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

94.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

95. 获取船只检测单个通道时间布防配置

95.1 命令

GET /ISAPI/Event/schedules/shipsDetections/shipsDetection-<channelID>

95.2 输入参数

无

95.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 事件类型-通道号, range:[,]-->1
  </id>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,headRiseRate#抬头率事件,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,objectsThrownDetection#高空抛物事件检测,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vacantSeatRate#空座率事件,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测]-->shipsDetection
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, int, 星期, range:[1,7], step:, unit:, unitType:-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间范围-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

96. 配置船只检测单个通道时间布防配置

96.1 命令

PUT /ISAPI/Event/schedules/shipsDetections/shipsDetection-<channelID>

96.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 布防计划, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 事件类型-通道号, range:[,]-->test
  </id>
  <eventType>
    <!--req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,headRiseRate#抬头率事件,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,objectsThrownDetection#高空抛物事件检测,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vacantSeatRate#空座率事件,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测]-->ADAS
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入端口ID, range:[,]-->1
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出端口ID, range:[,]-->1
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, int, 星期, range:[1,7], step:, unit:, unitType:-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间范围-->
        <beginTime>
          <!--req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

96.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

97. 配置清空船只计数信息

97.1 命令

PUT /ISAPI/Smart/shipsDetectionCount/<channelID>/resetCount

97.2 输入参数

无

97.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


设备通用功能

1. 获取设备系统能力

1.1 命令

GET /ISAPI/System/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DeviceCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 设备系统能力, attr:version{opt, string, 版本信息, range:[,]}-->
  <isSupportPreview>
    <!--ro, opt, bool, 是否支持预览-->true
  </isSupportPreview>
  <isSupportSystemMaintain>
    <!--ro, opt, bool, 是否支持系统维护, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportSystemMaintain>
  <isSupportReboot>
    <!--ro, opt, bool, 是否支持重启, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportReboot>
  <isSupportFactoryReset>
    <!--ro, opt, bool, 是否支持恢复出厂设置, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportFactoryReset>
  <isSupportConfigurationData>
    <!--ro, opt, bool, 交通产线必填且为true, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportConfigurationData>
  <isSupportUpdatefirmware>
    <!--ro, opt, bool, 是否支持设备升级, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportUpdatefirmware>
  <isSupportDeviceInfo>
    <!--ro, opt, bool, 是否支持获取设备信息, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportDeviceInfo>
  <isSupportTime>
    <!--ro, opt, bool, 表示是否支持时间配置, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportTime>
  <SysCap>
    <!--ro, opt, object, 系统能力-->
    <isSupportDst>
      <!--ro, opt, bool, 是否支持夏令时-->true
    </isSupportDst>
    <NetworkCap>
      <!--ro, opt, object, 网络能力, desc:接口:/ISAPI/System/Network/capabilities-->
      <isSupportWireless>
        <!--ro, req, bool, 是否支持无线网-->true
      </isSupportWireless>
      <isSupportWAN>
        <!--ro, opt, bool, 是否支持广域网-->true
      </isSupportWAN>
      <isSupportPPPoE>
        <!--ro, req, bool, 是否支持以太网点对点协议-->true
      </isSupportPPPoE>
      <isSupportBond>
        <!--ro, req, bool, 是否支持网卡绑定-->true
      </isSupportBond>
      <isSupport802_1x>
        <!--ro, req, bool, 是否支持802.1x协议-->true
      </isSupport802_1x>
      <isSupportNtp>
        <!--ro, opt, bool, 是否支持网络时间协议-->true
      </isSupportNtp>
      <isSupportFtp>
        <!--ro, opt, bool, 是否支持文件传输协议-->true
      </isSupportFtp>
      <isSupportUpnp>
        <!--ro, opt, bool, 是否支持通用即用即插协议-->true
      </isSupportUpnp>
      <isSupportPNP>
        <!--ro, opt, bool, 是否支持即用即插协议-->true
      </isSupportPNP>
      <isSupportDdns>
        <!--ro, opt, bool, 是否支持动态域名服务-->true
      </isSupportDdns>
      <isSupportHttps>
        <!--ro, opt, bool, 是否支持超文本传输安全协议-->true
      </isSupportHttps>
      <isSupport28181>
        <!--ro, opt, bool, 是否支持GB28181协议-->true
      </isSupport28181>
      <SnmpCap>
        <!--ro, opt, object, 简单网络管理协议能力-->
        <isSupport>
          <!--ro, req, bool, 是否支持简单网络管理协议-->true
        </isSupport>
      </SnmpCap>
      <isSupportExtNetCfg>
        <!--ro, opt, bool, whether supports configuring extended network parameter-->true
      </isSupportExtNetCfg>
      <isSupportIPFilter>
        <!--ro, opt, bool, 是否支持IP过滤-->true
      </isSupportIPFilter>
      <isSupportSSH opt="true,false">
        <!--ro, opt, bool, 是否支持SSH, attr:opt{opt, string, 未定义, range:[,]}-->true
      </isSupportSSH>
      <isSupportNetPreviewStrategy>
        <!--ro, opt, bool, 网络预览策略-->true
      </isSupportNetPreviewStrategy>
      <isSupportEZVIZ>
        <!--ro, opt, bool, 是否支持萤石协议-->true
      </isSupportEZVIZ>
      <isSupportEhome>
        <!--ro, opt, bool, ehome（ISUP）服务器配置-->true
      </isSupportEhome>
      <isSupportWirelessDial>
        <!--ro, opt, bool, 是否支持无线拨号协议-->true
      </isSupportWirelessDial>
      <isSupportWirelessServer>
        <!--ro, opt, bool, 是否这次会无线服务器-->true
      </isSupportWirelessServer>
      <isSupportWPS>
        <!--ro, opt, bool, 是否支持Wi-Fi安全防护设定(Wi-Fi Protected Setup)-->true
      </isSupportWPS>
      <isWirelessMutexWithWirelessServer>
        <!--ro, opt, bool, 是否支持无线接入和无线服务互斥-->true
      </isWirelessMutexWithWirelessServer>
      <isSupportMACFilter>
        <!--ro, opt, bool, 是否支持物理地址过滤-->true
      </isSupportMACFilter>
      <GB28181Cap>
        <!--ro, opt, object, GB28181服务器配置能力-->
        <isSupportGB28181Service>
          <!--ro, opt, bool, GB28181服务器配置-->true
        </isSupportGB28181Service>
      </GB28181Cap>
      <WPS>
        <!--ro, opt, object, Wi-Fi Protected Setup;WiFi保护设置-->
        <NetworkInterfaceList size="2">
          <!--ro, opt, array, 网络节点列表, subType:object, range:[,], attr:size{opt, string, 未定义, range:[,]}-->
          <NetworkInterface>
            <!--ro, opt, object, 网络节点-->
            <id>
              <!--ro, req, string, 网卡索引, range:[,]-->1
            </id>
            <enabled>
              <!--ro, req, bool, 使能开关-->true
            </enabled>
            <isSupportAutoConnect>
              <!--ro, opt, bool, 是否支持自动连接-->true
            </isSupportAutoConnect>
            <isSupportDevicePinCode>
              <!--ro, opt, bool, 是否支持设备PIN码-->true
            </isSupportDevicePinCode>
            <isSupportDevicePinCodeUpdate>
              <!--ro, opt, bool, 是否支持设备PIN码更新-->true
            </isSupportDevicePinCodeUpdate>
            <ApPinCode>
              <!--ro, opt, object, 接入点PIN码-->
              <ssid min="1" max="1">
                <!--ro, opt, string, 服务集标识, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
              </ssid>
              <pinCode min="1" max="1">
                <!--ro, opt, string, PIN码, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
              </pinCode>
            </ApPinCode>
          </NetworkInterface>
        </NetworkInterfaceList>
      </WPS>
      <isSupportRFIDData>
        <!--ro, opt, bool, 是否支持RFID采集配置-->true
      </isSupportRFIDData>
      <verificationCode min="1" max="1">
        <!--ro, opt, string, 验证码, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
      </verificationCode>
      <WPSCap>
        <!--ro, opt, object, WiFi保护设置能力配置-->
        <isSupport>
          <!--ro, req, bool, 是否支持Wi-Fi安全防护设定(Wi-Fi Protected Setup)-->true
        </isSupport>
        <isSupportAutoConnect>
          <!--ro, req, bool, 是否支持自动连接-->true
        </isSupportAutoConnect>
      </WPSCap>
      <NetWorkMode>
        <!--ro, opt, object, 网络模式配置-->
        <workMode>
          <!--ro, opt, string, 网络模式, range:[,]-->true
        </workMode>
      </NetWorkMode>
      <VerificationCodeModification>
        <!--ro, opt, object, 设备验证码配置-->
        <verificationCodeType opt="normal,empty">
          <!--ro, opt, string, 验证码类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->true
        </verificationCodeType>
        <isSupportDeclarationURL>
          <!--ro, opt, bool, 是否支持服务申明的超链接-->true
        </isSupportDeclarationURL>
        <isSupportPrivacyPolicyURL>
          <!--ro, opt, bool, 是否支持隐私条款的超链接-->true
        </isSupportPrivacyPolicyURL>
        <verificationCodeModify opt="true,false">
          <!--ro, opt, bool, 设备验证码是否修改过, attr:opt{opt, string, 未定义, range:[,]}-->true
        </verificationCodeModify>
        <Hyperlinks>
          <!--ro, opt, object, 超链接配置-->
          <declarationURL>
            <!--ro, opt, string, 服务申明的超链接, range:[,]-->null
          </declarationURL>
          <privacyPolicyURL>
            <!--ro, opt, string, 支持隐私条款的超链接, range:[,]-->null
          </privacyPolicyURL>
        </Hyperlinks>
        <isSupportVerificationCodeCheck>
          <!--ro, opt, bool, 是否支持验证码校验-->true
        </isSupportVerificationCodeCheck>
        <isSupportOldVerificationCode>
          <!--ro, opt, bool, 是否支持老版本萤石密码配置（老版本密码为六位-->true
        </isSupportOldVerificationCode>
      </VerificationCodeModification>
      <isSupportIntegrate>
        <!--ro, opt, bool, 是否支持接入协议配置-->true
      </isSupportIntegrate>
      <isSupportPlatformAccess>
        <!--ro, opt, bool, 是否支持平台接入-->true
      </isSupportPlatformAccess>
      <isSupportIntelligentBoost>
        <!--ro, opt, bool, 是否支持智能加速功能-->true
      </isSupportIntelligentBoost>
      <isSupportResourceStatistics>
        <!--ro, opt, bool, 是否支持网络资源信息-->true
      </isSupportResourceStatistics>
      <isSupportBandwidthLimit>
        <!--ro, opt, bool, 是否支持带宽限制-->true
      </isSupportBandwidthLimit>
      <isSupportPOEPortsDisableAdaptiveServer>
        <!--ro, opt, bool, 是否支持POE协议-->true
      </isSupportPOEPortsDisableAdaptiveServer>
      <isSupportPOEConfiguration>
        <!--ro, opt, bool, 是否支持POE网卡参数配置-->true
      </isSupportPOEConfiguration>
      <isSupportGetLinkSocketIP>
        <!--ro, opt, bool, 是否支持获取当前链接的SocketIP-->true
      </isSupportGetLinkSocketIP>
      <isSupportWebSocket>
        <!--ro, opt, bool, 是否支持WebSocket-->true
      </isSupportWebSocket>
      <isSupportWebSocketS>
        <!--ro, opt, bool, 是否支持WebSocketS-->true
      </isSupportWebSocketS>
      <Adaption>
        <!--ro, opt, object, 网络自适应配置-->
        <streamType opt="0,1,2,3,4,5,7,8,9,10">
          <!--ro, opt, string, 支持预览网络自适应的码流类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:0-主码流,1-子码流,2-码流3,3-码流4/虚拟码流,4-码流5,5-码流6,7-码流7,8-码流8,9-码流9,10-码流10以此类推,此处索引值与SDK预览结构体中NET_DVR_PREVIEWINFO保持一致,要注意的是索引值中无6索引值,码流从7开始于RTSP预览索引值保持一致-->null
        </streamType>
        <isSupportPlayback>
          <!--ro, opt, bool, 回放是否支持-->true
        </isSupportPlayback>
      </Adaption>
      <isSupportVideoImgDB>
        <!--ro, opt, bool, 是否支持视图库配置-->true
      </isSupportVideoImgDB>
      <isSupportEventDataOverWebSocket opt="true,false">
        <!--ro, opt, bool, 是否支持通过WebSocket上报事件数据, attr:opt{opt, string, 未定义, range:[,]}-->true
      </isSupportEventDataOverWebSocket>
      <isSupportDynamicHostName>
        <!--ro, opt, bool, 是否支持动态域名配置-->true
      </isSupportDynamicHostName>
      <isSupportEZVIZTiming>
        <!--ro, opt, bool, 是否支持萤石平台校时, desc:接口:/ISAPI/System/Network/EZVIZ中的EZVIZ.enabledTiming-->true
      </isSupportEZVIZTiming>
      <isSupportTrafficMonitor>
        <!--ro, opt, bool, 是否支持流量监控, desc:接口:/ISAPI/System/Network/WirelessDial/Interfaces/<ID>/trafficMonitor?format=json-->true
      </isSupportTrafficMonitor>
      <isSupportDMSAuthInfo>
        <!--ro, opt, bool, 是否支持DMS认证信息管理-->true
      </isSupportDMSAuthInfo>
      <isSupportWiredandWirelessTrafficMonitor>
        <!--ro, opt, bool, 是否支持流量监控(无线网卡和有线网卡), desc:接口:/ISAPI/System/Network/Interfaces/<ID>/trafficMonitor?format=json-->true
      </isSupportWiredandWirelessTrafficMonitor>
      <isSupport4G>
        <!--ro, opt, bool, 是否支持4G模块-->true
      </isSupport4G>
      <isSupport4GConfig>
        <!--ro, opt, bool, 是否支持4G配置-->true
      </isSupport4GConfig>
      <isSupportGRIDServer>
        <!--ro, opt, bool, 是否支持国网B服务器参数配置-->true
      </isSupportGRIDServer>
      <isSupportGRIDInfo>
        <!--ro, opt, bool, 是否支持设备的国网B通道参数配置-->true
      </isSupportGRIDInfo>
      <isSupportSipTransmit>
        <!--ro, opt, bool, 是否支持Sip传输参数配置-->true
      </isSupportSipTransmit>
      <isSupportWifiCascade>
        <!--ro, opt, bool, 设备wifi自动级联使能能力, desc:接口:/ISAPI/System/Network/wifiCascade?format=json-->true
      </isSupportWifiCascade>
      <isSupportRelativeInfo>
        <!--ro, opt, bool, 已连接设备相关信息, desc:接口:/ISAPI/System/Network/wifiCascade/relativeInfo?format=json-->true
      </isSupportRelativeInfo>
      <isSupportEmailEncrypt>
        <!--ro, opt, bool, 是否支持邮箱配置加密-->true
      </isSupportEmailEncrypt>
      <isSupportPortFilter>
        <!--ro, opt, bool, 是否支持端口过滤-->true
      </isSupportPortFilter>
      <isSupportPingDeny>
        <!--ro, opt, bool, 是否支持禁止ping设备配置功能-->true
      </isSupportPingDeny>
      <isSupportDOSDeny>
        <!--ro, opt, bool, 是否支持防止DOS攻击配置功能-->true
      </isSupportDOSDeny>
      <isSupportNetworkStatus>
        <!--ro, opt, bool, 是否支持网络状态查询, desc:接口:/ISAPI/System/Network/status?format=json-->true
      </isSupportNetworkStatus>
      <isSupportEZVIZQRcode>
        <!--ro, opt, bool, 是否支持萤石二维码获取, desc:对应控制接口：/ISAPI/System/Network/EZVIZ/QRCode?format=json-->true
      </isSupportEZVIZQRcode>
      <isSupportEZVIZUnbind>
        <!--ro, opt, bool, 是否支持萤石解绑功能, desc:/ISAPI/System/Network/EZVIZ/unbind?format=json-->true
      </isSupportEZVIZUnbind>
      <isSupportPingtest>
        <!--ro, opt, bool, 是否支持ping测试, desc:对应/ISAPI/System/Network/pingtest/capabilities-->true
      </isSupportPingtest>
      <isSupportMOTCloudPlateform>
        <!--ro, opt, bool, 是否支持接入云平台服务参数, desc:对应/ISAPI/System/Network/Traffic/MOTCloudPlateform/capabilities?format=json-->true
      </isSupportMOTCloudPlateform>
      <isSupportSpectrumScan>
        <!--ro, opt, bool, 是否支持频谱扫描, desc:对应/ISAPI/System/Network/interface/<netCardID>/spectrumScan/capabilities?format=json-->true
      </isSupportSpectrumScan>
      <isSupportFRP>
        <!--ro, opt, bool, 是否支持FRP内网透传, desc:对应/ISAPI/Syetem/Network/FRP?format=json-->true
      </isSupportFRP>
      <isSupport5GModule>
        <!--ro, opt, bool, 是否支持5G模块相关配置, desc:对应/ISAPI/System/Network/5GModule/capabilities?format=json-->true
      </isSupport5GModule>
      <isSupportWirelessDialRoute>
        <!--ro, opt, bool, 是否支持无线拨号路由转发规则参数配置, desc:对应/ISAPI/System/Network/WirelessDia/route/capabilities?format=json-->true
      </isSupportWirelessDialRoute>
      <isSupportNPlusOne>
        <!--ro, opt, bool, 是否支持N+1协议-->true
      </isSupportNPlusOne>
      <supportEnvironmentalStandards opt="HJ212">
        <!--ro, opt, string, 环境检测标准, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:HJ212-支持HJ212协议,对应/ISAPI/System/Network/HJ212?format=json;-->true
      </supportEnvironmentalStandards>
      <isSupportIntranetSegment>
        <!--ro, opt, bool, 是否支持内部网段配置, desc:支持返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/intranetSegment/capabilities?format=json-->true
      </isSupportIntranetSegment>
      <isSupportDHCPServer>
        <!--ro, opt, bool, 是否DHCP服务配置, desc:支持返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/DHCPServer/capabilities?format=json-->true
      </isSupportDHCPServer>
      <isSupportHydrologicMonitoring>
        <!--ro, opt, bool, 是否支持水文监测数据通信, desc:支持《SL 651-2014 水文监测数据通信规约》返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/HydrologicMonitoring/capabilities?format=json-->true
      </isSupportHydrologicMonitoring>
    </NetworkCap>
    <IOCap>
      <!--ro, opt, object, IO能力, desc:接口:/ISAPI/System/IO/capabilities-->
      <IOInputPortNums>
        <!--ro, opt, int, 设备本地IO输入口个数, range:[,], step:, unit:, unitType:-->true
      </IOInputPortNums>
      <IOOutputPortNums>
        <!--ro, opt, int, 设备本地IO输出口个数, range:[,], step:, unit:, unitType:-->true
      </IOOutputPortNums>
      <isSupportStrobeLamp>
        <!--ro, opt, bool, 是否IO输出闸门灯配置, desc:接口:/ISAPI/System/IO/outputs/strobelampConf 是否支持-->true
      </isSupportStrobeLamp>
      <SoftIOInputPortNums>
        <!--ro, opt, int, 设备软IO输入口个数, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/System/IO/softInputs/capabilities?format=json是否支持-->true
      </SoftIOInputPortNums>
      <isSupportIOOutputAdvanceParameter>
        <!--ro, opt, bool, 是否支持IO输出口高级参数配置, desc:接口:/ISAPI/System/IO/outputs/advanceParameter/capabilities?format=json是否支持-->true
      </isSupportIOOutputAdvanceParameter>
      <isSupportSetAllIOOutput>
        <!--ro, opt, bool, 是否支持设置所有IO, desc:接口:/ISAPI/System/IO/outputs是否支持PUT-->true
      </isSupportSetAllIOOutput>
      <isSupportCombinationAlarm>
        <!--ro, opt, bool, 是否支持组合报警, desc:接口:/ISAPI/System/IO/inputs/capabilities中CombinationAlarmCap节点-->true
      </isSupportCombinationAlarm>
    </IOCap>
    <SerialCap>
      <!--ro, opt, object, 设备支持的485串口号范围-->
      <rs485PortNums>
        <!--ro, opt, int, 设备支持的rs485的串口最大数量, range:[,], step:, unit:, unitType:-->true
      </rs485PortNums>
      <supportRS232Config>
        <!--ro, opt, bool, 设备是否支持的rs232串口相关参数配置-->true
      </supportRS232Config>
      <rs422PortNums>
        <!--ro, opt, int, 设备支持的rs422的串口最大数量, range:[,], step:, unit:, unitType:-->true
      </rs422PortNums>
      <rs232PortNums>
        <!--ro, opt, int, 设备支持的rs232的串口最大数量, range:[,], step:, unit:, unitType:-->true
      </rs232PortNums>
      <rs485WorkMode opt="Led,CaptureTrigger">
        <!--ro, opt, string, 设备支持的rs485的工作模式, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:Led-外接LED屏,作用于LED显示,CaptureTrigger-外接触发设备进行触发抓拍数据传输-->null
      </rs485WorkMode>
      <rs232SerialNumber opt="1,2,3">
        <!--ro, opt, string, 设备支持的232串口号范围, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </rs232SerialNumber>
      <rs485SerialNumber opt="4,5,6">
        <!--ro, opt, string, 设备支持的485串口号范围, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </rs485SerialNumber>
      <isSupportAuthenticationService>
        <!--ro, opt, bool, 设备是否支持串口认证服务-->true
      </isSupportAuthenticationService>
    </SerialCap>
    <VideoCap>
      <!--ro, opt, object, 视频编码能力, desc:接口:/ISAPI/System/Video/capabilities-->
      <videoInputPortNums>
        <!--ro, opt, int, 视频输入端口个数, range:[,], step:, unit:, unitType:-->true
      </videoInputPortNums>
      <videoOutputPortNums>
        <!--ro, opt, int, 视频输出端口个数, range:[,], step:, unit:, unitType:-->true
      </videoOutputPortNums>
      <menuNums>
        <!--ro, opt, int, 支持显示本地菜单数目, range:[,], step:, unit:, unitType:-->true
      </menuNums>
      <externalChannelNum>
        <!--ro, opt, bool, 外扩模拟通道个数-->true
      </externalChannelNum>
      <isSupportHeatmap>
        <!--ro, opt, bool, 是否支持热度图-->true
      </isSupportHeatmap>
      <isSupportCounting>
        <!--ro, opt, bool, 是否支持人数统计-->true
      </isSupportCounting>
      <countingType>
        <!--ro, opt, string, 统计类型, range:[,], desc:human:表示的是客流统计；object:表示的是过线计数-->null
      </countingType>
      <isSupportPicture>
        <!--ro, opt, bool, 是否支持OSD图片叠加-->true
      </isSupportPicture>
      <isSupportPreviewSwitch>
        <!--ro, opt, bool, 是否支持预览切换-->true
      </isSupportPreviewSwitch>
      <isSupportMultiChannelCounting>
        <!--ro, opt, bool, 是否支持多通道统计-->true
      </isSupportMultiChannelCounting>
      <isSupportCountingCollection>
        <!--ro, opt, bool, 是否支持客流量补录-->true
      </isSupportCountingCollection>
      <isSupportHeatmapCollection>
        <!--ro, opt, bool, 是否支持热度图数据补录-->true
      </isSupportHeatmapCollection>
      <channelFlexible opt="name,online,linknum">
        <!--ro, opt, string, 位置在isSupportHeatmapCollection之后, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->true
      </channelFlexible>
      <isSupportMixedChannel>
        <!--ro, opt, bool, 位置在channelFlexible之后-->true
      </isSupportMixedChannel>
      <isSupportMixedChannelStatus>
        <!--ro, opt, bool, 位置在isSupportMixedChannel之后-->true
      </isSupportMixedChannelStatus>
      <isSupportRecodStatus>
        <!--ro, opt, bool, 是否支持录像状态查询-->true
      </isSupportRecodStatus>
      <isSupportPrivacyMask>
        <!--ro, opt, bool, 是否支持隐私遮蔽功能-->true
      </isSupportPrivacyMask>
      <isSupportBinocularPreviewSwitch>
        <!--ro, opt, bool, 是否支持双目预览切换-->true
      </isSupportBinocularPreviewSwitch>
      <isSupportCalibCheck>
        <!--ro, opt, bool, 是否支持标定检验-->true
      </isSupportCalibCheck>
      <isSupportPIP>
        <!--ro, opt, bool, 是否支持PIP-->true
      </isSupportPIP>
      <isSupportFocusVideoMode>
        <!--ro, opt, bool, 聚焦视频模式-->true
      </isSupportFocusVideoMode>
      <isSupportExternalChannel>
        <!--ro, opt, bool, 是否支持外扩模拟通道-->true
      </isSupportExternalChannel>
    </VideoCap>
    <AudioCap>
      <!--ro, opt, object, 音频编码能力, desc:接口:/ISAPI/System/Audio/capabilities-->
      <audioInputNums>
        <!--ro, req, int, 音频输入个数, range:[,], step:, unit:, unitType:-->1
      </audioInputNums>
      <audioOutputNums>
        <!--ro, req, int, 音频输出个数, range:[,], step:, unit:, unitType:-->1
      </audioOutputNums>
      <mixAudioInSet>
        <!--ro, opt, bool, 待确认-->true
      </mixAudioInSet>
      <mixAudioOutSet>
        <!--ro, opt, bool, 待确认-->true
      </mixAudioOutSet>
      <isSupportAudioMixing>
        <!--ro, opt, bool, 是否支持音频混音-->true
      </isSupportAudioMixing>
      <isSupportRemoveFrequencyPoint>
        <!--ro, opt, bool, 是否支持啸叫频点清除-->true
      </isSupportRemoveFrequencyPoint>
      <isSupportAudioInConfig>
        <!--ro, opt, bool, 是否支持全部音量输入配置, desc:接口:/ISAPI/System/Audio/AudioIn/capabilities-->true
      </isSupportAudioInConfig>
      <muteDuringPanTilt opt="MicIn">
        <!--ro, opt, string, 是否支持运动时消音, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:接口:/ISAPI/System/TwoWayAudio/channels/ID的muteDuringPanTilt节点配置-->true
      </muteDuringPanTilt>
    </AudioCap>
    <isSupportHolidy>
      <!--ro, opt, bool, 位置只能确定在AudioCap-->true
    </isSupportHolidy>
    <RebootConfigurationCap>
      <!--ro, opt, object, 参数配置重启能力, desc:接口:/ISAPI/System/reboot/capabilities 位置只能确定在isSupportHolidy之后,isSupportSubscribeEvent之前-->
      <Genetec>
        <!--ro, opt, bool, Genetec协议开关-->true
      </Genetec>
      <ONVIF>
        <!--ro, opt, bool, ONVIF协议开关-->true
      </ONVIF>
      <RTSP>
        <!--ro, opt, bool, RTSP协议开关-->true
      </RTSP>
      <HTTP>
        <!--ro, opt, bool, HTTP协议开关-->true
      </HTTP>
      <SADP>
        <!--ro, opt, object, 表示SADP发现协议（包括链路层和多播发现）-->
        <ISDiscoveryMode>
          <!--ro, opt, bool, SADP的多播发现协议模式-->true
        </ISDiscoveryMode>
        <PcapMode>
          <!--ro, opt, bool, 表示SADP的链路层发现协议-->true
        </PcapMode>
      </SADP>
      <IPCAddStatus>
        <!--ro, opt, bool, IP地址状态-->true
      </IPCAddStatus>
    </RebootConfigurationCap>
    <isSupportExternalDevice>
      <!--ro, opt, bool, 是否支持设备接入外设功能(true-支持, desc:接口:/ISAPI/System/externalDevice/capabilities)-->true
    </isSupportExternalDevice>
    <isSupportSoundCfg>
      <!--ro, opt, bool, 是否支持声音配置, desc:接口:/ISAPI/System/SoundCfg/capabilities-->null
    </isSupportSoundCfg>
    <isSupportSubscribeEvent>
      <!--ro, opt, bool, 是否支持事件订阅, desc:接口:/ISAPI/Event/notification/subscribeEventCap-->true
    </isSupportSubscribeEvent>
    <isSupportSubscribeIOTInfo>
      <!--ro, opt, bool, 是否支持物联网信息订阅-->true
    </isSupportSubscribeIOTInfo>
    <isSupportDiagnosedData>
      <!--ro, opt, bool, 是否支持设备诊断数据导出功能, desc:true-支持,不支持不返回该节点,接口:/ISAPI/System/diagnosedData-->true
    </isSupportDiagnosedData>
    <isSupportChangedUpload>
      <!--ro, opt, bool, 变化上报能力-->true
    </isSupportChangedUpload>
    <isSupportGettingWorkingStatus>
      <!--ro, opt, bool, 设备状态获取能力-->true
    </isSupportGettingWorkingStatus>
    <isSupportGettingChannelInfoByCondition>
      <!--ro, opt, bool, 未找到文档-->true
    </isSupportGettingChannelInfoByCondition>
    <isSupportDiagnosedDataParameter>
      <!--ro, opt, bool, 是否支持诊断信息导出开关配置-->true
    </isSupportDiagnosedDataParameter>
    <isSupportSimpleDevStatus>
      <!--ro, opt, bool, 对应是否支持获取, desc:接口:/ISAPI/System/workingstatus?format=json-->true
    </isSupportSimpleDevStatus>
    <isSupportFlexible>
      <!--ro, opt, bool, 对应是否支持灵活搭配配置ISAPI/System/Video/inputs/channels?format=json-->true
    </isSupportFlexible>
    <isSupportPTZChannels>
      <!--ro, opt, bool, 表示支持设备返回PTZ 通道（区分视频通道）-->true
    </isSupportPTZChannels>
    <isSupportMetadata>
      <!--ro, opt, bool, 支持Metadata的能力 , desc:接口:/ISAPI/Streaming/channels/<ID>/metadata/capabilities-->true
    </isSupportMetadata>
    <isSupportTimeCap>
      <!--ro, opt, bool, 是否支持时间配置, desc:接口:/ISAPI/System/time/capabilities-->true
    </isSupportTimeCap>
    <isSupportThermalStreamData>
      <!--ro, opt, bool, 是否支持热成像码流数据实时上传-->true
    </isSupportThermalStreamData>
    <isSupportShutdown>
      <!--ro, opt, bool, 是否支持关机配置, desc:接口:/ISAPI/System/shutdown?format=json-->true
    </isSupportShutdown>
    <isSupportConsumptionMode>
      <!--ro, opt, bool, 设备是否支持功耗模式切换, desc:接口:/ISAPI/System/consumptionMode/capabilities?format=json-->true
    </isSupportConsumptionMode>
    <isSupportManualPowerConsumption>
      <!--ro, opt, bool, 是否支持设备功耗手动控制-->true
    </isSupportManualPowerConsumption>
    <isSupportPostUpdateFirmware>
      <!--ro, opt, bool, 是否支持POST方法升级固件-->true
    </isSupportPostUpdateFirmware>
    <isSupportPostConfigData>
      <!--ro, opt, bool, 是否支持POST方法导入导出配置文件-->true
    </isSupportPostConfigData>
    <isSupportUserLock>
      <!--ro, opt, bool, 是否支持用户锁定, desc:接口:/ISAPI/System/userLock/config/capabilities?format=json-->true
    </isSupportUserLock>
    <isSupportModuleLock>
      <!--ro, opt, bool, 是否支持模块锁定, desc:接口:/ISAPI/System/moduleLock-->true
    </isSupportModuleLock>
    <supportSmartOverlapChannles opt="1">
      <!--ro, opt, bool, 设备是否支smart事件码流配置, attr:opt{opt, string, 支持的通道号, range:[,]}, desc:支持返回该节点及对应的通道id,不支持不返回该节点-->true
    </supportSmartOverlapChannles>
  </SysCap>
  <voicetalkNums>
    <!--ro, opt, int, 语音对讲通道数目, range:[,], step:, unit:, unitType:-->2
  </voicetalkNums>
  <isSupportSnapshot>
    <!--ro, opt, bool, 是否支持抓图-->true
  </isSupportSnapshot>
  <SecurityCap>
    <!--ro, opt, object, 表示加密能力集-->
    <supportUserNums>
      <!--ro, opt, int, 支持用户最大数, range:[,], step:, unit:, unitType:-->1
    </supportUserNums>
    <userBondIpNums>
      <!--ro, opt, int, 支持绑定IP最大数, range:[,], step:, unit:, unitType:-->1
    </userBondIpNums>
    <userBondMacNums>
      <!--ro, opt, int, 支持绑定MAC地址最大数, range:[,], step:, unit:, unitType:-->1
    </userBondMacNums>
    <isSupCertificate>
      <!--ro, opt, bool, 是否支持认证-->true
    </isSupCertificate>
    <issupIllegalLoginLock>
      <!--ro, opt, bool, 是否支持登陆锁定-->true
    </issupIllegalLoginLock>
    <isSupportOnlineUser>
      <!--ro, opt, bool, 是否支持在线用户配置-->true
    </isSupportOnlineUser>
    <isSupportAnonymous>
      <!--ro, opt, bool, 是否支持匿名登陆-->true
    </isSupportAnonymous>
    <isSupportStreamEncryption>
      <!--ro, opt, bool, 是否支持码流加密-->true
    </isSupportStreamEncryption>
    <securityVersion opt="1,2">
      <!--ro, opt, string, 加密能力, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:每一个版本包括两个方面：加密算法及加密的节点范围。目前1表示AES128加密,2表示AES256加密,加密范围在各个协议中描述-->null
    </securityVersion>
    <keyIterateNum>
      <!--ro, opt, int, 迭代次数, range:[,], step:, unit:, unitType:, desc:取值一般是100~1000-->100
    </keyIterateNum>
    <isSupportUserCheck>
      <!--ro, opt, bool, 是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验, desc:表示是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验,此功能只在支持敏感信息加密的版本上有效,即depend on securityVersion-->true
    </isSupportUserCheck>
    <isSupportGUIDFileDataExport>
      <!--ro, opt, bool, 表示是否支持设备GUID文件导出-->true
    </isSupportGUIDFileDataExport>
    <isSupportSecurityQuestionConfig>
      <!--ro, opt, bool, 表示是否支持回答安全问题-->true
    </isSupportSecurityQuestionConfig>
    <supportSecurityNode opt="wirelessServer,wirelessDial">
      <!--ro, opt, string, 为支持敏感加密的补充节点, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:由于原先制定的isapi敏感信息加密方案(即ISAPI明文传输处理方案)中,有部分接口包含了敏感信息却被遗漏了。现需对这些接口进行加密,为了兼容老设备,因此新增该能力节点。-->null
    </supportSecurityNode>
    <isSupportGetOnlineUserListSC>
      <!--ro, opt, bool, 是否支持在线用户列表查询-->true
    </isSupportGetOnlineUserListSC>
    <SecurityLimits>
      <!--ro, opt, object, 参数安全限制能力-->
      <LoginPasswordLenLimit min="1" max="16">
        <!--ro, opt, string, 用户登陆密码长度限制, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
      </LoginPasswordLenLimit>
      <SecurityAnswerLenLimit min="1" max="128">
        <!--ro, opt, string, 安全问题答案长度限制, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
      </SecurityAnswerLenLimit>
    </SecurityLimits>
    <RSAKeyLength opt="512,1024,2048" def="2048">
      <!--ro, opt, enum, HTTPS证书长度, subType:string, [512#512,1024#1024,2048#2048], attr:opt{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}-->2048
    </RSAKeyLength>
    <isSupportONVIFUserManagement>
      <!--ro, opt, bool, ONVIF协议用户管理-->true
    </isSupportONVIFUserManagement>
    <WebCertificateCap>
      <!--ro, opt, object, HTTP认证能力-->
      <CertificateType opt="basic,digest,digest/basic">
        <!--ro, req, string, 证书类型：basic认证, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </CertificateType>
      <SecurityAlgorithm>
        <!--ro, opt, object, 加密算法, dep:or,{$.DeviceCap.SecurityCap.WebCertificateCap.CertificateType,eq,degist},{$.DeviceCap.SecurityCap.WebCertificateCap.CertificateType,eq,digest/basic}-->
        <algorithmType opt="MD5,SHA256,MD5/SHA256">
          <!--ro, opt, string, 算法类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
        </algorithmType>
      </SecurityAlgorithm>
    </WebCertificateCap>
    <isSupportConfigFileImport>
      <!--ro, opt, bool, 是否支持配置文件安全导入-->true
    </isSupportConfigFileImport>
    <isSupportConfigFileExport>
      <!--ro, opt, bool, 是否支持配置文件安全导出-->true
    </isSupportConfigFileExport>
    <cfgFileSecretKeyLenLimit min="0" max="16">
      <!--ro, opt, string, 配置文件校验密钥长度限制, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->0
    </cfgFileSecretKeyLenLimit>
    <supportIPCActivatePassword>
      <!--ro, opt, bool, 是否支持IPC激活密码配置-->true
    </supportIPCActivatePassword>
    <isIrreversible>
      <!--ro, opt, bool, 设备是否支持密码不可逆存储, desc:不支持则代表设备端会存用户信息的明文密码,支持则代表设备端密码散列存储-->true
    </isIrreversible>
    <salt>
      <!--ro, opt, string, 用于用户登录时所使用的具体盐值, range:[,]-->test
    </salt>
    <isSupportOnvifInfo>
      <!--ro, opt, bool, 是否支持获取Onvif协议信息接口-->true
    </isSupportOnvifInfo>
    <isSupportUserNamePasswordCheckUpgrade>
      <!--ro, opt, bool, 是否支持用户名密码校验升级-->true
    </isSupportUserNamePasswordCheckUpgrade>
    <isSupportDeviceCertificatesManagement>
      <!--ro, opt, bool, 是否支持设备证书管理-->true
    </isSupportDeviceCertificatesManagement>
    <isSupportSIPCertificatesManagement>
      <!--ro, opt, bool, 是否支持SIP证书管理-->true
    </isSupportSIPCertificatesManagement>
    <isSupportDeviceSelfSignCertExport>
      <!--ro, opt, bool, 是否支持设备签证导出-->true
    </isSupportDeviceSelfSignCertExport>
    <isSupportSecurityEmail>
      <!--ro, opt, bool, 是否支持安全邮箱配置-->true
    </isSupportSecurityEmail>
    <isSupportRTSPCertificate opt="true,false">
      <!--ro, opt, bool, 是否支持RTSP认证, attr:opt{opt, string, 未定义, range:[,]}-->true
    </isSupportRTSPCertificate>
    <isSupportPictureURlCertificate opt="true,false">
      <!--ro, opt, bool, 图片url认证配置能力, attr:opt{opt, string, 未定义, range:[,]}-->true
    </isSupportPictureURlCertificate>
    <isSupportGB35114Certificate>
      <!--ro, opt, bool, 是否支持支持GB35114协议CA/SIP认证证书-->true
    </isSupportGB35114Certificate>
    <isSupportAuthenticationMode opt="uKey,private">
      <!--ro, opt, enum, 验证模式, subType:string, [uKey#uKey,private#private], attr:opt{req, string, 取值范围, range:[,]}-->private
    </isSupportAuthenticationMode>
    <isSupportUnloggedUserPermissionConfig opt="true,false">
      <!--ro, opt, bool, 是否支持未登录用户权限配置, attr:opt{opt, string, 未定义, range:[,]}-->true
    </isSupportUnloggedUserPermissionConfig>
    <maxIllegalLoginTimes min="3" max="20" def="5">
      <!--ro, opt, string, 最大非法登陆尝试次数, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}, desc:issupportIllegalLoginLock为true时有效,当设备最大非法登陆尝试次数时返回-->1
    </maxIllegalLoginTimes>
    <SecurityAdvanced>
      <!--ro, opt, object, 安全高级配置-->
      <securityEnhanced>
        <!--ro, opt, bool, 是否支持安全加固-->true
      </securityEnhanced>
      <noOperationEnabled>
        <!--ro, req, bool, 无操作控件超时时间使能-->true
      </noOperationEnabled>
      <noOperationTime min="1" max="60" def="15">
        <!--ro, req, int, 控件无操作超时时间, range:[,], step:, unit:分钟, unitType:, attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}-->1
      </noOperationTime>
      <isSupportDigestStatus>
        <!--ro, opt, bool, 摘要状态-->true
      </isSupportDigestStatus>
    </SecurityAdvanced>
    <LoginLinkNum>
      <!--ro, opt, object, 同时登陆数量-->
      <maxLinkNum min="1" max="128" def="50">
        <!--ro, req, int, 控件同时登陆数量, range:[,], step:, unit:, unitType:, attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}-->64
      </maxLinkNum>
    </LoginLinkNum>
    <isSupportCCClientCertificate>
      <!--ro, opt, bool, 是否支持CC客户端证书功能-->true
    </isSupportCCClientCertificate>
    <passwordValidity min="0" max="365">
      <!--ro, opt, string, 密码有效期范围, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}, desc:单位：天,返回该节点表示支持密码有效期配置,仅管理员用户可以修改-->1
    </passwordValidity>
    <isSupportResetChannelPassword>
      <!--ro, opt, bool, 是否支持重置通道密码-->true
    </isSupportResetChannelPassword>
    <DoubleVerificationCap>
      <!--ro, opt, object, 二次认证能力-->
      <isSupportUsersConfig>
        <!--ro, opt, bool, 是否支持二次认证用户配置-->true
      </isSupportUsersConfig>
      <isSupportUsersPermissionConfig>
        <!--ro, opt, bool, 是否支持二次认证用户权限配置-->true
      </isSupportUsersPermissionConfig>
    </DoubleVerificationCap>
    <isSupportUserSearch>
      <!--ro, opt, bool, 是否支持用户查找-->true
    </isSupportUserSearch>
    <keypadPassword min="1" max="10">
      <!--ro, opt, int, 键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当不同类型用户的键盘密码长度不一致时,此节点仅表示管理员用户的键盘密码长度,否则表示所有类型用户的键盘密码的统一长度-->1
    </keypadPassword>
    <installerKeypadPassword min="1" max="10">
      <!--ro, opt, int, 安装员的键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </installerKeypadPassword>
    <operatorKeypadPassword min="1" max="10">
      <!--ro, opt, int, 操作员的键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </operatorKeypadPassword>
    <userOperateType opt="1,2,3">
      <!--ro, opt, enum, 用户操作类型：1-网络用户, subType:int, [1#网络用户,2#键盘用户,3#网络用户+键盘用户], attr:opt{req, string, 取值范围, range:[,]}-->1
    </userOperateType>
    <isSptUserEnabled>
      <!--ro, opt, bool, 是否支持用户使能配置-->true
    </isSptUserEnabled>
    <isSptAdminCap>
      <!--ro, opt, bool, 是否支持Admin权限能力获取-->true
    </isSptAdminCap>
    <isSupportBackLogCfg>
      <!--ro, opt, bool, 是否支持后台日志基本参数配置-->true
    </isSupportBackLogCfg>
    <isSupportBackLogExport>
      <!--ro, opt, bool, 是否支持后台日志导出-->true
    </isSupportBackLogExport>
    <isSupportModifyInnerPassword opt="true,false">
      <!--ro, opt, bool, 是否支持设备内置密码修改, attr:opt{req, string, 取值范围, range:[,]}, desc:如:数据库密码、系统账户密码-->true
    </isSupportModifyInnerPassword>
    <isSupportEncryptCertificate>
      <!--ro, opt, bool, 是否支持证书加密, desc:/ISAPI/Security/deviceCertificate-->true
    </isSupportEncryptCertificate>
    <maxIllegalLoginLockTime min="1" max="120" def="30.00">
      <!--ro, opt, int, 锁定时间范围, range:[1,120], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </maxIllegalLoginLockTime>
    <cloudSensitiveInfoEncryptType>
      <!--ro, opt, string, 云敏感信息加密类型, range:[,], desc:当前设备返回"2.1",该字段返回2.1之表示敏感信息加密密钥生成方式为SHA256(calc_sha256(user, salt, SHA256(user+salt2+SHA256(user+salt+password)))+ AaBbCcDd1234!@#$)-->2.1
    </cloudSensitiveInfoEncryptType>
    <isSupportCertificateCustomID>
      <!--ro, opt, bool, 是否支持证书配置使用用户自定义ID-->true
    </isSupportCertificateCustomID>
    <isSupportResetLANPassword>
      <!--ro, opt, bool, 是否支持重置局域网设备密码, desc:对应/ISAPI/Security/resetPassword/certification?format=json-->true
    </isSupportResetLANPassword>
    <isSupportPicHttpsCertificatesManagement>
      <!--ro, opt, bool, 是否支持图片https证书管理, desc:支持返回,不支持不返回-->true
    </isSupportPicHttpsCertificatesManagement>
    <isSupportAKSKImport>
      <!--ro, opt, bool, 是否支持AKSK导入, desc:true支持返回,不支持不返回-->true
    </isSupportAKSKImport>
    <isSupportAKSKExport>
      <!--ro, opt, bool, 是否支持AKSK导出, desc:true支持返回,不支持不返回-->true
    </isSupportAKSKExport>
    <isSupportAKSKReset>
      <!--ro, opt, bool, 是否支持AKSK重置, desc:true支持返回,不支持不返回-->true
    </isSupportAKSKReset>
    <ExportCertificateFile>
      <!--ro, opt, object, 是否支持导出证书, desc:对应URL:POST /ISAPI/Security/serverCertificate/exportCertificateFile-->
      <type opt="GB35114">
        <!--ro, req, enum, 支持的导出证书类型, subType:string, [GB35114#表示支持导出GB35114证书], attr:opt{req, string, 取值范围, range:[,]}, desc:GB35114-表示支持导出GB35114证书-->GB35114
      </type>
    </ExportCertificateFile>
    <isSupportGB351114FDWSFCertificate>
      <!--ro, opt, bool, 是否支持FDWSF证书管理,
desc:支持返回,不支持不返回,
      对应URL：/ISAPI/Security/GB351114/FDWSFCertificate/capabilities?format=json
      POST  /ISAPI/Security/GB351114/FDWSFCertificate?format=json
      GET    /ISAPI/Security/GB351114/FDWSFCertificate?format=json
      DELETE /ISAPI/Security/GB351114/FDWSFCertificate?format=json-->true
    </isSupportGB351114FDWSFCertificate>
  </SecurityCap>
  <EventCap>
    <!--ro, opt, object, 事件能力-->
    <isSupportHDFull>
      <!--ro, opt, bool, 是否支持硬盘满报警-->true
    </isSupportHDFull>
    <isSupportHDError>
      <!--ro, opt, bool, 是否支持硬盘错误报警-->true
    </isSupportHDError>
    <isSupportNicBroken>
      <!--ro, opt, bool, 是否支持网络断开事件-->true
    </isSupportNicBroken>
    <isSupportIpConflict>
      <!--ro, opt, bool, 是否支持IP地址冲突事件-->true
    </isSupportIpConflict>
    <isSupportIllAccess>
      <!--ro, opt, bool, 是否支持非法访问事件-->true
    </isSupportIllAccess>
    <isSupportViException>
      <!--ro, opt, bool, 是否支持视频输入异常(只针对模拟通道)-->true
    </isSupportViException>
    <isSupportViMismatch>
      <!--ro, opt, bool, 是否支持视频制式不匹配-->true
    </isSupportViMismatch>
    <isSupportRecordException>
      <!--ro, opt, bool, 是否支持录像异常-->true
    </isSupportRecordException>
    <isSupportRaidException>
      <!--ro, opt, bool, 是否支持阵列异常事件-->true
    </isSupportRaidException>
    <isSupportViResMismatch>
      <!--ro, opt, bool, 是否支持录像分辨率不匹配事件-->true
    </isSupportViResMismatch>
    <isSupportPOCException>
      <!--ro, opt, bool, 是否支持同轴供电异常事件-->true
    </isSupportPOCException>
    <isSupportSmartDetection>
      <!--ro, opt, bool, 是否支持Smart事件-->true
    </isSupportSmartDetection>
    <isSupportSpareException>
      <!--ro, opt, bool, 是否支持-->true
    </isSupportSpareException>
    <isSupportPoePowerException>
      <!--ro, opt, bool, 是否支持POE供电异常事件-->true
    </isSupportPoePowerException>
    <isSupportTriggerFocus>
      <!--ro, opt, bool, 是否支持虚焦异常-->true
    </isSupportTriggerFocus>
    <isSupportMotionDetection>
      <!--ro, opt, bool, 是否支持移动侦测-->true
    </isSupportMotionDetection>
    <isSupportVideoLoss>
      <!--ro, opt, bool, 是否支持视频丢失事件-->true
    </isSupportVideoLoss>
    <isSupportTamperDetection>
      <!--ro, opt, bool, 是否支持遮挡检测-->true
    </isSupportTamperDetection>
    <isSupportFireDetection>
      <!--ro, opt, bool, 是否支持火点检测事件-->true
    </isSupportFireDetection>
    <isSupportRegionEntrance>
      <!--ro, opt, bool, 是否支持进入区域事件-->true
    </isSupportRegionEntrance>
    <isSupportRegionExiting>
      <!--ro, opt, bool, 是否支持离开区域事件-->true
    </isSupportRegionExiting>
    <isSupportLoitering>
      <!--ro, opt, bool, 是否支持徘徊事件-->true
    </isSupportLoitering>
    <isSupportGroup>
      <!--ro, opt, bool, 是否支持人员聚集事件-->true
    </isSupportGroup>
    <isSupportRapidMove>
      <!--ro, opt, bool, 是否支持快速移动事件-->true
    </isSupportRapidMove>
    <isSupportParking>
      <!--ro, opt, bool, 是否支持停车侦测事件-->true
    </isSupportParking>
    <isSupportUnattendedBaggage>
      <!--ro, opt, bool, 是否支持物品遗留事件-->true
    </isSupportUnattendedBaggage>
    <isSupportAttendedBaggage>
      <!--ro, opt, bool, 是否支持物品拿取事件-->true
    </isSupportAttendedBaggage>
    <isSupportHumanAttribute>
      <!--ro, opt, bool, 是否支持人体属性-->true
    </isSupportHumanAttribute>
    <isSupportHumanRecognition>
      <!--ro, opt, bool, 是否支持目标抓拍事件-->true
    </isSupportHumanRecognition>
    <isSupportFaceContrast>
      <!--ro, opt, bool, 是否支持人脸比对事件-->true
    </isSupportFaceContrast>
    <isSupportFaceLib>
      <!--ro, opt, bool, 前端支持按人脸库联动, desc:接口:/ISAPI/Event/schedules/faceLib/<ID>/<FDID>-->true
    </isSupportFaceLib>
    <isSupportBlackListFaceContrast>
      <!--ro, opt, bool, 是否支持非授权名单人脸比对事件-->true
    </isSupportBlackListFaceContrast>
    <isSupportWhiteListFaceContrast>
      <!--ro, opt, bool, 是否支持授权名单人脸比对事件-->true
    </isSupportWhiteListFaceContrast>
    <isSupportillegalParking>
      <!--ro, opt, bool, 是否支持违停检测-->true
    </isSupportillegalParking>
    <isSupportPedestrian>
      <!--ro, opt, bool, 是否支持行人检测-->true
    </isSupportPedestrian>
    <isSupportTrafficAccident>
      <!--ro, opt, bool, 是否支持交通事故检测-->true
    </isSupportTrafficAccident>
    <isSupportConstruction>
      <!--ro, opt, bool, 是否支持施工检测-->true
    </isSupportConstruction>
    <isSupportRoadBlock>
      <!--ro, opt, bool, 是否支持路障检测-->true
    </isSupportRoadBlock>
    <isSupportAbandonedObject>
      <!--ro, opt, bool, 是否支持抛洒物检测-->true
    </isSupportAbandonedObject>
    <isSupportParallelParking>
      <!--ro, opt, bool, 是否支持侧方位停车检测-->true
    </isSupportParallelParking>
    <isSupportParkingState>
      <!--ro, opt, bool, 是否支持车位状态检测-->true
    </isSupportParkingState>
    <isSupportTrafficJam>
      <!--ro, opt, bool, 是否支持交通堵塞检测(旧)-->true
    </isSupportTrafficJam>
    <isSupportCongestion>
      <!--ro, opt, bool, 是否支持交通堵塞检测-->true
    </isSupportCongestion>
    <isSupportStudentsStoodUp>
      <!--ro, opt, bool, 是否支持学生起立检测事件-->true
    </isSupportStudentsStoodUp>
    <isSupportFramesPeopleCounting>
      <!--ro, opt, bool, 是否支持区域人数统计事件-->true
    </isSupportFramesPeopleCounting>
    <isSupportFaceSnap>
      <!--ro, opt, bool, 是否支持人脸抓拍事件-->true
    </isSupportFaceSnap>
    <isSupportPersonDensityDetection>
      <!--ro, opt, bool, 是否支持人员密度检测-->true
    </isSupportPersonDensityDetection>
    <HFPD>
      <!--ro, opt, bool, 是否支持高频人员检测-->true
    </HFPD>
    <isSupportPersonQueueDetection>
      <!--ro, opt, bool, 是否支持排队检测事件-->true
    </isSupportPersonQueueDetection>
    <isSupportVehicleStatistics>
      <!--ro, opt, bool, 是否支持车辆统计事件-->true
    </isSupportVehicleStatistics>
    <isSupportFaceThermometry>
      <!--ro, opt, bool, 是否支持人脸测温-->true
    </isSupportFaceThermometry>
    <isSupportSafetyHelmetDetection>
      <!--ro, opt, bool, 是否支持安全帽检测-->true
    </isSupportSafetyHelmetDetection>
    <isSupportPowerSupplyCabinet>
      <!--ro, opt, bool, 是否支持机柜供电检测-->true
    </isSupportPowerSupplyCabinet>
    <isSupportSensorDetection>
      <!--ro, opt, bool, 是否支持传感器检测-->true
    </isSupportSensorDetection>
    <isSupportSignAbnormal>
      <!--ro, opt, bool, 是否支持体征异常功能-->true
    </isSupportSignAbnormal>
    <isSupportTeacherBehaviorDetect>
      <!--ro, opt, bool, 是否支持教师行为检测-->true
    </isSupportTeacherBehaviorDetect>
    <isSupportCityManagement>
      <!--ro, opt, bool, 是否支持智慧城管-->true
    </isSupportCityManagement>
    <isSupportMixedTargetDetection>
      <!--ro, opt, bool, 是否支持混合目标检测事件-->true
    </isSupportMixedTargetDetection>
    <isSupportFaceSnapModeling>
      <!--ro, opt, bool, 是否支持人脸建模事件-->true
    </isSupportFaceSnapModeling>
    <isSupportIntersectionAnalysis>
      <!--ro, opt, bool, 是否支持路口分析-->true
    </isSupportIntersectionAnalysis>
    <isSupportTriggerCapCheck>
      <!--ro, opt, bool, 是否支持触发联动能力校验, desc:该节点表示URL(GET /ISAPI/Event/triggersCap)中的能力做过验证，在事件联动上可以完全按照能力进行显示；增加这个能力节点意义在给我们的WEB做能力判断显示；如果外部客户集成的时候反馈URL(GET /ISAPI/Event/triggersCap)存在问题，需要设备修改升级程序解决URL功能返回不一致的问题-->true
    </isSupportTriggerCapCheck>
    <isSupportLuma>
      <!--ro, opt, bool, VQD 亮度异常-->true
    </isSupportLuma>
    <isSupportChroma>
      <!--ro, opt, bool, VQD 图像偏色-->true
    </isSupportChroma>
    <isSupportSnow>
      <!--ro, opt, bool, VQD 雪花干扰-->true
    </isSupportSnow>
    <isSupportStreak>
      <!--ro, opt, bool, VQD 条纹干扰-->true
    </isSupportStreak>
    <isSupportFreeze>
      <!--ro, opt, bool, VQD 画面冻结-->true
    </isSupportFreeze>
    <isSupportSigLose>
      <!--ro, opt, bool, VQD 信号丢失-->true
    </isSupportSigLose>
    <isSupportClarity>
      <!--ro, opt, bool, VQD 清晰度异常-->true
    </isSupportClarity>
    <isSupportJitter>
      <!--ro, opt, bool, VQD 画面抖动-->true
    </isSupportJitter>
    <isSupportBlock>
      <!--ro, opt, bool, VQD 视频遮挡-->true
    </isSupportBlock>
    <isSupportFlowers>
      <!--ro, opt, bool, VQD 图像模糊报警-->true
    </isSupportFlowers>
    <isSupportNoise>
      <!--ro, opt, bool, VQD 花屏-->true
    </isSupportNoise>
    <isSupportGhost>
      <!--ro, opt, bool, VQD 噪点-->true
    </isSupportGhost>
    <isSupportPurple>
      <!--ro, opt, bool, VQD 紫边-->true
    </isSupportPurple>
    <isSupportICR>
      <!--ro, opt, bool, VQD ICP-->true
    </isSupportICR>
    <isSupportProtectiveFilm>
      <!--ro, opt, bool, VQD 保护膜未撕-->true
    </isSupportProtectiveFilm>
    <isSupportVoltageInstable>
      <!--ro, opt, bool, 是否支持电源电压波动异常-->true
    </isSupportVoltageInstable>
    <isSupportCertificateRevocation>
      <!--ro, opt, bool, 是否支持证书失效报警-->true
    </isSupportCertificateRevocation>
    <isSupportSysStorFull>
      <!--ro, opt, bool, 是否支持集群系统存储满异常-->true
    </isSupportSysStorFull>
    <isSupportVersionAbnormal>
      <!--ro, opt, bool, 是否支持集群版本异常-->true
    </isSupportVersionAbnormal>
    <isSupportNodeOffline>
      <!--ro, opt, bool, 是否支持设备掉线-->true
    </isSupportNodeOffline>
    <isSupportRecordCycleAbnormal>
      <!--ro, opt, bool, 是否支持录像周期不足-->true
    </isSupportRecordCycleAbnormal>
    <isSupportIpcTransferAbnormal>
      <!--ro, opt, bool, 是否支持IPC迁移失败-->true
    </isSupportIpcTransferAbnormal>
    <isSupportDrivingBehaviorDetect>
      <!--ro, opt, bool, 是否支持驾驶行为检测-->true
    </isSupportDrivingBehaviorDetect>
    <isSupportWasteGasDetection>
      <!--ro, opt, bool, 是否支持废气排放监测-->true
    </isSupportWasteGasDetection>
    <isSupportGreyScaleAlarm>
      <!--ro, opt, bool, 是否支持灰度报警-->true
    </isSupportGreyScaleAlarm>
    <isSupportPTLocking>
      <!--ro, opt, bool, 是否支持云台堵转异常-->true
    </isSupportPTLocking>
    <isSupportNoMaskDetection>
      <!--ro, opt, bool, 是否支持未戴口罩检测-->true
    </isSupportNoMaskDetection>
    <isSupportTMPA>
      <!--ro, opt, bool, 是否支持人脸测温预警联动-->true
    </isSupportTMPA>
    <RuleScheduleCap>
      <!--ro, opt, object, 按规则时间布防能力-->
      <isSupportCityManagement>
        <!--ro, opt, bool, 智慧城管是否支持按规则时间布防-->true
      </isSupportCityManagement>
    </RuleScheduleCap>
    <RegionScheduleCap>
      <!--ro, opt, object, 按区域时间布防能力-->
      <isSupportPersonDensityDetection>
        <!--ro, opt, bool, 人员密度是否支持按区域时间布防-->true
      </isSupportPersonDensityDetection>
      <isSupportPersonQueueDetection>
        <!--ro, opt, bool, 排队检测(区域关注度)是否支持按区域时间布防-->true
      </isSupportPersonQueueDetection>
    </RegionScheduleCap>
    <isSupportThermalCalibrationFileException>
      <!--ro, opt, bool, 是否支持测温标定文件异常-->true
    </isSupportThermalCalibrationFileException>
    <isSupportTemperatureIntervalMeasurement>
      <!--ro, opt, bool, 是否支持温度区间检测-->true
    </isSupportTemperatureIntervalMeasurement>
    <isSupportThermalVehicleDetection>
      <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
    </isSupportThermalVehicleDetection>
    <isSupportWaterQualityDetection>
      <!--ro, opt, bool, 是否支持水质检测报警-->true
    </isSupportWaterQualityDetection>
    <isSupportWaterLevelDetection>
      <!--ro, opt, bool, 是否支持水位高度检测-->true
    </isSupportWaterLevelDetection>
    <isSupportDeviceTemperatureAbnormal>
      <!--ro, opt, bool, 是否支持设备温度异常-->true
    </isSupportDeviceTemperatureAbnormal>
    <isSupportObjectAccumulationDetection>
      <!--ro, opt, bool, 是否支持堆积检测-->true
    </isSupportObjectAccumulationDetection>
    <isSupportAppAbnormal>
      <!--ro, opt, bool, 是否支持APP异常报警事件-->true
    </isSupportAppAbnormal>
  </EventCap>
  <ITCCap>
    <!--ro, opt, object, /ISAPI/ITC/capability中的isSupportVehicleDetection and /ISAPI/ITC/capabilities-->
    <isSupportITC>
      <!--ro, opt, bool, 是否支持ITC-->true
    </isSupportITC>
    <isSupportIllegalDictionary>
      <!--ro, opt, bool, 是否支持违法字典-->true
    </isSupportIllegalDictionary>
    <isSupportVehicleDetection>
      <!--ro, opt, bool, 是否支持车辆检测-->true
    </isSupportVehicleDetection>
    <isSupportHVTVehicleDetection>
      <!--ro, opt, bool, 是否支持混行车辆检测-->true
    </isSupportHVTVehicleDetection>
    <isSupportlicencePlateAuditData>
      <!--ro, opt, bool, 是否支持导入/导出车牌非授权名单数据-->true
    </isSupportlicencePlateAuditData>
    <isSupportSearchLPListAudit>
      <!--ro, opt, bool, 车牌非授权名单查询-->true
    </isSupportSearchLPListAudit>
    <isSupportVehicleDetectionManualTrigger opt="false,true">
      <!--ro, opt, bool, 车辆检测手动触发, attr:opt{opt, string, 可选项, range:[,]}-->true
    </isSupportVehicleDetectionManualTrigger>
    <isSupportSyncSignalOutput>
      <!--ro, opt, bool, 是否支持输出参数-->true
    </isSupportSyncSignalOutput>
  </ITCCap>
  <ImageCap>
    <!--ro, opt, object, 图像参数能力-->
    <isSupportRegionalExposure>
      <!--ro, opt, bool, 区域曝光-->true
    </isSupportRegionalExposure>
    <isSupportRegionalFocus>
      <!--ro, opt, bool, 区域对焦-->true
    </isSupportRegionalFocus>
  </ImageCap>
  <RacmCap>
    <!--ro, opt, object, 图片搜索之前是一个界面-->
    <isSupportZeroChan>
      <!--ro, opt, bool, 是否支持零通道, desc:接口:/ISAPI/ContentMgmt/ZeroVideo/channels-->true
    </isSupportZeroChan>
    <inputProxyNums>
      <!--ro, opt, int, 支持的数字通道数, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->1
    </inputProxyNums>
    <eSATANums>
      <!--ro, opt, int, 支持的eSATA数目, range:[,], step:, unit:, unitType:-->1
    </eSATANums>
    <miniSASNums>
      <!--ro, opt, int, 支持的miniSAS数目, range:[,], step:, unit:, unitType:-->1
    </miniSASNums>
    <nasNums>
      <!--ro, opt, int, 支持的nas数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/Storage/nas-->1
    </nasNums>
    <ipSanNums>
      <!--ro, opt, int, 支持的ipsan数目, range:[,], step:, unit:, unitType:-->1
    </ipSanNums>
    <isSupportRaid>
      <!--ro, opt, bool, 是否支持Raid-->true
    </isSupportRaid>
    <isSupportExtHdCfg>
      <!--ro, opt, bool, 是否支持硬盘高级管理-->true
    </isSupportExtHdCfg>
    <isSupportTransCode>
      <!--ro, opt, bool, 是否支持转码预览-->true
    </isSupportTransCode>
    <isSupportIpcImport>
      <!--ro, opt, bool, 是否支持IPC配置文件导入, desc:接口:/ISAPI/ContentMgmt/InputProxy/ipcConfig-->true
    </isSupportIpcImport>
    <NasMountType>
      <!--ro, opt, object, Nas加载类型-->
      <isNFSSupportAuthentication>
        <!--ro, opt, bool, 未是否支持CIFS身份验证-->true
      </isNFSSupportAuthentication>
      <isCIFSSupportAuthentication>
        <!--ro, opt, bool, 是否支持CIFS身份验证-->true
      </isCIFSSupportAuthentication>
    </NasMountType>
    <isSupportIpcStreamType>
      <!--ro, opt, bool, 是否支持Ipc码流类型-->true
    </isSupportIpcStreamType>
    <isSupportIOInputProxy>
      <!--ro, opt, bool, 是否支持动态IO输入通道, desc:接口:/ISAPI/ContentMgmt/IOProxy/inputs-->true
    </isSupportIOInputProxy>
    <isSupportIOOutputProxy>
      <!--ro, opt, bool, 是否支持动态IO输出通道, desc:接口:/ISAPI/ContentMgmt/IOProxy/outputs-->true
    </isSupportIOOutputProxy>
    <isSupportPTZRs485Proxy>
      <!--ro, opt, bool, 是否支持动态PTZ485通道, desc:接口:/ISAPI/ContentMgmt/PTZCtrlProxy/capabilities-->true
    </isSupportPTZRs485Proxy>
    <isSupportSrcIDSearch>
      <!--ro, opt, bool, 是否支持流ID搜索-->true
    </isSupportSrcIDSearch>
    <isSupportReversePlayback>
      <!--ro, opt, bool, 是否支持倒放-->true
    </isSupportReversePlayback>
    <isSupportSMARTTest>
      <!--ro, opt, bool, 是否支持硬盘检测功能, desc:接口:/ISAPI/ContentMgmt/Storage/hdd/SMARTTest/config-->true
    </isSupportSMARTTest>
    <isSupportDownloadByTime>
      <!--ro, opt, bool, 是否支持按时间下载, desc:接口:/ISAPI/ContentMgmt/download/capabilities-->true
    </isSupportDownloadByTime>
    <pictureSearchType opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,     regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyHelmet,     personQueueCounting,personQueueTime,violentMotion,leavePosition,advReachHeight,peopleNumChange,mixedTargetDetection,illegalParking,pedestrian,construction,roadblock,     abandonedObject,trafficAccident,fogDetection,smokeDetection,personDensity,failDown,accessController,videoInterCom,GJD,Luminite,OPTEX,securityControlPanel,getUp,toiletTarry,     playCellphone,vehicleMonitor,vibrationDetection,running,retention,spacingChange,yardTarry,keyPersonGetUp,sitQuietly,standUp,plateRecognition,smoking,onThePhone,fatigueDriving,     notLookingStraightAhead,leaveThePost,seatBelt,sunglasses,identityAbnormal,ForwardCollisionWarning,LaneDepartureWarning,BlindSpotDetection,HeadwayMonitoringWarning,     PedestrianCollisionWarning,SuddenSpeedUp,SuddenSpeedDown,SuddenLeftTurn,SuddenRightTurn,Turnover,NotYieldToPedestrian,unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad,     illegalHeap,illegalParkingofNon-MotorVehicle,illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,allPic,ATMPanel,     ATMSurround,ATMFace,ATMSafetyCabin,loitering,smokeDetectAlarm">
      <!--ro, opt, string, 图片查找类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </pictureSearchType>
    <recordSearchType opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,     regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyHelmet,     failDown,personDensityDetection,smokeDetection,vibrationDetection,unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad,illegalHeap,illegalParkingofNon-MotorVehicle,     illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,ATMPanel,ATMSurround,ATMFace,ATMSafetyCabin">
      <!--ro, opt, string, 录像查找类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:llEvent-所有事件,CMR-定时抓图,MOTION-移动侦测抓图,ALARM-报警抓图,EDR-报警|移动侦测抓图,ALARMANDMOTION-报警&移动侦测抓图,Command,pir-PIR报警,wlsensor-无线报警,callhelp-呼救报警,facedetection-人脸侦测,FieldDetection-入侵区域侦测,scenechangedetection-场景变更侦测,LineDetection-越界侦测-->null
    </recordSearchType>
    <isSupportActivateIpc>
      <!--ro, opt, bool, 是否支持激活IPC-->true
    </isSupportActivateIpc>
    <isSupportCheckIpcSecurity>
      <!--ro, opt, object, 设备密码检测-->
      <isSupportCheckPassword>
        <!--ro, opt, bool, 是否支持密码检测-->true
      </isSupportCheckPassword>
    </isSupportCheckIpcSecurity>
    <isSupportMainAndSubRecord>
      <!--ro, opt, bool, 是否支持主子码流录像-->true
    </isSupportMainAndSubRecord>
    <isSupportSyncIPCPassword>
      <!--ro, opt, bool, 是否支持同步IPC密码-->true
    </isSupportSyncIPCPassword>
    <isSupportTransferIPC>
      <!--ro, opt, bool, 是否支持IPC透传功能-->true
    </isSupportTransferIPC>
    <isSupportSmartSearch>
      <!--ro, opt, bool, 是否支持录像智能后检索, desc:接口:/ISAPI/ContentMgmt/SmartSearch/capabilities-->true
    </isSupportSmartSearch>
    <isSupportPOS>
      <!--ro, opt, bool, 是否支持POS-->true
    </isSupportPOS>
    <isSupportLinkNum>
      <!--ro, opt, bool, 是否支持链接数目获取, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>/linkNum-->true
    </isSupportLinkNum>
    <isSupportPassBackBasicCfg>
      <!--ro, opt, bool, 支持CVR回传功能基础能力, desc:接口:/ISAPI/ContentMgmt/record/passback/basicCfg/capabilities-->true
    </isSupportPassBackBasicCfg>
    <PassBackTaskConfig>
      <!--ro, opt, object, CVR回传功能任务管理能力-->
      <isSupportAddTask>
        <!--ro, opt, bool, 支持任务添加, desc:接口:/ISAPI/ContentMgmt/record/passback/addTask/capabilities-->true
      </isSupportAddTask>
      <isSupportSearchTask>
        <!--ro, opt, bool, 支持任务查找, desc:接口:/ISAPI/ContentMgmt/record/passback/searchTask/capabilities-->true
      </isSupportSearchTask>
      <isSupportControlTask>
        <!--ro, opt, bool, 支持任务控制, desc:接口:/ISAPI/ContentMgmt/record/passback/controlTask/capabilities-->true
      </isSupportControlTask>
      <isSupportDeleteTask>
        <!--ro, opt, bool, 支持任务删除, desc:接口:/ISAPI/ContentMgmt/record/passback/deleteTask/capabilities-->true
      </isSupportDeleteTask>
    </PassBackTaskConfig>
    <PassBackPlanConfig>
      <!--ro, opt, object, CVR计划回传功能能力-->
      <isSupportAddPlan>
        <!--ro, opt, bool, 支持计划添加, desc:接口:/ISAPI/ContentMgmt/record/passback/addPlan/capabilities-->true
      </isSupportAddPlan>
      <isSupportSearchPlan>
        <!--ro, opt, bool, 支持计划查找, desc:接口:/ISAPI/ContentMgmt/record/passback/searchPlan/capabilities-->true
      </isSupportSearchPlan>
      <isSupportDeletePlan>
        <!--ro, opt, bool, 支持计划删除, desc:接口:/ISAPI/ContentMgmt/record/passback/deletePlan/capabilities-->true
      </isSupportDeletePlan>
    </PassBackPlanConfig>
    <IRAIDCap>
      <!--ro, opt, object, 网络阵列能力-->
      <isSupportIRAIDRapidConfiguration>
        <!--ro, opt, bool, 是否支持IRAID快速配置, desc:接口:/ISAPI/ContentMgmt/Storage/IRAID/RapidConfiguration/capabilities-->true
      </isSupportIRAIDRapidConfiguration>
    </IRAIDCap>
    <isSupportStorageExtraInfo>
      <!--ro, opt, bool, 支持存储额外信息配置能力, desc:接口:/ISAPI/ContentMgmt/Storage/ExtraInfo/capabilities-->true
    </isSupportStorageExtraInfo>
    <isSupportRecordStatus>
      <!--ro, opt, bool, 是否支持获取录像状态, desc:接口:/ISAPI/ContentMgmt/channels/<ID>/record/capabilities-->true
    </isSupportRecordStatus>
    <isSupportRacmChannelsCap>
      <!--ro, opt, bool, 是否支持通道级Rcam能力, desc:接口:/ISAPI/ContentMgmt/channels/<ID>/capabilities-->true
    </isSupportRacmChannelsCap>
    <LockCap>
      <!--ro, opt, object, 录像加解锁, desc:接口:/ISAPI/ContentMgmt/record/control/locks/capabilities-->null
    </LockCap>
    <isSupportForamtAll>
      <!--ro, opt, bool, 是否支持格式化所有硬盘, desc:接口:/ISAPI/ContentMgmt/Storage/hdd/format-->true
    </isSupportForamtAll>
    <isSupportExtendCabinetCfg>
      <!--ro, opt, bool, 支持扩展柜配置能力 对应/ISAPI/ContentMgmt/Storage/ExtendCabinet/capabilities-->true
    </isSupportExtendCabinetCfg>
    <diskGroupNums>
      <!--ro, opt, int, 支持的盘组数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/Storage/diskGroup-->1
    </diskGroupNums>
    <ExternalDevice>
      <!--ro, opt, object, 外置设备存储-->
      <USB>
        <!--ro, opt, object, USB信息-->
        <debugLogOutput>
          <!--ro, opt, bool, 调试日志开启使能, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true
        </debugLogOutput>
        <isSupportCapturePackage>
          <!--ro, opt, bool, USB抓包过滤配置功能是否支持, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json-->true
        </isSupportCapturePackage>
        <isSupportStreamStorage>
          <!--ro, opt, bool, 是否支持U盘码流保存功能, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB/streamStorage/capabilities?format=json-->true
        </isSupportStreamStorage>
      </USB>
    </ExternalDevice>
    <customProtocolNums>
      <!--ro, opt, int, IPC接入支持的自定义协议数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/InputProxy/customProtocols支持的自定义协议数目-->1
    </customProtocolNums>
    <isSupportIPCTiming>
      <!--ro, opt, bool, 是否支持对IPC校时, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<enableTiming>字段是否支持-->true
    </isSupportIPCTiming>
    <isSupportLogConfig>
      <!--ro, opt, bool, 是否支持日志配置, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true
    </isSupportLogConfig>
    <SecurityLog>
      <!--ro, opt, object, 设备安全日志能力-->
      <isSupportSecurityLog>
        <!--ro, opt, bool, 是否支持安全日志-->true
      </isSupportSecurityLog>
      <isSupportLogServer>
        <!--ro, opt, bool, 是否支持安全审计日志服务器配置-->true
      </isSupportLogServer>
      <isSupportLogServerTest>
        <!--ro, opt, bool, 是否支持安全审计日志服务器配置测试-->true
      </isSupportLogServerTest>
      <SecurityLogTypeList>
        <!--ro, req, array, 安全日志类型列表, subType:object, range:[,]-->
        <SecurityLogType>
          <!--ro, opt, object, 安全日志类型-->
          <primaryType>
            <!--ro, req, string, 日志主类型, range:[,], desc:事件-Event,操作-Operation,其他-Other,全部类型-All-->null
          </primaryType>
          <secondaryType opt="all">
            <!--ro, req, string, 日志次类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:其他类型参考附件表格-->null
          </secondaryType>
        </SecurityLogType>
      </SecurityLogTypeList>
    </SecurityLog>
    <isSupportGetBackupDevice>
      <!--ro, opt, bool, 是否支持获取备份设备, desc:接口:/ISAPI/ContentMgmt/Storage/backup/device?format=json-->true
    </isSupportGetBackupDevice>
    <isSupportAutoBackup>
      <!--ro, opt, bool, 是否支持自动备份, desc:接口:/ISAPI/ContentMgmt/Storage/backup/auto/capabilities?format=json-->true
    </isSupportAutoBackup>
    <certificateValidationEnabled>
      <!--ro, opt, bool, 启用证书验证使能, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<certificateValidationEnabled>字段是否支持-->true
    </certificateValidationEnabled>
    <defaultAdminPortEnabled>
      <!--ro, opt, bool, 默认通信端口使能, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<defaultAdminPortEnabled>字段是否支持-->true
    </defaultAdminPortEnabled>
    <isSupportLogDataPackage>
      <!--ro, opt, bool, 是否支持日志文件导出, desc:接口:/ISAPI/ContentMgmt/logSearch/dataPackage-->true
    </isSupportLogDataPackage>
    <logSearchTimeSpanNums>
      <!--ro, opt, int, 日志查询时间段数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/logSearch中CMSearchDescription->timeSpanList字段-->1
    </logSearchTimeSpanNums>
    <CloudStorageServerCap>
      <!--ro, opt, object, 云存储服务器配置能力-->
      <isSupportCloudStorageParameter>
        <!--ro, opt, bool, 是否支持云存储参数配置, desc:接口:/ISAPI/ContentMgmt/Storage/cloudServer/capabilities?format=json-->true
      </isSupportCloudStorageParameter>
      <isSupportCloudStoragePool>
        <!--ro, opt, bool, 是否支持云存储池配置, desc:接口:/ISAPI/ContentMgmt/Storage/cloudServer/pool/capabilities?format=json-->true
      </isSupportCloudStoragePool>
      <supportChannelsNum>
        <!--ro, opt, int, 云存储支持接入的通道数目, range:[,], step:, unit:, unitType:, desc:不返回该节点表示设备全通道支持, 返回该节点表示云存储设备有几个通道支持云存储(目前不返回具体支持的通道号)-->1
      </supportChannelsNum>
    </CloudStorageServerCap>
    <isSupportWebPrivatePlaybackByUTC>
      <!--ro, opt, bool, web私有协议回放支持UTC-->true
    </isSupportWebPrivatePlaybackByUTC>
    <isSupportFindCommonFileByUTC>
      <!--ro, opt, bool, 普通文件查找（私有协议）支持UTC-->true
    </isSupportFindCommonFileByUTC>
    <isSupportFindEventFileByUTC>
      <!--ro, opt, bool, 事件文件查找（私有协议）支持UTC-->true
    </isSupportFindEventFileByUTC>
    <isSupportSmartSearchRecordByUTC>
      <!--ro, opt, bool, 智能查找录像（私有协议）支持UTC-->true
    </isSupportSmartSearchRecordByUTC>
    <isSupportMRDSearchByTimeZone>
      <!--ro, opt, bool, 月历搜索（私有协议）支持UTC-->true
    </isSupportMRDSearchByTimeZone>
    <isSupportSearchRecordLabelByUTC>
      <!--ro, opt, bool, 查找录像标签（私有协议）支持UTC-->true
    </isSupportSearchRecordLabelByUTC>
    <isSupportSearchPictureByUTC>
      <!--ro, opt, bool, 普通查找图片（私有协议）支持UTC-->true
    </isSupportSearchPictureByUTC>
    <isSupportSmartSearchPictureByUTC>
      <!--ro, opt, bool, 智能查找图片（私有协议）支持UTC-->true
    </isSupportSmartSearchPictureByUTC>
    <isSupportFindLogByUTC>
      <!--ro, opt, bool, 查找日志（私有协议）支持UTC-->true
    </isSupportFindLogByUTC>
    <isSupportUploadRecordByUTC>
      <!--ro, opt, bool, 上传到云存储搜索（私有协议）支持UTC-->true
    </isSupportUploadRecordByUTC>
    <isSupportPlaybackByUTC>
      <!--ro, opt, bool, 按时间回放和按时间定位（私有协议）支持UTC-->true
    </isSupportPlaybackByUTC>
    <isSupportFaceDetecttionAlarmByTimeZone>
      <!--ro, opt, bool, 未找到文档-->true
    </isSupportFaceDetecttionAlarmByTimeZone>
    <isSupportSourceModify>
      <!--ro, opt, bool, 局域网IPC配置是否支持, desc:接口:/ISAPI/ContentMgmt/InputProxy/sourceModify/capabilities-->true
    </isSupportSourceModify>
    <isSupportCountingSearchByUTC>
      <!--ro, opt, bool, 客流量统计功能支持UTC-->true
    </isSupportCountingSearchByUTC>
    <isSupportCluster>
      <!--ro, opt, bool, 是否支持Cluster功能, desc:接口:/ISAPI/ContentMgmt/Cluster-->true
    </isSupportCluster>
    <supportAIDTFSType opt="illegalParking,wrongdirection,crosslane,vehicleexist,lanechange,turnround,evidence">
      <!--ro, opt, string, AID和TFS同时支持的事件图片查找类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </supportAIDTFSType>
    <isSupportMisinfoStateSearch>
      <!--ro, opt, bool, 是否支持按误报状态查询-->true
    </isSupportMisinfoStateSearch>
    <isSupportOneKeyOperationStorageData>
      <!--ro, opt, bool, 是否支持存储数据一键配置, desc:接口:/ISAPI/ContentMgmt/Storage/oneKey/capabilities?format=json-->true
    </isSupportOneKeyOperationStorageData>
    <eventRecordSearch>
      <!--ro, opt, object, 是否支持按事件查找录像, desc:接口:/ISAPI/ContentMgmt/eventRecordSearch?format=json-->
      <eventType opt="faceContrast,faceSnap,vehicleMatchResult,hawkResult">
        <!--ro, opt, string, 事件类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </eventType>
      <auxEventType opt="faceContrastFailure,faceContrastSuccess">
        <!--ro, opt, string, 搜索事件辅类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </auxEventType>
    </eventRecordSearch>
    <isSupportManualRecord>
      <!--ro, opt, bool, 是否支持手动录像 , desc:接口:/ISAPI/ContentMgmt/record/control/manual/capabilities?format=json-->true
    </isSupportManualRecord>
    <isSupportRemark>
      <!--ro, opt, bool, 是否支持文件标注-->true
    </isSupportRemark>
    <FileUpload>
      <!--ro, opt, object, 文件主动上传-->
      <enabled>
        <!--ro, req, bool, 是否支持文件上传使能-->true
      </enabled>
    </FileUpload>
    <PoliceInfoUpload>
      <!--ro, opt, object, 警员信息主动上传-->
      <enabled>
        <!--ro, req, bool, 是否支持警员信息上传使能-->true
      </enabled>
    </PoliceInfoUpload>
    <PoliceInfo>
      <!--ro, opt, object, 警员信息-->
      <policeID>
        <!--ro, opt, bool, 是否支持警员ID-->true
      </policeID>
      <policeCode>
        <!--ro, opt, bool, 是否支持警员编号-->true
      </policeCode>
      <policeName>
        <!--ro, opt, bool, 是否支持警员姓名-->true
      </policeName>
      <password>
        <!--ro, opt, bool, 是否支持警员密码-->true
      </password>
      <deviceID>
        <!--ro, opt, bool, 是否支持设备ID-->true
      </deviceID>
    </PoliceInfo>
    <isSupportAssignChannelID>
      <!--ro, opt, bool, 是否支持添加IPC时指定接入通道号, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<channelID>字段是否支持-->true
    </isSupportAssignChannelID>
    <isSupportAssignStreamID>
      <!--ro, opt, bool, 是否支持通道模式添加IPC时指定接入通道对应流ID, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<streamID>字段是否支持-->true
    </isSupportAssignStreamID>
    <PictureSearchSubTypeList>
      <!--ro, opt, array, 图片搜索子类型列表, subType:object, range:[,]-->
      <PictureSearchSubType>
        <!--ro, opt, object, 图片搜索子类型-->
        <mainType>
          <!--ro, req, string, 搜索图片的主事件类型, range:[,]-->null
        </mainType>
        <subType opt="all,motorVehicle,nonMotorVehicle,pedestrian">
          <!--ro, req, string, 图片搜索每个主类型对应的子类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
        </subType>
      </PictureSearchSubType>
    </PictureSearchSubTypeList>
    <isSupportPlaybackStreamIDByUTC>
      <!--ro, opt, bool, 按流ID时间回放（私有协议）支持UTC-->true
    </isSupportPlaybackStreamIDByUTC>
    <isSupportTimeLockStreamIDByUTC>
      <!--ro, opt, bool, 按流ID对录像段进行加锁和解锁（私有协议）支持UTC-->true
    </isSupportTimeLockStreamIDByUTC>
    <isSupportTimeSearch>
      <!--ro, opt, bool, 是否支持搜索通道的录像起止时间, desc:接口:/ISAPI/ContentMgmt/time/search?format=json-->true
    </isSupportTimeSearch>
    <behaviorEventPicSearch opt="allBehaviorEvent,running,group,violentMotion,failDown,playCellphone,peopleNumChange,leavePosition,retention,sleepOnduty">
      <!--ro, opt, string, 图片搜索支持的异常行为识别事件, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </behaviorEventPicSearch>
    <perimeterEventPicSearch opt="allPerimeterEvent,linedetection,fielddetection,regionEntrance,regionExiting,loitering">
      <!--ro, opt, string, 图片搜索支持的周界防范事件, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </perimeterEventPicSearch>
    <isSupportSourceStatus>
      <!--ro, opt, bool, 是否支持接入源状态获取-->true
    </isSupportSourceStatus>
    <isSupportSSDSMARTTest>
      <!--ro, opt, bool, 是否支持SSDSmart检测, desc:接口:/ISAPI/ContentMgmt/Storage/ssd/<ID>/SMARTTest/start-->true
    </isSupportSSDSMARTTest>
    <MobileStorage>
      <!--ro, opt, object, 移动硬盘相关能力-->
      <isSupportGetFileTime>
        <!--ro, opt, bool, 是否支持获取移动硬盘中文件时间, desc:接口:/ISAPI/ContentMgmt/mobileStorage/fileTime/capabilities?format=json,目前支持非海康硬盘-->true
      </isSupportGetFileTime>
    </MobileStorage>
    <isSupportGetChannelList>
      <!--ro, opt, bool, 是否支持获取海康硬盘中的通道, desc:接口:/ISAPI/ContentMgmt/Storage/hdd/channelList/capabilities?format=json,目前支持海康硬盘-->true
    </isSupportGetChannelList>
    <isSupportCascade>
      <!--ro, opt, bool, 是否支持NVR级联拓扑结构参数配置-->true
    </isSupportCascade>
    <isSupportPictureInfo>
      <!--ro, opt, bool, 是否支持SD卡图片检索（抓拍机）-->true
    </isSupportPictureInfo>
    <isSupportCloudStorageModel>
      <!--ro, opt, bool, 是否支持云存储模式配置, desc:/ISAPI/ContentMgmt/Storage/CloudStorageModel/<channelID>/capabilities?format=json-->true
    </isSupportCloudStorageModel>
    <isSupportCloudStorageModelList>
      <!--ro, opt, bool, 是否支持云存储模式批量配置, desc:/ISAPI/ContentMgmt/Storage/CloudStorageModel/<channelID>?format=json-->true
    </isSupportCloudStorageModelList>
  </RacmCap>
  <PTZCtrlCap>
    <!--ro, opt, object, 设备云台能力-->
    <isSupportPatrols>
      <!--ro, opt, bool, 是否支持巡航-->true
    </isSupportPatrols>
    <isSupportCombinedPath>
      <!--ro, opt, bool, 是否支持云台组合路径-->true
    </isSupportCombinedPath>
  </PTZCtrlCap>
  <SmartCap>
    <!--ro, opt, object, 简易智能能力, desc:/ISAPI/Smart/capabilities-->
    <isSupportROI>
      <!--ro, opt, bool, 是否支持ROI编码配置-->true
    </isSupportROI>
    <isSupportFaceDetect>
      <!--ro, opt, bool, 是否支持人脸侦测-->true
    </isSupportFaceDetect>
    <isSupportIntelliTrace>
      <!--ro, opt, bool, 是否支持智能跟踪-->true
    </isSupportIntelliTrace>
    <isSupportFieldDetection>
      <!--ro, opt, bool, 是否支持区域入侵-->true
    </isSupportFieldDetection>
    <isSupportDefocusDetection>
      <!--ro, opt, bool, 是否支持虚焦侦测-->true
    </isSupportDefocusDetection>
    <isSupportAudioDetection>
      <!--ro, opt, bool, 是否支持音频侦测-->true
    </isSupportAudioDetection>
    <isSupportSceneChangeDetection>
      <!--ro, opt, bool, 是否支持场景变更-->true
    </isSupportSceneChangeDetection>
    <isSupportLineDetection>
      <!--ro, opt, bool, 是否支持越界侦测-->true
    </isSupportLineDetection>
    <isSupportRegionEntrance>
      <!--ro, opt, bool, 是否支持进入区域-->true
    </isSupportRegionEntrance>
    <isSupportRegionExiting>
      <!--ro, opt, bool, 是否支持离开区域-->true
    </isSupportRegionExiting>
    <isSupportLoitering>
      <!--ro, opt, bool, 是否支持徘徊侦测-->true
    </isSupportLoitering>
    <isSupportGroup>
      <!--ro, opt, bool, 是否支持人员聚集-->true
    </isSupportGroup>
    <isSupportRapidMove>
      <!--ro, opt, bool, 是否支持快速移动-->true
    </isSupportRapidMove>
    <isSupportParking>
      <!--ro, opt, bool, 是否支持停车检测-->true
    </isSupportParking>
    <isSupportUnattendedBaggage>
      <!--ro, opt, bool, 是否支持物品遗留-->true
    </isSupportUnattendedBaggage>
    <isSupportAttendedBaggage>
      <!--ro, opt, bool, 是否支持物品拿去-->true
    </isSupportAttendedBaggage>
    <isSupportPeopleDetection>
      <!--ro, opt, bool, 是否支持人体检测-->true
    </isSupportPeopleDetection>
    <isSupportSmartCalibration>
      <!--ro, opt, bool, 是否支持标定过滤尺寸-->true
    </isSupportSmartCalibration>
    <isSupportStorageDetection>
      <!--ro, opt, bool, 是否支持存储健康检测-->true
    </isSupportStorageDetection>
    <isSupportShipsDetection>
      <!--ro, opt, bool, 是否支持船只检测-->true
    </isSupportShipsDetection>
    <isSupportShield>
      <!--ro, opt, bool, 是否支持简易智能屏蔽区域配置-->true
    </isSupportShield>
    <isSupportAlgVersion>
      <!--ro, opt, bool, 是否支持算法版本-->true
    </isSupportAlgVersion>
    <isSupportVideoOverlap>
      <!--ro, opt, bool, 是否支持视频流设置叠加信息-->true
    </isSupportVideoOverlap>
    <isSupportParkingState>
      <!--ro, opt, bool, 是否支持停车状态-->true
    </isSupportParkingState>
    <isSupportChannelResource>
      <!--ro, opt, bool, 是否支持通道资源-->true
    </isSupportChannelResource>
    <isSupportAnalysisUnitSwitch opt="true,false">
      <!--ro, opt, bool, 是否支持分析单元切换, attr:opt{opt, string, 可选项, range:[,]}-->true
    </isSupportAnalysisUnitSwitch>
    <isSupportHFPD>
      <!--ro, opt, bool, 是否支持高频人员检测, desc:接口:/ISAPI/SDT/HFPD?format=json-->true
    </isSupportHFPD>
    <isSupportImageROI>
      <!--ro, opt, bool, 是否支持smartJpeg(图像ROI)-->true
    </isSupportImageROI>
    <isSupportLFPD>
      <!--ro, opt, bool, 是否支持低频人员检测, desc:接口:/ISAPI/SDT/LFPD?format=json-->true
    </isSupportLFPD>
  </SmartCap>
  <isSupportEhome>
    <!--ro, opt, bool, 是否支持ISUP功能-->true
  </isSupportEhome>
  <isSupportStreamingEncrypt>
    <!--ro, opt, bool, 是否支持码流加密-->true
  </isSupportStreamingEncrypt>
  <TestCap>
    <!--ro, opt, object, 测试能力-->
    <isSupportEmailTest>
      <!--ro, opt, bool, 是否支持邮箱测试-->true
    </isSupportEmailTest>
  </TestCap>
  <ImageMiscCap>
    <!--ro, opt, object, DPC能力-->
    <isSupportDPC>
      <!--ro, opt, bool, 是否支持DPC-->true
    </isSupportDPC>
  </ImageMiscCap>
  <PanoramaCap>
    <!--ro, opt, object, 全景通道能力-->
    <isSupportGeneratePanorama>
      <!--ro, opt, bool, 是否全景生成-->true
    </isSupportGeneratePanorama>
    <isSupportPanoramaPosition3D>
      <!--ro, opt, bool, 是否全景3D位置-->true
    </isSupportPanoramaPosition3D>
    <isSupportPreset>
      <!--ro, opt, bool, 是否支持全景预置点配置-->true
    </isSupportPreset>
  </PanoramaCap>
  <ThermalCap>
    <!--ro, opt, object, 热成像总能力, desc:接口:/ISAPI/Thermal/capabilities-->
    <isSupportFireDetection>
      <!--ro, opt, bool, 是否支持火点检测, desc:接口:/ISAPI/Thermal/channels/<ID>/fireDetection/capabilities-->true
    </isSupportFireDetection>
    <isFireFocusZoomSupport>
      <!--ro, opt, bool, 是否支持火点可见光镜头聚焦变倍, desc:接口:/ISAPI/Thermal/channels/<ID>/fireFocusZoom-->true
    </isFireFocusZoomSupport>
    <isSupportThermometry>
      <!--ro, opt, bool, 是否支持测温, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities-->true
    </isSupportThermometry>
    <isSupportRealtimeThermometry>
      <!--ro, opt, bool, 是否支持实时测温数据上传-->true
    </isSupportRealtimeThermometry>
    <isSupportThermIntell>
      <!--ro, opt, bool, 是否支持热成像智能互斥配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermIntell/capabilities-->true
    </isSupportThermIntell>
    <isSupportNVR>
      <!--ro, opt, bool, 用于客户端判断-->true
    </isSupportNVR>
    <isSupportThermometrySchedule>
      <!--ro, opt, bool, 是否支持测温布防时间, desc:接口:/ISAPI/Event/schedules/thermometry-->true
    </isSupportThermometrySchedule>
    <isSupportTemperatureSchedule>
      <!--ro, opt, bool, 是否支持温差布防时间, desc:接口:/ISAPI/Event/schedules/temperature-->true
    </isSupportTemperatureSchedule>
    <isSupportFireDetectionSchedule>
      <!--ro, opt, bool, 是否支持火点检测布防时间, desc:接口:/ISAPI/Event/schedules/fireDetections-->true
    </isSupportFireDetectionSchedule>
    <isSupportPower>
      <!--ro, opt, bool, 是否支持电源开关支持能力, desc:接口:/ISAPI/Thermal/Power/capabilities-->true
    </isSupportPower>
    <isSupportRealtimeTempHumi>
      <!--ro, opt, bool, 是否支持设备环境实时温湿度能力, desc:接口:/ISAPI/Thermal/TempHumi/capabilities-->true
    </isSupportRealtimeTempHumi>
    <ManualThermCap>
      <!--ro, opt, object, 手动测温能力-->
      <manualThermRuleNum>
        <!--ro, opt, int, 若不返回该节点则设备不支持手动测温, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/Thermal/manualThermometry/capabilities-->true
      </manualThermRuleNum>
    </ManualThermCap>
    <isSupportManualThermBasic>
      <!--ro, opt, bool, 否支持手动测温基本参数配置, desc:接口:/ISAPI/Thermal/manualThermBasic/capabilities-->true
    </isSupportManualThermBasic>
    <isSupportFireShieldMask>
      <!--ro, opt, bool, 是否支持火点区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/fireShieldMask/capabilities-->true
    </isSupportFireShieldMask>
    <isSupportSmokeShieldMask>
      <!--ro, opt, bool, 是否支持烟雾区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/smokeShieldMask/capabilities-->true
    </isSupportSmokeShieldMask>
    <isSupportThermometryMode>
      <!--ro, opt, bool, 是否支持测温模式配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryMode/capabilities-->true
    </isSupportThermometryMode>
    <isSupportThermalPip>
      <!--ro, opt, bool, 是否支持热成像画中画配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/pip/capabilities-->true
    </isSupportThermalPip>
    <isSupportThermalIntelRuleDisplay>
      <!--ro, opt, bool, 是否支持热成像智能规则配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/IntelRuleDisplay/capabilities-->true
    </isSupportThermalIntelRuleDisplay>
    <AlgVersionInfo>
      <!--ro, opt, object, 是否支持获取热成像相关算法库版本能力, desc:接口:/ISAPI/Thermal/AlgVersion-->
      <thermometryAlgName min="1" max="128">
        <!--ro, opt, string, 测温算法库版本信息, range:[,], attr:min{opt, string, 算法名称最小值, range:[,]},max{opt, string, 测温算法库版本信息长度最大值, range:[,]}-->null
      </thermometryAlgName>
      <shipsAlgName min="1" max="128">
        <!--ro, opt, string, 船只算法库版本名称, range:[,], attr:min{opt, string, 船只算法库版本名称最小值, range:[,]},max{opt, string, 船只算法库版本名称最大值, range:[,]}-->null
      </shipsAlgName>
    </AlgVersionInfo>
    <isSupportFaceThermometry>
      <!--ro, opt, bool, 是否支持人脸测温配置, desc:接口:/ISAPI/Thermal/channels/<ID>/faceThermometry/capabilities-->true
    </isSupportFaceThermometry>
    <isSupportThermalBlackBody>
      <!--ro, opt, bool, 是否支持热成像黑体参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/blackBody/capabilities-->true
    </isSupportThermalBlackBody>
    <isSupportThermalStreamParam>
      <!--ro, opt, bool, 是否支持热成像码流参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/streamParam/capabilities-->true
    </isSupportThermalStreamParam>
    <isSupportBodyTemperatureCompensation>
      <!--ro, opt, bool, 是否支持体温温度补偿参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation/capabilities-->true
    </isSupportBodyTemperatureCompensation>
    <isSupportClickToThermometry>
      <!--ro, opt, bool, 是否支持点击测温, desc:接口:/ISAPI/Thermal/channels/<ID>/clickToThermometry/initialization-->true
    </isSupportClickToThermometry>
    <isSupportThermometryHistorySearch>
      <!--ro, opt, bool, 是否支持测温历史数据查询, desc:接口:/ISAPI/Thermal/channels/<ID>/historyTemperature/capabilities-->true
    </isSupportThermometryHistorySearch>
    <isSupportThermometryShieldMask>
      <!--ro, opt, bool, 是否支持测温区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryShieldMask/capabilities-->true
    </isSupportThermometryShieldMask>
    <isSupportTemperatureCorrection>
      <!--ro, opt, bool, 是否支持测温矫正, desc:接口:/ISAPI/Thermal/channels/<ID>/CorrectionParam/capabilities-->true
    </isSupportTemperatureCorrection>
    <isSupportBurningPrevention>
      <!--ro, opt, bool, 是否支持防灼伤, desc:接口:/ISAPI/Thermal/channels/<ID>/burningPrevention/capabilities-->true
    </isSupportBurningPrevention>
    <isSupportTemperatureCollection>
      <!--ro, opt, bool, 是否支持温度补录, desc:接口:ISAPI/Thermal/temperature/collection/capabilities?format=json-->true
    </isSupportTemperatureCollection>
    <isSupportJpegPicWithAppendData>
      <!--ro, opt, bool, 是否支持抓热图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/jpegPicWithAppendData?format=json-->true
    </isSupportJpegPicWithAppendData>
    <isSupportRealTimethermometryForHTTP>
      <!--ro, opt, bool, 是否支持实时温度检测, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/realTimethermometry/rules?format=json-->true
    </isSupportRealTimethermometryForHTTP>
    <isSupportthermometryOffLineCapture>
      <!--ro, opt, bool, 是否支持离线抓图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/OffLineCapture?format=json-->true
    </isSupportthermometryOffLineCapture>
    <isSupportShipsDetectionWithScene>
      <!--ro, opt, bool, 是否支持按场景划分的船只检测, desc:接口:/ISAPI/Thermal/channels/<ID>/shipsDetection/capabilities?format=json-->true
    </isSupportShipsDetectionWithScene>
    <isSupportWasteGasDetection>
      <!--ro, opt, bool, 是否支持废气排放监测-->true
    </isSupportWasteGasDetection>
    <isSupportGreyScaleAlarm>
      <!--ro, opt, bool, 是否支持灰度报警-->true
    </isSupportGreyScaleAlarm>
    <isSupportFaceSnapThermometry>
      <!--ro, opt, bool, 是否支持人脸抓拍测温-->true
    </isSupportFaceSnapThermometry>
    <isSupportThermalTemperatureCorrect>
      <!--ro, opt, bool, 是否支持热成像温度二次校准, desc:接口:/ISAPI/Thermal/channels/<ID>/temperatureCorrect?format=json-->true
    </isSupportThermalTemperatureCorrect>
    <isSupportThermalVehicleDetection>
      <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
    </isSupportThermalVehicleDetection>
    <isSupportSensorParam>
      <!--ro, opt, bool, 是否支持传感器测温参数配置, desc:接口:/ISAPI/Thermal/channels/<channelID>/thermometry/sensorParam/capabilities?format=json-->true
    </isSupportSensorParam>
  </ThermalCap>
  <WLAlarmCap>
    <!--ro, opt, object, 无线报警能力-->
    <isSupportTeleControl>
      <!--ro, opt, bool, 是否支持远程控制-->true
    </isSupportTeleControl>
    <isSupportPIR>
      <!--ro, opt, bool, 是否支持PIR配置-->true
    </isSupportPIR>
    <isSupportWLSensors>
      <!--ro, opt, bool, 待确认-->true
    </isSupportWLSensors>
    <isSupportCallHelp>
      <!--ro, opt, bool, 是否支持呼叫帮助-->true
    </isSupportCallHelp>
    <WLSensorsNum>
      <!--ro, opt, int, 待确认, range:[,], step:, unit:, unitType:-->1
    </WLSensorsNum>
  </WLAlarmCap>
  <isSupportGIS>
    <!--ro, opt, bool, 是否支持GIS, desc:接口:/ISAPI/GIS/channels-->true
  </isSupportGIS>
  <isSupportCompass>
    <!--ro, opt, bool, 是否支持罗盘配置, desc:接口:/ISAPI/Compass/channels/<ID>/capabilities-->true
  </isSupportCompass>
  <isSupportRoadInfoOverlays>
    <!--ro, opt, bool, 是否支持道路信息叠加-->true
  </isSupportRoadInfoOverlays>
  <isSupportFaceCaptureStatistics>
    <!--ro, opt, bool, 是否支持人脸抓拍统计功能, desc:接口:/ISAPI/Intelligent/channels/<ID>/faceCaptureStatistics/search-->true
  </isSupportFaceCaptureStatistics>
  <isSupportElectronicsEnlarge>
    <!--ro, opt, bool, 设备是否支持电子放大 is this device support Electronics Enlarge-->true
  </isSupportElectronicsEnlarge>
  <isSupportRemoveStorage>
    <!--ro, opt, bool, 是否支持远程存储-->true
  </isSupportRemoveStorage>
  <isSupportCloud>
    <!--ro, opt, bool, 是否支持云存储-->true
  </isSupportCloud>
  <isSupportRecordHost>
    <!--ro, opt, bool, 是否支持录播主机配置, desc:接口:/ISAPI/RecordHost/capabilities)-->true
  </isSupportRecordHost>
  <isSupportViewshedOverlay>
    <!--ro, opt, bool, 支持可视域相机目标叠加功能, desc:接口:/ISAPI/System/Video/inputs/channels/<ID>/viewshedOverlay-->true
  </isSupportViewshedOverlay>
  <isSupportGPSLabelTracking>
    <!--ro, opt, bool, 是否支持GPS标签跟踪, desc:接口:/ISAPI/GIS/channels/<ID>/GPSLabelTracking?format=json-->true
  </isSupportGPSLabelTracking>
  <isSupportEagleEye>
    <!--ro, opt, bool, 是否支持鹰眼-->true
  </isSupportEagleEye>
  <isSupportPanorama>
    <!--ro, opt, bool, 是否支持全景模式-->true
  </isSupportPanorama>
  <isSupportFirmwareVersionInfo>
    <!--ro, opt, bool, 是否支持显示固件版本信息-->true
  </isSupportFirmwareVersionInfo>
  <isSupportExternalWirelessServer>
    <!--ro, opt, bool, 是否支持外部无线服务器(true-支持-->true
  </isSupportExternalWirelessServer>
  <isSupportSetupCalibration>
    <!--ro, opt, bool, 是否支持架设标定-->true
  </isSupportSetupCalibration>
  <isSupportGetmutexFuncErrMsg>
    <!--ro, opt, bool, 是否支持互斥信息-->true
  </isSupportGetmutexFuncErrMsg>
  <isSupportTokenAuthenticate>
    <!--ro, opt, bool, 是否支持token认证-->true
  </isSupportTokenAuthenticate>
  <isSupportStreamDualVCA>
    <!--ro, opt, bool, 码流叠加智能私有数据(true-支持, desc:接口:/ISAPI/Intelligent/channels/<ID>/intelliResource中的节点<isOverlapIntelli>)-->true
  </isSupportStreamDualVCA>
  <isSupportLaserSpotManual>
    <!--ro, opt, bool, 是否支持激光光斑配置-->true
  </isSupportLaserSpotManual>
  <isSupportRTMP>
    <!--ro, opt, bool, 是否支持RTMP配置, desc:接口:/ISAPI/Streaming/channels/<ID>/RTMPCfg/capabilities-->true
  </isSupportRTMP>
  <isSupportTraffic>
    <!--ro, opt, bool, 交通服务能力-->true
  </isSupportTraffic>
  <isSupportLaserSpotAdjustment>
    <!--ro, opt, bool, 调整激光光斑大小, desc:接口:/ISAPI/Image/channels/<ID>/laserLight/laserSpotAdjustment/capabilities-->true
  </isSupportLaserSpotAdjustment>
  <VideoIntercomCap>
    <!--ro, opt, object, 可视对讲能力, desc:接口:/ISAPI/VideoIntercom/capabilities-->true
  </VideoIntercomCap>
  <SecurityCPCapabilities>
    <!--ro, opt, object, 待确认, desc:接口:/ISAPI/SecurityCP/capabilities?format=json-->true
  </SecurityCPCapabilities>
  <isSupportSafetyCabin>
    <!--ro, opt, bool, 防护舱控制器, desc:接口:/ISAPI/SafetyCabin/capabilities-->true
  </isSupportSafetyCabin>
  <isSupportAcsUpdate>
    <!--ro, opt, bool, 是否支持外设模块升级（支持时返回true, desc:接口:/ISAPI/System/AcsUpdate/capabilities-->truetrue
  </isSupportAcsUpdate>
  <isSupportSecurityCP>
    <!--ro, opt, bool, 待确认-->true
  </isSupportSecurityCP>
  <isSupportPEA>
    <!--ro, opt, bool, 一键式报警主机能力-->true
  </isSupportPEA>
  <isSupportCurrentLock>
    <!--ro, opt, bool, 是否支持锁定电流配置功能-->true
  </isSupportCurrentLock>
  <isSupportGuardAgainstTheft>
    <!--ro, opt, bool, 是否支持设备防盗配置, desc:接口:/ISAPI/System/guardAgainstTheft/capabilities-->true
  </isSupportGuardAgainstTheft>
  <isSupportPicInfoOverlap>
    <!--ro, opt, bool, 是否支持图片字符叠加-->true
  </isSupportPicInfoOverlap>
  <isSupportPlay>
    <!--ro, opt, bool, 屏蔽预览-->true
  </isSupportPlay>
  <isSupportPlayback>
    <!--ro, opt, bool, 屏蔽回放-->true
  </isSupportPlayback>
  <UHFRFIDReader>
    <!--ro, opt, object, RFID读写器支持能力-->
    <isSupportBasicInformation>
      <!--ro, opt, bool, 是否支持读写器基本参数-->true
    </isSupportBasicInformation>
    <isSupportHardDiskStorageTest>
      <!--ro, opt, bool, 是否支持读写器盘存测试-->true
    </isSupportHardDiskStorageTest>
    <isSupportCarReaderConfig>
      <!--ro, opt, bool, 是否支持电子车牌阅读器参数配置, desc:接口:/ISAPI/Traffic/UHFRFIDReader/carReaderConfig/capabilities?format=json-->true
    </isSupportCarReaderConfig>
  </UHFRFIDReader>
  <isSupportIntelligentStructureAnalysis>
    <!--ro, opt, bool, 是否支持智能结构化分析, desc:接口:/ISAPI/Intelligent/structureAnalysis/capabilities-->true
  </isSupportIntelligentStructureAnalysis>
  <isSupportIntelligentAnalysisEngines>
    <!--ro, opt, bool, 表示是否支持的智能引擎配置, desc:接口:/ISAPI/Intelligent/analysisEngines/capabilities-->true
  </isSupportIntelligentAnalysisEngines>
  <PreviewDisplayNum>
    <!--ro, opt, int, 浏览器预览窗口数目, range:[,], step:, unit:, unitType:-->1
  </PreviewDisplayNum>
  <isSupportBoard opt="true,false">
    <!--ro, opt, bool, 是否支持子板相关协议, attr:opt{opt, string, 未定义, range:[,]}-->true
  </isSupportBoard>
  <ResourceSwitch>
    <!--ro, opt, object, 资源转换配置-->
    <workMode opt="4KPreview,educationRecord">
      <!--ro, req, string, 设备资源中工作模式：教育录播模式, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </workMode>
  </ResourceSwitch>
  <isSupportCustomStream>
    <!--ro, opt, bool, 是否支持自定义码流, desc:接口:/ISAPI/Streaming/channels/<ID>/customStream/capabilities-->true
  </isSupportCustomStream>
  <isSupportTriggerCapCheck>
    <!--ro, opt, bool, 表示URL(/ISAPI/Event/triggersCap)中的能力做过验证-->true
  </isSupportTriggerCapCheck>
  <isSupportChannelEventCap>
    <!--ro, opt, bool, 是否支持按通道获取事件能力, desc:接口:URL /ISAPI/Event/channels/<ID>/capabilities-->true
  </isSupportChannelEventCap>
  <SensorCap>
    <!--ro, opt, object, 传感器参数配置, desc:接口:/ISAPI/System/Sensor/capabilities-->
    <SensorNums>
      <!--ro, opt, int, 最多添加传感器个数, range:[,], step:, unit:, unitType:-->1
    </SensorNums>
    <isSupportSensorPortConfiguration>
      <!--ro, opt, bool, 支持监测量参数配置-->true
    </isSupportSensorPortConfiguration>
    <isSupportSensorPortControl>
      <!--ro, opt, bool, 支持供监测量控制-->true
    </isSupportSensorPortControl>
    <isSupportAcquireSensorStatus>
      <!--ro, opt, bool, 支持传感器实时状态获取-->true
    </isSupportAcquireSensorStatus>
    <isSupportSearchSensorData>
      <!--ro, opt, bool, 支持传感器数据查询-->true
    </isSupportSearchSensorData>
  </SensorCap>
  <isSupportEncryption>
    <!--ro, opt, bool, 码流加密能力-->true
  </isSupportEncryption>
  <isSupportTrial>
    <!--ro, opt, bool, 是否支持审讯机相关配置-->true
  </isSupportTrial>
  <isSupportSignInstrument>
    <!--ro, opt, bool, 体征仪能力-->true
  </isSupportSignInstrument>
  <isSupportLocate>
    <!--ro, opt, bool, 是否支持定位配置-->true
  </isSupportLocate>
  <isSupportVibration>
    <!--ro, opt, bool, 是否支持震动参数配置-->true
  </isSupportVibration>
  <isSupportMixedTargetDetection>
    <!--ro, opt, bool, 是否支持混合目标检测事件-->null
  </isSupportMixedTargetDetection>
  <SDCardCtrlCap>
    <!--ro, opt, object, 存储卡远程控制能力-->
    <isSupportIOCtrl>
      <!--ro, opt, bool, 是否支持升级控制命令能力-->true
    </isSupportIOCtrl>
    <isSupportReadCardStatus>
      <!--ro, opt, bool, 是否支持认卡操作能力-->true
    </isSupportReadCardStatus>
    <isSupportStartUpdate>
      <!--ro, opt, bool, 是否支持开始升级控制能力-->true
    </isSupportStartUpdate>
    <isSupportEndUpdate>
      <!--ro, opt, bool, 是否支持结束升级控制能力-->true
    </isSupportEndUpdate>
    <isSupportPowerCtrl>
      <!--ro, opt, bool, 是否支持上下电控制能力-->true
    </isSupportPowerCtrl>
  </SDCardCtrlCap>
  <isSupportMutiChannelCalibration>
    <!--ro, opt, bool, 是否支持多通道通道标定-->true
  </isSupportMutiChannelCalibration>
  <isSupportElevatorFloorCalibration>
    <!--ro, opt, bool, 是否支持楼层显示配置-->true
  </isSupportElevatorFloorCalibration>
  <isSupportPictureCaptureComparision>
    <!--ro, opt, bool, 是否支持图片与监控点图片1V1比对-->true
  </isSupportPictureCaptureComparision>
  <isSupportGPSCalibratation>
    <!--ro, opt, bool, 是否支持GPS标定功能-->true
  </isSupportGPSCalibratation>
  <isSupportCityManagement>
    <!--ro, opt, bool, 是否支持智慧城管检测事件-->true
  </isSupportCityManagement>
  <isSupportBVCorrect>
    <!--ro, opt, bool, 设备是否支持相机矫正参数配置-->true
  </isSupportBVCorrect>
  <isSupportSteamingCodingModeSwitch>
    <!--ro, opt, bool, 编码输出模式(true-支持, desc:接口:/ISAPI/System/streamingCoding/mode/capabilities?format=json-->true
  </isSupportSteamingCodingModeSwitch>
  <supportImageChannel opt="1,2,3,4">
    <!--ro, opt, string, 是否支持图像通道配置, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:当前设备所支持的实际图像通道配置(图像参数接口：/ISAPI/Image/channels/<channelID>),若不返回该节点图像通道默认与编码通道(/ISAPI/Streaming/channels)保持一致。
    该节点主要用于图像通道与实际码流通道不一致的情况；如实验考图像拼接设备，该设备存在四个sensor却拼接为一路编码通道进行输出，但是每个sensor都支持图像参数配置，图像通道1默认仅对sensor1的图像生效}-->null
  </supportImageChannel>
  <isSupportPanoramaCalibration>
    <!--ro, opt, bool, 是否支持全景相机标定配置-->true
  </isSupportPanoramaCalibration>
  <isSupportPanoramaMode>
    <!--ro, opt, bool, 是否支持全景相机模式切换-->true
  </isSupportPanoramaMode>
  <supportSnapshotChannel opt="1">
    <!--ro, opt, string, 抓图计划通道支持能力, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </supportSnapshotChannel>
  <isSupportPanoramaCorrections>
    <!--ro, opt, bool, 是否支持算法矫正参数配置-->true
  </isSupportPanoramaCorrections>
  <isSupportActiveMulticast>
    <!--ro, opt, bool, 是否支持多播配置  /ISAPI/Streaming/channels/<ID>/capabilities中Multicast-->true
  </isSupportActiveMulticast>
  <isSupportChannelEventListCap>
    <!--ro, opt, bool, 表示是否支持获取设备所有通道的事件能力-->true
  </isSupportChannelEventListCap>
  <VCAResourceChannelsCap>
    <!--ro, opt, object, 表示支持智能资源按通道独立切换-->
    <ChannelsList>
      <!--ro, opt, array, 通道列表, subType:object, range:[,]-->
      <channelsID>
        <!--ro, req, int, 设备支持的通道号, range:[,], step:, unit:, unitType:-->1
      </channelsID>
    </ChannelsList>
  </VCAResourceChannelsCap>
  <isSupportTimerVCAResource>
    <!--ro, opt, bool, 是否支持定时智能资源切换-->true
  </isSupportTimerVCAResource>
  <MixedTargetDetection>
    <!--ro, opt, object, 设备支持混合目标识别中具体目标的识别能力-->
    <isSupportFaceRecognition>
      <!--ro, opt, bool, 支持人脸抓拍-->true
    </isSupportFaceRecognition>
    <isSupportHumanRecognition>
      <!--ro, opt, bool, 支持人体识别-->true
    </isSupportHumanRecognition>
    <isSupportVehicleRecognition>
      <!--ro, opt, bool, 支持车辆识别-->true
    </isSupportVehicleRecognition>
  </MixedTargetDetection>
  <isSupportDiscoveryMode>
    <!--ro, opt, bool, 是否支持发现模式, desc:接口:/ISAPI/System/discoveryMode/capabilities-->true
  </isSupportDiscoveryMode>
  <isSupportDumpData>
    <!--ro, opt, bool, 是否支持Dump文件导出-->true
  </isSupportDumpData>
  <isSupportCameraAccessConfiguration>
    <!--ro, opt, bool, 支持相机接入配置, desc:接口:/ISAPI/System/cameraAccess/configuration/capabilities?format=json-->true
  </isSupportCameraAccessConfiguration>
  <isSupportIntelligentSearch>
    <!--ro, opt, bool, 支持智能检索, desc:接口:/ISAPI/SDT/Management/IntelligentSearch/capabilities?format=json-->true
  </isSupportIntelligentSearch>
  <isSupportAutoMaintenance>
    <!--ro, opt, bool, 支持自动运维, desc:接口:/ISAPI/System/autoMaintenance/capabilities?format=json-->true
  </isSupportAutoMaintenance>
  <isSupportRtspOverHTTPS>
    <!--ro, opt, bool, 支持RtspOverHTTPS-->true
  </isSupportRtspOverHTTPS>
  <isSupportIntersectionAnalysis>
    <!--ro, opt, bool, 是否支持路口分析, desc:接口:/ISAPI/Intelligent/channels/<ID>/intersectionAnalysis/capabilities?format=json-->true
  </isSupportIntersectionAnalysis>
  <isSupportAudioInteract>
    <!--ro, opt, bool, 是否支持音频互动功能（来自慧影科技）, desc:接口:/ISAPI/Streaming/interact/capabilities?format=json-->true
  </isSupportAudioInteract>
  <isSupportChannelFullEventListCap>
    <!--ro, opt, bool, 表示是否支持获取设备所有通道的事件能力-->true
  </isSupportChannelFullEventListCap>
  <isSupportAUXInfoCap>
    <!--ro, opt, bool, 表示是否支持获取设备所有通道属性能力-->true
  </isSupportAUXInfoCap>
  <supportPanoramaChannel opt="2">
    <!--ro, opt, string, 设备支持的全景通道, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </supportPanoramaChannel>
  <regionClip>
    <!--ro, opt, object, 支持区域剪裁的通道及码流-->
    <channels opt="101">
      <!--ro, opt, string, 支持区域剪裁的通道及码流, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:101:通道号*100+码流类型-->null
    </channels>
  </regionClip>
  <AIDEventSupport opt="abandonedObject,pedestrian,congestion,roadBlock,construction,trafficAccident,fogDetection,wrongDirection,illegalParking,SSharpDriving,lowSpeed,dragRacing,obstacle">
    <!--ro, opt, string, 支持的AID事件, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </AIDEventSupport>
  <TFSEventSupport opt="illegalParking ,wrongDirection,crossLane,laneChange,vehicleExist,turnRound,parallelParking,notKeepDistance,notSlowZebraCrossing,overtakeRightSide,lowSpeed,dragRacing,changeLaneContinuously,SSharpDriving,largeVehicleOccupyLine,jamCrossLine,obstacle,blackSmokeVehicle,turnRightStop">
    <!--ro, opt, string, 支持的TFS, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </TFSEventSupport>
  <isVehicleStatisticsSupport>
    <!--ro, opt, bool, 是否支持交通数据采集配置-->true
  </isVehicleStatisticsSupport>
  <isSupportElevatorFloorName>
    <!--ro, opt, bool, 是否支持楼层自定义名称配置-->true
  </isSupportElevatorFloorName>
  <isSupportVehicleFaceRecognition>
    <!--ro, opt, bool, 是否支持卡口车辆识别中, desc:背景：交通产品线在车辆识别中支持"人脸"（驾驶室）的识别,但是设备实现的中没有新增能力节点告知上层集成方,设备具备该"人脸抓拍能力"。-->true
  </isSupportVehicleFaceRecognition>
  <VQDEventSupport opt="luma,chroma,snow,streak,freeze,sigLose,clarity,jitter,block,flowers,noise,ghost,purple,ICR,protectiveFilm">
    <!--ro, opt, string, VQD事件列表, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:亮度异常：Luma；图像偏色：Chroma；雪花干扰：Snow；条纹干扰：Streak；画面冻结：Freeze；信号丢失：SigLose；清晰度异常：        Clarity；画面抖动：JItter；视频遮挡：Block；花屏：Flowers；噪点：Noise；鬼像：Ghost；紫边：Purple；ICP：ICR；保护膜未撕：protectiveFilm-->null
  </VQDEventSupport>
  <IOTCap>
    <!--ro, opt, object, 支持分页查询设备状态列表, desc:不支持不返回, 不支持时通过GET获取列表-->
    <supportChannelNum opt="1">
      <!--ro, opt, int, 支持的IOT设备通道数目, range:[,], step:, unit:, unitType:, attr:opt{opt, string, 未定义, range:[,]}-->1
    </supportChannelNum>
    <startChannelNo>
      <!--ro, opt, int, 起始IOT设备通道号, range:[,], step:, unit:, unitType:-->1
    </startChannelNo>
    <isSupportlinkageChannelsSearch>
      <!--ro, opt, bool, 设备支持返回true, desc:接口:(POST /ISAPI/System/IOT/linkageChannels?format=json)-->true
    </isSupportlinkageChannelsSearch>
    <isSupportIOTChannelCap>
      <!--ro, opt, bool, 是否支持通配置能力-->true
    </isSupportIOTChannelCap>
    <satusSearchTaskCap>
      <!--ro, opt, object, 查询任务能力-->
      <maxResults>
        <!--ro, opt, int, 最大返回结果, range:[,], step:, unit:, unitType:-->1
      </maxResults>
      <filterType opt="all,online,offline,updateFailed">
        <!--ro, opt, enum, 筛选类型, subType:string, [all#所有,online#在线,offline#离线,updateFailed#升级失败], attr:opt{req, string, 取值范围, range:[,]}-->all
      </filterType>
      <deviceStatus opt="calling,noCall,medicationChangePrompt,alarming,offline,free">
        <!--ro, opt, string, 设备状态查询条件取值范围
            , range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:calling-通话中,noCall-非通话状态,medicationChangePrompt-换药提醒中,alarming-报警中,offline-离,free-空闲。多个条件默认采用 ‘与’ 关系-->calling
      </deviceStatus>
      <logicRelationship opt="and,or">
        <!--ro, opt, string, 设备状态查询条件逻辑关系取值范围, range:[0,16], attr:opt{req, string, 取值范围, range:[,]}, desc:and-与关系,or-或关系,默认and,当deviceStatus存在时有效-->and
      </logicRelationship>
      <alarmType opt="SOS,toilet">
        <!--ro, opt, string, 报警类型取值范围, range:[0,16], attr:opt{req, string, 取值范围, range:[,]}, desc:SOS-SOS呼救,toilet-卫生间报警,当deviceStatus存在alarming时可选有效-->test
      </alarmType>
      <callWaitingType opt="normal,cisit">
        <!--ro, opt, string, 报警类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:normal-正常呼叫等待, visit-探视呼叫等待,当deviceStatus存在callWaiting时可选有效-->test
      </callWaitingType>
    </satusSearchTaskCap>
    <channelConfigList>
      <!--ro, opt, object, 按照unitType类型返回列表能力-->
      <channelConfig>
        <!--ro, opt, object, 添加设备中设备类型能力-->
        <unitType>
          <!--ro, opt, enum, 单元类型, subType:string, [indoor#室内,villa#别墅门口机,confirm#二次确认机,outdoor#门口机,fence#围墙机,doorbell#门铃机,manage#管理机,acs#门禁设备,wardStation#探视分机,bedheadExtension#床头分机,bedsideExtension#床旁分机,terminal#终端,netAudio#网络音响,analogIndoor#模拟室内机,decoder#解码器]-->outdoor
        </unitType>
        <floorNumber min="0" max="10">
          <!--ro, opt, int, 层号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </floorNumber>
        <roomNumber min="0" max="10">
          <!--ro, opt, int, 房间号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </roomNumber>
        <isSupportSlaveDevice>
          <!--ro, opt, bool, 是否支持从设备-->true
        </isSupportSlaveDevice>
        <isSupportZeroFloorNumber>
          <!--ro, opt, bool, 是否支持0号楼层, desc:和floorNumber字段一起使用-->true
        </isSupportZeroFloorNumber>
        <periodNumber min="0" max="10">
          <!--ro, opt, int, 期号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </periodNumber>
        <buildingNumber min="0" max="10">
          <!--ro, opt, int, 楼号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </buildingNumber>
        <unitNumber min="0" max="10">
          <!--ro, opt, int, 单元号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </unitNumber>
        <deviceIndex min="1" max="15">
          <!--ro, opt, string, 设备序号字符长度取值范围, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </deviceIndex>
        <industryType opt="builidings,prison,medicalTreatment,broadcasting">
          <!--ro, opt, string, 行业(场景)类型, range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:builidings#楼宇,prison#监所,medicalTreatment#医疗,broadcasting#广播-->test
        </industryType>
        <priority min="1" max="100">
          <!--ro, opt, int, 呼叫优先级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </priority>
        <transportType opt="unicast,multicast">
          <!--ro, opt, string, 广播方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:unicast-单播,multicast-组播-->test
        </transportType>
        <audioVolume min="0" max="15">
          <!--ro, opt, int, 播放音量, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </audioVolume>
        <callForwardingEnabled>
          <!--ro, opt, bool, 呼叫转移使能, desc:true-开启,false-关闭,默认关闭-->true
        </callForwardingEnabled>
        <callForwardingType opt="unconditional,busy,noReply,noReachable,calling">
          <!--ro, opt, string, 呼叫转移类型, range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:unconditional-无条件呼叫转移,busy-遇忙呼叫转移,noReply-无应答呼叫转移,noReachable-不可达呼叫转移,calling-通话转移-->test
        </callForwardingType>
        <isSupportCallTerminalNumbe>
          <!--ro, opt, bool, 是否支持转移目标管理机长号配置-->true
        </isSupportCallTerminalNumbe>
        <customCommunicationName min="0" max="128">
          <!--ro, opt, string, 自定义通讯名称, range:[0,128], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当有此节点时,设备呼叫时优先显示自定义通讯名称,而不是终端长号-->test
        </customCommunicationName>
        <isSupportMoreFeatures>
          <!--ro, opt, bool, 是否接入设备更多功能设置, desc:不传此节点默认不支持-->true
        </isSupportMoreFeatures>
      </channelConfig>
    </channelConfigList>
    <isSupportConfigTemplate>
      <!--ro, opt, bool, 是否支持导出设备列表模板-->true
    </isSupportConfigTemplate>
    <isSupportConfigReport>
      <!--ro, opt, bool, 是否支持获取导入详情-->true
    </isSupportConfigReport>
    <unitType opt="outdoor,indoor,manage,fence,terminal,netAudio">
      <!--ro, opt, string, 设备类型, range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:,terminal-终端, netAudio-网络音响-->test
    </unitType>
    <serialNumber min="1" max="32">
      <!--ro, opt, string, 设备序列号字符长度取值范围, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </serialNumber>
  </IOTCap>
  <isSupportLCDScreen>
    <!--ro, opt, bool, 是否支持LCD显示屏-->true
  </isSupportLCDScreen>
  <isSupportBluetooth>
    <!--ro, opt, bool, 是否支持蓝牙, desc:接口:/ISAPI/System/Bluetooth/capabilities-->true
  </isSupportBluetooth>
  <isSupportNetScreen>
    <!--ro, opt, bool, 是否支持网络显示器（诺瓦屏）, desc:接口:/ISAPI/System/netScreens/capabilities?format=json-->true
  </isSupportNetScreen>
  <isSupportLocation>
    <!--ro, opt, bool, 是否支持设备位置信息获取, desc:接口:/ISAPI/System/location?format=json-->true
  </isSupportLocation>
  <isSupportDebugInfoExport>
    <!--ro, opt, bool, 是否支持调试信息导出, desc:接口:/ISAPI/System/debugInfoExport/capabilities?format=json-->true
  </isSupportDebugInfoExport>
  <isSupportIoTGateway>
    <!--ro, opt, bool, 是否支持物联网关功能, desc:接口:/ISAPI/System/IoTGateway/capabilities?format=json-->true
  </isSupportIoTGateway>
  <isSupportImageCap>
    <!--ro, opt, bool, 是否支持图像参数配置-->true
  </isSupportImageCap>
  <isSupportLogToUSB opt="true,false">
    <!--ro, opt, bool, 是否支持日志导出到USB, attr:opt{opt, string, 未定义, range:[,]}, desc:接口:/ISAPI/System/exportLogToUSB/capabilities?format=json-->true
  </isSupportLogToUSB>
  <isSupportWiresharkToUSB opt="true,false">
    <!--ro, opt, bool, 是否支持抓包信息导出到USB, attr:opt{opt, string, 未定义, range:[,]}, desc:接口:/ISAPI/System/wiresharkToUSB/capabilities?format=json-->true
  </isSupportWiresharkToUSB>
  <CDBurningStreamEncryptionChannels opt="1,2">
    <!--ro, opt, string, 设备刻录码流加密通道能力返回, range:[,], attr:opt{opt, string, 枚举值, range:[,]}, desc:接口:/ISAPI/Streaming/channels/<ID>/capabilities中的isSupportCDBurningEncryption-->true
  </CDBurningStreamEncryptionChannels>
  <isSupportOCR>
    <!--ro, opt, bool, 是否支持OCR检测, desc:接口:/ISAPI/Intelligent/channels/<ID>/OCR/capabilities?format=json-->true
  </isSupportOCR>
  <isSupportInstallationAngleCalibration>
    <!--ro, opt, bool, 是否支持安装倾角校准能力, desc:接口:/ISAPI/System/installationAngleCalibration/channels/<ID>/capabilities-->true
  </isSupportInstallationAngleCalibration>
  <isSupportZeroBiasCalibration>
    <!--ro, opt, bool, 是否支持零偏倾角校准能力节点, desc:接口:/ISAPI/System/zeroBiasCalibration/channels/<ID>?format=json-->true
  </isSupportZeroBiasCalibration>
  <isSupportCalibrationFile>
    <!--ro, opt, bool, 是否支持标定文件导入, desc:接口:/ISAPI/System/configurationData-->true
  </isSupportCalibrationFile>
  <isSupportDisplayTrajectory>
    <!--ro, opt, bool, 是否支持目标路径叠加（播放库）-->true
  </isSupportDisplayTrajectory>
  <maximumSuperPositionTime opt="5,10,20,30">
    <!--ro, opt, string, 最长叠加时间, range:[,], attr:opt{opt, string, 最大叠加时间枚举, range:[,], desc:单位：s}, desc:仅在支持目标路径叠加时返回,单位：s-->true
  </maximumSuperPositionTime>
  <isSupportUnitConfig>
    <!--ro, opt, bool, 是否单位配置, desc:接口:/ISAPI/System/unitConfig/capabilities?format=json-->true
  </isSupportUnitConfig>
  <isSupportShipsDetectionWithScene>
    <!--ro, opt, bool, 是否支持按场景划分的船只检测-->true
  </isSupportShipsDetectionWithScene>
  <isSupportPictureServer>
    <!--ro, opt, bool, 是否支持图片存储服务器配置, desc:接口:/ISAPI/System/PictureServer/capabilities?format=json-->true
  </isSupportPictureServer>
  <isSupportEmmcInfo>
    <!--ro, opt, bool, EMMC相关配置支持能力, desc:接口:/ISAPI/System/emmcInfo/capabilities?format=json-->true
  </isSupportEmmcInfo>
  <isSupportVehicleIllegalType opt="1,2...29">
    <!--ro, opt, string, 设备支持的车辆违章类型, range:[,], attr:opt{opt, string, 枚举值, range:[,]}, desc:内容值和索引值列表保持一致,参考NET_ITS_PLATE_RESULT.NET_DVR_VEHICLE_INFO.byIllegalType,背景： 抓拍机对接新平台,设备支持"交通违章报警",但是设备实现装没有能力集节点告知上层集成方,该设备具有哪些"交通违章报警"能力,即交通违章报警能力不够细化,如果后续业务平台需要按照细化能力做业务的话,设备当前设备无法兼容；足够细化的能力,在各个触发模式的配置中,这样会造成DAC的接入判断接口次数过多,影响整体接入。-->null
  </isSupportVehicleIllegalType>
  <DevInfoSearch opt="tiltAngle">
    <!--ro, opt, string, 是否支持设备信息查询, range:[,], attr:opt{opt, string, 枚举值, range:[,], desc:/ISAPI/System/workingstatus/devInfoSearch?format=json中DevInfoCond.searchType的可选值}, desc:接口:/ISAPI/System/workingstatus/devInfoSearch?format=json-->null
  </DevInfoSearch>
  <isSupportAIOpenPlatform>
    <!--ro, opt, bool, 设备是否支持AI开放平台设备级能力, desc:接口:/ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json-->true
  </isSupportAIOpenPlatform>
  <isSupportPictureDownloadError>
    <!--ro, opt, bool, 是否支持图片下载失败异常上报, desc:eventType:pictureDownloadError-->true
  </isSupportPictureDownloadError>
  <isSupportStudentBehavior>
    <!--ro, opt, bool, 是否支持课堂学生行为数据上传, desc:eventType:studentBehavior-->true
  </isSupportStudentBehavior>
  <guideEventSupport opt="linkageCapture">
    <!--ro, opt, string, web快速引导配置列表, range:[,], attr:opt{opt, string, 枚举值, range:[,], desc:linkageCapture：联动抓拍}, desc:接口:/ISAPI/System/guideConfig/<guideEvent>/capabilities?format=json-->null
  </guideEventSupport>
  <isSupportDevStatus>
    <!--ro, opt, bool, 是否支持设备状态获取, desc:接口:/ISAPI/System/status-->true
  </isSupportDevStatus>
  <supportRemoteCtrl opt="up,down,left,right,enter,menu,num,power,esc,edit,F1,.prev,rec,play,stop,notSupport">
    <!--ro, opt, string, 设备是否支持遥控器控制, range:[,], attr:opt{opt, string, 枚举值, range:[,]}, desc:接口:/ISAPI/System/remoteCtrl/XXX-->null
  </supportRemoteCtrl>
  <isSupportSSDFileSystemUpgrade>
    <!--ro, opt, bool, 是否支持是否支持SSD文件系统升级, desc:接口:对应/ISAPI/System/SSDFileSystem/upgrade?format=json-->true
  </isSupportSSDFileSystemUpgrade>
  <isSupportSSDFileSystemFormat>
    <!--ro, opt, bool, 是否支持是否支持SSD格式化, desc:接口:/ISAPI/System/SSDFileSystem/format?format=json-->true
  </isSupportSSDFileSystemFormat>
  <FaceCounting>
    <!--ro, opt, object, 是否支持人脸客流-->
    <ChannelsList>
      <!--ro, opt, array, 通道列表, subType:object, range:[,]-->
      <channelsID>
        <!--ro, req, int, 设备支持的通道号, range:[,], step:, unit:, unitType:-->1
      </channelsID>
    </ChannelsList>
  </FaceCounting>
  <isSupportCluster>
    <!--ro, opt, bool, 对应协议, desc:接口:/ISAPI/ContentMgmt/Cluster/capabilities-->true
  </isSupportCluster>
  <DeviceConfigurationSupport opt="time,network,accessProtocol,recordSchedule,channel,customProtocol">
    <!--ro, opt, string, 设备参数配置支持配置的内容, range:[,], attr:opt{opt, string, 枚举值, range:[,], desc:依次为：时间参数、网络参数、接入协议配置、录像计划参数、通道参数、自定义协议配置}, desc:接口:/ISAPI/System/deviceConfiguration-->null
  </DeviceConfigurationSupport>
  <behaviorEventSupport opt="getUp,toiletTarry,playCellphone">
    <!--ro, opt, string, 异常行为识别事件类型, range:[,], attr:opt{opt, string, 异常行为识别事件类型枚举值, range:[,], desc:起身:getUp; 如厕超时:toiletTarry; 玩手机:playCellphone}-->null
  </behaviorEventSupport>
  <isSupportBVCorrectPassthrough>
    <!--ro, opt, bool, 是否支持相机矫正数据透传, desc:接口:/ISAPI/System/BVCorrect/Passthrough/channels/<ID>/capabilities?format=json-->true
  </isSupportBVCorrectPassthrough>
  <VehiclePositionControl>
    <!--ro, opt, object, 是否支持车辆方位布防-->
    <license min="0" max="16">
      <!--ro, req, string, 车牌号, range:[,], attr:min{opt, string, 车牌号长度最小值, range:[,]},max{opt, string, 车牌号长度最大值, range:[,]}-->null
    </license>
    <intervalTime min="0" max="65535" def="1">
      <!--ro, req, int, 上传间隔, range:[,], step:, unit:s, unitType:时间, attr:min{opt, string, 上传间隔最小值, range:[,]},max{opt, string, 上传间隔最大值, range:[,]},def{opt, string, 上传间隔默认值, range:[,]}-->1
    </intervalTime>
  </VehiclePositionControl>
  <supportGISEvent opt="AID,TPS,ANPR,mixedTargetDetection">
    <!--ro, opt, string, 支持GIS信息获取的事件能力, range:[,], attr:opt{opt, string, 可选项, range:[,]}-->null
  </supportGISEvent>
  <isSupportGPSPTZCalibratation>
    <!--ro, opt, bool, 是否支持GPSPTZ标定, desc:接口:/ISAPI/System/GPSPTZCalibratation/channels/<ID>/points?format=json-->true
  </isSupportGPSPTZCalibratation>
  <isSupportRadar>
    <!--ro, opt, bool, 是否支持雷达, desc:接口:/ISAPI/Radar/capabilities?format=json-->true
  </isSupportRadar>
  <isSupportISUPHttpPassthrough>
    <!--ro, opt, bool, 是否支持ISUPV5.0http透传-->true
  </isSupportISUPHttpPassthrough>
  <isSupportMaterialListQuery>
    <!--ro, opt, bool, 是否支持素材列表请求上报, desc:事件:materialListQuery-->true
  </isSupportMaterialListQuery>
  <isSupportDebugLogAsync>
    <!--ro, opt, bool, 是否支持调试日志异步导出-->true
  </isSupportDebugLogAsync>
  <isSupportAlgorithmsInfo>
    <!--ro, opt, bool, 是否支持设备算法版本获取-->true
  </isSupportAlgorithmsInfo>
  <isSupportSecurityChecking>
    <!--ro, opt, bool, 是否支持安检过包检测配置, desc:支持返回true,不支持无需返回-->true
  </isSupportSecurityChecking>
  <isSupportSecurityCheckException>
    <!--ro, opt, bool, 是否支持安检异常事件, desc:对应事件上报报文中eventType:securityCheckException-->true
  </isSupportSecurityCheckException>
  <isSupportPictureManage>
    <!--ro, opt, bool, 是否支持设备图片管理功能, desc:接口: /ISAPI/System/isSupportPictureManage/capabilities?format=json-->true
  </isSupportPictureManage>
  <isSupportAutoSwitch>
    <!--ro, opt, bool, 是否支持自动开关机, desc:接口:/ISAPI/System/autoSwitch/capabilities?format=json-->true
  </isSupportAutoSwitch>
  <SHMCap>
    <!--ro, opt, object, SHM报警-->
    <isSupportHighHDTemperature>
      <!--ro, opt, bool, 是否支持硬盘温度过高检测, desc:eventType:highHDTemperature-->true
    </isSupportHighHDTemperature>
    <isSupportLowHDTemperature>
      <!--ro, opt, bool, 是否支持硬盘温度过低检测, desc:eventType:lowHDTemperature-->true
    </isSupportLowHDTemperature>
    <isSupportHDImpact>
      <!--ro, opt, bool, 是否支持硬盘冲击检测, desc:eventType:hdImpact-->true
    </isSupportHDImpact>
    <isSupportHDBadBlock>
      <!--ro, opt, bool, 是否支持硬盘坏块检测, desc:eventType:hdBadBlock-->true
    </isSupportHDBadBlock>
    <isSupportSevereHDFailure>
      <!--ro, opt, bool, 是否支持硬盘严重故障检测, desc:eventType:severeHDFailure-->true
    </isSupportSevereHDFailure>
  </SHMCap>
  <isSupportLinkStatusEvent>
    <!--ro, opt, bool, 是否支持设备网络连接状态信息上报, desc:eventType:linkEvent-->true
  </isSupportLinkStatusEvent>
  <isSupportVideoDealStatus>
    <!--ro, opt, bool, 是否支持视频数据处理状态信息上报, desc:eventType:videoDealStatus-->true
  </isSupportVideoDealStatus>
  <isSupportAudioDealStatus>
    <!--ro, opt, bool, 是否支持音频数据处理状态信息上报, desc:eventType:audioDealStatus-->true
  </isSupportAudioDealStatus>
  <isSupportNetPackLossStatus>
    <!--ro, opt, bool, 是否支持网络丢包状态信息上报, desc:eventType:netPacketLoss-->true
  </isSupportNetPackLossStatus>
  <isSupportVideoConferenceStatus>
    <!--ro, opt, bool, 是否支持视频会议状态信息上报, desc:eventType:videoConference-->true
  </isSupportVideoConferenceStatus>
  <isSupportDataPrealarm>
    <!--ro, opt, bool, 是否支持流量预警事件, desc:eventType:dataPrealarm-->true
  </isSupportDataPrealarm>
  <isSupportClearCache>
    <!--ro, opt, bool, 是否支持清空缓存, desc:接口:/ISAPI/System/clearCache?format=json-->true
  </isSupportClearCache>
  <isSupportIntelligentMode>
    <!--ro, opt, bool, 是否支持智能模式切换, desc:接口:/ISAPI/System/IntelligentMode?format=json-->true
  </isSupportIntelligentMode>
  <isSupportFaceTemperatureMeasurementEvent>
    <!--ro, opt, bool, 是否支持人脸测温事件, desc:对应事件上报报文中eventType:FaceTemperatureMeasurementEvent-->true
  </isSupportFaceTemperatureMeasurementEvent>
  <isSupportQRCodeEvent>
    <!--ro, opt, bool, 是否支持二维码事件, desc:对应事件上报报文中eventType:QRCodeEvent-->true
  </isSupportQRCodeEvent>
  <isSupportVisitorEvent>
    <!--ro, opt, bool, 是否支持访客事件, desc:对应事件上报报文中eventType:VisitorEvent-->true
  </isSupportVisitorEvent>
  <isSupportEmployeeAuthEvent>
    <!--ro, opt, bool, 是否支持员工授权事件, desc:对应事件上报报文中eventType:EmployeeAuthEvent-->true
  </isSupportEmployeeAuthEvent>
  <isSupportVisitorInfoSearchEvent>
    <!--ro, opt, bool, 是否支持访客信息查询事件, desc:对应事件上报报文中eventType:VisitorInfoSearchEvent-->true
  </isSupportVisitorInfoSearchEvent>
  <isSupportFaceContrastResultDisplay>
    <!--ro, opt, bool, 是否支持人脸比对结果展示, desc:接口:/ISAPI/Intelligent/faceContrast/resultDisplay/capabilities?format=json-->true
  </isSupportFaceContrastResultDisplay>
  <isSupportSnapshotAsync>
    <!--ro, opt, bool, 是否支持异步手动抓图（返回图片URL）, desc:接口:/ISAPI/Streaming/channels/<ID>/picture/async?format=json-->true
  </isSupportSnapshotAsync>
  <isSupportLogExportByUSB>
    <!--ro, opt, bool, 日志从U盘导出到PC, desc:接口:/ISAPI/System/exportUSBLog?format=json-->true
  </isSupportLogExportByUSB>
  <isSupportShellCmd>
    <!--ro, opt, bool, 是否支持shell命令控制, desc:接口:/ISAPI/System/shellCmd?format=json-->true
  </isSupportShellCmd>
  <faceMonitor opt="dailyFaceMonitor,dailyFaceTracking,VCAFaceMonitor,VCAFaceTracking,manualFaceMonitor,advanceConfiguration,">
    <!--ro, opt, bool, 是否支持人脸布防, attr:opt{opt, string, 未定义, range:[,]}, desc:接口:(/ISAPI/Intelligent/channels/<ID>/dailyFaceMonitor?format=json)-->true
  </faceMonitor>
  <isSupportRelatedVCAResource>
    <!--ro, opt, bool, 是否支持系统级智能资源配置协议, desc:接口:/ISAPI/System/RelatedVCAResource/capabilities?format=json,该协议与原有智能资源切换协议互斥：-->true
  </isSupportRelatedVCAResource>
  <isSupportVehicleMonitor>
    <!--ro, opt, bool, 是否支持智能车辆布防跟踪, desc:接口: /ISAPI/Traffic/channels/<ID>/vehicleMonitor/capabilities?format=json-->true
  </isSupportVehicleMonitor>
  <isSupportManualVehicleMonitor>
    <!--ro, opt, bool, 是否支持手动车辆布防跟踪 , desc:接口:/ISAPI/Traffic/channels/<ID>/vehicleMonitor/manual/capabilitis?format=json-->true
  </isSupportManualVehicleMonitor>
  <isSupportDailyVehicleMonitor>
    <!--ro, opt, bool, 是否支持日常车辆布防跟踪, desc:接口: /ISAPI/Traffic/channels/<ID>/vehicleDetect/capabilities-->true
  </isSupportDailyVehicleMonitor>
  <isSupportInputProxyDeviceInfo>
    <!--ro, opt, bool, 是否支持获取设备代理通道接入的设备信息, desc:接口: /ISAPI/ContentMgmt/InputProxy/channels/<ID>/capabilities中的isSupportChannelDeviceInfo-->true
  </isSupportInputProxyDeviceInfo>
  <isSupportAccessControlCap>
    <!--ro, opt, bool, 门禁总能力, desc:接口: /ISAPI/AccessControl/capabilities-->true
  </isSupportAccessControlCap>
  <isSupportDebugLog>
    <!--ro, opt, bool, 是否支持调试日志导出, desc:接口:/ISAPI/System/debugLog?format=json-->true
  </isSupportDebugLog>
  <isSupportFaceAppear>
    <!--ro, opt, bool, 是否支持人脸出现检测事件, desc:eventType:faceAppear-->true
  </isSupportFaceAppear>
  <isSupportFaceDisappear>
    <!--ro, opt, bool, 是否支持人脸消失检测事件, desc:eventType:faceDisappear-->true
  </isSupportFaceDisappear>
  <isSupportTeacherBehavior>
    <!--ro, opt, bool, 是否支持教师异常行为识别事件, desc:eventType:teacherBehavior-->true
  </isSupportTeacherBehavior>
  <isSupportHeadRiseRate>
    <!--ro, opt, bool, 是否支持人脸出现检测事件, desc:eventType:headRiseRate-->true
  </isSupportHeadRiseRate>
  <isSupportIPCUpgrade>
    <!--ro, opt, bool, 是否支持通过NVR等设备对IPC进行升级, desc:接口:/ISAPI/System/IPCUpgrade/<ID>?format=json-->true
  </isSupportIPCUpgrade>
  <isSupportFaceLibRebuildEvent>
    <!--ro, opt, bool, 是否支持人脸库重新建模事件上报, desc:eventType:faceLibRebuild-->true
  </isSupportFaceLibRebuildEvent>
  <isSupportCalibrationStream>
    <!--ro, opt, bool, 标定码流支持能力, desc:接口:/ISAPI/Streaming/calibStream/capabilities?format=json-->true
  </isSupportCalibrationStream>
  <isSupportChannelOccupy>
    <!--ro, opt, bool, 是否支持室外消防通道被车辆占用, desc:eventType:channelOccupy-->true
  </isSupportChannelOccupy>
  <isSupportOffDuty>
    <!--ro, opt, bool, 是否支持消控室人员离岗, desc:eventType:offDuty-->true
  </isSupportOffDuty>
  <isSupportNoCertificate>
    <!--ro, opt, bool, 是否支持消控室持证人员不足, desc:eventType:noCertificate-->true
  </isSupportNoCertificate>
  <isSupportSmokeAlarm>
    <!--ro, opt, bool, 是否支持烟雾报警, desc:eventType:smokeAlarm-->true
  </isSupportSmokeAlarm>
  <isSupportBatteryCarDisobey>
    <!--ro, opt, bool, 是否支持电瓶车违规停放, desc:eventType:batteryCarDisobey-->true
  </isSupportBatteryCarDisobey>
  <isSupportNoFireExtinguisherRecog>
    <!--ro, opt, bool, boolean是否支持灭火器缺失, desc:eventType:noFireExtinguisherRecog-->true
  </isSupportNoFireExtinguisherRecog>
  <isSupportIndoorPasswayBlock>
    <!--ro, opt, bool, 是否支持室内通道堵, desc:eventType:indoorPasswayBlock-->true
  </isSupportIndoorPasswayBlock>
  <isSupportFireSmartFireDetect>
    <!--ro, opt, bool, 是否支持火点检测, desc:eventType:fireSmartFireDetect-->true
  </isSupportFireSmartFireDetect>
  <isSupportDetectorRunningStatus>
    <!--ro, opt, bool, 是否支持探测器运行状态, desc:eventType:detectorRunningStatus-->true
  </isSupportDetectorRunningStatus>
  <isSupportDetectorOperationStatus>
    <!--ro, opt, bool, 是否支持探测器操作状态, desc:eventType:detectorOperationStatus-->true
  </isSupportDetectorOperationStatus>
  <isSupportDetectorTemperatureAlarm opt="highTemperature,riseTemperature,flame">
    <!--ro, opt, bool, 是否支持探测器温度报警, attr:opt{req, string, 未定义, range:[,]}-->true
  </isSupportDetectorTemperatureAlarm>
  <isSupportDetectorShelterAlarm>
    <!--ro, opt, bool, 是否支持探测器遮挡报警, desc:接口:eventType:detectorShelterAlarm-->true
  </isSupportDetectorShelterAlarm>
  <isSupportDetectorMotionAlarm>
    <!--ro, opt, bool, 是否支持探测器移动报警, desc:接口:eventType:detectorMotionAlarm-->true
  </isSupportDetectorMotionAlarm>
  <isSupportDetectorTamperAlarm>
    <!--ro, opt, bool, 是否支持探测器防拆报警, desc:接口:eventType:detectorTamperAlarm-->true
  </isSupportDetectorTamperAlarm>
  <isSupportDetectorEmergencyAlarm>
    <!--ro, opt, bool, 是否支持探测器紧急报警, desc:接口:eventType:detectorEmergencyAlarm-->true
  </isSupportDetectorEmergencyAlarm>
  <isSupportDetectorSmokeAlarm>
    <!--ro, opt, bool, 是否支持探测器烟雾报警, desc:接口:eventType:detectorSmokeAlarm-->true
  </isSupportDetectorSmokeAlarm>
  <isSupportDetectorCombustibleGasAlarm>
    <!--ro, opt, bool, 是否支持探测器可燃气体报警, desc:接口:eventType:detectorCombustibleGasAlarm-->true
  </isSupportDetectorCombustibleGasAlarm>
  <isSupportFireControlData>
    <!--ro, opt, bool, 是否支持消防实时数据上报, desc:接口:eventType:FireControlData-->true
  </isSupportFireControlData>
  <isSupportFireNoRegulation>
    <!--ro, opt, bool, 是否支持人离火事件上报, desc:接口:eventType:fireNoRegulation-->true
  </isSupportFireNoRegulation>
  <isSupportSmokeFireRecognize>
    <!--ro, opt, bool, 是否支持烟火识别事件上报, desc:接口:eventType:smokeFireRecognize-->true
  </isSupportSmokeFireRecognize>
  <isSupportClientProxyWEB>
    <!--ro, opt, bool, 是否支持WEB页面跳转-->true
  </isSupportClientProxyWEB>
  <WEBLocation>
    <!--ro, opt, string, WEB页面放置位置, range:[1,32], desc:local-设备本地，remote-远程（不返回该节点时，默认WEB页面放置设备本地）-->local
  </WEBLocation>
  <deviceId>
    <!--ro, opt, string, 设备ID, range:[1,32], desc:如果WEBLocation为remote，则需要返回设备唯一的设备ID，用来标示设备唯一对应的web包，这个deviceId有Web配置包统一管理，一款设备多型号返回相同-->test
  </deviceId>
  <isSupportTimeZone>
    <!--ro, opt, bool, 是否支持夏令时配置, desc:接口:/ISAPI/System/time/timeZone-->true
  </isSupportTimeZone>
  <isSptDiagnosis>
    <!--ro, opt, bool, 是否支持设备诊断, desc:接口:（/ISAPI/System/diagnosis）-->true
  </isSptDiagnosis>
  <isSptSerialLogCfg>
    <!--ro, opt, bool, 串口日志重定向配置, desc:接口:（/ISAPI/System/serialLogCfg?format=json）-->true
  </isSptSerialLogCfg>
  <isSptFileExport>
    <!--ro, opt, bool, 设备文件导出, desc:接口:（/ISAPI/System/fileExport?format=json）-->true
  </isSptFileExport>
  <isSptCertificationStandard>
    <!--ro, opt, bool, 是否支持主机认证标准配置, desc:接口:（/ISAPI/SecurityCP/certificationStandard）-->true
  </isSptCertificationStandard>
  <isSptKeypadLock>
    <!--ro, opt, bool, 是否支持键盘锁定, desc:接口:（/ISAPI/System/keypadLock/config）-->true
  </isSptKeypadLock>
  <isSupportVibrationDetection>
    <!--ro, opt, bool, 是否支持振动侦测, desc:接口:/ISAPI/System/channels/<ID>/vibrationDetection?format=json-->true
  </isSupportVibrationDetection>
  <isSupportSmokingDetectAlarm>
    <!--ro, opt, bool, 是否支持抽烟报警, desc:检测是抽烟的这个动作,消防报警上传中eventType:smokeDetectAlarm-->true
  </isSupportSmokingDetectAlarm>
  <isSupportRadarChannels>
    <!--ro, opt, bool, 表示支持雷达通道获取, desc:接口:/ISAPI/System/RadarChannels?format=json-->true
  </isSupportRadarChannels>
  <radarIPDForm>
    <!--ro, opt, enum, 雷球形态, subType:string, [single#单雷达,double_diagonal#双雷达180°对角,double_vertical#双雷达90°垂直角]-->single
  </radarIPDForm>
  <isSupportRadarFieldDetection>
    <!--ro, opt, bool, 是否支持雷达区域入侵, desc:接口:/ISAPI/Smart/RadarChannels/<radarChannelID>/radarFieldDetection/capabilities?format=json-->true
  </isSupportRadarFieldDetection>
  <isSupportRadarLineDetection>
    <!--ro, opt, bool, 是否支持雷达越界侦测, desc:接口:/ISAPI/Smart/RadarChannels/<radarChannelID>/radarLineDetection/capabilities?format=json-->true
  </isSupportRadarLineDetection>
  <mixedTargetDetectionWebNoDisplay>
    <!--ro, opt, bool, 混合目标识别不显示-->true
  </mixedTargetDetectionWebNoDisplay>
  <isSupportRemovePlaybackRecord>
    <!--ro, opt, bool, 是否支持去除回放录像(设备不支持录像回放), desc:支持返回true,不支持不返回.该节点在isSupportRemoveStorage为false时才可以返回,为true时不返回-->true
  </isSupportRemovePlaybackRecord>
  <isSupportAudioUpload>
    <!--ro, opt, bool, 是否支持音频文件上传, desc:接口:/ISAPI/System/Audio/audioUpload?format=json-->true
  </isSupportAudioUpload>
  <VCAResourceList>
    <!--ro, opt, array, 智能资源支持列表, subType:object, range:[,]-->
    <VCAResource>
      <!--ro, opt, object, 智能资源-->
      <VCAResourceType>
        <!--ro, opt, string, 智能资源类型, range:[,]-->null
      </VCAResourceType>
      <ChannleVCAResourceList>
        <!--ro, opt, array, 智能资源支持列表, subType:object, range:[,]-->
        <ChannleVCAResource>
          <!--ro, opt, object, 通道智能资源-->
          <channel>
            <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:-->1
          </channel>
          <channleVCAResourceType>
            <!--ro, opt, string, 通道智能资源类型, range:[,]-->null
          </channleVCAResourceType>
        </ChannleVCAResource>
      </ChannleVCAResourceList>
    </VCAResource>
  </VCAResourceList>
  <isSupportSlotInsertion>
    <!--ro, opt, bool, 是否支持槽位拔插, desc:eventType:slotInsertion-->true
  </isSupportSlotInsertion>
  <isSupportNetworkLoop>
    <!--ro, opt, bool, 是否支持环网告警, desc:eventType:networkLoop-->true
  </isSupportNetworkLoop>
  <isSupportSleep>
    <!--ro, opt, bool, 是否支持休眠配置, desc:/ISAPI/System/sleep/capabilities?format=json-->true
  </isSupportSleep>
  <isSupportContainerDetection>
    <!--ro, opt, bool, 是否支持集装箱检测, desc:/ISAPI/Intelligent/containerDetection/capabilities?format=json（部分设备不会返回本字段,此时通过/ISAPI/Traffic/ContentMgmt/InputProxy/channels/<ID>/ocrScene/capabilities协议返回值判断是否支持）-->true
  </isSupportContainerDetection>
  <isSupportRadarVideoDetection>
    <!--ro, opt, bool, 对应/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json, desc:接口:/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json-->true
  </isSupportRadarVideoDetection>
  <isSupportRadarVideoDetectionRealtime>
    <!--ro, opt, bool, 是否支持雷视目标检测事件, desc:接口:/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json-->true
  </isSupportRadarVideoDetectionRealtime>
  <isSupportBatteryStatusUpload>
    <!--ro, opt, bool, 是否支持电池状态上报, desc:eventType:batteryStatus-->true
  </isSupportBatteryStatusUpload>
  <isSupportPowerConsumptionStatusUpload>
    <!--ro, opt, bool, 是否支持设备功耗状态上报-->true
  </isSupportPowerConsumptionStatusUpload>
  <isSupportOnlineUpgradeTask>
    <!--ro, opt, bool, 是否支持设备在线升级任务-->true
  </isSupportOnlineUpgradeTask>
  <isSupportPersonArmingTrack>
    <!--ro, opt, bool, 支持人员布防配置, desc:接口:/ISAPI/Intelligent/channels/<ID>/personArmingTrack/capabilities?format=json-->true
  </isSupportPersonArmingTrack>
  <isSupportManualPersonArmingTrack>
    <!--ro, opt, bool, 支持手动人员布防, desc:接口:/ISAPI/Intelligent/channels/<ID>/manualPersonArmingTrack?format=json-->true
  </isSupportManualPersonArmingTrack>
  <isSupportGPSVerification>
    <!--ro, opt, bool, 支持GPS校验点, desc:接口:/ISAPI/System/GPSVerification/channels/<ID>/points?format=json-->true
  </isSupportGPSVerification>
  <isSupportHBDLib>
    <!--ro, opt, bool, 是否支持人体库, desc:接口:/ISAPI/Intelligent/HBDLib/capabilities?format=json-->true
  </isSupportHBDLib>
  <isSupportDisinfectionInfo>
    <!--ro, opt, bool, 是否支持消毒信息上报, desc:eventType:disinfectionInfo-->true
  </isSupportDisinfectionInfo>
  <isSupportTempQueryDelete>
    <!--ro, opt, bool, 是否支持测温查询删除, desc:eventType:tempQueryDelete-->true
  </isSupportTempQueryDelete>
  <isSupportMobilePayment>
    <!--ro, opt, bool, 是否支持移动支付, desc:/ISAPI/System/mobilePayment?format=json-->true
  </isSupportMobilePayment>
  <isSupportFileSearch>
    <!--ro, opt, bool, 是否支持文件查询, desc:接口:/ISAPI/System/fileSearch?format=json-->true
  </isSupportFileSearch>
  <isSupportFileExportAsync>
    <!--ro, opt, bool, 是否支持文件异步导出, desc:接口:/ISAPI/System/fileExport/async?format=json-->true
  </isSupportFileExportAsync>
  <isSupportSSDFileSystemCapacity>
    <!--ro, opt, bool, 是否支持获取SSD系统容量分布, desc:接口:/ISAPI/System/SSDFileSystem/capacity?format=json-->true
  </isSupportSSDFileSystemCapacity>
  <isSupport4GSafetyHelmetInfo>
    <!--ro, opt, bool, 是否支持安全帽事件, desc:eventType:4GSafetyHelmetInfo-->true
  </isSupport4GSafetyHelmetInfo>
  <isSupportICCID>
    <!--ro, opt, bool, 是否支持ICCID信息获取, desc:接口:/ISAPI/System/deviceInfo/ICCID?format=json-->true
  </isSupportICCID>
  <isSupportFireEscapeDetection>
    <!--ro, opt, bool, 是否支持消防通道检测, desc:接口:/ISAPI/Intelligent/channels/<ID>/fireEscapeDetection/capabilities?format=json-->true
  </isSupportFireEscapeDetection>
  <isSupportTakingElevatorDetection>
    <!--ro, opt, bool, 是否支持乘梯检测, desc:接口:/ISAPI/Intelligent/channels/<ID>/takingElevatorDetection/capabilities?format=json-->true
  </isSupportTakingElevatorDetection>
  <isSupportVehicleMatchResult>
    <!--ro, opt, bool, 设备是否支持车牌比对 , desc:接口:/ISAPI/Intelligent/channels/<ID>/licensePlateContrast/capabilities?format=json-->true
  </isSupportVehicleMatchResult>
  <isSupportDataAware>
    <!--ro, opt, bool, 数据感知支持能力, desc:接口:/ISAPI/System/dataAware/capabilities?format=json-->true
  </isSupportDataAware>
  <isSupportAbnormalReboot>
    <!--ro, opt, bool, 是否支持异常重启事件, desc:eventType:abnormalReboot-->true
  </isSupportAbnormalReboot>
  <isSupportVehicleThermometry>
    <!--ro, opt, bool, 是否支持车辆测温检测, desc:接口:/ISAPI/Traffic/channels/<ID>/vehicleDetect/thermometry/capabilities?format=json-->true
  </isSupportVehicleThermometry>
  <AssociationScenesList>
    <!--ro, opt, array, 场景自适应关联列表, subType:object, range:[,], desc:代表设备支持通道间场景自适应关联:当前设备存在主（枪机）、从（球机）两个通道,但设备仅开放一个主通道给用户进行场景配置,从通道的场景配置不对外开放能力,从通道场景由设备自适应关联主通道场景:当前前端环动系列球机返回该能力-->
    <AssociationScenes>
      <!--ro, req, object, 通道间场景自适应所关联的通道列表-->
      <channelID>
        <!--ro, req, int, 可用于关联场景的通道ID, range:[,], step:, unit:, unitType:, desc:可用于关联场景的通道ID-->1
      </channelID>
      <isSupportScene>
        <!--ro, opt, bool, 是否支持场景配置, desc:该节点返回为true的话,代表当前通道作为主通道进行场景配置:若为从通道,则不支持场景配置,该节点无需返回-->true
      </isSupportScene>
    </AssociationScenes>
  </AssociationScenesList>
  <supportRelationVideoEvent opt="PIR,cityManagement,roadMaint">
    <!--ro, opt, string, 支持关联触发事件视频上传, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:PIR#PIR事件,cityManagement#城管事件,roadMaint#道路养护事件-->test
  </supportRelationVideoEvent>
  <isSupportVCAResourceList>
    <!--ro, opt, bool, 是否支持智能资源批量配置, desc:接口:/ISAPI/System/Video/inputs/channels/VCAResourceList?format=json-->true
  </isSupportVCAResourceList>
  <isSupportConvergenceCloud>
    <!--ro, opt, bool, 是否支持萤石互联互通通道级接口, desc:全部通道能力:/ISAPI/Event/convergenceCloud/channels/capabilities?format=json;指定通道能力/ISAPI/Event/convergenceCloud/channels/<ID>/capabilities?format=json-->true
  </isSupportConvergenceCloud>
  <isSupportInterconnection>
    <!--ro, opt, bool, 是否支持萤石互联互通设备级接口, desc:接口:/ISAPI/Event/convergenceCloud/capabilities?format=json-->true
  </isSupportInterconnection>
  <isSupportHPVehicleStatus>
    <!--ro, opt, bool, 是否支持月台车辆状态事件, desc:eventType:HPVehicleStatus-->true
  </isSupportHPVehicleStatus>
  <isSupportHPWorkingStatus>
    <!--ro, opt, bool, 是否支持月台工作状态定时事件, desc:eventType:HPWorkingStatus-->true
  </isSupportHPWorkingStatus>
  <isSupportHPPeopleDetection>
    <!--ro, opt, bool, 是否支持月台车边人员检测, desc:eventType:HPPeopleDetection-->true
  </isSupportHPPeopleDetection>
  <isSupportHPVehicleDoorDetection>
    <!--ro, opt, bool, 是否支持月台车厢门检测事件, desc:eventType:HPVehicleDoorDetection-->true
  </isSupportHPVehicleDoorDetection>
  <isSupportRoadMaint>
    <!--ro, opt, bool, 是否支持道路养护, desc:配置接口：/ISAPI/Intelligent/channels/<ID>/roadMaint?format=json-->true
  </isSupportRoadMaint>
  <isSupportImageCapture>
    <!--ro, opt, bool, 是否支持通道定时抓图事件, desc:对应配置能力：/ISAPI/System/Video/inputs/channels/<ID>/imageCapture?format=json-->true
  </isSupportImageCapture>
  <isSupportScheduledRecordUpload>
    <!--ro, opt, bool, 是否支持通道定时录像事件, desc:对应配置能力：/ISAPI/System/Video/inputs/channels/<ID>/scheduledRecordUpload?format=json-->true
  </isSupportScheduledRecordUpload>
  <isSupportTargetPatternCollect>
    <!--ro, opt, bool, 是否支持目标路径采集事件, desc:eventType:targetPatternCollect-->true
  </isSupportTargetPatternCollect>
  <isSupportAudioAnalysis>
    <!--ro, opt, bool, 是否支持音频分析事件, desc:eventType:audioAnalysis,不支持不返回-->true
  </isSupportAudioAnalysis>
  <isSupportDebuggingDataExport>
    <!--ro, opt, bool, 是否支持参数(内外参数、规则配置参数)导出, desc:接口:/ISAPI/System/debuggingData/parameters?format=json,不支持不返回-->true
  </isSupportDebuggingDataExport>
  <isSupportInternalParaAdjust>
    <!--ro, opt, bool, 是否支持三目设备是否支持内参调整, desc:接口:/ISAPI/System/internalParameters/adjustment?format=json,不支持不返回-->true
  </isSupportInternalParaAdjust>
  <isSupportManualImageCapture>
    <!--ro, opt, bool, 是否支持视频通道手动抓图, desc:接口:/ISAPI/System/Video/inputs/channels/<ID>/manualImageCapture?format=json,不支持不返回-->true
  </isSupportManualImageCapture>
  <characteristicCode min="1" max="128">
    <!--ro, opt, string, 设备特征码, range:[1,128], attr:min{opt, string, 最小长度, range:[,]},max{opt, string, 最大长度, range:[,]}, desc:接口：/ISAPI/System/deviceInfo/characteristicCode?format=json-->null
  </characteristicCode>
  <isSupportSIMCardStatus>
    <!--ro, opt, bool, 是否支持SIM卡状态信息获取, desc:接口：/ISAPI/System/SIMCardStatus?format=json-->true
  </isSupportSIMCardStatus>
  <OpenPlatformCap>
    <!--ro, opt, object, 设备支持HEOP的详细能力-->
    <isSupportOpenPlatform>
      <!--ro, req, bool, 是否支持HEOP开放平台-->true
    </isSupportOpenPlatform>
    <maxAPPNum>
      <!--ro, req, int, 设备支持的安装第三方APP包最大个数, range:[,], step:, unit:, unitType:-->0
    </maxAPPNum>
  </OpenPlatformCap>
  <isSupportLogException>
    <!--ro, opt, bool, 设备是否支持日志异常报警, desc:对应事件上报报文中eventType:logException-->true
  </isSupportLogException>
  <manualEvent opt="fielddetection,linedetection,ANPR,faceCapture,mixedTargetDetection">
    <!--ro, opt, string, 支持手动触发事件接口, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:接口：/ISAPI/Intelligent/channels/<ID>/manualEvent/<eventType>?format=json-->null
  </manualEvent>
  <isSupportAppCfg>
    <!--ro, opt, bool, 是否支持应用管理, desc:/ISAPI/System/app/capabilities?format=json-->true
  </isSupportAppCfg>
  <isSupportCleanUp>
    <!--ro, opt, bool, 是否支持一键清理, desc:/ISAPI/System/cleanup?format=json-->true
  </isSupportCleanUp>
  <isSupportEndUserCheckMsg opt="sleep,reboot,factoryReset,cleanup,parentPickUpQuery,schoolAttendanceQuery,screenShare,screenMirror">
    <!--ro, opt, bool, 是否支持最终用户确认信息上报, attr:opt{req, string, 取值范围, range:[,], desc:sleep-休眠,reboot-重启,factoryReset-恢复出厂,cleanup-一键清理,parentPickUpQuery-家长接送信息查询,schoolAttendanceQuery-校园考勤信息查询,screenShare-屏幕共享,screenMirror-投屏}, desc:对应事件上报报文中eventType:endUserCheckMsg-->true
  </isSupportEndUserCheckMsg>
  <isSupportScreenConfig>
    <!--ro, opt, bool, 是否支持屏幕参数配置, desc:/ISAPI/System/screenConfig/capabilities?format=json-->true
  </isSupportScreenConfig>
  <isSupportTemperatureMonitor>
    <!--ro, opt, bool, 是否支持温度监测参数配置, desc:/ISAPI/System/temperatureMonitor/capabilities?format=json-->true
  </isSupportTemperatureMonitor>
  <isSupportObjectServer>
    <!--ro, opt, bool, 是否支持对象存储服务, desc:/ISAPI/System/objectServer/capabilities?format=json-->true
  </isSupportObjectServer>
  <isSupportCDsStatus>
    <!--ro, opt, bool, 是否支持光盘状态提醒, desc:对应使能接口为：/ISAPI/Trial/roompara/capabilities中bEnableCDsStatus,对应事件为:CDsStatus-->true
  </isSupportCDsStatus>
  <isSupportCoalGangueDetection>
    <!--ro, opt, bool, 是否支持煤矸检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/coalGangueDetection,不支持不返回-->true
  </isSupportCoalGangueDetection>
  <isSupportVacantSeatRate>
    <!--ro, opt, bool, 是否支持空座率检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/vacantSeatRate?format=json;对应事件为:VacantSeatRate,不支持不返回-->true
  </isSupportVacantSeatRate>
  <isSupportObjectsThrownDetection>
    <!--ro, opt, bool, 是否支持高空抛物事件检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json;对应事件为:objectsThrownDetection,不支持不返回-->true
  </isSupportObjectsThrownDetection>
  <isSupportBVCorrectDataSearch>
    <!--ro, opt, bool, 是否支持查询相机矫正参数, desc:接口:/ISAPI/System/BVCorrectData/search?format=json,不支持不返回-->true
  </isSupportBVCorrectDataSearch>
  <isSupportSlagTruckWashingDetection>
    <!--ro, opt, bool, 是否支持渣土车清洗检测, desc:eventType:slagTruckWashingDetection-->true
  </isSupportSlagTruckWashingDetection>
  <isSupportWOL>
    <!--ro, opt, bool, 是否支持局域网唤醒参数配置, desc:通过WOL(Wake On-Lan)功能实现,对应URL(/ISAPI/System/WOL/capabilities?format=json)-->true
  </isSupportWOL>
  <isSupportPersonQueueTimingStatistics>
    <!--ro, opt, bool, 是否支持排队检测定时人数统计事件, desc:eventType:isSupportPersonQueueTimingStatistics-->true
  </isSupportPersonQueueTimingStatistics>
  <isSupportLensParamFile>
    <!--ro, opt, bool, 是否支持镜头参数文件导入导出-->true
  </isSupportLensParamFile>
  <isSupportVehiclePassingInParkingLot>
    <!--ro, opt, bool, 是否支持停车场出入口过车事件, desc:eventType:vehiclePassingInParkingLot-->true
  </isSupportVehiclePassingInParkingLot>
  <isSupportPowerOutput>
    <!--ro, opt, bool, 是否支持电源输出配置, desc:接口：/ISAPI/System/powerOutput/capabilities?format=json-->true
  </isSupportPowerOutput>
  <isSupportIPCUpgradeByFTP>
    <!--ro, opt, bool, 表示设备支持升级代理的通道设备；例如（通过NVR升级IPC）, desc:接口/ISAPI/System/IPCUpgrade/<channelID>/FTP?format=json&security=<security>&iv=<iv>-->true
  </isSupportIPCUpgradeByFTP>
  <isSupportMethaneConcentrationException>
    <!--ro, opt, bool, 是否支持甲烷浓度异常事件, desc:eventType:methaneConcentrationException-->true
  </isSupportMethaneConcentrationException>
  <isSupportMethaneLightIntensityException>
    <!--ro, opt, bool, 是否支持甲烷光强异常事件, desc:eventType:methaneLightIntensityException-->true
  </isSupportMethaneLightIntensityException>
  <isSupportLocalButtonPermission>
    <!--ro, opt, bool, 是否支持设备本地按键的权限控制, desc:对应URL(/ISAPI/System/localButtonPermission/capabilities?format=json)-->true
  </isSupportLocalButtonPermission>
  <isSupportLocalButtonRecord>
    <!--ro, opt, bool, 是否支持按键触发录像事件, desc:eventType:localButtonRecord-->true
  </isSupportLocalButtonRecord>
  <isSupportLocalButtonSnapshot>
    <!--ro, opt, bool, 是否支持按键触发抓图事件, desc:eventType:localButtonSnapshot-->true
  </isSupportLocalButtonSnapshot>
  <isSupportVoiceTalkEvent>
    <!--ro, opt, bool, 是否支持对讲交互事件, desc:eventType:voiceTalkEvent-->true
  </isSupportVoiceTalkEvent>
  <isSupportPowerSupply>
    <!--ro, opt, bool, 是否支持对外供电, desc:对应URL（/ISAPI/System/powerSupply/capabilities?format=json）-->true
  </isSupportPowerSupply>
  <isSupportbarrierGateStatus>
    <!--ro, opt, bool, 是否支持道闸状态, desc:eventType：barrierGateStatus-->true
  </isSupportbarrierGateStatus>
  <DeployCap>
    <!--ro, opt, object, 布防非订阅参数能力-->
    <deployID opt="1,2">
      <!--ro, opt, enum, 布防类型, subType:int, [0#客户端布防,1#实时布防], attr:opt{req, string, 取值范围, range:[,]}-->0
    </deployID>
  </DeployCap>
  <isSupportSignalControllerStatus>
    <!--ro, opt, bool, 是否支持信号控制机状态上报, desc:eventType:signalControllerStatus-->true
  </isSupportSignalControllerStatus>
  <isSupportSignalControllerFault>
    <!--ro, opt, bool, 是否支持信号控制机故障上报, desc:eventType:signalControllerFault-->true
  </isSupportSignalControllerFault>
  <isSupportNTPConfig>
    <!--ro, opt, bool, 是否支持NTP参数配置, desc:/ISAPI/System/time/ntp/capabilities?format=json-->true
  </isSupportNTPConfig>
  <isSupportConsumptionQuery>
    <!--ro, opt, bool, 是否支持消费查询请求上报, desc:eventType:ConsumptionQuery-->true
  </isSupportConsumptionQuery>
  <StreamingCodingRegionPositionCap>
    <!--ro, opt, object, 支持码流所有拼接区域位置信息能力, desc:/ISAPI/System/streamingCoding/channels/<channelID>/regionPosition-->
    <ChannelsList>
      <!--ro, opt, array, 通道列表, subType:object, range:[,]-->
      <channelsID>
        <!--ro, req, int, 设备支持的通道号, range:[,], step:, unit:, unitType:-->1
      </channelsID>
    </ChannelsList>
  </StreamingCodingRegionPositionCap>
  <isSupportLowPowerPlan>
    <!--ro, opt, bool, 设备是否支持低功耗模式计划配置, desc:接口:/ISAPI/System/consumptionMode/lowPowerPlan/capablities?format=json-->true
  </isSupportLowPowerPlan>
  <isSupportPlateQuaAlarm>
    <!--ro, opt, bool, 是否支持车牌质量检测事件, desc:eventType:plateQuaAlarm-->true
  </isSupportPlateQuaAlarm>
  <isSupportWiegand>
    <!--ro, opt, bool, 是否支持韦根协议, desc:接口:/ISAPI/System/Wiegand/<wiegandID>/capabilities?format=json-->true
  </isSupportWiegand>
  <zoomFocusWebDisplay opt="ROI,roadTrafficDetection,SMD,mixedTargetDetection,faceCapture">
    <!--ro, opt, string, web支持显示zoomfocus的界面, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:ROI界面路径:Configuration-Vedio/Audio-ROI
roadTrafficDetection:Configuration-Road Traffic-Detection Configuration
SMD：smart所有支持事件下显示
mixedTargetDetection：混合目标下显示
faceCapture：人脸抓拍-->ROI
  </zoomFocusWebDisplay>
  <isSupportInternalParamsAdjustment>
    <!--ro, opt, bool, 是否支持按区域进行内参校正, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/System/internalParameters/regionAdjustment/capabilities?format=json-->true
  </isSupportInternalParamsAdjustment>
  <isSupportDiagnosticReport>
    <!--ro, opt, bool, 是否支持诊断报告功能, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/System/diagnosticReport/capabilities?format=json-->true
  </isSupportDiagnosticReport>
  <isSupportWaterQualitySearch>
    <!--ro, opt, bool, 是否支持水质数据查询功能, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/Event/waterQualityDetection/search?format=json-->true
  </isSupportWaterQualitySearch>
  <isSupportExhaustDetection>
    <!--ro, opt, bool, 是否支持尾气检测参数配置, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/Event/exhaustDetection/channels/<channelID>/capabilities?format=json-->true
  </isSupportExhaustDetection>
  <isSupportTPMSecretKey>
    <!--ro, opt, bool, 是否支持码流加密所有TPM秘钥列表, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/Streaming/encryption/TPMSecretKeyList?format=json&security=<security>&iv=<iv>-->true
  </isSupportTPMSecretKey>
  <isSupportWeatherStation>
    <!--ro, opt, bool, 是否支持气象站信息上报, desc:接口：eventType:weatherStation,不支持不返回-->true
  </isSupportWeatherStation>
  <isSupportRoadVisibilityAnalysis>
    <!--ro, opt, bool, 是否支持道路能见度检测分析, desc:接口：eventType:roadVisibilityAnalysis,不支持不返回-->true
  </isSupportRoadVisibilityAnalysis>
  <isSupportRoadWeatherAnalysis>
    <!--ro, opt, bool, 是否支持路面气象检测分析, desc:接口：eventType:roadWeatherAnalysis,不支持不返回-->true
  </isSupportRoadWeatherAnalysis>
  <isSupportRoadVisibilityAbnormal>
    <!--ro, opt, bool, 是否支持道路能见度检测异常上报, desc:接口：eventType:roadVisibilityAbnormal,不支持不返回-->true
  </isSupportRoadVisibilityAbnormal>
  <isSupportRoadWeatherAbnormal>
    <!--ro, opt, bool, 是否支持路面气象检测异常上报, desc:接口：eventType:roadWeatherAbnormal,不支持不返回-->true
  </isSupportRoadWeatherAbnormal>
  <isSupportChannelsTimeSync>
    <!--ro, opt, bool, 是否支持设备对IPC/IOT通道的设备批量校时, desc:对应URL:/ISAPI/System/time/channelsTimeSync/capabilities?format=json-->true
  </isSupportChannelsTimeSync>
  <isSupport433Sensor>
    <!--ro, opt, bool, 是否支持433传感器传输配置,
desc:对应URL:
    /ISAPI/System/Sensor/433sensor/433wirelessTransfer/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/sensorDetection/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/sensorPicOverlay/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/rfParamTemplate/capabilities?format=json-->true
  </isSupport433Sensor>
  <isSupportSignalSource>
    <!--ro, opt, bool, 是否支持信号源参数配置, desc:/ISAPI/System/signalSource/capabilities?format=json-->true
  </isSupportSignalSource>
  <isSupportUSBConfig>
    <!--ro, opt, bool, 是否支持USB参数配置, desc:/ISAPI/System/USBConfig/capabilities?format=json-->true
  </isSupportUSBConfig>
  <isSupportStandbyStrategy>
    <!--ro, opt, bool, 是否支持待机策略参数配置, desc:/ISAPI/System/standbyStrategy/capabilities?format=json-->true
  </isSupportStandbyStrategy>
  <isSupportWakeupStrategy>
    <!--ro, opt, bool, 是否支持唤醒策略参数配置, desc:/ISAPI/System/wakeupStrategy/capabilities?format=json-->true
  </isSupportWakeupStrategy>
  <isSupportSeachMutexFunction>
    <!--ro, opt, bool, 是否支持查询关闭互斥功能, desc:对应URL:GET /ISAPI/System/mutexFunction/capabilities?format=json;功能描述:是否支持查询互斥功能-->true
  </isSupportSeachMutexFunction>
  <isSupportMultiDeviceID>
    <!--ro, opt, bool, 是否支持多长号配置, desc:对应url /ISAPI/VideoIntercom/deviceId/batchCfg/capabilities?format=json-->true
  </isSupportMultiDeviceID>
  <isNotSupportMultiDeviceIDCustomName>
    <!--ro, opt, bool, 是否不支持多长号自定义名称配置, desc:不支持时用户无法通过多长号配置接口给设备配置自定义名称。true-不支持，false或者不填表示支持-->true
  </isNotSupportMultiDeviceIDCustomName>
  <isSupportBarCodeEvent>
    <!--ro, opt, bool, 是否支持条形码事件-->true
  </isSupportBarCodeEvent>
  <isSupportGaugeReading>
    <!--ro, opt, bool, 是否支持水尺识别功能, desc:对应URL:GET /ISAPI/Event/channels/<channelID>/gaugeReading/capabilities?format=json,不支持不返回-->true
  </isSupportGaugeReading>
  <isSupportUncertificateCompareEvent>
    <!--ro, opt, bool, 是否支持无证比对事件, desc:接口：eventType:UncertificateCompareEvent,不支持不返回-->true
  </isSupportUncertificateCompareEvent>
  <isSupportAudioDiacritical>
    <!--ro, opt, bool, 是否支持音频变声功能, desc:对应URL:/ISAPI/System/Video/inputs/channels/<channelID>/audioDiacritical/capabilities?format=json-->true
  </isSupportAudioDiacritical>
  <isSupportRoadWeatherAbnormal>
    <!--ro, opt, bool, 是否支持路面气象检测异常上报, desc:接口：eventType:roadWeatherAbnormal,不支持不返回-->true
  </isSupportRoadWeatherAbnormal>
  <isSupportMEFReportSearch>
    <!--ro, opt, bool, 是否支持电围数据统计报表查询, desc:不支持不返回，接口能力：/ISAPI/System/Network/MEF/reportSearch/capabilities?format=json-->true
  </isSupportMEFReportSearch>
  <isSupportBroadcastTriggerEvent>
    <!--ro, opt, bool, 是否支持广播触发事件, desc:寻呼话筒上报该事件到平台后，平台根据上报内容中的终端号列表进行广播并进行确认,eventType:broadcastTriggerEvent,确认URI: /ISAPI/VideoIntercom/broadcastTriggerConfirm?format=json-->true
  </isSupportBroadcastTriggerEvent>
  <isSupportFishingShipDetection>
    <!--ro, opt, bool, 是否支持渔船检测事件, desc:eventType:fishingShipDetection,确认URI: /ISAPI/Thermal/channels/<channelID>/fishingShipDetection/<SID>?format=json-->true
  </isSupportFishingShipDetection>
  <isSupportHPVehicleLoadingRate>
    <!--ro, opt, bool, 是否支持月台车辆装载率事件, desc:eventType:vehicleLoadingRate,不支持不返回,URI: /ISAPI/Intelligent/channels/<channelID>/HPDetection/capabilities?format=json-->true
  </isSupportHPVehicleLoadingRate>
  <isSupportVideoBarrierGateDetection>
    <!--ro, opt, bool, 是否支持港口视频闸口检测, desc:eventType:videoBarrierGateDetection,不支持不返回,URI: /ISAPI/Traffic/ContentMgmt/videoBarrierGate/capabilities?format=json-->true
  </isSupportVideoBarrierGateDetection>
  <isSupportLogicalResource>
    <!--ro, opt, bool, 是否支持监控点组织管理, desc:不支持不返回,URI: /ISAPI/System/LogicalResource/capabilities?format=json-->true
  </isSupportLogicalResource>
  <isSupportSlagTruckCoverPlate>
    <!--ro, opt, bool, 是否支持渣土车盖板检测, desc:不支持不返回,eventType:slagTruckCoverPlateDetection，URI: /ISAPI/Event/channels/<channelID>/slagTruckCoverPlate/capabilities?format=json-->true
  </isSupportSlagTruckCoverPlate>
  <isSupportTrainDetection>
    <!--ro, opt, bool, 是否支持火车检测, desc:不支持不返回,eventType:trainDetection-->true
  </isSupportTrainDetection>
  <isNotSupportVideoOverlays>
    <!--ro, opt, bool, 是否不支持web显示OSD叠加配置, desc:本节点仅用于判断安检人车核验一体机设备上的图像菜单中的OSD叠加配置是否不支持(该配置之前协议设计为默认支持,无能力节点控制).返回true表示不支持OSD叠加(/ISAPI/ContentMgmt/InputProxy/channels/<channelID>/video/overlays开头的url对应功能全部不支持),返回false或者不返回本节点表示支持OSD叠加功能-->true
  </isNotSupportVideoOverlays>
  <isSupportScheduledCaptureTask>
    <!--ro, opt, bool, 是否支持定时抓图任务, desc:对应URL:/ISAPI/Sytem/Video/scheduledCapture/capabilities-->true
  </isSupportScheduledCaptureTask>
  <isSupportGuideCfg>
    <!--ro, opt, bool, 是否支持向导配置, desc:本节点仅用于室内机上判断是否进行向导配置。向导配置用于让用户在设备激活登录后进行一次基础功能的配置(包括网络参数配置、会话配置、模拟室内机的批量添加)。有此节点为true表示支持，无此节点或此节点为false表示不支持-->true
  </isSupportGuideCfg>
  <isSupportCameraGroupPeopleCounting>
    <!--ro, opt, bool, 是否支持多监控点位客流统计, desc:/ISAPI/Intelligent/counting/cameraGroup/capabilities?format=json-->true
  </isSupportCameraGroupPeopleCounting>
  <isSupportAngleDeviationDetection>
    <!--ro, opt, bool, 是否支持倾斜检测, desc:不支持不返回,对应URL:/ISAPI/Event/channels/<channelID>/angleDeviationDetection/capabilities?format=json-->true
  </isSupportAngleDeviationDetection>
  <isSupportCityCode>
    <!--ro, opt, bool, 是否支持城市编码获取, desc:对应URL(/ISAPI/System/cityCode?format=json)-->true
  </isSupportCityCode>
</DeviceCap>

2. 获取设备语言配置能力

2.1 命令

GET /ISAPI/System/DeviceLanguage/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DeviceLanguage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 设备语言配置, attr:version{req, string, 协议版本, range:[,]}-->
  <language opt="SimChinese,TraChinese,English,Russian,Bulgarian,Hungarian,Greek,German,Italian,Czech,Slovakia,French,Polish,Dutch,Portuguese,Spanish,Romanian,Turkish,Japanese,Danish,Swedish,Norwegian,Finnish,Korean,Thai,Estonia,Vietnamese,Hebrew,Latvian,Arabic,Sovenian,Croatian,Lithuanian,Serbian,BrazilianPortuguese,Indonesian,Ukrainian,EURSpanish">
    <!--ro, opt, enum, 语言, subType:string, [SimChinese#简体中文,TraChinese#繁体中文,English#英文,Russian#俄语,Bulgarian#保加利亚语,Hungarian#匈牙利语,Greek#希腊语,German#德语,Italian#意大利语,Czech#捷克语,Slovakia#斯洛伐克语,French#法语,Polish#波兰语,Dutch#荷兰语,Portuguese#葡萄牙语,Spanish#西班牙语,Romanian#罗马尼亚语,Turkish#土耳其语,Japanese#日语,Danish#丹麦语,Swedish#瑞典语,Norwegian#挪威语,Finnish#芬兰语,Korean#韩语,Thai#泰语,Estonia#爱沙尼亚语,Vietnamese#越南语,Hebrew#希伯来语,Latvian#拉脱维亚语,Arabic#阿拉伯语,Slovenian#斯洛文尼亚语,Croatian#克罗地亚语,Lithuanian#立陶宛语,Serbian#塞尔维亚语,BrazilianPortuguese#巴西葡萄牙语,Indonesian#印尼语,Ukrainian#乌克兰语,EURSpanish#西班牙语（欧洲）], attr:opt{req, string, 取值范围, range:[,]}-->SimChinese
  </language>
  <upgradeFirmWareEnabled>
    <!--ro, opt, bool, 升级固件启用-->true
  </upgradeFirmWareEnabled>
</DeviceLanguage>

3. 获取设备语言

3.1 命令

GET /ISAPI/System/DeviceLanguage

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DeviceLanguage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 设备语言, attr:version{req, string, 协议版本, range:[,]}-->
  <language>
    <!--ro, opt, enum, 语言, subType:string, [SimChinese#简体中文,TraChinese#繁体中文,English#英文,Russian#俄语,Bulgarian#保加利亚语,Hungarian#匈牙利语,Greek#希腊语,German#德语,Italian#意大利语,Czech#捷克语,Slovakia#斯洛伐克语,French#法语,Polish#波兰语,Dutch#荷兰语,Portuguese#葡萄牙语,Spanish#西班牙语,Romanian#罗马尼亚语,Turkish#土耳其语,Japanese#日语,Danish#丹麦语,Swedish#瑞典语,Norwegian#挪威语,Finnish#芬兰语,Korean#韩语,Thai#泰语,Estonia#爱沙尼亚语,Vietnamese#越南语,Hebrew#希伯来语,Latvian#拉脱维亚语,Arabic#阿拉伯语,Slovenian#斯洛文尼亚语,Croatian#克罗地亚语,Lithuanian#立陶宛语,Serbian#塞尔维亚语,BrazilianPortuguese#巴西葡萄牙语,Indonesian#印尼语,Ukrainian#乌克兰语,EURSpanish#西班牙语（欧洲）]-->SimChinese
  </language>
</DeviceLanguage>

4. 配置设备语言

4.1 命令

PUT /ISAPI/System/DeviceLanguage

4.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<DeviceLanguage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 设备语言, attr:version{req, string, 协议版本, range:[,]}-->
  <language>
    <!--opt, enum, 语言, subType:string, [SimChinese#简体中文,TraChinese#繁体中文,English#英文,Russian#俄语,Bulgarian#保加利亚语,Hungarian#匈牙利语,Greek#希腊语,German#德语,Italian#意大利语,Czech#捷克语,Slovakia#斯洛伐克语,French#法语,Polish#波兰语,Dutch#荷兰语,Portuguese#葡萄牙语,Spanish#西班牙语,Romanian#罗马尼亚语,Turkish#土耳其语,Japanese#日语,Danish#丹麦语,Swedish#瑞典语,Norwegian#挪威语,Finnish#芬兰语,Korean#韩语,Thai#泰语,Estonia#爱沙尼亚语,Vietnamese#越南语,Hebrew#希伯来语,Latvian#拉脱维亚语,Arabic#阿拉伯语,Slovenian#斯洛文尼亚语,Croatian#克罗地亚语,Lithuanian#立陶宛语,Serbian#塞尔维亚语,BrazilianPortuguese#巴西葡萄牙语,Indonesian#印尼语,Ukrainian#乌克兰语,EURSpanish#西班牙语（欧洲）]-->SimChinese
  </language>
</DeviceLanguage>

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

5. 获取刷新帧能力

5.1 命令

GET /ISAPI/Streaming/channels/<channelID>/refreshFrame/capabilities

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RefreshFrame xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <streamType opt="mainStream,subStream,stream3">
    <!--ro, req, enum, 码流类型, subType:string, [mainStream#主码流,subStream#子码流,stream3#三码流], attr:opt{req, string, 取值范围, range:[,]}-->mainStream
  </streamType>
</RefreshFrame>

6. 配置刷新帧

6.1 命令

PUT /ISAPI/Streaming/channels/<trackStreamID>/refreshFrame

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


基础视频

1. 获取通道属性（单通道）

1.1 命令

GET /ISAPI/AUXInfo/attributes/Channels/<channelID>

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 通道属性, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
  </id>
  <EagleEye>
    <!--ro, opt, object, 通道属性为鹰眼(支持鹰眼的相关功能)-->
    <StreamFusion>
      <!--ro, opt, object, 大鹰眼的全景码流通道-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </StreamFusion>
    <PanoramicMetaData>
      <!--ro, opt, object, 小鹰眼的全景原始码流通道-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </PanoramicMetaData>
    <panoramaStitching>
      <!--ro, opt, bool, 是否支持二三全景通道拼接-->true
    </panoramaStitching>
  </EagleEye>
  <FishEye>
    <!--ro, opt, object, 通道属性为鱼眼(支持鱼眼的相关功能)-->
    <FishEyeStream>
      <!--ro, opt, object, 鱼眼码流用于支持播放库软解功能-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </FishEyeStream>
  </FishEye>
  <Thermal>
    <!--ro, opt, object, 通道属性为热成像(支持热成像的相关功能)-->
    <TemperatureMetaData>
      <!--ro, opt, object, 测温原始码流-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </TemperatureMetaData>
    <ThermometryDetection>
      <!--ro, opt, object, 测温检测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </ThermometryDetection>
    <ThermometryDiffDetection>
      <!--ro, opt, object, 温差检测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </ThermometryDiffDetection>
    <FireDetection>
      <!--ro, opt, object, 火点检测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </FireDetection>
    <SmokeDetection>
      <!--ro, opt, object, 烟雾检测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </SmokeDetection>
    <ShipsDetection>
      <!--ro, opt, object, 船只检测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </ShipsDetection>
    <IntelligentRuleDisplay>
      <!--ro, opt, object, 热成像智能规则显示参数-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </IntelligentRuleDisplay>
    <IntelligentBehaviorRule>
      <!--ro, opt, object, 智能行为规则配置-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </IntelligentBehaviorRule>
    <DPC>
      <!--ro, opt, object, 坏点校正配置-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </DPC>
    <Metadata>
      <!--ro, opt, object, Metadata提取-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </Metadata>
    <FaceThermometry>
      <!--ro, opt, object, 人脸测温-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </FaceThermometry>
    <BlackBody>
      <!--ro, opt, object, 热成像黑体-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </BlackBody>
    <BodyTemperatureCompensation>
      <!--ro, opt, object, 体温温度补偿-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </BodyTemperatureCompensation>
    <LensCorrection>
      <!--ro, opt, object, 镜头校验-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </LensCorrection>
    <BurningPrevention>
      <!--ro, opt, object, 防灼伤-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </BurningPrevention>
    <WasteGasDetection>
      <!--ro, opt, object, 废气排放监测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </WasteGasDetection>
    <ClickToThermometry>
      <!--ro, opt, object, 点击测温-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </ClickToThermometry>
    <FaceSnapThermometry>
      <!--ro, opt, object, 人脸抓拍测温-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </FaceSnapThermometry>
    <TemperatureCorrect>
      <!--ro, opt, object, 测温修正-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </TemperatureCorrect>
    <TemperatureIntervalMeasurement>
      <!--ro, opt, object, 温度区间检测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </TemperatureIntervalMeasurement>
    <ThermalVehicleDetection>
      <!--ro, opt, object, 热成像车辆侦测-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </ThermalVehicleDetection>
    <ThermalStream>
      <!--ro, opt, object, 热成像码流通道（涉及预览、回放码流为热成像码流）-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </ThermalStream>
  </Thermal>
  <PanoramaCamera>
    <!--ro, opt, object, 通道属性为细节通道-->
    <PTZCtrl>
      <!--ro, opt, object, 云台控制-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </PTZCtrl>
  </PanoramaCamera>
  <GlobalCamera>
    <!--ro, opt, object, 通道属性为全局通道-->
    <InsertChanNo>
      <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
    </InsertChanNo>
  </GlobalCamera>
  <Silence>
    <!--ro, opt, object, 通道属性为无声(支持无声预览的相关功能)-->
    <SilenceStream>
      <!--ro, opt, object, 无声码流-->
      <InsertChanNo>
        <!--ro, opt, int, 接入前端通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </SilenceStream>
  </Silence>
</ChannelInfo>

2. 获取通道属性

2.1 命令

GET /ISAPI/AUXInfo/attributes/Channels

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ChannelInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 通道属性列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <ChannelInfo version="2.0">
    <!--ro, opt, object, 通道属性, attr:version{req, string, 协议版本, range:[,]}-->
    <id>
      <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:-->1
    </id>
    <EagleEye>
      <!--ro, opt, object, 通道属性为鹰眼(支持鹰眼的相关功能)-->
      <StreamFusion>
        <!--ro, opt, object, 大鹰眼的全景码流通道-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </StreamFusion>
      <PanoramicMetaData>
        <!--ro, opt, object, 小鹰眼的全景原始码流通道-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </PanoramicMetaData>
      <panoramaStitching>
        <!--ro, opt, bool, 是否支持二三全景通道拼接-->true
      </panoramaStitching>
    </EagleEye>
    <FishEye>
      <!--ro, opt, object, 通道属性为鱼眼(支持鱼眼的相关功能)-->
      <FishEyeStream>
        <!--ro, opt, object, 鱼眼码流用于支持播放库软解功能-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </FishEyeStream>
    </FishEye>
    <Thermal>
      <!--ro, opt, object, 通道属性为热成像(支持热成像的相关功能)-->
      <TemperatureMetaData>
        <!--ro, opt, object, 测温原始码流-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </TemperatureMetaData>
      <ThermometryDetection>
        <!--ro, opt, object, 测温检测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </ThermometryDetection>
      <ThermometryDiffDetection>
        <!--ro, opt, object, 温差检测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </ThermometryDiffDetection>
      <FireDetection>
        <!--ro, opt, object, 火点检测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </FireDetection>
      <SmokeDetection>
        <!--ro, opt, object, 烟雾检测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </SmokeDetection>
      <ShipsDetection>
        <!--ro, opt, object, 船只检测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </ShipsDetection>
      <IntelligentRuleDisplay>
        <!--ro, opt, object, 热成像智能规则显示参数-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </IntelligentRuleDisplay>
      <IntelligentBehaviorRule>
        <!--ro, opt, object, 智能行为规则配置-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </IntelligentBehaviorRule>
      <DPC>
        <!--ro, opt, object, 坏点校正配置-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </DPC>
      <Metadata>
        <!--ro, opt, object, Metadata提取-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </Metadata>
      <FaceThermometry>
        <!--ro, opt, object, 人脸测温-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </FaceThermometry>
      <BlackBody>
        <!--ro, opt, object, 热成像黑体-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </BlackBody>
      <BodyTemperatureCompensation>
        <!--ro, opt, object, 体温温度补偿-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </BodyTemperatureCompensation>
      <LensCorrection>
        <!--ro, opt, object, 镜头校验-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </LensCorrection>
      <BurningPrevention>
        <!--ro, opt, object, 防灼伤-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </BurningPrevention>
      <WasteGasDetection>
        <!--ro, opt, object, 废气排放监测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </WasteGasDetection>
      <ClickToThermometry>
        <!--ro, opt, object, 点击测温-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </ClickToThermometry>
      <FaceSnapThermometry>
        <!--ro, opt, object, 人脸抓拍测温-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </FaceSnapThermometry>
      <TemperatureCorrect>
        <!--ro, opt, object, 测温修正-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </TemperatureCorrect>
      <TemperatureIntervalMeasurement>
        <!--ro, opt, object, 温度区间检测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </TemperatureIntervalMeasurement>
      <ThermalVehicleDetection>
        <!--ro, opt, object, 热成像车辆侦测-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </ThermalVehicleDetection>
      <ThermalStream>
        <!--ro, opt, object, 热成像码流通道（涉及预览、回放码流为热成像码流）-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </ThermalStream>
    </Thermal>
    <PanoramaCamera>
      <!--ro, opt, object, 通道属性为细节通道-->
      <PTZCtrl>
        <!--ro, opt, object, 云台控制-->
        <InsertChanNo>
          <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </PTZCtrl>
    </PanoramaCamera>
    <GlobalCamera>
      <!--ro, opt, object, 通道属性为全局通道-->
      <InsertChanNo>
        <!--ro, opt, int, 接入通道号, range:[,], step:, unit:, unitType:-->1
      </InsertChanNo>
    </GlobalCamera>
    <Silence>
      <!--ro, opt, object, 通道属性为无声(支持无声预览的相关功能)-->
      <SilenceStream>
        <!--ro, opt, object, 无声码流-->
        <InsertChanNo>
          <!--ro, opt, int, 接入前端通道号, range:[,], step:, unit:, unitType:-->1
        </InsertChanNo>
      </SilenceStream>
    </Silence>
  </ChannelInfo>
</ChannelInfoList>

3. 获取视频输入通道能力中电量叠加配置能力

3.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/overlays/BatteryPowerOverlay/capabilities

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BatteryPowerOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 视频输入通道电量叠加配置, attr:version{opt, string, 未定义, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 电量叠加配置使能-->true
  </enabled>
  <positionX>
    <!--ro, req, int, 叠加位置左上角点的X坐标, range:[0,704], step:, unit:, unitType:, desc:屏幕左下角坐标原点-->1
  </positionX>
  <positionY>
    <!--ro, req, int, 叠加位置左上角点的Y坐标, range:[0,576], step:, unit:, unitType:, desc:屏幕左下角坐标原点-->1
  </positionY>
</BatteryPowerOverlay>

4. 获取视频输入通道电量叠加

4.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/overlays/BatteryPowerOverlay

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BatteryPowerOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 视频输入通道电量叠加配置, attr:version{opt, string, 未定义, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 电量叠加配置使能-->true
  </enabled>
  <positionX>
    <!--ro, req, int, 叠加位置左上角点的X坐标, range:[0,704], step:, unit:, unitType:, desc:屏幕左下角坐标原点-->1
  </positionX>
  <positionY>
    <!--ro, req, int, 叠加位置左上角点的Y坐标, range:[0,576], step:, unit:, unitType:, desc:屏幕左下角坐标原点-->1
  </positionY>
</BatteryPowerOverlay>

5. 配置视频输入通道电量叠加

5.1 命令

PUT /ISAPI/System/Video/inputs/channels/<channelID>/overlays/BatteryPowerOverlay

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BatteryPowerOverlay xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 视频输入通道电量叠加配置, attr:version{req, string, 未定义, range:[,]}-->
  <enabled>
    <!--req, bool, 电量叠加配置使能-->true
  </enabled>
  <positionX>
    <!--req, int, 叠加位置左上角点的X坐标, range:[0,704], step:, unit:, unitType:, desc:屏幕左下角坐标原点-->1
  </positionX>
  <positionY>
    <!--req, int, 叠加位置左上角点的Y坐标, range:[0,576], step:, unit:, unitType:, desc:屏幕左下角坐标原点-->1
  </positionY>
</BatteryPowerOverlay>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取光学防抖能力

6.1 命令

GET /ISAPI/Image/channels/<channelID>/OIS/capabilities

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OIS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 光学防抖参数, attr:version{req, string, 协议版本, range:[,]}-->
  <mode opt="close,ordinary,experts" default="ordinary">
    <!--ro, req, string, 模式, range:[,], attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 模式, range:[,]}-->test
  </mode>
  <OISLevel opt="high,middle,low" default="middle">
    <!--ro, opt, string, 等级, range:[,], attr:opt{req, string, 等级, range:[,]},default{opt, string, 等级, range:[,]}-->test
  </OISLevel>
  <OISSensitivity opt="high,middle,low" default="middle">
    <!--ro, opt, string, 灵敏度, range:[,], attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 未定义, range:[,]}-->test
  </OISSensitivity>
</OIS>

7. 获取光学防抖配置

7.1 命令

GET /ISAPI/Image/channels/<channelID>/OIS

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OIS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 光学防抖参数, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 模式, subType:string, [close#关闭,ordinary#普通,experts#专家]-->experts
  </mode>
  <OISLevel>
    <!--ro, opt, enum, 等级, subType:string, [high#高,middle#中,low#低]-->high
  </OISLevel>
  <OISSensitivity>
    <!--ro, opt, enum, 灵敏度, subType:string, [high#高,middel#中,low#低]-->high
  </OISSensitivity>
</OIS>

8. 配置光学防抖配置

8.1 命令

PUT /ISAPI/Image/channels/<channelID>/OIS

8.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<OIS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 光学防抖参数, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 模式, subType:string, [close#关闭,ordinary#普通,experts#专家]-->experts
  </mode>
  <OISLevel>
    <!--ro, opt, enum, 等级, subType:string, [high#高,middle#中,low#低]-->high
  </OISLevel>
  <OISSensitivity>
    <!--ro, opt, enum, 灵敏度, subType:string, [high#高,middel#中,low#低]-->high
  </OISSensitivity>
</OIS>

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

9. 获取软件服务配置能力

9.1 命令

GET /ISAPI/System/Software/channels/<channelID>/capabilities

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SoftwareService xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 软件服务配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <ThirdStream>
    <!--ro, opt, object, 三码流配置-->
    <enabled opt="true,false">
      <!--ro, req, bool, 三码流使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <thirdStreamPrompt opt="prompt5">
      <!--ro, req, string, 三码流配置提示语, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </thirdStreamPrompt>
  </ThirdStream>
  <PanoramaDisplay>
    <!--ro, opt, object, 全景画面上显示球机图像范围-->
    <enabled opt="true,false" default="false">
      <!--ro, req, bool, 是否开启全景画面上显示球机图像范围, attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 未定义, range:[,]}-->false
    </enabled>
  </PanoramaDisplay>
  <SubStream>
    <!--ro, opt, object, 子码流配置-->
    <enabled opt="true,false" default="false">
      <!--ro, req, bool, 子码流使能, attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 未定义, range:[,]}-->false
    </enabled>
    <subStreamPrompt opt="prompt1">
      <!--ro, req, string, 子码流配置提示语, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </subStreamPrompt>
  </SubStream>
  <MotionDetect>
    <!--ro, opt, object, 移动侦测资源使能-->
    <enabled opt="true,false">
      <!--ro, opt, bool, 开启移动侦测资源, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <MotionDetectPrompt opt="prompt1">
      <!--ro, req, string, 移动侦测提示语能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </MotionDetectPrompt>
  </MotionDetect>
</SoftwareService>

10. 获取软件服务

10.1 命令

GET /ISAPI/System/Software/channels/<channelID>

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SoftwareService xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 软件服务, attr:version{req, string, 协议版本, range:[,]}-->
  <ThirdStream>
    <!--ro, opt, object, 三码流配置-->
    <enabled>
      <!--ro, req, bool, 三码流开启使能-->true
    </enabled>
  </ThirdStream>
  <PanoramaDisplay>
    <!--ro, opt, object, 全景显示-->
    <enabled>
      <!--ro, req, bool, 是否开启全景画面上显示球机图像范围-->true
    </enabled>
  </PanoramaDisplay>
  <SubStream>
    <!--ro, opt, object, 子码流-->
    <enabled>
      <!--ro, req, bool, 子码流使能-->true
    </enabled>
  </SubStream>
  <MotionDetect>
    <!--ro, opt, object, 移动侦测-->
    <enabled>
      <!--ro, req, bool, 移动侦测开启使能-->true
    </enabled>
  </MotionDetect>
</SoftwareService>

11. 配置软件服务

11.1 命令

PUT /ISAPI/System/Software/channels/<channelID>

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SoftwareService xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 软件服务, attr:version{req, string, 协议版本, range:[,]}-->
  <ThirdStream>
    <!--ro, opt, object, 三码流配置-->
    <enabled>
      <!--ro, req, bool, 三码流开启使能-->true
    </enabled>
  </ThirdStream>
  <PanoramaDisplay>
    <!--ro, opt, object, 全景显示-->
    <enabled>
      <!--ro, req, bool, 是否开启全景画面上显示球机图像范围-->true
    </enabled>
  </PanoramaDisplay>
  <SubStream>
    <!--ro, opt, object, 子码流-->
    <enabled>
      <!--ro, req, bool, 子码流使能-->true
    </enabled>
  </SubStream>
  <MotionDetect>
    <!--ro, opt, object, 移动侦测-->
    <enabled>
      <!--ro, req, bool, 移动侦测开启使能-->true
    </enabled>
  </MotionDetect>
</SoftwareService>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取图像信号处理能力

12.1 命令

GET /ISAPI/Image/channels/<channelID>/capabilities

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ImageChannel xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 与/ISAPI/Image/channels/<ID>/tempRange/capabilities中的xml内容一致, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 序号ID, range:[,], step:, unit:, unitType:-->1
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <videoInputID>
    <!--ro, req, int, 视频通道号ID, range:[,], step:, unit:, unitType:-->1
  </videoInputID>
  <sensorType>
    <!--ro, opt, int, 传感器类型, range:[,], step:, unit:, unitType:-->0
  </sensorType>
  <FocusConfiguration>
    <!--ro, opt, object, 普通聚焦-->
    <focusStyle opt="AUTO,MANUAL,SEMIAUTOMATIC">
      <!--ro, req, string, 聚焦类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </focusStyle>
    <focusLimited opt="10,50,100,150,300,600,1000,2000,5000,20000,50000,65535">
      <!--ro, opt, int, 聚焦限制, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
    </focusLimited>
    <focusPosition min="1" max="10">
      <!--ro, opt, int, 焦点位置, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </focusPosition>
    <focusSpeed min="1" max="10">
      <!--ro, opt, int, 聚焦速度, range:[1,3], step:, unit:, unitType:, attr:min{req, int, 聚焦速度最小值, range:[,], step:, unit:, unitType:},max{req, int, 聚焦速度最大值, range:[,], step:, unit:, unitType:}-->1
    </focusSpeed>
    <focusSensitivity min="1" max="10">
      <!--ro, opt, int, 聚焦灵敏度, range:[0,2], step:, unit:, unitType:, attr:min{req, int, 聚焦灵敏度最小值, range:[,], step:, unit:, unitType:},max{req, int, 聚焦灵敏度最大值, range:[,], step:, unit:, unitType:}-->1
    </focusSensitivity>
    <temperatureChangeAdaptEnabled opt="true,false">
      <!--ro, opt, bool, 温度变化适应使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </temperatureChangeAdaptEnabled>
    <relativeFocusPos min="1" max="10">
      <!--ro, opt, int, 相对焦点位置, range:[0,4294967295], step:, unit:, unitType:, attr:min{req, int, 相对焦点位置最小值, range:[,], step:, unit:, unitType:},max{req, int, 相对焦点位置最大值, range:[,], step:, unit:, unitType:}-->1
    </relativeFocusPos>
    <lensType opt="1140,1050">
      <!--ro, opt, enum, 聚焦镜头类型, subType:string, [1140#1140,1050#1050], attr:opt{req, string, 取值范围, range:[,]}, desc:默认:1140-->1140
    </lensType>
    <highTemperaturePriority opt="true,false">
      <!--ro, opt, bool, 高温优先模式使能, attr:opt{req, string, 高温优先模式使能取值范围, range:[,]}-->true
    </highTemperaturePriority>
    <focusStatus opt="success,failed,working">
      <!--ro, opt, enum, 聚焦状态, subType:string, [success#成功,failed#失败,working#进行中], attr:opt{req, string, 取值范围, range:[,]}-->success
    </focusStatus>
    <motorMovementType opt="manual,auto,armingLocation">
      <!--ro, opt, enum, 电机动作类型, subType:string, [manual#手动,auto#自动,armingLocation#预置位], attr:opt{req, string, 取值范围, range:[,]}-->manual
    </motorMovementType>
    <focusRange opt="min,medium,max">
      <!--ro, opt, enum, 聚焦调节范围, subType:string, [min#最小,medium#适中,max#最大], attr:opt{req, string, 取值范围, range:[,]}-->max
    </focusRange>
    <focusDistanceMode opt="compatible">
      <!--ro, opt, string, 聚焦距离模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:支持返回该节点。compatible-兼容模式，在球罩设备上调整聚焦限制距离focusLimited,仍然虚焦的情况，选择兼容模式，focusLimited参数失效，设备释放镜头最大聚焦能力，使镜头获得更大的焦距范围，解决球罩设备近物距聚焦效果差的问题。开启该功能，聚焦速度会变慢，非球罩设备不建议使用。-->compatible
    </focusDistanceMode>
  </FocusConfiguration>
  <LensInitialization>
    <!--ro, opt, object, 镜头初始化-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </LensInitialization>
  <ImageFlip>
    <!--ro, opt, object, 图像翻转-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <ImageFlipStyle opt="LEFTRIGHT,UPDOWN,CENTER,AUTO">
      <!--ro, opt, string, 类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->LEFTRIGHT
    </ImageFlipStyle>
    <flipAngle opt="90,180,270">
      <!--ro, opt, string, 角度, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->90
    </flipAngle>
  </ImageFlip>
  <ImageFreeze>
    <!--ro, opt, object, 图像冻结-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </ImageFreeze>
  <proportionalpan>
    <!--ro, opt, object, 比例盘-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </proportionalpan>
  <WDR>
    <!--ro, opt, object, 宽动态(自动)能力-->
    <mode opt="open,close,auto,SDR">
      <!--ro, req, enum, open, subType:string, [[open#开启,close#关闭,auto#自动,SDR#SDR], attr:opt{req, string, 取值范围, range:[,], desc:SDR宽动态(super SDR)是指基于支持单帧曝光，通过增益得到两帧图像输出，并由平台进行合成的宽动态技术，解决真宽动态运动瑕疵问题}-->[open
    </mode>
    <WDRLevel min="1" max="100">
      <!--ro, opt, int, 宽动态等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:, desc:当mode为open时;0-40为数字宽动态;41-100为真宽动态;当mode为auto时0-100均为真宽动态等级;当mode为SDR时0-100均为SDR等级;对于前端型号ss3代表背景目标亮度;用于短曝光;对于前端型号A3372E3代表目标亮度}-->1
    </WDRLevel>
    <WDRContrastLevel min="1" max="100">
      <!--ro, opt, int, 宽动态对比度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </WDRContrastLevel>
    <WDRLevel1 min="1" max="100">
      <!--ro, opt, int, 第二类宽动态等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:, desc:对于前端型号ss3;代表前景目标亮度:对于前端型号A3372E3不生效}-->1
    </WDRLevel1>
  </WDR>
  <BLC>
    <!--ro, opt, object, 背光补偿区域-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <BLCMode opt="UP,DOWN,LEFT,RIGHT,CENTER,MULTI-AREA,Region,AUTO">
      <!--ro, opt, enum, 背光补偿模式, subType:string, [UP#UP,DOWN#DOWN,LEFT#LEFT,RIGHT#RIGHT,CENTER#CENTER,MULTI-AREA#MULTI-AREA,Region#Region,AUTO#AUTO], attr:opt{req, string, 取值范围, range:[,]}-->UP
    </BLCMode>
    <BLCLevel min="0" max="10">
      <!--ro, opt, int, 背光补偿等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </BLCLevel>
    <BLCRegionList>
      <!--ro, opt, array, 背光补偿区域列表, subType:object, range:[,]-->
      <BLCRegion>
        <!--ro, opt, object, 背光补偿区域-->
        <id>
          <!--ro, req, int, 区域编号, range:[,], step:, unit:, unitType:-->1
        </id>
        <RegionCoordinatesList>
          <!--ro, req, array, 坐标点列表, subType:object, range:[0,4], desc:矩形-->
          <RegionCoordinates>
            <!--ro, opt, object, 坐标点, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,704], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,576], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </BLCRegion>
    </BLCRegionList>
  </BLC>
  <NoiseReduce>
    <!--ro, opt, object, 降噪参数-->
    <mode opt="close,general,advanced">
      <!--ro, req, enum, 模式, subType:string, [close#关闭,general#常规,advanced#高级], attr:opt{req, string, 取值范围, range:[,]}-->close
    </mode>
    <GeneralMode>
      <!--ro, opt, object, 模式-->
      <generalLevel min="0" max="10">
        <!--ro, req, int, 等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </generalLevel>
    </GeneralMode>
    <AdvancedMode>
      <!--ro, opt, object, 高级模式-->
      <FrameNoiseReduceLevel min="0" max="10">
        <!--ro, req, int, 框架噪声降阶, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </FrameNoiseReduceLevel>
      <InterFrameNoiseReduceLevel min="0" max="10">
        <!--ro, req, int, 帧间噪声降维, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </InterFrameNoiseReduceLevel>
    </AdvancedMode>
  </NoiseReduce>
  <ImageEnhancement>
    <!--ro, opt, object, 图像增强-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <ImageEnhancementLevel min="0" max="10">
      <!--ro, opt, int, 图像增强等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </ImageEnhancementLevel>
  </ImageEnhancement>
  <DSS>
    <!--ro, opt, object, DSS-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <DSSLevel opt="*1.25,*1.5,*2,*3*4,*6,*8,*12,*16,*24,*32,*48,*64,*96,*128,*256,*512,auto">
      <!--ro, opt, string, DSS等级, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </DSSLevel>
    <mode opt="frame,level">
      <!--ro, opt, enum, 模式, subType:string, [frame#帧模式,level#等级模式], attr:opt{req, string, 取值范围, range:[,]}, desc:无mode节点默认为frame模式-->frame
    </mode>
    <slowShutterLevel min="1" max="6">
      <!--ro, opt, int, 慢快门等级, range:[1,6], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </slowShutterLevel>
  </DSS>
  <WhiteBalance>
    <!--ro, opt, object, 白平衡-->
    <WhiteBalanceStyle opt="manual、auto1、auto2、locked、outdoor、indoor、daylightLamp、sodiumlight、autotrace、onece、autooutdoor、autosodiumlight、mercurylight、auto、incandescentlight、warmlight、naturallight">
      <!--ro, req, string, 白平衡类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:auto-自动,auto1-自动1,auto2-自动2,manual-手动,indoor-室内,outdoor-室外,autotrace-自动跟踪,onece-单次,sodiumlight-苏打光,mercurylight#水银灯,daylightLamp-日光灯，autooutdoor-自动室外,autosodiumlight-自动苏打光，incandescentlight-白炽灯，warmlight-暖光,naturallight-自然光，locked-锁定-->test
    </WhiteBalanceStyle>
    <WhiteBalanceRed min="0" max="10">
      <!--ro, opt, int, 白平衡红, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </WhiteBalanceRed>
    <WhiteBalanceBlue min="0" max="10">
      <!--ro, opt, int, 白平衡蓝, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </WhiteBalanceBlue>
    <whiteBalanceLevel min="0" max="100">
      <!--ro, opt, int, 白平衡等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:<WhiteBlanceStyle>为auto,auto1,auto2时有效-->1
    </whiteBalanceLevel>
  </WhiteBalance>
  <Exposure>
    <!--ro, opt, object, 曝光模式-->
    <ExposureType opt="auto,IrisFirst,ShutterFirst,gainFirst,manual,pIris,T5280-PQ1,T5289-PQ1,T1140-PQ1,T2712-PQ1,HV1250P-MPIR,pc,pIris-General,HZ1140P-8MPIRA,HZ1135P-8MPSGA,MV1550P-12MPIR,MZ1545P-12MP,HZ0618P-4MPSG,MZ1050P-12MP">
      <!--ro, req, string, 曝光类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </ExposureType>
    <autoIrisLevel min="0" max="100">
      <!--ro, opt, int, 光圈自动级别, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </autoIrisLevel>
    <OverexposeSuppress>
      <!--ro, opt, object, 过度曝光抑制-->
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <Type opt="AUTO,MANUAL">
        <!--ro, opt, enum, 过度曝光抑制类型, subType:string, [AUTO#自动,MANUAL#手动], attr:opt{req, string, 取值范围, range:[,]}-->AUTO
      </Type>
      <DistanceLevel min="1" max="100">
        <!--ro, opt, int, 焦距, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </DistanceLevel>
      <shortIRDistanceLevel min="1" max="100">
        <!--ro, opt, int, IR短距离级别, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </shortIRDistanceLevel>
      <longIRDistanceLevel min="1" max="100">
        <!--ro, opt, int, IR长距离级别, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </longIRDistanceLevel>
      <supplementLightIntensity1 min="1" max="100">
        <!--ro, opt, int, 补充曝光强度1, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </supplementLightIntensity1>
      <supplementLightIntensity2 min="1" max="100">
        <!--ro, opt, int, 补充曝光强度2, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </supplementLightIntensity2>
      <supplementLightIntensity3 min="1" max="100">
        <!--ro, opt, int, 补充曝光强度3, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </supplementLightIntensity3>
      <supplementLightIntensity4 min="1" max="100">
        <!--ro, opt, int, 补充曝光强度4, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </supplementLightIntensity4>
    </OverexposeSuppress>
    <pIris>
      <!--ro, opt, object, 光圈-->
      <pIrisType opt="AUTO,MANUAL">
        <!--ro, opt, enum, 光圈类型, subType:string, [AUTO#AUTO,MANUAL#MANUAL], attr:opt{req, string, 取值范围, range:[,]}-->MANUAL
      </pIrisType>
      <IrisLevel min="1" max="100">
        <!--ro, opt, int, 光圈级别, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </IrisLevel>
    </pIris>
    <faceExposure>
      <!--ro, opt, object, 人脸曝光-->
      <enabled opt="true,false">
        <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <sensitivity>
        <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:-->0
      </sensitivity>
    </faceExposure>
    <PIrisGeneral>
      <!--ro, opt, object, pIris-General配置-->
      <irisLevel min="1" max="100" def="50">
        <!--ro, opt, int, 通用镜头下的光圈等级, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
      </irisLevel>
    </PIrisGeneral>
  </Exposure>
  <Sharpness>
    <!--ro, opt, object, 锐度-->
    <SharpnessMode opt="manual,auto">
      <!--ro, opt, enum, 锐度模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}-->manual
    </SharpnessMode>
    <SharpnessLevel min="0" max="100">
      <!--ro, req, int, 锐度级别, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </SharpnessLevel>
  </Sharpness>
  <gammaCorrection>
    <!--ro, opt, object, 伽玛校正-->
    <gammaCorrectionEnabled opt="true,false">
      <!--ro, opt, bool, 伽玛校正使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </gammaCorrectionEnabled>
    <gammaCorrectionLevel min="0" max="10">
      <!--ro, opt, int, 伽玛校正级别, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </gammaCorrectionLevel>
  </gammaCorrection>
  <Shutter>
    <!--ro, opt, object, 快门配置-->
    <ShutterLevel opt="1/25,1/50,1/75,1/100,1/125,1/150,1/175,1/200,1/225,1/250,1/300,1/400,1/500,1/750,1/1000,1/2000,1/4000,1/10000,1/100000">
      <!--ro, opt, string, 快门等级, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </ShutterLevel>
    <maxShutterLevelLimit opt="1/25,1/50,1/75,1/100,1/120,1/150,1/175,1/200,1/225,1/250,1/300,1/425,1/600,1/1000,1/1250,1/1750,1/2500,1/3500,1/6000,1/10000,1/30000">
      <!--ro, opt, string, 最大快门等级, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </maxShutterLevelLimit>
    <minShutterLevelLimit opt="1/25,1/50,1/75,1/100,1/120,1/150,1/175,1/200,1/225,1/250,1/300,1/425,1/600,1/1000,1/1250,1/1750,1/2500,1/3500,1/6000,1/10000,1/30000">
      <!--ro, opt, string, 最小快门等级, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </minShutterLevelLimit>
  </Shutter>
  <powerLineFrequency>
    <!--ro, opt, object, 电力线频率-->
    <powerLineFrequencyMode opt="50hz,60hz">
      <!--ro, opt, string, 模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </powerLineFrequencyMode>
  </powerLineFrequency>
  <Gain>
    <!--ro, opt, object, 增益-->
    <GainLevel min="0" max="10">
      <!--ro, opt, string, 增益等级, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </GainLevel>
    <GainLimit opt="0,400,900,1300,1800,2200,2600,3100,3500,4000,4400,4800,5300,5700,6200,6600">
      <!--ro, opt, string, 增益, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </GainLimit>
  </Gain>
  <Color>
    <!--ro, opt, object, 颜色-->
    <brightnessLevel min="0" max="10">
      <!--ro, opt, int, 亮度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </brightnessLevel>
    <contrastLevel min="0" max="10">
      <!--ro, opt, int, 对比度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </contrastLevel>
    <saturationLevel min="0" max="10">
      <!--ro, opt, int, 饱和度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </saturationLevel>
    <hueLevel min="0" max="10">
      <!--ro, opt, int, 色调, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </hueLevel>
    <grayScale>
      <!--ro, opt, object, 灰度-->
      <grayScaleMode opt="indoor,outdoor">
        <!--ro, opt, string, 灰度模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </grayScaleMode>
    </grayScale>
    <nightMode opt="true,false">
      <!--ro, opt, bool, 夜间黑白模式使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </nightMode>
    <sharpnessLevel min="0" max="100" def="0">
      <!--ro, opt, int, 锐度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
    </sharpnessLevel>
  </Color>
  <IrcutFilter>
    <!--ro, opt, object, IrcutFilter配置-->
    <IrcutFilterType opt="auto,day,night,schedule,eventTrigger,videoAuto,IrcutFilterType,darkFighterX,darkFighterXAuto,darkFighterXSchedule,colorVuAuto">
      <!--ro, opt, enum, IrcutFilter类型, subType:string, [auto#自动,night#晚上,schedule#定时,eventTrigger#事件触发,videoAuto#视频自动,darkFighterX#黑光,darkFighterXAuto#黑光自动,darkFighterXSchedule#黑光定时,colorVuAuto#全彩自动], attr:opt{req, string, 取值范围, range:[,]}, desc:colorVuAuto：画面全彩，只取可见路；全彩模式下，补光灯只可选白光补光，是否开灯由图像判断，照度低的情况下开灯；当日夜切换由全彩模式切换为非全彩模式，补光灯自动由白光补光切换为混合补光，反之亦然。-->auto
    </IrcutFilterType>
    <dayToNightFilterLevel opt="low,normal,high">
      <!--ro, opt, enum, 日夜切换级别, subType:string, [low#低,normal#中,high#高], attr:opt{req, string, 取值范围, range:[,]}-->low
    </dayToNightFilterLevel>
    <dayToNightFilterTime min="0" max="10">
      <!--ro, opt, int, 日夜切换时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </dayToNightFilterTime>
    <nightToDayFilterLevel opt="low,normal,high">
      <!--ro, opt, string, 夜日切换级别, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </nightToDayFilterLevel>
    <nightToDayFilterTime min="0" max="10">
      <!--ro, opt, int, 夜日切换时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </nightToDayFilterTime>
    <Schedule>
      <!--ro, opt, object, 定时-->
      <scheduleType opt="day,night">
        <!--ro, req, enum, 定时类型, subType:string, [day#白天,night#晚上], attr:opt{req, string, 取值范围, range:[,]}-->day
      </scheduleType>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
      </TimeRange>
    </Schedule>
    <EventTrigger>
      <!--ro, opt, object, 事件触发-->
      <eventType opt="IO,VMD">
        <!--ro, req, enum, 事件类型, subType:string, [IO#IO事件,VMD#VMD事件], attr:opt{req, string, 取值范围, range:[,]}-->IO
      </eventType>
      <IrcutFilterAction opt="day,night">
        <!--ro, req, enum, IrcutFilter操作, subType:string, [day#白天,night#晚上], attr:opt{req, string, 取值范围, range:[,]}-->day
      </IrcutFilterAction>
    </EventTrigger>
  </IrcutFilter>
  <Scene>
    <!--ro, opt, object, 场景-->
    <mode opt="indoor,outdoor,standard,dimLight">
      <!--ro, req, enum, 模式, subType:string, [indoor#户内,outdoor#户外,standard#标准,dimLight#昏暗], attr:opt{req, string, 取值范围, range:[,]}-->indoor
    </mode>
  </Scene>
  <PTZ>
    <!--ro, opt, object, PTZ-->
    <enabled opt="true,false">
      <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </PTZ>
  <EPTZ>
    <!--ro, opt, object, EPTZ-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <mode opt="cruise,autoTrack">
      <!--ro, opt, enum, 模式, subType:string, [cruise#巡航（云台可以支持预置点、巡航功能、ZOOM和8个方向）,autoTrack#autoTrack-自动跟踪], attr:opt{req, string, 取值范围, range:[,]}-->cruise
    </mode>
  </EPTZ>
  <EIS>
    <!--ro, opt, object, 电子防抖-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <EISLevel min="0" max="10">
      <!--ro, opt, int, EIS等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </EISLevel>
  </EIS>
  <HLC>
    <!--ro, opt, object, 强光抑制-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <HLCMode opt="close,open,auto">
      <!--ro, opt, enum, 强光抑制模式, subType:string, [close#关闭,open#开启,auto#自动], attr:opt{req, string, 取值范围, range:[,]}-->close
    </HLCMode>
    <HLCLevel min="0" max="10">
      <!--ro, opt, int, HLC等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </HLCLevel>
  </HLC>
  <ZoomLimit>
    <!--ro, opt, object, 缩放限制-->
    <ZoomLimitRatio opt="4,8,16,32,64">
      <!--ro, opt, enum, 缩放比例, subType:int, [4#4,8#8,16#16,32#32,64#64], attr:opt{req, string, 取值范围, range:[,]}-->4
    </ZoomLimitRatio>
  </ZoomLimit>
  <corridor>
    <!--ro, opt, object, 镜头走廊模式-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </corridor>
  <Dehaze>
    <!--ro, opt, object, 雾透-->
    <DehazeMode opt="open,close,auto">
      <!--ro, opt, enum, 雾透模式, subType:string, [open#打开,close#关闭,auto#自动], attr:opt{req, string, 取值范围, range:[,]}-->open
    </DehazeMode>
    <DehazeLevel min="0" max="10">
      <!--ro, opt, int, 雾透等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </DehazeLevel>
  </Dehaze>
  <ImageMode opt="standard,indoor,outdoor,dimLight,bright,soft,vivid">
    <!--ro, opt, enum, 图像模式, subType:string, [standard#标准,indoor#室内,outdoor#室外,dimLight#昏暗,bright#明亮,soft#柔和,vivid#鲜艳], attr:opt{req, string, 取值范围, range:[,]}-->standard
  </ImageMode>
  <enableImageLossDetection opt="true,false">
    <!--ro, opt, bool, 图像丢失检测使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enableImageLossDetection>
  <CaptureMode>
    <!--ro, opt, object, 抓拍模式-->
    <mode opt="close,1920*1080@30fps">
      <!--ro, req, enum, 模式, subType:string, [close#关闭,1920*1080@30fps#1920*1080@30fps], attr:opt{req, string, 取值范围, range:[,]}-->close
    </mode>
  </CaptureMode>
  <IrLight>
    <!--ro, opt, object, 亮度限制-->
    <mode opt="auto,manual">
      <!--ro, req, enum, 模式, subType:string, [auto#自动,manual#手动], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </mode>
    <brightnessLevel min="0" max="10">
      <!--ro, opt, int, 亮度等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </brightnessLevel>
    <sensitivityLevel min="0" max="100">
      <!--ro, opt, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </sensitivityLevel>
    <brightnessLimit min="0" max="10">
      <!--ro, opt, int, 亮度限制, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </brightnessLimit>
    <triggerMode opt="camera,photosensitive">
      <!--ro, opt, enum, 触发模式, subType:string, [camera#相机,photosensitive#光敏], attr:opt{req, string, 取值范围, range:[,]}-->camera
    </triggerMode>
  </IrLight>
  <LensDistortionCorrection>
    <!--ro, opt, object, 镜头畸变校正-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <level opt="level1,level2,level3,custom">
      <!--ro, opt, enum, 等级, subType:string, [level1#level1,level2#level2,level3#level3,custom#自定义], attr:opt{req, string, 取值范围, range:[,]}-->level1
    </level>
    <accurateLevel min="0" max="100">
      <!--ro, opt, int, 畸变矫正强度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </accurateLevel>
    <zoomedInDistantViewLevel min="0" max="100">
      <!--ro, opt, int, 远端放大, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:畸变校正开启时生效-->0
    </zoomedInDistantViewLevel>
    <horizontalFOV min="0" max="100">
      <!--ro, opt, int, 水平视场角, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </horizontalFOV>
    <verticalFOV min="0" max="100">
      <!--ro, opt, int, 垂直视场角, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </verticalFOV>
    <isSupportLevelTypeAccurate>
      <!--ro, opt, bool, 是否支持畸变矫正等级下矫正强度配置,
desc:该字段返回true代表level字段为level1~3类型下都支持accurateLevel配置。
若不支持该节点则默认level为custom时才支持accurateLevel配置-->true
    </isSupportLevelTypeAccurate>
    <supportPrompt opt="levelPrompt">
      <!--ro, opt, enum, 支持的提示语能力, subType:string, [levelPrompt#支持矫正等级提示语], attr:opt{req, string, 取值范围, range:[,]},
desc:levelPrompt中文提示语内容：
   4mm镜头推荐等级1，2.8mm镜头推荐等级2，2mm镜头推荐等级3。
levelPrompt英文提示语内容：
   For 4 mm lens, level 1 is recommended; For 2.8 mm lens, level 2 is recommended; For 2 mm lens, level 3 is recommended.-->levelPrompt
    </supportPrompt>
  </LensDistortionCorrection>
  <SupplementLight>
    <!--ro, opt, object, 内置补光灯管理参数能力-->
    <mode opt="schedule,off,on,auto,manual">
      <!--ro, opt, enum, 补光灯调节模式, subType:string, [schedule#白光定时,off#白光关闭,on#白光开启,auto#自动,manual#手动], attr:opt{req, string, 取值范围, range:[,]}-->auto
    </mode>
    <Schedule>
      <!--ro, opt, object, 白光灯定时生效时间配置;当<Mode>= schedule时生效;所配置时间为白天的时间-->
      <TimeRange>
        <!--ro, req, object, 白天时段;当天剩余时段为夜晚时段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->00:08:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:18:00+08:00
        </endTime>
      </TimeRange>
    </Schedule>
    <brightnessLimit min="0" max="100">
      <!--ro, opt, int, 白光补光灯亮度限制, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<Mode>= on时;可以调节该限制;为白光补光灯亮度最大值;实际补光灯亮度为自动调节（注：mode里面的自动为补光灯开光自动;自动调节模式需查看mixedLightBrightnessRegulatMode节点）-->80
    </brightnessLimit>
    <supplementLightMode opt="mixed,whiteLight,colorVuWhiteLight,irLight,dualLight,close,eventIntelligence,multiAzimuthMixed,multiAzimuthWhiteLight,multiAzimuthIrLight,panoramicWhiteLight,panoramicIrLight">
      <!--ro, opt, enum, 补光灯模式, subType:string, [mixed#混合模式,whiteLight#白光模式,close#关闭,colorVuWhiteLight#全彩白光,irLight#红外模式,dualLight#双补光,eventIntelligence#事件智能补光,multiAzimuthMixed#多方位混合补光,multiAzimuthWhiteLight#多方位白光模式,multiAzimuthIrLight#多方位红外模式,panoramicWhiteLight#全景白光,panoramicIrLight#全景红外], attr:opt{req, string, 取值范围, range:[,]},
desc:eventIntelligence为事件智能补光;解释如下:1.在满足补光灯功能生效条件下;当没有产生报警;设备仅红外灯开启;2.产生报警后自动关闭红外灯；开启白光灯持续1min；在持续时间内如继续收到报警;这一状态保持至最后一个报警发生后1min结束。multiAzimuthMixed多方位混合模式可以通过左右边各一组补光灯（一组补光灯包含远中近白光红外补光灯）对目标进行多方位角度的补光;不同于之前mixed混合补光模式仅支持一组补光灯单方位进行补光。multiAzimuthWhiteLight多方位白光模式、multiAzimuthIrLight多方位红外模式与多方位混光情况相同.
panoramicWhiteLight、panoramicIrLight全景白光、红外模式当前仅四目全景相机支持，当前下相机无方位的概念,由四个补光灯围绕相机部署。-->mixed
    </supplementLightMode>
    <irLightBrightness min="0" max="100">
      <!--ro, opt, int, 红外补光灯亮度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<supplementLightMode>= mixed;且<mixedLightBrightnessRegulatMode>= manual时生效-->80
    </irLightBrightness>
    <mixedLightBrightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 混合补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:该字段仅在<supplementLightMode>= mixed时生效；手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<brightnessLimit>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </mixedLightBrightnessRegulatMode>
    <highIrLightBrightness min="0" max="100">
      <!--ro, opt, int, 远光红外光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
    </highIrLightBrightness>
    <highWhiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
    </highWhiteLightBrightness>
    <lowIrLightBrightness min="0" max="100">
      <!--ro, opt, int, 近光红外光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
    </lowIrLightBrightness>
    <lowWhiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
    </lowWhiteLightBrightness>
    <whiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式、mode=auto 公用-->80
    </whiteLightBrightness>
    <WhiteLightModeCfg>
      <!--ro, opt, object, 白光模式参数配置, desc:当supplementLightMode == whiteLight生效-->
      <highWhiteLightBrightness min="0" max="100">
        <!--ro, opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
      </highWhiteLightBrightness>
      <lowWhiteLightBrightness min="0" max="100">
        <!--ro, opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
      </lowWhiteLightBrightness>
      <whiteLightBrightness min="0" max="100">
        <!--ro, opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
      </whiteLightBrightness>
    </WhiteLightModeCfg>
    <isAutoModeBrightnessCfg>
      <!--ro, opt, bool, 是否支持自动模式下亮度调节;支持时亮度节点下发为自动调节的亮度最大值-->true
    </isAutoModeBrightnessCfg>
    <irLightbrightnessLimit min="0" max="100">
      <!--ro, opt, int, 红外灯亮度限制, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
    </irLightbrightnessLimit>
    <whiteLightbrightnessLimit min="0" max="100">
      <!--ro, opt, int, 白光灯亮度限制, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
    </whiteLightbrightnessLimit>
    <isNotSupportMixedWhiteLight>
      <!--ro, opt, bool, 该节点返回true表示不支持混光模式下白光灯配置;支持配置则不返回该节点-->true
    </isNotSupportMixedWhiteLight>
    <EventIntelligenceModeCfg>
      <!--ro, opt, object, 事件智能补光模式参数配置, desc:当supplementLightMode == eventIntelligence生效-->
      <brightnessRegulatMode opt="manual,auto">
        <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<whiteLightBrightness>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
      </brightnessRegulatMode>
      <whiteLightBrightness min="0" max="100">
        <!--ro, opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
      </whiteLightBrightness>
      <irLightBrightness min="0" max="100">
        <!--ro, opt, int, 红外亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
      </irLightBrightness>
    </EventIntelligenceModeCfg>
    <MultiAzimuthMixedModeCfg>
      <!--ro, opt, object, 多方位混合模式参数配置, desc:当supplementLightMode == multiAzimuthMixed生效-->
      <brightnessRegulatMode opt="manual,auto">
        <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
      </brightnessRegulatMode>
      <LightCtrlList size="12">
        <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LightCtrl>
          <!--ro, opt, object, 单个补光灯控制参数-->
          <azimuthType opt="left,right">
            <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯], attr:opt{req, string, 取值范围, range:[,]}-->left
          </azimuthType>
          <lightType opt="highWhite,midWhite,lowWhite,highIrLight,midIrLight,lowIrLight">
            <!--ro, opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯], attr:opt{req, string, 取值范围, range:[,]}-->highWhite
          </lightType>
          <brightness min="0" max="100">
            <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
          </brightness>
        </LightCtrl>
      </LightCtrlList>
      <regulatSensitivityType opt="fast,medium,slow">
        <!--ro, opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthMixedModeCfg.brightnessRegulatMode,eq,auto}, attr:opt{req, string, 取值范围, range:[,]}-->fast
      </regulatSensitivityType>
    </MultiAzimuthMixedModeCfg>
    <MultiAzimuthWhiteLightCfg>
      <!--ro, opt, object, 多方位白光模式参数配置, desc:当supplementLightMode == multiAzimuthWhiteLight生效-->
      <brightnessRegulatMode opt="manual,auto">
        <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
      </brightnessRegulatMode>
      <LightCtrlList size="6">
        <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LightCtrl>
          <!--ro, opt, object, 单个补光灯控制参数-->
          <azimuthType opt="left,right">
            <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯], attr:opt{req, string, 取值范围, range:[,]}-->left
          </azimuthType>
          <lightType opt="highWhite,midWhite,lowWhite,white">
            <!--ro, opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通白光补光(不区分远中近光)], attr:opt{req, string, 取值范围, range:[,]}-->highWhite
          </lightType>
          <brightness min="0" max="100">
            <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
          </brightness>
        </LightCtrl>
      </LightCtrlList>
      <regulatSensitivityType opt="fast,medium,slow">
        <!--ro, opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthWhiteLightCfg.brightnessRegulatMode,eq,auto}, attr:opt{req, string, 取值范围, range:[,]}-->fast
      </regulatSensitivityType>
    </MultiAzimuthWhiteLightCfg>
    <MultiAzimuthIrLightCfg>
      <!--ro, opt, object, 多方位红外模式参数配置, desc:当supplementLightMode == multiAzimuthIrLight生效-->
      <brightnessRegulatMode opt="manual,auto">
        <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
      </brightnessRegulatMode>
      <LightCtrlList size="6">
        <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LightCtrl>
          <!--ro, opt, object, 单个补光灯控制参数-->
          <azimuthType opt="left,right">
            <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯], attr:opt{req, string, 取值范围, range:[,]}-->left
          </azimuthType>
          <lightType opt="highIrLight,midIrLight,lowIrLight,irLight">
            <!--ro, opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光)], attr:opt{req, string, 取值范围, range:[,]}-->highIrLight
          </lightType>
          <brightness min="0" max="100">
            <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
          </brightness>
        </LightCtrl>
      </LightCtrlList>
    </MultiAzimuthIrLightCfg>
    <PanoramicWhiteLightCfg>
      <!--ro, opt, object, 全景白光模式参数配置, desc:当supplementLightMode == panoramicWhiteLight生效-->
      <brightnessRegulatMode opt="manual,auto">
        <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
      </brightnessRegulatMode>
      <LightCtrlList size="4">
        <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LightCtrl>
          <!--ro, opt, object, 单个补光灯控制参数-->
          <lightID min="1" max="4">
            <!--ro, opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </lightID>
          <brightness min="0" max="100">
            <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
          </brightness>
        </LightCtrl>
      </LightCtrlList>
    </PanoramicWhiteLightCfg>
    <PanoramicIrLightCfg>
      <!--ro, opt, object, 全景红外模式参数配置, desc:当supplementLightMode == panoramicIrLightCfg生效-->
      <brightnessRegulatMode opt="manual,auto">
        <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
      </brightnessRegulatMode>
      <LightCtrlList size="4">
        <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <LightCtrl>
          <!--ro, opt, object, 单个补光灯控制参数-->
          <lightID min="1" max="4">
            <!--ro, opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </lightID>
          <brightness min="0" max="100">
            <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
          </brightness>
        </LightCtrl>
      </LightCtrlList>
    </PanoramicIrLightCfg>
    <whiteLightEnhanceEnabled opt="true,false" def="false">
      <!--ro, opt, bool, 白光灯亮度增强使能(不分远近光灯时控制), attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:开启增强使能后，白光灯会进入强电流模式，亮度会增强十倍，同时也可通过$.SupplementLight.whiteLightBrightness参数去控制强电流模式下的灯光亮度。该参数不区分补光灯模式及白光灯类型。-->true
    </whiteLightEnhanceEnabled>
    <LightManualCtrlList size="12">
      <!--ro, opt, array, 补光灯组手动控制参数, subType:object, range:[,], dep:and,{$.SupplementLight.mode,eq,manual}, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:与supplementLightMode无关-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <lightType opt="highIrLight,midIrLight,lowIrLight,irLight,highWhite,midWhite,lowWhite,white">
          <!--ro, opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光),highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通红外补光灯(不区分远中近光)], attr:opt{req, string, 取值范围, range:[,]}-->highWhite
        </lightType>
        <brightness min="0" max="100">
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
        </brightness>
      </LightCtrl>
    </LightManualCtrlList>
  </SupplementLight>
  <OpticalDehaze>
    <!--ro, opt, object, 光学雾透-->
    <enabled opt="true,false">
      <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </OpticalDehaze>
  <ManualRanging>
    <!--ro, opt, object, 手动测距-->
    <enabled opt="true,false">
      <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </ManualRanging>
  <OIS>
    <!--ro, opt, object, 光学防抖-->
    <mode opt="close,ordinary,experts" default="ordinary">
      <!--ro, req, enum, 模式, subType:string, [close#关闭,ordinary#普通,experts#专家], attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 默认值, range:[,]}-->close
    </mode>
    <OISLevel opt="high,middle,low" default="middle">
      <!--ro, opt, enum, 光学防抖等级, subType:string, [high#高,middle#中,low#低], attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 默认值, range:[,]}-->high
    </OISLevel>
    <OISSensitivity opt="high,middle,low" default="middle">
      <!--ro, opt, string, 光学防抖灵敏度, range:[,], attr:opt{req, string, 取值范围, range:[,]},default{opt, string, 默认值, range:[,]}-->test
    </OISSensitivity>
  </OIS>
  <isSupportLaserSpotManual>
    <!--ro, opt, bool, 是否支持手动激光点-->true
  </isSupportLaserSpotManual>
  <isSupportLaserSpotAdjustment>
    <!--ro, opt, bool, 是否支持激光点调整-->true
  </isSupportLaserSpotAdjustment>
  <DigitalZoom>
    <!--ro, opt, object, 数字缩放-->
    <ZoomRatio opt="1x,2x,4x,8x,16x,32x">
      <!--ro, opt, enum, 缩放比例, subType:string, [1x#1x,2x#2x,4x#4x,8x#8x,16x#16x,32x#32x], attr:opt{req, string, 取值范围, range:[,]}-->1x
    </ZoomRatio>
  </DigitalZoom>
  <Palettes>
    <!--ro, opt, object, 热成像调色板配置-->
    <mode opt="WhiteHot,BlackHot,Fusion1,Rainbow,Fusion2,Ironbow1,Ironbow2,Sepia,Color1,Color2,IceFire,Rain,RedHot,GreenHot,DeepBlue,Color3">
      <!--ro, opt, string, 模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </mode>
    <ColorateTarget>
      <!--ro, opt, object, 目标凸显, desc:dep mode = "WhiteHot"-->
      <ColorateTargetModeList>
        <!--ro, opt, array, 目标凸显模式列表, subType:object, range:[,]-->
        <ColorateTargetMode>
          <!--ro, opt, object, 目标凸显模式-->
          <id>
            <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:, desc:从1开始-->0
          </id>
          <mode opt="colorateHotAreae, colorateIntervalArea, colorateColdArea">
            <!--ro, req, enum, 模式, subType:string, [colorateHotAreae#colorateHotAreae,colorateHotAreae#colorateHotAreae,colorateColdArea#colorateColdArea], attr:opt{req, string, 取值范围, range:[,]}-->colorateHotAreae
          </mode>
          <enabled opt="true,false">
            <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
          </enabled>
          <TemperatureLimit>
            <!--ro, req, object, 边界温度-->
            <minTemperature min="-20" max="150" default="0">
              <!--ro, opt, float, 最低温度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, float, 默认值, range:[,], step:, unit:, unitType:}-->0.000
            </minTemperature>
            <maxTemperature min="-20" max="150" default="0">
              <!--ro, opt, float, 最高温度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, float, 默认值, range:[,], step:, unit:, unitType:}-->0.000
            </maxTemperature>
          </TemperatureLimit>
          <Color>
            <!--ro, req, object, 区域颜色-->
            <R>
              <!--ro, req, int, R, range:[,], step:, unit:, unitType:-->0
            </R>
            <G>
              <!--ro, req, int, G, range:[,], step:, unit:, unitType:-->0
            </G>
            <B>
              <!--ro, req, int, B, range:[,], step:, unit:, unitType:-->0
            </B>
          </Color>
        </ColorateTargetMode>
      </ColorateTargetModeList>
    </ColorateTarget>
  </Palettes>
  <LensExposureSync>
    <!--ro, opt, object, 镜头曝光同步-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <GapList>
      <!--ro, opt, object, 拼接缝列表-->
      <Gap>
        <!--ro, opt, object, 拼接缝-->
        <gapID>
          <!--ro, req, int, 拼接缝ID, range:[,], step:, unit:, unitType:-->0
        </gapID>
        <RectList size="16">
          <!--ro, opt, object, 区域列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <Rect>
            <!--ro, opt, object, 区域-->
            <rectID>
              <!--ro, req, int, 区域ID, range:[,], step:, unit:, unitType:-->0
            </rectID>
            <height>
              <!--ro, req, int, 高度, range:[,], step:, unit:, unitType:-->0
            </height>
            <width>
              <!--ro, req, int, 宽度, range:[,], step:, unit:, unitType:-->0
            </width>
            <x>
              <!--ro, req, int, 左上角原点, range:[,], step:, unit:, unitType:-->0
            </x>
            <y>
              <!--ro, req, int, 左上角原点, range:[,], step:, unit:, unitType:-->0
            </y>
          </Rect>
        </RectList>
      </Gap>
    </GapList>
  </LensExposureSync>
  <BrightnessSuddenChangeSuppressionCap>
    <!--ro, opt, object, 亮度突变抑制能力-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </BrightnessSuddenChangeSuppressionCap>
  <AGCCap>
    <!--ro, opt, object, AGC能力-->
    <AGCMode opt="self_Adaptive,histogram,linear">
      <!--ro, opt, enum, AGC模式, subType:string, [self_Adaptive#自适应,histogram#直方图,linear#线性], attr:opt{req, string, 取值范围, range:[,]}-->self_Adaptive
    </AGCMode>
  </AGCCap>
  <RegionalImageEnhancementCap>
    <!--ro, opt, object, 区域图像增强能力-->
    <mode opt="off,customArea,up_60%,down_60%,left_60%,right_60%,center_50%,center_75%">
      <!--ro, req, string, 模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </mode>
    <CustomAreaParam>
      <!--ro, opt, object, 自定义区域参数, desc:dep <mode>="customArea-->
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CustomAreaParam>
    <DefaultAreaParamList>
      <!--ro, opt, array, 默认区域参数列表, subType:object, range:[,], desc:dep <mode>="up_60%,down_60%,left_60%,right_60%,center_50%,center_75%"-->
      <DefaultAreaParam>
        <!--ro, opt, object, 默认区域参数-->
        <mode opt="up_60%,down_60%,left_60%,right_60%,center_50%,center_75%">
          <!--ro, req, string, 模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
        </mode>
        <RegionCoordinatesList size="10">
          <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </DefaultAreaParam>
    </DefaultAreaParamList>
  </RegionalImageEnhancementCap>
  <faceExposure>
    <!--ro, opt, object, 人脸曝光-->
    <faceExposureEnabled opt="true,false">
      <!--ro, req, bool, 人脸曝光使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </faceExposureEnabled>
    <faceExposureSensitivity min="0" max="100">
      <!--ro, req, int, 人脸曝光灵敏度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </faceExposureSensitivity>
  </faceExposure>
  <lightHal>
    <!--ro, opt, object, 信号灯光晕抑制-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <halLevel min="0" max="100">
      <!--ro, req, int, 光晕抑制等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </halLevel>
    <halRange min="0" max="2064">
      <!--ro, req, int, 光晕抑制范围, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </halRange>
  </lightHal>
  <TargetEnhancementCap>
    <!--ro, opt, object, 图像目标增强配置-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </TargetEnhancementCap>
  <LaserLight>
    <!--ro, opt, object, 激光补光-->
    <compensationRegionMode opt="center,adaptive,full_Screen">
      <!--ro, opt, string, 补偿模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->center
    </compensationRegionMode>
    <compensationLevel opt="low,medium,high">
      <!--ro, opt, string, 补偿等级, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->medium
    </compensationLevel>
  </LaserLight>
  <ExternalSupplementLightCap>
    <!--ro, opt, object, 外接补光灯参数配置能力-->
    <mode opt="close,oneMixedLight" def="close">
      <!--ro, opt, enum, 模式, subType:string, [close#关闭,oneMixedLight#一组混合补光], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->close
    </mode>
    <BrightnessList>
      <!--ro, opt, array, 亮度列表, subType:object, range:[,]-->
      <Brightness>
        <!--ro, opt, object, 亮度-->
        <id>
          <!--ro, opt, int, 每组补光灯的id, range:[,], step:, unit:, unitType:-->0
        </id>
        <irLightBrightness min="0" max="100" def="100">
          <!--ro, opt, int, 红外灯亮度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
        </irLightBrightness>
        <whiteLightBrightness min="0" max="100" def="1">
          <!--ro, opt, int, 白光灯亮度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
        </whiteLightBrightness>
      </Brightness>
    </BrightnessList>
  </ExternalSupplementLightCap>
  <TempRange>
    <!--ro, req, object, 温度范围-->
    <mode opt="automatic,manual">
      <!--ro, req, enum, 温度范围模式, subType:string, [automatic#自动模式,manual#手动模式], attr:opt{req, string, 取值范围, range:[,]}-->automatic
    </mode>
    <temperatureUpperLimit min="-20" max="550" def="150">
      <!--ro, opt, float, 上限温度, range:[-20,550], step:, unit:℃, unitType:温度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后一位,手动温度范围模式下有效,上限温度需大于下限温度-->0.000
    </temperatureUpperLimit>
    <temperatureLowerLimit min="-20" max="550" def="0">
      <!--ro, opt, float, 下限温度, range:[-20,550], step:, unit:℃, unitType:温度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:精确到小数点后一位,手动温度范围模式下有效,下限温度需小于上限温度-->0.000
    </temperatureLowerLimit>
  </TempRange>
  <BeautyCap>
    <!--ro, opt, object, 美颜能力-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <whiteningStrength min="0" max="10">
      <!--ro, opt, int, 美白强度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </whiteningStrength>
    <skinSmoothingStrength min="0" max="10">
      <!--ro, opt, int, 磨皮强度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </skinSmoothingStrength>
  </BeautyCap>
  <MExposure>
    <!--ro, opt, object, 手动曝光（工厂标定）-->
    <enabled>
      <!--ro, opt, bool, 使能-->true
    </enabled>
    <exposureLevel min="0" max="1000000">
      <!--ro, opt, string, 曝光等级, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->null
    </exposureLevel>
    <gainLevel min="0" max="100">
      <!--ro, opt, int, 增益等级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </gainLevel>
  </MExposure>
  <SensorRGBCtrl>
    <!--ro, opt, object, SensorRGB控制-->
    <sensorID opt="0,1">
      <!--ro, opt, int, SensorID, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->0
    </sensorID>
  </SensorRGBCtrl>
  <YPbPrCalibration>
    <!--ro, opt, object, 色差标定-->
    <mode opt="0,1,2">
      <!--ro, opt, int, 模式, range:[,], step:, unit:, unitType:, attr:opt{req, string, 模式, range:[,]}-->1
    </mode>
  </YPbPrCalibration>
  <isSupportDOFAdjust>
    <!--ro, opt, bool, 是否支持相机景深调节, desc:/ISAPI/Image/channels/DOFAdjust/capabilities?format=json-->true
  </isSupportDOFAdjust>
  <isSupportFocalLengthType>
    <!--ro, opt, bool, 是否支持焦距类型调整, desc:焦距类型调整实际是切换镜头，而不是调整sensor,属于定焦切换，不支持不返回URI:/ISAPI/Image/channels/<channelID>/focalLengthType/capabilities?format=json-->true
  </isSupportFocalLengthType>
</ImageChannel>

13. 获取亮度限制

13.1 命令

GET /ISAPI/Image/channels/<channelID>/irLight

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 亮度限制, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 模式, subType:string, [auto#自动,manual#手动]-->auto
  </mode>
  <brightnessLevel>
    <!--ro, opt, int, 亮度, range:[,], step:, unit:, unitType:-->1
  </brightnessLevel>
  <sensitivityLevel>
    <!--ro, opt, int, 敏感度, range:[,], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <brightnessLimit>
    <!--ro, opt, int, 亮度极限, range:[,], step:, unit:, unitType:-->1
  </brightnessLimit>
  <triggerMode>
    <!--ro, opt, enum, 触发模式, subType:string, [camera#摄像,photosensitive#光敏]-->camera
  </triggerMode>
</IrLight>

14. 配置亮度限制

14.1 命令

PUT /ISAPI/Image/channels/<channelID>/irLight

14.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 亮度限制, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 模式, subType:string, [auto#自动,manual#手动]-->auto
  </mode>
  <brightnessLevel>
    <!--ro, opt, int, 亮度, range:[,], step:, unit:, unitType:-->1
  </brightnessLevel>
  <sensitivityLevel>
    <!--ro, opt, int, 敏感度, range:[,], step:, unit:, unitType:-->1
  </sensitivityLevel>
  <brightnessLimit>
    <!--ro, opt, int, 亮度极限, range:[,], step:, unit:, unitType:-->1
  </brightnessLimit>
  <triggerMode>
    <!--ro, opt, enum, 触发模式, subType:string, [camera#摄像,photosensitive#光敏]-->camera
  </triggerMode>
</IrLight>

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

15. 获取曝光模式参数（自动）

15.1 命令

GET /ISAPI/Image/channels/<channelID>/exposure

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Exposure xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 曝光模式, attr:version{req, string, 协议版本, range:[,]}-->
  <ExposureType>
    <!--ro, req, enum, 镜头类型, subType:string, [auto#auto,IrisFirst#IrisFirst,ShutterFirst#ShutterFirst,gainFirst#gainFirst,manual#manual,pIris#pIris,T5280-PQ1#T5280-PQ1,T5289-PQ1#T5289-PQ1,T1140-PQ1#T1140-PQ1,T2712-PQ1#T2712-PQ1,HV1250P-MPIR#HV1250P-MPIR,pc#pc,pIris-General#pIris-General,HZ1140P-8MPIRA#HZ1140P-8MPIRA,HZ1135P-8MPSGA#HZ1135P-8MPSGA,MV1550P-12MPIR#MV1550P-12MPIR,MZ1545P-12MP#MZ1545P-12MP,HZ0618P-4MPSG#HZ0618P-4MPSG,MZ1050P-12MP#MZ1050P-12MP]-->auto
  </ExposureType>
  <autoIrisLevel>
    <!--ro, opt, int, 光圈自动级别, range:[,], step:, unit:, unitType:-->1
  </autoIrisLevel>
  <OverexposeSuppress>
    <!--ro, opt, object, 过度曝光抑制-->
    <enabled>
      <!--ro, req, bool, 过度曝光抑制使能-->true
    </enabled>
    <Type>
      <!--ro, opt, enum, 过度曝光抑制类型, subType:string, [AUTO#AUTO,MANUAL#MANUAL]-->AUTO
    </Type>
    <DistanceLevel>
      <!--ro, opt, int, 焦距, range:[,], step:, unit:, unitType:-->1
    </DistanceLevel>
    <shortIRDistanceLevel>
      <!--ro, opt, int, IR短距离级别, range:[,], step:, unit:, unitType:-->1
    </shortIRDistanceLevel>
    <longIRDistanceLevel>
      <!--ro, opt, int, IR长距离级别, range:[,], step:, unit:, unitType:-->1
    </longIRDistanceLevel>
    <supplementLightIntensity1>
      <!--ro, opt, int, 补充曝光强度1, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity1>
    <supplementLightIntensity2>
      <!--ro, opt, int, 补充曝光强度2, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity2>
    <supplementLightIntensity3>
      <!--ro, opt, int, 补充曝光强度3, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity3>
    <supplementLightIntensity4>
      <!--ro, opt, int, 补充曝光强度4, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity4>
  </OverexposeSuppress>
  <pIris>
    <!--ro, opt, object, 光圈-->
    <pIrisType>
      <!--ro, opt, enum, 光圈类型, subType:string, [AUTO#AUTO,MANUAL#MANUAL]-->AUTO
    </pIrisType>
    <IrisLevel>
      <!--ro, opt, int, 光圈级别, range:[,], step:, unit:, unitType:-->1
    </IrisLevel>
  </pIris>
  <faceExposure>
    <!--ro, opt, object, 人脸曝光-->
    <enabled>
      <!--ro, opt, bool, 人脸曝光使能-->true
    </enabled>
    <sensitivity>
      <!--ro, opt, int, 人脸曝光灵敏度, range:[,], step:, unit:, unitType:-->1
    </sensitivity>
  </faceExposure>
  <PIrisGeneral>
    <!--ro, opt, object, pIris-General配置, desc:<ExposureType>== pIris-General 生效-->
    <irisLevel>
      <!--ro, opt, int, 通用镜头下的光圈等级, range:[1,100], step:, unit:, unitType:-->1
    </irisLevel>
  </PIrisGeneral>
</Exposure>

16. 配置曝光模式参数（自动）

16.1 命令

PUT /ISAPI/Image/channels/<channelID>/exposure

16.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Exposure xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 曝光模式, attr:version{req, string, 协议版本, range:[,]}-->
  <ExposureType>
    <!--ro, req, enum, 镜头类型, subType:string, [auto#auto,IrisFirst#IrisFirst,ShutterFirst#ShutterFirst,gainFirst#gainFirst,manual#manual,pIris#pIris,T5280-PQ1#T5280-PQ1,T5289-PQ1#T5289-PQ1,T1140-PQ1#T1140-PQ1,T2712-PQ1#T2712-PQ1,HV1250P-MPIR#HV1250P-MPIR,pc#pc,pIris-General#pIris-General,HZ1140P-8MPIRA#HZ1140P-8MPIRA,HZ1135P-8MPSGA#HZ1135P-8MPSGA,MV1550P-12MPIR#MV1550P-12MPIR,MZ1545P-12MP#MZ1545P-12MP,HZ0618P-4MPSG#HZ0618P-4MPSG,MZ1050P-12MP#MZ1050P-12MP]-->auto
  </ExposureType>
  <autoIrisLevel>
    <!--ro, opt, int, 光圈自动级别, range:[,], step:, unit:, unitType:-->1
  </autoIrisLevel>
  <OverexposeSuppress>
    <!--ro, opt, object, 过度曝光抑制-->
    <enabled>
      <!--ro, req, bool, 过度曝光抑制使能-->true
    </enabled>
    <Type>
      <!--ro, opt, enum, 过度曝光抑制类型, subType:string, [AUTO#AUTO,MANUAL#MANUAL]-->AUTO
    </Type>
    <DistanceLevel>
      <!--ro, opt, int, 焦距, range:[,], step:, unit:, unitType:-->1
    </DistanceLevel>
    <shortIRDistanceLevel>
      <!--ro, opt, int, IR短距离级别, range:[,], step:, unit:, unitType:-->1
    </shortIRDistanceLevel>
    <longIRDistanceLevel>
      <!--ro, opt, int, IR长距离级别, range:[,], step:, unit:, unitType:-->1
    </longIRDistanceLevel>
    <supplementLightIntensity1>
      <!--ro, opt, int, 补充曝光强度1, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity1>
    <supplementLightIntensity2>
      <!--ro, opt, int, 补充曝光强度2, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity2>
    <supplementLightIntensity3>
      <!--ro, opt, int, 补充曝光强度3, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity3>
    <supplementLightIntensity4>
      <!--ro, opt, int, 补充曝光强度4, range:[1,100], step:, unit:, unitType:, dep:and,{$.Exposure.OverexposeSuppress.Type,eq,MANUAL}-->1
    </supplementLightIntensity4>
  </OverexposeSuppress>
  <pIris>
    <!--ro, opt, object, 光圈-->
    <pIrisType>
      <!--ro, opt, enum, 光圈类型, subType:string, [AUTO#AUTO,MANUAL#MANUAL]-->AUTO
    </pIrisType>
    <IrisLevel>
      <!--ro, opt, int, 光圈级别, range:[,], step:, unit:, unitType:-->1
    </IrisLevel>
  </pIris>
  <faceExposure>
    <!--ro, opt, object, 人脸曝光-->
    <enabled>
      <!--ro, opt, bool, 人脸曝光使能-->true
    </enabled>
    <sensitivity>
      <!--ro, opt, int, 人脸曝光灵敏度, range:[,], step:, unit:, unitType:-->1
    </sensitivity>
  </faceExposure>
  <PIrisGeneral>
    <!--ro, opt, object, pIris-General配置, desc:<ExposureType>== pIris-General 生效-->
    <irisLevel>
      <!--ro, opt, int, 通用镜头下的光圈等级, range:[1,100], step:, unit:, unitType:-->1
    </irisLevel>
  </PIrisGeneral>
</Exposure>

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

17. 获取视频能力

17.1 命令

GET /ISAPI/System/Video/capabilities

17.2 输入参数

无

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">test
  <!--ro, req, string, OSD语言选择, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <videoInputPortNums>
    <!--ro, opt, int, 视频输入端口个数, range:[,], step:, unit:, unitType:-->0
  </videoInputPortNums>
  <videoOutputPortNums>
    <!--ro, opt, int, 视频输出端口个数, range:[,], step:, unit:, unitType:-->0
  </videoOutputPortNums>
  <menuNums>
    <!--ro, opt, int, 支持显示本地菜单数目, range:[,], step:, unit:, unitType:-->0
  </menuNums>
  <externalChannelNum>
    <!--ro, opt, bool, 外扩模拟通道个数-->true
  </externalChannelNum>
  <isSupportHeatmap>
    <!--ro, opt, bool, 是否支持热度图-->true
  </isSupportHeatmap>
  <isSupportCounting>
    <!--ro, opt, bool, 是否支持人数统计-->true
  </isSupportCounting>
  <countingType>
    <!--ro, opt, string, 统计类型, range:[,],
desc:human-表示的是客流统计；object-表示的是过线计数；
都支持以逗号隔开，eg:"human,object"-->test
  </countingType>
  <isSupportPicture>
    <!--ro, opt, bool, 是否支持OSD图片叠加, desc:对应url:/ISAPI/System/Video/inputs/channels/<channelID>/image/picture-->true
  </isSupportPicture>
  <isSupportPreviewSwitch>
    <!--ro, opt, bool, 是否支持预览切换-->true
  </isSupportPreviewSwitch>
  <isSupportRecodStatus>
    <!--ro, opt, bool, 是否支持录像状态查询-->true
  </isSupportRecodStatus>
  <isSupportPrivacyMask>
    <!--ro, opt, bool, 是否支持隐私遮蔽功能-->true
  </isSupportPrivacyMask>
  <isSupportBinocularPreviewSwitch>
    <!--ro, opt, bool, 是否支持双目预览切换-->true
  </isSupportBinocularPreviewSwitch>
  <isSupportCalibCheck>
    <!--ro, opt, bool, 是否支持标定检验-->true
  </isSupportCalibCheck>
  <isSupportPIP>
    <!--ro, opt, bool, 是否支持画中画, desc:PIP(picture in picture，画中画)-->true
  </isSupportPIP>
  <isSupportFocusVideoMode>
    <!--ro, opt, bool, 是否支持聚焦视频模式, desc:用于安装时调试不同模式的对焦-->true
  </isSupportFocusVideoMode>
  <isSupportExternalChannel>
    <!--ro, opt, bool, 是否支持外扩模拟通道-->true
  </isSupportExternalChannel>
  <isSupportMultiChannelCounting>
    <!--ro, opt, bool, 是否支持多通道客流量查询-->true
  </isSupportMultiChannelCounting>
  <isSupportCountingCollection>
    <!--ro, opt, bool, 是否支持客流量补录-->true
  </isSupportCountingCollection>
  <isSupportHeatmapCollection>
    <!--ro, opt, bool, 是否支持热度图数据补录-->true
  </isSupportHeatmapCollection>
  <channelFlexible opt="name,enable,online,linknum">
    <!--ro, opt, enum, 灵活获取通道信息的条件能力, subType:string, [name#名称,enable#使能,online#在线状态,linknum#连接数目], attr:opt{req, string, 取值范围, range:[,]}, desc:对应ISAPI/System/Video/inputs/channels?format=json中的InputParam内容-->name
  </channelFlexible>
  <isSupportOutputsResource>
    <!--ro, opt, bool, 是否支持设备输出口使能配置, desc:对应/ISAPI/System/Video/outputs/resource?format=json-->true
  </isSupportOutputsResource>
  <OSDLanguage opt="GBK,EUC-KR" def="GBK">
    <!--ro, opt, enum, OSD语言选择, subType:string, [GBK#中文,EUC-KR#韩文], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->GBK
  </OSDLanguage>
  <isSupportMixedChannel>
    <!--ro, opt, bool, 是否支持模式通道合并-->true
  </isSupportMixedChannel>
  <isSupportMixedChannelStatus>
    <!--ro, opt, bool, 是否支持模式通道状态合并-->true
  </isSupportMixedChannelStatus>
  <isSupportOutputCourseware>
    <!--ro, opt, bool, 是否支持课件输出口配置, desc:/ISAPI/System/Video/outputs/courseware/capabilities?format=json-->true
  </isSupportOutputCourseware>
  <isSupportVideoInputMode>
    <!--ro, opt, bool, 是否支持模拟通道模式配置功能, desc:/ISAPI/System/Video/inputs/mode/capabilities-->true
  </isSupportVideoInputMode>
  <isSupportVideoOutputMode>
    <!--ro, opt, bool, 是否支持视频输出模式配置, desc:/ISAPI/System/Video/outputs/mode/capabilities?format=json-->true
  </isSupportVideoOutputMode>
  <PreviewMode>
    <!--ro, opt, object, 双路输出时web显示画中画, desc:isSupportVideoOutputMode节点返回true时,该功能支持-->
    <PIPType>
      <!--ro, opt, object, 画中画模式显示-->
      <mainScreenChannelID>
        <!--ro, opt, int, 画中画显示主预览画面通道号, range:[,], step:, unit:, unitType:-->0
      </mainScreenChannelID>
      <subScreenChannelID>
        <!--ro, opt, int, 画中画显示次预览画面通道号, range:[,], step:, unit:, unitType:-->0
      </subScreenChannelID>
    </PIPType>
  </PreviewMode>
  <isSupportViewTag>
    <!--ro, opt, bool, 是否支持视图标签, desc:不支持不返回-->true
  </isSupportViewTag>
</VideoCap>

18. 获取OSD语言参数

18.1 命令

GET /ISAPI/System/Video/inputs/OSDLanguage

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Language xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <type>
    <!--ro, req, enum, 语言类型, subType:string, [GBK#GBK,EUC-KR#EUC-KR]-->GBK
  </type>
</Language>

19. 配置OSD语言参数

19.1 命令

PUT /ISAPI/System/Video/inputs/OSDLanguage

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Language xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <type>
    <!--req, enum, 语言类型, subType:string, [GBK#GBK,EUC-KR#EUC-KR]-->GBK
  </type>
</Language>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取通道区域裁剪能力

20.1 命令

GET /ISAPI/Streaming/channels/<channelID>/regionClip/capabilities

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionClip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 区域裁剪能力, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--ro, req, string, 区域id, range:[,]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化大小-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <regionType opt="rectangle,convexPolygon,concavePolygon">
    <!--ro, req, string, 区域类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->test
  </regionType>
  <videoResolutionWidth opt="704">
    <!--ro, opt, int, 分辨率宽, range:[,], step:, unit:, unitType:, attr:opt{opt, string, 未定义, range:[,]}-->704
  </videoResolutionWidth>
  <videoResolutionHeight opt="576">
    <!--ro, opt, int, 分辨率高, range:[,], step:, unit:, unitType:, attr:opt{opt, string, 未定义, range:[,]}-->576
  </videoResolutionHeight>
  <ClipRegionList>
    <!--ro, opt, array, 区域列表, subType:object, range:[,]-->
    <ClipRegion>
      <!--ro, opt, object, 裁剪区域-->
      <RegionCoordinatesList size="1">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], attr:size{opt, string, 未定义, range:[,]}, desc:矩形-->
        <RegionCoordinates>
          <!--ro, req, object, 坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标值, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标值, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </ClipRegion>
  </ClipRegionList>
</RegionClip>

21. 获取通道区域裁剪参数

21.1 命令

GET /ISAPI/Streaming/channels/<channelID>/regionClip

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionClip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 区域裁剪能力, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--ro, req, string, 区域id, range:[,]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化大小-->
    <normalizedScreenWidth>
      <!--ro, opt, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, opt, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <regionType>
    <!--ro, req, enum, 区域类型, subType:string, [rectangle#矩形,convexPolygon#凸多边形,concavePolygon#凹多边形]-->rectangle
  </regionType>
  <videoResolutionWidth>
    <!--ro, req, int, 分辨率宽, range:[,], step:, unit:, unitType:-->1
  </videoResolutionWidth>
  <videoResolutionHeight>
    <!--ro, req, int, 分辨率高, range:[,], step:, unit:, unitType:-->1
  </videoResolutionHeight>
  <ClipRegionList>
    <!--ro, opt, array, 区域列表, subType:object, range:[,]-->
    <ClipRegion>
      <!--ro, opt, object, 裁剪区域-->
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--ro, req, object, 坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--ro, req, int, x坐标值, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--ro, req, int, y坐标值, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </ClipRegion>
  </ClipRegionList>
</RegionClip>

22. 配置通道区域裁剪参数

22.1 命令

PUT /ISAPI/Streaming/channels/<channelID>/regionClip

22.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RegionClip xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 区域裁剪能力, attr:version{opt, string, 未定义, range:[,]}-->
  <id>
    <!--req, string, 区域id, range:[,]-->test
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化大小-->
    <normalizedScreenWidth>
      <!--opt, int, 归一化宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--opt, int, 归一化高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <regionType>
    <!--req, enum, 区域类型, subType:string, [rectangle#矩形,convexPolygon#凸多边形,concavePolygon#凹多边形]-->rectangle
  </regionType>
  <videoResolutionWidth>
    <!--req, int, 分辨率宽, range:[,], step:, unit:, unitType:-->1
  </videoResolutionWidth>
  <videoResolutionHeight>
    <!--req, int, 分辨率高, range:[,], step:, unit:, unitType:-->1
  </videoResolutionHeight>
  <ClipRegionList>
    <!--opt, array, 区域列表, subType:object, range:[,]-->
    <ClipRegion>
      <!--opt, object, 裁剪区域-->
      <RegionCoordinatesList>
        <!--opt, array, 区域坐标列表, subType:object, range:[0,4], desc:矩形-->
        <RegionCoordinates>
          <!--req, object, 坐标, desc:屏幕左下角为坐标原点-->
          <positionX>
            <!--req, int, x坐标值, range:[0,1000], step:, unit:, unitType:-->1
          </positionX>
          <positionY>
            <!--req, int, y坐标值, range:[0,1000], step:, unit:, unitType:-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </ClipRegion>
  </ClipRegionList>
</RegionClip>

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

23. 配置手动测距

23.1 命令

PUT /ISAPI/Image/channels/<channelID>/manualRanging

23.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualRanging xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 测距参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
</ManualRanging>

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

24. 获取手动测距光标

24.1 命令

GET /ISAPI/Image/channels/<channelID>/manualRanging/cursor?format=jso

24.2 输入参数

无

24.3 输出参数

{
    "enable":  true
    /*ro, req, bool, 激光测距光标显示使能, desc:该使能开启后，显示十字光标*/
}

25. 设置手动测距光标

25.1 命令

PUT /ISAPI/Image/channels/<channelID>/manualRanging/cursor?format=jso

25.2 输入参数

{
    "enable":  true
    /*req, bool, 激光测距光标显示使能, desc:该使能开启后，显示十字光标*/
}

25.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

26. 获取显示比例控制能力

26.1 命令

GET /ISAPI/Streaming/channels/<channelID>/resolutionSwitch/capabilities

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResolutionSwitch xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <ResolutionType opt="all,20:9,20:6,originalStream">
    <!--ro, opt, enum, 分辨率模式, subType:string, [all#所有,20:9#20:9,20:6#20:6,originalStream#原始码流], attr:opt{req, string, 取值范围, range:[,]}, desc:originalStream原始码流模式（不进行图像融合，使用4路码流“田”字拼接的方式显示）-->all
  </ResolutionType>
</ResolutionSwitch>

27. 获取显示比例控制参数

27.1 命令

GET /ISAPI/Streaming/channels/<channelID>/resolutionSwitch

27.2 输入参数

无

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResolutionSwitch xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <ResolutionType opt="all,20:9,20:6,originalStream">
    <!--ro, opt, enum, 分辨率模式, subType:string, [all#所有,20:9#20:9,20:6#20:6,originalStream#原始码流], attr:opt{req, string, 取值范围, range:[,]}, desc:originalStream原始码流模式（不进行图像融合，使用4路码流“田”字拼接的方式显示）-->all
  </ResolutionType>
</ResolutionSwitch>

28. 配置显示比例控制参数

28.1 命令

PUT /ISAPI/Streaming/channels/<channelID>/resolutionSwitch

28.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ResolutionSwitch xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 分辨率, attr:version{req, string, 协议版本, range:[,]}-->
  <ResolutionType opt="all,20:9,20:6,originalStream">
    <!--opt, enum, 分辨率模式, subType:string, [all#所有,20:9#20:9,20:6#20:6,originalStream#原始码流], attr:opt{req, string, 取值范围, range:[,]}, desc:originalStream原始码流模式（不进行图像融合，使用4路码流“田”字拼接的方式显示）-->all
  </ResolutionType>
</ResolutionSwitch>

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

29. 获取POS叠加能力

29.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/posOverlay/capabilities

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PosOverlayCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="false,true">
    <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <backpackEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加背包情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </backpackEnanble>
  <sexEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加性别情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </sexEnanble>
  <carryEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加拎东西情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </carryEnanble>
  <rideEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加骑车情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </rideEnanble>
  <maskEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加带口罩情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </maskEnanble>
  <hatEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加戴帽子情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </hatEnanble>
  <sleeveEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加长短袖情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </sleeveEnanble>
  <pantsTypeEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加裤子属性情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </pantsTypeEnanble>
  <hairEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加长短发情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </hairEnanble>
  <glassesEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加戴眼镜情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </glassesEnanble>
  <ageEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加年龄情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </ageEnanble>
  <heightEnanble opt="false,true">
    <!--ro, opt, bool, 是否叠加身高情况, attr:opt{req, string, 取值范围, range:[,]}-->true
  </heightEnanble>
  <humanEnabled opt="false,true">
    <!--ro, opt, bool, 人体信息情况（ID和评分）使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </humanEnabled>
  <nonMotorEnabled opt="false,true">
    <!--ro, opt, bool, 非机动车情况（ID和评分）使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </nonMotorEnabled>
  <vehicleEnabled opt="false,true">
    <!--ro, opt, bool, 车辆情况（ID和评分）使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </vehicleEnabled>
</PosOverlayCap>

30. 获取POS叠加参数

30.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/posOverlay

30.2 输入参数

无

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PosOverlayCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <backpackEnanble>
    <!--ro, opt, bool, 是否叠加背包情况-->true
  </backpackEnanble>
  <sexEnanble>
    <!--ro, opt, bool, 是否叠加性别情况-->true
  </sexEnanble>
  <carryEnanble>
    <!--ro, opt, bool, 是否叠加拎东西情况-->true
  </carryEnanble>
  <rideEnanble>
    <!--ro, opt, bool, 是否叠加骑车情况-->true
  </rideEnanble>
  <maskEnanble>
    <!--ro, opt, bool, 是否叠加带口罩情况-->true
  </maskEnanble>
  <hatEnanble>
    <!--ro, opt, bool, 是否叠加戴帽子情况-->true
  </hatEnanble>
  <sleeveEnanble>
    <!--ro, opt, bool, 是否叠加长短袖情况-->true
  </sleeveEnanble>
  <pantsTypeEnanble>
    <!--ro, opt, bool, 是否叠加裤子属性情况-->true
  </pantsTypeEnanble>
  <hairEnanble>
    <!--ro, opt, bool, 是否叠加长短发情况-->true
  </hairEnanble>
  <glassesEnanble>
    <!--ro, opt, bool, 是否叠加戴眼镜情况-->true
  </glassesEnanble>
  <ageEnanble>
    <!--ro, opt, bool, 是否叠加年龄情况-->true
  </ageEnanble>
  <heightEnanble>
    <!--ro, opt, bool, 是否叠加身高情况-->true
  </heightEnanble>
  <humanEnabled>
    <!--ro, opt, bool, 人体信息情况（ID和评分）使能-->true
  </humanEnabled>
  <nonMotorEnabled>
    <!--ro, opt, bool, 非机动车情况（ID和评分）使能-->true
  </nonMotorEnabled>
  <vehicleEnabled>
    <!--ro, opt, bool, 车辆情况（ID和评分）使能-->true
  </vehicleEnabled>
</PosOverlayCap>

31. 配置POS叠加参数

31.1 命令

PUT /ISAPI/System/Video/inputs/channels/<channelID>/posOverlay

31.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PosOverlayCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <backpackEnanble>
    <!--opt, bool, 是否叠加背包情况-->true
  </backpackEnanble>
  <sexEnanble>
    <!--opt, bool, 是否叠加性别情况-->true
  </sexEnanble>
  <carryEnanble>
    <!--opt, bool, 是否叠加拎东西情况-->true
  </carryEnanble>
  <rideEnanble>
    <!--opt, bool, 是否叠加骑车情况-->true
  </rideEnanble>
  <maskEnanble>
    <!--opt, bool, 是否叠加带口罩情况-->true
  </maskEnanble>
  <hatEnanble>
    <!--opt, bool, 是否叠加戴帽子情况-->true
  </hatEnanble>
  <sleeveEnanble>
    <!--opt, bool, 是否叠加长短袖情况-->true
  </sleeveEnanble>
  <pantsTypeEnanble>
    <!--opt, bool, 是否叠加裤子属性情况-->true
  </pantsTypeEnanble>
  <hairEnanble>
    <!--opt, bool, 是否叠加长短发情况-->true
  </hairEnanble>
  <glassesEnanble>
    <!--opt, bool, 是否叠加戴眼镜情况-->true
  </glassesEnanble>
  <ageEnanble>
    <!--opt, bool, 是否叠加年龄情况-->true
  </ageEnanble>
  <heightEnanble>
    <!--opt, bool, 是否叠加身高情况-->true
  </heightEnanble>
  <humanEnabled>
    <!--opt, bool, 人体信息情况（ID和评分）使能-->true
  </humanEnabled>
  <nonMotorEnabled>
    <!--opt, bool, 非机动车情况（ID和评分）使能-->true
  </nonMotorEnabled>
  <vehicleEnabled>
    <!--opt, bool, 车辆情况（ID和评分）使能-->true
  </vehicleEnabled>
</PosOverlayCap>

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

32. 获取图片信息叠加能力

32.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/picInfoOverlap/capabilities

32.2 输入参数

无

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PicInfoOverlap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 图片信息叠加, attr:version{req, string, 协议版本, range:[,]}-->
  <Overlap>
    <!--ro, opt, object, 叠加配置-->
    <enabled>
      <!--ro, opt, bool, 叠加使能-->true
    </enabled>
    <OverlapItemList>
      <!--ro, opt, array, 叠加信息列表, subType:object, range:[,]-->
      <OverlapItem>
        <!--ro, opt, object, 叠加信息-->
        <id>
          <!--ro, req, int, 叠加序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <item opt="positionInfo,cameraNo,captureTime,sex,age,GPS">
          <!--ro, req, enum, 叠加元素, subType:string, [positionInfo#检测点信息,cameraNo#设备编号,captureTime#抓拍时间,sex#性别,age#年龄,GPS#GPS,facingPupil#人脸瞳距], attr:opt{req, string, 取值范围, range:[,]}-->positionInfo
        </item>
      </OverlapItem>
    </OverlapItemList>
  </Overlap>
</PicInfoOverlap>

33. 获取图片信息叠加

33.1 命令

GET /ISAPI/System/Video/inputs/channels/<channelID>/picInfoOverlap

33.2 输入参数

无

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PicInfoOverlap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 图片信息叠加, attr:version{req, string, 协议版本, range:[,]}-->
  <Overlap>
    <!--ro, opt, object, 叠加配置-->
    <enabled>
      <!--ro, opt, bool, 叠加使能-->true
    </enabled>
    <OverlapItemList>
      <!--ro, opt, array, 叠加信息列表, subType:object, range:[,]-->
      <OverlapItem>
        <!--ro, opt, object, 叠加信息-->
        <id>
          <!--ro, req, int, 叠加序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <item>
          <!--ro, req, enum, 叠加元素, subType:string, [positionInfo#检测点信息,cameraNo#设备编号,captureTime#抓拍时间,sex#性别,age#年龄,GPS#GPS,facingPupil#人脸瞳距]-->positionInfo
        </item>
      </OverlapItem>
    </OverlapItemList>
  </Overlap>
</PicInfoOverlap>

34. 配置图片信息叠加

34.1 命令

PUT /ISAPI/System/Video/inputs/channels/<channelID>/picInfoOverlap

34.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PicInfoOverlap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--wo, opt, object, 图片信息叠加, attr:version{req, string, 协议版本, range:[,]}-->
  <Overlap>
    <!--wo, opt, object, 叠加配置-->
    <enabled>
      <!--wo, opt, bool, 叠加使能-->true
    </enabled>
    <OverlapItemList>
      <!--wo, opt, array, 叠加信息列表, subType:object, range:[,]-->
      <OverlapItem>
        <!--wo, opt, object, 叠加信息-->
        <id>
          <!--wo, req, int, 叠加序号, range:[,], step:, unit:, unitType:-->1
        </id>
        <item>
          <!--wo, req, enum, 叠加元素, subType:string, [positionInfo#检测点信息,cameraNo#设备编号,captureTime#抓拍时间,sex#性别,age#年龄,GPS#GPS,facingPupil#人脸瞳距]-->positionInfo
        </item>
      </OverlapItem>
    </OverlapItemList>
  </Overlap>
</PicInfoOverlap>

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

35. 获取激活数字通道设备能力

35.1 命令

GET /ISAPI/ContentMgmt/InputProxy/channels/activate/capabilities

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoSourceActivationCapability xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <ActivateByChannel>
    <!--ro, opt, object, 以通道激活-->
    <proxyProtocol opt="HIKVISION">
      <!--ro, opt, enum, 代理协议类型, subType:string, [HIKVISION#HIKVISION], attr:opt{req, string, 取值范围, range:[,]}-->HIKVISION
    </proxyProtocol>
  </ActivateByChannel>
  <ActivateByAddress>
    <!--ro, opt, object, 以地址激活-->
    <proxyProtocol opt="HIKVISION">
      <!--ro, opt, enum, 代理协议类型, subType:string, [HIKVISION#HIKVISION], attr:opt{req, string, 取值范围, range:[,]}-->HIKVISION
    </proxyProtocol>
  </ActivateByAddress>
</VideoSourceActivationCapability>

36. 配置激活数字通道设备

36.1 命令

PUT /ISAPI/ContentMgmt/InputProxy/channels/activate

36.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoSourceActivation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 激活数字通道参数, attr:version{req, string, 协议版本, range:[,]}-->
  <userName>
    <!--req, string, 用户名, range:[1,32]-->test
  </userName>
  <passwordType>
    <!--opt, enum, 密码类型, subType:string, [default#NVR的密码,selfDefine#自定义,IPCActivatePasswd#对IPC激活的密码]-->default
  </passwordType>
  <password>
    <!--opt, string, 密码, range:[1,16]-->test
  </password>
  <ActivationDevice>
    <!--opt, object, 激活设备参数-->
    <mode>
      <!--req, enum, 模式选择, subType:string, [channel#按通道,descriptor#按描述]-->channel
    </mode>
    <channel>
      <!--opt, object, 通道信息, desc:当mode为channel时有效-->
      <dynVideoInputChannelID>
        <!--req, int, 动态视频输入通道索引, range:[,], step:, unit:, unitType:-->1
      </dynVideoInputChannelID>
    </channel>
    <descriptor>
      <!--opt, object, 描述信息, desc:当mode为descriptor时有效-->
      <macAddress>
        <!--req, string, 物理地址, range:[1,48]-->test
      </macAddress>
      <addressingFormatType>
        <!--req, enum, 地址类型, subType:string, [hostname#hostname,ipaddress#ipaddress]-->hostname
      </addressingFormatType>
      <hostName>
        <!--opt, string, 主机名, range:[1,64]-->test
      </hostName>
      <ipAddress>
        <!--opt, string, IPV4地址, range:[1,32]-->test
      </ipAddress>
      <ipv6Address>
        <!--opt, string, IPV6地址, range:[1,128]-->test
      </ipv6Address>
      <portNo>
        <!--req, int, 端口号, range:[1,65535], step:, unit:, unitType:-->1
      </portNo>
      <proxyProtocol>
        <!--req, enum, 代理协议类型, subType:string, [HIKVISION#HIKVISION,SONY#SONY,ISAPI#ISAPI,ONVIF#ONVIF]-->HIKVISION
      </proxyProtocol>
    </descriptor>
  </ActivationDevice>
</VideoSourceActivation>

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37. 配置IPC的密码为IPC激活密码

37.1 命令

PUT /ISAPI/ContentMgmt/InputProxy/syncIPCActivatePasswd

37.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

38. 配置IPC的密码为IPC激活密码

38.1 命令

PUT /ISAPI/ContentMgmt/InputProxy/syncIPCActivatePasswd

38.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

39. 获取RTMP通道能力

39.1 命令

GET /ISAPI/Streaming/channels/<trackStreamID>/RTMPCfg/capabilities

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RTMPCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道码流ID, range:[,], desc:通道号*100+码流类型（主码流-1，子码流-2，以此类推）-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <url>
    <!--ro, req, string, 取流URL, range:[,]-->test
  </url>
  <packetLen>
    <!--ro, opt, int, 包长度, range:[,], step:, unit:, unitType:-->1
  </packetLen>
  <isNotSupportH265>
    <!--ro, opt, bool, 设备是否在RTMP标准中不支持H265, desc:返回true时,上层提示用户未支持G711a和g711u-->true
  </isNotSupportH265>
</RTMPCfg>

40. 获取RTMP通道参数

40.1 命令

GET /ISAPI/Streaming/channels/<trackStreamID>/RTMPCfg

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RTMPCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道码流ID, range:[,], desc:通道号*100+码流类型（主码流-1，子码流-2，以此类推）-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <url>
    <!--ro, req, string, 取流URL, range:[,]-->test
  </url>
  <packetLen>
    <!--ro, opt, int, 包长度, range:[,], step:, unit:, unitType:-->1
  </packetLen>
</RTMPCfg>

41. 配置RTMP通道参数

41.1 命令

PUT /ISAPI/Streaming/channels/<trackStreamID>/RTMPCfg

41.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RTMPCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 通道码流ID, range:[,], desc:通道号*100+码流类型（主码流-1，子码流-2，以此类推）-->test
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <url>
    <!--req, string, 取流URL, range:[,]-->test
  </url>
  <packetLen>
    <!--opt, int, 包长度, range:[,], step:, unit:, unitType:-->1
  </packetLen>
</RTMPCfg>

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

42. 获取设备单个视频输出通道能力

42.1 命令

GET /ISAPI/System/Video/outputs/channels/<channelID>/capabilities

42.2 输入参数

无

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoOutputChannel xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 视频输出参数 , attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 视频输出索引, range:[,]-->test
  </id>
  <type opt="VGA,CVBS,HDMI,Spot,SDI,LCD">
    <!--ro, req, enum, 输出视频类型, subType:string, [VGA#VGA,CVBS#CVBS,HDMI#HDMI,Spot#Spot,SDI#SDI,LCD#LCD], attr:opt{req, string, 取值范围, range:[,]}-->VGA
  </type>
  <menu>
    <!--ro, opt, object, 目录信息-->
    <mirrorMenu>
      <!--ro, req, bool, 是否同源-->true
    </mirrorMenu>
  </menu>
  <mirrorList>
    <!--ro, opt, array, 同源输出口列表, subType:object, range:[,]-->
    <outputId>
      <!--ro, opt, string, 同源输出口索引, range:[,]-->test
    </outputId>
  </mirrorList>
  <mode opt="close,clip,scale,open,SDI_1080P25…HDMI_1080P,HDMI_720P,HDMI_2160P">
    <!--ro, opt, enum, 输出模式, subType:string, [close#关闭,clip#裁剪,scale#缩放,open#打开,SDI_1080P25#SDI_1080P25,HDMI_1080P#HDMI_1080P,HDMI_720P#HDMI_720P,HDMI_2160P#HDMI_2160P], attr:opt{req, string, 取值范围, range:[,]}-->close
  </mode>
  <resolution opt="1920*1080/60HZ,1280*720/50HZ,1920*1080/60HZ">
    <!--ro, opt, enum, 输出分辨率, subType:string, [1920*1080/60HZ#1920*1080/60HZ,1280*720/50HZ#1280*720/50HZ,1920*1080/60HZ(1080P)#1920*1080/60HZ(1080P)], attr:opt{req, string, 取值范围, range:[,]}-->1920*1080/60HZ
  </resolution>
  <brightnessLevel min="1" max="100" def="1">
    <!--ro, opt, int, 亮度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </brightnessLevel>
  <contrastLevel min="1" max="100" def="1">
    <!--ro, opt, int, 对比度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </contrastLevel>
  <saturationLevel min="1" max="100" def="1">
    <!--ro, opt, int, 饱和度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </saturationLevel>
  <hueLevel min="1" max="100" def="1">
    <!--ro, opt, int, 色调, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </hueLevel>
  <sharpnessLevel min="1" max="100" def="1">
    <!--ro, opt, int, 锐度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </sharpnessLevel>
  <RecommendationColorList>
    <!--ro, opt, object, 推荐输出图像参数列表-->
    <RecommendationColor>
      <!--ro, opt, object, 推荐输出图像参数-->
      <type>
        <!--ro, req, enum, 类型, subType:string, [standard#标准,bright#明亮,soft#柔和,vivid#鲜艳]-->standard
      </type>
      <recommendation>
        <!--ro, req, object, 推荐值, desc:每一种type对应一组推荐值-->
        <brightnessLevel>
          <!--ro, opt, int, 亮度, range:[0,100], step:, unit:, unitType:-->1
        </brightnessLevel>
        <contrastLevel>
          <!--ro, opt, int, 对比度, range:[0,100], step:, unit:, unitType:-->1
        </contrastLevel>
        <sharpnessLevel>
          <!--ro, opt, int, 锐度, range:[0,100], step:, unit:, unitType:-->1
        </sharpnessLevel>
        <saturationLevel>
          <!--ro, opt, int, 饱和度, range:[0,100], step:, unit:, unitType:-->1
        </saturationLevel>
        <hueLevel>
          <!--ro, opt, int, 色调, range:[0,100], step:, unit:, unitType:-->1
        </hueLevel>
      </recommendation>
    </RecommendationColor>
  </RecommendationColorList>
</VideoOutputChannel>

43. 获取设备单个视频输出通道参数

43.1 命令

GET /ISAPI/System/Video/outputs/channels/<channelID>

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoOutputChannel xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 视频输出索引, range:[,]-->test
  </id>
  <type>
    <!--ro, req, enum, 输出视频类型, subType:string, [VGA#VGA,CVBS#CVBS,HDMI#HDMI,Spot#Spot,SDI#SDI,LCD#LCD]-->VGA
  </type>
  <menu>
    <!--ro, opt, object, 目录信息-->
    <mirrorMenu>
      <!--ro, req, bool, 是否同源-->true
    </mirrorMenu>
  </menu>
  <mirrorList>
    <!--ro, opt, array, 同源输出口列表, subType:object, range:[,]-->
    <outputId>
      <!--ro, opt, string, 同源输出口索引, range:[,]-->test
    </outputId>
  </mirrorList>
  <mode>
    <!--ro, opt, enum, 输出模式, subType:string, [close#关闭,clip#裁剪,scale#缩放,open#打开,SDI_1080P25#SDI_1080P25,HDMI_1080P#HDMI_1080P,HDMI_720P#HDMI_720P,HDMI_2160P#HDMI_2160P]-->close
  </mode>
  <resolution>
    <!--ro, opt, enum, 输出分辨率, subType:string, [1920*1080/60HZ#1920*1080/60HZ,1280*720/50HZ#1280*720/50HZ,1920*1080/60HZ#1920*1080/60HZ(1080P)]-->1920*1080/60HZ
  </resolution>
  <brightnessLevel>
    <!--ro, opt, int, 亮度, range:[0,100], step:, unit:, unitType:-->1
  </brightnessLevel>
  <contrastLevel>
    <!--ro, opt, int, 对比度, range:[0,100], step:, unit:, unitType:-->1
  </contrastLevel>
  <saturationLevel>
    <!--ro, opt, int, 饱和度, range:[0,100], step:, unit:, unitType:-->1
  </saturationLevel>
  <hueLevel>
    <!--ro, opt, int, 色调, range:[0,100], step:, unit:, unitType:-->1
  </hueLevel>
  <sharpnessLevel>
    <!--ro, opt, int, 锐度, range:[0,100], step:, unit:, unitType:-->1
  </sharpnessLevel>
</VideoOutputChannel>

447. 配置设备单个视频输出通道参数

44.1 命令

PUT /ISAPI/System/Video/outputs/channels/<channelID>

44.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoOutputChannel xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 视频输出索引, range:[,]-->test
  </id>
  <type>
    <!--req, enum, 输出视频类型, subType:string, [VGA#VGA,CVBS#CVBS,HDMI#HDMI,Spot#Spot,SDI#SDI,LCD#LCD]-->VGA
  </type>
  <menu>
    <!--opt, object, 目录信息-->
    <mirrorMenu>
      <!--req, bool, 是否同源-->true
    </mirrorMenu>
  </menu>
  <mirrorList>
    <!--opt, array, 同源输出口列表, subType:object, range:[,]-->
    <outputId>
      <!--opt, string, 同源输出口索引, range:[,]-->test
    </outputId>
  </mirrorList>
  <mode>
    <!--opt, enum, 输出模式, subType:string, [close#关闭,clip#裁剪,scale#缩放,open#打开,SDI_1080P25#SDI_1080P25,HDMI_1080P#HDMI_1080P,HDMI_720P#HDMI_720P,HDMI_2160P#HDMI_2160P]-->close
  </mode>
  <resolution>
    <!--opt, enum, 输出分辨率, subType:string, [1920*1080/60HZ#1920*1080/60HZ,1280*720/50HZ#1280*720/50HZ,1920*1080/60HZ(1080P)#1920*1080/60HZ(1080P)]-->1920*1080/60HZ
  </resolution>
  <brightnessLevel>
    <!--ro, opt, int, 亮度, range:[0,100], step:, unit:, unitType:-->1
  </brightnessLevel>
  <contrastLevel>
    <!--ro, opt, int, 对比度, range:[0,100], step:, unit:, unitType:-->1
  </contrastLevel>
  <saturationLevel>
    <!--ro, opt, int, 饱和度, range:[0,100], step:, unit:, unitType:-->1
  </saturationLevel>
  <hueLevel>
    <!--ro, opt, int, 色调, range:[0,100], step:, unit:, unitType:-->1
  </hueLevel>
  <sharpnessLevel>
    <!--ro, opt, int, 锐度, range:[0,100], step:, unit:, unitType:-->1
  </sharpnessLevel>
</VideoOutputChannel>

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

45. 获取设备所有视频输出通道参数

45.1 命令

GET /ISAPI/System/Video/outputs/channels

45.2 输入参数

无

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoOutputChannelList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 视频输出通道参数列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <VideoOutputChannel>
    <!--ro, opt, object, 视频输出通道参数-->
    <id>
      <!--ro, req, string, 视频输出索引, range:[,]-->test
    </id>
    <type>
      <!--ro, req, enum, 输出视频类型, subType:string, [VGA#VGA,CVBS#CVBS,HDMI#HDMI,Spot#Spot,SDI#SDI,LCD#LCD]-->VGA
    </type>
    <menu>
      <!--ro, opt, object, 目录信息-->
      <mirrorMenu>
        <!--ro, req, bool, 是否同源-->true
      </mirrorMenu>
    </menu>
    <mirrorList>
      <!--ro, opt, array, 同源输出口列表, subType:object, range:[,]-->
      <outputId>
        <!--ro, opt, string, 同源输出口索引, range:[,]-->test
      </outputId>
    </mirrorList>
    <mode>
      <!--ro, opt, enum, 输出模式, subType:string, [close#关闭,clip#裁剪,scale#缩放,open#打开,SDI_1080P25#SDI_1080P25,HDMI_1080P#HDMI_1080P,HDMI_720P#HDMI_720P,HDMI_2160P#HDMI_2160P]-->close
    </mode>
    <resolution>
      <!--ro, opt, enum, 输出分辨率, subType:string, [1920*1080/60HZ#1920*1080/60HZ,1280*720/50HZ#1280*720/50HZ,1920*1080/60HZ#1920*1080/60HZ(1080P)]-->1920*1080/60HZ
    </resolution>
  </VideoOutputChannel>
</VideoOutputChannelList>

46. 配置设备所有视频输出通道参数

46.1 命令

PUT /ISAPI/System/Video/outputs/channels

46.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoOutputChannelList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 未定义, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <VideoOutputChannel>
    <!--opt, object, 未定义-->
    <id>
      <!--req, string, 视频输出索引, range:[,]-->test
    </id>
    <type>
      <!--req, enum, 输出视频类型, subType:string, [VGA#VGA,CVBS#CVBS,HDMI#HDMI,Spot#Spot,SDI#SDI,LCD#LCD]-->VGA
    </type>
    <menu>
      <!--opt, object, 目录信息-->
      <mirrorMenu>
        <!--req, bool, 是否同源-->true
      </mirrorMenu>
    </menu>
    <mirrorList>
      <!--opt, array, 同源输出口列表, subType:object, range:[,]-->
      <outputId>
        <!--opt, string, 同源输出口索引, range:[,]-->test
      </outputId>
    </mirrorList>
    <mode>
      <!--opt, enum, 输出模式, subType:string, [close#关闭,clip#裁剪,scale#缩放,open#打开,SDI_1080P25#SDI_1080P25,HDMI_1080P#HDMI_1080P,HDMI_720P#HDMI_720P,HDMI_2160P#HDMI_2160P]-->close
    </mode>
    <resolution>
      <!--opt, enum, 输出分辨率, subType:string, [1920*1080/60HZ#1920*1080/60HZ,1280*720/50HZ#1280*720/50HZ,1920*1080/60HZ#1920*1080/60HZ(1080P)]-->1920*1080/60HZ
    </resolution>
  </VideoOutputChannel>
</VideoOutputChannelList>

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


云台和跟踪定位

1. 获取设备云台通道能力

1.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PTZChanelCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 设备云台通道能力, attr:version{req, string, 协议版本, range:[,]}-->
  <AbsolutePanTiltPositionSpace>
    <!--ro, opt, object, 绝对水平垂直范围-->
    <XRange>
      <!--ro, req, object, x轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </XRange>
    <YRange>
      <!--ro, req, object, y轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </YRange>
  </AbsolutePanTiltPositionSpace>
  <AbsoluteZoomPositionSpace>
    <!--ro, opt, object, 绝对缩放范围-->
    <ZRange>
      <!--ro, req, object, z轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </ZRange>
  </AbsoluteZoomPositionSpace>
  <RelativePanTiltSpace>
    <!--ro, opt, object, 相对云台范围-->
    <XRange>
      <!--ro, req, object, x轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </XRange>
    <YRange>
      <!--ro, req, object, y轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </YRange>
  </RelativePanTiltSpace>
  <RelativeZoomSpace>
    <!--ro, opt, object, 相对缩放范围-->
    <ZRange>
      <!--ro, req, object, z轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </ZRange>
  </RelativeZoomSpace>
  <ContinuousPanTiltSpace>
    <!--ro, opt, object, 连续云台范围-->
    <XRange>
      <!--ro, req, object, x轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </XRange>
    <YRange>
      <!--ro, req, object, y轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </YRange>
  </ContinuousPanTiltSpace>
  <ContinuousZoomSpace>
    <!--ro, req, object, 连续缩放范围-->
    <ZRange>
      <!--ro, req, object, z轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </ZRange>
  </ContinuousZoomSpace>
  <MomentaryPanTiltSpace>
    <!--ro, opt, object, 瞬时云台范围-->
    <XRange>
      <!--ro, req, object, x轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </XRange>
    <YRange>
      <!--ro, req, object, y轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </YRange>
  </MomentaryPanTiltSpace>
  <MomentaryZoomSpace>
    <!--ro, opt, object, 瞬间缩放范围-->
    <ZRange>
      <!--ro, req, object, z轴范围-->
      <Min>
        <!--ro, req, float, 最小值, range:[,], step:, unit:, unitType:-->0.000
      </Min>
      <Max>
        <!--ro, req, float, 最大值, range:[,], step:, unit:, unitType:-->1.000
      </Max>
    </ZRange>
  </MomentaryZoomSpace>
  <homePostionSupport>
    <!--ro, opt, bool, 是否支持初始位置-->true
  </homePostionSupport>
  <notSupportPTZContinuous>
    <!--ro, opt, bool, 支持的最大预置点个数, desc:不支持PTZ连续运动控制能力,对应的URL：/ISAPI/PTZCtrl/channels/<ID>/continuous-->true
  </notSupportPTZContinuous>
  <maxPresetNum>
    <!--ro, opt, int, 支持的最大预置点个数, range:[,], step:, unit:, unitType:-->1
  </maxPresetNum>
  <isSupportPresetPic>
    <!--ro, opt, bool, 是否支持预置点-->true
  </isSupportPresetPic>
  <maxPatrolNum>
    <!--ro, opt, int, 支持的最大巡航路径个数, range:[,], step:, unit:, unitType:-->1
  </maxPatrolNum>
  <maxPatternNum>
    <!--ro, opt, int, 支持的最大花样扫描路径个数, range:[,], step:, unit:, unitType:-->1
  </maxPatternNum>
  <maxLimitesNum>
    <!--ro, opt, int, 支持的最大限位个数, range:[,], step:, unit:, unitType:-->1
  </maxLimitesNum>
  <maxTimeTaskNum>
    <!--ro, opt, int, 支持的最大定时任务个数, range:[,], step:, unit:, unitType:-->1
  </maxTimeTaskNum>
  <serialNumber min="0" max="4">
    <!--ro, opt, int, 串口号, range:[0,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当前通道支持的485串口配置能力,min为最小串口,max为最大串口,若串口值为0时,表示未关联串口-->1
  </serialNumber>
  <controlProtocol opt="VIDO B-01,LG MULTIX,Samsung,SAE,YAAN-1,Tiandy,RedApple,PELCO-P,PELCO-D,TIANDY-PELCO-P,     TIANDY-PELCO-D,1602-PROTOCOL,IntegrativeP,SONY-EVI-D30/31,SONY-EVI-D70,SONY-EVI-D100/P,TCL-PELCO-P,TCL-PELCO-D,TC-PELCO-P,     TC-PELCO-D,Honeywell,Kony,YF-06,ADV,PIH-1016,YOULI,Infinovadcp001a,3609hd,A-01,AB-P,AB-D,ALSON,ANTEN,BBV-RS422,BEWATOR-PELCO-D,     KC3360S,LILIN,RM110,ACES,DSCP,PLD,HY,NITRO,PELCO-RS422TY,PHILPS-3,VC-2000PTC-C,LC-D2104,TIANMIN-PELCO-P,     TIANMIN-PELCO-D,Siemens,SPD-2200,DRAGON,TL-HHX2000,TL-PELCO-P,TL-V1200,VIDO B-02,NAIJIE,MAOWANG,SHINEI,YAAN-2,TECHWIN,PANASONIC_CS850,SUNELL,     KTD-348,VICON,KALATEL,PHILIPS,INFINOVA,VCL,HIKVISION,modbus-RTU,modbus-ASCII">
    <!--ro, opt, string, 云台控制协议, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:VIDO B-01,LG MULTIX,Samsung,SAE,YAAN-1,Tiandy,RedApple,PELCO-P,PELCO-D,TIANDY-PELCO-P,&#xA;    TIANDY-PELCO-D,1602-PROTOCOL,IntegrativeP,SONY-EVI-D30/31,SONY-EVI-D70,SONY-EVI-D100/P,TCL-PELCO-P,TCL-PELCO-D,TC-PELCO-P,&#xA;    TC-PELCO-D,Honeywell,Kony,YF-06,ADV,PIH-1016,YOULI,Infinovadcp001a,3609hd,A-01,AB-P,AB-D,ALSON,ANTEN,BBV-RS422,BEWATOR-PELCO-D,&#xA;    KC3360S,LILIN,RM110,ACES,DSCP,PLD,HY,NITRO,PELCO-RS422TY,PHILPS-3,VC-2000PTC-C,LC-D2104,TIANMIN-PELCO-P,&#xA;    TIANMIN-PELCO-D,Siemens,SPD-2200,DRAGON,TL-HHX2000,TL-PELCO-P,TL-V1200,VIDO B-02,NAIJIE,MAOWANG,SHINEI,YAAN-2,TECHWIN,PANASONIC_CS850,SUNELL,&#xA;    KTD-348,VICON,KALATEL,PHILIPS,INFINOVA,VCL,HIKVISION,modbus-RTU,modbus-ASCII,pelco-d,modbus-RTU、modbus-ASCII-->modbus-ASCII
  </controlProtocol>
  <controlAddress>
    <!--ro, opt, string, 地址位, range:[,]-->1
  </controlAddress>
  <PTZRs485Para>
    <!--ro, opt, object, 云台RS485参数能力-->
    <baudRate opt="2400,4800,9600,19200,38400">
      <!--ro, req, int, 波特率, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
    </baudRate>
    <dataBits opt="5,6,7,8">
      <!--ro, req, int, 数据位, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
    </dataBits>
    <parityType opt="none,even,odd,mark,space">
      <!--ro, req, string, 校验类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:none,even,odd,mark,space-->space
    </parityType>
    <stopBits opt="1,1.5,2">
      <!--ro, req, string, 停止位, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:1,1.5,2-->1
    </stopBits>
    <flowCtrl opt="none,software,hardware">
      <!--ro, req, string, 流控类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:none,software,hardware-->none
    </flowCtrl>
  </PTZRs485Para>
  <PresetNameCap>
    <!--ro, opt, object, 预置点名称能力-->
    <presetNameSupport>
      <!--ro, opt, bool, 是否支持预置点名称-->true
    </presetNameSupport>
    <maxPresetNameLen max="10">
      <!--ro, opt, int, 预置点名称长度, range:[,], step:, unit:, unitType:, attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </maxPresetNameLen>
    <specialNo opt="33,34,35,36,37,38,39,40,41,42,43,44,45,46,92,93,94,95,96,97,98,99,100,101,102,103,104,105">
      <!--ro, opt, int, 特殊预置点, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:33,34,35,36,37,38,39,40,41,42,43,44,45,46,92,93,94,95,96,97,98,99,100,101,102,103,104,105-->1
    </specialNo>
  </PresetNameCap>
  <isSupportPosition3D>
    <!--ro, opt, bool, 是否支持3D定位-->true
  </isSupportPosition3D>
  <isSupportManualTrack>
    <!--ro, opt, bool, 是否支持手动跟踪定位, desc:(/ISAPI/PTZCtrl/channels/<ID>/ManualTrace)-->true
  </isSupportManualTrack>
  <manualControlSpeed opt="compatible,pedestrian,nonMotorVehicle,motorVehicle,selfadaptive">
    <!--ro, opt, enum, 手动控制速度, subType:object, [compatible#兼容模式,pedestrian#行人,nonMotorVehicle#非机动车,motorVehicle#机动车,selfadaptive#自适应], attr:opt{req, string, 取值范围, range:[,]}-->compatible
  </manualControlSpeed>
  <isSpportPtzlimiteds>
    <!--ro, opt, bool, 是否支持云台限位-->true
  </isSpportPtzlimiteds>
  <ParkAction>
    <!--ro, opt, object, 守望行为-->
    <enabled>
      <!--ro, req, bool, 是否使能-->true
    </enabled>
    <Parktime min="1" max="10">
      <!--ro, req, int, 守望时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </Parktime>
    <Action>
      <!--ro, opt, object, 守望动作, desc:新增areaScan(区域扫描)-->
      <ActionType opt="atuoscan,framescan,randomscan,panoramascan,patrol,pattern,preset,areaScan,combinedPath,sceneTrace">
        <!--ro, opt, string, 类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:atuoscan,framescan,randomscan,panoramascan,patrol,pattern,preset,areaScan-->atuoscan
      </ActionType>
      <ActionNum min="0" max="255">
        <!--ro, req, int, 守望ID号, range:[0,255], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当守望动作是巡航,花样扫描或者预置点时被使用,若其他功能,则为0-->1
      </ActionNum>
      <ActionBindingCapList>
        <!--ro, opt, array, 事件类型能力列表, subType:object, range:[,]-->
        <ActionBindingCap>
          <!--ro, opt, object, 事件类型能力-->
          <ActionType>
            <!--ro, req, enum, 动作类型, subType:string, [autoscan#自动扫描,framescan#帧扫描,randomscan#随机扫描,panoramascan#全景扫描,patrol#巡查,pattern#花样扫描,preset#预置点扫描,areaScan#区域扫描,combinedPath#组合路径,sceneTrace#场景巡航]-->combinedPath
          </ActionType>
          <ActionNum min="0" max="255">
            <!--ro, opt, int, 守望ID号, range:[0,255], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </ActionNum>
          <eventType opt="thermalVehicleDetection,smokeAndFireDetection,wasteGasDetection,shipsDetection,behavior,AI,methaneConcentrationException">
            <!--ro, opt, enum, 事件类型, subType:string, [thermalVehicleDetection#热成像车辆检测,smokeAndFireDetection#烟火检测,wasteGasDetection#废气排放监测,shipsDetection#船只检测,behavior#异常行为识别,AI#AI检测(AI开放平台事件),methaneConcentrationException#甲烷浓度异常事件], attr:opt{req, string, 取值范围, range:[,]}-->thermalVehicleDetection
          </eventType>
        </ActionBindingCap>
      </ActionBindingCapList>
    </Action>
  </ParkAction>
  <TimeTaskList size="10">
    <!--ro, opt, array, 时间任务列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <enabled>
      <!--ro, req, bool, 是否使能-->true
    </enabled>
    <Parktime min="1" max="10">
      <!--ro, req, int, 停止时间, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </Parktime>
    <TimeTaskBlock>
      <!--ro, opt, object, 时间任务块-->
      <dayOfWeek>
        <!--ro, req, int, 周, range:[,], step:, unit:, unitType:, desc:ISO8601 weekday number,1=Monday-->1
      </dayOfWeek>
      <TimeTaskRange>
        <!--ro, opt, object, 时间任务范围-->
        <TaskID min="1" max="10">
          <!--ro, req, string, 任务ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->id
        </TaskID>
        <beginTime>
          <!--ro, req, time, 开始时间-->00:00:00+08:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->00:00:00+08:00
        </endTime>
        <Task>
          <!--ro, opt, object, 任务详情-->
          <TaskType opt="disable,autoscan,framescan,randomscan,panoramascan,patrol,pattern,preset,tiltscan,periodreboot,periodadjust,auxoutput,combinedPath,sceneTrace,focus">
            <!--ro, req, string, 类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:disable,autoscan,framescan,randomscan,panoramascan,patrol,pattern,preset,tiltscan,periodreboot,periodadjust,auxoutput,combinedPath,sceneTrace,focus-->disable
          </TaskType>
          <patrolTaskNum min="1" max="10">
            <!--ro, opt, int, 巡逻任务编号, range:[0,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </patrolTaskNum>
          <patternTaskNum min="1" max="10">
            <!--ro, opt, int, 图案任务编号, range:[0,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </patternTaskNum>
          <presetTaskNum min="1" max="10">
            <!--ro, opt, int, 预设任务编号, range:[0,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 预设任务编号, range:[0,8], step:, unit:, unitType:}-->1
          </presetTaskNum>
          <auxoutputTaskNum min="1" max="10">
            <!--ro, opt, int, 辅助输出任务编号, range:[0,8], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </auxoutputTaskNum>
          <TaskBindingCapList>
            <!--ro, opt, array, 任务绑定能力列表, subType:object, range:[,]-->
            <TaskBindingCap>
              <!--ro, opt, object, 任务绑定能力-->
              <TaskType>
                <!--ro, req, enum, 任务类型, subType:string, [autoscan#自动扫描,framescan#帧扫描,randomscan#随机扫描,panoramascan#全景扫描,patrol#巡查,pattern#花样扫描,combinedPath#组合路径,sceneTrace#场景巡航]-->combinedPath
              </TaskType>
              <TaskNum min="0" max="8">
                <!--ro, opt, int, 任务数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
              </TaskNum>
              <eventType opt="thermalVehicleDetection,smokeAndFireDetection,wasteGasDetection,shipsDetection,behavior,AI,methaneConcentrationException">
                <!--ro, opt, enum, 事件类型, subType:string, [thermalVehicleDetection#热成像车辆检测,smokeAndFireDetection#烟火检测,wasteGasDetection#废气排放监测,shipsDetection#船只检测,behavior#异常行为识别,AI#AI检测(AI开放平台事件),methaneConcentrationException#甲烷浓度异常事件], attr:opt{req, string, 取值范围, range:[,]}-->thermalVehicleDetection
              </eventType>
            </TaskBindingCap>
          </TaskBindingCapList>
        </Task>
      </TimeTaskRange>
    </TimeTaskBlock>
    <isSupportTimeTaskCopy>
      <!--ro, req, bool, 是否支持时间任务副本-->true
    </isSupportTimeTaskCopy>
  </TimeTaskList>
  <wiperStatusSupport>
    <!--ro, opt, bool, 是否支持雨刷图标刷动-->true
  </wiperStatusSupport>
  <Thermometry>
    <!--ro, opt, object, 测温法-->
    <maxThermometryPresetNum>
      <!--ro, opt, int, 最大温度计, range:[,], step:, unit:, unitType:-->500
    </maxThermometryPresetNum>
  </Thermometry>
  <isSpportPtzEagleFocusing>
    <!--ro, opt, bool, 是否支持鹰视聚焦功能-->true
  </isSpportPtzEagleFocusing>
  <TrackingRatio>
    <!--ro, opt, object, 跟踪倍率-->
    <coefficient min="1" max="10" default="5">
      <!--ro, opt, int, 倍率系数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, string, 未定义, range:[,]}-->1
    </coefficient>
  </TrackingRatio>
  <TrackInitPosition>
    <!--ro, opt, object, 跟踪初始位置-->
    <slaveCameraID>
      <!--ro, opt, int, 从摄像机ID, range:[,], step:, unit:, unitType:-->1
    </slaveCameraID>
  </TrackInitPosition>
  <isSupportAbsoluteEx>
    <!--ro, opt, bool, 是否支持PTZ绝对位置配置扩展支持能力-->true
  </isSupportAbsoluteEx>
  <isSupportCruise>
    <!--ro, opt, bool, 是否支持巡航模式配置-->true
  </isSupportCruise>
  <isSupportAreaScan>
    <!--ro, opt, bool, 是否支持区域扫描-->true
  </isSupportAreaScan>
  <isSupportOnepushSynchronizeFOV>
    <!--ro, opt, bool, 是否支持一键同步视场角, desc:支持返回true,不支持时不返回-->true
  </isSupportOnepushSynchronizeFOV>
  <isSupportManualWiper>
    <!--ro, opt, bool, 设备是否支持手动雨刷控制接口-->true
  </isSupportManualWiper>
  <isSupportLensCorrection>
    <!--ro, opt, bool, 是否支持镜头校验, desc:支持返回true,不支持时不返回-->true
  </isSupportLensCorrection>
  <isSupportFaceSnap3D>
    <!--ro, opt, bool, 是否支持手动人脸抓拍模式-->true
  </isSupportFaceSnap3D>
  <lockTime>
    <!--ro, opt, int, PTZ锁定时间能力, range:[,], step:, unit:s, unitType:时间-->3600
  </lockTime>
  <ManualPTZLockCap>
    <!--ro, opt, object, 当前通道手动PTZ控制锁定能力-->
    <lockStatus opt="lock,unlock">
      <!--ro, opt, enum, Ptz锁定状态, subType:object, [lock#锁定,unlock#不锁定], attr:opt{req, string, 取值范围, range:[,]}, desc:默认状态为锁定-->lock
    </lockStatus>
    <unLockTime>
      <!--ro, opt, int, 解锁剩余时间（即解锁状态下自动锁定时间为300s）, range:[,], step:, unit:, unitType:-->1
    </unLockTime>
    <isSupportHomePageDisplay>
      <!--ro, opt, bool, PTZ控制锁定是否支持web主界面显示, desc:当返回false或者未返回该节点则默认不在web主界面显示,当前仅甲烷检测IPD需在主界面显示的需求,该节点仅web需要使用-->true
    </isSupportHomePageDisplay>
  </ManualPTZLockCap>
  <isSupportPTZSave>
    <!--ro, opt, bool, 当前通道是否支持PTZ保持配置-->true
  </isSupportPTZSave>
  <isSupportPTZSaveGet>
    <!--ro, opt, bool, 当前通道是否支持PTZSave的get方式-->true
  </isSupportPTZSaveGet>
  <isSupportPTZTrackStatus>
    <!--ro, opt, bool, 是否支持PTZ跟踪联动状态获取-->true
  </isSupportPTZTrackStatus>
  <ptzctrlSupportSerialNumber opt="1,3">
    <!--ro, opt, string, 云台模式支持的485串口号范围, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->1,3
  </ptzctrlSupportSerialNumber>
  <LFPositionCap>
    <!--ro, opt, object, 主从联动标定位置转动能力-->
    <elevation>
      <!--ro, opt, int, 高度, range:[-900,2700], step:, unit:, unitType:-->1
    </elevation>
    <azimuth>
      <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->1
    </azimuth>
    <absoluteZoom>
      <!--ro, opt, int, 绝对缩放, range:[1,1000], step:, unit:, unitType:-->1
    </absoluteZoom>
  </LFPositionCap>
  <pqrsZoom min="1" max="10">
    <!--ro, opt, int, pqrs缩放, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </pqrsZoom>
  <mnstFocus min="1" max="10">
    <!--ro, opt, int, mnst焦点, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </mnstFocus>
  <DoubleMirror>
    <!--ro, opt, object, 双镜-->
    <enabled opt="true,fasle" def="false">
      <!--ro, req, bool, 是否使能, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->true
    </enabled>
  </DoubleMirror>
  <isSupportAutoGotoCfg>
    <!--ro, opt, bool, 当前通道是否支持自动恢复PTZ位置配置, desc:支持时返回true,不支持时不返回该字段-->true
  </isSupportAutoGotoCfg>
  <isSupportPTZCtrlStatus>
    <!--ro, opt, bool, 当前通道是否支持绝对值PTZ获取, desc:/ISAPI/PTZCtrl/channels/<ID>/status,（返回true一定支持,返回false不支持,不返回并不代表设备不支持)-->true
  </isSupportPTZCtrlStatus>
  <isSupportRatioCtrl>
    <!--ro, opt, bool, 是否支持倍率控制, desc:支持返回true,不支持不返回,/ISAPI/PTZCtrl/channels/<ID>ratioCtrl?format=json）-->true
  </isSupportRatioCtrl>
  <isSupportInitializationCtrl>
    <!--ro, opt, bool, 是否支持设备电机云台自检控制/ISAPI/PTZCtrl/channels/<ID>/initializationCtrl?format=json, desc:ISAPI/PTZCtrl/channels/<ID>/initializationCtrl?format=json-->true
  </isSupportInitializationCtrl>
  <isSupportComponentCtrl>
    <!--ro, opt, bool, 是否支持云台组件控制, desc:/ISAPI/PTZCtrl/channels/<ID>/componentCtrl?format=json-->true
  </isSupportComponentCtrl>
  <MoveAutoTracking>
    <!--ro, opt, object, 移动物体自动跟踪功能-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
  </MoveAutoTracking>
  <isSupportPtGreyDisplay>
    <!--ro, opt, bool, pt键控是否灰显, desc:支持时返回true,不支持时不返回该字段-->true
  </isSupportPtGreyDisplay>
  <isSupportTrackingRatioCfg>
    <!--ro, opt, bool, 是否支持跟踪参数配置-->true
  </isSupportTrackingRatioCfg>
  <isSupportOnepushfoucsStart>
    <!--ro, opt, bool, 是否支持辅助聚焦 , desc:/ISAPI/PTZCtrl/channels/1/onepushfoucs/start-->true
  </isSupportOnepushfoucsStart>
  <isSupportOnepushfoucsReset>
    <!--ro, opt, bool, 是否支持镜头初始化, desc:/ISAPI/PTZCtrl/channels/1/onepushfoucs/reset-->true
  </isSupportOnepushfoucsReset>
  <PTZAuxType opt="LIGHT,WIPER,FAN,HEATER">
    <!--ro, opt, enum, 云台辅助设备配置类型 , subType:string, [LIGHT#灯光,WIPER#刮雨器,FAN#风扇,HEATER#加热器], attr:opt{req, string, 取值范围, range:[,]}-->HEATER
  </PTZAuxType>
  <tilePositiveDirection>
    <!--ro, opt, enum, T值(垂直角度)正向, subType:string, [up#向上,down#向下], desc:不支持配置-->up
  </tilePositiveDirection>
  <isSupportOnePushFocus>
    <!--ro, opt, bool, 是否支持一键聚焦, desc:对应URL /ISAPI/PTZCtrl/channels/<ID>/onepushfoucs/start,本节点返回值为false时,表示设备不支持一键聚焦功能,节点不返回或者返回且值为true,表示设备支持一键聚焦-->true
  </isSupportOnePushFocus>
  <isSupportGPSCtrl>
    <!--ro, opt, bool, 不支持时不返回该字段）/ISAPI/PTZCtrl/channels/<ID>/GPS?format=json, desc:（支持时返回true,不支持时不返回该字段）/ISAPI/PTZCtrl/channels/<ID>/GPS?format=json-->true
  </isSupportGPSCtrl>
  <isSupportGyroVerify>
    <!--ro, opt, bool, 是否支持陀螺仪校准, desc:/ISAPI/PTZCtrl/channels/<ID>/gyroVerify?format=json-->true
  </isSupportGyroVerify>
  <isNotSupportPTZLimits>
    <!--ro, opt, bool, 是否支持PTZ限位功能, desc:设备不支持PTZ限位功能时返回true,设备支持PTZ限位时该节点不返回,PJ01PD20200326029_DF系列_H5_环动枪球一体机_产品项目去除PTZ限位功能,考虑老设备存在兼容性风险增加该节点-->true
  </isNotSupportPTZLimits>
  <PTPositiveDirection>
    <!--ro, opt, object, PT值正向参数, desc:当云台为三方云台时，需要支持云台正向可配置-->
    <pan opt="left,right">
      <!--ro, opt, enum, P值(水平角度)正向, subType:string, [left#向左,right#向右], attr:opt{req, string, 取值范围, range:[,]}-->left
    </pan>
    <tile opt="up,down">
      <!--ro, opt, enum, T值(垂直角度)正向, subType:string, [up#向上,down#向下], attr:opt{req, string, 取值范围, range:[,]}-->up
    </tile>
  </PTPositiveDirection>
  <PTZOSDDisplay>
    <!--ro, opt, object, PTZosd显示-->
    <zoomlable opt="2sec, 5sec, 10sec, alwaysclose, alwaysopen">
      <!--ro, req, string, 变倍进度条显示, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </zoomlable>
    <azimuth opt="2sec, 5sec, 10sec, alwaysclose, alwaysopen">
      <!--ro, req, string, 方向显示, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </azimuth>
    <presetlable opt="2sec, 5sec, 10sec, alwaysclose, alwaysopen">
      <!--ro, req, string, 显示设置标题显示, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </presetlable>
    <positionDisplayFormat opt="PT,direction">
      <!--ro, opt, enum, 方位角显示格式, subType:string, [PT#按PT显示,direction#按方向显示], attr:opt{req, string, 取值范围, range:[,]}-->PT
    </positionDisplayFormat>
    <actionStatusDisplayEnabled opt="true,fasle">
      <!--ro, opt, bool, 运动状态信息显示使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </actionStatusDisplayEnabled>
  </PTZOSDDisplay>
  <isSupportWiperPlan>
    <!--ro, opt, bool, 是否支持雨刷计划配置, desc:对应接口：/ISAPI/PTZCtrl/channels/<channelID>/wiperPlan?format=json-->true
  </isSupportWiperPlan>
  <continuousDefaultSpeed>
    <!--ro, opt, int, 手动云台控制默认速度值, range:[0,100], step:, unit:, unitType:, desc:设备不支持配置手动云台控制速度时返回该节点，对应/ISAPI/PTZCtrl/channels/<channelID>/continuous中的节点的速度取值-->1
  </continuousDefaultSpeed>
  <autoPanDefaultSpeed>
    <!--ro, opt, int, 自动云台控制默认速度值, range:[0,100], step:, unit:, unitType:, desc:设备不支持配置自动云台控制的速度时返回该节点，对应/ISAPI/PTZCtrl/channels/<channelID>/autoPan中的节点的速度取值-->1
  </autoPanDefaultSpeed>
  <isSupportManualWiperCleaning>
    <!--ro, opt, bool, 是否支持手动触发雨刷清洗, desc:对应接口：/ISAPI/PTZCtrl/channels/<channelID>/manualWiperCleaning?format=json-->true
  </isSupportManualWiperCleaning>
</PTZChanelCap>

2. 获取索尼坐标

2.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/zoomFocus

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ZoomFocus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 缩放焦点, attr:version{req, string, 协议版本, range:[,]}-->
  <pqrsZoom>
    <!--ro, opt, int, pqrs缩放, range:[,], step:, unit:, unitType:-->1
  </pqrsZoom>
  <mnstFocus>
    <!--ro, opt, int, mnst焦点, range:[,], step:, unit:, unitType:-->1
  </mnstFocus>
</ZoomFocus>

3. 配置索尼坐标

3.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/zoomFocus

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ZoomFocus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 缩放焦点, attr:version{req, string, 协议版本, range:[,]}-->
  <pqrsZoom>
    <!--ro, opt, int, pqrs缩放, range:[,], step:, unit:, unitType:-->1
  </pqrsZoom>
  <mnstFocus>
    <!--ro, opt, int, mnst焦点, range:[,], step:, unit:, unitType:-->1
  </mnstFocus>
</ZoomFocus>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取高精度绝对PTZ运动控制能力

4.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/absoluteEx/capabilities

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PTZAbsoluteEx xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, PTZ绝对参数, attr:version{req, string, 协议版本, range:[,]}-->
  <elevation min="-90.000" max="270.000">
    <!--ro, opt, float, 垂直转动角度范围, range:[-90.000,270.000], step:0.001, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
  </elevation>
  <azimuth min="0" max="360.000">
    <!--ro, opt, float, 水平转动角度范围, range:[0,360.000], step:0.001, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
  </azimuth>
  <absoluteZoom min="0" max="10000.00">
    <!--ro, opt, float, 变倍范围, range:[0,10000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </absoluteZoom>
  <focus min="1" max="100000">
    <!--ro, opt, int, 聚焦范围, range:[1,10000], step:1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </focus>
  <focalLen min="1" max="100000">
    <!--ro, opt, int, 焦距范围, range:[1,100000], step:1, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </focalLen>
  <horizontalSpeed min="0" max="1000.00">
    <!--ro, opt, float, 水平转动速度, range:[0,1000.00], step:0.01, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.00
  </horizontalSpeed>
  <verticalSpeed min="0" max="1000.00">
    <!--ro, opt, float, 垂直转动速度, range:[0,1000.00], step:0.01, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.00
  </verticalSpeed>
  <zoomType opt="absoluteZoom,focalLen">
    <!--ro, opt, enum, 镜头变倍配置类型, subType:string, [absoluteZoom#绝对变焦,focalLen#焦距变焦], attr:opt{req, string, 取值范围, range:[,]}-->absoluteZoom
  </zoomType>
  <objectDistance min="1" max="100000.0">
    <!--ro, opt, float, 物距, range:[1,100000.0], step:, unit:m, unitType:长度, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </objectDistance>
  <lookDownUpAngle min="-180.00" max="180.00">
    <!--ro, opt, float, 设备高精度俯仰角, range:[-180.00,180.00], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:该俯仰角由安装在设备上的传感器测得，以水平线为基准，精度较高；而设备T值是以设备自身为基准，是通过电机步数确定的，电机容易失步，精度很低。该字段只能获取，不能配置-->0.00
  </lookDownUpAngle>
  <isContinuousTrackingEnabled>
    <!--ro, opt, bool, 是否开启持续跟踪模式-->true
  </isContinuousTrackingEnabled>
</PTZAbsoluteEx>

5. 获取高精度绝对PTZ运动控制参数

5.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/absoluteEx

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PTZAbsoluteEx xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, PTZ绝对参数, attr:version{req, string, 协议版本, range:[,]}-->
  <elevation>
    <!--ro, opt, float, 垂直转动角度范围, range:[-90.000,270.000], step:0.001, unit:, unitType:-->0.000
  </elevation>
  <azimuth>
    <!--ro, opt, float, 水平转动角度范围, range:[0,360.000], step:0.001, unit:, unitType:-->0.000
  </azimuth>
  <absoluteZoom>
    <!--ro, opt, float, 变倍范围, range:[0,10000], step:, unit:, unitType:-->0
  </absoluteZoom>
  <focus>
    <!--ro, opt, int, 聚焦范围, range:[1,100000], step:1, unit:, unitType:-->1
  </focus>
  <focalLen>
    <!--ro, opt, int, 焦距范围, range:[1,100000], step:1, unit:mm, unitType:-->1
  </focalLen>
  <horizontalSpeed>
    <!--ro, opt, float, 水平转动速度, range:[0,1000.00], step:0.01, unit:, unitType:-->0.00
  </horizontalSpeed>
  <verticalSpeed>
    <!--ro, opt, float, 垂直转动速度, range:[0,1000.00], step:0.01, unit:, unitType:-->0.00
  </verticalSpeed>
  <zoomType>
    <!--ro, opt, enum, 镜头变倍配置类型, subType:string, [absoluteZoom#绝对变焦,focalLen#焦距变焦]-->absoluteZoom
  </zoomType>
  <objectDistance>
    <!--ro, opt, float, 物距, range:[1,100000.0], step:, unit:m, unitType:长度-->1
  </objectDistance>
  <lookDownUpAngle>
    <!--ro, opt, float, 设备高精度俯仰角, range:[-180.00,180.00], step:, unit:, unitType:, desc:该俯仰角由安装在设备上的传感器测得，以水平线为基准，精度较高；而设备T值是以设备自身为基准，是通过电机步数确定的，电机容易失步，精度很低。该字段只能获取，不能配置,保留两位小数-->0.00
  </lookDownUpAngle>
  <isContinuousTrackingEnabled>
    <!--ro, opt, bool, 是否开启持续跟踪模式, desc:开启后，下发第二次位置信息，云台不停止，按趋势转动到第二次目标位置（一般应用于目标跟踪，对转动平稳度要求较高）-->true
  </isContinuousTrackingEnabled>
</PTZAbsoluteEx>

6. 配置高精度绝对PTZ运动控制参数

6.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/absoluteEx

6.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PTZAbsoluteEx xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, PTZ绝对参数, attr:version{req, string, 协议版本, range:[,]}-->
  <elevation>
    <!--opt, float, 垂直转动角度范围, range:[-90.000,270.000], step:0.001, unit:, unitType:-->0.000
  </elevation>
  <azimuth>
    <!--opt, float, 水平转动角度范围, range:[0,360.000], step:0.001, unit:, unitType:-->0.000
  </azimuth>
  <absoluteZoom>
    <!--opt, float, 变倍范围, range:[0,10000], step:, unit:, unitType:-->0
  </absoluteZoom>
  <focus>
    <!--opt, int, 聚焦范围, range:[1,100000], step:1, unit:, unitType:-->1
  </focus>
  <focalLen>
    <!--opt, int, 焦距范围, range:[1,100000], step:1, unit:mm, unitType:-->1
  </focalLen>
  <horizontalSpeed>
    <!--opt, float, 水平转动速度, range:[0,1000.00], step:0.01, unit:, unitType:-->0.00
  </horizontalSpeed>
  <verticalSpeed>
    <!--opt, float, 垂直转动速度, range:[0,1000.00], step:0.01, unit:, unitType:-->0.00
  </verticalSpeed>
  <zoomType>
    <!--opt, enum, 镜头变倍配置类型, subType:string, [absoluteZoom#绝对变焦,focalLen#焦距变焦]-->absoluteZoom
  </zoomType>
  <objectDistance>
    <!--opt, float, 物距, range:[1,100000.0], step:, unit:m, unitType:长度-->1
  </objectDistance>
  <isContinuousTrackingEnabled>
    <!--opt, bool, 是否开启持续跟踪模式, desc:开启后，下发第二次位置信息，云台不停止，按趋势转动到第二次目标位置（一般应用于目标跟踪，对转动平稳度要求较高）-->true
  </isContinuousTrackingEnabled>
</PTZAbsoluteEx>

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

7. 获取鹰式聚焦能力

7.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing/capabilities

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EagleFocusing xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 鹰式聚焦参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,]-->test
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 开始标定使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <EagleFocusingRegionList>
    <!--ro, opt, object, 鹰式聚焦区域列表-->
    <EagleFocusingRegion>
      <!--ro, opt, object, 鹰式聚焦区域-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <sid>
        <!--ro, opt, string, 场景ID, range:[,]-->test
      </sid>
      <rate>
        <!--ro, opt, int, 倍率, range:[,], step:, unit:, unitType:-->1
      </rate>
      <spotNum>
        <!--ro, opt, int, 标定线上取点个数, range:[,], step:, unit:, unitType:-->1
      </spotNum>
      <type>
        <!--ro, req, enum, 区域类型, subType:string, [line#线]-->line
      </type>
      <Region>
        <!--ro, opt, object, 区域-->
        <RegionCoordinatesList size="2">
          <!--ro, opt, array, 区域点信息列表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:坐标点个数通过type字段值判断,line为2个点-->
          <RegionCoordinates>
            <!--ro, opt, object, 区域点信息, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
    </EagleFocusingRegion>
  </EagleFocusingRegionList>
  <sceneNum min="1" max="10">
    <!--ro, opt, int, 最大支持的场景数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </sceneNum>
  <isSupportSceneGoto opt="true,false">
    <!--ro, opt, bool, 是否支持转向指定场景, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isSupportSceneGoto>
  <rate min="1" max="10">
    <!--ro, opt, int, 倍率, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </rate>
  <spotNum min="1" max="10">
    <!--ro, opt, int, 标定线上取点个数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </spotNum>
  <onlyReadParam opt="rate,spotNum">
    <!--ro, opt, string, 只读参数, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </onlyReadParam>
  <isSupportAuto opt="true,false">
    <!--ro, req, bool, 是否支持鹰视聚焦自动标定, attr:opt{req, string, 取值范围, range:[,]}, desc:对应/ISAPI/PTZCtrl/channels/<ID>/EagleFocusing/auto?format=json-->true
  </isSupportAuto>
</EagleFocusing>

8. 获取鹰式聚焦参数

8.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EagleFocusing xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 鹰式聚焦配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, ID, range:[,]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能, desc:true 表示开始标定,false终止标定(该节点设置时有效,get是无效)-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, req, object, 标准屏幕尺寸-->
    <normalizedScreenWidth>
      <!--ro, req, int, 宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <EagleFocusingRegionList>
    <!--ro, opt, array, 鹰焦点区域列表, subType:object, range:[,]-->
    <EagleFocusingRegion>
      <!--ro, opt, object, 鹰焦点区域-->
      <id>
        <!--ro, req, string, ID, range:[,]-->test
      </id>
      <sid>
        <!--ro, opt, string, 场景ID, range:[,]-->test
      </sid>
      <rate>
        <!--ro, opt, int, 倍率, range:[,], step:, unit:, unitType:-->1
      </rate>
      <spotNum>
        <!--ro, opt, int, 点, range:[,], step:, unit:, unitType:, desc:在标定线上取多少个点,设备进行标定-->1
      </spotNum>
      <type>
        <!--ro, req, enum, 区域类型, subType:string, [line#line], desc:表示区域类型,目前只支持lin-->line
      </type>
      <Region>
        <!--ro, req, object, 地区-->
        <RegionCoordinatesList size="2">
          <!--ro, opt, array, 区域坐标表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:坐标点个数通过type字段值判断,line为2个点-->
          <RegionCoordinates>
            <!--ro, req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--ro, req, int, x轴, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--ro, req, int, y轴, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
    </EagleFocusingRegion>
  </EagleFocusingRegionList>
</EagleFocusing>

9. 配置鹰式聚焦参数

9.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EagleFocusing xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 鹰式聚焦配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, ID, range:[,]-->test
  </id>
  <enabled>
    <!--req, bool, 使能, desc:true 表示开始标定,false终止标定(该节点设置时有效,get是无效)-->true
  </enabled>
  <normalizedScreenSize>
    <!--req, object, 标准屏幕尺寸-->
    <normalizedScreenWidth>
      <!--req, int, 宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <EagleFocusingRegionList>
    <!--opt, array, 鹰焦点区域列表, subType:object, range:[,]-->
    <EagleFocusingRegion>
      <!--opt, object, 鹰焦点区域-->
      <id>
        <!--req, string, ID, range:[,]-->test
      </id>
      <sid>
        <!--opt, string, 场景ID, range:[,]-->test
      </sid>
      <rate>
        <!--opt, int, 倍率, range:[,], step:, unit:, unitType:-->1
      </rate>
      <spotNum>
        <!--opt, int, 点, range:[,], step:, unit:, unitType:, desc:在标定线上取多少个点,设备进行标定-->1
      </spotNum>
      <type>
        <!--req, enum, 区域类型, subType:string, [line#line], desc:表示区域类型,目前只支持lin-->line
      </type>
      <Region>
        <!--req, object, 地区-->
        <RegionCoordinatesList size="2">
          <!--opt, array, 区域坐标表, subType:object, range:[0,2], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:坐标点个数通过type字段值判断,line为2个点-->
          <RegionCoordinates>
            <!--req, object, 区域坐标, desc:屏幕左下角为坐标原点-->
            <positionX>
              <!--req, int, x轴, range:[0,1000], step:, unit:, unitType:-->1
            </positionX>
            <positionY>
              <!--req, int, y轴, range:[0,1000], step:, unit:, unitType:-->1
            </positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </Region>
    </EagleFocusingRegion>
  </EagleFocusingRegionList>
</EagleFocusing>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取鹰式聚焦控制能力

10.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing/control/capabilities

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Control xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 鹰式聚焦控制能力, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}, desc:false表示关闭鹰视聚焦功能, true表示开启鹰视聚焦功能-->true
  </enabled>
  <HeightCompensation>
    <!--ro, req, object, 鹰视聚焦高度补偿-->
    <compensationEnabled opt="true,false">
      <!--ro, req, bool, 高度补偿使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </compensationEnabled>
    <compensationValue min="1" max="5">
      <!--ro, req, int, 补偿值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:3代全局暂不实现-->1
    </compensationValue>
  </HeightCompensation>
</Control>

11. 获取鹰式聚焦控制

11.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing/control

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Control xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 鹰式聚焦控制, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能, desc:false表示关闭鹰视聚焦功能,true表示开启鹰视聚焦功能-->true
  </enabled>
  <HeightCompensation>
    <!--ro, req, object, 鹰视聚焦高度补偿-->
    <compensationEnabled>
      <!--ro, req, bool, 高度补偿使能, desc:默认关闭-->false
    </compensationEnabled>
    <compensationValue>
      <!--ro, req, int, 补偿值, range:[1,5], step:, unit:, unitType:, desc:每个值表示0.5米(3代全局暂不实现)-->1
    </compensationValue>
  </HeightCompensation>
</Control>

12. 配置鹰式聚焦控制

12.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing/control

12.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Control xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 鹰式聚焦控制, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能, desc:false表示关闭鹰视聚焦功能,true表示开启鹰视聚焦功能-->true
  </enabled>
  <HeightCompensation>
    <!--ro, req, object, 鹰视聚焦高度补偿-->
    <compensationEnabled>
      <!--ro, req, bool, 高度补偿使能, desc:默认关闭-->false
    </compensationEnabled>
    <compensationValue>
      <!--ro, req, int, 补偿值, range:[1,5], step:, unit:, unitType:, desc:每个值表示0.5米(3代全局暂不实现)-->1
    </compensationValue>
  </HeightCompensation>
</Control>

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

13. 获取鹰视聚焦自动标定能力

13.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing/auto/capabilities?format=json

13.2 输入参数

无

13.3 输出参数

{
    "AutoEagleFocusingCap": {
    /*ro, req, object, 鹰视聚焦自动标定能力*/
        "EagleFocusingRegion": {
        /*ro, opt, object, 鹰视聚焦自动标定*/
            "sid": {
            /*ro, opt, object, 场景ID*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  2
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "spotNum": {
            /*ro, opt, object, 点*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  64
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "type": {
            /*ro, opt, object, 区域类型, desc:在标定线上取多少个点,设备进行标定*/
                "@opt":  "line"
                /*ro, opt, string, 可选值, range:[,], desc:表示区域类型,目前只支持line*/
            },
            "RegionCap": {
            /*ro, opt, object, 规则区域边个数能*/
                "minSize":  3,
                /*ro, req, int, 规则区域边最小个数能力, range:[,], step:, unit:, unitType:*/
                "maxSize":  10,
                /*ro, req, int, 规则区域边最大个数能力, range:[,], step:, unit:, unitType:*/
                "x": {
                /*ro, req, object, x坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, opt, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, opt, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                },
                "y": {
                /*ro, req, object, y坐标, desc:屏幕左下角为坐标原点*/
                    "@min":  0.000,
                    /*ro, opt, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "@max":  1.000,
                    /*ro, opt, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                    "#text":  0.120
                    /*ro, opt, float, 示例值, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            },
            "AbsoluteHighCap": {
            /*ro, opt, object, 仰角*/
                "elevation": {
                /*ro, opt, object, 仰角*/
                    "@min":  -900,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  2700
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "azimuth": {
                /*ro, opt, object, 方位角*/
                    "@min":  0,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  3600
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                },
                "absoluteZoom": {
                /*ro, opt, object, 变倍倍率*/
                    "@min":  1,
                    /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                    "@max":  1000
                    /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
                }
            }
        }
    }
}

14. 获取鹰视聚焦自动标定

14.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/EagleFocusing/auto?format=json

14.2 输入参数

无

14.3 输出参数

{
    "AutoEagleFocusing": {
    /*ro, req, object, 鹰视聚焦自动标定*/
        "EagleFocusingRegion": [
        /*ro, opt, array, 鹰视聚焦自动标定列表, subType:object, range:[,]*/
            {
                "sid":  1,
                /*ro, opt, int, 场景ID, range:[,], step:, unit:, unitType:*/
                "spotNum":  4,
                /*ro, opt, int, 点, range:[,], step:, unit:, unitType:, desc:在标定线上取多少个点,设备进行标定*/
                "type":  "line",
                /*ro, opt, enum, 类型, subType:string, [line#区域类型], desc:目前只支持line*/
                "Region": [
                /*ro, opt, array, 区域列表, subType:object, range:[0,2], desc:坐标点个数通过type字段值判断,line为2个点,屏幕左下角为坐标原点*/
                    {
                        "x":  0.120,
                        /*ro, opt, float, x, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.120
                        /*ro, opt, float, y, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "AbsoluteHigh": {
                /*ro, opt, object, PTZ位*/
                    "elevation":  11,
                    /*ro, opt, int, 仰角, range:[,], step:, unit:, unitType:*/
                    "azimuth":  22,
                    /*ro, opt, int, 方位角, range:[,], step:, unit:, unitType:*/
                    "absoluteZoom":  1
                    /*ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:*/
                }
            }
        ]
    }
}

15. 获取全景图像Sensor能力

15.1 命令

GET /ISAPI/Panorama/sensor/capabilities

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SensorCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, sensor能力, attr:version{req, string, 协议版本, range:[,]}-->
  <maxSensorNum>
    <!--ro, opt, int, 最大支持的sensor数, range:[,], step:, unit:, unitType:-->1
  </maxSensorNum>
  <isSupportMosaicPattern>
    <!--ro, opt, bool, 是否支持全景拼接模式-->true
  </isSupportMosaicPattern>
  <isSupportReset>
    <!--ro, opt, bool, 是否支持全部sensor重置-->true
  </isSupportReset>
  <isSupportSingleReset>
    <!--ro, opt, bool, 是否支持单个sensor重置-->true
  </isSupportSingleReset>
  <R min="1" max="10">
    <!--ro, opt, int, 红色, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </R>
  <G min="1" max="10">
    <!--ro, opt, int, 绿色, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </G>
  <B min="1" max="10">
    <!--ro, opt, int, 蓝色, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </B>
  <isSupportChannelsSplicingMode>
    <!--ro, opt, bool, 是否支持360度全景通道间拼接模式, desc:/ISAPI/Panorama/channelsSplicingMode/capabilities?format=json-->true
  </isSupportChannelsSplicingMode>
</SensorCap>

16. 获取Sensor调整参数

16.1 命令

GET /ISAPI/Panorama/sensor/<sensorID>/continuous

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SensorAdjustment xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, sensor调整参数, attr:version{req, string, 协议版本, range:[,]}-->
  <pan>
    <!--ro, opt, int, 上下, range:[-100,100], step:, unit:, unitType:-->1
  </pan>
  <tilt>
    <!--ro, opt, int, 左右, range:[-100,100], step:, unit:, unitType:-->1
  </tilt>
  <rotation>
    <!--ro, opt, int, 旋转节点, range:[-30,30], step:, unit:, unitType:-->1
  </rotation>
  <fieldAngle>
    <!--ro, opt, int, 图像视场角, range:[-10,10], step:, unit:, unitType:-->1
  </fieldAngle>
  <R>
    <!--ro, opt, int, 红色, range:[0,100], step:, unit:, unitType:-->1
  </R>
  <G>
    <!--ro, opt, int, 绿色, range:[0,100], step:, unit:, unitType:-->1
  </G>
  <B>
    <!--ro, opt, int, 蓝色, range:[0,100], step:, unit:, unitType:-->1
  </B>
</SensorAdjustment>

17. 配置Sensor调整参数

17.1 命令

PUT /ISAPI/Panorama/sensor/<sensorID>/continuous

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SensorAdjustment xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, sensor调整参数, attr:version{req, string, 协议版本, range:[,]}-->
  <pan>
    <!--opt, int, 上下, range:[-100,100], step:, unit:, unitType:-->1
  </pan>
  <tilt>
    <!--opt, int, 左右, range:[-100,100], step:, unit:, unitType:-->1
  </tilt>
  <rotation>
    <!--opt, int, 旋转节点, range:[-30,30], step:, unit:, unitType:-->1
  </rotation>
  <fieldAngle>
    <!--opt, int, 图像视场角, range:[-10,10], step:, unit:, unitType:-->1
  </fieldAngle>
  <R>
    <!--opt, int, 红色, range:[0,100], step:, unit:, unitType:-->1
  </R>
  <G>
    <!--opt, int, 绿色, range:[0,100], step:, unit:, unitType:-->1
  </G>
  <B>
    <!--opt, int, 蓝色, range:[0,100], step:, unit:, unitType:-->1
  </B>
</SensorAdjustment>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 配置Sensor复位

18.1 命令

PUT /ISAPI/Panorama/sensorReset

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

19. 获取主从跟踪能力

19.1 命令

GET /ISAPI/MasterSlaveTracking/capabilities

19.2 输入参数

无

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<MasterSlaveTrackingCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 主从跟踪能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportSlaveCameraCfg>
    <!--ro, opt, bool, 是否支持从相机配置-->true
  </isSupportSlaveCameraCfg>
  <isSupportSlaveCameraStatus>
    <!--ro, opt, bool, 是否支持从相机状态配置-->true
  </isSupportSlaveCameraStatus>
  <isSupportSlaveCameraTrackingRatio>
    <!--ro, opt, bool, 是否支持从相机倍率设置-->true
  </isSupportSlaveCameraTrackingRatio>
  <isSupportSlaveCameraTracking>
    <!--ro, opt, bool, 是否支持从相机跟踪-->true
  </isSupportSlaveCameraTracking>
  <isSupportLinkedTracking>
    <!--ro, opt, bool, 是否支持联动跟踪高级参数, desc:对应/ISAPI/MasterSlaveTracking/linkedTracking?format=json-->true
  </isSupportLinkedTracking>
</MasterSlaveTrackingCap>

20. 获取主相机跟踪参数能力

20.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/tracking/capabilities

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Tracking xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跟踪参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <mode opt="auto,manual">
    <!--ro, opt, enum, 模式, subType:string, [auto#自动,manual#手动], attr:opt{req, string, 取值范围, range:[,]}-->auto
  </mode>
  <trackingTime min="0" max="60" def="5">
    <!--ro, opt, int, 跟踪时间, range:[0,60], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->0
  </trackingTime>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化参数-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ManualRegionCoordinatesList min="4" size="4">
    <!--ro, opt, array, 跟踪区域, subType:object, range:[0,4], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </ManualRegionCoordinatesList>
  <isNotSupportTrackingDisplay>
    <!--ro, req, bool, 是否不支持主从跟踪功能界面显示-->true
  </isNotSupportTrackingDisplay>
  <isSupportTrackingDisplay>
    <!--ro, req, bool, 是否支持主从跟踪功能界面显示-->true
  </isSupportTrackingDisplay>
  <Schedule>
    <!--ro, opt, object, 定时时间, desc:enabled使能时支持，不使能时灰显。如果使能时，无Schedule节点下发则设备端默认00:00-24:00-->
    <TimeRange>
      <!--ro, opt, object, 时间段-->
      <beginTime>
        <!--ro, opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, opt, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
</Tracking>

21. 获取跟踪使能时间参数

21.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/tracking

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Tracking xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 跟踪使能时间参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能, desc:教育球不支持配置该节点,默认开启,界面不显示-->true
  </enabled>
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [auto#自动,manual#手动]-->auto
  </mode>
  <trackingTime>
    <!--ro, opt, int, 跟踪时间, range:[0,60], step:, unit:s, unitType:时间-->0
  </trackingTime>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ManualRegionCoordinatesList min="4" max="4">
    <!--ro, opt, array, 手动区域坐标列表, subType:object, range:[0,4], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:矩形-->
    <RegionCoordinates>
      <!--ro, opt, object, 手动区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </ManualRegionCoordinatesList>
  <manualLinkageEnabled>
    <!--ro, opt, bool, 手动联动使能-->true
  </manualLinkageEnabled>
  <Schedule>
    <!--ro, opt, object, 定时时间-->
    <TimeRange>
      <!--ro, opt, object, 时间段-->
      <beginTime>
        <!--ro, opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, opt, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
</Tracking>

22. 配置跟踪使能时间参数

22.1 命令

PUT /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/tracking

22.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Tracking xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 跟踪使能时间参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能, desc:教育球不支持配置该节点,默认开启,界面不显示-->true
  </enabled>
  <mode>
    <!--opt, enum, 模式, subType:string, [auto#自动,manual#手动]-->auto
  </mode>
  <trackingTime>
    <!--opt, int, 跟踪时间, range:[0,60], step:, unit:s, unitType:时间-->0
  </trackingTime>
  <normalizedScreenSize>
    <!--req, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高, range:[0,1000], step:, unit:, unitType:-->0
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <ManualRegionCoordinatesList min="4" max="4">
    <!--opt, array, 手动区域坐标列表, subType:object, range:[0,4], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:矩形-->
    <RegionCoordinates>
      <!--opt, object, 手动区域坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
      </positionY>
    </RegionCoordinates>
  </ManualRegionCoordinatesList>
  <manualLinkageEnabled>
    <!--opt, bool, 手动联动使能-->true
  </manualLinkageEnabled>
  <Schedule>
    <!--opt, object, 定时时间-->
    <TimeRange>
      <!--opt, object, 时间段-->
      <beginTime>
        <!--opt, datetime, 开始时间-->1970-01-01T00:00:00+08:00
      </beginTime>
      <endTime>
        <!--opt, datetime, 结束时间-->1970-01-01T00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
</Tracking>

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

23. 获取从相机配置和标定能力

23.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCameraCalibrating/capabilities

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCameraCalibrating xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 从相机配置&标定参数, attr:version{req, string, 协议版本, range:[,]}-->
  <CalibratingMode opt="auto,manual">
    <!--ro, req, enum, 标定模式, subType:string, [auto#自动,manual#手动], attr:opt{req, string, 取值范围, range:[,]}-->auto
  </CalibratingMode>
  <trackingRatio opt="support">
    <!--ro, opt, enum, 是否支持配置跟踪倍率, subType:string, [support#支持], attr:opt{req, string, 取值范围, range:[,]}-->support
  </trackingRatio>
  <normalizedScreenSize>
    <!--ro, req, object, 归一化参数-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽, range:[0,1000], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高, range:[0,1000], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <CalibratingList min="4" max="6">
    <!--ro, opt, array, 标定信息列表, subType:object, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->
    <Calibrating>
      <!--ro, opt, object, 标定信息-->
      <id min="1" max="6">
        <!--ro, req, string, 索引, range:[1,6], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </id>
      <CalibratingCoordinates>
        <!--ro, opt, object, 标定点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </CalibratingCoordinates>
      <AbsoluteHigh>
        <!--ro, opt, object, PTZ绝对位置-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </AbsoluteHigh>
      <LFPosition>
        <!--ro, opt, object, 主从联动标定位置信息, desc:此信息专门为主从标定使用,设备会兼容之前的行为,原先的ptz位置信息也会同时返回。新增该位置信息是为了解决PTZ位置会受零方位角以及变焦标定的影响而造成标定不准确的问题。用户配置时可以选择性的使用<AbsoluteHigh>或者<LFPosition>其中一个即可。-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </LFPosition>
    </Calibrating>
  </CalibratingList>
  <ManualTrackRatio>
    <!--ro, opt, object, 手动跟踪倍率-->
    <coefficient>
      <!--ro, opt, int, 系数, range:[1,60], step:, unit:, unitType:-->1
    </coefficient>
  </ManualTrackRatio>
  <sceneID min="0" max="10">
    <!--ro, opt, int, 场景, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:小鹰眼设备支持（通过图片做标定时用到）(大鹰眼也涉及)-->0
  </sceneID>
  <CalibPanoramicPic>
    <!--ro, opt, bool, 重新获取设备标定图片, desc:非Flash图片中-->true
    <channel opt="2,3">
      <!--ro, req, string, 通道号, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </channel>
  </CalibPanoramicPic>
  <autoCalibratingNoReboot>
    <!--ro, opt, bool, 是否不需要重启, desc:返回true时代表自动标定后设备不需求重启能力；若不返回该节点代表设备需求重启-->true
  </autoCalibratingNoReboot>
  <isSupportOneTouchCalibrating>
    <!--ro, opt, bool, 是否支持一键标定, desc:默认支持，不支持返回false。一键标定：集成方自动调用从相机标定协议完成从相机全部场景的标定，若某场景标定失败，一键标定终止。从相机标定涉及的协议：/ISAPI/MasterSlaveTracking/channels/<channelID>/scene/<SID>/gotoScene,/ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/calibrating/<SID>/scene-->false
  </isSupportOneTouchCalibrating>
</SlaveCameraCalibrating>

24. 获取从相机标定参数

24.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/calibrating

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCameraCalibrating xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 从相机标定参数, attr:version{req, string, 协议版本, range:[,]}-->
  <calibratingMode>
    <!--ro, req, enum, 标定模式, subType:string, [auto#自动,manual#手动]-->auto
  </calibratingMode>
  <ManualCalibratingList>
    <!--ro, opt, array, 手动标定参数列表, subType:object, range:[,]-->
    <ManualCalibrating>
      <!--ro, opt, object, 手动标定参数-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <normalizedScreenSize>
        <!--ro, req, object, 归一化坐标-->
        <normalizedScreenWidth>
          <!--ro, req, int, 归一化坐标宽, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenWidth>
        <normalizedScreenHeight>
          <!--ro, req, int, 归一化坐标高, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenHeight>
      </normalizedScreenSize>
      <CalibratingCoordinates>
        <!--ro, opt, object, 标定点, desc:左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </CalibratingCoordinates>
      <AbsoluteHigh>
        <!--ro, opt, object, PTZ位置-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </AbsoluteHigh>
      <LFPosition>
        <!--ro, opt, object, 主从联动标定位置信息, desc:此信息专门为主从标定使用,设备会兼容之前的行为,原先的ptz位置信息也会同时返回。新增该位置信息是为了解决PTZ位置会受零方位角以及变焦标定的影响而造成标定不准确的问题。用户配置时可以选择性的使用AbsoluteHigh或者LFPosition其中一个即可。-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </LFPosition>
    </ManualCalibrating>
  </ManualCalibratingList>
  <AutoCalibratingList>
    <!--ro, opt, array, 自动标定参数列表, subType:object, range:[,]-->
    <AutoCalibrating>
      <!--ro, opt, object, 自动标定参数-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <normalizedScreenSize>
        <!--ro, req, object, 归一化坐标-->
        <normalizedScreenWidth>
          <!--ro, req, int, 归一化坐标宽, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenWidth>
        <normalizedScreenHeight>
          <!--ro, req, int, 归一化坐标高, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenHeight>
      </normalizedScreenSize>
      <CalibratingCoordinates>
        <!--ro, opt, object, 标定点, desc:左下角为坐标原点-->
        <positionX>
          <!--ro, req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--ro, req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </CalibratingCoordinates>
      <AbsoluteHigh>
        <!--ro, opt, object, PTZ位置-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </AbsoluteHigh>
      <LFPosition>
        <!--ro, opt, object, 主从联动标定位置信息, desc:此信息专门为主从标定使用,设备会兼容之前的行为,原先的ptz位置信息也会同时返回。新增该位置信息是为了解决PTZ位置会受零方位角以及变焦标定的影响而造成标定不准确的问题。用户配置时可以选择性的使用AbsoluteHigh或者LFPosition其中一个即可。-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </LFPosition>
    </AutoCalibrating>
  </AutoCalibratingList>
  <sceneID min="0" max="16">
    <!--ro, opt, int, 场景编号, range:[1,16], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </sceneID>
</SlaveCameraCalibrating>

25. 配置从相机标定参数

25.1 命令

PUT /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/calibrating

25.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCameraCalibrating xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 从相机标定参数, attr:version{req, string, 协议版本, range:[,]}-->
  <calibratingMode>
    <!--req, enum, 标定模式, subType:string, [auto#自动,manual#手动]-->auto
  </calibratingMode>
  <ManualCalibratingList>
    <!--opt, array, 手动标定参数列表, subType:object, range:[,]-->
    <ManualCalibrating>
      <!--opt, object, 手动标定参数-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <normalizedScreenSize>
        <!--req, object, 归一化坐标-->
        <normalizedScreenWidth>
          <!--req, int, 归一化坐标宽, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenWidth>
        <normalizedScreenHeight>
          <!--req, int, 归一化坐标高, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenHeight>
      </normalizedScreenSize>
      <CalibratingCoordinates>
        <!--opt, object, 标定点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </CalibratingCoordinates>
      <AbsoluteHigh>
        <!--opt, object, PTZ位置-->
        <elevation>
          <!--opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </AbsoluteHigh>
      <LFPosition>
        <!--opt, object, 主从联动标定位置信息, desc:此信息专门为主从标定使用,设备会兼容之前的行为,原先的ptz位置信息也会同时返回。新增该位置信息是为了解决PTZ位置会受零方位角以及变焦标定的影响而造成标定不准确的问题。用户配置时可以选择性的使用AbsoluteHigh或者LFPosition其中一个即可。-->
        <elevation>
          <!--opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </LFPosition>
    </ManualCalibrating>
  </ManualCalibratingList>
  <AutoCalibratingList>
    <!--opt, array, 自动标定参数列表, subType:object, range:[,]-->
    <AutoCalibrating>
      <!--opt, object, 自动标定参数-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <normalizedScreenSize>
        <!--req, object, 归一化坐标-->
        <normalizedScreenWidth>
          <!--req, int, 归一化坐标宽, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenWidth>
        <normalizedScreenHeight>
          <!--req, int, 归一化坐标高, range:[0,1000], step:, unit:, unitType:-->0
        </normalizedScreenHeight>
      </normalizedScreenSize>
      <CalibratingCoordinates>
        <!--opt, object, 标定点, desc:屏幕左下角为坐标原点-->
        <positionX>
          <!--req, int, x坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionX>
        <positionY>
          <!--req, int, y坐标, range:[0,1000], step:, unit:, unitType:-->0
        </positionY>
      </CalibratingCoordinates>
      <AbsoluteHigh>
        <!--opt, object, PTZ位置-->
        <elevation>
          <!--opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </AbsoluteHigh>
      <LFPosition>
        <!--opt, object, 主从联动标定位置信息, desc:此信息专门为主从标定使用,设备会兼容之前的行为,原先的ptz位置信息也会同时返回。新增该位置信息是为了解决PTZ位置会受零方位角以及变焦标定的影响而造成标定不准确的问题。用户配置时可以选择性的使用AbsoluteHigh或者LFPosition其中一个即可。-->
        <elevation>
          <!--opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:-->0
        </elevation>
        <azimuth>
          <!--opt, int, 方位角, range:[0,3600], step:, unit:, unitType:-->0
        </azimuth>
        <absoluteZoom>
          <!--opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:-->0
        </absoluteZoom>
      </LFPosition>
    </AutoCalibrating>
  </AutoCalibratingList>
  <sceneID min="0" max="16">
    <!--opt, int, 场景编号, range:[1,16], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
  </sceneID>
</SlaveCameraCalibrating>

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

26. 获取从相机手动跟踪倍率系数

26.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/manualTrackRatio

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualTrackRatio xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, req, object, 从相机手动跟踪倍率系数, attr:version{req, string, 协议版本, range:[,]}-->
  <coefficient>
    <!--ro, opt, int, 系数, range:[1,10], step:, unit:, unitType:-->1
  </coefficient>
</ManualTrackRatio>

27. 配置从相机手动跟踪倍率系数

27.1 命令

PUT /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/manualTrackRatio

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualTrackRatio xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 从相机手动跟踪倍率系数, attr:version{req, string, 协议版本, range:[,]}-->
  <coefficient>
    <!--opt, int, 系数, range:[1,10], step:, unit:, unitType:-->1
  </coefficient>
</ManualTrackRatio>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 配置主相机转向指定场景

28.1 命令

PUT /ISAPI/MasterSlaveTracking/channels/<channelID>/scene/<SID>/gotoScene

28.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

29. 获取从相机IP信息参数能力

29.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/capabilities

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCamera xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 从相机信息, attr:version{req, string, 协议版本, range:[,]}-->
  <SlaveCameraInfoList>
    <!--ro, opt, array, 从相机参数列表, subType:object, range:[,]-->
    <SlaveCameraInfo>
      <!--ro, opt, object, 从相机参数-->
      <id min="1" max="4">
        <!--ro, req, int, 索引, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </id>
      <serverAddress>
        <!--ro, opt, object, 地址信息-->
        <addressingFormatType opt="ipaddress,hostname">
          <!--ro, req, enum, 地址类型, subType:string, [ipaddress#ip地址,hostname#域名], attr:opt{req, string, 取值范围, range:[,]}-->ipaddress
        </addressingFormatType>
        <hostName max="128">
          <!--ro, opt, string, 域名, range:[0,128], dep:and,{$.SlaveCamera.SlaveCameraInfoList[*].SlaveCameraInfo.serverAddress.addressingFormatType,eq,hostname}, attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </hostName>
        <ipAddress>
          <!--ro, opt, string, IPv4地址, range:[0,32], dep:and,{$.SlaveCamera.SlaveCameraInfoList[*].SlaveCameraInfo.serverAddress.addressingFormatType,eq,ipaddress}-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, IPv6地址, range:[0,128], dep:and,{$.SlaveCamera.SlaveCameraInfoList[*].SlaveCameraInfo.serverAddress.addressingFormatType,eq,ipaddress}-->test
        </ipv6Address>
      </serverAddress>
      <userName max="32">
        <!--ro, req, string, 用户名, range:[1,32], attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </userName>
      <passWord max="16">
        <!--ro, req, string, 密码, range:[1,16], attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </passWord>
      <portNo min="0" max="65535">
        <!--ro, req, int, 端口号, range:[0,65535], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </portNo>
      <loginStatus opt="login,logout">
        <!--ro, req, enum, 登录状态, subType:string, [login#登录,logout#登出], attr:opt{req, string, 取值范围, range:[,]}-->login
      </loginStatus>
      <isSupportTrackRatio>
        <!--ro, opt, bool, 根据坐标获取倍率值and根据倍率值获取坐标, desc:对应URI：/ISAPI/MasterSlaveTracking/channels/<ID>/slaveCamera/<ID>/trackRatio,/ISAPI/MasterSlaveTracking/channels/<ID>/slaveCamera/<ID>/trackRatio?coefficient=-->true
      </isSupportTrackRatio>
      <isSupportGoToCenter>
        <!--ro, opt, bool, 是否支持跟踪到主相机中心位置-->true
      </isSupportGoToCenter>
    </SlaveCameraInfo>
  </SlaveCameraInfoList>
</SlaveCamera>

30. 获取从相机IP信息

30.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>

30.2 输入参数

无

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCameraInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 从相机IP信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 索引, range:[1,4], step:, unit:, unitType:-->0
  </id>
  <serverAddress>
    <!--ro, opt, object, 服务地址-->
    <addressingFormatType>
      <!--ro, req, enum, 地址类型, subType:string, [ipaddress#IP地址,hostname#主机名]-->ipaddress
    </addressingFormatType>
    <hostName>
      <!--ro, opt, string, 主机名, range:[1,128]-->test
    </hostName>
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[1,32]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[1,128]-->test
    </ipv6Address>
  </serverAddress>
  <userName>
    <!--ro, req, string, 用户名, range:[1,32]-->test
  </userName>
  <passWord>
    <!--ro, opt, string, 密码, range:[1,16]-->test
  </passWord>
  <portNo>
    <!--ro, req, int, 端口号, range:[0,65535], step:, unit:, unitType:-->0
  </portNo>
  <loginStatus>
    <!--ro, req, enum, 登录状态, subType:string, [login#登陆,logout#登出]-->login
  </loginStatus>
</SlaveCameraInfo>

31. 配置从相机IP信息

31.1 命令

PUT /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>

31.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCameraInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 从相机IP信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 索引, range:[1,4], step:, unit:, unitType:-->0
  </id>
  <serverAddress>
    <!--opt, object, 服务地址-->
    <addressingFormatType>
      <!--req, enum, 地址类型, subType:string, [ipaddress#IP地址,hostname#主机名]-->ipaddress
    </addressingFormatType>
    <hostName>
      <!--opt, string, 主机名, range:[1,128]-->test
    </hostName>
    <ipAddress>
      <!--opt, string, ipv4地址, range:[1,32]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[1,128]-->test
    </ipv6Address>
  </serverAddress>
  <userName>
    <!--req, string, 用户名, range:[1,32]-->test
  </userName>
  <passWord>
    <!--opt, string, 密码, range:[1,16]-->test
  </passWord>
  <portNo>
    <!--req, int, 端口号, range:[0,65535], step:, unit:, unitType:-->0
  </portNo>
  <loginStatus>
    <!--req, enum, 登录状态, subType:string, [login#登陆,logout#登出]-->login
  </loginStatus>
</SlaveCameraInfo>

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

32. 获取从相机连接状态信息

32.1 命令

GET /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCameraStatus

32.2 输入参数

无

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SlaveCameraStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 从相机连接状态信息, attr:version{req, string, 协议版本, range:[,]}-->
  <SlaveCameraLinkStatusList>
    <!--ro, req, array, 从相机连接状态列表, subType:object, range:[,]-->
    <SlaveCameraLinkStatus>
      <!--ro, opt, object, 从相机连接状态-->
      <id>
        <!--ro, req, string, 从相机ID, range:[,]-->test
      </id>
      <linkStatus>
        <!--ro, opt, enum, 连接状态, subType:string, [online#在线,offline#离线]-->offline
      </linkStatus>
    </SlaveCameraLinkStatus>
  </SlaveCameraLinkStatusList>
</SlaveCameraStatus>

33. 配置从相机跟踪倍率

33.1 命令

PUT /ISAPI/MasterSlaveTracking/channels/<channelID>/slaveCamera/<subChannelID>/trackingRatio

33.2 输入参数

无

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

34. 配置跟踪初始位置

34.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/trackInitPosition

34.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TrackInitPosition xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 跟踪初始位置, attr:version{req, string, 协议版本, range:[,]}-->
  <slaveCameraID>
    <!--opt, int, 从相机ID, range:[,], step:, unit:, unitType:-->1
  </slaveCameraID>
</TrackInitPosition>

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

35. 获取区域扫描能力

35.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/areaScan/capabilities

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AreaScan xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 区域扫描, attr:version{opt, string, 版本, range:[,]}-->
  <scanState opt="not Set,set">
    <!--ro, opt, enum, 区域扫描当前设置状态, subType:, [not Set#未设置,set#设置], attr:opt{opt, string, 区域扫描当前设置状态, range:[,]}-->set
  </scanState>
  <isSupportDelAreaScan>
    <!--ro, opt, bool, 是否支持删除区域扫描-->true
  </isSupportDelAreaScan>
  <isSupportInitialization>
    <!--ro, opt, bool, 是否支持进入区域设置-->true
  </isSupportInitialization>
  <isSupportConfirm>
    <!--ro, opt, bool, 是否支持保存区域设置-->true
  </isSupportConfirm>
  <isSupportStop>
    <!--ro, opt, bool, 是否支持停止区域设置-->true
  </isSupportStop>
  <isSupportSaveZoom>
    <!--ro, opt, bool, 是否支持设置扫描倍率-->true
  </isSupportSaveZoom>
  <isSupportGetZoom>
    <!--ro, opt, bool, 是否支持调用扫描倍率-->true
  </isSupportGetZoom>
</AreaScan>

36. 区域扫描初始化

36.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/areaScan/Initialization

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37. 区域扫描倍率控制

37.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/areaScan/getZoom

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

38. 区域扫描保持当前倍率

38.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/areaScan/saveZoom

38.2 输入参数

无

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

39. 区域扫描路径确认

39.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/areaScan/confirm

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

40. 区域扫描路径取消

40.1 命令

PUT /ISAPI/PTZCtrl/channels/<channelID>/areaScan/stop

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

41. 获取区域扫描控制参数

41.1 命令

GET /ISAPI/PTZCtrl/channels/<channelID>/areaScan

41.2 输入参数

无

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AreaScan xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 扫描区域, attr:version{req, string, 协议版本, range:[,]}-->
  <scanState>
    <!--ro, opt, enum, 扫描状态, subType:string, [not Set#未设置,set#已设置]-->not Set
  </scanState>
</AreaScan>

42. 删除区域扫描控制参数

42.1 命令

DELETE /ISAPI/PTZCtrl/channels/<channelID>/areaScan

42.2 输入参数

无

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

43. 获取GPS矫正参数能力

43.1 命令

GET /ISAPI/GIS/channels/<channelID>/reviseGPS/capabilities

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ReviseGPS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, GPS矫正, attr:version{req, string, 协议版本, range:[,]}-->
  <longitudeType opt="E,W">
    <!--ro, req, enum, 经度, subType:string, [E#东经,W#西经], attr:opt{req, string, 取值范围, range:[,]}-->E
  </longitudeType>
  <latitudeType opt="S,N">
    <!--ro, req, enum, 纬度, subType:string, [S#南纬,N#北纬], attr:opt{req, string, 取值范围, range:[,]}-->S
  </latitudeType>
  <Longitude>
    <!--ro, req, object, 经度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Longitude>
  <Latitude>
    <!--ro, req, object, 纬度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Latitude>
</ReviseGPS>

44. 获取GPS矫正参数

44.1 命令

GET /ISAPI/GIS/channels/<channelID>/reviseGPS

44.2 输入参数

无

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ReviseGPS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, GPS矫正, attr:version{req, string, 协议版本, range:[,]}-->
  <longitudeType>
    <!--ro, req, enum, 经度, subType:string, [E#东经,W#西经]-->E
  </longitudeType>
  <latitudeType>
    <!--ro, req, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
  </latitudeType>
  <Longitude>
    <!--ro, req, object, 经度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Longitude>
  <Latitude>
    <!--ro, req, object, 纬度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Latitude>
</ReviseGPS>

45. 配置GPS矫正参数

45.1 命令

PUT /ISAPI/GIS/channels/<channelID>/reviseGPS

45.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ReviseGPS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, GPS矫正, attr:version{req, string, 协议版本, range:[,]}-->
  <longitudeType>
    <!--req, enum, 经度, subType:string, [E#东经,W#西经]-->E
  </longitudeType>
  <latitudeType>
    <!--req, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
  </latitudeType>
  <Longitude>
    <!--req, object, 经度-->
    <degree>
      <!--req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Longitude>
  <Latitude>
    <!--req, object, 纬度-->
    <degree>
      <!--req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Latitude>
</ReviseGPS>

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

46. 获取GIS集中布防能力

46.1 命令

GET /ISAPI/GIS/channels/<channelID>/centralizedControl/capabilities

46.2 输入参数

无

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CentralizedControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, GIS集中布防, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能开关, desc:true-开始,false-结束-->true
  </enabled>
  <controlType opt="forcedControl,optionalControl">
    <!--ro, opt, enum, 集成控制模式, subType:object, [forcedControl#集成控制模式,optionalControl#非强制布防], attr:opt{req, string, 取值范围, range:[,]}-->forcedControl
  </controlType>
  <expires min="1" max="10">
    <!--ro, opt, int, 失效时间, range:[60,21600], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->60
  </expires>
  <longitudeType opt="E,W">
    <!--ro, req, enum, 经度, subType:string, [E#东经,W#西经], attr:opt{req, string, 取值范围, range:[,]}-->E
  </longitudeType>
  <latitudeType opt="S,N">
    <!--ro, req, enum, 纬度, subType:string, [S#南纬,N#北纬], attr:opt{req, string, 取值范围, range:[,]}-->S
  </latitudeType>
  <Longitude>
    <!--ro, req, object, 经度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Longitude>
  <Latitude>
    <!--ro, req, object, 纬度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Latitude>
</CentralizedControl>

47. 获取GIS集中布防配置

47.1 命令

GET /ISAPI/GIS/channels/<channelID>/centralizedControl

47.2 输入参数

无

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CentralizedControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, GIS集中布防, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能开关, desc:true-开始,false-结束-->true
  </enabled>
  <controlType>
    <!--ro, opt, enum, 集成控制模式, subType:object, [forcedControl#集成控制模式,optionalControl#非强制布防]-->forcedControl
  </controlType>
  <expires>
    <!--ro, opt, int, 失效时间, range:[60,21600], step:, unit:, unitType:-->60
  </expires>
  <longitudeType>
    <!--ro, req, enum, 经度, subType:string, [E#东经,W#西经]-->E
  </longitudeType>
  <latitudeType>
    <!--ro, req, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
  </latitudeType>
  <Longitude>
    <!--ro, req, object, 经度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Longitude>
  <Latitude>
    <!--ro, req, object, 纬度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Latitude>
</CentralizedControl>

48. 配置GIS集中布防

48.1 命令

PUT /ISAPI/GIS/channels/<channelID>/centralizedControl

48.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<CentralizedControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, GIS集中布防, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能开关, desc:true-开始,false-结束-->true
  </enabled>
  <controlType>
    <!--opt, enum, 集成控制模式, subType:string, [forcedControl#集成控制模式,optionalControl#非强制布防]-->forcedControl
  </controlType>
  <expires>
    <!--opt, int, 失效时间, range:[60,21600], step:, unit:, unitType:-->60
  </expires>
  <longitudeType>
    <!--req, enum, 经度, subType:string, [E#东经,W#西经]-->E
  </longitudeType>
  <latitudeType>
    <!--req, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
  </latitudeType>
  <Longitude>
    <!--req, object, 经度-->
    <degree>
      <!--req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Longitude>
  <Latitude>
    <!--req, object, 纬度-->
    <degree>
      <!--req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--req, float, 秒, range:[0.000,60.000], step:, unit:, unitType:, desc:精确到小数点后3位-->0.000
    </sec>
  </Latitude>
</CentralizedControl>

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

49. 获取GIS信息（单通道）

49.1 命令

GET /ISAPI/GIS/channels/<channelID>

49.2 输入参数

无

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GIS xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, GIS信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 通道号, range:[,]-->test
  </id>
  <AngleView>
    <!--ro, opt, object, 视场角-->
    <horizontalValue>
      <!--ro, req, float, 当前水平视场角, range:[0.0,360.00], step:, unit:, unitType:-->0.000
    </horizontalValue>
    <verticalValue>
      <!--ro, req, float, 当前垂直视场角, range:[0.0,360.00], step:, unit:, unitType:-->0.000
    </verticalValue>
    <visibleRadius>
      <!--ro, req, float, 当前可视半径, range:[0,1000000.00], step:, unit:m, unitType:长度-->0.000
    </visibleRadius>
  </AngleView>
  <MaxViewRadius>
    <!--ro, opt, object, 最大可视半径-->
    <mVisibleRadius>
      <!--ro, req, int, 最大可视半径 , range:[0,1000000.00], step:, unit:m, unitType:长度-->1
    </mVisibleRadius>
  </MaxViewRadius>
  <AbsoluteHigh>
    <!--ro, opt, object, PTZ-->
    <elevation>
      <!--ro, opt, int, T值, range:[-900,2700], step:, unit:, unitType:-->1
    </elevation>
    <azimuth>
      <!--ro, opt, int, P值, range:[0,3600], step:, unit:, unitType:-->1
    </azimuth>
    <absoluteZoom>
      <!--ro, opt, int, Z值, range:[0,1000], step:, unit:, unitType:-->1
    </absoluteZoom>
  </AbsoluteHigh>
  <Sensor>
    <!--ro, opt, object, 传感器-->
    <SensorType>
      <!--ro, opt, enum, 传感器类型, subType:string, [CCD#CCD传感器,CMOS#CMOS传感器]-->CCD
    </SensorType>
    <hor>
      <!--ro, req, float, 水平宽度, range:[,], step:, unit:, unitType:-->0.000
    </hor>
    <ver>
      <!--ro, req, float, 垂直宽度, range:[,], step:, unit:, unitType:-->0.000
    </ver>
    <fold>
      <!--ro, req, float, zoom没变时的焦距, range:[,], step:, unit:, unitType:-->0.000
    </fold>
  </Sensor>
  <longitudeType>
    <!--ro, req, enum, 经度, subType:string, [E#东经,W#西经]-->E
  </longitudeType>
  <latitudeType>
    <!--ro, req, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
  </latitudeType>
  <Longitude>
    <!--ro, req, object, 经度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.0000000,60.000000], step:, unit:, unitType:, desc:精确到小数点后6位-->0.000000
    </sec>
  </Longitude>
  <Latitude>
    <!--ro, req, object, 纬度-->
    <degree>
      <!--ro, req, int, 度, range:[0,179], step:, unit:, unitType:-->1
    </degree>
    <minute>
      <!--ro, req, int, 分, range:[0,59], step:, unit:, unitType:-->1
    </minute>
    <sec>
      <!--ro, req, float, 秒, range:[0.000000,60.000000], step:, unit:, unitType:-->0.0000000
    </sec>
  </Latitude>
  <azimuth>
    <!--ro, req, float, 方位角, range:[,], step:, unit:, unitType:-->0.000
  </azimuth>
  <HorizontalValueRange>
    <!--ro, opt, object, 水平视场角范围-->
    <minHorizontalValue>
      <!--ro, req, float, 最小水平视场角, range:[0.0,360.00], step:, unit:, unitType:-->0.000
    </minHorizontalValue>
    <maxHorizontalValue>
      <!--ro, req, float, 最大水平视场角, range:[0.0,360.00], step:, unit:, unitType:-->0.000
    </maxHorizontalValue>
  </HorizontalValueRange>
  <VerticalValueRange>
    <!--ro, opt, object, 垂直视场角范围-->
    <minVerticalValue>
      <!--ro, req, float, 最小垂直视场角, range:[0.0,360.00], step:, unit:, unitType:-->0.000
    </minVerticalValue>
    <maxVerticalValue>
      <!--ro, req, float, 最大垂直视场角, range:[0.0,360.00], step:, unit:, unitType:-->0.000
    </maxVerticalValue>
  </VerticalValueRange>
  <AbsoluteHighEx>
    <!--ro, opt, object, PTZ绝对位置高精度扩展-->
    <elevation>
      <!--ro, opt, float, T值, range:[-90.000,270.000], step:, unit:, unitType:-->0.000
    </elevation>
    <azimuth>
      <!--ro, opt, float, P值, range:[0,360.000], step:, unit:, unitType:-->0.000
    </azimuth>
    <absoluteZoom>
      <!--ro, opt, float, Z值, range:[0,10000.000], step:, unit:, unitType:-->0.000
    </absoluteZoom>
    <focus>
      <!--ro, opt, int, 聚焦范围, range:[0,100000], step:, unit:, unitType:-->1
    </focus>
  </AbsoluteHighEx>
  <absoluteHighExEnable>
    <!--ro, req, bool, 是否启用PTZ绝对位置高精度扩展, desc:若返回为true则AbsoluteHigh、AbsoluteHighEx都需启动,若返回为false或者不返回该节点,则启用AbsoluteHigh若返回为true则AbsoluteHigh、AbsoluteHighEx都需启动,若返回为false或者不返回该节点,则启用AbsoluteHigh-->true
  </absoluteHighExEnable>
  <centralAngleValue>
    <!--ro, opt, float, 当前中心角角度, range:[0,36000], step:, unit:, unitType:, desc:范围为0~360度,实际传输为乘100倍后的值。目前仅有新架构鹰眼设备会返回,新架构鹰眼设备存在两个全景通道,全景通道水平可视域角范围为0~180度,-->0.000
  </centralAngleValue>
  <altitude>
    <!--ro, opt, float, 海拔高度, range:[,], step:, unit:m, unitType:长度, desc:保留一位小数-->0.0
  </altitude>
</GIS>

50. 获取目标GIS信息能力

50.1 命令

GET /ISAPI/GIS/channels/<channelID>/targetGISPosition/capabilities?format=json

50.2 输入参数

无

50.3 输出参数

{
    "TargetGISPositionCap": {
    /*ro, req, object, 目标GIS信息*/
        "PointCap": {
        /*ro, req, object, 目标点位置坐标能力*/
            "x": {
            /*ro, opt, object, x坐标, desc:屏幕左上角为坐标原点*/
                "@min":  0.000,
                /*ro, opt, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000,
                /*ro, opt, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                "#text":  0.120
                /*ro, req, float, 默认值, range:[0.000,1.000], step:, unit:, unitType:*/
            },
            "y": {
            /*ro, opt, object, y坐标, desc:屏幕左上角为坐标原点*/
                "@min":  0.000,
                /*ro, opt, float, 最小值, range:[0.000,1.000], step:, unit:, unitType:*/
                "@max":  1.000,
                /*ro, opt, float, 最大值, range:[0.000,1.000], step:, unit:, unitType:*/
                "#text":  0.120
                /*ro, req, float, 默认值, range:[0.000,1.000], step:, unit:, unitType:*/
            }
        },
        "AbsoluteHighCap": {
        /*ro, opt, object, 当前PTZ位置能力, desc:仅支持云台的设备*/
            "elevation": {
            /*ro, opt, object, 仰角*/
                "@min":  -900,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  2700
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "azimuth": {
            /*ro, opt, object, 方位角*/
                "@min":  0,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  3600
                /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "absoluteZoom": {
            /*ro, opt, object, 变倍倍率*/
                "@min":  1,
                /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  1000
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
            }
        },
        "PositionInfoCap": {
        /*ro, req, object, 经纬度位置信息能力*/
            "longitude": {
            /*ro, opt, object, 经度*/
                "@min":  -180.000000,
                /*ro, opt, float, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  180.000000
                /*ro, req, float, 最大值, range:[,], step:, unit:, unitType:*/
            },
            "latitude": {
            /*ro, opt, object, 维度*/
                "@min":  -90.000000,
                /*ro, opt, float, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  90.000000
                /*ro, req, float, 最大值, range:[,], step:, unit:, unitType:*/
            }
        }
    }
}

51. 查询通过预览画面中目标位置获取该目标对应的GIS信息

51.1 命令

POST /ISAPI/GIS/channels/<channelID>/targetGISInfo?format=json

51.2 输入参数

{
    "TargetPositionInfo": {
    /*ro, req, object, 预览画面中目标位置信息*/
        "Point": {
        /*ro, req, object, 目标点位置坐标*/
            "x":  0.120,
            /*ro, req, float, x坐标, range:[0.000,1], step:, unit:, unitType:, desc:以左上角为原点*/
            "y":  0.120
            /*ro, opt, float, y坐标, range:[,], step:, unit:, unitType:, desc:以左上角为原点*/
        },
        "AbsoluteHigh": {
        /*ro, opt, object, 当前设备PTZ位置, desc:仅球机返回*/
            "elevation":  11,
            /*ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:*/
            "azimuth":  22,
            /*ro, opt, int, 方位角, range:[,], step:, unit:, unitType:*/
            "absoluteZoom":  33
            /*ro, req, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:*/
        }
    }
}

51.3 输出参数

{
    "GISInfo": {
    /*ro, req, object, GIS信息*/
        "PositionInfo": {
        /*ro, req, object, 经纬度位置信息*/
            "longitude":  0.000000,
            /*ro, req, float, 经度, range:[-180.000000,180.000000], step:, unit:, unitType:, desc:保留6位有效数字*/
            "latitude":  0.000000
            /*ro, opt, float, 维度, range:[-90.000000,90.000000], step:, unit:, unitType:, desc:保留6位有效数字*/
        }
    }
}

52. 查询通过目标经纬度信息获取预览画面中目标位置

52.1 命令

POST /ISAPI/GIS/channels/<channelID>/targetPositionInfo?format=json

52.2 输入参数

{
    "GISInfo": {
    /*req, object, GIS信息*/
        "PositionInfo": {
        /*req, object, 经纬度位置信息*/
            "longitude":  0.000000,
            /*req, float, 经度, range:[-180.000000,180.000000], step:, unit:, unitType:, desc:保留6位有效数字*/
            "latitude":  0.000000
            /*opt, float, 维度, range:[-90.000000,90.000000], step:, unit:, unitType:, desc:保留6位有效数字*/
        }
    }
}

52.3 输出参数

{
    "TargetPositionInfo": {
    /*ro, req, object, 预览画面中目标位置信息*/
        "AbsoluteHigh": {
        /*ro, opt, object, 当前设备PTZ位置, desc:仅球机返回*/
            "elevation":  11,
            /*ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:*/
            "azimuth":  22,
            /*ro, opt, int, 方位角, range:[,], step:, unit:, unitType:*/
            "absoluteZoom":  33
            /*ro, req, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:*/
        },
        "Point": {
        /*ro, req, object, 目标点位置坐标, desc:屏幕左上角为坐标原点*/
            "x":  0.120,
            /*ro, req, float, x坐标, range:[0.000,1.000], step:, unit:, unitType:*/
            "y":  0.120
            /*ro, opt, float, y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
        }
    }
}

53. 获取罗盘配置能力

53.1 命令

GET /ISAPI/Compass/channels/<channelID>/capabilities

53.2 输入参数

无

53.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CompassCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 罗盘配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <VandalProofAlarm>
    <!--ro, req, object, 防破坏报警关联配置-->
    <sensitivityLevel min="1" max="100">
      <!--ro, req, int, 敏感度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </sensitivityLevel>
    <isSupportUpload>
      <!--ro, opt, bool, 启用防破坏报警上传-->true
    </isSupportUpload>
    <isSupportVoiceWarning>
      <!--ro, opt, bool, 启用防破坏报警语音提示-->true
    </isSupportVoiceWarning>
    <enabled>
      <!--ro, opt, bool, 启用检测防破坏报警-->true
    </enabled>
  </VandalProofAlarm>
  <isSupportCalibrate>
    <!--ro, opt, bool, 启用罗盘校正-->true
  </isSupportCalibrate>
  <isSupportPointToNorth>
    <!--ro, opt, bool, 启用指向北方-->true
  </isSupportPointToNorth>
  <isSupportEventLinkage>
    <!--ro, opt, bool, 启用事件链接-->true
  </isSupportEventLinkage>
  <AzimuthInfo>
    <!--ro, opt, object, 方位信息-->
    <azimuth opt="northeast,northwest,southeast,southwest,east,west,south,north">
      <!--ro, req, string, 方位, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:northeast,northwest,southeast,southwest,east,west,south,north-->test
    </azimuth>
    <degree min="1" max="10">
      <!--ro, req, float, 度数 精确到小数点后2位, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
    </degree>
  </AzimuthInfo>
  <supportDevType>
    <!--ro, opt, string, 支持的设备类型, range:[,], desc:IPC,IPD-->test
  </supportDevType>
  <Calibrate>
    <!--ro, opt, object, 罗盘校正-->
    <northPan min="0.00" max="360.00" def="0.00">
      <!--ro, req, float, 正北P值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:正北P值,即指向正北方向的水平方位角度值 精确到小数点后2位,0.00-360.00-->0.000
    </northPan>
  </Calibrate>
</CompassCap>

54. 获取罗盘工作模式

54.1 命令

GET /ISAPI/Compass/channels/<channelID>/workMode

54.2 输入参数

无

54.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SoftPositionWorkMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 罗盘工作模式, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [manual#手动]-->manual
  </mode>
</SoftPositionWorkMode>

55. 获取罗盘矫正

55.1 命令

GET /ISAPI/Compass/channels/<channelID>/calibrate

55.2 输入参数

无

55.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Calibrate xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 罗盘矫正, attr:version{req, string, 协议版本, range:[,]}-->
  <northPan>
    <!--ro, req, float, 正北P值, range:[,], step:, unit:, unitType:, desc:精确到小数点后2位-->0.000
  </northPan>
</Calibrate>

56. 配置罗盘矫正

56.1 命令

PUT /ISAPI/Compass/channels/<channelID>/calibrate

56.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Calibrate xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 罗盘矫正, attr:version{req, string, 协议版本, range:[,]}-->
  <northPan>
    <!--req, float, 正北P值, range:[,], step:, unit:, unitType:, desc:精确到小数点后2位-->0.000
  </northPan>
</Calibrate>

56.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 响应状态, attr:version{req, string, 协议版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->test
  </requestURL>
  <statusCode>
    <!--ro, req, int, 状态码, range:[,], step:, unit:, unitType:, desc:0和1-OK, 2-Device Busy, 3-Device Error, 4-Invalid Operation, 5-Invalid XML Format, 6-Invalid XML Content; 7-Reboot Required-->1
  </statusCode>
  <statusString>
    <!--ro, req, string, 状态描述, range:[,]-->test
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码的英文描述, range:[,]-->test
  </subStatusCode>
</ResponseStatus>

57. 配置罗盘指向正北

57.1 命令

PUT /ISAPI/Compass/channels/<channelID>/pointToNorth

57.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Time xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 时间, attr:version{req, string, 协议版本, range:[,]}-->
  <timeMode>
    <!--req, enum, 时间模型, subType:string, [NTP#NTP,manual#手动,satellite#卫星], desc:NTP,manual,satellite-->NTP
  </timeMode>
  <localTime>
    <!--opt, datetime, 本地时间-->1970-01-01T00:00:00+08:00
  </localTime>
  <timeZone>
    <!--opt, string, 时区, range:[,], desc:POSIX time zone string-->test
  </timeZone>
</Time>

57.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 响应状态, attr:version{req, string, 协议版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->test
  </requestURL>
  <statusCode>
    <!--ro, req, int, 状态码, range:[,], step:, unit:, unitType:, desc:0和1-OK, 2-Device Busy, 3-Device Error, 4-Invalid Operation, 5-Invalid XML Format, 6-Invalid XML Content; 7-Reboot Required-->1
  </statusCode>
  <statusString>
    <!--ro, req, string, 状态描述, range:[,]-->test
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码的英文描述, range:[,]-->test
  </subStatusCode>
</ResponseStatus>

58. 获取方位信息

58.1 命令

GET /ISAPI/Compass/channels/<channelID>/azimuthInfo

58.2 输入参数

无

58.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AzimuthInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 方位信息, attr:version{req, string, 协议版本, range:[,]}-->
  <azimuth>
    <!--ro, req, enum, 方位角, subType:string, [northeast#东北,northwest#西北,southeast#东南,southwest#西南,east#东,west#西,south#南,north#北]-->northeast
  </azimuth>
  <degree>
    <!--ro, req, float, 度数, range:[,], step:, unit:, unitType:, desc:精确到小数点后2位-->0.000
  </degree>
</AzimuthInfo>

59. 获取罗盘防破坏报警

59.1 命令

GET /ISAPI/Compass/channels/<channelID>/vandalProofAlarm

59.2 输入参数

无

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VandalProofAlarm xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 防破坏报警关联配置, attr:version{req, string, 协议版本, range:[,]}-->
  <sensitivityLevel>
    <!--ro, req, int, 敏感度, range:[1,100], step:, unit:, unitType:-->50
  </sensitivityLevel>
  <upload>
    <!--ro, opt, bool, 启用防破坏报警上传-->true
  </upload>
  <voiceWarning>
    <!--ro, opt, bool, 启用防破坏报警语音提示-->true
  </voiceWarning>
  <enabled>
    <!--ro, opt, bool, 启用检测防破坏报警-->true
  </enabled>
</VandalProofAlarm>

60. 配置罗盘防破坏报警

60.1 命令

PUT /ISAPI/Compass/channels/<channelID>/vandalProofAlarm

60.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VandalProofAlarm xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 防破坏报警关联配置, attr:version{req, string, 协议版本, range:[,]}-->
  <sensitivityLevel>
    <!--req, int, 敏感度, range:[1,100], step:, unit:, unitType:, desc:1 is the least sensitive，1是最不敏感的-->50
  </sensitivityLevel>
  <upload>
    <!--opt, bool, 启用防破坏报警上传-->true
  </upload>
  <voiceWarning>
    <!--opt, bool, 启用防破坏报警语音提示-->true
  </voiceWarning>
  <enabled>
    <!--opt, bool, 启用检测防破坏报警-->true
  </enabled>
</VandalProofAlarm>

60.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


网络和安全

1. 获取网络服务能力

1.1 命令

GET /ISAPI/System/Network/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<NetworkCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 获取网络服务能力, attr:version{opt, string, 未定义, range:[,]}-->
  <isSupportWireless>
    <!--ro, req, bool, 是否支持无线网-->true
  </isSupportWireless>
  <isSupportWAN>
    <!--ro, opt, bool, 是否支持广域网-->true
  </isSupportWAN>
  <isSupportPPPoE>
    <!--ro, req, bool, 是否支持以太网点对点协议-->true
  </isSupportPPPoE>
  <isSupportBond>
    <!--ro, req, bool, 是否支持网卡绑定-->true
  </isSupportBond>
  <isSupport802_1x>
    <!--ro, req, bool, 是否支持802.1x协议-->true
  </isSupport802_1x>
  <isSupportNtp>
    <!--ro, opt, bool, 是否支持网络时间协议-->true
  </isSupportNtp>
  <isSupportFtp>
    <!--ro, opt, bool, 是否支持文件传输协议-->true
  </isSupportFtp>
  <isSupportUpnp>
    <!--ro, opt, bool, 是否支持通用即用即插协议-->true
  </isSupportUpnp>
  <isSupportPNP>
    <!--ro, opt, bool, 是否支持即用即插协议-->true
  </isSupportPNP>
  <isSupportDdns>
    <!--ro, opt, bool, 是否支持动态域名服务-->true
  </isSupportDdns>
  <isSupportHttps>
    <!--ro, opt, bool, 是否支持超文本传输安全协议-->true
  </isSupportHttps>
  <isSupport28181>
    <!--ro, opt, bool, 是否支持GB28181协议-->true
  </isSupport28181>
  <SnmpCap>
    <!--ro, opt, object, 简单网络管理协议能力-->
    <isSupport>
      <!--ro, req, bool, 是否支持简单网络管理协议-->true
    </isSupport>
  </SnmpCap>
  <isSupportExtNetCfg>
    <!--ro, opt, bool, 是否支持配置扩展的网络参数-->true
  </isSupportExtNetCfg>
  <isSupportIPFilter>
    <!--ro, opt, bool, 是否支持IP过滤-->true
  </isSupportIPFilter>
  <isSupportSSH opt="true,false">
    <!--ro, opt, bool, 是否支持SSH, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isSupportSSH>
  <isSupportNetPreviewStrategy>
    <!--ro, opt, bool, 是否支持网络预览策略-->true
  </isSupportNetPreviewStrategy>
  <isSupportEZVIZ>
    <!--ro, opt, bool, 是否支持萤石协议-->true
  </isSupportEZVIZ>
  <isSupportEhome>
    <!--ro, opt, bool, 是否支持EHome（ISUP）协议-->true
  </isSupportEhome>
  <isSupportWirelessDial>
    <!--ro, opt, bool, 是否支持无线拨号协议-->true
  </isSupportWirelessDial>
  <isSupportWirelessServer>
    <!--ro, opt, bool, 是否这次会无线服务器-->true
  </isSupportWirelessServer>
  <isSupportWPS>
    <!--ro, opt, bool, 是否支持Wi-Fi安全防护设定(Wi-Fi Protected Setup)-->true
  </isSupportWPS>
  <isWirelessMutexWithWirelessServer>
    <!--ro, opt, bool, 是否支持无线接入和无线服务互斥-->true
  </isWirelessMutexWithWirelessServer>
  <isSupportMACFilter>
    <!--ro, opt, bool, 是否支持物理地址过滤-->true
  </isSupportMACFilter>
  <GB28181Cap>
    <!--ro, opt, object, GB28181能力集-->
    <isSupportGB28181Service>
      <!--ro, opt, bool, 是否支持GB28181服务-->true
    </isSupportGB28181Service>
  </GB28181Cap>
  <WPS>
    <!--ro, opt, object, Wi-Fi安全防护设定-->
    <NetworkInterfaceList size="2">
      <!--ro, opt, array, 网络接口列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <NetworkInterface>
        <!--ro, opt, object, 网络接口-->
        <id>
          <!--ro, req, string, 网卡索引, range:[,]-->test
        </id>
        <enabled>
          <!--ro, req, bool, 使能开关-->true
        </enabled>
        <isSupportAutoConnect>
          <!--ro, opt, bool, 是否支持自动连接-->true
        </isSupportAutoConnect>
        <isSupportDevicePinCode>
          <!--ro, opt, bool, 是否支持设备PIN码-->true
        </isSupportDevicePinCode>
        <isSupportDevicePinCodeUpdate>
          <!--ro, opt, bool, 是否支持设备PIN码更新-->true
        </isSupportDevicePinCodeUpdate>
        <ApPinCode>
          <!--ro, opt, object, 接入点PIN码-->
          <ssid min="1" max="10">
            <!--ro, opt, string, 服务集标识, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
          </ssid>
          <pinCode min="1" max="10">
            <!--ro, opt, string, PIN码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
          </pinCode>
        </ApPinCode>
      </NetworkInterface>
    </NetworkInterfaceList>
  </WPS>
  <isSupportRFIDData>
    <!--ro, opt, bool, 是否支持RFID采集配置-->true
  </isSupportRFIDData>
  <verificationCode min="1" max="10">
    <!--ro, opt, string, 验证码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </verificationCode>
  <WPSCap>
    <!--ro, opt, object, Wi-Fi安全防护设定能力-->
    <isSupport>
      <!--ro, req, bool, 是否支持Wi-Fi安全防护设定(Wi-Fi Protected Setup)-->true
    </isSupport>
    <isSupportAutoConnect>
      <!--ro, req, bool, 是否支持自动连接-->true
    </isSupportAutoConnect>
  </WPSCap>
  <NetWorkMode>
    <!--ro, opt, object, 网络模式-->
    <workMode>
      <!--ro, opt, enum, 网络模式, subType:string, [close#关闭,wifi#无线接入,wifiAp#无线接入点]-->close
    </workMode>
  </NetWorkMode>
  <VerificationCodeModification>
    <!--ro, opt, object, 验证码修改-->
    <verificationCodeType opt="normal,empty">
      <!--ro, opt, string, 验证码类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </verificationCodeType>
    <isSupportDeclarationURL>
      <!--ro, opt, bool, 是否支持服务申明的超链接-->true
    </isSupportDeclarationURL>
    <isSupportPrivacyPolicyURL>
      <!--ro, opt, bool, 是否支持隐私条款的超链接-->true
    </isSupportPrivacyPolicyURL>
    <verificationCodeModify opt="true,false">
      <!--ro, opt, bool, 设备验证码是否修改过, attr:opt{req, string, 取值范围, range:[,]}-->true
    </verificationCodeModify>
    <Hyperlinks>
      <!--ro, opt, object, 超链接-->
      <declarationURL>
        <!--ro, opt, string, 服务申明的超链接, range:[,]-->test
      </declarationURL>
      <privacyPolicyURL>
        <!--ro, opt, string, 支持隐私条款的超链接, range:[,]-->test
      </privacyPolicyURL>
    </Hyperlinks>
    <isSupportVerificationCodeCheck>
      <!--ro, opt, bool, 是否支持验证码校验-->true
    </isSupportVerificationCodeCheck>
    <isSupportOldVerificationCode>
      <!--ro, opt, bool, 是否支持老版本萤石密码配置（老版本密码为六位-->true
    </isSupportOldVerificationCode>
  </VerificationCodeModification>
  <isSupportIntegrate>
    <!--ro, opt, bool, 是否支持接入协议配置-->true
  </isSupportIntegrate>
  <isSupportPlatformAccess>
    <!--ro, opt, bool, 是否支持平台接入-->true
  </isSupportPlatformAccess>
  <isSupportIntelligentBoost>
    <!--ro, opt, bool, 是否支持智能加速功能-->true
  </isSupportIntelligentBoost>
  <WifiRegionConfiguration>
    <!--ro, opt, object, wifi区域配置, desc:二者均不支持时<WifiRegionConfiguration>节点不返回-->
    <isSupportWifiRegion>
      <!--ro, opt, bool, 是否支持wifi区域配置, desc:海外设备支持，支持返回true，不支持不返回-->true
    </isSupportWifiRegion>
    <isSupportWifiEnhancement>
      <!--ro, opt, bool, 是否支持wifi增强, desc:国内设备支持，支持返回true，不支持不返回-->true
    </isSupportWifiEnhancement>
  </WifiRegionConfiguration>
  <isSupportResourceStatistics>
    <!--ro, opt, bool, 是否支持网络资源信息-->true
  </isSupportResourceStatistics>
  <isSupportBandwidthLimit>
    <!--ro, opt, bool, 是否支持带宽限制-->true
  </isSupportBandwidthLimit>
  <isSupportPOEPortsDisableAdaptiveServer>
    <!--ro, opt, bool, 是否支持POE协议-->true
  </isSupportPOEPortsDisableAdaptiveServer>
  <isSupportPOEConfiguration>
    <!--ro, opt, bool, 是否支持POE网卡参数配置-->true
  </isSupportPOEConfiguration>
  <isSupportGetLinkSocketIP>
    <!--ro, opt, bool, 是否支持获取当前链接的SocketIP-->true
  </isSupportGetLinkSocketIP>
  <isSupportWebSocket>
    <!--ro, opt, bool, 是否支持WebSocket-->true
  </isSupportWebSocket>
  <isSupportWebSocketS>
    <!--ro, opt, bool, 是否支持WebSocketS-->true
  </isSupportWebSocketS>
  <Adaption>
    <!--ro, opt, object, 网络自适应-->
    <streamType opt="0,1,2,3,4,5,7,8,9,10">
      <!--ro, opt, enum, 支持预览网络自适应的码流类型, subType:int, [0#主码流,1#子码流,2#码流3,3#码流4/虚拟码流,4#码流5,5#码流6,7#码流7,8#码流8,9#码流9,10#码流10], attr:opt{req, string, 取值范围, range:[,]}, desc:支持预览网络自适应的码流类型:0-主码流,1-子码流,2-码流3,3-码流4/虚拟码流,4-码流5,5-码流6,7-码流7,8-码流8,9-码流9,10-码流10以此类推-->0
    </streamType>
    <isSupportPlayback>
      <!--ro, opt, bool, 回放是否支持-->true
    </isSupportPlayback>
  </Adaption>
  <isSupportVideoImgDB>
    <!--ro, opt, bool, 是否支持视图库配置-->true
  </isSupportVideoImgDB>
  <isSupportEventDataOverWebSocket opt="true,false">
    <!--ro, opt, bool, 是否支持通过WebSocket上报事件数据, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isSupportEventDataOverWebSocket>
  <isSupportDynamicHostName>
    <!--ro, opt, bool, 是否支持动态域名配置-->true
  </isSupportDynamicHostName>
  <isSupportEZVIZTiming>
    <!--ro, opt, bool, 是否支持萤石平台校时（/ISAPI/System/Network/EZVIZ中的EZVIZ.enabledTiming）-->true
  </isSupportEZVIZTiming>
  <isSupportTrafficMonitor>
    <!--ro, opt, bool, 是否支持流量监控-->true
  </isSupportTrafficMonitor>
  <isSupportSIMCardSwitch>
    <!--ro, opt, bool, 是否支持SIM卡定时切换配置, desc:对应配置接口：/ISAPI/System/Network/WirelessDial/SIMCardSwitch?format=json-->true
  </isSupportSIMCardSwitch>
  <isSupportDMSAuthInfo>
    <!--ro, opt, bool, 是否支持DMS认证信息管理-->true
  </isSupportDMSAuthInfo>
  <isSupportWiredandWirelessTrafficMonitor>
    <!--ro, opt, bool, 是否支持流量监控(无线网卡和有线网卡)-->true
  </isSupportWiredandWirelessTrafficMonitor>
  <isSupport4G>
    <!--ro, opt, bool, 是否支持4G模块-->true
  </isSupport4G>
  <isSupport4GConfig>
    <!--ro, opt, bool, 是否支持4G配置-->true
  </isSupport4GConfig>
  <isSupportGRIDServer>
    <!--ro, opt, bool, 是否支持国网B服务器参数配置-->true
  </isSupportGRIDServer>
  <isSupportGRIDInfo>
    <!--ro, opt, bool, 是否支持设备的国网B通道参数配置-->true
  </isSupportGRIDInfo>
  <isSupportSipTransmit>
    <!--ro, opt, bool, 是否支持Sip传输参数配置-->true
  </isSupportSipTransmit>
  <isSupportSip>
    <!--ro, opt, bool, 是否支持私有SIP(VOIP)-->true
  </isSupportSip>
  <isSupportWifiCascade>
    <!--ro, opt, bool, 设备wifi自动级联使能能力-->true
  </isSupportWifiCascade>
  <isSupportRelativeInfo>
    <!--ro, opt, bool, 已连接设备相关信息-->true
  </isSupportRelativeInfo>
  <isSupportANR>
    <!--ro, opt, bool, 是否支持断网续传配置取, desc:对应/ISAPI/System/Network/ANR-->true
  </isSupportANR>
  <isSupportEmailEncrypt>
    <!--ro, opt, bool, 是否支持邮箱配置加密-->true
  </isSupportEmailEncrypt>
  <isSupportPortFilter>
    <!--ro, opt, bool, 是否支持端口过滤-->true
  </isSupportPortFilter>
  <isSupportPingDeny>
    <!--ro, opt, bool, 是否支持禁止ping设备配置功能-->true
  </isSupportPingDeny>
  <isSupportDOSDeny>
    <!--ro, opt, bool, 是否支持防止DOS攻击配置功能-->true
  </isSupportDOSDeny>
  <isSupportNetworkStatus>
    <!--ro, opt, bool, 是否支持网络状态查询-->true
  </isSupportNetworkStatus>
  <isSupportEZVIZQRcode>
    <!--ro, opt, bool, 是否支持萤石二维码获取, desc:对应控制接口：/ISAPI/System/Network/EZVIZ/QRCode?format=json-->true
  </isSupportEZVIZQRcode>
  <isSupportEZVIZUnbind>
    <!--ro, opt, bool, 是否支持萤石解绑功能, desc:/ISAPI/System/Network/EZVIZ/unbind?format=json-->true
  </isSupportEZVIZUnbind>
  <isSupportPingtest>
    <!--ro, opt, bool, 是否支持ping测试, desc:对应/ISAPI/System/Network/pingtest/capabilities-->true
  </isSupportPingtest>
  <isSupportMOTCloudPlateform>
    <!--ro, opt, bool, 是否支持接入云平台服务参数, desc:对应/ISAPI/System/Network/Traffic/MOTCloudPlateform/capabilities?format=json-->true
  </isSupportMOTCloudPlateform>
  <isSupportSpectrumScan>
    <!--ro, opt, bool, 是否支持频谱扫描, desc:对应/ISAPI/System/Network/interface/<netCardID>/spectrumScan/capabilities?format=json-->true
  </isSupportSpectrumScan>
  <isSupportFRP>
    <!--ro, opt, bool, 是否支持FRP内网透传, desc:对应/ISAPI/Syetem/Network/FRP?format=json-->true
  </isSupportFRP>
  <isSupport5GModule>
    <!--ro, opt, bool, 是否支持5G模块相关配置, desc:对应/ISAPI/System/Network/5GModule/capabilities?format=json-->true
  </isSupport5GModule>
  <isSupportWirelessDialRoute>
    <!--ro, opt, bool, 是否支持无线拨号路由转发规则参数配置, desc:对应/ISAPI/System/Network/WirelessDia/route/capabilities?format=json-->true
  </isSupportWirelessDialRoute>
  <isSupportNPlusOne>
    <!--ro, opt, bool, 是否支持N+1协议-->true
  </isSupportNPlusOne>
  <supportEnvironmentalStandards opt="HJ212">
    <!--ro, opt, string, 环境检测标准, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:HJ212-支持HJ212协议,对应/ISAPI/System/Network/HJ212?format=json;-->true
  </supportEnvironmentalStandards>
  <isSupportIntranetSegment>
    <!--ro, opt, bool, 是否支持内部网段配置, desc:支持返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/intranetSegment/capabilities?format=json-->true
  </isSupportIntranetSegment>
  <isSupportDHCPServer>
    <!--ro, opt, bool, 是否DHCP服务配置, desc:支持返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/DHCPServer/capabilities?format=json-->true
  </isSupportDHCPServer>
  <isSupportHydrologicMonitoring>
    <!--ro, opt, bool, 是否支持水文监测数据通信, desc:支持《SL 651-2014 水文监测数据通信规约》返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/HydrologicMonitoring/capabilities?format=json-->true
  </isSupportHydrologicMonitoring>
</NetworkCap>

2. 获取接入协议参数能力

2.1 命令

GET /ISAPI/System/Network/Integrate/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Integrate xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 接入协议参数能力, attr:version{req, string, 协议版本, range:[,]}-->
  <CGI>
    <!--ro, req, object, CGI协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, CGI使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
    <certificateType opt="digest,digest/baisc" def="digest">
      <!--ro, req, enum, 认证类型, subType:string, [digest#digest,digest/baisc#digest/baisc], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认值digest-->digest
    </certificateType>
  </CGI>
  <ONVIF>
    <!--ro, req, object, ONVIF协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, ONVIF使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
    <certificateType opt="digest,digest/WSSE,WSSE" def="digest/WSSE">
      <!--ro, req, enum, 认证类型, subType:string, [digest#digest,digest/WSSE#digest/WSSE,WSSE#WSSE], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认值digest/WSSE-->digest/WSSE
    </certificateType>
  </ONVIF>
  <ISAPI>
    <!--ro, req, object, ISAPI协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, ISAPI使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认开启-->true
    </enable>
  </ISAPI>
  <IPCAddStatus>
    <!--ro, opt, object, 显示NVR本地IPC是否已添加状态-->
    <enable opt="true, false">
      <!--ro, opt, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </IPCAddStatus>
  <Bonjour>
    <!--ro, opt, object, bonjour服务-->
    <enable opt="true, false">
      <!--ro, opt, bool, bonjour服务使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </Bonjour>
  <Megaeyes>
    <!--ro, opt, object, 全球眼服务-->
    <enable opt="true, false">
      <!--ro, opt, bool, 全球眼服务使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </Megaeyes>
  <WebSocket>
    <!--ro, opt, object, WebSocket-->
    <enable>
      <!--ro, opt, bool, WebSocket使能开关, desc:默认关闭-->false
    </enable>
  </WebSocket>
  <WebSocketS>
    <!--ro, opt, object, WebSocketS-->
    <enable>
      <!--ro, opt, bool, WebSocketS使能开关, desc:默认关闭-->false
    </enable>
  </WebSocketS>
</Integrate>

3. 获取接入协议

3.1 命令

GET /ISAPI/System/Network/Integrate

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Integrate xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 接入协议参数能力, attr:version{req, string, 协议版本, range:[,]}-->
  <CGI>
    <!--ro, req, object, CGI协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, CGI使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
    <certificateType opt="digest,digest/baisc" def="digest">
      <!--ro, req, enum, 认证类型, subType:string, [digest#digest,digest/baisc#digest/baisc], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认值digest-->digest
    </certificateType>
  </CGI>
  <ONVIF>
    <!--ro, req, object, ONVIF协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, ONVIF使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
    <certificateType opt="digest,digest/WSSE,WSSE" def="digest/WSSE">
      <!--ro, req, enum, 认证类型, subType:string, [digest#digest,digest/WSSE#digest/WSSE,WSSE#WSSE], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认值digest/WSSE-->digest/WSSE
    </certificateType>
  </ONVIF>
  <ISAPI>
    <!--ro, req, object, ISAPI协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, ISAPI使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认开启-->true
    </enable>
  </ISAPI>
  <IPCAddStatus>
    <!--ro, opt, object, 显示NVR本地IPC是否已添加状态-->
    <enable opt="true, false">
      <!--ro, opt, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </IPCAddStatus>
  <Bonjour>
    <!--ro, opt, object, bonjour服务-->
    <enable opt="true, false">
      <!--ro, opt, bool, bonjour服务使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </Bonjour>
  <Megaeyes>
    <!--ro, opt, object, 全球眼服务-->
    <enable opt="true, false">
      <!--ro, opt, bool, 全球眼服务使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </Megaeyes>
  <WebSocket>
    <!--ro, opt, object, WebSocket-->
    <enable>
      <!--ro, opt, bool, WebSocket使能开关, desc:默认关闭-->false
    </enable>
  </WebSocket>
  <WebSocketS>
    <!--ro, opt, object, WebSocketS-->
    <enable>
      <!--ro, opt, bool, WebSocketS使能开关, desc:默认关闭-->false
    </enable>
  </WebSocketS>
</Integrate>

4. 配置接入协议

4.1 命令

PUT /ISAPI/System/Network/Integrate

4.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Integrate xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 接入协议参数能力, attr:version{req, string, 协议版本, range:[,]}-->
  <CGI>
    <!--ro, req, object, CGI协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, CGI使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
    <certificateType opt="digest,digest/baisc" def="digest">
      <!--ro, req, enum, 认证类型, subType:string, [digest#digest,digest/baisc#digest/baisc], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认值digest-->digest
    </certificateType>
  </CGI>
  <ONVIF>
    <!--ro, req, object, ONVIF协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, ONVIF使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
    <certificateType opt="digest,digest/WSSE,WSSE" def="digest/WSSE">
      <!--ro, req, enum, 认证类型, subType:string, [digest#digest,digest/WSSE#digest/WSSE,WSSE#WSSE], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:默认值digest/WSSE-->digest/WSSE
    </certificateType>
  </ONVIF>
  <ISAPI>
    <!--ro, req, object, ISAPI协议-->
    <enable opt="true, false">
      <!--ro, opt, bool, ISAPI使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认开启-->true
    </enable>
  </ISAPI>
  <IPCAddStatus>
    <!--ro, opt, object, 显示NVR本地IPC是否已添加状态-->
    <enable opt="true, false">
      <!--ro, opt, bool, 使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </IPCAddStatus>
  <Bonjour>
    <!--ro, opt, object, bonjour服务-->
    <enable opt="true, false">
      <!--ro, opt, bool, bonjour服务使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </Bonjour>
  <Megaeyes>
    <!--ro, opt, object, 全球眼服务-->
    <enable opt="true, false">
      <!--ro, opt, bool, 全球眼服务使能开关, attr:opt{req, string, 取值范围, range:[,]}, desc:默认关闭-->false
    </enable>
  </Megaeyes>
  <WebSocket>
    <!--ro, opt, object, WebSocket-->
    <enable>
      <!--ro, opt, bool, WebSocket使能开关, desc:默认关闭-->false
    </enable>
  </WebSocket>
  <WebSocketS>
    <!--ro, opt, object, WebSocketS-->
    <enable>
      <!--ro, opt, bool, WebSocketS使能开关, desc:默认关闭-->false
    </enable>
  </WebSocketS>
</Integrate>

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

5. 获取平台地址过滤能力

5.1 命令

GET /ISAPI/System/Network/platformAccessFilter/capabilities

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilterCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 平台地址过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <GB28181>
    <!--ro, opt, object, GB28181-->
    <IPFilterAddress>
      <!--ro, opt, object, IP地址过滤-->
      <denyNumber>
        <!--ro, opt, int, 禁止个数, range:[,], step:, unit:, unitType:-->1
      </denyNumber>
      <allowNumber>
        <!--ro, opt, int, 允许个数, range:[,], step:, unit:, unitType:-->1
      </allowNumber>
    </IPFilterAddress>
    <addressFilterType opt="mask,range">
      <!--ro, opt, bool, 地址过滤类型, attr:opt{req, string, 取值范围, range:[,]}-->true
    </addressFilterType>
    <isSupportIPV4>
      <!--ro, opt, bool, 是否支持IPV4-->true
    </isSupportIPV4>
    <isSupportIPV6>
      <!--ro, opt, bool, 是否支持IPV6-->true
    </isSupportIPV6>
  </GB28181>
  <EHOME>
    <!--ro, opt, object, ehome-->
    <IPFilterAddress>
      <!--ro, opt, object, IP地址过滤-->
      <denyNumber>
        <!--ro, opt, int, 禁止个数, range:[,], step:, unit:, unitType:-->1
      </denyNumber>
      <allowNumber>
        <!--ro, opt, int, 允许个数, range:[,], step:, unit:, unitType:-->1
      </allowNumber>
    </IPFilterAddress>
    <addressFilterType opt="mask,range">
      <!--ro, opt, string, 地址过滤类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </addressFilterType>
    <isSupportIPV4>
      <!--ro, opt, bool, 是否支持IPV4-->true
    </isSupportIPV4>
    <isSupportIPV6>
      <!--ro, opt, bool, 是否支持IPV6-->true
    </isSupportIPV6>
  </EHOME>
</PlatformAccessFilterCap>

6. 获取GB28181接入地址过滤

6.1 命令

GET /ISAPI/System/Network/platformAccessFilter/GB28181

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 平台接入过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <IPFilterAddressList>
    <!--ro, opt, array, ip过滤地址列表, subType:object, range:[,]-->
    <IPFilterAddress>
      <!--ro, req, object, ip地址过滤-->
      <id>
        <!--ro, req, string, id, range:[,]-->test
      </id>
      <permissionType>
        <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
      </permissionType>
      <addressFilterType>
        <!--ro, req, enum, 地址过滤类型, subType:string, [mask#标签,range#范围]-->mask
      </addressFilterType>
      <AddressRange>
        <!--ro, opt, object, 地址范围-->
        <startIPAddress>
          <!--ro, opt, string, 起始地址, range:[,]-->test
        </startIPAddress>
        <endIPAddress>
          <!--ro, opt, string, 结束地址, range:[,]-->test
        </endIPAddress>
        <startIPv6Address>
          <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
        </startIPv6Address>
        <endIPv6Address>
          <!--ro, opt, string, 结束地址（ipv6）, range:[,]-->test
        </endIPv6Address>
      </AddressRange>
      <AddressMask>
        <!--ro, opt, object, 地址掩码-->
        <ipAddress>
          <!--ro, opt, string, ip地址, range:[,]-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, ipv6地址, range:[,]-->test
        </ipv6Address>
        <bitMask>
          <!--ro, req, string, 位掩码, range:[,]-->test
        </bitMask>
      </AddressMask>
    </IPFilterAddress>
  </IPFilterAddressList>
</PlatformAccessFilter>

7. 配置GB28181接入地址过滤

7.1 命令

PUT /ISAPI/System/Network/platformAccessFilter/GB28181

7.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 平台接入过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <IPFilterAddressList>
    <!--opt, array, ip过滤地址列表, subType:object, range:[,]-->
    <IPFilterAddress>
      <!--ro, req, object, ip地址过滤-->
      <id>
        <!--ro, req, string, id, range:[,]-->test
      </id>
      <permissionType>
        <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
      </permissionType>
      <addressFilterType>
        <!--ro, req, enum, 地址过滤类型, subType:string, [mask#标签,range#范围]-->mask
      </addressFilterType>
      <AddressRange>
        <!--ro, opt, object, 地址范围-->
        <startIPAddress>
          <!--ro, opt, string, 起始地址, range:[,]-->test
        </startIPAddress>
        <endIPAddress>
          <!--ro, opt, string, 结束地址, range:[,]-->test
        </endIPAddress>
        <startIPv6Address>
          <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
        </startIPv6Address>
        <endIPv6Address>
          <!--ro, opt, string, 结束地址（ipv6）, range:[,]-->test
        </endIPv6Address>
      </AddressRange>
      <AddressMask>
        <!--ro, opt, object, 地址掩码-->
        <ipAddress>
          <!--ro, opt, string, ip地址, range:[,]-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, ipv6地址, range:[,]-->test
        </ipv6Address>
        <bitMask>
          <!--ro, req, string, 位掩码, range:[,]-->test
        </bitMask>
      </AddressMask>
    </IPFilterAddress>
  </IPFilterAddressList>
</PlatformAccessFilter>

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

8. 获取EHome接入地址过滤

8.1 命令

GET /ISAPI/System/Network/platformAccessFilter/EHOME

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 平台接入过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <IPFilterAddressList>
    <!--ro, opt, array, ip过滤地址列表, subType:object, range:[,]-->
    <IPFilterAddress>
      <!--ro, req, object, ip地址过滤-->
      <id>
        <!--ro, req, string, id, range:[,]-->test
      </id>
      <permissionType>
        <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
      </permissionType>
      <addressFilterType>
        <!--ro, req, enum, 地址过滤类型, subType:string, [mask#标签,range#范围]-->mask
      </addressFilterType>
      <AddressRange>
        <!--ro, opt, object, 地址范围-->
        <startIPAddress>
          <!--ro, opt, string, 起始地址, range:[,]-->test
        </startIPAddress>
        <endIPAddress>
          <!--ro, opt, string, 结束地址, range:[,]-->test
        </endIPAddress>
        <startIPv6Address>
          <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
        </startIPv6Address>
        <endIPv6Address>
          <!--ro, opt, string, 结束地址（ipv6）, range:[,]-->test
        </endIPv6Address>
      </AddressRange>
      <AddressMask>
        <!--ro, opt, object, 地址掩码-->
        <ipAddress>
          <!--ro, opt, string, ip地址, range:[,]-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, ipv6地址, range:[,]-->test
        </ipv6Address>
        <bitMask>
          <!--ro, req, string, 位掩码, range:[,]-->test
        </bitMask>
      </AddressMask>
    </IPFilterAddress>
  </IPFilterAddressList>
</PlatformAccessFilter>

9. 配置EHome接入地址过滤

9.1 命令

PUT /ISAPI/System/Network/platformAccessFilter/EHOME

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 平台接入过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <IPFilterAddressList>
    <!--opt, array, ip过滤地址列表, subType:object, range:[,]-->
    <IPFilterAddress>
      <!--ro, req, object, ip地址过滤-->
      <id>
        <!--ro, req, string, id, range:[,]-->test
      </id>
      <permissionType>
        <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
      </permissionType>
      <addressFilterType>
        <!--ro, req, enum, 地址过滤类型, subType:string, [mask#标签,range#范围]-->mask
      </addressFilterType>
      <AddressRange>
        <!--ro, opt, object, 地址范围-->
        <startIPAddress>
          <!--ro, opt, string, 起始地址, range:[,]-->test
        </startIPAddress>
        <endIPAddress>
          <!--ro, opt, string, 结束地址, range:[,]-->test
        </endIPAddress>
        <startIPv6Address>
          <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
        </startIPv6Address>
        <endIPv6Address>
          <!--ro, opt, string, 结束地址（ipv6）, range:[,]-->test
        </endIPv6Address>
      </AddressRange>
      <AddressMask>
        <!--ro, opt, object, 地址掩码-->
        <ipAddress>
          <!--ro, opt, string, ip地址, range:[,]-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, ipv6地址, range:[,]-->test
        </ipv6Address>
        <bitMask>
          <!--ro, req, string, 位掩码, range:[,]-->test
        </bitMask>
      </AddressMask>
    </IPFilterAddress>
  </IPFilterAddressList>
</PlatformAccessFilter>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取网络资源信息

10.1 命令

GET /ISAPI/System/Network/resourceStatistics?format=json

10.2 输入参数

无

10.3 输出参数

{
    "inputBandwidth":  0.000,
    /*ro, opt, float, 输入带宽, range:[,], step:, unit:, unitType:*/
    "outputBandwidth":  0.000,
    /*ro, opt, float, 输出带宽, range:[,], step:, unit:, unitType:*/
    "StreamingInformation": [
    /*ro, opt, array, 码流信息, subType:object, range:[,]*/
        {
            "moduleType":  "remoteStreaming",
            /*ro, opt, string, 模块类型, range:[,]*/
            "ipAddress":  "172.6.64.7",
            /*ro, opt, string, 设备IPv4地址, range:[,]*/
            "ipv6Address":  "test",
            /*ro, opt, string, 设备IPv6地址, range:[,]*/
            "bandwidth":  0.000
            /*ro, opt, float, 带宽, range:[,], step:, unit:, unitType:*/
        }
    ],
    "inputPictureBandwidth":  0.000,
    /*ro, opt, float, 图片输入带宽, range:[,], step:, unit:, unitType:*/
    "outputPictureBandwidth":  0.000
    /*ro, opt, float, 图片输出带宽, range:[,], step:, unit:, unitType:*/
}

11. 获取POE端口参数

11.1 命令

GET /ISAPI/System/Network/POE/server?format=json

11.2 输入参数

无

11.3 输出参数

{
    "ports": [
    /*ro, opt, array, 端口列表, subType:object, range:[,]*/
        {
            "ID":  1,
            /*ro, req, int, POE number, range:[,], step:, unit:, unitType:*/
            "enabled":  true,
            /*ro, req, bool, 使能*/
            "connectStatus":  "connected",
            /*ro, opt, enum, 连接状态, subType:string, [connected#已连接,unconnect#未连接]*/
            "usePower":  10,
            /*ro, opt, int, 已用功率, range:[,], step:, unit:W, unitType:功率*/
            "maxPower":  10
            /*ro, opt, int, 最大功率, range:[,], step:, unit:W, unitType:功率*/
        }
    ],
    "totalPower":  10
    /*ro, opt, int, 总功率, range:[,], step:, unit:W, unitType:功率*/
}

12. 配置POE端口

12.1 命令

PUT /ISAPI/System/Network/POE/server?format=json

12.2 输入参数

{
    "ports": [
    /*opt, array, 端口表, subType:object, range:[,]*/
        {
            "ID":  1,
            /*req, int, POE number, range:[,], step:, unit:, unitType:*/
            "enabled":  true
            /*req, bool, true*/
        }
    ]
}

12.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

13. 获取带宽限制参数能力

13.1 命令

GET /ISAPI/System/Network/bandwidthLimit/capabilities?format=json

13.2 输入参数

无

13.3 输出参数

{
    "BandwidthLimit": {
    /*ro, req, object, 带宽限制信息*/
        "RecordDownload": {
        /*ro, opt, object, 录像下载信息*/
            "maxBandwidth": {
            /*ro, opt, object, 最大带宽*/
                "@min":  0,
                /*ro, opt, int, 最小带宽, range:[,], step:, unit:, unitType:*/
                "@max":  0,
                /*ro, opt, int, 最大带宽, range:[,], step:, unit:, unitType:*/
                "#text":  0
                /*ro, req, int, 最大带宽, range:[,], step:, unit:, unitType:*/
            }
        }
    }
}

14. 获取带宽限制配置

14.1 命令

GET /ISAPI/System/Network/bandwidthLimit?format=json

14.2 输入参数

无

14.3 输出参数

{
    "BandwidthLimit": {
    /*ro, req, object, 带宽限制信息*/
        "RecordDownload": {
        /*ro, opt, object, 录像下载信息*/
            "maxBandwidth":  0
            /*ro, req, int, 最大带宽, range:[,], step:, unit:, unitType:*/
        }
    }
}

15. 配置带宽限制

15.1 命令

PUT /ISAPI/System/Network/bandwidthLimit?format=json

15.2 输入参数

{
    "BandwidthLimit": {
    /*ro, req, object, 带宽限制信息*/
        "RecordDownload": {
        /*ro, opt, object, 录像下载信息*/
            "maxBandwidth":  0
            /*ro, req, int, 最大带宽, range:[,], step:, unit:, unitType:*/
        }
    }
}

15.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

16. 获取单个拨号配置

16.1 命令

GET /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WirelessDialInterface xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 无线拨号配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, ID, range:[,]-->test
  </id>
  <Dial>
    <!--ro, opt, object, 拨号-->
    <enabled>
      <!--ro, req, bool, 开启-->true
    </enabled>
    <DialMethod>
      <!--ro, req, enum, 拨号方式, subType:string, [auto#自动,manual#手动]-->auto
    </DialMethod>
    <SwitchMethod>
      <!--ro, req, enum, 切换方式, subType:string, [auto#自动,4GFirst#4G优先,3GFirst#3G优先,manualto2G#手动切为2G,manualto3G#手动切为3G,manualto4G#手动切为4G,5GFirst#5G优先,manualto5G#手动切为5G]-->auto
    </SwitchMethod>
    <OfflineTime>
      <!--ro, opt, int, 离线时间, range:[,], step:, unit:, unitType:-->0
    </OfflineTime>
    <UIMCardNum>
      <!--ro, opt, string, UIM卡序号, range:[,]-->test
    </UIMCardNum>
    <DialNum>
      <!--ro, opt, string, 拨号序号, range:[,]-->test
    </DialNum>
    <Username>
      <!--ro, opt, string, 用户名, range:[,]-->test
    </Username>
    <Password>
      <!--ro, opt, string, 密码, range:[,]-->test
    </Password>
    <APNname>
      <!--ro, opt, string, APN名称, range:[,]-->test
    </APNname>
    <MTU>
      <!--ro, opt, int, MTU, range:[,], step:, unit:, unitType:-->0
    </MTU>
    <VerifyProto>
      <!--ro, req, enum, 认证协议, subType:string, [auto#自动,CHAP#CHAP,PAP#PAP]-->auto
    </VerifyProto>
    <DefaultParam>
      <!--ro, opt, object, 默认参数-->
      <DialNum>
        <!--ro, opt, string, 拨号序号, range:[,]-->test
      </DialNum>
      <Username>
        <!--ro, opt, string, 用户名, range:[,]-->test
      </Username>
      <Password>
        <!--ro, opt, string, 密码, range:[,]-->test
      </Password>
      <APNname>
        <!--ro, opt, string, APN名称, range:[,]-->test
      </APNname>
      <VerifyProto>
        <!--ro, req, enum, 认证协议, subType:string, [auto#自动,CHAP#CHAP,PAP#PAP]-->auto
      </VerifyProto>
    </DefaultParam>
    <netAPN>
      <!--ro, opt, string, 私有专网APN配置, range:[,]-->test
    </netAPN>
    <enabled4G>
      <!--ro, opt, bool, 开启4G-->true
    </enabled4G>
    <enabledDNS>
      <!--ro, opt, bool, 是否开启DNS手动配置-->true
    </enabledDNS>
    <Flow>
      <!--ro, opt, object, 流量配置-->
      <limitEnabled>
        <!--ro, opt, bool, 流量限额使能-->true
      </limitEnabled>
      <consumeFlow>
        <!--ro, opt, float, 使用流量, range:[,], step:, unit:MB, unitType:信息量-->0.000
      </consumeFlow>
      <threshold>
        <!--ro, opt, int, 限额, range:[,], step:, unit:MB, unitType:信息量-->1
      </threshold>
    </Flow>
    <pinCode>
      <!--ro, opt, string, PIN码, range:[,]-->test
    </pinCode>
    <SIMCardNo>
      <!--ro, opt, int, SIM卡的个数, range:[,], step:, unit:, unitType:-->0
    </SIMCardNo>
  </Dial>
  <Schedule>
    <!--ro, opt, object, 计划-->
    <TimeBlockList size="8">
      <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <id>
        <!--ro, opt, string, ID, range:[,]-->test
      </id>
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <dayOfWeek>
          <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--ro, opt, object, 布防时间-->
        <TimeRange>
          <!--ro, req, object, 时间段-->
          <beginTime>
            <!--ro, req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--ro, req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
  <Dialstatus>
    <!--ro, opt, object, 拨号状态-->
    <RealtimeMode>
      <!--ro, req, enum, 实时模式, subType:string, [CDMA 1x#CDMA 1x,EVDO#EVDO,HYBRID#HYBRID,GSM#GSM,GPRS#GPRS,EDGE#EDGE,WCDMA#WCDMA,HSDPA#HSDPA,HSUPA#HSUPA,HSPA#HSPA,TDSCDMA#TDSCDMA,TDLTE#TDLTE,FDDLTE#FDDLTE,LTE#LTE,UNKNOWN#UNKNOWN,SANR#SANR,NSANR#NSANR]-->CDMA 1x
    </RealtimeMode>
    <UIMInfo>
      <!--ro, opt, enum, UIM卡状态, subType:string, [UNKNOWN#未知,VALID#有效,NOVALID#无效,NOEXIST#未插入SIM卡,WRONGPINCODE#PIN码错误,NONETWORKSERVICE#无网络服务,ONLYSUPPORTEMERGENCYCALL#网络仅支持紧急呼叫]-->UNKNOWN
    </UIMInfo>
    <NetworkStatus>
      <!--ro, req, enum, 网络状态, subType:string, [2G#2G,3G#3G,4G#4G,Unknown#未知,5G#5G]-->2G
    </NetworkStatus>
    <SignalStrength>
      <!--ro, opt, int, 信号强度, range:[0,5], step:, unit:, unitType:-->0
    </SignalStrength>
    <Dialstat>
      <!--ro, opt, enum, 拨号状态, subType:string, [disconnect#拨号断开,dialing#正在拨号,success#拨号成功,shmError#拨号异常,certificationFailure#认证失败,invalidDialingCharacters#拨号字符无效,networkTimeout#网络超时,wirelessModemError#无线模块错误,SIMError#SIM卡错误,networkError#网络错误,unknown#未知错误]-->disconnect
    </Dialstat>
    <IpAddress>
      <!--ro, req, object, IP地址-->
      <ipAddress>
        <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </IpAddress>
    <SubnetMask>
      <!--ro, req, object, 子网掩码-->
      <ipAddress>
        <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </SubnetMask>
    <Gateway>
      <!--ro, req, object, 网关-->
      <ipAddress>
        <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </Gateway>
    <DNSAddress>
      <!--ro, req, object, DNS地址-->
      <ipAddress>
        <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </DNSAddress>
    <subDNSAddress>
      <!--ro, opt, object, 备用DNS地址-->
      <ipAddress>
        <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </subDNSAddress>
    <operator>
      <!--ro, opt, string, 运营商, range:[1,32], desc:具体支持类型待定,海外运营商比较多,设备从模块中获取到的,中文设备,如果设备能识别到会返回【中国移动,中国电信,中国联通】。其他的会显示获取到的字符串-->test
    </operator>
    <enableMessageConfig>
      <!--ro, opt, bool, 是否启用短信业务功能-->true
    </enableMessageConfig>
    <registrationStatus>
      <!--ro, opt, bool, 是否注册, desc:SIM卡是否注册到基站-->true
    </registrationStatus>
    <macAddress>
      <!--ro, opt, string, MAC地址, range:[1,64]-->00:01:6C:06:A6:29
    </macAddress>
  </Dialstatus>
  <messageConfig>
    <!--ro, opt, object, 消息配置-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <SMSWhiteList>
      <!--ro, opt, array, SMS授权名单列表, subType:object, range:[,]-->
      <ListMember>
        <!--ro, opt, object, 列表成员-->
        <id>
          <!--ro, req, string, ID, range:[,]-->test
        </id>
        <phoneNumber>
          <!--ro, req, string, 电话号码, range:[,]-->test
        </phoneNumber>
        <SupportEntryList>
          <!--ro, req, array, 支持进入列表, subType:object, range:[,]-->
          <SupportEntry>
            <!--ro, opt, object, 支持进入-->
            <entry>
              <!--ro, req, enum, SMSAlarm, subType:string, [SMSAlarm#SMS报警,SMSCtrl#SMS控制,CallCtrl#电话控制]-->SMSAlarm
            </entry>
            <enabled>
              <!--ro, opt, bool, 使能-->true
            </enabled>
          </SupportEntry>
        </SupportEntryList>
        <SMSAlarmTypeList>
          <!--ro, opt, array, SMS报警类型列表, subType:object, range:[,]-->
          <SMSAlarmType>
            <!--ro, opt, object, SMS报警类型-->
            <type>
              <!--ro, req, enum, 事件类型, subType:string, [diskfull#硬盘满,diskerror#硬盘错误,nicbroken#网线断,ipconflict#IP地址冲突,illaccess#非法访问,AlarmInErr#报警输入错误,tamper#遮盖,vmd#移动侦测,wireless#无线,pir#PIR,callhelp#呼救,AudioDetection#音频侦测,scenechangeDetection#场景变更,defocusDetection#虚焦侦测,facedetection#人脸侦测,LineDetection#越界侦测,FieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊,group#聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,dataPrealarm#数据预警,all#所有], desc:填all时根据事件联动方式判断,对应URL（/ISAPI/Event/triggers/<ID>）-->all
            </type>
            <enabled>
              <!--ro, opt, bool, 使能-->true
            </enabled>
          </SMSAlarmType>
        </SMSAlarmTypeList>
        <SMSCtrlTypeList>
          <!--ro, opt, array, SMS控制类型列表, subType:object, range:[,]-->
          <SMSCtrlType>
            <!--ro, opt, object, SMS控制类型-->
            <type>
              <!--ro, req, enum, 类型, subType:string, [messageReboot#短信重启]-->messageReboot
            </type>
            <enabled>
              <!--ro, opt, bool, 使能-->true
            </enabled>
          </SMSCtrlType>
        </SMSCtrlTypeList>
        <name>
          <!--ro, opt, string, 姓名, range:[,]-->test
        </name>
      </ListMember>
    </SMSWhiteList>
  </messageConfig>
  <messageList>
    <!--ro, opt, array, 信息列表, subType:object, range:[,]-->
    <message>
      <!--ro, opt, object, 消息-->
      <id>
        <!--ro, opt, string, ID, range:[,]-->test
      </id>
      <phoneNum>
        <!--ro, req, string, 电话号码, range:[,]-->test
      </phoneNum>
      <status>
        <!--ro, opt, string, 状态, range:[,]-->test
      </status>
      <time>
        <!--ro, opt, string, 时间, range:[,]-->test
      </time>
      <SMSContent>
        <!--ro, opt, string, SMS内容, range:[,]-->test
      </SMSContent>
    </message>
  </messageList>
</WirelessDialInterface>

17. 配置单个拨号

17.1 命令

PUT /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<WirelessDialInterface xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 无线拨号配置, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, ID, range:[,]-->test
  </id>
  <Dial>
    <!--opt, object, 拨号-->
    <enabled>
      <!--req, bool, 开启-->true
    </enabled>
    <DialMethod>
      <!--req, enum, 拨号方式, subType:string, [auto#自动,manual#手动]-->auto
    </DialMethod>
    <SwitchMethod>
      <!--req, enum, 切换方式, subType:string, [auto#自动,4GFirst#4G优先,3GFirst#3G优先,manualto2G#手动切为2G,manualto3G#手动切为3G,manualto4G#手动切为4G,5GFirst#5G优先,manualto5G#手动切为5G]-->auto
    </SwitchMethod>
    <OfflineTime>
      <!--opt, int, 离线时间, range:[,], step:, unit:, unitType:-->0
    </OfflineTime>
    <UIMCardNum>
      <!--opt, string, UIM卡序号, range:[,]-->test
    </UIMCardNum>
    <DialNum>
      <!--opt, string, 拨号序号, range:[,]-->test
    </DialNum>
    <Username>
      <!--opt, string, 用户名, range:[,]-->test
    </Username>
    <Password>
      <!--opt, string, 密码, range:[,]-->test
    </Password>
    <APNname>
      <!--opt, string, APN名称, range:[,]-->test
    </APNname>
    <MTU>
      <!--opt, int, MTU, range:[,], step:, unit:, unitType:-->0
    </MTU>
    <VerifyProto>
      <!--req, enum, 认证协议, subType:string, [auto#自动,CHAP#CHAP,PAP#PAP]-->auto
    </VerifyProto>
    <DefaultParam>
      <!--opt, object, 默认参数-->
      <DialNum>
        <!--opt, string, 拨号序号, range:[,]-->test
      </DialNum>
      <Username>
        <!--opt, string, 用户名, range:[,]-->test
      </Username>
      <Password>
        <!--opt, string, 密码, range:[,]-->test
      </Password>
      <APNname>
        <!--opt, string, APN名称, range:[,]-->test
      </APNname>
      <VerifyProto>
        <!--req, enum, 认证协议, subType:string, [auto#自动,CHAP#CHAP,PAP#PAP]-->auto
      </VerifyProto>
    </DefaultParam>
    <netAPN>
      <!--opt, string, 私有专网APN配置, range:[,]-->test
    </netAPN>
    <enabled4G>
      <!--opt, bool, 开启4G-->true
    </enabled4G>
    <enabledDNS>
      <!--opt, bool, 是否开启DNS手动配置-->true
    </enabledDNS>
    <Flow>
      <!--opt, object, 流量配置-->
      <limitEnabled>
        <!--opt, bool, 流量限额使能-->true
      </limitEnabled>
      <consumeFlow>
        <!--opt, float, 使用流量, range:[,], step:, unit:MB, unitType:信息量-->0.000
      </consumeFlow>
      <threshold>
        <!--opt, int, 限额, range:[,], step:, unit:MB, unitType:信息量-->1
      </threshold>
    </Flow>
    <pinCode>
      <!--opt, string, PIN码, range:[,]-->test
    </pinCode>
    <SIMCardNo>
      <!--opt, int, SIM卡的个数, range:[,], step:, unit:, unitType:-->0
    </SIMCardNo>
  </Dial>
  <Schedule>
    <!--opt, object, 计划-->
    <TimeBlockList size="8">
      <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <id>
        <!--opt, string, ID, range:[,]-->test
      </id>
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <dayOfWeek>
          <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
        </dayOfWeek>
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </TimeBlockList>
    <HolidayBlockList>
      <!--opt, array, 假日布防时间, subType:object, range:[,]-->
      <TimeBlock>
        <!--opt, object, 布防时间-->
        <TimeRange>
          <!--req, object, 时间段-->
          <beginTime>
            <!--req, time, 开始时间-->10:00:00
          </beginTime>
          <endTime>
            <!--req, time, 结束时间-->10:00:00
          </endTime>
        </TimeRange>
      </TimeBlock>
    </HolidayBlockList>
  </Schedule>
  <Dialstatus>
    <!--opt, object, 拨号状态-->
    <RealtimeMode>
      <!--req, enum, 实时模式, subType:string, [CDMA 1x#CDMA 1x,EVDO#EVDO,HYBRID#HYBRID,GSM#GSM,GPRS#GPRS,EDGE#EDGE,WCDMA#WCDMA,HSDPA#HSDPA,HSUPA#HSUPA,HSPA#HSPA,TDSCDMA#TDSCDMA,TDLTE#TDLTE,FDDLTE#FDDLTE,LTE#LTE,UNKNOWN#UNKNOWN,SANR#SANR,NSANR#NSANR]-->CDMA 1x
    </RealtimeMode>
    <UIMInfo>
      <!--opt, enum, UIM卡状态, subType:string, [UNKNOWN#未知,VALID#有效,NOVALID#无效,NOEXIST#未插入SIM卡,WRONGPINCODE#PIN码错误,NONETWORKSERVICE#无网络服务,ONLYSUPPORTEMERGENCYCALL#网络仅支持紧急呼叫]-->UNKNOWN
    </UIMInfo>
    <NetworkStatus>
      <!--req, enum, 网络状态, subType:string, [2G#2G,3G#3G,4G#4G,Unknown#未知,5G#5G]-->2G
    </NetworkStatus>
    <SignalStrength>
      <!--opt, int, 信号强度, range:[0,5], step:, unit:, unitType:-->0
    </SignalStrength>
    <Dialstat>
      <!--opt, enum, 拨号状态, subType:string, [disconnect#拨号断开,dialing#正在拨号,success#拨号成功,shmError#拨号异常,certificationFailure#认证失败,invalidDialingCharacters#拨号字符无效,networkTimeout#网络超时,wirelessModemError#无线模块错误,SIMError#SIM卡错误,networkError#网络错误,unknown#未知错误]-->disconnect
    </Dialstat>
    <IpAddress>
      <!--req, object, IP地址-->
      <ipAddress>
        <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </IpAddress>
    <SubnetMask>
      <!--req, object, 子网掩码-->
      <ipAddress>
        <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </SubnetMask>
    <Gateway>
      <!--req, object, 网关-->
      <ipAddress>
        <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </Gateway>
    <DNSAddress>
      <!--req, object, DNS地址-->
      <ipAddress>
        <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </DNSAddress>
    <subDNSAddress>
      <!--opt, object, 备用DNS地址-->
      <ipAddress>
        <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
      </ipAddress>
      <ipv6Address>
        <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
      </ipv6Address>
    </subDNSAddress>
    <operator>
      <!--opt, string, 运营商, range:[1,32], desc:具体支持类型待定,海外运营商比较多,设备从模块中获取到的,中文设备,如果设备能识别到会返回【中国移动,中国电信,中国联通】。其他的会显示获取到的字符串-->test
    </operator>
    <enableMessageConfig>
      <!--opt, bool, 是否启用短信业务功能-->true
    </enableMessageConfig>
    <registrationStatus>
      <!--opt, bool, 是否注册, desc:SIM卡是否注册到基站-->true
    </registrationStatus>
    <macAddress>
      <!--opt, string, MAC地址, range:[1,64]-->00:01:6C:06:A6:29
    </macAddress>
  </Dialstatus>
  <messageConfig>
    <!--opt, object, 消息配置-->
    <enabled>
      <!--req, bool, 使能-->true
    </enabled>
    <SMSWhiteList>
      <!--opt, array, SMS授权名单列表, subType:object, range:[,]-->
      <ListMember>
        <!--opt, object, 列表成员-->
        <id>
          <!--req, string, ID, range:[,]-->test
        </id>
        <phoneNumber>
          <!--req, string, 电话号码, range:[,]-->test
        </phoneNumber>
        <SupportEntryList>
          <!--req, array, 支持进入列表, subType:object, range:[,]-->
          <SupportEntry>
            <!--opt, object, 支持进入-->
            <entry>
              <!--req, enum, SMSAlarm, subType:string, [SMSAlarm#SMS报警,SMSCtrl#SMS控制,CallCtrl#电话控制]-->SMSAlarm
            </entry>
            <enabled>
              <!--opt, bool, 使能-->true
            </enabled>
          </SupportEntry>
        </SupportEntryList>
        <SMSAlarmTypeList>
          <!--opt, array, SMS报警类型列表, subType:object, range:[,]-->
          <SMSAlarmType>
            <!--opt, object, SMS报警类型-->
            <type>
              <!--req, enum, 事件类型, subType:string, [diskfull#硬盘满,diskerror#硬盘错误,nicbroken#网线断,ipconflict#IP地址冲突,illaccess#非法访问,AlarmInErr#报警输入错误,tamper#遮盖,vmd#移动侦测,wireless#无线,pir#PIR,callhelp#呼救,AudioDetection#音频侦测,scenechangeDetection#场景变更,defocusDetection#虚焦侦测,facedetection#人脸侦测,LineDetection#越界侦测,FieldDetection#区域入侵,regionEntrance#进入区域,regionExiting#离开区域,loitering#徘徊,group#聚集,rapidMove#快速移动,parking#停车,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,dataPrealarm#数据预警,all#所有], desc:填all时根据事件联动方式判断,对应URL（/ISAPI/Event/triggers/<ID>）-->all
            </type>
            <enabled>
              <!--opt, bool, 使能-->true
            </enabled>
          </SMSAlarmType>
        </SMSAlarmTypeList>
        <SMSCtrlTypeList>
          <!--opt, array, SMS控制类型列表, subType:object, range:[,]-->
          <SMSCtrlType>
            <!--opt, object, SMS控制类型-->
            <type>
              <!--req, enum, 类型, subType:string, [messageReboot#短信重启]-->messageReboot
            </type>
            <enabled>
              <!--opt, bool, 使能-->true
            </enabled>
          </SMSCtrlType>
        </SMSCtrlTypeList>
        <name>
          <!--opt, string, 姓名, range:[,]-->test
        </name>
      </ListMember>
    </SMSWhiteList>
  </messageConfig>
  <messageList>
    <!--opt, array, 信息列表, subType:object, range:[,]-->
    <message>
      <!--opt, object, 消息-->
      <id>
        <!--opt, string, ID, range:[,]-->test
      </id>
      <phoneNum>
        <!--req, string, 电话号码, range:[,]-->test
      </phoneNum>
      <status>
        <!--opt, string, 状态, range:[,]-->test
      </status>
      <time>
        <!--opt, string, 时间, range:[,]-->test
      </time>
      <SMSContent>
        <!--opt, string, SMS内容, range:[,]-->test
      </SMSContent>
    </message>
  </messageList>
</WirelessDialInterface>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取拨号计划参数

18.1 命令

GET /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/schedule

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <id>
      <!--ro, opt, string, 索引, range:[,]-->test
    </id>
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

19. 配置拨号计划参数

19.1 命令

PUT /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/schedule

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <id>
      <!--opt, string, 索引, range:[,]-->test
    </id>
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取拨号连接参数

20.1 命令

GET /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/dialstatus

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Dialstatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 拨号状态 , attr:version{req, string, 协议版本, range:[,]}-->
  <RealtimeMode>
    <!--ro, req, enum, 实时模式, subType:string, [CDMA 1x#CDMA 1x,EVDO#EVDO,HYBRID#HYBRID,GSM#GSM,GPRS#GPRS,EDGE#EDGE,WCDMA#WCDMA,HSDPA#HSDPA,HSUPA#HSUPA,HSPA#HSPA,TDSCDMA#TDSCDMA,TDLTE#TDLTE,FDDLTE#FDDLTE,LTE#LTE,UNKNOWN#UNKNOWN,SANR#SANR,NSANR#NSANR]-->CDMA 1x
  </RealtimeMode>
  <UIMInfo>
    <!--ro, opt, enum, UIM卡状态, subType:string, [UNKNOWN#未知,VALID#有效,NOVALID#无效,NOEXIST#未插入SIM卡,WRONGPINCODE#PIN码错误,NONETWORKSERVICE#无网络服务,ONLYSUPPORTEMERGENCYCALL#网络仅支持紧急呼叫]-->UNKNOWN
  </UIMInfo>
  <NetworkStatus>
    <!--ro, req, enum, 网络状态, subType:string, [2G#2G,3G#3G,4G#4G,Unknown#未知,5G#5G]-->2G
  </NetworkStatus>
  <SignalStrength>
    <!--ro, opt, int, 信号强度, range:[0,5], step:, unit:, unitType:-->0
  </SignalStrength>
  <Dialstat>
    <!--ro, opt, enum, 拨号状态, subType:string, [disconnect#拨号断开,dialing#正在拨号,success#拨号成功,shmError#拨号异常,certificationFailure#认证失败,invalidDialingCharacters#拨号字符无效,networkTimeout#网络超时,wirelessModemError#无线模块错误,SIMError#SIM卡错误,networkError#网络错误,unknown#未知错误]-->disconnect
  </Dialstat>
  <IpAddress>
    <!--ro, req, object, IP地址-->
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </IpAddress>
  <SubnetMask>
    <!--ro, req, object, 子网掩码-->
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </SubnetMask>
  <Gateway>
    <!--ro, req, object, 网关-->
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </Gateway>
  <DNSAddress>
    <!--ro, req, object, DNS地址-->
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </DNSAddress>
  <subDNSAddress>
    <!--ro, opt, object, 备用DNS地址-->
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </subDNSAddress>
  <operator>
    <!--ro, opt, string, 运营商, range:[1,32], desc:具体支持类型待定,海外运营商比较多,设备从模块中获取到的,中文设备,如果设备能识别到会返回【中国移动,中国电信,中国联通】。其他的会显示获取到的字符串-->test
  </operator>
  <enableMessageConfig>
    <!--ro, opt, bool, 是否启用短信业务功能-->true
  </enableMessageConfig>
  <registrationStatus>
    <!--ro, opt, bool, 是否注册, desc:SIM卡是否注册到基站-->true
  </registrationStatus>
  <macAddress>
    <!--ro, opt, string, MAC地址, range:[1,64]-->00:01:6C:06:A6:29
  </macAddress>
</Dialstatus>

21. 配置拨号连接参数

21.1 命令

PUT /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/dialstatus

21.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Dialstatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 拨号状态 , attr:version{req, string, 协议版本, range:[,]}-->
  <RealtimeMode>
    <!--ro, req, enum, 实时模式, subType:string, [CDMA 1x#CDMA 1x,EVDO#EVDO,HYBRID#HYBRID,GSM#GSM,GPRS#GPRS,EDGE#EDGE,WCDMA#WCDMA,HSDPA#HSDPA,HSUPA#HSUPA,HSPA#HSPA,TDSCDMA#TDSCDMA,TDLTE#TDLTE,FDDLTE#FDDLTE,LTE#LTE,UNKNOWN#UNKNOWN,SANR#SANR,NSANR#NSANR]-->CDMA 1x
  </RealtimeMode>
  <UIMInfo>
    <!--ro, opt, enum, UIM卡状态, subType:string, [UNKNOWN#未知,VALID#有效,NOVALID#无效,NOEXIST#未插入SIM卡,WRONGPINCODE#PIN码错误,NONETWORKSERVICE#无网络服务,ONLYSUPPORTEMERGENCYCALL#网络仅支持紧急呼叫]-->UNKNOWN
  </UIMInfo>
  <NetworkStatus>
    <!--ro, req, enum, 网络状态, subType:string, [2G#2G,3G#3G,4G#4G,Unknown#未知,5G#5G]-->2G
  </NetworkStatus>
  <SignalStrength>
    <!--ro, opt, int, 信号强度, range:[0,5], step:, unit:, unitType:-->0
  </SignalStrength>
  <Dialstat>
    <!--ro, opt, enum, 拨号状态, subType:string, [disconnect#拨号断开,dialing#正在拨号,success#拨号成功,shmError#拨号异常,certificationFailure#认证失败,invalidDialingCharacters#拨号字符无效,networkTimeout#网络超时,wirelessModemError#无线模块错误,SIMError#SIM卡错误,networkError#网络错误,unknown#未知错误]-->disconnect
  </Dialstat>
  <IpAddress>
    <!--req, object, IP地址-->
    <ipAddress>
      <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </IpAddress>
  <SubnetMask>
    <!--req, object, 子网掩码-->
    <ipAddress>
      <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </SubnetMask>
  <Gateway>
    <!--req, object, 网关-->
    <ipAddress>
      <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </Gateway>
  <DNSAddress>
    <!--req, object, DNS地址-->
    <ipAddress>
      <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </DNSAddress>
  <subDNSAddress>
    <!--opt, object, 备用DNS地址-->
    <ipAddress>
      <!--opt, string, ipv4地址, range:[1,15]-->202.101.172.37
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[1,63]-->1080::8:800:200C:417A
    </ipv6Address>
  </subDNSAddress>
  <operator>
    <!--ro, opt, string, 运营商, range:[1,32], desc:具体支持类型待定,海外运营商比较多,设备从模块中获取到的,中文设备,如果设备能识别到会返回【中国移动,中国电信,中国联通】。其他的会显示获取到的字符串-->test
  </operator>
  <enableMessageConfig>
    <!--opt, bool, 是否启用短信业务功能-->true
  </enableMessageConfig>
  <registrationStatus>
    <!--ro, opt, bool, 是否注册, desc:SIM卡是否注册到基站-->true
  </registrationStatus>
</Dialstatus>

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

22. 配置单个拨号连接状态

22.1 命令

PUT /ISAPI/System/Network/WirelessDial/Interfaces/<interfaceID>/connect

22.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Connect xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 拨号连接状态, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 是否开启-->true
  </enabled>
</Connect>

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

23. 获取热点服务能力

23.1 命令

GET /ISAPI/System/Network/interfaces/<interfaceID>/wirelessServer/capabilities

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WirelessServer xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">test
  <!--ro, opt, string, true, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <wifiApEnabled>
    <!--ro, opt, bool, true-->true
  </wifiApEnabled>
  <broadcastEnabled>
    <!--ro, opt, bool, true-->true
  </broadcastEnabled>
  <wlanShareEnabled>
    <!--ro, opt, bool, true-->true
  </wlanShareEnabled>
  <ssid min="1" max="10">
    <!--ro, opt, string, SSID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ssid>
  <WirelessSecurity>
    <!--ro, req, object, 无线安全-->
    <securityMode opt="disable,WEP,WPA-personal,WPA2-personal,WPA-RADIUS,WPA-enterprise,WPA2-enterprise">
      <!--ro, opt, string, 安全模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
    </securityMode>
    <WEP>
      <!--ro, opt, object, WEP-->
      <authenticationType opt="open,sharedkey,auto">
        <!--ro, req, string, 认证类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </authenticationType>
      <defaultTransmitKeyIndex min="1" max="10">
        <!--ro, req, int, 默认转换Key序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </defaultTransmitKeyIndex>
      <wepKeyLength opt="64,128">
        <!--ro, opt, int, 128, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
      </wepKeyLength>
      <EncryptionKeyList size="2">
        <!--ro, opt, object, 加密Key列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <encryptionKey>
          <!--ro, req, string, 加密key, range:[,]-->test
        </encryptionKey>
      </EncryptionKeyList>
    </WEP>
    <WPA>
      <!--ro, opt, object, WPA-->
      <algorithmType opt="TKIP,AES,TKIP/AES">
        <!--ro, req, string, TKIP, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
      </algorithmType>
      <sharedKey>
        <!--ro, opt, string, pre-shared key used in WPA, range:[,]-->test
      </sharedKey>
      <wpaKeyLength min="1" max="10">
        <!--ro, opt, int, 8-63, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </wpaKeyLength>
      <defaultPassword>
        <!--ro, opt, bool, 默认密码-->true
      </defaultPassword>
    </WPA>
  </WirelessSecurity>
  <DHCPEnabled>
    <!--ro, opt, bool, true-->true
  </DHCPEnabled>
  <ipVersion opt="v4,v6">
    <!--ro, opt, string, ip版本, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </ipVersion>
  <HostIpAddress>
    <!--ro, opt, object, 主机IP地址-->
    <ipAddress>
      <!--ro, opt, string, IPV4, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6, range:[,]-->test
    </ipv6Address>
  </HostIpAddress>
  <IPMask>
    <!--ro, opt, object, ip掩码-->
    <subnetMask>
      <!--ro, opt, string, 子网掩码, range:[,]-->test
    </subnetMask>
    <bitMask>
      <!--ro, opt, string, 字节掩码, range:[,]-->test
    </bitMask>
  </IPMask>
  <AddressPool>
    <!--ro, opt, object, 地址池-->
    <startIPV4Address>
      <!--ro, opt, string, 起始地址, range:[,]-->test
    </startIPV4Address>
    <endIPV4Address>
      <!--ro, opt, string, 结束地址, range:[,]-->test
    </endIPV4Address>
    <startIPV6Address>
      <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
    </startIPV6Address>
    <endIPV6Address>
      <!--ro, opt, string, 截止地址（ipv6）, range:[,]-->test
    </endIPV6Address>
  </AddressPool>
  <DNSAddressList size="2">
    <!--ro, opt, object, DNS地址列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <DNSAddress>
      <!--ro, opt, object, DNS地址-->
      <id>
        <!--ro, opt, string, start from 1, range:[,]-->test
      </id>
      <ipAddress>
        <!--ro, opt, string, ipv4, range:[,]-->test
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6, range:[,]-->test
      </ipv6Address>
    </DNSAddress>
  </DNSAddressList>
  <GatewayAddress>
    <!--ro, opt, object, 网关地址-->
    <ipAddress>
      <!--ro, opt, string, ipv4, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6, range:[,]-->test
    </ipv6Address>
  </GatewayAddress>
  <wifiApModeType opt="true,false,auto,maintenance">
    <!--ro, opt, string, wifi模式类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:true#开启,false#关闭,auto#自动模式,maintenance#维护模式-->true
  </wifiApModeType>
  <rate>
    <!--ro, opt, string, 频率, range:[,]-->test
  </rate>
</WirelessServer>

24. 获取热点服务参数

24.1 命令

GET /ISAPI/System/Network/interfaces/<interfaceID>/wirelessServer

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<WirelessServer xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 热点服务参数, attr:version{req, string, 协议版本, range:[,]}-->
  <wifiApEnabled>
    <!--ro, opt, bool, wifiAP使能-->true
  </wifiApEnabled>
  <broadcastEnabled>
    <!--ro, opt, bool, 广播使能-->true
  </broadcastEnabled>
  <wlanShareEnabled>
    <!--ro, opt, bool, 无线共享使能-->true
  </wlanShareEnabled>
  <ssid min="0" max="10">
    <!--ro, opt, string, wifi名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ssid>
  <WirelessSecurity>
    <!--ro, opt, object, 无线安全-->
    <securityMode opt="disable,WEP,WPA-personal,WPA2-personal,WPA-RADIUS,WPA-enterprise,WPA2-enterprise">
      <!--ro, opt, enum, 安全模式, subType:string, [disable#disable,WEP#WEP,WPA-personal#WPA-personal,WPA2-personal#WPA2-personal,WPA-RADIUS#WPA-RADIUS,WPA-enterprise#WPA-enterprise,WPA2-enterprise#WPA2-enterprise], attr:opt{req, string, 取值范围, range:[,]}-->disable
    </securityMode>
    <WEP>
      <!--ro, opt, object, WEP参数-->
      <authenticationType opt="open,sharedkey,auto">
        <!--ro, req, enum, 认证方式, subType:string, [open#open,sharedkey#sharedkey,auto#auto], attr:opt{req, string, 取值范围, range:[,]}-->open
      </authenticationType>
      <defaultTransmitKeyIndex min="0" max="10">
        <!--ro, req, int, 默认传输密钥索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </defaultTransmitKeyIndex>
      <wepKeyLength opt="64,128">
        <!--ro, opt, enum, wep密钥长度, subType:int, [64#64,128#128], attr:opt{req, string, 取值范围, range:[,]}-->64
      </wepKeyLength>
      <EncryptionKeyList size="10">
        <!--ro, opt, array, WEP加密密码列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <encryptionKey>
          <!--ro, req, string, 16进制格式WEP加密密码, range:[,]-->test
        </encryptionKey>
      </EncryptionKeyList>
    </WEP>
    <WPA>
      <!--ro, opt, object, WPA参数-->
      <algorithmType opt="TKIP,AES,TKIP/AES">
        <!--ro, req, enum, 算法类型, subType:string, [TKIP#TKIP,AES#AES,TKIP/AES#TKIP/AES], attr:opt{req, string, 取值范围, range:[,]}-->TKIP
      </algorithmType>
      <sharedKey>
        <!--ro, opt, string, 共享密钥, range:[,]-->test
      </sharedKey>
      <wpaKeyLength min="8" max="63">
        <!--ro, opt, int, wpa密钥长度, range:[8,63], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->8
      </wpaKeyLength>
      <defaultPassword>
        <!--ro, opt, bool, 默认密码-->true
      </defaultPassword>
    </WPA>
  </WirelessSecurity>
  <DHCPEnabled>
    <!--ro, opt, bool, DHCP使能-->true
  </DHCPEnabled>
  <ipVersion opt="v4,v6">
    <!--ro, opt, enum, ip版本, subType:string, [v4#v4,v6#v6], attr:opt{req, string, 取值范围, range:[,]}-->v4
  </ipVersion>
  <HostIpAddress>
    <!--ro, opt, object, 主机IP地址-->
    <ipAddress>
      <!--ro, opt, string, IPv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, IPv6地址, range:[,]-->test
    </ipv6Address>
  </HostIpAddress>
  <IPMask>
    <!--ro, opt, object, IP地址掩码-->
    <subnetMask>
      <!--ro, opt, string, IPv4地址子网掩码, range:[,]-->test
    </subnetMask>
    <bitMask>
      <!--ro, opt, int, IPv6地址位掩码, range:[,], step:, unit:, unitType:-->0
    </bitMask>
  </IPMask>
  <AddressPool>
    <!--ro, opt, object, 地址池-->
    <startIPV4Address>
      <!--ro, opt, string, 开始IPv4地址, range:[,]-->test
    </startIPV4Address>
    <endIPV4Address>
      <!--ro, opt, string, 结束IPv4地址, range:[,]-->test
    </endIPV4Address>
    <startIPV6Address>
      <!--ro, opt, string, 开始IPv6地址, range:[,]-->test
    </startIPV6Address>
    <endIPV6Address>
      <!--ro, opt, string, 结束IPv6地址, range:[,]-->test
    </endIPV6Address>
  </AddressPool>
  <DNSAddressList size="2">
    <!--ro, opt, array, DNS地址列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <DNSAddress>
      <!--ro, opt, object, DNS地址-->
      <id>
        <!--ro, opt, string, 索引, range:[,]-->test
      </id>
      <ipAddress>
        <!--ro, opt, string, IPv4地址, range:[,]-->test
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, IPv6地址, range:[,]-->test
      </ipv6Address>
    </DNSAddress>
  </DNSAddressList>
  <GatewayAddress>
    <!--ro, opt, object, 网关-->
    <ipAddress>
      <!--ro, opt, string, IPv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, IPv6地址, range:[,]-->test
    </ipv6Address>
  </GatewayAddress>
  <wifiApModeType>
    <!--ro, opt, enum, 启用WLanAP热点模式, subType:string, [true#开启,false#关闭,auto#自动模式,maintenance#维护模式],
desc:兼容性说明：
              当设备返回节点<wifiApModeType>，表示设备支持多种模式（自动或维护）；
              新客户端（支持自动、维护模式配置），使用<wifiApModeType>控制前端设备；
              老客户端（不支持自动、维护模式配置），使用<wifiApEnabled>控制前端设备；
              <wifiApEnabled>配置的值是直接影响<wifiApModeType>的值；
              同理：
              <wifiApModeType>的值也会影响<wifiApEnabled>；
              当前<wifiApModeType>==auto/maintenance的时候，<wifiApEnabled> == true-->true
  </wifiApModeType>
  <rate>
    <!--ro, opt, enum, 频率, subType:string, [2.4GHz#2.4GHz,5GHz#5GHz,auto#auto], desc:默认为auto-->auto
  </rate>
</WirelessServer>

25. 配置热点服务参数

25.1 命令

PUT /ISAPI/System/Network/interfaces/<interfaceID>/wirelessServer

25.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<WirelessServer xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 热点服务参数, attr:version{req, string, 协议版本, range:[,]}-->
  <wifiApEnabled>
    <!--opt, bool, wifiAP使能-->true
  </wifiApEnabled>
  <broadcastEnabled>
    <!--opt, bool, 广播使能-->true
  </broadcastEnabled>
  <wlanShareEnabled>
    <!--opt, bool, 无线共享使能-->true
  </wlanShareEnabled>
  <ssid min="0" max="10">
    <!--opt, string, wifi名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </ssid>
  <WirelessSecurity>
    <!--opt, object, 无线安全-->
    <securityMode opt="disable,WEP,WPA-personal,WPA2-personal,WPA-RADIUS,WPA-enterprise,WPA2-enterprise">
      <!--opt, enum, 安全模式, subType:string, [disable#disable,WEP#WEP,WPA-personal#WPA-personal,WPA2-personal#WPA2-personal,WPA-RADIUS#WPA-RADIUS,WPA-enterprise#WPA-enterprise,WPA2-enterprise#WPA2-enterprise], attr:opt{req, string, 取值范围, range:[,]}-->disable
    </securityMode>
    <WEP>
      <!--opt, object, WEP参数-->
      <authenticationType opt="open,sharedkey,auto">
        <!--req, enum, 认证方式, subType:string, [open#open,sharedkey#sharedkey,auto#auto], attr:opt{req, string, 取值范围, range:[,]}-->open
      </authenticationType>
      <defaultTransmitKeyIndex min="0" max="10">
        <!--req, int, 默认传输密钥索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
      </defaultTransmitKeyIndex>
      <wepKeyLength opt="64,128">
        <!--opt, enum, wep密钥长度, subType:int, [64#64,128#128], attr:opt{req, string, 取值范围, range:[,]}-->64
      </wepKeyLength>
      <EncryptionKeyList size="10">
        <!--opt, array, WEP加密密码列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
        <encryptionKey>
          <!--req, string, 16进制格式WEP加密密码, range:[,]-->test
        </encryptionKey>
      </EncryptionKeyList>
    </WEP>
    <WPA>
      <!--opt, object, WPA参数-->
      <algorithmType opt="TKIP,AES,TKIP/AES">
        <!--req, enum, 算法类型, subType:string, [TKIP#TKIP,AES#AES,TKIP/AES#TKIP/AES], attr:opt{req, string, 取值范围, range:[,]}-->TKIP
      </algorithmType>
      <sharedKey>
        <!--opt, string, 共享密钥, range:[,]-->test
      </sharedKey>
      <wpaKeyLength min="8" max="63">
        <!--opt, int, wpa密钥长度, range:[8,63], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->8
      </wpaKeyLength>
      <defaultPassword>
        <!--opt, bool, 默认密码-->true
      </defaultPassword>
    </WPA>
  </WirelessSecurity>
  <DHCPEnabled>
    <!--opt, bool, DHCP使能-->true
  </DHCPEnabled>
  <ipVersion opt="v4,v6">
    <!--opt, enum, ip版本, subType:string, [v4#v4,v6#v6], attr:opt{req, string, 取值范围, range:[,]}-->v4
  </ipVersion>
  <HostIpAddress>
    <!--opt, object, 主机IP地址-->
    <ipAddress>
      <!--opt, string, IPv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, IPv6地址, range:[,]-->test
    </ipv6Address>
  </HostIpAddress>
  <IPMask>
    <!--opt, object, IP地址掩码-->
    <subnetMask>
      <!--opt, string, IPv4地址子网掩码, range:[,]-->test
    </subnetMask>
    <bitMask>
      <!--opt, int, IPv6地址位掩码, range:[,], step:, unit:, unitType:-->0
    </bitMask>
  </IPMask>
  <AddressPool>
    <!--opt, object, 地址池-->
    <startIPV4Address>
      <!--opt, string, 开始IPv4地址, range:[,]-->test
    </startIPV4Address>
    <endIPV4Address>
      <!--opt, string, 结束IPv4地址, range:[,]-->test
    </endIPV4Address>
    <startIPV6Address>
      <!--opt, string, 开始IPv6地址, range:[,]-->test
    </startIPV6Address>
    <endIPV6Address>
      <!--opt, string, 结束IPv6地址, range:[,]-->test
    </endIPV6Address>
  </AddressPool>
  <DNSAddressList size="2">
    <!--opt, array, DNS地址列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <DNSAddress>
      <!--opt, object, DNS地址-->
      <id>
        <!--opt, string, 索引, range:[,]-->test
      </id>
      <ipAddress>
        <!--opt, string, IPv4地址, range:[,]-->test
      </ipAddress>
      <ipv6Address>
        <!--opt, string, IPv6地址, range:[,]-->test
      </ipv6Address>
    </DNSAddress>
  </DNSAddressList>
  <GatewayAddress>
    <!--opt, object, 网关-->
    <ipAddress>
      <!--opt, string, IPv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, IPv6地址, range:[,]-->test
    </ipv6Address>
  </GatewayAddress>
  <wifiApModeType>
    <!--ro, opt, enum, 启用WLanAP热点模式, subType:string, [true#开启,false#关闭,auto#自动模式,maintenance#维护模式],
desc:兼容性说明：
              当设备返回节点<wifiApModeType>，表示设备支持多种模式（自动或维护）；
              新客户端（支持自动、维护模式配置），使用<wifiApModeType>控制前端设备；
              老客户端（不支持自动、维护模式配置），使用<wifiApEnabled>控制前端设备；
              <wifiApEnabled>配置的值是直接影响<wifiApModeType>的值；
              同理：
              <wifiApModeType>的值也会影响<wifiApEnabled>；
              当前<wifiApModeType>==auto/maintenance的时候，<wifiApEnabled> == true-->true
  </wifiApModeType>
  <rate>
    <!--opt, enum, 频率, subType:string, [2.4GHz#2.4GHz,5GHz#5GHz,auto#auto], desc:默认为auto-->auto
  </rate>
</WirelessServer>

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

26. 获取GB28181服务参数能力

26.1 命令

GET /ISAPI/System/Network/GB28181Service/capabilities

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GB28181Service xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, GB28181服务配置, attr:version{req, string, 协议版本, range:[,]}-->
  <serverID size="20">
    <!--ro, opt, string, SIP服务ID, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->test
  </serverID>
  <port min="1025" max="65535">
    <!--ro, opt, int, SIP端口号, range:[1025,65535], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1025
  </port>
  <enabled opt="true,false">
    <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <authPasswd min="5" max="16">
    <!--ro, opt, string, 密码, range:[5,16], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </authPasswd>
  <liveTime min="5" max=" 3600">
    <!--ro, opt, int, 保活时间, range:[5,3600], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->5
  </liveTime>
  <heartbeatCount min="3" max="255">
    <!--ro, opt, int, 最大心跳超时次数, range:[3,255], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->3
  </heartbeatCount>
  <autoAddIPC>
    <!--ro, opt, bool, 自动添加IPC-->true
  </autoAddIPC>
  <getStreamProtocol opt="tcp,udp">
    <!--ro, opt, enum, 取流协议类型, subType:string, [tcp#tcp,udp#udp], attr:opt{req, string, 取值范围, range:[,]}-->tcp
  </getStreamProtocol>
  <GB35114>
    <!--ro, opt, object, 国密参数-->
    <enabled opt="true,false">
      <!--ro, req, bool, 开启国密 , attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <authType opt="1,2">
      <!--ro, req, int, 认证方式, range:[1,2], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:[1#单向认证,2#双向认证]-->1
    </authType>
  </GB35114>
</GB28181Service>

27. 获取GB28181服务参数

27.1 命令

GET /ISAPI/System/Network/GB28181Service

27.2 输入参数

无

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<GB28181Service xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, GB28181服务配置, attr:version{req, string, 协议版本, range:[,]}-->
  <serverID>
    <!--ro, opt, string, SIP服务ID, range:[,]-->test
  </serverID>
  <port>
    <!--ro, opt, int, SIP端口号, range:[1025,65535], step:, unit:, unitType:-->1025
  </port>
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <authPasswd>
    <!--ro, opt, string, 密码, range:[5,16]-->test
  </authPasswd>
  <liveTime>
    <!--ro, opt, int, 保活时间, range:[5,3600], step:, unit:, unitType:-->5
  </liveTime>
  <heartbeatCount>
    <!--ro, opt, int, 最大心跳超时次数, range:[3,255], step:, unit:, unitType:-->3
  </heartbeatCount>
  <autoAddIPC>
    <!--ro, opt, bool, 自动添加IPC-->true
  </autoAddIPC>
  <getStreamProtocol>
    <!--ro, opt, enum, 取流协议类型, subType:string, [tcp#tcp,udp#udp]-->tcp
  </getStreamProtocol>
  <GB35114>
    <!--ro, opt, object, 国密参数-->
    <enabled>
      <!--ro, req, bool, 开启国密-->true
    </enabled>
    <authType>
      <!--ro, req, enum, 认证方式, subType:int, [1#单向认证,2#双向认证], desc:[]-->1
    </authType>
  </GB35114>
</GB28181Service>

28. 配置GB28181服务参数

28.1 命令

PUT /ISAPI/System/Network/GB28181Service

28.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<GB28181Service xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, GB28181服务配置, attr:version{req, string, 协议版本, range:[,]}-->
  <serverID>
    <!--opt, string, SIP服务ID, range:[,]-->test
  </serverID>
  <port>
    <!--opt, int, SIP端口号, range:[1025,65535], step:, unit:, unitType:-->1025
  </port>
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <authPasswd>
    <!--opt, string, 密码, range:[5,16]-->test
  </authPasswd>
  <liveTime>
    <!--opt, int, 保活时间, range:[5,3600], step:, unit:, unitType:-->5
  </liveTime>
  <heartbeatCount>
    <!--opt, int, 最大心跳超时次数, range:[3,255], step:, unit:, unitType:-->3
  </heartbeatCount>
  <autoAddIPC>
    <!--opt, bool, 自动添加IPC-->true
  </autoAddIPC>
  <getStreamProtocol>
    <!--opt, enum, 取流协议类型, subType:string, [tcp#tcp,udp#udp]-->tcp
  </getStreamProtocol>
  <GB35114>
    <!--opt, object, 国密参数-->
    <enabled>
      <!--req, bool, 开启国密-->true
    </enabled>
    <authType>
      <!--req, enum, 认证方式, subType:int, [1#单向认证,2#双向认证], desc:[]-->1
    </authType>
  </GB35114>
</GB28181Service>

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

29. 获取GB28181接入地址过滤

29.1 命令

GET /ISAPI/System/Network/platformAccessFilter/GB28181

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 平台接入过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <IPFilterAddressList>
    <!--ro, opt, array, ip过滤地址列表, subType:object, range:[,]-->
    <IPFilterAddress>
      <!--ro, req, object, ip地址过滤-->
      <id>
        <!--ro, req, string, id, range:[,]-->test
      </id>
      <permissionType>
        <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
      </permissionType>
      <addressFilterType>
        <!--ro, req, enum, 地址过滤类型, subType:string, [mask#标签,range#范围]-->mask
      </addressFilterType>
      <AddressRange>
        <!--ro, opt, object, 地址范围-->
        <startIPAddress>
          <!--ro, opt, string, 起始地址, range:[,]-->test
        </startIPAddress>
        <endIPAddress>
          <!--ro, opt, string, 结束地址, range:[,]-->test
        </endIPAddress>
        <startIPv6Address>
          <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
        </startIPv6Address>
        <endIPv6Address>
          <!--ro, opt, string, 结束地址（ipv6）, range:[,]-->test
        </endIPv6Address>
      </AddressRange>
      <AddressMask>
        <!--ro, opt, object, 地址掩码-->
        <ipAddress>
          <!--ro, opt, string, ip地址, range:[,]-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, ipv6地址, range:[,]-->test
        </ipv6Address>
        <bitMask>
          <!--ro, req, string, 位掩码, range:[,]-->test
        </bitMask>
      </AddressMask>
    </IPFilterAddress>
  </IPFilterAddressList>
</PlatformAccessFilter>

30. 配置GB28181接入地址过滤

30.1 命令

PUT /ISAPI/System/Network/platformAccessFilter/GB28181

30.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PlatformAccessFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 平台接入过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <IPFilterAddressList>
    <!--opt, array, ip过滤地址列表, subType:object, range:[,]-->
    <IPFilterAddress>
      <!--ro, req, object, ip地址过滤-->
      <id>
        <!--ro, req, string, id, range:[,]-->test
      </id>
      <permissionType>
        <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
      </permissionType>
      <addressFilterType>
        <!--ro, req, enum, 地址过滤类型, subType:string, [mask#标签,range#范围]-->mask
      </addressFilterType>
      <AddressRange>
        <!--ro, opt, object, 地址范围-->
        <startIPAddress>
          <!--ro, opt, string, 起始地址, range:[,]-->test
        </startIPAddress>
        <endIPAddress>
          <!--ro, opt, string, 结束地址, range:[,]-->test
        </endIPAddress>
        <startIPv6Address>
          <!--ro, opt, string, 起始地址（ipv6）, range:[,]-->test
        </startIPv6Address>
        <endIPv6Address>
          <!--ro, opt, string, 结束地址（ipv6）, range:[,]-->test
        </endIPv6Address>
      </AddressRange>
      <AddressMask>
        <!--ro, opt, object, 地址掩码-->
        <ipAddress>
          <!--ro, opt, string, ip地址, range:[,]-->test
        </ipAddress>
        <ipv6Address>
          <!--ro, opt, string, ipv6地址, range:[,]-->test
        </ipv6Address>
        <bitMask>
          <!--ro, req, string, 位掩码, range:[,]-->test
        </bitMask>
      </AddressMask>
    </IPFilterAddress>
  </IPFilterAddressList>
</PlatformAccessFilter>

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

31. 获取SIP服务器参数能力

31.1 命令

GET /ISAPI/System/Network/SIP/capabilities

31.2 输入参数

无

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SIPServerListCap xmlns="http://www.isapi.org/ver20/XMLSchema" size="10" version="2.0">
  <!--ro, req, object, SIP服务能力参数列表, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:},version{req, string, 协议版本, range:[,]}-->
  <SIPServer>
    <!--ro, req, object, SIP服务-->
    <id min="1" max="10">
      <!--ro, req, int, id号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <localPort min="1" max="10">
      <!--ro, req, int, 本地端口, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </localPort>
    <streamID opt="1,2">
      <!--ro, req, int, 码流类型ID, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:1-main stream,2-sub stream-->1
    </streamID>
    <Standard>
      <!--ro, opt, object, 标准-->
      <registerStatus opt="true,false">
        <!--ro, opt, bool, 注册状态, attr:opt{req, string, 取值范围, range:[,]}-->true
      </registerStatus>
      <enabled opt="true,false">
        <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <registrar min="null" max="null">
        <!--ro, opt, string, 注册IP, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </registrar>
      <registrarPort min="null" max="null">
        <!--ro, opt, int, 注册端口, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </registrarPort>
      <proxy min="null" max="null">
        <!--ro, opt, string, 代理IP, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </proxy>
      <proxyPort min="null" max="null">
        <!--ro, opt, int, 代理端口, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </proxyPort>
      <displayName min="null" max="null">
        <!--ro, opt, string, 名称展示, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </displayName>
      <userName min="null" max="null">
        <!--ro, opt, string, 用户名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </userName>
      <authID min="null" max="null">
        <!--ro, opt, string, 认证ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </authID>
      <password min="null" max="null">
        <!--ro, opt, string, 密码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </password>
      <expires min="1" max="10">
        <!--ro, opt, int, 有效期, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </expires>
      <transportType opt="UDP,TCP,TLS">
        <!--ro, opt, string, SIP服务注册方式, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:UDP,TCP,TLS
与SipTransmit中的protocolType互斥,一款设备中不建议同时存在-->UDP
      </transportType>
      <udpRegEnabled opt="true,false">
        <!--ro, opt, bool, UDP注册使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </udpRegEnabled>
      <udpRegPort min="1" max="10">
        <!--ro, opt, int, UDP注册端口号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </udpRegPort>
      <tcpRegEnabled opt="true,false">
        <!--ro, opt, bool, TCP注册使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </tcpRegEnabled>
      <tcpRegPort min="1" max="10">
        <!--ro, opt, int, TCP注册端口号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </tcpRegPort>
      <tlsRegEnabled opt="true,false">
        <!--ro, opt, bool, TLS注册使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </tlsRegEnabled>
      <tlsRegPort min="1" max="10">
        <!--ro, opt, int, TLS注册端口号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </tlsRegPort>
    </Standard>
    <GB28181>
      <!--ro, opt, object, 国标-->
      <registerStatus opt="true,false">
        <!--ro, opt, bool, 注册状态, attr:opt{req, string, 取值范围, range:[,]}-->true
      </registerStatus>
      <enabled opt="true,false">
        <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
      </enabled>
      <registrar min="1" max="10">
        <!--ro, opt, string, 注册IP, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </registrar>
      <registrarPort min="1" max="10">
        <!--ro, opt, int, 注册端口, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </registrarPort>
      <serverId min="1" max="10">
        <!--ro, opt, string, 服务ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </serverId>
      <serverDomain min="1" max="10">
        <!--ro, opt, string, 服务域名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </serverDomain>
      <userName min="1" max="10">
        <!--ro, opt, string, 用户名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </userName>
      <authID min="1" max="10">
        <!--ro, opt, string, 认证ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </authID>
      <password min="1" max="10">
        <!--ro, opt, string, 密码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </password>
      <expires min="1" max="10">
        <!--ro, opt, int, 有效期, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </expires>
      <liveTime min="1" max="10">
        <!--ro, opt, int, 存活时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </liveTime>
      <heartbeatTime min="1" max="10">
        <!--ro, opt, int, 心跳时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </heartbeatTime>
      <heartbeatCount min="1" max="10">
        <!--ro, opt, int, 心跳次数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </heartbeatCount>
      <transportType opt="UDP,TCP,TLS">
        <!--ro, opt, string, SIP服务注册方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:UDP,TCP,TLS-->UDP
      </transportType>
      <streamType opt="sub,main">
        <!--ro, opt, string, 码流类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:main, sub-->main
      </streamType>
      <tcpConnectType opt="active,passive">
        <!--ro, opt, string, TCP连接类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:active,passive。depends on that transportType is TCP-->active
      </tcpConnectType>
      <registerInterval min="1" max="10">
        <!--ro, opt, int, 注册间隔, range:[,], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </registerInterval>
      <GBEncryptEnabled opt="true,false">
        <!--ro, req, bool, 国密使能 , attr:opt{req, string, 取值范围, range:[,]}-->true
      </GBEncryptEnabled>
      <unidirectionEnabled opt="true,false" def="false">
        <!--ro, opt, bool, 是否允许GB35114单向认证方式, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
      </unidirectionEnabled>
    </GB28181>
    <isSupportSIPMultiInfo>
      <!--ro, opt, bool, 是否支持多套SIP信息配置-->true
    </isSupportSIPMultiInfo>
    <isSupportChannelSIP>
      <!--ro, opt, bool, 是否支持按通道配置SIP-->true
    </isSupportChannelSIP>
  </SIPServer>
</SIPServerListCap>

32. 获取SIP服务器配置列表

32.1 命令

GET /ISAPI/System/Network/SIP

32.2 输入参数

无

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SIPServerList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, sip服务器列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <SIPServer>
    <!--ro, opt, object, sip服务器-->
    <id>
      <!--ro, req, string, sip服务器ID, range:[,]-->test
    </id>
    <localPort>
      <!--ro, opt, int, 本地IP端口, range:[,], step:, unit:, unitType:-->1
    </localPort>
    <streamID>
      <!--ro, opt, int, 28181码流索引, range:[,], step:, unit:, unitType:-->1
    </streamID>
    <Standard>
      <!--ro, opt, object, 标准协议-->
      <registerStatus>
        <!--ro, req, bool, 注册状态, desc:false（unregistered）,true（registered）-->true
      </registerStatus>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <registrar>
        <!--ro, req, string, 地址, range:[,]-->test
      </registrar>
      <registrarPort>
        <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:-->1
      </registrarPort>
      <proxy>
        <!--ro, req, string, 代理地址, range:[,]-->test
      </proxy>
      <proxyPort>
        <!--ro, req, int, 代理端口, range:[,], step:, unit:, unitType:-->1
      </proxyPort>
      <displayName>
        <!--ro, req, string, 显示名称, range:[,]-->test
      </displayName>
      <userName>
        <!--ro, req, string, 用户名, range:[,]-->test
      </userName>
      <authID>
        <!--ro, req, string, 用户认证ID, range:[,]-->test
      </authID>
      <password>
        <!--ro, req, string, 密码, range:[,]-->test
      </password>
      <expires>
        <!--ro, req, int, 注册有效期, range:[,], step:, unit:, unitType:-->1
      </expires>
      <transportType>
        <!--ro, opt, enum, SIP服务注册方式, subType:string, [UDP#UDP,TCP#TCP,TLS#TLS]-->UDP
      </transportType>
      <udpRegEnabled>
        <!--ro, opt, bool, UDP注册使能-->true
      </udpRegEnabled>
      <udpRegPort>
        <!--ro, opt, int, UDP注册端口号, range:[,], step:, unit:, unitType:-->1
      </udpRegPort>
      <tcpRegEnabled>
        <!--ro, opt, bool, TCP注册使能-->true
      </tcpRegEnabled>
      <tcpRegPort>
        <!--ro, opt, int, TCP注册端口号, range:[,], step:, unit:, unitType:-->1
      </tcpRegPort>
      <tlsRegEnabled>
        <!--ro, opt, bool, TLS注册使能-->true
      </tlsRegEnabled>
      <tlsRegPort>
        <!--ro, opt, int, TLS注册端口号, range:[,], step:, unit:, unitType:-->1
      </tlsRegPort>
    </Standard>
    <GB28181>
      <!--ro, opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
      <registerStatus>
        <!--ro, req, bool, 注册状态-->true
      </registerStatus>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <registrar>
        <!--ro, req, string, 地址, range:[,]-->test
      </registrar>
      <registrarPort>
        <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:-->1
      </registrarPort>
      <serverId>
        <!--ro, req, string, SIP服务器ID, range:[,]-->test
      </serverId>
      <serverDomain>
        <!--ro, req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
      </serverDomain>
      <userName>
        <!--ro, req, string, SIP用户名, range:[,]-->test
      </userName>
      <authID>
        <!--ro, req, string, SIP用户认证ID, range:[,]-->test
      </authID>
      <password>
        <!--ro, req, string, 密码;需敏感信息加密, range:[,]-->test
      </password>
      <expires>
        <!--ro, req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
      </expires>
      <liveTime>
        <!--ro, req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
      </liveTime>
      <heartbeatTime>
        <!--ro, req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
      </heartbeatTime>
      <heartbeatCount>
        <!--ro, req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
      </heartbeatCount>
      <transportType>
        <!--ro, req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
      </transportType>
      <registerInterval>
        <!--ro, req, int, 秒, range:[,], step:, unit:, unitType:-->1
      </registerInterval>
      <protocolVersion>
        <!--ro, req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
      </protocolVersion>
      <platformNo>
        <!--ro, opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
      </platformNo>
      <GBEncryptEnabled>
        <!--ro, req, bool, 国密使能-->true
      </GBEncryptEnabled>
      <exchangeCertificateEnabled>
        <!--ro, opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
      </exchangeCertificateEnabled>
      <offlineCode>
        <!--ro, opt, string, 注册离线时返回的设备状态码;该节点不支持PUT方法;(该状态码由设备侧维护用于控件提示;并提供给设备侧定位问题所用), range:[,], desc:当registerStatus=false时才会返回.-->0xFFFFFFFF
      </offlineCode>
      <unidirectionEnabled>
        <!--ro, opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
      </unidirectionEnabled>
    </GB28181>
    <GB28181List>
      <!--ro, opt, array, 国标平台注册列表参数;当支持双国标时返回;与<GB28181>和<streamID>节点互斥, subType:object, range:[,]-->
      <GB28181>
        <!--ro, opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
        <registerStatus>
          <!--ro, req, bool, 注册状态-->true
        </registerStatus>
        <enabled>
          <!--ro, req, bool, 使能-->true
        </enabled>
        <registrar>
          <!--ro, req, string, 地址, range:[,]-->test
        </registrar>
        <registrarPort>
          <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:-->1
        </registrarPort>
        <serverId>
          <!--ro, req, string, SIP服务器ID, range:[,]-->test
        </serverId>
        <serverDomain>
          <!--ro, req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
        </serverDomain>
        <userName>
          <!--ro, req, string, SIP用户名, range:[,]-->test
        </userName>
        <authID>
          <!--ro, req, string, SIP用户认证ID, range:[,]-->test
        </authID>
        <password>
          <!--ro, req, string, 密码;需敏感信息加密, range:[,]-->test
        </password>
        <expires>
          <!--ro, req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
        </expires>
        <liveTime>
          <!--ro, req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
        </liveTime>
        <heartbeatTime>
          <!--ro, req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
        </heartbeatTime>
        <heartbeatCount>
          <!--ro, req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
        </heartbeatCount>
        <transportType>
          <!--ro, req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
        </transportType>
        <registerInterval>
          <!--ro, req, int, 秒, range:[,], step:, unit:, unitType:-->1
        </registerInterval>
        <protocolVersion>
          <!--ro, req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
        </protocolVersion>
        <platformNo>
          <!--ro, opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
        </platformNo>
        <GBEncryptEnabled>
          <!--ro, req, bool, 国密使能-->true
        </GBEncryptEnabled>
        <exchangeCertificateEnabled>
          <!--ro, opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
        </exchangeCertificateEnabled>
        <offlineCode>
          <!--ro, opt, string, 注册离线时返回的设备状态码;该节点不支持PUT方法;(该状态码由设备侧维护用于控件提示;并提供给设备侧定位问题所用), range:[,], desc:当registerStatus=false时才会返回.-->0xFFFFFFFF
        </offlineCode>
        <unidirectionEnabled>
          <!--ro, opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
        </unidirectionEnabled>
      </GB28181>
    </GB28181List>
    <channelID>
      <!--ro, opt, string, 通道号, range:[,], desc:当/ISAPI/System/Network/SIP/capabilities能力中支持isSupportChannelSIP节点时返回;当时东方网力（三方）的后端设备接入前端IPC是通过通道去管理的;因此需要新增通道级配置供三方后端设备使用-->1
    </channelID>
  </SIPServer>
</SIPServerList>

33. 设置SIP服务器配置列表

33.1 命令

PUT /ISAPI/System/Network/SIP

33.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SIPServerList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, array, sip服务器列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <SIPServer>
    <!--opt, object, sip服务器-->
    <id>
      <!--req, string, sip服务器ID, range:[,]-->test
    </id>
    <localPort>
      <!--opt, int, 本地IP端口, range:[,], step:, unit:, unitType:-->1
    </localPort>
    <streamID>
      <!--opt, int, 28181码流索引, range:[,], step:, unit:, unitType:-->1
    </streamID>
    <Standard>
      <!--opt, object, 标准协议-->
      <registerStatus>
        <!--req, bool, 注册状态, desc:false（unregistered）,true（registered）-->true
      </registerStatus>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <registrar>
        <!--req, string, 地址, range:[,]-->test
      </registrar>
      <registrarPort>
        <!--req, int, 端口号, range:[,], step:, unit:, unitType:-->1
      </registrarPort>
      <proxy>
        <!--req, string, 代理地址, range:[,]-->test
      </proxy>
      <proxyPort>
        <!--req, int, 代理端口, range:[,], step:, unit:, unitType:-->1
      </proxyPort>
      <displayName>
        <!--req, string, 显示名称, range:[,]-->test
      </displayName>
      <userName>
        <!--req, string, 用户名, range:[,]-->test
      </userName>
      <authID>
        <!--req, string, 用户认证ID, range:[,]-->test
      </authID>
      <password>
        <!--req, string, 密码, range:[,]-->test
      </password>
      <expires>
        <!--req, int, 注册有效期, range:[,], step:, unit:, unitType:-->1
      </expires>
      <transportType>
        <!--opt, enum, SIP服务注册方式, subType:string, [UDP#UDP,TCP#TCP,TLS#TLS]-->UDP
      </transportType>
      <udpRegEnabled>
        <!--opt, bool, UDP注册使能-->true
      </udpRegEnabled>
      <udpRegPort>
        <!--opt, int, UDP注册端口号, range:[,], step:, unit:, unitType:-->1
      </udpRegPort>
      <tcpRegEnabled>
        <!--opt, bool, TCP注册使能-->true
      </tcpRegEnabled>
      <tcpRegPort>
        <!--ro, opt, int, TCP注册端口号, range:[,], step:, unit:, unitType:-->1
      </tcpRegPort>
      <tlsRegEnabled>
        <!--opt, bool, TLS注册使能-->true
      </tlsRegEnabled>
      <tlsRegPort>
        <!--opt, int, TLS注册端口号, range:[,], step:, unit:, unitType:-->1
      </tlsRegPort>
    </Standard>
    <GB28181>
      <!--opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
      <registerStatus>
        <!--req, bool, 注册状态-->true
      </registerStatus>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <registrar>
        <!--req, string, 地址, range:[,]-->test
      </registrar>
      <registrarPort>
        <!--req, int, 端口号, range:[,], step:, unit:, unitType:-->1
      </registrarPort>
      <serverId>
        <!--req, string, SIP服务器ID, range:[,]-->test
      </serverId>
      <serverDomain>
        <!--req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
      </serverDomain>
      <userName>
        <!--req, string, SIP用户名, range:[,]-->test
      </userName>
      <authID>
        <!--req, string, SIP用户认证ID, range:[,]-->test
      </authID>
      <password>
        <!--req, string, 密码;需敏感信息加密, range:[,]-->test
      </password>
      <expires>
        <!--req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
      </expires>
      <liveTime>
        <!--req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
      </liveTime>
      <heartbeatTime>
        <!--req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
      </heartbeatTime>
      <heartbeatCount>
        <!--req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
      </heartbeatCount>
      <transportType>
        <!--req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
      </transportType>
      <registerInterval>
        <!--req, int, 秒, range:[,], step:, unit:, unitType:-->1
      </registerInterval>
      <protocolVersion>
        <!--req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
      </protocolVersion>
      <platformNo>
        <!--opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
      </platformNo>
      <GBEncryptEnabled>
        <!--req, bool, 国密使能-->true
      </GBEncryptEnabled>
      <exchangeCertificateEnabled>
        <!--opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
      </exchangeCertificateEnabled>
      <unidirectionEnabled>
        <!--opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
      </unidirectionEnabled>
    </GB28181>
    <GB28181List>
      <!--opt, array, 国标平台注册列表参数;当支持双国标时返回;与<GB28181>和<streamID>节点互斥, subType:object, range:[,]-->
      <GB28181>
        <!--opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
        <registerStatus>
          <!--req, bool, 注册状态-->true
        </registerStatus>
        <enabled>
          <!--req, bool, 使能-->true
        </enabled>
        <registrar>
          <!--req, string, 地址, range:[,]-->test
        </registrar>
        <registrarPort>
          <!--req, int, 端口号, range:[,], step:, unit:, unitType:-->1
        </registrarPort>
        <serverId>
          <!--req, string, SIP服务器ID, range:[,]-->test
        </serverId>
        <serverDomain>
          <!--req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
        </serverDomain>
        <userName>
          <!--req, string, SIP用户名, range:[,]-->test
        </userName>
        <authID>
          <!--req, string, SIP用户认证ID, range:[,]-->test
        </authID>
        <password>
          <!--req, string, 密码;需敏感信息加密, range:[,]-->test
        </password>
        <expires>
          <!--req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
        </expires>
        <liveTime>
          <!--req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
        </liveTime>
        <heartbeatTime>
          <!--req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
        </heartbeatTime>
        <heartbeatCount>
          <!--req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
        </heartbeatCount>
        <transportType>
          <!--req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
        </transportType>
        <registerInterval>
          <!--req, int, 秒, range:[,], step:, unit:, unitType:-->1
        </registerInterval>
        <protocolVersion>
          <!--req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
        </protocolVersion>
        <platformNo>
          <!--opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
        </platformNo>
        <GBEncryptEnabled>
          <!--req, bool, 国密使能-->true
        </GBEncryptEnabled>
        <exchangeCertificateEnabled>
          <!--opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
        </exchangeCertificateEnabled>
        <unidirectionEnabled>
          <!--opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
        </unidirectionEnabled>
      </GB28181>
    </GB28181List>
    <channelID>
      <!--opt, string, 通道号, range:[,], desc:当/ISAPI/System/Network/SIP/capabilities能力中支持isSupportChannelSIP节点时返回;当时东方网力（三方）的后端设备接入前端IPC是通过通道去管理的;因此需要新增通道级配置供三方后端设备使用-->1
    </channelID>
  </SIPServer>
</SIPServerList>

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

34. 获取单个SIP服务器配置

34.1 命令

GET /ISAPI/System/Network/SIP/<SIPServerID>

34.2 输入参数

无

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SIPServer xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, req, object, sip服务器-->
  <id>
    <!--ro, req, string, sip服务器ID, range:[,]-->test
  </id>
  <localPort>
    <!--ro, opt, int, 本地IP端口, range:[,], step:, unit:, unitType:-->1
  </localPort>
  <streamID>
    <!--ro, opt, enum, 28181码流索引, subType:string, [1#主码流,2#次码流,3#第三码流], desc:1(main stream),2（sub stream）3（three stream-->1
  </streamID>
  <Standard>
    <!--ro, opt, object, 标准协议-->
    <registerStatus>
      <!--ro, req, bool, 注册状态, desc:false（unregistered）,true（registered）-->true
    </registerStatus>
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <registrar>
      <!--ro, req, string, 地址, range:[,]-->test
    </registrar>
    <registrarPort>
      <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:-->1
    </registrarPort>
    <proxy>
      <!--ro, req, string, 代理地址, range:[,]-->test
    </proxy>
    <proxyPort>
      <!--ro, req, int, 代理端口, range:[,], step:, unit:, unitType:-->1
    </proxyPort>
    <displayName>
      <!--ro, req, string, 显示名称, range:[,]-->test
    </displayName>
    <userName>
      <!--ro, req, string, 用户名, range:[,]-->test
    </userName>
    <authID>
      <!--ro, req, string, 用户认证ID, range:[,]-->test
    </authID>
    <password>
      <!--ro, req, string, 密码, range:[,]-->test
    </password>
    <expires>
      <!--ro, req, int, 注册有效期, range:[,], step:, unit:, unitType:-->1
    </expires>
    <transportType>
      <!--ro, opt, enum, SIP服务注册方式, subType:string, [UDP#UDP,TCP#TCP,TLS#TLS]-->UDP
    </transportType>
    <udpRegEnabled>
      <!--ro, opt, bool, UDP注册使能-->true
    </udpRegEnabled>
    <udpRegPort>
      <!--ro, opt, int, UDP注册端口号, range:[,], step:, unit:, unitType:-->1
    </udpRegPort>
    <tcpRegEnabled>
      <!--ro, opt, bool, TCP注册使能-->true
    </tcpRegEnabled>
    <tcpRegPort>
      <!--ro, opt, int, TCP注册端口号, range:[,], step:, unit:, unitType:-->1
    </tcpRegPort>
    <tlsRegEnabled>
      <!--ro, opt, bool, TLS注册使能-->true
    </tlsRegEnabled>
    <tlsRegPort>
      <!--ro, opt, int, TLS注册端口号, range:[,], step:, unit:, unitType:-->1
    </tlsRegPort>
  </Standard>
  <GB28181>
    <!--ro, opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
    <registerStatus>
      <!--ro, req, bool, 注册状态-->true
    </registerStatus>
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <registrar>
      <!--ro, req, string, 地址, range:[,]-->test
    </registrar>
    <registrarPort>
      <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:-->1
    </registrarPort>
    <serverId>
      <!--ro, req, string, SIP服务器ID, range:[,]-->test
    </serverId>
    <serverDomain>
      <!--ro, req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
    </serverDomain>
    <userName>
      <!--ro, req, string, SIP用户名, range:[,]-->test
    </userName>
    <authID>
      <!--ro, req, string, SIP用户认证ID, range:[,]-->test
    </authID>
    <password>
      <!--ro, req, string, 密码;需敏感信息加密, range:[,]-->test
    </password>
    <expires>
      <!--ro, req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
    </expires>
    <liveTime>
      <!--ro, req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
    </liveTime>
    <heartbeatTime>
      <!--ro, req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
    </heartbeatTime>
    <heartbeatCount>
      <!--ro, req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
    </heartbeatCount>
    <transportType>
      <!--ro, req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
    </transportType>
    <streamType>
      <!--ro, opt, enum, 码流类型, subType:string, [main#主码流,sub#子码流]-->main
    </streamType>
    <tcpConnectType>
      <!--ro, opt, enum, tcp连接类型, subType:string, [active#主动,passive#被动]-->active
    </tcpConnectType>
    <registerInterval>
      <!--ro, req, int, 注册周期, range:[60,600], step:, unit:, unitType:, desc:单位秒-->60
    </registerInterval>
    <protocolVersion>
      <!--ro, req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
    </protocolVersion>
    <autoAllocEncodeChanID>
      <!--ro, opt, bool, 自动分配编码通道ID-->true
    </autoAllocEncodeChanID>
    <autoAllocDecodeChanID>
      <!--ro, opt, bool, 自动分配解码通道ID-->true
    </autoAllocDecodeChanID>
    <autoAllocAlarmInputChanID>
      <!--ro, opt, bool, 自动分配报警输入通道ID-->true
    </autoAllocAlarmInputChanID>
    <platformNo>
      <!--ro, opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
    </platformNo>
    <GBEncryptEnabled>
      <!--ro, req, bool, 国密使能-->true
    </GBEncryptEnabled>
    <exchangeCertificateEnabled>
      <!--ro, opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
    </exchangeCertificateEnabled>
    <unidirectionEnabled>
      <!--ro, opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
    </unidirectionEnabled>
  </GB28181>
  <GB28181List>
    <!--ro, opt, array, 国标平台注册列表参数;当支持双国标时返回;与<GB28181>和<streamID>节点互斥, subType:object, range:[,]-->
    <GB28181>
      <!--ro, opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
      <registerStatus>
        <!--ro, req, bool, 注册状态-->true
      </registerStatus>
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <registrar>
        <!--ro, req, string, 地址, range:[,]-->test
      </registrar>
      <registrarPort>
        <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:-->1
      </registrarPort>
      <serverId>
        <!--ro, req, string, SIP服务器ID, range:[,]-->test
      </serverId>
      <serverDomain>
        <!--ro, req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
      </serverDomain>
      <userName>
        <!--ro, req, string, SIP用户名, range:[,]-->test
      </userName>
      <authID>
        <!--ro, req, string, SIP用户认证ID, range:[,]-->test
      </authID>
      <password>
        <!--ro, req, string, 密码;需敏感信息加密, range:[,]-->test
      </password>
      <expires>
        <!--ro, req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
      </expires>
      <liveTime>
        <!--ro, req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
      </liveTime>
      <heartbeatTime>
        <!--ro, req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
      </heartbeatTime>
      <heartbeatCount>
        <!--ro, req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
      </heartbeatCount>
      <transportType>
        <!--ro, req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
      </transportType>
      <registerInterval>
        <!--ro, req, int, 注册周期, range:[60,600], step:, unit:, unitType:, desc:单位秒-->60
      </registerInterval>
      <protocolVersion>
        <!--ro, req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
      </protocolVersion>
      <streamID>
        <!--ro, opt, enum, 码流索引, subType:string, [1#主码流,2#次码流,3#第三码流]-->1
      </streamID>
      <platformNo>
        <!--ro, opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
      </platformNo>
      <GBEncryptEnabled>
        <!--ro, req, bool, 国密使能-->true
      </GBEncryptEnabled>
      <exchangeCertificateEnabled>
        <!--ro, opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
      </exchangeCertificateEnabled>
      <localPort>
        <!--ro, req, int, 本地SIP端口, range:[1,65535], step:, unit:, unitType:-->1
      </localPort>
      <unidirectionEnabled>
        <!--ro, opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
      </unidirectionEnabled>
    </GB28181>
  </GB28181List>
  <channelID>
    <!--ro, opt, string, 通道号, range:[,], desc:当/ISAPI/System/Network/SIP/capabilities能力中支持isSupportChannelSIP节点时返回;当时东方网力（三方）的后端设备接入前端IPC是通过通道去管理的;因此需要新增通道级配置供三方后端设备使用-->1
  </channelID>
</SIPServer>

35. 设置单个SIP服务器配置

35.1 命令

PUT /ISAPI/System/Network/SIP/<SIPServerID>

35.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SIPServer xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--req, object, sip服务器-->
  <id>
    <!--req, string, sip服务器ID, range:[,]-->test
  </id>
  <localPort>
    <!--opt, int, 本地IP端口, range:[,], step:, unit:, unitType:-->1
  </localPort>
  <streamID>
    <!--opt, enum, 28181码流索引, subType:string, [1#主码流,2#次码流,3#第三码流], desc:1(main stream),2（sub stream）3（three stream-->1
  </streamID>
  <Standard>
    <!--opt, object, 标准协议-->
    <registerStatus>
      <!--req, bool, 注册状态, desc:false（unregistered）,true（registered）-->true
    </registerStatus>
    <enabled>
      <!--req, bool, 使能-->true
    </enabled>
    <registrar>
      <!--req, string, 地址, range:[,]-->test
    </registrar>
    <registrarPort>
      <!--req, int, 端口号, range:[,], step:, unit:, unitType:-->1
    </registrarPort>
    <proxy>
      <!--req, string, 代理地址, range:[,]-->test
    </proxy>
    <proxyPort>
      <!--req, int, 代理端口, range:[,], step:, unit:, unitType:-->1
    </proxyPort>
    <displayName>
      <!--req, string, 显示名称, range:[,]-->test
    </displayName>
    <userName>
      <!--req, string, 用户名, range:[,]-->test
    </userName>
    <authID>
      <!--req, string, 用户认证ID, range:[,]-->test
    </authID>
    <password>
      <!--req, string, 密码, range:[,]-->test
    </password>
    <expires>
      <!--req, int, 注册有效期, range:[,], step:, unit:, unitType:-->1
    </expires>
    <transportType>
      <!--opt, enum, SIP服务注册方式, subType:string, [UDP#UDP,TCP#TCP,TLS#TLS]-->UDP
    </transportType>
    <udpRegEnabled>
      <!--opt, bool, UDP注册使能-->true
    </udpRegEnabled>
    <udpRegPort>
      <!--opt, int, UDP注册端口号, range:[,], step:, unit:, unitType:-->1
    </udpRegPort>
    <tcpRegEnabled>
      <!--opt, bool, TCP注册使能-->true
    </tcpRegEnabled>
    <tcpRegPort>
      <!--ro, opt, int, TCP注册端口号, range:[,], step:, unit:, unitType:-->1
    </tcpRegPort>
    <tlsRegEnabled>
      <!--opt, bool, TLS注册使能-->true
    </tlsRegEnabled>
    <tlsRegPort>
      <!--opt, int, TLS注册端口号, range:[,], step:, unit:, unitType:-->1
    </tlsRegPort>
  </Standard>
  <GB28181>
    <!--opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
    <registerStatus>
      <!--req, bool, 注册状态-->true
    </registerStatus>
    <enabled>
      <!--req, bool, 使能-->true
    </enabled>
    <registrar>
      <!--req, string, 地址, range:[,]-->test
    </registrar>
    <registrarPort>
      <!--req, int, 端口号, range:[,], step:, unit:, unitType:-->1
    </registrarPort>
    <serverId>
      <!--req, string, SIP服务器ID, range:[,]-->test
    </serverId>
    <serverDomain>
      <!--req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
    </serverDomain>
    <userName>
      <!--req, string, SIP用户名, range:[,]-->test
    </userName>
    <authID>
      <!--req, string, SIP用户认证ID, range:[,]-->test
    </authID>
    <password>
      <!--req, string, 密码;需敏感信息加密, range:[,]-->test
    </password>
    <expires>
      <!--req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
    </expires>
    <liveTime>
      <!--req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
    </liveTime>
    <heartbeatTime>
      <!--req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
    </heartbeatTime>
    <heartbeatCount>
      <!--req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
    </heartbeatCount>
    <transportType>
      <!--req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
    </transportType>
    <streamType>
      <!--opt, enum, 码流类型, subType:string, [main#主码流,sub#子码流]-->main
    </streamType>
    <tcpConnectType>
      <!--opt, enum, tcp连接类型, subType:string, [active#主动,passive#被动]-->active
    </tcpConnectType>
    <registerInterval>
      <!--ro, req, int, 注册周期, range:[60,600], step:, unit:, unitType:, desc:单位秒-->60
    </registerInterval>
    <protocolVersion>
      <!--req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
    </protocolVersion>
    <autoAllocEncodeChanID>
      <!--opt, bool, 自动分配编码通道ID-->true
    </autoAllocEncodeChanID>
    <autoAllocDecodeChanID>
      <!--opt, bool, 自动分配解码通道ID-->true
    </autoAllocDecodeChanID>
    <autoAllocAlarmInputChanID>
      <!--opt, bool, 自动分配报警输入通道ID-->true
    </autoAllocAlarmInputChanID>
    <platformNo>
      <!--opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
    </platformNo>
    <GBEncryptEnabled>
      <!--req, bool, 国密使能-->true
    </GBEncryptEnabled>
    <exchangeCertificateEnabled>
      <!--opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
    </exchangeCertificateEnabled>
    <unidirectionEnabled>
      <!--opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
    </unidirectionEnabled>
  </GB28181>
  <GB28181List>
    <!--opt, array, 国标平台注册列表参数;当支持双国标时返回;与<GB28181>和<streamID>节点互斥, subType:object, range:[,]-->
    <GB28181>
      <!--opt, object, 国标单一平台注册参数;与<GB28181List>节点互斥-->
      <registerStatus>
        <!--req, bool, 注册状态-->true
      </registerStatus>
      <enabled>
        <!--req, bool, 使能-->true
      </enabled>
      <registrar>
        <!--req, string, 地址, range:[,]-->test
      </registrar>
      <registrarPort>
        <!--req, int, 端口号, range:[,], step:, unit:, unitType:-->1
      </registrarPort>
      <serverId>
        <!--req, string, SIP服务器ID, range:[,]-->test
      </serverId>
      <serverDomain>
        <!--req, int, SIP服务器域, range:[,], step:, unit:, unitType:-->1
      </serverDomain>
      <userName>
        <!--req, string, SIP用户名, range:[,]-->test
      </userName>
      <authID>
        <!--req, string, SIP用户认证ID, range:[,]-->test
      </authID>
      <password>
        <!--req, string, 密码;需敏感信息加密, range:[,]-->test
      </password>
      <expires>
        <!--req, int, 注册有效期, range:[,], step:, unit:s, unitType:时间-->1
      </expires>
      <liveTime>
        <!--req, int, 保活时间, range:[,], step:, unit:s, unitType:时间-->1
      </liveTime>
      <heartbeatTime>
        <!--req, int, 心跳周期, range:[,], step:, unit:s, unitType:时间-->1
      </heartbeatTime>
      <heartbeatCount>
        <!--req, int, 最大心跳超时次数, range:[,], step:, unit:, unitType:-->1
      </heartbeatCount>
      <transportType>
        <!--req, enum, 传输协议, subType:string, [UDP#UDP协议,TCP#TCP协议]-->UDP
      </transportType>
      <registerInterval>
        <!--ro, req, int, 注册周期, range:[60,600], step:, unit:, unitType:, desc:单位秒-->60
      </registerInterval>
      <protocolVersion>
        <!--req, enum, 协议版本, subType:string, [GB/T28181-2011#GB/T28181-2011,GB/T28181-2016#GB/T28181-2016]-->GB/T28181-2011
      </protocolVersion>
      <streamID>
        <!--ro, opt, enum, 码流索引, subType:string, [1#主码流,2#次码流,3#第三码流]-->1
      </streamID>
      <platformNo>
        <!--opt, int, 平台号, range:[,], step:, unit:, unitType:-->1
      </platformNo>
      <GBEncryptEnabled>
        <!--req, bool, 国密使能-->true
      </GBEncryptEnabled>
      <exchangeCertificateEnabled>
        <!--opt, bool, 是否使能证书交换;开启国密使能后显示;默认不开启-->true
      </exchangeCertificateEnabled>
      <localPort>
        <!--ro, req, int, 本地SIP端口, range:[1,65535], step:, unit:, unitType:-->1
      </localPort>
      <unidirectionEnabled>
        <!--opt, bool, 是否允许GB35114单向认证方式, desc:当GBEncryptEnabled =true时有效,单向认证是指:平台认证客户端,双向认证是客户端和平台都各自验证对方的身份。没有该节点默认是平台设置什么身份认证，客户端就采用什么认证方式（这种方式不推荐，前端以后需要修改; 有该节点默认应该为false表示要求为双向认证;部分场景下需要兼容单向认证平台，可以考虑将其修改为true,通过管理员配置支持单向认证（考虑兼容性，降低安全性，需要管理员触发并弹出安全警示信息）-->false
      </unidirectionEnabled>
    </GB28181>
  </GB28181List>
  <channelID>
    <!--opt, string, 通道号, range:[,], desc:当/ISAPI/System/Network/SIP/capabilities能力中支持isSupportChannelSIP节点时返回;当时东方网力（三方）的后端设备接入前端IPC是通过通道去管理的;因此需要新增通道级配置供三方后端设备使用-->1
  </channelID>
</SIPServer>

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

36. 获取MAC地址过滤能力

36.1 命令

GET /ISAPI/System/Network/MACFilter/capabilities

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<MACFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, mac过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <permissionType opt="deny,allow">
    <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许], attr:opt{req, string, 取值范围, range:[,]}-->deny
  </permissionType>
  <MACFilterAddressList size="10">
    <!--ro, opt, array, mac过滤地址列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <MACFilterAddress>
      <!--ro, opt, object, mac过滤地址-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <MACAddress max="10">
        <!--ro, req, string, 物理地址, range:[,], attr:max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
      </MACAddress>
    </MACFilterAddress>
  </MACFilterAddressList>
</MACFilter>

37. 获取全部MAC地址过滤

37.1 命令

GET /ISAPI/System/Network/MACFilter

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<MACFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, mac过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <permissionType>
    <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
  </permissionType>
  <MACFilterAddressList>
    <!--ro, opt, array, mac过滤地址列表, subType:object, range:[,]-->
    <MACFilterAddress>
      <!--ro, opt, object, mac过滤地址-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <MACAddress>
        <!--ro, req, string, 物理地址, range:[,]-->test
      </MACAddress>
    </MACFilterAddress>
  </MACFilterAddressList>
</MACFilter>

38. 配置全部MAC地址过滤

38.1 命令

PUT /ISAPI/System/Network/MACFilter

38.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<MACFilter xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, mac过滤, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <permissionType>
    <!--ro, opt, enum, 许可类型, subType:string, [deny#拒绝,allow#允许]-->deny
  </permissionType>
  <MACFilterAddressList>
    <!--opt, array, mac过滤地址列表, subType:object, range:[,]-->
    <MACFilterAddress>
      <!--opt, object, mac过滤地址-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <MACAddress>
        <!--req, string, 物理地址, range:[,]-->test
      </MACAddress>
    </MACFilterAddress>
  </MACFilterAddressList>
</MACFilter>

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

39. 获取设备发现模式

39.1 命令

GET /ISAPI/System/discoveryMode

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DiscoveryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 设备发现模式, attr:version{req, string, 协议版本, range:[,]}-->
  <ONVIFDiscoveryMode>
    <!--ro, opt, enum, 通过ONVIF协议发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </ONVIFDiscoveryMode>
  <ISDiscoveryMode>
    <!--ro, opt, enum, 通过SADP多播协议(IS-Discovery)发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </ISDiscoveryMode>
  <PcapMode>
    <!--ro, opt, enum, 通过winpcap或libpcap或原始套接字实现链路层抓包发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </PcapMode>
  <SADP>
    <!--ro, opt, enum, 通过SADP发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </SADP>
</DiscoveryMode>

40. 配置设备发现模式

40.1 命令

PUT /ISAPI/System/discoveryMode

40.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<DiscoveryMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 设备发现模式, attr:version{req, string, 协议版本, range:[,]}-->
  <ONVIFDiscoveryMode>
    <!--opt, enum, 通过ONVIF协议发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </ONVIFDiscoveryMode>
  <ISDiscoveryMode>
    <!--opt, enum, 通过SADP多播协议(IS-Discovery)发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </ISDiscoveryMode>
  <PcapMode>
    <!--opt, enum, 通过winpcap或libpcap或原始套接字实现链路层抓包发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </PcapMode>
  <SADP>
    <!--opt, enum, 通过SADP发现设备的控制模式, subType:string, [discoverable#可发现,nonDiscoverable#不可发现]-->discoverable
  </SADP>
</DiscoveryMode>

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

41. 获取HTTP报警主机能力集

41.1 命令

GET /ISAPI/Event/notification/httpHosts/capabilities

41.2 输入参数

无

41.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, req, int, 状态码, range:[,], step:, unit:, unitType:*/
    "statusString":  "test",
    /*ro, req, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, req, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,错误码,与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, opt, string, 错误详细信息, range:[,], desc:当statusCode不为1时,错误详细信息,能具体到某一个参数的错*/
    "urlMaxLen":  128,
    /*ro, req, int, URL地址最大长度, range:[,], step:, unit:, unitType:*/
    "protocolType":  "HTTP",
    /*ro, req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS], desc:最大长度为32*/
    "parameterFormatType ":  "json",
    /*ro, req, enum, 参数格式类型, subType:string, [json#json,XML#XML,querystring#querystring], desc:最大长度为32*/
    "addressingFormatType":  "ipaddress",
    /*ro, req, enum, 地址格式类型, subType:string, [ipaddress#IP地址,hostname#域名], desc:最大长度为32*/
    "ipAddress":  "ipv4",
    /*ro, opt, enum, IP地址类型, subType:string, [ipv4#ipv4,ipv6#ipv6], desc:最大长度为32*/
    "portNo": {
    /*ro, opt, object, 报警通信端口号取值范围*/
        "min":  0,
        /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
        "max":  0
        /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
    },
    "httpAuthenticationMethod":  "MD5digest,none",
    /*ro, req, string, HTTP认证方法, range:[,], desc:最大长度为32，MD5digest或none(不认证)*/
    "uploadImagesDataType":  "URL,binary",
    /*ro, opt, string, 上传图片数据类型, range:[,], desc:URL-图片存储URL(需要支持并且配置云存储), binary-图片二进制数据, 最大长度为32*/
    "format":  "json",
    /*ro, opt, string, 协议交互格式, range:[,]*/
    "alarmHostMaxNum":  12,
    /*ro, opt, int, 报警主机最大个数, range:[,], step:, unit:, unitType:*/
    "eventType":  "alarmResult, captureResult"
    /*ro, req, string, 触发的事件类型, range:[,],
    desc:alarmResult-人脸比对报警上报,
    captureResult-人脸抓拍上报,
    HFPD -高频人员检测事件,
    behaviorResult-异常行为识别结果上报,
    executeControlResult-车牌布防,
    LFPD-低频人员侦测,
    AIOP_Video-AI开放平台视频分析任务结果上报,
    多个类型用逗号隔开*/
}

42. 获取全部HTTP报警主机配置

42.1 命令

GET /ISAPI/Event/notification/httpHosts

42.2 输入参数

无

42.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, req, int, 状态码, range:[,], step:, unit:, unitType:*/
    "statusString":  "test",
    /*ro, req, string, 状态描述, range:[,]*/
    "subStatusCode":  "test",
    /*ro, req, string, 子状态码, range:[,]*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时,错误码,与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, opt, string, 错误详细信息, range:[,], desc:当statusCode不为1时,错误详细信息,能具体到某一个参数的错*/
    "HttpHostNotification": [
    /*ro, req, array, 报警主机信息列表, subType:object, range:[,]*/
        {
            "id":  "1",
            /*ro, req, string, 序号, range:[,], desc:最大长度为128*/
            "url":  "http://10.7.35.19:9000/alarm",
            /*ro, opt, string, URL, range:[,]*/
            "protocolType":  "HTTP",
            /*ro, req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS], desc:最大长度为32*/
            "parameterFormatType ":  "json",
            /*ro, req, enum, 参数格式类型, subType:string, [json#json,XML#XML,querystring#querystring], desc:最大长度为32*/
            "addressingFormatType":  "ipaddress",
            /*ro, req, enum, 地址格式类型, subType:string, [ipaddress#IP地址,hostname#域名], desc:最大长度为32*/
            "ipAddress":  "ipv4",
            /*ro, opt, enum, IP地址类型, subType:string, [ipv4#ipv4,ipv6#ipv6], desc:最大长度为32*/
            "ipv6Address":  "test",
            /*ro, opt, string, ipv6地址, range:[,], desc:最大长度为128*/
            "portNo":  7200,
            /*ro, opt, int, 报警通信端口号, range:[,], step:, unit:, unitType:*/
            "httpAuthenticationMethod":  "MD5digest",
            /*ro, req, string, HTTP认证方法, range:[,], desc:最大长度为32，MD5digest或none(不认证)*/
            "uploadImagesDataType":  "URL",
            /*ro, opt, string, 上传图片数据类型, range:[,], desc:URL-图片存储URL(需要支持并且配置云存储), binary-图片二进制数据, 最大长度为32*/
            "format":  "json",
            /*ro, opt, string, 协议交互格式, range:[,]*/
            "eventType":  "alarmResult"
            /*ro, req, string, 触发的事件类型, range:[,],
            desc:alarmResult-人脸比对报警上报,
            captureResult-人脸抓拍上报,
            HFPD -高频人员检测事件,
            behaviorResult-异常行为识别结果上报,
            executeControlResult-车牌布防,
            LFPD-低频人员侦测,
            AIOP_Video-AI开放平台视频分析任务结果上报,
            string类型, 最大长度为64, 多个类型用逗号隔开*/
        }
    ]
}

43. 修改单个HTTP报警主机配置

43.1 命令

PUT /ISAPI/Event/notification/httpHosts

43.2 输入参数

{
    "HttpHostNotification": {
    /*req, object, 报警主机信息列表*/
        "id":  "1",
        /*req, string, 序号, range:[,]*/
        "url":  "http://10.7.35.19:9000/alarm",
        /*opt, string, url, range:[,]*/
        "protocolType":  "HTTP",
        /*ro, req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS], desc:最大长度为32*/
        "parameterFormatType ":  "json",
        /*ro, req, enum, 参数格式类型, subType:string, [json#json,XML#XML,querystring#querystring], desc:最大长度为32*/
        "addressingFormatType":  "ipaddress",
        /*ro, req, enum, 地址格式类型, subType:string, [ipaddress#IP地址,hostname#域名], desc:最大长度为32*/
        "ipAddress":  "ipv4",
        /*ro, opt, enum, IP地址类型, subType:string, [ipv4#ipv4,ipv6#ipv6], desc:最大长度为32*/
        "ipv6Address":  "test",
        /*ro, opt, string, ipv6地址, range:[,], desc:最大长度为128*/
        "portNo":  7200,
        /*ro, opt, int, 报警通信端口号, range:[,], step:, unit:, unitType:*/
        "httpAuthenticationMethod":  "MD5digest",
        /*ro, req, string, HTTP认证方法, range:[,], desc:最大长度为32，MD5digest或none(不认证)*/
        "uploadImagesDataType":  "URL",
        /*ro, opt, string, 上传图片数据类型, range:[,], desc:URL-图片存储URL(需要支持并且配置云存储), binary-图片二进制数据, 最大长度为32*/
        "format":  "json",
        /*ro, opt, string, 协议交互格式, range:[,]*/
        "eventType":  "alarmResult"
        /*ro, req, string, 触发的事件类型, range:[,],
        desc:alarmResult-人脸比对报警上报,
        captureResult-人脸抓拍上报,
        HFPD -高频人员检测事件,
        behaviorResult-异常行为识别结果上报,
        executeControlResult-车牌布防,
        LFPD-低频人员侦测,
        AIOP_Video-AI开放平台视频分析任务结果上报,
        多个类型用逗号隔开*/
    }
}

43.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

44. 删除单个HTTP报警主机配置

44.1 命令

DELETE /ISAPI/Event/notification/httpHosts

44.2 输入参数

无

44.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, URI, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

45. 增加HTTP报警主机配置

45.1 命令

POST /ISAPI/Event/notification/httpHosts

45.2 输入参数

{
    "HttpHostNotification": {
    /*req, object, 报警主机信息列表*/
        "url":  "http://10.7.35.19:9000/alarm",
        /*opt, string, url, range:[,]*/
        "protocolType":  "HTTP",
        /*ro, req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS], desc:最大长度为32*/
        "parameterFormatType ":  "json",
        /*ro, req, enum, 参数格式类型, subType:string, [json#json,XML#XML,querystring#querystring], desc:最大长度为32*/
        "addressingFormatType":  "ipaddress",
        /*ro, req, enum, 地址格式类型, subType:string, [ipaddress#IP地址,hostname#域名], desc:最大长度为32*/
        "ipAddress":  "ipv4",
        /*ro, opt, enum, IP地址类型, subType:string, [ipv4#ipv4,ipv6#ipv6], desc:最大长度为32*/
        "ipv6Address":  "test",
        /*ro, opt, string, ipv6地址, range:[,], desc:最大长度为128*/
        "portNo":  7200,
        /*ro, opt, int, 报警通信端口号, range:[,], step:, unit:, unitType:*/
        "httpAuthenticationMethod":  "MD5digest",
        /*ro, req, string, HTTP认证方法, range:[,], desc:最大长度为32，MD5digest或none(不认证)*/
        "uploadImagesDataType":  "URL",
        /*ro, opt, string, 上传图片数据类型, range:[,], desc:URL-图片存储URL(需要支持并且配置云存储), binary-图片二进制数据, 最大长度为32*/
        "format":  "json",
        /*ro, opt, string, 协议交互格式, range:[,]*/
        "eventType":  "alarmResult"
        /*ro, req, string, 触发的事件类型, range:[,],
        desc:alarmResult-人脸比对报警上报,
        captureResult-人脸抓拍上报,
        HFPD -高频人员检测事件,
        behaviorResult-异常行为识别结果上报,
        executeControlResult-车牌布防,
        LFPD-低频人员侦测,
        AIOP_Video-AI开放平台视频分析任务结果上报,
        多个类型用逗号隔开*/
    }
}

45.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, 请求URL, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "id":  "1"
    /*ro, opt, string, 报警主机序号, range:[0,128]*/
}

46. 获取单个监听主机参数

46.1 命令

GET /ISAPI/Event/notification/httpHosts/<hostID>

46.2 输入参数

无

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HttpHostNotification xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 监听主机, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, id, range:[,]-->test
  </id>
  <url>
    <!--ro, req, string, URL, range:[,]-->test
  </url>
  <protocolType>
    <!--ro, req, enum, 协议类型, subType:string, [HTTP#HTTP协议,HTTPS#HTTPS协议,EHome#EHome协议]-->HTTP
  </protocolType>
  <parameterFormatType>
    <!--ro, req, enum, 参数格式类型, subType:string, [JSON#JSON格式,XML#XML格式]-->JSON
  </parameterFormatType>
  <addressingFormatType>
    <!--ro, req, enum, 地址类型, subType:string, [hostname#hostname,ipaddress#ipaddress]-->hostname
  </addressingFormatType>
  <hostName>
    <!--ro, opt, string, 主机名, range:[,]-->test
  </hostName>
  <ipAddress>
    <!--ro, opt, string, IP地址, range:[,]-->test
  </ipAddress>
  <ipv6Address>
    <!--ro, opt, string, ipv6地址, range:[,]-->test
  </ipv6Address>
  <portNo>
    <!--ro, opt, int, 端口号, range:[,], step:, unit:, unitType:-->1
  </portNo>
  <userName>
    <!--ro, opt, string, 用户名, range:[,]-->test
  </userName>
  <password>
    <!--ro, opt, string, 密码, range:[,]-->test
  </password>
  <httpAuthenticationMethod>
    <!--ro, req, enum, 认证方法, subType:string, [MD5digest#MD5,none#无]-->MD5digest
  </httpAuthenticationMethod>
  <ANPR>
    <!--ro, opt, object, ANPR-->
    <detectionUpLoadPicturesType>
      <!--ro, opt, enum, 侦测上传图片类型控制, subType:string, [all#所有,licensePlatePicture#车牌图片,detectionPicture#检测图片]-->all
    </detectionUpLoadPicturesType>
  </ANPR>
  <Extensions>
    <!--ro, opt, object, 范围-->
    <intervalBetweenEvents>
      <!--ro, opt, int, 事件间隔时间, range:[,], step:, unit:, unitType:-->1
    </intervalBetweenEvents>
  </Extensions>
  <uploadImagesDataType>
    <!--ro, opt, enum, 图片数据类型, subType:string, [URL#URL,binary#二进制], desc:默认是二进制,在支持了云存储之后,配置成URL,才会生效-->URL
  </uploadImagesDataType>
  <httpBroken>
    <!--ro, opt, bool, 断网续传使能, desc:开启后实现监听的断网续传功能,对所有事件有效-->true
  </httpBroken>
  <SubscribeEvent>
    <!--ro, opt, object, 该节点表示所有含图片事件图片上传方式-->
    <heartbeat>
      <!--ro, opt, int, 心跳间隔时间, range:[,], step:, unit:, unitType:-->30
    </heartbeat>
    <eventMode>
      <!--ro, req, enum, 事件模式, subType:string, [all#表示所有报警均需要上报,list#表示指定报警才需要上报]-->all
    </eventMode>
    <EventList>
      <!--ro, opt, array, 指定报警上报的方式, subType:object, range:[,]-->
      <Event>
        <!--ro, opt, object, 事件关联的通道信息-->
        <type>
          <!--ro, req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LES#物流扫描事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,AccessControllerEvent#门禁事件,IDCardInfoEvent#门禁身份证事件,FaceTemperatureMeasurementEvent#门禁测温事件,QRCodeEvent#门禁二维码事件], desc:参考事件类型列表eventType-->mixedTargetDetection
        </type>
        <minorAlarm>
          <!--ro, opt, string, 报警次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x400,0x401,0x402,0x403
        </minorAlarm>
        <minorException>
          <!--ro, opt, string, 异常次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x400,0x401,0x402,0x403
        </minorException>
        <minorOperation>
          <!--ro, opt, string, 操作次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x400,0x401,0x402,0x403
        </minorOperation>
        <minorEvent>
          <!--ro, opt, string, 事件次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x01,0x02,0x03,0x04
        </minorEvent>
        <pictureURLType>
          <!--ro, opt, enum, 报警图片格式, subType:string, [binary#二进制,localURL#设备本地URL,cloudStorageURL#云存储URL], desc:事件关联的通道信息,支持复选,用英文逗号隔开-->binary
        </pictureURLType>
        <channels>
          <!--ro, opt, string, 通道号, range:[,]-->test
        </channels>
      </Event>
    </EventList>
    <channels>
      <!--ro, opt, string, 图片事件图片上传方式, range:[,], desc:该节点表示所有含图片事件图片上传方式,如果该字段下发,那么<Event>中<pictureURLType>不做生效；如果不下发这个节点,设备采用能力集返回的图片默认上传方式上报,前端设备默认为二进制,后端设备默认为设备本地UR-->test
    </channels>
    <pictureURLType>
      <!--ro, opt, enum, 报警图片格式, subType:string, [binary#二进制,localURL#设备本地URL,cloudStorageURL#云存储URL]-->binary
    </pictureURLType>
    <ChangedUploadSub>
      <!--ro, opt, object, 订阅报文-->
      <interval>
        <!--ro, opt, int, 布防guid的生命周期, range:[,], step:, unit:, unitType:, desc:布防guid的生命周期,该间隔期间未过来重连,设备认为是新的一路布防,重新生成guid-->5
      </interval>
      <StatusSub>
        <!--ro, opt, object, 子状态-->
        <all>
          <!--ro, opt, bool, 是否订阅所有-->true
        </all>
        <channel>
          <!--ro, opt, bool, 订阅通道状态, desc:all为true时不必传-->true
        </channel>
        <hd>
          <!--ro, opt, bool, 订阅磁盘状态, desc:all为true时不必传-->true
        </hd>
        <capability>
          <!--ro, opt, bool, 订阅能力集变化状态, desc:all为true时不必传-->true
        </capability>
      </StatusSub>
    </ChangedUploadSub>
  </SubscribeEvent>
</HttpHostNotification>

47. 配置单个监听主机参数

47.1 命令

PUT /ISAPI/Event/notification/httpHosts/<hostID>

47.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HttpHostNotification xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 监听主机, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, id, range:[,]-->test
  </id>
  <url>
    <!--req, string, URL, range:[,]-->test
  </url>
  <protocolType>
    <!--req, enum, 协议类型, subType:string, [HTTP#HTTP协议,HTTPS#HTTPS协议,EHome#EHome协议]-->HTTP
  </protocolType>
  <parameterFormatType>
    <!--req, enum, 参数格式类型, subType:string, [JSON#JSON格式,XML#XML格式]-->JSON
  </parameterFormatType>
  <addressingFormatType>
    <!--req, enum, 地址类型, subType:string, [hostname#hostname,ipaddress#ipaddress]-->hostname
  </addressingFormatType>
  <hostName>
    <!--opt, string, 主机名, range:[,]-->test
  </hostName>
  <ipAddress>
    <!--opt, string, IP地址, range:[,]-->test
  </ipAddress>
  <ipv6Address>
    <!--opt, string, ipv6地址, range:[,]-->test
  </ipv6Address>
  <portNo>
    <!--opt, int, 端口号, range:[,], step:, unit:, unitType:-->1
  </portNo>
  <userName>
    <!--opt, string, 用户名, range:[,]-->test
  </userName>
  <password>
    <!--opt, string, 密码, range:[,]-->test
  </password>
  <httpAuthenticationMethod>
    <!--req, enum, 认证方法, subType:string, [MD5digest#MD5,none#无]-->MD5digest
  </httpAuthenticationMethod>
  <ANPR>
    <!--opt, object, ANPR-->
    <detectionUpLoadPicturesType>
      <!--opt, enum, 侦测上传图片类型控制, subType:string, [all#所有,licensePlatePicture#车牌图片,detectionPicture#检测图片]-->all
    </detectionUpLoadPicturesType>
  </ANPR>
  <Extensions>
    <!--opt, object, 范围-->
    <intervalBetweenEvents>
      <!--opt, int, 事件间隔时间, range:[,], step:, unit:, unitType:-->1
    </intervalBetweenEvents>
  </Extensions>
  <uploadImagesDataType>
    <!--opt, enum, 图片数据类型, subType:string, [URL#URL,binary#二进制], desc:默认是二进制,在支持了云存储之后,配置成URL,才会生效-->URL
  </uploadImagesDataType>
  <httpBroken>
    <!--opt, bool, 断网续传使能, desc:开启后实现监听的断网续传功能,对所有事件有效-->true
  </httpBroken>
  <SubscribeEvent>
    <!--opt, object, 该节点表示所有含图片事件图片上传方式-->
    <heartbeat>
      <!--opt, int, 心跳间隔时间, range:[,], step:, unit:, unitType:-->30
    </heartbeat>
    <eventMode>
      <!--req, enum, 事件模式, subType:string, [all#表示所有报警均需要上报,list#表示指定报警才需要上报]-->all
    </eventMode>
    <EventList>
      <!--opt, array, 指定报警上报的方式, subType:object, range:[,]-->
      <Event>
        <!--opt, object, 事件关联的通道信息-->
        <type>
          <!--req, enum, 事件类型, subType:string, [ADAS#高级辅助驾驶报警,ADASAlarm#高级驾驶辅助报警,AID#交通事件检测,ANPR#车牌识别,AccessControllerEvent#门禁主机检测事件,CDsStatus#光盘刻录状态上报,DBD#驾驶行为报警,GPSUpload#GPS信息上传,HFPD#高频人员报警,IO#信号量报警,IOTD#非视频设备检测事件,LES#物流扫描事件,LFPD#低频人员检测,PALMismatch#视频制式不匹配,PIR#PIR,PeopleCounting#客流量统计,PeopleNumChange#人数异常,Standup#人员站立检测,TMA#测温报警,TMPA#测温预警,VMD#移动侦测,abnormalAcceleration#设备加速度异常报警,abnormalDriving#异常驾驶行为,advReachHeight#折线攀高检测,alarmResult#人脸比对,attendance#考勤事件,attendedBaggage#物品拿取,audioAbnormal#声强突变检测,audioexception#音频异常侦测,behaviorResult#异常行为识别结果上报,blindSpotDetection#盲区监测报警,cardMatch#认证比对,changedStatus#状态变化上报,collision#碰撞,containerDetection#集装箱检测,crowdSituationAnalysis#人群态势分析,databaseException#数据库异常,defocus#虚焦侦测,diskUnformat#磁盘未格式化,diskerror#硬盘错误,diskfull#硬盘满,driverConditionMonitor#驾驶员状态监测报警,emergencyAlarm#紧急报警,faceCapture#人脸抓拍识别,faceSnapModeling#人脸抓拍建模,facedetection#人脸侦测,failDown#人员倒地（使用错误的拼写,faultAlarm#故障告警,fielddetection#区域入侵,fireDetection#火点检测,fireEscapeDetection#消防通道检测,flowOverrun#流量超限,framesPeopleCounting#区域人数统计,getUp#起身检测,group#人员聚集,hdBadBlock#硬盘坏块,hdImpact#硬盘冲击,heatmap#热度图报警,highHDTemperature#硬盘温度过高,highTempAlarm#设备温度过高报警,hotSpare#热备异常,illaccess#非法访问,ipcTransferAbnormal#IPC迁移失败,ipconflict#IP地址冲突,keyPersonGetUp#重点人员起身检测,leavePosition#离岗检测,linedetection#越界侦测（穿越警戒线）,listSyncException#列表（名单）同步异常,loitering#徘徊侦测,lowHDTemperature#硬盘温度过低,mixedTargetDetection#混合目标检测,modelError#模型错误,nicbroken#网络断开,nodeOffline#掉线异常,nonPoliceIntrusion#非警察人员入侵,overSpeed#超速报警,overtimeTarry#超时滞留检测,parking#停车侦测,peopleNumChange#人数变化,peopleNumCounting#人数统计（区别于区域人数统计）,personAbnormalAlarm#人员身份异常报警,personDensityDetection#人员密度,personQueueCounting#排队人数检测,personQueueDetection#排队检测,personQueueRealTime#人员排队检测实时数据上报,personQueueTime#排队时长检测,playCellphone#玩手机检测,pocException#视频异常,poe#POE供电异常,policeAbsent#警察不在场,radarAlarm#雷达告警,radarFieldDetection#雷达区域入侵,radarLineDetection#雷达越界侦测,radarPerimeterRule#雷达规则数据,radarTargetDetection#雷达目标数据,radarVideoDetection#雷视目标检测,raidException#阵列异常,rapidMove#快速移动,reachHeight#攀高检测,recordCycleAbnormal#录像周期不足,recordException#录像异常,regionEntrance#进入区域,regionExiting#离开区域,retention#人员滞留事件,rollover#侧翻,running#人员奔跑,safetyHelmetDetection#安全帽检测,scenechangedetection#场景变更,sensorAlarm#角速度加速度报警,severeHDFailure#硬盘严重故障,shelteralarm#遮挡报警,shipsDetection#船只检测,smokeAndFireDetection#烟火检测,smokeDetection#烟雾检测,softIO#报警软IO,spacingChange#间距异常,sysStorFull#集群系统存储满异常,takingElevatorDetection#乘梯检测（电瓶车进电梯检测）,targetCapture#目标抓拍,temperature#温差报警,thermometry#温度报警,thirdPartyException#第三方异常,toiletTarry#如厕超时检测,tollCodeInfo#二维码信息上报,tossing#抛物,unattendedBaggage#物品遗留,vehicleMatchResult#非授权名单车辆报警上传,vehicleRcogResult#车辆图片二次识别,versionAbnormal#集群版本异常,videoException#视频异常,videoloss#视频丢失,violationAlarm#违规告警,violentMotion#剧烈运动,yardTarry#放风场滞留检测,AccessControllerEvent#门禁事件,IDCardInfoEvent#门禁身份证事件,FaceTemperatureMeasurementEvent#门禁测温事件,QRCodeEvent#门禁二维码事件], desc:参考事件类型列表eventType-->mixedTargetDetection
        </type>
        <minorAlarm>
          <!--opt, string, 报警次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x400,0x401,0x402,0x403
        </minorAlarm>
        <minorException>
          <!--opt, string, 异常次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x400,0x401,0x402,0x403
        </minorException>
        <minorOperation>
          <!--opt, string, 操作次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x400,0x401,0x402,0x403
        </minorOperation>
        <minorEvent>
          <!--opt, string, 事件次类型, range:[,], desc:参考事件上传宏定义;type为AccessControllerEvent，IDCardInfoEvent该字段必填-->0x01,0x02,0x03,0x04
        </minorEvent>
        <pictureURLType>
          <!--opt, enum, 报警图片格式, subType:string, [binary#二进制,localURL#设备本地URL,cloudStorageURL#云存储URL], desc:事件关联的通道信息,支持复选,用英文逗号隔开-->binary
        </pictureURLType>
        <channels>
          <!--opt, string, 通道号, range:[,]-->test
        </channels>
      </Event>
    </EventList>
    <channels>
      <!--opt, string, 图片事件图片上传方式, range:[,], desc:该节点表示所有含图片事件图片上传方式,如果该字段下发,那么<Event>中<pictureURLType>不做生效；如果不下发这个节点,设备采用能力集返回的图片默认上传方式上报,前端设备默认为二进制,后端设备默认为设备本地UR-->test
    </channels>
    <pictureURLType>
      <!--opt, enum, 报警图片格式, subType:string, [binary#二进制,localURL#设备本地URL,cloudStorageURL#云存储URL]-->binary
    </pictureURLType>
    <ChangedUploadSub>
      <!--opt, object, 订阅报文-->
      <interval>
        <!--opt, int, 布防guid的生命周期, range:[,], step:, unit:, unitType:, desc:布防guid的生命周期,该间隔期间未过来重连,设备认为是新的一路布防,重新生成guid-->5
      </interval>
      <StatusSub>
        <!--opt, object, 子状态-->
        <all>
          <!--opt, bool, 是否订阅所有-->true
        </all>
        <channel>
          <!--opt, bool, 订阅通道状态, desc:all为true时不必传-->true
        </channel>
        <hd>
          <!--opt, bool, 订阅磁盘状态, desc:all为true时不必传-->true
        </hd>
        <capability>
          <!--opt, bool, 订阅能力集变化状态, desc:all为true时不必传-->true
        </capability>
      </StatusSub>
    </ChangedUploadSub>
  </SubscribeEvent>
</HttpHostNotification>

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

48. 删除单个监听主机配置参数

48.1 命令

DELETE /ISAPI/Event/notification/httpHosts/<hostID>

48.2 输入参数

无

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

49. 获取设备接入协议列表能力

49.1 命令

GET /ISAPI/Security/adminAccesses/capabilities

49.2 输入参数

无

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocolList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 设备接入协议列表对象, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AdminAccessProtocol>
    <!--ro, req, object, 设备接入协议-->
    <id>
      <!--ro, req, string, 序号ID, range:[,]-->test
    </id>
    <enabled opt="true,false">
      <!--ro, opt, bool, 使能, attr:opt{req, string, 未定义, range:[,]}-->true
    </enabled>
    <protocol opt="HTTP,HTTPS,SDK,RTSP,DEV_MANAGE,WebSocket,WebSocketS,SDK_OVER_TLS,MATRIX_GATEWAY,IOT,GB35114,104Proto,SRTP">
      <!--ro, req, string, HTTPS, range:[,], attr:opt{req, string, 协议类型, range:[,]}-->GB35114
    </protocol>
    <redirectToHttps>
      <!--ro, opt, bool, 是否开启https重定向-->null
    </redirectToHttps>
    <streamOverTls>
      <!--ro, opt, bool, 当protocol选择为SDK_OVER_TLS时-->true
    </streamOverTls>
    <portNo min="2000" max="65535" default="8443">
      <!--ro, req, int, 当前协议对应的端口号;协议类型通过protocol字段获取, range:[1,65535], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},default{opt, int, 未定义, range:[,], step:, unit:, unitType:}-->1
    </portNo>
    <TLS1_1Enable opt="true,false">
      <!--ro, opt, bool, TLS 1.1 版本使能, attr:opt{req, string, 取值范围, range:[,]}-->null
    </TLS1_1Enable>
    <TLS1_2Enable opt="true,false">
      <!--ro, opt, bool, TLS 1.2 版本使能, attr:opt{req, string, 取值范围, range:[,]}-->null
    </TLS1_2Enable>
    <TLS1_3Enable opt="true,false">
      <!--ro, opt, bool, TLS 1.3 版本使能, attr:opt{req, string, 取值范围, range:[,]}-->null
    </TLS1_3Enable>
    <TLS1_1SecurityPrompt opt="Only when the video output mode is Panorama, the device supports the VCA functions  except Monitoring">
      <!--ro, req, string, TLS1.1安全风险提示, range:[,], attr:opt{req, string, 协议类型, range:[,]},
desc:prompt1中文提示语:仅在全景图像模式下支持非普通监控资源外的智能功能。
prompt1英文提示语:Only when the video output mode is Panorama, the device supports the VCA functions  except Monitoring.*/-->Only when the video output mode is Panorama, the device supports the VCA functions except Monitoring
    </TLS1_1SecurityPrompt>
  </AdminAccessProtocol>
</AdminAccessProtocolList>

50. 获取设备所有协议安全参数

50.1 命令

GET /ISAPI/Security/adminAccesses

50.2 输入参数

无

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocolList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 设备接入协议列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AdminAccessProtocol>
    <!--ro, opt, object, 设备接入协议-->
    <id>
      <!--ro, req, string, 序号ID, range:[,]-->1
    </id>
    <enabled>
      <!--ro, opt, bool, 使能-->true
    </enabled>
    <protocol>
      <!--ro, req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,SDK#SDK私有协议等于DEV_MANAGE,RTSP#RTSP,DEV_MANAGE#SDK,WebSocket#WebSocket,WebSocketS#WebSocketS,SDK_OVER_TLS#SDK私有协议TLS链路加密,MATRIX_GATEWAY#矩阵接入网关协议,IOT#物联网协议,GB35114#公安监控国标35114协议,104Proto#IEC104标准通讯协议,Bonjour#Bonjour,SRTP#RTSP码流传输加密],
desc:默认开启协议：HTTP,SDK,RTSP,DEV_MANAGE
默认关闭协议：HTTPS,WebSocket,WebSocketS,
SDK_OVER_TLS,MATRIX_GATEWAY,IOT,GB35114,104Proto,SRTP-->HTTP
    </protocol>
    <redirectToHttps>
      <!--ro, opt, bool, 重定向, desc:在protocol为HTTPS时有效,是否开启https重定向。-->true
    </redirectToHttps>
    <streamOverTls>
      <!--ro, opt, bool, 码流是否加密, desc:当protocol选择为SDK_OVER_TLS时,码流是否启用TLS链路加密-->true
    </streamOverTls>
    <portNo>
      <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:, desc:当前协议对应的端口号;协议类型通过protocol字段获取-->80
    </portNo>
    <TLS1_1Enable>
      <!--ro, opt, bool, TLS 1.1 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
    </TLS1_1Enable>
    <TLS1_2Enable>
      <!--ro, opt, bool, TLS 1.2 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
    </TLS1_2Enable>
    <TLS1_3Enable>
      <!--ro, opt, bool, TLS 1.3 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
    </TLS1_3Enable>
  </AdminAccessProtocol>
</AdminAccessProtocolList>

51. 配置设备所有协议安全参数

51.1 命令

PUT /ISAPI/Security/adminAccesses

51.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocolList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, array, 设备接入协议列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <AdminAccessProtocol>
    <!--opt, object, 设备接入协议-->
    <id>
      <!--req, string, 序号ID, range:[,]-->1
    </id>
    <enabled>
      <!--opt, bool, 使能-->true
    </enabled>
    <protocol>
      <!--req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,SDK#SDK私有协议等于DEV_MANAGE,RTSP#RTSP,DEV_MANAGE#SDK,WebSocket#WebSocket,WebSocketS#WebSocketS,SDK_OVER_TLS#SDK私有协议TLS链路加密,MATRIX_GATEWAY#矩阵接入网关协议,IOT#物联网协议,GB35114#公安监控国标35114协议,104Proto#IEC104标准通讯协议,Bonjour#Bonjour,SRTP#RTSP码流传输加密],
desc:默认开启协议：HTTP,SDK,RTSP,DEV_MANAGE
默认关闭协议：HTTPS,WebSocket,WebSocketS,
SDK_OVER_TLS,MATRIX_GATEWAY,IOT,GB35114,104Proto,SRTP-->HTTP
    </protocol>
    <redirectToHttps>
      <!--opt, bool, 重定向, desc:在protocol为HTTPS时有效,是否开启https重定向。-->true
    </redirectToHttps>
    <streamOverTls>
      <!--opt, bool, 码流是否加密, desc:当protocol选择为SDK_OVER_TLS时,码流是否启用TLS链路加密-->true
    </streamOverTls>
    <portNo>
      <!--req, int, 端口号, range:[,], step:, unit:, unitType:, desc:当前协议对应的端口号;协议类型通过protocol字段获取-->80
    </portNo>
    <TLS1_1Enable>
      <!--opt, bool, TLS 1.1 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
    </TLS1_1Enable>
    <TLS1_2Enable>
      <!--opt, bool, TLS 1.2 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
    </TLS1_2Enable>
    <TLS1_3Enable>
      <!--opt, bool, TLS 1.3 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
    </TLS1_3Enable>
  </AdminAccessProtocol>
</AdminAccessProtocolList>

51.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

52. 获取设备单个协议安全参数

52.1 命令

GET /ISAPI/Security/adminAccesses/<indexID>

52.2 输入参数

无

52.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocol xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 设备接入协议, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 序号ID, range:[,]-->1
  </id>
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <protocol>
    <!--ro, req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,SDK#SDK私有协议等于DEV_MANAGE,RTSP#RTSP,DEV_MANAGE#SDK,WebSocket#WebSocket,WebSocketS#WebSocketS,SDK_OVER_TLS#SDK私有协议TLS链路加密,MATRIX_GATEWAY#矩阵接入网关协议,IOT#物联网协议,GB35114#公安监控国标35114协议,104Proto#IEC104标准通讯协议,Bonjour#Bonjour,SRTP#RTSP码流传输加密],
desc:默认开启协议：HTTP,SDK,RTSP,DEV_MANAGE
默认关闭协议：HTTPS,WebSocket,WebSocketS,
SDK_OVER_TLS,MATRIX_GATEWAY,IOT,GB35114,104Proto,SRTP-->HTTP
  </protocol>
  <redirectToHttps>
    <!--ro, opt, bool, 重定向, desc:在protocol为HTTPS时有效,是否开启https重定向。-->true
  </redirectToHttps>
  <streamOverTls>
    <!--ro, opt, bool, 码流是否加密, desc:当protocol选择为SDK_OVER_TLS时,码流是否启用TLS链路加密-->true
  </streamOverTls>
  <portNo>
    <!--ro, req, int, 端口号, range:[,], step:, unit:, unitType:, desc:当前协议对应的端口号;协议类型通过protocol字段获取-->80
  </portNo>
  <TLS1_1Enable>
    <!--ro, opt, bool, TLS 1.1 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
  </TLS1_1Enable>
  <TLS1_2Enable>
    <!--ro, opt, bool, TLS 1.2 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
  </TLS1_2Enable>
  <TLS1_3Enable>
    <!--ro, opt, bool, TLS 1.3 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
  </TLS1_3Enable>
</AdminAccessProtocol>

53. 配置设备单个协议安全参数

53.1 命令

PUT /ISAPI/Security/adminAccesses/<indexID>

53.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AdminAccessProtocol xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 设备接入协议, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 序号ID, range:[,]-->1
  </id>
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <protocol>
    <!--req, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,SDK#SDK私有协议等于DEV_MANAGE,RTSP#RTSP,DEV_MANAGE#SDK,WebSocket#WebSocket,WebSocketS#WebSocketS,SDK_OVER_TLS#SDK私有协议TLS链路加密,MATRIX_GATEWAY#矩阵接入网关协议,IOT#物联网协议,GB35114#公安监控国标35114协议,104Proto#IEC104标准通讯协议,Bonjour#Bonjour,SRTP#RTSP码流传输加密],
desc:默认开启协议：HTTP,SDK,RTSP,DEV_MANAGE
默认关闭协议：HTTPS,WebSocket,WebSocketS,
SDK_OVER_TLS,MATRIX_GATEWAY,IOT,GB35114,104Proto,SRTP-->HTTP
  </protocol>
  <redirectToHttps>
    <!--opt, bool, 重定向, desc:在protocol为HTTPS时有效,是否开启https重定向。-->true
  </redirectToHttps>
  <streamOverTls>
    <!--opt, bool, 码流是否加密, desc:当protocol选择为SDK_OVER_TLS时,码流是否启用TLS链路加密-->true
  </streamOverTls>
  <portNo>
    <!--req, int, 端口号, range:[,], step:, unit:, unitType:, desc:当前协议对应的端口号;协议类型通过protocol字段获取-->80
  </portNo>
  <TLS1_1Enable>
    <!--opt, bool, TLS 1.1 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
  </TLS1_1Enable>
  <TLS1_2Enable>
    <!--opt, bool, TLS 1.2 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
  </TLS1_2Enable>
  <TLS1_3Enable>
    <!--opt, bool, TLS 1.3 版本使能, dep:and,{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,HTTPS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocket},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,WebSocketS},{$.AdminAccessProtocolList.AdminAccessProtocol.protocol,eq,SDK_OVER_TLS}-->true
  </TLS1_3Enable>
</AdminAccessProtocol>

53.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

54. 获取系统安全能力

54.1 命令

GET /ISAPI/Security/capabilities

54.2 输入参数

无

54.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SecurityCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 系统安全能力, attr:version{req, string, 协议版本, range:[,]}-->
  <supportUserNums>
    <!--ro, opt, int, 支持用户最大数, range:[,], step:, unit:, unitType:-->0
  </supportUserNums>
  <userBondIpNums>
    <!--ro, opt, int, 支持绑定IP最大数, range:[,], step:, unit:, unitType:-->0
  </userBondIpNums>
  <userBondMacNums>
    <!--ro, opt, int, 支持绑定MAC地址最大数, range:[,], step:, unit:, unitType:-->0
  </userBondMacNums>
  <isSupCertificate>
    <!--ro, opt, bool, 是否支持认证-->true
  </isSupCertificate>
  <issupIllegalLoginLock>
    <!--ro, opt, bool, 是否支持登陆锁定-->true
  </issupIllegalLoginLock>
  <isSupportOnlineUser>
    <!--ro, opt, bool, 是否支持在线用户配置-->true
  </isSupportOnlineUser>
  <isSupportAnonymous>
    <!--ro, opt, bool, 是否支持匿名登陆-->true
  </isSupportAnonymous>
  <isSupportStreamEncryption>
    <!--ro, opt, bool, 是否支持码流加密-->true
  </isSupportStreamEncryption>
  <securityVersion opt="1,2">
    <!--ro, opt, int, 表示加密能力集, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:每一个版本包括两个方面：加密算法及加密的节点范围。目前1表示AES128加密，2表示AES256加密，加密范围在各个协议中描述-->1
  </securityVersion>
  <keyIterateNum>
    <!--ro, opt, int, 秘钥迭代次数, range:[,], step:, unit:, unitType:, dep:or,{$.SecurityCap.securityVersion,eq,1},{$.SecurityCap.securityVersion,eq,2}, desc:depend on securityVersion,取值一般是100~1000-->100
  </keyIterateNum>
  <isSupportUserCheck>
    <!--ro, opt, bool, 是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验, dep:or,{$.SecurityCap.securityVersion,eq,0},{$.SecurityCap.securityVersion,eq,1}, desc:增加能力,表示是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验,此功能只在支持敏感信息加密的版本上有效,即depend on securityVersion-->true
  </isSupportUserCheck>
  <isSupportGUIDFileDataExport>
    <!--ro, opt, bool, 表示是否支持设备GUID文件导出, desc:对应的配置接口:/ISAPI/Security/GUIDFileData-->true
  </isSupportGUIDFileDataExport>
  <isSupportSecurityQuestionConfig>
    <!--ro, opt, bool, 表示是否支持回答安全问题, desc:对应的配置接口:/ISAPI/Security/questionConfiguration-->true
  </isSupportSecurityQuestionConfig>
  <supportSecurityNode opt="wirelessServer,wirelessDial">
    <!--ro, opt, string, 支持敏感加密的补充节点, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:为支持敏感加密的补充节点；由于原先制定的isapi敏感信息加密方案(即ISAPI明文传输处理方案)中,有部分接口包含了敏感信息却被遗漏了。现需对这些接口进行加密,为了兼容老设备，因此新增该能力节点。
           该节点中返回wirelessServer时,代表支持对下面接口的敏感信息加密：
           /ISAPI/System/Network/interfaces/<ID>/wirelessServer/capabilities
           /ISAPI/System/Network/interfaces/<ID>/wirelessServer
           该节点中返回wirelessDial时,代表支持对下面接口的敏感信息加密：
           /ISAPI/System/Network/WirelessDial/Interfaces
           /ISAPI/System/Network/WirelessDial/Interfaces/<ID>-->wirelessServer
  </supportSecurityNode>
  <isSupportGetOnlineUserListSC>
    <!--ro, opt, bool, 是否支持在线用户列表查询, desc:对应的配置接口:/ISAPI/Security/onlineUser-->true
  </isSupportGetOnlineUserListSC>
  <SecurityLimits>
    <!--ro, opt, object, 参数安全限制能力-->
    <LoginPasswordLenLimit min="1" max="16">
      <!--ro, opt, string, 用户登陆密码长度限制, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </LoginPasswordLenLimit>
    <SecurityAnswerLenLimit min="1" max="128">
      <!--ro, opt, string, 安全问题答案长度限制, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </SecurityAnswerLenLimit>
  </SecurityLimits>
  <RSAKeyLength opt="512,1024,2048" def="2048">
    <!--ro, opt, enum, HTTPS证书长度, subType:int, [512#512,1024#1024,2048#2048], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->2048
  </RSAKeyLength>
  <isSupportONVIFUserManagement>
    <!--ro, opt, bool, ONVIF协议用户管理-->true
  </isSupportONVIFUserManagement>
  <WebCertificateCap>
    <!--ro, opt, object, HTTP认证能力, desc:该节点不返回则表示设备默认支持basic,digest认证-->
    <CertificateType opt="basic,digest,digest/basic">
      <!--ro, req, enum, 证书类型, subType:string, [basic#basic认证,digest#digest认证,digest/basic#digest/basic认证], attr:opt{req, string, 取值范围, range:[,]}-->basic
    </CertificateType>
    <SecurityAlgorithm>
      <!--ro, opt, object, 安全算法, dep:or,{$.SecurityCap.WebCertificateCap.CertificateType,eq,digest},{$.SecurityCap.WebCertificateCap.CertificateType,eq,digest/basic}-->
      <algorithmType opt="MD5,SHA256,MD5/SHA256">
        <!--ro, opt, enum, 算法类型, subType:string, [MD5#MD5,SHA256#SHA256,MD5/SHA256#MD5/SHA256], attr:opt{req, string, 取值范围, range:[,]}-->MD5
      </algorithmType>
    </SecurityAlgorithm>
  </WebCertificateCap>
  <isSupportConfigFileImport>
    <!--ro, opt, bool, 是否支持配置文件安全导入, desc:true支持返回,不支持不返回-->true
  </isSupportConfigFileImport>
  <isSupportConfigFileExport>
    <!--ro, opt, bool, 是否支持配置文件安全导出, desc:true支持返回,不支持不返回-->true
  </isSupportConfigFileExport>
  <cfgFileSecretKeyLenLimit min="0" max="16">
    <!--ro, opt, int, 配置文件校验密钥长度限制, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </cfgFileSecretKeyLenLimit>
  <supportIPCActivatePassword>
    <!--ro, opt, bool, 是否支持IPC激活密码配置-->true
  </supportIPCActivatePassword>
  <isIrreversible>
    <!--ro, opt, bool, 设备是否支持密码不可逆存储, desc:不支持则代表设备端会存用户信息的明文密码,支持则代表设备端密码散列存储-->true
  </isIrreversible>
  <salt>
    <!--ro, opt, string, 用于用户登录时所使用的具体盐值, range:[,]-->test
  </salt>
  <isSupportOnvifInfo>
    <!--ro, opt, bool, 是否支持获取Onvif协议信息接口, desc:支持返回,不支持不返回-->true
  </isSupportOnvifInfo>
  <isSupportPictureURlCertificate opt="true,false">
    <!--ro, opt, bool, 图片url认证配置能力, attr:opt{req, string, 取值范围, range:[,]}, desc:该节点不返回则表示设备默认图片为digest认证-->true
  </isSupportPictureURlCertificate>
  <isSupportGB35114Certificate>
    <!--ro, opt, bool, 是否支持支持GB35114协议CA/SIP认证证书-->true
  </isSupportGB35114Certificate>
  <isSupportAuthenticationMode opt="uKey,private">
    <!--ro, opt, enum, 验证模式, subType:string, [uKey#uKey,private#private], attr:opt{req, string, 取值范围, range:[,]}-->private
  </isSupportAuthenticationMode>
  <isSupportUnloggedUserPermissionConfig opt="true,false">
    <!--ro, opt, bool, 是否支持未登录用户权限配置, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isSupportUnloggedUserPermissionConfig>
  <isSupportUserNamePasswordCheckUpgrade>
    <!--ro, opt, bool, 是否支持用户名密码校验升级, desc:该节点不返回表示不支持-->true
  </isSupportUserNamePasswordCheckUpgrade>
  <isSupportDeviceCertificatesManagement>
    <!--ro, opt, bool, 是否支持设备证书管理, desc:该节点不返回表示不支持-->true
  </isSupportDeviceCertificatesManagement>
  <isSupportSIPCertificatesManagement>
    <!--ro, opt, bool, 是否支持SIP证书管理, desc:支持返回，不支持不返回；对应/ISAPI/Security/SIPCertificate协议；当设备没返回节点<SIPCertificatesManagementCap>，设备实际上也是有可能支持的，这是对之前协议的补充-->true
  </isSupportSIPCertificatesManagement>
  <isSupportDeviceSelfSignCertExport>
    <!--ro, opt, bool, 是否支持设备自签名证书导出-->true
  </isSupportDeviceSelfSignCertExport>
  <isSupportSecurityEmail>
    <!--ro, opt, bool, 是否支持安全邮箱配置, desc:不返回表示不支持-->true
  </isSupportSecurityEmail>
  <isSupportRTSPCertificate opt="true,false">
    <!--ro, opt, bool, 是否支持RTSP证书, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isSupportRTSPCertificate>
  <maxIllegalLoginTimes min="3" max="20" def="5">
    <!--ro, opt, int, 最大非法登陆尝试次数, range:[3,20], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:issupportIllegalLoginLock为true时有效,当设备最大非法登陆尝试次数时返回-->3
  </maxIllegalLoginTimes>
  <SecurityAdvanced>
    <!--ro, opt, object, 安全高级参数-->
    <securityEnhanced>
      <!--ro, opt, bool, 是否支持安全加固-->true
    </securityEnhanced>
    <noOperationEnabled>
      <!--ro, req, bool, 无操作控件超时时间使能-->true
    </noOperationEnabled>
    <noOperationTime min="1" max="60" def="15">
      <!--ro, req, int, 控件无操作超时时间, range:[1,60], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->15
    </noOperationTime>
    <isSupportDigestStatus>
      <!--ro, opt, bool, 摘要状态-->true
    </isSupportDigestStatus>
  </SecurityAdvanced>
  <LoginLinkNum>
    <!--ro, opt, object, 控件同时登陆数量-->
    <maxLinkNum min="1" max="128" def="50">
      <!--ro, req, int, 控件同时登陆最大数量, range:[1,128], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->50
    </maxLinkNum>
  </LoginLinkNum>
  <isSupportCCClientCertificate>
    <!--ro, opt, bool, 是否支持CC客户端证书功能-->true
  </isSupportCCClientCertificate>
  <passwordValidity min="0" max="365">
    <!--ro, opt, string, 密码有效期范围, range:[0,365], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:返回该节点表示支持密码有效期配置，仅管理员用户可以修改-->1
  </passwordValidity>
  <isSupportResetChannelPassword>
    <!--ro, opt, bool, 是否支持重置通道密码-->true
  </isSupportResetChannelPassword>
  <DoubleVerificationCap>
    <!--ro, opt, object, 二次认证能力-->
    <isSupportUsersConfig>
      <!--ro, opt, bool, 是否支持二次认证用户配置-->true
    </isSupportUsersConfig>
    <isSupportUsersPermissionConfig>
      <!--ro, opt, bool, 是否支持二次认证用户权限配置-->true
    </isSupportUsersPermissionConfig>
  </DoubleVerificationCap>
  <isSupportUserSearch>
    <!--ro, opt, bool, 是否支持用户查找-->true
  </isSupportUserSearch>
  <keypadPassword min="1" max="10">
    <!--ro, opt, int, 键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当不同类型用户的键盘密码长度不一致时,此节点仅表示管理员用户的键盘密码长度,否则表示所有类型用户的键盘密码的统一长度-->1
  </keypadPassword>
  <installerKeypadPassword min="1" max="10">
    <!--ro, opt, int, 安装员的键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </installerKeypadPassword>
  <operatorKeypadPassword min="1" max="10">
    <!--ro, opt, int, 操作员的键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </operatorKeypadPassword>
  <userOperateType opt="1,2,3">
    <!--ro, opt, enum, 用户操作类型：1-网络用户, subType:int, [1#网络用户,2#键盘用户,3#网络用户+键盘用户], attr:opt{req, string, 取值范围, range:[,]}-->1
  </userOperateType>
  <isSptUserEnabled>
    <!--ro, opt, bool, 是否支持用户使能配置-->true
  </isSptUserEnabled>
  <isSptAdminCap>
    <!--ro, opt, bool, 是否支持Admin权限能力获取-->true
  </isSptAdminCap>
  <isSupportBackLogCfg>
    <!--ro, opt, bool, 是否支持后台日志基本参数配置-->true
  </isSupportBackLogCfg>
  <isSupportBackLogExport>
    <!--ro, opt, bool, 是否支持后台日志导出-->true
  </isSupportBackLogExport>
  <isSupportModifyInnerPassword opt="true,false">
    <!--ro, opt, bool, 是否支持设备内置密码修改, attr:opt{req, string, 取值范围, range:[,]}, desc:如:数据库密码、系统账户密码-->true
  </isSupportModifyInnerPassword>
  <isSupportEncryptCertificate>
    <!--ro, opt, bool, 是否支持证书加密, desc:/ISAPI/Security/deviceCertificate-->true
  </isSupportEncryptCertificate>
  <maxIllegalLoginLockTime min="1" max="120" def="30.00">
    <!--ro, opt, int, 锁定时间范围, range:[1,120], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </maxIllegalLoginLockTime>
  <cloudSensitiveInfoEncryptType>
    <!--ro, opt, string, 云敏感信息加密类型, range:[,], desc:当前设备返回"2.1",该字段返回2.1之表示敏感信息加密密钥生成方式为SHA256(calc_sha256(user, salt, SHA256(user+salt2+SHA256(user+salt+password)))+ AaBbCcDd1234!@#$)-->2.1
  </cloudSensitiveInfoEncryptType>
  <isSupportCertificateCustomID>
    <!--ro, opt, bool, 是否支持证书配置使用用户自定义ID-->true
  </isSupportCertificateCustomID>
  <isSupportResetLANPassword>
    <!--ro, opt, bool, 是否支持重置局域网设备密码, desc:对应/ISAPI/Security/resetPassword/certification?format=json-->true
  </isSupportResetLANPassword>
  <isSupportPicHttpsCertificatesManagement>
    <!--ro, opt, bool, 是否支持图片https证书管理, desc:支持返回,不支持不返回-->true
  </isSupportPicHttpsCertificatesManagement>
  <isSupportAKSKImport>
    <!--ro, opt, bool, 是否支持AKSK导入, desc:true支持返回,不支持不返回-->true
  </isSupportAKSKImport>
  <isSupportAKSKExport>
    <!--ro, opt, bool, 是否支持AKSK导出, desc:true支持返回,不支持不返回-->true
  </isSupportAKSKExport>
  <isSupportAKSKReset>
    <!--ro, opt, bool, 是否支持AKSK重置, desc:true支持返回,不支持不返回-->true
  </isSupportAKSKReset>
  <ExportCertificateFile>
    <!--ro, opt, object, 是否支持导出证书, desc:对应URL:POST /ISAPI/Security/serverCertificate/exportCertificateFile-->
    <type opt="GB35114,GB35114Service">
      <!--ro, req, enum, 支持的导出证书类型, subType:string, [GB35114#表示支持导出GB35114证书（作为客户端）,GB35114Service#GB35114证书（作为服务端）], attr:opt{req, string, 取值范围, range:[,]}, desc:GB35114-表示支持导出GB35114证书-->GB35114
    </type>
  </ExportCertificateFile>
  <isSupportGB351114FDWSFCertificate>
    <!--ro, opt, bool, 是否支持FDWSF证书管理,
desc:支持返回,不支持不返回,
对应URL：/ISAPI/Security/GB351114/FDWSFCertificate/capabilities?format=json
POST  /ISAPI/Security/GB351114/FDWSFCertificate?format=json
GET    /ISAPI/Security/GB351114/FDWSFCertificate?format=json
DELETE /ISAPI/Security/GB351114/FDWSFCertificate?format=json-->true
  </isSupportGB351114FDWSFCertificate>
  <isSupportMediaObjectEncryption>
    <!--ro, opt, bool, 是否支持媒体数据中隐私目标加密, desc:支持返回true,不支持不返回或者返回false,对应URL:/ISAPI/Security/MediaObjectEncryption/capabilities?format=json-->true
  </isSupportMediaObjectEncryption>
</SecurityCap>

55. 获取在线用户信息

55.1 命令

GET /ISAPI/Security/onlineUser

55.2 输入参数

无

55.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OnlineUserList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 在线用户信息表单, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <OnlineUser>
    <!--ro, req, object, 在线用户信息-->
    <id>
      <!--ro, req, string, 用户序号, range:[,]-->test
    </id>
    <name>
      <!--ro, opt, string, 用户名, range:[,]-->test
    </name>
    <type>
      <!--ro, opt, enum, 用户类型, subType:string, [admin#管理员,operator#操作员,viewer#观察员]-->admin
    </type>
    <loginTime>
      <!--ro, opt, datetime, 登录时间, desc:ISO8601 time-->1970-01-01T00:00:00+08:00
    </loginTime>
    <clientAddress>
      <!--ro, req, object, 用户所登录的IP地址信息-->
      <ipAddress>
        <!--ro, opt, string, 用户所登录的IPV4地址信息, range:[,]-->test
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, 用户所登录的IPV6地址信息, range:[,]-->test
      </ipv6Address>
    </clientAddress>
  </OnlineUser>
</OnlineUserList>

56. 获取非在线用户权限能力

56.1 命令

GET /ISAPI/Security/UnloggedUserPermission/capabilities?format=json

56.2 输入参数

无

56.3 输出参数

{
    "UnloggedUserPermissionCap": {
    /*ro, req, object, 未登录用户权限信息*/
        "localPreview": {
        /*ro, req, object, 本地预览权限*/
            "channelID": {
            /*ro, req, object, 本地预览权限配置的通道*/
                "@min":  1,
                /*ro, req, int, 最小值, range:[,], step:, unit:, unitType:*/
                "@max":  2,
                /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
                "#text":  1
                /*ro, opt, int, 示例, range:[,], step:, unit:, unitType:*/
            },
            "enable":  "true,false"
            /*ro, req, string, 权限开关, range:[,]*/
        }
    }
}

57. 获取非在线用户权限配置

57.1 命令

GET /ISAPI/Security/UnloggedUserPermission?format=json

57.2 输入参数

无

57.3 输出参数

{
    "UnloggedUserPermission": {
    /*ro, req, object, 未登录用户权限信息*/
        "localPreview": [
        /*ro, req, array, 本地预览权限, subType:object, range:[,]*/
            {
                "channelID":  1,
                /*ro, req, int, 通道号, range:[,], step:, unit:, unitType:*/
                "enable":  true
                /*ro, req, bool, 权限开关*/
            }
        ]
    }
}

58. 配置非在线用户权限配置

58.1 命令

PUT /ISAPI/Security/UnloggedUserPermission?format=json

58.2 输入参数

{
    "UnloggedUserPermission": {
    /*req, object, 未登录用户权限信息*/
        "localPreview": [
        /*req, array, 本地预览权限, subType:object, range:[,]*/
            {
                "channelID":  1,
                /*req, int, 通道号, range:[,], step:, unit:, unitType:*/
                "enable":  true
                /*req, bool, 权限开关*/
            }
        ]
    }
}

58.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

59. 获取设备安全问题

59.1 命令

GET /ISAPI/Security/questionConfiguration

59.2 输入参数

无

59.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SecurityQuestion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 安全问题, attr:version{req, string, 协议版本, range:[,]}-->
  <QuestionList>
    <!--ro, req, array, 问题列表, subType:object, range:[,]-->
    <Question>
      <!--ro, req, object, 单个问题-->
      <id>
        <!--ro, req, int, 表示设备支持的安全问题序号, range:[,], step:, unit:, unitType:, desc:设备保证唯一性-->1
      </id>
      <answer>
        <!--ro, opt, string, 表示安全问题的答案, range:[,], desc:GET时不应该返回，PUT时可写，网传加密 先BASE64后AES128CBE的加密方式-->test
      </answer>
      <mark>
        <!--ro, req, bool, 表示安全问题的标记, desc:标记用户设置过的安全问题；配置时只处理选中位当前设备配置安全问题支持3个（一个都不能少）-->true
      </mark>
    </Question>
  </QuestionList>
</SecurityQuestion>

60. 配置设备安全问题

60.1 命令

PUT /ISAPI/Security/questionConfiguration

60.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SecurityQuestion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 安全问题, attr:version{req, string, 协议版本, range:[,]}-->
  <QuestionList>
    <!--req, array, 问题列表, subType:object, range:[,]-->
    <Question>
      <!--req, object, 单个问题-->
      <id>
        <!--req, int, 表示设备支持的安全问题序号, range:[,], step:, unit:, unitType:, desc:设备保证唯一性-->1
      </id>
      <answer>
        <!--wo, opt, string, 表示安全问题的答案, range:[,], desc:GET时不应该返回，PUT时可写，网传加密 先BASE64后AES128CBE的加密方式-->test
      </answer>
      <mark>
        <!--req, bool, 表示安全问题的标记, desc:标记用户设置过的安全问题；配置时只处理选中位当前设备配置安全问题支持3个（一个都不能少）-->true
      </mark>
    </Question>
  </QuestionList>
  <password>
    <!--wo, opt, string, 用户登录密码, range:[,], desc:CBC,用户登录密码,该字段为只写字段,并支持敏感信息加密-->test
  </password>
</SecurityQuestion>

60.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

61. 获取单个设备安全问题

61.1 命令

GET /ISAPI/Security/questionConfiguration/<indexID>

61.2 输入参数

无

61.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Question xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 问题, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 表示设备支持的安全问题序号, range:[,], step:, unit:, unitType:, desc:设备保证唯一性-->1
  </id>
  <mark>
    <!--ro, req, bool, 表示安全问题的标记, desc:标记用户设置过的安全问题；配置时只处理选中位当前设备配置安全问题支持3个（一个都不能少）-->true
  </mark>
</Question>

62. 配置单个设备安全问题

62.1 命令

PUT /ISAPI/Security/questionConfiguration/<indexID>

62.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Question xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 问题, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 表示设备支持的安全问题序号, range:[,], step:, unit:, unitType:, desc:设备保证唯一性-->1
  </id>
  <answer>
    <!--wo, opt, string, 表示安全问题的答案, range:[,], desc:GET时不应该返回,PUT时可写,网传加密 先BASE64后AES128CBE的加密方式-->test
  </answer>
  <mark>
    <!--req, bool, 表示安全问题的标记, desc:标记用户设置过的安全问题；配置时只处理选中位当前设备配置安全问题支持3个（一个都不能少）-->true
  </mark>
</Question>

62.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

63. 配置设备安全问题认证

63.1 命令

PUT /ISAPI/Security/questionCertification

63.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SecurityQuestion xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 安全问题, attr:version{req, string, 协议版本, range:[,]}-->
  <QuestionList>
    <!--req, array, 问题列表, subType:object, range:[,]-->
    <Question>
      <!--req, object, 单个问题-->
      <id>
        <!--req, int, 表示设备支持的安全问题序号, range:[,], step:, unit:, unitType:, desc:设备保证唯一性-->1
      </id>
      <answer>
        <!--wo, opt, string, 表示安全问题的答案, range:[,], desc:GET时不应该返回，PUT时可写，网传加密 先BASE64后AES128CBE的加密方式-->test
      </answer>
      <mark>
        <!--req, bool, 表示安全问题的标记, desc:标记用户设置过的安全问题；配置时只处理选中位当前设备配置安全问题支持3个（一个都不能少）-->true
      </mark>
    </Question>
  </QuestionList>
  <password>
    <!--wo, opt, string, 用户登录密码, range:[,], desc:CBC,用户登录密码,该字段为只写字段,并支持敏感信息加密-->test
  </password>
</SecurityQuestion>

63.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

64. 配置IPC激活密码

64.1 命令

PUT /ISAPI/Security/IPCActivatePasswd

64.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IPCActivatePasswd xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, IPC激活密码, attr:version{req, string, 协议版本, range:[,]}-->
  <password>
    <!--req, string, 激活密码, range:[,]-->test
  </password>
</IPCActivatePasswd>

64.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


设备硬件管理

1. 获取设备硬件配置能力

1.1 命令

GET /ISAPI/System/Hardware/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HardwareService xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 能力参数, attr:version{req, string, 协议版本, range:[,]}-->
  <IrLightSwitch>
    <!--ro, opt, object, 红外光切换-->
    <mode opt="open,close">
      <!--ro, req, enum, 模式, subType:string, [open#开启,close#关闭], attr:opt{req, string, 取值范围, range:[,]}-->open
    </mode>
  </IrLightSwitch>
  <ABF>
    <!--ro, opt, object, ABF配置-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
  </ABF>
  <LED>
    <!--ro, opt, object, 状态指示灯配置-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
  </LED>
  <Defog>
    <!--ro, opt, object, 除雾配置-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <mode opt="open,auto">
      <!--ro, req, enum, 模式, subType:string, [open#常开,auto#自动], attr:opt{req, string, 取值范围, range:[,]}-->open
    </mode>
  </Defog>
  <SupplementLight>
    <!--ro, opt, object, 补光灯配置-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <isSupportFireLaserLight opt="true,false">
      <!--ro, opt, bool, 是否支持微光补光配置, attr:opt{req, string, 取值范围, range:[,]}-->true
    </isSupportFireLaserLight>
    <isSupportSupplementLightWord opt="true,false">
      <!--ro, opt, bool, 是否支持激光灯光斑配置, attr:opt{req, string, 取值范围, range:[,]}-->true
    </isSupportSupplementLightWord>
    <captureWithSupplimentLightEnabled opt="true,false">
      <!--ro, opt, bool, 启用抓拍补光使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </captureWithSupplimentLightEnabled>
  </SupplementLight>
  <Deicing>
    <!--ro, opt, object, 除冰-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
  </Deicing>
  <ManualDeicing>
    <!--ro, opt, object, 手动除冰-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
  </ManualDeicing>
  <mutexAbility opt="laserLight,deicing">
    <!--ro, opt, string, 互斥能力, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:激光补光灯以及除冰（即包括手动、自动除冰）进行互斥-->test
  </mutexAbility>
  <HighTemperatureProtection>
    <!--ro, opt, object, 高温保护配置-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <temperatureType opt="90,100,110" def="90">
      <!--ro, opt, enum, 温度值, subType:int, [90#90,100#100,110#110], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:单位：℃-->90
    </temperatureType>
  </HighTemperatureProtection>
  <isSupportPTDeicing>
    <!--ro, opt, bool, 是否支持云台除冰-->true
  </isSupportPTDeicing>
  <isSupportWaterCatcher>
    <!--ro, opt, bool, 是否支持集水器控制-->true
  </isSupportWaterCatcher>
</HardwareService>

2. 获取红外灯参数配置

2.1 命令

GET /ISAPI/System/Hardware/irLightSwitch

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLightSwitch xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 红外灯切换, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 模式, subType:string, [open#开启,close#关闭]-->open
  </mode>
  <irLightList>
    <!--ro, opt, array, 红外灯列表, subType:object, range:[,]-->
    <irLight>
      <!--ro, opt, object, 红外灯-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <mode>
        <!--ro, req, enum, 模式, subType:string, [open#开启,close#关闭]-->open
      </mode>
    </irLight>
  </irLightList>
</IrLightSwitch>

3. 配置红外灯参数配置

3.1 命令

PUT /ISAPI/System/Hardware/irLightSwitch

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLightSwitch xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 红外灯切换, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--req, enum, 模式, subType:string, [open#开启,close#关闭]-->open
  </mode>
  <irLightList>
    <!--opt, array, 红外灯列表, subType:object, range:[,]-->
    <irLight>
      <!--opt, object, 红外灯-->
      <id>
        <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <mode>
        <!--req, enum, 模式, subType:string, [open#开启,close#关闭]-->open
      </mode>
    </irLight>
  </irLightList>
</IrLightSwitch>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取红外灯高级参数能力集

4.1 命令

GET /ISAPI/System/Hardware/irLightSwitch/advanced/capabilities

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLightRelationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 红外灯高级参数能力, attr:version{req, string, 协议版本, range:[,]}-->
  <mode opt="open,close">
    <!--ro, req, enum, 模式, subType:string, [open#开启,close#关闭], attr:opt{req, string, 取值范围, range:[,]}, desc:默认为close-->close
  </mode>
  <relationList size="4">
    <!--ro, opt, array, 关联信息列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:仅当mode为open时有效-->
    <relation>
      <!--ro, req, int, 关联信息, range:[,], step:, unit:, unitType:-->0
      <irLightId min="1" max="4">
        <!--ro, opt, int, 红外灯索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </irLightId>
      <channelID min="1" max="4">
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </channelID>
    </relation>
  </relationList>
</IrLightRelationCap>

5. 获取红外灯高级参数配置

5.1 命令

GET /ISAPI/System/Hardware/irLightSwitch/advanced

5.2 输入参数

无

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLightRelation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 红外灯高级参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 模式, subType:string, [open#开启,close#关闭], desc:默认为close-->close
  </mode>
  <relationList>
    <!--ro, opt, array, 关联信息列表, subType:object, range:[,], desc:仅当mode为open时有效-->
    <relation>
      <!--ro, req, int, 关联信息, range:[,], step:, unit:, unitType:-->0
      <irLightId>
        <!--ro, opt, int, 红外灯索引, range:[,], step:, unit:, unitType:-->1
      </irLightId>
      <channelID>
        <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:-->1
      </channelID>
    </relation>
  </relationList>
</IrLightRelation>

6. 配置红外灯高级参数配置

6.1 命令

PUT /ISAPI/System/Hardware/irLightSwitch/advanced

6.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<IrLightRelation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--opt, object, 红外灯高级参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--req, enum, 模式, subType:string, [open#开启,close#关闭], desc:默认为close-->close
  </mode>
  <relationList>
    <!--opt, array, 关联信息列表, subType:object, range:[,], desc:仅当mode为open时有效-->
    <relation>
      <!--req, int, 关联信息, range:[,], step:, unit:, unitType:-->0
      <irLightId>
        <!--opt, int, 红外灯索引, range:[,], step:, unit:, unitType:-->1
      </irLightId>
      <channelID>
        <!--opt, int, 通道号, range:[,], step:, unit:, unitType:-->1
      </channelID>
    </relation>
  </relationList>
</IrLightRelation>

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

7. 获取温湿度屏能力

7.1 命令

GET /ISAPI/System/externalDevice/THScreen/capabilities

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<THScreen xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温湿度屏, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <THOSDDisplay>
    <!--ro, opt, object, OSD显示信息-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <CalibratingCoordinates>
      <!--ro, opt, object, 标定坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,704], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,576], step:, unit:, unitType:-->1
      </positionY>
    </CalibratingCoordinates>
  </THOSDDisplay>
  <Timing>
    <!--ro, opt, object, 校时-->
    <timing opt="manual,auto">
      <!--ro, opt, enum, 校时方式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:仅当enabled为true时有效-->manual
    </timing>
    <interval min="1" max="10080">
      <!--ro, opt, int, 校时间隔, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:仅当timing为auto时有效-->1
    </interval>
  </Timing>
</THScreen>

8. 获取温湿度屏参数

8.1 命令

GET /ISAPI/System/externalDevice/THScreen

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<THScreen xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 温湿度屏, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <THOSDDisplay>
    <!--ro, opt, object, OSD显示信息-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <CalibratingCoordinates>
      <!--ro, opt, object, 标定坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, x坐标, range:[0,704], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, y坐标, range:[0,576], step:, unit:, unitType:-->1
      </positionY>
    </CalibratingCoordinates>
  </THOSDDisplay>
  <Timing>
    <!--ro, opt, object, 校时-->
    <timing opt="manual,auto">
      <!--ro, opt, enum, 校时方式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:仅当enabled为true时有效-->manual
    </timing>
    <interval min="1" max="10080">
      <!--ro, opt, int, 校时间隔, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:仅当timing为auto时有效-->1
    </interval>
  </Timing>
</THScreen>

9. 配置温湿度屏参数

9.1 命令

PUT /ISAPI/System/externalDevice/THScreen

9.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<THScreen xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 温湿度屏, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <normalizedScreenSize>
    <!--opt, object, 归一化坐标-->
    <normalizedScreenWidth>
      <!--req, int, 归一化坐标宽, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化坐标高, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <THOSDDisplay>
    <!--opt, object, OSD显示信息-->
    <enabled>
      <!--req, bool, 使能-->true
    </enabled>
    <CalibratingCoordinates>
      <!--opt, object, 标定坐标, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, x坐标, range:[0,704], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, y坐标, range:[0,576], step:, unit:, unitType:-->1
      </positionY>
    </CalibratingCoordinates>
  </THOSDDisplay>
  <Timing>
    <!--opt, object, 校时-->
    <timing opt="manual,auto">
      <!--opt, enum, 校时方式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:仅当enabled为true时有效-->manual
    </timing>
    <interval min="1" max="10080">
      <!--opt, int, 校时间隔, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:仅当timing为auto时有效-->1
    </interval>
  </Timing>
</THScreen>

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 配置温湿度屏校时

10.1 命令

PUT /ISAPI/System/externalDevice/THScreen/timing

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

11. 获取外接设备补光灯配置能力

11.1 命令

GET /ISAPI/System/externalDevice/supplementLight/capabilities

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 补光灯, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <brightnessRegulateMode>
    <!--ro, opt, enum, 亮度调节模式, subType:string, [manual#手动,auto#自动]-->manual
  </brightnessRegulateMode>
  <mode opt="schedule,auto">
    <!--ro, opt, enum, 模式, subType:string, [schedule#计划,auto#自动], attr:opt{req, string, 取值范围, range:[,]}-->schedule
  </mode>
  <Schedule>
    <!--ro, opt, object, 计划-->
    <TimeRange>
      <!--ro, req, object, 时间段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <lowBeamBrightness min="1" max="10">
    <!--ro, opt, int, 低光束亮度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </lowBeamBrightness>
  <highBeamBrightness min="1" max="10">
    <!--ro, opt, int, 高光束亮度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </highBeamBrightness>
  <filteringTime>
    <!--ro, opt, int, 过滤时间, range:[0,120], step:, unit:s, unitType:-->1
  </filteringTime>
  <brightness min="1" max="10">
    <!--ro, opt, int, 亮度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </brightness>
  <sensitivity min="0" max="7" def="4">
    <!--ro, opt, int, 灵敏度, range:[0,7], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </sensitivity>
  <maxBrightness min="0" max="100" def="50">
    <!--ro, opt, int, 补光灯最大亮度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </maxBrightness>
</SupplementLight>

12. 获取外接补光灯配置

12.1 命令

GET /ISAPI/System/externalDevice/supplementLight

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 补光灯, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <brightnessRegulateMode>
    <!--ro, opt, enum, 亮度调节模式, subType:string, [manual#手动,auto#自动]-->manual
  </brightnessRegulateMode>
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [schedule#计划,auto#自动]-->schedule
  </mode>
  <Schedule>
    <!--ro, opt, object, 计划-->
    <TimeRange>
      <!--ro, req, object, 时间段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <lowBeamBrightness>
    <!--ro, opt, int, 低光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </lowBeamBrightness>
  <highBeamBrightness>
    <!--ro, opt, int, 高光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </highBeamBrightness>
  <filteringTime>
    <!--ro, opt, int, 过滤时间, range:[0,120], step:, unit:s, unitType:-->1
  </filteringTime>
  <brightness>
    <!--ro, opt, int, 亮度, range:[0,10], step:, unit:, unitType:-->1
  </brightness>
  <sensitivity>
    <!--ro, opt, int, 灵敏度, range:[0,7], step:, unit:, unitType:-->1
  </sensitivity>
  <maxBrightness>
    <!--ro, opt, int, 补光灯最大亮度, range:[0,100], step:, unit:, unitType:-->1
  </maxBrightness>
</SupplementLight>

13. 配置外接补光灯配置

13.1 命令

PUT /ISAPI/System/externalDevice/supplementLight

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 补光灯, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <brightnessRegulateMode>
    <!--opt, enum, 亮度调节模式, subType:string, [manual#手动,auto#自动]-->manual
  </brightnessRegulateMode>
  <mode>
    <!--opt, enum, 模式, subType:string, [schedule#计划,auto#自动]-->schedule
  </mode>
  <Schedule>
    <!--opt, object, 计划-->
    <TimeRange>
      <!--req, object, 时间段-->
      <beginTime>
        <!--req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <lowBeamBrightness>
    <!--opt, int, 低光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </lowBeamBrightness>
  <highBeamBrightness>
    <!--opt, int, 高光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </highBeamBrightness>
  <filteringTime>
    <!--opt, int, 过滤时间, range:[0,120], step:, unit:s, unitType:-->1
  </filteringTime>
  <brightness>
    <!--opt, int, 亮度, range:[0,10], step:, unit:, unitType:-->1
  </brightness>
  <sensitivity>
    <!--opt, int, 灵敏度, range:[0,7], step:, unit:, unitType:-->1
  </sensitivity>
  <maxBrightness>
    <!--opt, int, 补光灯最大亮度, range:[0,100], step:, unit:, unitType:-->1
  </maxBrightness>
</SupplementLight>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取外接补光灯通道级配置能力

14.1 命令

GET /ISAPI/System/channel/<channelID>/externalDevice/supplementLight/capabilities

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 补光灯, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <brightnessRegulateMode>
    <!--ro, opt, enum, 亮度调节模式, subType:string, [manual#手动,auto#自动]-->manual
  </brightnessRegulateMode>
  <mode opt="schedule,auto">
    <!--ro, opt, enum, 模式, subType:string, [schedule#计划,auto#自动], attr:opt{req, string, 取值范围, range:[,]}-->schedule
  </mode>
  <Schedule>
    <!--ro, opt, object, 计划-->
    <TimeRange>
      <!--ro, req, object, 时间段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <lowBeamBrightness min="1" max="10">
    <!--ro, opt, int, 低光束亮度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </lowBeamBrightness>
  <highBeamBrightness min="1" max="10">
    <!--ro, opt, int, 高光束亮度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </highBeamBrightness>
  <filteringTime>
    <!--ro, opt, int, 过滤时间, range:[0,120], step:, unit:s, unitType:-->1
  </filteringTime>
  <brightness min="1" max="10">
    <!--ro, opt, int, 亮度, range:[0,10], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </brightness>
  <sensitivity min="0" max="7" def="4">
    <!--ro, opt, int, 灵敏度, range:[0,7], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
  </sensitivity>
</SupplementLight>

15. 获取外接补光灯通道级配置

15.1 命令

GET /ISAPI/System/channel/<channelID>/externalDevice/supplementLight

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 补光灯, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <brightnessRegulateMode>
    <!--ro, opt, enum, 亮度调节模式, subType:string, [manual#手动,auto#自动]-->manual
  </brightnessRegulateMode>
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [schedule#计划,auto#自动]-->schedule
  </mode>
  <Schedule>
    <!--ro, opt, object, 计划-->
    <TimeRange>
      <!--ro, req, object, 时间段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <lowBeamBrightness>
    <!--ro, opt, int, 低光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </lowBeamBrightness>
  <highBeamBrightness>
    <!--ro, opt, int, 高光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </highBeamBrightness>
  <filteringTime>
    <!--ro, opt, int, 过滤时间, range:[0,120], step:, unit:s, unitType:-->1
  </filteringTime>
  <brightness>
    <!--ro, opt, int, 亮度, range:[0,10], step:, unit:, unitType:-->1
  </brightness>
  <sensitivity>
    <!--ro, opt, int, 灵敏度, range:[0,7], step:, unit:, unitType:-->1
  </sensitivity>
</SupplementLight>

16. 配置外接补光灯通道级配置

16.1 命令

PUT /ISAPI/System/channel/<channelID>/externalDevice/supplementLight

16.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 补光灯, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <brightnessRegulateMode>
    <!--opt, enum, 亮度调节模式, subType:string, [manual#手动,auto#自动]-->manual
  </brightnessRegulateMode>
  <mode>
    <!--opt, enum, 模式, subType:string, [schedule#计划,auto#自动]-->schedule
  </mode>
  <Schedule>
    <!--opt, object, 计划-->
    <TimeRange>
      <!--req, object, 时间段-->
      <beginTime>
        <!--req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <lowBeamBrightness>
    <!--opt, int, 低光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </lowBeamBrightness>
  <highBeamBrightness>
    <!--opt, int, 高光束亮度, range:[0,10], step:, unit:, unitType:-->1
  </highBeamBrightness>
  <filteringTime>
    <!--opt, int, 过滤时间, range:[0,120], step:, unit:s, unitType:-->1
  </filteringTime>
  <brightness>
    <!--opt, int, 亮度, range:[0,10], step:, unit:, unitType:-->1
  </brightness>
  <sensitivity>
    <!--opt, int, 灵敏度, range:[0,7], step:, unit:, unitType:-->1
  </sensitivity>
</SupplementLight>

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

17. 获取图像补光控制能力

17.1 命令

GET /ISAPI/Image/channels/<channelID>/supplementLight/capabilities

17.2 输入参数

无

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 内置补光灯管理参数, attr:version{req, string, 协议版本, range:[,]}-->
  <mode opt="schedule,off,on,auto,manual">
    <!--ro, opt, enum, 补光灯调节模式, subType:string, [schedule#白光定时,off#白光关闭,on#白光开启,auto#自动,manual#手动], attr:opt{req, string, 取值范围, range:[,]}, desc:与supplementLightMode互斥-->auto
  </mode>
  <Schedule>
    <!--ro, opt, object, 白光灯定时生效时间配置;当<Mode>= schedule时生效;所配置时间为白天的时间-->
    <TimeRange>
      <!--ro, req, object, 白天时段;当天剩余时段为夜晚时段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:08:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:18:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <brightnessLimit min="0" max="100">
    <!--ro, opt, int, 白光补光灯亮度限制, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<Mode>= on时;可以调节该限制;为白光补光灯亮度最大值;实际补光灯亮度为自动调节（注：mode里面的自动为补光灯开光自动;自动调节模式需查看mixedLightBrightnessRegulatMode节点）-->80
  </brightnessLimit>
  <supplementLightMode opt="mixed,whiteLight,colorVuWhiteLight,irLight,dualLight,close,eventIntelligence,multiAzimuthMixed,multiAzimuthWhiteLight,multiAzimuthIrLight,panoramicWhiteLight,panoramicIrLight">
    <!--ro, opt, enum, 补光灯模式, subType:string, [mixed#混合模式,whiteLight#白光模式,close#关闭,colorVuWhiteLight#全彩白光,irLight#红外模式,dualLight#双补光,eventIntelligence#事件智能补光,multiAzimuthMixed#多方位混合补光,multiAzimuthWhiteLight#多方位白光模式,multiAzimuthIrLight#多方位红外模式,panoramicWhiteLight#全景白光,panoramicIrLight#全景红外], attr:opt{req, string, 取值范围, range:[,]},
desc:eventIntelligence为事件智能补光;解释如下:1.在满足补光灯功能生效条件下;当没有产生报警;设备仅红外灯开启;2.产生报警后自动关闭红外灯；开启白光灯持续1min；在持续时间内如继续收到报警;这一状态保持至最后一个报警发生后1min结束。multiAzimuthMixed多方位混合模式可以通过左右边各一组补光灯（一组补光灯包含远中近白光红外补光灯）对目标进行多方位角度的补光;不同于之前mixed混合补光模式仅支持一组补光灯单方位进行补光。multiAzimuthWhiteLight多方位白光模式、multiAzimuthIrLight多方位红外模式与多方位混光情况相同.
panoramicWhiteLight、panoramicIrLight全景白光、红外模式当前仅四目全景相机支持，当前下相机无方位的概念,由四个补光灯围绕相机部署。-->mixed
  </supplementLightMode>
  <irLightBrightness min="0" max="100">
    <!--ro, opt, int, 红外补光灯亮度, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<supplementLightMode>= mixed;且<mixedLightBrightnessRegulatMode>= manual时生效-->80
  </irLightBrightness>
  <mixedLightBrightnessRegulatMode opt="manual,auto">
    <!--ro, opt, enum, 混合补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:该字段仅在<supplementLightMode>= mixed时生效；手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<brightnessLimit>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
  </mixedLightBrightnessRegulatMode>
  <mixedModeSupportType opt="irLight,whiteLight">
    <!--ro, opt, enum, 混合模式下所支持的补光灯类型, subType:string, [irLight#红外灯,whiteLight#白光灯], attr:opt{req, string, 取值范围, range:[,]}, desc:当<supplementLightMode>支持mixed时需返回。-->irLight
  </mixedModeSupportType>
  <highIrLightBrightness min="0" max="100">
    <!--ro, opt, int, 远光红外光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </highIrLightBrightness>
  <highWhiteLightBrightness min="0" max="100">
    <!--ro, opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </highWhiteLightBrightness>
  <lowIrLightBrightness min="0" max="100">
    <!--ro, opt, int, 近光红外光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </lowIrLightBrightness>
  <lowWhiteLightBrightness min="0" max="100">
    <!--ro, opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </lowWhiteLightBrightness>
  <whiteLightBrightness min="0" max="100">
    <!--ro, opt, int, 光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式、mode=auto公用-->80
  </whiteLightBrightness>
  <WhiteLightModeCfg>
    <!--ro, opt, object, 白光模式参数配置, desc:当supplementLightMode == whiteLight生效-->
    <highWhiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
    </highWhiteLightBrightness>
    <lowWhiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
    </lowWhiteLightBrightness>
    <whiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
    </whiteLightBrightness>
  </WhiteLightModeCfg>
  <isAutoModeBrightnessCfg>
    <!--ro, opt, bool, 是否支持自动模式下亮度调节;支持时亮度节点下发为自动调节的亮度最大值-->true
  </isAutoModeBrightnessCfg>
  <irLightbrightnessLimit min="0" max="100">
    <!--ro, opt, int, 红外灯亮度限制, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
  </irLightbrightnessLimit>
  <whiteLightbrightnessLimit min="0" max="100">
    <!--ro, opt, int, 白光灯亮度限制, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
  </whiteLightbrightnessLimit>
  <isNotSupportMixedWhiteLight>
    <!--ro, opt, bool, 该节点返回true表示不支持混光模式下白光灯配置;支持配置则不返回该节点-->true
  </isNotSupportMixedWhiteLight>
  <EventIntelligenceModeCfg>
    <!--ro, opt, object, 事件智能补光模式参数配置, desc:当supplementLightMode == eventIntelligence生效-->
    <brightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<whiteLightBrightness>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <whiteLightBrightness min="0" max="100">
      <!--ro, opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
    </whiteLightBrightness>
    <irLightBrightness min="0" max="100">
      <!--ro, opt, int, 红外亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
    </irLightBrightness>
  </EventIntelligenceModeCfg>
  <MultiAzimuthMixedModeCfg>
    <!--ro, opt, object, 多方位混合模式参数配置, desc:当supplementLightMode == multiAzimuthMixed生效-->
    <brightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList size="12">
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <azimuthType opt="left,right">
          <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯], attr:opt{req, string, 取值范围, range:[,]}-->left
        </azimuthType>
        <lightType opt="highWhite,midWhite,lowWhite,highIrLight,midIrLight,lowIrLight">
          <!--ro, opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯], attr:opt{req, string, 取值范围, range:[,]}-->highWhite
        </lightType>
        <brightness min="0" max="100">
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
    <regulatSensitivityType opt="fast,medium,slow">
      <!--ro, opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthMixedModeCfg.brightnessRegulatMode,eq,auto}, attr:opt{req, string, 取值范围, range:[,]}-->fast
    </regulatSensitivityType>
  </MultiAzimuthMixedModeCfg>
  <MultiAzimuthWhiteLightCfg>
    <!--ro, opt, object, 多方位白光模式参数配置, desc:当supplementLightMode == multiAzimuthWhiteLight生效-->
    <brightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList size="6">
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <azimuthType opt="left,right">
          <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯], attr:opt{req, string, 取值范围, range:[,]}-->left
        </azimuthType>
        <lightType opt="highWhite,midWhite,lowWhite,white">
          <!--ro, opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通白光补光(不区分远中近光)], attr:opt{req, string, 取值范围, range:[,]}-->highWhite
        </lightType>
        <brightness min="0" max="100">
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
    <regulatSensitivityType opt="fast,medium,slow">
      <!--ro, opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthWhiteLightCfg.brightnessRegulatMode,eq,auto}, attr:opt{req, string, 取值范围, range:[,]}-->fast
    </regulatSensitivityType>
  </MultiAzimuthWhiteLightCfg>
  <MultiAzimuthIrLightCfg>
    <!--ro, opt, object, 多方位红外模式参数配置, desc:当supplementLightMode == multiAzimuthIrLight生效-->
    <brightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList size="6">
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <azimuthType opt="left,right">
          <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯], attr:opt{req, string, 取值范围, range:[,]}-->left
        </azimuthType>
        <lightType opt="highIrLight,midIrLight,lowIrLight,irLight">
          <!--ro, opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光)], attr:opt{req, string, 取值范围, range:[,]}-->highIrLight
        </lightType>
        <brightness min="0" max="100">
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </MultiAzimuthIrLightCfg>
  <PanoramicWhiteLightCfg>
    <!--ro, opt, object, 全景白光模式参数配置, desc:当supplementLightMode == panoramicWhiteLight生效-->
    <brightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList size="4">
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <lightID min="1" max="4">
          <!--ro, opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </lightID>
        <brightness min="0" max="100">
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </PanoramicWhiteLightCfg>
  <PanoramicIrLightCfg>
    <!--ro, opt, object, 全景红外模式参数配置, desc:当supplementLightMode == panoramicIrLightCfg生效-->
    <brightnessRegulatMode opt="manual,auto">
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], attr:opt{req, string, 取值范围, range:[,]}, desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList size="4">
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <lightID min="1" max="4">
          <!--ro, opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </lightID>
        <brightness min="0" max="100">
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </PanoramicIrLightCfg>
  <whiteLightEnhanceEnabled opt="true,false" def="false">
    <!--ro, opt, bool, 白光灯亮度增强使能(不分远近光灯时控制), attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:开启增强使能后，白光灯会进入强电流模式，亮度会增强十倍，同时也可通过$.SupplementLight.whiteLightBrightness参数去控制强电流模式下的灯光亮度。该参数不区分补光灯模式及白光灯类型。-->true
  </whiteLightEnhanceEnabled>
  <LightManualCtrlList size="12">
    <!--ro, opt, array, 补光灯组手动控制参数, subType:object, range:[,], dep:and,{$.SupplementLight.mode,eq,manual}, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}, desc:与supplementLightMode无关-->
    <LightCtrl>
      <!--ro, opt, object, 单个补光灯控制参数-->
      <lightType opt="highIrLight,midIrLight,lowIrLight,irLight,highWhite,midWhite,lowWhite,white">
        <!--ro, opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光),highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通红外补光灯(不区分远中近光)], attr:opt{req, string, 取值范围, range:[,]}-->highWhite
      </lightType>
      <brightness min="0" max="100">
        <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->80
      </brightness>
    </LightCtrl>
  </LightManualCtrlList>
</SupplementLight>

18. 获取图像补光控制参数

18.1 命令

GET /ISAPI/Image/channels/<channelID>/supplementLight

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 内置补光灯管理参数, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, opt, enum, 补光灯调节模式, subType:string, [schedule#白光定时,off#白光关闭,on#白光开启,auto#自动,manual#手动]-->auto
  </mode>
  <Schedule>
    <!--ro, opt, object, 白光灯定时生效时间配置;当<Mode>= schedule时生效;所配置时间为白天的时间-->
    <TimeRange>
      <!--ro, req, object, 白天时段;当天剩余时段为夜晚时段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:08:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:18:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <brightnessLimit>
    <!--ro, opt, int, 白光补光灯亮度限制, range:[,], step:, unit:, unitType:, desc:当<Mode>= on时;可以调节该限制;为白光补光灯亮度最大值;实际补光灯亮度为自动调节（注：mode里面的自动为补光灯开光自动;自动调节模式需查看mixedLightBrightnessRegulatMode节点）-->80
  </brightnessLimit>
  <supplementLightMode>
    <!--ro, opt, enum, 补光灯模式, subType:string, [mixed#混合模式,whiteLight#白光模式,close#关闭,colorVuWhiteLight#全彩白光,irLight#红外模式,dualLight#双补光,eventIntelligence#事件智能补光,multiAzimuthMixed#多方位混合补光,multiAzimuthWhiteLight#多方位白光模式,multiAzimuthIrLight#多方位红外模式,panoramicWhiteLight#全景白光模式,panoramicIrLight#全景红外模式],
desc:eventIntelligence为事件智能补光;解释如下:1.在满足补光灯功能生效条件下;当没有产生报警;设备仅红外灯开启;2.产生报警后自动关闭红外灯；开启白光灯持续1min；在持续时间内如继续收到报警;这一状态保持至最后一个报警发生后1min结束。multiAzimuthMixed多方位混合模式可以通过左右边各一组补光灯（一组补光灯包含远中近白光红外补光灯）对目标进行多方位角度的补光;不同于之前mixed混合补光模式仅支持一组补光灯单方位进行补光。multiAzimuthWhiteLight多方位白光模式、multiAzimuthIrLight多方位红外模式与多方位混光情况相同。
panoramicWhiteLight、panoramicIrLight全景白光、红外模式当前仅四目全景相机支持，当前下相机无方位的概念,由四个补光灯围绕相机部署。-->mixed
  </supplementLightMode>
  <irLightBrightness>
    <!--ro, opt, int, 红外补光灯亮度, range:[0,100], step:, unit:, unitType:, desc:当<supplementLightMode>= mixed;且<mixedLightBrightnessRegulatMode>= manual时生效-->80
  </irLightBrightness>
  <mixedLightBrightnessRegulatMode>
    <!--ro, opt, enum, 混合补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:该字段仅在<supplementLightMode>= mixed时生效；手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<brightnessLimit>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
  </mixedLightBrightnessRegulatMode>
  <highIrLightBrightness>
    <!--ro, opt, int, 远光红外光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </highIrLightBrightness>
  <highWhiteLightBrightness>
    <!--ro, opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </highWhiteLightBrightness>
  <lowIrLightBrightness>
    <!--ro, opt, int, 近光红外光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </lowIrLightBrightness>
  <lowWhiteLightBrightness>
    <!--ro, opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </lowWhiteLightBrightness>
  <whiteLightBrightness>
    <!--ro, opt, int, 光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式、mode=auto 公用-->80
  </whiteLightBrightness>
  <WhiteLightModeCfg>
    <!--ro, opt, object, 白光模式参数配置, desc:当supplementLightMode == whiteLight生效-->
    <highWhiteLightBrightness>
      <!--ro, opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:-->80
    </highWhiteLightBrightness>
    <lowWhiteLightBrightness>
      <!--ro, opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:-->80
    </lowWhiteLightBrightness>
    <whiteLightBrightness>
      <!--ro, opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:-->80
    </whiteLightBrightness>
  </WhiteLightModeCfg>
  <irLightbrightnessLimit>
    <!--ro, opt, int, 红外灯亮度限制, range:[0,100], step:, unit:, unitType:, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
  </irLightbrightnessLimit>
  <whiteLightbrightnessLimit>
    <!--ro, opt, int, 白光灯亮度限制, range:[0,100], step:, unit:, unitType:, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
  </whiteLightbrightnessLimit>
  <EventIntelligenceModeCfg>
    <!--ro, opt, object, 事件智能补光模式参数配置, desc:当supplementLightMode == eventIntelligence生效-->
    <brightnessRegulatMode>
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<whiteLightBrightness>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <whiteLightBrightness>
      <!--ro, opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:-->80
    </whiteLightBrightness>
    <irLightBrightness>
      <!--ro, opt, int, 红外亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:-->80
    </irLightBrightness>
  </EventIntelligenceModeCfg>
  <MultiAzimuthMixedModeCfg>
    <!--ro, opt, object, 多方位混合模式参数配置, desc:当supplementLightMode == multiAzimuthMixed生效-->
    <brightnessRegulatMode>
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <azimuthType>
          <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯]-->left
        </azimuthType>
        <lightType>
          <!--ro, opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯]-->highWhite
        </lightType>
        <brightness>
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
    <regulatSensitivityType>
      <!--ro, opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthMixedModeCfg.brightnessRegulatMode,eq,auto}-->fast
    </regulatSensitivityType>
  </MultiAzimuthMixedModeCfg>
  <MultiAzimuthWhiteLightCfg>
    <!--ro, opt, object, 多方位白光模式参数配置, desc:当supplementLightMode == multiAzimuthWhiteLight生效-->
    <brightnessRegulatMode>
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <azimuthType>
          <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯]-->left
        </azimuthType>
        <lightType>
          <!--ro, opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通白光补光(不区分远中近光)]-->highWhite
        </lightType>
        <brightness>
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
    <regulatSensitivityType>
      <!--ro, opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthWhiteLightCfg.brightnessRegulatMode,eq,auto}-->fast
    </regulatSensitivityType>
  </MultiAzimuthWhiteLightCfg>
  <MultiAzimuthIrLightCfg>
    <!--ro, opt, object, 多方位红外模式参数配置, desc:当supplementLightMode == multiAzimuthIrLight生效-->
    <brightnessRegulatMode>
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <azimuthType>
          <!--ro, opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯]-->left
        </azimuthType>
        <lightType>
          <!--ro, opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光)]-->highIrLight
        </lightType>
        <brightness>
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </MultiAzimuthIrLightCfg>
  <PanoramicWhiteLightCfg>
    <!--ro, opt, object, 全景白光模式参数配置, desc:当supplementLightMode == panoramicWhiteLight生效-->
    <brightnessRegulatMode>
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <lightID>
          <!--ro, opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:-->1
        </lightID>
        <brightness>
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </PanoramicWhiteLightCfg>
  <PanoramicIrLightCfg>
    <!--ro, opt, object, 全景红外模式参数配置, desc:当supplementLightMode == PanoramicIrLightCfg生效-->
    <brightnessRegulatMode>
      <!--ro, opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--ro, opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--ro, opt, object, 单个补光灯控制参数-->
        <lightID>
          <!--ro, opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:-->1
        </lightID>
        <brightness>
          <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </PanoramicIrLightCfg>
  <whiteLightEnhanceEnabled>
    <!--ro, opt, bool, 白光灯亮度增强使能(不分远近光灯时控制), desc:开启增强使能后，白光灯会进入强电流模式，亮度会增强十倍，同时也可通过$.SupplementLight.whiteLightBrightness参数去控制强电流模式下的灯光亮度。该参数不区分补光灯模式及白光灯类型。-->true
  </whiteLightEnhanceEnabled>
  <LightManualCtrlList>
    <!--ro, opt, array, 补光灯组手动控制参数, subType:object, range:[,], dep:and,{$.SupplementLight.mode,eq,manual}, desc:与supplementLightMode无关-->
    <LightCtrl>
      <!--ro, opt, object, 单个补光灯控制参数-->
      <lightType>
        <!--ro, opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光),highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通红外补光灯(不区分远中近光)]-->highIrLight
      </lightType>
      <brightness>
        <!--ro, opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
      </brightness>
    </LightCtrl>
  </LightManualCtrlList>
</SupplementLight>

19. 设置图像补光控制参数

19.1 命令

PUT /ISAPI/Image/channels/<channelID>/supplementLight

19.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SupplementLight xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 内置补光灯管理参数, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--opt, enum, 补光灯调节模式, subType:string, [schedule#白光定时,off#白光关闭,on#白光开启,auto#自动,manual#手动]-->auto
  </mode>
  <Schedule>
    <!--opt, object, 白光灯定时生效时间配置;当<Mode>= schedule时生效;所配置时间为白天的时间-->
    <TimeRange>
      <!--req, object, 白天时段;当天剩余时段为夜晚时段-->
      <beginTime>
        <!--req, time, 开始时间-->00:08:00+08:00
      </beginTime>
      <endTime>
        <!--req, time, 结束时间-->00:18:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
  <brightnessLimit>
    <!--opt, int, 白光补光灯亮度限制, range:[,], step:, unit:, unitType:, desc:当<Mode>= on时;可以调节该限制;为白光补光灯亮度最大值;实际补光灯亮度为自动调节（注：mode里面的自动为补光灯开光自动;自动调节模式需查看mixedLightBrightnessRegulatMode节点）-->80
  </brightnessLimit>
  <supplementLightMode>
    <!--opt, enum, 补光灯模式, subType:string, [mixed#混合模式,whiteLight#白光模式,close#关闭,colorVuWhiteLight#全彩白光,irLight#红外模式,dualLight#双补光,eventIntelligence#事件智能补光,multiAzimuthMixed#多方位混合补光,multiAzimuthWhiteLight#多方位白光模式,multiAzimuthIrLight#多方位红外模式,panoramicWhiteLight#全景白光模式,panoramicIrLight#全景红外模式],
desc:eventIntelligence为事件智能补光;解释如下:1.在满足补光灯功能生效条件下;当没有产生报警;设备仅红外灯开启;2.产生报警后自动关闭红外灯；开启白光灯持续1min；在持续时间内如继续收到报警;这一状态保持至最后一个报警发生后1min结束。multiAzimuthMixed多方位混合模式可以通过左右边各一组补光灯（一组补光灯包含远中近白光红外补光灯）对目标进行多方位角度的补光;不同于之前mixed混合补光模式仅支持一组补光灯单方位进行补光。multiAzimuthWhiteLight多方位白光模式、multiAzimuthIrLight多方位红外模式与多方位混光情况相同。
panoramicWhiteLight、panoramicIrLight全景白光、红外模式当前仅四目全景相机支持，当前下相机无方位的概念,由四个补光灯围绕相机部署。-->mixed
  </supplementLightMode>
  <irLightBrightness>
    <!--opt, int, 红外补光灯亮度, range:[0,100], step:, unit:, unitType:, desc:当<supplementLightMode>= mixed;且<mixedLightBrightnessRegulatMode>= manual时生效-->80
  </irLightBrightness>
  <mixedLightBrightnessRegulatMode>
    <!--opt, enum, 混合补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:该字段仅在<supplementLightMode>= mixed时生效；手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<brightnessLimit>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
  </mixedLightBrightnessRegulatMode>
  <highIrLightBrightness>
    <!--opt, int, 远光红外光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </highIrLightBrightness>
  <highWhiteLightBrightness>
    <!--opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </highWhiteLightBrightness>
  <lowIrLightBrightness>
    <!--opt, int, 近光红外光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </lowIrLightBrightness>
  <lowWhiteLightBrightness>
    <!--opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式公用-->80
  </lowWhiteLightBrightness>
  <whiteLightBrightness>
    <!--opt, int, 光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:, desc:参数由mixed#混合模式、whiteLight#白光模式、colorVuWhiteLight#全彩白光,irLight#红外模式、dualLight#双补光模式、mode=auto 公用-->80
  </whiteLightBrightness>
  <WhiteLightModeCfg>
    <!--opt, object, 白光模式参数配置, desc:当supplementLightMode == whiteLight生效-->
    <highWhiteLightBrightness>
      <!--opt, int, 远光白光亮度配置, range:[0,100], step:, unit:, unitType:-->80
    </highWhiteLightBrightness>
    <lowWhiteLightBrightness>
      <!--opt, int, 近光白光亮度配置, range:[0,100], step:, unit:, unitType:-->80
    </lowWhiteLightBrightness>
    <whiteLightBrightness>
      <!--opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:-->80
    </whiteLightBrightness>
  </WhiteLightModeCfg>
  <irLightbrightnessLimit>
    <!--opt, int, 红外灯亮度限制, range:[0,100], step:, unit:, unitType:, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
  </irLightbrightnessLimit>
  <whiteLightbrightnessLimit>
    <!--opt, int, 白光灯亮度限制, range:[0,100], step:, unit:, unitType:, desc:当<Mode>== auto时且supplementLightMode==mixed模式下生效.-->80
  </whiteLightbrightnessLimit>
  <EventIntelligenceModeCfg>
    <!--opt, object, 事件智能补光模式参数配置, desc:当supplementLightMode == eventIntelligence生效-->
    <brightnessRegulatMode>
      <!--opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动<irLightBrightness>红外补光灯亮度参数以及<whiteLightBrightness>白光补光灯亮度；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <whiteLightBrightness>
      <!--opt, int, 白光亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:-->80
    </whiteLightBrightness>
    <irLightBrightness>
      <!--opt, int, 红外亮度配置(不分远近光灯时控制), range:[0,100], step:, unit:, unitType:-->80
    </irLightBrightness>
  </EventIntelligenceModeCfg>
  <MultiAzimuthMixedModeCfg>
    <!--opt, object, 多方位混合模式参数配置, desc:当supplementLightMode == multiAzimuthMixed生效-->
    <brightnessRegulatMode>
      <!--opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--opt, object, 单个补光灯控制参数-->
        <azimuthType>
          <!--opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯]-->left
        </azimuthType>
        <lightType>
          <!--opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯]-->highWhite
        </lightType>
        <brightness>
          <!--opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
    <regulatSensitivityType>
      <!--opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthMixedModeCfg.brightnessRegulatMode,eq,auto}-->fast
    </regulatSensitivityType>
  </MultiAzimuthMixedModeCfg>
  <MultiAzimuthWhiteLightCfg>
    <!--opt, object, 多方位白光模式参数配置, desc:当supplementLightMode == multiAzimuthWhiteLight生效-->
    <brightnessRegulatMode>
      <!--opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--opt, object, 单个补光灯控制参数-->
        <azimuthType>
          <!--opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯]-->left
        </azimuthType>
        <lightType>
          <!--opt, enum, 补光灯类型, subType:string, [highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通白光补光(不区分远中近光)]-->highWhite
        </lightType>
        <brightness>
          <!--opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
    <regulatSensitivityType>
      <!--opt, enum, 自动调节灵敏度类型, subType:string, [fast#快,medium#中,slow#慢], dep:and,{$.SupplementLight.MultiAzimuthWhiteLightCfg.brightnessRegulatMode,eq,auto}-->fast
    </regulatSensitivityType>
  </MultiAzimuthWhiteLightCfg>
  <MultiAzimuthIrLightCfg>
    <!--opt, object, 多方位红外模式参数配置, desc:当supplementLightMode == multiAzimuthIrLight生效-->
    <brightnessRegulatMode>
      <!--opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--opt, object, 单个补光灯控制参数-->
        <azimuthType>
          <!--opt, enum, 补光灯所在的方位类型, subType:string, [left#左侧方位补光灯,right#右侧方位补光灯]-->left
        </azimuthType>
        <lightType>
          <!--opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光)]-->highIrLight
        </lightType>
        <brightness>
          <!--opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </MultiAzimuthIrLightCfg>
  <PanoramicWhiteLightCfg>
    <!--opt, object, 全景白光模式参数配置, desc:当supplementLightMode == panoramicWhiteLight生效-->
    <brightnessRegulatMode>
      <!--opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--opt, object, 单个补光灯控制参数-->
        <lightID>
          <!--opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:-->1
        </lightID>
        <brightness>
          <!--opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </PanoramicWhiteLightCfg>
  <PanoramicIrLightCfg>
    <!--opt, object, 全景红外模式参数配置, desc:当supplementLightMode == PanoramicIrLightCfg生效-->
    <brightnessRegulatMode>
      <!--opt, enum, 补光灯亮度调节模式, subType:string, [manual#手动,auto#自动], desc:手动模式下用户需手动配置各组补光灯的亮度（LightCtrlList）；自动模式下用户无需配置亮度相关参数;由设备自动调节.-->auto
    </brightnessRegulatMode>
    <LightCtrlList>
      <!--opt, array, 补光灯组控制参数, subType:object, range:[,]-->
      <LightCtrl>
        <!--opt, object, 单个补光灯控制参数-->
        <lightID>
          <!--opt, int, 补光灯序号, range:[1,4], step:, unit:, unitType:-->1
        </lightID>
        <brightness>
          <!--opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
        </brightness>
      </LightCtrl>
    </LightCtrlList>
  </PanoramicIrLightCfg>
  <whiteLightEnhanceEnabled>
    <!--opt, bool, 白光灯亮度增强使能(不分远近光灯时控制), desc:开启增强使能后，白光灯会进入强电流模式，亮度会增强十倍，同时也可通过$.SupplementLight.whiteLightBrightness参数去控制强电流模式下的灯光亮度。该参数不区分补光灯模式及白光灯类型。-->true
  </whiteLightEnhanceEnabled>
  <LightManualCtrlList>
    <!--opt, array, 补光灯组手动控制参数, subType:object, range:[,], dep:and,{$.SupplementLight.mode,eq,manual}, desc:与supplementLightMode无关-->
    <LightCtrl>
      <!--opt, object, 单个补光灯控制参数-->
      <lightType>
        <!--opt, enum, 补光灯类型, subType:string, [highIrLight#远光红外补光灯,midIrLight#中光红外补光灯,lowIrLight#近光红外补光灯,irLight#普通红外补光灯(不区分远中近光),highWhite#远光白光补光灯,midWhite#中光白光补光灯,lowWhite#近光白光补光灯,white#普通红外补光灯(不区分远中近光)]-->highIrLight
      </lightType>
      <brightness>
        <!--opt, int, 补光灯亮度配置, range:[0,100], step:, unit:, unitType:-->80
      </brightness>
    </LightCtrl>
  </LightManualCtrlList>
</SupplementLight>

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 获取扩展板信息能力

20.1 命令

GET /ISAPI/System/accessoryCardInfo/capabilities

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AccessoryCardInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 扩展板能力, attr:version{req, string, 协议版本, range:[,]}-->
  <AccessoryCardTypeName>
    <!--ro, opt, string, 扩展板类型名称, range:[,]-->test
  </AccessoryCardTypeName>
</AccessoryCardInfo>

21. 获取扩展板信息

21.1 命令

GET /ISAPI/System/accessoryCardInfo

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AccessoryCardInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 扩展板信息, attr:version{req, string, 协议版本, range:[,]}-->
  <AccessoryCardTypeName>
    <!--ro, opt, string, 扩展板类型名称, range:[,]-->test
  </AccessoryCardTypeName>
</AccessoryCardInfo>

22. 获取低耗管理能力

22.1 命令

GET /ISAPI/System/lowPower/capabilities

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LowPower xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <mode opt="manual,schedule">
    <!--ro, opt, enum, 模式, subType:string, [manual#手动,schedule#周期], attr:opt{req, string, 取值范围, range:[,]}-->manual
  </mode>
  <enabled>
    <!--ro, opt, bool, 使能, desc:当mode为manual时有效-->true
  </enabled>
  <Schedule>
    <!--ro, opt, object, 周期, desc:当mode为schedule时有效-->
    <TimeRange>
      <!--ro, req, object, 时间段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
</LowPower>

23. 获取低耗管理配置

23.1 命令

GET /ISAPI/System/lowPower

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LowPower xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, opt, enum, 模式, subType:string, [manual#手动,schedule#周期]-->manual
  </mode>
  <enabled>
    <!--ro, opt, bool, 使能, desc:当mode为manual时有效-->true
  </enabled>
  <Schedule>
    <!--ro, opt, object, 周期, desc:当mode为schedule时有效-->
    <TimeRange>
      <!--ro, req, object, 时间段-->
      <beginTime>
        <!--ro, req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--ro, req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
</LowPower>

24. 配置低耗管理配置

24.1 命令

PUT /ISAPI/System/lowPower

24.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LowPower xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--opt, enum, 模式, subType:string, [manual#手动,schedule#周期]-->manual
  </mode>
  <enabled>
    <!--opt, bool, 使能, desc:当mode为manual时有效-->true
  </enabled>
  <Schedule>
    <!--opt, object, 周期, desc:当mode为schedule时有效-->
    <TimeRange>
      <!--req, object, 时间段-->
      <beginTime>
        <!--req, time, 开始时间-->00:00:00+08:00
      </beginTime>
      <endTime>
        <!--req, time, 结束时间-->00:00:00+08:00
      </endTime>
    </TimeRange>
  </Schedule>
</LowPower>

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

25. 获取手动除冰能力集

25.1 命令

GET /ISAPI/System/Hardware/manualDeicing/capabilities

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualDeicing xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 手动除冰, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
</ManualDeicing>

26. 获取手动除冰控制参数

26.1 命令

GET /ISAPI/System/Hardware/manualDeicing

26.2 输入参数

无

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualDeicing xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, opt, object, 获取手动除冰控制参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
</ManualDeicing>

27. 配置手动除冰控制参数

27.1 命令

PUT /ISAPI/System/Hardware/manualDeicing

27.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualDeicing xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--opt, object, 配置手动除冰控制, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
</ManualDeicing>

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

28. 获取锁定电流能力

28.1 命令

GET /ISAPI/System/currentLock/capabilities

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CurrentLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 电流锁定配置能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <lockType opt="all,3/4,1/2" def="3/4">
    <!--ro, opt, enum, 云台垂直电机锁定电流类型, subType:string, [all#全流锁定,3/4#3/4流锁定,1/2#半流锁定], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->all
  </lockType>
</CurrentLock>

29. 获取锁定电流配置

29.1 命令

GET /ISAPI/System/currentLock

29.2 输入参数

无

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CurrentLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <lockType>
    <!--ro, req, enum, 云台垂直电机锁定电流类型, subType:string, [all#全流锁定,3/4#3/4流锁定,1/2#半流锁定]-->all
  </lockType>
</CurrentLock>

30. 配置锁定电流配置

30.1 命令

PUT /ISAPI/System/currentLock

30.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<CurrentLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <lockType>
    <!--req, enum, 云台垂直电机锁定电流类型, subType:string, [all#全流锁定,3/4#3/4流锁定,1/2#半流锁定]-->all
  </lockType>
</CurrentLock>

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

31. 获取声音报警输出参数能力

31.1 命令

GET /ISAPI/Event/triggers/notifications/AudioAlarm/capabilities?format=json

31.2 输入参数

无

31.3 输出参数

{
    "AudioAlarmCap": {
    /*ro, req, object, 声音报警能力*/
        "audioTypeListCap": [
        /*ro, opt, array, 声音类型列表, subType:object, range:[,], desc:国内：1-“警戒区域，尽快离开” 、2-“危险区域，请勿靠近 ”、3-“此区域禁止停车”、4-“您已进入实时监控区域”、5-“您好，欢迎光临”、6-“贵重物品，请勿触碰”、7-“私人领域，禁止入内”、8-“水深危险，注意安全”、9- “高处危险，请勿攀爬”、10-“啸叫警报音”；11-“告警音”、12-“提示音”,16-AI自定义语音文件;海外：1-“Siren”、2- “Warning, this is a restricted area”、3-“Waring，this is a restricted area，please keep away”、4-“Warning, this is a no-parking zone”、5-“Warning，this is a no-parking zone，please keep away”、6-“Attention please. The area is under surveillance”、7-“Welcome，Please notice that the area is under surveillance”、8-“Welcome”、9-“Danger! Please keep away”、10-“（Siren）&Dange，please keep away”；11-Audio Warning, 12-Beep Sound,13-自定义语音1,14-自定义语音2,15-自定义语音3, 16-AICustomAudioFile*/
            {
                "audioID":  1,
                /*ro, opt, int, 音频ID, range:[,], step:, unit:, unitType:*/
                "audioDescription":  "警戒区域，尽快离开"
                /*ro, opt, string, 音频描述, range:[,]*/
            }
        ],
        "audioVolume": {
        /*ro, opt, object, 报警声音音量*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  100
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "alarmTimes": {
        /*ro, opt, object, 报警次数, desc:范围1-50次，缺省值为5次，最小单位1次*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  50,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  5
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "TimeRangeCap": {
        /*ro, req, object, 报警输出时间列表能力*/
            "week": {
            /*ro, opt, object, 周信息*/
                "@opt":  "1,2,3,4,5,6,7"
                /*ro, req, string, 可选值, range:[,], desc:1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5- Friday,6-Saturday, 7-Sunday*/
            },
            "id": {
            /*ro, opt, object, 每天可配置时间段ID*/
                "@maxSize":  8
                /*ro, req, int, 最大时间段, range:[,], step:, unit:, unitType:*/
            },
            "beginTime": {
            /*ro, opt, object, 开始时间*/
                "@min":  "08:00",
                /*ro, opt, time, 最小时间*/
                "@max":  "24:00"
                /*ro, req, time, 最大时间*/
            },
            "endTime": {
            /*ro, opt, object, 结束时间*/
                "@min":  "08:00",
                /*ro, opt, time, 最小值*/
                "@max":  "24:00"
                /*ro, opt, time, 最大值*/
            }
        },
        "audioClass": {
        /*ro, opt, object, 音频类别*/
            "@opt":  "alertAudio, promptAudio, customAudio",
            /*ro, opt, string, 可选值, range:[,], desc:告警音、提示音、自定义语音, 若不返回该字段，则代表当前设备不区分报警音频类别,直接判断audioTypeListCap能力,去获取当前设备支持的具体音频类型.,若返回该字段,则代表当前设备支持报警音频类别,,alertAudio警戒音,则需通过AlertAudioTypeListCap能力获取当前设备支持的具体警戒音类型.,customAudio自定义音,则需通过customAudioID去配置具体的自定义音类型。*/
            "@def":  "alertAudio"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "AlertAudioTypeListCap": [
        /*ro, opt, array, 告警音类型列表, subType:object, range:[,], desc:当audioClass选择为alertAudio时返回,国内：1-“警戒区域，尽快离开” 、2-“危险区域，请勿靠近 ”、3-“此区域禁止停车”、4-“您已进入实时监控区域”、5-“您好，欢迎光临”、6-“贵重物品，请勿触碰”、7-“私人领域，禁止入内”、8-“水深危险，注意安全”、9- “高处危险，请勿攀爬”、10-“啸叫警报音”、11-“告警音”；海外：1-“Siren”、2- “Warning, this is a restricted area”、3-“Waring，this is a restricted area，please keep away”、4-“Warning, this is a no-parking zone”、5-“Warning，this is a no-parking zone，please keep away”、6-“Attention please. The area is under surveillance”、7-“Welcome，Please notice that the area is under surveillance”、8-“Welcome”、9-“Danger! Please keep away”、10-“（Siren）&Dange，please keep away, 11-Audio Warning”；*/
            {
                "alertAudioID":  1,
                /*ro, opt, int, 报警音频ID, range:[,], step:, unit:, unitType:*/
                "alertAudioDescription":  "警戒区域，尽快离开"
                /*ro, opt, string, 报警音频描述, range:[,]*/
            }
        ],
        "customAudioID": {
        /*ro, opt, object, 告警音类型列表*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  6,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  1
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "alarmType": {
        /*ro, opt, object, 报警类型, desc:异常行为识别-behavior、测温-thermometry、火点检测-dynamicFire、吸烟检测-smokingMode、人脸未戴口罩检测-noMaskDetection、AI开发平台事件-AIOP、人数异常-PQA（personDensityDetection人员密度事件子类型）,*/
            "@opt":  "behavior,thermometry,dynamicFire,smokingMode,noMaskDetection,AIOP,PQA",
            /*ro, opt, string, 可选值, range:[,]*/
            "@def":  "thermometry"
            /*ro, opt, string, 默认值, range:[,]*/
        },
        "AlarmBindAudioList": [
        /*ro, opt, array, 报警类型与报警声音绑定列表, subType:object, range:[,]*/
            {
                "alarmType":  "behavior",
                /*ro, opt, string, 报警类型, range:[,], desc:异常行为识别-behavior、测温-thermometry、火点检测-dynamicFire、吸烟检测-smokingMode、AI开发平台事件-AIOP*/
                "audioID": {
                /*ro, opt, object, 返回报警类型对应的报警声音类型ID*/
                    "@opt":  "1,2,3,4,5,6,7,8,9,10,11,12"
                    /*ro, opt, string, 可选值 , range:[,]*/
                },
                "audioClass": {
                /*ro, opt, object, 音频类别*/
                    "@opt":  "alertAudio, promptAudio, customAudio"
                    /*ro, opt, string, 可选值, range:[,], desc:表示报警类型支持的音频类别*/
                }
            }
        ],
        "isSupportCustomAudio":  true,
        /*ro, opt, bool, 是否支持自定义语音上传、下载、修改相关信息, desc:上传下载:/ISAPI/Event/triggers/notifications/AudioAlarm/customAudio/<customAudioID>?format=json 修改:/ISAPI/Event/triggers/notifications/AudioAlarm/customAudioInfo/<customAudioID>?format=json*/
        "isSupportAudioTest":  true,
        /*ro, opt, bool, 是否支持语音测试, desc:/ISAPI/Event/triggers/notifications/AudioAlarm/<ID>/test?format=json*/
        "customAudioName": {
        /*ro, opt, object, 自定义语音名称, desc:最大长度24个字节(8个汉字)*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  24
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
        },
        "isSupportCustomAudioFormatInfo":  true,
        /*ro, opt, bool, 是否支持通道自定义语音编码格式信息获取, desc:目前仅DVR的模拟通道支持该功能,对应URL:/ISAPI/Event/triggers/notifications/AudioAlarm/customAudioTypeInfo/channels?format=json,/ISAPI/Event/triggers/notifications/AudioAlarm/customAudioTypeInfo/channels/<ID>?format=json*/
        "isSupportCustomAudioURL":  true,
        /*ro, opt, bool, 设备是否支持URL方式导入自定义语音文件, desc:对应URL:/ISAPI/Event/triggers/notifications/AudioAlarm/customAudio?format=json 中type=url*/
        "isSupportCustomAudioFiles":  true,
        /*ro, opt, bool, 设备是否支持批量导入自定义语音文件, desc:对应URL:/ISAPI/Event/triggers/notifications/AudioAlarm/customAudioFiles?format=json*/
        "isSupportChannelsCustomAudioInfo":  true,
        /*ro, opt, bool, 是否支持多通道批量获取自定义语音文件信息, desc:true-支持,false-不支持,不返回该节点也表示不支持,对应URL:GET /ISAPI/Event/triggers/notifications/AudioAlarm/channels/customAudioInfo?format=json*/
        "isSupportModChannelsCustomAudioInfo":  true,
        /*ro, opt, bool, 是否支持修改自定义语音文件信息, desc:true-支持,false-不支持,不返回该节点也表示不支持,对应URL:PUT /ISAPI/Event/triggers/notifications/AudioAlarm/channels/customAudioInfo?format=json*/
        "isSupportAudioURLWithHTTPS":  true,
        /*ro, opt, bool, 设备是否支持的自定义语音文件url的协议格式为https, desc:不支持不返回，不返回按HTTP处理*/
        "isSupportTestChannelsAudio":  true,
        /*ro, opt, bool, 是否支持测试语音指定通道自定义语音文件, desc:true-支持,false-不支持,不返回该节点也表示不支持,对应URL:PUT /ISAPI/Event/triggers/notifications/AudioAlarm/channels/customAudio/test?format=json*/
        "isSupportDeleteChannelsAudio":  true
        /*ro, opt, bool, 是否支持删除指定通道自定义语音文件信息, desc:true-支持,false-不支持,不返回该节点也表示不支持,对应URL:POST /ISAPI/Event/triggers/notifications/AudioAlarm/channels/customAudio/delete?format=json*/
    }
}

32. 获取声音报警输出参数

32.1 命令

GET /ISAPI/Event/triggers/notifications/AudioAlarm?format=json&alarmType=<alarmType>

32.2 输入参数

无

32.3 输出参数

{
    "AudioAlarm": {
    /*ro, req, object, 声音报警配置*/
        "audioID":  1,
        /*ro, req, enum, 提示音文件, subType:int, [1#“警戒区域,10#“啸叫警报音”/“（Siren）&Dange,11#“告警音”/"Audio Warning",12#“提示音”/"Beep Sound",13#自定义语音1,14#自定义语音2,15#自定义语音3,2#“危险区域,3#“此区域禁止停车”/“Waring,4#“您已进入实时监控区域”/“Warning,5#“您好,6#“贵重物品,7#“私人领域,8#“水深危险,9#“高处危险], desc:国内：1-“警戒区域，尽快离开” 、2-“危险区域，请勿靠近 ”、3-“此区域禁止停车”、4-“您已进入实时监控区域”、5-“您好，欢迎光临”、6-“贵重物品，请勿触碰”、7-“私人领域，禁止入内”、8-“水深危险，注意安全”、9- “高处危险，请勿攀爬”、10-“啸叫警报音”11-“告警音”、12-“提示音”；海外：1-“Siren”、2- “Warning, this is a restricted area”、3-“Waring，this is a restricted area，please keep away”、4-“Warning, this is a no-parking zone”、5-“Warning，this is a no-parking zone，please keep away”、6-“Attention please. The area is under surveillance”、7-“Welcome，Please notice that the area is under surveillance”、8-“Welcome”、9-“Danger! Please keep away”、10-“（Siren）&Dange，please keep away”；11-Audio Warning, 12-Beep Sound,13-自定义语音1,  14-自定义语音2， 15-自定义语音3*/
        "audioVolume":  100,
        /*ro, req, int, 报警声音音量, range:[1,100], step:, unit:, unitType:, desc:范围1-100，最小单位为1,音量缺省值为100*/
        "alarmTimes":  5,
        /*ro, opt, int, 声音报警次数, range:[1,50], step:, unit:, unitType:, desc:范围1-50次，缺省值为5次，最小单位1次*/
        "TimeRangeList": [
        /*ro, opt, array, 报警输出时间列表, subType:object, range:[,]*/
            {
                "week":  1,
                /*ro, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日], desc:星期1-1 ....  星期日-7*/
                "TimeRange": [
                /*ro, opt, array, 时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*ro, req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "08:00",
                        /*ro, req, time, 开始时间*/
                        "endTime":  "24:00"
                        /*ro, req, time, 结束时间*/
                    }
                ]
            }
        ],
        "audioClass":  "alertAudio",
        /*ro, req, enum, 提示音类型, subType:string, [alertAudio#告警音,customAudio#自定义语音,promptAudio#提示音]*/
        "alertAudioID":  1,
        /*ro, opt, int, 警戒音频ID, range:[,], step:, unit:, unitType:, desc:当audioClass选择为alertAudio生效,获取当前需要播放的自定义音频ID。国内：1-“警戒区域，尽快离开” 、2-“危险区域，请勿靠近 ”、3-“此区域禁止停车”、4-“您已进入实时监控区域”、5-“您好，欢迎光临”、6-“贵重物品，请勿触碰”、7-“私人领域，禁止入内”、8-“水深危险，注意安全”、9- “高处危险，请勿攀爬”、10-“啸叫警报音”、11-“告警音”；海外：1-“Siren”、2- “Warning, this is a restricted area”、3-“Waring，this is a restricted area，please keep away”、4-“Warning, this is a no-parking zone”、5-“Warning，this is a no-parking zone，please keep away”、6-“Attention please. The area is under surveillance”、7-“Welcome，Please notice that the area is under surveillance”、8-“Welcome”、9-“Danger! Please keep away”、10-“（Siren）&Dange，please keep away、11-Audio Warning”*/
        "customAudioID":  1,
        /*ro, opt, int, 自定义音频ID, range:[,], step:, unit:, unitType:, desc:当audioClass选择为customAudio生效,获取当前需要播放的自定义音频ID。当前设备上传自定义音频仅能通过萤石APP进行固定格式音频的上传，已上传成功的自定义音频列表可通过/ISAPI/Event/triggers/notifications/AudioAlarm/customAudioInfo?format=json接口进行获取, audioClass中界面无需显示customAudio*/
        "alarmType":  "thermometry"
        /*ro, opt, string, 报警类型, range:[,], desc:异常行为识别-behavior、测温-thermometry、火点检测-dynamicFire、吸烟检测-smokingMode,  人脸未戴口罩检测-noMaskDetection,AI开发平台事件-AIOP,人数异常-PQA（personDensityDetection人员密度事件子类型）,alarmType出现时audioID与其关联绑定*/
    }
}

33. 配置声音报警输出参数

33.1 命令

PUT /ISAPI/Event/triggers/notifications/AudioAlarm?format=json&alarmType=<alarmType>

33.2 输入参数

{
    "AudioAlarm": {
    /*ro, opt, object, 声音报警配置*/
        "audioID":  1,
        /*wo, req, enum, 提示音文件, subType:int, [1#“警戒区域,10#“啸叫警报音”/“（Siren）&Dange,11#“告警音”/"Audio Warning",12#“提示音”/"Beep Sound",13#自定义语音1,14#自定义语音2,15#自定义语音3,2#“危险区域,3#“此区域禁止停车”/“Waring,4#“您已进入实时监控区域”/“Warning,5#“您好,6#“贵重物品,7#“私人领域,8#“水深危险,9#“高处危险], desc:国内：1-“警戒区域，尽快离开” 、2-“危险区域，请勿靠近 ”、3-“此区域禁止停车”、4-“您已进入实时监控区域”、5-“您好，欢迎光临”、6-“贵重物品，请勿触碰”、7-“私人领域，禁止入内”、8-“水深危险，注意安全”、9- “高处危险，请勿攀爬”、10-“啸叫警报音”11-“告警音”、12-“提示音”；海外：1-“Siren”、2- “Warning, this is a restricted area”、3-“Waring，this is a restricted area，please keep away”、4-“Warning, this is a no-parking zone”、5-“Warning，this is a no-parking zone，please keep away”、6-“Attention please. The area is under surveillance”、7-“Welcome，Please notice that the area is under surveillance”、8-“Welcome”、9-“Danger! Please keep away”、10-“（Siren）&Dange，please keep away”；11-Audio Warning, 12-Beep Sound,13-自定义语音1,  14-自定义语音2， 15-自定义语音/*/
        "audioVolume":  100,
        /*wo, req, int, 报警声音音量, range:[,], step:, unit:, unitType:, desc:范围1-100，最小单位为1,音量缺省值为100*/
        "alarmTimes":  5,
        /*wo, opt, int, 声音报警次数, range:[,], step:, unit:, unitType:, desc:范围1-50次，缺省值为5次，最小单位1次*/
        "TimeRangeList": [
        /*wo, opt, array, 报警输出时间列表, subType:object, range:[,]*/
            {
                "week":  1,
                /*wo, req, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日], desc:星期1-1 ....  星期日-7*/
                "TimeRange": [
                /*wo, opt, array, 时间范围, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*wo, req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "08:00",
                        /*wo, req, time, 开始时间*/
                        "endTime":  "24:00"
                        /*wo, req, time, 结束时间*/
                    }
                ]
            }
        ],
        "audioClass":  "alertAudio",
        /*ro, opt, string, 音频类别, range:[,], desc:告警音、提示音、自定义语音;"alertAudio, promptAudio, customAudio",若选择alertAudio警戒音,则需通过alertAudioID去获取具体的警戒音类型.若选择customAudio自定义音,则需通过customAudioID去获取具体的自定义音类型*/
        "alertAudioID":  1,
        /*ro, opt, int, 警戒音频ID, range:[,], step:, unit:, unitType:, desc:当audioClass选择为alertAudio生效,获取当前需要播放的自定义音频ID。国内：1-“警戒区域，尽快离开” 、2-“危险区域，请勿靠近 ”、3-“此区域禁止停车”、4-“您已进入实时监控区域”、5-“您好，欢迎光临”、6-“贵重物品，请勿触碰”、7-“私人领域，禁止入内”、8-“水深危险，注意安全”、9- “高处危险，请勿攀爬”、10-“啸叫警报音”、11-“告警音”；海外：1-“Siren”、2- “Warning, this is a restricted area”、3-“Waring，this is a restricted area，please keep away”、4-“Warning, this is a no-parking zone”、5-“Warning，this is a no-parking zone，please keep away”、6-“Attention please. The area is under surveillance”、7-“Welcome，Please notice that the area is under surveillance”、8-“Welcome”、9-“Danger! Please keep away”、10-“（Siren）&Dange，please keep away、11-Audio Warning”*/
        "customAudioID":  1,
        /*ro, opt, int, 自定义音频ID, range:[,], step:, unit:, unitType:, desc:当audioClass选择为customAudio生效,获取当前需要播放的自定义音频ID。当前设备上传自定义音频仅能通过萤石APP进行固定格式音频的上传，已上传成功的自定义音频列表可通过/ISAPI/Event/triggers/notifications/AudioAlarm/customAudioInfo?format=json接口进行获取, audioClass中界面无需显示customAudio*/
        "alarmType":  "thermometry"
        /*wo, opt, string, 报警类型, range:[,], desc:异常行为识别-behavior、测温-thermometry、火点检测-dynamicFire、吸烟检测-smokingMode,  人脸未戴口罩检测-noMaskDetection,AI开发平台事件-AIOP ,人数异常-PQA（personDensityDetection人员密度事件子类型）,alarmType出现时audioID与其关联绑定*/
    }
}

33.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

34. 获取设备声音参数能力

34.1 命令

GET /ISAPI/System/SoundCfg/capabilities

34.2 输入参数

无

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SoundCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 声音配置 , attr:version{req, string, 协议版本, range:[,]}-->
  <SpeakerCfg>
    <!--ro, opt, object, 扬声器配置参数-->
    <enabled def="true">
      <!--ro, req, bool, 是否启用扬声器, attr:def{opt, bool, 默认值}, desc:之前的协议没有def属性,是后期添加的-->true
    </enabled>
    <remoteCtrl>
      <!--ro, req, bool, 是否启用远程音量调节-->true
    </remoteCtrl>
    <volume min="0" max="100">
      <!--ro, req, int, 扬声器音量大小, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:默认10-->1
    </volume>
    <twoWayAudioWaitingDuration min="20" max="300">
      <!--ro, opt, int, 语音对讲等待时长, range:[20,300], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:默认:20s-->20
    </twoWayAudioWaitingDuration>
  </SpeakerCfg>
  <forceSwitchVoice>
    <!--ro, req, bool, 是否启用强制切换语音-->true
  </forceSwitchVoice>
  <audition>
    <!--ro, opt, bool, 是否开启试听, desc:调节音量的时候生效-->true
  </audition>
  <DevicePromptSound>
    <!--ro, opt, object, 设备提示音-->
    <bootSound>
      <!--ro, opt, bool, 是否关闭开机声音-->true
    </bootSound>
    <rebootSound>
      <!--ro, opt, bool, 是否关闭重启声音-->true
    </rebootSound>
    <factoryResetSound>
      <!--ro, opt, bool, 是否关闭恢复出厂设置声音-->true
    </factoryResetSound>
    <upgradeSound>
      <!--ro, opt, bool, 是否关闭升级提示声音-->true
    </upgradeSound>
    <upgradeCompleteSound>
      <!--ro, opt, bool, 是否关闭升级完成提示声音-->true
    </upgradeCompleteSound>
    <lowBatteryReminderSound>
      <!--ro, opt, bool, 是否关闭低电量提醒声音-->true
    </lowBatteryReminderSound>
  </DevicePromptSound>
</SoundCfg>

35. 获取设备声音参数配置

35.1 命令

GET /ISAPI/System/SoundCfg

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SoundCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 声音配置, attr:version{req, string, 协议版本, range:[,]}-->
  <SpeakerCfg>
    <!--ro, opt, object, 声音配置参数-->
    <enabled>
      <!--ro, req, bool, 是否启用扬声器-->true
    </enabled>
    <remoteCtrl>
      <!--ro, req, bool, 是否启用远程音量调节-->true
    </remoteCtrl>
    <volume>
      <!--ro, req, int, 扬声器音量大小, range:[0,100], step:, unit:, unitType:, desc:默认10-->1
    </volume>
    <twoWayAudioWaitingDuration>
      <!--ro, opt, int, 语音对讲等待时长, range:[20,300], step:, unit:s, unitType:时间, desc:默认:20s-->20
    </twoWayAudioWaitingDuration>
  </SpeakerCfg>
  <forceSwitchVoice>
    <!--ro, req, bool, 是否启用强制切换语音-->true
  </forceSwitchVoice>
  <audition>
    <!--ro, opt, bool, 是否开启试听, desc:调节音量的时候生效-->true
  </audition>
  <DevicePromptSound>
    <!--ro, opt, object, 设备提示音-->
    <bootSound>
      <!--ro, opt, bool, 是否关闭开机声音-->true
    </bootSound>
    <rebootSound>
      <!--ro, opt, bool, 是否关闭重启声音-->true
    </rebootSound>
    <factoryResetSound>
      <!--ro, opt, bool, 是否关闭恢复出厂设置声音-->true
    </factoryResetSound>
    <upgradeSound>
      <!--ro, opt, bool, 是否关闭升级提示声音-->true
    </upgradeSound>
    <upgradeCompleteSound>
      <!--ro, opt, bool, 是否关闭升级完成提示声音-->true
    </upgradeCompleteSound>
    <lowBatteryReminderSound>
      <!--ro, opt, bool, 是否关闭低电量提醒声音-->true
    </lowBatteryReminderSound>
  </DevicePromptSound>
</SoundCfg>

36. 配置设备声音参数配置

36.1 命令

PUT /ISAPI/System/SoundCfg

36.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SoundCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 声音配置, attr:version{req, string, 协议版本, range:[,]}-->
  <SpeakerCfg>
    <!--opt, object, 声音配置参数-->
    <enabled>
      <!--req, bool, 是否启用扬声器-->true
    </enabled>
    <remoteCtrl>
      <!--req, bool, 是否启用远程音量调节-->true
    </remoteCtrl>
    <volume>
      <!--req, int, 扬声器音量大小, range:[0,100], step:, unit:, unitType:, desc:默认10-->1
    </volume>
    <twoWayAudioWaitingDuration>
      <!--opt, int, 语音对讲等待时长, range:[20,300], step:, unit:s, unitType:时间, desc:默认:20s-->20
    </twoWayAudioWaitingDuration>
  </SpeakerCfg>
  <forceSwitchVoice>
    <!--req, bool, 是否启用强制切换语音-->true
  </forceSwitchVoice>
  <audition>
    <!--opt, bool, 是否开启试听, desc:调节音量的时候生效-->true
  </audition>
  <DevicePromptSound>
    <!--ro, opt, object, 设备提示音-->
    <bootSound>
      <!--ro, opt, bool, 是否关闭开机声音-->true
    </bootSound>
    <rebootSound>
      <!--ro, opt, bool, 是否关闭重启声音-->true
    </rebootSound>
    <factoryResetSound>
      <!--ro, opt, bool, 是否关闭恢复出厂设置声音-->true
    </factoryResetSound>
    <upgradeSound>
      <!--ro, opt, bool, 是否关闭升级提示声音-->true
    </upgradeSound>
    <upgradeCompleteSound>
      <!--ro, opt, bool, 是否关闭升级完成提示声音-->true
    </upgradeCompleteSound>
    <lowBatteryReminderSound>
      <!--ro, opt, bool, 是否关闭低电量提醒声音-->true
    </lowBatteryReminderSound>
  </DevicePromptSound>
</SoundCfg>

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

37. 获取白光灯报警输出配置能力

37.1 命令

GET /ISAPI/Event/triggers/notifications/whiteLightAlarm/capabilities?format=json

37.2 输入参数

无

37.3 输出参数

{
    "WhiteLightAlarmCap": {
    /*ro, opt, object, 白光灯报警输出配置能力*/
        "durationTime": {
        /*ro, opt, object, 白光灯闪烁时间*/
            "@min":  1,
            /*ro, opt, int, 最小值 , range:[,], step:, unit:, unitType:*/
            "@max":  60,
            /*ro, opt, int, 最大值 , range:[,], step:, unit:, unitType:*/
            "@def":  15
            /*ro, req, int, 可选值 , range:[,], step:, unit:, unitType:*/
        },
        "frequency": {
        /*ro, opt, object, 白光灯闪烁频率, desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低及常亮四挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗，及不闪烁；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
            "@opt":  "high,medium,low,normallyOn",
            /*ro, opt, string, 可选值 , range:[,]*/
            "@def":  "high"
            /*ro, req, string, 默认值 , range:[,]*/
        },
        "brightness": {
        /*ro, opt, object, 白光灯亮度*/
            "@min":  1,
            /*ro, opt, int, 最小值 , range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 最大值 , range:[,], step:, unit:, unitType:*/
            "@def":  50
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "TimeRangeCap": {
        /*ro, opt, object, 报警输出时间列表能力*/
            "week": {
            /*ro, opt, object, 周信息, desc:1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5- Friday,6-Saturday, 7-Sunday*/
                "@opt":  "1,2,3,4,5,6,7"
                /*ro, req, string, 可选值 , range:[,]*/
            },
            "id": {
            /*ro, opt, object, 每天可配置时间段ID*/
                "@maxSize":  8
                /*ro, req, int, 数组个数 , range:[,], step:, unit:, unitType:*/
            },
            "beginTime": {
            /*ro, opt, object, 开始时间*/
                "@min":  "00:00",
                /*ro, opt, string, 最小值 , range:[,]*/
                "@max":  "24:00"
                /*ro, req, string, 最大值 , range:[,]*/
            },
            "endTime": {
            /*ro, opt, object, 结束时间*/
                "@min":  "00:00",
                /*ro, opt, string, 最小值 , range:[,]*/
                "@max":  "24:00"
                /*ro, req, string, 最大值, range:[,]*/
            }
        },
        "whiteLightMode": {
        /*ro, opt, object, 白光灯模式*/
            "@opt":  "keepOn,flashing",
            /*ro, opt, string, 可选值 , range:[,], desc:常亮-keepOn、闪烁-flashing*/
            "@def":  "keepOn"
            /*ro, opt, string, 默认值 , range:[,]*/
        }
    }
}

38. 获取白光灯报警输出

38.1 命令

GET /ISAPI/Event/triggers/notifications/whiteLightAlarm?format=json

38.2 输入参数

无

38.3 输出参数

{
    "WhiteLightAlarm": {
    /*ro, opt, object, 白光灯报警*/
        "durationTime":  1,
        /*ro, req, int, 白光灯闪烁时间, range:[1,60], step:, unit:, unitType:*/
        "frequency":  "medium",
        /*ro, req, enum, 白光灯闪烁频率, subType:string, [high#高,medium#中,low#低,normallyOn#常亮], desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低及常亮四挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗，及不闪烁；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
        "brightness":  50,
        /*ro, req, int, 白光灯亮度, range:[1,100], step:, unit:, unitType:*/
        "TimeRangeList": [
        /*ro, opt, array, 报警输出时间列表, subType:object, range:[,]*/
            {
                "week":  1,
                /*ro, req, int, 周信息, range:[,], step:, unit:, unitType:, desc:ISO8601 weekday number ,星期1-1 ....  星期日-7*/
                "TimeRange": [
                /*ro, opt, array, 每天可配置时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*ro, req, int, 每天可配置时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "00:00",
                        /*ro, req, string, 开始时间, range:[,]*/
                        "endTime":  "24:00"
                        /*ro, req, string, 结束时间, range:[,]*/
                    }
                ]
            }
        ],
        "whiteLightMode":  "keepOn"
        /*ro, opt, enum, 白光灯模式, subType:string, [keepOn#常亮,flashing#闪烁]*/
    }
}

39. 配置白光灯报警输出

39.1 命令

PUT /ISAPI/Event/triggers/notifications/whiteLightAlarm?format=json

39.2 输入参数

{
    "WhiteLightAlarm": {
    /*opt, object, 白光灯报警*/
        "durationTime":  1,
        /*req, int, 白光灯闪烁时间, range:[1,60], step:, unit:, unitType:*/
        "frequency":  "medium",
        /*req, enum, 白光灯闪烁频率, subType:string, [high#高,medium#中,low#低,normallyOn#常亮], desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低及常亮四挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗，及不闪烁；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
        "brightness":  50,
        /*req, int, 白光灯亮度, range:[1,100], step:, unit:, unitType:*/
        "TimeRangeList": [
        /*opt, array, 报警输出时间列表, subType:object, range:[,]*/
            {
                "week":  1,
                /*req, int, 周信息, range:[,], step:, unit:, unitType:, desc:ISO8601 weekday number ,星期1-1 ....  星期日-7*/
                "TimeRange": [
                /*opt, array, 每天可配置时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*req, int, 每天可配置时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "00:00",
                        /*req, string, 开始时间, range:[,]*/
                        "endTime":  "24:00"
                        /*req, string, 结束时间, range:[,]*/
                    }
                ]
            }
        ],
        "whiteLightMode":  "keepOn"
        /*opt, enum, 白光灯模式, subType:string, [keepOn#常亮,flashing#闪烁]*/
    }
}

39.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

40. 获取白光灯报警输出配置通道能力

40.1 命令

GET /ISAPI/Event/triggers/notifications/channels/<channelID>/whiteLightAlarm/capabilities?format=json

40.2 输入参数

无

40.3 输出参数

{
    "WhiteLightAlarmCap": {
    /*ro, opt, object, 白光灯报警输出配置能力*/
        "channelID":  1,
        /*ro, req, int, 通道ID, range:[,], step:, unit:, unitType:*/
        "durationTime": {
        /*ro, opt, object, 白光灯闪烁时间*/
            "@min":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  60,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  15
            /*ro, req, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "frequency": {
        /*ro, opt, object, 白光灯闪烁频率, desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低及常亮四挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗，及不闪烁；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
            "@opt":  "high,medium,low,normallyOn",
            /*ro, opt, string, 可选值, range:[,]*/
            "@def":  "high"
            /*ro, req, string, 默认值, range:[,]*/
        },
        "brightness": {
        /*ro, opt, object, 白光灯亮度*/
            "@min":  1,
            /*ro, opt, int, 最小值 , range:[,], step:, unit:, unitType:*/
            "@max":  100,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "@def":  50
            /*ro, opt, int, 默认值, range:[,], step:, unit:, unitType:*/
        },
        "TimeRangeCap": {
        /*ro, opt, object, 报警输出时间列表能力*/
            "week": {
            /*ro, opt, object, 周信息, desc:1-Monday, 2-Tuesday, 3-Wednesday, 4-Thursday, 5- Friday,6-Saturday, 7-Sunday*/
                "@opt":  "1,2,3,4,5,6,7"
                /*ro, req, string, 可选值, range:[,]*/
            },
            "id": {
            /*ro, opt, object, 每天可配置时间段ID*/
                "@maxSize":  8
                /*ro, req, int, 数组个数, range:[,], step:, unit:, unitType:*/
            },
            "beginTime": {
            /*ro, opt, object, 开始时间*/
                "@min":  "00:00",
                /*ro, opt, string, 最小值 , range:[,]*/
                "@max":  "24:00"
                /*ro, req, string, 最大值 , range:[,]*/
            },
            "endTime": {
            /*ro, opt, object, 结束时间*/
                "@min":  "00:00",
                /*ro, opt, string, 最小值 , range:[,]*/
                "@max":  "24:00"
                /*ro, req, string, 最大值 , range:[,]*/
            }
        },
        "HolidayBlockCap": {
        /*ro, opt, object, 假日时间列表能力*/
            "beginTime": {
            /*ro, req, object, 开始时间*/
                "@min":  "00:00",
                /*ro, opt, string, 最小值 , range:[,]*/
                "@max":  "24:00"
                /*ro, opt, string, 最大值, range:[,]*/
            },
            "endTime": {
            /*ro, req, object, 结束时间*/
                "@min":  "00:00",
                /*ro, opt, string, 最小值 , range:[,]*/
                "@max":  "24:00"
                /*ro, opt, string, 最大值, range:[,]*/
            }
        }
    }
}

41. 获取白光灯报警输出所有通道

41.1 命令

GET /ISAPI/Event/triggers/notifications/channels/whiteLightAlarm?format=json

41.2 输入参数

无

41.3 输出参数

{
    "WhiteLightAlarmList": [
    /*ro, req, array, 白光灯报警表单, subType:object, range:[,]*/
        {
            "channelID":  1,
            /*ro, req, int, 通道ID, range:[,], step:, unit:, unitType:*/
            "durationTime":  1,
            /*ro, req, int, 白光灯闪烁时间, range:[1,60], step:1, unit:s, unitType:时间, desc:缺省值15秒，最小单位1秒*/
            "frequency":  "medium",
            /*ro, req, enum, 白光灯闪烁频率, subType:string, [high#高,medium#中,low#低], desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低三挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
            "brightness":  1,
            /*ro, opt, int, 白光灯亮度, range:[1,100], step:1, unit:, unitType:无, desc:缺省值50，最小单位为1*/
            "TimeRangeList": [
            /*ro, opt, array, 报警输出时间列表, subType:object, range:[,]*/
                {
                    "week":  1,
                    /*ro, req, enum, 星期 , subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
                    "TimeRange": [
                    /*ro, opt, array, 时间段, subType:object, range:[,]*/
                        {
                            "id":  1,
                            /*ro, req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                            "beginTime":  "00:00:00+08:00",
                            /*ro, req, time, 开始时间, desc:ISO8601 time*/
                            "endTime":  "00:00:00+08:00"
                            /*ro, req, time, 结束时间, desc:ISO8601 time*/
                        }
                    ]
                }
            ],
            "HolidayBlockList": {
            /*ro, opt, object, 假日时间列表*/
                "TimeRange": [
                /*ro, opt, array, 时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*ro, req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "00:00:00+08:00",
                        /*ro, req, time, 开始时间, desc:ISO8601 time*/
                        "endTime":  "00:00:00+08:00"
                        /*ro, req, time, 结束时间, desc:ISO8601 time*/
                    }
                ]
            },
            "addressingFormatType":  "ipaddress",
            /*ro, opt, enum, 地址类型, subType:string, [ipaddress#ipaddress,hostname#hostname]*/
            "hostName":  "test",
            /*ro, opt, string, 主机名称, range:[,], dep:and,{$.WhiteLightAlarmList[*].addressingFormatType,eq,hostname}, desc:当addressingFormatType为hostname时有效*/
            "ipAddress":  "test",
            /*ro, opt, string, Ipv4地址, range:[,], dep:and,{$.WhiteLightAlarmList[*].addressingFormatType,eq,ipv4}, desc:当addressingFormatType为ipaddress且ip地址为ipv4时有效*/
            "ipv6Address":  "test",
            /*ro, opt, string, Ipv6地址, range:[,], dep:and,{$.WhiteLightAlarmList[*].addressingFormatType,eq,ipv6}, desc:当addressingFormatType为ipaddress且ip地址为ipv6时有效*/
            "managePortNo":  1
            /*ro, opt, int, 管理端口, range:[,], step:, unit:, unitType:*/
        }
    ]
}

42. 配置白光灯报警输出所有通道

42.1 命令

PUT /ISAPI/Event/triggers/notifications/channels/whiteLightAlarm?format=json

42.2 输入参数

{
    "WhiteLightAlarmList": [
    /*req, array, 白光灯报警表单, subType:object, range:[,]*/
        {
            "channelID":  1,
            /*req, int, 通道ID, range:[,], step:, unit:, unitType:*/
            "durationTime":  1,
            /*req, int, 白光灯闪烁时间, range:[1,60], step:1, unit:s, unitType:时间, desc:缺省值15秒，最小单位1秒*/
            "frequency":  "medium",
            /*req, enum, 白光灯闪烁频率, subType:string, [high#高,medium#中,low#低], desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低三挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
            "brightness":  1,
            /*opt, int, 白光灯亮度, range:[1,100], step:1, unit:, unitType:无, desc:缺省值50，最小单位为1*/
            "TimeRangeList": [
            /*opt, array, 报警输出时间列表, subType:object, range:[,]*/
                {
                    "week":  1,
                    /*req, enum, 星期 , subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
                    "TimeRange": [
                    /*opt, array, 时间段, subType:object, range:[,]*/
                        {
                            "id":  1,
                            /*req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                            "beginTime":  "00:00:00+08:00",
                            /*req, time, 开始时间, desc:ISO8601 time*/
                            "endTime":  "00:00:00+08:00"
                            /*req, time, 结束时间, desc:ISO8601 time*/
                        }
                    ]
                }
            ],
            "HolidayBlockList": {
            /*opt, object, 假日时间列表*/
                "TimeRange": [
                /*opt, array, 时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "00:00:00+08:00",
                        /*req, time, 开始时间, desc:ISO8601 time*/
                        "endTime":  "00:00:00+08:00"
                        /*req, time, 结束时间, desc:ISO8601 time*/
                    }
                ]
            },
            "addressingFormatType":  "ipaddress",
            /*opt, enum, 地址类型, subType:string, [ipaddress#ipaddress,hostname#hostname]*/
            "hostName":  "test",
            /*opt, string, 主机名称, range:[,], dep:and,{$.WhiteLightAlarmList[*].addressingFormatType,eq,hostname}, desc:当addressingFormatType为hostname时有效*/
            "ipAddress":  "test",
            /*opt, string, Ipv4地址, range:[,], dep:and,{$.WhiteLightAlarmList[*].addressingFormatType,eq,ipv4}, desc:当addressingFormatType为ipaddress且ip地址为ipv4时有效*/
            "ipv6Address":  "test",
            /*opt, string, Ipv6地址, range:[,], dep:and,{$.WhiteLightAlarmList[*].addressingFormatType,eq,ipv6}, desc:当addressingFormatType为ipaddress且ip地址为ipv6时有效*/
            "managePortNo":  1
            /*opt, int, 管理端口, range:[,], step:, unit:, unitType:*/
        }
    ]
}

42.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

43. 获取白光灯报警输出通道

43.1 命令

GET /ISAPI/Event/triggers/notifications/channels/<IoTChannelID>/whiteLightAlarm?format=json

43.2 输入参数

无

43.3 输出参数

{
    "WhiteLightAlarm": {
    /*ro, req, object, 白光灯报警表单*/
        "channelID":  1,
        /*ro, req, int, 通道ID, range:[,], step:, unit:, unitType:*/
        "durationTime":  1,
        /*ro, req, int, 白光灯闪烁时间, range:[1,60], step:1, unit:s, unitType:时间, desc:缺省值15秒，最小单位1秒*/
        "frequency":  "medium",
        /*ro, req, enum, 白光灯闪烁频率, subType:string, [high#高,medium#中,low#低], desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低三挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
        "brightness":  1,
        /*ro, opt, int, 白光灯亮度, range:[1,100], step:1, unit:, unitType:无, desc:缺省值50，最小单位为1*/
        "TimeRangeList": [
        /*ro, opt, array, 报警输出时间列表, subType:object, range:[,]*/
            {
                "week":  1,
                /*ro, req, enum, 星期 , subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
                "TimeRange": [
                /*ro, opt, array, 时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*ro, req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "00:00:00+08:00",
                        /*ro, req, time, 开始时间, desc:ISO8601 time*/
                        "endTime":  "00:00:00+08:00"
                        /*ro, req, time, 结束时间, desc:ISO8601 time*/
                    }
                ]
            }
        ],
        "HolidayBlockList": {
        /*ro, opt, object, 假日时间列表*/
            "TimeRange": [
            /*ro, opt, array, 时间段, subType:object, range:[,]*/
                {
                    "id":  1,
                    /*ro, req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                    "beginTime":  "00:00:00+08:00",
                    /*ro, req, time, 开始时间, desc:ISO8601 time*/
                    "endTime":  "00:00:00+08:00"
                    /*ro, req, time, 结束时间, desc:ISO8601 time*/
                }
            ]
        },
        "addressingFormatType":  "ipaddress",
        /*ro, opt, enum, 地址类型, subType:string, [ipaddress#ipaddress,hostname#hostname]*/
        "hostName":  "test",
        /*ro, opt, string, 主机名称, range:[,], dep:and,{$.WhiteLightAlarm.addressingFormatType,eq,hostname}, desc:当addressingFormatType为hostname时有效*/
        "ipAddress":  "test",
        /*ro, opt, string, Ipv4地址, range:[,], dep:and,{$.WhiteLightAlarm.addressingFormatType,eq,ipv4}, desc:当addressingFormatType为ipaddress且ip地址为ipv4时有效*/
        "ipv6Address":  "test",
        /*ro, opt, string, Ipv6地址, range:[,], dep:and,{$.WhiteLightAlarm.addressingFormatType,eq,ipv6}, desc:当addressingFormatType为ipaddress且ip地址为ipv6时有效*/
        "managePortNo":  1
        /*ro, opt, int, 管理端口, range:[,], step:, unit:, unitType:*/
    }
}

44. 配置白光灯报警输出通道

44.1 命令

PUT /ISAPI/Event/triggers/notifications/channels/<IoTChannelID>/whiteLightAlarm?format=json

44.2 输入参数

{
    "WhiteLightAlarm": {
    /*req, object, 白光灯报警表单*/
        "channelID":  1,
        /*req, int, 通道ID, range:[,], step:, unit:, unitType:*/
        "durationTime":  1,
        /*req, int, 白光灯闪烁时间, range:[1,60], step:1, unit:s, unitType:时间, desc:缺省值15秒，最小单位1秒*/
        "frequency":  "medium",
        /*req, enum, 白光灯闪烁频率, subType:string, [high#高,medium#中,low#低], desc:high-高：0.5秒闪/0.5秒灭；medium-中：0.8秒闪/0.8秒灭；low-低：1秒闪/1秒灭，缺省值为中（IPC默认值）；闪烁时间修改为高中低三挡，分别：200ms亮200ms暗，400ms亮400ms暗，600ms亮600ms暗；闪默200ms，闪烁时间默认15S缺省值为高（球机默认值）*/
        "brightness":  1,
        /*opt, int, 白光灯亮度, range:[1,100], step:1, unit:, unitType:无, desc:缺省值50，最小单位为1*/
        "TimeRangeList": [
        /*opt, array, 报警输出时间列表, subType:object, range:[,]*/
            {
                "week":  1,
                /*req, enum, 星期 , subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期日]*/
                "TimeRange": [
                /*opt, array, 时间段, subType:object, range:[,]*/
                    {
                        "id":  1,
                        /*req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                        "beginTime":  "00:00:00+08:00",
                        /*req, time, 开始时间, desc:ISO8601 time*/
                        "endTime":  "00:00:00+08:00"
                        /*req, time, 结束时间, desc:ISO8601 time*/
                    }
                ]
            }
        ],
        "HolidayBlockList": {
        /*opt, object, 假日时间列表*/
            "TimeRange": [
            /*opt, array, 时间段, subType:object, range:[,]*/
                {
                    "id":  1,
                    /*req, int, 时间段ID, range:[,], step:, unit:, unitType:*/
                    "beginTime":  "00:00:00+08:00",
                    /*req, time, 开始时间, desc:ISO8601 time*/
                    "endTime":  "00:00:00+08:00"
                    /*req, time, 结束时间, desc:ISO8601 time*/
                }
            ]
        },
        "addressingFormatType":  "ipaddress",
        /*opt, enum, 地址类型, subType:string, [ipaddress#ipaddress,hostname#hostname]*/
        "hostName":  "test",
        /*opt, string, 主机名称, range:[,], dep:and,{$.WhiteLightAlarm.addressingFormatType,eq,hostname}, desc:当addressingFormatType为hostname时有效*/
        "ipAddress":  "test",
        /*opt, string, Ipv4地址, range:[,], dep:and,{$.WhiteLightAlarm.addressingFormatType,eq,ipv4}, desc:当addressingFormatType为ipaddress且ip地址为ipv4时有效*/
        "ipv6Address":  "test",
        /*opt, string, Ipv6地址, range:[,], dep:and,{$.WhiteLightAlarm.addressingFormatType,eq,ipv6}, desc:当addressingFormatType为ipaddress且ip地址为ipv6时有效*/
        "managePortNo":  1
        /*opt, int, 管理端口, range:[,], step:, unit:, unitType:*/
    }
}

44.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

45. 获取软IO能力集

45.1 命令

GET /ISAPI/System/IO/softInputs/capabilities?format=json

45.2 输入参数

无

45.3 输出参数

{
    "id": {
    /*ro, opt, object, SoftIO的起始IO号和结束IO号*/
        "@min":  1,
        /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
        "@max":  64
        /*ro, req, int, 最大值, range:[,], step:, unit:, unitType:*/
    },
    "enabled":  "true,false",
    /*ro, req, string, 使能范围, range:[,]*/
    "name": {
    /*ro, opt, object, SoftIO 的名称最大长度和最小长度*/
        "@min":  1,
        /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
        "@max":  32
        /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
    },
    "triggerType": {
    /*ro, opt, object, 触发方式*/
        "@opt":  "start,stop",
        /*ro, opt, string, 触发方式, range:[,]*/
        "#text":  "start"
        /*ro, req, string, 触发方式, range:[,]*/
    }
}

46. 获取软IO单个配置

46.1 命令

GET /ISAPI/System/IO/softInputs/<IOInputID>?format=json

46.2 输入参数

无

46.3 输出参数

{
    "singleSoftIO": {
    /*ro, opt, object, 软IO单个配置*/
        "enabled":  true,
        /*ro, req, bool, SoftIO是否启用*/
        "name":  "Soft IO name"
        /*ro, opt, string, SoftIO的名称描述, range:[,]*/
    }
}

47. 配置软IO单个配置

47.1 命令

PUT /ISAPI/System/IO/softInputs/<IOInputID>?format=json

47.2 输入参数

{
    "singleSoftIO": {
    /*ro, opt, object, 软IO单个配置*/
        "enabled":  true,
        /*ro, req, bool, SoftIO是否启用*/
        "name":  "Soft IO name"
        /*ro, opt, string, SoftIO的名称描述, range:[,]*/
    }
}

47.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

48. 配置软IO报警输入触发

48.1 命令

PUT /ISAPI/System/IO/softInputs/trigger?format=json

48.2 输入参数

{
    "SoftIO": [
    /*opt, array, 软IO报警输入触发, subType:object, range:[,]*/
        {
            "id":  1,
            /*req, int, SoftIO号, range:[,], step:, unit:, unitType:*/
            "triggerType":  "start"
            /*req, string, start-开始, range:[,]*/
        }
    ]
}

48.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

49. 获取传感器端口能力集

49.1 命令

GET /ISAPI/System/Sensor/ports/capabilities

49.2 输入参数

无

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SensorPortList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, array, 传感器端口列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <capChannelID>
    <!--ro, opt, string, 抓拍通道号, range:[,]-->1
  </capChannelID>
  <capInterval>
    <!--ro, opt, int, 抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </capInterval>
  <SensorPort>
    <!--ro, opt, object, 传感器端口-->
    <id>
      <!--ro, req, string, 索引, range:[,]-->test
    </id>
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <name min="1" max="32">
      <!--ro, req, string, 端口名称, range:[1,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </name>
    <samplingTime min="1" max="300">
      <!--ro, req, int, 采样时间, range:[1,300], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </samplingTime>
    <AnalogRegions>
      <!--ro, opt, object, 模拟量传感器-->
      <type opt="temperature, humidity, wind speed, gas, AC voltage, AC current, DC voltage, DC current, water pressure, pressure transmitter, flow transmitter">
        <!--ro, req, enum, 类型, subType:string, [temperature#温度传感器,humidity#湿度传感器,wind speed#风速传感器,gas#气体传感器,AC voltage#交流电压传感器,AC current#交流电流传感器,DC voltage#直流电压传感器,DC current#直流电流传感器,water pressure#水压传感器,pressure transmitter#压力变送器,flow transmitter#流量变送器], attr:opt{req, string, 取值范围, range:[,]}-->temperature
      </type>
      <maxValue min="20000" max="20000">
        <!--ro, req, int, 最大值, range:[0,20000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </maxValue>
      <minValue min="20000" max="20000">
        <!--ro, req, int, 最小值, range:[0,20000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </minValue>
      <sensitivity min="0.001" max="1.000">
        <!--ro, req, float, 灵敏度, range:[0.001,1.000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.000
      </sensitivity>
      <unit min="0" max="3">
        <!--ro, opt, enum, 单位, subType:string, [℃#摄氏度,V#伏特,mA#毫安], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->V
      </unit>
      <Region>
        <!--ro, opt, object, 传感器信息-->
        <id>
          <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <regionMin min="20000" max="20000">
          <!--ro, req, int, 最小区域, range:[0,20000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </regionMin>
        <regionMax min="20000" max="20000">
          <!--ro, req, int, 最大区域, range:[0,20000], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </regionMax>
        <normalOrExcept min="1" max="2">
          <!--ro, req, enum, 传感器状态, subType:int, [1#正常,2#除外], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </normalOrExcept>
      </Region>
    </AnalogRegions>
    <ACTerminal>
      <!--ro, opt, object, 上电端子-->
      <isPowerOn opt="true,false">
        <!--ro, req, bool, 上电端子是否通电, attr:opt{req, string, 取值范围, range:[,]}-->true
      </isPowerOn>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 上电端子状态, subType:int, [1#正常,2#除外], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </ACTerminal>
    <SocketRegions>
      <!--ro, opt, object, 上电插座-->
      <CurrentRegion>
        <!--ro, opt, object, 上电插座当前区域-->
        <id>
          <!--ro, req, int, 上电插座当前区域ID, range:[,], step:, unit:, unitType:-->1
        </id>
        <regionMin>
          <!--ro, req, int, 上电插座当前区域最小值, range:[,], step:, unit:, unitType:-->1
        </regionMin>
        <regionMax>
          <!--ro, req, int, 上电插座当前区域最大值, range:[,], step:, unit:, unitType:-->1
        </regionMax>
        <normalOrExcept min="1" max="2">
          <!--ro, req, enum, 上电插座当前区域状态, subType:int, [1#正常,2#除外], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </normalOrExcept>
      </CurrentRegion>
      <VoltageRegion>
        <!--ro, opt, object, 插座电压区域-->
        <id>
          <!--ro, req, int, 插座电压区域ID, range:[,], step:, unit:, unitType:-->1
        </id>
        <regionMin>
          <!--ro, req, int, 插座电压区域最小值, range:[,], step:, unit:, unitType:-->1
        </regionMin>
        <regionMax>
          <!--ro, req, int, 插座电压区域最大值, range:[,], step:, unit:, unitType:-->1
        </regionMax>
        <normalOrExcept min="1" max="2">
          <!--ro, req, enum, 插座电压区域状态, subType:int, [1#正常,2#除外], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </normalOrExcept>
      </VoltageRegion>
      <PowerStatus>
        <!--ro, opt, object, 插座电力状态-->
        <isPowerOn opt="true,false">
          <!--ro, req, bool, 插座电力是否通电, attr:opt{req, string, 取值范围, range:[,]}-->true
        </isPowerOn>
        <normalOrExcept min="1" max="2">
          <!--ro, req, enum, 插座电力状态, subType:int, [1#正常,2#除外], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
        </normalOrExcept>
      </PowerStatus>
    </SocketRegions>
  </SensorPort>
</SensorPortList>

50. 获取传感器单个端口配置

50.1 命令

GET /ISAPI/System/Sensor/ports/<portID>

50.2 输入参数

无

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SensorPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 传感器端口节点, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, ID, range:[,]-->test
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <name min="1" max="32">
    <!--ro, req, string, 名称, range:[1,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </name>
  <samplingTime min="1" max="300">
    <!--ro, req, int, 采样时间, range:[1,300], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </samplingTime>
  <AnalogRegions>
    <!--ro, opt, object, 模拟量传感器-->
    <type opt="temperature, humidity, wind speed, gas, AC voltage, AC current, DC voltage, DC current, water pressure, pressure transmitter, flow transmitter">
      <!--ro, req, enum, 模拟量传感器类型, subType:string, [temperature#温度,humidity#湿度,wind speed#风速,gas#气体,AC voltage#交流电压,AC current#交流电流,DC voltage#直流电压,DC current#直流电流,water pressure#水压,pressure transmitter#压力变送器,flow transmitter#流量变送器], attr:opt{req, string, 取值范围, range:[,]}-->temperature
    </type>
    <maxValue min="20000" max="20000">
      <!--ro, req, int, 模拟量传感器最大值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </maxValue>
    <minValue min="20000" max="20000">
      <!--ro, req, int, 模拟量传感器最小值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </minValue>
    <sensitivity min="0.001" max="1">
      <!--ro, req, float, 模拟量传感器敏感度, range:[0.001,1], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.001
    </sensitivity>
    <unit min="0" max="3">
      <!--ro, opt, string, 模拟量传感器单位, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->℃
    </unit>
    <Region>
      <!--ro, opt, object, 传感器信息-->
      <id>
        <!--ro, req, int, 传感器ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <regionMin min="20000" max="20000">
        <!--ro, req, int, 传感器最小值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </regionMin>
      <regionMax min="20000" max="20000">
        <!--ro, req, int, 传感器最大值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </regionMax>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 传感器状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </Region>
  </AnalogRegions>
  <ACTerminal>
    <!--ro, opt, object, 上电端子-->
    <isPowerOn opt="true,false">
      <!--ro, req, enum, 上电端子是否通电, subType:bool, [true#on,false#off], attr:opt{req, string, 取值范围, range:[,]}-->true
    </isPowerOn>
    <normalOrExcept min="1" max="2">
      <!--ro, req, enum, 上电端子状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </normalOrExcept>
  </ACTerminal>
  <SocketRegions>
    <!--ro, opt, object, 上电插座-->
    <CurrentRegion>
      <!--ro, opt, object, 上电插座当前区域-->
      <id>
        <!--ro, req, int, 上电插座当前区域ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <regionMin>
        <!--ro, req, int, 上电插座当前区域最小值, range:[,], step:, unit:, unitType:-->1
      </regionMin>
      <regionMax>
        <!--ro, req, int, 上电插座当前区域最大值, range:[,], step:, unit:, unitType:-->1
      </regionMax>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 上电插座当前区域状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </CurrentRegion>
    <VoltageRegion>
      <!--ro, opt, object, 插座电压区域-->
      <id>
        <!--ro, req, int, 插座电压区域ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <regionMin>
        <!--ro, req, int, 插座电压区域最小值, range:[,], step:, unit:, unitType:-->1
      </regionMin>
      <regionMax>
        <!--ro, req, int, 插座电压区域最大值, range:[,], step:, unit:, unitType:-->1
      </regionMax>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 插座电压区域状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </VoltageRegion>
    <PowerStatus>
      <!--ro, opt, object, 插座电力状态-->
      <isPowerOn opt="true,false">
        <!--ro, req, enum, 插座电力是否通电, subType:bool, [true#on,false#false], attr:opt{req, string, 取值范围, range:[,]}-->true
      </isPowerOn>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 插座电力状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </PowerStatus>
  </SocketRegions>
</SensorPort>

51. 配置传感器单个端口配置

51.1 命令

PUT /ISAPI/System/Sensor/ports/<portID>

51.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SensorPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 传感器端口节点, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, ID, range:[,]-->test
  </id>
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <name min="1" max="32">
    <!--ro, req, string, 名称, range:[1,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </name>
  <samplingTime min="1" max="300">
    <!--ro, req, int, 采样时间, range:[1,300], step:, unit:s, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </samplingTime>
  <AnalogRegions>
    <!--ro, opt, object, 模拟量传感器-->
    <type opt="temperature, humidity, wind speed, gas, AC voltage, AC current, DC voltage, DC current, water pressure, pressure transmitter, flow transmitter">
      <!--ro, req, enum, 模拟量传感器类型, subType:string, [temperature#温度,humidity#湿度,wind speed#风速,gas#气体,AC voltage#交流电压,AC current#交流电流,DC voltage#直流电压,DC current#直流电流,water pressure#水压,pressure transmitter#压力变送器,flow transmitter#流量变送器], attr:opt{req, string, 取值范围, range:[,]}-->temperature
    </type>
    <maxValue min="20000" max="20000">
      <!--ro, req, int, 模拟量传感器最大值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </maxValue>
    <minValue min="20000" max="20000">
      <!--ro, req, int, 模拟量传感器最小值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </minValue>
    <sensitivity min="0.001" max="1">
      <!--ro, req, float, 模拟量传感器敏感度, range:[0.001,1], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0.001
    </sensitivity>
    <unit min="0" max="3">
      <!--ro, opt, string, 模拟量传感器单位, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->℃
    </unit>
    <Region>
      <!--ro, opt, object, 传感器信息-->
      <id>
        <!--ro, req, int, 传感器ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <regionMin min="20000" max="20000">
        <!--ro, req, int, 传感器最小值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </regionMin>
      <regionMax min="20000" max="20000">
        <!--ro, req, int, 传感器最大值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </regionMax>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 传感器状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </Region>
  </AnalogRegions>
  <ACTerminal>
    <!--ro, opt, object, 上电端子-->
    <isPowerOn opt="true,false">
      <!--ro, req, enum, 上电端子是否通电, subType:bool, [true#on,false#off], attr:opt{req, string, 取值范围, range:[,]}-->true
    </isPowerOn>
    <normalOrExcept min="1" max="2">
      <!--ro, req, enum, 上电端子状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </normalOrExcept>
  </ACTerminal>
  <SocketRegions>
    <!--ro, opt, object, 上电插座-->
    <CurrentRegion>
      <!--ro, opt, object, 上电插座当前区域-->
      <id>
        <!--ro, req, int, 上电插座当前区域ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <regionMin>
        <!--ro, req, int, 上电插座当前区域最小值, range:[,], step:, unit:, unitType:-->1
      </regionMin>
      <regionMax>
        <!--ro, req, int, 上电插座当前区域最大值, range:[,], step:, unit:, unitType:-->1
      </regionMax>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 上电插座当前区域状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </CurrentRegion>
    <VoltageRegion>
      <!--ro, opt, object, 插座电压区域-->
      <id>
        <!--ro, req, int, 插座电压区域ID, range:[,], step:, unit:, unitType:-->1
      </id>
      <regionMin>
        <!--ro, req, int, 插座电压区域最小值, range:[,], step:, unit:, unitType:-->1
      </regionMin>
      <regionMax>
        <!--ro, req, int, 插座电压区域最大值, range:[,], step:, unit:, unitType:-->1
      </regionMax>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 插座电压区域状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </VoltageRegion>
    <PowerStatus>
      <!--ro, opt, object, 插座电力状态-->
      <isPowerOn opt="true,false">
        <!--ro, req, enum, 插座电力是否通电, subType:bool, [true#on,false#false], attr:opt{req, string, 取值范围, range:[,]}-->true
      </isPowerOn>
      <normalOrExcept min="1" max="2">
        <!--ro, req, enum, 插座电力状态, subType:string, [1#normal,2#exception], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </normalOrExcept>
    </PowerStatus>
  </SocketRegions>
</SensorPort>

51.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

52. 配置传感器远程控制端口

52.1 命令

PUT /ISAPI/System/Sensor/ports/<portID>/<switch>

52.2 输入参数

无

52.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


设备维护管理

1. 获取USB调试日志导出使能参数

1.1 命令

GET /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json

1.2 输入参数

无

1.3 输出参数

{
    "debugLogOutput":  true,
    /*ro, req, bool, 调试日志导出使能*/
    "recordToUSBEnabled":  true,
    /*ro, opt, bool, 允许录像到USB存储使能, desc:慧影科技项目添加*/
    "backupToUSBEnabled":  true
    /*ro, opt, bool, 允许录像备份到USB存储使能, desc:慧影科技项目添加*/
}

2. 配置USB调试日志导出使能参数

2.1 命令

PUT /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json

2.2 输入参数

{
    "debugLogOutput":  true,
    /*req, bool, 调试日志导出使能*/
    "recordToUSBEnabled":  true,
    /*opt, bool, 允许录像到USB存储使能, desc:慧影科技项目添加*/
    "backupToUSBEnabled":  true
    /*opt, bool, 允许录像备份到USB存储使能, desc:慧影科技项目添加*/
}

2.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

3. 获取USB抓包过滤配置能力

3.1 命令

GET /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json

3.2 输入参数

无

3.3 输出参数

{
    "enable":  "true,false",
    /*ro, req, string, 抓包使能, range:[,]*/
    "filterCondition": {
    /*ro, req, object, 抓包过滤条件*/
        "interfaceNo": {
        /*ro, opt, object, 网卡号能力参数, desc:从1开始，不填默认主网卡*/
            "@min ":  1,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  16,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  1
            /*ro, opt, int, 网卡号, range:[,], step:, unit:, unitType:*/
        },
        "ipAddress": {
        /*ro, opt, object, 设备Ipv4地址能力参数*/
            "@min ":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  32,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  "10.11.12.13"
            /*ro, opt, string, 设备Ipv4地址, range:[,]*/
        },
        "ipv6Address": {
        /*ro, opt, object, 设备Ipv6地址能力参数*/
            "@min ":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  128,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  "910A:2222:5498:8475:1111:3900:2020"
            /*ro, opt, string, 设备Ipv6地址, range:[,]*/
        },
        "protocol": {
        /*ro, opt, object, 协议类型能力参数, desc:tcp-tcp协议,udp-udp协议, 最大长度为32*/
            "@opt ":  "tcp,udp",
            /*ro, opt, string, 选项, range:[,]*/
            "#text":  "tcp"
            /*ro, opt, enum, 协议类型, subType:string, [tcp#tcp协议,udp#udp协议]*/
        },
        "portNo": {
        /*ro, opt, object, 设备端口号能力参数*/
            "@min":  0,
            /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
            "@max":  65535,
            /*ro, opt, int, 最大值, range:[,], step:, unit:, unitType:*/
            "#text":  80
            /*ro, opt, int, 设备端口号, range:[,], step:, unit:, unitType:*/
        }
    },
    "status": {
    /*ro, opt, object, 当前状态能力参数*/
        "@opt ":  "capturing,noCapture",
        /*ro, opt, string, 选项, range:[,]*/
        "#text":  "noCapture"
        /*ro, req, enum, 当前状态, subType:string, [capturing#抓包中,noCapture#未抓包]*/
    },
    "packageSize": {
    /*ro, opt, object, 已经抓包的数据大小能力参数, desc:单位KB*/
        "@min":  0,
        /*ro, opt, int, 最小值, range:[,], step:, unit:, unitType:*/
        "@max":  4294967295,
        /*ro, opt, float, 最大值, range:[,], step:, unit:, unitType:*/
        "#text":  0
        /*ro, opt, int, 已经抓包的数据大小, range:[,], step:, unit:, unitType:*/
    }
}

4. 获取USB抓包过滤配置

4.1 命令

GET /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage?format=json

4.2 输入参数

无

4.3 输出参数

{
    "enable":  true,
    /*ro, req, bool, 抓包使能*/
    "filterCondition": {
    /*ro, req, object, 抓包过滤条件*/
        "interfaceNo":  1,
        /*ro, opt, int, 网卡号, range:[,], step:, unit:, unitType:, desc:从1开始，不填默认主网卡*/
        "ipAddress":  "172.6.64.7",
        /*ro, opt, string, Ipv4地址, range:[,], desc:最大长度为32*/
        "ipv6Address":  "test",
        /*ro, opt, string, Ipv6地址, range:[,], desc:最大长度为128*/
        "protocol":  "tcp,udp",
        /*ro, opt, string, 协议类型, range:[,], desc:tcp-tcp协议,udp-udp协议,最大长度为32*/
        "portNo":  80
        /*ro, opt, int, 端口号, range:[,], step:, unit:, unitType:*/
    },
    "status":  "capturing",
    /*ro, req, enum, 当前状态, subType:string, [capturing#抓包中,noCapture#未抓包], desc:最大长度为32*/
    "packageSize":  0
    /*ro, opt, int, 已经抓包的数据大小, range:[,], step:, unit:, unitType:, desc:单位KB*/
}

5. 设置USB抓包过滤配置

5.1 命令

PUT /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage?format=json

5.2 输入参数

{
    "enable":  true
    /*req, bool, 抓包使能, desc:true-开始抓包，false-结束抓包*/
}

5.3 输出参数

{
    "requestURL":  "test",
    /*ro, opt, string, URI, range:[,]*/
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态），否则必须返回*/
    "statusString":  "test",
    /*ro, opt, string, 状态描述, range:[,], desc:无法用ok表示时（ok表示成功且无特殊状态），否则必须返回*/
    "subStatusCode":  "test",
    /*ro, opt, string, 子状态码, range:[,], desc:无法用ok表示（ok表示成功且无特殊状态），否则必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, req, string, 错误信息, range:[,], desc:对errorCode的解释,当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

6. 获取在线升级能力

6.1 命令

GET /ISAPI/System/onlineUpgrade/capabilities

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OnlineUpgradeCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 在线升级, attr:version{req, string, 协议版本, range:[,]}-->
  <firmwareNum max="10">
    <!--ro, req, int, 可在线升级的包数量, range:[,], step:, unit:, unitType:, attr:max{req, int, 可在线升级的包数量最大值, range:[,], step:, unit:, unitType:}-->1
  </firmwareNum>
  <firmwareCode max="256">
    <!--ro, req, int, 识别码最大长度, range:[,], step:, unit:, unitType:, attr:max{req, int, 识别码最大长度最大值, range:[,], step:, unit:, unitType:}-->1
  </firmwareCode>
  <firmwareVersion max="64">
    <!--ro, req, int, 版本最大长度, range:[,], step:, unit:, unitType:, attr:max{req, int, 版本最大长度最大值, range:[,], step:, unit:, unitType:}-->1
  </firmwareVersion>
  <firmwareCodeNumOnce max="10">
    <!--ro, req, int, 单次可获取的识别码的最大个数, range:[,], step:, unit:, unitType:, attr:max{req, int, 单次可获取的识别码的最大个数最大值, range:[,], step:, unit:, unitType:}-->1
  </firmwareCodeNumOnce>
  <upgradePercent min="0" max="100">
    <!--ro, req, int, 升级进度百分比能力, range:[,], step:, unit:, unitType:, attr:min{req, int, 升级进度百分比能力最小值, range:[,], step:, unit:, unitType:},max{req, int, 升级进度百分比能力最大值, range:[,], step:, unit:, unitType:}-->1
  </upgradePercent>
  <Version>
    <!--ro, req, object, 升级包版本信息-->
    <newVersion max="64">
      <!--ro, req, string, 新升级包版本号信息, range:[,], attr:max{req, int, 新升级包版本号信息长度最大值, range:[,], step:, unit:, unitType:}-->test
    </newVersion>
    <changeLog max="64">
      <!--ro, req, string, 新升级包版本日志信息, range:[,], attr:max{req, int, 新升级包版本日志信息长度最大值, range:[,], step:, unit:, unitType:}-->test
    </changeLog>
  </Version>
  <rebootAfterUpgrade>
    <!--ro, opt, enum, 设备重启后是否更新, subType:string, [auto#自动更新,manual#手动更新]-->auto
  </rebootAfterUpgrade>
  <DeviceParameter>
    <!--ro, opt, object, 在线升级参数-->
    <isSupportAutoDownloadPackage>
      <!--ro, opt, bool, 自动下载升级包是否支持-->true
    </isSupportAutoDownloadPackage>
    <notSupportAutoUpgrade>
      <!--ro, opt, bool, 自动下载升级包并升级是否不再支持, desc:对应url：PUT /ISAPI/System/onlineUpgrade/upgrade-->true
    </notSupportAutoUpgrade>
    <isSupportTimingUpgrade>
      <!--ro, opt, bool, 定时升级是否支持-->true
    </isSupportTimingUpgrade>
  </DeviceParameter>
  <ManualDownloadPackage>
    <!--ro, opt, string, 手动下载升级包, range:[,]-->test
    <supportOperation opt="start,cancel,pause,resume">
      <!--ro, opt, enum, 支持的操作, subType:string, [start#开始,cancel#取消,pause#中断,resume#继续], attr:opt{req, string, 支持的操作取值范围, range:[,]}-->start
    </supportOperation>
  </ManualDownloadPackage>
  <isSupportIgnoreCurrentVersion>
    <!--ro, opt, bool, 是否支持忽略当前版本-->true
  </isSupportIgnoreCurrentVersion>
  <UpgradePackageTask>
    <!--ro, opt, object, 是否支持下发升级任务, desc:返回本节点表示支持/ISAPI/System/onlineUpgrade/task?format=json、/ISAPI/System/onlineUpgrade/status/<ID>-->
    <isSupportUpgradeModules>
      <!--ro, opt, bool, 设备是否支持升级子模块-->true
    </isSupportUpgradeModules>
    <isSupportUpgradeChannels>
      <!--ro, opt, bool, 设备是否支持升级子通道-->true
    </isSupportUpgradeChannels>
  </UpgradePackageTask>
</OnlineUpgradeCap>

7. 获取在线升级设备参数配置

7.1 命令

GET /ISAPI/System/onlineUpgrade/deviceParameter?format=json

7.2 输入参数

无

7.3 输出参数

{
    "OnlineUpgradeParameter": {
    /*ro, req, object, 在线升级参数信息*/
        "autoDownloadPackage":  true,
        /*ro, req, bool, 是否启用自动下载升级包*/
        "timingUpgrade":  true,
        /*ro, opt, bool, 是否启用定时升级*/
        "upgradeTime":  "00:00:00"
        /*ro, opt, time, 升级时间, dep:and,{$.OnlineUpgradeParameter.timingUpgrade,eq,trur}*/
    }
}

8. 配置在线升级设备参数

8.1 命令

PUT /ISAPI/System/onlineUpgrade/deviceParameter?format=json

8.2 输入参数

{
    "OnlineUpgradeParameter": {
    /*req, object, 在线升级参数信息*/
        "autoDownloadPackage":  true,
        /*req, bool, 是否启用自动下载升级包*/
        "timingUpgrade":  true,
        /*opt, bool, 是否启用定时升级*/
        "upgradeTime":  "00:00:00"
        /*opt, time, 升级时间, dep:and,{$.OnlineUpgradeParameter.timingUpgrade,eq,true}*/
    }
}

8.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

9. 配置在线升级继续下载升级包

9.1 命令

PUT /ISAPI/System/onlineUpgrade/downloadPackage/resume?format=json

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

10. 获取在线升级下载升级包进度

10.1 命令

GET /ISAPI/System/onlineUpgrade/downloadPackage/status?format=json

10.2 输入参数

无

10.3 输出参数

{
    "DownloadPackageStatus": {
    /*ro, req, object, 下载升级包状态*/
        "status":  "notDownload",
        /*ro, req, enum, 下载状态, subType:string, [notDownload#未下载,downloading#下载中,pause#暂停,finish#完成,incorrectPackage#升级包格式不正确,hdOperationFailed#硬盘操作失败,downloadFailed#网络下载失败(下载过程中出现的错误都归于此)]*/
        "total":  0.0,
        /*ro, opt, float, 升级包总大小, range:[,], step:, unit:, unitType:, desc:保留一位小数 单位MB*/
        "remain":  0.0,
        /*ro, opt, float, 剩余容量, range:[,], step:, unit:, unitType:, desc:保留一位小数 单位MB*/
        "speed":  0.0,
        /*ro, opt, float, 下载速度, range:[,], step:, unit:, unitType:, desc:保留一位小数 单位MB*/
        "remainTime":  0,
        /*ro, opt, int, 估计剩余时间, range:[,], step:, unit:s, unitType:时间*/
        "progress":  0
        /*ro, req, int, 进度, range:[0,100], step:, unit:, unitType:*/
    }
}

11. 获取是否有在线升级更新版本

11.1 命令

GET /ISAPI/System/onlineUpgrade/judgeVersion

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<JudgeVersionResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取是否更新版本, attr:version{req, string, 协议版本, range:[,]}-->
  <recommenUpgrade>
    <!--ro, req, bool, 是否建议更新版本-->true
  </recommenUpgrade>
</JudgeVersionResult>

12. 配置开启手动触发在线升级

12.1 命令

PUT /ISAPI/System/onlineUpgrade/manualTrigger?format=json

12.2 输入参数

{
    "taskID":  "test"
    /*ro, req, string, 任务id, range:[1,64], desc:由创建升级任务时生成,对应接口/ISAPI/System/onlineUpgrade/task?format=json*/
}

12.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

13. 获取在线升级服务器状态

13.1 命令

GET /ISAPI/System/onlineUpgrade/server

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OnlineUpgradeServer xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 在线升级服务器状态, attr:version{req, string, 协议版本, range:[,]}-->
  <connectStatus>
    <!--ro, req, bool, 升级服务器连接状态, desc:false-断开连接,true-连接中-->true
  </connectStatus>
</OnlineUpgradeServer>

14. 获取在线升级状态

14.1 命令

GET /ISAPI/System/onlineUpgrade/status

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OnlineUpgradeStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 在线升级状态, attr:version{req, string, 协议版本, range:[,]}-->
  <status>
    <!--ro, req, enum, 在线升级状态, subType:string, [notUpgrade#未升级,upgrading#升级中,successful#成功升级,languageMismatch#语言不匹配,writeFlashError#写Flase错误,packageTypeMismatch#升级包类型不匹配,packageVersionMismatch#升级包版本不匹配,netUnreachable#网络断开,unknownError#未知错误,engineVersionMismatch#升级包引擎版本不匹配]-->notUpgrade
  </status>
  <percent>
    <!--ro, req, int, 当前升级进度百分比, range:[0,100], step:, unit:, unitType:-->1
  </percent>
</OnlineUpgradeStatus>

15. 获取单个在线升级任务进度

15.1 命令

GET /ISAPI/System/onlineUpgrade/status/task/<taskID>

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<OnlineUpgradeStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 在线升级状态, attr:version{req, string, 协议版本, range:[,]}-->
  <status>
    <!--ro, req, enum, 在线升级状态, subType:string, [notUpgrade#未升级,upgrading#升级中,successful#成功升级,languageMismatch#语言不匹配,writeFlashError#写Flase错误,packageTypeMismatch#升级包类型不匹配,packageVersionMismatch#升级包版本不匹配,netUnreachable#网络断开,unknownError#未知错误,waitManualTrigger#等待手动触发升级（下发任务时设置了延时升级并且还未手动触发时返回该状态）]-->notUpgrade
  </status>
  <percent>
    <!--ro, req, int, 当前升级进度百分比, range:[0,100], step:, unit:, unitType:-->1
  </percent>
  <taskID>
    <!--ro, opt, string, 任务ID, range:[1,64], desc:由创建升级任务时生成,对应接口/ISAPI/System/onlineUpgrade/task?format=json-->test
  </taskID>
  <moudleType>
    <!--ro, opt, enum, 组件类型, subType:string, [stationHostAndScreen#采集站升级包(主机+屏幕),stationHost#采集站主机]-->stationHostAndScreen
  </moudleType>
  <packageName>
    <!--ro, opt, string, 升级包名称, range:[1,128]-->ZCS-HIKH1_target_V1.0.1_build201123.zip
  </packageName>
  <taskTime>
    <!--ro, opt, datetime, 下发升级任务的时间-->1970-01-01T00:00:00+08:00
  </taskTime>
</OnlineUpgradeStatus>

16. 获取所有在线升级任务进度

16.1 命令

GET /ISAPI/System/onlineUpgrade/status/task?format=json

16.2 输入参数

无

16.3 输出参数

{
    "onlineUpgradeStatusList": [
    /*ro, req, array, 在线升级状态列表, subType:object, range:[,]*/
        {
            "status":  "notUpgrade",
            /*ro, req, enum, 升级状态, subType:string, [notUpgrade#未升级,upgrading#升级中,successful#成功升级,languageMismatch#语言不匹配,writeFlashError#写Flase错误,packageTypeMismatch#升级包类型不匹配,packageVersionMismatch#升级包版本不匹配,netUnreachable#网络断开,unknownError#未知错误,waitManualTrigger#等待手动触发]*/
            "percent":  0,
            /*ro, req, int, 升级进度百分比, range:[0,100], step:, unit:, unitType:*/
            "taskID":  "test",
            /*ro, opt, string, 任务ID, range:[1,64], desc:由创建升级任务时生成,对应接口/ISAPI/System/onlineUpgrade/task?format=json*/
            "moudleType":  "stationHostAndScreen",
            /*ro, opt, enum, 组件类型, subType:string, [stationHostAndScreen#采集站升级包(主机+屏幕),stationHost#采集站主机]*/
            "packageName":  "ZCS-HIKH1_target_V1.0.1_build201123.zip",
            /*ro, opt, string, 升级包名称, range:[1,128]*/
            "taskTime":  "1970-01-01T00:00:00+08:00"
            /*ro, opt, datetime, 下发升级任务时间*/
        }
    ]
}

17. 下发在线升级任务

17.1 命令

POST /ISAPI/System/onlineUpgrade/task?format=json&security=<security>&iv=<iv>

17.2 输入参数

{
    "PackageDescription": {
    /*req, object, 升级包描述信息*/
        "name":  "DSJ_N3_GML_DEBUG_STD_1.2.0_190524.zip",
        /*opt, string, 升级包名称, range:[1,256]*/
        "URL":  "test",
        /*req, string, 升级包地址, range:[1,1024], desc:下发的认证标识需要放在URL中;升级包上传下载采用的是武汉云存储的对象存储协议，协议版本是2.0; 该节点为空,则以ftpAddress为准;异常情况下:用户URL和ftpAddress两个都下发了,设备以URL为准*/
        "moduleType":  "cardReader",
        /*opt, enum, 设备组件类型, subType:string, [cardReader#读卡器,FPModule#指纹模组,securityModule#安全模块,extendModule#(IO)扩展模块,channelController#通道控制器,IRModule#红外模块,lampModule#指示灯模块,elevatorController#梯控分控制器,FPAlgorithmProgram#读卡器指纹算法程序,dockStationHost#采集站主机,dockStationScreen#采集站屏幕,stationHostAndScreen#采集站主机+屏幕], desc:壁挂式采集站需要支持屏幕和主机单独进行升级*/
        "moduleID":  1,
        /*opt, int, 设备组件编号, range:[,], step:, unit:, unitType:*/
        "channel":  1,
        /*opt, int, 通道号, range:[,], step:, unit:, unitType:, desc:IP通道时使用（升级NVR管理下的数字通道的时候使用）*/
        "customTaskID":  "test",
        /*opt, string, 自定义任务ID, range:[1,128], desc:用于集成用户自定义管理任务ID；若存在该字段，在返回结果中还是复用返回的*/
        "delayedUpgrade":  true,
        /*opt, bool, 是否延迟升级,
        desc:不下发该节点，表示立刻升级；下发该节点，且节点为false，表示延迟升级。
        （交通产品采集站和执法记录仪进行升级的时候，平台会下发采集站和执法记录仪的升级包信息到采集站，执法记录仪在需要的时候，可以直连采集站进行升级，采集站判断对需要立刻升级的升级版本进行立刻升级，需要延迟升级的，后续由用户去选择升级）*/
        "ftpAddress":  "test"
        /*opt, string, ftp地址, range:[,], desc:该节点在URL为空时有效;采集站升级包下发使用改地址，该地址为ftp服务器的升级包地址，格式为ftp:+双斜杠+用户名:密码@IP:端口/文件名，需要敏感信息加密，需要使用地址中的用户名和密码进行认证*/
    }
}

17.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, req, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok",
    /*ro, req, string, 错误信息, range:[,], desc:当statusCode不为1时，解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
    "taskID":  "test"
    /*ro, opt, string, id信息, range:[,], desc:返回升级任务的ID，这个ID可以用于升级任务的状态和进度的查询*/
}

18. 配置设备在线升级

18.1 命令

PUT /ISAPI/System/onlineUpgrade/upgrade

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


存储相关功能

1. 获取存储侦测读写锁配置能力集

1.1 命令

GET /ISAPI/Smart/storageDetection/rwlock/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RWLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <passwd min="1" max="10">
    <!--ro, req, string, 新密码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </passwd>
  <originalPasswd min="1" max="10">
    <!--ro, opt, string, 原始密码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </originalPasswd>
  <SDCardType opt="HIK">
    <!--ro, opt, string, SD卡厂商类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </SDCardType>
</RWLock>

2. 获取存储侦测读写锁参数

2.1 命令

GET /ISAPI/Smart/storageDetection/rwlock

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RWLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <passwd>
    <!--ro, req, string, 新密码, range:[,]-->test
  </passwd>
  <originalPasswd>
    <!--ro, opt, string, 原始密码, range:[,]-->test
  </originalPasswd>
</RWLock>

3. 配置存储侦测读写锁参数

3.1 命令

PUT /ISAPI/Smart/storageDetection/rwlock

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RWLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <passwd>
    <!--req, string, 新密码, range:[,]-->test
  </passwd>
  <originalPasswd>
    <!--opt, string, 原始密码, range:[,]-->test
  </originalPasswd>
</RWLock>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取存储侦测解锁参数能力集

4.1 命令

GET /ISAPI/Smart/storageDetection/unlock/capabilities

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<UnLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 存储侦测解锁参数, attr:version{req, string, 协议版本, range:[,]}-->
  <passwd min="1" max="15">
    <!--ro, req, string, 解锁密码, range:[1,15], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:本字段未做敏感信息加密-->test
  </passwd>
  <SDCardUnlockTime>
    <!--ro, opt, int, SD卡未锁时间, range:[2,3], step:, unit:min, unitType:时间, desc:本字段不支持配置，设备端默认返回3，即表示SD卡未锁时间为3分钟-->3
  </SDCardUnlockTime>
</UnLock>

5. 配置存储侦测解锁参数

5.1 命令

PUT /ISAPI/Smart/storageDetection/unlock

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<UnLock xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <passwd>
    <!--req, string, 解锁密码, range:[,]-->test
  </passwd>
</UnLock>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取存储健康检测参数

6.1 命令

GET /ISAPI/Smart/storageDetection

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StorageDetection xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <healthState>
    <!--ro, opt, enum, 健康状况, subType:string, [good#好,bad#坏,damage#损坏,unknown#未知]-->unknown
  </healthState>
  <badBlocks>
    <!--ro, opt, int, 坏块数, range:[,], step:, unit:, unitType:-->1
  </badBlocks>
  <SDCardState>
    <!--ro, opt, enum, SD卡状态, subType:string, [onLine#在线,offLine#离线,unknown#未知,locked#锁定]-->locked
  </SDCardState>
  <abnormalPowerLoss>
    <!--ro, opt, int, 异常掉电数, range:[,], step:, unit:, unitType:-->1
  </abnormalPowerLoss>
  <remainingLife>
    <!--ro, opt, int, SD卡剩余寿命百分比, range:[0,100], step:, unit:, unitType:-->1
  </remainingLife>
</StorageDetection>

7. 获取存储侦测单通道布防时间参数

7.1 命令

GET /ISAPI/Event/schedules/storageDetections/storageDetections-<channelID>

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->storageDetections-1
  </id>
  <eventType>
    <!--ro, opt, string, 事件类型, range:[,]-->storageDetections
  </eventType>
  <inputIOPortID>
    <!--ro, opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--ro, opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--ro, req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <dayOfWeek>
        <!--ro, opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--ro, opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--ro, opt, object, 布防时间-->
      <TimeRange>
        <!--ro, req, object, 时间段-->
        <beginTime>
          <!--ro, req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--ro, req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

8. 配置存储侦测单通道布防时间参数

8.1 命令

PUT /ISAPI/Event/schedules/storageDetections/storageDetections-<channelID>

8.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Schedule xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 布防时间信息, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,], desc:格式为：事件类型-通道号-->storageDetections-1
  </id>
  <eventType>
    <!--opt, string, 事件类型, range:[,]-->storageDetections
  </eventType>
  <inputIOPortID>
    <!--opt, string, IO输入口, range:[,]-->test
  </inputIOPortID>
  <outputIOPortID>
    <!--opt, string, IO输出口, range:[,]-->test
  </outputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <TimeBlockList size="8">
    <!--req, array, 布防时间列表, subType:object, range:[,], attr:size{opt, int, 最大布防时间段数目, range:[,], step:, unit:, unitType:}-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <dayOfWeek>
        <!--opt, enum, 星期, subType:int, [1#星期一,2#星期二,3#星期三,4#星期四,5#星期五,6#星期六,7#星期天]-->1
      </dayOfWeek>
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </TimeBlockList>
  <HolidayBlockList>
    <!--opt, array, 假日布防时间, subType:object, range:[,]-->
    <TimeBlock>
      <!--opt, object, 布防时间-->
      <TimeRange>
        <!--req, object, 时间段-->
        <beginTime>
          <!--req, time, 开始时间-->10:00:00
        </beginTime>
        <endTime>
          <!--req, time, 结束时间-->10:00:00
        </endTime>
      </TimeRange>
    </TimeBlock>
  </HolidayBlockList>
</Schedule>

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

9. 获取硬盘坏块检测联动配置

9.1 命令

GET /ISAPI/Event/triggers/hdBadBlock

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,]-->hdBadBlock
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->hdBadBlock
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, IO输入ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 数字IO输入ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

10. 配置硬盘坏块检测联动配置

10.1 命令

PUT /ISAPI/Event/triggers/hdBadBlock

10.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 联动参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,]-->hdBadBlock
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->hdBadBlock
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, IO输入ID, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 数字IO输入ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

11. 获取硬盘严重故障检测联动配置

11.1 命令

GET /ISAPI/Event/triggers/severeHDFailure

11.2 输入参数

无

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 事件联动, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,]-->severeHDFailure
  </id>
  <eventType>
    <!--ro, req, string, 事件类型, range:[,]-->severeHDFailure
  </eventType>
  <eventDescription>
    <!--ro, opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--ro, opt, string, 输入IP端口, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--ro, opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--ro, opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--ro, opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--ro, opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--ro, opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--ro, opt, object, 联动方式-->
      <id>
        <!--ro, req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--ro, req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--ro, opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--ro, opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--ro, opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--ro, opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--ro, opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--ro, req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--ro, req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--ro, opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--ro, opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--ro, opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

12. 配置硬盘严重故障检测联动配置

12.1 命令

PUT /ISAPI/Event/triggers/severeHDFailure

12.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EventTrigger xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 事件联动, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,]-->severeHDFailure
  </id>
  <eventType>
    <!--req, string, 事件类型, range:[,]-->severeHDFailure
  </eventType>
  <eventDescription>
    <!--opt, string, 事件描述, range:[,]-->test
  </eventDescription>
  <inputIOPortID>
    <!--opt, string, 输入IP端口, range:[,]-->test
  </inputIOPortID>
  <dynInputIOPortID>
    <!--opt, string, 动态IO输入端口ID, range:[,]-->test
  </dynInputIOPortID>
  <videoInputChannelID>
    <!--opt, string, 视频输入通道ID, range:[,]-->1
  </videoInputChannelID>
  <dynVideoInputChannelID>
    <!--opt, string, 动态视频输入通道ID, range:[,]-->1
  </dynVideoInputChannelID>
  <intervalBetweenEvents>
    <!--opt, int, 事件抓拍间隔, range:[,], step:, unit:s, unitType:时间-->1
  </intervalBetweenEvents>
  <WLSensorID>
    <!--opt, string, 无线ID, range:[,]-->1
  </WLSensorID>
  <EventTriggerNotificationList>
    <!--opt, array, 联动方式列表, subType:object, range:[,]-->
    <EventTriggerNotification>
      <!--opt, object, 联动方式-->
      <id>
        <!--req, string, 索引, range:[,]-->test
      </id>
      <notificationMethod>
        <!--req, enum, 联动方式, subType:string, [FTP#FTP上报,HTTP#HTTP上报,IM#即时通讯,IO#IO输出,LightAudioAlarm#声光报警,audio#声音,beep#蜂鸣器,center#上传中心,cloud#云存储,email#电子邮件,focus#聚焦,monitorAlarm#监视器报警,ptz#云台,record#录像,syslog#系统日志,trace#跟踪,whiteLight#白光灯]-->FTP
      </notificationMethod>
      <notificationRecurrence>
        <!--opt, enum, 联动周期, subType:string, [beginning#开始,beginningandend#开始和结束,recurring#再次发生]-->beginning
      </notificationRecurrence>
      <notificationInterval>
        <!--opt, int, 联动时间间隔, range:[,], step:, unit:ms, unitType:时间-->1
      </notificationInterval>
      <videoInputID>
        <!--opt, string, 视频通道号ID, range:[,]-->1
      </videoInputID>
      <dynVideoInputID>
        <!--opt, string, 动态视频输入通道ID, range:[,]-->1
      </dynVideoInputID>
      <ptzAction>
        <!--opt, object, PTZ联动, desc:当notificationMethod = PTZ生效-->
        <ptzChannelID>
          <!--req, string, PTZ联动通道号, range:[,]-->1
        </ptzChannelID>
        <actionName>
          <!--req, enum, PTZ联动方式, subType:string, [preset#运动到预置点,pattern#花样扫描,patrol#巡航]-->preset
        </actionName>
        <actionNum>
          <!--opt, int, 操作编号, range:[,], step:, unit:, unitType:, desc:依赖于节点<actionName>的表示内容，可以是预置点号，巡航路径号，花样扫描路径号-->1
        </actionNum>
      </ptzAction>
      <WhiteLightAction>
        <!--opt, object, 白光灯联动, desc:当notificationMethod = whiteLight生效-->
        <whiteLightDurationTime>
          <!--opt, int, 白光灯闪烁持续时长, range:[1,60], step:, unit:s, unitType:时间-->1
        </whiteLightDurationTime>
      </WhiteLightAction>
    </EventTriggerNotification>
  </EventTriggerNotificationList>
</EventTrigger>

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

13. 配置硬盘状态Smart开始检测

13.1 命令

PUT /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/SMARTTest/start

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HDDSMARTTest xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置硬盘状态Smart开始检测, attr:version{req, string, 协议版本, range:[,]}-->
  <testType opt="short,expanded,conveyance">
    <!--opt, enum, 自检类型, subType:string, [short#简短型,expanded#扩展型,conveyance#传输型], attr:opt{req, string, 取值范围, range:[,]}-->short
  </testType>
</HDDSMARTTest>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取硬盘状态Smart检测状态

14.1 命令

GET /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/SMARTTest/status

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SmartTestStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取硬盘状态Smart检测状态, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 硬盘号, range:[,]-->test
  </id>
  <temprature>
    <!--ro, req, int, 温度, range:[,], step:, unit:℃, unitType:温度-->1
  </temprature>
  <powerOnDay>
    <!--ro, req, int, 使用时间, range:[,], step:, unit:d, unitType:时间-->1
  </powerOnDay>
  <selfEvaluaingStatus opt="ok,error">
    <!--ro, req, enum, 自我评估状态, subType:string, [ok#通过,error#错误], attr:opt{req, string, 取值范围, range:[,]}-->ok
  </selfEvaluaingStatus>
  <allEvaluaingStatus opt="functional,badsectors,fault">
    <!--ro, req, enum, 整体评估, subType:string, [functional#健康状况良好,badsectors#坏块,fault#错误], attr:opt{req, string, 取值范围, range:[,]}-->functional
  </allEvaluaingStatus>
  <selfTestPercent>
    <!--ro, req, int, 自检进度, range:[,], step:, unit:, unitType:-->1
  </selfTestPercent>
  <selfTestStatus opt="ok,aborted,interrupted,failed,unkown,electronic_element_error,servo_error,read_failed,progress,not_tested,not_recognized">
    <!--ro, req, enum, 自检状态, subType:string, [ok#成功,aborted#异常退出,interrupted#中断,failed#失败,unkown#未知,electronic_element_error#电子单元错误,servo_error#伺服错误,read_failed#读错误,progress#进行中,not_tested#未测试,not_recognized#未识别], attr:opt{req, string, 取值范围, range:[,]}-->ok
  </selfTestStatus>
  <testType opt="short,expanded,conveyance">
    <!--ro, req, enum, 自检类型, subType:string, [short#简短型,expanded#扩展型,conveyance#传输型], attr:opt{req, string, 取值范围, range:[,]}-->short
  </testType>
  <TestResultList>
    <!--ro, req, array, 检测结果列表, subType:object, range:[,], desc:Size=30-->
    <TestResult>
      <!--ro, opt, object, 检测结果-->
      <attributeID>
        <!--ro, req, string, 属性ID, range:[,]-->test
      </attributeID>
      <attributeName>
        <!--ro, opt, string, 属性名称, range:[,]-->test
      </attributeName>
      <status>
        <!--ro, req, enum, 状态, subType:string, [ok#正常,illegal#出错]-->ok
      </status>
      <flags>
        <!--ro, req, int, 属性操作标志, range:[,], step:, unit:, unitType:-->1
      </flags>
      <thresholds>
        <!--ro, req, int, 临界值, range:[,], step:, unit:, unitType:-->1
      </thresholds>
      <value>
        <!--ro, req, string, 当前值, range:[,]-->test
      </value>
      <worst>
        <!--ro, req, int, 最差值, range:[,], step:, unit:, unitType:-->1
      </worst>
      <rawValue>
        <!--ro, req, int, 原始值, range:[,], step:, unit:, unitType:-->1
      </rawValue>
    </TestResult>
  </TestResultList>
</SmartTestStatus>

15. 获取硬盘状态Smart检测配置

15.1 命令

GET /ISAPI/ContentMgmt/Storage/hdd/SMARTTest/config

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SMARTTestConfig xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 配置硬盘状态Smart检测配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}, desc:当HDD自我评估不通过时，是否继续使用HDD-->true
  </enabled>
</SMARTTestConfig>

16. 配置硬盘状态Smart检测配置

16.1 命令

PUT /ISAPI/ContentMgmt/Storage/hdd/SMARTTest/config

16.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SMARTTestConfig xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 配置硬盘状态Smart检测配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}, desc:当HDD自我评估不通过时，是否继续使用HDD-->true
  </enabled>
</SMARTTestConfig>

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

17. 配置硬盘状态坏道开始检测

17.1 命令

PUT /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/BadSectorsTest/start

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BadSectorsTest xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <testType opt="full,metadata">
    <!--opt, enum, 检测方式, subType:string, [full#完全检测,metadata#关键区检测], attr:opt{req, string, 取值范围, range:[,]}-->full
  </testType>
</BadSectorsTest>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取硬盘状态坏道检测状态

18.1 命令

GET /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/BadSectorsTest/status

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BadSectorsTestStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 获取硬盘状态坏道检测状态, attr:version{req, string, 协议版本, range:[,]}-->
  <diskID>
    <!--ro, req, string, 磁盘号, range:[,]-->test
  </diskID>
  <MaskAreaList>
    <!--ro, req, array, 标记区域列表, subType:object, range:[,]-->
    <MaskArea>
      <!--ro, opt, object, 标记区域-->
      <maskAreaID>
        <!--ro, req, int, 标记区域ID, range:[,], step:, unit:, unitType:-->1
      </maskAreaID>
      <startLBA>
        <!--ro, opt, int, 开始逻辑块地址, range:[,], step:, unit:, unitType:-->1
      </startLBA>
      <endLBA>
        <!--ro, opt, int, 结束逻辑块地址, range:[,], step:, unit:, unitType:-->1
      </endLBA>
    </MaskArea>
  </MaskAreaList>
  <BlockAreaTestStatus>
    <!--ro, opt, object, 块区域测试状态-->
    <testType>
      <!--ro, opt, enum, 测试类型, subType:string, [full#完成检测,metadata#关键区检测]-->full
    </testType>
    <testStatus>
      <!--ro, req, enum, 测试状态, subType:string, [none#没有,running#运行,pause#暂停,complete#完成,exceed#超过,abort#中止]-->none
    </testStatus>
    <fistBlock>
      <!--ro, opt, int, 开始位置, range:[,], step:, unit:, unitType:-->1
    </fistBlock>
    <lastBlock>
      <!--ro, opt, int, 结束位置, range:[,], step:, unit:, unitType:-->1
    </lastBlock>
    <currentBlock>
      <!--ro, opt, int, 当前位置, range:[,], step:, unit:, unitType:-->1
    </currentBlock>
    <BadSectorsList>
      <!--ro, opt, array, 坏区域列表, subType:object, range:[,]-->
      <BadSectors>
        <!--ro, opt, object, 坏区域-->
        <id>
          <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
        </id>
        <block>
          <!--ro, opt, int, 块ID, range:[,], step:, unit:, unitType:-->1
        </block>
      </BadSectors>
    </BadSectorsList>
  </BlockAreaTestStatus>
</BadSectorsTestStatus>

19. 配置硬盘状态坏道检测停止

19.1 命令

PUT /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/BadSectorsTest/stop

19.2 输入参数

无

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

20. 配置硬盘状态坏道检测暂停

20.1 命令

PUT /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/BadSectorsTest/pause

20.2 输入参数

无

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

21. 配置硬盘状态坏道检测重新开始

21.1 命令

PUT /ISAPI/ContentMgmt/Storage/hdd/<harddiskID>/BadSectorsTest/resume

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

22. 获取三方云接入能力

22.1 命令

GET /ISAPI/ContentMgmt/Storage/cloud/capabilities

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Cloud xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 使能-->true
  </enable>
  <type opt="OneDrive,GoogleDrive ,DropBox">
    <!--ro, req, enum, 类型, subType:string, [OneDrive#微软网盘,GoogleDrive#谷歌云,DropBox#多宝箱], attr:opt{req, string, 取值范围, range:[,]}-->OneDrive
  </type>
  <status opt="Online,Offline">
    <!--ro, req, enum, 状态, subType:string, [Online#在线,Offline#离线], attr:opt{req, string, 取值范围, range:[,]}-->Online
  </status>
  <authCode min="0" max="64">
    <!--ro, req, string, 认证码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </authCode>
  <alias min="0" max="32">
    <!--ro, opt, string, 别名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </alias>
  <tolalCapacity>
    <!--ro, opt, int, 总容量, range:[,], step:, unit:MB, unitType:信息量, desc:本字段为int64位值-->1
  </tolalCapacity>
  <usedSpace>
    <!--ro, opt, int, 已用空间, range:[,], step:, unit:MB, unitType:信息量, desc:本字段为int64位值-->1
  </usedSpace>
</Cloud>

23. 获取三方云URL能力

23.1 命令

GET /ISAPI/ContentMgmt/Storage/cloud/URL/capabilities

23.2 输入参数

无

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CloudURL xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <url min="0" max="256">
    <!--ro, req, string, URL长度, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </url>
</CloudURL>

24. 获取三方云URL长度

24.1 命令

GET /ISAPI/ContentMgmt/Storage/cloud/URL?type=<type>

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<CloudURL xmlns="http://www.isapi.org/ver20/XMLSchema">
  <!--ro, opt, object, 未定义-->
  <url min="0" max="256">
    <!--ro, req, string, URL长度, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </url>
</CloudURL>

25. 获取三方云接入参数

25.1 命令

GET /ISAPI/ContentMgmt/Storage/cloud

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<Cloud xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 使能-->true
  </enable>
  <type opt="OneDrive,GoogleDrive ,DropBox">
    <!--ro, req, enum, 类型, subType:string, [OneDrive#微软网盘,GoogleDrive#谷歌云,DropBox#多宝箱], attr:opt{req, string, 取值范围, range:[,]}-->OneDrive
  </type>
  <status opt="Online,Offline">
    <!--ro, req, enum, 状态, subType:string, [Online#在线,Offline#离线], attr:opt{req, string, 取值范围, range:[,]}-->Online
  </status>
  <authCode min="0" max="64">
    <!--ro, req, string, 认证码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </authCode>
  <alias min="0" max="32">
    <!--ro, opt, string, 别名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </alias>
  <tolalCapacity>
    <!--ro, opt, int, 总容量, range:[,], step:, unit:MB, unitType:信息量, desc:本字段为int64位值-->1
  </tolalCapacity>
  <usedSpace>
    <!--ro, opt, int, 已用空间, range:[,], step:, unit:MB, unitType:信息量, desc:本字段为int64位值-->1
  </usedSpace>
</Cloud>

26. 配置三方云接入参数

26.1 命令

PUT /ISAPI/ContentMgmt/Storage/cloud

26.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<Cloud xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--req, bool, 使能-->true
  </enable>
  <type opt="OneDrive,GoogleDrive ,DropBox">
    <!--req, enum, 类型, subType:string, [OneDrive#微软网盘,GoogleDrive#谷歌云,DropBox#多宝箱], attr:opt{req, string, 取值范围, range:[,]}-->OneDrive
  </type>
  <status opt="Online,Offline">
    <!--req, enum, 状态, subType:string, [Online#在线,Offline#离线], attr:opt{req, string, 取值范围, range:[,]}-->Online
  </status>
  <authCode min="0" max="64">
    <!--req, string, 认证码, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </authCode>
  <alias min="0" max="32">
    <!--opt, string, 别名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </alias>
  <tolalCapacity>
    <!--opt, int, 总容量, range:[,], step:, unit:MB, unitType:信息量, desc:本字段为int64位值-->1
  </tolalCapacity>
  <usedSpace>
    <!--opt, int, 已用空间, range:[,], step:, unit:MB, unitType:信息量, desc:本字段为int64位值-->1
  </usedSpace>
</Cloud>

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

27. 获取三方云接入存储策略能力

27.1 命令

GET /ISAPI/ContentMgmt/Storage/cloud/channels/<channelID>/uploadStrategy/capabilities

27.2 输入参数

无

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<UploadStrategy xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">test
  <!--ro, req, string, 未定义, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <strategyType opt="record,picture">
    <!--ro, opt, enum, 策略类型, subType:string, [record#录像,picture#图片], attr:opt{req, string, 取值范围, range:[,]}-->record
  </strategyType>
  <Record>
    <!--ro, opt, object, 录像策略, dep:and,{$.UploadStrategy.strategyType,eq,record}-->null
    <allEvent>
      <!--ro, opt, bool, 所有事件-->true
    </allEvent>
    <motion>
      <!--ro, opt, bool, 移动侦测-->true
    </motion>
    <alarm>
      <!--ro, opt, bool, 报警-->true
    </alarm>
    <VCA>
      <!--ro, opt, bool, VCA智能-->true
    </VCA>
  </Record>
</UploadStrategy>

28. 获取三方云接入存储策略

28.1 命令

GET /ISAPI/ContentMgmt/Storage/cloud/channels/<channelID>/uploadStrategy

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<UploadStrategy xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">test
  <!--ro, req, string, 未定义, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <strategyType opt="record,picture">
    <!--ro, opt, enum, 策略类型, subType:string, [record#录像,picture#图片], attr:opt{req, string, 取值范围, range:[,]}-->record
  </strategyType>
  <Record>
    <!--ro, opt, object, 录像策略, dep:and,{$.UploadStrategy.strategyType,eq,record}-->
    <allEvent>
      <!--ro, opt, bool, 所有事件-->true
    </allEvent>
    <motion>
      <!--ro, opt, bool, 移动侦测-->true
    </motion>
    <alarm>
      <!--ro, opt, bool, 报警-->true
    </alarm>
    <VCA>
      <!--ro, opt, bool, VCA智能-->true
    </VCA>
  </Record>
</UploadStrategy>

29. 配置三方云接入存储策略

29.1 命令

PUT /ISAPI/ContentMgmt/Storage/cloud/channels/<channelID>/uploadStrategy

29.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<UploadStrategy xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">test
  <!--req, string, 未定义, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <strategyType opt="record,picture">
    <!--opt, enum, 策略类型, subType:string, [record#录像,picture#图片], attr:opt{req, string, 取值范围, range:[,]}-->record
  </strategyType>
  <Record>
    <!--opt, object, 录像策略, dep:and,{$.UploadStrategy.strategyType,eq,record}-->
    <allEvent>
      <!--opt, bool, 所有事件-->true
    </allEvent>
    <motion>
      <!--opt, bool, 移动侦测-->true
    </motion>
    <alarm>
      <!--opt, bool, 报警-->true
    </alarm>
    <VCA>
      <!--opt, bool, VCA智能-->true
    </VCA>
  </Record>
</UploadStrategy>

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

30. 获取设备工作模式

30.1 命令

GET /ISAPI/ContentMgmt/Cluster/ClusterMode

30.2 输入参数

无

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClusterMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 工作模式, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--ro, req, enum, 集群模式, subType:string, [single#单机模式,cluster#集群模式], desc:设置完毕需要重启设备,默认关闭-->single
  </mode>
</ClusterMode>

31. 配置设备工作模式

31.1 命令

PUT /ISAPI/ContentMgmt/Cluster/ClusterMode

31.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ClusterMode xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 工作模式, attr:version{req, string, 协议版本, range:[,]}-->
  <mode>
    <!--req, enum, 集群模式, subType:string, [single#单机模式,cluster#集群模式], desc:设置完毕需要重启设备,默认关闭-->single
  </mode>
</ClusterMode>

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

32. 配置集群组网

32.1 命令

PUT /ISAPI/ContentMgmt/Cluster/Creation

32.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ClusterCreation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 集群组网, attr:version{req, string, 协议版本, range:[,]}-->
  <DevAccessInfoList>
    <!--opt, array, 设备接入信息列表, subType:object, range:[,]-->
    <DevAccessInfo>
      <!--opt, object, 设备接入信息-->
      <id>
        <!--opt, int, 索引, range:[,], step:, unit:, unitType:, desc:添加时可选,获取时必填-->0
      </id>
      <ipVersion>
        <!--req, enum, ip地址类型, subType:string, [v4#IPv4,v6#IPv6,dual#双]-->v4
      </ipVersion>
      <ipAddress>
        <!--opt, string, ipv4地址, range:[,]-->test
      </ipAddress>
      <ipv6Address>
        <!--opt, string, ipv6地址, range:[,]-->test
      </ipv6Address>
      <port>
        <!--opt, int, 设备端口, range:[,], step:, unit:, unitType:, desc:添加时必填,删除时可选-->0
      </port>
      <loginName>
        <!--opt, string, 设备登录用户名, range:[,], desc:必须是admin用户,添加时必填,获取时不返回-->test
      </loginName>
      <passwd>
        <!--opt, string, 登录密码, range:[,], desc:添加时必填,删除时可选-->test
      </passwd>
    </DevAccessInfo>
  </DevAccessInfoList>
  <ClusterInfo>
    <!--opt, object, 集群信息-->
    <ipVersion>
      <!--req, enum, ip地址类型, subType:string, [v4#IPv4,v6#IPv6,dual#双]-->v4
    </ipVersion>
    <ipAddress>
      <!--opt, string, ipv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[,]-->test
    </ipv6Address>
    <port>
      <!--req, int, 集群端口, range:[,], step:, unit:, unitType:-->0
    </port>
    <httpPort>
      <!--req, int, 集群HTTP端口, range:[,], step:, unit:, unitType:-->0
    </httpPort>
    <loginName>
      <!--req, string, 集群对外用户名, range:[,], desc:必须是admin用户-->test
    </loginName>
    <passwd>
      <!--req, string, 登录对外密码, range:[,], desc:需要敏感信息加密-->test
    </passwd>
  </ClusterInfo>
</ClusterCreation>

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

33. 创建集群中设备信息

33.1 命令

POST /ISAPI/ContentMgmt/Cluster/device

33.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<DevAccessInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, array, 设备接入信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <DevAccessInfo>
    <!--opt, object, 设备接入信息-->
    <id>
      <!--opt, int, 索引, range:[,], step:, unit:, unitType:, desc:添加时可选,获取时必填-->0
    </id>
    <ipVersion>
      <!--req, enum, ip地址类型, subType:string, [v4#IPv4,v6#IPv6,dual#双]-->v4
    </ipVersion>
    <ipAddress>
      <!--opt, string, ipv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--opt, string, ipv6地址, range:[,]-->test
    </ipv6Address>
    <port>
      <!--opt, int, 设备端口, range:[,], step:, unit:, unitType:, desc:添加时必填,删除时可选-->0
    </port>
    <loginName>
      <!--opt, string, 设备登录用户名, range:[,], desc:必须是admin用户,添加时必填,获取时不返回-->test
    </loginName>
    <passwd>
      <!--opt, string, 登录密码, range:[,], desc:添加时必填,删除时可选-->test
    </passwd>
  </DevAccessInfo>
</DevAccessInfoList>

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

34. 获取集群中设备信息

34.1 命令

GET /ISAPI/ContentMgmt/Cluster/device

34.2 输入参数

无

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DevAccessInfoList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 设备接入信息列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <DevAccessInfo>
    <!--ro, opt, object, 设备接入信息-->
    <id>
      <!--ro, opt, int, 索引, range:[,], step:, unit:, unitType:, desc:添加时可选,获取时必填-->0
    </id>
    <ipVersion>
      <!--ro, req, enum, ip地址类型, subType:string, [v4#IPv4,v6#IPv6,dual#双]-->v4
    </ipVersion>
    <ipAddress>
      <!--ro, opt, string, ipv4地址, range:[,]-->test
    </ipAddress>
    <ipv6Address>
      <!--ro, opt, string, ipv6地址, range:[,]-->test
    </ipv6Address>
    <port>
      <!--ro, opt, int, 设备端口, range:[,], step:, unit:, unitType:, desc:添加时必填,删除时可选-->0
    </port>
    <loginName>
      <!--ro, opt, string, 设备登录用户名, range:[,], desc:必须是admin用户,添加时必填,获取时不返回-->test
    </loginName>
    <passwd>
      <!--ro, opt, string, 登录密码, range:[,], desc:添加时必填,删除时可选-->test
    </passwd>
  </DevAccessInfo>
</DevAccessInfoList>

35. 删除集群中单个设备信息

35.1 命令

DELETE /ISAPI/ContentMgmt/Cluster/device/<deviceID>

35.2 输入参数

无

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

36. 获取集群内部状态

36.1 命令

GET /ISAPI/ContentMgmt/Cluster/Status

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClusterStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 集群内部状态, attr:version{req, string, 协议版本, range:[,]}-->
  <DevStatusList>
    <!--ro, opt, array, 设备状态列表, subType:object, range:[,]-->
    <DevStatus>
      <!--ro, opt, object, 设备状态-->
      <id>
        <!--ro, opt, int, 索引, range:[,], step:, unit:, unitType:, desc:添加时可选,获取时必填-->0
      </id>
      <ipVersion>
        <!--ro, req, enum, ip地址类型, subType:string, [v4#IPv4,v6#IPv6,dual#双]-->v4
      </ipVersion>
      <ipAddress>
        <!--ro, opt, string, ipv4地址, range:[,]-->test
      </ipAddress>
      <ipv6Address>
        <!--ro, opt, string, ipv6地址, range:[,]-->test
      </ipv6Address>
      <devType>
        <!--ro, req, string, 设备型号, range:[,]-->test
      </devType>
      <status>
        <!--ro, req, enum, 在线状态, subType:string, [online#在线,offline#离线]-->online
      </status>
      <cpu>
        <!--ro, req, int, cpu使用百分比, range:[0,100], step:, unit:, unitType:-->0
      </cpu>
      <memory>
        <!--ro, req, int, 内存使用百分比, range:[0,100], step:, unit:, unitType:-->0
      </memory>
      <surplusInputBandwidth>
        <!--ro, req, int, 剩余输入带宽, range:[,], step:, unit:Mbps, unitType:带宽速度-->0
      </surplusInputBandwidth>
      <surplusOutputBandwidth>
        <!--ro, req, int, 剩余输出带宽, range:[,], step:, unit:Mbps, unitType:带宽速度-->0
      </surplusOutputBandwidth>
      <storageCapacity>
        <!--ro, opt, int, 存储总容量, range:[,], step:, unit:MB, unitType:信息量-->0
      </storageCapacity>
      <storageFreeSpace>
        <!--ro, opt, int, 存储剩余空间, range:[,], step:, unit:MB, unitType:信息量-->0
      </storageFreeSpace>
      <maxIPCNum>
        <!--ro, opt, int, 支持接入的IPC最大个数, range:[,], step:, unit:, unitType:-->0
      </maxIPCNum>
      <currentIPCNum>
        <!--ro, opt, int, 当前接入的ICP个数, range:[,], step:, unit:, unitType:-->0
      </currentIPCNum>
      <offlineDescription>
        <!--ro, opt, enum, 不在线原因, subType:string, [incorrentUserNameOrPassword#用户或密码错误,networkException#网络异常,notClusterMode#非集群模式,existedInOtherClusterSystem#已存在于其他集群系统,IPNotSameLan#不同局域网,badVersion#版本不匹配,badDevType#设备类型不匹配,badLanguage#语言不匹配,unknow#未知错误], desc:<status>为offline时返回-->incorrentUserNameOrPassword
      </offlineDescription>
    </DevStatus>
  </DevStatusList>
  <totalIdleBandwidth>
    <!--ro, req, int, 集群总剩余带宽, range:[,], step:, unit:Mbps, unitType:带宽速度-->0
  </totalIdleBandwidth>
  <videoCycle>
    <!--ro, opt, int, 集群录像周期, range:[,], step:, unit:d, unitType:时间-->0
  </videoCycle>
</ClusterStatus>

37. 获取集群能力

37.1 命令

GET /ISAPI/ContentMgmt/Cluster/capabilities

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClusterCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 集群能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportCreateCluster>
    <!--ro, opt, bool, 设备是否支持创建大域-->true
  </isSupportCreateCluster>
  <isSupportCardLock>
    <!--ro, opt, bool, 设备是否换卡失败锁定-->true
  </isSupportCardLock>
  <CloudCap>
    <!--ro, opt, object, 武汉云能力控制-->
    <isHideBaseInfo>
      <!--ro, opt, bool, 是否不显示信息总览界面基本信息-->true
    </isHideBaseInfo>
    <isHideDomainIP>
      <!--ro, opt, bool, 是否不显示域IP显示框-->true
    </isHideDomainIP>
  </CloudCap>
  <isSupportClusterSilence>
    <!--ro, opt, bool, 设备是否支持全域静音-->true
  </isSupportClusterSilence>
  <isSupportModeSwitch>
    <!--ro, opt, bool, 是否支持模式切换功能-->true
  </isSupportModeSwitch>
  <isSupportCreation>
    <!--ro, opt, bool, 是否支持组网功能-->true
  </isSupportCreation>
  <maxSlaveNumber>
    <!--ro, opt, int, 集群最大设备数, range:[,], step:, unit:, unitType:-->0
  </maxSlaveNumber>
  <maxChannelNumber>
    <!--ro, opt, int, 集群最大通道数, range:[,], step:, unit:, unitType:-->0
  </maxChannelNumber>
  <maxBandwidth>
    <!--ro, opt, int, 集群最大带宽, range:[,], step:, unit:Mbps, unitType:带宽速度-->0
  </maxBandwidth>
  <isSupportCMLoginIP>
    <!--ro, opt, bool, 是否支持下发CM登录IP-->true
  </isSupportCMLoginIP>
  <isSupportDeviceConfig>
    <!--ro, opt, bool, 是否支持集群设备信息配置-->true
  </isSupportDeviceConfig>
  <isSupportStatus>
    <!--ro, opt, bool, 是否支持集群内部状态获取, desc:以下部分,按照通过web 访问虚拟IP （CM）和 通过web 访问集群中的CS 进行区分,定义各功能的支持情况。-->true
  </isSupportStatus>
  <isSupportPreview>
    <!--ro, opt, bool, 是否支持预览-->true
  </isSupportPreview>
  <isSupportRecord>
    <!--ro, opt, bool, 是否支持录像回放、下载-->true
  </isSupportRecord>
  <LocalCfg>
    <!--ro, opt, object, 本地参数-->
    <protocalType>
      <!--ro, opt, enum, 协议类型, subType:string, [UDP#UDP,TCP#TCP,MULTICAST#多播]-->UDP
    </protocalType>
  </LocalCfg>
  <SystemCfg>
    <!--ro, opt, object, 系统参数-->
    <isSupportBaseInfoCfg>
      <!--ro, opt, bool, 是否支持基本信息配置-->true
    </isSupportBaseInfoCfg>
    <isSupportTimeCfg>
      <!--ro, opt, enum, 是否支持时间配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportTimeCfg>
  </SystemCfg>
  <SystemMaintainCfg>
    <!--ro, opt, object, 系统维护参数-->
    <isSupportSimpleRestore>
      <!--ro, opt, bool, 是否支持恢复默认值(简单)-->true
    </isSupportSimpleRestore>
    <isSupportCompleteRestore>
      <!--ro, opt, bool, 是否支持恢复默认值(完全)-->true
    </isSupportCompleteRestore>
    <isSupportCfgImport>
      <!--ro, opt, bool, 是否支持参数导入(ipc参数、设备参数)-->true
    </isSupportCfgImport>
    <isSupportAdvanceParam>
      <!--ro, opt, bool, 是否支持高级参数配置-->true
    </isSupportAdvanceParam>
  </SystemMaintainCfg>
  <NetWork>
    <!--ro, opt, object, 网络参数-->
    <isSupportTCPIP>
      <!--ro, opt, enum, 是否支持TCP/IP参数配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportTCPIP>
    <isSupportPortCfg>
      <!--ro, opt, enum, 是否支持端口配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportPortCfg>
  </NetWork>
  <AdvancedNetWork>
    <!--ro, opt, object, 高级参数-->
    <isSupportEmail>
      <!--ro, opt, enum, 是否支持Email参数配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportEmail>
    <isSupportUndefined>
      <!--ro, opt, enum, 是否支持其他配置（其他页面）, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportUndefined>
  </AdvancedNetWork>
  <Storage>
    <!--ro, opt, object, 存储参数-->
    <isSupportRecordPlan>
      <!--ro, opt, enum, 是否支持录像计划配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportRecordPlan>
    <isSupportHoliday>
      <!--ro, opt, enum, 是否支持假日配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportHoliday>
    <isSupportNetDiskCfg>
      <!--ro, opt, enum, 是否支持网盘配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportNetDiskCfg>
    <isSupportUndefined>
      <!--ro, opt, enum, 是否支持其他配置（其他页面）, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportUndefined>
    <isSupportHDiskIP>
      <!--ro, opt, bool, 是否支持硬盘IP参数-->true
    </isSupportHDiskIP>
  </Storage>
  <isSupportChannelManage>
    <!--ro, opt, enum, 是否支持通道管理, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportChannelManage>
  <isSupportUserManage>
    <!--ro, opt, enum, 是否支持用户管理, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportUserManage>
  <isSupportEventCfg>
    <!--ro, opt, enum, 是否支持事件配置, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportEventCfg>
  <isSupportVehicleDetect>
    <!--ro, opt, enum, 是否支持车辆检测, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportVehicleDetect>
  <isSupportIntelligentAnalysis>
    <!--ro, opt, enum, 是否支持智能分析, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportIntelligentAnalysis>
</ClusterCap>

38. 获取集群能力

38.1 命令

GET /ISAPI/ContentMgmt/Cluster/capabilities

38.2 输入参数

无

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClusterCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 集群能力, attr:version{req, string, 协议版本, range:[,]}-->
  <isSupportCreateCluster>
    <!--ro, opt, bool, 设备是否支持创建大域-->true
  </isSupportCreateCluster>
  <isSupportCardLock>
    <!--ro, opt, bool, 设备是否换卡失败锁定-->true
  </isSupportCardLock>
  <CloudCap>
    <!--ro, opt, object, 武汉云能力控制-->
    <isHideBaseInfo>
      <!--ro, opt, bool, 是否不显示信息总览界面基本信息-->true
    </isHideBaseInfo>
    <isHideDomainIP>
      <!--ro, opt, bool, 是否不显示域IP显示框-->true
    </isHideDomainIP>
  </CloudCap>
  <isSupportClusterSilence>
    <!--ro, opt, bool, 设备是否支持全域静音-->true
  </isSupportClusterSilence>
  <isSupportModeSwitch>
    <!--ro, opt, bool, 是否支持模式切换功能-->true
  </isSupportModeSwitch>
  <isSupportCreation>
    <!--ro, opt, bool, 是否支持组网功能-->true
  </isSupportCreation>
  <maxSlaveNumber>
    <!--ro, opt, int, 集群最大设备数, range:[,], step:, unit:, unitType:-->0
  </maxSlaveNumber>
  <maxChannelNumber>
    <!--ro, opt, int, 集群最大通道数, range:[,], step:, unit:, unitType:-->0
  </maxChannelNumber>
  <maxBandwidth>
    <!--ro, opt, int, 集群最大带宽, range:[,], step:, unit:Mbps, unitType:带宽速度-->0
  </maxBandwidth>
  <isSupportCMLoginIP>
    <!--ro, opt, bool, 是否支持下发CM登录IP-->true
  </isSupportCMLoginIP>
  <isSupportDeviceConfig>
    <!--ro, opt, bool, 是否支持集群设备信息配置-->true
  </isSupportDeviceConfig>
  <isSupportStatus>
    <!--ro, opt, bool, 是否支持集群内部状态获取, desc:以下部分,按照通过web 访问虚拟IP （CM）和 通过web 访问集群中的CS 进行区分,定义各功能的支持情况。-->true
  </isSupportStatus>
  <isSupportPreview>
    <!--ro, opt, bool, 是否支持预览-->true
  </isSupportPreview>
  <isSupportRecord>
    <!--ro, opt, bool, 是否支持录像回放、下载-->true
  </isSupportRecord>
  <LocalCfg>
    <!--ro, opt, object, 本地参数-->
    <protocalType>
      <!--ro, opt, enum, 协议类型, subType:string, [UDP#UDP,TCP#TCP,MULTICAST#多播]-->UDP
    </protocalType>
  </LocalCfg>
  <SystemCfg>
    <!--ro, opt, object, 系统参数-->
    <isSupportBaseInfoCfg>
      <!--ro, opt, bool, 是否支持基本信息配置-->true
    </isSupportBaseInfoCfg>
    <isSupportTimeCfg>
      <!--ro, opt, enum, 是否支持时间配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportTimeCfg>
  </SystemCfg>
  <SystemMaintainCfg>
    <!--ro, opt, object, 系统维护参数-->
    <isSupportSimpleRestore>
      <!--ro, opt, bool, 是否支持恢复默认值(简单)-->true
    </isSupportSimpleRestore>
    <isSupportCompleteRestore>
      <!--ro, opt, bool, 是否支持恢复默认值(完全)-->true
    </isSupportCompleteRestore>
    <isSupportCfgImport>
      <!--ro, opt, bool, 是否支持参数导入(ipc参数、设备参数)-->true
    </isSupportCfgImport>
    <isSupportAdvanceParam>
      <!--ro, opt, bool, 是否支持高级参数配置-->true
    </isSupportAdvanceParam>
  </SystemMaintainCfg>
  <NetWork>
    <!--ro, opt, object, 网络参数-->
    <isSupportTCPIP>
      <!--ro, opt, enum, 是否支持TCP/IP参数配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportTCPIP>
    <isSupportPortCfg>
      <!--ro, opt, enum, 是否支持端口配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportPortCfg>
  </NetWork>
  <AdvancedNetWork>
    <!--ro, opt, object, 高级参数-->
    <isSupportEmail>
      <!--ro, opt, enum, 是否支持Email参数配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportEmail>
    <isSupportUndefined>
      <!--ro, opt, enum, 是否支持其他配置（其他页面）, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportUndefined>
  </AdvancedNetWork>
  <Storage>
    <!--ro, opt, object, 存储参数-->
    <isSupportRecordPlan>
      <!--ro, opt, enum, 是否支持录像计划配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportRecordPlan>
    <isSupportHoliday>
      <!--ro, opt, enum, 是否支持假日配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportHoliday>
    <isSupportNetDiskCfg>
      <!--ro, opt, enum, 是否支持网盘配置, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportNetDiskCfg>
    <isSupportUndefined>
      <!--ro, opt, enum, 是否支持其他配置（其他页面）, subType:string, [true#是,false#否,readonly#只读]-->true
    </isSupportUndefined>
    <isSupportHDiskIP>
      <!--ro, opt, bool, 是否支持硬盘IP参数-->true
    </isSupportHDiskIP>
  </Storage>
  <isSupportChannelManage>
    <!--ro, opt, enum, 是否支持通道管理, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportChannelManage>
  <isSupportUserManage>
    <!--ro, opt, enum, 是否支持用户管理, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportUserManage>
  <isSupportEventCfg>
    <!--ro, opt, enum, 是否支持事件配置, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportEventCfg>
  <isSupportVehicleDetect>
    <!--ro, opt, enum, 是否支持车辆检测, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportVehicleDetect>
  <isSupportIntelligentAnalysis>
    <!--ro, opt, enum, 是否支持智能分析, subType:string, [true#是,false#否,readonly#只读]-->true
  </isSupportIntelligentAnalysis>
</ClusterCap>

39. 获取回传录像基础功能配置能力集

39.1 命令

GET /ISAPI/ContentMgmt/record/passback/basicCfg/capabilities

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordPassBackBasicCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 回传录像基础功能参数, attr:version{req, string, 协议版本, range:[,]}-->
  <beginTime min="0" max="65535">
    <!--ro, req, int, 检测窗口开始时间, range:[0,65535], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:先通过/ISAPI/ContentMgmt/record/passback/addPlan配置需要回传的历史录像时间段，再设置此处的检测窗口开始时间和结束时间，然后设备将会自动从前端设备把在回传历史录像时间段之内且在检测起止时间范围之内的录像文件回传过来进行存储-->1
  </beginTime>
  <endTime min="0" max="65535">
    <!--ro, req, int, 检测窗口结束时间, range:[0,65535], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </endTime>
  <maxTotalConcurrenceNum min="200" max="400">
    <!--ro, req, int, 并发回传路数上限, range:[200,400], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:针对的是编码器路数, 不是回传任务条数-->1
  </maxTotalConcurrenceNum>
  <maxDvrConcurrenceNum min="2" max="32">
    <!--ro, req, int, 单台DVR并发回传通道数上限, range:[2,32], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </maxDvrConcurrenceNum>
</RecordPassBackBasicCfg>

40. 获取回传录像基础功能参数

40.1 命令

GET /ISAPI/ContentMgmt/record/passback/basicCfg

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordPassBackBasicCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 回传录像基础功能参数, attr:version{req, string, 协议版本, range:[,]}-->
  <beginTime>
    <!--ro, req, int, 检测窗口开始时间, range:[0,65535], step:, unit:min, unitType:时间, desc:先通过/ISAPI/ContentMgmt/record/passback/addPlan配置需要回传的历史录像时间段，再设置此处的检测窗口开始时间和结束时间，然后设备将会自动从前端设备把在回传历史录像时间段之内且在检测起止时间范围之内的录像文件回传过来进行存储-->1
  </beginTime>
  <endTime>
    <!--ro, req, int, 检测窗口结束时间, range:[0,65535], step:, unit:min, unitType:时间-->1
  </endTime>
  <maxTotalConcurrenceNum>
    <!--ro, req, int, 并发回传路数上限, range:[200,400], step:, unit:, unitType:, desc:针对的是编码器路数, 不是回传任务条数-->1
  </maxTotalConcurrenceNum>
  <maxDvrConcurrenceNum>
    <!--ro, req, int, 单台DVR并发回传通道数上限, range:[2,32], step:, unit:, unitType:-->1
  </maxDvrConcurrenceNum>
</RecordPassBackBasicCfg>

41. 配置回传录像基础功能参数

41.1 命令

PUT /ISAPI/ContentMgmt/record/passback/basicCfg

41.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordPassBackBasicCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 回传录像基础功能参数, attr:version{req, string, 协议版本, range:[,]}-->
  <beginTime>
    <!--req, int, 检测窗口开始时间, range:[0,65535], step:, unit:min, unitType:时间, desc:先通过/ISAPI/ContentMgmt/record/passback/addPlan配置需要回传的历史录像时间段，再设置此处的检测窗口开始时间和结束时间，然后设备将会自动从前端设备把在回传历史录像时间段之内且在检测起止时间范围之内的录像文件回传过来进行存储-->1
  </beginTime>
  <endTime>
    <!--req, int, 检测窗口结束时间, range:[0,65535], step:, unit:min, unitType:时间-->1
  </endTime>
  <maxTotalConcurrenceNum>
    <!--req, int, 并发回传路数上限, range:[200,400], step:, unit:, unitType:, desc:针对的是编码器路数, 不是回传任务条数-->1
  </maxTotalConcurrenceNum>
  <maxDvrConcurrenceNum>
    <!--req, int, 单台DVR并发回传通道数上限, range:[2,32], step:, unit:, unitType:-->1
  </maxDvrConcurrenceNum>
</RecordPassBackBasicCfg>

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

42. 获取回传历史录像计划配置能力

42.1 命令

GET /ISAPI/ContentMgmt/record/passback/historyPlanCfg/capabilities

42.2 输入参数

无

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordPassBackHistoryPlanCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 历史回传计划, attr:version{req, string, 协议版本, range:[,]}-->
  <streamID min="1" max="32">
    <!--ro, req, string, 流ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </streamID>
  <channel min="1" max="1024">
    <!--ro, req, int, 通道号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:0xffffffff表示值无效-->1
  </channel>
  <enable opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <maxSchedulePeriodOfDay min="1" max="8">
    <!--ro, req, int, 单日最多可配8个计划时间段, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </maxSchedulePeriodOfDay>
  <ScheduleActionList size="56">
    <!--ro, opt, array, 录像计划列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ScheduleAction>
      <!--ro, opt, object, 录像计划-->
      <id min="1" max="56">
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </id>
      <ScheduleActionStartTime>
        <!--ro, opt, object, 录像计划开始时间-->
        <DayOfWeek opt="Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday">
          <!--ro, req, enum, 星期, subType:string, [Monday#星期一,Tuesday#星期二,Wednesday#星期三,Thursday#星期四,Friday#星期五,Saturday#星期六,Sunday#星期天], attr:opt{req, string, 取值范围, range:[,]}-->Monday
        </DayOfWeek>
        <TimeOfDay>
          <!--ro, req, time, 当天时间-->00:00:00+08:00
        </TimeOfDay>
      </ScheduleActionStartTime>
      <ScheduleActionEndTime>
        <!--ro, opt, object, 录像计划结束时间-->
        <DayOfWeek opt="Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday">
          <!--ro, req, enum, 星期, subType:string, [Monday#星期一,Tuesday#星期二,Wednesday#星期三,Thursday#星期四,Friday#星期五,Saturday#星期六,Sunday#星期天], attr:opt{req, string, 取值范围, range:[,]}-->Monday
        </DayOfWeek>
        <TimeOfDay>
          <!--ro, req, time, 当天时间-->00:00:00+08:00
        </TimeOfDay>
      </ScheduleActionEndTime>
      <eventType opt="VMD,alarmIn,POS,inquest,AccessControllerEvent,regionEntrance,regionExiting,linedetection,fielddetection,loitering,parking,running,personDensityDetection,unattendedBaggage,attendedBaggage,leavePosition,failDown,violentMotion,safetyHelmetDetection,peopleNumChange,getUp,advReachHeight,Standup,rapidMove,group,scenechangedetection">
        <!--ro, opt, enum, 事件类型, subType:string, [VMD#移动侦测,alarmIn#报警输入,POS#POS事件,inquest#审讯事件,AccessControllerEvent#门禁事件,regionEntrance#进入区域,regionExiting#离开区域,linedetection#越界侦测（穿越警戒线）,fielddetection#区域入侵,loitering#徘徊侦测,parking#停车侦测,running#人员奔跑,personDensityDetection#人员密度,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,leavePosition#离岗检测,failDown#人员倒地,violentMotion#剧烈运动,safetyHelmetDetection#安全帽检测,peopleNumChange#人数变化,getUp#起身,advReachHeight#折线攀高,Standup#人员站立检测,rapidMove#快速移动,group#人员聚集,scenechangedetection#场景变更,PIR#PIR报警], attr:opt{req, string, 取值范围, range:[,]}-->VMD
      </eventType>
      <AlarmInParam>
        <!--ro, opt, object, 报警输入参数, dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,alarmIn}, desc:eventType == "alarmIn"时有效;若eventType=="alarmIn", 但是没有该节点,表示全部报警输入事件-->
        <alarmInIDList>
          <!--ro, opt, object, 报警输入号列表, desc:没有该节点表示全部报警输入号-->
          <alarmInID min="1" max="10">
            <!--ro, opt, int, 报警输入号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
          </alarmInID>
        </alarmInIDList>
      </AlarmInParam>
      <InquestParam>
        <!--ro, opt, object, 审讯事件参数 , dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,inquest}, desc:eventType == "inquest"时有效;若eventType=="inquest", 但是没有该节点,表示全部审讯事件,包括审讯开始信息,审讯停止信息,重点标记信息,审讯片断状态信息;-->
        <roomID min="1" max="2">
          <!--ro, opt, int, 审讯室ID, range:[1,2], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:没有该节点表示全部审讯室-->0
        </roomID>
      </InquestParam>
      <ACSAlarmParam>
        <!--ro, opt, object, 门禁事件参数, dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,AccessControllerEvent}, desc:== "AccessControllerEvent"时有效;eventType=="AccessControllerEvent", 但是没有该节点,表示全部门禁事件-->
        <majorEventType min="1" max="5">
          <!--ro, opt, int, 报警主类型, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:注意此处是10进制,参数“AccessControllerEvent”事件的宏定义; 没有该节点表示全部-->0
        </majorEventType>
      </ACSAlarmParam>
    </ScheduleAction>
  </ScheduleActionList>
</RecordPassBackHistoryPlanCfg>

43. 获取回传历史录像计划参数

43.1 命令

GET /ISAPI/ContentMgmt/record/passback/historyPlanCfg?StreamID=<streamID>&Channel=<channelID>

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordPassBackHistoryPlanCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 回传历史录像计划参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 使能-->true
  </enable>
  <ScheduleActionList size="56">
    <!--ro, opt, array, 录像计划列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ScheduleAction>
      <!--ro, opt, object, 录像计划-->
      <id>
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <ScheduleActionStartTime>
        <!--ro, opt, object, 录像计划开始时间-->
        <DayOfWeek>
          <!--ro, req, enum, 星期, subType:string, [Monday#星期一,Tuesday#星期二,Wednesday#星期三,Thursday#星期四,Friday#星期五,Saturday#星期六,Sunday#星期天]-->Monday
        </DayOfWeek>
        <TimeOfDay>
          <!--ro, req, time, 当天时间-->00:00:00+08:00
        </TimeOfDay>
      </ScheduleActionStartTime>
      <ScheduleActionEndTime>
        <!--ro, opt, object, 录像计划结束时间-->
        <DayOfWeek>
          <!--ro, req, enum, 星期, subType:string, [Monday#星期一,Tuesday#星期二,Wednesday#星期三,Thursday#星期四,Friday#星期五,Saturday#星期六,Sunday#星期天]-->Monday
        </DayOfWeek>
        <TimeOfDay>
          <!--ro, req, time, 当天时间-->00:00:00+08:00
        </TimeOfDay>
      </ScheduleActionEndTime>
      <eventType>
        <!--ro, opt, enum, 事件类型, subType:string, [VMD#移动侦测,alarmIn#报警输入,POS#POS事件,inquest#审讯事件,AccessControllerEvent#门禁事件,regionEntrance#进入区域,regionExiting#离开区域,linedetection#越界侦测（穿越警戒线）,fielddetection#区域入侵,loitering#徘徊侦测,parking#停车侦测,running#人员奔跑,personDensityDetection#人员密度,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,leavePosition#离岗检测,failDown#人员倒地,violentMotion#剧烈运动,safetyHelmetDetection#安全帽检测,peopleNumChange#人数变化,getUp#起身,advReachHeight#折线攀高,Standup#人员站立检测,rapidMove#快速移动,group#人员聚集,scenechangedetection#场景变更,PIR#PIR报警]-->VMD
      </eventType>
      <AlarmInParam>
        <!--ro, opt, object, 报警输入参数, dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,alarmIn}, desc:eventType == "alarmIn"时有效;若eventType=="alarmIn", 但是没有该节点,表示全部报警输入事件-->
        <alarmInIDList>
          <!--ro, opt, object, 报警输入号列表, desc:没有该节点表示全部报警输入号-->
          <alarmInID>
            <!--ro, opt, int, 报警输入号, range:[,], step:, unit:, unitType:-->1
          </alarmInID>
        </alarmInIDList>
      </AlarmInParam>
      <InquestParam>
        <!--ro, opt, object, 审讯事件参数 , dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,inquest}, desc:eventType == "inquest"时有效;若eventType=="inquest", 但是没有该节点,表示全部审讯事件,包括审讯开始信息,审讯停止信息,重点标记信息,审讯片断状态信息;-->
        <roomID>
          <!--ro, opt, int, 审讯室ID, range:[1,2], step:, unit:, unitType:, desc:没有该节点表示全部审讯室-->0
        </roomID>
      </InquestParam>
      <ACSAlarmParam>
        <!--ro, opt, object, 门禁事件参数, dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,AccessControllerEvent}, desc:== "AccessControllerEvent"时有效;eventType=="AccessControllerEvent", 但是没有该节点,表示全部门禁事件-->
        <majorEventType>
          <!--ro, opt, int, 报警主类型, range:[,], step:, unit:, unitType:, desc:注意此处是10进制,参数“AccessControllerEvent”事件的宏定义; 没有该节点表示全部-->0
        </majorEventType>
      </ACSAlarmParam>
    </ScheduleAction>
  </ScheduleActionList>
</RecordPassBackHistoryPlanCfg>

44. 配置回传历史录像计划参数

44.1 命令

PUT /ISAPI/ContentMgmt/record/passback/historyPlanCfg?StreamID=<streamID>&Channel=<channelID>

44.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordPassBackHistoryPlanCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 回传历史录像计划参数, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--req, bool, 使能-->true
  </enable>
  <ScheduleActionList size="56">
    <!--opt, array, 录像计划列表, subType:object, range:[,], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <ScheduleAction>
      <!--opt, object, 录像计划-->
      <id>
        <!--req, int, 索引, range:[,], step:, unit:, unitType:-->1
      </id>
      <ScheduleActionStartTime>
        <!--opt, object, 录像计划开始时间-->
        <DayOfWeek>
          <!--req, enum, 星期, subType:string, [Monday#星期一,Tuesday#星期二,Wednesday#星期三,Thursday#星期四,Friday#星期五,Saturday#星期六,Sunday#星期天]-->Monday
        </DayOfWeek>
        <TimeOfDay>
          <!--req, time, 当天时间-->00:00:00+08:00
        </TimeOfDay>
      </ScheduleActionStartTime>
      <ScheduleActionEndTime>
        <!--opt, object, 录像计划结束时间-->
        <DayOfWeek>
          <!--req, enum, 星期, subType:string, [Monday#星期一,Tuesday#星期二,Wednesday#星期三,Thursday#星期四,Friday#星期五,Saturday#星期六,Sunday#星期天]-->Monday
        </DayOfWeek>
        <TimeOfDay>
          <!--req, time, 当天时间-->00:00:00+08:00
        </TimeOfDay>
      </ScheduleActionEndTime>
      <eventType>
        <!--opt, enum, 事件类型, subType:string, [VMD#移动侦测,alarmIn#报警输入,POS#POS事件,inquest#审讯事件,AccessControllerEvent#门禁事件,regionEntrance#进入区域,regionExiting#离开区域,linedetection#越界侦测（穿越警戒线）,fielddetection#区域入侵,loitering#徘徊侦测,parking#停车侦测,running#人员奔跑,personDensityDetection#人员密度,unattendedBaggage#物品遗留,attendedBaggage#物品拿取,leavePosition#离岗检测,failDown#人员倒地,violentMotion#剧烈运动,safetyHelmetDetection#安全帽检测,peopleNumChange#人数变化,getUp#起身,advReachHeight#折线攀高,Standup#人员站立检测,rapidMove#快速移动,group#人员聚集,scenechangedetection#场景变更,PIR#PIR报警]-->VMD
      </eventType>
      <AlarmInParam>
        <!--opt, object, 报警输入参数, dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,alarmIn}, desc:eventType == "alarmIn"时有效;若eventType=="alarmIn", 但是没有该节点,表示全部报警输入事件-->
        <alarmInIDList>
          <!--opt, object, 报警输入号列表, desc:没有该节点表示全部报警输入号-->
          <alarmInID>
            <!--opt, int, 报警输入号, range:[,], step:, unit:, unitType:-->1
          </alarmInID>
        </alarmInIDList>
      </AlarmInParam>
      <InquestParam>
        <!--opt, object, 审讯事件参数 , dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,inquest}, desc:eventType == "inquest"时有效;若eventType=="inquest", 但是没有该节点,表示全部审讯事件,包括审讯开始信息,审讯停止信息,重点标记信息,审讯片断状态信息;-->
        <roomID>
          <!--opt, int, 审讯室ID, range:[1,2], step:, unit:, unitType:, desc:没有该节点表示全部审讯室-->0
        </roomID>
      </InquestParam>
      <ACSAlarmParam>
        <!--opt, object, 门禁事件参数, dep:and,{$.RecordPassBackHistoryPlanCfg.ScheduleActionList[*].ScheduleAction.eventType,eq,AccessControllerEvent}, desc:== "AccessControllerEvent"时有效;eventType=="AccessControllerEvent", 但是没有该节点,表示全部门禁事件-->
        <majorEventType>
          <!--opt, int, 报警主类型, range:[,], step:, unit:, unitType:, desc:注意此处是10进制,参数“AccessControllerEvent”事件的宏定义; 没有该节点表示全部-->0
        </majorEventType>
      </ACSAlarmParam>
    </ScheduleAction>
  </ScheduleActionList>
</RecordPassBackHistoryPlanCfg>

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

45. 获取token密钥获取能力

45.1 命令

GET /ISAPI/System/Token/secretKey/capabilities

45.2 输入参数

无

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TokenSecretKeyCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, token密钥获取能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <tokenAuthenticateEnable opt="true,false">
    <!--ro, req, bool, 是否启用token认证, attr:opt{req, string, 取值范围, range:[,]}-->true
  </tokenAuthenticateEnable>
  <authenticateMode opt="shareKey">
    <!--ro, req, enum, 认证方式, subType:string, [shareKey#目前仅支持：shareKey], attr:opt{req, string, 取值范围, range:[,]}, desc:目前仅支持：shareKey-->shareKey
  </authenticateMode>
  <KeyInfo>
    <!--ro, req, object, 秘钥信息-->
    <digesType opt="sha256">
      <!--ro, req, enum, 摘要算法类型, subType:string, [sha256#sha256], attr:opt{req, string, 取值范围, range:[,]}, desc:目前仅支持1种摘要算法：sha256-->sha256
    </digesType>
    <iterationTimes opt="50000,80000,100000">
      <!--ro, req, enum, 迭代次数, subType:int, [50000#50000,80000#80000,100000#100000], attr:opt{req, string, 取值范围, range:[,]}, desc:目前仅支持以下迭代次数：50000、80000、100000-->50000
    </iterationTimes>
    <encryptAlgorithmType opt="AES">
      <!--ro, req, enum, 加密算法, subType:string, [AES#AES], attr:opt{req, string, 取值范围, range:[,]}, desc:目前仅支持AES-->AES
    </encryptAlgorithmType>
    <keyLen opt="128,256">
      <!--ro, req, enum, 密钥长度, subType:string, [128#128,256#256], attr:opt{req, string, 取值范围, range:[,]}-->128
    </keyLen>
    <encryptAlgorithmMode opt="ECB,CBC,CFB,OFB">
      <!--ro, req, enum, 加密算法模式, subType:string, [ECB#ECB,CBC#CBC,CFB#CFB,OFB#OFB], attr:opt{req, string, 取值范围, range:[,]}-->ECB
    </encryptAlgorithmMode>
    <encryptAlgorithmFill opt="yes,no">
      <!--ro, req, enum, 加密算法填充方式, subType:string, [yes#填充,no#不填充], attr:opt{req, string, 取值范围, range:[,]}, desc:即AES明文,不足16的倍数,是否需要自动补齐-->yes
    </encryptAlgorithmFill>
  </KeyInfo>
</TokenSecretKeyCap>

46. 设置token密钥

46.1 命令

POST /ISAPI/System/Token/secretKey

46.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TokenSecretKey xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, token密钥获取能力集, attr:version{req, string, 协议版本, range:[,]}-->
  <tokenAuthenticateEnable>
    <!--ro, req, bool, 是否启用token认证-->true
  </tokenAuthenticateEnable>
  <authenticateMode>
    <!--ro, req, enum, 认证方式, subType:string, [shareKey#目前仅支持：shareKey], desc:目前仅支持：shareKey-->shareKey
  </authenticateMode>
  <keyInfo>
    <!--ro, req, object, 秘钥信息, dep:and,{$.TokenSecretKey.tokenAuthenticateEnable,eq,true}-->
    <key>
      <!--req, string, 密钥, range:[,], desc:密钥含有不可见字符,上层会对该字段进行base编码,设备进行base64解码-->test
    </key>
    <digesType>
      <!--ro, req, enum, 摘要算法类型, subType:string, [sha256#sha256], desc:目前仅支持1种摘要算法：sha256-->sha256
    </digesType>
    <iterationTimes>
      <!--ro, req, enum, 迭代次数, subType:int, [50000#50000,80000#80000,100000#100000], desc:目前仅支持以下迭代次数：50000、80000、100000-->50000
    </iterationTimes>
    <encryptAlgorithmType>
      <!--ro, req, enum, 加密算法, subType:string, [AES#AES], desc:目前仅支持AES-->AES
    </encryptAlgorithmType>
    <keyLen>
      <!--ro, req, enum, 密钥长度, subType:string, [128#128,256#256]-->128
    </keyLen>
    <encryptAlgorithmMode>
      <!--ro, req, enum, 加密算法模式, subType:string, [ECB#ECB,CBC#CBC,CFB#CFB,OFB#OFB]-->ECB
    </encryptAlgorithmMode>
    <encryptAlgorithmFill>
      <!--ro, req, enum, 加密算法填充方式, subType:string, [yes#填充,no#不填充], desc:即AES明文,不足16的倍数,是否需要自动补齐-->yes
    </encryptAlgorithmFill>
  </keyInfo>
</TokenSecretKey>

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

47. 设置token校验

47.1 命令

POST /ISAPI/System/Token/check

47.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TokenInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--req, object, token信息, attr:version{req, string, 协议版本, range:[,]}-->
  <randomStringCiphertext>
    <!--req, string, 随机串密文, range:[,]-->test
  </randomStringCiphertext>
  <randomStringDigest>
    <!--req, string, 随机串摘要, range:[,]-->test
  </randomStringDigest>
</TokenInfo>

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

48. 获取轻存储能力

48.1 命令

GET /ISAPI/ContentMgmt/channels/<channelID>/liteStorage/capabilities

48.2 输入参数

无

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LiteStorage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <capacity>
    <!--ro, opt, float, 容量, range:[,], step:, unit:GB, unitType:信息量-->0.000
  </capacity>
  <storageTime>
    <!--ro, req, int, 存储时间, range:[,], step:, unit:, unitType:-->1
  </storageTime>
  <level opt="low,medium,high" def="medium">
    <!--ro, req, enum, 等级, subType:string, [low#低,medium#中,high#高], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->low
  </level>
  <DefStorageTime>
    <!--ro, opt, object, 默认存储时间-->null
    <low min="1" max="10">
      <!--ro, opt, int, 低模式下天数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </low>
    <medium min="1" max="10">
      <!--ro, opt, int, 中模式下天数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </medium>
    <high min="1" max="10">
      <!--ro, opt, int, 高模式下天数, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </high>
  </DefStorageTime>
</LiteStorage>

49. 获取轻存储参数

49.1 命令

GET /ISAPI/ContentMgmt/channels/<channelID>/liteStorage

49.2 输入参数

无

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<LiteStorage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, string, 索引, range:[,]-->test
  </id>
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <capacity>
    <!--ro, opt, float, 容量, range:[,], step:, unit:GB, unitType:信息量-->0.000
  </capacity>
  <storageTime min="1" max="30">
    <!--ro, req, int, 存储时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </storageTime>
  <level>
    <!--ro, req, enum, 等级, subType:string, [low#低,medium#中,high#高]-->low
  </level>
  <DefStorageTime>
    <!--ro, opt, object, 默认存储时间-->
    <low>
      <!--ro, opt, int, 低模式下天数, range:[,], step:, unit:, unitType:-->1
    </low>
    <medium>
      <!--ro, opt, int, 中模式下天数, range:[,], step:, unit:, unitType:-->1
    </medium>
    <high>
      <!--ro, opt, int, 高模式下天数, range:[,], step:, unit:, unitType:-->1
    </high>
  </DefStorageTime>
</LiteStorage>

50. 配置轻存储参数

50.1 命令

PUT /ISAPI/ContentMgmt/channels/<channelID>/liteStorage

50.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<LiteStorage xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, string, 索引, range:[,]-->test
  </id>
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <capacity>
    <!--opt, float, 容量, range:[,], step:, unit:GB, unitType:信息量-->0.000
  </capacity>
  <storageTime min="1" max="30">
    <!--req, int, 存储时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </storageTime>
  <level>
    <!--req, enum, 等级, subType:string, [low#低,medium#中,high#高]-->low
  </level>
  <DefStorageTime>
    <!--opt, object, 默认存储时间-->
    <low>
      <!--opt, int, 低模式下天数, range:[,], step:, unit:, unitType:-->1
    </low>
    <medium>
      <!--opt, int, 中模式下天数, range:[,], step:, unit:, unitType:-->1
    </medium>
    <high>
      <!--opt, int, 高模式下天数, range:[,], step:, unit:, unitType:-->1
    </high>
  </DefStorageTime>
</LiteStorage>

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


司法行业主机

1. 获取设备系统能力

1.1 命令

GET /ISAPI/System/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DeviceCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 设备系统能力, attr:version{opt, string, 版本信息, range:[,]}-->
  <isSupportPreview>
    <!--ro, opt, bool, 是否支持预览-->true
  </isSupportPreview>
  <isSupportSystemMaintain>
    <!--ro, opt, bool, 是否支持系统维护, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportSystemMaintain>
  <isSupportReboot>
    <!--ro, opt, bool, 是否支持重启, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportReboot>
  <isSupportFactoryReset>
    <!--ro, opt, bool, 是否支持恢复出厂设置, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportFactoryReset>
  <isSupportConfigurationData>
    <!--ro, opt, bool, 交通产线必填且为true, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportConfigurationData>
  <isSupportUpdatefirmware>
    <!--ro, opt, bool, 是否支持设备升级, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportUpdatefirmware>
  <isSupportDeviceInfo>
    <!--ro, opt, bool, 是否支持获取设备信息, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportDeviceInfo>
  <isSupportTime>
    <!--ro, opt, bool, 表示是否支持时间配置, desc:交通产线必填且为true,其他产线使用的是isSupportTimeCap-->true
  </isSupportTime>
  <SysCap>
    <!--ro, opt, object, 系统能力-->
    <isSupportDst>
      <!--ro, opt, bool, 是否支持夏令时-->true
    </isSupportDst>
    <NetworkCap>
      <!--ro, opt, object, 网络能力, desc:接口:/ISAPI/System/Network/capabilities-->
      <isSupportWireless>
        <!--ro, req, bool, 是否支持无线网-->true
      </isSupportWireless>
      <isSupportWAN>
        <!--ro, opt, bool, 是否支持广域网-->true
      </isSupportWAN>
      <isSupportPPPoE>
        <!--ro, req, bool, 是否支持以太网点对点协议-->true
      </isSupportPPPoE>
      <isSupportBond>
        <!--ro, req, bool, 是否支持网卡绑定-->true
      </isSupportBond>
      <isSupport802_1x>
        <!--ro, req, bool, 是否支持802.1x协议-->true
      </isSupport802_1x>
      <isSupportNtp>
        <!--ro, opt, bool, 是否支持网络时间协议-->true
      </isSupportNtp>
      <isSupportFtp>
        <!--ro, opt, bool, 是否支持文件传输协议-->true
      </isSupportFtp>
      <isSupportUpnp>
        <!--ro, opt, bool, 是否支持通用即用即插协议-->true
      </isSupportUpnp>
      <isSupportPNP>
        <!--ro, opt, bool, 是否支持即用即插协议-->true
      </isSupportPNP>
      <isSupportDdns>
        <!--ro, opt, bool, 是否支持动态域名服务-->true
      </isSupportDdns>
      <isSupportHttps>
        <!--ro, opt, bool, 是否支持超文本传输安全协议-->true
      </isSupportHttps>
      <isSupport28181>
        <!--ro, opt, bool, 是否支持GB28181协议-->true
      </isSupport28181>
      <SnmpCap>
        <!--ro, opt, object, 简单网络管理协议能力-->
        <isSupport>
          <!--ro, req, bool, 是否支持简单网络管理协议-->true
        </isSupport>
      </SnmpCap>
      <isSupportExtNetCfg>
        <!--ro, opt, bool, whether supports configuring extended network parameter-->true
      </isSupportExtNetCfg>
      <isSupportIPFilter>
        <!--ro, opt, bool, 是否支持IP过滤-->true
      </isSupportIPFilter>
      <isSupportSSH opt="true,false">
        <!--ro, opt, bool, 是否支持SSH, attr:opt{opt, string, 未定义, range:[,]}-->true
      </isSupportSSH>
      <isSupportNetPreviewStrategy>
        <!--ro, opt, bool, 网络预览策略-->true
      </isSupportNetPreviewStrategy>
      <isSupportEZVIZ>
        <!--ro, opt, bool, 是否支持萤石协议-->true
      </isSupportEZVIZ>
      <isSupportEhome>
        <!--ro, opt, bool, ehome（ISUP）服务器配置-->true
      </isSupportEhome>
      <isSupportWirelessDial>
        <!--ro, opt, bool, 是否支持无线拨号协议-->true
      </isSupportWirelessDial>
      <isSupportWirelessServer>
        <!--ro, opt, bool, 是否这次会无线服务器-->true
      </isSupportWirelessServer>
      <isSupportWPS>
        <!--ro, opt, bool, 是否支持Wi-Fi安全防护设定(Wi-Fi Protected Setup)-->true
      </isSupportWPS>
      <isWirelessMutexWithWirelessServer>
        <!--ro, opt, bool, 是否支持无线接入和无线服务互斥-->true
      </isWirelessMutexWithWirelessServer>
      <isSupportMACFilter>
        <!--ro, opt, bool, 是否支持物理地址过滤-->true
      </isSupportMACFilter>
      <GB28181Cap>
        <!--ro, opt, object, GB28181服务器配置能力-->
        <isSupportGB28181Service>
          <!--ro, opt, bool, GB28181服务器配置-->true
        </isSupportGB28181Service>
      </GB28181Cap>
      <WPS>
        <!--ro, opt, object, Wi-Fi Protected Setup;WiFi保护设置-->
        <NetworkInterfaceList size="2">
          <!--ro, opt, array, 网络节点列表, subType:object, range:[,], attr:size{opt, string, 未定义, range:[,]}-->
          <NetworkInterface>
            <!--ro, opt, object, 网络节点-->
            <id>
              <!--ro, req, string, 网卡索引, range:[,]-->1
            </id>
            <enabled>
              <!--ro, req, bool, 使能开关-->true
            </enabled>
            <isSupportAutoConnect>
              <!--ro, opt, bool, 是否支持自动连接-->true
            </isSupportAutoConnect>
            <isSupportDevicePinCode>
              <!--ro, opt, bool, 是否支持设备PIN码-->true
            </isSupportDevicePinCode>
            <isSupportDevicePinCodeUpdate>
              <!--ro, opt, bool, 是否支持设备PIN码更新-->true
            </isSupportDevicePinCodeUpdate>
            <ApPinCode>
              <!--ro, opt, object, 接入点PIN码-->
              <ssid min="1" max="1">
                <!--ro, opt, string, 服务集标识, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
              </ssid>
              <pinCode min="1" max="1">
                <!--ro, opt, string, PIN码, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
              </pinCode>
            </ApPinCode>
          </NetworkInterface>
        </NetworkInterfaceList>
      </WPS>
      <isSupportRFIDData>
        <!--ro, opt, bool, 是否支持RFID采集配置-->true
      </isSupportRFIDData>
      <verificationCode min="1" max="1">
        <!--ro, opt, string, 验证码, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
      </verificationCode>
      <WPSCap>
        <!--ro, opt, object, WiFi保护设置能力配置-->
        <isSupport>
          <!--ro, req, bool, 是否支持Wi-Fi安全防护设定(Wi-Fi Protected Setup)-->true
        </isSupport>
        <isSupportAutoConnect>
          <!--ro, req, bool, 是否支持自动连接-->true
        </isSupportAutoConnect>
      </WPSCap>
      <NetWorkMode>
        <!--ro, opt, object, 网络模式配置-->
        <workMode>
          <!--ro, opt, string, 网络模式, range:[,]-->true
        </workMode>
      </NetWorkMode>
      <VerificationCodeModification>
        <!--ro, opt, object, 设备验证码配置-->
        <verificationCodeType opt="normal,empty">
          <!--ro, opt, string, 验证码类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->true
        </verificationCodeType>
        <isSupportDeclarationURL>
          <!--ro, opt, bool, 是否支持服务申明的超链接-->true
        </isSupportDeclarationURL>
        <isSupportPrivacyPolicyURL>
          <!--ro, opt, bool, 是否支持隐私条款的超链接-->true
        </isSupportPrivacyPolicyURL>
        <verificationCodeModify opt="true,false">
          <!--ro, opt, bool, 设备验证码是否修改过, attr:opt{opt, string, 未定义, range:[,]}-->true
        </verificationCodeModify>
        <Hyperlinks>
          <!--ro, opt, object, 超链接配置-->
          <declarationURL>
            <!--ro, opt, string, 服务申明的超链接, range:[,]-->null
          </declarationURL>
          <privacyPolicyURL>
            <!--ro, opt, string, 支持隐私条款的超链接, range:[,]-->null
          </privacyPolicyURL>
        </Hyperlinks>
        <isSupportVerificationCodeCheck>
          <!--ro, opt, bool, 是否支持验证码校验-->true
        </isSupportVerificationCodeCheck>
        <isSupportOldVerificationCode>
          <!--ro, opt, bool, 是否支持老版本萤石密码配置（老版本密码为六位-->true
        </isSupportOldVerificationCode>
      </VerificationCodeModification>
      <isSupportIntegrate>
        <!--ro, opt, bool, 是否支持接入协议配置-->true
      </isSupportIntegrate>
      <isSupportPlatformAccess>
        <!--ro, opt, bool, 是否支持平台接入-->true
      </isSupportPlatformAccess>
      <isSupportIntelligentBoost>
        <!--ro, opt, bool, 是否支持智能加速功能-->true
      </isSupportIntelligentBoost>
      <isSupportResourceStatistics>
        <!--ro, opt, bool, 是否支持网络资源信息-->true
      </isSupportResourceStatistics>
      <isSupportBandwidthLimit>
        <!--ro, opt, bool, 是否支持带宽限制-->true
      </isSupportBandwidthLimit>
      <isSupportPOEPortsDisableAdaptiveServer>
        <!--ro, opt, bool, 是否支持POE协议-->true
      </isSupportPOEPortsDisableAdaptiveServer>
      <isSupportPOEConfiguration>
        <!--ro, opt, bool, 是否支持POE网卡参数配置-->true
      </isSupportPOEConfiguration>
      <isSupportGetLinkSocketIP>
        <!--ro, opt, bool, 是否支持获取当前链接的SocketIP-->true
      </isSupportGetLinkSocketIP>
      <isSupportWebSocket>
        <!--ro, opt, bool, 是否支持WebSocket-->true
      </isSupportWebSocket>
      <isSupportWebSocketS>
        <!--ro, opt, bool, 是否支持WebSocketS-->true
      </isSupportWebSocketS>
      <Adaption>
        <!--ro, opt, object, 网络自适应配置-->
        <streamType opt="0,1,2,3,4,5,7,8,9,10">
          <!--ro, opt, string, 支持预览网络自适应的码流类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:0-主码流,1-子码流,2-码流3,3-码流4/虚拟码流,4-码流5,5-码流6,7-码流7,8-码流8,9-码流9,10-码流10以此类推,此处索引值与SDK预览结构体中NET_DVR_PREVIEWINFO保持一致,要注意的是索引值中无6索引值,码流从7开始于RTSP预览索引值保持一致-->null
        </streamType>
        <isSupportPlayback>
          <!--ro, opt, bool, 回放是否支持-->true
        </isSupportPlayback>
      </Adaption>
      <isSupportVideoImgDB>
        <!--ro, opt, bool, 是否支持视图库配置-->true
      </isSupportVideoImgDB>
      <isSupportEventDataOverWebSocket opt="true,false">
        <!--ro, opt, bool, 是否支持通过WebSocket上报事件数据, attr:opt{opt, string, 未定义, range:[,]}-->true
      </isSupportEventDataOverWebSocket>
      <isSupportDynamicHostName>
        <!--ro, opt, bool, 是否支持动态域名配置-->true
      </isSupportDynamicHostName>
      <isSupportEZVIZTiming>
        <!--ro, opt, bool, 是否支持萤石平台校时, desc:接口:/ISAPI/System/Network/EZVIZ中的EZVIZ.enabledTiming-->true
      </isSupportEZVIZTiming>
      <isSupportTrafficMonitor>
        <!--ro, opt, bool, 是否支持流量监控, desc:接口:/ISAPI/System/Network/WirelessDial/Interfaces/<ID>/trafficMonitor?format=json-->true
      </isSupportTrafficMonitor>
      <isSupportDMSAuthInfo>
        <!--ro, opt, bool, 是否支持DMS认证信息管理-->true
      </isSupportDMSAuthInfo>
      <isSupportWiredandWirelessTrafficMonitor>
        <!--ro, opt, bool, 是否支持流量监控(无线网卡和有线网卡), desc:接口:/ISAPI/System/Network/Interfaces/<ID>/trafficMonitor?format=json-->true
      </isSupportWiredandWirelessTrafficMonitor>
      <isSupport4G>
        <!--ro, opt, bool, 是否支持4G模块-->true
      </isSupport4G>
      <isSupport4GConfig>
        <!--ro, opt, bool, 是否支持4G配置-->true
      </isSupport4GConfig>
      <isSupportGRIDServer>
        <!--ro, opt, bool, 是否支持国网B服务器参数配置-->true
      </isSupportGRIDServer>
      <isSupportGRIDInfo>
        <!--ro, opt, bool, 是否支持设备的国网B通道参数配置-->true
      </isSupportGRIDInfo>
      <isSupportSipTransmit>
        <!--ro, opt, bool, 是否支持Sip传输参数配置-->true
      </isSupportSipTransmit>
      <isSupportWifiCascade>
        <!--ro, opt, bool, 设备wifi自动级联使能能力, desc:接口:/ISAPI/System/Network/wifiCascade?format=json-->true
      </isSupportWifiCascade>
      <isSupportRelativeInfo>
        <!--ro, opt, bool, 已连接设备相关信息, desc:接口:/ISAPI/System/Network/wifiCascade/relativeInfo?format=json-->true
      </isSupportRelativeInfo>
      <isSupportEmailEncrypt>
        <!--ro, opt, bool, 是否支持邮箱配置加密-->true
      </isSupportEmailEncrypt>
      <isSupportPortFilter>
        <!--ro, opt, bool, 是否支持端口过滤-->true
      </isSupportPortFilter>
      <isSupportPingDeny>
        <!--ro, opt, bool, 是否支持禁止ping设备配置功能-->true
      </isSupportPingDeny>
      <isSupportDOSDeny>
        <!--ro, opt, bool, 是否支持防止DOS攻击配置功能-->true
      </isSupportDOSDeny>
      <isSupportNetworkStatus>
        <!--ro, opt, bool, 是否支持网络状态查询, desc:接口:/ISAPI/System/Network/status?format=json-->true
      </isSupportNetworkStatus>
      <isSupportEZVIZQRcode>
        <!--ro, opt, bool, 是否支持萤石二维码获取, desc:对应控制接口：/ISAPI/System/Network/EZVIZ/QRCode?format=json-->true
      </isSupportEZVIZQRcode>
      <isSupportEZVIZUnbind>
        <!--ro, opt, bool, 是否支持萤石解绑功能, desc:/ISAPI/System/Network/EZVIZ/unbind?format=json-->true
      </isSupportEZVIZUnbind>
      <isSupportPingtest>
        <!--ro, opt, bool, 是否支持ping测试, desc:对应/ISAPI/System/Network/pingtest/capabilities-->true
      </isSupportPingtest>
      <isSupportMOTCloudPlateform>
        <!--ro, opt, bool, 是否支持接入云平台服务参数, desc:对应/ISAPI/System/Network/Traffic/MOTCloudPlateform/capabilities?format=json-->true
      </isSupportMOTCloudPlateform>
      <isSupportSpectrumScan>
        <!--ro, opt, bool, 是否支持频谱扫描, desc:对应/ISAPI/System/Network/interface/<netCardID>/spectrumScan/capabilities?format=json-->true
      </isSupportSpectrumScan>
      <isSupportFRP>
        <!--ro, opt, bool, 是否支持FRP内网透传, desc:对应/ISAPI/Syetem/Network/FRP?format=json-->true
      </isSupportFRP>
      <isSupport5GModule>
        <!--ro, opt, bool, 是否支持5G模块相关配置, desc:对应/ISAPI/System/Network/5GModule/capabilities?format=json-->true
      </isSupport5GModule>
      <isSupportWirelessDialRoute>
        <!--ro, opt, bool, 是否支持无线拨号路由转发规则参数配置, desc:对应/ISAPI/System/Network/WirelessDia/route/capabilities?format=json-->true
      </isSupportWirelessDialRoute>
      <isSupportNPlusOne>
        <!--ro, opt, bool, 是否支持N+1协议-->true
      </isSupportNPlusOne>
      <supportEnvironmentalStandards opt="HJ212">
        <!--ro, opt, string, 环境检测标准, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:HJ212-支持HJ212协议,对应/ISAPI/System/Network/HJ212?format=json;-->true
      </supportEnvironmentalStandards>
      <isSupportIntranetSegment>
        <!--ro, opt, bool, 是否支持内部网段配置, desc:支持返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/intranetSegment/capabilities?format=json-->true
      </isSupportIntranetSegment>
      <isSupportDHCPServer>
        <!--ro, opt, bool, 是否DHCP服务配置, desc:支持返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/DHCPServer/capabilities?format=json-->true
      </isSupportDHCPServer>
      <isSupportHydrologicMonitoring>
        <!--ro, opt, bool, 是否支持水文监测数据通信, desc:支持《SL 651-2014 水文监测数据通信规约》返回true,不支持返回false或不返回该节点。对应/ISAPI/System/Network/HydrologicMonitoring/capabilities?format=json-->true
      </isSupportHydrologicMonitoring>
    </NetworkCap>
    <IOCap>
      <!--ro, opt, object, IO能力, desc:接口:/ISAPI/System/IO/capabilities-->
      <IOInputPortNums>
        <!--ro, opt, int, 设备本地IO输入口个数, range:[,], step:, unit:, unitType:-->true
      </IOInputPortNums>
      <IOOutputPortNums>
        <!--ro, opt, int, 设备本地IO输出口个数, range:[,], step:, unit:, unitType:-->true
      </IOOutputPortNums>
      <isSupportStrobeLamp>
        <!--ro, opt, bool, 是否IO输出闸门灯配置, desc:接口:/ISAPI/System/IO/outputs/strobelampConf 是否支持-->true
      </isSupportStrobeLamp>
      <SoftIOInputPortNums>
        <!--ro, opt, int, 设备软IO输入口个数, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/System/IO/softInputs/capabilities?format=json是否支持-->true
      </SoftIOInputPortNums>
      <isSupportIOOutputAdvanceParameter>
        <!--ro, opt, bool, 是否支持IO输出口高级参数配置, desc:接口:/ISAPI/System/IO/outputs/advanceParameter/capabilities?format=json是否支持-->true
      </isSupportIOOutputAdvanceParameter>
      <isSupportSetAllIOOutput>
        <!--ro, opt, bool, 是否支持设置所有IO, desc:接口:/ISAPI/System/IO/outputs是否支持PUT-->true
      </isSupportSetAllIOOutput>
      <isSupportCombinationAlarm>
        <!--ro, opt, bool, 是否支持组合报警, desc:接口:/ISAPI/System/IO/inputs/capabilities中CombinationAlarmCap节点-->true
      </isSupportCombinationAlarm>
    </IOCap>
    <SerialCap>
      <!--ro, opt, object, 设备支持的485串口号范围-->
      <rs485PortNums>
        <!--ro, opt, int, 设备支持的rs485的串口最大数量, range:[,], step:, unit:, unitType:-->true
      </rs485PortNums>
      <supportRS232Config>
        <!--ro, opt, bool, 设备是否支持的rs232串口相关参数配置-->true
      </supportRS232Config>
      <rs422PortNums>
        <!--ro, opt, int, 设备支持的rs422的串口最大数量, range:[,], step:, unit:, unitType:-->true
      </rs422PortNums>
      <rs232PortNums>
        <!--ro, opt, int, 设备支持的rs232的串口最大数量, range:[,], step:, unit:, unitType:-->true
      </rs232PortNums>
      <rs485WorkMode opt="Led,CaptureTrigger">
        <!--ro, opt, string, 设备支持的rs485的工作模式, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:Led-外接LED屏,作用于LED显示,CaptureTrigger-外接触发设备进行触发抓拍数据传输-->null
      </rs485WorkMode>
      <rs232SerialNumber opt="1,2,3">
        <!--ro, opt, string, 设备支持的232串口号范围, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </rs232SerialNumber>
      <rs485SerialNumber opt="4,5,6">
        <!--ro, opt, string, 设备支持的485串口号范围, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </rs485SerialNumber>
      <isSupportAuthenticationService>
        <!--ro, opt, bool, 设备是否支持串口认证服务-->true
      </isSupportAuthenticationService>
    </SerialCap>
    <VideoCap>
      <!--ro, opt, object, 视频编码能力, desc:接口:/ISAPI/System/Video/capabilities-->
      <videoInputPortNums>
        <!--ro, opt, int, 视频输入端口个数, range:[,], step:, unit:, unitType:-->true
      </videoInputPortNums>
      <videoOutputPortNums>
        <!--ro, opt, int, 视频输出端口个数, range:[,], step:, unit:, unitType:-->true
      </videoOutputPortNums>
      <menuNums>
        <!--ro, opt, int, 支持显示本地菜单数目, range:[,], step:, unit:, unitType:-->true
      </menuNums>
      <externalChannelNum>
        <!--ro, opt, bool, 外扩模拟通道个数-->true
      </externalChannelNum>
      <isSupportHeatmap>
        <!--ro, opt, bool, 是否支持热度图-->true
      </isSupportHeatmap>
      <isSupportCounting>
        <!--ro, opt, bool, 是否支持人数统计-->true
      </isSupportCounting>
      <countingType>
        <!--ro, opt, string, 统计类型, range:[,], desc:human:表示的是客流统计；object:表示的是过线计数-->null
      </countingType>
      <isSupportPicture>
        <!--ro, opt, bool, 是否支持OSD图片叠加-->true
      </isSupportPicture>
      <isSupportPreviewSwitch>
        <!--ro, opt, bool, 是否支持预览切换-->true
      </isSupportPreviewSwitch>
      <isSupportMultiChannelCounting>
        <!--ro, opt, bool, 是否支持多通道统计-->true
      </isSupportMultiChannelCounting>
      <isSupportCountingCollection>
        <!--ro, opt, bool, 是否支持客流量补录-->true
      </isSupportCountingCollection>
      <isSupportHeatmapCollection>
        <!--ro, opt, bool, 是否支持热度图数据补录-->true
      </isSupportHeatmapCollection>
      <channelFlexible opt="name,online,linknum">
        <!--ro, opt, string, 位置在isSupportHeatmapCollection之后, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->true
      </channelFlexible>
      <isSupportMixedChannel>
        <!--ro, opt, bool, 位置在channelFlexible之后-->true
      </isSupportMixedChannel>
      <isSupportMixedChannelStatus>
        <!--ro, opt, bool, 位置在isSupportMixedChannel之后-->true
      </isSupportMixedChannelStatus>
      <isSupportRecodStatus>
        <!--ro, opt, bool, 是否支持录像状态查询-->true
      </isSupportRecodStatus>
      <isSupportPrivacyMask>
        <!--ro, opt, bool, 是否支持隐私遮蔽功能-->true
      </isSupportPrivacyMask>
      <isSupportBinocularPreviewSwitch>
        <!--ro, opt, bool, 是否支持双目预览切换-->true
      </isSupportBinocularPreviewSwitch>
      <isSupportCalibCheck>
        <!--ro, opt, bool, 是否支持标定检验-->true
      </isSupportCalibCheck>
      <isSupportPIP>
        <!--ro, opt, bool, 是否支持PIP-->true
      </isSupportPIP>
      <isSupportFocusVideoMode>
        <!--ro, opt, bool, 聚焦视频模式-->true
      </isSupportFocusVideoMode>
      <isSupportExternalChannel>
        <!--ro, opt, bool, 是否支持外扩模拟通道-->true
      </isSupportExternalChannel>
    </VideoCap>
    <AudioCap>
      <!--ro, opt, object, 音频编码能力, desc:接口:/ISAPI/System/Audio/capabilities-->
      <audioInputNums>
        <!--ro, req, int, 音频输入个数, range:[,], step:, unit:, unitType:-->1
      </audioInputNums>
      <audioOutputNums>
        <!--ro, req, int, 音频输出个数, range:[,], step:, unit:, unitType:-->1
      </audioOutputNums>
      <mixAudioInSet>
        <!--ro, opt, bool, 待确认-->true
      </mixAudioInSet>
      <mixAudioOutSet>
        <!--ro, opt, bool, 待确认-->true
      </mixAudioOutSet>
      <isSupportAudioMixing>
        <!--ro, opt, bool, 是否支持音频混音-->true
      </isSupportAudioMixing>
      <isSupportRemoveFrequencyPoint>
        <!--ro, opt, bool, 是否支持啸叫频点清除-->true
      </isSupportRemoveFrequencyPoint>
      <isSupportAudioInConfig>
        <!--ro, opt, bool, 是否支持全部音量输入配置, desc:接口:/ISAPI/System/Audio/AudioIn/capabilities-->true
      </isSupportAudioInConfig>
      <muteDuringPanTilt opt="MicIn">
        <!--ro, opt, string, 是否支持运动时消音, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:接口:/ISAPI/System/TwoWayAudio/channels/ID的muteDuringPanTilt节点配置-->true
      </muteDuringPanTilt>
    </AudioCap>
    <isSupportHolidy>
      <!--ro, opt, bool, 位置只能确定在AudioCap-->true
    </isSupportHolidy>
    <RebootConfigurationCap>
      <!--ro, opt, object, 参数配置重启能力, desc:接口:/ISAPI/System/reboot/capabilities 位置只能确定在isSupportHolidy之后,isSupportSubscribeEvent之前-->
      <Genetec>
        <!--ro, opt, bool, Genetec协议开关-->true
      </Genetec>
      <ONVIF>
        <!--ro, opt, bool, ONVIF协议开关-->true
      </ONVIF>
      <RTSP>
        <!--ro, opt, bool, RTSP协议开关-->true
      </RTSP>
      <HTTP>
        <!--ro, opt, bool, HTTP协议开关-->true
      </HTTP>
      <SADP>
        <!--ro, opt, object, 表示SADP发现协议（包括链路层和多播发现）-->
        <ISDiscoveryMode>
          <!--ro, opt, bool, SADP的多播发现协议模式-->true
        </ISDiscoveryMode>
        <PcapMode>
          <!--ro, opt, bool, 表示SADP的链路层发现协议-->true
        </PcapMode>
      </SADP>
      <IPCAddStatus>
        <!--ro, opt, bool, IP地址状态-->true
      </IPCAddStatus>
    </RebootConfigurationCap>
    <isSupportExternalDevice>
      <!--ro, opt, bool, 是否支持设备接入外设功能(true-支持, desc:接口:/ISAPI/System/externalDevice/capabilities)-->true
    </isSupportExternalDevice>
    <isSupportSoundCfg>
      <!--ro, opt, bool, 是否支持声音配置, desc:接口:/ISAPI/System/SoundCfg/capabilities-->null
    </isSupportSoundCfg>
    <isSupportSubscribeEvent>
      <!--ro, opt, bool, 是否支持事件订阅, desc:接口:/ISAPI/Event/notification/subscribeEventCap-->true
    </isSupportSubscribeEvent>
    <isSupportSubscribeIOTInfo>
      <!--ro, opt, bool, 是否支持物联网信息订阅-->true
    </isSupportSubscribeIOTInfo>
    <isSupportDiagnosedData>
      <!--ro, opt, bool, 是否支持设备诊断数据导出功能, desc:true-支持,不支持不返回该节点,接口:/ISAPI/System/diagnosedData-->true
    </isSupportDiagnosedData>
    <isSupportChangedUpload>
      <!--ro, opt, bool, 变化上报能力-->true
    </isSupportChangedUpload>
    <isSupportGettingWorkingStatus>
      <!--ro, opt, bool, 设备状态获取能力-->true
    </isSupportGettingWorkingStatus>
    <isSupportGettingChannelInfoByCondition>
      <!--ro, opt, bool, 未找到文档-->true
    </isSupportGettingChannelInfoByCondition>
    <isSupportDiagnosedDataParameter>
      <!--ro, opt, bool, 是否支持诊断信息导出开关配置-->true
    </isSupportDiagnosedDataParameter>
    <isSupportSimpleDevStatus>
      <!--ro, opt, bool, 对应是否支持获取, desc:接口:/ISAPI/System/workingstatus?format=json-->true
    </isSupportSimpleDevStatus>
    <isSupportFlexible>
      <!--ro, opt, bool, 对应是否支持灵活搭配配置ISAPI/System/Video/inputs/channels?format=json-->true
    </isSupportFlexible>
    <isSupportPTZChannels>
      <!--ro, opt, bool, 表示支持设备返回PTZ 通道（区分视频通道）-->true
    </isSupportPTZChannels>
    <isSupportMetadata>
      <!--ro, opt, bool, 支持Metadata的能力 , desc:接口:/ISAPI/Streaming/channels/<ID>/metadata/capabilities-->true
    </isSupportMetadata>
    <isSupportTimeCap>
      <!--ro, opt, bool, 是否支持时间配置, desc:接口:/ISAPI/System/time/capabilities-->true
    </isSupportTimeCap>
    <isSupportThermalStreamData>
      <!--ro, opt, bool, 是否支持热成像码流数据实时上传-->true
    </isSupportThermalStreamData>
    <isSupportShutdown>
      <!--ro, opt, bool, 是否支持关机配置, desc:接口:/ISAPI/System/shutdown?format=json-->true
    </isSupportShutdown>
    <isSupportConsumptionMode>
      <!--ro, opt, bool, 设备是否支持功耗模式切换, desc:接口:/ISAPI/System/consumptionMode/capabilities?format=json-->true
    </isSupportConsumptionMode>
    <isSupportManualPowerConsumption>
      <!--ro, opt, bool, 是否支持设备功耗手动控制-->true
    </isSupportManualPowerConsumption>
    <isSupportPostUpdateFirmware>
      <!--ro, opt, bool, 是否支持POST方法升级固件-->true
    </isSupportPostUpdateFirmware>
    <isSupportPostConfigData>
      <!--ro, opt, bool, 是否支持POST方法导入导出配置文件-->true
    </isSupportPostConfigData>
    <isSupportUserLock>
      <!--ro, opt, bool, 是否支持用户锁定, desc:接口:/ISAPI/System/userLock/config/capabilities?format=json-->true
    </isSupportUserLock>
    <isSupportModuleLock>
      <!--ro, opt, bool, 是否支持模块锁定, desc:接口:/ISAPI/System/moduleLock-->true
    </isSupportModuleLock>
    <supportSmartOverlapChannles opt="1">
      <!--ro, opt, bool, 设备是否支smart事件码流配置, attr:opt{opt, string, 支持的通道号, range:[,]}, desc:支持返回该节点及对应的通道id,不支持不返回该节点-->true
    </supportSmartOverlapChannles>
  </SysCap>
  <voicetalkNums>
    <!--ro, opt, int, 语音对讲通道数目, range:[,], step:, unit:, unitType:-->2
  </voicetalkNums>
  <isSupportSnapshot>
    <!--ro, opt, bool, 是否支持抓图-->true
  </isSupportSnapshot>
  <SecurityCap>
    <!--ro, opt, object, 表示加密能力集-->
    <supportUserNums>
      <!--ro, opt, int, 支持用户最大数, range:[,], step:, unit:, unitType:-->1
    </supportUserNums>
    <userBondIpNums>
      <!--ro, opt, int, 支持绑定IP最大数, range:[,], step:, unit:, unitType:-->1
    </userBondIpNums>
    <userBondMacNums>
      <!--ro, opt, int, 支持绑定MAC地址最大数, range:[,], step:, unit:, unitType:-->1
    </userBondMacNums>
    <isSupCertificate>
      <!--ro, opt, bool, 是否支持认证-->true
    </isSupCertificate>
    <issupIllegalLoginLock>
      <!--ro, opt, bool, 是否支持登陆锁定-->true
    </issupIllegalLoginLock>
    <isSupportOnlineUser>
      <!--ro, opt, bool, 是否支持在线用户配置-->true
    </isSupportOnlineUser>
    <isSupportAnonymous>
      <!--ro, opt, bool, 是否支持匿名登陆-->true
    </isSupportAnonymous>
    <isSupportStreamEncryption>
      <!--ro, opt, bool, 是否支持码流加密-->true
    </isSupportStreamEncryption>
    <securityVersion opt="1,2">
      <!--ro, opt, string, 加密能力, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:每一个版本包括两个方面：加密算法及加密的节点范围。目前1表示AES128加密,2表示AES256加密,加密范围在各个协议中描述-->null
    </securityVersion>
    <keyIterateNum>
      <!--ro, opt, int, 迭代次数, range:[,], step:, unit:, unitType:, desc:取值一般是100~1000-->100
    </keyIterateNum>
    <isSupportUserCheck>
      <!--ro, opt, bool, 是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验, desc:表示是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验,此功能只在支持敏感信息加密的版本上有效,即depend on securityVersion-->true
    </isSupportUserCheck>
    <isSupportGUIDFileDataExport>
      <!--ro, opt, bool, 表示是否支持设备GUID文件导出-->true
    </isSupportGUIDFileDataExport>
    <isSupportSecurityQuestionConfig>
      <!--ro, opt, bool, 表示是否支持回答安全问题-->true
    </isSupportSecurityQuestionConfig>
    <supportSecurityNode opt="wirelessServer,wirelessDial">
      <!--ro, opt, string, 为支持敏感加密的补充节点, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:由于原先制定的isapi敏感信息加密方案(即ISAPI明文传输处理方案)中,有部分接口包含了敏感信息却被遗漏了。现需对这些接口进行加密,为了兼容老设备,因此新增该能力节点。-->null
    </supportSecurityNode>
    <isSupportGetOnlineUserListSC>
      <!--ro, opt, bool, 是否支持在线用户列表查询-->true
    </isSupportGetOnlineUserListSC>
    <SecurityLimits>
      <!--ro, opt, object, 参数安全限制能力-->
      <LoginPasswordLenLimit min="1" max="16">
        <!--ro, opt, string, 用户登陆密码长度限制, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
      </LoginPasswordLenLimit>
      <SecurityAnswerLenLimit min="1" max="128">
        <!--ro, opt, string, 安全问题答案长度限制, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->null
      </SecurityAnswerLenLimit>
    </SecurityLimits>
    <RSAKeyLength opt="512,1024,2048" def="2048">
      <!--ro, opt, enum, HTTPS证书长度, subType:string, [512#512,1024#1024,2048#2048], attr:opt{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}-->2048
    </RSAKeyLength>
    <isSupportONVIFUserManagement>
      <!--ro, opt, bool, ONVIF协议用户管理-->true
    </isSupportONVIFUserManagement>
    <WebCertificateCap>
      <!--ro, opt, object, HTTP认证能力-->
      <CertificateType opt="basic,digest,digest/basic">
        <!--ro, req, string, 证书类型：basic认证, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </CertificateType>
      <SecurityAlgorithm>
        <!--ro, opt, object, 加密算法, dep:or,{$.DeviceCap.SecurityCap.WebCertificateCap.CertificateType,eq,degist},{$.DeviceCap.SecurityCap.WebCertificateCap.CertificateType,eq,digest/basic}-->
        <algorithmType opt="MD5,SHA256,MD5/SHA256">
          <!--ro, opt, string, 算法类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
        </algorithmType>
      </SecurityAlgorithm>
    </WebCertificateCap>
    <isSupportConfigFileImport>
      <!--ro, opt, bool, 是否支持配置文件安全导入-->true
    </isSupportConfigFileImport>
    <isSupportConfigFileExport>
      <!--ro, opt, bool, 是否支持配置文件安全导出-->true
    </isSupportConfigFileExport>
    <cfgFileSecretKeyLenLimit min="0" max="16">
      <!--ro, opt, string, 配置文件校验密钥长度限制, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}-->0
    </cfgFileSecretKeyLenLimit>
    <supportIPCActivatePassword>
      <!--ro, opt, bool, 是否支持IPC激活密码配置-->true
    </supportIPCActivatePassword>
    <isIrreversible>
      <!--ro, opt, bool, 设备是否支持密码不可逆存储, desc:不支持则代表设备端会存用户信息的明文密码,支持则代表设备端密码散列存储-->true
    </isIrreversible>
    <salt>
      <!--ro, opt, string, 用于用户登录时所使用的具体盐值, range:[,]-->test
    </salt>
    <isSupportOnvifInfo>
      <!--ro, opt, bool, 是否支持获取Onvif协议信息接口-->true
    </isSupportOnvifInfo>
    <isSupportUserNamePasswordCheckUpgrade>
      <!--ro, opt, bool, 是否支持用户名密码校验升级-->true
    </isSupportUserNamePasswordCheckUpgrade>
    <isSupportDeviceCertificatesManagement>
      <!--ro, opt, bool, 是否支持设备证书管理-->true
    </isSupportDeviceCertificatesManagement>
    <isSupportSIPCertificatesManagement>
      <!--ro, opt, bool, 是否支持SIP证书管理-->true
    </isSupportSIPCertificatesManagement>
    <isSupportDeviceSelfSignCertExport>
      <!--ro, opt, bool, 是否支持设备签证导出-->true
    </isSupportDeviceSelfSignCertExport>
    <isSupportSecurityEmail>
      <!--ro, opt, bool, 是否支持安全邮箱配置-->true
    </isSupportSecurityEmail>
    <isSupportRTSPCertificate opt="true,false">
      <!--ro, opt, bool, 是否支持RTSP认证, attr:opt{opt, string, 未定义, range:[,]}-->true
    </isSupportRTSPCertificate>
    <isSupportPictureURlCertificate opt="true,false">
      <!--ro, opt, bool, 图片url认证配置能力, attr:opt{opt, string, 未定义, range:[,]}-->true
    </isSupportPictureURlCertificate>
    <isSupportGB35114Certificate>
      <!--ro, opt, bool, 是否支持支持GB35114协议CA/SIP认证证书-->true
    </isSupportGB35114Certificate>
    <isSupportAuthenticationMode opt="uKey,private">
      <!--ro, opt, enum, 验证模式, subType:string, [uKey#uKey,private#private], attr:opt{req, string, 取值范围, range:[,]}-->private
    </isSupportAuthenticationMode>
    <isSupportUnloggedUserPermissionConfig opt="true,false">
      <!--ro, opt, bool, 是否支持未登录用户权限配置, attr:opt{opt, string, 未定义, range:[,]}-->true
    </isSupportUnloggedUserPermissionConfig>
    <maxIllegalLoginTimes min="3" max="20" def="5">
      <!--ro, opt, string, 最大非法登陆尝试次数, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}, desc:issupportIllegalLoginLock为true时有效,当设备最大非法登陆尝试次数时返回-->1
    </maxIllegalLoginTimes>
    <SecurityAdvanced>
      <!--ro, opt, object, 安全高级配置-->
      <securityEnhanced>
        <!--ro, opt, bool, 是否支持安全加固-->true
      </securityEnhanced>
      <noOperationEnabled>
        <!--ro, req, bool, 无操作控件超时时间使能-->true
      </noOperationEnabled>
      <noOperationTime min="1" max="60" def="15">
        <!--ro, req, int, 控件无操作超时时间, range:[,], step:, unit:分钟, unitType:, attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}-->1
      </noOperationTime>
      <isSupportDigestStatus>
        <!--ro, opt, bool, 摘要状态-->true
      </isSupportDigestStatus>
    </SecurityAdvanced>
    <LoginLinkNum>
      <!--ro, opt, object, 同时登陆数量-->
      <maxLinkNum min="1" max="128" def="50">
        <!--ro, req, int, 控件同时登陆数量, range:[,], step:, unit:, unitType:, attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]},def{opt, string, 未定义, range:[,]}-->64
      </maxLinkNum>
    </LoginLinkNum>
    <isSupportCCClientCertificate>
      <!--ro, opt, bool, 是否支持CC客户端证书功能-->true
    </isSupportCCClientCertificate>
    <passwordValidity min="0" max="365">
      <!--ro, opt, string, 密码有效期范围, range:[,], attr:min{opt, string, 未定义, range:[,]},max{opt, string, 未定义, range:[,]}, desc:单位：天,返回该节点表示支持密码有效期配置,仅管理员用户可以修改-->1
    </passwordValidity>
    <isSupportResetChannelPassword>
      <!--ro, opt, bool, 是否支持重置通道密码-->true
    </isSupportResetChannelPassword>
    <DoubleVerificationCap>
      <!--ro, opt, object, 二次认证能力-->
      <isSupportUsersConfig>
        <!--ro, opt, bool, 是否支持二次认证用户配置-->true
      </isSupportUsersConfig>
      <isSupportUsersPermissionConfig>
        <!--ro, opt, bool, 是否支持二次认证用户权限配置-->true
      </isSupportUsersPermissionConfig>
    </DoubleVerificationCap>
    <isSupportUserSearch>
      <!--ro, opt, bool, 是否支持用户查找-->true
    </isSupportUserSearch>
    <keypadPassword min="1" max="10">
      <!--ro, opt, int, 键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当不同类型用户的键盘密码长度不一致时,此节点仅表示管理员用户的键盘密码长度,否则表示所有类型用户的键盘密码的统一长度-->1
    </keypadPassword>
    <installerKeypadPassword min="1" max="10">
      <!--ro, opt, int, 安装员的键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </installerKeypadPassword>
    <operatorKeypadPassword min="1" max="10">
      <!--ro, opt, int, 操作员的键盘密码长度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </operatorKeypadPassword>
    <userOperateType opt="1,2,3">
      <!--ro, opt, enum, 用户操作类型：1-网络用户, subType:int, [1#网络用户,2#键盘用户,3#网络用户+键盘用户], attr:opt{req, string, 取值范围, range:[,]}-->1
    </userOperateType>
    <isSptUserEnabled>
      <!--ro, opt, bool, 是否支持用户使能配置-->true
    </isSptUserEnabled>
    <isSptAdminCap>
      <!--ro, opt, bool, 是否支持Admin权限能力获取-->true
    </isSptAdminCap>
    <isSupportBackLogCfg>
      <!--ro, opt, bool, 是否支持后台日志基本参数配置-->true
    </isSupportBackLogCfg>
    <isSupportBackLogExport>
      <!--ro, opt, bool, 是否支持后台日志导出-->true
    </isSupportBackLogExport>
    <isSupportModifyInnerPassword opt="true,false">
      <!--ro, opt, bool, 是否支持设备内置密码修改, attr:opt{req, string, 取值范围, range:[,]}, desc:如:数据库密码、系统账户密码-->true
    </isSupportModifyInnerPassword>
    <isSupportEncryptCertificate>
      <!--ro, opt, bool, 是否支持证书加密, desc:/ISAPI/Security/deviceCertificate-->true
    </isSupportEncryptCertificate>
    <maxIllegalLoginLockTime min="1" max="120" def="30.00">
      <!--ro, opt, int, 锁定时间范围, range:[1,120], step:, unit:min, unitType:时间, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </maxIllegalLoginLockTime>
    <cloudSensitiveInfoEncryptType>
      <!--ro, opt, string, 云敏感信息加密类型, range:[,], desc:当前设备返回"2.1",该字段返回2.1之表示敏感信息加密密钥生成方式为SHA256(calc_sha256(user, salt, SHA256(user+salt2+SHA256(user+salt+password)))+ AaBbCcDd1234!@#$)-->2.1
    </cloudSensitiveInfoEncryptType>
    <isSupportCertificateCustomID>
      <!--ro, opt, bool, 是否支持证书配置使用用户自定义ID-->true
    </isSupportCertificateCustomID>
    <isSupportResetLANPassword>
      <!--ro, opt, bool, 是否支持重置局域网设备密码, desc:对应/ISAPI/Security/resetPassword/certification?format=json-->true
    </isSupportResetLANPassword>
    <isSupportPicHttpsCertificatesManagement>
      <!--ro, opt, bool, 是否支持图片https证书管理, desc:支持返回,不支持不返回-->true
    </isSupportPicHttpsCertificatesManagement>
    <isSupportAKSKImport>
      <!--ro, opt, bool, 是否支持AKSK导入, desc:true支持返回,不支持不返回-->true
    </isSupportAKSKImport>
    <isSupportAKSKExport>
      <!--ro, opt, bool, 是否支持AKSK导出, desc:true支持返回,不支持不返回-->true
    </isSupportAKSKExport>
    <isSupportAKSKReset>
      <!--ro, opt, bool, 是否支持AKSK重置, desc:true支持返回,不支持不返回-->true
    </isSupportAKSKReset>
    <ExportCertificateFile>
      <!--ro, opt, object, 是否支持导出证书, desc:对应URL:POST /ISAPI/Security/serverCertificate/exportCertificateFile-->
      <type opt="GB35114">
        <!--ro, req, enum, 支持的导出证书类型, subType:string, [GB35114#表示支持导出GB35114证书], attr:opt{req, string, 取值范围, range:[,]}, desc:GB35114-表示支持导出GB35114证书-->GB35114
      </type>
    </ExportCertificateFile>
    <isSupportGB351114FDWSFCertificate>
      <!--ro, opt, bool, 是否支持FDWSF证书管理,
desc:支持返回,不支持不返回,
      对应URL：/ISAPI/Security/GB351114/FDWSFCertificate/capabilities?format=json
      POST  /ISAPI/Security/GB351114/FDWSFCertificate?format=json
      GET    /ISAPI/Security/GB351114/FDWSFCertificate?format=json
      DELETE /ISAPI/Security/GB351114/FDWSFCertificate?format=json-->true
    </isSupportGB351114FDWSFCertificate>
  </SecurityCap>
  <EventCap>
    <!--ro, opt, object, 事件能力-->
    <isSupportHDFull>
      <!--ro, opt, bool, 是否支持硬盘满报警-->true
    </isSupportHDFull>
    <isSupportHDError>
      <!--ro, opt, bool, 是否支持硬盘错误报警-->true
    </isSupportHDError>
    <isSupportNicBroken>
      <!--ro, opt, bool, 是否支持网络断开事件-->true
    </isSupportNicBroken>
    <isSupportIpConflict>
      <!--ro, opt, bool, 是否支持IP地址冲突事件-->true
    </isSupportIpConflict>
    <isSupportIllAccess>
      <!--ro, opt, bool, 是否支持非法访问事件-->true
    </isSupportIllAccess>
    <isSupportViException>
      <!--ro, opt, bool, 是否支持视频输入异常(只针对模拟通道)-->true
    </isSupportViException>
    <isSupportViMismatch>
      <!--ro, opt, bool, 是否支持视频制式不匹配-->true
    </isSupportViMismatch>
    <isSupportRecordException>
      <!--ro, opt, bool, 是否支持录像异常-->true
    </isSupportRecordException>
    <isSupportRaidException>
      <!--ro, opt, bool, 是否支持阵列异常事件-->true
    </isSupportRaidException>
    <isSupportViResMismatch>
      <!--ro, opt, bool, 是否支持录像分辨率不匹配事件-->true
    </isSupportViResMismatch>
    <isSupportPOCException>
      <!--ro, opt, bool, 是否支持同轴供电异常事件-->true
    </isSupportPOCException>
    <isSupportSmartDetection>
      <!--ro, opt, bool, 是否支持Smart事件-->true
    </isSupportSmartDetection>
    <isSupportSpareException>
      <!--ro, opt, bool, 是否支持-->true
    </isSupportSpareException>
    <isSupportPoePowerException>
      <!--ro, opt, bool, 是否支持POE供电异常事件-->true
    </isSupportPoePowerException>
    <isSupportTriggerFocus>
      <!--ro, opt, bool, 是否支持虚焦异常-->true
    </isSupportTriggerFocus>
    <isSupportMotionDetection>
      <!--ro, opt, bool, 是否支持移动侦测-->true
    </isSupportMotionDetection>
    <isSupportVideoLoss>
      <!--ro, opt, bool, 是否支持视频丢失事件-->true
    </isSupportVideoLoss>
    <isSupportTamperDetection>
      <!--ro, opt, bool, 是否支持遮挡检测-->true
    </isSupportTamperDetection>
    <isSupportFireDetection>
      <!--ro, opt, bool, 是否支持火点检测事件-->true
    </isSupportFireDetection>
    <isSupportRegionEntrance>
      <!--ro, opt, bool, 是否支持进入区域事件-->true
    </isSupportRegionEntrance>
    <isSupportRegionExiting>
      <!--ro, opt, bool, 是否支持离开区域事件-->true
    </isSupportRegionExiting>
    <isSupportLoitering>
      <!--ro, opt, bool, 是否支持徘徊事件-->true
    </isSupportLoitering>
    <isSupportGroup>
      <!--ro, opt, bool, 是否支持人员聚集事件-->true
    </isSupportGroup>
    <isSupportRapidMove>
      <!--ro, opt, bool, 是否支持快速移动事件-->true
    </isSupportRapidMove>
    <isSupportParking>
      <!--ro, opt, bool, 是否支持停车侦测事件-->true
    </isSupportParking>
    <isSupportUnattendedBaggage>
      <!--ro, opt, bool, 是否支持物品遗留事件-->true
    </isSupportUnattendedBaggage>
    <isSupportAttendedBaggage>
      <!--ro, opt, bool, 是否支持物品拿取事件-->true
    </isSupportAttendedBaggage>
    <isSupportHumanAttribute>
      <!--ro, opt, bool, 是否支持人体属性-->true
    </isSupportHumanAttribute>
    <isSupportHumanRecognition>
      <!--ro, opt, bool, 是否支持目标抓拍事件-->true
    </isSupportHumanRecognition>
    <isSupportFaceContrast>
      <!--ro, opt, bool, 是否支持人脸比对事件-->true
    </isSupportFaceContrast>
    <isSupportFaceLib>
      <!--ro, opt, bool, 前端支持按人脸库联动, desc:接口:/ISAPI/Event/schedules/faceLib/<ID>/<FDID>-->true
    </isSupportFaceLib>
    <isSupportBlackListFaceContrast>
      <!--ro, opt, bool, 是否支持非授权名单人脸比对事件-->true
    </isSupportBlackListFaceContrast>
    <isSupportWhiteListFaceContrast>
      <!--ro, opt, bool, 是否支持授权名单人脸比对事件-->true
    </isSupportWhiteListFaceContrast>
    <isSupportillegalParking>
      <!--ro, opt, bool, 是否支持违停检测-->true
    </isSupportillegalParking>
    <isSupportPedestrian>
      <!--ro, opt, bool, 是否支持行人检测-->true
    </isSupportPedestrian>
    <isSupportTrafficAccident>
      <!--ro, opt, bool, 是否支持交通事故检测-->true
    </isSupportTrafficAccident>
    <isSupportConstruction>
      <!--ro, opt, bool, 是否支持施工检测-->true
    </isSupportConstruction>
    <isSupportRoadBlock>
      <!--ro, opt, bool, 是否支持路障检测-->true
    </isSupportRoadBlock>
    <isSupportAbandonedObject>
      <!--ro, opt, bool, 是否支持抛洒物检测-->true
    </isSupportAbandonedObject>
    <isSupportParallelParking>
      <!--ro, opt, bool, 是否支持侧方位停车检测-->true
    </isSupportParallelParking>
    <isSupportParkingState>
      <!--ro, opt, bool, 是否支持车位状态检测-->true
    </isSupportParkingState>
    <isSupportTrafficJam>
      <!--ro, opt, bool, 是否支持交通堵塞检测(旧)-->true
    </isSupportTrafficJam>
    <isSupportCongestion>
      <!--ro, opt, bool, 是否支持交通堵塞检测-->true
    </isSupportCongestion>
    <isSupportStudentsStoodUp>
      <!--ro, opt, bool, 是否支持学生起立检测事件-->true
    </isSupportStudentsStoodUp>
    <isSupportFramesPeopleCounting>
      <!--ro, opt, bool, 是否支持区域人数统计事件-->true
    </isSupportFramesPeopleCounting>
    <isSupportFaceSnap>
      <!--ro, opt, bool, 是否支持人脸抓拍事件-->true
    </isSupportFaceSnap>
    <isSupportPersonDensityDetection>
      <!--ro, opt, bool, 是否支持人员密度检测-->true
    </isSupportPersonDensityDetection>
    <HFPD>
      <!--ro, opt, bool, 是否支持高频人员检测-->true
    </HFPD>
    <isSupportPersonQueueDetection>
      <!--ro, opt, bool, 是否支持排队检测事件-->true
    </isSupportPersonQueueDetection>
    <isSupportVehicleStatistics>
      <!--ro, opt, bool, 是否支持车辆统计事件-->true
    </isSupportVehicleStatistics>
    <isSupportFaceThermometry>
      <!--ro, opt, bool, 是否支持人脸测温-->true
    </isSupportFaceThermometry>
    <isSupportSafetyHelmetDetection>
      <!--ro, opt, bool, 是否支持安全帽检测-->true
    </isSupportSafetyHelmetDetection>
    <isSupportPowerSupplyCabinet>
      <!--ro, opt, bool, 是否支持机柜供电检测-->true
    </isSupportPowerSupplyCabinet>
    <isSupportSensorDetection>
      <!--ro, opt, bool, 是否支持传感器检测-->true
    </isSupportSensorDetection>
    <isSupportSignAbnormal>
      <!--ro, opt, bool, 是否支持体征异常功能-->true
    </isSupportSignAbnormal>
    <isSupportTeacherBehaviorDetect>
      <!--ro, opt, bool, 是否支持教师行为检测-->true
    </isSupportTeacherBehaviorDetect>
    <isSupportCityManagement>
      <!--ro, opt, bool, 是否支持智慧城管-->true
    </isSupportCityManagement>
    <isSupportMixedTargetDetection>
      <!--ro, opt, bool, 是否支持混合目标检测事件-->true
    </isSupportMixedTargetDetection>
    <isSupportFaceSnapModeling>
      <!--ro, opt, bool, 是否支持人脸建模事件-->true
    </isSupportFaceSnapModeling>
    <isSupportIntersectionAnalysis>
      <!--ro, opt, bool, 是否支持路口分析-->true
    </isSupportIntersectionAnalysis>
    <isSupportTriggerCapCheck>
      <!--ro, opt, bool, 是否支持触发联动能力校验, desc:该节点表示URL(GET /ISAPI/Event/triggersCap)中的能力做过验证，在事件联动上可以完全按照能力进行显示；增加这个能力节点意义在给我们的WEB做能力判断显示；如果外部客户集成的时候反馈URL(GET /ISAPI/Event/triggersCap)存在问题，需要设备修改升级程序解决URL功能返回不一致的问题-->true
    </isSupportTriggerCapCheck>
    <isSupportLuma>
      <!--ro, opt, bool, VQD 亮度异常-->true
    </isSupportLuma>
    <isSupportChroma>
      <!--ro, opt, bool, VQD 图像偏色-->true
    </isSupportChroma>
    <isSupportSnow>
      <!--ro, opt, bool, VQD 雪花干扰-->true
    </isSupportSnow>
    <isSupportStreak>
      <!--ro, opt, bool, VQD 条纹干扰-->true
    </isSupportStreak>
    <isSupportFreeze>
      <!--ro, opt, bool, VQD 画面冻结-->true
    </isSupportFreeze>
    <isSupportSigLose>
      <!--ro, opt, bool, VQD 信号丢失-->true
    </isSupportSigLose>
    <isSupportClarity>
      <!--ro, opt, bool, VQD 清晰度异常-->true
    </isSupportClarity>
    <isSupportJitter>
      <!--ro, opt, bool, VQD 画面抖动-->true
    </isSupportJitter>
    <isSupportBlock>
      <!--ro, opt, bool, VQD 视频遮挡-->true
    </isSupportBlock>
    <isSupportFlowers>
      <!--ro, opt, bool, VQD 图像模糊报警-->true
    </isSupportFlowers>
    <isSupportNoise>
      <!--ro, opt, bool, VQD 花屏-->true
    </isSupportNoise>
    <isSupportGhost>
      <!--ro, opt, bool, VQD 噪点-->true
    </isSupportGhost>
    <isSupportPurple>
      <!--ro, opt, bool, VQD 紫边-->true
    </isSupportPurple>
    <isSupportICR>
      <!--ro, opt, bool, VQD ICP-->true
    </isSupportICR>
    <isSupportProtectiveFilm>
      <!--ro, opt, bool, VQD 保护膜未撕-->true
    </isSupportProtectiveFilm>
    <isSupportVoltageInstable>
      <!--ro, opt, bool, 是否支持电源电压波动异常-->true
    </isSupportVoltageInstable>
    <isSupportCertificateRevocation>
      <!--ro, opt, bool, 是否支持证书失效报警-->true
    </isSupportCertificateRevocation>
    <isSupportSysStorFull>
      <!--ro, opt, bool, 是否支持集群系统存储满异常-->true
    </isSupportSysStorFull>
    <isSupportVersionAbnormal>
      <!--ro, opt, bool, 是否支持集群版本异常-->true
    </isSupportVersionAbnormal>
    <isSupportNodeOffline>
      <!--ro, opt, bool, 是否支持设备掉线-->true
    </isSupportNodeOffline>
    <isSupportRecordCycleAbnormal>
      <!--ro, opt, bool, 是否支持录像周期不足-->true
    </isSupportRecordCycleAbnormal>
    <isSupportIpcTransferAbnormal>
      <!--ro, opt, bool, 是否支持IPC迁移失败-->true
    </isSupportIpcTransferAbnormal>
    <isSupportDrivingBehaviorDetect>
      <!--ro, opt, bool, 是否支持驾驶行为检测-->true
    </isSupportDrivingBehaviorDetect>
    <isSupportWasteGasDetection>
      <!--ro, opt, bool, 是否支持废气排放监测-->true
    </isSupportWasteGasDetection>
    <isSupportGreyScaleAlarm>
      <!--ro, opt, bool, 是否支持灰度报警-->true
    </isSupportGreyScaleAlarm>
    <isSupportPTLocking>
      <!--ro, opt, bool, 是否支持云台堵转异常-->true
    </isSupportPTLocking>
    <isSupportNoMaskDetection>
      <!--ro, opt, bool, 是否支持未戴口罩检测-->true
    </isSupportNoMaskDetection>
    <isSupportTMPA>
      <!--ro, opt, bool, 是否支持人脸测温预警联动-->true
    </isSupportTMPA>
    <RuleScheduleCap>
      <!--ro, opt, object, 按规则时间布防能力-->
      <isSupportCityManagement>
        <!--ro, opt, bool, 智慧城管是否支持按规则时间布防-->true
      </isSupportCityManagement>
    </RuleScheduleCap>
    <RegionScheduleCap>
      <!--ro, opt, object, 按区域时间布防能力-->
      <isSupportPersonDensityDetection>
        <!--ro, opt, bool, 人员密度是否支持按区域时间布防-->true
      </isSupportPersonDensityDetection>
      <isSupportPersonQueueDetection>
        <!--ro, opt, bool, 排队检测(区域关注度)是否支持按区域时间布防-->true
      </isSupportPersonQueueDetection>
    </RegionScheduleCap>
    <isSupportThermalCalibrationFileException>
      <!--ro, opt, bool, 是否支持测温标定文件异常-->true
    </isSupportThermalCalibrationFileException>
    <isSupportTemperatureIntervalMeasurement>
      <!--ro, opt, bool, 是否支持温度区间检测-->true
    </isSupportTemperatureIntervalMeasurement>
    <isSupportThermalVehicleDetection>
      <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
    </isSupportThermalVehicleDetection>
    <isSupportWaterQualityDetection>
      <!--ro, opt, bool, 是否支持水质检测报警-->true
    </isSupportWaterQualityDetection>
    <isSupportWaterLevelDetection>
      <!--ro, opt, bool, 是否支持水位高度检测-->true
    </isSupportWaterLevelDetection>
    <isSupportDeviceTemperatureAbnormal>
      <!--ro, opt, bool, 是否支持设备温度异常-->true
    </isSupportDeviceTemperatureAbnormal>
    <isSupportObjectAccumulationDetection>
      <!--ro, opt, bool, 是否支持堆积检测-->true
    </isSupportObjectAccumulationDetection>
    <isSupportAppAbnormal>
      <!--ro, opt, bool, 是否支持APP异常报警事件-->true
    </isSupportAppAbnormal>
  </EventCap>
  <ITCCap>
    <!--ro, opt, object, /ISAPI/ITC/capability中的isSupportVehicleDetection and /ISAPI/ITC/capabilities-->
    <isSupportITC>
      <!--ro, opt, bool, 是否支持ITC-->true
    </isSupportITC>
    <isSupportIllegalDictionary>
      <!--ro, opt, bool, 是否支持违法字典-->true
    </isSupportIllegalDictionary>
    <isSupportVehicleDetection>
      <!--ro, opt, bool, 是否支持车辆检测-->true
    </isSupportVehicleDetection>
    <isSupportHVTVehicleDetection>
      <!--ro, opt, bool, 是否支持混行车辆检测-->true
    </isSupportHVTVehicleDetection>
    <isSupportlicencePlateAuditData>
      <!--ro, opt, bool, 是否支持导入/导出车牌非授权名单数据-->true
    </isSupportlicencePlateAuditData>
    <isSupportSearchLPListAudit>
      <!--ro, opt, bool, 车牌非授权名单查询-->true
    </isSupportSearchLPListAudit>
    <isSupportVehicleDetectionManualTrigger opt="false,true">
      <!--ro, opt, bool, 车辆检测手动触发, attr:opt{opt, string, 可选项, range:[,]}-->true
    </isSupportVehicleDetectionManualTrigger>
    <isSupportSyncSignalOutput>
      <!--ro, opt, bool, 是否支持输出参数-->true
    </isSupportSyncSignalOutput>
  </ITCCap>
  <ImageCap>
    <!--ro, opt, object, 图像参数能力-->
    <isSupportRegionalExposure>
      <!--ro, opt, bool, 区域曝光-->true
    </isSupportRegionalExposure>
    <isSupportRegionalFocus>
      <!--ro, opt, bool, 区域对焦-->true
    </isSupportRegionalFocus>
  </ImageCap>
  <RacmCap>
    <!--ro, opt, object, 图片搜索之前是一个界面-->
    <isSupportZeroChan>
      <!--ro, opt, bool, 是否支持零通道, desc:接口:/ISAPI/ContentMgmt/ZeroVideo/channels-->true
    </isSupportZeroChan>
    <inputProxyNums>
      <!--ro, opt, int, 支持的数字通道数, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>-->1
    </inputProxyNums>
    <eSATANums>
      <!--ro, opt, int, 支持的eSATA数目, range:[,], step:, unit:, unitType:-->1
    </eSATANums>
    <miniSASNums>
      <!--ro, opt, int, 支持的miniSAS数目, range:[,], step:, unit:, unitType:-->1
    </miniSASNums>
    <nasNums>
      <!--ro, opt, int, 支持的nas数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/Storage/nas-->1
    </nasNums>
    <ipSanNums>
      <!--ro, opt, int, 支持的ipsan数目, range:[,], step:, unit:, unitType:-->1
    </ipSanNums>
    <isSupportRaid>
      <!--ro, opt, bool, 是否支持Raid-->true
    </isSupportRaid>
    <isSupportExtHdCfg>
      <!--ro, opt, bool, 是否支持硬盘高级管理-->true
    </isSupportExtHdCfg>
    <isSupportTransCode>
      <!--ro, opt, bool, 是否支持转码预览-->true
    </isSupportTransCode>
    <isSupportIpcImport>
      <!--ro, opt, bool, 是否支持IPC配置文件导入, desc:接口:/ISAPI/ContentMgmt/InputProxy/ipcConfig-->true
    </isSupportIpcImport>
    <NasMountType>
      <!--ro, opt, object, Nas加载类型-->
      <isNFSSupportAuthentication>
        <!--ro, opt, bool, 未是否支持CIFS身份验证-->true
      </isNFSSupportAuthentication>
      <isCIFSSupportAuthentication>
        <!--ro, opt, bool, 是否支持CIFS身份验证-->true
      </isCIFSSupportAuthentication>
    </NasMountType>
    <isSupportIpcStreamType>
      <!--ro, opt, bool, 是否支持Ipc码流类型-->true
    </isSupportIpcStreamType>
    <isSupportIOInputProxy>
      <!--ro, opt, bool, 是否支持动态IO输入通道, desc:接口:/ISAPI/ContentMgmt/IOProxy/inputs-->true
    </isSupportIOInputProxy>
    <isSupportIOOutputProxy>
      <!--ro, opt, bool, 是否支持动态IO输出通道, desc:接口:/ISAPI/ContentMgmt/IOProxy/outputs-->true
    </isSupportIOOutputProxy>
    <isSupportPTZRs485Proxy>
      <!--ro, opt, bool, 是否支持动态PTZ485通道, desc:接口:/ISAPI/ContentMgmt/PTZCtrlProxy/capabilities-->true
    </isSupportPTZRs485Proxy>
    <isSupportSrcIDSearch>
      <!--ro, opt, bool, 是否支持流ID搜索-->true
    </isSupportSrcIDSearch>
    <isSupportReversePlayback>
      <!--ro, opt, bool, 是否支持倒放-->true
    </isSupportReversePlayback>
    <isSupportSMARTTest>
      <!--ro, opt, bool, 是否支持硬盘检测功能, desc:接口:/ISAPI/ContentMgmt/Storage/hdd/SMARTTest/config-->true
    </isSupportSMARTTest>
    <isSupportDownloadByTime>
      <!--ro, opt, bool, 是否支持按时间下载, desc:接口:/ISAPI/ContentMgmt/download/capabilities-->true
    </isSupportDownloadByTime>
    <pictureSearchType opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,     regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyHelmet,     personQueueCounting,personQueueTime,violentMotion,leavePosition,advReachHeight,peopleNumChange,mixedTargetDetection,illegalParking,pedestrian,construction,roadblock,     abandonedObject,trafficAccident,fogDetection,smokeDetection,personDensity,failDown,accessController,videoInterCom,GJD,Luminite,OPTEX,securityControlPanel,getUp,toiletTarry,     playCellphone,vehicleMonitor,vibrationDetection,running,retention,spacingChange,yardTarry,keyPersonGetUp,sitQuietly,standUp,plateRecognition,smoking,onThePhone,fatigueDriving,     notLookingStraightAhead,leaveThePost,seatBelt,sunglasses,identityAbnormal,ForwardCollisionWarning,LaneDepartureWarning,BlindSpotDetection,HeadwayMonitoringWarning,     PedestrianCollisionWarning,SuddenSpeedUp,SuddenSpeedDown,SuddenLeftTurn,SuddenRightTurn,Turnover,NotYieldToPedestrian,unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad,     illegalHeap,illegalParkingofNon-MotorVehicle,illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,allPic,ATMPanel,     ATMSurround,ATMFace,ATMSafetyCabin,loitering,smokeDetectAlarm">
      <!--ro, opt, string, 图片查找类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </pictureSearchType>
    <recordSearchType opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,FieldDetection,scenechangedetection,LineDetection,     regionEntrance,regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,playSnapShot,safetyHelmet,     failDown,personDensityDetection,smokeDetection,vibrationDetection,unregisteredStreetVendor,stallOutsideShop,stallOccupyingRoad,illegalHeap,illegalParkingofNon-MotorVehicle,     illegalOutdoorAdvertisement,packGarbage,stallUnderUmbrella,dustbinOverflow,exposeGarbage,hangClothingAlongStreet,ATMPanel,ATMSurround,ATMFace,ATMSafetyCabin">
      <!--ro, opt, string, 录像查找类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:llEvent-所有事件,CMR-定时抓图,MOTION-移动侦测抓图,ALARM-报警抓图,EDR-报警|移动侦测抓图,ALARMANDMOTION-报警&移动侦测抓图,Command,pir-PIR报警,wlsensor-无线报警,callhelp-呼救报警,facedetection-人脸侦测,FieldDetection-入侵区域侦测,scenechangedetection-场景变更侦测,LineDetection-越界侦测-->null
    </recordSearchType>
    <isSupportActivateIpc>
      <!--ro, opt, bool, 是否支持激活IPC-->true
    </isSupportActivateIpc>
    <isSupportCheckIpcSecurity>
      <!--ro, opt, object, 设备密码检测-->
      <isSupportCheckPassword>
        <!--ro, opt, bool, 是否支持密码检测-->true
      </isSupportCheckPassword>
    </isSupportCheckIpcSecurity>
    <isSupportMainAndSubRecord>
      <!--ro, opt, bool, 是否支持主子码流录像-->true
    </isSupportMainAndSubRecord>
    <isSupportSyncIPCPassword>
      <!--ro, opt, bool, 是否支持同步IPC密码-->true
    </isSupportSyncIPCPassword>
    <isSupportTransferIPC>
      <!--ro, opt, bool, 是否支持IPC透传功能-->true
    </isSupportTransferIPC>
    <isSupportSmartSearch>
      <!--ro, opt, bool, 是否支持录像智能后检索, desc:接口:/ISAPI/ContentMgmt/SmartSearch/capabilities-->true
    </isSupportSmartSearch>
    <isSupportPOS>
      <!--ro, opt, bool, 是否支持POS-->true
    </isSupportPOS>
    <isSupportLinkNum>
      <!--ro, opt, bool, 是否支持链接数目获取, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>/linkNum-->true
    </isSupportLinkNum>
    <isSupportPassBackBasicCfg>
      <!--ro, opt, bool, 支持CVR回传功能基础能力, desc:接口:/ISAPI/ContentMgmt/record/passback/basicCfg/capabilities-->true
    </isSupportPassBackBasicCfg>
    <PassBackTaskConfig>
      <!--ro, opt, object, CVR回传功能任务管理能力-->
      <isSupportAddTask>
        <!--ro, opt, bool, 支持任务添加, desc:接口:/ISAPI/ContentMgmt/record/passback/addTask/capabilities-->true
      </isSupportAddTask>
      <isSupportSearchTask>
        <!--ro, opt, bool, 支持任务查找, desc:接口:/ISAPI/ContentMgmt/record/passback/searchTask/capabilities-->true
      </isSupportSearchTask>
      <isSupportControlTask>
        <!--ro, opt, bool, 支持任务控制, desc:接口:/ISAPI/ContentMgmt/record/passback/controlTask/capabilities-->true
      </isSupportControlTask>
      <isSupportDeleteTask>
        <!--ro, opt, bool, 支持任务删除, desc:接口:/ISAPI/ContentMgmt/record/passback/deleteTask/capabilities-->true
      </isSupportDeleteTask>
    </PassBackTaskConfig>
    <PassBackPlanConfig>
      <!--ro, opt, object, CVR计划回传功能能力-->
      <isSupportAddPlan>
        <!--ro, opt, bool, 支持计划添加, desc:接口:/ISAPI/ContentMgmt/record/passback/addPlan/capabilities-->true
      </isSupportAddPlan>
      <isSupportSearchPlan>
        <!--ro, opt, bool, 支持计划查找, desc:接口:/ISAPI/ContentMgmt/record/passback/searchPlan/capabilities-->true
      </isSupportSearchPlan>
      <isSupportDeletePlan>
        <!--ro, opt, bool, 支持计划删除, desc:接口:/ISAPI/ContentMgmt/record/passback/deletePlan/capabilities-->true
      </isSupportDeletePlan>
    </PassBackPlanConfig>
    <IRAIDCap>
      <!--ro, opt, object, 网络阵列能力-->
      <isSupportIRAIDRapidConfiguration>
        <!--ro, opt, bool, 是否支持IRAID快速配置, desc:接口:/ISAPI/ContentMgmt/Storage/IRAID/RapidConfiguration/capabilities-->true
      </isSupportIRAIDRapidConfiguration>
    </IRAIDCap>
    <isSupportStorageExtraInfo>
      <!--ro, opt, bool, 支持存储额外信息配置能力, desc:接口:/ISAPI/ContentMgmt/Storage/ExtraInfo/capabilities-->true
    </isSupportStorageExtraInfo>
    <isSupportRecordStatus>
      <!--ro, opt, bool, 是否支持获取录像状态, desc:接口:/ISAPI/ContentMgmt/channels/<ID>/record/capabilities-->true
    </isSupportRecordStatus>
    <isSupportRacmChannelsCap>
      <!--ro, opt, bool, 是否支持通道级Rcam能力, desc:接口:/ISAPI/ContentMgmt/channels/<ID>/capabilities-->true
    </isSupportRacmChannelsCap>
    <LockCap>
      <!--ro, opt, object, 录像加解锁, desc:接口:/ISAPI/ContentMgmt/record/control/locks/capabilities-->null
    </LockCap>
    <isSupportForamtAll>
      <!--ro, opt, bool, 是否支持格式化所有硬盘, desc:接口:/ISAPI/ContentMgmt/Storage/hdd/format-->true
    </isSupportForamtAll>
    <isSupportExtendCabinetCfg>
      <!--ro, opt, bool, 支持扩展柜配置能力 对应/ISAPI/ContentMgmt/Storage/ExtendCabinet/capabilities-->true
    </isSupportExtendCabinetCfg>
    <diskGroupNums>
      <!--ro, opt, int, 支持的盘组数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/Storage/diskGroup-->1
    </diskGroupNums>
    <ExternalDevice>
      <!--ro, opt, object, 外置设备存储-->
      <USB>
        <!--ro, opt, object, USB信息-->
        <debugLogOutput>
          <!--ro, opt, bool, 调试日志开启使能, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true
        </debugLogOutput>
        <isSupportCapturePackage>
          <!--ro, opt, bool, USB抓包过滤配置功能是否支持, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json-->true
        </isSupportCapturePackage>
        <isSupportStreamStorage>
          <!--ro, opt, bool, 是否支持U盘码流保存功能, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB/streamStorage/capabilities?format=json-->true
        </isSupportStreamStorage>
      </USB>
    </ExternalDevice>
    <customProtocolNums>
      <!--ro, opt, int, IPC接入支持的自定义协议数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/InputProxy/customProtocols支持的自定义协议数目-->1
    </customProtocolNums>
    <isSupportIPCTiming>
      <!--ro, opt, bool, 是否支持对IPC校时, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<enableTiming>字段是否支持-->true
    </isSupportIPCTiming>
    <isSupportLogConfig>
      <!--ro, opt, bool, 是否支持日志配置, desc:接口:/ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json-->true
    </isSupportLogConfig>
    <SecurityLog>
      <!--ro, opt, object, 设备安全日志能力-->
      <isSupportSecurityLog>
        <!--ro, opt, bool, 是否支持安全日志-->true
      </isSupportSecurityLog>
      <isSupportLogServer>
        <!--ro, opt, bool, 是否支持安全审计日志服务器配置-->true
      </isSupportLogServer>
      <isSupportLogServerTest>
        <!--ro, opt, bool, 是否支持安全审计日志服务器配置测试-->true
      </isSupportLogServerTest>
      <SecurityLogTypeList>
        <!--ro, req, array, 安全日志类型列表, subType:object, range:[,]-->
        <SecurityLogType>
          <!--ro, opt, object, 安全日志类型-->
          <primaryType>
            <!--ro, req, string, 日志主类型, range:[,], desc:事件-Event,操作-Operation,其他-Other,全部类型-All-->null
          </primaryType>
          <secondaryType opt="all">
            <!--ro, req, string, 日志次类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:其他类型参考附件表格-->null
          </secondaryType>
        </SecurityLogType>
      </SecurityLogTypeList>
    </SecurityLog>
    <isSupportGetBackupDevice>
      <!--ro, opt, bool, 是否支持获取备份设备, desc:接口:/ISAPI/ContentMgmt/Storage/backup/device?format=json-->true
    </isSupportGetBackupDevice>
    <isSupportAutoBackup>
      <!--ro, opt, bool, 是否支持自动备份, desc:接口:/ISAPI/ContentMgmt/Storage/backup/auto/capabilities?format=json-->true
    </isSupportAutoBackup>
    <certificateValidationEnabled>
      <!--ro, opt, bool, 启用证书验证使能, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<certificateValidationEnabled>字段是否支持-->true
    </certificateValidationEnabled>
    <defaultAdminPortEnabled>
      <!--ro, opt, bool, 默认通信端口使能, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<defaultAdminPortEnabled>字段是否支持-->true
    </defaultAdminPortEnabled>
    <isSupportLogDataPackage>
      <!--ro, opt, bool, 是否支持日志文件导出, desc:接口:/ISAPI/ContentMgmt/logSearch/dataPackage-->true
    </isSupportLogDataPackage>
    <logSearchTimeSpanNums>
      <!--ro, opt, int, 日志查询时间段数目, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/ContentMgmt/logSearch中CMSearchDescription->timeSpanList字段-->1
    </logSearchTimeSpanNums>
    <CloudStorageServerCap>
      <!--ro, opt, object, 云存储服务器配置能力-->
      <isSupportCloudStorageParameter>
        <!--ro, opt, bool, 是否支持云存储参数配置, desc:接口:/ISAPI/ContentMgmt/Storage/cloudServer/capabilities?format=json-->true
      </isSupportCloudStorageParameter>
      <isSupportCloudStoragePool>
        <!--ro, opt, bool, 是否支持云存储池配置, desc:接口:/ISAPI/ContentMgmt/Storage/cloudServer/pool/capabilities?format=json-->true
      </isSupportCloudStoragePool>
      <supportChannelsNum>
        <!--ro, opt, int, 云存储支持接入的通道数目, range:[,], step:, unit:, unitType:, desc:不返回该节点表示设备全通道支持, 返回该节点表示云存储设备有几个通道支持云存储(目前不返回具体支持的通道号)-->1
      </supportChannelsNum>
    </CloudStorageServerCap>
    <isSupportWebPrivatePlaybackByUTC>
      <!--ro, opt, bool, web私有协议回放支持UTC-->true
    </isSupportWebPrivatePlaybackByUTC>
    <isSupportFindCommonFileByUTC>
      <!--ro, opt, bool, 普通文件查找（私有协议）支持UTC-->true
    </isSupportFindCommonFileByUTC>
    <isSupportFindEventFileByUTC>
      <!--ro, opt, bool, 事件文件查找（私有协议）支持UTC-->true
    </isSupportFindEventFileByUTC>
    <isSupportSmartSearchRecordByUTC>
      <!--ro, opt, bool, 智能查找录像（私有协议）支持UTC-->true
    </isSupportSmartSearchRecordByUTC>
    <isSupportMRDSearchByTimeZone>
      <!--ro, opt, bool, 月历搜索（私有协议）支持UTC-->true
    </isSupportMRDSearchByTimeZone>
    <isSupportSearchRecordLabelByUTC>
      <!--ro, opt, bool, 查找录像标签（私有协议）支持UTC-->true
    </isSupportSearchRecordLabelByUTC>
    <isSupportSearchPictureByUTC>
      <!--ro, opt, bool, 普通查找图片（私有协议）支持UTC-->true
    </isSupportSearchPictureByUTC>
    <isSupportSmartSearchPictureByUTC>
      <!--ro, opt, bool, 智能查找图片（私有协议）支持UTC-->true
    </isSupportSmartSearchPictureByUTC>
    <isSupportFindLogByUTC>
      <!--ro, opt, bool, 查找日志（私有协议）支持UTC-->true
    </isSupportFindLogByUTC>
    <isSupportUploadRecordByUTC>
      <!--ro, opt, bool, 上传到云存储搜索（私有协议）支持UTC-->true
    </isSupportUploadRecordByUTC>
    <isSupportPlaybackByUTC>
      <!--ro, opt, bool, 按时间回放和按时间定位（私有协议）支持UTC-->true
    </isSupportPlaybackByUTC>
    <isSupportFaceDetecttionAlarmByTimeZone>
      <!--ro, opt, bool, 未找到文档-->true
    </isSupportFaceDetecttionAlarmByTimeZone>
    <isSupportSourceModify>
      <!--ro, opt, bool, 局域网IPC配置是否支持, desc:接口:/ISAPI/ContentMgmt/InputProxy/sourceModify/capabilities-->true
    </isSupportSourceModify>
    <isSupportCountingSearchByUTC>
      <!--ro, opt, bool, 客流量统计功能支持UTC-->true
    </isSupportCountingSearchByUTC>
    <isSupportCluster>
      <!--ro, opt, bool, 是否支持Cluster功能, desc:接口:/ISAPI/ContentMgmt/Cluster-->true
    </isSupportCluster>
    <supportAIDTFSType opt="illegalParking,wrongdirection,crosslane,vehicleexist,lanechange,turnround,evidence">
      <!--ro, opt, string, AID和TFS同时支持的事件图片查找类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </supportAIDTFSType>
    <isSupportMisinfoStateSearch>
      <!--ro, opt, bool, 是否支持按误报状态查询-->true
    </isSupportMisinfoStateSearch>
    <isSupportOneKeyOperationStorageData>
      <!--ro, opt, bool, 是否支持存储数据一键配置, desc:接口:/ISAPI/ContentMgmt/Storage/oneKey/capabilities?format=json-->true
    </isSupportOneKeyOperationStorageData>
    <eventRecordSearch>
      <!--ro, opt, object, 是否支持按事件查找录像, desc:接口:/ISAPI/ContentMgmt/eventRecordSearch?format=json-->
      <eventType opt="faceContrast,faceSnap,vehicleMatchResult,hawkResult">
        <!--ro, opt, string, 事件类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </eventType>
      <auxEventType opt="faceContrastFailure,faceContrastSuccess">
        <!--ro, opt, string, 搜索事件辅类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
      </auxEventType>
    </eventRecordSearch>
    <isSupportManualRecord>
      <!--ro, opt, bool, 是否支持手动录像 , desc:接口:/ISAPI/ContentMgmt/record/control/manual/capabilities?format=json-->true
    </isSupportManualRecord>
    <isSupportRemark>
      <!--ro, opt, bool, 是否支持文件标注-->true
    </isSupportRemark>
    <FileUpload>
      <!--ro, opt, object, 文件主动上传-->
      <enabled>
        <!--ro, req, bool, 是否支持文件上传使能-->true
      </enabled>
    </FileUpload>
    <PoliceInfoUpload>
      <!--ro, opt, object, 警员信息主动上传-->
      <enabled>
        <!--ro, req, bool, 是否支持警员信息上传使能-->true
      </enabled>
    </PoliceInfoUpload>
    <PoliceInfo>
      <!--ro, opt, object, 警员信息-->
      <policeID>
        <!--ro, opt, bool, 是否支持警员ID-->true
      </policeID>
      <policeCode>
        <!--ro, opt, bool, 是否支持警员编号-->true
      </policeCode>
      <policeName>
        <!--ro, opt, bool, 是否支持警员姓名-->true
      </policeName>
      <password>
        <!--ro, opt, bool, 是否支持警员密码-->true
      </password>
      <deviceID>
        <!--ro, opt, bool, 是否支持设备ID-->true
      </deviceID>
    </PoliceInfo>
    <isSupportAssignChannelID>
      <!--ro, opt, bool, 是否支持添加IPC时指定接入通道号, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<channelID>字段是否支持-->true
    </isSupportAssignChannelID>
    <isSupportAssignStreamID>
      <!--ro, opt, bool, 是否支持通道模式添加IPC时指定接入通道对应流ID, desc:接口:/ISAPI/ContentMgmt/InputProxy/channels/<ID>本协议中<streamID>字段是否支持-->true
    </isSupportAssignStreamID>
    <PictureSearchSubTypeList>
      <!--ro, opt, array, 图片搜索子类型列表, subType:object, range:[,]-->
      <PictureSearchSubType>
        <!--ro, opt, object, 图片搜索子类型-->
        <mainType>
          <!--ro, req, string, 搜索图片的主事件类型, range:[,]-->null
        </mainType>
        <subType opt="all,motorVehicle,nonMotorVehicle,pedestrian">
          <!--ro, req, string, 图片搜索每个主类型对应的子类型, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
        </subType>
      </PictureSearchSubType>
    </PictureSearchSubTypeList>
    <isSupportPlaybackStreamIDByUTC>
      <!--ro, opt, bool, 按流ID时间回放（私有协议）支持UTC-->true
    </isSupportPlaybackStreamIDByUTC>
    <isSupportTimeLockStreamIDByUTC>
      <!--ro, opt, bool, 按流ID对录像段进行加锁和解锁（私有协议）支持UTC-->true
    </isSupportTimeLockStreamIDByUTC>
    <isSupportTimeSearch>
      <!--ro, opt, bool, 是否支持搜索通道的录像起止时间, desc:接口:/ISAPI/ContentMgmt/time/search?format=json-->true
    </isSupportTimeSearch>
    <behaviorEventPicSearch opt="allBehaviorEvent,running,group,violentMotion,failDown,playCellphone,peopleNumChange,leavePosition,retention,sleepOnduty">
      <!--ro, opt, string, 图片搜索支持的异常行为识别事件, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </behaviorEventPicSearch>
    <perimeterEventPicSearch opt="allPerimeterEvent,linedetection,fielddetection,regionEntrance,regionExiting,loitering">
      <!--ro, opt, string, 图片搜索支持的周界防范事件, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </perimeterEventPicSearch>
    <isSupportSourceStatus>
      <!--ro, opt, bool, 是否支持接入源状态获取-->true
    </isSupportSourceStatus>
    <isSupportSSDSMARTTest>
      <!--ro, opt, bool, 是否支持SSDSmart检测, desc:接口:/ISAPI/ContentMgmt/Storage/ssd/<ID>/SMARTTest/start-->true
    </isSupportSSDSMARTTest>
    <MobileStorage>
      <!--ro, opt, object, 移动硬盘相关能力-->
      <isSupportGetFileTime>
        <!--ro, opt, bool, 是否支持获取移动硬盘中文件时间, desc:接口:/ISAPI/ContentMgmt/mobileStorage/fileTime/capabilities?format=json,目前支持非海康硬盘-->true
      </isSupportGetFileTime>
    </MobileStorage>
    <isSupportGetChannelList>
      <!--ro, opt, bool, 是否支持获取海康硬盘中的通道, desc:接口:/ISAPI/ContentMgmt/Storage/hdd/channelList/capabilities?format=json,目前支持海康硬盘-->true
    </isSupportGetChannelList>
    <isSupportCascade>
      <!--ro, opt, bool, 是否支持NVR级联拓扑结构参数配置-->true
    </isSupportCascade>
    <isSupportPictureInfo>
      <!--ro, opt, bool, 是否支持SD卡图片检索（抓拍机）-->true
    </isSupportPictureInfo>
    <isSupportCloudStorageModel>
      <!--ro, opt, bool, 是否支持云存储模式配置, desc:/ISAPI/ContentMgmt/Storage/CloudStorageModel/<channelID>/capabilities?format=json-->true
    </isSupportCloudStorageModel>
    <isSupportCloudStorageModelList>
      <!--ro, opt, bool, 是否支持云存储模式批量配置, desc:/ISAPI/ContentMgmt/Storage/CloudStorageModel/<channelID>?format=json-->true
    </isSupportCloudStorageModelList>
  </RacmCap>
  <PTZCtrlCap>
    <!--ro, opt, object, 设备云台能力-->
    <isSupportPatrols>
      <!--ro, opt, bool, 是否支持巡航-->true
    </isSupportPatrols>
    <isSupportCombinedPath>
      <!--ro, opt, bool, 是否支持云台组合路径-->true
    </isSupportCombinedPath>
  </PTZCtrlCap>
  <SmartCap>
    <!--ro, opt, object, 简易智能能力, desc:/ISAPI/Smart/capabilities-->
    <isSupportROI>
      <!--ro, opt, bool, 是否支持ROI编码配置-->true
    </isSupportROI>
    <isSupportFaceDetect>
      <!--ro, opt, bool, 是否支持人脸侦测-->true
    </isSupportFaceDetect>
    <isSupportIntelliTrace>
      <!--ro, opt, bool, 是否支持智能跟踪-->true
    </isSupportIntelliTrace>
    <isSupportFieldDetection>
      <!--ro, opt, bool, 是否支持区域入侵-->true
    </isSupportFieldDetection>
    <isSupportDefocusDetection>
      <!--ro, opt, bool, 是否支持虚焦侦测-->true
    </isSupportDefocusDetection>
    <isSupportAudioDetection>
      <!--ro, opt, bool, 是否支持音频侦测-->true
    </isSupportAudioDetection>
    <isSupportSceneChangeDetection>
      <!--ro, opt, bool, 是否支持场景变更-->true
    </isSupportSceneChangeDetection>
    <isSupportLineDetection>
      <!--ro, opt, bool, 是否支持越界侦测-->true
    </isSupportLineDetection>
    <isSupportRegionEntrance>
      <!--ro, opt, bool, 是否支持进入区域-->true
    </isSupportRegionEntrance>
    <isSupportRegionExiting>
      <!--ro, opt, bool, 是否支持离开区域-->true
    </isSupportRegionExiting>
    <isSupportLoitering>
      <!--ro, opt, bool, 是否支持徘徊侦测-->true
    </isSupportLoitering>
    <isSupportGroup>
      <!--ro, opt, bool, 是否支持人员聚集-->true
    </isSupportGroup>
    <isSupportRapidMove>
      <!--ro, opt, bool, 是否支持快速移动-->true
    </isSupportRapidMove>
    <isSupportParking>
      <!--ro, opt, bool, 是否支持停车检测-->true
    </isSupportParking>
    <isSupportUnattendedBaggage>
      <!--ro, opt, bool, 是否支持物品遗留-->true
    </isSupportUnattendedBaggage>
    <isSupportAttendedBaggage>
      <!--ro, opt, bool, 是否支持物品拿去-->true
    </isSupportAttendedBaggage>
    <isSupportPeopleDetection>
      <!--ro, opt, bool, 是否支持人体检测-->true
    </isSupportPeopleDetection>
    <isSupportSmartCalibration>
      <!--ro, opt, bool, 是否支持标定过滤尺寸-->true
    </isSupportSmartCalibration>
    <isSupportStorageDetection>
      <!--ro, opt, bool, 是否支持存储健康检测-->true
    </isSupportStorageDetection>
    <isSupportShipsDetection>
      <!--ro, opt, bool, 是否支持船只检测-->true
    </isSupportShipsDetection>
    <isSupportShield>
      <!--ro, opt, bool, 是否支持简易智能屏蔽区域配置-->true
    </isSupportShield>
    <isSupportAlgVersion>
      <!--ro, opt, bool, 是否支持算法版本-->true
    </isSupportAlgVersion>
    <isSupportVideoOverlap>
      <!--ro, opt, bool, 是否支持视频流设置叠加信息-->true
    </isSupportVideoOverlap>
    <isSupportParkingState>
      <!--ro, opt, bool, 是否支持停车状态-->true
    </isSupportParkingState>
    <isSupportChannelResource>
      <!--ro, opt, bool, 是否支持通道资源-->true
    </isSupportChannelResource>
    <isSupportAnalysisUnitSwitch opt="true,false">
      <!--ro, opt, bool, 是否支持分析单元切换, attr:opt{opt, string, 可选项, range:[,]}-->true
    </isSupportAnalysisUnitSwitch>
    <isSupportHFPD>
      <!--ro, opt, bool, 是否支持高频人员检测, desc:接口:/ISAPI/SDT/HFPD?format=json-->true
    </isSupportHFPD>
    <isSupportImageROI>
      <!--ro, opt, bool, 是否支持smartJpeg(图像ROI)-->true
    </isSupportImageROI>
    <isSupportLFPD>
      <!--ro, opt, bool, 是否支持低频人员检测, desc:接口:/ISAPI/SDT/LFPD?format=json-->true
    </isSupportLFPD>
  </SmartCap>
  <isSupportEhome>
    <!--ro, opt, bool, 是否支持ISUP功能-->true
  </isSupportEhome>
  <isSupportStreamingEncrypt>
    <!--ro, opt, bool, 是否支持码流加密-->true
  </isSupportStreamingEncrypt>
  <TestCap>
    <!--ro, opt, object, 测试能力-->
    <isSupportEmailTest>
      <!--ro, opt, bool, 是否支持邮箱测试-->true
    </isSupportEmailTest>
  </TestCap>
  <ImageMiscCap>
    <!--ro, opt, object, DPC能力-->
    <isSupportDPC>
      <!--ro, opt, bool, 是否支持DPC-->true
    </isSupportDPC>
  </ImageMiscCap>
  <PanoramaCap>
    <!--ro, opt, object, 全景通道能力-->
    <isSupportGeneratePanorama>
      <!--ro, opt, bool, 是否全景生成-->true
    </isSupportGeneratePanorama>
    <isSupportPanoramaPosition3D>
      <!--ro, opt, bool, 是否全景3D位置-->true
    </isSupportPanoramaPosition3D>
    <isSupportPreset>
      <!--ro, opt, bool, 是否支持全景预置点配置-->true
    </isSupportPreset>
  </PanoramaCap>
  <ThermalCap>
    <!--ro, opt, object, 热成像总能力, desc:接口:/ISAPI/Thermal/capabilities-->
    <isSupportFireDetection>
      <!--ro, opt, bool, 是否支持火点检测, desc:接口:/ISAPI/Thermal/channels/<ID>/fireDetection/capabilities-->true
    </isSupportFireDetection>
    <isFireFocusZoomSupport>
      <!--ro, opt, bool, 是否支持火点可见光镜头聚焦变倍, desc:接口:/ISAPI/Thermal/channels/<ID>/fireFocusZoom-->true
    </isFireFocusZoomSupport>
    <isSupportThermometry>
      <!--ro, opt, bool, 是否支持测温, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities-->true
    </isSupportThermometry>
    <isSupportRealtimeThermometry>
      <!--ro, opt, bool, 是否支持实时测温数据上传-->true
    </isSupportRealtimeThermometry>
    <isSupportThermIntell>
      <!--ro, opt, bool, 是否支持热成像智能互斥配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermIntell/capabilities-->true
    </isSupportThermIntell>
    <isSupportNVR>
      <!--ro, opt, bool, 用于客户端判断-->true
    </isSupportNVR>
    <isSupportThermometrySchedule>
      <!--ro, opt, bool, 是否支持测温布防时间, desc:接口:/ISAPI/Event/schedules/thermometry-->true
    </isSupportThermometrySchedule>
    <isSupportTemperatureSchedule>
      <!--ro, opt, bool, 是否支持温差布防时间, desc:接口:/ISAPI/Event/schedules/temperature-->true
    </isSupportTemperatureSchedule>
    <isSupportFireDetectionSchedule>
      <!--ro, opt, bool, 是否支持火点检测布防时间, desc:接口:/ISAPI/Event/schedules/fireDetections-->true
    </isSupportFireDetectionSchedule>
    <isSupportPower>
      <!--ro, opt, bool, 是否支持电源开关支持能力, desc:接口:/ISAPI/Thermal/Power/capabilities-->true
    </isSupportPower>
    <isSupportRealtimeTempHumi>
      <!--ro, opt, bool, 是否支持设备环境实时温湿度能力, desc:接口:/ISAPI/Thermal/TempHumi/capabilities-->true
    </isSupportRealtimeTempHumi>
    <ManualThermCap>
      <!--ro, opt, object, 手动测温能力-->
      <manualThermRuleNum>
        <!--ro, opt, int, 若不返回该节点则设备不支持手动测温, range:[,], step:, unit:, unitType:, desc:接口:/ISAPI/Thermal/manualThermometry/capabilities-->true
      </manualThermRuleNum>
    </ManualThermCap>
    <isSupportManualThermBasic>
      <!--ro, opt, bool, 否支持手动测温基本参数配置, desc:接口:/ISAPI/Thermal/manualThermBasic/capabilities-->true
    </isSupportManualThermBasic>
    <isSupportFireShieldMask>
      <!--ro, opt, bool, 是否支持火点区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/fireShieldMask/capabilities-->true
    </isSupportFireShieldMask>
    <isSupportSmokeShieldMask>
      <!--ro, opt, bool, 是否支持烟雾区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/smokeShieldMask/capabilities-->true
    </isSupportSmokeShieldMask>
    <isSupportThermometryMode>
      <!--ro, opt, bool, 是否支持测温模式配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryMode/capabilities-->true
    </isSupportThermometryMode>
    <isSupportThermalPip>
      <!--ro, opt, bool, 是否支持热成像画中画配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/pip/capabilities-->true
    </isSupportThermalPip>
    <isSupportThermalIntelRuleDisplay>
      <!--ro, opt, bool, 是否支持热成像智能规则配置能力, desc:接口:/ISAPI/Thermal/channels/<ID>/IntelRuleDisplay/capabilities-->true
    </isSupportThermalIntelRuleDisplay>
    <AlgVersionInfo>
      <!--ro, opt, object, 是否支持获取热成像相关算法库版本能力, desc:接口:/ISAPI/Thermal/AlgVersion-->
      <thermometryAlgName min="1" max="128">
        <!--ro, opt, string, 测温算法库版本信息, range:[,], attr:min{opt, string, 算法名称最小值, range:[,]},max{opt, string, 测温算法库版本信息长度最大值, range:[,]}-->null
      </thermometryAlgName>
      <shipsAlgName min="1" max="128">
        <!--ro, opt, string, 船只算法库版本名称, range:[,], attr:min{opt, string, 船只算法库版本名称最小值, range:[,]},max{opt, string, 船只算法库版本名称最大值, range:[,]}-->null
      </shipsAlgName>
    </AlgVersionInfo>
    <isSupportFaceThermometry>
      <!--ro, opt, bool, 是否支持人脸测温配置, desc:接口:/ISAPI/Thermal/channels/<ID>/faceThermometry/capabilities-->true
    </isSupportFaceThermometry>
    <isSupportThermalBlackBody>
      <!--ro, opt, bool, 是否支持热成像黑体参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/blackBody/capabilities-->true
    </isSupportThermalBlackBody>
    <isSupportThermalStreamParam>
      <!--ro, opt, bool, 是否支持热成像码流参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/streamParam/capabilities-->true
    </isSupportThermalStreamParam>
    <isSupportBodyTemperatureCompensation>
      <!--ro, opt, bool, 是否支持体温温度补偿参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation/capabilities-->true
    </isSupportBodyTemperatureCompensation>
    <isSupportClickToThermometry>
      <!--ro, opt, bool, 是否支持点击测温, desc:接口:/ISAPI/Thermal/channels/<ID>/clickToThermometry/initialization-->true
    </isSupportClickToThermometry>
    <isSupportThermometryHistorySearch>
      <!--ro, opt, bool, 是否支持测温历史数据查询, desc:接口:/ISAPI/Thermal/channels/<ID>/historyTemperature/capabilities-->true
    </isSupportThermometryHistorySearch>
    <isSupportThermometryShieldMask>
      <!--ro, opt, bool, 是否支持测温区域屏蔽参数配置, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometryShieldMask/capabilities-->true
    </isSupportThermometryShieldMask>
    <isSupportTemperatureCorrection>
      <!--ro, opt, bool, 是否支持测温矫正, desc:接口:/ISAPI/Thermal/channels/<ID>/CorrectionParam/capabilities-->true
    </isSupportTemperatureCorrection>
    <isSupportBurningPrevention>
      <!--ro, opt, bool, 是否支持防灼伤, desc:接口:/ISAPI/Thermal/channels/<ID>/burningPrevention/capabilities-->true
    </isSupportBurningPrevention>
    <isSupportTemperatureCollection>
      <!--ro, opt, bool, 是否支持温度补录, desc:接口:ISAPI/Thermal/temperature/collection/capabilities?format=json-->true
    </isSupportTemperatureCollection>
    <isSupportJpegPicWithAppendData>
      <!--ro, opt, bool, 是否支持抓热图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/jpegPicWithAppendData?format=json-->true
    </isSupportJpegPicWithAppendData>
    <isSupportRealTimethermometryForHTTP>
      <!--ro, opt, bool, 是否支持实时温度检测, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/realTimethermometry/rules?format=json-->true
    </isSupportRealTimethermometryForHTTP>
    <isSupportthermometryOffLineCapture>
      <!--ro, opt, bool, 是否支持离线抓图, desc:接口:/ISAPI/Thermal/channels/<ID>/thermometry/OffLineCapture?format=json-->true
    </isSupportthermometryOffLineCapture>
    <isSupportShipsDetectionWithScene>
      <!--ro, opt, bool, 是否支持按场景划分的船只检测, desc:接口:/ISAPI/Thermal/channels/<ID>/shipsDetection/capabilities?format=json-->true
    </isSupportShipsDetectionWithScene>
    <isSupportWasteGasDetection>
      <!--ro, opt, bool, 是否支持废气排放监测-->true
    </isSupportWasteGasDetection>
    <isSupportGreyScaleAlarm>
      <!--ro, opt, bool, 是否支持灰度报警-->true
    </isSupportGreyScaleAlarm>
    <isSupportFaceSnapThermometry>
      <!--ro, opt, bool, 是否支持人脸抓拍测温-->true
    </isSupportFaceSnapThermometry>
    <isSupportThermalTemperatureCorrect>
      <!--ro, opt, bool, 是否支持热成像温度二次校准, desc:接口:/ISAPI/Thermal/channels/<ID>/temperatureCorrect?format=json-->true
    </isSupportThermalTemperatureCorrect>
    <isSupportThermalVehicleDetection>
      <!--ro, opt, bool, 是否支持热成像车辆侦测-->true
    </isSupportThermalVehicleDetection>
    <isSupportSensorParam>
      <!--ro, opt, bool, 是否支持传感器测温参数配置, desc:接口:/ISAPI/Thermal/channels/<channelID>/thermometry/sensorParam/capabilities?format=json-->true
    </isSupportSensorParam>
  </ThermalCap>
  <WLAlarmCap>
    <!--ro, opt, object, 无线报警能力-->
    <isSupportTeleControl>
      <!--ro, opt, bool, 是否支持远程控制-->true
    </isSupportTeleControl>
    <isSupportPIR>
      <!--ro, opt, bool, 是否支持PIR配置-->true
    </isSupportPIR>
    <isSupportWLSensors>
      <!--ro, opt, bool, 待确认-->true
    </isSupportWLSensors>
    <isSupportCallHelp>
      <!--ro, opt, bool, 是否支持呼叫帮助-->true
    </isSupportCallHelp>
    <WLSensorsNum>
      <!--ro, opt, int, 待确认, range:[,], step:, unit:, unitType:-->1
    </WLSensorsNum>
  </WLAlarmCap>
  <isSupportGIS>
    <!--ro, opt, bool, 是否支持GIS, desc:接口:/ISAPI/GIS/channels-->true
  </isSupportGIS>
  <isSupportCompass>
    <!--ro, opt, bool, 是否支持罗盘配置, desc:接口:/ISAPI/Compass/channels/<ID>/capabilities-->true
  </isSupportCompass>
  <isSupportRoadInfoOverlays>
    <!--ro, opt, bool, 是否支持道路信息叠加-->true
  </isSupportRoadInfoOverlays>
  <isSupportFaceCaptureStatistics>
    <!--ro, opt, bool, 是否支持人脸抓拍统计功能, desc:接口:/ISAPI/Intelligent/channels/<ID>/faceCaptureStatistics/search-->true
  </isSupportFaceCaptureStatistics>
  <isSupportElectronicsEnlarge>
    <!--ro, opt, bool, 设备是否支持电子放大 is this device support Electronics Enlarge-->true
  </isSupportElectronicsEnlarge>
  <isSupportRemoveStorage>
    <!--ro, opt, bool, 是否支持远程存储-->true
  </isSupportRemoveStorage>
  <isSupportCloud>
    <!--ro, opt, bool, 是否支持云存储-->true
  </isSupportCloud>
  <isSupportRecordHost>
    <!--ro, opt, bool, 是否支持录播主机配置, desc:接口:/ISAPI/RecordHost/capabilities)-->true
  </isSupportRecordHost>
  <isSupportViewshedOverlay>
    <!--ro, opt, bool, 支持可视域相机目标叠加功能, desc:接口:/ISAPI/System/Video/inputs/channels/<ID>/viewshedOverlay-->true
  </isSupportViewshedOverlay>
  <isSupportGPSLabelTracking>
    <!--ro, opt, bool, 是否支持GPS标签跟踪, desc:接口:/ISAPI/GIS/channels/<ID>/GPSLabelTracking?format=json-->true
  </isSupportGPSLabelTracking>
  <isSupportEagleEye>
    <!--ro, opt, bool, 是否支持鹰眼-->true
  </isSupportEagleEye>
  <isSupportPanorama>
    <!--ro, opt, bool, 是否支持全景模式-->true
  </isSupportPanorama>
  <isSupportFirmwareVersionInfo>
    <!--ro, opt, bool, 是否支持显示固件版本信息-->true
  </isSupportFirmwareVersionInfo>
  <isSupportExternalWirelessServer>
    <!--ro, opt, bool, 是否支持外部无线服务器(true-支持-->true
  </isSupportExternalWirelessServer>
  <isSupportSetupCalibration>
    <!--ro, opt, bool, 是否支持架设标定-->true
  </isSupportSetupCalibration>
  <isSupportGetmutexFuncErrMsg>
    <!--ro, opt, bool, 是否支持互斥信息-->true
  </isSupportGetmutexFuncErrMsg>
  <isSupportTokenAuthenticate>
    <!--ro, opt, bool, 是否支持token认证-->true
  </isSupportTokenAuthenticate>
  <isSupportStreamDualVCA>
    <!--ro, opt, bool, 码流叠加智能私有数据(true-支持, desc:接口:/ISAPI/Intelligent/channels/<ID>/intelliResource中的节点<isOverlapIntelli>)-->true
  </isSupportStreamDualVCA>
  <isSupportLaserSpotManual>
    <!--ro, opt, bool, 是否支持激光光斑配置-->true
  </isSupportLaserSpotManual>
  <isSupportRTMP>
    <!--ro, opt, bool, 是否支持RTMP配置, desc:接口:/ISAPI/Streaming/channels/<ID>/RTMPCfg/capabilities-->true
  </isSupportRTMP>
  <isSupportTraffic>
    <!--ro, opt, bool, 交通服务能力-->true
  </isSupportTraffic>
  <isSupportLaserSpotAdjustment>
    <!--ro, opt, bool, 调整激光光斑大小, desc:接口:/ISAPI/Image/channels/<ID>/laserLight/laserSpotAdjustment/capabilities-->true
  </isSupportLaserSpotAdjustment>
  <VideoIntercomCap>
    <!--ro, opt, object, 可视对讲能力, desc:接口:/ISAPI/VideoIntercom/capabilities-->true
  </VideoIntercomCap>
  <SecurityCPCapabilities>
    <!--ro, opt, object, 待确认, desc:接口:/ISAPI/SecurityCP/capabilities?format=json-->true
  </SecurityCPCapabilities>
  <isSupportSafetyCabin>
    <!--ro, opt, bool, 防护舱控制器, desc:接口:/ISAPI/SafetyCabin/capabilities-->true
  </isSupportSafetyCabin>
  <isSupportAcsUpdate>
    <!--ro, opt, bool, 是否支持外设模块升级（支持时返回true, desc:接口:/ISAPI/System/AcsUpdate/capabilities-->truetrue
  </isSupportAcsUpdate>
  <isSupportSecurityCP>
    <!--ro, opt, bool, 待确认-->true
  </isSupportSecurityCP>
  <isSupportPEA>
    <!--ro, opt, bool, 一键式报警主机能力-->true
  </isSupportPEA>
  <isSupportCurrentLock>
    <!--ro, opt, bool, 是否支持锁定电流配置功能-->true
  </isSupportCurrentLock>
  <isSupportGuardAgainstTheft>
    <!--ro, opt, bool, 是否支持设备防盗配置, desc:接口:/ISAPI/System/guardAgainstTheft/capabilities-->true
  </isSupportGuardAgainstTheft>
  <isSupportPicInfoOverlap>
    <!--ro, opt, bool, 是否支持图片字符叠加-->true
  </isSupportPicInfoOverlap>
  <isSupportPlay>
    <!--ro, opt, bool, 屏蔽预览-->true
  </isSupportPlay>
  <isSupportPlayback>
    <!--ro, opt, bool, 屏蔽回放-->true
  </isSupportPlayback>
  <UHFRFIDReader>
    <!--ro, opt, object, RFID读写器支持能力-->
    <isSupportBasicInformation>
      <!--ro, opt, bool, 是否支持读写器基本参数-->true
    </isSupportBasicInformation>
    <isSupportHardDiskStorageTest>
      <!--ro, opt, bool, 是否支持读写器盘存测试-->true
    </isSupportHardDiskStorageTest>
    <isSupportCarReaderConfig>
      <!--ro, opt, bool, 是否支持电子车牌阅读器参数配置, desc:接口:/ISAPI/Traffic/UHFRFIDReader/carReaderConfig/capabilities?format=json-->true
    </isSupportCarReaderConfig>
  </UHFRFIDReader>
  <isSupportIntelligentStructureAnalysis>
    <!--ro, opt, bool, 是否支持智能结构化分析, desc:接口:/ISAPI/Intelligent/structureAnalysis/capabilities-->true
  </isSupportIntelligentStructureAnalysis>
  <isSupportIntelligentAnalysisEngines>
    <!--ro, opt, bool, 表示是否支持的智能引擎配置, desc:接口:/ISAPI/Intelligent/analysisEngines/capabilities-->true
  </isSupportIntelligentAnalysisEngines>
  <PreviewDisplayNum>
    <!--ro, opt, int, 浏览器预览窗口数目, range:[,], step:, unit:, unitType:-->1
  </PreviewDisplayNum>
  <isSupportBoard opt="true,false">
    <!--ro, opt, bool, 是否支持子板相关协议, attr:opt{opt, string, 未定义, range:[,]}-->true
  </isSupportBoard>
  <ResourceSwitch>
    <!--ro, opt, object, 资源转换配置-->
    <workMode opt="4KPreview,educationRecord">
      <!--ro, req, string, 设备资源中工作模式：教育录播模式, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
    </workMode>
  </ResourceSwitch>
  <isSupportCustomStream>
    <!--ro, opt, bool, 是否支持自定义码流, desc:接口:/ISAPI/Streaming/channels/<ID>/customStream/capabilities-->true
  </isSupportCustomStream>
  <isSupportTriggerCapCheck>
    <!--ro, opt, bool, 表示URL(/ISAPI/Event/triggersCap)中的能力做过验证-->true
  </isSupportTriggerCapCheck>
  <isSupportChannelEventCap>
    <!--ro, opt, bool, 是否支持按通道获取事件能力, desc:接口:URL /ISAPI/Event/channels/<ID>/capabilities-->true
  </isSupportChannelEventCap>
  <SensorCap>
    <!--ro, opt, object, 传感器参数配置, desc:接口:/ISAPI/System/Sensor/capabilities-->
    <SensorNums>
      <!--ro, opt, int, 最多添加传感器个数, range:[,], step:, unit:, unitType:-->1
    </SensorNums>
    <isSupportSensorPortConfiguration>
      <!--ro, opt, bool, 支持监测量参数配置-->true
    </isSupportSensorPortConfiguration>
    <isSupportSensorPortControl>
      <!--ro, opt, bool, 支持供监测量控制-->true
    </isSupportSensorPortControl>
    <isSupportAcquireSensorStatus>
      <!--ro, opt, bool, 支持传感器实时状态获取-->true
    </isSupportAcquireSensorStatus>
    <isSupportSearchSensorData>
      <!--ro, opt, bool, 支持传感器数据查询-->true
    </isSupportSearchSensorData>
  </SensorCap>
  <isSupportEncryption>
    <!--ro, opt, bool, 码流加密能力-->true
  </isSupportEncryption>
  <isSupportTrial>
    <!--ro, opt, bool, 是否支持审讯机相关配置-->true
  </isSupportTrial>
  <isSupportSignInstrument>
    <!--ro, opt, bool, 体征仪能力-->true
  </isSupportSignInstrument>
  <isSupportLocate>
    <!--ro, opt, bool, 是否支持定位配置-->true
  </isSupportLocate>
  <isSupportVibration>
    <!--ro, opt, bool, 是否支持震动参数配置-->true
  </isSupportVibration>
  <isSupportMixedTargetDetection>
    <!--ro, opt, bool, 是否支持混合目标检测事件-->null
  </isSupportMixedTargetDetection>
  <SDCardCtrlCap>
    <!--ro, opt, object, 存储卡远程控制能力-->
    <isSupportIOCtrl>
      <!--ro, opt, bool, 是否支持升级控制命令能力-->true
    </isSupportIOCtrl>
    <isSupportReadCardStatus>
      <!--ro, opt, bool, 是否支持认卡操作能力-->true
    </isSupportReadCardStatus>
    <isSupportStartUpdate>
      <!--ro, opt, bool, 是否支持开始升级控制能力-->true
    </isSupportStartUpdate>
    <isSupportEndUpdate>
      <!--ro, opt, bool, 是否支持结束升级控制能力-->true
    </isSupportEndUpdate>
    <isSupportPowerCtrl>
      <!--ro, opt, bool, 是否支持上下电控制能力-->true
    </isSupportPowerCtrl>
  </SDCardCtrlCap>
  <isSupportMutiChannelCalibration>
    <!--ro, opt, bool, 是否支持多通道通道标定-->true
  </isSupportMutiChannelCalibration>
  <isSupportElevatorFloorCalibration>
    <!--ro, opt, bool, 是否支持楼层显示配置-->true
  </isSupportElevatorFloorCalibration>
  <isSupportPictureCaptureComparision>
    <!--ro, opt, bool, 是否支持图片与监控点图片1V1比对-->true
  </isSupportPictureCaptureComparision>
  <isSupportGPSCalibratation>
    <!--ro, opt, bool, 是否支持GPS标定功能-->true
  </isSupportGPSCalibratation>
  <isSupportCityManagement>
    <!--ro, opt, bool, 是否支持智慧城管检测事件-->true
  </isSupportCityManagement>
  <isSupportBVCorrect>
    <!--ro, opt, bool, 设备是否支持相机矫正参数配置-->true
  </isSupportBVCorrect>
  <isSupportSteamingCodingModeSwitch>
    <!--ro, opt, bool, 编码输出模式(true-支持, desc:接口:/ISAPI/System/streamingCoding/mode/capabilities?format=json-->true
  </isSupportSteamingCodingModeSwitch>
  <supportImageChannel opt="1,2,3,4">
    <!--ro, opt, string, 是否支持图像通道配置, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:当前设备所支持的实际图像通道配置(图像参数接口：/ISAPI/Image/channels/<channelID>),若不返回该节点图像通道默认与编码通道(/ISAPI/Streaming/channels)保持一致。
    该节点主要用于图像通道与实际码流通道不一致的情况；如实验考图像拼接设备，该设备存在四个sensor却拼接为一路编码通道进行输出，但是每个sensor都支持图像参数配置，图像通道1默认仅对sensor1的图像生效}-->null
  </supportImageChannel>
  <isSupportPanoramaCalibration>
    <!--ro, opt, bool, 是否支持全景相机标定配置-->true
  </isSupportPanoramaCalibration>
  <isSupportPanoramaMode>
    <!--ro, opt, bool, 是否支持全景相机模式切换-->true
  </isSupportPanoramaMode>
  <supportSnapshotChannel opt="1">
    <!--ro, opt, string, 抓图计划通道支持能力, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </supportSnapshotChannel>
  <isSupportPanoramaCorrections>
    <!--ro, opt, bool, 是否支持算法矫正参数配置-->true
  </isSupportPanoramaCorrections>
  <isSupportActiveMulticast>
    <!--ro, opt, bool, 是否支持多播配置  /ISAPI/Streaming/channels/<ID>/capabilities中Multicast-->true
  </isSupportActiveMulticast>
  <isSupportChannelEventListCap>
    <!--ro, opt, bool, 表示是否支持获取设备所有通道的事件能力-->true
  </isSupportChannelEventListCap>
  <VCAResourceChannelsCap>
    <!--ro, opt, object, 表示支持智能资源按通道独立切换-->
    <ChannelsList>
      <!--ro, opt, array, 通道列表, subType:object, range:[,]-->
      <channelsID>
        <!--ro, req, int, 设备支持的通道号, range:[,], step:, unit:, unitType:-->1
      </channelsID>
    </ChannelsList>
  </VCAResourceChannelsCap>
  <isSupportTimerVCAResource>
    <!--ro, opt, bool, 是否支持定时智能资源切换-->true
  </isSupportTimerVCAResource>
  <MixedTargetDetection>
    <!--ro, opt, object, 设备支持混合目标识别中具体目标的识别能力-->
    <isSupportFaceRecognition>
      <!--ro, opt, bool, 支持人脸抓拍-->true
    </isSupportFaceRecognition>
    <isSupportHumanRecognition>
      <!--ro, opt, bool, 支持人体识别-->true
    </isSupportHumanRecognition>
    <isSupportVehicleRecognition>
      <!--ro, opt, bool, 支持车辆识别-->true
    </isSupportVehicleRecognition>
  </MixedTargetDetection>
  <isSupportDiscoveryMode>
    <!--ro, opt, bool, 是否支持发现模式, desc:接口:/ISAPI/System/discoveryMode/capabilities-->true
  </isSupportDiscoveryMode>
  <isSupportDumpData>
    <!--ro, opt, bool, 是否支持Dump文件导出-->true
  </isSupportDumpData>
  <isSupportCameraAccessConfiguration>
    <!--ro, opt, bool, 支持相机接入配置, desc:接口:/ISAPI/System/cameraAccess/configuration/capabilities?format=json-->true
  </isSupportCameraAccessConfiguration>
  <isSupportIntelligentSearch>
    <!--ro, opt, bool, 支持智能检索, desc:接口:/ISAPI/SDT/Management/IntelligentSearch/capabilities?format=json-->true
  </isSupportIntelligentSearch>
  <isSupportAutoMaintenance>
    <!--ro, opt, bool, 支持自动运维, desc:接口:/ISAPI/System/autoMaintenance/capabilities?format=json-->true
  </isSupportAutoMaintenance>
  <isSupportRtspOverHTTPS>
    <!--ro, opt, bool, 支持RtspOverHTTPS-->true
  </isSupportRtspOverHTTPS>
  <isSupportIntersectionAnalysis>
    <!--ro, opt, bool, 是否支持路口分析, desc:接口:/ISAPI/Intelligent/channels/<ID>/intersectionAnalysis/capabilities?format=json-->true
  </isSupportIntersectionAnalysis>
  <isSupportAudioInteract>
    <!--ro, opt, bool, 是否支持音频互动功能（来自慧影科技）, desc:接口:/ISAPI/Streaming/interact/capabilities?format=json-->true
  </isSupportAudioInteract>
  <isSupportChannelFullEventListCap>
    <!--ro, opt, bool, 表示是否支持获取设备所有通道的事件能力-->true
  </isSupportChannelFullEventListCap>
  <isSupportAUXInfoCap>
    <!--ro, opt, bool, 表示是否支持获取设备所有通道属性能力-->true
  </isSupportAUXInfoCap>
  <supportPanoramaChannel opt="2">
    <!--ro, opt, string, 设备支持的全景通道, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </supportPanoramaChannel>
  <regionClip>
    <!--ro, opt, object, 支持区域剪裁的通道及码流-->
    <channels opt="101">
      <!--ro, opt, string, 支持区域剪裁的通道及码流, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:101:通道号*100+码流类型-->null
    </channels>
  </regionClip>
  <AIDEventSupport opt="abandonedObject,pedestrian,congestion,roadBlock,construction,trafficAccident,fogDetection,wrongDirection,illegalParking,SSharpDriving,lowSpeed,dragRacing,obstacle">
    <!--ro, opt, string, 支持的AID事件, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </AIDEventSupport>
  <TFSEventSupport opt="illegalParking ,wrongDirection,crossLane,laneChange,vehicleExist,turnRound,parallelParking,notKeepDistance,notSlowZebraCrossing,overtakeRightSide,lowSpeed,dragRacing,changeLaneContinuously,SSharpDriving,largeVehicleOccupyLine,jamCrossLine,obstacle,blackSmokeVehicle,turnRightStop">
    <!--ro, opt, string, 支持的TFS, range:[,], attr:opt{opt, string, 未定义, range:[,]}-->null
  </TFSEventSupport>
  <isVehicleStatisticsSupport>
    <!--ro, opt, bool, 是否支持交通数据采集配置-->true
  </isVehicleStatisticsSupport>
  <isSupportElevatorFloorName>
    <!--ro, opt, bool, 是否支持楼层自定义名称配置-->true
  </isSupportElevatorFloorName>
  <isSupportVehicleFaceRecognition>
    <!--ro, opt, bool, 是否支持卡口车辆识别中, desc:背景：交通产品线在车辆识别中支持"人脸"（驾驶室）的识别,但是设备实现的中没有新增能力节点告知上层集成方,设备具备该"人脸抓拍能力"。-->true
  </isSupportVehicleFaceRecognition>
  <VQDEventSupport opt="luma,chroma,snow,streak,freeze,sigLose,clarity,jitter,block,flowers,noise,ghost,purple,ICR,protectiveFilm">
    <!--ro, opt, string, VQD事件列表, range:[,], attr:opt{opt, string, 未定义, range:[,]}, desc:亮度异常：Luma；图像偏色：Chroma；雪花干扰：Snow；条纹干扰：Streak；画面冻结：Freeze；信号丢失：SigLose；清晰度异常：        Clarity；画面抖动：JItter；视频遮挡：Block；花屏：Flowers；噪点：Noise；鬼像：Ghost；紫边：Purple；ICP：ICR；保护膜未撕：protectiveFilm-->null
  </VQDEventSupport>
  <IOTCap>
    <!--ro, opt, object, 支持分页查询设备状态列表, desc:不支持不返回, 不支持时通过GET获取列表-->
    <supportChannelNum opt="1">
      <!--ro, opt, int, 支持的IOT设备通道数目, range:[,], step:, unit:, unitType:, attr:opt{opt, string, 未定义, range:[,]}-->1
    </supportChannelNum>
    <startChannelNo>
      <!--ro, opt, int, 起始IOT设备通道号, range:[,], step:, unit:, unitType:-->1
    </startChannelNo>
    <isSupportlinkageChannelsSearch>
      <!--ro, opt, bool, 设备支持返回true, desc:接口:(POST /ISAPI/System/IOT/linkageChannels?format=json)-->true
    </isSupportlinkageChannelsSearch>
    <isSupportIOTChannelCap>
      <!--ro, opt, bool, 是否支持通配置能力-->true
    </isSupportIOTChannelCap>
    <satusSearchTaskCap>
      <!--ro, opt, object, 查询任务能力-->
      <maxResults>
        <!--ro, opt, int, 最大返回结果, range:[,], step:, unit:, unitType:-->1
      </maxResults>
      <filterType opt="all,online,offline,updateFailed">
        <!--ro, opt, enum, 筛选类型, subType:string, [all#所有,online#在线,offline#离线,updateFailed#升级失败], attr:opt{req, string, 取值范围, range:[,]}-->all
      </filterType>
      <deviceStatus opt="calling,noCall,medicationChangePrompt,alarming,offline,free">
        <!--ro, opt, string, 设备状态查询条件取值范围
            , range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:calling-通话中,noCall-非通话状态,medicationChangePrompt-换药提醒中,alarming-报警中,offline-离,free-空闲。多个条件默认采用 ‘与’ 关系-->calling
      </deviceStatus>
      <logicRelationship opt="and,or">
        <!--ro, opt, string, 设备状态查询条件逻辑关系取值范围, range:[0,16], attr:opt{req, string, 取值范围, range:[,]}, desc:and-与关系,or-或关系,默认and,当deviceStatus存在时有效-->and
      </logicRelationship>
      <alarmType opt="SOS,toilet">
        <!--ro, opt, string, 报警类型取值范围, range:[0,16], attr:opt{req, string, 取值范围, range:[,]}, desc:SOS-SOS呼救,toilet-卫生间报警,当deviceStatus存在alarming时可选有效-->test
      </alarmType>
      <callWaitingType opt="normal,cisit">
        <!--ro, opt, string, 报警类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:normal-正常呼叫等待, visit-探视呼叫等待,当deviceStatus存在callWaiting时可选有效-->test
      </callWaitingType>
    </satusSearchTaskCap>
    <channelConfigList>
      <!--ro, opt, object, 按照unitType类型返回列表能力-->
      <channelConfig>
        <!--ro, opt, object, 添加设备中设备类型能力-->
        <unitType>
          <!--ro, opt, enum, 单元类型, subType:string, [indoor#室内,villa#别墅门口机,confirm#二次确认机,outdoor#门口机,fence#围墙机,doorbell#门铃机,manage#管理机,acs#门禁设备,wardStation#探视分机,bedheadExtension#床头分机,bedsideExtension#床旁分机,terminal#终端,netAudio#网络音响,analogIndoor#模拟室内机,decoder#解码器]-->outdoor
        </unitType>
        <floorNumber min="0" max="10">
          <!--ro, opt, int, 层号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </floorNumber>
        <roomNumber min="0" max="10">
          <!--ro, opt, int, 房间号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </roomNumber>
        <isSupportSlaveDevice>
          <!--ro, opt, bool, 是否支持从设备-->true
        </isSupportSlaveDevice>
        <isSupportZeroFloorNumber>
          <!--ro, opt, bool, 是否支持0号楼层, desc:和floorNumber字段一起使用-->true
        </isSupportZeroFloorNumber>
        <periodNumber min="0" max="10">
          <!--ro, opt, int, 期号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </periodNumber>
        <buildingNumber min="0" max="10">
          <!--ro, opt, int, 楼号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </buildingNumber>
        <unitNumber min="0" max="10">
          <!--ro, opt, int, 单元号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </unitNumber>
        <deviceIndex min="1" max="15">
          <!--ro, opt, string, 设备序号字符长度取值范围, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
        </deviceIndex>
        <industryType opt="builidings,prison,medicalTreatment,broadcasting">
          <!--ro, opt, string, 行业(场景)类型, range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:builidings#楼宇,prison#监所,medicalTreatment#医疗,broadcasting#广播-->test
        </industryType>
        <priority min="1" max="100">
          <!--ro, opt, int, 呼叫优先级, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </priority>
        <transportType opt="unicast,multicast">
          <!--ro, opt, string, 广播方式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:unicast-单播,multicast-组播-->test
        </transportType>
        <audioVolume min="0" max="15">
          <!--ro, opt, int, 播放音量, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
        </audioVolume>
        <callForwardingEnabled>
          <!--ro, opt, bool, 呼叫转移使能, desc:true-开启,false-关闭,默认关闭-->true
        </callForwardingEnabled>
        <callForwardingType opt="unconditional,busy,noReply,noReachable,calling">
          <!--ro, opt, string, 呼叫转移类型, range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:unconditional-无条件呼叫转移,busy-遇忙呼叫转移,noReply-无应答呼叫转移,noReachable-不可达呼叫转移,calling-通话转移-->test
        </callForwardingType>
        <isSupportCallTerminalNumbe>
          <!--ro, opt, bool, 是否支持转移目标管理机长号配置-->true
        </isSupportCallTerminalNumbe>
        <customCommunicationName min="0" max="128">
          <!--ro, opt, string, 自定义通讯名称, range:[0,128], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:当有此节点时,设备呼叫时优先显示自定义通讯名称,而不是终端长号-->test
        </customCommunicationName>
        <isSupportMoreFeatures>
          <!--ro, opt, bool, 是否接入设备更多功能设置, desc:不传此节点默认不支持-->true
        </isSupportMoreFeatures>
      </channelConfig>
    </channelConfigList>
    <isSupportConfigTemplate>
      <!--ro, opt, bool, 是否支持导出设备列表模板-->true
    </isSupportConfigTemplate>
    <isSupportConfigReport>
      <!--ro, opt, bool, 是否支持获取导入详情-->true
    </isSupportConfigReport>
    <unitType opt="outdoor,indoor,manage,fence,terminal,netAudio">
      <!--ro, opt, string, 设备类型, range:[0,32], attr:opt{req, string, 取值范围, range:[,]}, desc:,terminal-终端, netAudio-网络音响-->test
    </unitType>
    <serialNumber min="1" max="32">
      <!--ro, opt, string, 设备序列号字符长度取值范围, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
    </serialNumber>
  </IOTCap>
  <isSupportLCDScreen>
    <!--ro, opt, bool, 是否支持LCD显示屏-->true
  </isSupportLCDScreen>
  <isSupportBluetooth>
    <!--ro, opt, bool, 是否支持蓝牙, desc:接口:/ISAPI/System/Bluetooth/capabilities-->true
  </isSupportBluetooth>
  <isSupportNetScreen>
    <!--ro, opt, bool, 是否支持网络显示器（诺瓦屏）, desc:接口:/ISAPI/System/netScreens/capabilities?format=json-->true
  </isSupportNetScreen>
  <isSupportLocation>
    <!--ro, opt, bool, 是否支持设备位置信息获取, desc:接口:/ISAPI/System/location?format=json-->true
  </isSupportLocation>
  <isSupportDebugInfoExport>
    <!--ro, opt, bool, 是否支持调试信息导出, desc:接口:/ISAPI/System/debugInfoExport/capabilities?format=json-->true
  </isSupportDebugInfoExport>
  <isSupportIoTGateway>
    <!--ro, opt, bool, 是否支持物联网关功能, desc:接口:/ISAPI/System/IoTGateway/capabilities?format=json-->true
  </isSupportIoTGateway>
  <isSupportImageCap>
    <!--ro, opt, bool, 是否支持图像参数配置-->true
  </isSupportImageCap>
  <isSupportLogToUSB opt="true,false">
    <!--ro, opt, bool, 是否支持日志导出到USB, attr:opt{opt, string, 未定义, range:[,]}, desc:接口:/ISAPI/System/exportLogToUSB/capabilities?format=json-->true
  </isSupportLogToUSB>
  <isSupportWiresharkToUSB opt="true,false">
    <!--ro, opt, bool, 是否支持抓包信息导出到USB, attr:opt{opt, string, 未定义, range:[,]}, desc:接口:/ISAPI/System/wiresharkToUSB/capabilities?format=json-->true
  </isSupportWiresharkToUSB>
  <CDBurningStreamEncryptionChannels opt="1,2">
    <!--ro, opt, string, 设备刻录码流加密通道能力返回, range:[,], attr:opt{opt, string, 枚举值, range:[,]}, desc:接口:/ISAPI/Streaming/channels/<ID>/capabilities中的isSupportCDBurningEncryption-->true
  </CDBurningStreamEncryptionChannels>
  <isSupportOCR>
    <!--ro, opt, bool, 是否支持OCR检测, desc:接口:/ISAPI/Intelligent/channels/<ID>/OCR/capabilities?format=json-->true
  </isSupportOCR>
  <isSupportInstallationAngleCalibration>
    <!--ro, opt, bool, 是否支持安装倾角校准能力, desc:接口:/ISAPI/System/installationAngleCalibration/channels/<ID>/capabilities-->true
  </isSupportInstallationAngleCalibration>
  <isSupportZeroBiasCalibration>
    <!--ro, opt, bool, 是否支持零偏倾角校准能力节点, desc:接口:/ISAPI/System/zeroBiasCalibration/channels/<ID>?format=json-->true
  </isSupportZeroBiasCalibration>
  <isSupportCalibrationFile>
    <!--ro, opt, bool, 是否支持标定文件导入, desc:接口:/ISAPI/System/configurationData-->true
  </isSupportCalibrationFile>
  <isSupportDisplayTrajectory>
    <!--ro, opt, bool, 是否支持目标路径叠加（播放库）-->true
  </isSupportDisplayTrajectory>
  <maximumSuperPositionTime opt="5,10,20,30">
    <!--ro, opt, string, 最长叠加时间, range:[,], attr:opt{opt, string, 最大叠加时间枚举, range:[,], desc:单位：s}, desc:仅在支持目标路径叠加时返回,单位：s-->true
  </maximumSuperPositionTime>
  <isSupportUnitConfig>
    <!--ro, opt, bool, 是否单位配置, desc:接口:/ISAPI/System/unitConfig/capabilities?format=json-->true
  </isSupportUnitConfig>
  <isSupportShipsDetectionWithScene>
    <!--ro, opt, bool, 是否支持按场景划分的船只检测-->true
  </isSupportShipsDetectionWithScene>
  <isSupportPictureServer>
    <!--ro, opt, bool, 是否支持图片存储服务器配置, desc:接口:/ISAPI/System/PictureServer/capabilities?format=json-->true
  </isSupportPictureServer>
  <isSupportEmmcInfo>
    <!--ro, opt, bool, EMMC相关配置支持能力, desc:接口:/ISAPI/System/emmcInfo/capabilities?format=json-->true
  </isSupportEmmcInfo>
  <isSupportVehicleIllegalType opt="1,2...29">
    <!--ro, opt, string, 设备支持的车辆违章类型, range:[,], attr:opt{opt, string, 枚举值, range:[,]}, desc:内容值和索引值列表保持一致,参考NET_ITS_PLATE_RESULT.NET_DVR_VEHICLE_INFO.byIllegalType,背景： 抓拍机对接新平台,设备支持"交通违章报警",但是设备实现装没有能力集节点告知上层集成方,该设备具有哪些"交通违章报警"能力,即交通违章报警能力不够细化,如果后续业务平台需要按照细化能力做业务的话,设备当前设备无法兼容；足够细化的能力,在各个触发模式的配置中,这样会造成DAC的接入判断接口次数过多,影响整体接入。-->null
  </isSupportVehicleIllegalType>
  <DevInfoSearch opt="tiltAngle">
    <!--ro, opt, string, 是否支持设备信息查询, range:[,], attr:opt{opt, string, 枚举值, range:[,], desc:/ISAPI/System/workingstatus/devInfoSearch?format=json中DevInfoCond.searchType的可选值}, desc:接口:/ISAPI/System/workingstatus/devInfoSearch?format=json-->null
  </DevInfoSearch>
  <isSupportAIOpenPlatform>
    <!--ro, opt, bool, 设备是否支持AI开放平台设备级能力, desc:接口:/ISAPI/Intelligent/AIOpenPlatform/capabilities?format=json-->true
  </isSupportAIOpenPlatform>
  <isSupportPictureDownloadError>
    <!--ro, opt, bool, 是否支持图片下载失败异常上报, desc:eventType:pictureDownloadError-->true
  </isSupportPictureDownloadError>
  <isSupportStudentBehavior>
    <!--ro, opt, bool, 是否支持课堂学生行为数据上传, desc:eventType:studentBehavior-->true
  </isSupportStudentBehavior>
  <guideEventSupport opt="linkageCapture">
    <!--ro, opt, string, web快速引导配置列表, range:[,], attr:opt{opt, string, 枚举值, range:[,], desc:linkageCapture：联动抓拍}, desc:接口:/ISAPI/System/guideConfig/<guideEvent>/capabilities?format=json-->null
  </guideEventSupport>
  <isSupportDevStatus>
    <!--ro, opt, bool, 是否支持设备状态获取, desc:接口:/ISAPI/System/status-->true
  </isSupportDevStatus>
  <supportRemoteCtrl opt="up,down,left,right,enter,menu,num,power,esc,edit,F1,.prev,rec,play,stop,notSupport">
    <!--ro, opt, string, 设备是否支持遥控器控制, range:[,], attr:opt{opt, string, 枚举值, range:[,]}, desc:接口:/ISAPI/System/remoteCtrl/XXX-->null
  </supportRemoteCtrl>
  <isSupportSSDFileSystemUpgrade>
    <!--ro, opt, bool, 是否支持是否支持SSD文件系统升级, desc:接口:对应/ISAPI/System/SSDFileSystem/upgrade?format=json-->true
  </isSupportSSDFileSystemUpgrade>
  <isSupportSSDFileSystemFormat>
    <!--ro, opt, bool, 是否支持是否支持SSD格式化, desc:接口:/ISAPI/System/SSDFileSystem/format?format=json-->true
  </isSupportSSDFileSystemFormat>
  <FaceCounting>
    <!--ro, opt, object, 是否支持人脸客流-->
    <ChannelsList>
      <!--ro, opt, array, 通道列表, subType:object, range:[,]-->
      <channelsID>
        <!--ro, req, int, 设备支持的通道号, range:[,], step:, unit:, unitType:-->1
      </channelsID>
    </ChannelsList>
  </FaceCounting>
  <isSupportCluster>
    <!--ro, opt, bool, 对应协议, desc:接口:/ISAPI/ContentMgmt/Cluster/capabilities-->true
  </isSupportCluster>
  <DeviceConfigurationSupport opt="time,network,accessProtocol,recordSchedule,channel,customProtocol">
    <!--ro, opt, string, 设备参数配置支持配置的内容, range:[,], attr:opt{opt, string, 枚举值, range:[,], desc:依次为：时间参数、网络参数、接入协议配置、录像计划参数、通道参数、自定义协议配置}, desc:接口:/ISAPI/System/deviceConfiguration-->null
  </DeviceConfigurationSupport>
  <behaviorEventSupport opt="getUp,toiletTarry,playCellphone">
    <!--ro, opt, string, 异常行为识别事件类型, range:[,], attr:opt{opt, string, 异常行为识别事件类型枚举值, range:[,], desc:起身:getUp; 如厕超时:toiletTarry; 玩手机:playCellphone}-->null
  </behaviorEventSupport>
  <isSupportBVCorrectPassthrough>
    <!--ro, opt, bool, 是否支持相机矫正数据透传, desc:接口:/ISAPI/System/BVCorrect/Passthrough/channels/<ID>/capabilities?format=json-->true
  </isSupportBVCorrectPassthrough>
  <VehiclePositionControl>
    <!--ro, opt, object, 是否支持车辆方位布防-->
    <license min="0" max="16">
      <!--ro, req, string, 车牌号, range:[,], attr:min{opt, string, 车牌号长度最小值, range:[,]},max{opt, string, 车牌号长度最大值, range:[,]}-->null
    </license>
    <intervalTime min="0" max="65535" def="1">
      <!--ro, req, int, 上传间隔, range:[,], step:, unit:s, unitType:时间, attr:min{opt, string, 上传间隔最小值, range:[,]},max{opt, string, 上传间隔最大值, range:[,]},def{opt, string, 上传间隔默认值, range:[,]}-->1
    </intervalTime>
  </VehiclePositionControl>
  <supportGISEvent opt="AID,TPS,ANPR,mixedTargetDetection">
    <!--ro, opt, string, 支持GIS信息获取的事件能力, range:[,], attr:opt{opt, string, 可选项, range:[,]}-->null
  </supportGISEvent>
  <isSupportGPSPTZCalibratation>
    <!--ro, opt, bool, 是否支持GPSPTZ标定, desc:接口:/ISAPI/System/GPSPTZCalibratation/channels/<ID>/points?format=json-->true
  </isSupportGPSPTZCalibratation>
  <isSupportRadar>
    <!--ro, opt, bool, 是否支持雷达, desc:接口:/ISAPI/Radar/capabilities?format=json-->true
  </isSupportRadar>
  <isSupportISUPHttpPassthrough>
    <!--ro, opt, bool, 是否支持ISUPV5.0http透传-->true
  </isSupportISUPHttpPassthrough>
  <isSupportMaterialListQuery>
    <!--ro, opt, bool, 是否支持素材列表请求上报, desc:事件:materialListQuery-->true
  </isSupportMaterialListQuery>
  <isSupportDebugLogAsync>
    <!--ro, opt, bool, 是否支持调试日志异步导出-->true
  </isSupportDebugLogAsync>
  <isSupportAlgorithmsInfo>
    <!--ro, opt, bool, 是否支持设备算法版本获取-->true
  </isSupportAlgorithmsInfo>
  <isSupportSecurityChecking>
    <!--ro, opt, bool, 是否支持安检过包检测配置, desc:支持返回true,不支持无需返回-->true
  </isSupportSecurityChecking>
  <isSupportSecurityCheckException>
    <!--ro, opt, bool, 是否支持安检异常事件, desc:对应事件上报报文中eventType:securityCheckException-->true
  </isSupportSecurityCheckException>
  <isSupportPictureManage>
    <!--ro, opt, bool, 是否支持设备图片管理功能, desc:接口: /ISAPI/System/isSupportPictureManage/capabilities?format=json-->true
  </isSupportPictureManage>
  <isSupportAutoSwitch>
    <!--ro, opt, bool, 是否支持自动开关机, desc:接口:/ISAPI/System/autoSwitch/capabilities?format=json-->true
  </isSupportAutoSwitch>
  <SHMCap>
    <!--ro, opt, object, SHM报警-->
    <isSupportHighHDTemperature>
      <!--ro, opt, bool, 是否支持硬盘温度过高检测, desc:eventType:highHDTemperature-->true
    </isSupportHighHDTemperature>
    <isSupportLowHDTemperature>
      <!--ro, opt, bool, 是否支持硬盘温度过低检测, desc:eventType:lowHDTemperature-->true
    </isSupportLowHDTemperature>
    <isSupportHDImpact>
      <!--ro, opt, bool, 是否支持硬盘冲击检测, desc:eventType:hdImpact-->true
    </isSupportHDImpact>
    <isSupportHDBadBlock>
      <!--ro, opt, bool, 是否支持硬盘坏块检测, desc:eventType:hdBadBlock-->true
    </isSupportHDBadBlock>
    <isSupportSevereHDFailure>
      <!--ro, opt, bool, 是否支持硬盘严重故障检测, desc:eventType:severeHDFailure-->true
    </isSupportSevereHDFailure>
  </SHMCap>
  <isSupportLinkStatusEvent>
    <!--ro, opt, bool, 是否支持设备网络连接状态信息上报, desc:eventType:linkEvent-->true
  </isSupportLinkStatusEvent>
  <isSupportVideoDealStatus>
    <!--ro, opt, bool, 是否支持视频数据处理状态信息上报, desc:eventType:videoDealStatus-->true
  </isSupportVideoDealStatus>
  <isSupportAudioDealStatus>
    <!--ro, opt, bool, 是否支持音频数据处理状态信息上报, desc:eventType:audioDealStatus-->true
  </isSupportAudioDealStatus>
  <isSupportNetPackLossStatus>
    <!--ro, opt, bool, 是否支持网络丢包状态信息上报, desc:eventType:netPacketLoss-->true
  </isSupportNetPackLossStatus>
  <isSupportVideoConferenceStatus>
    <!--ro, opt, bool, 是否支持视频会议状态信息上报, desc:eventType:videoConference-->true
  </isSupportVideoConferenceStatus>
  <isSupportDataPrealarm>
    <!--ro, opt, bool, 是否支持流量预警事件, desc:eventType:dataPrealarm-->true
  </isSupportDataPrealarm>
  <isSupportClearCache>
    <!--ro, opt, bool, 是否支持清空缓存, desc:接口:/ISAPI/System/clearCache?format=json-->true
  </isSupportClearCache>
  <isSupportIntelligentMode>
    <!--ro, opt, bool, 是否支持智能模式切换, desc:接口:/ISAPI/System/IntelligentMode?format=json-->true
  </isSupportIntelligentMode>
  <isSupportFaceTemperatureMeasurementEvent>
    <!--ro, opt, bool, 是否支持人脸测温事件, desc:对应事件上报报文中eventType:FaceTemperatureMeasurementEvent-->true
  </isSupportFaceTemperatureMeasurementEvent>
  <isSupportQRCodeEvent>
    <!--ro, opt, bool, 是否支持二维码事件, desc:对应事件上报报文中eventType:QRCodeEvent-->true
  </isSupportQRCodeEvent>
  <isSupportVisitorEvent>
    <!--ro, opt, bool, 是否支持访客事件, desc:对应事件上报报文中eventType:VisitorEvent-->true
  </isSupportVisitorEvent>
  <isSupportEmployeeAuthEvent>
    <!--ro, opt, bool, 是否支持员工授权事件, desc:对应事件上报报文中eventType:EmployeeAuthEvent-->true
  </isSupportEmployeeAuthEvent>
  <isSupportVisitorInfoSearchEvent>
    <!--ro, opt, bool, 是否支持访客信息查询事件, desc:对应事件上报报文中eventType:VisitorInfoSearchEvent-->true
  </isSupportVisitorInfoSearchEvent>
  <isSupportFaceContrastResultDisplay>
    <!--ro, opt, bool, 是否支持人脸比对结果展示, desc:接口:/ISAPI/Intelligent/faceContrast/resultDisplay/capabilities?format=json-->true
  </isSupportFaceContrastResultDisplay>
  <isSupportSnapshotAsync>
    <!--ro, opt, bool, 是否支持异步手动抓图（返回图片URL）, desc:接口:/ISAPI/Streaming/channels/<ID>/picture/async?format=json-->true
  </isSupportSnapshotAsync>
  <isSupportLogExportByUSB>
    <!--ro, opt, bool, 日志从U盘导出到PC, desc:接口:/ISAPI/System/exportUSBLog?format=json-->true
  </isSupportLogExportByUSB>
  <isSupportShellCmd>
    <!--ro, opt, bool, 是否支持shell命令控制, desc:接口:/ISAPI/System/shellCmd?format=json-->true
  </isSupportShellCmd>
  <faceMonitor opt="dailyFaceMonitor,dailyFaceTracking,VCAFaceMonitor,VCAFaceTracking,manualFaceMonitor,advanceConfiguration,">
    <!--ro, opt, bool, 是否支持人脸布防, attr:opt{opt, string, 未定义, range:[,]}, desc:接口:(/ISAPI/Intelligent/channels/<ID>/dailyFaceMonitor?format=json)-->true
  </faceMonitor>
  <isSupportRelatedVCAResource>
    <!--ro, opt, bool, 是否支持系统级智能资源配置协议, desc:接口:/ISAPI/System/RelatedVCAResource/capabilities?format=json,该协议与原有智能资源切换协议互斥：-->true
  </isSupportRelatedVCAResource>
  <isSupportVehicleMonitor>
    <!--ro, opt, bool, 是否支持智能车辆布防跟踪, desc:接口: /ISAPI/Traffic/channels/<ID>/vehicleMonitor/capabilities?format=json-->true
  </isSupportVehicleMonitor>
  <isSupportManualVehicleMonitor>
    <!--ro, opt, bool, 是否支持手动车辆布防跟踪 , desc:接口:/ISAPI/Traffic/channels/<ID>/vehicleMonitor/manual/capabilitis?format=json-->true
  </isSupportManualVehicleMonitor>
  <isSupportDailyVehicleMonitor>
    <!--ro, opt, bool, 是否支持日常车辆布防跟踪, desc:接口: /ISAPI/Traffic/channels/<ID>/vehicleDetect/capabilities-->true
  </isSupportDailyVehicleMonitor>
  <isSupportInputProxyDeviceInfo>
    <!--ro, opt, bool, 是否支持获取设备代理通道接入的设备信息, desc:接口: /ISAPI/ContentMgmt/InputProxy/channels/<ID>/capabilities中的isSupportChannelDeviceInfo-->true
  </isSupportInputProxyDeviceInfo>
  <isSupportAccessControlCap>
    <!--ro, opt, bool, 门禁总能力, desc:接口: /ISAPI/AccessControl/capabilities-->true
  </isSupportAccessControlCap>
  <isSupportDebugLog>
    <!--ro, opt, bool, 是否支持调试日志导出, desc:接口:/ISAPI/System/debugLog?format=json-->true
  </isSupportDebugLog>
  <isSupportFaceAppear>
    <!--ro, opt, bool, 是否支持人脸出现检测事件, desc:eventType:faceAppear-->true
  </isSupportFaceAppear>
  <isSupportFaceDisappear>
    <!--ro, opt, bool, 是否支持人脸消失检测事件, desc:eventType:faceDisappear-->true
  </isSupportFaceDisappear>
  <isSupportTeacherBehavior>
    <!--ro, opt, bool, 是否支持教师异常行为识别事件, desc:eventType:teacherBehavior-->true
  </isSupportTeacherBehavior>
  <isSupportHeadRiseRate>
    <!--ro, opt, bool, 是否支持人脸出现检测事件, desc:eventType:headRiseRate-->true
  </isSupportHeadRiseRate>
  <isSupportIPCUpgrade>
    <!--ro, opt, bool, 是否支持通过NVR等设备对IPC进行升级, desc:接口:/ISAPI/System/IPCUpgrade/<ID>?format=json-->true
  </isSupportIPCUpgrade>
  <isSupportFaceLibRebuildEvent>
    <!--ro, opt, bool, 是否支持人脸库重新建模事件上报, desc:eventType:faceLibRebuild-->true
  </isSupportFaceLibRebuildEvent>
  <isSupportCalibrationStream>
    <!--ro, opt, bool, 标定码流支持能力, desc:接口:/ISAPI/Streaming/calibStream/capabilities?format=json-->true
  </isSupportCalibrationStream>
  <isSupportChannelOccupy>
    <!--ro, opt, bool, 是否支持室外消防通道被车辆占用, desc:eventType:channelOccupy-->true
  </isSupportChannelOccupy>
  <isSupportOffDuty>
    <!--ro, opt, bool, 是否支持消控室人员离岗, desc:eventType:offDuty-->true
  </isSupportOffDuty>
  <isSupportNoCertificate>
    <!--ro, opt, bool, 是否支持消控室持证人员不足, desc:eventType:noCertificate-->true
  </isSupportNoCertificate>
  <isSupportSmokeAlarm>
    <!--ro, opt, bool, 是否支持烟雾报警, desc:eventType:smokeAlarm-->true
  </isSupportSmokeAlarm>
  <isSupportBatteryCarDisobey>
    <!--ro, opt, bool, 是否支持电瓶车违规停放, desc:eventType:batteryCarDisobey-->true
  </isSupportBatteryCarDisobey>
  <isSupportNoFireExtinguisherRecog>
    <!--ro, opt, bool, boolean是否支持灭火器缺失, desc:eventType:noFireExtinguisherRecog-->true
  </isSupportNoFireExtinguisherRecog>
  <isSupportIndoorPasswayBlock>
    <!--ro, opt, bool, 是否支持室内通道堵, desc:eventType:indoorPasswayBlock-->true
  </isSupportIndoorPasswayBlock>
  <isSupportFireSmartFireDetect>
    <!--ro, opt, bool, 是否支持火点检测, desc:eventType:fireSmartFireDetect-->true
  </isSupportFireSmartFireDetect>
  <isSupportDetectorRunningStatus>
    <!--ro, opt, bool, 是否支持探测器运行状态, desc:eventType:detectorRunningStatus-->true
  </isSupportDetectorRunningStatus>
  <isSupportDetectorOperationStatus>
    <!--ro, opt, bool, 是否支持探测器操作状态, desc:eventType:detectorOperationStatus-->true
  </isSupportDetectorOperationStatus>
  <isSupportDetectorTemperatureAlarm opt="highTemperature,riseTemperature,flame">
    <!--ro, opt, bool, 是否支持探测器温度报警, attr:opt{req, string, 未定义, range:[,]}-->true
  </isSupportDetectorTemperatureAlarm>
  <isSupportDetectorShelterAlarm>
    <!--ro, opt, bool, 是否支持探测器遮挡报警, desc:接口:eventType:detectorShelterAlarm-->true
  </isSupportDetectorShelterAlarm>
  <isSupportDetectorMotionAlarm>
    <!--ro, opt, bool, 是否支持探测器移动报警, desc:接口:eventType:detectorMotionAlarm-->true
  </isSupportDetectorMotionAlarm>
  <isSupportDetectorTamperAlarm>
    <!--ro, opt, bool, 是否支持探测器防拆报警, desc:接口:eventType:detectorTamperAlarm-->true
  </isSupportDetectorTamperAlarm>
  <isSupportDetectorEmergencyAlarm>
    <!--ro, opt, bool, 是否支持探测器紧急报警, desc:接口:eventType:detectorEmergencyAlarm-->true
  </isSupportDetectorEmergencyAlarm>
  <isSupportDetectorSmokeAlarm>
    <!--ro, opt, bool, 是否支持探测器烟雾报警, desc:接口:eventType:detectorSmokeAlarm-->true
  </isSupportDetectorSmokeAlarm>
  <isSupportDetectorCombustibleGasAlarm>
    <!--ro, opt, bool, 是否支持探测器可燃气体报警, desc:接口:eventType:detectorCombustibleGasAlarm-->true
  </isSupportDetectorCombustibleGasAlarm>
  <isSupportFireControlData>
    <!--ro, opt, bool, 是否支持消防实时数据上报, desc:接口:eventType:FireControlData-->true
  </isSupportFireControlData>
  <isSupportFireNoRegulation>
    <!--ro, opt, bool, 是否支持人离火事件上报, desc:接口:eventType:fireNoRegulation-->true
  </isSupportFireNoRegulation>
  <isSupportSmokeFireRecognize>
    <!--ro, opt, bool, 是否支持烟火识别事件上报, desc:接口:eventType:smokeFireRecognize-->true
  </isSupportSmokeFireRecognize>
  <isSupportClientProxyWEB>
    <!--ro, opt, bool, 是否支持WEB页面跳转-->true
  </isSupportClientProxyWEB>
  <WEBLocation>
    <!--ro, opt, string, WEB页面放置位置, range:[1,32], desc:local-设备本地，remote-远程（不返回该节点时，默认WEB页面放置设备本地）-->local
  </WEBLocation>
  <deviceId>
    <!--ro, opt, string, 设备ID, range:[1,32], desc:如果WEBLocation为remote，则需要返回设备唯一的设备ID，用来标示设备唯一对应的web包，这个deviceId有Web配置包统一管理，一款设备多型号返回相同-->test
  </deviceId>
  <isSupportTimeZone>
    <!--ro, opt, bool, 是否支持夏令时配置, desc:接口:/ISAPI/System/time/timeZone-->true
  </isSupportTimeZone>
  <isSptDiagnosis>
    <!--ro, opt, bool, 是否支持设备诊断, desc:接口:（/ISAPI/System/diagnosis）-->true
  </isSptDiagnosis>
  <isSptSerialLogCfg>
    <!--ro, opt, bool, 串口日志重定向配置, desc:接口:（/ISAPI/System/serialLogCfg?format=json）-->true
  </isSptSerialLogCfg>
  <isSptFileExport>
    <!--ro, opt, bool, 设备文件导出, desc:接口:（/ISAPI/System/fileExport?format=json）-->true
  </isSptFileExport>
  <isSptCertificationStandard>
    <!--ro, opt, bool, 是否支持主机认证标准配置, desc:接口:（/ISAPI/SecurityCP/certificationStandard）-->true
  </isSptCertificationStandard>
  <isSptKeypadLock>
    <!--ro, opt, bool, 是否支持键盘锁定, desc:接口:（/ISAPI/System/keypadLock/config）-->true
  </isSptKeypadLock>
  <isSupportVibrationDetection>
    <!--ro, opt, bool, 是否支持振动侦测, desc:接口:/ISAPI/System/channels/<ID>/vibrationDetection?format=json-->true
  </isSupportVibrationDetection>
  <isSupportSmokingDetectAlarm>
    <!--ro, opt, bool, 是否支持抽烟报警, desc:检测是抽烟的这个动作,消防报警上传中eventType:smokeDetectAlarm-->true
  </isSupportSmokingDetectAlarm>
  <isSupportRadarChannels>
    <!--ro, opt, bool, 表示支持雷达通道获取, desc:接口:/ISAPI/System/RadarChannels?format=json-->true
  </isSupportRadarChannels>
  <radarIPDForm>
    <!--ro, opt, enum, 雷球形态, subType:string, [single#单雷达,double_diagonal#双雷达180°对角,double_vertical#双雷达90°垂直角]-->single
  </radarIPDForm>
  <isSupportRadarFieldDetection>
    <!--ro, opt, bool, 是否支持雷达区域入侵, desc:接口:/ISAPI/Smart/RadarChannels/<radarChannelID>/radarFieldDetection/capabilities?format=json-->true
  </isSupportRadarFieldDetection>
  <isSupportRadarLineDetection>
    <!--ro, opt, bool, 是否支持雷达越界侦测, desc:接口:/ISAPI/Smart/RadarChannels/<radarChannelID>/radarLineDetection/capabilities?format=json-->true
  </isSupportRadarLineDetection>
  <mixedTargetDetectionWebNoDisplay>
    <!--ro, opt, bool, 混合目标识别不显示-->true
  </mixedTargetDetectionWebNoDisplay>
  <isSupportRemovePlaybackRecord>
    <!--ro, opt, bool, 是否支持去除回放录像(设备不支持录像回放), desc:支持返回true,不支持不返回.该节点在isSupportRemoveStorage为false时才可以返回,为true时不返回-->true
  </isSupportRemovePlaybackRecord>
  <isSupportAudioUpload>
    <!--ro, opt, bool, 是否支持音频文件上传, desc:接口:/ISAPI/System/Audio/audioUpload?format=json-->true
  </isSupportAudioUpload>
  <VCAResourceList>
    <!--ro, opt, array, 智能资源支持列表, subType:object, range:[,]-->
    <VCAResource>
      <!--ro, opt, object, 智能资源-->
      <VCAResourceType>
        <!--ro, opt, string, 智能资源类型, range:[,]-->null
      </VCAResourceType>
      <ChannleVCAResourceList>
        <!--ro, opt, array, 智能资源支持列表, subType:object, range:[,]-->
        <ChannleVCAResource>
          <!--ro, opt, object, 通道智能资源-->
          <channel>
            <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:-->1
          </channel>
          <channleVCAResourceType>
            <!--ro, opt, string, 通道智能资源类型, range:[,]-->null
          </channleVCAResourceType>
        </ChannleVCAResource>
      </ChannleVCAResourceList>
    </VCAResource>
  </VCAResourceList>
  <isSupportSlotInsertion>
    <!--ro, opt, bool, 是否支持槽位拔插, desc:eventType:slotInsertion-->true
  </isSupportSlotInsertion>
  <isSupportNetworkLoop>
    <!--ro, opt, bool, 是否支持环网告警, desc:eventType:networkLoop-->true
  </isSupportNetworkLoop>
  <isSupportSleep>
    <!--ro, opt, bool, 是否支持休眠配置, desc:/ISAPI/System/sleep/capabilities?format=json-->true
  </isSupportSleep>
  <isSupportContainerDetection>
    <!--ro, opt, bool, 是否支持集装箱检测, desc:/ISAPI/Intelligent/containerDetection/capabilities?format=json（部分设备不会返回本字段,此时通过/ISAPI/Traffic/ContentMgmt/InputProxy/channels/<ID>/ocrScene/capabilities协议返回值判断是否支持）-->true
  </isSupportContainerDetection>
  <isSupportRadarVideoDetection>
    <!--ro, opt, bool, 对应/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json, desc:接口:/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json-->true
  </isSupportRadarVideoDetection>
  <isSupportRadarVideoDetectionRealtime>
    <!--ro, opt, bool, 是否支持雷视目标检测事件, desc:接口:/ISAPI/Intelligent/channels/<ID>/radarVideoDetection/capabilities?format=json-->true
  </isSupportRadarVideoDetectionRealtime>
  <isSupportBatteryStatusUpload>
    <!--ro, opt, bool, 是否支持电池状态上报, desc:eventType:batteryStatus-->true
  </isSupportBatteryStatusUpload>
  <isSupportPowerConsumptionStatusUpload>
    <!--ro, opt, bool, 是否支持设备功耗状态上报-->true
  </isSupportPowerConsumptionStatusUpload>
  <isSupportOnlineUpgradeTask>
    <!--ro, opt, bool, 是否支持设备在线升级任务-->true
  </isSupportOnlineUpgradeTask>
  <isSupportPersonArmingTrack>
    <!--ro, opt, bool, 支持人员布防配置, desc:接口:/ISAPI/Intelligent/channels/<ID>/personArmingTrack/capabilities?format=json-->true
  </isSupportPersonArmingTrack>
  <isSupportManualPersonArmingTrack>
    <!--ro, opt, bool, 支持手动人员布防, desc:接口:/ISAPI/Intelligent/channels/<ID>/manualPersonArmingTrack?format=json-->true
  </isSupportManualPersonArmingTrack>
  <isSupportGPSVerification>
    <!--ro, opt, bool, 支持GPS校验点, desc:接口:/ISAPI/System/GPSVerification/channels/<ID>/points?format=json-->true
  </isSupportGPSVerification>
  <isSupportHBDLib>
    <!--ro, opt, bool, 是否支持人体库, desc:接口:/ISAPI/Intelligent/HBDLib/capabilities?format=json-->true
  </isSupportHBDLib>
  <isSupportDisinfectionInfo>
    <!--ro, opt, bool, 是否支持消毒信息上报, desc:eventType:disinfectionInfo-->true
  </isSupportDisinfectionInfo>
  <isSupportTempQueryDelete>
    <!--ro, opt, bool, 是否支持测温查询删除, desc:eventType:tempQueryDelete-->true
  </isSupportTempQueryDelete>
  <isSupportMobilePayment>
    <!--ro, opt, bool, 是否支持移动支付, desc:/ISAPI/System/mobilePayment?format=json-->true
  </isSupportMobilePayment>
  <isSupportFileSearch>
    <!--ro, opt, bool, 是否支持文件查询, desc:接口:/ISAPI/System/fileSearch?format=json-->true
  </isSupportFileSearch>
  <isSupportFileExportAsync>
    <!--ro, opt, bool, 是否支持文件异步导出, desc:接口:/ISAPI/System/fileExport/async?format=json-->true
  </isSupportFileExportAsync>
  <isSupportSSDFileSystemCapacity>
    <!--ro, opt, bool, 是否支持获取SSD系统容量分布, desc:接口:/ISAPI/System/SSDFileSystem/capacity?format=json-->true
  </isSupportSSDFileSystemCapacity>
  <isSupport4GSafetyHelmetInfo>
    <!--ro, opt, bool, 是否支持安全帽事件, desc:eventType:4GSafetyHelmetInfo-->true
  </isSupport4GSafetyHelmetInfo>
  <isSupportICCID>
    <!--ro, opt, bool, 是否支持ICCID信息获取, desc:接口:/ISAPI/System/deviceInfo/ICCID?format=json-->true
  </isSupportICCID>
  <isSupportFireEscapeDetection>
    <!--ro, opt, bool, 是否支持消防通道检测, desc:接口:/ISAPI/Intelligent/channels/<ID>/fireEscapeDetection/capabilities?format=json-->true
  </isSupportFireEscapeDetection>
  <isSupportTakingElevatorDetection>
    <!--ro, opt, bool, 是否支持乘梯检测, desc:接口:/ISAPI/Intelligent/channels/<ID>/takingElevatorDetection/capabilities?format=json-->true
  </isSupportTakingElevatorDetection>
  <isSupportVehicleMatchResult>
    <!--ro, opt, bool, 设备是否支持车牌比对 , desc:接口:/ISAPI/Intelligent/channels/<ID>/licensePlateContrast/capabilities?format=json-->true
  </isSupportVehicleMatchResult>
  <isSupportDataAware>
    <!--ro, opt, bool, 数据感知支持能力, desc:接口:/ISAPI/System/dataAware/capabilities?format=json-->true
  </isSupportDataAware>
  <isSupportAbnormalReboot>
    <!--ro, opt, bool, 是否支持异常重启事件, desc:eventType:abnormalReboot-->true
  </isSupportAbnormalReboot>
  <isSupportVehicleThermometry>
    <!--ro, opt, bool, 是否支持车辆测温检测, desc:接口:/ISAPI/Traffic/channels/<ID>/vehicleDetect/thermometry/capabilities?format=json-->true
  </isSupportVehicleThermometry>
  <AssociationScenesList>
    <!--ro, opt, array, 场景自适应关联列表, subType:object, range:[,], desc:代表设备支持通道间场景自适应关联:当前设备存在主（枪机）、从（球机）两个通道,但设备仅开放一个主通道给用户进行场景配置,从通道的场景配置不对外开放能力,从通道场景由设备自适应关联主通道场景:当前前端环动系列球机返回该能力-->
    <AssociationScenes>
      <!--ro, req, object, 通道间场景自适应所关联的通道列表-->
      <channelID>
        <!--ro, req, int, 可用于关联场景的通道ID, range:[,], step:, unit:, unitType:, desc:可用于关联场景的通道ID-->1
      </channelID>
      <isSupportScene>
        <!--ro, opt, bool, 是否支持场景配置, desc:该节点返回为true的话,代表当前通道作为主通道进行场景配置:若为从通道,则不支持场景配置,该节点无需返回-->true
      </isSupportScene>
    </AssociationScenes>
  </AssociationScenesList>
  <supportRelationVideoEvent opt="PIR,cityManagement,roadMaint">
    <!--ro, opt, string, 支持关联触发事件视频上传, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:PIR#PIR事件,cityManagement#城管事件,roadMaint#道路养护事件-->test
  </supportRelationVideoEvent>
  <isSupportVCAResourceList>
    <!--ro, opt, bool, 是否支持智能资源批量配置, desc:接口:/ISAPI/System/Video/inputs/channels/VCAResourceList?format=json-->true
  </isSupportVCAResourceList>
  <isSupportConvergenceCloud>
    <!--ro, opt, bool, 是否支持萤石互联互通通道级接口, desc:全部通道能力:/ISAPI/Event/convergenceCloud/channels/capabilities?format=json;指定通道能力/ISAPI/Event/convergenceCloud/channels/<ID>/capabilities?format=json-->true
  </isSupportConvergenceCloud>
  <isSupportInterconnection>
    <!--ro, opt, bool, 是否支持萤石互联互通设备级接口, desc:接口:/ISAPI/Event/convergenceCloud/capabilities?format=json-->true
  </isSupportInterconnection>
  <isSupportHPVehicleStatus>
    <!--ro, opt, bool, 是否支持月台车辆状态事件, desc:eventType:HPVehicleStatus-->true
  </isSupportHPVehicleStatus>
  <isSupportHPWorkingStatus>
    <!--ro, opt, bool, 是否支持月台工作状态定时事件, desc:eventType:HPWorkingStatus-->true
  </isSupportHPWorkingStatus>
  <isSupportHPPeopleDetection>
    <!--ro, opt, bool, 是否支持月台车边人员检测, desc:eventType:HPPeopleDetection-->true
  </isSupportHPPeopleDetection>
  <isSupportHPVehicleDoorDetection>
    <!--ro, opt, bool, 是否支持月台车厢门检测事件, desc:eventType:HPVehicleDoorDetection-->true
  </isSupportHPVehicleDoorDetection>
  <isSupportRoadMaint>
    <!--ro, opt, bool, 是否支持道路养护, desc:配置接口：/ISAPI/Intelligent/channels/<ID>/roadMaint?format=json-->true
  </isSupportRoadMaint>
  <isSupportImageCapture>
    <!--ro, opt, bool, 是否支持通道定时抓图事件, desc:对应配置能力：/ISAPI/System/Video/inputs/channels/<ID>/imageCapture?format=json-->true
  </isSupportImageCapture>
  <isSupportScheduledRecordUpload>
    <!--ro, opt, bool, 是否支持通道定时录像事件, desc:对应配置能力：/ISAPI/System/Video/inputs/channels/<ID>/scheduledRecordUpload?format=json-->true
  </isSupportScheduledRecordUpload>
  <isSupportTargetPatternCollect>
    <!--ro, opt, bool, 是否支持目标路径采集事件, desc:eventType:targetPatternCollect-->true
  </isSupportTargetPatternCollect>
  <isSupportAudioAnalysis>
    <!--ro, opt, bool, 是否支持音频分析事件, desc:eventType:audioAnalysis,不支持不返回-->true
  </isSupportAudioAnalysis>
  <isSupportDebuggingDataExport>
    <!--ro, opt, bool, 是否支持参数(内外参数、规则配置参数)导出, desc:接口:/ISAPI/System/debuggingData/parameters?format=json,不支持不返回-->true
  </isSupportDebuggingDataExport>
  <isSupportInternalParaAdjust>
    <!--ro, opt, bool, 是否支持三目设备是否支持内参调整, desc:接口:/ISAPI/System/internalParameters/adjustment?format=json,不支持不返回-->true
  </isSupportInternalParaAdjust>
  <isSupportManualImageCapture>
    <!--ro, opt, bool, 是否支持视频通道手动抓图, desc:接口:/ISAPI/System/Video/inputs/channels/<ID>/manualImageCapture?format=json,不支持不返回-->true
  </isSupportManualImageCapture>
  <characteristicCode min="1" max="128">
    <!--ro, opt, string, 设备特征码, range:[1,128], attr:min{opt, string, 最小长度, range:[,]},max{opt, string, 最大长度, range:[,]}, desc:接口：/ISAPI/System/deviceInfo/characteristicCode?format=json-->null
  </characteristicCode>
  <isSupportSIMCardStatus>
    <!--ro, opt, bool, 是否支持SIM卡状态信息获取, desc:接口：/ISAPI/System/SIMCardStatus?format=json-->true
  </isSupportSIMCardStatus>
  <OpenPlatformCap>
    <!--ro, opt, object, 设备支持HEOP的详细能力-->
    <isSupportOpenPlatform>
      <!--ro, req, bool, 是否支持HEOP开放平台-->true
    </isSupportOpenPlatform>
    <maxAPPNum>
      <!--ro, req, int, 设备支持的安装第三方APP包最大个数, range:[,], step:, unit:, unitType:-->0
    </maxAPPNum>
  </OpenPlatformCap>
  <isSupportLogException>
    <!--ro, opt, bool, 设备是否支持日志异常报警, desc:对应事件上报报文中eventType:logException-->true
  </isSupportLogException>
  <manualEvent opt="fielddetection,linedetection,ANPR,faceCapture,mixedTargetDetection">
    <!--ro, opt, string, 支持手动触发事件接口, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:接口：/ISAPI/Intelligent/channels/<ID>/manualEvent/<eventType>?format=json-->null
  </manualEvent>
  <isSupportAppCfg>
    <!--ro, opt, bool, 是否支持应用管理, desc:/ISAPI/System/app/capabilities?format=json-->true
  </isSupportAppCfg>
  <isSupportCleanUp>
    <!--ro, opt, bool, 是否支持一键清理, desc:/ISAPI/System/cleanup?format=json-->true
  </isSupportCleanUp>
  <isSupportEndUserCheckMsg opt="sleep,reboot,factoryReset,cleanup,parentPickUpQuery,schoolAttendanceQuery,screenShare,screenMirror">
    <!--ro, opt, bool, 是否支持最终用户确认信息上报, attr:opt{req, string, 取值范围, range:[,], desc:sleep-休眠,reboot-重启,factoryReset-恢复出厂,cleanup-一键清理,parentPickUpQuery-家长接送信息查询,schoolAttendanceQuery-校园考勤信息查询,screenShare-屏幕共享,screenMirror-投屏}, desc:对应事件上报报文中eventType:endUserCheckMsg-->true
  </isSupportEndUserCheckMsg>
  <isSupportScreenConfig>
    <!--ro, opt, bool, 是否支持屏幕参数配置, desc:/ISAPI/System/screenConfig/capabilities?format=json-->true
  </isSupportScreenConfig>
  <isSupportTemperatureMonitor>
    <!--ro, opt, bool, 是否支持温度监测参数配置, desc:/ISAPI/System/temperatureMonitor/capabilities?format=json-->true
  </isSupportTemperatureMonitor>
  <isSupportObjectServer>
    <!--ro, opt, bool, 是否支持对象存储服务, desc:/ISAPI/System/objectServer/capabilities?format=json-->true
  </isSupportObjectServer>
  <isSupportCDsStatus>
    <!--ro, opt, bool, 是否支持光盘状态提醒, desc:对应使能接口为：/ISAPI/Trial/roompara/capabilities中bEnableCDsStatus,对应事件为:CDsStatus-->true
  </isSupportCDsStatus>
  <isSupportCoalGangueDetection>
    <!--ro, opt, bool, 是否支持煤矸检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/coalGangueDetection,不支持不返回-->true
  </isSupportCoalGangueDetection>
  <isSupportVacantSeatRate>
    <!--ro, opt, bool, 是否支持空座率检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/vacantSeatRate?format=json;对应事件为:VacantSeatRate,不支持不返回-->true
  </isSupportVacantSeatRate>
  <isSupportObjectsThrownDetection>
    <!--ro, opt, bool, 是否支持高空抛物事件检测, desc:接口:/ISAPI/Intelligent/channels/<channelID>/objectsThrownDetection?format=json;对应事件为:objectsThrownDetection,不支持不返回-->true
  </isSupportObjectsThrownDetection>
  <isSupportBVCorrectDataSearch>
    <!--ro, opt, bool, 是否支持查询相机矫正参数, desc:接口:/ISAPI/System/BVCorrectData/search?format=json,不支持不返回-->true
  </isSupportBVCorrectDataSearch>
  <isSupportSlagTruckWashingDetection>
    <!--ro, opt, bool, 是否支持渣土车清洗检测, desc:eventType:slagTruckWashingDetection-->true
  </isSupportSlagTruckWashingDetection>
  <isSupportWOL>
    <!--ro, opt, bool, 是否支持局域网唤醒参数配置, desc:通过WOL(Wake On-Lan)功能实现,对应URL(/ISAPI/System/WOL/capabilities?format=json)-->true
  </isSupportWOL>
  <isSupportPersonQueueTimingStatistics>
    <!--ro, opt, bool, 是否支持排队检测定时人数统计事件, desc:eventType:isSupportPersonQueueTimingStatistics-->true
  </isSupportPersonQueueTimingStatistics>
  <isSupportLensParamFile>
    <!--ro, opt, bool, 是否支持镜头参数文件导入导出-->true
  </isSupportLensParamFile>
  <isSupportVehiclePassingInParkingLot>
    <!--ro, opt, bool, 是否支持停车场出入口过车事件, desc:eventType:vehiclePassingInParkingLot-->true
  </isSupportVehiclePassingInParkingLot>
  <isSupportPowerOutput>
    <!--ro, opt, bool, 是否支持电源输出配置, desc:接口：/ISAPI/System/powerOutput/capabilities?format=json-->true
  </isSupportPowerOutput>
  <isSupportIPCUpgradeByFTP>
    <!--ro, opt, bool, 表示设备支持升级代理的通道设备；例如（通过NVR升级IPC）, desc:接口/ISAPI/System/IPCUpgrade/<channelID>/FTP?format=json&security=<security>&iv=<iv>-->true
  </isSupportIPCUpgradeByFTP>
  <isSupportMethaneConcentrationException>
    <!--ro, opt, bool, 是否支持甲烷浓度异常事件, desc:eventType:methaneConcentrationException-->true
  </isSupportMethaneConcentrationException>
  <isSupportMethaneLightIntensityException>
    <!--ro, opt, bool, 是否支持甲烷光强异常事件, desc:eventType:methaneLightIntensityException-->true
  </isSupportMethaneLightIntensityException>
  <isSupportLocalButtonPermission>
    <!--ro, opt, bool, 是否支持设备本地按键的权限控制, desc:对应URL(/ISAPI/System/localButtonPermission/capabilities?format=json)-->true
  </isSupportLocalButtonPermission>
  <isSupportLocalButtonRecord>
    <!--ro, opt, bool, 是否支持按键触发录像事件, desc:eventType:localButtonRecord-->true
  </isSupportLocalButtonRecord>
  <isSupportLocalButtonSnapshot>
    <!--ro, opt, bool, 是否支持按键触发抓图事件, desc:eventType:localButtonSnapshot-->true
  </isSupportLocalButtonSnapshot>
  <isSupportVoiceTalkEvent>
    <!--ro, opt, bool, 是否支持对讲交互事件, desc:eventType:voiceTalkEvent-->true
  </isSupportVoiceTalkEvent>
  <isSupportPowerSupply>
    <!--ro, opt, bool, 是否支持对外供电, desc:对应URL（/ISAPI/System/powerSupply/capabilities?format=json）-->true
  </isSupportPowerSupply>
  <isSupportbarrierGateStatus>
    <!--ro, opt, bool, 是否支持道闸状态, desc:eventType：barrierGateStatus-->true
  </isSupportbarrierGateStatus>
  <DeployCap>
    <!--ro, opt, object, 布防非订阅参数能力-->
    <deployID opt="1,2">
      <!--ro, opt, enum, 布防类型, subType:int, [0#客户端布防,1#实时布防], attr:opt{req, string, 取值范围, range:[,]}-->0
    </deployID>
  </DeployCap>
  <isSupportSignalControllerStatus>
    <!--ro, opt, bool, 是否支持信号控制机状态上报, desc:eventType:signalControllerStatus-->true
  </isSupportSignalControllerStatus>
  <isSupportSignalControllerFault>
    <!--ro, opt, bool, 是否支持信号控制机故障上报, desc:eventType:signalControllerFault-->true
  </isSupportSignalControllerFault>
  <isSupportNTPConfig>
    <!--ro, opt, bool, 是否支持NTP参数配置, desc:/ISAPI/System/time/ntp/capabilities?format=json-->true
  </isSupportNTPConfig>
  <isSupportConsumptionQuery>
    <!--ro, opt, bool, 是否支持消费查询请求上报, desc:eventType:ConsumptionQuery-->true
  </isSupportConsumptionQuery>
  <StreamingCodingRegionPositionCap>
    <!--ro, opt, object, 支持码流所有拼接区域位置信息能力, desc:/ISAPI/System/streamingCoding/channels/<channelID>/regionPosition-->
    <ChannelsList>
      <!--ro, opt, array, 通道列表, subType:object, range:[,]-->
      <channelsID>
        <!--ro, req, int, 设备支持的通道号, range:[,], step:, unit:, unitType:-->1
      </channelsID>
    </ChannelsList>
  </StreamingCodingRegionPositionCap>
  <isSupportLowPowerPlan>
    <!--ro, opt, bool, 设备是否支持低功耗模式计划配置, desc:接口:/ISAPI/System/consumptionMode/lowPowerPlan/capablities?format=json-->true
  </isSupportLowPowerPlan>
  <isSupportPlateQuaAlarm>
    <!--ro, opt, bool, 是否支持车牌质量检测事件, desc:eventType:plateQuaAlarm-->true
  </isSupportPlateQuaAlarm>
  <isSupportWiegand>
    <!--ro, opt, bool, 是否支持韦根协议, desc:接口:/ISAPI/System/Wiegand/<wiegandID>/capabilities?format=json-->true
  </isSupportWiegand>
  <zoomFocusWebDisplay opt="ROI,roadTrafficDetection,SMD,mixedTargetDetection,faceCapture">
    <!--ro, opt, string, web支持显示zoomfocus的界面, range:[,], attr:opt{req, string, 取值范围, range:[,]},
desc:ROI界面路径:Configuration-Vedio/Audio-ROI
roadTrafficDetection:Configuration-Road Traffic-Detection Configuration
SMD：smart所有支持事件下显示
mixedTargetDetection：混合目标下显示
faceCapture：人脸抓拍-->ROI
  </zoomFocusWebDisplay>
  <isSupportInternalParamsAdjustment>
    <!--ro, opt, bool, 是否支持按区域进行内参校正, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/System/internalParameters/regionAdjustment/capabilities?format=json-->true
  </isSupportInternalParamsAdjustment>
  <isSupportDiagnosticReport>
    <!--ro, opt, bool, 是否支持诊断报告功能, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/System/diagnosticReport/capabilities?format=json-->true
  </isSupportDiagnosticReport>
  <isSupportWaterQualitySearch>
    <!--ro, opt, bool, 是否支持水质数据查询功能, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/Event/waterQualityDetection/search?format=json-->true
  </isSupportWaterQualitySearch>
  <isSupportExhaustDetection>
    <!--ro, opt, bool, 是否支持尾气检测参数配置, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/Event/exhaustDetection/channels/<channelID>/capabilities?format=json-->true
  </isSupportExhaustDetection>
  <isSupportTPMSecretKey>
    <!--ro, opt, bool, 是否支持码流加密所有TPM秘钥列表, desc:true-支持,false或不返回代表不支持。对应url：/ISAPI/Streaming/encryption/TPMSecretKeyList?format=json&security=<security>&iv=<iv>-->true
  </isSupportTPMSecretKey>
  <isSupportWeatherStation>
    <!--ro, opt, bool, 是否支持气象站信息上报, desc:接口：eventType:weatherStation,不支持不返回-->true
  </isSupportWeatherStation>
  <isSupportRoadVisibilityAnalysis>
    <!--ro, opt, bool, 是否支持道路能见度检测分析, desc:接口：eventType:roadVisibilityAnalysis,不支持不返回-->true
  </isSupportRoadVisibilityAnalysis>
  <isSupportRoadWeatherAnalysis>
    <!--ro, opt, bool, 是否支持路面气象检测分析, desc:接口：eventType:roadWeatherAnalysis,不支持不返回-->true
  </isSupportRoadWeatherAnalysis>
  <isSupportRoadVisibilityAbnormal>
    <!--ro, opt, bool, 是否支持道路能见度检测异常上报, desc:接口：eventType:roadVisibilityAbnormal,不支持不返回-->true
  </isSupportRoadVisibilityAbnormal>
  <isSupportRoadWeatherAbnormal>
    <!--ro, opt, bool, 是否支持路面气象检测异常上报, desc:接口：eventType:roadWeatherAbnormal,不支持不返回-->true
  </isSupportRoadWeatherAbnormal>
  <isSupportChannelsTimeSync>
    <!--ro, opt, bool, 是否支持设备对IPC/IOT通道的设备批量校时, desc:对应URL:/ISAPI/System/time/channelsTimeSync/capabilities?format=json-->true
  </isSupportChannelsTimeSync>
  <isSupport433Sensor>
    <!--ro, opt, bool, 是否支持433传感器传输配置,
desc:对应URL:
    /ISAPI/System/Sensor/433sensor/433wirelessTransfer/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/sensorDetection/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/sensorPicOverlay/capabilities?format=json
    /ISAPI/System/Sensor/433sensor/rfParamTemplate/capabilities?format=json-->true
  </isSupport433Sensor>
  <isSupportSignalSource>
    <!--ro, opt, bool, 是否支持信号源参数配置, desc:/ISAPI/System/signalSource/capabilities?format=json-->true
  </isSupportSignalSource>
  <isSupportUSBConfig>
    <!--ro, opt, bool, 是否支持USB参数配置, desc:/ISAPI/System/USBConfig/capabilities?format=json-->true
  </isSupportUSBConfig>
  <isSupportStandbyStrategy>
    <!--ro, opt, bool, 是否支持待机策略参数配置, desc:/ISAPI/System/standbyStrategy/capabilities?format=json-->true
  </isSupportStandbyStrategy>
  <isSupportWakeupStrategy>
    <!--ro, opt, bool, 是否支持唤醒策略参数配置, desc:/ISAPI/System/wakeupStrategy/capabilities?format=json-->true
  </isSupportWakeupStrategy>
  <isSupportSeachMutexFunction>
    <!--ro, opt, bool, 是否支持查询关闭互斥功能, desc:对应URL:GET /ISAPI/System/mutexFunction/capabilities?format=json;功能描述:是否支持查询互斥功能-->true
  </isSupportSeachMutexFunction>
  <isSupportMultiDeviceID>
    <!--ro, opt, bool, 是否支持多长号配置, desc:对应url /ISAPI/VideoIntercom/deviceId/batchCfg/capabilities?format=json-->true
  </isSupportMultiDeviceID>
  <isNotSupportMultiDeviceIDCustomName>
    <!--ro, opt, bool, 是否不支持多长号自定义名称配置, desc:不支持时用户无法通过多长号配置接口给设备配置自定义名称。true-不支持，false或者不填表示支持-->true
  </isNotSupportMultiDeviceIDCustomName>
  <isSupportBarCodeEvent>
    <!--ro, opt, bool, 是否支持条形码事件-->true
  </isSupportBarCodeEvent>
  <isSupportGaugeReading>
    <!--ro, opt, bool, 是否支持水尺识别功能, desc:对应URL:GET /ISAPI/Event/channels/<channelID>/gaugeReading/capabilities?format=json,不支持不返回-->true
  </isSupportGaugeReading>
  <isSupportUncertificateCompareEvent>
    <!--ro, opt, bool, 是否支持无证比对事件, desc:接口：eventType:UncertificateCompareEvent,不支持不返回-->true
  </isSupportUncertificateCompareEvent>
  <isSupportAudioDiacritical>
    <!--ro, opt, bool, 是否支持音频变声功能, desc:对应URL:/ISAPI/System/Video/inputs/channels/<channelID>/audioDiacritical/capabilities?format=json-->true
  </isSupportAudioDiacritical>
  <isSupportRoadWeatherAbnormal>
    <!--ro, opt, bool, 是否支持路面气象检测异常上报, desc:接口：eventType:roadWeatherAbnormal,不支持不返回-->true
  </isSupportRoadWeatherAbnormal>
  <isSupportMEFReportSearch>
    <!--ro, opt, bool, 是否支持电围数据统计报表查询, desc:不支持不返回，接口能力：/ISAPI/System/Network/MEF/reportSearch/capabilities?format=json-->true
  </isSupportMEFReportSearch>
  <isSupportBroadcastTriggerEvent>
    <!--ro, opt, bool, 是否支持广播触发事件, desc:寻呼话筒上报该事件到平台后，平台根据上报内容中的终端号列表进行广播并进行确认,eventType:broadcastTriggerEvent,确认URI: /ISAPI/VideoIntercom/broadcastTriggerConfirm?format=json-->true
  </isSupportBroadcastTriggerEvent>
  <isSupportFishingShipDetection>
    <!--ro, opt, bool, 是否支持渔船检测事件, desc:eventType:fishingShipDetection,确认URI: /ISAPI/Thermal/channels/<channelID>/fishingShipDetection/<SID>?format=json-->true
  </isSupportFishingShipDetection>
  <isSupportHPVehicleLoadingRate>
    <!--ro, opt, bool, 是否支持月台车辆装载率事件, desc:eventType:vehicleLoadingRate,不支持不返回,URI: /ISAPI/Intelligent/channels/<channelID>/HPDetection/capabilities?format=json-->true
  </isSupportHPVehicleLoadingRate>
  <isSupportVideoBarrierGateDetection>
    <!--ro, opt, bool, 是否支持港口视频闸口检测, desc:eventType:videoBarrierGateDetection,不支持不返回,URI: /ISAPI/Traffic/ContentMgmt/videoBarrierGate/capabilities?format=json-->true
  </isSupportVideoBarrierGateDetection>
  <isSupportLogicalResource>
    <!--ro, opt, bool, 是否支持监控点组织管理, desc:不支持不返回,URI: /ISAPI/System/LogicalResource/capabilities?format=json-->true
  </isSupportLogicalResource>
  <isSupportSlagTruckCoverPlate>
    <!--ro, opt, bool, 是否支持渣土车盖板检测, desc:不支持不返回,eventType:slagTruckCoverPlateDetection，URI: /ISAPI/Event/channels/<channelID>/slagTruckCoverPlate/capabilities?format=json-->true
  </isSupportSlagTruckCoverPlate>
  <isSupportTrainDetection>
    <!--ro, opt, bool, 是否支持火车检测, desc:不支持不返回,eventType:trainDetection-->true
  </isSupportTrainDetection>
  <isNotSupportVideoOverlays>
    <!--ro, opt, bool, 是否不支持web显示OSD叠加配置, desc:本节点仅用于判断安检人车核验一体机设备上的图像菜单中的OSD叠加配置是否不支持(该配置之前协议设计为默认支持,无能力节点控制).返回true表示不支持OSD叠加(/ISAPI/ContentMgmt/InputProxy/channels/<channelID>/video/overlays开头的url对应功能全部不支持),返回false或者不返回本节点表示支持OSD叠加功能-->true
  </isNotSupportVideoOverlays>
  <isSupportScheduledCaptureTask>
    <!--ro, opt, bool, 是否支持定时抓图任务, desc:对应URL:/ISAPI/Sytem/Video/scheduledCapture/capabilities-->true
  </isSupportScheduledCaptureTask>
  <isSupportGuideCfg>
    <!--ro, opt, bool, 是否支持向导配置, desc:本节点仅用于室内机上判断是否进行向导配置。向导配置用于让用户在设备激活登录后进行一次基础功能的配置(包括网络参数配置、会话配置、模拟室内机的批量添加)。有此节点为true表示支持，无此节点或此节点为false表示不支持-->true
  </isSupportGuideCfg>
  <isSupportCameraGroupPeopleCounting>
    <!--ro, opt, bool, 是否支持多监控点位客流统计, desc:/ISAPI/Intelligent/counting/cameraGroup/capabilities?format=json-->true
  </isSupportCameraGroupPeopleCounting>
  <isSupportAngleDeviationDetection>
    <!--ro, opt, bool, 是否支持倾斜检测, desc:不支持不返回,对应URL:/ISAPI/Event/channels/<channelID>/angleDeviationDetection/capabilities?format=json-->true
  </isSupportAngleDeviationDetection>
  <isSupportCityCode>
    <!--ro, opt, bool, 是否支持城市编码获取, desc:对应URL(/ISAPI/System/cityCode?format=json)-->true
  </isSupportCityCode>
</DeviceCap>

2. 获取审讯机支持能力

2.1 命令

GET /ISAPI/Trial/capabilities

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TrialCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 审讯能力, attr:version{opt, string, 版本号, range:[,]}-->
  <isSupSysparameter>
    <!--ro, opt, bool, 是否支持审讯机系统参数, desc:对应url（/ISAPI/Trial/sysparameter/capabilities）-->true
  </isSupSysparameter>
  <isSupCDWStatus>
    <!--ro, opt, bool, 是否支持获取审讯室光盘状态, desc:对应URL（/ISAPI/Trial/CDWStatus/<ID>）-->true
  </isSupCDWStatus>
  <isSupRecover>
    <!--ro, opt, bool, 是否支持恢复审讯片段, desc:对应URL（/ISAPI/Trial/recover/capabilities）-->true
  </isSupRecover>
  <isSupChannelName>
    <!--ro, opt, bool, 是否支持审讯通道参数配置, desc:对应URL（/ISAPI/Trial/channelname/capabilities）-->true
  </isSupChannelName>
  <isSupTrayConfiguration>
    <!--ro, opt, bool, 是否支持光盘驱动配置, desc:对应URL（/ISAPI/Trial/TrayConfiguration/<ID>/capabilities）-->true
  </isSupTrayConfiguration>
  <isSupCaseInfo>
    <!--ro, opt, bool, 是否支持案件信息配置, desc:对应URL（/ISAPI/Trial/<ID>/caseinfo/capabilities）-->true
  </isSupCaseInfo>
  <isSupPipState>
    <!--ro, opt, bool, 是否支持画中画配置, desc:对应URL（/ISAPI/Trial/<ID>/pipstate/capabilities)-->true
  </isSupPipState>
  <isSupInquestOrder>
    <!--ro, opt, bool, 是否支持审讯控制, desc:对应URL（/ISAPI/Trial/<ID>/InquestOrder/capabilities）-->true
  </isSupInquestOrder>
  <isSupSecreatKey>
    <!--ro, opt, bool, 是否支持码流加密秘钥配置, desc:对应URL（/ISAPI/Trial/<ID>/secretkey/capabilities）-->true
  </isSupSecreatKey>
  <isSupEncrypty>
    <!--ro, opt, bool, 是否支持启用码流加密, desc:对应URl（/ISAPI/Trial/<ID>/encrypt）-->true
  </isSupEncrypty>
  <isSupAudioMix>
    <!--ro, opt, bool, 是否支持音频混音-->true
  </isSupAudioMix>
  <isSupUploadFfile>
    <!--ro, opt, bool, 是否支持上传笔录文件, desc:对应URL（/ISAPI/Trial/<ID>/uploadfile/capabilities）-->true
  </isSupUploadFfile>
  <isSupSearchFile>
    <!--ro, opt, bool, 是否支持查询笔录文件, desc:对应URL（/ISAPI/Trial/<ID>/searchfile）-->true
  </isSupSearchFile>
  <isSupDeletFile>
    <!--ro, opt, bool, 是否支持删除笔录文件, desc:对应URL（/ISAPI/Trial/<ID>/deletfile/capabilities）-->true
  </isSupDeletFile>
  <isSupCreatTag>
    <!--ro, opt, bool, 是否支持创建Tag-->true
  </isSupCreatTag>
  <iMaxIdNum>
    <!--ro, req, string, 最大的id数量, range:[,]-->1
  </iMaxIdNum>
  <isSupRecoverStatus>
    <!--ro, opt, bool, 是否支持恢复审讯片段进度查询, desc:对应URL（/ISAPI/Trial/recoverStatus）-->true
  </isSupRecoverStatus>
  <isSupHumiture>
    <!--ro, opt, bool, 是否支持温湿度查询, desc:对应URL（/ISAPI/Trial/<ID>/humiture/capabilities）-->true
  </isSupHumiture>
  <isSupportCDPrint>
    <!--ro, opt, bool, 是否支持光盘打印, desc:对应配置的URL(/ISAPI/Trial/sysparameter/capabilities)-->true
  </isSupportCDPrint>
  <isSupportCoverConfiguration>
    <!--ro, opt, bool, 是否支持光盘打印配置, desc:对应URL: /ISAPI/Trial/<trialID>/coverConfiguration/capabilities?format=json-->true
  </isSupportCoverConfiguration>
  <isSupportPrinterStatus>
    <!--ro, opt, bool, 是否支持打印设备状态查询, desc:对应URL：/ISAPI/Trial/printerStatus?format=json-->true
  </isSupportPrinterStatus>
  <isSupportFont>
    <!--ro, opt, bool, 是否支持字体配置, desc:对应URL:/ISAPI/Trial/font/capabilities?format=json-->true
  </isSupportFont>
  <isSupportCoverTemplate>
    <!--ro, opt, bool, 是否支持封面配置模板获取, desc:对应URL:/ISAPI/Trial/coverTemplate?format=json-->true
  </isSupportCoverTemplate>
</TrialCap>

3. 获取光驱配置能力

3.1 命令

GET /ISAPI/Trial/TrayConfiguration/<opticalDiscDriveID>/capabilities

3.2 输入参数

无

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TrayConfigurationCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 光驱配置能力, attr:version{req, string, 协议版本, range:[,]}-->
  <trayStatus opt="open,close,abnormal">
    <!--ro, req, enum, 光驱状态, subType:string, [open#开,close#关,abnormal#不正常], attr:opt{req, string, 取值范围, range:[,]}-->open
  </trayStatus>
</TrayConfigurationCap>

4. 获取审讯机光驱

4.1 命令

GET /ISAPI/Trial/TrayConfiguration/<opticalDiscDriveID>

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<TrayConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 光驱配置, attr:version{req, string, 协议版本, range:[,]}-->
  <trayStatus>
    <!--ro, req, enum, 光驱状态, subType:string, [open#开,close#关,abnormal#不正常], desc:GET的时候设备会返回三种状态，PUT的时候，只能设置open 和close-->open
  </trayStatus>
</TrayConfiguration>

5. 配置审讯机光驱

5.1 命令

PUT /ISAPI/Trial/TrayConfiguration/<opticalDiscDriveID>

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<TrayConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 光驱配置, attr:version{req, string, 协议版本, range:[,]}-->
  <trayStatus>
    <!--req, enum, 光驱状态, subType:string, [open#开,close#关], desc:GET的时候设备会返回三种状态，PUT的时候，只能设置open 和close-->open
  </trayStatus>
</TrayConfiguration>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

6. 获取光盘码流加密

6.1 命令

GET /ISAPI/Streaming/channels/<channelID>/CDBurningEncryption?format=json

6.2 输入参数

无

6.3 输出参数

{
    "enabled":  true,
    /*ro, req, bool, 使能*/
    "secretKey":  "test"
    /*ro, req, string, 加密秘钥, range:[,], desc:敏感信息加密*/
}

7. 配置光盘码流加密

7.1 命令

PUT /ISAPI/Streaming/channels/<channelID>/CDBurningEncryption?format=json

7.2 输入参数

{
    "enabled":  true,
    /*req, bool, 使能*/
    "secretKey":  "test"
    /*req, string, 加密秘钥, range:[,], desc:敏感信息加密*/
}

7.3 输出参数

{
    "statusCode":  1,
    /*ro, opt, int, 状态码, range:[,], step:, unit:, unitType:, desc:无法用1表示时（1表示成功且无特殊状态）必须返回*/
    "statusString":  "ok",
    /*ro, opt, string, 状态描述, range:[1,64], desc:无法用ok表示时（ok表示成功且无特殊状态）必须返回*/
    "subStatusCode":  "ok",
    /*ro, opt, string, 子状态码, range:[1,64], desc:无法用ok表示（ok表示成功且无特殊状态）必须返回*/
    "errorCode":  1,
    /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:, desc:当statusCode不为1时，与subStatusCode对应*/
    "errorMsg":  "ok"
    /*ro, opt, string, 错误信息, range:[,], desc:当statusCode不为1时，必须返回,解释信息在协议约束中，允许设备在后续的版本迭代中，进行优化丰富提升（不限制死）*/
}

8. 获取音频能力

8.1 命令

GET /ISAPI/System/Audio/capabilities

8.2 输入参数

无

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AudioCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 音频能力, attr:version{req, string, 协议版本, range:[,]}-->
  <audioInputNums>
    <!--ro, req, int, 音频输入个数, range:[,], step:, unit:, unitType:-->1
  </audioInputNums>
  <audioOutputNums>
    <!--ro, req, int, 音频输出个数, range:[,], step:, unit:, unitType:-->1
  </audioOutputNums>
  <mixAudioInSet>
    <!--ro, opt, bool, 是否支持混音输入口参数配置, desc:对应接口：NET_DVR_MIX_AUDIOIN_CFG-->true
  </mixAudioInSet>
  <mixAudioOutSet>
    <!--ro, opt, bool, 是否支持混音输出口参数配置, desc:对应接口：NET_DVR_MIX_AUDIOOUT_CFG-->true
  </mixAudioOutSet>
  <isSupportAudioMixing>
    <!--ro, opt, bool, 是否支持音频混音, desc:/ISAPI/System/Audio/Mixing/capabilities-->true
  </isSupportAudioMixing>
  <isSupportRemoveFrequencyPoint>
    <!--ro, opt, bool, 是否支持啸叫频点清除-->true
  </isSupportRemoveFrequencyPoint>
  <isSupportAudioInConfig>
    <!--ro, opt, bool, 是否支持全部音量输入配置, desc:对应/ISAPI/System/Audio/AudioIn/capabilities-->true
  </isSupportAudioInConfig>
  <muteDuringPanTilt opt="MicIn">
    <!--ro, opt, string, 是否支持运动时消音, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:目前只支持MicIn,/ISAPI/System/TwoWayAudio/channels/ID的muteDuringPanTilt节点配置-->test
  </muteDuringPanTilt>
  <isSupportAudioOutConfig>
    <!--ro, opt, bool, 是否支持全部音量输入配置, desc:对应/ISAPI/System/Audio/AudioOut/capabilities?format=json-->true
  </isSupportAudioOutConfig>
  <isSupportSAIP>
    <!--ro, opt, bool, 是否支持独立音轨通道接入设备-->true
  </isSupportSAIP>
  <SAIPChannelsNum>
    <!--ro, opt, int, 支持独立音轨通道接入的设备数量, range:[,], step:, unit:, unitType:, dep:and,{$.AudioCap.isSupportSAIP,eq,true}-->1
  </SAIPChannelsNum>
  <isSupportDataStorage>
    <!--ro, opt, bool, 是否支持音频文件上传, desc:对应url：/ISAPI/System/Audio/dataStorage?format=json-->true
  </isSupportDataStorage>
  <isSupportDataRelease>
    <!--ro, opt, bool, 是否支持音频文件发布, desc:对应url：/ISAPI/System/Audio/dataRelease?format=json-->true
  </isSupportDataRelease>
  <isSupportAudioPlan>
    <!--ro, opt, bool, 是否支持音频计划方案, desc:对应url：/ISAPI/System/Audio/plan?format=json-->true
  </isSupportAudioPlan>
  <isSupportAudioTask>
    <!--ro, opt, bool, 是否支持音频计划任务, desc:对应url /ISAPI/System/Audio/plan/<PlanID>/task?format=json-->true
  </isSupportAudioTask>
  <isSupportaudioCollection>
    <!--ro, opt, bool, 是否支持音频收集, desc:对应url:/ISAPI/System/Audio/audioCollection/capabilities?format=json,维护功能,用于采集音频，便于音频问题分析-->true
  </isSupportaudioCollection>
  <isSupportWirelessPickUp>
    <!--ro, opt, bool, 是否支持无线拾音器设备接入, desc:对应url:/ISAPI/System/Audio/wirelessPickUp/capabilities?format=json-->true
  </isSupportWirelessPickUp>
  <audioOutputBroadcastNums opt="1,2,3,4">
    <!--ro, opt, int, 音频广播输出个数, range:[,], step:, unit:, unitType:, attr:opt{opt, string, 取值范围, range:[,]}, desc:当前仅广播音响设备支持本节点。返回opt="1,2,3,4"时输出口以此为准，不返回opt="1,2,3,4"时,输出口默认从1开始。音响设备内部会按业务类型在硬件上划分输出口，有广播输出口和对讲输出口(音频输出口)。由于输出口的起始编号均为1开始,所以需要返回具体的广播输出口支持个数。返回该节点表示支持音频广播输出音量配置,不返回表示不支持,对应URI:/ISAPI/System/Audio/AudioOut/broadcast/capabilities?format=json-->0
  </audioOutputBroadcastNums>
  <isSupportAudioOutMixing>
    <!--ro, opt, bool, 是否支持输出音频混音, desc:对应url：/ISAPI/System/Audio/AudioOut/mixing/capabilities?format=json-->true
  </isSupportAudioOutMixing>
</AudioCap>

9. 获取混音能力

9.1 命令

GET /ISAPI/System/Audio/Mixing/capabilities

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AudioMixingList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <AudioMixing size="8">
    <!--ro, opt, object, 音频混音参数, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <id min="1" max="16">
      <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <AudioSaveEnable>
      <!--ro, req, bool, 开启独立存储-->true
    </AudioSaveEnable>
    <MIC size="16">
      <!--ro, opt, object, 麦克风, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,], desc:范围1~16-->test
      </channel>
    </MIC>
    <StereoLine size="4">
      <!--ro, opt, object, 立体声Line, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,], desc:范围1~4-->test
      </channel>
    </StereoLine>
    <MonoLine size="2">
      <!--ro, opt, object, 单声道line, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,], desc:范围1~2-->test
      </channel>
    </MonoLine>
    <DigitalChannel size="1">
      <!--ro, opt, object, 数字通道, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,]-->test
      </channel>
    </DigitalChannel>
    <name>
      <!--ro, opt, enum, 音频通道名称, subType:string, [PIP1#PIP1,PIP2#PIP2,Multi1#Multi1,Multi2#Multi2]-->PIP1
    </name>
    <videoChannel>
      <!--ro, opt, string, 视频通道号, range:[,], dep:and,{$.AudioMixingList.AudioMixing.name,eq,PIP1},{$.AudioMixingList.AudioMixing.name,eq,PIP2}-->test
    </videoChannel>
  </AudioMixing>
</AudioMixingList>

10. 获取单路混音参数

10.1 命令

GET /ISAPI/System/Audio/Mixing/<audioMixingID>

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AudioMixingList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 单路混音参数, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:-->1
  </id>
  <AudioSaveEnable>
    <!--ro, req, bool, 开启独立存储-->true
  </AudioSaveEnable>
  <MIC>
    <!--ro, opt, object, 麦克风-->
    <channel>
      <!--ro, req, string, 通道号, range:[,], desc:范围1~16,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </MIC>
  <StereoLine>
    <!--ro, opt, object, 立体声Line-->
    <channel>
      <!--ro, req, string, 通道号, range:[,], desc:范围1~4,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </StereoLine>
  <MonoLine>
    <!--ro, opt, object, 单声道line-->
    <channel>
      <!--ro, req, string, 通道号, range:[,], desc:范围1~2,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </MonoLine>
  <DigitalChannel>
    <!--ro, opt, object, 数字通道-->
    <channel>
      <!--ro, req, string, 通道号, range:[,], desc:,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </DigitalChannel>
</AudioMixingList>

11. 配置单路混音参数

11.1 命令

PUT /ISAPI/System/Audio/Mixing/<audioMixingID>

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AudioMixingList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 混音参数列表, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 序号, range:[,], step:, unit:, unitType:-->1
  </id>
  <AudioSaveEnable>
    <!--req, bool, 开启独立存储-->true
  </AudioSaveEnable>
  <MIC>
    <!--opt, object, 麦克风-->
    <channel>
      <!--req, string, 通道号, range:[,], desc:范围1~16,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </MIC>
  <StereoLine>
    <!--opt, object, 立体声Line-->
    <channel>
      <!--req, string, 通道号, range:[,], desc:范围1~4,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </StereoLine>
  <MonoLine>
    <!--opt, object, 单声道line-->
    <channel>
      <!--req, string, 通道号, range:[,], desc:范围1~2,多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </MonoLine>
  <DigitalChannel>
    <!--opt, object, 数字通道-->
    <channel>
      <!--req, string, 通道号, range:[,], desc:多选以逗号隔开,例如通道1/2/3混音，传入1,2,3-->test
    </channel>
  </DigitalChannel>
</AudioMixingList>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取多路混音参数

12.1 命令

GET /ISAPI/System/Audio/Mixing

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<AudioMixingList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <AudioMixing size="8">
    <!--ro, opt, object, 音频混音参数, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <id min="1" max="16">
      <!--ro, req, int, 序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <AudioSaveEnable>
      <!--ro, req, bool, 开启独立存储-->true
    </AudioSaveEnable>
    <MIC size="16">
      <!--ro, opt, object, 麦克风, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,], desc:范围1~16-->test
      </channel>
    </MIC>
    <StereoLine size="4">
      <!--ro, opt, object, 立体声Line, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,], desc:范围1~4-->test
      </channel>
    </StereoLine>
    <MonoLine size="2">
      <!--ro, opt, object, 单声道line, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,], desc:范围1~2-->test
      </channel>
    </MonoLine>
    <DigitalChannel size="1">
      <!--ro, opt, object, 数字通道, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--ro, req, string, 通道号, range:[,]-->test
      </channel>
    </DigitalChannel>
  </AudioMixing>
</AudioMixingList>

13. 配置多路混音参数

13.1 命令

PUT /ISAPI/System/Audio/Mixing

13.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<AudioMixingList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 未定义, attr:version{req, string, 协议版本, range:[,]}-->
  <AudioMixing size="8">
    <!--opt, object, 音频混音参数, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <id min="1" max="16">
      <!--req, int, 序号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </id>
    <AudioSaveEnable>
      <!--req, bool, 开启独立存储-->true
    </AudioSaveEnable>
    <MIC size="16">
      <!--opt, object, 麦克风, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--req, string, 通道号, range:[,], desc:范围1~16-->test
      </channel>
    </MIC>
    <StereoLine size="4">
      <!--opt, object, 立体声Line, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--req, string, 通道号, range:[,], desc:范围1~4-->test
      </channel>
    </StereoLine>
    <MonoLine size="2">
      <!--opt, object, 单声道line, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--req, string, 通道号, range:[,], desc:范围1~2-->test
      </channel>
    </MonoLine>
    <DigitalChannel size="1">
      <!--opt, object, 数字通道, attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
      <channel>
        <!--req, string, 通道号, range:[,]-->test
      </channel>
    </DigitalChannel>
  </AudioMixing>
</AudioMixingList>

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

14. 获取串口能力集

14.1 命令

GET /ISAPI/System/Serial/capabilities

14.2 输入参数

无

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SerialCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 设备支持的485串口号范围, attr:version{req, string, 协议版本, range:[,]}-->
  <rs485PortNums>
    <!--ro, opt, int, 设备支持的rs485的串口最大数量, range:[,], step:, unit:, unitType:-->0
  </rs485PortNums>
  <supportRS232Config>
    <!--ro, opt, bool, 设备是否支持的rs232串口相关参数配置-->true
  </supportRS232Config>
  <rs422PortNums>
    <!--ro, opt, int, 设备支持的rs422的串口最大数量, range:[,], step:, unit:, unitType:-->0
  </rs422PortNums>
  <rs232PortNums>
    <!--ro, opt, int, 设备支持的rs232的串口最大数量, range:[,], step:, unit:, unitType:-->0
  </rs232PortNums>
  <rs485WorkMode opt="Led, CaptureTrigger,transparent">
    <!--ro, opt, string, 设备支持的rs485的工作模式：Led-外接LED屏, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </rs485WorkMode>
  <rs232SerialNumber opt="1,2,3">
    <!--ro, opt, int, 设备支持的232串口号范围, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
  </rs232SerialNumber>
  <rs485SerialNumber opt="4,5,6">
    <!--ro, opt, int, 设备支持的485串口号范围, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1
  </rs485SerialNumber>
  <isSupportAuthenticationService>
    <!--ro, opt, bool, 设备是否支持串口认证服务-->true
  </isSupportAuthenticationService>
</SerialCap>

15. 获取单个串口控制能力集

15.1 命令

GET /ISAPI/System/Serial/ports/<portID>/capabilities

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SerialPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 端口, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, id, range:[,], step:, unit:, unitType:-->0
  </id>
  <enabled opt="true,false">
    <!--ro, opt, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
  <encryptKey min="0" max="10">
    <!--ro, opt, string, 秘钥, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:用于串口通信之间加密的秘钥-->test
  </encryptKey>
  <serialNumber opt="1,2,3,4,5">
    <!--ro, opt, int, 序列号, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->0
  </serialNumber>
  <serialPortType opt="RS485,RS422,RS232">
    <!--ro, opt, string, 串口类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->RS485
  </serialPortType>
  <serialAddress min="0" max="10">
    <!--ro, opt, int, 串口地址, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:只有串口类型为RS485时有效-->1
  </serialAddress>
  <duplexMode opt="half,full">
    <!--ro, opt, string, 双工模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->half
  </duplexMode>
  <direction opt="monodirectional,bdirectional">
    <!--ro, opt, string, 单向的, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->monodirectional
  </direction>
  <baudRate opt="1200,2400,4800,9600,19200,38400,57600,115200">
    <!--ro, opt, int, 波特率, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->1200
  </baudRate>
  <dataBits opt="6,7,8">
    <!--ro, opt, int, 数据位, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}-->6
  </dataBits>
  <parityType opt="none,even,odd,mark,space">
    <!--ro, opt, string, 奇偶校验类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->none
  </parityType>
  <stopBits opt="1,1.5,2">
    <!--ro, opt, string, 停止位, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->1
  </stopBits>
  <workMode opt="console,transparent,audiomixe,screenCtrl,ptzCtrl,keyboard,matrix,audioMixers">
    <!--ro, opt, string, 工作模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->console
  </workMode>
  <flowCtrl opt="none,software,hardware">
    <!--ro, opt, string, flowCtrl, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->none
  </flowCtrl>
  <audiomixerProtocolType opt="HIKVISION">
    <!--ro, opt, string, 音频混音器协议类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->HIKVISION
  </audiomixerProtocolType>
  <mode opt="readerMode,clientMode,externMode,stairsControl,accessControlHost, disabled,custom">
    <!--ro, opt, string, 工作模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->readerMode
  </mode>
  <outputDataType opt="cardNo,employeeNo">
    <!--ro, opt, string, 输出数据类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:if < mode >== accessControlHost, xs:string, ,工作模式是accessControlHost时有效-->cardNo
  </outputDataType>
  <copyToAll opt="true,false">
    <!--ro, opt, bool, 是否复制当前串口配置给所有串口, attr:opt{req, string, 取值范围, range:[,]}-->true
  </copyToAll>
  <isVariable opt="true,false">
    <!--ro, opt, bool, 是可变的, attr:opt{req, string, 取值范围, range:[,]}-->true
  </isVariable>
  <PTZInfo>
    <!--ro, opt, object, 云台信息-->
    <bindChannelNo min="0" max="10">
      <!--ro, req, int, 绑定通道号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </bindChannelNo>
    <PTZProtocolList>
      <!--ro, req, object, PTZ协议列表-->
      <PTZProtocol>
        <!--ro, opt, object, PTZ协议-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </PTZProtocol>
    </PTZProtocolList>
  </PTZInfo>
  <ScreenCtrlInfo>
    <!--ro, opt, object, ScreenCtrlInfo, desc:当workMode包含screenCtrl时有效-->
    <ScreenCtrlProtoList>
      <!--ro, req, object, ScreenCtrlProtoList-->
      <ScreenCtrlProto>
        <!--ro, opt, object, ScreenCtrlProto-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </ScreenCtrlProto>
    </ScreenCtrlProtoList>
  </ScreenCtrlInfo>
  <MatrixCtrlInfo>
    <!--ro, opt, object, MatrixCtrlInfo-->
    <MatrixCtrlProtoList>
      <!--ro, req, object, MatrixCtrlProtoList-->
      <MatrixCtrlProto>
        <!--ro, opt, object, MatrixCtrlProto-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </MatrixCtrlProto>
    </MatrixCtrlProtoList>
  </MatrixCtrlInfo>
  <KeyBoardCtrlInfo>
    <!--ro, opt, object, KeyBoardCtrlInfo-->
    <KeyBoardCtrlProtoList>
      <!--ro, req, object, KeyBoardCtrlProtoList-->
      <KeyBoardCtrlProto>
        <!--ro, opt, object, KeyBoardCtrlProto-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </KeyBoardCtrlProto>
    </KeyBoardCtrlProtoList>
  </KeyBoardCtrlInfo>
  <ControlAddress>
    <!--ro, opt, object, 控制（解码器地址）-->
    <enabled opt="true,false">
      <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enabled>
    <address min="0" max="255">
      <!--ro, req, int, 地址, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->0
    </address>
  </ControlAddress>
  <rs485WorkMode opt="sensor">
    <!--ro, opt, string, RS485工作模式, range:[,], dep:and,{$.SerialPort.serialPortType,eq,RS485}, attr:opt{req, string, 取值范围, range:[,]}, desc:sensor-外接传感器-->sensor
  </rs485WorkMode>
  <SensorCtrlList>
    <!--ro, opt, object, 外接传感器控制信息, desc:rs485WorkMode 支持sensor时返回-->
    <Sensor>
      <!--ro, opt, object, 传感器-->
      <id min="1" max="3">
        <!--ro, req, int, 索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
      </id>
      <name min="1" max="32">
        <!--ro, req, string, 传感器名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}, desc:visibilitySensor-能见度传感器，fiveElementWeatherSensor-气象五要素传感器，roadConditionSensor-路面状态传感器-->visibilitySensor
      </name>
      <enabled opt="true,false">
        <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}, desc:开启后，传感器定时上传事件.例如：开启能见度传感器后，上报事件roadVisibilityAnalysis-->false
      </enabled>
    </Sensor>
  </SensorCtrlList>
  <stairsControl>
    <!--ro, opt, object, 梯控参数-->
    <outputDataType opt="floorNumber,cardNo">
      <!--ro, opt, enum, 门口机对梯控主机的输出数据类型, subType:string, [floorNumber#楼层号（默认）,cardNo#卡号], attr:opt{req, string, 取值范围, range:[,]}-->floorNumber
    </outputDataType>
  </stairsControl>
  <comMode opt="active,passive">
    <!--ro, opt, enum, 通信模式, subType:string, [active#主站模式,passive#从站模式], attr:opt{req, string, 取值范围, range:[,]}-->active
  </comMode>
  <ModbusRTU>
    <!--ro, opt, object, 外接RTU模块参数, desc:RS485工作模式范围包括ModbusRTU时节点返回-->
    <ModbusRTUBaudRate opt="1200,2400,4800,9600,19200" def="9600">
      <!--ro, opt, int, 波特率, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->9600
    </ModbusRTUBaudRate>
    <ModbusRTUDataBits opt="5,6,7,8" def="8">
      <!--ro, opt, int, 数据位, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->6
    </ModbusRTUDataBits>
    <ModbusRTUParityType opt="none,even,odd" def="none">
      <!--ro, opt, string, 奇偶校验类型, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->none
    </ModbusRTUParityType>
    <ModbusRTUStopBits opt="1,2" def="1">
      <!--ro, opt, string, 停止位, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </ModbusRTUStopBits>
    <ModbusRTUFlowCtrl opt="none,software,hardware">
      <!--ro, opt, string, flowCtrl, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->none
    </ModbusRTUFlowCtrl>
    <decoderAddress min="0" max="255" def="0">
      <!--ro, opt, int, 解码器地址, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->1
    </decoderAddress>
  </ModbusRTU>
  <controlProtocol opt="HIKVISION,PELCO-D,PELCO-P">
    <!--ro, opt, string, 控制（解码器）协议, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->HIKVISION
  </controlProtocol>
  <accessName min="1" max="32">
    <!--ro, opt, string, 串口接口接入名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </accessName>
  <serialPortUse opt="acquisition,control">
    <!--ro, opt, string, 串口用途, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->acquisition
  </serialPortUse>
  <acquisitionProtocol opt="modbus,custom">
    <!--ro, opt, string, 采集协议, range:[,], dep:and,{$.SerialPort.serialPortUse,eq,acquisition}, attr:opt{req, string, 取值范围, range:[,]}-->modbus
  </acquisitionProtocol>
</SerialPort>

16. 获取单个串口控制参数

16.1 命令

GET /ISAPI/System/Serial/ports/<portID>

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SerialPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 端口, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--ro, req, int, 串口号, range:[,], step:, unit:, unitType:-->0
  </id>
  <enabled>
    <!--ro, opt, bool, 使能-->true
  </enabled>
  <encryptKey>
    <!--ro, opt, string, 用于串口通信之间加密的秘钥, range:[,]-->test
  </encryptKey>
  <serialNumber>
    <!--ro, opt, int, 序列号, range:[,], step:, unit:, unitType:-->0
  </serialNumber>
  <serialPortType>
    <!--ro, opt, enum, 串口类型, subType:string, [RS485#RS485,RS422#RS422,RS232#RS232]-->RS485
  </serialPortType>
  <serialAddress>
    <!--ro, opt, int, 串口地址, range:[,], step:, unit:, unitType:, desc:只有串口类型为RS485时有效-->1
  </serialAddress>
  <duplexMode>
    <!--ro, opt, enum, 双工模式, subType:string, [half#半双工,full#全双工]-->half
  </duplexMode>
  <direction>
    <!--ro, opt, enum, 单向的, subType:string, [monodirectional#单向通讯,bdirectional#双向通讯]-->monodirectional
  </direction>
  <baudRate>
    <!--ro, opt, enum, 波特率, subType:string, [2400#2400,4800#4800,9600#9600,19200#19200,38400#38400,57600#57600,115200#115200]-->2400
  </baudRate>
  <dataBits>
    <!--ro, opt, int, 数据位, range:[,], step:, unit:, unitType:-->6
  </dataBits>
  <parityType>
    <!--ro, opt, enum, 奇偶校验类型, subType:string, [none#无校验位,even#偶校验,odd#奇校验,mark#校验位始终为1,space#校验位始终为0]-->none
  </parityType>
  <stopBits>
    <!--ro, opt, string, 停止位, range:[,]-->1
  </stopBits>
  <workMode>
    <!--ro, opt, enum, 工作模式, subType:string, [console#控制台,transparent#透传,audiomixe#混音,screenCtrl#屏幕控制,ptzCtrl#PTZ控制,keyboard#键盘,matrix#矩阵,audioMixers#混音台]-->console
  </workMode>
  <flowCtrl>
    <!--ro, opt, enum, 串口流控制, subType:string, [none#禁用串口流控制,software#软件串口流控制,hardware#硬件串口流控制]-->none
  </flowCtrl>
  <rs485WorkMode>
    <!--ro, opt, enum, rs485的工作模式, subType:string, [Led#外接LED屏,sensor#外接传感器,CaptureTrigger#外接触发设备进行触发抓拍数据传输,transparent#透明传输,GPS#外接GPS模块,ModbusRTU#外接RTU模块], dep:or,{$.SerialPort.serialPortType,eq,RS485}-->sensor
  </rs485WorkMode>
  <copyToAll>
    <!--ro, opt, bool, 是否复制当前串口配置给所有串口-->true
  </copyToAll>
  <audiomixerProtocolType>
    <!--ro, opt, string, HIKVISION, range:[,]-->test
  </audiomixerProtocolType>
  <mode>
    <!--ro, opt, enum, 工作模式, subType:string, [readerMode#下行接读卡器,clientMode#上行输出至4200客户端,externMode#下行接门控模块,stairsControl#上行输出至门禁主机,accessControlHost#下行接梯控主机,disabled#禁用]-->readerMode
  </mode>
  <outputDataType>
    <!--ro, opt, enum, 输出数据类型, subType:string, [cardNo#卡号,employeeNo#工号], dep:and,{$.SerialPort.mode,eq,accessControlHost}-->cardNo
  </outputDataType>
  <isVariable>
    <!--ro, opt, bool, 是可变的-->true
  </isVariable>
  <PTZInfo>
    <!--ro, opt, object, 云台信息-->
    <bindChannelNo>
      <!--ro, req, int, 绑定通道号, range:[,], step:, unit:, unitType:-->0
    </bindChannelNo>
    <PTZProtocolList>
      <!--ro, req, object, PTZ协议列表-->
      <PTZProtocol>
        <!--ro, opt, object, PTZ协议-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </PTZProtocol>
    </PTZProtocolList>
  </PTZInfo>
  <ScreenCtrlInfo>
    <!--ro, opt, object, ScreenCtrlInfo, desc:当workMode包含screenCtrl时有效-->
    <ScreenCtrlProtoList>
      <!--ro, req, object, ScreenCtrlProtoList-->
      <ScreenCtrlProto>
        <!--ro, opt, object, ScreenCtrlProto-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </ScreenCtrlProto>
    </ScreenCtrlProtoList>
  </ScreenCtrlInfo>
  <MatrixCtrlInfo>
    <!--ro, opt, object, MatrixCtrlInfo-->
    <MatrixCtrlProtoList>
      <!--ro, req, object, MatrixCtrlProtoList-->
      <MatrixCtrlProto>
        <!--ro, opt, object, MatrixCtrlProto-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </MatrixCtrlProto>
    </MatrixCtrlProtoList>
  </MatrixCtrlInfo>
  <KeyBoardCtrlInfo>
    <!--ro, opt, object, KeyBoardCtrlInfo-->
    <KeyBoardCtrlProtoList>
      <!--ro, req, object, KeyBoardCtrlProtoList-->
      <KeyBoardCtrlProto>
        <!--ro, opt, object, KeyBoardCtrlProto-->
        <id>
          <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--ro, req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </KeyBoardCtrlProto>
    </KeyBoardCtrlProtoList>
  </KeyBoardCtrlInfo>
  <ControlAddress>
    <!--ro, opt, object, 控制（解码器）地址-->
    <enabled>
      <!--ro, req, bool, 使能-->true
    </enabled>
    <address>
      <!--ro, req, int, 地址, range:[0,255], step:, unit:, unitType:-->0
    </address>
  </ControlAddress>
  <SensorCtrlList>
    <!--ro, opt, object, 外接传感器控制信息, desc:rs485WorkMode 支持sensor时返回-->
    <Sensor>
      <!--ro, opt, object, 传感器-->
      <id>
        <!--ro, req, int, 索引, range:[1,3], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--ro, req, string, 传感器名称, range:[1,32], desc:visibilitySensor-能见度传感器，fiveElementWeatherSensor-气象五要素传感器，roadConditionSensor-路面状态传感器-->visibilitySensor
      </name>
      <enabled>
        <!--ro, req, bool, 使能, desc:开启后，传感器定时上传事件.例如：开启能见度传感器后，上报事件roadVisibilityAnalysis-->false
      </enabled>
    </Sensor>
  </SensorCtrlList>
  <stairsControl>
    <!--ro, opt, object, 梯控参数, dep:and,{$.SerialPort.mode,eq,stairsControl}-->
    <outputDataType>
      <!--ro, opt, enum, 门口机对梯控主机的输出数据类型, subType:string, [floorNumber#楼层号（默认）,cardNo#卡号]-->floorNumber
    </outputDataType>
  </stairsControl>
  <comMode>
    <!--ro, opt, enum, 通信模式, subType:string, [active#主站模式,passive#从站模式]-->active
  </comMode>
  <ModbusRTU>
    <!--ro, opt, object, 外接RTU模块参数, dep:and,{$.SerialPort.rs485WorkMode,eq,ModbusRTU}-->
    <ModbusRTUBaudRate>
      <!--ro, opt, enum, 波特率, subType:string, [1200#1200,2400#2400,4800#4800,9600#9600,19200#19200]-->9600
    </ModbusRTUBaudRate>
    <ModbusRTUDataBits>
      <!--ro, opt, enum, 数据位, subType:int, [5#5,6#6,7#7,8#8]-->6
    </ModbusRTUDataBits>
    <ModbusRTUParityType>
      <!--ro, opt, enum, 奇偶校验类型, subType:string, [none#无校验位,even#偶校验,odd#奇校验]-->none
    </ModbusRTUParityType>
    <ModbusRTUStopBits>
      <!--ro, opt, enum, 停止位, subType:string, [1#1,2#2]-->1
    </ModbusRTUStopBits>
    <ModbusRTUFlowCtrl>
      <!--ro, opt, enum, 串口流控制, subType:string, [none#禁用串口流控制,software#软件串口流控制,hardware#硬件串口流控制]-->none
    </ModbusRTUFlowCtrl>
    <decoderAddress>
      <!--ro, opt, int, 解码器地址, range:[0,255], step:, unit:, unitType:-->0
    </decoderAddress>
  </ModbusRTU>
  <controlProtocol>
    <!--ro, opt, enum, 控制（解码器）协议, subType:string, [HIKVISION#HIKVISION,PELCO-D#PELCO-D,PELCO-P#PELCO-P]-->HIKVISION
  </controlProtocol>
  <accessName>
    <!--ro, opt, string, 串口接口接入名称, range:[1,32]-->test
  </accessName>
  <serialPortUse>
    <!--ro, opt, enum, 串口用途, subType:string, [acquisition#采集,control#控制]-->acquisition
  </serialPortUse>
  <acquisitionProtocol>
    <!--ro, opt, enum, 采集协议, subType:string, [modbus#modbus协议,custom#自定义], dep:and,{$.SerialPort.serialPortUse,eq,acquisition}-->modbus
  </acquisitionProtocol>
</SerialPort>

17. 配置单个串口控制参数

17.1 命令

PUT /ISAPI/System/Serial/ports/<portID>

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<SerialPort xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 端口, attr:version{req, string, 协议版本, range:[,]}-->
  <id>
    <!--req, int, 串口号, range:[,], step:, unit:, unitType:-->0
  </id>
  <enabled>
    <!--opt, bool, 使能-->true
  </enabled>
  <encryptKey>
    <!--opt, string, 用于串口通信之间加密的秘钥, range:[,]-->test
  </encryptKey>
  <serialNumber>
    <!--opt, int, 序列号, range:[,], step:, unit:, unitType:-->0
  </serialNumber>
  <serialPortType>
    <!--opt, enum, 串口类型, subType:string, [RS485#RS485,RS422#RS422,RS232#RS232]-->RS485
  </serialPortType>
  <serialAddress>
    <!--opt, int, 串口地址, range:[,], step:, unit:, unitType:, desc:只有串口类型为RS485时有效-->1
  </serialAddress>
  <duplexMode>
    <!--opt, enum, 双工模式, subType:string, [half#半双工,full#全双工]-->half
  </duplexMode>
  <direction>
    <!--opt, enum, 单向的, subType:string, [monodirectional#单向通讯,bdirectional#双向通讯]-->monodirectional
  </direction>
  <baudRate>
    <!--opt, enum, 波特率, subType:string, [2400#2400,4800#4800,9600#9600,19200#19200,38400#38400,57600#57600,115200#115200]-->2400
  </baudRate>
  <dataBits>
    <!--opt, int, 数据位, range:[,], step:, unit:, unitType:-->6
  </dataBits>
  <parityType>
    <!--opt, enum, 奇偶校验类型, subType:string, [none#无校验位,even#偶校验,odd#奇校验,mark#校验位始终为1,space#校验位始终为0]-->none
  </parityType>
  <stopBits>
    <!--opt, string, 停止位, range:[,]-->1
  </stopBits>
  <workMode>
    <!--opt, enum, 工作模式, subType:string, [console#控制台,transparent#透传,audiomixe#混音,screenCtrl#屏幕控制,ptzCtrl#PTZ控制,keyboard#键盘,matrix#矩阵]-->console
  </workMode>
  <flowCtrl>
    <!--opt, enum, 串口流控制, subType:string, [none#禁用串口流控制,software#软件串口流控制,hardware#硬件串口流控制]-->none
  </flowCtrl>
  <rs485WorkMode>
    <!--opt, enum, rs485的工作模式, subType:string, [Led#外接LED屏,sensor#外接传感器,CaptureTrigger#外接触发设备进行触发抓拍数据传输,transparent#透明传输,GPS#外接GPS模块,ModbusRTU#外接RTU模块], dep:or,{$.SerialPort.serialPortType,eq,RS485}-->sensor
  </rs485WorkMode>
  <copyToAll>
    <!--opt, bool, 是否复制当前串口配置给所有串口-->true
  </copyToAll>
  <audiomixerProtocolType>
    <!--opt, string, HIKVISION, range:[,]-->test
  </audiomixerProtocolType>
  <mode>
    <!--opt, enum, 工作模式, subType:string, [readerMode#下行接读卡器,clientMode#上行输出至4200客户端,externMode#下行接门控模块,stairsControl#上行输出至门禁主机,accessControlHost#下行接梯控主机,disabled#禁用]-->readerMode
  </mode>
  <outputDataType>
    <!--opt, enum, 输出数据类型, subType:string, [cardNo#卡号,employeeNo#工号], dep:and,{$.SerialPort.mode,eq,accessControlHost}-->cardNo
  </outputDataType>
  <isVariable>
    <!--opt, bool, 是可变的-->true
  </isVariable>
  <PTZInfo>
    <!--opt, object, 云台信息-->
    <bindChannelNo>
      <!--req, int, 绑定通道号, range:[,], step:, unit:, unitType:-->0
    </bindChannelNo>
    <PTZProtocolList>
      <!--req, object, PTZ协议列表-->
      <PTZProtocol>
        <!--opt, object, PTZ协议-->
        <id>
          <!--req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </PTZProtocol>
    </PTZProtocolList>
  </PTZInfo>
  <ScreenCtrlInfo>
    <!--opt, object, ScreenCtrlInfo, desc:当workMode包含screenCtrl时有效-->
    <ScreenCtrlProtoList>
      <!--req, object, ScreenCtrlProtoList-->
      <ScreenCtrlProto>
        <!--opt, object, ScreenCtrlProto-->
        <id>
          <!--req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </ScreenCtrlProto>
    </ScreenCtrlProtoList>
  </ScreenCtrlInfo>
  <MatrixCtrlInfo>
    <!--opt, object, MatrixCtrlInfo-->
    <MatrixCtrlProtoList>
      <!--req, object, MatrixCtrlProtoList-->
      <MatrixCtrlProto>
        <!--opt, object, MatrixCtrlProto-->
        <id>
          <!--req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </MatrixCtrlProto>
    </MatrixCtrlProtoList>
  </MatrixCtrlInfo>
  <KeyBoardCtrlInfo>
    <!--opt, object, KeyBoardCtrlInfo-->
    <KeyBoardCtrlProtoList>
      <!--req, object, KeyBoardCtrlProtoList-->
      <KeyBoardCtrlProto>
        <!--opt, object, KeyBoardCtrlProto-->
        <id>
          <!--req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
        </id>
        <protoDesc>
          <!--req, string, 协议描述, range:[,]-->test
        </protoDesc>
      </KeyBoardCtrlProto>
    </KeyBoardCtrlProtoList>
  </KeyBoardCtrlInfo>
  <ControlAddress>
    <!--opt, object, 控制(解码器)地址-->
    <enabled>
      <!--req, bool, 使能-->true
    </enabled>
    <address>
      <!--req, int, 地址, range:[0,255], step:, unit:, unitType:-->1
    </address>
  </ControlAddress>
  <SensorCtrlList>
    <!--opt, object, 外接传感器控制信息, desc:rs485WorkMode 支持sensor时返回-->
    <Sensor>
      <!--opt, object, 传感器-->
      <id>
        <!--req, int, 索引, range:[1,3], step:, unit:, unitType:-->1
      </id>
      <name>
        <!--req, string, 传感器名称, range:[1,32], desc:visibilitySensor-能见度传感器，fiveElementWeatherSensor-气象五要素传感器，roadConditionSensor-路面状态传感器-->visibilitySensor
      </name>
      <enabled>
        <!--req, bool, 使能, desc:开启后，传感器定时上传事件.例如：开启能见度传感器后，上报事件roadVisibilityAnalysis-->false
      </enabled>
    </Sensor>
  </SensorCtrlList>
  <stairsControl>
    <!--opt, object, 梯控参数, dep:and,{$.SerialPort.mode,eq,stairsControl}-->
    <outputDataType>
      <!--opt, enum, 门口机对梯控主机的输出数据类型, subType:string, [floorNumber#楼层号（默认）,cardNo#卡号]-->floorNumber
    </outputDataType>
  </stairsControl>
  <comMode>
    <!--opt, enum, 通信模式, subType:string, [active#主站模式,passive#从站模式]-->active
  </comMode>
  <ModbusRTU>
    <!--opt, object, 外接RTU模块参数, dep:and,{$.SerialPort.rs485WorkMode,eq,ModbusRTU}-->
    <ModbusRTUBaudRate>
      <!--opt, enum, 波特率, subType:string, [1200#1200,2400#2400,4800#4800,9600#9600,19200#19200]-->9600
    </ModbusRTUBaudRate>
    <ModbusRTUDataBits>
      <!--opt, enum, 数据位, subType:int, [5#5,6#6,7#7,8#8]-->6
    </ModbusRTUDataBits>
    <ModbusRTUParityType>
      <!--opt, enum, 奇偶校验类型, subType:string, [none#无校验位,even#偶校验,odd#奇校验]-->none
    </ModbusRTUParityType>
    <ModbusRTUStopBits>
      <!--opt, enum, 停止位, subType:string, [1#1,2#2]-->1
    </ModbusRTUStopBits>
    <ModbusRTUFlowCtrl>
      <!--opt, enum, 串口流控制, subType:string, [none#禁用串口流控制,software#软件串口流控制,hardware#硬件串口流控制]-->none
    </ModbusRTUFlowCtrl>
    <decoderAddress>
      <!--opt, int, 解码器地址, range:[0,255], step:, unit:, unitType:-->0
    </decoderAddress>
  </ModbusRTU>
  <controlProtocol opt="HIKVISION,PELCO-D,PELCO-P">
    <!--opt, string, 控制(解码器)协议, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->HIKVISION
  </controlProtocol>
  <accessName>
    <!--opt, string, 串口接口接入名称, range:[1,32]-->test
  </accessName>
  <serialPortUse>
    <!--opt, enum, 串口用途, subType:string, [acquisition#采集,control#控制]-->acquisition
  </serialPortUse>
  <acquisitionProtocol>
    <!--opt, enum, 采集协议, subType:string, [modbus#modbus协议,custom#自定义], dep:and,{$.SerialPort.serialPortUse,eq,acquisition}-->modbus
  </acquisitionProtocol>
</SerialPort>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取全部串口控制参数

18.1 命令

GET /ISAPI/System/Serial/ports

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<SerialPortList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, SerialPortList, attr:version{req, string, 协议版本, range:[,]}-->
  <SerialPort>
    <!--ro, opt, object, 端口-->
    <id>
      <!--ro, req, int, 串口号, range:[,], step:, unit:, unitType:-->0
    </id>
    <enabled>
      <!--ro, opt, bool, 使能-->true
    </enabled>
    <encryptKey>
      <!--ro, opt, string, 用于串口通信之间加密的秘钥, range:[,]-->test
    </encryptKey>
    <serialNumber>
      <!--ro, opt, int, 序列号, range:[,], step:, unit:, unitType:-->0
    </serialNumber>
    <serialPortType>
      <!--ro, opt, enum, 串口类型, subType:string, [RS485#RS485,RS422#RS422,RS232#RS232]-->RS485
    </serialPortType>
    <serialAddress>
      <!--ro, opt, int, 串口地址, range:[,], step:, unit:, unitType:, desc:只有串口类型为RS485时有效-->1
    </serialAddress>
    <duplexMode>
      <!--ro, opt, enum, 双工模式, subType:string, [half#半双工,full#全双工]-->half
    </duplexMode>
    <direction>
      <!--ro, opt, enum, 单向的, subType:string, [monodirectional#单向通讯,bdirectional#双向通讯]-->monodirectional
    </direction>
    <baudRate>
      <!--ro, opt, enum, 波特率, subType:string, [2400#2400,4800#4800,9600#9600,19200#19200,38400#38400,57600#57600,115200#115200]-->2400
    </baudRate>
    <dataBits>
      <!--ro, opt, int, 数据位, range:[,], step:, unit:, unitType:-->6
    </dataBits>
    <parityType>
      <!--ro, opt, enum, 奇偶校验类型, subType:string, [none#无校验位,even#偶校验,odd#奇校验,mark#校验位始终为1,space#校验位始终为0]-->none
    </parityType>
    <stopBits>
      <!--ro, opt, string, 停止位, range:[,]-->1
    </stopBits>
    <workMode>
      <!--ro, opt, enum, 工作模式, subType:string, [console#控制台,transparent#透传,audiomixe#混音,screenCtrl#屏幕控制,ptzCtrl#PTZ控制,keyboard#键盘,matrix#矩阵]-->console
    </workMode>
    <flowCtrl>
      <!--ro, opt, enum, 串口流控制, subType:string, [none#禁用串口流控制,software#软件串口流控制,hardware#硬件串口流控制]-->none
    </flowCtrl>
    <rs485WorkMode>
      <!--ro, opt, enum, rs485的工作模式, subType:string, [Led#外接LED屏,sensor#外接传感器,CaptureTrigger#外接触发设备进行触发抓拍数据传输,transparent#透明传输,GPS#外接GPS模块,ModbusRTU#外接RTU模块], dep:or,{$.SerialPort.serialPortType,eq,RS485}-->sensor
    </rs485WorkMode>
    <copyToAll>
      <!--ro, opt, bool, 是否复制当前串口配置给所有串口-->true
    </copyToAll>
    <audiomixerProtocolType>
      <!--ro, opt, string, HIKVISION, range:[,]-->test
    </audiomixerProtocolType>
    <deviceName>
      <!--ro, opt, string, 设备名称, range:[,]-->test
    </deviceName>
    <deviceType>
      <!--ro, opt, int, 设备类型, range:[,], step:, unit:, unitType:-->1
    </deviceType>
    <deviceProtocol>
      <!--ro, opt, int, 设备协议, range:[,], step:, unit:, unitType:-->1
    </deviceProtocol>
    <mode>
      <!--ro, opt, enum, 工作模式, subType:string, [readerMode#下行接读卡器,clientMode#上行输出至4200客户端,externMode#下行接门控模块,stairsControl#上行输出至门禁主机,accessControlHost#下行接梯控主机,disabled#禁用]-->readerMode
    </mode>
    <outputDataType>
      <!--ro, opt, enum, 输出数据类型, subType:string, [cardNo#卡号,employeeNo#工号], dep:and,{$.SerialPort.mode,eq,accessControlHost}-->cardNo
    </outputDataType>
    <isVariable>
      <!--ro, opt, bool, 是可变的-->true
    </isVariable>
    <PTZInfo>
      <!--ro, opt, object, 云台信息-->
      <bindChannelNo>
        <!--ro, req, int, 绑定通道号, range:[,], step:, unit:, unitType:-->0
      </bindChannelNo>
      <PTZProtocolList>
        <!--ro, req, object, PTZ协议列表-->
        <PTZProtocol>
          <!--ro, opt, object, PTZ协议-->
          <id>
            <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
          </id>
          <protoDesc>
            <!--ro, req, string, 协议描述, range:[,]-->test
          </protoDesc>
        </PTZProtocol>
      </PTZProtocolList>
    </PTZInfo>
    <ScreenCtrlInfo>
      <!--ro, opt, object, ScreenCtrlInfo, desc:当workMode包含screenCtrl时有效-->
      <ScreenCtrlProtoList>
        <!--ro, req, object, ScreenCtrlProtoList-->
        <ScreenCtrlProto>
          <!--ro, opt, object, ScreenCtrlProto-->
          <id>
            <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
          </id>
          <protoDesc>
            <!--ro, req, string, 协议描述, range:[,]-->test
          </protoDesc>
        </ScreenCtrlProto>
      </ScreenCtrlProtoList>
    </ScreenCtrlInfo>
    <MatrixCtrlInfo>
      <!--ro, opt, object, MatrixCtrlInfo-->
      <MatrixCtrlProtoList>
        <!--ro, req, object, MatrixCtrlProtoList-->
        <MatrixCtrlProto>
          <!--ro, opt, object, MatrixCtrlProto-->
          <id>
            <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
          </id>
          <protoDesc>
            <!--ro, req, string, 协议描述, range:[,]-->test
          </protoDesc>
        </MatrixCtrlProto>
      </MatrixCtrlProtoList>
    </MatrixCtrlInfo>
    <KeyBoardCtrlInfo>
      <!--ro, opt, object, KeyBoardCtrlInfo-->
      <KeyBoardCtrlProtoList>
        <!--ro, req, object, KeyBoardCtrlProtoList-->
        <KeyBoardCtrlProto>
          <!--ro, opt, object, KeyBoardCtrlProto-->
          <id>
            <!--ro, req, int, 协议索引, range:[,], step:, unit:, unitType:-->0
          </id>
          <protoDesc>
            <!--ro, req, string, 协议描述, range:[,]-->test
          </protoDesc>
        </KeyBoardCtrlProto>
      </KeyBoardCtrlProtoList>
    </KeyBoardCtrlInfo>
    <ControlAddress>
      <!--ro, opt, object, 控制（解码器）地址-->
      <enabled>
        <!--ro, req, bool, 使能-->true
      </enabled>
      <address>
        <!--ro, req, int, 地址, range:[0,255], step:, unit:, unitType:-->1
      </address>
    </ControlAddress>
    <SensorCtrlList>
      <!--ro, opt, object, 外接传感器控制信息, desc:rs485WorkMode 支持sensor时返回-->
      <Sensor>
        <!--ro, opt, object, 传感器-->
        <id>
          <!--ro, req, int, 索引, range:[1,3], step:, unit:, unitType:-->1
        </id>
        <name>
          <!--ro, req, string, 传感器名称, range:[1,32], desc:visibilitySensor-能见度传感器，fiveElementWeatherSensor-气象五要素传感器，roadConditionSensor-路面状态传感器-->visibilitySensor
        </name>
        <enabled>
          <!--ro, req, bool, 使能, desc:开启后，传感器定时上传事件.例如：开启能见度传感器后，上报事件roadVisibilityAnalysis-->false
        </enabled>
      </Sensor>
    </SensorCtrlList>
    <stairsControl>
      <!--ro, opt, object, 梯控参数, dep:and,{$.SerialPort.mode,eq,stairsControl}-->
      <outputDataType>
        <!--ro, opt, enum, 门口机对梯控主机的输出数据类型, subType:string, [floorNumber#楼层号（默认）,cardNo#卡号]-->floorNumber
      </outputDataType>
    </stairsControl>
    <comMode>
      <!--ro, opt, enum, 通信模式, subType:string, [active#主站模式,passive#从站模式]-->active
    </comMode>
    <ModbusRTU>
      <!--ro, opt, object, 外接RTU模块参数, dep:and,{$.SerialPortList.SerialPort.rs485WorkMode,eq,ModbusRTU}-->
      <ModbusRTUBaudRate>
        <!--ro, opt, enum, 波特率, subType:string, [1200#1200,2400#2400,4800#4800,9600#9600,19200#19200]-->9600
      </ModbusRTUBaudRate>
      <ModbusRTUDataBits>
        <!--ro, opt, enum, 数据位, subType:int, [5#5,6#6,7#7,8#8]-->6
      </ModbusRTUDataBits>
      <ModbusRTUParityType>
        <!--ro, opt, enum, 奇偶校验类型, subType:string, [none#无校验位,even#偶校验,odd#奇校验]-->none
      </ModbusRTUParityType>
      <ModbusRTUStopBits>
        <!--ro, opt, enum, 停止位, subType:string, [1#1,2#2]-->1
      </ModbusRTUStopBits>
      <ModbusRTUFlowCtrl>
        <!--ro, opt, enum, 串口流控制, subType:string, [none#禁用串口流控制,software#软件串口流控制,hardware#硬件串口流控制]-->none
      </ModbusRTUFlowCtrl>
      <decoderAddress>
        <!--ro, opt, int, 解码器地址, range:[0,255], step:, unit:, unitType:-->0
      </decoderAddress>
    </ModbusRTU>
    <controlProtocol>
      <!--ro, opt, enum, 控制（解码器）协议, subType:string, [HIKVISION#HIKVISION,PELCO-D#PELCO-D,PELCO-P#PELCO-P]-->HIKVISION
    </controlProtocol>
    <accessName>
      <!--ro, opt, string, 串口接口接入名称, range:[1,32]-->test
    </accessName>
    <serialPortUse>
      <!--ro, opt, enum, 串口用途, subType:string, [acquisition#采集,control#控制]-->acquisition
    </serialPortUse>
    <acquisitionProtocol>
      <!--ro, opt, enum, 采集协议, subType:string, [modbus#modbus协议,custom#自定义], dep:and,{$.SerialPort.serialPortUse,eq,acquisition}-->modbus
    </acquisitionProtocol>
  </SerialPort>
</SerialPortList>


录播主机

1. 获取统计控制参数能力

1.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/ClassDataControl/capabilities

1.2 输入参数

无

1.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClassDataControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 统计控制, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled opt="true,false">
    <!--ro, req, bool, 使能, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enabled>
</ClassDataControl>

2. 获取统计数据使能配置

2.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/ClassDataControl

2.2 输入参数

无

2.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ClassDataControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 统计数据使能, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
</ClassDataControl>

3. 配置统计数据使能

3.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/ClassDataControl

3.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ClassDataControl xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 统计数据使能, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
</ClassDataControl>

3.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

4. 获取统计数据的能力

4.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/ClassDataStatisticCfg/getStatisticData/capabilities

4.2 输入参数

无

4.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StatisticDataCond xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 统计数据, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID min="1" max="10">
    <!--ro, req, string, 搜索ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </searchID>
  <searchResultPosition>
    <!--ro, req, int, 搜索位置, range:[,], step:, unit:, unitType:-->1
  </searchResultPosition>
  <maxResults min="1" max="10">
    <!--ro, req, int, 数据最大范围, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </maxResults>
  <typeTarget opt="allTarget,pptTargetAlarm,pptTargetView,studentSingleAlarm,studentSingleView,studentMultAlarm,studentMultView,studentTeacherView,teacherUpDownAlarm,teacherStartView,blackboardWriteAlarm,blackboardWriteView,teacherFullView,teacherStartAlarm,teacherWalkAlarm,teacherLeftAlarm,teacherRunAlarm,teacherMultAlarm">
    <!--ro, req, enum, 目标类型, subType:string, [allTarget#所有,pptTargetAlarm#ppt,pptTargetView#ppt视角,studentSingleAlarm#单个学生事件,studentSingleView#单个学生视角,studentMultAlarm#多个学生事件,studentMultView#多个学生视角,studentTeacherView#教师视角,teacherUpDownAlarm#教师上下移动,teacherStartView#开始教学,blackboardWriteAlarm#黑板事件,blackboardWriteView#黑板视角,teacherFullView#所有教师视角,teacherStartAlarm#所有教师事件,teacherWalkAlarm#教师走动,teacherLeftAlarm#教师左移,teacherRunAlarm#教师跑动,teacherMultAlarm#多教师], attr:opt{req, string, 取值范围, range:[,]}-->pptTargetAlarm
  </typeTarget>
  <startTime>
    <!--ro, opt, time, 开始统计时间-->00:00:00+08:00
  </startTime>
  <endTime>
    <!--ro, opt, time, 结束统计时间-->00:00:00+08:00
  </endTime>
</StatisticDataCond>

5. 获取统计数据

5.1 命令

POST /ISAPI/ContentMgmt/RecordingHost/ClassDataStatisticCfg/getStatisticData

5.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<StatisticDataCond xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 统计数据, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID min="1" max="10">
    <!--req, string, 搜索ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </searchID>
  <searchResultPosition>
    <!--req, int, 搜索位置, range:[,], step:, unit:, unitType:-->1
  </searchResultPosition>
  <maxResults min="1" max="10">
    <!--req, int, 数据最大范围, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </maxResults>
  <typeTarget opt="allTarget,pptTargetAlarm,pptTargetView,studentSingleAlarm,studentSingleView,studentMultAlarm,studentMultView,studentTeacherView,teacherUpDownAlarm,teacherStartView,blackboardWriteAlarm,blackboardWriteView,teacherFullView,teacherStartAlarm,teacherWalkAlarm,teacherLeftAlarm,teacherRunAlarm,teacherMultAlarm">
    <!--req, enum, 目标类型, subType:string, [allTarget#所有,pptTargetAlarm#ppt,pptTargetView#ppt视角,studentSingleAlarm#单个学生事件,studentSingleView#单个学生视角,studentMultAlarm#多个学生事件,studentMultView#多个学生视角,studentTeacherView#教师视角,teacherUpDownAlarm#教师上下移动,teacherStartView#开始教学,blackboardWriteAlarm#黑板事件,blackboardWriteView#黑板视角,teacherFullView#所有教师视角,teacherStartAlarm#所有教师事件,teacherWalkAlarm#教师走动,teacherLeftAlarm#教师左移,teacherRunAlarm#教师跑动,teacherMultAlarm#多教师], attr:opt{req, string, 取值范围, range:[,]}-->pptTargetAlarm
  </typeTarget>
  <startTime>
    <!--opt, time, 开始统计时间-->00:00:00+08:00
  </startTime>
  <endTime>
    <!--opt, time, 结束统计时间-->00:00:00+08:00
  </endTime>
</StatisticDataCond>

5.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<StatisticDataResult xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 搜索结果, attr:version{req, string, 协议版本, range:[,]}-->
  <searchID>
    <!--ro, req, string, 搜索ID, range:[,]-->test
  </searchID>
  <responseStatus>
    <!--ro, req, enum, 响应状态, subType:string, [true#成功,false#失败]-->true
  </responseStatus>
  <responseStatusStrg>
    <!--ro, req, enum, 响应状态描述, subType:string, [OK#成功,NO#失败,MATCHES#匹配,MORE#更多]-->OK
  </responseStatusStrg>
  <numOfMatches>
    <!--ro, req, int, 匹配数量, range:[,], step:, unit:, unitType:-->1
  </numOfMatches>
  <totalMatches>
    <!--ro, req, int, 总数, range:[,], step:, unit:, unitType:-->1
  </totalMatches>
  <StatisticDataList>
    <!--ro, opt, array, 统计数据列表, subType:object, range:[,]-->
    <StatisticData>
      <!--ro, opt, object, 统计数据信息-->
      <typeTarget opt="allTarget,pptTargetAlarm,pptTargetView,studentSingleAlarm,studentSingleView,studentMultAlarm,studentMultView,studentTeacherView,teacherUpDownAlarm,teacherStartView,blackboardWriteAlarm,blackboardWriteView,teacherFullView,teacherStartAlarm,teacherWalkAlarm,teacherLeftAlarm,teacherRunAlarm,teacherMultAlarm">
        <!--ro, req, enum, 目标类型, subType:string, [allTarget#所有,pptTargetAlarm#ppt,pptTargetView#ppt视角,studentSingleAlarm#单个学生事件,studentSingleView#单个学生视角,studentMultAlarm#多个学生事件,studentMultView#多个学生视角,studentTeacherView#教师视角,teacherUpDownAlarm#教师上下移动,teacherStartView#开始教学,blackboardWriteAlarm#黑板事件,blackboardWriteView#黑板视角,teacherFullView#所有教师视角,teacherStartAlarm#所有教师事件,teacherWalkAlarm#教师走动,teacherLeftAlarm#教师左移,teacherRunAlarm#教师跑动,teacherMultAlarm#多教师], attr:opt{req, string, 取值范围, range:[,]}-->pptTargetAlarm
      </typeTarget>
      <startTime>
        <!--ro, opt, time, 开始统计时间-->00:00:00+08:00
      </startTime>
      <endTime>
        <!--ro, opt, time, 结束统计时间-->00:00:00+08:00
      </endTime>
    </StatisticData>
  </StatisticDataList>
</StatisticDataResult>

6. 获取导播高级参数的能力

6.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<directedCommandID>/capabilities

6.2 输入参数

无

6.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DirectedAdvanceCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 导播高级参数, attr:version{req, string, 协议版本, range:[,]}-->
  <commandID min="0" max="100">
    <!--ro, req, int, 配置命令, range:[0,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </commandID>
  <value min="1" max="100">
    <!--ro, req, int, 配置值, range:[1,100], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </value>
</DirectedAdvanceCfg>

7. 获取导播高级参数

7.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<directedCommandID>

7.2 输入参数

无

7.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DirectedAdvanceCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 导播高级参数, attr:version{req, string, 协议版本, range:[,]}-->
  <commandID>
    <!--ro, req, int, 配置命令, range:[0,100], step:, unit:, unitType:-->1
  </commandID>
  <value>
    <!--ro, req, int, 配置值, range:[1,100], step:, unit:, unitType:-->1
  </value>
</DirectedAdvanceCfg>

8. 配置导播高级参数

8.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<directedCommandID>

8.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<DirectedAdvanceCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 导播高级参数, attr:version{req, string, 协议版本, range:[,]}-->
  <commandID>
    <!--req, int, 配置命令, range:[0,100], step:, unit:, unitType:-->1
  </commandID>
  <value>
    <!--req, int, 配置值, range:[1,100], step:, unit:, unitType:-->1
  </value>
</DirectedAdvanceCfg>

8.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

9. 获取视频切换配置的能力

9.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration/capabilities

9.2 输入参数

无

9.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoSwitchConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 视频切换配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable opt="true,false">
    <!--ro, req, bool, 是否启用特效, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <effectMode opt="0,1,2,3,4,5,6,7,8,9,10,11,12">
    <!--ro, opt, string, 特效模式, range:[,], attr:opt{req, string, 取值范围, range:[,]}, desc:0-左上放大,1-右上放大,2-左下放大,3-右下放大,4-左边放大,5-右边放大,6-上边放大,7-下边放大,8-中心放大,9-左边中心放大,10-右边中心放大,11-上边中心放大,12-下边中心放大-->test
  </effectMode>
  <preMonitoringChannel opt="30">
    <!--ro, opt, int, 是否支持预监通道配置, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:也即/ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration可以添加URL参数preMonitoringChannel-->1
  </preMonitoringChannel>
</VideoSwitchConfiguration>

10. 获取视频切换参数

10.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration

10.2 输入参数

无

10.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoSwitchConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object,  视频切换, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 是否启用特效-->true
  </enable>
  <effectMode>
    <!--ro, opt, enum, 特效模式, subType:string, [0#左上放大,1#右上放大,2#左下放大,3#右下放大,4#左边放大,5#右边放大,6#上边放大,7#下边放大,8#中心放大,9#左边中心放大,10#右边中心放大,11#上边中心放大,12#下边中心放大]-->0
  </effectMode>
</VideoSwitchConfiguration>

11. 配置视频切换参数

11.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration

11.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoSwitchConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object,  视频切换, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--req, bool, 是否启用特效-->true
  </enable>
  <effectMode>
    <!--opt, enum, 特效模式, subType:string, [0#左上放大,1#右上放大,2#左下放大,3#右下放大,4#左边放大,5#右边放大,6#上边放大,7#下边放大,8#中心放大,9#左边中心放大,10#右边中心放大,11#上边中心放大,12#下边中心放大]-->0
  </effectMode>
</VideoSwitchConfiguration>

11.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

12. 获取片头配置的能力

12.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration/capabilities

12.2 输入参数

无

12.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoTitleConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 片头配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable opt="true,false">
    <!--ro, req, bool, 是否启用, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <backgroundImageIndex min="1" max="8">
    <!--ro, opt, int, 背景图片索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </backgroundImageIndex>
  <displayTimeLength min="1" max="60">
    <!--ro, opt, int, 显示时长, range:[1,60], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </displayTimeLength>
</VideoTitleConfiguration>

13. 获取片头配置

13.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration

13.2 输入参数

无

13.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoTitleConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 片头配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 是否启用-->true
  </enable>
  <backgroundImageIndex>
    <!--ro, opt, int, 背景图片索引, range:[,], step:, unit:, unitType:-->1
  </backgroundImageIndex>
  <displayTimeLength>
    <!--ro, opt, int, 显示时长, range:[1,60], step:, unit:s, unitType:-->1
  </displayTimeLength>
</VideoTitleConfiguration>

14. 配置片头

14.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration

14.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoTitleConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 片头配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable opt="true,false">
    <!--ro, req, bool, 是否启用, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <backgroundImageIndex min="1" max="8">
    <!--ro, opt, int, 背景图片索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </backgroundImageIndex>
  <displayTimeLength min="1" max="60">
    <!--ro, opt, int, 显示时长, range:[1,60], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </displayTimeLength>
</VideoTitleConfiguration>

14.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

15. 获取片尾配置能力

15.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration/capabilities

15.2 输入参数

无

15.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoTrailerConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 片头配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable opt="true,false">
    <!--ro, req, bool, 是否启用, attr:opt{req, string, 取值范围, range:[,]}-->true
  </enable>
  <backgroundImageIndex min="1" max="8">
    <!--ro, opt, int, 背景图片索引, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </backgroundImageIndex>
  <displayTimeLength min="1" max="60">
    <!--ro, opt, int, 显示时长, range:[1,60], step:, unit:s, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </displayTimeLength>
</VideoTrailerConfiguration>

16. 获取片尾参数

16.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration

16.2 输入参数

无

16.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoTrailerConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 片头配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 是否启用-->true
  </enable>
  <backgroundImageIndex>
    <!--ro, opt, int, 背景图片索引, range:[,], step:, unit:, unitType:-->1
  </backgroundImageIndex>
  <displayTimeLength>
    <!--ro, opt, int, 显示时长, range:[1,60], step:, unit:s, unitType:-->1
  </displayTimeLength>
</VideoTrailerConfiguration>

17. 配置片尾参数

17.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration

17.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<VideoTrailerConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 片头配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 是否启用-->true
  </enable>
  <backgroundImageIndex>
    <!--ro, opt, int, 背景图片索引, range:[,], step:, unit:, unitType:-->1
  </backgroundImageIndex>
  <displayTimeLength>
    <!--ro, opt, int, 显示时长, range:[1,60], step:, unit:s, unitType:-->1
  </displayTimeLength>
</VideoTrailerConfiguration>

17.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

18. 获取教育服务器对接配置的能力

18.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration/capabilities

18.2 输入参数

无

18.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EducationServerConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 教育服务器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <addressType opt="IPAddress,domain">
    <!--ro, req, string, 地址类型, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->test
  </addressType>
  <ipAddress>
    <!--ro, opt, string, IPV4, range:[,]-->test
  </ipAddress>
  <ipv6Address>
    <!--ro, opt, string, IPV6, range:[,]-->test
  </ipv6Address>
  <domain min="1" max="10">
    <!--ro, opt, string, 域名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </domain>
  <portNo min="1" max="10">
    <!--ro, req, int, 端口, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </portNo>
  <heartbeatTime min="1" max="10">
    <!--ro, req, int, 心跳时间, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </heartbeatTime>
  <connectServer opt="true,false">
    <!--ro, req, bool, 是否连接服务器, attr:opt{req, string, 取值范围, range:[,]}-->true
  </connectServer>
  <connectStatus opt="connected,connecting,disconnect">
    <!--ro, opt, enum, 连接状态, subType:string, [connected#已连接,connecting#连接中,disconnect#断开连接], attr:opt{req, string, 取值范围, range:[,]}-->connected
  </connectStatus>
</EducationServerConfiguration>

19. 获取教育服务器对接配置

19.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration

19.2 输入参数

无

19.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<EducationServerConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 教育服务器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <addressType>
    <!--ro, req, enum, 地址类型, subType:string, [IPAddress#IP,domain#域名]-->IPAddress
  </addressType>
  <ipAddress>
    <!--ro, opt, string, IPV4, range:[,]-->test
  </ipAddress>
  <ipv6Address>
    <!--ro, opt, string, IPV6, range:[,]-->test
  </ipv6Address>
  <domain>
    <!--ro, opt, string, 域名, range:[,]-->test
  </domain>
  <portNo>
    <!--ro, req, int, 端口, range:[,], step:, unit:, unitType:-->1
  </portNo>
  <heartbeatTime>
    <!--ro, req, int, 心跳时间, range:[,], step:, unit:, unitType:-->1
  </heartbeatTime>
  <connectServer opt="true,false">
    <!--ro, req, bool, 是否连接服务器, attr:opt{req, string, 取值范围, range:[,]}-->true
  </connectServer>
  <connectStatus opt="connected,connecting,disconnect">
    <!--ro, opt, enum, 连接状态, subType:string, [connected#已连接,connecting#连接中,disconnect#断开连接], attr:opt{req, string, 取值范围, range:[,]}-->connected
  </connectStatus>
</EducationServerConfiguration>

20. 配置教育服务器对接配置

20.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration

20.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<EducationServerConfiguration xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 教育服务器配置, attr:version{req, string, 协议版本, range:[,]}-->
  <addressType>
    <!--req, string, 地址类型, range:[,]-->IPAddress
  </addressType>
  <ipAddress>
    <!--opt, string, IPV4, range:[,]-->test
  </ipAddress>
  <ipv6Address>
    <!--opt, string, IPV6, range:[,]-->test
  </ipv6Address>
  <domain>
    <!--opt, string, 域名, range:[,]-->test
  </domain>
  <portNo>
    <!--req, int, 端口, range:[,], step:, unit:, unitType:-->1
  </portNo>
  <heartbeatTime>
    <!--req, int, 心跳时间, range:[,], step:, unit:, unitType:-->1
  </heartbeatTime>
  <connectServer opt="true,false">
    <!--req, bool, 是否连接服务器, attr:opt{req, string, 取值范围, range:[,]}-->true
  </connectServer>
  <connectStatus opt="connected,connecting,disconnect">
    <!--opt, enum, 连接状态, subType:string, [connected#已连接,connecting#连接中,disconnect#断开连接], attr:opt{req, string, 取值范围, range:[,]}-->connected
  </connectStatus>
</EducationServerConfiguration>

20.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

21. 获取录播主机参数配置能力

21.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/hostParam/capabilities

21.2 输入参数

无

21.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<hostParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 录播主机参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <oneKeyDefaultDelay>
    <!--ro, req, int, 延迟时间, range:[,], step:, unit:seconds, unitType:-->1
  </oneKeyDefaultDelay>
  <directMode opt="auto,manual,semiAuto">
    <!--ro, req, enum, 导播模式, subType:string, [auto#自适应,manual#手动,semiAuto#半自动], attr:opt{req, string, 取值范围, range:[,]}-->auto
  </directMode>
  <courseDataStorageEnabled opt="true,false">
    <!--ro, opt, bool, 是否开启课程数据存储, attr:opt{req, string, 取值范围, range:[,]}-->true
  </courseDataStorageEnabled>
  <electronicEnlargeMode opt="true,false">
    <!--ro, opt, bool, 电子放大导播, attr:opt{req, string, 取值范围, range:[,]}-->true
  </electronicEnlargeMode>
  <systemMode>
    <!--ro, req, enum, 系统类型, subType:string, [no#无,4kNormal#4K模式,4kDoubleDeepEyes#4K双屏]-->no
  </systemMode>
  <StreamAccess>
    <!--ro, opt, object, IPC有三路码流时-->
    <studentTrackCamera opt="main,third" def="main">
      <!--ro, opt, string, 学生特写相机接入码流, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->test
    </studentTrackCamera>
    <teacherTrackCamera opt="main,third" def="main">
      <!--ro, opt, string, 老师特写相机接入码流, range:[,], attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}-->test
    </teacherTrackCamera>
  </StreamAccess>
  <courseLiveView opt="true,false" def="false">
    <!--ro, opt, bool, 课件是否参与自动导播, dep:and,{$.hostParam.directMode,eq,auto}, attr:opt{req, string, 取值范围, range:[,]},def{req, int, 默认值, range:[,], step:, unit:, unitType:}, desc:本节点没有默认为true,参与导播,为false时不参数自动导播,目前只有互动通道有效-->true
  </courseLiveView>
</hostParam>

22. 获取录播主机参数配置

22.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/hostParam

22.2 输入参数

无

22.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<hostParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 录播主机参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <oneKeyDefaultDelay>
    <!--ro, req, int, 延迟时间, range:[,], step:, unit:s, unitType:时间-->1
  </oneKeyDefaultDelay>
  <directMode>
    <!--ro, req, enum, 导播模式, subType:string, [auto#自适应,manual#手动,semiAuto#半自动]-->auto
  </directMode>
  <courseDataStorageEnabled>
    <!--ro, opt, bool, 是否开启课程数据存储-->true
  </courseDataStorageEnabled>
  <electronicEnlargeMode>
    <!--ro, opt, bool, 电子放大导播-->true
  </electronicEnlargeMode>
  <systemMode>
    <!--ro, req, enum, 系统类型, subType:string, [no#无,4kNormal#4K模式,4kDoubleDeepEyes#4K双屏]-->no
  </systemMode>
  <StreamAccess>
    <!--ro, opt, object, IPC有三路码流时-->
    <studentTrackCamera>
      <!--ro, opt, enum, 学生特写相机接入码流, subType:string, [main#主码流,third#第三码流]-->main
    </studentTrackCamera>
    <teacherTrackCamera>
      <!--ro, opt, enum, 老师特写相机接入码流, subType:string, [main#主码流,third#第三码流]-->main
    </teacherTrackCamera>
  </StreamAccess>
  <courseLiveView>
    <!--ro, opt, bool, 课件是否参与自动导播, dep:and,{$.hostParam.directMode,eq,auto}, desc:本节点没有默认为true,参与导播,为false时不参数自动导播,目前只有互动通道有效-->true
  </courseLiveView>
</hostParam>

23. 配置录播主机参数

23.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/hostParam

23.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<hostParam xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--req, object, 录播主机参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <oneKeyDefaultDelay>
    <!--req, int, 延迟时间, range:[,], step:, unit:s, unitType:时间-->1
  </oneKeyDefaultDelay>
  <directMode>
    <!--req, enum, 导播模式, subType:string, [auto#自适应,manual#手动,semiAuto#半自动]-->auto
  </directMode>
  <courseDataStorageEnabled>
    <!--opt, bool, 是否开启课程数据存储-->true
  </courseDataStorageEnabled>
  <electronicEnlargeMode>
    <!--opt, bool, 电子放大导播-->true
  </electronicEnlargeMode>
  <systemMode>
    <!--req, enum, 系统类型, subType:string, [no#无,4kNormal#4K模式,4kDoubleDeepEyes#4K双屏]-->no
  </systemMode>
  <StreamAccess>
    <!--opt, object, IPC有三路码流时-->
    <studentTrackCamera>
      <!--opt, enum, 学生特写相机接入码流, subType:string, [main#主码流,third#第三码流]-->main
    </studentTrackCamera>
    <teacherTrackCamera>
      <!--opt, enum, 老师特写相机接入码流, subType:string, [main#主码流,third#第三码流]-->main
    </teacherTrackCamera>
  </StreamAccess>
  <courseLiveView>
    <!--opt, bool, 课件是否参与自动导播, dep:and,{$.hostParam.directMode,eq,auto}, desc:本节点没有默认为true,参与导播,为false时不参数自动导播,目前只有互动通道有效-->true
  </courseLiveView>
</hostParam>

23.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

24. 获取人体参数的能力

24.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/HumanInformation/capabilities

24.2 输入参数

无

24.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanInformation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人体参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <statureLowerLimit min="0" max="250">
    <!--ro, req, int, 身高下限, range:[,], step:, unit:cm,身高下限, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </statureLowerLimit>
</HumanInformation>

25. 获取人体参数

25.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/HumanInformation

25.2 输入参数

无

25.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanInformation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 人体参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <statureLowerLimit>
    <!--ro, req, int, 身高下限, range:[,], step:, unit:cm",身高下限, unitType:-->1
  </statureLowerLimit>
</HumanInformation>

26. 配置人体参数

26.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/HumanInformation

26.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<HumanInformation xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 人体参数配置, attr:version{req, string, 协议版本, range:[,]}-->
  <statureLowerLimit>
    <!--req, int, 身高下限, range:[,], step:, unit:cm",身高下限, unitType:-->1
  </statureLowerLimit>
</HumanInformation>

26.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

27. 获取电影模式配置能力

27.1 命令

GET /ISAPI/RecordHost/FilmModeCfg/capabilities

27.2 输入参数

无

27.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FilmModeCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 电影模式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="single,double,pip">
    <!--ro, req, enum, 电影模式类型, subType:string, [single#single window,double#two windows,pip#-windows in windows], attr:opt{req, string, 取值范围, range:[,]}-->single
  </type>
</FilmModeCfg>

28. 获取电影模式配置

28.1 命令

GET /ISAPI/RecordHost/FilmModeCfg

28.2 输入参数

无

28.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<FilmModeCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 电影模式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="single,double,pip">
    <!--ro, req, enum, 电影模式类型, subType:string, [single#single window,double#two windows,pip#-windows in windows], attr:opt{req, string, 取值范围, range:[,]}-->single
  </type>
</FilmModeCfg>

29. 配置电影模式

29.1 命令

PUT /ISAPI/RecordHost/FilmModeCfg

29.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<FilmModeCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 电影模式配置, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="single,double,pip">
    <!--req, enum, 电影模式类型, subType:string, [single#single window,double#two windows,pip#windows in windows], attr:opt{req, string, 取值范围, range:[,]}-->single
  </type>
</FilmModeCfg>

29.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

30. 获取导播策略配置能力

30.1 命令

GET /ISAPI/RecordHost/DirectedStrategyCfg/capabilities

30.2 输入参数

无

30.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DirectedStrategyCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--ro, req, object, 导播策略配置, attr:version{req, string, 协议版本, range:[,]}-->
  <type opt="normal,fine,fin1To2,fin1To3">
    <!--ro, req, enum, 导播策略类型, subType:string, [normal#常态导播策略,fine#精品导播策略,fin1To2#精品导播1替2,fin1To3#精品导播策略1替3], attr:opt{req, string, 取值范围, range:[,]}-->normal
  </type>
</DirectedStrategyCfg>

31. 获取导播策略

31.1 命令

GET /ISAPI/RecordHost/DirectedStrategyCfg

31.2 输入参数

无

31.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<DirectedStrategyCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 导播策略配置, attr:version{req, string, 协议版本, range:[,]}-->
  <type>
    <!--ro, req, enum, 导播策略类型, subType:string, [normal#常态导播策略,fine#精品导播策略,fin1To2#精品导播1替2,fin1To3#精品导播策略1替3]-->normal
  </type>
</DirectedStrategyCfg>

32. 配置导播策略

32.1 命令

PUT /ISAPI/RecordHost/DirectedStrategyCfg

32.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<DirectedStrategyCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">null
  <!--req, object, 导播策略配置, attr:version{req, string, 协议版本, range:[,]}-->
  <type>
    <!--req, enum, 导播策略类型, subType:string, [normal#常态导播策略,fine#精品导播策略,fin1To2#精品导播1替2,fin1To3#精品导播策略1替3]-->normal
  </type>
</DirectedStrategyCfg>

32.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

33. 获取图像差分检测参数能力

33.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/imageDiffDetection/channels/<channelID>/capabilities

33.2 输入参数

无

33.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ImageDiffDetectionCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 图像差分检测配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <threshold min="0" max="100">
    <!--ro, req, int, 阈值, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </threshold>
  <sensitivity min="0" max="100">
    <!--ro, req, int, 灵敏度, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </sensitivity>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化屏长度-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionCoordinatesList size="10">
    <!--ro, req, array, 区域列表信息, subType:object, range:[3,10], attr:size{req, int, 数组元素总数, range:[,], step:, unit:, unitType:}-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域信息, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, Y位置, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, X位置, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <videoInputType opt="auto,HDMI,VGA">
    <!--ro, opt, string, 音频输入, range:[,], attr:opt{req, string, 取值范围, range:[,]}-->auto
  </videoInputType>
</ImageDiffDetectionCfg>

34. 获取图像差分检测参数

34.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/imageDiffDetection/channels/<channelID>

34.2 输入参数

无

34.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ImageDiffDetectionCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 图像差分检测配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--ro, req, bool, 使能-->true
  </enabled>
  <threshold>
    <!--ro, req, int, 阈值, range:[,], step:, unit:, unitType:-->1
  </threshold>
  <sensitivity>
    <!--ro, req, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivity>
  <normalizedScreenSize>
    <!--ro, opt, object, 归一化屏长度-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionCoordinatesList>
    <!--ro, req, array, 区域列表信息, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--ro, opt, object, 区域信息, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--ro, req, int, Y位置, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--ro, req, int, X位置, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <videoInputType>
    <!--ro, opt, enum, 音频输入, subType:string, [auto#自适应,HDMI#HDMI,VGA#VGA]-->auto
  </videoInputType>
</ImageDiffDetectionCfg>

35. 配置图像差分检测参数

35.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/imageDiffDetection/channels/<channelID>

35.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ImageDiffDetectionCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 图像差分检测配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enabled>
    <!--req, bool, 使能-->true
  </enabled>
  <threshold>
    <!--req, int, 阈值, range:[,], step:, unit:, unitType:-->1
  </threshold>
  <sensitivity>
    <!--req, int, 灵敏度, range:[,], step:, unit:, unitType:-->1
  </sensitivity>
  <normalizedScreenSize>
    <!--opt, object, 归一化屏长度-->
    <normalizedScreenWidth>
      <!--req, int, 归一化宽度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--req, int, 归一化高度, range:[,], step:, unit:, unitType:-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <RegionCoordinatesList>
    <!--req, array, 区域列表信息, subType:object, range:[3,10]-->
    <RegionCoordinates>
      <!--opt, object, 区域信息, desc:屏幕左下角为坐标原点-->
      <positionX>
        <!--req, int, Y位置, range:[0,1000], step:, unit:, unitType:-->1
      </positionX>
      <positionY>
        <!--req, int, X位置, range:[0,1000], step:, unit:, unitType:-->1
      </positionY>
    </RegionCoordinates>
  </RegionCoordinatesList>
  <videoInputType>
    <!--opt, enum, 音频输入, subType:string, [auto#自适应,HDMI#HDMI,VGA#VGA]-->auto
  </videoInputType>
</ImageDiffDetectionCfg>

35.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

36. 获取发布文件信息能力

36.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/publishFileCfg/channels/<channelID>/capabilities

36.2 输入参数

无

36.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PublishFileCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 课件配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <fileID min="1" max="10">
    <!--ro, req, string, 课件ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </fileID>
  <startTime>
    <!--ro, opt, time, 开始时间-->00:00:00+08:00
  </startTime>
  <endTime>
    <!--ro, opt, time, 结束时间-->00:00:00+08:00
  </endTime>
  <courseName min="1" max="10">
    <!--ro, req, string, 课程名, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </courseName>
  <instructorName min="1" max="10">
    <!--ro, req, string, 教师名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </instructorName>
  <courseDescription min="0" max="256">
    <!--ro, req, string, 课程描述, range:[0,256], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </courseDescription>
</PublishFileCfg>

37. 获取发布文件信息

37.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/publishFileCfg/channels/<channelID>

37.2 输入参数

无

37.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PublishFileCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 课件配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <fileID>
    <!--ro, req, string, 课件ID, range:[,]-->test
  </fileID>
  <startTime>
    <!--ro, opt, time, 开始时间-->00:00:00+08:00
  </startTime>
  <endTime>
    <!--ro, opt, time, 结束时间-->00:00:00+08:00
  </endTime>
  <courseName>
    <!--ro, req, string, 课程名, range:[0,128]-->test
  </courseName>
  <instructorName>
    <!--ro, req, string, 教师名称, range:[0,64]-->test
  </instructorName>
  <courseDescription>
    <!--ro, req, string, 课程描述, range:[0,256]-->test
  </courseDescription>
</PublishFileCfg>

38. 配置发布文件信息

38.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/publishFileCfg/channels/<channelID>

38.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PublishFileCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 课件配置信息, attr:version{req, string, 协议版本, range:[,]}-->
  <fileID>
    <!--req, string, 课件ID, range:[,]-->test
  </fileID>
  <startTime>
    <!--opt, time, 开始时间-->00:00:00+08:00
  </startTime>
  <endTime>
    <!--opt, time, 结束时间-->00:00:00+08:00
  </endTime>
  <courseName>
    <!--req, string, 课程名, range:[0,128]-->test
  </courseName>
  <instructorName>
    <!--req, string, 教师名称, range:[0,64]-->test
  </instructorName>
  <courseDescription>
    <!--req, string, 课程描述, range:[0,256]-->test
  </courseDescription>
</PublishFileCfg>

38.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

39. 获取文件发布能力

39.1 命令

GET /ISAPI/RecordHost/PublishFile/channels/<channelID>/capabilities

39.2 输入参数

无

39.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PublishFile xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 文件发布, attr:version{req, string, 协议版本, range:[,]}-->
  <beginTime>
    <!--ro, req, time, 开始时间-->00:00:00+08:00
  </beginTime>
  <endTime>
    <!--ro, req, time, 结束时间-->00:00:00+08:00
  </endTime>
  <fileID min="0" max="128">
    <!--ro, req, int, 文件名ID, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </fileID>
  <cmdType opt="StartPublist,StopPublish">
    <!--ro, req, enum, 发布命令类型, subType:string, [StartPublist#开始发布,StopPublish#停止发布], attr:opt{req, string, 取值范围, range:[,]}-->StopPublish
  </cmdType>
  <fileType opt="timing,manual">
    <!--ro, req, enum, 发布文件类型, subType:string, [timing#定时课程,manual#手动课程], attr:opt{req, string, 取值范围, range:[,]}-->timing
  </fileType>
</PublishFile>

40. 根据文件ID获取文件发布进度

40.1 命令

GET /ISAPI/RecordHost/PublishProgress/channels/<channelID>

40.2 输入参数

无

40.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<PublishProgress xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 发布进度, attr:version{req, string, 协议版本, range:[,]}-->
  <publishPercent>
    <!--ro, req, int, 发布百分比, range:[0,100], step:, unit:, unitType:-->1
  </publishPercent>
  <publishStatus>
    <!--ro, req, enum, 发布状态, subType:string, [Success#发布成功,Publishing#正在发布,WaitPublish#等待发布,CannotConnectFTP#无法发布,NoFile#没有文件,Failed#发布失败]-->Success
  </publishStatus>
  <fileID>
    <!--ro, req, string, 文件ID, range:[0,64]-->test
  </fileID>
</PublishProgress>

41. 配置单个文件发布

41.1 命令

PUT /ISAPI/RecordHost/PublishFile/channels/<channelID>

41.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<PublishFile xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 文件发布, attr:version{req, string, 协议版本, range:[,]}-->
  <beginTime>
    <!--req, time, 开始时间-->00:00:00+08:00
  </beginTime>
  <endTime>
    <!--req, time, 结束时间-->00:00:00+08:00
  </endTime>
  <fileID>
    <!--req, string, 文件名ID, range:[,]-->test
  </fileID>
  <cmdType>
    <!--req, enum, 发布命令类型, subType:string, [StartPublist#开始发布,StopPublish#结束发布]-->StartPublist
  </cmdType>
  <fileType>
    <!--opt, enum, 发布文件类型, subType:string, [timing#定时课程,manual#手动课程], desc:该字段不发,默认为定时课程-->timing
  </fileType>
</PublishFile>

41.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

42. 获取背景图片配置能力

42.1 命令

GET /ISAPI/RecordHost/BackPicInfo/capabilities

42.2 输入参数

无

42.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BackPicInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 背景信息, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 是否启用背景图片叠加-->true
  </enable>
  <picID min="0" max="128">
    <!--ro, req, string, 图片ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </picID>
  <View>
    <!--ro, req, string, 图片ID, range:[,]-->test
    <mirrorMode opt="split2,L1R2,L2R1">
      <!--ro, opt, enum, 导播视图模式, subType:string, [split2#二分屏,L1R2#左一大画面右二小画面,L2R1#左二小画面右一大画面], attr:opt{req, string, 取值范围, range:[,]}-->split2
    </mirrorMode>
    <enable opt="true,false">
      <!--ro, opt, bool, 是否启用背景图片叠加, attr:opt{req, string, 取值范围, range:[,]}-->true
    </enable>
    <picID min="0" max="128">
      <!--ro, opt, string, 图片ID, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </picID>
  </View>
  <ChannelInfo>
    <!--ro, opt, string, 图片叠加通道类型, range:[,]-->test
    <channelNo min="1" max="10">
      <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:, attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
    </channelNo>
    <channelName min="1" max="10">
      <!--ro, opt, string, 通道名称, range:[,], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test1
    </channelName>
    <channelType opt="input,output">
      <!--ro, opt, enum, 图片叠加通道类型, subType:string, [input#输入,output#输出], attr:opt{req, string, 取值范围, range:[,]}-->input
    </channelType>
  </ChannelInfo>
  <preMonitoringChannel opt="30">
    <!--ro, opt, int, 是否支持预监通道配置, range:[,], step:, unit:, unitType:, attr:opt{req, string, 取值范围, range:[,]}, desc:也即/ISAPI/RecordHost/BackPicInfo可以添加URL参数preMonitoringChannel-->1
  </preMonitoringChannel>
</BackPicInfo>

43. 获取背景图片参数

43.1 命令

GET /ISAPI/RecordHost/BackPicInfo?preMonitoringChannel=<preMonitoringChannel>

43.2 输入参数

无

43.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BackPicInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 背景图配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--ro, req, bool, 是否启用背景图片叠加-->true
  </enable>
  <picID>
    <!--ro, req, string, 图片ID, range:[,], desc:min=0,max=128-->test
  </picID>
  <ViewList>
    <!--ro, opt, array, 视图列表, subType:object, range:[,]-->
    <View>
      <!--ro, opt, object, list-->
      <mirrorMode>
        <!--ro, req, enum, 导播视图模式, subType:string, [L1R2#左一大画面右二小画面,L1R3#左一大画面右三小画面,L1R4#左一大画面右四小画面,L2R1#左二小画面右一大画面,L3R1#左三小画面右一大画面,L4R1#左四小画面右一大画面,NSquare1#九宫格,NSquare2#十六宫格,pinpL#画中画小画面在左下角,pinpR#画中画小画面在右下角,split1#一分屏,split2#二分屏,split4#四分屏,split6UL#六分屏左上角为大画面,split8UL#八分屏左上角为大画面]-->L1R2
      </mirrorMode>
      <enable>
        <!--ro, req, bool, 是否启用背景图片叠加-->true
      </enable>
      <picID>
        <!--ro, req, string, 图片ID, range:[,], desc:min=0,max=128-->test
      </picID>
    </View>
  </ViewList>
  <ChannelInfo>
    <!--ro, opt, object, 通道信息-->
    <channelNo>
      <!--ro, opt, int, 通道号, range:[,], step:, unit:, unitType:-->1
    </channelNo>
    <channelName>
      <!--ro, opt, string, 通道名称, range:[,]-->test
    </channelName>
    <channelType>
      <!--ro, opt, enum, 图片叠加通道类型, subType:string, [input#输入,output#输出], desc:"input,output"-->input
    </channelType>
  </ChannelInfo>
</BackPicInfo>

44. 配置背景图片参数

44.1 命令

PUT /ISAPI/RecordHost/BackPicInfo?preMonitoringChannel=<preMonitoringChannel>

44.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<BackPicInfo xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--opt, object, 背景图配置, attr:version{req, string, 协议版本, range:[,]}-->
  <enable>
    <!--req, bool, 是否启用背景图片叠加-->true
  </enable>
  <picID>
    <!--req, string, 图片ID, range:[,], desc:min=0,max=128-->test
  </picID>
  <ViewList>
    <!--opt, array, 视图列表, subType:object, range:[,]-->
    <View>
      <!--opt, object, list-->
      <mirrorMode>
        <!--req, enum, 导播视图模式, subType:string, [L1R2#左一大画面右二小画面,L1R3#左一大画面右三小画面,L1R4#左一大画面右四小画面,L2R1#左二小画面右一大画面,L3R1#左三小画面右一大画面,L4R1#左四小画面右一大画面,NSquare1#九宫格,NSquare2#十六宫格,pinpL#画中画小画面在左下角,pinpR#画中画小画面在右下角,split1#一分屏,split2#二分屏,split4#四分屏,split6UL#六分屏左上角为大画面,split8UL#八分屏左上角为大画面]-->L1R2
      </mirrorMode>
      <enable>
        <!--req, bool, 是否启用背景图片叠加-->true
      </enable>
      <picID>
        <!--req, string, 图片ID, range:[,], desc:min=0,max=128-->test
      </picID>
    </View>
  </ViewList>
  <ChannelInfo>
    <!--opt, object, 通道信息-->
    <channelNo>
      <!--opt, int, 通道号, range:[,], step:, unit:, unitType:-->1
    </channelNo>
    <channelName>
      <!--opt, string, 通道名称, range:[,]-->test
    </channelName>
    <channelType>
      <!--ro, opt, enum, 图片叠加通道类型, subType:string, [input#输入,output#输出], desc:"input,output"-->input
    </channelType>
  </ChannelInfo>
</BackPicInfo>

44.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

45. 查询所有背景图片

45.1 命令

GET /ISAPI/RecordHost/BackPicCfg/picID

45.2 输入参数

无

45.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BackPicCfgList xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, array, 背景图片列表, subType:object, range:[,], attr:version{req, string, 协议版本, range:[,]}-->
  <BackPicCfg>
    <!--ro, opt, object, 背景图配置信息-->null
    <picSize>
      <!--ro, req, int, 背景图片大小, range:[,], step:, unit:, unitType:-->1
    </picSize>
    <picType>
      <!--ro, req, enum, 图片类型, subType:string, [YUV#YUV,JPEG#JPEG]-->YUV
    </picType>
    <picWidth>
      <!--ro, req, int, 图片宽, range:[,], step:, unit:, unitType:-->1
    </picWidth>
    <picHeight>
      <!--ro, req, int, 图片高, range:[,], step:, unit:, unitType:-->1
    </picHeight>
    <picName>
      <!--ro, opt, string, 图片名, range:[,]-->test
    </picName>
    <picID>
      <!--ro, opt, string, 图片ID, range:[,]-->test
    </picID>
  </BackPicCfg>
</BackPicCfgList>

46. 获取单个背景图片参数

46.1 命令

GET /ISAPI/RecordHost/BackPicCfg/picID/<pictureID>

46.2 输入参数

无

46.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<BackPicCfg xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 背景图片参数, attr:version{req, string, 协议版本, range:[,]}-->
  <picSize>
    <!--ro, req, int, 背景图片大小, range:[,], step:, unit:, unitType:-->0
  </picSize>
  <picType>
    <!--ro, req, enum, 图片类型, subType:string, [YUV#YUV,JPEG#JPEG,BMP#BMP]-->BMP
  </picType>
  <picWidth>
    <!--ro, req, int, 图片宽, range:[,], step:, unit:, unitType:-->0
  </picWidth>
  <picHeight>
    <!--ro, req, int, 图片高, range:[,], step:, unit:, unitType:-->0
  </picHeight>
  <picName>
    <!--ro, opt, string, 图片名, range:[0,128]-->test
  </picName>
  <picID>
    <!--ro, opt, string, 图片ID, range:[0,128]-->test
  </picID>
  <ChannelInfoList>
    <!--ro, opt, array, 图片叠加通道信息列表, subType:object, range:[,]-->
    <ChannelInfo>
      <!--ro, opt, object, 图片叠加通道信息-->
      <channelNo>
        <!--ro, opt, int, 图片叠加通道号, range:[,], step:, unit:, unitType:-->0
      </channelNo>
      <channelName>
        <!--ro, opt, string, 图片叠加通道名称, range:[,]-->test
      </channelName>
      <channelType>
        <!--ro, opt, enum, 图片叠加通道类型, subType:string, [input#输入,output#输出]-->input
      </channelType>
    </ChannelInfo>
  </ChannelInfoList>
  <picUrl>
    <!--ro, opt, string, 图片URL, range:[0,256], desc:用于图片下载-->test
  </picUrl>
</BackPicCfg>

47. 删除背景图片

47.1 命令

DELETE /ISAPI/RecordHost/BackPic/<pictureID>

47.2 输入参数

无

47.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>

48. 获取录制状态

48.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/RecordStatus

48.2 输入参数

无

48.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<RecordStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 录制状态, attr:version{req, string, 协议版本, range:[,]}-->
  <recordStatus>
    <!--ro, req, enum, 录播状态, subType:string, [pause#暂停,shield#恢复,recording#录像中,idle#空闲]-->pause
  </recordStatus>
  <recUUID>
    <!--ro, req, string, 手动课表UUID, range:[,]-->test
  </recUUID>
  <recordingTime>
    <!--ro, opt, int, 已录制时长, range:[,], step:, unit:s, unitType:-->1
  </recordingTime>
</RecordStatus>

49. 获取手动课程录像控制能力

49.1 命令

GET /ISAPI/ContentMgmt/RecordingHost/ManualCurriculum/capabilities

49.2 输入参数

无

49.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualCurriculum xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 手动课程录像控制, attr:version{req, string, 协议版本, range:[,]}-->
  <recUUID min="0" max="64">
    <!--ro, req, string, 手动课表UUID, range:[0,64], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->12345
  </recUUID>
  <courseName min="0" max="32">
    <!--ro, req, string, 课程名称, range:[0,32], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </courseName>
  <instructorName min="0" max="16">
    <!--ro, req, string, 授课老师, range:[0,16], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->test
  </instructorName>
  <courseDescription min="0" max="256">
    <!--ro, req, string, 课程简介, range:[0,256], attr:min{req, int, 最小值, range:[,], step:, unit:, unitType:},max{req, int, 最大值, range:[,], step:, unit:, unitType:}-->1
  </courseDescription>
  <cmdType opt="startRecord,stopRecord,pauseRecord,continueRecord,startShield,stopShield">
    <!--ro, req, enum, 命令类型, subType:string, [startRecord#开始,stopRecord#结束,pauseRecord#暂停,continueRecord#延长录播时间,startShield#键开始屏蔽,stopShield#一键停止屏蔽], attr:opt{req, string, 取值范围, range:[,]}-->startRecord
  </cmdType>
</ManualCurriculum>

50. 配置手动课程录像控制

50.1 命令

PUT /ISAPI/ContentMgmt/RecordingHost/ManualCurriculum

50.2 输入参数

<?xml version="1.0" encoding="UTF-8"?>

<ManualCurriculum xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 手动课程录像控制, attr:version{req, string, 协议版本, range:[,]}-->
  <recUUID>
    <!--ro, req, string, 手动课表UUID, range:[0,64]-->12345
  </recUUID>
  <courseName>
    <!--ro, req, string, 课程名称, range:[0,32]-->test
  </courseName>
  <instructorName>
    <!--ro, req, string, 授课老师, range:[0,16]-->test
  </instructorName>
  <courseDescription>
    <!--ro, req, string, 课程简介, range:[0,256]-->1
  </courseDescription>
  <cmdType>
    <!--ro, req, enum, 命令类型, subType:string, [startRecord#开始,stopRecord#结束,pauseRecord#暂停,continueRecord#延长录播时间,startShield#键开始屏蔽,stopShield#一键停止屏蔽]-->startRecord
  </cmdType>
</ManualCurriculum>

50.3 输出参数

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本, range:[,]}-->
  <requestURL>
    <!--ro, req, string, 请求的URL, range:[,]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, range:[,], desc:详细错误码的英文描述-->OK
  </subStatusCode>
</ResponseStatus>


NET_DVR_SDKChannelToISAPI

SDK通道号和ISAPI协议通道号之间的转换。

LONG NET_DVR_SDKChannelToISAPI(
  LONG   lUserID,
  LONG   lInChannel,
  BOOL   bSDKToISAPI
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lInChannel
[in] 通道号，bSDKToISAPI为TRUE时输入SDK通道号，bSDKToISAPI为FALSE时输入ISAPI协议通道号
bSDKToISAPI
[out] 转换方式：TRUE- SDK通道号转ISAPI协议通道号；FALSE- ISAPI协议通道号转SDK通道号

Return Values

-1表示失败，其他值表示通道号，bSDKToISAPI为TRUE时表示转换之后的ISAPI协议通道号，bSDKToISAPI为FALSE时表示转换之后的SDK通道号。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

预览、回放、通道相关参数配置等接口需要传入访问通道的通道号，我司设备有DVR、混合型DVR、NVR、网络摄像机等，通道有两种类型：模拟通道和IP通道（数字通道，针对混合型DVR和NVR设备）。对于使用SDK私有协议对接时需要区分通道类型，不同的通道类型起始通道号不一样，比如混合型DVR和64路以下的NVR的IP通道的通道号是从33开始的（NET_DVR_Login_V40登录设备返回的设备信息NET_DVR_DEVICEINFO_V30里面可以获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan））。但是SDK新增了NET_DVR_STDXMLConfig透传ISAPI协议的功能，ISAPI协议是基于标准HTTP协议的，该协议URL和XML、JSON数据里面通道号不区分模拟还是数字通道，起始通道号都是1，按顺序递增。因此，不同接口对接存在通道号不一致的问题，需要调用该接口进行转换。

See Also

NET_DVR_Login_V40 NET_DVR_STDXMLConfig


NET_DVR_SetDVRMessageCallBack_V50

注册报警信息回调函数。

BOOL NET_DVR_SetDVRMessageCallBack_V50(
  int            iIndex,
  MSGCallBack    fMessageCallBack,
  void           *pUser
);

Parameters

iIndex
[in] 回调函数索引，取值范围：[0,15]
fMessageCallBack
[in] 回调函数
pUser
[in] 用户数据

Callback Function

typedef void (CALLBACK *MSGCallBack)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，不同的报警信息对应不同的类型，通过类型区分是什么报警信息，详见“Remarks”中列表
pAlarmer
[out] 报警设备信息，包括设备序列号、IP地址、登录IUserID句柄等
pAlarmInfo
[out] 报警信息，通过lCommand值判断pAlarmer对应的结构体，详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 初始化之后可以增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置通用参数，NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate设置为1。这样设置之后SDK底层会自动将报警事件信息数据（XML或者JSON格式的字符串）和图片数据（二进制数据）分离之后返回。如果不调用该接口设置byAlarmJsonPictureSeparate或者设置为0，默认直接以HTTP协议表单格式的报文数据返回即报警信息字符串和图片二进制数据一起返回，在同一个内存里面，需要自行解析。
  • V30、V31的接口设置报警回调函数是全局唯一的，注册多次会覆盖之前的，只有最后设置的回调函数有效，所有设备报警信息都是在同一个回调函数中返回的，通过报警设备信息（pAlarmInfo）区分是哪台设备；通过V50接口设置报警回调函数，支持设置多路不同的回调函数，最大支持16路，通过索引进行区分，所有的设备报警信息会同时在设置的各个回调函数里面返回，返回相同的数据，同样需要通过报警设备信息（pAlarmInfo）区分是哪台设备。
  • 该接口中回调函数的第一个参数（lCommand）和第三个参数（pAlarmInfo）是密切关联的，其关系见下表：
消息类型（lCommand） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
COMM_VCA_ALARM | 0x4993 | 智能检测报警(Json或者XML数据结构) | 人体目标识别报警Json数据
 |  |  | 人员密度报警Json数据
 |  |  | 区域人数统计报警(JSON格式)
 |  |  | 人员排队检测时长报警(JSON格式)
 |  |  | 人员排队检测人数报警(JSON格式)
 |  |  | 人员排队检测实时数据(JSON格式)
 |  |  | 人员排队检测定时人数统计数据(JSON格式)
 |  |  | 混合目标检测报警JSON数据
 |  |  | 安全帽检测报警JSON数据
 |  |  | 高空抛物报警JSON数据
 |  |  | 录制状态报警信息JSON数据
 |  |  | 资源上传云存储状态报警JSON数据
 |  |  | 设备故障报警上传XML数据
 |  |  | 设备心跳上传XML数据
 |  |  | 交通二维码信息JSON数据
 |  |  | 交通瞬时报警JSON数据
 |  |  | 门禁二维码事件JSON数据
 |  |  | 门禁人脸测温事件JSON数据
COMM_ISAPI_ALARM | 0x6009 | 智能检测报警(封装结构体，图片数据分离) | NET_DVR_ALARM_ISAPI_INFO (其中XML或者JSON数据参考COMM_VCA_ALARM对应报警信息说明)

See Also

NET_DVR_SetupAlarmChan_V50

Reference Interface

该接口扩展源于

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_SetupAlarmChan_V50

建立报警上传通道，获取报警等信息（支持报警订阅模式，兼容V41接口）。

LONG NET_DVR_SetupAlarmChan_V50(
  LONG                           lUserID,
  NET_DVR_SETUPALARM_PARAM_V50   lpSetupParam
  const char                     *pData,
  DWORD                          dwDataLen
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lpSetupParam
[in] 报警布防参数
pData
[in] 报警订阅条件信息，输入为XML格式：SubscribeEvent
dwDataLen
[in] 报警订阅条件信息长度

Return Values

-1表示失败，其他值作为NET_DVR_CloseAlarmChan_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口可以支持报警订阅方式，即布防时通过pData、dwDataLen参数指定设备需要上传的报警信息类型。pData为NULL和dwDataLen为0时即通用报警布防方式，等同NET_DVR_SetupAlarmChan_V41接口功能（即兼容V41接口）。
  • 设备是否支持报警订阅能力，可以通过设备能力集进行判断，对应设备系统能力集(DeviceCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SYSTEM_CAPABILITIES，节点：<isSupportSubscribeEvent>。
  • 报警布防之前需要调用NET_DVR_SetDVRMessageCallBack_V50接口注册报警回调函数，在回调函数里面接收设备上传的报警信息。报警订阅条件不同，对应上传的报警信息类型(lCommand)和报警数据(pAlarmInfo)也不同，pData对应输入XML数据<SubscribeEvent>中<Event>的子节点<type>字段表示订阅的报警事件类型，不同的类型对应回调函数获取报警信息。

See Also

NET_DVR_Login_V40 NET_DVR_SetDVRMessageCallBack_V50 NET_DVR_CloseAlarmChan_V30

Reference Interface

该接口扩展源于

NET_DVR_SetupAlarmChan_V41


NET_DVR_CloseAlarmChan_V30

撤销报警上传通道。

BOOL NET_DVR_CloseAlarmChan_V30(
  LONG   lAlarmHandle
);

Parameters

lAlarmHandle
[in] NET_DVR_SetupAlarmChan_V50的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_SetupAlarmChan_V50

Reference Interface

该接口扩展源于

NET_DVR_CloseAlarmChan


NET_DVR_StartListen_V30

启动监听，接收设备主动上传的报警等信息（支持多线程）。

LONG NET_DVR_StartListen_V30(
  char           *sLocalIP,
  WORD           wLocalPort,
  MSGCallBack    DataCallback,
  void           *pUserData
);

Parameters

sLocalIP
[in] PC机本地IP地址，可以置为NULL
wLocalPort
[in] PC本地监听端口号。由用户设置，必须和设备端设置的一致
DataCallback
[in] 回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *MSGCallBack)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，不同的报警信息对应不同的类型，通过类型区分是什么报警信息，详见“Remarks”中列表
pAlarmer
[out] 报警设备信息，包括设备序列号、IP地址等
pAlarmInfo
[out] 报警信息，通过lCommand值判断pAlarmer对应的结构体，详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopListen_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。

Remarks

  • 初始化之后可以增加调用NET_DVR_SetSDKLocalCfg（命令:NET_DVR_LOCAL_CFG_TYPE_GENERAL）设置通用参数，NET_DVR_LOCAL_GENERAL_CFG结构体里面参数byAlarmJsonPictureSeparate设置为1。这样设置之后SDK底层会自动将报警事件信息数据（XML或者JSON格式的字符串）和图片数据（二进制数据）分离之后返回。如果不调用该接口设置byAlarmJsonPictureSeparate或者设置为0，默认直接以HTTP协议表单格式的报文数据返回即报警信息字符串和图片二进制数据一起返回，在同一个内存里面，需要自行解析。
  • WEB网页登录设备，网络配置的高级设置里面配置HTTP服务器的IP、端口；或者SDK登录设备之后调用NET_DVR_STDXMLConfig接口，通过PUT /ISAPI/Event/notification/httpHosts?format=json(设备支持的数据格式为JSON类型时需要使用这个URL)或PUT /ISAPI/Event/notification/httpHosts(设备支持的数据格式为XML类型时需要使用这个URL)命令设置。配置之后设备主动连接服务器上传事件数据，对应服务器端调用该监听接口接收数据。配置的IP、端口和监听的IP、端口需要一致。
  • 该接口中的回调函数优先级高于其他回调函数，即设置了该接口中的回调函数，其他回调函数将接收不到报警信息。所有设备报警信息都是在同一个回调函数中返回的，通过报警设备信息（pAlarmInfo）区分是哪台设备。
  • 该接口中回调函数的第一个参数（lCommand）和第三个参数（pAlarmInfo）是密切关联的，其关系见下表：
消息类型（lCommand） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
COMM_VCA_ALARM | 0x4993 | 智能检测报警(Json或者XML数据结构) | 人体目标识别报警Json数据
 |  |  | 人员密度报警Json数据
 |  |  | 区域人数统计报警(JSON格式)
 |  |  | 人员排队检测时长报警(JSON格式)
 |  |  | 人员排队检测人数报警(JSON格式)
 |  |  | 人员排队检测实时数据(JSON格式)
 |  |  | 人员排队检测定时人数统计数据(JSON格式)
 |  |  | 混合目标检测报警JSON数据
 |  |  | 安全帽检测报警JSON数据
 |  |  | 高空抛物报警JSON数据
 |  |  | 录制状态报警信息JSON数据
 |  |  | 资源上传云存储状态报警JSON数据
 |  |  | 设备故障报警上传XML数据
 |  |  | 设备心跳上传XML数据
 |  |  | 交通二维码信息JSON数据
 |  |  | 交通瞬时报警JSON数据
COMM_ISAPI_ALARM | 0x6009 | 智能检测报警(封装结构体，图片数据分离) | NET_DVR_ALARM_ISAPI_INFO (其中XML或者JSON数据参考COMM_VCA_ALARM对应报警信息说明)

See Also

NET_DVR_StopListen_V30

Reference Interface

该接口扩展源于

NET_DVR_StartListen


通用接口介绍

接口 | 功能 | 支持的产品 | 备注
NET_DVR_Init | 初始化SDK | 全部 |
NET_DVR_Cleanup | 释放SDK资源 | 全部 |
NET_DVR_SetConnectTime | 设置SDK网络连接超时时间和连接尝试次数 | 全部 |
NET_DVR_SetReconnect | 设置SDK重连功能 | 全部 |
NET_DVR_SetRecvTimeOut | 设置接收超时时间 | 全部 |
NET_DVR_GetDVRIPByResolveSvr_Ex | 通过解析服务器，获取设备的动态IP地址 | 全部 |
NET_DVR_GetLocalIP | 获取所有IP，用于支持多网卡接口 | 全部 |
NET_DVR_SetValidIP | 选择绑定IP | 全部 |
NET_DVR_SetDVRMessage | 注册接收异常、重连等消息的窗口句柄 | 全部 |
NET_DVR_SetExceptionCallBack_V30 | 注册接收异常、重连等消息的窗口句柄或回调函数 | 全部 |
NET_DVR_GetSDKVersion | 获取SDK的版本信息 | 全部 |
NET_DVR_GetSDKBuildVersion | 获取SDK的版本号和build信息 | 全部 |
NET_DVR_GetSDKState | 获取当前SDK的状态信息 | 全部 |
NET_DVR_GetSDKAbility | 获取当前SDK的功能信息 | 全部 |
NET_DVR_GetSDKLocalCfg | 获取SDK本地参数 | 全部 |
NET_DVR_SetSDKLocalCfg | 设置SDK本地参数 | 全部 |
NET_DVR_SetLogToFile | 启用SDK写日志文件 | 全部 |
NET_DVR_GetLastError | 返回最后操作的错误码 | 全部 |
NET_DVR_GetErrorMsg | 返回最后操作的错误码信息 | 全部 |
NET_DVR_Login_V30 | 注册 | 全部 |
NET_DVR_Logout | 注销 | 全部 |


智能交通摄像机功能接口介绍

智能交通摄像机除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、报警上传和远程参数配置等。

设备型号 | 功能 | 接口 | 相关参数
获取设备能力集 |  |  |
智能交通摄像机 | 获取设备能力集 | NET_DVR_GetDeviceAbility | 支持的能力类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_ENCODE_ALL_ABILITY_V20、 IPC_FRONT_PARAMETER_V20、 DEVICE_USER_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_VIDEOPIC_ABILITY、 DEVICE_SERIAL_ABILITY
智能交通摄像机 | 获取设备能力集 | NET_DVR_GetDeviceAbility | 支持的能力类型： DEVICE_ABILITY_INFO、 SNAPCAMERA_ABILITY、 ITC_TRIGGER_MODE_ABILITY
预览相关功能 |  |  |
智能交通摄像机 | 主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
智能交通摄像机 | 子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
智能交通摄像机 | 实时预览 | NET_DVR_RealPlay_V30 |
智能交通摄像机 | 停止预览 | NET_DVR_StopRealPlay |
智能交通摄像机 | 获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
智能交通摄像机 | 获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
智能交通摄像机 | 设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
智能交通摄像机 | 预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
智能交通摄像机 | 初始化系统中的显示设备 | NET_DVR_InitDDrawDevice |
智能交通摄像机 | 释放显示设备占用的资源 | NET_DVR_ReleaseDDrawDevice |
智能交通摄像机 | 获取系统的显示设备的数量 | NET_DVR_GetDDrawDeviceTotalNums |
智能交通摄像机 | 设置播放窗口所使用的显卡 | NET_DVR_SetDDrawDevice |
智能交通摄像机 | 注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
智能交通摄像机 | 注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
智能交通摄像机 | 捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
智能交通摄像机 | 停止数据捕获 | NET_DVR_StopSaveRealData |
智能交通摄像机 | 单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
布防、撤防和监听 |  |  |
智能交通摄像机 | 注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | COMM_UPLOAD_PLATE_RESULT： NET_DVR_PLATE_RESULT COMM_ITS_PLATE_RESULT： NET_ITS_PLATE_RESULT COMM_ITS_TRAFFIC_COLLECT： NET_ITS_TRAFFIC_COLLECT COMM_SIGNAL_LAMP_ABNORMAL： NET_DVR_SIGNALLAMP_DETCFG COMM_ITS_ROAD_EXCEPTION： NET_ITS_ROADINFO COMM_ITS_RADARINFO： NET_DVR_ALARM_RADARINFO
智能交通摄像机 | 建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
智能交通摄像机 | 撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
智能交通摄像机 | 启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | COMM_ITC_STATUS_DETECT_RESULT： NET_ITC_STATUS_DETECT_RESULT COMM_SIGNAL_LAMP_ABNORMAL： NET_DVR_SIGNALLAMP_DETCFG COMM_ITS_ROAD_EXCEPTION： NET_ITS_ROADINFO
智能交通摄像机 | 停止监听（支持多线程） | NET_DVR_StopListen_V30 |
硬盘管理 |  |  |
智能交通摄像机 | 远程格式化设备硬盘 | NET_DVR_FormatDisk |
智能交通摄像机 | 获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
智能交通摄像机 | 关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |  |
智能交通摄像机 | 获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
智能交通摄像机 | 设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
智能交通摄像机 | 远程升级 | NET_DVR_Upgrade |
智能交通摄像机 | 获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
智能交通摄像机 | 获取远程升级的状态 | NET_DVR_GetUpgradeState |
智能交通摄像机 | 关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
智能交通摄像机 | 查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
智能交通摄像机 | 逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
智能交通摄像机 | 释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
智能交通摄像机 | 恢复设备默认参数 | NET_DVR_RestoreConfig |
智能交通摄像机 | 导出配置文件 | NET_DVR_GetConfigFile_V30 |
智能交通摄像机 | 导出配置文件 | NET_DVR_GetConfigFile_EX |
智能交通摄像机 | 导出配置文件 | NET_DVR_GetConfigFile |
智能交通摄像机 | 导入配置文件 | NET_DVR_SetConfigFile_EX |
智能交通摄像机 | 导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |  |
智能交通摄像机 | 重启设备 | NET_DVR_RebootDVR |
智能交通摄像机 | 关闭设备 | NET_DVR_ShutDownDVR |
通用参数配置 |  |  |
智能交通摄像机 | 获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40 不支持byZeroChanNum、bySupport、byEsataUseage、byIPCPlug、byRes
智能交通摄像机 | 设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40 不支持byZeroChanNum、bySupport、byEsataUseage、byIPCPlug、byRes
智能交通摄像机 | 获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
智能交通摄像机 | 设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
智能交通摄像机 | 获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DECODERCFG_V30 结构体：NET_DVR_DECODERCFG_V30
智能交通摄像机 | 设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DECODERCFG_V30 结构体：NET_DVR_DECODERCFG_V30
智能交通摄像机 | 获取232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
智能交通摄像机 | 设置232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
智能交通摄像机 | 获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
智能交通摄像机 | 设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
智能交通摄像机 | 获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
智能交通摄像机 | 设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
智能交通摄像机 | 获取压缩参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
智能交通摄像机 | 设置压缩参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
智能交通摄像机 | 获取叠加字符参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
智能交通摄像机 | 设置叠加字符参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
智能交通摄像机 | 获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
智能交通摄像机 | 设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
智能交通摄像机 | 获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
智能交通摄像机 | 设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
智能交通摄像机 | 获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
智能交通摄像机 | 设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
智能交通摄像机 | 获取本地预览参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PREVIEWCFG_V30 结构体：NET_DVR_PREVIEWCFG_V30
智能交通摄像机 | 设置本地预览参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PREVIEWCFG_V30 结构体：NET_DVR_PREVIEWCFG_V30 byPreviewNumber、wSwitchTime、bySwitchSeq设置无效
智能交通摄像机 | 获取视频输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEOOUTCFG_V30 结构体：NET_DVR_VIDEOOUT_V30 不支持参数 struVGAPara、struMatrixPara
智能交通摄像机 | 设置视频输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEOOUTCFG_V30 结构体：NET_DVR_VIDEOOUT_V30 不支持参数 struVGAPara、struMatrixPara
智能交通摄像机 | 获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NFSCFG 结构体：NET_DVR_NFSCFG
智能交通摄像机 | 设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NFSCFG 结构体：NET_DVR_NFSCFG
智能交通摄像机 | 获取硬盘管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDCFG 结构体：NET_DVR_HDCFG
智能交通摄像机 | 设置硬盘管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDCFG 结构体：NET_DVR_HDCFG
抓拍参数配置 |  |  |
智能交通摄像机 | 获取FTP上传参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_FTPCFG 结构体：NET_DVR_FTPCFG
智能交通摄像机 | 设置FTP上传参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_FTPCFG 结构体：NET_DVR_FTPCFG
智能交通摄像机 | 获取相机前端参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CCDPARAMCFG 结构体：NET_DVR_CAMERAPARAMCFG
智能交通摄像机 | 设置相机前端参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CCDPARAMCFG 结构体：NET_DVR_CAMERAPARAMCFG
智能交通摄像机 | 获取IO输入参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_IOINCFG 结构体：NET_DVR_IO_INCFG
智能交通摄像机 | 设置IO输入参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_IOINCFG 结构体：NET_DVR_IO_INCFG
智能交通摄像机 | 获取IO输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_IOOUTCFG 结构体：NET_DVR_IO_OUTCFG
智能交通摄像机 | 设置IO输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_IOOUTCFG 结构体：NET_DVR_IO_OUTCFG
智能交通摄像机 | 获取闪光灯参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_FLASHCFG 结构体：NET_DVR_FLASH_OUTCFG
智能交通摄像机 | 设置闪光灯参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_FLASHCFG 结构体：NET_DVR_FLASH_OUTCFG
智能交通摄像机 | 获取红绿灯功能参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LIGHTSNAPCFG 结构体：NET_DVR_LIGHTSNAPCFG
智能交通摄像机 | 设置红绿灯功能参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LIGHTSNAPCFG 结构体：NET_DVR_LIGHTSNAPCFG
智能交通摄像机 | 获取测速功能参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MEASURESPEEDCFG 结构体：NET_DVR_MEASURESPEEDCFG
智能交通摄像机 | 设置测速功能参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MEASURESPEEDCFG 结构体：NET_DVR_MEASURESPEEDCFG
智能交通摄像机 | 获取图像叠加信息参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_IMAGEOVERLAYCFG 结构体：NET_DVR_IMAGEOVERLAYCFG
智能交通摄像机 | 设置图像叠加信息参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_IMAGEOVERLAYCFG 结构体：NET_DVR_IMAGEOVERLAYCFG
智能交通摄像机 | 获取单IO触发功能参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SNAPCFG 结构体：NET_DVR_SNAPCFG
智能交通摄像机 | 设置单IO触发功能参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SNAPCFG 结构体：NET_DVR_SNAPCFG
智能交通摄像机 | 获取虚拟线圈参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VTPPARAM 结构体：NET_DVR_VTPARAM
智能交通摄像机 | 设置虚拟线圈参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VTPPARAM 结构体：NET_DVR_VTPARAM
智能交通摄像机 | 获取使能参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SNAPENABLECFG 结构体：NET_DVR_SNAPENABLECFG
智能交通摄像机 | 设置使能参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SNAPENABLECFG 结构体：NET_DVR_SNAPENABLECFG
智能交通摄像机 | 获取卡口电警参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_POSTEPOLICECFG 结构体：NET_DVR_POSTEPOLICECFG
智能交通摄像机 | 设置卡口电警参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_POSTEPOLICECFG 结构体：NET_DVR_POSTEPOLICECFG
智能交通摄像机 | 获取JPEG参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_JPEGCFG_V30 结构体：NET_DVR_JPEGCFG_V30
智能交通摄像机 | 设置JPEG参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_JPEGCFG_V30 结构体：NET_DVR_JPEGCFG_V30
智能交通摄像机 | 获取车牌识别参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SPRCFG 结构体：NET_DVR_SPRCFG
智能交通摄像机 | 设置车牌识别参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SPRCFG 结构体：NET_DVR_SPRCFG
智能交通摄像机 | 获取车牌亮度补偿参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PLCCFG 结构体：NET_DVR_PLCCFG
智能交通摄像机 | 设置车牌亮度补偿参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PLCCFG 结构体：NET_DVR_PLCCFG
智能交通摄像机 | 获取设备状态参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICESTATECFG 结构体：NET_DVR_DEVICESTATECFG
智能交通摄像机 | 设置设备状态参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICESTATECFG 结构体：NET_DVR_DEVICESTATECFG
智能交通摄像机 | 获取时间校时（扩展） | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALIBRATE_TIME 结构体：NET_DVR_CALIBRATE_TIME
智能交通摄像机 | 设置时间校时（扩展） | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALIBRATE_TIME 结构体：NET_DVR_CALIBRATE_TIME
智能交通摄像机 | 获取触发参数 | NET_DVR_GetDVRConfig | 命令：NET_ITC_GET_TRIGGERCFG 结构体：NET_ITC_TRIGGERCFG
智能交通摄像机 | 设置触发参数 | NET_DVR_SetDVRConfig | 命令：NET_ITC_SET_TRIGGERCFG 结构体：NET_ITC_TRIGGERCFG
智能交通摄像机 | 获取IO输出参数 | NET_DVR_GetDVRConfig | 命令：NET_ITC_GET_IOOUT_PARAM_CFG 结构体：NET_ITC_IOOUT_PARAM
智能交通摄像机 | 设置IO输出参数 | NET_DVR_SetDVRConfig | 命令：NET_ITC_SET_IOOUT_PARAM_CFG 结构体：NET_ITC_IOOUT_PARAM
智能交通摄像机 | 获取相机架设参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CAMERA_SETUPCFG 结构体：NET_DVR_CAMERA_SETUPCFG
智能交通摄像机 | 设置相机架设参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CAMERA_SETUPCFG 结构体：NET_DVR_CAMERA_SETUPCFG
智能交通摄像机 | 获取触发模式推荐参数 | NET_DVR_GetDVRConfig | 命令：NET_ITC_GET_TRIGGER_DEFAULTCFG 结构体：NET_ITC_SINGLE_TRIGGERCFG
智能交通摄像机 | 设置触发模式推荐参数 | NET_DVR_SetDVRConfig | 命令：NET_ITC_SET_TRIGGER_DEFAULTCFG 结构体：NET_ITC_SINGLE_TRIGGERCFG
智能交通摄像机 | 获取状态检测使能参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_STATUS_DETECTCFG 结构体：NET_DVR_STATUS_DETECTCFG
智能交通摄像机 | 设置状态检测使能参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_STATUS_DETECTCFG 结构体：NET_DVR_STATUS_DETECTCFG
智能交通摄像机 | 获取交通统计报警参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TPS_ALARMCFG 结构体：NET_DVR_TPS_ALARMCFG
智能交通摄像机 | 设置交通统计报警参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TPS_ALARMCFG 结构体：NET_DVR_TPS_ALARMCFG
智能交通摄像机 | 获取机柜参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CABINETCFG 结构体：NET_DVR_CABINET_CFG
智能交通摄像机 | 设置机柜参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CABINETCFG 结构体：NET_DVR_CABINET_CFG
智能交通摄像机 | 获取前端CCD参数(扩展) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CCDPARAMCFG_EX 结构体：NET_DVR_CAMERAPARAMCFG_EX
智能交通摄像机 | 设置前端CCD参数(扩展) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CCDPARAMCFG_EX 结构体：NET_DVR_CAMERAPARAMCFG_EX
智能交通摄像机 | 获取图片合成配置参数 | NET_DVR_GetDVRConfig | 命令：NET_ITS_GET_IMGMERGE_CFG 结构体：NET_ITS_IMGMERGE_CFG
智能交通摄像机 | 设置图片合成配置参数 | NET_DVR_SetDVRConfig | 命令：NET_ITS_SET_IMGMERGE_CFG 结构体：NET_ITS_IMGMERGE_CFG
智能交通摄像机 | 获取设备当前触发模式 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CURTRIGGERMODE 结构体：NET_DVR_CURTRIGGERMODE
批量参数配置 |  |  |
智能交通摄像机 | 获取多码流压缩参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG 结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG
智能交通摄像机 | 设置多码流压缩参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG 结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG
智能交通摄像机 | 获取ROI检测区域编号数目 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ROI_DETECT_NUM 结构体：NET_DVR_ROI_DETECT_NUM
智能交通摄像机 | 获取ROI检测区域配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ROI_DETECT 结构体：NET_DVR_ROI_DETECT_CFG
智能交通摄像机 | 设置ROI检测区域配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_ROI_DETECT 结构体：NET_DVR_ROI_DETECT_CFG
智能交通摄像机 | 获取视频触发参数 | NET_DVR_GetDeviceConfig | 命令：NET_ITC_GET_VIDEO_TRIGGERCFG 结构体：NET_ITC_VIDEO_TRIGGER_PARAM
智能交通摄像机 | 设置视频触发参数 | NET_DVR_SetDeviceConfig | 命令：NET_ITC_SET_VIDEO_TRIGGERCFG 结构体：NET_ITC_VIDEO_TRIGGER_PARAM
智能交通摄像机 | 获取RS485关联接入设备的信息 | NET_DVR_GetDeviceConfig | 命令：NET_ITC_GET_RS485_ACCESSINFO 结构体：NET_ITC_RS485_ACCESS_CFG
智能交通摄像机 | 设置RS485关联接入设备的信息 | NET_DVR_SetDeviceConfig | 命令：NET_ITC_SET_RS485_ACCESSINFO 结构体：NET_ITC_RS485_ACCESS_CFG
智能交通摄像机 | 获取FTP参数 | NET_DVR_GetDeviceConfig | 命令：NET_ITC_GET_FTPCFG 结构体：NET_ITC_FTP_CFG
智能交通摄像机 | 设置FTP参数 | NET_DVR_SetDeviceConfig | 命令：NET_ITC_SET_FTPCFG 结构体：NET_ITC_FTP_CFG
智能交通摄像机 | 获取云存储配置参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CLOUDSTORAGE_CFG 结构体：NET_DVR_CLOUDSTORAGE_CFG
智能交通摄像机 | 设置云存储配置参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CLOUDSTORAGE_CFG 结构体：NET_DVR_CLOUDSTORAGE_CFG
智能交通摄像机 | 获取字符叠加参数配置 | NET_DVR_GetDeviceConfig | 命令：NET_ITS_GET_OVERLAP_CFG_V50 结构体：NET_ITS_OVERLAP_CFG_V50
智能交通摄像机 | 设置字符叠加参数配置 | NET_DVR_SetDeviceConfig | 命令：NET_ITS_SET_OVERLAP_CFG_V50 结构体：NET_ITS_OVERLAP_CFG_V50
网络触发抓拍 |  |  |
智能交通摄像机 | 网络触发抓拍 | NET_DVR_ContinuousShoot |
雨刷控制 |  |  |
智能交通摄像机 | 雨刷控制 | NET_DVR_PTZControl_Other | 控制命令：WIPER_PWRON
图片查找下载 |  |  |
智能交通摄像机 | 根据类型和时间查找图片 | NET_DVR_FindPicture |
智能交通摄像机 | 逐个获取查找到的图片信息 | NET_DVR_FindNextPicture |
智能交通摄像机 | 关闭图片查找，释放资源 | NET_DVR_CloseFindPicture |
获取设备状态 |  |  |
智能交通摄像机 | 网络触发抓拍 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_SIGNALLAMP_STATUS 结构体：NET_DVR_EXDEVDET_CFG
文件上传 |  |  |
智能交通摄像机 | 上传违法字典文件 | NET_DVR_UploadFile_V40 | 上传类型：UPLOAD_VIOLATION_FILE
智能交通摄像机 | 获取文件上传的进度和状态 | NET_DVR_GetUploadState |
智能交通摄像机 | 停止文件上传 | NET_DVR_UploadClose |


TME出入口控制设备功能接口介绍

TME出入口控制设备除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、报警上传和远程参数配置等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 支持的能力类型： DEVICE_ABILITY_INFO(抓拍机和智能终端的能力：ITDeviceAbility)
获取设备能力集 | NET_DVR_GetSTDAbility | 支持的能力类型： NET_DVR_GET_PXOFFLINE_CAPABILITIES(票箱脱机参数配置能力集) NET_DVR_GET_PAPERCHARGEINFO_CAPABILITIES(纸票信息下发能力集) NET_DVR_GET_PARKINGSAPCE_CAPABILITIES(停车位信息下发能力集) NET_DVR_GET_PXMULTICTRL_CAPABILITIES(票箱从属设备多角度参数配置能力集) NET_DVR_GET_CHARGEACCOUNT_CAPABILITIES(停车费用下发能力集) NET_DVR_GET_TME_CHARGERULE_CAPABILITIES(车卡收费信息配置能力集) NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES(票箱参数配置能力集) NET_DVR_GET_TME_CAPABILITIES(停车场出入口设备能力集) NET_DVR_GET_LEDDISPLAY_CAPABILITIES(LED屏幕显示参数配置能力集) NET_DVR_GET_VOICEBROADCAST_CAPABILITIES(语音播报控制参数配置能力集) NET_DVR_GET_PAPERPRINTFORMAT_CAPABILITIES(纸票打印格式配置能力集) NET_DVR_GET_LOCkGATE_CAPABILITIES(智能锁闸配置能力集) NET_DVR_GET_TMEVOICE_CAPABILITIES(语音参数配置能力集，V2.0.1新增)
报警布防、撤防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | COMM_ITS_PLATE_RESULT： NET_ITS_PLATE_RESULT COMM_ITS_GATE_FACE： NET_ITS_GATE_FACE COMM_ITS_GATE_ALARMINFO： NET_DVR_GATE_ALARMINFO COMM_GATE_CHARGEINFO_UPLOAD： NET_DVR_GATE_CHARGEINFO COMM_TME_VEHICLE_INDENTIFICATION： NET_DVR_TME_VEHICLE_RESULT COMM_GATE_CARDINFO_UPLOAD： NET_DVR_GATE_CARDINFO COMM_ALARM_V40(V2.0.1新增支持)： NET_DVR_ALARMINFO_V40
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
预览相关功能 |  |
强制I帧（关键帧） | NET_DVR_RemoteControl | 命令：NET_DVR_MAKE_I_FRAME
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
获取叠加字符参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDCFG 结构体：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDCFG 结构体：NET_DVR_HDCFG
获取码流压缩参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG 结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG
设置码流压缩参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG 结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG
智能交通参数配置 |  |
获取数据同步状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PARKING_DATASTATE 结构体：NET_DVR_PARKING_DATASTATE_INFO
设置数据同步状态 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PARKING_DATASTATE 结构体：NET_DVR_PARKING_DATASTATE_INFO
获取停车场票箱脱机参数配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_PXOFFLINE_CFG 结构体：NET_DVR_PXOFFLINE_CFG
设置停车场票箱脱机参数配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_PXOFFLINE_CFG 结构体：NET_DVR_PXOFFLINE_CFG
获取停车场票箱从属设备多角度参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_PXMULTICTRL_CFG 结构体：NET_DVR_PXMULTICTRL_CFG
设置停车场票箱从属设备多角度参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_PXMULTICTRL_CFG 结构体：NET_DVR_PXMULTICTRL_CFG
获取停车场出入口车卡收费规则参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_TME_CHARGERULE 结构体：ChargeRuleInfo
设置停车场出入口车卡收费规则参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_TME_CHARGERULE 结构体：ChargeRuleInfo
获取停车场票箱参数配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_ILLEGALCARDFILTERING_CFG 结构体：NET_DVR_ILLEGALCARDFILTERING_CFG
设置停车场票箱参数配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_ILLEGALCARDFILTERING_CFG 结构体：NET_DVR_ILLEGALCARDFILTERING_CFG
获取LED屏幕显示参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_LEDDISPLAY_CFG 结构体：NET_DVR_LEDDISPLAY_CFG
设置LED屏幕显示参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_LEDDISPLAY_CFG 结构体：NET_DVR_LEDDISPLAY_CFG
获取纸票打印格式参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_PAPERPRINTFORMAT_CFG 结构体：NET_DVR_PAPERPRINTFORMAT_CFG
设置纸票打印格式参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_PAPERPRINTFORMAT_CFG 结构体：NET_DVR_PAPERPRINTFORMAT_CFG
获取智能锁闸参数配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_LOCKGATE_CFG 结构体：NET_DVR_LOCKGATE_CFG
设置智能锁闸参数配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_LOCKGATE_CFG 结构体：NET_DVR_LOCKGATE_CFG
设置停车场出入口纸票信息下发 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_PAPERCHARGEINFO 结构体：NET_DVR_PAPERCHARGEINFO_CFG
设置停车场出入口停车位信息下发 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_PARKINGSAPCE_INFO 结构体：NET_DVR_PARKINGSAPCE_CFG
停车场出入口停车费用下发播报 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_CHARGE_ACCOUNTINFO 结构体：NET_DVR_CHARGEACCOUNT_CFG
设置语音播报控制参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_VOICEBROADCAST_CFG 结构体：NET_DVR_VOICEBROADCAST_CFG
获取语音参数配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_TMEVOICE_CFG 结构体：NET_DVR_TMEVOICE_CFG (V2.0.1新增)
设置语音参数配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_TMEVOICE_CFG 结构体：NET_DVR_TMEVOICE_CFG (V2.0.1新增)
远程控制道闸 |  |
远程控制道闸 | NET_DVR_RemoteControl | 命令：NET_DVR_BARRIERGATE_CTRL
设置车辆授权和非授权名单信息(批量) |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_VEHICLELIST_CTRL_START
发送长连接数据 | NET_DVR_SendRemoteConfig | 数据类型：ENUM_SENDDATA
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
停车卡下发 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_PARKING_CARD_SEND
发送长连接数据 | NET_DVR_SendRemoteConfig | 数据类型：ENUM_TME_CARD_SEND_DATA
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
停车卡清除 |  |
停车场停车卡远程控制 | NET_DVR_STDControl | 配置命令：NET_DVR_PARKING_CARD_CTRL
停车车辆信息下发 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_PARKING_VEHICLE_SEND
发送长连接数据 | NET_DVR_SendRemoteConfig | 数据类型：ENUM_TME_VEHICLE_SEND_DATA
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
获取所有车辆授权和非授权名单信息 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST
逐个获取查找到的信息 | NET_DVR_GetNextRemoteConfig |
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
手动触发抓拍 |  |
手动触发抓拍 | NET_DVR_ManualSnap |
网络触发抓拍 | NET_DVR_ContinuousShoot |
文件上传 |  |
上传出入口管理文件 | NET_DVR_UploadFile_V40 | 上传类型：UPLOAD_TME_FILE
获取文件上传的进度和状态 | NET_DVR_GetUploadState |
停止文件上传 | NET_DVR_UploadClose |
文件下载 |  |
下载出入口管理文件 | NET_DVR_StartDownload | 上传类型：NET_SDK_DOWNLOAD_TME_FILE
获取文件上传的进度和状态 | NET_DVR_GetDownloadState |
停止文件上传 | NET_DVR_StopDownload |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息 | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile_EX |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
远程重启 |  |
重启设备 | NET_DVR_RebootDVR |


智能交通枪球功能接口介绍

智能交通枪球包含但不仅限于以下产品型号：
iDS-2VS235-F831、iDS-2VS235-F837、iDS-2VS435-F837、iDS-2VS435-F832、iDS-2VS235-F848、iDS-2VS435-F8XYZH、
iDS-2VY235-F937、iDS-2VS235-F8XYZL、iDS-2VS235-F8XYZH、iDS-2VC235-FD、iDS-2VT221A-D837、iDS-2VT221P-D837、
iDS-2VC435-FE、iDS-2VT441A-D837、iDS-2VT441P-D837等。
除通用接口的功能外，还支持以下接口的功能，包括实时预览、报警事件上传、录像/图片查找回放下载等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 支持的能力类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_ENCODE_ALL_ABILITY_V20、 IPC_FRONT_PARAMETER_V20、 DEVICE_USER_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_JPEG_CAP_ABILITY
报警布防方式接收事件 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | COMM_ALARM_AID_V41： NET_DVR_AID_ALARM_V41 COMM_ALARM_TFS： NET_DVR_TFS_ALARM COMM_ALARM_TPS_V41： NET_DVR_TPS_ALARM_V41
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听方式接收事件 |  |
获取数据上传配置 | NET_DVR_GetDVRConfig | 命令：NET_ITS_GET_UPLOAD_CFG 结构体：NET_ITS_UPLOAD_CFG
设置数据上传配置 | NET_DVR_SetDVRConfig | 命令：NET_ITS_SET_UPLOAD_CFG 结构体：NET_ITS_UPLOAD_CFG
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | COMM_ALARM_AID_V41： NET_DVR_AID_ALARM_V41 COMM_ALARM_TFS： NET_DVR_TFS_ALARM COMM_ALARM_TPS_V41： NET_DVR_TPS_ALARM_V41
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
预览相关功能 |  |
强制I帧 | NET_DVR_RemoteControl | 命令：NET_DVR_MAKE_I_FRAME
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
设置抓图模式 | NET_DVR_SetCapturePictureMode |
预览时抓图并保存在指定内存中 | NET_DVR_CapturePictureBlock_New |
预览时抓图并保存成图片文件 | NET_DVR_CapturePictureBlock |
单帧数据捕获并保存成JPEG图(设备抓图) | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中(设备抓图) | NET_DVR_CaptureJPEGPicture_NEW |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
录像文件查找回放下载相关 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V40 |
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
根据事件查找录像文件 | NET_DVR_FindFileByEvent_V40 |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime_V40 |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack_V40 |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图 | NET_DVR_CapturePlaybackPictureBlock_New |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
回放画面叠加字符和图像 | NET_DVR_RigisterPlayBackDrawFun |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime_V40 |
控制录像下载的状态 | NET_DVR_PlayBackControl_V40 |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
图片查找回放下载相关 |  |
根据类型和时间查找图片 | NET_DVR_FindPicture |
逐个获取查找到的图片信息 | NET_DVR_FindNextPicture_V40 |
关闭图片查找，释放资源 | NET_DVR_CloseFindPicture |
获取图片数据并存放在指定的内存空间中 | NET_DVR_GetPicture_V30 |
图片下载 | NET_DVR_GetPicture |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息 | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile_EX |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
远程重启设备 | NET_DVR_RebootDVR |


智能设备通用功能接口介绍

智能设备包括但不仅限于支持以下功能的产品： 异常行为识别、ATM防护、自动跟踪、客流量统计、人脸抓拍、智能交通事件等。

除通用接口的功能外，智能设备还支持以下接口的功能，包括获取设备能力集、智能参数配置、重启智能库、标定校验、维护管理等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 能力类型：VCA_DEV_ABILITY、VCA_CHAN_ABILITY
参数配置 |  |
获取智能控制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
获取标定信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
设置标定信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
获取iVMS前端取流参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
设置iVMS前端取流参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
智能信息叠加配置 |  |
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
标定校验 |  |
标定校验 | NET_DVR_VerifyCalibration |
重启智能库 |  |
重启使能库 | NET_VCA_RestartLib |
获取智能库版本号 |  |
获取智能库版本号 | NET_DVR_GetVCAVersion |
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息 | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |


“脸谱”人脸分析服务器功能接口介绍

“脸谱”人脸分析服务器包括但不仅限于以下产品型号：
DS-IE6300-E/FA、DS-GPKIC0000-F(-2F、-1F)、DS-IC0000-F(-2F、-1F)。

人脸分析服务器通过SDK对接，除了通用接口里面的初始化、登录等接口，只支持网络参数配置以及报警监听方式获取人脸比对报警信息功能。

功能 | 接口 | 相关参数
网络参数配置 |  |
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50 (可以获取报警监听上传的报警主机IP和端口)
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50 (可以设置报警监听上传的报警主机IP和端口)
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持上传报警信息类型：COMM_FACESNAP_RAWDATA_ALARM、 对应报警信息结构体：NET_VCA_FACESNAP_RAWDATA_ALARM
停止监听 | NET_DVR_StopListen_V30 |


“刀锋”视频云结构化服务器功能接口介绍

“刀锋”视频云结构化服务器包括但不仅限于以下产品型号：
DS-GPKIB0000-V、DS-IB0000-V。

刀锋支持对图像中的车辆目标进行分析识别，除了通用接口里面的初始化、登录等接口，还支持网络参数配置、识别任务提交和查询，以及报警监听方式获取分析识别结果等功能。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型：DEVICE_SOFTHARDWARE_ABILITY
获取车辆二次识别检测能力集 | NET_DVR_GetDeviceAbility | 能力集类型：DEVICE_ABILITY_INFO 能力集：VehicleRecogAbility
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50 (可以获取报警监听上传的报警主机IP和端口)
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50 (可以设置报警监听上传的报警主机IP和端口)
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持上传报警信息类型：COMM_VEHICLE_RECOG_RESULT、 对应报警信息结构体：NET_DVR_VEHICLE_RECOG_RESULT
停止监听 | NET_DVR_StopListen_V30 |
识别任务提交 |  |
识别任务提交 | NET_DVR_SetDeviceConfigEx | 命令：NET_DVR_SET_VEHICLE_RECOG_TASK_V50
识别任务查询 |  |
建立长连接 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_GET_VEHICLE_RECOG_TASK
逐个获取查找到的信息 | NET_DVR_GetNextRemoteConfig |
关闭长连接，释放资源 | NET_DVR_StopRemoteConfig |


超脑ATM设备功能接口介绍

超脑ATM设备包括但不仅限于以下产品型号：
DS-8100AHQ(L)-E4、iDS-8100AHQXL-E4、DS-FT00CGA-QL

超脑ATM设备除通用接口的功能外，还支持以下接口的功能，包括预览、录像查找回放和下载、报警上传、语音对讲、远程参数配置等，i系列的产品还支持异常行为识别、人脸检测等智能功能。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_ENCODE_ALL_ABILITY_V20、 DEVICE_USER_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_SERIAL_ABILITY、 DEVICE_ABILITY_INFO
获取智能能力集 | NET_DVR_GetDeviceAbility | 能力类型：VCA_DEV_ABILITY（智能设备的能力）、VCA_CHAN_ABILITY（智能通道的能力）
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： COMM_ALARM_V40、 COMM_ALARM_V30、 COMM_ALARM_RULE、 COMM_ALARM_FACE
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_ALARM_V40、 COMM_ALARM_V30、 COMM_ALARM_RULE、 COMM_ALARM_FACE
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
预览相关功能 |  |
强制I帧 | NET_DVR_RemoteControl | 命令：NET_DVR_MAKE_I_FRAME
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
设置抓图模式 | NET_DVR_SetCapturePictureMode |
预览时抓图并保存在指定内存中 | NET_DVR_CapturePictureBlock_New |
预览时抓图并保存成图片文件 | NET_DVR_CapturePictureBlock |
单帧数据捕获并保存成JPEG图(设备抓图) | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中(设备抓图) | NET_DVR_CaptureJPEGPicture_NEW |
录像文件查找 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V40 | 支持带卡号的查询
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
事件录像查找 |  |
根据事件查找录像文件 | NET_DVR_FindFileByEvent_V40 | i系列设备支持EVENT_VCA_BEHAVIOR类型
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime_V40 |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack_V40 |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图 | NET_DVR_CapturePlaybackPictureBlock_New |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
回放画面叠加字符和图像 | NET_DVR_RigisterPlayBackDrawFun |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime_V40 |
控制录像下载的状态 | NET_DVR_PlayBackControl_V40 |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
设备手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DECODERCFG_V40 结构体：NET_DVR_DECODERCFG_V40
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DECODERCFG_V40 结构体：NET_DVR_DECODERCFG_V40
获取232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ZONEANDDST 结构体：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ZONEANDDST 结构体：NET_DVR_ZONEANDDST
获取图像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40
获取叠加字符参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EMAILCFG_V30 结构体：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EMAILCFG_V30 结构体：NET_DVR_EMAILCFG_V30
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NFSCFG 结构体：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NFSCFG 结构体：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDCFG_V40 结构体：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDCFG_V40 结构体：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDGROUP_CFG_V40 结构体：NET_DVR_HDGROUP_CFG_V40
设置盘组管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDGROUP_CFG_V40 结构体：NET_DVR_HDGROUP_CFG_V40
获取磁盘配额信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DISK_QUOTA_CFG 结构体：NET_DVR_DISK_QUOTA_CFG
设置磁盘配额信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DISK_QUOTA_CFG 结构体：NET_DVR_DISK_QUOTA_CFG
获取本地预览参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_PREVIEW_SWITCH_CFG 结构体：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_PREVIEW_SWITCH_CFG 结构体：NET_DVR_PREVIEWCFG_V30
获取报警输入参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMINCFG_V40 结构体：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMINCFG_V40 结构体：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMOUTCFG_V30 结构体：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMOUTCFG_V30 结构体：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
智能参数配置 |  |
获取标定信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
设置标定信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
获取智能控制参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VCA_CTRLINFO_CFG 结构体：NET_DVR_VCA_CTRLINFO_CFG
设置智能控制参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VCA_CTRLINFO_CFG 结构体：NET_DVR_VCA_CTRLINFO_CFG
获取异常行为识别参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_RULECFG_V42 结构体：NET_VCA_RULECFG_V42
设置异常行为识别参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_RULECFG_V42 结构体：NET_VCA_RULECFG_V42
获取ATM人脸检测规则参数 | NET_DVR_GetDVRConfig | 命令：NET_VCA_GET_FACEDETECT_RULECFG_V41 结构体：NET_DVR_FACEDETECT_RULECFG_V41
设置ATM人脸检测规则参数 | NET_DVR_SetDVRConfig | 命令：NET_VCA_SET_FACEDETECT_RULECFG_V41 结构体：NET_DVR_FACEDETECT_RULECFG_V41
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取内部关键字参数 | NET_DVR_GetBehaviorParamKey |
设置内部关键字参数 | NET_DVR_SetBehaviorParamKey |
标定校验 | NET_DVR_VerifyCalibration |
重启使能库 | NET_VCA_RestartLib |
获取智能库版本号 | NET_DVR_GetVCAVersion |
ATM参数配置 |  |
获取ATM协议列表 | NET_DVR_GetAtmProtocol |
设置ATM协议配置信息 | NET_DVR_GetAtmFrameFormat_V30 |
设置ATM协议配置信息 | NET_DVR_SetAtmFrameFormat_V30 |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘格式化 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_WORK_STATUS 结构体：NET_DVR_WORKSTATE_V40
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，网络参数和激活状态不会恢复出厂默认
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
重启设备 | NET_DVR_RebootDVR |


小超脑人体识别NVR功能接口介绍

小超脑人体识别NVR包括但不仅限于以下产品型号：
iDS-9632NX-I8/S

小超脑人体识别NVR除通用接口的功能外，还支持以下接口的功能，包括预览、录像查找回放和下载、语音对讲、报警上传、远程参数配置、Smart智能侦测、人体目标识别等功能。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_ENCODE_ALL_ABILITY_V20、 DEVICE_USER_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_SERIAL_ABILITY、 DEVICE_JPEG_CAP_ABILITY、 DEVICE_ABILITY_INFO(事件能力集EventAbility等)
获取Smart智能能力集 | NET_DVR_GetSTDAbility | 能力集类型： NET_DVR_GET_SMART_CAPABILITIES、 NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES、 NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES、 NET_DVR_GET_REGION_ENTRANCE_SCHEDULE_CAPABILITIES
获取人体目标设备布防时间能力集 | NET_DVR_GetSTDAbility | 能力集类型： NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE_CAPABILITIES
获取人体目标配置能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/Intelligent/channels//humanRecognition
人体目标识别配置 |  |
获取人体目标识别布防时间配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE 结构体：NET_DVR_EVENT_SCHEDULE
设置人体目标识别布防时间配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_HUMAN_RECOGNITION_SCHEDULE 结构体：NET_DVR_EVENT_SCHEDULE
获取人体目标识别联动配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_HUMAN_RECOGNITION_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
设置人体目标识别联动配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_HUMAN_RECOGNITION_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
人体目标识别参数配置 | NET_DVR_STDXMLConfig | 获取：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition 设置：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition
人体目标识别区域批量配置 | NET_DVR_STDXMLConfig | 获取：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions 设置：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions
人体目标识别区域单个配置 | NET_DVR_STDXMLConfig | 获取：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions/<ID> 设置：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions/<ID>
人体检索 |  |
上传图片到设备进行分析 | NET_DVR_STDXMLConfig | 命令：POST /ISAPI/Intelligent/analysisImage/human
人体属性数据检索 | NET_DVR_STDXMLConfig | 所有通道：POST /ISAPI/Intelligent/humanRecognition/Search/channels 指定通道：POST /ISAPI/Intelligent/humanRecognition/Search/channels/<ID>
Smart智能侦测参数配置 |  |
获取越界侦测配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_TRAVERSE_PLANE_DETECTION 结构体：NET_VCA_TRAVERSE_PLANE_DETECTION
设置越界侦测配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_TRAVERSE_PLANE_DETECTION 结构体：NET_VCA_TRAVERSE_PLANE_DETECTION
获取区域入侵侦测配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_FIELD_DETECTION 结构体：NET_VCA_FIELDDETECION
设置区域入侵侦测配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_FIELD_DETECTION 结构体：NET_VCA_FIELDDETECION
获取进入区域侦测配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_REGION_ENTR_DETECTION 结构体：NET_DVR_REGION_ENTRANCE_DETECTION
设置进入区域侦测配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_REGION_ENTR_DETECTION 结构体：NET_DVR_REGION_ENTRANCE_DETECTION
获取离开区域侦测配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_REGION_EXITING_DETECTION 结构体：NET_DVR_REGION_EXITING_DETECTION
设置离开区域侦测配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_REGION_EXITING_DETECTION 结构体：NET_DVR_REGION_EXITING_DETECTION
报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： COMM_VCA_ALARM(人体目标识别报警) COMM_ALARM_RULE(越界侦测、区域入侵、进入区域、离开区域) COMM_ALARM_V30/COMM_ALARM_V40(移动侦测、视频丢失、遮挡、IO信号量等)
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
预览相关功能 |  |
强制I帧 | NET_DVR_RemoteControl | 命令：NET_DVR_MAKE_I_FRAME
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
设置抓图模式 | NET_DVR_SetCapturePictureMode |
预览时抓图并保存在指定内存中 | NET_DVR_CapturePictureBlock_New |
预览时抓图并保存成图片文件 | NET_DVR_CapturePictureBlock |
单帧数据捕获并保存成JPEG图(设备抓图) | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中(设备抓图) | NET_DVR_CaptureJPEGPicture_NEW |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
录像文件查找回放下载相关 |  |
即时刷新录像索引 | NET_DVR_UpdateRecordIndex |
获取月历录像分布 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION 结构体：NET_DVR_MRD_SEARCH_RESULT
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V40 |
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
根据事件查找录像文件 | NET_DVR_FindFileByEvent_V40 |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
开始智能搜索 | NET_DVR_SmartSearch_V40 |
逐个获取查找到的文件信息 | NET_DVR_SearchNextInfo |
关闭文件查找，释放资源 | NET_DVR_StopSearch |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime_V40 |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack_V40 |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图 | NET_DVR_CapturePlaybackPictureBlock_New |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
回放画面叠加字符和图像 | NET_DVR_RigisterPlayBackDrawFun |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime_V40 |
控制录像下载的状态 | NET_DVR_PlayBackControl_V40 |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
图片查找回放下载相关 |  |
根据类型和时间查找图片 | NET_DVR_FindPicture |
逐个获取查找到的图片信息 | NET_DVR_FindNextPicture_V40 |
关闭图片查找，释放资源 | NET_DVR_CloseFindPicture |
开始智能图片搜索 | NET_DVR_SmartSearchPicture |
逐个获取搜索到的智能图片信息 | NET_DVR_FindNextSmartPicture |
停止智能图片查找，释放资源 | NET_DVR_CloseSmartSearchPicture |
获取图片数据并存放在指定的内存空间中 | NET_DVR_GetPicture_V30 |
图片下载 | NET_DVR_GetPicture |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DECODERCFG_V40 结构体：NET_DVR_DECODERCFG_V40
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DECODERCFG_V40 结构体：NET_DVR_DECODERCFG_V40
获取232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ZONEANDDST 结构体：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ZONEANDDST 结构体：NET_DVR_ZONEANDDST
获取图像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG 结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG
设置压缩参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG 结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG
获取录像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40
获取叠加字符参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EMAILCFG_V30 结构体：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EMAILCFG_V30 结构体：NET_DVR_EMAILCFG_V30
获取平台参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CMS_CFG 结构体：NET_DVR_CMS_PARAM
设置平台参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CMS_CFG 结构体：NET_DVR_CMS_PARAM
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NFSCFG 结构体：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NFSCFG 结构体：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDCFG_V40 结构体：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDCFG_V40 结构体：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDGROUP_CFG_V40 结构体：NET_DVR_HDGROUP_CFG_V40
设置盘组管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDGROUP_CFG_V40 结构体：NET_DVR_HDGROUP_CFG_V40
获取磁盘配额信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DISK_QUOTA_CFG 结构体：NET_DVR_DISK_QUOTA_CFG
设置磁盘配额信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DISK_QUOTA_CFG 结构体：NET_DVR_DISK_QUOTA_CFG
获取本地预览参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_PREVIEW_SWITCH_CFG 结构体：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_PREVIEW_SWITCH_CFG 结构体：NET_DVR_PREVIEWCFG_V30
获取报警输入参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMINCFG_V40 结构体：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMINCFG_V40 结构体：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMOUTCFG_V30 结构体：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMOUTCFG_V30 结构体：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘格式化 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_WORK_STATUS 结构体：NET_DVR_WORKSTATE_V40
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，网络参数和激活状态不会恢复出厂默认
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
重启设备 | NET_DVR_RebootDVR |


63智能监所服务器功能接口介绍

智能监所服务器包括但不仅限于以下产品型号：
DS-IE6316-E/J。
除通用接口的功能外，还支持以下接口的功能，包括能力集获取、报警上传、远程参数配置和智能参数配置等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY（设备软硬件能力） DEVICE_USER_ABILITY（设备用户管理参数能力） DEVICE_NETAPP_ABILITY（网络应用能力集） DEVICE_DYNCHAN_ABILITY（设备数字通道能力集） DEVICE_NETWORK_ABILITY（设备无线网络能力） IPC_FRONT_PARAMETER（设备前端参数） IPC_FRONT_PARAMETER_V20（设备前端参数2.0） DEVICE_ALARM_ABILITY（设备报警能力） DEVICE_JPEG_CAP_ABILITY（设备JPEG抓图能力） DEVICE_ABILITY_INFO（设备通用能力类型，具体能力根据发送的能力节点来区分）
获取设备智能能力集 | NET_DVR_GetDeviceAbility | 能力集类型： VCA_DEV_ABILITY(智能设备的能力) VCA_CHAN_ABILITY(智能通道的能力)
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警类型： COMM_ALARM_RULE: NET_VCA_RULE_ALARM COMM_VCA_ALARM: 区域人数统计报警Json数据
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | 支持的报警类型： COMM_ALARM_RULE: NET_VCA_RULE_ALARM COMM_VCA_ALARM: 区域人数统计报警Json数据
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_IPPARACFG_V40 结构体：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_IPPARACFG_V40 结构体：NET_DVR_IPPARACFG_V40
获取智能控制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
获取智能控制参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VCA_CTRLINFO_CFG 结构体：NET_DVR_VCA_CTRLINFO_CFG
设置智能控制参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VCA_CTRLINFO_CFG 结构体：NET_DVR_VCA_CTRLINFO_CFG
获取前端取流参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
设置前端取流参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
获取异常行为识别参数（扩展） | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_RULECFG_V42 结构体：NET_VCA_RULECFG_V42
设置异常行为识别参数（扩展） | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_RULECFG_V42 结构体：NET_VCA_RULECFG_V42
获取屏蔽区域参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_MASK_REGION 结构体：NET_VCA_MASK_REGION_LIST
设置屏蔽区域参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_MASK_REGION 结构体：NET_VCA_MASK_REGION_LIST
获取物体颜色属性 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_OBJECT_COLOR 结构体：NET_DVR_OBJECT_COLOR
设置物体颜色属性 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_OBJECT_COLOR 结构体：NET_DVR_OBJECT_COLOR
获取辅助区域参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUX_AREA 结构体：NET_DVR_AUXAREA_LIST
设置辅助区域参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUX_AREA 结构体：NET_DVR_AUXAREA_LIST
获取内部关键参数 | NET_DVR_GetBehaviorParamKey |
设置内部关键参数 | NET_DVR_SetBehaviorParamKey |
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取智能库版本号 | NET_DVR_GetVCAVersion |
获取智能规则关联的颜色参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_RULE_COLOR_CFG 结构体：NET_DVR_VCA_RULE_COLOR_CFG
设置智能规则关联的颜色参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_RULE_COLOR_CFG 结构体：NET_DVR_VCA_RULE_COLOR_CFG
建立长连接，查询智能规则关联的颜色参数 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_GET_VCA_RULE_COLOR_CFG
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
建立长连接，开始获取音量 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_START_GET_INPUTVOLUME
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
区域人数统计 |  |
获取区域人数统计布防时间能力集 | NET_DVR_GetSTDAbility | 命令：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE_CAPABILITIES
获取区域人数统计布防时间配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE
设置区域人数统计布防时间配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE
获取事件触发能力集 | NET_DVR_GetSTDAbility | 命令：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES
获取区域人数统计联动方式配 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_TRIGGER
设置区域人数统计联动方式配 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_FRAMES_PEOPLE_COUNTING_TRIGGER
获取区域人数统计配置能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/capabilities
批量获取区域人数统计配置 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions
批量设置区域人数统计配置 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions
获取区域人数统计区域配置(单个) | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions/<ID>
设置区域人数统计区域配置(单个) | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions/<ID>
查询当前的区域人数统计结果 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/result
NCG取流配置 |  |
获取NCG取流配置能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/ContentMgmt/InputProxy/NCG/<ID>/capabilities
批量获取NCG取流配置 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/ContentMgmt/InputProxy/NCG
批量设置NCG取流配置 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/ContentMgmt/InputProxy/NCG
获取单个NCG取流配置 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/ContentMgmt/InputProxy/NCG/<ID>
设置单个NCG取流配置 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/ContentMgmt/InputProxy/NCG/<ID>


62智能分析仪（行为）设备功能接口介绍

智能异常行为识别仪包括但不仅限于以下产品型号：
iVMS-6200-B、iVMS-6200-J（司法行业）
异常行为识别设备除通用接口的功能外，还支持以下接口的功能，包括能力集获取、报警上传、实时预览取流、远程参数配置和智能参数配置、VQD视频质量诊断功能等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 能力集类型： VCA_DEV_ABILITY(智能设备的能力) VCA_CHAN_ABILITY(智能通道的能力)
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | COMM_ALARM_RULE: NET_VCA_RULE_ALARM COMM_ALARM_VQD_EX(V2.3.0新增): NET_DVR_VQD_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | 支持的报警类型： COMM_ALARM_RULE 结构体：NET_VCA_RULE_ALARM
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
基本参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V30 结构体：NET_DVR_USER_V30
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V30 结构体：NET_DVR_USER_V30
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V30 命令：NET_DVR_GET_USERCFG_V30 结构体：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V30 结构体：NET_DVR_EXCEPTION_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
智能参数配置 |  |
获取智能控制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
获取标定信息参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
设置标定信息参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
获取iVMS取流参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
设置iVMS取流参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
获取试用版信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRIAL_VERSION_CFG 结构体：NET_DVR_TRIAL_VERSION_CFG (V2.2.0新增)
获取异常行为识别参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RULECFG 结构体：NET_VCA_RULECFG
设置异常行为识别参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RULECFG 结构体：NET_VCA_RULECFG
获取辅助区域参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUX_AREA 结构体：NET_DVR_AUXAREA_LIST (V2.3.0新增)
设置辅助区域参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUX_AREA 结构体：NET_DVR_AUXAREA_LIST (V2.3.0新增)
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取内部关键字参数 | NET_DVR_GetBehaviorParamKey |
设置内部关键字参数 | NET_DVR_SetBehaviorParamKey |
批量参数配置 |  |
获取智能控制参数（扩展） | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VCA_CTRLINFO_CFG 结构体：NET_DVR_VCA_CTRLINFO_CFG (V2.3.0新增)
设置智能控制参数（扩展） | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VCA_CTRLINFO_CFG 结构体：NET_DVR_VCA_CTRLINFO_CFG (V2.3.0新增)
获取物体颜色属性 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_OBJECT_COLOR 结构体：NET_DVR_OBJECT_COLOR (V2.3.0新增)
设置物体颜色属性 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_OBJECT_COLOR 结构体：NET_DVR_OBJECT_COLOR (V2.3.0新增)
获取通道工作模式 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CHAN_WORKMODE 结构体：NET_DVR_CHANNEL_WORKMODE (V2.3.0新增)
设置通道工作模式 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CHAN_WORKMODE 结构体：NET_DVR_CHANNEL_WORKMODE (V2.3.0新增)
获取从通道参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_OBJECT_COLOR 结构体：NET_DVR_SLAVE_CHANNEL_CFG (V2.3.0新增)
设置从通道参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_OBJECT_COLOR 结构体：NET_DVR_SLAVE_CHANNEL_CFG (V2.3.0新增)
获取异常行为识别参数（扩展） | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_RULECFG_V42 结构体：NET_VCA_RULECFG_V42 (V2.3.0新增)
设置异常行为识别参数（扩展） | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_RULECFG_V42 结构体：NET_VCA_RULECFG_V42 (V2.3.0新增)
VQD视频质量诊断功能 |  |
获取VQD事件规则 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VQD_EVENT_RULE 结构体：NET_DVR_VQD_EVENT_RULE (V2.3.0新增)
设置VQD事件规则 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VQD_EVENT_RULE 结构体：NET_DVR_VQD_EVENT_RULE (V2.3.0新增)
获取基准场景参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_BASELINE_SCENE 结构体：NET_DVR_BASELINE_SCENE (V2.3.0新增)
设置基准场景参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_BASELINE_SCENE 结构体：NET_DVR_BASELINE_SCENE (V2.3.0新增)
基准场景操作 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CONTROL_BASELINE_SCENE (V2.3.0新增)
下载图片 | NET_DVR_StartDownload | 下载基准场景图片：NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC 下载VQD报警图片：NET_SDK_DOWNLOAD_VQD_ALARM_PIC (V2.3.0新增)
获取图片下载的进度和状态 | NET_DVR_GetDownloadState |
停止图片下载 | NET_DVR_StopDownload |
标定校验 |  |
标定校验 | NET_DVR_VerifyCalibration |
重启智能库 |  |
重启使能库 | NET_VCA_RestartLib |
录像配置和录像回放 |  | (V2.2.0新增)
获取录像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40 仅录象延时时间(dwRecordTime)、预录时间(dwPreRecordTime)有效
设置录像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40 仅录象延时时间(dwRecordTime)、预录时间(dwPreRecordTime)有效
按时间回放事件录像 | NET_DVR_PlayBackByTime_V40 | 开始时间可以是事件发生时间-预录时间，结束时间可以是事件发生时间+录像延时时间
按时间下载事件录像 | NET_DVR_GetFileByTime_V40 | 开始时间可以是事件发生时间-预录时间，结束时间可以是事件发生时间+录像延时时间
回放\下载控制 | NET_DVR_PlayBackControl_V40 |
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |


62智能分析仪（客流量）设备功能接口介绍

智能客流量分析仪包括但不仅限于以下产品型号：
iVMS-6200-D

客流量设备除通用接口的功能外，还支持以下接口的功能，包括实时预览取流、报警上传、远程参数配置和视频质量诊断功能等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 能力集类型： VCA_DEV_ABILITY(智能设备的能力) VCA_CHAN_ABILITY(智能通道的能力)
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | COMM_ALARM_PDC： NET_DVR_PDC_ALRAM_INFO COMM_ALARM_VQD_EX(V2.3.0新增): NET_DVR_VQD_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | COMM_ALARM_PDC： NET_DVR_PDC_ALRAM_INFO COMM_ALARM_VQD_EX(V2.3.0新增): NET_DVR_VQD_ALARM
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V30 结构体：NET_DVR_USER_V30
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V30 结构体：NET_DVR_USER_V30
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V30 结构体：NET_DVR_EXCEPTION_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V30 结构体：NET_DVR_EXCEPTION_V30
获取智能控制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
获取标定信息参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
设置标定信息参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
获取iVMS取流参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
设置iVMS取流参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
获取试用版信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRIAL_VERSION_CFG 结构体：NET_DVR_TRIAL_VERSION_CFG (V2.2.0新增)
获取统计数据清零参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RESET_COUNTER 结构体：NET_DVR_RESET_COUNTER_CFG (V2.2.0新增)
设置统计数据清零参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RESET_COUNTER 结构体：NET_DVR_RESET_COUNTER_CFG (V2.2.0新增)
获取客流量规则配置参数（扩展） | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PDC_RULECFG_V41 结构体：NET_DVR_PDC_RULE_CFG_V41 (V2.2.0新增)
设置客流量规则配置参数（扩展） | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PDC_RULECFG_V41 结构体：NET_DVR_PDC_RULE_CFG_V41 (V2.2.0新增)
获取客流量规则配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PDC_RULECFG 结构体：NET_DVR_PDC_RULE_CFG
设置客流量规则配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PDC_RULECFG 结构体：NET_DVR_PDC_RULE_CFG
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取内部关键字参数 | NET_DVR_GetBehaviorParamKey |
设置内部关键字参数 | NET_DVR_SetBehaviorParamKey |
VQD视频质量诊断功能 |  |
获取VQD事件规则 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VQD_EVENT_RULE 结构体：NET_DVR_VQD_EVENT_RULE (V2.3.0新增)
设置VQD事件规则 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VQD_EVENT_RULE 结构体：NET_DVR_VQD_EVENT_RULE (V2.3.0新增)
获取基准场景参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_BASELINE_SCENE 结构体：NET_DVR_BASELINE_SCENE (V2.3.0新增)
设置基准场景参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_BASELINE_SCENE 结构体：NET_DVR_BASELINE_SCENE (V2.3.0新增)
基准场景操作 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CONTROL_BASELINE_SCENE (V2.3.0新增)
下载图片 | NET_DVR_StartDownload | 下载基准场景图片：NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC 下载VQD报警图片：NET_SDK_DOWNLOAD_VQD_ALARM_PIC (V2.3.0新增)
获取图片下载的进度和状态 | NET_DVR_GetDownloadState |
停止图片下载 | NET_DVR_StopDownload |
人数统计重置 |  |
客流量统计重置 | NET_DVR_ResetCounter |
标定校验 |  |
标定校验 | NET_DVR_VerifyCalibration |
重启智能库 |  |
重启使能库 | NET_VCA_RestartLib |
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |


智能交通分析仪功能接口介绍

智能交通分析仪包括但不仅限于以下产品型号：
iVMS-6200-T(交通事件分析仪)、iVMS-6200-TPS(交通数据采集分析仪)、iVMS-6200-TFS(道路交通事件自动取证分析仪)

除智能设备通用接口的功能外，交通分析仪还支持以下接口的功能，包括能力集获取、智能交通报警上传、规则参数配置、场景配置、VQD功能。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 能力集类型： VCA_DEV_ABILITY(智能设备的能力) VCA_CHAN_ABILITY(智能通道的能力)
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | COMM_ALARM_AID： NET_DVR_AID_ALARM COMM_ALARM_TPS： NET_DVR_TPS_ALARM COMM_ALARM_TFS(V2.2.0新增)： NET_DVR_TFS_ALARM COMM_ALARM_TPS_V41(V2.2.0新增)： NET_DVR_TPS_ALARM_V41 COMM_ALARM_AID_V41(V2.2.0新增)： NET_DVR_AID_ALARM_V41 COMM_ALARM_VQD_EX(V2.3.0新增): NET_DVR_VQD_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | COMM_ALARM_TFS(V2.2.0新增)： NET_DVR_TFS_ALARM COMM_ALARM_TPS_V41(V2.2.0新增)： NET_DVR_TPS_ALARM_V41 COMM_ALARM_AID_V41(V2.2.0新增)： NET_DVR_AID_ALARM_V41 COMM_ALARM_VQD_EX(V2.3.0新增): NET_DVR_VQD_ALARM
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
基本参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取RS485串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DECODERCFG_V30 结构体：NET_DVR_DECODERCFG_V30
设置RS485串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DECODERCFG_V30 结构体：NET_DVR_DECODERCFG_V30
获取RS232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置RS232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V30 命令：NET_DVR_GET_USERCFG_V30 结构体：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V30 结构体：NET_DVR_EXCEPTION_V30
获取图象参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V30 结构体：NET_DVR_PICCFG_V30
设置图象参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V30 结构体：NET_DVR_PICCFG_V30
获取压缩参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
获取叠加字符参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络应用参数(NTP) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
智能参数配置 |  |
获取智能控制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCA_CTRLCFG 结构体：NET_VCA_CTRLCFG
获取标定信息参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
设置标定信息参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALIBRATION 结构体：NET_DVR_CALIBRATION_CFG
获取iVMS取流参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
设置iVMS取流参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PU_STREAMCFG 结构体：NET_DVR_PU_STREAM_CFG
获取试用版信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRIAL_VERSION_CFG 结构体：NET_DVR_TRIAL_VERSION_CFG (V2.2.0新增)
获取统计数据清零参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RESET_COUNTER 结构体：NET_DVR_RESET_COUNTER_CFG (V2.2.0新增)
设置统计数据清零参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RESET_COUNTER 结构体：NET_DVR_RESET_COUNTER_CFG (V2.2.0新增)
获取参考区域 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_REFERENCE_REGION 结构体：NET_DVR_REGION_LIST
设置参考区域 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_REFERENCE_REGION 结构体：NET_DVR_REGION_LIST
获取交通事件屏蔽区域 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRAFFIC_MASK_REGION 结构体：NET_DVR_REGION_LIST
设置交通事件屏蔽区域 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TRAFFIC_MASK_REGION 结构体：NET_DVR_REGION_LIST
获取交通事件规则参数(扩展) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AID_RULECFG_V41 结构体：NET_DVR_AID_RULECFG_V41 (V2.2.0新增)
设置交通事件规则参数(扩展) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AID_RULECFG_V41 结构体：NET_DVR_AID_RULECFG_V41 (V2.2.0新增)
获取交通统计规则参数(扩展) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TPS_RULECFG_V41 结构体：NET_DVR_TPS_RULECFG_V41 (V2.2.0新增)
设置交通统计规则参数(扩展) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TPS_RULECFG_V41 结构体：NET_DVR_TPS_RULECFG_V41 (V2.2.0新增)
获取车道规则 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LANECFG 结构体：NET_DVR_LANE_CFG
设置车道规则 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LANECFG 结构体：NET_DVR_LANE_CFG
批量参数配置 |  |
获取智能控制参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VCA_CTRLINFO_CFG (V2.2.0新增)
设置智能控制参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VCA_CTRLINFO_CFG (V2.2.0新增)
获取场景信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_CFG (V2.2.0新增)
设置场景信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_CFG (V2.2.0新增)
多场景模式下获取参考区域 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_REFERENCE_REGION (V2.2.0新增)
多场景模式下设置参考区域 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_REFERENCE_REGION (V2.2.0新增)
多场景条件下获取标定信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_CALIBRATION (V2.2.0新增)
多场景条件下设置标定信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_CALIBRATION (V2.2.0新增)
多场景条件下获取屏蔽区域 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_MASK_REGION (V2.2.0新增)
多场景条件下设置屏蔽区域 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_MASK_REGION (V2.2.0新增)
多场景条件下获取车道规则 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_LANECFG (V2.2.0新增)
多场景条件下设置车道规则 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_LANECFG (V2.2.0新增)
多场景条件下获取交通事件规则参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_AID_RULECFG (V2.2.0新增)
多场景条件下设置交通事件规则参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_AID_RULECFG (V2.2.0新增)
多场景条件下获取交通统计规则参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_TPS_RULECFG (V2.2.0新增)
多场景条件下设置交通统计规则参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_TPS_RULECFG (V2.2.0新增)
获取通道的场景时间段配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCENE_TIME_CFG (V2.2.0新增)
设置通道的场景时间段配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCENE_TIME_CFG (V2.2.0新增)
获取取证方式 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_SET_FORENSICS_MODE (V2.2.0新增)
设置取证方式 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_GET_FORENSICS_MODE (V2.2.0新增)
远程控制 |  | (V2.2.0新增)
手动跟踪定位 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CONTROL_PTZ_MANUALTRACE
按通道同步分析仪的通道名为前端设备通道名 | NET_DVR_RemoteControl | 控制命令：NET_DVR_SYN_CHANNEL_NAME
应用场景模式 |  |
获取场景模式 | NET_DVR_GetSceneMode |
设置场景模式 | NET_DVR_SetSceneMode |
VQD视频质量诊断功能 |  |
获取VQD事件规则 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VQD_EVENT_RULE 结构体：NET_DVR_VQD_EVENT_RULE (V2.3.0新增)
设置VQD事件规则 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VQD_EVENT_RULE 结构体：NET_DVR_VQD_EVENT_RULE (V2.3.0新增)
获取基准场景参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_BASELINE_SCENE 结构体：NET_DVR_BASELINE_SCENE (V2.3.0新增)
设置基准场景参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_BASELINE_SCENE 结构体：NET_DVR_BASELINE_SCENE (V2.3.0新增)
基准场景操作 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CONTROL_BASELINE_SCENE (V2.3.0新增)
下载图片 | NET_DVR_StartDownload | 下载基准场景图片：NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC 下载VQD报警图片：NET_SDK_DOWNLOAD_VQD_ALARM_PIC (V2.3.0新增)
获取图片下载的进度和状态 | NET_DVR_GetDownloadState |
停止图片下载 | NET_DVR_StopDownload |
标定校验 |  |
标定校验 | NET_DVR_VerifyCalibration |
重启智能库 |  |
重启使能库 | NET_VCA_RestartLib |
录像配置和录像回放 |  | (V2.2.0新增)
获取录像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40 仅录象延时时间(dwRecordTime)、预录时间(dwPreRecordTime)有效
设置录像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40 仅录象延时时间(dwRecordTime)、预录时间(dwPreRecordTime)有效
按时间回放事件录像 | NET_DVR_PlayBackByTime_V40 | 开始时间可以是事件发生时间-预录时间，结束时间可以是事件发生时间+录像延时时间
按时间下载事件录像 | NET_DVR_GetFileByTime_V40 | 开始时间可以是事件发生时间-预录时间，结束时间可以是事件发生时间+录像延时时间
回放\下载控制 | NET_DVR_PlayBackControl_V40 |
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |


62智能分析仪（VQD）设备功能接口介绍

62智能分析仪（VQD）设备除通用接口的功能外，还支持以下接口的功能，包括报警监听、智能参数配置等。

功能 | 接口 | 相关参数
报警监听 |  |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | 支持的报警信息类型有：COMM_DIAGNOSIS_UPLOAD
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
基本参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
VQD参数配置 |  |
获取流的来源信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_STREAM_SRC_INFO
设置流的来源信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_STREAM_SRC_INFO
获取服务器的监控点信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_MONITOR_VQDCFG
设置服务器的监控点信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_MONITOR_VQDCFG
获取资源图片 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_RECORD_INFO
设置计划内的监控点信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_MONITOR_INFO
删除计划 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_DEL_MONITOR_PLAN_VQD
设置管理计划(单独的计划) | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_MONITOR_PLAN_VQDCFG
长连接远程参数配置 |  |
启动远程配置 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_GET_STREAM_INFO、 NET_DVR_GET_MONITOR_PLAN_VQD、 NET_DVR_GET_MONITORID_VQD
逐个获取查找到的文件目录信息 | NET_DVR_GetNextRemoteConfig | 命令：NET_DVR_GET_STREAM_INFO、 NET_DVR_GET_MONITOR_PLAN_VQD、 NET_DVR_GET_MONITORID_VQD
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
设备维护管理 |  |
获取诊断服务器的状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_MONITOR_VQD_STATUS 结构体：NET_DVR_QUERY_STATUS
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |


虚拟卡口系统功能接口介绍

虚拟卡口系统（车辆信息分析仪）包括但不仅限于以下产品型号：
iVMS-8641E

除智能设备通用接口的功能外，虚拟卡口系统还支持以下接口的功能，包括能力集获取、智能交通报警上传、参数配置等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 能力集类型： VCA_DEV_ABILITY(智能设备的能力) VICE_ABILITY_INFO(设备通用能力，XML能力集)
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | COMM_ITS_PLATE_RESULT： NET_ITS_PLATE_RESULT
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | COMM_ITS_PLATE_RESULT： NET_ITS_PLATE_RESULT
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
基本参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取RS485串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DECODERCFG_V30 结构体：NET_DVR_DECODERCFG_V30
设置RS485串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DECODERCFG_V30 结构体：NET_DVR_DECODERCFG_V30
获取RS232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置RS232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V30 命令：NET_DVR_GET_USERCFG_V30 结构体：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V30 结构体：NET_DVR_EXCEPTION_V30
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络应用参数(NTP) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取图象参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V30 结构体：NET_DVR_PICCFG_V30
设置图象参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V30 结构体：NET_DVR_PICCFG_V30
获取压缩参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
智能参数配置 |  |
获取智能控制参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_VCA_CTRLINFO_CFG
设置智能控制参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_VCA_CTRLINFO_CFG
获取触发模式配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_TRIGGEREX_CFG NET_DVR_TRIGGER_COND中dwTriggerMode取ITC_VIA_VIRTUALCOIL_TYPE
设置触发模式配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_TRIGGEREX_CFG NET_DVR_TRIGGER_COND中dwTriggerMode取ITC_VIA_VIRTUALCOIL_TYPE


智能90XX/91XX系列网络硬盘录像机功能接口介绍

智能90XX/91XX系列网络硬盘录像机除分别兼容90XX/91XX V1.2的所有功能外，还支持智能参数配置功能等。

功能 | 接口 | 相关参数
智能功能 |  |
获取智能控制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_VCA_CTRLCFG
获取异常行为识别参数 | NET_DVR_GetDVRConfig | 配置参数：NET_VCA_RULECFG_V42
设置异常行为识别参数 | NET_DVR_SetDVRConfig | 配置参数：NET_VCA_RULECFG_V41
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：VCA_DEV_ABILITY（智能设备的能力）、VCA_CHAN_ABILITY（智能通道的能力）
重启使能库 | NET_VCA_RestartLib |


智能异常行为识别设备功能接口介绍

智能异常行为识别设备除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、手动录像、报警上传、语音对讲、远程参数配置和行为智能参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | NET_DVR_PLAYSETTIME控制不支持 NET_DVR_PLAYGETTOTALLEN控制不支持
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取叠加字符参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
获取智能控制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_VCA_CTRLCFG
获取标定信息参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_CALIBRATION_CFG
设置标定信息参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_CALIBRATION_CFG
获取异常行为识别参数 | NET_DVR_GetDVRConfig | 配置参数：NET_VCA_RULECFG
设置异常行为识别参数 | NET_DVR_SetDVRConfig | 配置参数：NET_VCA_RULECFG
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取内部关键字参数 | NET_DVR_GetBehaviorParamKey |
设置内部关键字参数 | NET_DVR_SetBehaviorParamKey |
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：VCA_DEV_ABILITY（智能设备的能力）、VCA_CHAN_ABILITY（智能通道的能力）
标定校验 |  |
标定校验 | NET_DVR_VerifyCalibration |
重启智能库 |  |
重启使能库 | NET_VCA_RestartLib |


智能ATM设备功能接口介绍

智能ATM设备除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、手动录像、报警上传、语音对讲、远程参数配置和智能参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | NET_DVR_PLAYSETTIME控制不支持 NET_DVR_PLAYGETTOTALLEN控制不支持
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V30
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V30
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V40
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V40
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V30
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取叠加字符参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取智能控制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_VCA_CTRLCFG
设置智能控制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_VCA_CTRLCFG
获取标定信息参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_CALIBRATION_CFG
设置标定信息参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_CALIBRATION_CFG
获取异常行为识别参数 | NET_DVR_GetDVRConfig | 配置参数：NET_VCA_RULECFG
设置异常行为识别参数 | NET_DVR_SetDVRConfig | 配置参数：NET_VCA_RULECFG
获取智能信息叠加配置 | NET_DVR_GetVCADrawMode |
设置智能信息叠加配置 | NET_DVR_SetVCADrawMode |
获取内部关键字参数 | NET_DVR_GetBehaviorParamKey |
设置内部关键字参数 | NET_DVR_SetBehaviorParamKey |
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：VCA_DEV_ABILITY（智能设备的能力）、VCA_CHAN_ABILITY（智能通道的能力）
标定校验 |  |
标定校验 | NET_DVR_VerifyCalibration |
重启智能库 |  |
重启使能库 | NET_VCA_RestartLib |


多路解码器系列设备功能接口介绍

多路解码器系列设备除通用接口的功能外，还支持以下接口的功能，包括、语音对讲、远程参数配置和解码相关配置等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型： MATRIXDECODER_ABILITY、 MATRIXDECODER_ABILITY_V41、 WALL_ABILITY、 DECODER_ABILITY
基本参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取RS485串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置RS485串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取RS232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置RS232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
解码器参数配置 |  |
获取DNS网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_OTHER
设置DNS网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_OTHER
获取大屏拼接参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_BIGSCREENCFG (64-T高清解码器新增)
设置大屏拼接参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_BIGSCREENCFG (64-T高清解码器新增)
获取自动重启参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUTO_REBOOT_CFG (65D万能解码器新增)
设置自动重启参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUTO_REBOOT_CFG (65D万能解码器新增)
获取设备工作模式 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEV_WORK_MODE (65D-T万能解码器新增)
设置设备工作模式 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEV_WORK_MODE (65D-T万能解码器新增)
获取电视墙中屏幕参数 | NET_DVR_GetDeviceConfig | 配置参数：NET_DVR_SINGLEWALLPARAM (64HD-S新增)
设置电视墙中屏幕参数 | NET_DVR_SetDeviceConfig | 配置参数：NET_DVR_SINGLEWALLPARAM (64HD-S新增)
获取电视墙窗口参数 | NET_DVR_GetDeviceConfig | 配置参数：NET_DVR_WALLWINCFG (64HD-S新增)
设置电视墙窗口参数 | NET_DVR_SetDeviceConfig | 配置参数：NET_DVR_WALLWINCFG (64HD-S新增)
获取电视墙场景参数 | NET_DVR_GetDeviceConfig | 配置参数：NET_DVR_WALLSCENECFG (64HD-S新增)
设置电视墙场景参数 | NET_DVR_SetDeviceConfig | 配置参数：NET_DVR_WALLSCENECFG (64HD-S新增)
显示通道配置和控制 |  |
获取显示通道配置 | NET_DVR_MatrixGetDisplayCfg_V41 |
设置显示通道配置 | NET_DVR_MatrixSetDisplayCfg_V41 |
显示通道控制 | NET_DVR_MatrixDiaplayControl |
解码通道相关 |  |
获取解码通道配置 | NET_DVR_MatrixGetDecChanCfg |
设置解码通道配置 | NET_DVR_MatrixSetDecChanCfg |
获取当前解码通道信息 | NET_DVR_MatrixGetDecChanInfo_V41 |
获取当前解码通道状态 | NET_DVR_MatrixGetDecChanStatus |
获取当前解码通道开关 | NET_DVR_MatrixGetDecChanEnable |
设置当前解码通道开关 | NET_DVR_MatrixSetDecChanEnable |
上传LOGO | NET_DVR_UploadLogo |
LOGO显示控制 | NET_DVR_LogoSwitch |
获取解码通道OSD信息 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODE_CHANNEL_OSD (64HD-T V3.6.0高清解码器新增)
设置解码通道OSD信息 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODE_CHANNEL_OSD (64HD-T V3.6.0高清解码器新增)
主动解码 |  |
启动动态解码 | NET_DVR_MatrixStartDynamic_V41 |
停止动态解码 | NET_DVR_MatrixStopDynamic |
获取轮巡解码通道参数 | NET_DVR_MatrixGetLoopDecChanInfo_V41 |
设置轮巡解码通道参数 | NET_DVR_MatrixSetLoopDecChanInfo_V41 |
获取单个解码通道轮巡开关 | NET_DVR_MatrixGetLoopDecChanEnable |
设置单个解码通道轮巡开关 | NET_DVR_MatrixSetLoopDecChanEnable |
获取所有解码通道轮巡开关 | NET_DVR_MatrixGetLoopDecEnable |
设置解码设备远程回放文件配置 | NET_DVR_MatrixSetRemotePlay |
远程回放文件控制 | NET_DVR_MatrixSetRemotePlayControl |
获取回放状态 | NET_DVR_MatrixGetRemotePlayStatus |
被动解码 |  |
启动被动解码 | NET_DVR_MatrixStartPassiveDecode |
向被动解码通道发送数据 | NET_DVR_MatrixSendData |
停止被动解码 | NET_DVR_MatrixStopPassiveDecode |
获取被动解码状态 | NET_DVR_MatrixGetPassiveDecodeStatus |
被动解码播放控制 | NET_DVR_MatrixPassiveDecodeControl |
透明通道配置 |  |
获取透明通道信息 | NET_DVR_MatrixGetTranInfo_V30 |
设置透明通道信息 | NET_DVR_MatrixSetTranInfo_V30 |
场景 |  |
场景切换控制 | NET_DVR_MatrixSceneControl | 64HD-S V1.0新增
获取当前正在使用的场景模式 | NET_DVR_MatrixGetCurrentSceneMode | 64HD-S V1.0新增
远程控制 |  |
电视墙关闭所有窗口(HD-S V1.5新增) | NET_DVR_RemoteControl | 命令：NET_DVR_CLOSE_ALL_WND
窗口置顶(HD-S V1.5新增) | NET_DVR_RemoteControl | 命令：NET_DVR_SWITCH_WIN_TOP
窗口置底(HD-S V1.5新增) | NET_DVR_RemoteControl | 命令：NET_DVR_SWITCH_WIN_BOTTOM
解码播放远程文件(HD-T V2.3.0新增) | NET_DVR_RemoteControl | 命令：NET_DVR_DEC_PLAY_REMOTE_FILE
获取设备状态 |  |
获取设备状态 | NET_DVR_MatrixGetDeviceStatus_V41 |
获取设备窗口状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_DEVICE_RUN_STATUS
获取解码通道解码状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_DEC_CHAN_STATUS
获取显示通道状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_DISP_CHAN_STATUS
获取报警输入状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_ALARMIN_STATUS
获取报警输出状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_ALARMOUT_STATUS
获取语音对讲状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_AUDIO_CHAN_STATUS
云台控制 |  |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |


审讯机功能接口介绍

审讯机除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、报警上传、语音对讲、远程参数配置和审讯机专用功能等。

功能 | 接口 | 相关参数
设备能力集
获取设备通用能力集 NET_DVR_GetDeviceAbility 能力集类型：
软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)、
所有编码能力集(DEVICE_ENCODE_ALL_ABILITY_V20)、
前端参数能力集(IPC_FRONT_PARAMETER_V20)、
用户管理参数能力集(DEVICE_USER_ABILITY)、
网络应用参数能力集(DEVICE_NETAPP_ABILITY)、
图像参数能力集(DEVICE_VIDEOPIC_ABILITY)、
串口能力集(DEVICE_SERIAL_ABILITY)、
设备RAID能力集(DEVICE_RAID_ABILITY，V1.1.1新增支持)、
本地预览切换能力(PreviewSwitchAbility，能力集类型：DEVICE_ABILITY_INFO，V1.1.1新增支持)、
报警事件处理能力(EventAbility，能力集类型：DEVICE_ABILITY_INFO，V1.1.1新增支持)
获取审讯机设备能力集 NET_DVR_GetDeviceAbility 能力集类型：DEVICE_ABILITY_INFO
能力集：审讯机能力集(InquestAbility)
获取审讯机设备能力集 NET_DVR_GetDeviceAbility 能力集类型：DEVICE_ABILITY_INFO
能力集：审讯机能力集(InquestAbility)
获取ISAPI协议审讯机能力集 NET_DVR_STDXMLConfig 能力集：GET /ISAPI/Trial/capabilities
(V1.1.1新增)
布防、撤防和监听
注册回调函数，接收设备报警消息等 NET_DVR_SetDVRMessageCallBack_V30 支持的报警信息类型有：
COMM_SIGN_ABNORMAL_ALARM（体征异常报警），
对应结构：EVENT_JSON
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30
停止监听（支持多线程） | NET_DVR_StopListen_V30
预览相关功能
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub
实时预览 | NET_DVR_RealPlay_V40
停止预览 | NET_DVR_StopRealPlay
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun
设置声音播放模式 | NET_DVR_SetAudioMode
独占声卡模式下开启声音 | NET_DVR_OpenSound
独占声卡模式下关闭声音 | NET_DVR_CloseSound
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare
调节播放音量 | NET_DVR_Volume
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData
停止数据捕获 | NET_DVR_StopSaveRealData
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW
云台控制
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset
云台预置点操作 | NET_DVR_PTZPreset_Other
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise
云台巡航操作 | NET_DVR_PTZCruise_Other
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack
云台花样扫描操作 | NET_DVR_PTZTrack_Other
透明云台操作，需先启动预览 | NET_DVR_TransPTZ
透明云台操作 | NET_DVR_TransPTZ_Other
录像文件操作的相关功能
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V40 | NET_DVR_FILECOND_V40（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40
关闭文件查找，释放资源 | NET_DVR_FindClose_V30
按事件查找录像文件的相关功能
根据事件查找录像文件 | NET_DVR_FindFileByEvent
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent
关闭文件查找，释放资源 | NET_DVR_FindClose_V30
回放录像文件及相关
按文件名回放录像文件 | NET_DVR_PlayBackByName
按时间回放录像文件 | NET_DVR_PlayBackByTime_V40
控制录像回放的状态 | NET_DVR_PlayBackControl_V40
停止回放录像文件 | NET_DVR_StopPlayBack
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData
停止保存录象数据 | NET_DVR_StopPlayBackSave
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack_V40
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile
刷新显示回放窗口 | NET_DVR_RefreshPlay
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex
录像文件下载及相关
按文件名下载录像文件 | NET_DVR_GetFileByName
按时间下载录像文件 | NET_DVR_GetFileByTime_V40
控制录像下载的状态 | NET_DVR_PlayBackControl_V40
停止下载录像文件 | NET_DVR_StopGetFile
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos
录像文件锁定与解锁
按文件名锁定录像文件 | NET_DVR_LockFileByName
按文件名解锁录像文件 | NET_DVR_UnlockFileByName
录像文件备份
获取设备磁盘列表 | NET_DVR_GetDiskList
按文件名备份录像文件 | NET_DVR_BackupByName
按时间段备份录像文件 | NET_DVR_BackupByTime
获取文件备份的进度 | NET_DVR_GetBackupProgress
停止文件备份 | NET_DVR_StopBackup
手动录像
远程手动启动设备录像 | NET_DVR_StartDVRRecord
远程手动停止设备录像 | NET_DVR_StopDVRRecord
语音对讲、转发及广播
启动语音对讲 | NET_DVR_StartVoiceCom_V30
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30
转发语音数据 | NET_DVR_VoiceComSendData
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop
获取语音对讲音频参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_COMPRESSCFG_AUD
结构体：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_COMPRESSCFG_AUD
结构体：NET_DVR_COMPRESSION_AUDIO
透明通道
建立透明通道 | NET_DVR_SerialStart
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend
断开透明通道 | NET_DVR_SerialStop
向串口发送数据
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port
布防、撤防和监听
注册回调函数，接收设备报警消息等 NET_DVR_SetDVRMessageCallBack_V30 支持的报警信息类型有：
COMM_ALARM_V30、
COMM_ALARM_V40(V1.1.1新增支持)、
COMM_INQUEST_ALARM(V1.1.1新增)
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30
启动监听，接收设备主动上传的报警等信息（支持多线程） NET_DVR_StartListen_V30 支持的报警信息类型有：
COMM_ALARM_V30(V1.1.1及之后版本不支持)、
COMM_ALARM_V40(V1.1.1新增支持)、
COMM_INQUEST_ALARM(V1.1.1新增)
停止监听（支持多线程） | NET_DVR_StopListen_V30
通用参数配置
获取设备参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DEVICECFG_V40
结构体：NET_DVR_DEVICECFG_V40
设置设备参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DEVICECFG_V40
结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_TIMECFG
结构体：NET_DVR_TIME
设置设备时间参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_TIMECFG
结构体：NET_DVR_TIME
获取（云台）解码器参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DECODERCFG_V40
结构体：NET_DVR_DECODERCFG_V40
设置（云台）解码器参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DECODERCFG_V40
结构体：NET_DVR_DECODERCFG_V40
获取232串口参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RS232CFG_V30
结构体：NET_DVR_RS232CFG_V30
设置232串口参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RS232CFG_V30
结构体：NET_DVR_RS232CFG_V30
获取报警输入参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMINCFG_V40
结构体：NET_DVR_ALARMINCFG_V40
设置报警输入参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMINCFG_V40
结构体：NET_DVR_ALARMINCFG_V40
获取报警输出参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMOUTCFG_V30
结构体：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMOUTCFG_V30
结构体：NET_DVR_ALARMOUTCFG_V30
获取用户参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_USERCFG_V40
结构体：NET_DVR_USER_V40
设置用户参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_USERCFG_V40
结构体：NET_DVR_USER_V40
获取异常参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_EXCEPTIONCFG_V40
结构体：NET_DVR_EXCEPTION_V40
设置异常参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_EXCEPTIONCFG_V40
结构体：NET_DVR_EXCEPTION_V40
获取图像参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PICCFG_V40
结构体：NET_DVR_PICCFG_V40
设置图像参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PICCFG_V40
结构体：NET_DVR_PICCFG_V40
获取压缩参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_COMPRESSCFG_V30
结构体：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_COMPRESSCFG_V30
结构体：NET_DVR_COMPRESSIONCFG_V30
获取录像计划参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDCFG_V40
结构体：NET_DVR_RECORD_V40
设置录像计划参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORDCFG_V40
结构体：NET_DVR_RECORD_V40
获取叠加字符参数(支持4行) NET_DVR_GetDVRConfig 命令：NET_DVR_GET_SHOWSTRING_V30
结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数(支持4行) NET_DVR_SetDVRConfig 命令：NET_DVR_SET_SHOWSTRING_V30
结构体：NET_DVR_SHOWSTRING_V30
获取网络应用(NTP/DDNS)参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_NETAPPCFG
结构体：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_NETAPPCFG
结构体：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_NTPCFG
结构体：NET_DVR_NTPPARA
设置网络应用(NTP)参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_NTPCFG
结构体：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DDNSCFG_V30
结构体：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DDNSCFG_V30
结构体：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_EMAILCFG_V30
结构体：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_EMAILCFG_V30
结构体：NET_DVR_EMAILCFG_V30
获取设备本地预览切换参数 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_PREVIEW_SWITCH_CFG
结构体：NET_DVR_PREVIEW_SWITCH_CFG
(高清审讯机V1.1.0新增支持)
设置设备本地预览切换参数 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_PREVIEW_SWITCH_CFG
结构体：NET_DVR_PREVIEW_SWITCH_CFG
(高清审讯机V1.1.0新增支持)
获取设备本地主CVBS输出预览参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PREVIEWCFG_V30
结构体：NET_DVR_PREVIEWCFG_V30
设置设备本地主CVBS输出预览参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PREVIEWCFG_V30
结构体：NET_DVR_PREVIEWCFG_V30
获取设备本地HDMI或辅CVBS输出预览参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PREVIEWCFG_AUX_V30
结构体：NET_DVR_PREVIEWCFG_V30
设置设备本地HDMI或辅CVBS输出预览参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PREVIEWCFG_AUX_V30
结构体：NET_DVR_PREVIEWCFG_V30
获取设备本地VGA预览配置参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_VGA_PREVIEWCFG
结构体：NET_DVR_PREVIEWCFG_V30
设置设备本地VGA预览配置参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_VGA_PREVIEWCFG
结构体：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_VIDEOOUTCFG_V30
结构体：NET_DVR_VIDEOOUT_V30
设置视频输出参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_VIDEOOUTCFG_V30
结构体：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_AUXOUTCFG
结构体：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_AUXOUTCFG
结构体：NET_DVR_AUXOUTCFG
获取NFS（网络文件系统）参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_NFSCFG
结构体：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_NFSCFG
结构体：NET_DVR_NFSCFG
获取硬盘管理参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_HDCFG
结构体：NET_DVR_HDCFG
设置硬盘管理参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_HDCFG
结构体：NET_DVR_HDCFG
获取设备报警输出 | NET_DVR_GetAlarmOut
获取设备报警输出 | NET_DVR_GetAlarmOut_V30
设置设备报警输出 | NET_DVR_SetAlarmOut
获取视频输出缩放信息 | NET_DVR_GetScaleCFG
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30
设置视频输出缩放参数 | NET_DVR_SetScaleCFG
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30
审讯参数配置
获取音频输入混音配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_INQUEST_MIX_AUDIOIN_CFG
结构体：NET_DVR_INQUEST_MIX_AUDIOIN_CFG
(高清审讯机V1.1.0新增)
设置音频输入混音配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_INQUEST_MIX_AUDIOIN_CFG
结构体：NET_DVR_INQUEST_MIX_AUDIOIN_CFG
(高清审讯机V1.1.0新增)
获取审讯机用户权限配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_INQUEST_USER_RIGHT
结构体：NET_DVR_INQUEST_USER_RIGHT_CFG
(高清审讯机V1.1.0新增)
设置审讯机用户权限配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_INQUEST_USER_RIGHT
结构体：NET_DVR_INQUEST_USER_RIGHT_CFG
(高清审讯机V1.1.0新增)
获取审讯案件信息配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_INQUEST_CASE_INFO
结构体：NET_DVR_INQUEST_CASE_INFO
(高清审讯机V1.1.0新增)
设置审讯案件信息配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_INQUEST_CASE_INFO
结构体：NET_DVR_INQUEST_CASE_INFO
(高清审讯机V1.1.0新增)
光驱配置 NET_DVR_STDXMLConfig 能力集：GET /ISAPI/ContentMgmt/ Trial/TrayConfiguration/capabilities；
获取：GET /ISAPI/ContentMgmt/Trial/TrayConfiguration/<ID>；
设置：PUT /ISAPI/ContentMgmt/Trial/TrayConfiguration/<ID>。
(V1.1.1新增)
获取设备版本信息
获取设备版本信息 | NET_DVR_InquestGetDeviceVersion
系统信息配置
获取系统信息 | NET_DVR_InquestGetSystemInfo
设置系统信息 | NET_DVR_InquestSetSystemInfo
画中画功能
获取画中画状态 | NET_DVR_InquestGetPIPStatus_V40
设置画中画状态 | NET_DVR_InquestSetPIPStatus_V40
码流加密
获取设备码流加密状态 | NET_DVR_InquestCheckSecretKey
设置设备码流加密密钥 | NET_DVR_InquestSetSecretKey
获取设备码流加密状态 | NET_DVR_InquestGetEncryptState
设置设备码流加密密钥 | NET_DVR_InquestStreamEncrypt
审讯文件相关
搜索审讯文件 | NET_DVR_InquestFindFile_V30
逐个获取查找到的审讯文件信息 | NET_DVR_InquestFindNextFile
停止搜索审讯文件，释放资源 | NET_DVR_InquestFindClose
删除审讯文件 | NET_DVR_InquestDeleteFile_V30
按文件名刻录文件 | NET_DVR_InquestCDWByFile
按时间段备份录像文件 | NET_DVR_BackupByTime
获取文件备份的进度 | NET_DVR_GetBackupProgress
停止文件备份 | NET_DVR_StopBackup
向设备上传审讯文件 | NET_DVR_InquestUploadFile_V30
获取文件上传的进度值和状态值 | NET_DVR_InquestGetUploadState
停止上传审讯文件 | NET_DVR_InquestUploadClose
刻录控制和状态获取
审讯中开始刻录 | NET_DVR_InquestStartCDW_V30
审讯中停止刻录 | NET_DVR_InquestStopCDW_V30
审讯中暂停刻录 NET_DVR_RemoteControl 控制命令：NET_DVR_INQUEST_PAUSE_CDW
(V1.1.1新增支持)
审讯中恢复刻录(暂停后恢复) NET_DVR_RemoteControl 控制命令：NET_DVR_INQUEST_RESUME_CDW
(V1.1.1新增支持)
获取刻录状态 | NET_DVR_InquestGetCDWState_V30
建立获取刻录状态长连接 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_INQUEST_GET_CDW_STATUS
获取审讯机刻录状态 NET_DVR_GetNextRemoteConfig 命令：NET_DVR_INQUEST_GET_CDW_STATUS
结构体：NET_DVR_INQUEST_CDRW_STATUS
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
案件信息显示控制
案件信息显示控制 NET_DVR_RemoteControl 命令：NET_DVR_CASE_INFO_CTRL
(高清审讯机V1.1.0新增)
发送重点标记信息
发送重点标记信息 | NET_DVR_InquestSendMessage
恢复审讯事件
恢复审讯事件 NET_DVR_InquestResumeEvent 命令：NET_DVR_INQUEST_GET_CDW_STATUS
结构体：NET_DVR_INQUEST_CDRW_STATUS
体征仪检测配置
体征仪检测配置 NET_DVR_STDXMLConfig 控制命令：NET_DVR_INQUEST_PAUSE_CDW
(V1.1.1新增支持) 体征仪能力集：GET /ISAPI/System/signInstrument/capabilities?format=json；
获取体征仪网络配置参数：GET /ISAPI/System/signInstrument/<ID>/network?format=json(<id>:为体征仪id)；
设置体征仪网络配置参数：PUT /ISAPI/System/signInstrument/<ID>/network?format=json(<id>:为体征仪id)；
体征仪网络配置能力集：GET /ISAPI/System/signInstrument/network/capabilities?format=json；
获取体征仪检测参数配置：GET /ISAPI/System/signInstrument/<ID>/detectParam?format=json(<id>:为体征仪id)；
设置体征仪检测参数配置：PUT /ISAPI/System/signInstrument/<ID>/detectParam?format=json(<id>:为体征仪id)；
体征仪检测参数能力集：GET /ISAPI/System/signInstrument/detectParam/capabilities?format=json；
获取体征仪波形叠加配置：GET /ISAPI/System/signInstrument/<ID>/waveform?format=json(<id>:为体征仪id)；
设置体征仪波形叠加配置：PUT /ISAPI/System/signInstrument/<ID>/waveform?format=json(<id>:为体征仪id)；
体征仪波形叠加配置能力集：GET /ISAPI/System/signInstrument/waveform/capabilities?format=json；
获取恢复过程状态和进度 | NET_DVR_InquestGetResumeProgress
停止恢复审讯事件 | NET_DVR_InquestStopResume
设备维护管理
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment
远程升级 | NET_DVR_Upgrade
获取远程升级的进度 | NET_DVR_GetUpgradeProgress
获取远程升级的状态 | NET_DVR_GetUpgradeState
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30
释放查找日志的资源 | NET_DVR_FindLogClose_V30
恢复设备默认参数 | NET_DVR_RestoreConfig
导出配置文件 | NET_DVR_GetConfigFile_V30
导出配置文件 | NET_DVR_GetConfigFile
导入配置文件 | NET_DVR_SetConfigFile_EX
导入配置文件 | NET_DVR_SetConfigFile
关机和重启
重启设备 | NET_DVR_RebootDVR
关闭设备 | NET_DVR_ShutDownDVR
视音频编码配置参数
视音频编码配置参数 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/VCS/terminals/conferenceStreaming/capabilities
获取：GET /ISAPI/VCS/terminals/conferenceStreaming
配置：PUT /ISAPI/VCS/terminals/conferenceStreaming
动态能力集
动态能力集 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/VCS/conferences/<id>/conferenceStreaming/streamDynamicCap
终端会议码流通道信息
终端会议码流通道信息 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/VCS/terminals/conferenceStreaming/channels?format=json
GENETEC使能开关
GENETEC使能开关 NET_DVR_STDXMLConfig 命令：
获取：GET /ISAPI/System/Network/Integrate/genetec
配置：PUT /ISAPI/System/Network/Integrate/genetec
ONVIF协议用户配置
ONVIF协议用户配置 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/Security/ONVIF/users/capabilities
批量获取：GET /ISAPI/Security/ONVIF/users
批量设置：PUT /ISAPI/Security/ONVIF/users
添加单个用户：POST /ISAPI/Security/ONVIF/users
获取单个用户：GET /ISAPI/Security/ONVIF/users/<id>
设置单个用户: PUT /ISAPI/Security/ONVIF/users/<id>
删除所有用户: DELETE /ISAPI/Security/ONVIF/users
删除单个用户: DELETE /ISAPI/Security/ONVIF/users/<id>
GB28181服务
GB28181服务 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/System/Network/GB28181Service/capabilities
获取：GET /ISAPI/System/Network/GB28181Service
设置：PUT /ISAPI/System/Network/GB28181Service
参数配置重启
参数配置重启 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/System/reboot/capabilities
所有PTZ通道配置
所有PTZ通道配置 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/PTZCtrl/channels
音量输入通道
音量输入通道 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/System/Audio/AudioIn/capabilities
获取：GET /ISAPI/System/Audio/AudioIn
设置：PUT /ISAPI/System/Audio/AudioIn
配置视频输入通道
配置视频输入通道 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/System/Video/inputs/channels/<id>/capabilities
编码管理能力
编码管理能力 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/Streaming/channels/<id>/capabilities
刻录加密
刻录加密 NET_DVR_STDXMLConfig 命令：
获取：GET /ISAPI/Streaming/channels/<id>/CDBurningEncryption?format=json
设置：PUT /ISAPI/Streaming/channels/<id>/CDBurningEncryption?format=json
设备发现协议能力集
设备发现协议能力集 NET_DVR_STDXMLConfig 命令：
能力集：GET /ISAPI/System/discoveryMode/capabilities


庭审主机功能接口介绍

庭审主机除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、报警上传、语音对讲、远程参数配置和庭审主机专用功能等。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： 软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)、 所有编码能力集(DEVICE_ENCODE_ALL_ABILITY_V20)、 前端参数能力集(IPC_FRONT_PARAMETER_V20)、 用户管理参数能力集(DEVICE_USER_ABILITY)、 网络应用参数能力集(DEVICE_NETAPP_ABILITY)、 图像参数能力集(DEVICE_VIDEOPIC_ABILITY)、 串口能力集(DEVICE_SERIAL_ABILITY)、 本地预览切换能力集(PreviewSwitchAbility，能力集类型：DEVICE_ABILITY_INFO)、 设备通道输入能力集(ChannelInputAbility，能力集类型：DEVICE_ABILITY_INFO)
获取庭审主机设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型：DEVICE_ABILITY_INFO 能力集：审讯能力集(InquestAbility) 能力集：庭审主机能力集(TrialHostAbility)
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作 | NET_DVR_TransPTZ_Other |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V40 | NET_DVR_FILECOND_V40（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按事件查找录像文件的相关功能 |  |
根据事件查找录像文件 | NET_DVR_FindFileByEvent |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime_V40 |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack_V40 |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime_V40 |
控制录像下载的状态 | NET_DVR_PlayBackControl_V40 |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
录像文件备份 |  |
获取设备磁盘列表 | NET_DVR_GetDiskList |
按文件名备份录像文件 | NET_DVR_BackupByName |
按时间段备份录像文件 | NET_DVR_BackupByTime |
获取文件备份的进度 | NET_DVR_GetBackupProgress |
停止文件备份 | NET_DVR_StopBackup |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart_V40 |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DECODERCFG_V40 结构体：NET_DVR_DECODERCFG_V40
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DECODERCFG_V40 结构体：NET_DVR_DECODERCFG_V40
获取232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取报警输入参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMINCFG_V40 结构体：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMINCFG_V40 结构体：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMOUTCFG_V30 结构体：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMOUTCFG_V30 结构体：NET_DVR_ALARMOUTCFG_V30
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
获取图像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSIONCFG_V30
获取录像计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40
设置录像计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RECORDCFG_V40 结构体：NET_DVR_RECORD_V40
获取叠加字符参数(支持4行) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数(支持4行) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SHOWSTRING_V30 结构体：NET_DVR_SHOWSTRING_V30
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取IP监控设备无线参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WIFI_CFG 结构体：NET_DVR_WIFI_CFG (简易庭审主机V3.1.0新增支持)
设置IP监控设备无线参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WIFI_CFG 结构体：NET_DVR_WIFI_CFG (简易庭审主机V3.1.0新增支持)
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_IPPARACFG_V40 结构体：NET_DVR_IPPARACFG_V40 (简易庭审主机V3.1.0新增支持)
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_IPPARACFG_V40 结构体：NET_DVR_IPPARACFG_V40 (简易庭审主机V3.1.0新增支持)
获取视频输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEOOUTCFG_V30 结构体：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEOOUTCFG_V30 结构体：NET_DVR_VIDEOOUT_V30
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDCFG 结构体：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDCFG 结构体：NET_DVR_HDCFG
获取通道对应的前端相机信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACCESS_CAMERA_INFO 结构体：NET_DVR_ACCESS_CAMERA_INFO (V3.0.1新增支持)
设置通道对应的前端相机信息 | NET_DVR_SetAccessCameraInfo | (V3.0.1新增支持)
获取设备报警输出 | NET_DVR_GetAlarmOut |
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
获取设备本地预览切换参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_PREVIEW_SWITCH_CFG 结构体：NET_DVR_PREVIEW_SWITCH_CFG
设置设备本地预览切换参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_PREVIEW_SWITCH_CFG 结构体：NET_DVR_PREVIEW_SWITCH_CFG
庭审相关参数配置 |  |
获取语音激励配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIO_ACTIVATION_CFG 结构体：NET_DVR_AUDIO_ACTIVATION_CFG
设置语音激励配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIO_ACTIVATION_CFG 结构体：NET_DVR_AUDIO_ACTIVATION_CFG
获取红外命令名称参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_INFRARED_CMD_NAME_CFG 结构体：NET_DVR_INFRARED_CMD_NAME_CFG
设置红外命令名称参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_INFRARED_CMD_NAME_CFG 结构体：NET_DVR_INFRARED_CMD_NAME_CFG
获取庭审主机系统信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRIAL_SYSTEM_CFG 结构体：NET_DVR_TRIAL_SYSTEM_INFO
获取麦克风状态信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRIAL_MICROPHONE_STATUS 结构体：NET_DVR_TRIAL_MICROPHONE_STATUS
设置麦克风状态信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TRIAL_MICROPHONE_STATUS 结构体：NET_DVR_TRIAL_MICROPHONE_STATUS
获取庭审主机状态信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TRIAL_HOST_STATUS 结构体：NET_DVR_TRIAL_HOST_STATUS
获取LAMP输出口信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LAMP_OUT 结构体：NET_DVR_LAMP_OUT
设置LAMP输出口信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LAMP_OUT 结构体：NET_DVR_LAMP_OUT
远程控制设备本地回放 | NET_DVR_SetDVRConfig | 命令：NET_DVR_REMOTE_CONTROL_PLAY 结构体：NET_DVR_REMOTE_PLAY
获取庭审主机本地输入信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LOCAL_INPUT_CFG 结构体：NET_DVR_LOCAL_INPUT_INFO
设置庭审主机本地输入信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LOCAL_INPUT_CFG 结构体：NET_DVR_LOCAL_INPUT_INFO
获取当前案件信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CASE_INFO 结构体：NET_DVR_CASE_INFO
案件信息录入 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CASE_INFO 结构体：NET_DVR_CASE_INFO
获取混音输入口参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MIX_AUDIOIN_CFG 结构体：NET_DVR_MIX_AUDIOIN_CFG (V3.0.1新增支持)
设置混音输入口参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MIX_AUDIOIN_CFG 结构体：NET_DVR_MIX_AUDIOIN_CFG (V3.0.1新增支持)
获取混音输出口参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MIX_AUDIOOUT_CFG 结构体：NET_DVR_MIX_AUDIOOUT_CFG (V3.0.1新增支持)
设置混音输出口参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MIX_AUDIOOUT_CFG 结构体：NET_DVR_MIX_AUDIOOUT_CFG (V3.0.1新增支持)
获取音频输入口音量调节参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIOIN_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (V3.0.1新增支持)
设置音频输入口音量调节参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIOIN_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (V3.0.1新增支持)
获取音频输出口音量调节参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIOOUT_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (V3.0.1新增支持)
设置音频输出口音量调节参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIOOUT_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (V3.0.1新增支持)
获取马赛克区域配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AREA_MASK_CFG 结构体：NET_DVR_AREA_MASK_CFG (V3.0.1新增)
设置马赛克区域配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AREA_MASK_CFG 结构体：NET_DVR_AREA_MASK_CFG (V3.0.1新增)
获取音频变音配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIO_DIACRITICAL_CFG 结构体：NET_DVR_AUDIO_DIACRITICAL_CFG (V3.0.1新增)
设置音频变音配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIO_DIACRITICAL_CFG 结构体：NET_DVR_AUDIO_DIACRITICAL_CFG (V3.0.1新增)
获取WIFI DHCP地址范围参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WIFI_DHCP_ADDR_CFG 结构体：NET_DVR_WIFI_DHCP_ADDR_CFG (V3.0.1新增)
设置WIFI DHCP地址范围参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WIFI_DHCP_ADDR_CFG 结构体：NET_DVR_WIFI_DHCP_ADDR_CFG (V3.0.1新增)
获取多码流关联通道参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MULTISTREAM_RELATION_CHAN_CFG 结构体：NET_DVR_MULTISTREAM_RELATION_CHAN_CFG (V3.0.1新增)
设置多码流关联通道参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MULTISTREAM_RELATION_CHAN_CFG 结构体：NET_DVR_MULTISTREAM_RELATION_CHAN_CFG (V3.0.1新增)
获取设备本地视频输出口分辨率 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG 结构体：NET_DVR_VIDEOOUT_RESOLUTION_CFG (V3.0.1新增支持)
设置设备本地视频输出口分辨率 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG 结构体：NET_DVR_VIDEOOUT_RESOLUTION_CFG (V3.0.1新增支持)
获取输入通道配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_INPUT_CHAN_CFG 结构体：NET_DVR_PICCFG_V30 (V3.0.1新增)
设置输入通道配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_INPUT_CHAN_CFG 结构体：NET_DVR_PICCFG_V30 (V3.0.1新增)
分组混音音频配置 | NET_DVR_STDXMLConfig | 获取音频配置能力集(扩展)： GET /ISAPI/System/Audio/capabilities 获取分组混音音频配置能力集： GET /ISAPI/System/Audio/Mixing/capabilities 获取单路分组混音音频配置： GET /ISAPI/System/Audio/Mixing/<ID> 设置单路分组混音音频配置： PUT /ISAPI/System/Audio/Mixing/<ID> 批量获取分组混音音频配置： GET /ISAPI/System/Audio/Mixing 批量设置分组混音音频配置： PUT /ISAPI/System/Audio/Mixing (V3.4.0新增)
串口参数XML透传配置 | NET_DVR_STDXMLConfig | 获取设备串口能力集： GET /ISAPI/System/Serial/capabilities 获取单个串口参数能力集： GET /ISAPI/System/Serial/ports/<ID> 设置单个串口参数： PUT /ISAPI/System/Serial/ports/<ID> 批量获取串口参数： GET /ISAPI/System/Serial/ports (V3.4.0新增支持)
图片1V1比对JSON透传配置 | NET_DVR_STDXMLConfig | 获取图片与监控点图片1v1比对能力集： GET /ISAPI/Intelligent/channels/<ID>/PictureCaptureComparision/face/capabilities?format=json 图片与监控点图片1v1比对： POST /ISAPI/Intelligent/channels/<ID>/pictureCaptureComparision/face/result?format=json (V3.4.30新增支持)
远程红外学码 |  |
建立远程红外学码长连接 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_START_INFRARED_LEARN
发送红外学码 | NET_DVR_SendRemoteConfig | 命令：ENUM_SEND_LEARN_IR_CMD
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
WIFI热点连接设备信息查询 |  |
建立查询长连接 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_GET_WIFI_CLIENT_LIST_INFO (V3.0.1新增)
WIFI热点连接设备信息查询 | NET_DVR_GetNextRemoteConfig | 命令：NET_DVR_GET_WIFI_CLIENT_LIST_INFO (V3.0.1新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
系统信息配置 |  |
获取系统信息 | NET_DVR_InquestGetSystemInfo |
设置系统信息 | NET_DVR_InquestSetSystemInfo |
画中画功能 |  |
获取画中画状态 | NET_DVR_InquestGetPIPStatus_V40 |
设置画中画状态 | NET_DVR_InquestSetPIPStatus_V40 |
码流加密 |  |
获取设备码流加密状态 | NET_DVR_InquestCheckSecretKey |
设置设备码流加密密钥 | NET_DVR_InquestSetSecretKey |
获取设备码流加密状态 | NET_DVR_InquestGetEncryptState |
设置设备码流加密密钥 | NET_DVR_InquestStreamEncrypt |
庭审文件相关 |  |
搜索庭审文件 | NET_DVR_InquestFindFile_V30 |
逐个获取查找到的庭审文件信息 | NET_DVR_InquestFindNextFile |
停止搜索庭审文件，释放资源 | NET_DVR_InquestFindClose |
删除庭审文件 | NET_DVR_InquestDeleteFile_V30 |
按文件名刻录文件 | NET_DVR_InquestCDWByFile |
按时间段备份录像文件 | NET_DVR_BackupByTime |
获取文件备份的进度 | NET_DVR_GetBackupProgress |
停止文件备份 | NET_DVR_StopBackup |
向设备上传庭审文件 | NET_DVR_InquestUploadFile_V30 |
获取文件上传的进度值和状态值 | NET_DVR_InquestGetUploadState |
停止上传庭审文件 | NET_DVR_InquestUploadClose |
刻录控制和状态获取 |  |
庭审中开始刻录 | NET_DVR_InquestStartCDW_V30 |
庭审中停止刻录 | NET_DVR_InquestStopCDW_V30 |
庭审中暂停刻录 | NET_DVR_RemoteControl | 控制命令：NET_DVR_INQUEST_PAUSE_CDW (V3.0.1新增)
庭审中恢复刻录(暂停后恢复) | NET_DVR_RemoteControl | 控制命令：NET_DVR_INQUEST_RESUME_CDW (V3.0.1新增)
获取刻录状态 | NET_DVR_InquestGetCDWState_V30 |
建立获取刻录状态长连接 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_INQUEST_GET_CDW_STATUS
获取庭审机刻录状态 | NET_DVR_GetNextRemoteConfig | 命令：NET_DVR_INQUEST_GET_CDW_STATUS 结构体：NET_DVR_INQUEST_CDRW_STATUS
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
发送重点标记信息 |  |
发送重点标记信息 | NET_DVR_InquestSendMessage |
恢复庭审事件 |  |
恢复庭审事件 | NET_DVR_InquestResumeEvent |
获取恢复过程状态和进度 | NET_DVR_InquestGetResumeProgress |
停止恢复庭审事件 | NET_DVR_InquestStopResume |
远程控制 |  |
红外输出控制 | NET_DVR_RemoteControl | 命令：NET_DVR_INFRARED_OUTPUT_CONTROL
LAMP控制 | NET_DVR_RemoteControl | 命令：NET_DVR_LAMP_REMOTE_CONTROL
视频会议终端功能 |  |
获取视频会议终端相关能力集 | NET_DVR_GetSTDAbility | 能力集类型： NET_DVR_GET_TERMINAL_INPUT_CFG_CAP(终端输入参数能力集) NET_DVR_GET_TERMINAL_CALL_CFG_CAP(终端呼叫配置能力集) NET_DVR_GET_TERMINAL_CTRL_CAP(终端呼叫控制能力集) (V3.4.0新增支持)
获取终端视频会议输入参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_TERMINAL_INPUT_CFG 结构体：NET_DVR_TERMINAL_INPUT_CFG (V3.4.0新增支持)
设置终端视频会议输入参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_TERMINAL_INPUT_CFG 结构体：NET_DVR_TERMINAL_INPUT_CFG (V3.4.0新增支持)
获取终端呼叫参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_TERMINAL_CALL_CFG 结构体：NET_DVR_TERMINAL_CALL_CFG (V3.4.0新增支持)
设置终端呼叫参数 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_TERMINAL_CALL_CFG 结构体：NET_DVR_TERMINAL_CALL_CFG (V3.4.0新增支持)
终端呼叫控制 | NET_DVR_STDControl | 控制命令： NET_DVR_TERMINAL_CTRL (V3.4.0新增支持)
获取终端会议状态 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_TERMINAL_CONFERENCE_STATUS 结构体：NET_DVR_TERMINAL_CONFERENCE_STATUS (V3.4.0新增支持)
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |


便携主机功能接口介绍

便携主机包括但不仅限于以下产品型号： DS-NB04LHFH-E1/X、DS-NB04LN-E1/4P/X、DS-NB04SHFH-E1/X、DS-NB04SN-E1/4P/X(标配)、DS-NB04THFH-E1/X(标配)、DS-NB04TN-E1/4P/X(标配)。

便携主机区分审讯型号和庭审型号，分别支持审讯主机相关功能和庭审主机相关功能，除审讯和庭审主机支持的功能外，还支持以下接口的功能，包括音频参数配置和控制、示证接入控制、本地预览配置等。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备系统总能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/System/capabilities
获取司法设备能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/JusticeDev/capabilities
参数配置和控制 |  |
音频参数配置和控制 | NET_DVR_STDXMLConfig | 静音配置能力集： GET /ISAPI/JusticeDev/audioOutMute/channel/<ID>/capabilities 获取静音配置： GET /ISAPI/JusticeDev/audioOutMute/channel/<ID>/config 设置静音配置： PUT /ISAPI/JusticeDev/audioOutMute/channel/<ID>/config 声音参数配置能力集： GET /ISAPI/System/SoundCfg/capabilities 获取声音参数： GET /ISAPI/System/SoundCfg 设置声音参数： PUT /ISAPI/System/SoundCfg
示证接入配置 | NET_DVR_STDXMLConfig | 能力集： GET GET /ISAPI/JusticeDev/evidence/capabilities 获取：GET /ISAPI/JusticeDev/evidence/config 设置：PUT /ISAPI/JusticeDev/evidence/config
本地预览参数配置 | NET_DVR_STDXMLConfig | 能力集： GET /ISAPI/System/Video/outputs/channels/<ID>/capabilities 单个获取： GET /ISAPI/System/Video/outputs/channels/<ID> 单个设置： PUT /ISAPI/System/Video/outputs/channels/<ID> 批量获取： GET /ISAPI/System/Video/outputs/channels 批量设置： PUT /ISAPI/System/Video/outputs/channels
批量上传图片 |  |
上传文件 | NET_DVR_UploadFile_V40 | 上传文件类型：BATCH_UPLOAD_PICTURE_FILE
发送数据 | NET_DVR_UploadSend |
获取文件上传的进度和状态 | NET_DVR_GetUploadState |
获取当前图片上传的URL | NET_DVR_GetUploadResult |
停止文件上传 | NET_DVR_UploadClose |
设备远程升级 |  |
设备远程升级 | NET_DVR_Upgrade_V40 | 主机设备升级：ENUM_UPGRADE_DVR 辅助设备路由器升级：ENUM_UPGRADE_AUXILIARY_DEV
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |


报警主机功能接口介绍

设备网络SDK开发使用手册

报警主机通用功能接口介绍

报警主机主要有以下型号：
DS_19XX: 1900系列，只有1906产品，其他都为串口协议
DS_19DXX: 动环监控主机
DS_19AXX: 网络报警主机和总线式网络报警主机
DS_19CXX: 自助银行报警主机
DS_19SXX: 视频报警主机
DS_1HXX: 防护舱
DS_PEAXX: 一键式紧急报警产品
DS_19DXX_S：视频动环监控主机

除通用接口的功能外，报警主机还支持以下接口的功能，包括获取设备能力集、用户配置、警号配置、状态查询、使能状态配置、日志查询等。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
用户配置 |  |
获取设备用户配置 | NET_DVR_GetAlarmDeviceUser |
设置设备用户配置 | NET_DVR_SetAlarmDeviceUser |
警号 |  |
获取警号参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SIREN_PARAM 结构体：NET_DVR_SIREN_PARAM
设置警号参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SIREN_PARAM 结构体：NET_DVR_SIREN_PARAM
警号输出控制 | NET_DVR_AlarmHostAssistantControl |
状态查询 |  |
获取报警主机主要状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 结构体：NET_DVR_ALARMHOST_MAIN_STATUS_V40 DS-1HXX不支持
获取报警主机其他状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_OTHER_STATUS 结构体：NET_DVR_ALARMHOST_OTHER_STATUS
获取报警主机其他状态V50 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50 结构体：NET_DVR_ALARMHOST_OTHER_STATUS_V50
使能状态配置 |  |
获取报警主机使能状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_ENABLECFG 结构体：NET_DVR_ALARMHOST_ENABLECFG
设置报警主机使能状态 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_ENABLECFG 结构体：NET_DVR_ALARMHOST_ENABLECFG
防区 |  |
获取防区参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM DS-1Hxx不支持
设置防区参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM DS-1Hxx不支持
对防区布防 | NET_DVR_AlarmHostSetupAlarmChan | DS-1Hxx不支持
对防区撤防 | NET_DVR_AlarmHostCloseAlarmChan | DS-1Hxx不支持
对防区旁路 | NET_DVR_BypassAlarmChan | DS-1906、DS-1Hxx不支持
对防区撤销旁路 | NET_DVR_UnBypassAlarmChan | DS-1906、DS_1Hxx不支持
触发器控制 |  |
获取触发器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMOUT_PARAM 结构体：NET_DVR_ALARMOUT_PARAM DS-1Hxx不支持
设置触发器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMOUT_PARAM 结构体：NET_DVR_ALARMOUT_PARAM DS-1Hxx不支持
设置触发器 | NET_DVR_SetAlarmHostOut |
辅助功能控制 | NET_DVR_AlarmHostAssistantControl | DS-1906不支持
日志查询 |  |
查找报警主机的日志信息 | NET_DVR_FindAlarmHostLog | DS-1906不支持
逐条获取查找到的报警主机日志信息 | NET_DVR_FindNextAlarmHostLog | DS-1906不支持
关闭报警主机日志查找，释放资源 | NET_DVR_FindAlarmHostLogClose | DS-1906不支持


DS-19AXX网络报警主机功能接口介绍

网络报警主机包括但不仅限于以下产品型号：
DS-19A08-BNG、DS-19A16-BNG、DS-29A08-BN、DS-29A08-BNG、DS-29A16-BN、DS-29A16-BNG、
DS-19A08-F/K1、DS-19A08-F/K2、DS-19A08-F/K1G、DS-19A08-F/K2G。

除报警主机通用功能接口的功能外，DS-19AXX网络报警主机还支持以下接口的功能。

功能 | 接口 | 相关参数
参数配置 |  |
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30 (V2.1.0新增支持)
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30 (V2.1.0新增支持)
获取报警主机拨号参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMDIALMODECFG 结构体：NET_DVR_ALARMHOSTDIALCFG
设置报警主机拨号参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMDIALMODECFG 结构体：NET_DVR_ALARMHOSTDIALCFG
获取子系统参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG 结构体：NET_DVR_ALARMSUBSYSTEMPARAM
设置子系统参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG 结构体：NET_DVR_ALARMSUBSYSTEMPARAM
获取无线网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG 结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG
设置无线网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG 结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG
获取网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_NETCFG_V50 结构体：NET_DVR_ALARMHOST_NETCFG_V50
设置网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_NETCFG_V50 结构体：NET_DVR_ALARMHOST_NETCFG_V50
获取打印机配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_PRINTER_CFG 结构体：NET_DVR_ALARMHOST_PRINTER_CFG (V2.0新增)
设置打印机配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_PRINTER_CFG 结构体：NET_DVR_ALARMHOST_PRINTER_CFG (V2.0新增)
获取防区防拆参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TAMPER_ALARMIN_PARAM 结构体：NET_DVR_TAMPER_ALARMIN_PARAM (V2.1.0新增支持)
设置防区防拆参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TAMPER_ALARMIN_PARAM 结构体：NET_DVR_TAMPER_ALARMIN_PARAM (V2.1.0新增支持)
获取授权名单参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALLOWLIST_ALARM 结构体：NET_DVR_ALARM_PHONECFG (V2.1.0新增支持)
设置授权名单参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALLOWLIST_ALARM 结构体：NET_DVR_ALARM_PHONECFG (V2.1.0新增支持)
获取子系统定时布撤防参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SUBSYSTEM_ALARM 结构体：NET_DVR_SUBSYSTEM_ALARM (V2.1.0新增支持)
设置子系统定时布撤防参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SUBSYSTEM_ALARM 结构体：NET_DVR_SUBSYSTEM_ALARM (V2.1.0新增支持)
获取优先计划子系统定时布撤防参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PRIOR_ALARM 结构体：NET_DVR_PRIOR_SCHEDTIME (V2.1.0新增支持)
设置优先计划子系统定时布撤防参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PRIOR_ALARM 结构体：NET_DVR_PRIOR_SCHEDTIME (V2.1.0新增支持)
获取遥控器权限参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG 结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG (V2.1.0新增支持)
设置遥控器权限参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG 结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG (V2.1.0新增支持)
获取防区联动视频通道配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ZONE_CHANNEL_LINKAGE_CFG 结构体：NET_DVR_ZONE_CHANNEL_LINKAGE_CFG (V2.1.0新增支持)
设置防区联动视频通道配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ZONE_CHANNEL_LINKAGE_CFG 结构体：NET_DVR_ZONE_CHANNEL_LINKAGE_CFG (V2.1.0新增支持)
获取报警中心服务器配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CENTER_SERVER_CFG 结构体：NET_DVR_CENTER_SERVER_CFG (V2.1.0新增支持)
设置报警中心服务器配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CENTER_SERVER_CFG 结构体：NET_DVR_CENTER_SERVER_CFG (V2.1.0新增支持)
获取单个时控输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ONE_OUTPUT_SCH_RULECFG_V40 结构体：NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40 (V2.1.0新增)
设置单个时控输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ONE_OUTPUT_SCH_RULECFG_V40 结构体：NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40 (V2.1.0新增)
获取数据上传方式参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 (V2.0新增)
设置数据上传方式 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 (V2.0新增)
长连接配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_ALL_REMOTECONTROLLER_LIST(获取所有遥控器，V2.1.0新增支持)
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令：NET_DVR_GET_ALL_REMOTECONTROLLER_LIST(获取所有遥控器，V2.1.0新增支持)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
用户配置 |  |
获取操作用户配置 | NET_DVR_GetOperateUser |
设置操作用户配置 | NET_DVR_SetOperateUser |
组旁路操作 |  |
对防区进行组旁路 | NET_DVR_AlarmHostArrayBypass |
对防区进行组旁路恢复 | NET_DVR_AlarmHostArrayBypassResume |
子系统 |  |
对子系统布防 | NET_DVR_AlarmHostSubSystemSetupAlarmChan |
对子系统撤防 | NET_DVR_AlarmHostSubSystemCloseAlarmChan |
对子系统进行消警 | NET_DVR_AlarmHostClearAlarm |
报警上传方式配置 |  |
获取报警上传方式及参数 | NET_DVR_AlarmHostGetReportMode |
设置报警上传方式及参数 | NET_DVR_AlarmHostSetReportMode |
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION
停止监听 | NET_DVR_StopListen_V30 |
远程升级 |  |
开始升级 | NET_DVR_Upgrade_V40 | V2.1.0新增升级类型：ENUM_UPGRADE_AUXILIARY_DEV
获取升级进度 | NET_DVR_GetUpgradeProgress |
获取升级状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
蓄电池电压查询 |  |
蓄电池电压查询 | NET_DVR_GetBatteryVoltage |


DS-19AXX总线式网络报警主机功能接口介绍

总线式网络报警主机包括但不仅限于以下产品型号：
DS-19A08-01BNG、DS-29A08-01BN、DS-29A08-01BNG。

除报警主机通用功能接口、DS-19AXX网络报警主机功能接口的功能外，还支持以下接口的功能。

功能 | 接口 | 相关参数
参数配置 |  |
获取子系统扩展参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_SUBSYSTEM_CFG_EX 结构体：NET_DVR_SUBSYSTEM_PARAM_EX
设置子系统扩展参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_SUBSYSTEM_CFG_EX 结构体：NET_DVR_SUBSYSTEM_PARAM_EX
获取事件触发触发器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 结构体：NET_DVR_TRIGGER_EVENT
设置事件触发触发器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 结构体：NET_DVR_TRIGGER_EVENT
获取故障处理配置信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_FAULT_CFG 结构体：NET_DVR_ALARMHOST_FAULT_CFG
设置故障处理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_FAULT_CFG 结构体：NET_DVR_ALARMHOST_FAULT_CFG
获取模块信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_MODULE_CFG 结构体：NET_DVR_ALARMHOST_MODULE_CFG
长连接远程配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM、 NET_DVR_GET_ALARMHOST_TRIGGER_LIST、 NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE、 NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令： NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM、 NET_DVR_GET_ALARMHOST_TRIGGER_LIST
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
远程控制 |  |
远程控制 | NET_DVR_RemoteControl | 配置命令： NET_DVR_ARM_ALARMHOST_SUBSYSTEM、 NET_DVR_CLOSE_ALARMHOST_OVERALL_FAULT_ALARM
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM、 COMM_ALARMHOST_EXCEPTION、 COMM_ALARMHOST_CID_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM、 COMM_ALARMHOST_EXCEPTION、 COMM_ALARMHOST_CID_ALARM
停止监听 | NET_DVR_StopListen_V30 |


DS-19DXX动环监控主机功能接口介绍

动环监控主机包括但不仅限于以下产品型号：
DS-19D16-1608JN、DS-19D08-1604JN、DS-19D08-0802JN、DS-19D00-0402BN、DS-19D16-1608JN/HD（硬盘存储动环监控主机）、DS-19D2000、DS-19D2000-S（视频动环监控主机）、DS-19D2000-X(动环服务器)、DS-19DT-KH/1U。

除报警主机通用接口的功能外，动环监控主机还支持以下接口的功能。DS-19D2000-S系列视频动环监控主机除了支持动环监控主机的以下功能接口，还支持NVR的功能接口，包括预览、回放、IP通道管理、Smart智能侦测等，此处不做介绍，请参考NVR的编程指南。

功能 | 接口 | 相关参数
参数配置 |  |
获取模拟量参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SENSOR_CFG 结构体：NET_DVR_SENSOR_INFO
设置模拟量参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SENSOR_CFG 结构体：NET_DVR_SENSOR_INFO
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
获取外接设备报警限值 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE 结构体：NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE (V2.0新增)
设置外接设备报警限值 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE 结构体：NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE (V2.0新增)
获取故障处理配置信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_FAULT_CFG 结构体：NET_DVR_ALARMHOST_FAULT_CFG (V2.0新增)
设置故障处理配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_FAULT_CFG 结构体：NET_DVR_ALARMHOST_FAULT_CFG (V2.0新增)
获取模拟量关联配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_SENSOR_JOINT_CFG 结构体：NET_DVR_ALARMHOST_SENSOR_JOINT_CFG (V2.0新增)
设置模拟量关联配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_SENSOR_JOINT_CFG 结构体：NET_DVR_ALARMHOST_SENSOR_JOINT_CFG (V2.0新增)
获取RS485槽位参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG 结构体：NET_DVR_ALARMHOST_RS485_SLOT_CFG (V2.0新增)
设置RS485槽位参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_RS485_SLOT_CFG 结构体：NET_DVR_ALARMHOST_RS485_SLOT_CFG (V2.0新增)
获取模拟量实时数据 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_SENSOR_VALUE 结构体：NET_DVR_SENSOR_ALARM (DS-19D00-0402BN新增)
获取设备自检状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICE_SELF_CHECK_STATE 结构体：NET_DVR_DEVICE_SELF_CHECK_STATE (V3.0新增)
获取报警相关通道参数能力 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_CHAN_ABLITITY 结构体：NET_DVR_ALARM_CHAN_ABLITITY (DS-19D2000 V1.0新增)
获取多网卡配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_MULTI 结构体：NET_DVR_NETCFG_MULTI (DS-19D2000 V1.0新增支持)
设置多网卡参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_MULTI 结构体：NET_DVR_NETCFG_MULTI (DS-19D2000 V1.0新增支持)
获取网络应用参数(NTP) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA (DS-19D00-0402BN新增支持)
设置网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA (DS-19D00-0402BN新增支持)
获取RS485协议库版本信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS485_PROTOCOL_VERSION 结构体：NET_DVR_RS485_PROTOCOL_VERSION (DS-19DT-KH 1U V2.0新增支持)
获取数据上传方式参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40
设置数据上传方式参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40
获取点号信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALARM_POINT_CFG 结构体：NET_DVR_ALARM_POINT_CFG (DS-19D00-0402BN新增)
设置点号信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_ALARM_POINT_CFG 结构体：NET_DVR_ALARM_POINT_CFG (DS-19D00-0402BN新增)
日志文件导出 |  |
日志文件导出 | NET_DVR_StartDownload | 状态参数：NET_SDK_DOWNLOAD_LOG_FILE
获取下载状态 | NET_DVR_GetDownloadState |
获取下载状态 | NET_DVR_StopDownload |
长连接远程配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_HISTORY_VALUE DS-19D00-0402BN新增： NET_DVR_GET_ALL_VARIABLE_INFO V3.0新增: NET_DVR_GET_ALL_ALARM_RS485CFG NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG NET_DVR_GET_ALL_ALARM_POINT_CFG NET_DVR_GET_ALL_ALARM_SENSOR_CFG NET_DVR_GET_ALL_ALARM_SENSOR_JOINT
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令： NET_DVR_GET_HISTORY_VALUE DS-19D00-0402BN新增： NET_DVR_GET_ALL_VARIABLE_INFO V3.0新增: NET_DVR_GET_ALL_ALARM_RS485CFG NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG NET_DVR_GET_ALL_ALARM_POINT_CFG NET_DVR_GET_ALL_ALARM_SENSOR_CFG NET_DVR_GET_ALL_ALARM_SENSOR_JOINT
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
用户配置 |  |
获取操作用户配置 | NET_DVR_GetOperateUser |
设置操作用户配置 | NET_DVR_SetOperateUser |
RS485前端参数 |  |
获取485前端设备能力列表 | NET_DVR_GetDeviceTypeList |
获取485前端设备支持的协议列表 | NET_DVR_GetDeviceProtoList |
透明通道 |  |
和报警主机设备建立透明通道 | NET_DVR_AlarmHostSerialStart |
向透明通道指定的485口或者232口发送数据 | NET_DVR_AlarmHostSerialSend |
断开透明通道 | NET_DVR_AlarmHostSerialStop |
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_SENSOR_VALUE_UPLOAD， COMM_SENSOR_ALARM， COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION， COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM(V2.0新增)， COMM_ALARMHOST_DATA_UPLOAD(硬盘动环新增)
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_SENSOR_VALUE_UPLOAD， COMM_SENSOR_ALARM， COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION， COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM(V2.0新增)， COMM_ALARMHOST_DATA_UPLOAD(硬盘动环新增)
停止监听 | NET_DVR_StopListen_V30 |
设备状态 |  |
获取RS485外接设备状态 | NET_DVR_GetDeviceStatus | 状态参数：NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE (V2.0新增)
蓄电池电压查询 |  |
蓄电池电压查询 | NET_DVR_GetBatteryVoltage |
远程升级 |  |
升级 | NET_DVR_Upgrade | V2.0新增支持
获取升级进度 | NET_DVR_GetUpgradeProgress | V2.0新增支持
获取升级状态 | NET_DVR_GetUpgradeState | V2.0新增支持
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle | V2.0新增支持
存储相关功能 |  | 以下仅硬盘存储动环监控主机支持
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_HDCFG_V40 结构体：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_HDCFG_V40 结构体：NET_DVR_HDCFG
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_HISTORY_VALUE(查询历史数据)
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令：NET_DVR_GET_HISTORY_VALUE
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
Modbus协议配置文件导入导出 |  |
Modbus协议配置文件导入 | NET_DVR_UploadFile_V40 |
Modbus协议配置文件导出 | NET_DVR_StartDownload |


DS-19CXX自助行报警主机功能接口介绍

自助行报警主机包括但不仅限于以下产品型号：
DS-19C08

除报警主机通用接口的功能外，自助行报警主机还支持以下接口的功能。

功能 | 接口 | 相关参数
参数配置 |  |
获取报警主机拨号启用方式 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOSTDIALSETUPMODE 结构体：NET_DVR_ALARMHOSTDIALSETUPMODE
设置报警主机拨号启用方式 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOSTDIALSETUPMODE 结构体：NET_DVR_ALARMHOSTDIALSETUPMODE
获取报警主机拨号参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMDIALMODECFG 结构体：NET_DVR_ALARMHOSTDIALCFG
设置报警主机拨号参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMDIALMODECFG 结构体：NET_DVR_ALARMHOSTDIALCFG
获取报警主机门禁参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GATEWAY_CFG 结构体：NET_DVR_GATEWAY_CFG
设置报警主机门禁参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GATEWAY_CFG 结构体：NET_DVR_GATEWAY_CFG
获取LED屏幕参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_SCREEN_CFG 结构体：NET_DVR_LED_SCREEN_CFG(V2.0新增)
设置LED屏幕参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_SCREEN_CFG 结构体：NET_DVR_LED_SCREEN_CFG(V2.0新增)
获取LED屏显内容 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_CONTENT_CFG 结构体：NET_DVR_LED_CONTENT_CFG(V2.0新增)
设置LED屏显内容 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_CONTENT_CFG 结构体：NET_DVR_LED_CONTENT_CFG(V2.0新增)
获取LED屏定时开关参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_TIMER_SWITCH 结构体：NET_DVR_LED_SWITCH_TIME(V2.0新增)
设置LED屏定时开关参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_TIMER_SWITCH 结构体：NET_DVR_LED_SWITCH_TIME(V2.0新增)
获取分时LED屏亮度 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_TIMER_BRIGHTNESS 结构体：NET_DVR_LED_BRIGHTNESS_STEP(V2.0新增)
设置分时LED屏亮度( | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_TIMER_BRIGHTNESS 结构体：NET_DVR_LED_BRIGHTNESS_STEP(V2.0新增)
LED校时 | NET_DVR_SetDVRConfig | 命令：NET_DVR_LED_CHECKTIME 结构体：NET_DVR_TIME_EX(V2.0新增)
获取LED屏状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_STATUS 结构体：NET_DVR_LED_STATUS(V2.0新增)
获取音频跟随报警事件 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_AUDIO_ASSOCIATE_ALARM 结构体：NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM (V2.0新增)
设置音频跟随报警事件 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_AUDIO_ASSOCIATE_ALARM 结构体：NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM (V2.0新增)
获取232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30(V2.0新增)
设置232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30(V2.0新增)
远程控制 |  |
打开LED屏 | NET_DVR_RemoteControl | 命令码：NET_DVR_TURNON_LED(V2.0新增)
关闭LED屏 | NET_DVR_RemoteControl | 命令码：NET_DVR_TURNOFF_LED(V2.0新增)
手动设置LED屏亮度 | NET_DVR_RemoteControl | 命令码：NET_DVR_SET_LED_BRIGHTNESS(V2.0新增)
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION
停止监听 | NET_DVR_StopListen_V30 |
其他 |  |
蓄电池电压查询 | NET_DVR_GetBatteryVoltage |
语音上传下载 |  |
开始语音上传 | NET_DVR_StartUploadFile |
获取语音上传的进度 | NET_DVR_GetUploadFileProgress |
获取语音上传的状态 | NET_DVR_GetUploadFileState |
停止语音上传 | NET_DVR_StopUploadFile |
开始下载语音数据 | NET_DVR_StartDownloadFile |
获取语音下载的进度 | NET_DVR_GetDownloadFileProgress |
获取语音下载的状态 | NET_DVR_GetDownloadFileState |
停止语音下载 | NET_DVR_StopDownloadFile |
语音控制 |  |
语音控制 | NET_DVR_AudioCtrl |
语音对讲 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
停止语音对讲 | NET_DVR_StopVoiceCom |
远程升级 |  |
开始升级 | NET_DVR_Upgrade |
获取升级进度 | NET_DVR_GetUpgradeProgress |
获取升级状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |


DS-19SXX视频报警主机功能接口介绍

视频报警主机包括但不仅限于以下产品型号：
DS-19S08-BNG、DS-19S08-BN、DS-29S08-04BN、DS-29S08-04BNG、DS-29S16-04BN、DS-29S16-04BNG。

除报警主机通用接口的功能外，视频报警主机还支持以下接口的功能。

功能 | 接口 | 相关参数
获取设备能力集
获取设备系统能力 | NET_DVR_STDXMLConfig | 支持的能力类型：设备总能力集
设备系统能力
设备系统总能力 | NET_DVR_STDXMLConfig | GET /ISAPI/System/capabilities
获取流量提醒配置能力 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficAlert/capabilities
获取流量提醒配置 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficAlert
设置流量提醒配置 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/dataTrafficAlert
获取设备本地流量统计配置能力 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics/capabilities
获取设备本地流量统计配置 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics
设置设备本地流量统计配置 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics
获取网络能力集 | NET_DVR_GetSTDAbility | 能力集类型：NET_DVR_GET_NETWORK_CAPABILITIES 能力集：网络能力集(NetworkCap)
获取无线拨号能力集 | NET_DVR_GetSTDAbility | 能力集类型：NET_DVR_GET_WIRELESSDIAL_CAPABILITIES 能力集：无线拨号能力集(Dial)
客户端报警布防
注册回调函数，接收设备报警消息等 NET_DVR_SetDVRMessageCallBack_V30 支持的报警信息类型有：
COMM_SWITCH_ALARM，
COMM_ALARMHOST_EXCEPTION，
COMM_ALARMHOST_CID_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30
报警监听
启动监听 NET_DVR_StartListen_V30 支持的报警信息类型有：
COMM_SWITCH_ALARM，
COMM_ALARMHOST_EXCEPTION，
COMM_ALARMHOST_CID_ALARM
停止监听 | NET_DVR_StopListen_V30
参数配置
获取（云台）解码器参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DECODERCFG_V40
结构体：NET_DVR_DECODERCFG_V40
设置（云台）解码器参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DECODERCFG_V40
结构体：NET_DVR_DECODERCFG_V40
获取图像参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PICCFG_V40
结构体：NET_DVR_PICCFG_V40
设置图像参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PICCFG_V40
结构体：NET_DVR_PICCFG_V40
获取通道视频输入图像参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_VIDEO_INPUT_EFFECT
结构体：NET_DVR_VIDEO_INPUT_EFFECT
设置通道视频输入图像参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_VIDEO_INPUT_EFFECT
结构体：NET_DVR_VIDEO_INPUT_EFFECT
获取视音频编码压缩参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_COMPRESSCFG_V30
结构体：NET_DVR_COMPRESSION_INFO_V30
设置视音频编码压缩参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_COMPRESSCFG_V30
结构体：NET_DVR_COMPRESSION_INFO_V30
获取录像参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDCFG_V40
结构体：NET_DVR_RECORD_V40
设置录像参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORDCFG_V40
结构体：NET_DVR_RECORD_V40
获取叠加字符参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_SHOWSTRING_V30
结构体：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_SHOWSTRING_V30
结构体：NET_DVR_SHOWSTRING_V30
获取硬盘管理配置参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_HDCFG
结构体：NET_DVR_HDCFG
设置硬盘管理配置参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_HDCFG
结构体：NET_DVR_HDCFG
获取硬盘盘组管理参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_HDGROUP_CFG
结构体：NET_DVR_HDGROUP_CFG
设置硬盘盘组管理参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_HDGROUP_CFG
结构体：NET_DVR_HDGROUP_CFG
获取磁盘配额信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DISK_QUOTA_CFG
结构体：NET_DVR_DISK_QUOTA_CFG
(V2.0.0新增支持)
设置磁盘配额信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DISK_QUOTA_CFG
结构体：NET_DVR_DISK_QUOTA_CFG
(V2.0.0新增支持)
获取网络应用(DDNS)参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DDNSCFG_V30
结构体：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DDNSCFG_V30
结构体：NET_DVR_DDNSPARA_V30
获取平台参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_CMS_CFG
结构体：NET_DVR_CMS_PARAM
(V1.3.0新增支持)
设置平台参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_CMS_CFG
结构体：NET_DVR_CMS_PARAM
(V1.3.0新增支持)
获取安全认证配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_SECURITY_CFG
结构体：NET_DVR_SECURITY_CFG
(V2.0.0新增支持)
设置安全认证配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_SECURITY_CFG
结构体：NET_DVR_SECURITY_CFG
(V2.0.0新增支持)
获取IP接入配置参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_IPPARACFG_V40
结构体：NET_DVR_IPPARACFG_V40
(V2.0.0新增支持)
设置IP接入配置参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_IPPARACFG_V40
结构体：NET_DVR_IPPARACFG_V40
(V2.0.0新增支持)
获取报警主机拨号参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMDIALMODECFG
结构体：NET_DVR_ALARMHOSTDIALCFG
设置报警主机拨号参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMDIALMODECFG
结构体：NET_DVR_ALARMHOSTDIALCFG
获取无线网络参数配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG
结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG
设置无线网络参数配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG
结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG
获取网络参数配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOST_NETCFG_V50
结构体：NET_DVR_ALARMHOST_NETCFG_V50
设置网络参数配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMHOST_NETCFG_V50
结构体：NET_DVR_ALARMHOST_NETCFG_V50
获取事件触发触发器参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG
结构体：NET_DVR_TRIGGER_EVENT
设置事件触发触发器参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG
结构体：NET_DVR_TRIGGER_EVENT
获取模块信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOST_MODULE_CFG
结构体：NET_DVR_ALARMHOST_MODULE_CFG
获取防区防拆参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_TAMPER_ALARMIN_PARAM
结构体：NET_DVR_TAMPER_ALARMIN_PARAM
(V1.3.0新增)
设置防区防拆参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_TAMPER_ALARMIN_PARAM
结构体：NET_DVR_TAMPER_ALARMIN_PARAM
(V1.3.0新增)
获取时控输出参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG_V40
结构体：NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40
(V1.3.0新增)
设置时控输出参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG_V40
结构体：NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40
(V1.3.0新增)
获取报警抓图参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARM_CAPTRUE_CFG
结构体：NET_DVR_ALARM_CAPTRUE_CFG
(V1.3.0新增)
设置报警抓图参数 NET_DVR_SetDVRConfig 命令：NET_DVR_GET_ALARM_CAPTRUE_CFG
结构体：NET_DVR_ALARM_CAPTRUE_CFG
(V1.3.0新增)
获取子系统定时布撤防参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_SUBSYSTEM_ALARM
结构体：NET_DVR_SUBSYSTEM_ALARM
(V1.3.0新增)
设置子系统定时布撤防参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_SUBSYSTEM_ALARM
结构体：NET_DVR_SUBSYSTEM_ALARM
(V1.3.0新增)
获取优先计划子系统定时布撤防参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PRIOR_ALARM
结构体：NET_DVR_PRIOR_SCHEDTIME
(V1.3.0新增)
设置优先计划子系统定时布撤防参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PRIOR_ALARM
结构体：NET_DVR_PRIOR_SCHEDTIME
(V1.3.0新增)
获取遥控器权限参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG
结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG
(V1.3.0新增)
设置遥控器权限参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG
结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG
(V1.3.0新增)
获取授权名单参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALLOWLIST_ALARM
结构体：NET_DVR_ALARM_PHONECFG
(V1.3.0新增)
设置授权名单参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALLOWLIST_ALARM
结构体：NET_DVR_ALARM_PHONECFG
(V1.3.0新增)
获取故障处理配置信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOST_FAULT_CFG
结构体：NET_DVR_ALARMHOST_FAULT_CFG
(V2.0.0新增支持)
设置故障处理配置信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMHOST_FAULT_CFG
结构体：NET_DVR_ALARMHOST_FAULT_CFG
(V2.0.0新增支持)
获取延迟预览参数配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PREVIEW_DELAY_CFG
结构体：NET_DVR_PREVIEW_DELAY_CFG
(V2.0.0新增)
设置延迟预览参数配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PREVIEW_DELAY_CFG
结构体：NET_DVR_PREVIEW_DELAY_CFG
(V2.0.0新增)
获取子系统扩展参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOST_SUBSYSTEM_CFG_EX
结构体：NET_DVR_SUBSYSTEM_PARAM_EX
(V2.0.0新增)
设置子系统扩展参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMHOST_SUBSYSTEM_CFG_EX
结构体：NET_DVR_SUBSYSTEM_PARAM_EX
(V2.0.0新增)
获取防区联动视频通道配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ZONE_CHANNEL_LINKAGE_CFG
结构体：NET_DVR_ZONE_CHANNEL_LINKAGE_CFG
(V2.0.0新增)
设置防区联动视频通道配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ZONE_CHANNEL_LINKAGE_CFG
结构体：NET_DVR_ZONE_CHANNEL_LINKAGE_CFG
(V2.0.0新增)
获取报警中心服务器配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_CENTER_SERVER_CFG
结构体：NET_DVR_CENTER_SERVER_CFG
(V2.0.0新增)
设置报警中心服务器配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_CENTER_SERVER_CFG
结构体：NET_DVR_CENTER_SERVER_CFG
(V2.0.0新增)
无线业务查询 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_ALARMHOST_WIRELESS_BUSINNESS_INFO
结构体：NET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO
(V2.0.0新增)
获取EZVIZ接入参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_EZVIZ_ACCESS_CFG
结构体：NET_DVR_EZVIZ_ACCESS_CFG
设置EZVIZ接入参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_EZVIZ_ACCESS_CFG
结构体：NET_DVR_EZVIZ_ACCESS_CFG
获取子系统配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG
结构体：NET_DVR_ALARMSUBSYSTEMPARAM
设置子系统配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG
结构体：NET_DVR_ALARMSUBSYSTEMPARAM
获取设置卡号关联用户信息参数 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_CARD_USERINFO_CFG
结构体：NET_DVR_CARD_USER_INFO_CFG
设置卡号关联用户信息参数 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_CARD_USERINFO_CFG
结构体：NET_DVR_CARD_USER_INFO_CFG
获取无线参数配置参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_WIRELESS_DIAL
结构体：NET_DVR_WIRELESSDIAL_CFG
设置无线参数配置参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_WIRELESS_DIAL
结构体：NET_DVR_WIRELESSDIAL_CFG
获取报告上传方式V40 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40
结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40
设置报告上传方式配置V40 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40
结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40
长连接配置
启动长连接远程配置 NET_DVR_StartRemoteConfig 配置命令：NET_DVR_GET_ALARMHOST_MODULE_LIST(获取所有模块，V1.3.0新增)
NET_DVR_GET_ALL_REMOTECONTROLLER_LIST(获取所有遥控器，V2.0.0新增)
逐个获取查找到的结果信息 NET_DVR_GetNextRemoteConfig 配置命令：NET_DVR_GET_ALARMHOST_MODULE_LIS(获取所有模块，V1.3.0新增)
NET_DVR_GET_ALL_REMOTECONTROLLER_LIST(获取所有遥控器，V2.0.0新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_CARD_CFG(获取卡参数配置)和NET_DVR_SET_CARD_CFG(设置卡参数配置)： NET_DVR_CARD_CFG_COND
发送长连接数据 NET_DVR_SendRemoteConfig 配置命令：ENUM_ACS_SEND_DATA
获取时为一个NET_DVR_CARD_CFG_SEND_DATA，设置时为一个NET_DVR_CARD_CFG
获取长连接配置的状态 | NET_DVR_GetRemoteConfigState | pState:4字节长连接状态值，参见NET_SDK_CALLBACK_STATUS_NORMAL
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
子系统
对子系统布防 | NET_DVR_AlarmHostSubSystemSetupAlarmChan
对子系统撤防 | NET_DVR_AlarmHostSubSystemCloseAlarmChan
对子系统进行消警 | NET_DVR_AlarmHostClearAlarm
关闭子系统故障提示音 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CLOSE_SUBSYSTEM_FAULT_ALARM
子系统旁路 | NET_DVR_RemoteControl | 控制命令：NET_DVR_SET_SUBSYSTEM_BYPASS
子系统旁路恢复 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CANCEL_SUBSYSTEM_BYPASS
按布防类型对子系统布撤防 | NET_DVR_RemoteControl | 控制命令：NET_DVR_ARM_ALARMHOST_SUBSYSTEM
远程控制
关闭全局键盘故障提示音 | NET_DVR_RemoteControl | 控制命令：NET_DVR_CLOSE_ALARMHOST_OVERALL_FAULT_ALARM
组旁路操作
对防区进行组旁路 | NET_DVR_AlarmHostArrayBypass
对防区进行组旁路恢复 | NET_DVR_AlarmHostArrayBypassResume
报警上传方式配置
获取报警上传方式及参数 | NET_DVR_AlarmHostGetReportMode
设置报警上传方式及参数 | NET_DVR_AlarmHostSetReportMode
透明通道
和报警主机设备建立透明通道 | NET_DVR_AlarmHostSerialStart
向透明通道指定的485口或者232口发送数据 | NET_DVR_AlarmHostSerialSend
断开透明通道 | NET_DVR_AlarmHostSerialStop
直接向串口发送数据
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort
实时预览
打开预览 | NET_DVR_RealPlay_V40
关闭预览 | NET_DVR_StopRealPlay
JPEG抓图
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW
录像文件查找
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V40
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40
关闭文件查找，释放资源 | NET_DVR_FindClose_V30
回放录像文件及相关
按文件名回放录像文件 | NET_DVR_PlayBackByName
按时间回放录像文件 | NET_DVR_PlayBackByTime
控制录像回放的状态 | NET_DVR_PlayBackControl_V40
停止回放录像文件 | NET_DVR_StopPlayBack
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData
停止保存录象数据 | NET_DVR_StopPlayBackSave
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile
刷新显示回放窗口 | NET_DVR_RefreshPlay
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex
录像文件下载及相关
按文件名下载录像文件 | NET_DVR_GetFileByName
按时间下载录像文件 | NET_DVR_GetFileByTime
控制录像下载的状态 | NET_DVR_PlayBackControl_V40
停止下载录像文件 | NET_DVR_StopGetFile
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos
录像文件锁定与解锁
按文件名锁定录像文件 | NET_DVR_LockFileByName
按文件名解锁录像文件 | NET_DVR_UnlockFileByName
手动录像
远程开启设备本地手动录像 | NET_DVR_StartDVRRecord
远程停止设备本地手动录像 | NET_DVR_StopDVRRecord
云台控制
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset
云台预置点操作 | NET_DVR_PTZPreset_Other
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise
云台巡航操作 | NET_DVR_PTZCruise_Other
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack
云台花样扫描操作 | NET_DVR_PTZTrack_Other
语音对讲、转发及广播
启动语音对讲 | NET_DVR_StartVoiceCom_V30
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30
转发语音数据 | NET_DVR_VoiceComSendData
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop
获取当前生效的对讲音频压缩参数 | NET_DVR_GetCurrentAudioCompress
远程升级
开始升级 | NET_DVR_Upgrade
获取升级进度 | NET_DVR_GetUpgradeProgress
获取升级状态 | NET_DVR_GetUpgradeState
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle
硬盘格式化
远程格式化设备硬盘 | NET_DVR_FormatDisk
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle
配置文件
导出配置文件 | NET_DVR_GetConfigFile
导入配置文件 | NET_DVR_SetConfigFile
云台协议列表
获取设备支持的云台协议列表 | NET_DVR_GetPTZProtocol
其他
蓄电池电压查询 | NET_DVR_GetBatteryVoltage


DS-1H02防护舱控制器功能接口介绍

防护舱控制器包括但不仅限于以下产品型号：
DS-1H02、DS-1H02-A、DS-1H02-A。

除报警主机通用接口的功能外，防护舱控制器还支持以下接口的功能。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备能力 | NET_DVR_STDXMLConfig | 支持的能力类型有：设备总能力集、防护舱控制器能力集、设备声音参数配置能力集、防护舱门锁控制能力、查询防护舱门锁状态能力
防护舱相关功能 |  |
声音参数设置 | NET_DVR_STDXMLConfig | GET /ISAPI/System/SoundCfg、PUT /ISAPI/System/SoundCfg
查询防护舱门锁状态 | NET_DVR_STDXMLConfig | GET /ISAPI/SafetyCabin/LockStatus
防护舱门锁控制 | NET_DVR_STDXMLConfig | POST /ISAPI/SafetyCabin/LockCtrl
参数配置 |  |
获取安全认证配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SECURITY_CFG 结构体：NET_DVR_SECURITY_CFG (DS-1H02-A V1.0新增支持)
设置安全认证配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SECURITY_CFG 结构体：NET_DVR_SECURITY_CFG (DS-1H02-A V1.0新增支持)
获取门禁参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GATEWAY_CFG 结构体：NET_DVR_GATEWAY_CFG
设置门禁参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GATEWAY_CFG 结构体：NET_DVR_GATEWAY_CFG
获取232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
获取模拟量参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SENSOR_CFG 结构体：NET_DVR_SENSOR_INFO
设置模拟量参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SENSOR_CFG 结构体：NET_DVR_SENSOR_INFO
获取LED屏幕参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_SCREEN_CFG 结构体：NET_DVR_LED_SCREEN_CFG(V2.0新增)
设置LED屏幕参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_SCREEN_CFG 结构体：NET_DVR_LED_SCREEN_CFG(V2.0新增)
获取LED屏显内容 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_CONTENT_CFG 结构体：NET_DVR_LED_CONTENT_CFG(V2.0新增)
设置LED屏显内容 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_CONTENT_CFG 结构体：NET_DVR_LED_CONTENT_CFG(V2.0新增)
获取LED屏定时开关参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_TIMER_SWITCH 结构体：NET_DVR_LED_SWITCH_TIME(V2.0新增)
设置LED屏定时开关参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_TIMER_SWITCH 结构体：NET_DVR_LED_SWITCH_TIME(V2.0新增)
获取分时LED屏亮度 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_TIMER_BRIGHTNESS 结构体：NET_DVR_LED_BRIGHTNESS_STEP(V2.0新增)
设置分时LED屏亮度( | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LED_TIMER_BRIGHTNESS 结构体：NET_DVR_LED_BRIGHTNESS_STEP(V2.0新增)
LED校时 | NET_DVR_SetDVRConfig | 命令：NET_DVR_LED_CHECKTIME 结构体：NET_DVR_TIME_EX(V2.0新增)
获取LED屏状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LED_STATUS 结构体：NET_DVR_LED_STATUS(V2.0新增)
获取时控输出配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG_V40 结构体：NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40(V2.1新增)
设置时控输出配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG_V40 结构体：NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40(V2.1新增)
获取防护舱工作模式参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SAFETYCABIN_WORK_MODE 结构体：NET_DVR_SAFETYCABIN_WORK_MODE(V2.0新增)
设置防护舱工作模式参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SAFETYCABIN_WORK_MODE 结构体：NET_DVR_SAFETYCABIN_WORK_MODE(V2.0新增)
获取防护舱人信号探测参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SAFETYCABIN_PERSON_SIGNAL_CFG 结构体：NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG(V2.0新增)
设置防护舱人信号探测参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SAFETYCABIN_PERSON_SIGNAL_CFG 结构体：NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG(V2.0新增)
获取防护舱状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SAFETYCABIN_STATE 结构体：NET_DVR_ALARMHOST_SAFETYCABINSTATE (DS-1H02-A V1.0新增)
获取RS485级联设备配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS485_CASCADE_CFG 结构体：NET_DVR_RS485_CASCADE_CFG (DS-1H02-A V1.0新增)
设置RS485级联设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_GET_RS485_CASCADE_CFG 结构体：NET_DVR_RS485_CASCADE_CFG (DS-1H02-A V1.0新增)
远程控制 |  |
打开LED屏 | NET_DVR_RemoteControl | 命令码：NET_DVR_TURNON_LED(V2.0新增)
关闭LED屏 | NET_DVR_RemoteControl | 命令码：NET_DVR_TURNOFF_LED(V2.0新增)
手动设置LED屏亮度 | NET_DVR_RemoteControl | 命令码：NET_DVR_SET_LED_BRIGHTNESS(V2.0新增)
语音上传下载 |  |
开始语音上传 | NET_DVR_StartUploadFile |
获取语音上传的进度 | NET_DVR_GetUploadFileProgress |
获取语音上传的状态 | NET_DVR_GetUploadFileState |
停止语音上传 | NET_DVR_StopUploadFile |
开始下载语音数据 | NET_DVR_StartDownloadFile |
获取语音下载的进度 | NET_DVR_GetDownloadFileProgress |
获取语音下载的状态 | NET_DVR_GetDownloadFileState |
停止语音下载 | NET_DVR_StopDownloadFile |
语音控制 |  |
语音控制 | NET_DVR_AudioCtrl |
门禁控制 |  |
门禁控制 | NET_DVR_ControlGateway |
透明通道 |  |
和报警主机设备建立透明通道 | NET_DVR_AlarmHostSerialStart |
向透明通道指定的485口或者232口发送数据 | NET_DVR_AlarmHostSerialSend |
断开透明通道 | NET_DVR_AlarmHostSerialStop |
报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_ALARMHOST_SAFETYCABINSTATE, COMM_ALARMHOST_ALARMOUTSTATUS
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_ALARMHOST_SAFETYCABINSTATE, COMM_ALARMHOST_ALARMOUTSTATUS
停止监听 | NET_DVR_StopListen_V30 |
远程升级 |  |
升级 | NET_DVR_Upgrade |
获取升级进度 | NET_DVR_GetUpgradeProgress |
获取升级状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
语音对讲 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
停止语音对讲 | NET_DVR_StopVoiceCom |


DS-19XX系列报警主机功能接口介绍

DS-19XX系列报警主机包括但不仅限于以下产品型号：
DS-1906。

除报警主机通用功能接口的功能外，DS-19XX系列报警主机还支持以下接口的功能。

功能 | 接口 | 相关参数
参数配置 |  |
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
获取网络应用参数(NTP) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取门禁参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GATEWAY_CFG 结构体：NET_DVR_GATEWAY_CFG
设置门禁参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GATEWAY_CFG 结构体：NET_DVR_GATEWAY_CFG
透明通道 |  |
和报警主机设备建立透明通道 | NET_DVR_AlarmHostSerialStart |
向透明通道指定的485口或者232口发送数据 | NET_DVR_AlarmHostSerialSend |
断开透明通道 | NET_DVR_AlarmHostSerialStop |
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_SWITCH_ALARM， COMM_ALARMHOST_EXCEPTION
停止监听 | NET_DVR_StopListen_V30 |
RS485前端参数 |  |
获取485前端设备能力列表 | NET_DVR_GetDeviceTypeList |
获取485前端设备支持的协议列表 | NET_DVR_GetDeviceProtoList |
门禁控制 |  |
门禁控制 | NET_DVR_ControlGateway |
其他 |  |
蓄电池电压查询 | NET_DVR_GetBatteryVoltage |


紧急求助报警产品功能接口介绍

紧急求助报警产品包括但不仅限于以下产品型号：
DS-PEA01-B、DS-PEA01-B/GLF、DS-PEA01-B/GLT、DS-PEA01-P、DS-PEA01-P/GLF、DS-PEA01-P/GLT、DS-PEA01-F、DS-PEA01-F/GL、DS-PEA01-F/GLF。

除报警主机通用接口的功能外，紧急求助报警产品还支持以下接口的功能。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备能力集(标准协议接口) | NET_DVR_GetSTDAbility | 能力集类型： NET_DVR_GET_EMERGENCE_ALARM_PRODUCT_CAP、 NET_DVR_GET_CALL_WAITTING_CFG_CAP、 NET_DVR_GET_ALARM_LAMP_CFG_CAP、 NET_DVR_GET_VOICE_PROMPTION_CFG_CAP、 NET_DVR_GET_EMERGENCE_ALARM_RESPONSE_CAP、 NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_ALARMHOST_CID_ALARM COMM_ALARMHOST_ALARMOUTSTATUS
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_ALARMHOST_CID_ALARM
停止监听 | NET_DVR_StopListen_V30 |
通用参数配置 |  |
获取多网卡配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_MULTI 结构体：NET_DVR_NETCFG_MULTI
设置多网卡配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_MULTI 结构体：NET_DVR_NETCFG_MULTI
获取IP可视对讲主机SIP服务器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SIP_CFG 结构体：NET_DVR_SIP_CFG
设置IP可视对讲主机SIP服务器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SIP_CFG 结构体：NET_DVR_SIP_CFG
获取图像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
获取通道视频输入图像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEO_INPUT_EFFECT 结构体：NET_DVR_VIDEO_INPUT_EFFECT
设置通道视频输入图像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEO_INPUT_EFFECT 结构体：NET_DVR_VIDEO_INPUT_EFFECT
获取视音频编码压缩参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSION_INFO_V30
设置视音频编码压缩参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_COMPRESSCFG_V30 结构体：NET_DVR_COMPRESSION_INFO_V30
获取音频输入口音量调节参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIOIN_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG
设置音频输入口音量调节参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIOIN_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG
获取音频输出口音量调节参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIOOUT_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG
设置音频输出口音量调节参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIOOUT_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG
报警输出控制 |  |
获取设备报警输出 | NET_DVR_GetAlarmOut |
设置设备报警输出 | NET_DVR_SetAlarmOut |
报警参数配置 |  |
获取报警主机拨号参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMDIALMODECFG 结构体：NET_DVR_ALARMHOSTDIALCFG
设置报警主机拨号参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMDIALMODECFG 结构体：NET_DVR_ALARMHOSTDIALCFG
获取报警主机网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_NETCFG_V50 结构体：NET_DVR_ALARMHOST_NETCFG_V50
设置报警主机网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_NETCFG_V50 结构体：NET_DVR_ALARMHOST_NETCFG_V50
获取呼叫等待参数配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_CALL_WAITTING_CFG 结构体：NET_DVR_CALL_WAITTING_CFG
设置呼叫等待参数配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_CALL_WAITTING_CFG 结构体：NET_DVR_CALL_WAITTING_CFG
获取警灯参数配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_ALARM_LAMP_CFG 结构体：NET_DVR_ALARM_LAMP_CFG
设置警灯参数配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_ALARM_LAMP_CFG 结构体：NET_DVR_ALARM_LAMP_CFG
获取语音提示配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_VOICE_PROMPTION_CFG 结构体：NET_DVR_VOICE_PROMPTION_CFG
设置语音提示配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_VOICE_PROMPTION_CFG 结构体：NET_DVR_VOICE_PROMPTION_CFG
获取报警主机防区联动配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_ALARMIN_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
设置报警主机防区联动配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_ALARMIN_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
获取报警主机紧急求助联动配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_EMERGENCY_CALL_HELP_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
设置报警主机紧急求助联动配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_EMERGENCY_CALL_HELP_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
获取报警主机业务咨询联动配置 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_CONSULT_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
设置报警主机业务咨询联动配置 | NET_DVR_SetSTDConfig | 命令：NET_DVR_SET_CONSULT_TRIGGER 结构体：NET_DVR_EVENT_TRIGGER
RS485重新注册 | NET_DVR_SetSTDConfig | 命令：NET_DVR_REGISTER_ALARM_RS485 结构体：NET_DVR_REGISTER_RS485CFG
远程控制 |  |
紧急报警处理控制 | NET_DVR_STDControl | 控制命令：NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL
辅助功能控制 |  |
辅助功能控制 | NET_DVR_AlarmHostAssistantControl |
实时预览 |  |
打开预览 | NET_DVR_RealPlay_V40 |
关闭预览 | NET_DVR_StopRealPlay |
语音对讲、转发及广播 |  |
获取当前生效的对讲音频压缩参数 | NET_DVR_GetCurrentAudioCompress |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 | 即对应“报警呼叫”功能
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
远程升级 |  |
开始升级 | NET_DVR_Upgrade |
获取升级进度 | NET_DVR_GetUpgradeProgress |
获取升级状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
配置文件 |  |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile |
恢复默认参数 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig |
完全恢复默认参数 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
远程重启 |  |
重启设备 | NET_DVR_RebootDVR |


DS-PMXX4G模块功能接口介绍

4G模块包括但不仅限于以下产品型号：DS-PMXX4G模块
除报警主机通用接口的功能外，4G模块还支持以下接口的功能。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备系统能力 | NET_DVR_STDXMLConfig | 支持的能力类型：设备总能力集、报警主机设备能力、获取主机型号配置能力、主机型号配置、获取流量提醒配置能力、流量提醒配置、获取设备本地流量统计配置能力、设备本地流量统计配置
设备系统能力 |  |
设备系统总能力 | NET_DVR_STDXMLConfig | GET /ISAPI/System/capabilities
报警主机设备能力 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/capabilities
获取主机型号配置能力 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/hostDevice/capabilities
获取主机型号配置 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/hostDevice
设置主机型号配置 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/hostDevice
获取流量提醒配置能力 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficAlert/capabilities
获取流量提醒配置 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficAlert
设置流量提醒配置 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/dataTrafficAlert
获取设备本地流量统计配置能力 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics/capabilities
获取设备本地流量统计配置 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics
设置设备本地流量统计配置 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics
参数配置 |  |
拨号状态获取 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_WIRELESSDIAL_STATUS 结构体：NET_DVR_WIRELESSDIAL_STATUS
获取事件触发触发器配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 结构体：NET_DVR_TRIGGER_EVENT
设置事件触发触发器配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 结构体：NET_DVR_TRIGGER_EVENT
获取时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
获取网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
获取网络应用参数(NTP) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
用户解锁 | NET_DVR_RemoteControl | 命令码：NET_DVR_UNLOCK_USER
获取网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_NETCFG_V50 结构体：NET_DVR_ALARMHOST_NETCFG_V50
设置网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_NETCFG_V50 结构体：NET_DVR_ALARMHOST_NETCFG_V50
获取无线网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG 结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG
设置无线网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG 结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG
获取移动设备状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CMS_CFG 结构体：NET_DVR_CMS_PARAM
获取能力集 |  |
获取报警主机结构体能力集 | NET_DVR_GetDeviceAbility | 命令：ALARMHOST_ABILITY 结构体：NET_DVR_ALARMHOST_ABILITY
获取状态 |  |
获取设备运行状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_STATE 结构体：NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE
远程控制（子系统操作） |  |
按布防类型对子系统布防 | NET_DVR_RemoteControl | 命令码：NET_DVR_ARM_ALARMHOST_SUBSYSTEM
子系统旁路恢复 | NET_DVR_RemoteControl | 命令码：NET_DVR_CANCEL_SUBSYSTEM_BYPASS
子系统旁路 | NET_DVR_RemoteControl | 命令码：NET_DVR_SET_SUBSYSTEM_BYPASS
对子系统撤防操作 | NET_DVR_RemoteControl | 命令码：NET_DVR_ ALARMHOST_CLOSE_SUBSYSTEM
报警主机设备用户配置 |  |
获取报警主机设备用户配置 | NET_DVR_GetAlarmDeviceUser |
设置报警主机设备用户配置 | NET_DVR_SetAlarmDeviceUser |
报警上传方式配置 |  |
获取报警上传方式及参数 | NET_DVR_AlarmHostGetReportMode |
设置报警上传方式及参数 | NET_DVR_AlarmHostSetReportMode |
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
重启设备 | NET_DVR_RebootDVR |
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令码：NET_DVR_COMPLETE_RESTORE_CTRL


DS-PWXX无线报警主机功能接口介绍

无线报警主机包括但不仅限于以下产品型号：
DS-PW1-L/B、DS-PW1-L/BG、DS-PW1/B、DS-PW1/BG、DS-PW1-L、DS-PW1-L/G、DS-PW1、DS-PW1/G、DS-RW1-L/B、DS-RW1-L/BG、DS-RW1/B、DS-RW1/BG、DS-RW1-L、DS-RW1-L/G、DS-RW1、DS-RW1/G等。

除报警主机通用功能接口的功能外，DS-PWXX无线报警主机还支持以下接口的功能。

功能 | 接口 | 相关参数
参数配置 |  |
获取防区参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM
设置防区参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM
查询其他状态V50 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50 结构体：NET_DVR_ALARMHOST_OTHER_STATUS_V50
获取故障处理配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_FAULT_CFG 结构体：NET_DVR_ALARMHOST_FAULT_CFG
设置故障处理配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_FAULT_CFG 结构体：NET_DVR_ALARMHOST_FAULT_CFG
获取无线网络资源参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AP_INFO_LIST 结构体：NET_DVR_AP_INFO_LIST
获取设备无线参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WIFI_CFG 结构体：NET_DVR_WIFI_CFG
设置设备无线参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WIFI_CFG 结构体：NET_DVR_WIFI_CFG
获取设备网口工作模式参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WIFI_WORKMODE 结构体：NET_DVR_WIFI_WORKMODE
设置设备网口工作模式参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WIFI_WORKMODE 结构体：NET_DVR_WIFI_WORKMODE
获取设备当前wifi连接状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WIFI_STATUS 结构体：NET_DVR_WIFI_CONNECT_STATUS
设置设备网口工作模式参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WIFI_WORKMODE 结构体：NET_DVR_WIFI_WORKMODE
获取授权名单参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALLOWLIST_ALARM 结构体：NET_DVR_ALARM_PHONECFG
设置授权名单参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALLOWLIST_ALARM 结构体：NET_DVR_ALARM_PHONECFG
获取数据上传方式参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40
设置数据上传方式 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40
获取设备系统总能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/System/capabilities
获取报警主机设备能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/capabilities
获取设备声音参数配置能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/System/SoundCfg/capabilities
获取设备声音配置参数 | NET_DVR_STDXMLConfig | GET /ISAPI/System/SoundCfg
设置设备声音配置参数 | NET_DVR_STDXMLConfig | PUT /ISAPI/System/SoundCfg
获取防区关联探测器配置能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/ZoneAssociatedDetectorCfg/capabilities
获取防区关联探测器配置参数 | NET_DVR_STDXMLConfig | POST /ISAPI/SecurityCP/BasicParam/ZoneAssociatedDetectorCfg
设置防区关联探测器配置参数 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/ZoneAssociatedDetectorCfg
获取探测器参数配置能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/DetectorCfg/capabilities
获取探测器参数配置参数 | NET_DVR_STDXMLConfig | POST /ISAPI/SecurityCP/BasicParam/DetectorCfg
设置探测器参数配置参数 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/DetectorCfg
获取设备故障提示音配置能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/FaultAlarmCtrl/capabilities
获取设备故障提示音配置参数 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/FaultAlarmCtrl
设置设备故障提示音配置参数 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/FaultAlarmCtrl
获取功能键参数配置能力集 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/FunctionKeyCfg/capabilities
获取功能键参数配置参数 | NET_DVR_STDXMLConfig | GET /ISAPI/SecurityCP/BasicParam/FunctionKeyCfg
设置功能键参数配置参数 | NET_DVR_STDXMLConfig | PUT /ISAPI/SecurityCP/BasicParam/FunctionKeyCfg
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有： COMM_ALARMHOST_CID_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_ALARMHOST_CID_ALARM
停止监听 | NET_DVR_StopListen_V30 |


楼宇可视对讲功能接口介绍

楼宇可视对讲包括但不仅限于以下产品型号：
门口机：DS-KD8102-2、DS-KD8002-2A
管理机：DS-KM8301
别墅门口机：DS-KV8102-1C、DS-KV8102-2C、DS-KV8102-1A、DS-KV8202-1A、DS-KV8402-1A

除通用接口的功能外，还支持以下接口的功能，包括实时预览、远程参数配置、报警监听等。

设备型号 | 功能 | 接口 | 相关参数
获取设备能力集 |  |  |
楼宇可视对讲 | 获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY(设备软硬件能力)、 DEVICE_ENCODE_ALL_ABILITY_V20(所有编码能力)、 DEVICE_USER_ABILITY(用户管理参数能力)、 DEVICE_NETAPP_ABILITY(网络应用能力)、 STREAM_ABILITY(流能力)、 DEVICE_SERIAL_ABILITY(串口能力)、 SearchLogAbility(DEVICE_ABILITY_INFO)(日志搜索能力)、 ChannelInputAbility(DEVICE_ABILITY_INFO)(通道输入能力)
楼宇可视对讲 | 获取可视对讲主机能力集 | NET_DVR_GetDeviceAbility | 能力集类型：IP_VIEW_DEV_ABILITY 能力集：可视对讲能力XML描述
楼宇可视对讲 | 获取ISAPI协议可视对讲能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/capabilities 能力集：VideoIntercomCap (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取门禁主机能力集 | NET_DVR_GetDeviceAbility | 能力集类型：ACS_ABILITY 能力集：门禁主机能力XML描述
远程参数配置 |  |  |
楼宇可视对讲 | 设置设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
楼宇可视对讲 | 设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
楼宇可视对讲 | 获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
楼宇可视对讲 | 设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
楼宇可视对讲 | 获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V40 结构体：NET_DVR_USER_V40
楼宇可视对讲 | 设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V40 结构体：NET_DVR_USER_V40
楼宇可视对讲 | 获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
楼宇可视对讲 | 设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
楼宇可视对讲 | 获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
楼宇可视对讲 | 设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETAPPCFG 结构体：NET_DVR_NETAPPCFG
楼宇可视对讲 | 获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
楼宇可视对讲 | 设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
楼宇可视对讲 | 获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
楼宇可视对讲 | 设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DDNSCFG_V30 结构体：NET_DVR_DDNSPARA_V30
批量参数配置 |  |  |
楼宇可视对讲 | 获取FTP信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_FTPCFG_V40 结构体：NET_DVR_FTPCFG_V40
楼宇可视对讲 | 设置FTP信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_FTPCFG_V40 结构体：NET_DVR_FTPCFG_V40
楼宇可视对讲 | 获取流的来源信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_STREAM_SRC_INFO 结构体：NET_DVR_STREAM_SRC_INFO
楼宇可视对讲 | 设置流的来源信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_STREAM_SRC_INFO 结构体：NET_DVR_STREAM_SRC_INFO
楼宇可视对讲 | 获取所有流信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALLSTREAM_SRC_INFO 结构体：NET_DVR_STREAM_SRC_CFG
可视对讲参数配置 |  |  |
楼宇可视对讲 | 获取可视对讲设备编号 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG 结构体：NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG
楼宇可视对讲 | 设置可视对讲设备编号 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG 结构体：NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG
楼宇可视对讲 | 设置权限密码配置信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PRIVILEGE_PASSWORD 结构体：NET_DVR_PRIVILEGE_PASSWORD_CFG
楼宇可视对讲 | 获取操作时间配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_OPERATION_TIME_CFG 结构体：NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG
楼宇可视对讲 | 设置操作时间配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_OPERATION_TIME_CFG 结构体：NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG
楼宇可视对讲 | 获取关联网络设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEO_INTERCOM_RELATEDEV_CFG 结构体：NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG
楼宇可视对讲 | 设置关联网络设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEO_INTERCOM_RELATEDEV_CFG 结构体：NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG
楼宇可视对讲 | 获取可视对讲流通道参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEOINTERCOM_STREAM 结构体：NET_DVR_VIDEOINTERCOM_STREAM
楼宇可视对讲 | 设置可视对讲流通道参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEOINTERCOM_STREAM 结构体：NET_DVR_VIDEOINTERCOM_STREAM
楼宇可视对讲 | 获取可视对讲IO输入参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEO_INTERCOM_IOIN_CFG 结构体：NET_DVR_VIDEO_INTERCOM_IOIN_CFG
楼宇可视对讲 | 设置可视对讲IO输入参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEO_INTERCOM_IOIN_CFG 结构体：NET_DVR_VIDEO_INTERCOM_IOIN_CFG
楼宇可视对讲 | 获取可视对讲IO输出参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEO_INTERCOM_IOOUT_CFG 结构体：NET_DVR_VIDEO_INTERCOM_IOOUT_CFG
楼宇可视对讲 | 设置可视对讲IO输出参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEO_INTERCOM_IOOUT_CFG 结构体：NET_DVR_VIDEO_INTERCOM_IOOUT_CFG
楼宇可视对讲 | 获取梯控器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ELEVATORCONTROL_CFG_V40 结构体：NET_DVR_ELEVATORCONTROL_CFG_V40 (别墅门口机V1.1新增扩展)
楼宇可视对讲 | 设置梯控器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ELEVATORCONTROL_CFG_V40 结构体：NET_DVR_ELEVATORCONTROL_CFG_V40
楼宇可视对讲 | 获取宽动态参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WDR_CFG 结构体：NET_DVR_WDR_CFG
楼宇可视对讲 | 设置宽动态参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WDR_CFG 结构体：NET_DVR_WDR_CFG
楼宇可视对讲 | 获取按键呼叫住户配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CALL_ROOM_CFG 结构体：NET_DVR_CALL_ROOM_CFG (别墅门口机V1.1新增)
楼宇可视对讲 | 设置按键呼叫住户配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CALL_ROOM_CFG 结构体：NET_DVR_CALL_ROOM_CFG (别墅门口机V1.1新增)
楼宇可视对讲 | 获取音频输入口音量调节参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIOIN_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (别墅门口机V1.1新增支持)
楼宇可视对讲 | 设置音频输入口音量调节参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIOIN_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (别墅门口机V1.1新增支持)
楼宇可视对讲 | 获取音频输出口音量调节参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_AUDIOOUT_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (别墅门口机V1.1新增支持)
楼宇可视对讲 | 设置音频输出口音量调节参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_AUDIOOUT_VOLUME_CFG 结构体：NET_DVR_VOLUME_CFG (别墅门口机V1.1新增支持)
楼宇可视对讲 | 获取可视对讲报警事件参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VIDEO_INTERCOM_ALARM_CFG 结构体：NET_DVR_VIDEO_INTERCOM_ALARM_CFG (楼宇可视对讲V1.3新增支持)
楼宇可视对讲 | 设置可视对讲报警事件参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VIDEO_INTERCOM_ALARM_CFG 结构体：NET_DVR_VIDEO_INTERCOM_ALARM_CFG (楼宇可视对讲V1.3新增支持)
查询门口机注册信息 |  |  |
楼宇可视对讲 | 获取门口机注册信息（启动长连接） | NET_DVR_StartRemoteConfig | 命令：NET_DVR_GET_VIS_REGISTER_INFO (V1.0.1新增)
楼宇可视对讲 | 逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 命令：NET_DVR_GET_VIS_REGISTER_INFO (V1.0.1新增)
楼宇可视对讲 | 关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
可视对讲呼叫功能 |  |  |
楼宇可视对讲 | 建立信令交互长连接 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_VIDEO_CALL_SIGNAL_PROCESS (别墅门口机V1.1新增)
楼宇可视对讲 | 向设备发送信令 | NET_DVR_SendRemoteConfig | (别墅门口机V1.1新增)
楼宇可视对讲 | 关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
楼宇可视对讲 | 呼叫电梯 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/VideoIntercom/callElevator (楼宇可视对讲V1.4新增)
远程开锁 |  |  |
楼宇可视对讲 | 远程开锁 | NET_DVR_RemoteControl | 命令：NET_DVR_REMOTECONTROL_GATEWAY
公告信息下发 |  |  |
楼宇可视对讲 | 公告信息下发 | NET_DVR_RemoteControl | 命令：NET_DVR_REMOTECONTROL_NOTICE_DATA
铃音相关功能 |  |  |
楼宇可视对讲 | 获取铃音参数能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/ring/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 按铃音编号删除 | NET_DVR_STDXMLConfig | 命令：DELETE /ISAPI/VideoIntercom/ring/ringID/<ID> (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 删除所有铃音 | NET_DVR_STDXMLConfig | 命令：DELETE /ISAPI/VideoIntercom/ring (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 上传铃音文件 | NET_DVR_UploadFile_V40 | 命令：UPLOAD_RING_FILE (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取文件上传的进度和状态 | NET_DVR_GetUploadState |
楼宇可视对讲 | 停止文件上传 | NET_DVR_UploadClose |
楼宇可视对讲 | 查询铃音参数列表 | NET_DVR_StartRemoteConfig | 命令：NET_DVR_GET_RING_LIST (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
加密认证 |  |  |
楼宇可视对讲 | 获取可视对讲加密认证能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/passwordAuthentication/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 可视对讲加密认证 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/VideoIntercom/passwordAuthentication (楼宇可视对讲V1.4新增)
场景相关功能 |  |  |
楼宇可视对讲 | 获取场景参数能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/scene/nowMode/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取场景参数 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/scene/nowMode (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 设置场景参数 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/VideoIntercom/scene/nowMode (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取场景防区参数能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/SecurityCP/BasicParam/sceneZoneCfg/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取场景参数 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/SecurityCP/BasicParam/sceneZoneCfg?sceneMode=(atHome、goOut、goToBed、custom可选) (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 设置场景参数 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/SecurityCP/BasicParam/sceneZoneCfg?sceneMode=(atHome、goOut、goToBed、custom可选) (楼宇可视对讲V1.4新增)
智能锁查询 |  |  |
楼宇可视对讲 | 获取智能锁信息列表能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/SmartLock/lockParam/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取智能锁信息列表 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/SmartLock/lockParam (楼宇可视对讲V1.4新增)
APPKey配置 |  |  |
楼宇可视对讲 | 获取APPKey配置能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/AppKeyConfiguration/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | APPKey配置 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/VideoIntercom/AppKeyConfiguration (楼宇可视对讲V1.4新增)
手机布防控制 |  |  |
楼宇可视对讲 | 获取手机布防控制能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/SecurityCP/AlarmControlByPhone/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取手机布防控制参数 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/SecurityCP/AlarmControlByPhone (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 设置手机布防控制参数 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/SecurityCP/AlarmControlByPhone (楼宇可视对讲V1.4新增)
扇区加密校检配置 |  |  |
楼宇可视对讲 | 获取扇区加密校检配置能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/Card/sectorCheck/capabilities (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取扇区加密校检参数 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/Card/sectorCheck (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 设置扇区加密校检参数 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/AccessControl/Card/sectorCheck (楼宇可视对讲V1.4新增)
设备语言配置（门口机、室内机） |  |  |
楼宇可视对讲 | 获取设备语言配置（门口机、室内机）能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/System/DeviceLanguage/capabilities
楼宇可视对讲 | 获取设备语言配置（门口机、室内机） | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/Card/sectorCheck
楼宇可视对讲 | 设置设备语言配置（门口机、室内机） | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/System/DeviceLanguage
发卡功能配置（门口机） |  |  |
楼宇可视对讲 | 获取设发卡功能配置（门口机）能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/SendCardCfg/capabilities
楼宇可视对讲 | 获取发卡功能配置（门口机） | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/SendCardCfg
楼宇可视对讲 | 设置发卡功能配置（门口机） | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/VideoIntercom/SendCardCfg
对讲协议切换配置（门口机、室内机） |  |  |
楼宇可视对讲 | 获取对讲协议切换配置 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/IntercomProtocolType
楼宇可视对讲 | 设置对讲协议切换配置 | NET_DVR_STDXMLConfig | 命令：PUT /ISAPI/VideoIntercom/IntercomProtocolType
可视对讲设备工作状态（门口机） |  |  |
楼宇可视对讲 | 获取可视对讲设备工作状态（门口机） | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/VideoIntercom/WorkStatus
报警门禁相关参数配置 |  |  |
楼宇可视对讲 | 获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
楼宇可视对讲 | 设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
楼宇可视对讲 | 获取防区参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM
楼宇可视对讲 | 设置防区参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM
楼宇可视对讲 | 批量获取防区参数 | NET_DVR_GetSTDConfig | 命令：NET_DVR_GET_ALARMIN_PARAM_LIST (楼宇可视对讲V1.4新增)
楼宇可视对讲 | 获取门参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
楼宇可视对讲 | 设置门参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
楼宇可视对讲 | 卡参数配置（启动长连接） | NET_DVR_StartRemoteConfig | 命令： NET_DVR_GET_CARD_CFG NET_DVR_SET_CARD_CFG
楼宇可视对讲 | 卡参数配置（发送长连接数据） | NET_DVR_SendRemoteConfig | 命令： NET_DVR_GET_CARD_CFG NET_DVR_SET_CARD_CFG
楼宇可视对讲 | 卡参数配置（断开长连接） | NET_DVR_StopRemoteConfig |
楼宇可视对讲 | 清空门禁卡信息 | NET_DVR_RemoteControl | 命令：NET_DVR_CLEAR_ACS_PARAM
预览相关功能 |  |  |
楼宇可视对讲 | 主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
楼宇可视对讲 | 子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
楼宇可视对讲 | 实时预览 | NET_DVR_RealPlay_V40 |
楼宇可视对讲 | 停止预览 | NET_DVR_StopRealPlay |
楼宇可视对讲 | 获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
楼宇可视对讲 | 获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
楼宇可视对讲 | 设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
楼宇可视对讲 | 预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
楼宇可视对讲 | 设置声音播放模式 | NET_DVR_SetAudioMode |
楼宇可视对讲 | 独占声卡模式下开启声音 | NET_DVR_OpenSound |
楼宇可视对讲 | 独占声卡模式下关闭声音 | NET_DVR_CloseSound |
楼宇可视对讲 | 共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
楼宇可视对讲 | 共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
楼宇可视对讲 | 调节播放音量 | NET_DVR_Volume |
楼宇可视对讲 | 注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
楼宇可视对讲 | 注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
楼宇可视对讲 | 捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
楼宇可视对讲 | 停止数据捕获 | NET_DVR_StopSaveRealData |
语音对讲 |  |  |
楼宇可视对讲 | 启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
楼宇可视对讲 | 设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
楼宇可视对讲 | 停止语音对讲 | NET_DVR_StopVoiceCom |
设备维护管理 |  |  |
楼宇可视对讲 | 设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
楼宇可视对讲 | 远程升级 | NET_DVR_Upgrade |
楼宇可视对讲 | 获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
楼宇可视对讲 | 获取远程升级的状态 | NET_DVR_GetUpgradeState |
楼宇可视对讲 | 关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
楼宇可视对讲 | 查找设备的日志信息 | NET_DVR_FindDVRLog_V30 |
楼宇可视对讲 | 逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
楼宇可视对讲 | 释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
楼宇可视对讲 | 恢复设备默认参数 | NET_DVR_RestoreConfig |
楼宇可视对讲 | 导出配置文件 | NET_DVR_GetConfigFile_V30 |
楼宇可视对讲 | 导出配置文件 | NET_DVR_GetConfigFile_EX |
楼宇可视对讲 | 导出配置文件 | NET_DVR_GetConfigFile |
楼宇可视对讲 | 导入配置文件 | NET_DVR_SetConfigFile_EX |
楼宇可视对讲 | 导入配置文件 | NET_DVR_SetConfigFile |
报警布防 |  |  |
楼宇可视对讲 | 设置报警信息回调函数 | NET_DVR_SetDVRMessageCallBack_V31 | 支持报警信息类型： COMM_UPLOAD_VIDEO_INTERCOM_EVENT： NET_DVR_VIDEO_INTERCOM_EVENT COMM_ALARM_VIDEO_INTERCOM： NET_DVR_VIDEO_INTERCOM_ALARM
楼宇可视对讲 | 布防，建立报警上传通道 | NET_DVR_SetupAlarmChan_V41 | (别墅门口机V1.1新增支持)
楼宇可视对讲 | 撤防，撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |  |
楼宇可视对讲 | 启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | 支持报警信息类型： COMM_UPLOAD_VIDEO_INTERCOM_EVENT： NET_DVR_VIDEO_INTERCOM_EVENT COMM_ALARM_VIDEO_INTERCOM： NET_DVR_VIDEO_INTERCOM_ALARM
楼宇可视对讲 | 停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程重启 |  |  |
楼宇可视对讲 | 重启设备 | NET_DVR_RebootDVR |


人脸门口机功能接口介绍

人脸门口机包括但不仅限于以下产品型号：
DS-KD9502-A(P)、DS-KD9502-AF。

人脸门口机除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、XML参数透传等。

功能 | 接口 | 相关参数
透传参数配置 | NET_DVR_STDXMLConfig | 详见接口链接描述
报警布防 |  |
设置报警信息回调函数 | NET_DVR_SetDVRMessageCallBack_V31 | 支持报警信息类型： COMM_UPLOAD_VIDEO_INTERCOM_EVENT： NET_DVR_VIDEO_INTERCOM_EVENT
布防，建立报警上传通道 | NET_DVR_SetupAlarmChan_V41 |
撤防，撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
报警监听 |  |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | 支持报警信息类型： COMM_UPLOAD_VIDEO_INTERCOM_EVENT： NET_DVR_VIDEO_INTERCOM_EVENT
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
卡参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置 | NET_DVR_StopRemoteConfig |
远程控制 |  |
清空门禁参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
人脸参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_FACE_PARAM_CFG、 NET_DVR_SET_FACE_PARAM_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令：NET_DVR_SET_FACE_PARAM_CFG
关闭长连接配置 | NET_DVR_StopRemoteConfig |
删除人脸参数 | NET_DVR_RemoteControl | 命令：NET_DVR_DEL_FACE_PARAM_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
清空门禁参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
人脸信息采集 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_CAPTURE_FACE_INFO
关闭长连接配置 | NET_DVR_StopRemoteConfig |
指纹信息采集 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_CAPTURE_FINGERPRINT_INFO
关闭长连接配置 | NET_DVR_StopRemoteConfig |
指纹参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_FINGERPRINT_CFG NET_DVR_SET_FINGERPRINT_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_FINGERPRINT_CFG
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
删除指纹参数 | NET_DVR_RemoteControl | 配置命令： NET_DVR_DEL_FINGERPRINT_CFG


门禁主机功能接口介绍

门禁主机包括但不仅限于以下产品型号：
DS-K2601(-G)、DS-K2602(-A/-G)、DS-K2604(-G)。

门禁主机除通用接口的功能外，还支持以下接口的功能，包括参数配置、 远程控制、报警上传和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_USER_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_SERIAL_ABILITY、 DEVICE_ABILITY_INFO(其中的事件能力EventAbility和安全认证能力SecurityAbility)
获取门禁主机报警能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_ABILITY_INFO(报警主机能力集AlarmHostAbility)
获取门禁能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ACS_ABILITY
获取门禁设备报警主机能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ALARMHOST_ABILITY
获取门禁设备总能力 | NET_DVR_STDXMLConfig | GET /ISAPI/AccessControl/capabilities
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： 1. COMM_ALARM_ACS（门禁报警信息）， 对应结构：NET_DVR_ACS_ALARM_INFO 2. COMM_ID_INFO_ALARM（身份证刷卡信息，人员通道V1.0新增）， 对应结构：NET_DVR_ID_CARD_INFO_ALARM 3. COMM_PASSNUM_INFO_ALARM(通行人数信息，人员通道V1.0新增)， 对应结构：NET_DVR_PASSNUM_INFO_ALARM 4. COMM_ISAPI_ALARM (证件抓拍比对事件，中端人证及访客V1.0新增)， 对应结构：COMM_ISAPI_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ZONEANDDST 结构体：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ZONEANDDST 结构体：NET_DVR_ZONEANDDST
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络参数V50（双监听） | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50 （三层架构门禁V1.0新增）
设置网络参数V50（双监听） | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50 （三层架构门禁V1.0新增）
获取多网卡参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_MULTI 结构体：NET_DVR_NETCFG_MULTI （三层架构门禁V1.0新增）
设置多网卡参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_MULTI 结构体：NET_DVR_NETCFG_MULTI （三层架构门禁V1.0新增）
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取安全认证配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SECURITY_CFG 结构体：NET_DVR_SECURITY_CFG
设置安全认证配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SECURITY_CFG 结构体：NET_DVR_SECURITY_CFG
获取短信相关参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SMSRELATIVEPARA 结构体：NET_DVR_SMSRELATIVEPARAM (V1.1新增支持)
设置短信相关参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SMSRELATIVEPARA 结构体：NET_DVR_SMSRELATIVEPARAM (V1.1新增支持)
获取上传中心网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_NETCFG 结构体：NET_DVR_ALARMHOST_NETCFG (V1.1新增支持)
设置上传中心网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_NETCFG 结构体：NET_DVR_ALARMHOST_NETCFG (V1.1新增支持)
获取无线网络参数配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG 结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG (V1.1新增支持)
设置无线网络参数配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG 结构体：NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG (V1.1新增支持)
获取数据上传方式参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 (V1.1新增支持)
设置数据上传方式参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 结构体：NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 (V1.1新增支持)
RS485/防区/触发器配置和控制 |  |
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
获取防区参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM
设置防区参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMIN_PARAM 结构体：NET_DVR_ALARMIN_PARAM
对防区布防 | NET_DVR_AlarmHostSetupAlarmChan |
对防区撤防 | NET_DVR_AlarmHostCloseAlarmChan |
获取触发器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMOUT_PARAM 结构体：NET_DVR_ALARMOUT_PARAM
设置触发器 | NET_DVR_SetAlarmHostOut |
设置触发器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMOUT_PARAM 结构体：NET_DVR_ALARMOUT_PARAM
获取设备状态(防区、触发器等) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMHOST_MAIN_STATUS 结构体：NET_DVR_ALARMHOST_MAIN_STATUS
用户配置 |  |
获取设备用户配置 | NET_DVR_GetAlarmDeviceUser |
设置设备用户配置 | NET_DVR_SetAlarmDeviceUser |
门禁相关参数配置 |  |
获取卡权限计划模板参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、 结构体：NET_DVR_PLAN_TEMPLATE
设置卡权限计划模板参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 结构体：NET_DVR_PLAN_TEMPLATE
获取卡权限周计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
设置卡权限周计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
获取卡权限假日计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50 结构体：NET_DVR_HOLIDAY_PLAN_CFG
设置卡权限假日计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50 结构体：NET_DVR_HOLIDAY_PLAN_CFG
获取卡权限假日组参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50 结构体：NET_DVR_HOLIDAY_GROUP_CFG
设置卡权限假日组参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50 结构体：NET_DVR_HOLIDAY_GROUP_CFG
获取事件/卡号联动配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG (扩展命令，兼容V1.1新增的NET_DVR_GET_EVENT_CARD_LINKAGE_CFG)
设置事件/卡号联动配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG (扩展命令，兼容V1.1新增的NET_DVR_SET_EVENT_CARD_LINKAGE_CFG)
获取门参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
设置门参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
获取门状态计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
设置门状态计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
获取门状态计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置门状态计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取门状态周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
设置门状态周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
获取门状态假日计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
设置门状态假日计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
获取门状态假日组参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
设置门状态假日组参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
获取读卡器验证计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
设置读卡器验证计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
获取读卡器验证方式计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置读卡器验证方式计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取读卡器验证方式周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
设置读卡器验证方式周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
获取读卡器验证方式假日计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
设置读卡器验证方式假日计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
获取读卡器验证方式假日组参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
设置读卡器验证方式假日组参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
获取群组参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GROUP_CFG 结构体：NET_DVR_GROUP_CFG
设置群组参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GROUP_CFG 结构体：NET_DVR_GROUP_CFG
获取多重卡参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MULTI_CARD_CFG 结构体：NET_DVR_MULTI_CARD_CFG
设置多重卡参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MULTI_CARD_CFG 结构体：NET_DVR_MULTI_CARD_CFG
获取反潜回参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SNEAK_CFG 结构体：NET_DVR_ANTI_SNEAK_CFG
设置反潜回参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SNEAK_CFG 结构体：NET_DVR_ANTI_SNEAK_CFG
获取读卡器反潜回参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_ANTI_SNEAK_CFG 结构体：NET_DVR_CARD_READER_ANTI_SNEAK_CFG
设置读卡器反潜回参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_ANTI_SNEAK_CFG 结构体：NET_DVR_CARD_READER_ANTI_SNEAK_CFG
获取多门互锁参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MULTI_DOOR_INTERLOCK_CFG 结构体：NET_DVR_MULTI_DOOR_INTERLOCK_CFG
设置多门互锁参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MULTI_DOOR_INTERLOCK_CFG 结构体：NET_DVR_MULTI_DOOR_INTERLOCK_CFG
获取门禁主机工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_WORK_STATUS_V50 结构体：NET_DVR_ACS_WORK_STATUS_V50
获取事件报警输入参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CASE_SENSOR_CFG 结构体：NET_DVR_CASE_SENSOR_CFG
设置事件报警输入参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CASE_SENSOR_CFG 结构体：NET_DVR_CASE_SENSOR_CFG
获取手机关联门权限参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PHONE_DOOR_RIGHT_CFG 结构体：NET_DVR_PHONE_DOOR_RIGHT_CFG (V1.1新增)
设置手机关联门权限参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PHONE_DOOR_RIGHT_CFG 结构体：NET_DVR_PHONE_DOOR_RIGHT_CFG (V1.1新增)
获取门禁主机参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_CFG 结构体：NET_DVR_ACS_CFG (V1.1新增)
设置门禁主机参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_CFG 结构体：NET_DVR_ACS_CFG (V1.1新增)
获取门禁主机串口外设参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_EXTERNAL_DEV_CFG 结构体：NET_DVR_ACS_EXTERNAL_DEV_CFG (人员通道V1.0新增)
设置门禁主机串口外设参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_EXTERNAL_DEV_CFG 结构体：NET_DVR_ACS_EXTERNAL_DEV_CFG (人员通道V1.0新增)
获取人员通道参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PERSONNEL_CHANNEL_CFG 结构体：NET_DVR_PERSONNEL_CHANNEL_CFG (人员通道V1.0新增)
设置人员通道参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PERSONNEL_CHANNEL_CFG 结构体：NET_DVR_PERSONNEL_CHANNEL_CFG (人员通道V1.0新增)
下发平台认证结果 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PLATFORM_VERIFY_CFG 结构体：NET_DVR_PLATFORM_VERIFY_CFG (人员通道V1.1新增)
获取人数统计参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PERSON_STATISTICS_CFG 结构体：NET_DVR_PERSON_STATISTICS_CFG (人员通道V1.1新增)
设置人数统计参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PERSON_STATISTICS_CFG 结构体：NET_DVR_PERSON_STATISTICS_CFG (人员通道V1.1新增)
获取屏幕字符串显示参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_SCREEN_DISPLAY_CFG 结构体：NET_DVR_ACS_SCREEN_DISPLAY_CFG (人员通道V1.1新增)
设置屏幕字符串显示参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_SCREEN_DISPLAY_CFG 结构体：NET_DVR_ACS_SCREEN_DISPLAY_CFG (人员通道V1.1新增)
获取人员通道闸门时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GATE_TIME_CFG 结构体：NET_DVR_GATE_TIME_CFG (人员通道V1.1新增)
设置人员通道闸门时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GATE_TIME_CFG 结构体：NET_DVR_GATE_TIME_CFG (人员通道V1.1新增)
获取事件及卡号联动参数配置(V51) | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG_V51
设置事件及卡号联动参数配置(V51) | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG_V51
获取多重卡认证模式参数V50 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MULTI_CARD_CFG_V50 结构体：NET_DVR_MULTI_CARD_CFG_V50
设置多重卡认证模式参数V50 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MULTI_CARD_CFG_V50 结构体：NET_DVR_MULTI_CARD_CFG_V50
卡参数配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
指纹管理配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_FINGERPRINT_CFG NET_DVR_SET_FINGERPRINT_CFG (V1.1新增)
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_FINGERPRINT_CFG (V1.1新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
删除指纹参数 | NET_DVR_RemoteControl | 配置命令： NET_DVR_DEL_FINGERPRINT_CFG (V1.1新增)
卡密码开门使能配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_PASSWD_CFG NET_DVR_SET_CARD_PASSWD_CFG (V1.1新增)
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_CARD_PASSWD_CFG (V1.1新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
就地控制器状态及搜索在线就地控制器 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_LOCAL_CONTROLLER_STATUS NET_DVR_GET_ONLINE_LOCAL_CONTROLLER (三层架构门禁V1.0新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
就地控制器管理 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | (三层架构门禁V1.0新增)
就地控制器控制 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | (三层架构门禁V1.0新增)
USB设备管理 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | (三层架构门禁V1.0新增)
韦根规则 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/WiegandRuleCfg/capabilities 获取：GET /ISAPI/AccessControl/WiegandRuleCfg 配置：PUT /ISAPI/AccessControl/WiegandRuleCfg
M1卡加密验证 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/M1CardEncryptCfg/capabilities 获取：GET /ISAPI/AccessControl/M1CardEncryptCfg 配置：PUT /ISAPI/AccessControl/M1CardEncryptCfg
布防信息获取 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/DeployInfo/capabilities 获取：GET /ISAPI/AccessControl/DeployInfo 配置：PUT /ISAPI/AccessControl/DeployInfo
跨主机反潜回服务器 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/SubmarineBack/capabilities 获取：GET /ISAPI/AccessControl/SubmarineBack 配置：PUT /ISAPI/AccessControl/SubmarineBack
加入跨主机反潜回主机 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/SubmarineBackHostInfo/capabilities 获取：GET /ISAPI/AccessControl/SubmarineBackHostInfo/ConfigureNo/<ID> 配置：PUT /ISAPI/AccessControl/SubmarineBackHostInfo/ConfigureNo/<ID>
起始读卡器 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/StartReaderInfo/capabilities 获取：GET /ISAPI/AccessControl/StartReaderInfo 配置：PUT /ISAPI/AccessControl/StartReaderInfo
跨主机反潜回读卡器 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/SubmarineBackReader/capabilities 获取：GET /ISAPI/AccessControl/SubmarineBackReader/ConfigureNo/<ID> 配置：PUT /ISAPI/AccessControl/SubmarineBackReader/ConfigureNo/<ID>
服务器跨主机反潜回刷卡记录清除 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ClearCardRecord/capabilities 配置：PUT /ISAPI/AccessControl/ClearCardRecord
跨主机反潜回模式 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/SubmarineBackMode/capabilities 获取：GET /ISAPI/AccessControl/SubmarineBackMode 配置：PUT /ISAPI/AccessControl/SubmarineBackMode
跨主机反潜回信息清除 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ClearSubmarineBack/capabilities 配置：PUT /ISAPI/AccessControl/ClearSubmarineBack
加入跨主机反潜回 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ServerDevice/capabilities 获取：GET /ISAPI/AccessControl/ServerDevice 配置：PUT /ISAPI/AccessControl/ServerDevice
读卡器跨主机反潜回 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ReaderAcrossHost/capabilities 获取：GET /ISAPI/AccessControl/ReaderAcrossHost 配置：PUT /ISAPI/AccessControl/ReaderAcrossHost
门禁事件获取 |  |
ISAPI协议命令透传 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/GetAcsEvent/capabilities
防区/触发器和外接模块（V50） |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM NET_DVR_GET_ALARMHOST_TRIGGER_LIST NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE (三层架构门禁V1.0新增)
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令： NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM NET_DVR_GET_ALARMHOST_TRIGGER_LIST (三层架构门禁V1.0新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
设备事件获取 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_ACS_EVENT
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
删除指纹参数配置V50 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_DEL_FINGERPRINT_CFG_V50
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
远程控制 |  |
清空门禁主机参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
门禁控制 |  |
门禁控制 | NET_DVR_ControlGateway |
设备维护管理 |  |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade_V40 | 升级类型：ENUM_UPGRADE_DVR、ENUM_UPGRADE_ACS
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
恢复设备默认参数 | NET_DVR_RestoreConfig |
重启设备 | NET_DVR_RebootDVR |


指纹门禁一体机功能接口介绍

指纹门禁一体机包括但不仅限于以下产品型号：
DS-K1T105C(-C)、DS-K1T105E(-C)、DS-K1T105M(-C)、DS-K1T200CF(-C)、DS-K1T200EF(-C)、DS-K1T200MF(-C)、DS-K1T300CF(-C)、DS-K1T300EF(-C)、DS-K1T300MF(-C)。

指纹门禁一体机除通用接口的功能外，还支持以下接口的功能，包括参数配置、 远程控制、报警上传和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_SERIAL_ABILITY、 DEVICE_JPEG_CAP_ABILITY、 DEVICE_ABILITY_INFO(设备协议接入能力AccessProtocolAbility)
获取智能能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_ABILITY_INFO(智能通道分析能力VcaChanAbility)
获取门禁能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ACS_ABILITY
获取门禁ISAPI能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/capabilities (V1.1新增)
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： COMM_ALARM_ACS （报警信息结构：NET_DVR_ACS_ALARM_INFO）
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取IP监控设备无线参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WIFI_CFG 结构体：NET_DVR_WIFI_CFG
设置IP监控设备无线参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WIFI_CFG 结构体：NET_DVR_WIFI_CFG
RS485参数配置 |  |
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
门禁相关参数配置 |  |
获取卡权限计划模板参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、 结构体：NET_DVR_PLAN_TEMPLATE
设置卡权限计划模板参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 结构体：NET_DVR_PLAN_TEMPLATE
获取卡权限周计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
设置卡权限周计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
获取卡权限假日计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50 结构体：NET_DVR_HOLIDAY_PLAN_CFG
设置卡权限假日计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50 结构体：NET_DVR_HOLIDAY_PLAN_CFG
获取卡权限假日组参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50 结构体：NET_DVR_HOLIDAY_GROUP_CFG
设置卡权限假日组参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50 结构体：NET_DVR_HOLIDAY_GROUP_CFG
获取事件/卡号联动配置 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG
设置事件/卡号联动配置 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG
获取门参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
设置门参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
获取门状态计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
设置门状态计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
获取门状态计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置门状态计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取门状态周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
设置门状态周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
获取门状态假日计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
设置门状态假日计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
获取门状态假日组参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
设置门状态假日组参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
获取读卡器验证计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
设置读卡器验证计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
获取读卡器验证方式计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置读卡器验证方式计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取读卡器验证方式周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
设置读卡器验证方式周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
获取读卡器验证方式假日计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
设置读卡器验证方式假日计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_HOLIDAY_PLAN 结构体：NET_DVR_HOLIDAY_PLAN_CFG
获取读卡器验证方式假日组参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
设置读卡器验证方式假日组参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_HOLIDAY_GROUP 结构体：NET_DVR_HOLIDAY_GROUP_CFG
获取反潜回参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SNEAK_CFG 结构体：NET_DVR_ANTI_SNEAK_CFG
设置反潜回参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SNEAK_CFG 结构体：NET_DVR_ANTI_SNEAK_CFG
获取读卡器反潜回参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_ANTI_SNEAK_CFG 结构体：NET_DVR_CARD_READER_ANTI_SNEAK_CFG
设置读卡器反潜回参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_ANTI_SNEAK_CFG 结构体：NET_DVR_CARD_READER_ANTI_SNEAK_CFG
获取门禁一体机工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_WORK_STATUS_V50 结构体：NET_DVR_ACS_WORK_STATUS_V50
获取门禁一体机参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_CFG 结构体：NET_DVR_ACS_CFG
设置门禁一体机参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_CFG 结构体：NET_DVR_ACS_CFG
获取人脸检测规则 | NET_DVR_GetDVRConfig | 命令：NET_VCA_GET_FACEDETECT_RULECFG_V41 结构体：NET_DVR_FACEDETECT_RULECFG_V41
设置人脸检测规则 | NET_DVR_SetDVRConfig | 命令：NET_VCA_SET_FACEDETECT_RULECFG_V41 结构体：NET_DVR_FACEDETECT_RULECFG_V41
获取卡号关联用户信息参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_USERINFO_CFG 结构体：NET_DVR_CARD_USER_INFO_CFG
设置卡号关联用户信息参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_USERINFO_CFG 结构体：NET_DVR_CARD_USER_INFO_CFG
卡参数配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
指纹管理配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_FINGERPRINT_CFG NET_DVR_SET_FINGERPRINT_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_FINGERPRINT_CFG
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
删除指纹参数 | NET_DVR_RemoteControl | 配置命令： NET_DVR_DEL_FINGERPRINT_CFG
卡密码开门使能配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_PASSWD_CFG NET_DVR_SET_CARD_PASSWD_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_CARD_PASSWD_CFG
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
韦根配置 |  |
韦根配置 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/WiegandCfg/capabilities 获取：GET /ISAPI/AccessControl/WiegandCfg/wiegandNo/<ID> 设置：PUT /ISAPI/AccessControl/WiegandCfg/wiegandNo/<ID> (V1.1新增)
门控安全模块状态 |  |
获取门控安全模块状态 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus/capabilities 获取：GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus (V1.1新增)
远程控制 |  |
清空门禁一体机参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
门禁控制 |  |
门禁控制 | NET_DVR_ControlGateway |
联动抓拍参数配置 |  |
联动抓拍参数 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/SnapConfig/capabilities 获取：GET /ISAPI/AccessControl/SnapConfig (V1.1新增)
设置联动抓拍参数 | NET_DVR_ContinuousShoot |
手动抓拍 |  |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
人员信息管理 |  |
人员信息及权限删除 | NET_DVR_STDXMLConfig | 人员信息及权限删除（按工号删除、删除所有）：PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json 人员信息及权限删除能力能力集：GET /ISAPI/AccessControl/UserInfoDetail/Delete/capabilities?format=json
查询人员信息及权限删除进度 | NET_DVR_StartRemoteConfig： | 命令：GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json
指纹管理 |  |
指纹管理配置 | NET_DVR_StartRemoteConfig： | 命令：获取指纹配置参数命令：NET_DVR_GET_FINGERPRINT_CFG_V50； 设置指纹配置参数命令：NET_DVR_SET_FINGERPRINT_CFG_V50
HTTP/RTSP使能配置 |  |
获取HTTP/RTSP使能配置 | NET_DVR_STDXMLConfig： | 命令： 获取HTTP/RTSP使能配置：GET /ISAPI/Security/adminAccesses； 设置 HTTP/RTSP使能配置：PUT /ISAPI/Security/adminAccesses； 获取HTTP/RTSP单个使能配置: GET /ISAPI/Security/adminAccesses/<id>； 设置HTTP/RTSP单个使能配置: PUT /ISAPI/Security/adminAccesses/<id>。
指纹参数配置 |  |
指纹参数配置 | NET_DVR_STDXMLConfig： | 命令： 获取指纹参数配置能力:GET /ISAPI/AccessControl/FingerPrintCfg/capabilities?format=json; 指纹参数下发：POST /ISAPI/AccessControl/FingerPrintDownload?format=json； 获取指纹参数下发进度：GET /ISAPI/AccessControl/FingerPrintProgress?format=json； 指纹参数修改: POST /ISAPI/AccessControl/FingerPrintModify?format=json； 获取指纹参数: POST /ISAPI/AccessControl/FingerPrintUpload?format=json； 设置指纹参数: POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json。
远程控制读卡器蜂鸣器 |  |
远程控制读卡器蜂鸣器 | NET_DVR_STDXMLConfig： | 命令： 获取远程控制读卡器蜂鸣器能力集：GET /ISAPI/AccessControl/RemoteControl/buzzer/capabilities?format=json； 配置远程控制读卡器蜂鸣器:PUT /ISAPI/AccessControl/RemoteControl/buzzer/<id>?format=json
门禁设备事件获取 |  |
门禁设备事件获取 | NET_DVR_STDXMLConfig： | 命令：获取门禁设备事件总条数获取能力：GET /ISAPI/AccessControl/AcsEventTotalNum/capabilities?format=json; 门禁设备事件总条数获取:POST /ISAPI/AccessControl/AcsEventTotalNum?format=json ; 获取布防信息能力集: GET /ISAPI/AccessControl/DeployInfo/capabilities； 获取布防信息: GET /ISAPI/AccessControl/DeployInfo； 获取日志模式配置能力集: GET /ISAPI/AccessControl/LogModeCfg/capabilities?format=json； 获取日志模式配置: GET /ISAPI/AccessControl/LogModeCfg?format=json； 设置日志模式配置:PUT /ISAPI/AccessControl/LogModeCfg?format=json； 获取事件优化配置能力集: GET /ISAPI/AccessControl/EventOptimizationCfg/capabilities?format=json； 获取事件优化配置:GET /ISAPI/AccessControl/EventOptimizationCfg?format=json; 设置事件优化配置:PUT /ISAPI/AccessControl/EventOptimizationCfg?format=json。
备内反潜回记录清除 |  |
备内反潜回记录清除 | NET_DVR_STDXMLConfig： | 命令： 获取设备内反潜回记录清除能力：GET /ISAPI/AccessControl/ClearAntiSneak/capabilities?format=json； 设备内反潜回记录清除：PUT /ISAPI/AccessControl/ClearAntiSneak?format=json。
OSDP读卡器状态 |  |
OSDP读卡器状态 | NET_DVR_STDXMLConfig： | 命令： 获取OSDP读卡器状态查询能力集：GET /ISAPI/AccessControl/OSDPStatus/capabilities?format=json； OSDP读卡器状态查询：GET /ISAPI/AccessControl/OSDPStatus/<id>?format=json； OSDP读卡器ID修改能力：GET /ISAPI/AccessControl/OSDPModify/capabilities?format=json； OSDP读卡器ID修改：PUT /ISAPI/AccessControl/OSDPModify/<id>?format=json。
设备维护管理 |  |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade_V40 | 升级类型：ENUM_UPGRADE_DVR、ENUM_UPGRADE_ACS
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
恢复设备默认参数 | NET_DVR_RestoreConfig |
重启设备 | NET_DVR_RebootDVR |


智能身份识别终端功能接口介绍

智能身份识别终端包括但不仅限于以下产品型号：
立式智能身份识别终端：DS-K5601A、DS-K5601AF；
台式智能身份识别终端：DS-K5602、DS-K5602F、DS-K5602A、DS-K5602AF。

智能身份识别终端除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、报警上传和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_SERIAL_ABILITY
获取智能能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_ABILITY_INFO(智能通道分析能力VcaChanAbility)
获取门禁能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ACS_ABILITY
获取门禁ISAPI能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/capabilities (V1.1新增)
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： 1. COMM_ALARM_ACS（门禁报警信息）， 对应结构：NET_DVR_ACS_ALARM_INFO 2. COMM_ID_INFO_ALARM（身份证刷卡信息，人员通道V1.0新增）， 对应结构：NET_DVR_ID_CARD_INFO_ALARM
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
RS485参数配置 |  |
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
门禁相关参数配置 |  |
获取卡权限计划模板参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、 结构体：NET_DVR_PLAN_TEMPLATE
设置卡权限计划模板参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 结构体：NET_DVR_PLAN_TEMPLATE
获取卡权限周计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
设置卡权限周计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
获取门参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
设置门参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
获取门状态计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
设置门状态计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
获取门状态计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
设置门状态计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
获取门状态周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
设置门状态周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
获取读卡器验证计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
设置读卡器验证计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
获取读卡器验证方式计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置读卡器验证方式计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取读卡器验证方式周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
设置读卡器验证方式周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
获取门禁主机工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_WORK_STATUS_V50 结构体：NET_DVR_ACS_WORK_STATUS_V50
获取门禁参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_CFG 结构体：NET_DVR_ACS_CFG
设置门禁参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_CFG 结构体：NET_DVR_ACS_CFG
获取卡号关联用户信息参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_USERINFO_CFG 结构体：NET_DVR_CARD_USER_INFO_CFG
设置卡号关联用户信息参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_USERINFO_CFG 结构体：NET_DVR_CARD_USER_INFO_CFG
终端参数配置 |  |
智能身份识别终端参数配置 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/IdentityTerminal/capabilities 获取：GET /ISAPI/AccessControl/IdentityTerminal 设置：PUT /ISAPI/AccessControl/IdentityTerminal
人脸比对约束条件参数配置（用于人行通道场景中） | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/FaceCompareCond/capabilities 获取：GET /ISAPI/AccessControl/FaceCompareCond 设置：PUT /ISAPI/AccessControl/FaceCompareCond
人脸参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_FACE_PARAM_CFG、 NET_DVR_SET_FACE_PARAM_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令：NET_DVR_SET_FACE_PARAM_CFG
关闭长连接配置 | NET_DVR_StopRemoteConfig |
删除人脸参数 | NET_DVR_RemoteControl | 命令：NET_DVR_DEL_FACE_PARAM_CFG
身份登记查询 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_REGISTER_INFO
关闭长连接配置 | NET_DVR_StopRemoteConfig |
身份证非授权名单文件上传下载 |  |
下载身份证非授权名单模板 | NET_DVR_StartDownload | 配置命令： NET_SDK_DOWNLOAD_CERTIFICATE_BLOCKLIST_TEMPLET
获取文件下载的进度和状态 | NET_DVR_GetDownloadState |
停止文件下载 | NET_DVR_StopDownload |
上传身份证非授权名单列表 | NET_DVR_UploadFile_V40 | 配置命令： UPLOAD_CERTIFICATE_BLOCKLIST
获取文件上传的进度和状态 | NET_DVR_GetUploadState |
停止文件上传 | NET_DVR_UploadClose |
卡参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置 | NET_DVR_StopRemoteConfig |
批量上传非授权名单图片 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE
关闭长连接配置 | NET_DVR_StopRemoteConfig |
批量上传身份证非授权名单 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_BULK_UPLOAD_ID_BLOCKLIST
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_BULK_UPLOAD_ID_BLOCKLIST
关闭长连接配置 | NET_DVR_StopRemoteConfig |
指纹参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_FINGERPRINT_CFG NET_DVR_SET_FINGERPRINT_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_FINGERPRINT_CFG
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
删除指纹参数 | NET_DVR_RemoteControl | 配置命令： NET_DVR_DEL_FINGERPRINT_CFG
远程控制 |  |
清空门禁参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，设备密码和网络参数不会恢复出厂默认
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
重启设备 | NET_DVR_RebootDVR |


梯控主机功能接口介绍

梯控主机包括但不仅限于以下产品型号：
DS-K1200SF、DS-K2210、DS-K2M0016A、DS-K2M0032A。

梯控主机除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、报警上传和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_NETAPP_ABILITY
获取门禁能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ACS_ABILITY
获取门禁ISAPI能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/capabilities
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型： COMM_ALARM_ACS（门禁报警信息）， 对应结构体：NET_DVR_ACS_ALARM_INFO
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
梯控相关参数配置 |  |
获取卡权限计划模板参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、 结构体：NET_DVR_PLAN_TEMPLATE
设置卡权限计划模板参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 结构体：NET_DVR_PLAN_TEMPLATE
获取卡权限周计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
设置卡权限周计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
获取梯控楼层参数(一个门对应一个楼层) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
设置梯控楼层参数(一个门对应一个楼层) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
获取梯控计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
设置梯控计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
获取梯控计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
设置梯控计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
获取梯控周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
设置梯控周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
获取读卡器验证计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
设置读卡器验证计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
获取读卡器验证方式计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置读卡器验证方式计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取读卡器验证方式周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
设置读卡器验证方式周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
获取门禁主机工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_WORK_STATUS_V50 结构体：NET_DVR_ACS_WORK_STATUS_V50
获取群组参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GROUP_CFG 结构体：NET_DVR_GROUP_CFG
设置群组参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GROUP_CFG 结构体：NET_DVR_GROUP_CFG
获取事件或卡号联动配置参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG_V50
设置事件或卡号联动配置参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG_V50
梯控继电器配置 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/LadderControlRelay/capabilities 获取：GET /ISAPI/AccessControl/LadderControlRelay/FloorNo/<ID> 设置：PUT /ISAPI/AccessControl/LadderControlRelay/FloorNo/<ID>
卡参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置 | NET_DVR_StopRemoteConfig |
获取分控器状态 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_LOCAL_CONTROLLER_STATUS
关闭长连接配置 | NET_DVR_StopRemoteConfig |
远程控梯 |  |
远程控梯 | NET_DVR_ControlGateway |
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，设备密码和网络参数不会恢复出厂默认
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
重启设备 | NET_DVR_RebootDVR |


人脸抓拍门禁一体机功能接口介绍

人脸抓拍门禁一体机包括但不仅限于以下产品型号：
DS-K1T600M、DS-K1T600E、DS-K1T600S、DS-K1T600MT、DS-K1T600ET、DS-K1T600ST、DS-K1T600MF、DS-K1T600EF、DS-K1T600SF、DS-K1T600MFT、DS-K1T600EFT、DS-K1T600SFT。

人脸抓拍门禁一体机除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、报警上传和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY、 DEVICE_JPEG_CAP_ABILITY、 DEVICE_SERIAL_ABILITY
获取门禁能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ACS_ABILITY
获取门禁ISAPI能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/capabilities (V1.1新增)
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： 1. COMM_ALARM_ACS（门禁报警信息）， 对应结构：NET_DVR_ACS_ALARM_INFO
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
RS485参数配置 |  |
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
门禁相关参数配置 |  |
获取卡权限计划模板参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、 结构体：NET_DVR_PLAN_TEMPLATE
设置卡权限计划模板参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 结构体：NET_DVR_PLAN_TEMPLATE
获取卡权限周计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
设置卡权限周计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
获取门参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
设置门参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
获取门状态计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
设置门状态计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
获取门状态计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
设置门状态计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
获取门状态周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
设置门状态周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
获取读卡器验证计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
设置读卡器验证计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
获取读卡器验证方式计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置读卡器验证方式计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取读卡器验证方式周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
设置读卡器验证方式周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
获取门禁主机工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_WORK_STATUS_V50 结构体：NET_DVR_ACS_WORK_STATUS_V50
获取事件或卡号联动配置参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG
设置事件或卡号联动配置参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG
卡参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置 | NET_DVR_StopRemoteConfig |
指纹参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_FINGERPRINT_CFG NET_DVR_SET_FINGERPRINT_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_SET_FINGERPRINT_CFG
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
删除指纹参数 | NET_DVR_RemoteControl | 配置命令： NET_DVR_DEL_FINGERPRINT_CFG
远程控制 |  |
清空门禁参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
人脸参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_FACE_PARAM_CFG、 NET_DVR_SET_FACE_PARAM_CFG
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令：NET_DVR_SET_FACE_PARAM_CFG
关闭长连接配置 | NET_DVR_StopRemoteConfig |
删除人脸参数 | NET_DVR_RemoteControl | 命令：NET_DVR_DEL_FACE_PARAM_CFG
指纹信息采集 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_CAPTURE_FINGERPRINT_INFO
关闭长连接配置 | NET_DVR_StopRemoteConfig |
人脸信息采集 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_CAPTURE_FACE_INFO
关闭长连接配置 | NET_DVR_StopRemoteConfig |
韦根配置 |  |
韦根配置 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/WiegandCfg/capabilities 获取：GET /ISAPI/AccessControl/WiegandCfg/wiegandNo/<ID> 设置：PUT /ISAPI/AccessControl/WiegandCfg/wiegandNo/<ID>
门控安全模块状态 |  |
获取门控安全模块状态 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus/capabilities 获取：GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus
联动抓拍参数配置 |  |
联动抓拍参数 | NET_DVR_STDXMLConfig | 能力集：GET /ISAPI/AccessControl/SnapConfig/capabilities 获取：GET /ISAPI/AccessControl/SnapConfig
设置联动抓拍参数 | NET_DVR_ContinuousShoot |
新增智能身份识别终端参数配置接口 |  |
智能身份识别终端参数能力集 | NET_DVR_STDXMLConfig | 获取智能身份识别终端参数能力集: GET /ISAPI/AccessControl/IdentityTerminal/capabilities 获取智能身份识别终端参数: GET /ISAPI/AccessControl/IdentityTerminal 设置智能身份识别终端参数: PUT /ISAPI/AccessControl/IdentityTerminal
手动抓拍 |  |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，设备密码和网络参数不会恢复出厂默认
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
重启设备 | NET_DVR_RebootDVR |


人行通道功能接口介绍

人行通道包括但不仅限于以下产品型号：
DS-K3BB2-D、DS-K3BB2G-D、DS-K3BA1-D、DS-K3BA4-D。

人行通道除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、报警上传和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备通用能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETWORK_ABILITY
获取门禁能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ACS_ABILITY
获取门禁ISAPI能力集 | NET_DVR_STDXMLConfig | 命令：GET /ISAPI/AccessControl/capabilities (V1.1新增)
客户端报警布防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： 1. COMM_ALARM_ACS（门禁报警信息）， 对应结构：NET_DVR_ACS_ALARM_INFO
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
RS485参数配置 |  |
获取RS485参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
设置RS485参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARM_RS485CFG 结构体：NET_DVR_ALARM_RS485CFG
门禁相关参数配置 |  |
获取卡权限计划模板参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、 结构体：NET_DVR_PLAN_TEMPLATE
设置卡权限计划模板参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 结构体：NET_DVR_PLAN_TEMPLATE
获取卡权限周计划参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
设置卡权限周计划参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 结构体：NET_DVR_WEEK_PLAN_CFG
获取门参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
设置门参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_CFG 结构体：NET_DVR_DOOR_CFG
获取门状态计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
设置门状态计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN 结构体：NET_DVR_DOOR_STATUS_PLAN
获取门状态计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
设置门状态计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 结构体：NET_DVR_PLAN_TEMPLATE
获取门状态周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
设置门状态周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_WEEK_PLAN_CFG 结构体：NET_DVR_WEEK_PLAN_CFG
获取读卡器参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
设置读卡器参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_CFG_V50 结构体：NET_DVR_CARD_READER_CFG_V50
获取读卡器验证计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
设置读卡器验证计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_CARD_READER_PLAN 结构体：NET_DVR_CARD_READER_PLAN
获取读卡器验证方式计划模板参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
设置读卡器验证方式计划模板参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_PLAN_TEMPLATE 结构体： NET_DVR_PLAN_TEMPLATE
获取读卡器验证方式周计划参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
设置读卡器验证方式周计划参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VERIFY_WEEK_PLAN 结构体：NET_DVR_WEEK_PLAN_CFG
获取门禁主机工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_WORK_STATUS_V50 结构体：NET_DVR_ACS_WORK_STATUS_V50
获取事件或卡号联动配置参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG
设置事件或卡号联动配置参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG
获取遥控器权限参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG 结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG (V2.1.0新增支持)
设置遥控器权限参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG 结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG (V2.1.0新增支持)
获取人数统计参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PERSON_STATISTICS_CFG 结构体：NET_DVR_PERSON_STATISTICS_CFG (人员通道V1.1新增)
设置人数统计参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PERSON_STATISTICS_CFG 结构体：NET_DVR_PERSON_STATISTICS_CFG (人员通道V1.1新增)
获取人员通道闸门时间参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_GATE_TIME_CFG 结构体：NET_DVR_GATE_TIME_CFG (人员通道V1.1新增)
设置人员通道闸门时间参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_GATE_TIME_CFG 结构体：NET_DVR_GATE_TIME_CFG (人员通道V1.1新增)
获取门禁主机串口外设参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_EXTERNAL_DEV_CFG 结构体：NET_DVR_ACS_EXTERNAL_DEV_CFG (人员通道V1.0新增)
设置门禁主机串口外设参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_EXTERNAL_DEV_CFG 结构体：NET_DVR_ACS_EXTERNAL_DEV_CFG (人员通道V1.0新增)
获取屏幕字符串显示参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ACS_SCREEN_DISPLAY_CFG 结构体：NET_DVR_ACS_SCREEN_DISPLAY_CFG (人员通道V1.1新增)
设置屏幕字符串显示参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ACS_SCREEN_DISPLAY_CFG 结构体：NET_DVR_ACS_SCREEN_DISPLAY_CFG (人员通道V1.1新增)
下发平台认证结果 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PLATFORM_VERIFY_CFG 结构体：NET_DVR_PLATFORM_VERIFY_CFG (人员通道V1.1新增)
权限控制器音频文件参数配置 | NET_DVR_STDXMLConfig | 命令： 获取权限控制器音频文件能力集：GET /ISAPI/AccessControl/RightControllerAudio/capabilities； 获取权限控制器音频文件参数配置：GET /ISAPI/AccessControl/RightControllerAudio/<ID>； 设置权限控制器音频文件参数配置：PUT /ISAPI/AccessControl/RightControllerAudio/<ID>； 删除权限控制器音频文件参数配置：DELETE /ISAPI/AccessControl/RightControllerAudio/<ID>。
通道控制器配置功能 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ChannelControllerCfg/capabilities； 获取：GET /ISAPI/AccessControl/ChannelControllerCfg； 设置：PUT /ISAPI/AccessControl/ChannelControllerCfg。
闸机本地拨码及信息获取功能 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/GateDialAndInfo/capabilities； 获取：GET /ISAPI/AccessControl/GateDialAndInfo。
闸机状态获取 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/GateStatus/capabilities； 获取：GET /ISAPI/AccessControl/GateStatus。
闸机红外状态 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/GateIRStatus/capabilities； 获取：GET /ISAPI/AccessControl/GateIRStatus。
闸机相关器件状态 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/GateRelatedPartsStatus/capabilities； 获取：GET /ISAPI/AccessControl/GateRelatedPartsStatus。
通道控制器报警联动 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ChannelControllerAlarmLinkage/capabilities； 获取：GET /ISAPI/AccessControl/ChannelControllerAlarmLinkage； 设置：PUT /ISAPI/AccessControl/ChannelControllerAlarmLinkage。
通道控制器报警输出 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ChannelControllerAlarmOut/capabilities； 获取：GET /ISAPI/AccessControl/ChannelControllerAlarmOut?controllerType=Master&alarmOutNo=1； 设置：PUT /ISAPI/AccessControl/ChannelControllerAlarmOut?controllerType=Master&alarmOutNo=1。
通道控制器报警输出控制 | NET_DVR_STDXMLConfig | 命令： 能力集：GET /ISAPI/AccessControl/ChannelControllerAlarmOutControl/capabilities； 设置：PUT /ISAPI/AccessControl/ChannelControllerAlarmOutControl。
获取所有遥控器用户 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令：NET_DVR_GET_ALL_REMOTECONTROLLER_LIST(获取所有遥控器，V2.1.0新增支持)
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令：NET_DVR_GET_ALL_REMOTECONTROLLER_LIST(获取所有遥控器，V2.1.0新增支持)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig |
卡参数管理 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
发送长连接数据 | NET_DVR_SendRemoteConfig | 配置命令： NET_DVR_GET_CARD_CFG_V50、 NET_DVR_SET_CARD_CFG_V50
关闭长连接配置 | NET_DVR_StopRemoteConfig |
远程控制 |  |
清空门禁参数 | NET_DVR_RemoteControl | 控制命令： NET_DVR_CLEAR_ACS_PARAM
权限控制器音频文件 |  |
上传权限控制器音频文件 | NET_DVR_UploadFile_V40 | 控制命令： UPLOAD_RIGHT_CONTROLLER_AUDIO
获取上传状态 | NET_DVR_GetUploadState |
结束上传 | NET_DVR_UploadClose |
下载权限控制器音频文件 | NET_DVR_StartDownload | 控制命令： NET_SDK_DOWNLOAD_RIGHT_CONTROLLER_AUDIO
获取下载状态 | NET_DVR_GetDownloadState |
结束下载 | NET_DVR_StopDownload |

设备维护管理 恢复设备默认参数 NET_DVR_RestoreConfig 简单恢复，设备密码和网络参数不会恢复出厂默认 设置完全恢复出厂值 NET_DVR_RemoteControl 命令：NET_DVR_COMPLETE_RESTORE_CTRL 重启设备 NET_DVR_RebootDVR


转码设备功能接口介绍

转码设备包括但不仅限于以下产品型号：
DS-68xxT

除通用接口的功能外，还支持以下接口的功能，包括预览、被动转码和远程参数配置等。

功能 | 接口 | 相关参数
远程参数配置 |  |
获取流的来源信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_STREAM_SRC_INFO， 结构体：NET_DVR_STREAM_SRC_INFO
设置流的来源信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_STREAM_SRC_INFO， 结构体：NET_DVR_STREAM_SRC_INFO
获取目标压缩参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_STREAM_DST_COMPRESSIONINFO， 结构体：NET_DVR_COMPRESSIONCFG_V30
设置目标压缩参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_STREAM_DST_COMPRESSIONINFO， 结构体：NET_DVR_COMPRESSIONCFG_V30
获取所有流信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_ALLSTREAM_SRC_INFO， 结构体：NET_DVR_STREAM_SRC_CFG
获取转码设备工作模式 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEV_WORK_MODE
设置转码设备工作模式 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEV_WORK_MODE
获取自动重启参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUTO_REBOOT_CFG
设置自动重启参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUTO_REBOOT_CFG
获取多网卡配置 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
设置多网卡配置 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
设置设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V30
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V30
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V30
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V30
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V30
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
获取设备报警输出 | NET_DVR_GetAlarmOut |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取IPC协议列表 |  |
获取设备支持的IPC协议表 | NET_DVR_GetIPCProtoList |
被动转码 |  |
启动被动转码 | NET_DVR_StartPassiveTransCode |
向被动转码通道发送数据 | NET_DVR_TransCodeInputData |
停止被动转码 | NET_DVR_StopPassiveTransCode |
根据转码句柄获取设备转码通道号 | NET_DVR_GetPassiveTransChanNum |
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V40 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | COMM_ALARM_V30： NET_DVR_ALARMINFO_V30
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 | COMM_ALARM_V30： NET_DVR_ALARMINFO_V30
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
设备维护管理 |  |
获取转码码流状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_STREAM_TRANS_STATUS， 结构体：NET_DVR_TRANSSTATUS
获取转码设备状态 | NET_DVR_GetDeviceStatus | 命令：NET_DVR_GET_DEVICE_TRANS_STATUS， 结构体：NET_DVR_TRANSDEVICE_STATUS
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile_EX |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |


LCD拼接屏功能接口介绍

LCD拼接屏包括但不仅限于以下产品型号：
DS-D2046NL、DS-D2046NL-B、DS-D2046NH-B

除通用接口的功能外，还支持以下接口的功能，包括远程参数配置、动态解码、设备维护管理等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETAPP_ABILITY、 DECODER_ABILITY
获取LCD拼接屏能力集 | NET_DVR_GetDeviceAbility | 能力集类型：LCD_SCREEN_ABILITY 能力集：LCD拼接屏能力XML描述
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取屏幕信号源参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_SIGNAL_CFG 结构体：NET_DVR_SCREEN_SIGNAL_CFG
设置屏幕信号源参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_SIGNAL_CFG 结构体：NET_DVR_SCREEN_SIGNAL_CFG
获取屏幕拼接参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_SPLICE_CFG 结构体：NET_DVR_SCREEN_SPLICE_CFG
设置屏幕拼接参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_SPLICE_CFG 结构体：NET_DVR_SCREEN_SPLICE_CFG
获取风扇工作方式 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_FAN_WORK_MODE 结构体：NET_DVR_SCREEN_FAN_WORK_MODE_CFG
设置风扇工作方式 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_FAN_WORK_MODE 结构体：NET_DVR_SCREEN_FAN_WORK_MODE_CFG
获取VGA信号配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VGA_CFG 结构体：NET_DVR_SCREEN_VGA_CFG
设置VGA信号配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VGA_CFG 结构体：NET_DVR_SCREEN_VGA_CFG
获取屏幕菜单配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_MENU_CFG 结构体：NET_DVR_SCREEN_MENU_CFG
设置屏幕菜单配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_MENU_CFG 结构体：NET_DVR_SCREEN_MENU_CFG
获取显示参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_DISPLAY_CFG 结构体：NET_DVR_SCREEN_DISPLAY_CFG
设置显示参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_DISPLAY_CFG 结构体：NET_DVR_SCREEN_DISPLAY_CFG
获取画中画参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PIP_CFG 结构体：NET_DVR_PIP_CFG
设置画中画参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PIP_CFG 结构体：NET_DVR_PIP_CFG
获取去雾参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEFOG_LCD 结构体：NET_DVR_DEFOG_LCD
设置去雾参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEFOG_LCD 结构体：NET_DVR_DEFOG_LCD
获取屏幕位置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_POS 结构体：NET_DVR_SCREEN_POS_CFG
设置屏幕位置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_POS 结构体：NET_DVR_SCREEN_POS_CFG
获取大屏串口信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_BIGSCREEN_GETSERIAL 结构体：NET_DVR_SERIAL_CONTROL (LCD V1.2新增)
获取用户信息 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCS_USER_CFG 结构体：NET_DVR_VCS_USER_INFO (LCD V1.2新增)
设置用户信息 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCS_USER_CFG 结构体：NET_DVR_VCS_USER_INFO (LCD V1.2新增)
获取当前使用串口 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USING_SERIALPORT 结构体：NET_DVR_USING_SERIALPORT (LCD V1.2新增)
获取延时开机参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_POWERON_DELAY_CFG 结构体：NET_DVR_DELAY_TIME (LCD V1.2新增)
设置延时开机参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_POWERON_DELAY_CFG 结构体：NET_DVR_DELAY_TIME (LCD V1.2新增)
获取外接矩阵输入输出关联关系 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXTERNAL_MATRIX_RELATION 结构体：NET_DVR_IO_RELATION_INFO (LCD V1.2新增)
设置外接矩阵输入输出关联关系 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXTERNAL_MATRIX_RELATION 结构体：NET_DVR_IO_RELATION_INFO (LCD V1.2新增)
批量参数配置 |  |
获取屏幕索引相关参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_SCREEN_INDEX_GET 结构体：NET_DVR_SCREEN_INDEX_CFG (LCD V1.2新增)
设置屏幕索引相关参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SCREEN_INDEX_SET 结构体：NET_DVR_SCREEN_INDEX_CFG (LCD V1.2新增)
获取屏幕位置参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SCREEN_POSITION 结构体：NET_DVR_VIDEOWALLDISPLAYPOSITION (LCD V1.2新增)
设置屏幕位置参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCREEN_POSITION 结构体：NET_DVR_VIDEOWALLDISPLAYPOSITION (LCD V1.2新增)
获取当前屏幕场景号 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_CURRENT_SCREEN_SCENE (LCD V1.2新增)
设置屏幕场景参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_GET_SCREEN_SCENE_PARAM 结构体：NET_DVR_WALLSCENECFG (LCD V1.2新增)
设置屏幕场景参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SCREEN_SCENE_PARAM 结构体：NET_DVR_WALLSCENECFG (LCD V1.2新增)
获取定时开关机参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SWITCH_CFG 结构体：NET_DVR_TIME_SWITCH_CFG (LCD V1.2新增)
设置定时开关机参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SWITCH_CFG 结构体：NET_DVR_TIME_SWITCH_CFG (LCD V1.2新增)
获取矩阵信息 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_EXTERNAL_MATRIX_CFG 结构体：NET_DVR_EXTERNAL_MATRIX_CFG (LCD V1.2新增)
设置矩阵信息 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_EXTERNAL_MATRIX_CFG 结构体：NET_DVR_EXTERNAL_MATRIX_CFG (LCD V1.2新增)
长连接远程配置 |  |
启动长连接远程配置 | NET_DVR_StartRemoteConfig | 配置命令： NET_DVR_SCREEN_SPLICE_SET、 NET_DVR_SCREEN_SPLICE_GET、 NET_DVR_SET_SCREEN_PARAM、NET_DVR_GET_SCREEN_PARAM (LCD V1.2新增)
逐个获取查找到的结果信息 | NET_DVR_GetNextRemoteConfig | 配置命令： NET_DVR_SCREEN_SPLICE_SET (LCD V1.2新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig | (LCD V1.2新增)
远程控制 |  |
模拟遥控按键 | NET_DVR_RemoteControl | 命令：NET_DVR_SIMULATE_REMOTE_CONTROL 结构体：NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL
显示屏幕状态 | NET_DVR_RemoteControl | 命令：NET_DVR_SHOW_SCREEN_WORK_STATUS，结构体：无
远程控制设备显示IP到电视墙 | NET_DVR_RemoteControl | 命令：NET_DVR_SHOW_IP，结构体：无
屏幕维墙 | NET_DVR_RemoteControl | 命令：NET_DVR_SCREEN_MAINTENANCE_WALL 结构体：NET_DVR_SCREEN_WALL_CFG
矩阵输入输出切换 | NET_DVR_RemoteControl | 命令：NET_DVR_SWITCH_MATRIX_IO 结构体：NET_DVR_MATRIX_SWITCH_INFO (LCD V1.2新增)
屏幕控制 | NET_DVR_RemoteControl | 命令：NET_DVR_CONTROL_SCREEN 结构体：NET_DVR_SCREEN_CONTROL_V41 (LCD V1.2新增)
屏幕场景控制 | NET_DVR_RemoteControl | 命令：NET_DVR_SCREEN_SCENE_CONTROL 结构体：NET_DVR_SCENE_CONTROL_INFO (LCD V1.2新增)
动态解码 |  |
获取显示通道配置 | NET_DVR_MatrixGetDisplayCfg_V41 |
设置显示通道配置 | NET_DVR_MatrixSetDisplayCfg_V41 |
启动动态解码 | NET_DVR_MatrixStartDynamic_V41 |
停止动态解码 | NET_DVR_MatrixStopDynamic |
获取轮巡解码通道参数 | NET_DVR_MatrixGetLoopDecChanInfo_V41 |
设置轮巡解码通道参数 | NET_DVR_MatrixSetLoopDecChanInfo_V41 |
获取当前解码通道开关 | NET_DVR_MatrixGetDecChanEnable |
设置当前解码通道开关 | NET_DVR_MatrixSetDecChanEnable |
获取单个解码通道轮巡开关 | NET_DVR_MatrixGetLoopDecChanEnable |
设置单个解码通道轮巡开关 | NET_DVR_MatrixSetLoopDecChanEnable |
获取所有解码通道轮巡开关 | NET_DVR_MatrixGetLoopDecEnable |
获取当前解码通道信息 | NET_DVR_MatrixGetDecChanInfo_V41 |
获取解码器设备状态 | NET_DVR_MatrixGetDeviceStatus_V41 |
场景相关功能 |  |
场景切换控制 | NET_DVR_MatrixSceneControl | 切换或保存场景时需要对每块屏发送命令；场景包括信源类型、拼接、边缘屏蔽、画中画、去雾。
获取当前正在使用的场景模式 | NET_DVR_MatrixGetCurrentSceneMode |
电视墙中获取场景参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_WALLSCENEPARAM_GET 结构体：NET_DVR_WALLSCENECFG
电视墙中设置场景参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_WALLSCENEPARAM_SET 结构体：NET_DVR_WALLSCENECFG
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart_V40 | (LCD V1.3新增支持)
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V31 | 支持的报警信息类型有： COMM_ALARM_LCD (LCD V1.3新增)
建立报警上传通道，获取报警信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警信息 | NET_DVR_StartListen_V30 | 支持的报警信息类型有： COMM_ALARM_LCD (LCD V1.3新增)
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
设备维护管理 |  |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
恢复设备默认参数 | NET_DVR_RestoreConfig | 恢复的参数值包括：无信号屏幕（蓝屏）、播放模式（所有参数为50）、风扇工作方式（常开）
导出配置文件 | NET_DVR_GetConfigFile | (LCD V1.2新增)
导入配置文件 | NET_DVR_SetConfigFile | (LCD V1.2新增)
远程重启设备 |  |
重启设备 | NET_DVR_RebootDVR | 重启时间约为3秒


解码监视器功能接口介绍

解码监视器包括但不仅限于以下产品型号：
DS-D5032FL、DS-D5042FL

除通用接口的功能外，还支持以下接口的功能，包括远程参数配置、动态解码、被动解码、设备维护管理等。

功能 | 接口 | 相关参数
设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_NETAPP_ABILITY、 DECODER_ABILITY
获取监视器能力集 | NET_DVR_GetDeviceAbility | 能力集类型：LCD_SCREEN_ABILITY 能力集：监视器能力XML描述
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取屏幕信号源参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_SIGNAL_CFG 结构体：NET_DVR_SCREEN_SIGNAL_CFG
设置屏幕信号源参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_SIGNAL_CFG 结构体：NET_DVR_SCREEN_SIGNAL_CFG
获取屏幕拼接参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_SPLICE_CFG 结构体：NET_DVR_SCREEN_SPLICE_CFG
设置屏幕拼接参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_SPLICE_CFG 结构体：NET_DVR_SCREEN_SPLICE_CFG
获取风扇工作方式 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_FAN_WORK_MODE 结构体：NET_DVR_SCREEN_FAN_WORK_MODE_CFG
设置风扇工作方式 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_FAN_WORK_MODE 结构体：NET_DVR_SCREEN_FAN_WORK_MODE_CFG
获取VGA信号配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VGA_CFG 结构体：NET_DVR_SCREEN_VGA_CFG
设置VGA信号配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VGA_CFG 结构体：NET_DVR_SCREEN_VGA_CFG
获取屏幕菜单配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_MENU_CFG 结构体：NET_DVR_SCREEN_MENU_CFG
设置屏幕菜单配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_MENU_CFG 结构体：NET_DVR_SCREEN_MENU_CFG
获取显示参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_DISPLAY_CFG 结构体：NET_DVR_SCREEN_DISPLAY_CFG
设置显示参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_DISPLAY_CFG 结构体：NET_DVR_SCREEN_DISPLAY_CFG
获取画中画参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PIP_CFG 结构体：NET_DVR_PIP_CFG
设置画中画参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PIP_CFG 结构体：NET_DVR_PIP_CFG
获取去雾参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEFOG_LCD 结构体：NET_DVR_DEFOG_LCD
设置去雾参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEFOG_LCD 结构体：NET_DVR_DEFOG_LCD
获取屏幕位置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SCREEN_POS 结构体：NET_DVR_SCREEN_POS_CFG
设置屏幕位置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SCREEN_POS 结构体：NET_DVR_SCREEN_POS_CFG
获取延时开机参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_POWERON_DELAY_CFG 结构体：NET_DVR_DELAY_TIME
设置延时开机参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_POWERON_DELAY_CFG 结构体：NET_DVR_DELAY_TIME
获取LCD屏幕音频参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LCD_AUDIO_CFG 结构体：NET_DVR_LCD_AUDIO_CFG
设置LCD屏幕音频参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_LCD_AUDIO_CFG 结构体：NET_DVR_LCD_AUDIO_CFG
获取LCD屏幕开机logo显示参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_BOOT_LOGO_CFG 结构体：NET_DVR_BOOT_LOGO_CFG
设置LCD屏幕开机logo显示参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_BOOT_LOGO_CFG 结构体：NET_DVR_BOOT_LOGO_CFG
获取LCD屏幕工作状态 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_LCD_WORK_STATE 结构体：NET_DVR_SCREEN_WORK_STATE
批量参数配置 |  |
获取定时开关机参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_GET_SWITCH_CFG 结构体：NET_DVR_TIME_SWITCH_CFG
设置定时开关机参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_SET_SWITCH_CFG 结构体：NET_DVR_TIME_SWITCH_CFG
模拟遥控按键 | NET_DVR_RemoteControl | 命令：NET_DVR_SIMULATE_REMOTE_CONTROL 结构体：NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL
显示屏幕状态 | NET_DVR_RemoteControl | 命令：NET_DVR_SHOW_SCREEN_WORK_STATUS，结构体：无
远程控制设备显示IP到电视墙 | NET_DVR_RemoteControl | 命令：NET_DVR_SHOW_IP，结构体：无
屏幕维墙 | NET_DVR_RemoteControl | 命令：NET_DVR_SCREEN_MAINTENANCE_WALL 结构体：NET_DVR_SCREEN_WALL_CFG
解码相关接口 |  |
获取显示通道配置 | NET_DVR_MatrixGetDisplayCfg_V41 |
设置显示通道配置 | NET_DVR_MatrixSetDisplayCfg_V41 |
启动动态解码 | NET_DVR_MatrixStartDynamic_V41 |
停止动态解码 | NET_DVR_MatrixStopDynamic |
获取轮巡解码通道参数 | NET_DVR_MatrixGetLoopDecChanInfo_V41 |
设置轮巡解码通道参数 | NET_DVR_MatrixSetLoopDecChanInfo_V41 |
获取当前解码通道开关 | NET_DVR_MatrixGetDecChanEnable |
设置当前解码通道开关 | NET_DVR_MatrixSetDecChanEnable |
获取单个解码通道轮巡开关 | NET_DVR_MatrixGetLoopDecChanEnable |
设置单个解码通道轮巡开关 | NET_DVR_MatrixSetLoopDecChanEnable |
获取所有解码通道轮巡开关 | NET_DVR_MatrixGetLoopDecEnable |
获取当前解码通道信息 | NET_DVR_MatrixGetDecChanInfo_V41 |
获取解码器设备状态 | NET_DVR_MatrixGetDeviceStatus_V41 |
开始被动解码 | NET_DVR_MatrixStartPassiveDecode |
向被动解码通道发送数据 | NET_DVR_MatrixSendData |
停止被动解码 | NET_DVR_MatrixStopPassiveDecode |
获取被动解码状态 | NET_DVR_MatrixGetPassiveDecodeStatus |
被动解码播放控制 | NET_DVR_MatrixPassiveDecodeControl |
场景相关功能 |  |
场景切换控制 | NET_DVR_MatrixSceneControl | 切换或保存场景时需要对每块屏发送命令；场景包括信源类型、拼接、边缘屏蔽、画中画、去雾。
获取当前正在使用的场景模式 | NET_DVR_MatrixGetCurrentSceneMode |
电视墙中获取场景参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_WALLSCENEPARAM_GET 结构体：NET_DVR_WALLSCENECFG
电视墙中设置场景参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_WALLSCENEPARAM_SET 结构体：NET_DVR_WALLSCENECFG
电子放大 |  |
获取窗口电子放大状态 | NET_DVR_GetDVRConfig | 命令:NET_DVR_GET_WIN_ZOOM_STATUS 结构体：NET_DVR_WIN_ZOOM_STATUS
大屏电子放大 | NET_DVR_ScreenZoomIn |
设备维护管理 |  |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
恢复设备默认参数 | NET_DVR_RestoreConfig | 恢复的参数值包括：无信号屏幕（蓝屏）、播放模式（所有参数为50）、风扇工作方式（常开）


SDI矩阵切换器功能接口介绍

SDI矩阵切换器包括但不仅限于以下产品型号：
DS-C50S-S23、DS-C50S-S40

除通用接口的功能外，还支持以下接口的功能，包括设备能力集、远程参数配置、远程控制切换、设备维护管理等。

功能 | 接口 | 相关参数
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、 DEVICE_USER_ABILITY、 DEVICE_NETAPP_ABILITY、 DEVICE_SERIAL_ABILITY、 DEVICE_ABILITY_INFO（其中的EventAbility事件能力）
获取SDI矩阵能力集 | NET_DVR_GetDeviceAbility | 能力集类型：MATRIX_ABILITY 能力集：矩阵能力XML描述
基本参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取RS232串口参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
设置RS232串口参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_RS232CFG_V30 结构体：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_EXCEPTIONCFG_V40 结构体：NET_DVR_EXCEPTION_V40
获取网络参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取用户参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_VCS_USER_CFG 结构体：NET_DVR_VCS_USER_INFO SDI矩阵只有一个admin用户，只支持密码修改，无权限选项，默认具有所有权限
设置用户参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_VCS_USER_CFG 结构体：NET_DVR_VCS_USER_INFO SDI矩阵只有一个admin用户，只支持密码修改，无权限选项，默认具有所有权限
矩阵参数配置 |  |
获取矩阵基本参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MATRIX_BASE_CFG 结构体：NET_DVR_MATRIX_BASE_CFG
设置矩阵基本参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_MATRIX_BASE_CFG 结构体：NET_DVR_MATRIX_BASE_CFG
获取矩阵输入输入关联关系 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_MATRIX_IO_RELATION 结构体：NET_DVR_IO_RELATION_INFO
矩阵切换控制 |  |
矩阵输入输出切换 | NET_DVR_RemoteControl | 命令：NET_DVR_SWITCH_MATRIX_IO
场景相关功能 |  |
场景切换控制 | NET_DVR_MatrixSceneControl | 切换或保存场景时需要对每块屏发送命令；场景包括信源类型、拼接、边缘屏蔽、画中画、去雾。
获取当前正在使用的场景模式 | NET_DVR_MatrixGetCurrentSceneMode |
电视墙中获取场景参数 | NET_DVR_GetDeviceConfig | 命令：NET_DVR_WALLSCENEPARAM_GET 结构体：NET_DVR_WALLSCENECFG
电视墙中设置场景参数 | NET_DVR_SetDeviceConfig | 命令：NET_DVR_WALLSCENEPARAM_SET 结构体：NET_DVR_WALLSCENECFG
预案相关功能 |  |
获取预案列表 | NET_DVR_GetPlanList |
设置预案 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PLAN 结构体：NET_DVR_PLAN_CFG
控制预案 | NET_DVR_RemoteControl | 命令：NET_DVR_CTRL_PLAN
布防、撤防 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 支持的报警信息类型有：COMM_SCREEN_ALARM，支持其中的背板温度报警类型
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V41 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
设备维护管理 |  |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导入导出配置文件 |  |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
远程重启设备 |  |
重启设备 | NET_DVR_RebootDVR | 重启时间约为3秒


组合式电器火灾探测器功能接口介绍

组合式电器火灾探测器包括但不仅限于以下产品型号：
NP-FDC240。

组合式电器火灾探测器除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、XML参数透传等。

功能 | 接口 | 相关参数
获取组合式电器火灾探测器能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ALARMHOST_ABILITY
激活设备 | NET_DVR_ActivateDevice | 详见接口链接描述
报警布防 |  |
设置报警信息回调函数 | NET_DVR_SetDVRMessageCallBack_V31 | 支持报警信息类型： COMM_VCA_ALARM： EVENT_JSON
布防，建立报警上传通道 | NET_DVR_SetupAlarmChan_V41 |
撤防，撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取用户信息配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V51 结构体：NET_DVR_USER_V51
设置用户信息配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V51 结构体：NET_DVR_USER_V51
获取DVR时间 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置DVR时间 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取扩展设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置扩展设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络应用参数 NTP | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用参数 NTP | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取网络参数配置(V50) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数配置(V50) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取模拟量参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_SENSOR_CFG 结构体：NET_DVR_SENSOR_INFO
设置模拟量参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_SENSOR_CFG 结构体：NET_DVR_SENSOR_INFO
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，设备密码和网络参数不会恢复出厂默认
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
重启设备 | NET_DVR_RebootDVR |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
远程升级 |  |
远程升级 | NET_DVR_Upgrade_V40 |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
获取远程升级的状态 | NET_DVR_GetUpgradeStep |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
串口参数 |  |
串口参数 | NET_DVR_STDXMLConfig | 获取设备串口能力集：GET /ISAPI/System/Serial/capabilities 获取单个串口参数能力集：GET /ISAPI/System/Serial/ports/<ID>/capabilities(ID为串口号) 获取单个串口参数：GET /ISAPI/System/Serial/ports/<ID>(ID为串口号) 设置单个串口参数：PUT /ISAPI/System/Serial/ports/<ID>(ID为串口号) 批量获取串口参数：GET /ISAPI/System/Serial/ports
主动上报报警心跳周期配置 | NET_DVR_STDXMLConfig | 主动上报报警心跳周期配置能力：GET /ISAPI/FireControl/Configuration/heartBeat/capabilities?format=json 主动上报报警心跳周期获取：GET /ISAPI/FireControl/Configuration/heartBeat?format=json 主动上报报警心跳周期设置: PUT /ISAPI/FireControl/Configuration/heartBeat?format=json
消防工作状态 | NET_DVR_STDXMLConfig | 消防工作状态获取能力：GET /ISAPI/FireControl/Status/workStatus/capabilities?format=json 消防工作状态获取：GET /ISAPI/FireControl/Status/workStatus?format=json
CAN总线参数配置 | NET_DVR_STDXMLConfig | 获取CAN总线参数配置能力：GET /ISAPI/FireControl/Configuration/CANCfg/capabilities?format=json 获取CAN总线参数配置：GET /ISAPI/FireControl/Configuration/CANCfg?format=json 设置CAN总线参数配置：PUT /ISAPI/FireControl/Configuration/CANCfg?format=json
远程控制探测器报警 | NET_DVR_STDXMLConfig | 远程控制探测器报警能力：GET /ISAPI/FireControl/Control/detectorAlarm/capabilities?format=json 设置远程控制探测器报警：PUT /ISAPI/FireControl/Control/detectorAlarm/<id>?format=json。
上报策略配置 | NET_DVR_STDXMLConfig | 上报策略配置能力:GET /ISAPI/FireControl/Configuration/alarmStrategy/capabilities?format=json 上报策略配置获取：GET /ISAPI/FireControl/Configuration/alarmStrategy?format=json 上报策略配置设置：PUT /ISAPI/FireControl/Configuration/alarmStrategy?format=json


用户信息传输设备功能接口介绍

用户信息传输设备包括但不仅限于以下产品型号：
DS-N1103X。

用户信息传输设备除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、XML参数透传等。

功能 | 接口 | 相关参数
获取报警能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ALARMHOST_ABILITY
激活设备 | NET_DVR_ActivateDevice | 详见接口链接描述
报警布防 |  |
设置报警信息回调函数 | NET_DVR_SetDVRMessageCallBack_V31 | 支持报警信息类型： COMM_VCA_ALARM： EVENT_JSON
布防，建立报警上传通道 | NET_DVR_SetupAlarmChan_V41 |
撤防，撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取用户信息配置 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_USERCFG_V51 结构体：NET_DVR_USER_V51
设置用户信息配置 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_USERCFG_V51 结构体：NET_DVR_USER_V51
获取DVR时间 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_TIMECFG 结构体：NET_DVR_TIME
设置DVR时间 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_TIMECFG 结构体：NET_DVR_TIME
获取扩展设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置扩展设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络应用参数 NTP | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用参数 NTP | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取网络参数配置(V50) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数配置(V50) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络参数配置(V50) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMIN_PARAM_V50 结构体：NET_DVR_ALARMIN_PARAM_V50
设置网络参数配置(V50) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMIN_PARAM_V50 结构体：NET_DVR_ALARMIN_PARAM_V50
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，设备密码和网络参数不会恢复出厂默认
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
重启设备 | NET_DVR_RebootDVR |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
远程升级 |  |
远程升级 | NET_DVR_Upgrade_V40 |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
获取远程升级的状态 | NET_DVR_GetUpgradeStep |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
串口参数 |  |
串口参数 | NET_DVR_STDXMLConfig | 获取设备串口能力集：GET /ISAPI/System/Serial/capabilities 获取单个串口参数能力集：GET /ISAPI/System/Serial/ports/<ID>/capabilities(ID为串口号) 获取单个串口参数：GET /ISAPI/System/Serial/ports/<ID>(ID为串口号) 设置单个串口参数：PUT /ISAPI/System/Serial/ports/<ID>(ID为串口号) 批量获取串口参数：GET /ISAPI/System/Serial/ports
主动上报报警心跳周期配置 | NET_DVR_STDXMLConfig | 主动上报报警心跳周期配置能力：GET /ISAPI/FireControl/Configuration/heartBeat/capabilities?format=json 主动上报报警心跳周期获取：GET /ISAPI/FireControl/Configuration/heartBeat?format=json 主动上报报警心跳周期设置: PUT /ISAPI/FireControl/Configuration/heartBeat?format=json
消防工作状态 | NET_DVR_STDXMLConfig | 消防工作状态获取能力：GET /ISAPI/FireControl/Status/workStatus/capabilities?format=json 消防工作状态获取：GET /ISAPI/FireControl/Status/workStatus?format=json
CAN总线参数配置 | NET_DVR_STDXMLConfig | 获取CAN总线参数配置能力：GET /ISAPI/FireControl/Configuration/CANCfg/capabilities?format=json 获取CAN总线参数配置：GET /ISAPI/FireControl/Configuration/CANCfg?format=json 设置CAN总线参数配置：PUT /ISAPI/FireControl/Configuration/CANCfg?format=json
通信参数配置 | NET_DVR_STDXMLConfig | 获取通信参数配置能力：GET /ISAPI/FireControl/Configuration/commCfg/capabilities?format=json 获取通信参数配置：GET /ISAPI/FireControl/Configuration/commCfg?format=json 设置通信参数配置：PUT /ISAPI/FireControl/Configuration/commCfg?format=json
CAN总线参数配置 | NET_DVR_STDXMLConfig | 获取CAN总线参数配置能力：GET /ISAPI/FireControl/Configuration/CANCfg/capabilities?format=json 获取CAN总线参数配置：GET /ISAPI/FireControl/Configuration/CANCfg?format=json 设置CAN总线参数配置：PUT /ISAPI/FireControl/Configuration/CANCfg?format=json
上报策略配置 | NET_DVR_STDXMLConfig | 上报策略配置能力:GET /ISAPI/FireControl/Configuration/alarmStrategy/capabilities?format=json 上报策略配置获取：GET /ISAPI/FireControl/Configuration/alarmStrategy?format=json 上报策略配置设置：PUT /ISAPI/FireControl/Configuration/alarmStrategy?format=json
获取消防总能力 | NET_DVR_STDXMLConfig | 获取消防总能力:GET /ISAPI/FireControl/capabilities?format=json


消防智能分析仪功能接口介绍

用户信息传输设备包括但不仅限于以下产品型号：
NP-FA108、NP-FA116 。

用户信息传输设备除通用接口的功能外，还支持以下接口的功能，包括参数配置、远程控制、XML参数透传等。

功能 | 接口 | 相关参数
获取报警能力集 | NET_DVR_GetDeviceAbility | 能力集类型： ALARMHOST_ABILITY
激活设备 | NET_DVR_ActivateDevice | 详见接口链接描述
报警布防 |  |
设置报警信息回调函数 | NET_DVR_SetDVRMessageCallBack_V31 | 支持报警信息类型： COMM_VCA_ALARM： 消防智能识别事件（JSON）报文
布防，建立报警上传通道 | NET_DVR_SetupAlarmChan_V41 |
撤防，撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
通用参数配置 |  |
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_IPPARACFG_V40 结构体：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_IPPARACFG_V40 结构体：NET_DVR_IPPARACFG_V40
获取图像参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_PICCFG_V40 结构体：NET_DVR_PICCFG_V40
获取扩展设备参数 | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
设置扩展设备参数 | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_DEVICECFG_V40 结构体：NET_DVR_DEVICECFG_V40
获取网络应用参数 NTP | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NTPCFG 结构体：NET_DVR_NTPPARA
设置网络应用参数 NTP | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NTPCFG 结构体：NET_DVR_NTPPARA
获取网络参数配置(V50) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
设置网络参数配置(V50) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_NETCFG_V50 结构体：NET_DVR_NETCFG_V50
获取网络参数配置(V50) | NET_DVR_GetDVRConfig | 命令：NET_DVR_GET_ALARMIN_PARAM_V50 结构体：NET_DVR_ALARMIN_PARAM_V50
设置网络参数配置(V50) | NET_DVR_SetDVRConfig | 命令：NET_DVR_SET_ALARMIN_PARAM_V50 结构体：NET_DVR_ALARMIN_PARAM_V50
设备维护管理 |  |
恢复设备默认参数 | NET_DVR_RestoreConfig | 简单恢复，设备密码和网络参数不会恢复出厂默认
设置完全恢复出厂值 | NET_DVR_RemoteControl | 命令：NET_DVR_COMPLETE_RESTORE_CTRL
重启设备 | NET_DVR_RebootDVR |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
远程升级 |  |
远程升级 | NET_DVR_Upgrade_V40 |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
获取远程升级的状态 | NET_DVR_GetUpgradeStep |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
智能识别参数配置 |  |
智能识别参数配置 | NET_DVR_STDXMLConfig | 获取智能识别参数配置能力：GET /ISAPI/FireControl/Configuration/recognizeCfg/capabilities?format=json 获取智能识别参数获取：GET /ISAPI/FireControl/Configuration/recognizeCfg/channels/<ID>?format=json (URL中的<ID>代表通道号) 设置智能识别参数设置：PUT /ISAPI/FireControl/Configuration/recognizeCfg/channels/<ID>?format=json (URL中的<ID>代表通道号)
智能识别事件查询 |  |
智能识别事件查询 | NET_DVR_STDXMLConfig | 获取智能识别事件查询能力：GET /ISAPI/FireControl/RecognizeResult/search/capabilities?format=json 智能识别事件查询：POST /ISAPI/FireControl/RecognizeResult/search?format=json
消防工作状态 | NET_DVR_STDXMLConfig | 消防工作状态获取能力：GET /ISAPI/FireControl/Status/workStatus/capabilities?format=json 消防工作状态获取：GET /ISAPI/FireControl/Status/workStatus?format=json
获取消防总能力 | NET_DVR_STDXMLConfig | 获取消防总能力:GET /ISAPI/FireControl/capabilities?format=json


录播主机功能接口介绍

录播主机包括但不仅限于以下产品型号：
DS-8104LHFH-E2、DS-8604LN-E2、DS-8104LHFH-E2/RTJ、DS-8104LHFH-F2、DS-8604LN-F2、DS-8104LHFHI-F2、DS-8604LNI-F2。

录播主机除通用接口的功能外，还支持以下接口的功能，包括混音控制、自动导播、录播控制、人体参数和设备维护等。

功能 | 接口 | 相关参数
获取设备能力集
获取录播主机相关能力集 NET_DVR_GetDeviceAbility 能力集类型：
DEVICE_ABILITY_INFO(设备通用能力集)
获取录播主机相关能力集 NET_DVR_GetSTDAbility 能力集类型：
NET_DVR_GET_FILM_MODE_CFG_CAP(获取电影模式配置能力集);
NET_DVR_GET_DIRECTED_STRATEGY_CFG_CAP(获取导播策略配置能力集);
NET_DVR_GET_FRAME_CFG_CAP(获取画面边框配置能力集) ;
NET_DVR_GET_AUDIO_EFFECTIVE_CFG_CAP(获取音频效果优化配置能力集) ;
NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP(获取文件发布能力集);
NET_DVR_GET_RECORD_VIDEO_CFG_CAP(获取录制视频配置能力集);
NET_DVR_GET_RTMP_CFG_CAP(获取RTMP配置能力集);
NET_DVR_GET_BACKGROUND_PIC_INFO_CAP(获取背景图片配置能力集);
NET_DVR_GET_RECORD_HOST_CAP(获取录播主机总能力集);
NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG_CAP(获取图像差分检测配置能力集);
NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO_CAP(获取发布文件信息配置能力集);
NET_DVR_MANUAL_CURRICULUM_CONTROL_CAP(获取手动课程录像的能力集);
NET_DVR_GET_TERMINAL_CALL_CFG_CAP(获取终端呼叫配置能力),对应ISAPI中的URL：/ISAPI/VCS/terminals/callConfiguration/capabilities;
NET_DVR_GET_TERMINAL_CTRL_CAP(获取终端呼叫控制能力),对应ISAPI中的URL：/ISAPI/VCS/terminals/control/capabilities;
NET_DVR_GET_TERMINAL_INPUT_CFG_CAP(获取终端输入参数能力),对应ISAPI中的URL：GET /ISAPI/VCS/terminals/inputConfig/capabilities;
获取录播主机相关能力集 NET_DVR_GetSTDAbility 能力集类型：
NET_DVR_GET_VCS_CAP(获取MCU能力集),对应ISAPI中的URL：GET /ISAPI/VCS/capabilities;

录播主机参数配置
获取LOGO图片叠加参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_LOGO_OVERLAYCFG
结构体：NET_DVR_LOGO_OVERLAYCFG
设置LOGO图片叠加参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_LOGO_OVERLAYCFG
结构体：NET_DVR_LOGO_OVERLAYCFG
获取图象参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PICCFG_V30
结构体：NET_DVR_PICCFG_V30
设置图象参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PICCFG_V30
结构体：NET_DVR_PICCFG_V30
获取网络应用(DDNS)参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DDNSCFG_V30
结构体：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DDNSCFG_V30
结构体：NET_DVR_DDNSPARA_V30
获取NAT映射参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_NAT_CFG
结构体：NET_DVR_NAT_CFG
设置NAT映射参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_NAT_CFG
结构体：NET_DVR_NAT_CFG
获取SDI自动跟踪配置信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDING_AUTO_TRACK_CFG
结构体：NET_DVR_AUTO_TRACK_CFG
设置SDI自动跟踪配置信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORDING_AUTO_TRACK_CFG
结构体：NET_DVR_AUTO_TRACK_CFG
获取一键发布信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDING_PUBLISH_CFG
结构体：NET_DVR_PUBLISH_CFG
设置一键发布信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORDING_PUBLISH_CFG
结构体：NET_DVR_PUBLISH_CFG
录播主机一键控制 NET_DVR_SetDVRConfig 命令：NET_DVR_RECORDING_ONEKEY_CONTROL
结构体：NET_DVR_RECORDING_CONTROL_CFG
获取录播剩余时间(结束时间点) NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDING_END_TIME
结构体：NET_DVR_TIME_EX
获取课程信息索引 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_COURSE_INDEX_CFG
结构体：NET_DVR_COURSE_RECORDING_INFO
设置课程信息索引 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_COURSE_INDEX_CFG
结构体：NET_DVR_COURSE_RECORDING_INFO
获取PPT支持通道号 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PPT_CHANNEL
结构体：NET_DVR_PPT_CHANNEL_CFG
获取PPT检测参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_PPT_DETECT_CFG
结构体：NET_DVR_PPT_DETECT_CFG
设置PPT检测参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_PPT_DETECT_CFG
结构体：NET_DVR_PPT_DETECT_CFG
获取录播主机配置信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDINGHOST_CFG
结构体：NET_DVR_RECORDING_HOST_CFG
设置录播主机配置信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORDINGHOST_CFG
结构体：NET_DVR_RECORDING_HOST_CFG
获取一键备份配置信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_BACKUP_RECORD_CFG
结构体：NET_DVR_BACKUP_RECORD_PARAM
设置一键备份配置信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_BACKUP_RECORD_CFG
结构体：NET_DVR_BACKUP_RECORD_PARAM
获取混音输入口参数配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_MIX_AUDIOIN_CFG
结构体：NET_DVR_MIX_AUDIOIN_CFG
设置混音输入口参数配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_MIX_AUDIOIN_CFG
结构体：NET_DVR_MIX_AUDIOIN_CFG
获取混音输出口参数配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_MIX_AUDIOOUT_CFG
结构体：NET_DVR_MIX_AUDIOOUT_CFG
设置混音输入口参数配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_MIX_AUDIOOUT_CFG
结构体：NET_DVR_MIX_AUDIOOUT_CFG
获取音频输入口音量调节参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_AUDIOIN_VOLUME_CFG
结构体：NET_DVR_VOLUME_CFG
设置音频输入口音量调节参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_AUDIOIN_VOLUME_CFG
结构体：NET_DVR_VOLUME_CFG
获取音频输出口音量调节参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_AUDIOOUT_VOLUME_CFG
结构体：NET_DVR_VOLUME_CFG
设置音频输出口音量调节参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_AUDIOOUT_VOLUME_CFG
结构体：NET_DVR_VOLUME_CFG
获取设备本地视频输出口分辨率 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG
结构体：NET_DVR_VIDEOOUT_RESOLUTION_CFG
设置设备本地视频输出口分辨率 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG
结构体：NET_DVR_VIDEOOUT_RESOLUTION_CFG
获取菜单输出模式 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_MEMU_OUTPUT_MODE
结构体：NET_DVR_MENU_OUTPUT_MODE
设置菜单输出模式 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_MEMU_OUTPUT_MODE
结构体：NET_DVR_MENU_OUTPUT_MODE
获取安全认证配置 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_SECURITY_CFG
结构体：NET_DVR_SECURITY_CFG
设置安全认证配置 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_SECURITY_CFG
结构体：NET_DVR_SECURITY_CFG
获取课表配置信息 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_CURRICULUM_CFG
结构体：NET_DVR_CURRICULUM_CFG
设置课表配置信息 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_CURRICULUM_CFG
结构体：NET_DVR_CURRICULUM_CFG
获取导播画面停留时间 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_TV_SCREEN_CFG
结构体：NET_DVR_TV_SCREEN_CFG
设置导播画面停留时间 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_TV_SCREEN_CFG
结构体：NET_DVR_TV_SCREEN_CFG
获取电影模式 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_FILM_MODE_CFG
结构体：NET_DVR_FILM_MODE_CFG
设置电影模式 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_FILM_MODE_CFG
结构体：NET_DVR_FILM_MODE_CFG
获取导播策略类型 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_DIRECTED_STRATEGY_CFG
结构体：NET_DVR_DIRECTED_STRATEGY_CFG
设置导播策略类型 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_DIRECTED_STRATEGY_CFG
结构体：NET_DVR_DIRECTED_STRATEGY_CFG
获取画面边框 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_FRAME_CFG
结构体：NET_DVR_FRAME_CFG
设置画面边框 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_FRAME_CFG
结构体：NET_DVR_FRAME_CFG
获取音频优化参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_AUDIO_EFFECTIVE_CFG
结构体：NET_DVR_AUDIO_EFFECTIVE_CFG
设置音频优化参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_AUDIO_EFFECTIVE_CFG
结构体：NET_DVR_AUDIO_EFFECTIVE_CFG
获取录制视频参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_RECORD_VIDEO_CFG
结构体：NET_DVR_RECORD_VIDEO_CFG
设置录制视频参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_RECORD_VIDEO_CFG
结构体：NET_DVR_RECORD_VIDEO_CFG
获取发布进度 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_PUBLISH_PROGRESS
结构体：NET_DVR_PUBLISH_PROGRESS_CFG
文件发布 NET_DVR_SetSTDConfig 命令：NET_DVR_RECORDING_PUBLISH_FILE
结构体：NET_DVR_RECORDING_PUBLISH_FILE_CFG
获取RTMP参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_RTMP_CFG
结构体：NET_DVR_RTMP_CFG
设置RTMP参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_RTMP_CFG
结构体：NET_DVR_RTMP_CFG
查询背景图片文件 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_BACKGROUND_PIC_CFG
结构体：NET_DVR_BACKGROUND_PIC_CFG
获取哪张图片作为背景图片 NET_DVR_SetSTDConfig 命令：NET_DVR_GET_BACKGROUND_PIC_INFO
结构体：NET_DVR_BACKGROUND_PIC_INFO
设置哪张图片作为背景图片 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_BACKGROUND_PIC_INFO
结构体：NET_DVR_BACKGROUND_PIC_INFO
获取图像差分检测参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG
结构体：IMAGE_DIFF_DETECTION_CFG
设置图像差分检测参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_IMAGE_DIFF_DETECTION_CFG
结构体：IMAGE_DIFF_DETECTION_CFG
获取发布文件信息参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO
结构体：NET_DVR_RECORDING_PUBLISH_FILE_CFG
设置发布文件信息参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_RECORDING_PUBLISH_FILE_INFO
结构体：NET_DVR_RECORDING_PUBLISH_FILE_CFG
查询录播主机当前状态 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_RECORD_STATUS
结构体：NET_DVR_RECORD_STATUS
获取终端视频会议输入参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_TERMINAL_INPUT_CFG
结构体：NET_DVR_TERMINAL_INPUT_CFG;
对应ISAPI中的URL：GET /ISAPI/VCS/terminals/inputConfig
设置终端视频会议输入参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_TERMINAL_INPUT_CFG
结构体：NET_DVR_TERMINAL_INPUT_CFG;
对应ISAPI中的URL：PUT /ISAPI/VCS/terminals/inputConfig
获取终端呼叫参数 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_TERMINAL_CALL_CFG
结构体：NET_DVR_TERMINAL_CALL_CFG;
对应ISAPI中的URL：GET /ISAPI/VCS/terminals/callConfiguration
设置终端呼叫参数 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_TERMINAL_CALL_CFG
结构体：NET_DVR_TERMINAL_CALL_CFG;
对应ISAPI中的URL：PUT /ISAPI/VCS/terminals/callConfiguration
获取终端会议状态 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_TERMINAL_CONFERENCE_STATUS
结构体：NET_DVR_TERMINAL_CONFERENCE_STATUS;
对应ISAPI中的URL：GET /ISAPI/VCS/terminals/conferenceStatus
设置双目标定微调 NET_DVR_SetSTDConfig 命令：NET_DVR_ADJUST_BV_CALIB
结构体：NET_DVR_BV_CALIB_POSITION;
对应ISAPI中的URL：PUT /ISAPI/masterSlaveTracking/channels/<ID >/adjustBinocularCalib
获取人体坐标标定配置 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_HUMAN_CALIB
结构体：NET_DVR_SLAVECAMERA_CALIB_CFG;
设置人体坐标标定配置 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_HUMAN_CALIB
结构体：NET_DVR_SLAVECAMERA_CALIB_CFG;
画面切换控制 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_SCREEN_SWITCH
结构体：NET_DVR_SCREEN_SWITCH;
获取设备抓取图片和附加信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_BV_CALIB_PIC
结构体：NET_DVR_BV_CALIB_PIC;
获取双目外参标定结果 NET_DVR_GetDeviceConfig_RECORD 命令：NET_DVR_GET_BV_CALIB_RESULT
结构体：NET_DVR_BV_CALIB_RESULT;
获取双目高度矫正数据 NET_DVR_GetDeviceConfig_RECORD 命令：NET_DVR_GET_BV_HCORRECTION
结构体：NET_DVR_BV_HCORRECTION_CFG;
课堂大数据统计配置
课堂大数据统计配置 NET_DVR_STDXMLConfig 控制命令：
获取课堂大数据统计能力：GET /ISAPI/ContentMgmt/RecordingHost/ClassDataControl/capabilities;
获取课堂大数据统计：GET /ISAPI/ContentMgmt/RecordingHost/ClassDataControl;
设置课堂大数据统计：PUT /ISAPI/ContentMgmt/RecordingHost/ClassDataControl
统计数据列表
统计数据列表 NET_DVR_STDXMLConfig 控制命令：
获取统计数据列表的能力：GET /ISAPI/ContentMgmt/RecordingHost/ClassDataStatisticCfg/getStatisticData/capabilities
导播高级参数配置
导播高级参数配置 NET_DVR_STDXMLConfig 控制命令：
获取导播高级参数配置能力：GET /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID//capabilities；
获取导播高级参数配置：GET /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<ID>；
配置导播高级参数配置：PUT /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<ID>。
视频切换
视频切换 NET_DVR_STDXMLConfig 控制命令：
获取视频切换配置能力：GET /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration/capabilities;
获取视频切换配置：GET /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration;
配置视频切换配置：PUT /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration
片头配置
片头配置 NET_DVR_STDXMLConfig 控制命令：
获取片头配置能力：GET /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration/capabilities;
获取片头配置：GET /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration;
配置片头配置：PUT /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration
片尾配置
片尾配置 NET_DVR_STDXMLConfig 控制命令：
获取片尾配置能力：GET /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration/capabilities;
获取片尾配置：GET /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration;
配置片尾配置：PUT /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration
教育服务器对接配置
教育服务器对接配置 NET_DVR_STDXMLConfig 控制命令：
获取教育服务器对接配置能力：GET /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration/capabilities;
获取教育服务器对接配置：GET /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration;
配置教育服务器对接配置：PUT /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration
录播主机参数配置
录播主机参数配置 NET_DVR_STDXMLConfig 控制命令：
获取录播主机参数配置能力：GET /ISAPI/ContentMgmt/RecordingHost/hostParam/capabilities;
人体参数配置
人体参数配置 NET_DVR_STDXMLConfig 控制命令：
获取人体参数配置能力：GET /ISAPI/ContentMgmt/RecordingHost/HumanInformation/capabilities;
获取人体参数配置：GET /ISAPI/ContentMgmt/RecordingHost/HumanInformation;
设置人体参数配置：PUT /ISAPI/ContentMgmt/RecordingHost/HumanInformation
一键发布录像 NET_DVR_StartRemoteConfig 控制命令：
NET_DVR_RECORDING_PUBLISH
一键发布录像 NET_DVR_GetNextRemoteConfig 控制命令：
NET_DVR_RECORDING_PUBLISH
关闭长连接 | NET_DVR_StopRemoteConfig
获取课程列表 NET_DVR_StartRemoteConfig 控制命令：
NET_DVR_GET_COURSE_LIST
获取统计数据列表 NET_DVR_StartRemoteConfig 控制命令：
NET_DVR_GET_STATISTIC_DATA_LIST
远程控制
删除背景图片文件 NET_DVR_STDControl 控制命令：
NET_DVR_DEL_BACKGROUND_PIC
手动课程录像控制 NET_DVR_STDControl 控制命令：
NET_DVR_MANUAL_CURRICULUM_CONTROL
终端控制 NET_DVR_STDControl 控制命令：
NET_DVR_TERMINAL_CTRL,对应ISAPI中的URL：/ISAPI/VCS/terminals/control
删除样本图片 NET_DVR_RemoteControl 控制命令：
NET_DVR_DEL_BV_CALIB_PIC
重启智能库
重启使能库 | NET_VCA_RestartLib
图片上传
上传文件 NET_DVR_UploadFile_V40 控制命令：
UPLOAD_BACKGROUND_PIC
获取文件上传的进度和状态 | NET_DVR_GetUploadState
停止文件上传 | NET_DVR_UploadClose
预览相关功能
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub
实时预览 | NET_DVR_RealPlay_V30
停止预览 | NET_DVR_StopRealPlay
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun
设置声音播放模式 | NET_DVR_SetAudioMode
独占声卡模式下开启声音 | NET_DVR_OpenSound
独占声卡模式下关闭声音 | NET_DVR_CloseSound
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare
调节播放音量 | NET_DVR_Volume
初始化系统中的显示设备 | NET_DVR_InitDDrawDevice
释放显示设备占用的资源 | NET_DVR_ReleaseDDrawDevice
获取系统的显示设备的数量 | NET_DVR_GetDDrawDeviceTotalNums
设置播放窗口所使用的显卡 | NET_DVR_SetDDrawDevice
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData
停止数据捕获 | NET_DVR_StopSaveRealData
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW
录像文件操作的相关功能
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30
关闭文件查找，释放资源 | NET_DVR_FindClose_V30
回放录像文件及相关
按文件名回放录像文件 | NET_DVR_PlayBackByName
按时间回放录像文件 | NET_DVR_PlayBackByTime
控制录像回放的状态 NET_DVR_PlayBackControl_V40 NET_DVR_PLAYSETTIME控制不支持
NET_DVR_PLAYGETTOTALLEN控制不支持
停止回放录像文件 | NET_DVR_StopPlayBack
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData
停止保存录象数据 | NET_DVR_StopPlayBackSave
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile
刷新显示回放窗口 | NET_DVR_RefreshPlay
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex
录像文件下载及相关
按文件名下载录像文件 | NET_DVR_GetFileByName
按时间下载录像文件 | NET_DVR_GetFileByTime
控制录像下载的状态 | NET_DVR_PlayBackControl
停止下载录像文件 | NET_DVR_StopGetFile
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos
录像文件锁定与解锁
按文件名锁定录像文件 | NET_DVR_LockFileByName
按文件名解锁录像文件 | NET_DVR_UnlockFileByName
手动录像
远程手动启动设备录像 | NET_DVR_StartDVRRecord
远程手动停止设备录像 | NET_DVR_StopDVRRecord
布防、撤防和监听
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30
停止监听（支持多线程） | NET_DVR_StopListen_V30
远程面板控制
远程控制面板上的按键 | NET_DVR_ClickKey
禁用设备本地面板控制 | NET_DVR_LockPanel
恢复设备本地面板控制 | NET_DVR_UnLockPanel
云台控制
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX
云台预置点操作 | NET_DVR_PTZPreset_Other
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX
云台巡航操作 | NET_DVR_PTZCruise_Other
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX
云台花样扫描操作 | NET_DVR_PTZTrack_Other
透明云台操作，需先启动预览 | NET_DVR_TransPTZ
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX
透明云台操作 | NET_DVR_TransPTZ_Other
语音对讲、转发及广播
启动语音对讲 | NET_DVR_StartVoiceCom_V30
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30
转发语音数据 | NET_DVR_VoiceComSendData
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道
建立透明通道 | NET_DVR_SerialStart
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend
断开透明通道 | NET_DVR_SerialStop
向串口发送数据
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port
硬盘管理
远程格式化设备硬盘 | NET_DVR_FormatDisk
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle
设备维护管理
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment
远程升级 | NET_DVR_Upgrade
获取远程升级的进度 | NET_DVR_GetUpgradeProgress
获取远程升级的状态 | NET_DVR_GetUpgradeState
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30
释放查找日志的资源 | NET_DVR_FindLogClose_V30
恢复设备默认参数 | NET_DVR_RestoreConfig
导出配置文件 | NET_DVR_GetConfigFile_V30
导出配置文件 | NET_DVR_GetConfigFile
导入配置文件 | NET_DVR_SetConfigFile_EX
导入配置文件 | NET_DVR_SetConfigFile
重启设备 | NET_DVR_RebootDVR
远程参数配置
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取叠加字符参数 NET_DVR_GetDVRConfig 配置参数：NET_DVR_SHOWSTRING_V30
IP通道不支持字符叠加功能
设置叠加字符参数 NET_DVR_SetDVRConfig 配置参数：NET_DVR_SHOWSTRING_V30

IP通道不支持字符叠加功能
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取设备本地主CVBS输出预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置设备本地主CVBS输出预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取IP接入配置参数 NET_DVR_GetDVRConfig 配置参数：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 NET_DVR_SetDVRConfig 配置参数：NET_DVR_IPPARACFG_V40
获取IP报警输入接入配置参数 NET_DVR_GetDVRConfig 配置参数：NET_DVR_IPALARMINCFG_V40
获取IP报警输出接入配置参数 NET_DVR_GetDVRConfig 配置参数：NET_DVR_IPALARMOUTCFG_V40
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
设置盘组管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30
设置设备报警输出 | NET_DVR_SetAlarmOut
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol
获取视频输出缩放信息 | NET_DVR_GetScaleCFG
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30
设置视频输出缩放参数 | NET_DVR_SetScaleCFG
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30


CVR功能接口介绍

CVR功能接口介绍除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、录像文件锁定和备份、手动录像、报警上传、语音对讲、硬盘管理和远程参数配置等。

功能 | 接口 | 相关参数
获取设备能力集
获取设备能力集 NET_DVR_GetDeviceAbility 能力集类型： DEVICE_SOFTHARDWARE_ABILITY、
DEVICE_ABILITY_INFO(其中CVR设备能力集CVRAbility)
获取存储总能力集（RACM能力） NET_DVR_GetSTDAbility 能力集类型：NET_DVR_GET_RACM_CAP
(V2.3.2-4新增)
获取历史录像回传功能能力集 NET_DVR_GetSTDAbility 能力集类型：NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG_CAP、
NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG_CAP
(V2.3.2-4新增)
预览相关功能
设置播放显示模式 | NET_DVR_SetShowMode
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub
实时预览 | NET_DVR_RealPlay_V40
停止预览 | NET_DVR_StopRealPlay
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun
设置声音播放模式 | NET_DVR_SetAudioMode
独占声卡模式下开启声音 | NET_DVR_OpenSound
独占声卡模式下关闭声音 | NET_DVR_CloseSound
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare
调节播放音量 | NET_DVR_Volume
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData
停止数据捕获 | NET_DVR_StopSaveRealData
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture
录像锁定
按时间对录像段加锁 | NET_DVR_LockFileByTime
按时间对录像段解锁 | NET_DVR_UnLockFileByTime
按流ID对录像段加锁 | NET_DVR_LockStreamFileByTime
按流ID对录像段解锁 | NET_DVR_UnlockStreamFileByTime
按通道号查找录像文件
开始查找设备录像文件。 | NET_DVR_FindFile_V40
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V40
关闭文件查找，释放资源 | NET_DVR_FindClose_V30
按流ID查找录像的相关功能
根据事件查找录像文件 | NET_DVR_FindFileByEvent
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent
关闭文件查找，释放资源 | NET_DVR_FindClose_V30
回放录像及相关
按时间回放录像文件 | NET_DVR_PlayBackByTime_V40
Smart智能搜索
开始智能搜索 | NET_DVR_SmartSearch_V40 | (V2.3.1新增)
逐个获取搜索到的智能录像信息 | NET_DVR_SearchNextInfo
停止智能搜索 | NET_DVR_StopSearch
控制录像回放的状态 NET_DVR_PlayBackControl_V40 回放抽帧功能：NET_DVR_START_DRAWFRAME、
NET_DVR_STOP_DRAWFRAME
(V2.3.1新增)
停止回放录像文件 | NET_DVR_StopPlayBack
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData
停止保存录象数据 | NET_DVR_StopPlayBackSave
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile
刷新显示回放窗口 | NET_DVR_RefreshPlay
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex
录像下载及相关
按时间下载录像文件 | NET_DVR_GetFileByTime_V40
控制录像下载的状态 | NET_DVR_PlayBackControl_V40
停止下载录像文件 | NET_DVR_StopGetFile
录像文件锁定与解锁
按时间锁定录像段 | NET_DVR_LockFileByTime
按时间解锁录像段 | NET_DVR_UnLockFileByTime
按流ID锁定录像段 | NET_DVR_LockStreamFileByTime
按流ID解锁录像段 | NET_DVR_UnlockStreamFileByTime
录像完整性检测
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：NET_DVR_RECORD_CHECK
(V2.3.2-3新增)
逐个获取查找到的信息 NET_DVR_GetNextRemoteConfig 配置命令：NET_DVR_RECORD_CHECK
(V2.3.2-3新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
获取录像段总大小
一键配置SAN（V50）
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：NET_DVR_ONE_KEY_CONFIG_SAN_V50
(V2.3.2-3新增)
获取长连接配置的状态 | NET_DVR_GetRemoteConfigState | NULL
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
获取录像段总大小
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：NET_DVR_GET_RECORD_SEGMENT_CFG
(V2.3.2-3新增)
逐个获取查找到的信息 NET_DVR_GetNextRemoteConfig 配置命令：NET_DVR_GET_RECORD_SEGMENT_CFG
(V2.3.2-3新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
录像缩略图
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：
NET_DVR_GET_THUMBNAILS(V2.3.2-5新增)
NET_DVR_GET_FIGURE(V2.3.2-5新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
手动录像
远程手动启动设备录像 | NET_DVR_StartDVRRecord
远程手动停止设备录像 | NET_DVR_StopDVRRecord
按流ID远程手动启动设备录像 | NET_DVR_StartManualRecord
按流ID远程手动停止设备录像 | NET_DVR_StopManualRecord
数据文件及异地备份相关
数据文件传输速率配置 | NET_DVR_STDXMLConfig | (V2.3.3-1新增)
数据文件锁定配置 | NET_DVR_STDXMLConfig | (V2.3.3-1新增)
获取数据文件信息 | NET_DVR_STDXMLConfig | (V2.3.3-1新增)
异地备份备机信息配置 | NET_DVR_STDXMLConfig | (V2.3.3-1新增)
异地备份任务配置 | NET_DVR_STDXMLConfig | (V2.3.3-1新增)
资源IP配置 NET_DVR_STDXMLConfig 命令：GET /ISAPI/System/Network/ResourceIPConfiguration/capabilities；
GET /ISAPI/System/Network/ResourceIPConfiguration；
PUT /ISAPI/System/Network/ResourceIPConfiguration
token密钥 NET_DVR_STDXMLConfig 命令：GET /ISAPI/System/Token/secretKey/capabilities；
设置秘钥：POST /ISAPI/System/Token/secretKey
token校验 | NET_DVR_STDXMLConfig | 命令：POST /ISAPI/System/Token/check<
录像存在信息 NET_DVR_STDXMLConfig 命令： GET /ISAPI/ContentMgmt/record/existInformation/capabilities；
GET /ISAPI/ContentMgmt/record/existInformation；
GET /ISAPI/ContentMgmt/record/existInformation/StreamID/ID（按流ID获取）
存档任务配置 NET_DVR_STDXMLConfig 命令： GET /ISAPI/ContentMgmt/ArchivingVolume/task/capabilities；
POST /ISAPI/ContentMgmt/ArchivingVolume/task；（添加存档任务）
POST /ISAPI/ContentMgmt/ArchivingVolume/task/search；（查询存档任务）
PUT /ISAPI/ContentMgmt/ArchivingVolume/task（存档任务控制）
上传/下载文件卷数据文件
上传文件卷数据文件 | NET_DVR_UploadFile_V40 | (V2.3.3-1扩展)
下载文件卷数据文件 | NET_DVR_StartDownload | (V2.3.3-1扩展)
布防、撤防和监听
注册回调函数，接收设备报警消息等 NET_DVR_SetDVRMessageCallBack_V30 上传的报警信息：
COMM_ALARM_DEVICE、
COMM_ALARM_CVR（(V2.2.0新增)）、
COMM_ALARM_DEVICE_V40（V2.3.1 新增）
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30
启动监听，接收设备主动上传的报警等信息（支持多线程） NET_DVR_StartListen_V30 上传的报警信息：
COMM_ALARM_DEVICE、
COMM_ALARM_CVR
停止监听（支持多线程） | NET_DVR_StopListen_V30
远程参数配置
获取设备时间参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_TIMECFG
结构体：NET_DVR_TIME
设置设备时间参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_TIMECFG
结构体：NET_DVR_TIME
获取网络参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_NETCFG_V50
结构体：NET_DVR_NETCFG_V50
设置网络参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_NETCFG_V50
结构体：NET_DVR_NETCFG_V50
获取用户参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_USERCFG_V40
结构体：NET_DVR_USER_V40
设置用户参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_USERCFG_V40
结构体：NET_DVR_USER_V40
获取录像参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORDCFG_V40
结构体：NET_DVR_RECORD_V40
设置录像参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORDCFG_V40
结构体：NET_DVR_RECORD_V40
获取通道录像状态信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_RECORD_CHANNEL_INFO
结构体：NET_DVR_CHAN_GROUP_RECORD_STATUS
设置通道录像状态信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_RECORD_CHANNEL_INFO
结构体：NET_DVR_CHAN_GROUP_RECORD_STATUS
获取录像信息 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_STREAM_RECORD_INFO
结构体：NET_DVR_STREAM_RECORD_INFO
设置录像参数 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_STREAM_RECORD_INFO
结构体：NET_DVR_STREAM_RECORD_INFO
获取流状态信息 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_STREAM_RECORD_STATUS
结构体：NET_DVR_STREAM_RECORD_STATUS
设置流状态信息 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_STREAM_RECORD_STATUS
结构体：NET_DVR_STREAM_RECORD_STATUS
获取IP接入配置参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_IPPARACFG_V40
结构体：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_IPPARACFG_V40
结构体：NET_DVR_IPPARACFG_V40
获取流的来源信息 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_STREAM_SRC_INFO_V40
结构体：NET_DVR_STREAM_SRC_INFO_V40
(V2.3.1扩展)
设置流的来源信息 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_STREAM_SRC_INFO_V40
结构体：NET_DVR_STREAM_SRC_INFO_V40
(V2.3.1扩展)
获取硬盘管理参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_HDCFG_V40
结构体：NET_DVR_HDCFG
设置硬盘管理参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_HDCFG_V40
结构体：NET_DVR_HDCFG
获取硬盘管理参数V50(按组号) NET_DVR_GetDVRConfig 命令：NET_DVR_GET_HDCFG_V50
结构体：NET_DVR_HDCFG_V50
设置硬盘管理参数V50(按组号) NET_DVR_SetDVRConfig 命令：NET_DVR_SET_HDCFG_V50
结构体：NET_DVR_HDCFG_V50
获取硬盘卷信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_HDVOLUME_CFG
结构体：NET_DVR_HARD_DISK_VOLUME_INFO
(V2.3.3-1新增)
设置硬盘卷信息 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_HDVOLUME_CFG
结构体：NET_DVR_HARD_DISK_VOLUME_INFO
(V2.3.3-1新增)
获取数据回迁状态 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DATA_CALLBACK_CFG
结构体：NET_DVR_DATA_CALLBACK_CFG
(V2.2.0新增)
设置数据回迁参数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_DATA_CALLBACK_CFG
结构体：NET_DVR_DATA_CALLBACK_CFG
(V2.2.0新增)
获取设备存储信息 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_DEV_STORAGE_CFG
结构体：NET_DVR_DEV_STORAGE_CFG
(V2.3.2-3新增)
获取备机最大个数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_MAX_MACHINE_NUM_CFG
结构体：NET_DVR_MACHINE_MAX_NUM_CFG
(V2.2.0新增)
设置备机最大个数 NET_DVR_SetDVRConfig 命令：NET_DVR_SET_MAX_MACHINE_NUM_CFG
结构体：NET_DVR_MACHINE_MAX_NUM_CFG
(V2.2.0新增)
获取用户权限 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_USER_RIGHT_CFG
结构体：NET_DVR_USER_RIGHT_CFG
(V2.2.0新增)
设置用户权限 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_USER_RIGHT_CFG
结构体：NET_DVR_USER_RIGHT_CFG
(V2.2.0新增)
录像回传功能配置
手动添加录像回传任务 NET_DVR_SetDeviceConfig 命令：NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL
结构体：NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG
(V2.3.2-3新增)
删除手动录像回传任务 NET_DVR_SetDeviceConfig 命令：NET_DVR_DEL_RECORD_PASSBACK_TASK_MANUAL
结构体：NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG
(V2.3.2-3新增)
获取录像回传计划配置 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_RECORD_PASSBACK_PLAN_CFG
结构体：NET_DVR_RECORD_PASSBACK_SCH_CFG
(V2.3.2-3新增)
设置录像回传计划配置 NET_DVR_SetDeviceConfig 命令：NET_DVR_SET_RECORD_PASSBACK_PLAN_CFG
结构体：NET_DVR_RECORD_PASSBACK_SCH_CFG
(V2.3.2-3新增)
控制手动添加的录像回传任务 NET_DVR_RemoteControl 命令：NET_DVR_RECORD_PASSBACK_TASK_MANUAL_CTRL
结构体：NET_DVR_RECORD_PASSBACK_MANUAL_CTRL
(V2.3.2-3新增)
手动添加录像回传任务V50（返回任务ID） NET_DVR_SetDeviceConfigEx 命令：NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL_V50
(V2.3.2-4新增)
获取回传功能基础配置 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG
结构体：NET_DVR_REC_PASSBACK_BASIC_CFG
(V2.3.2-4新增)
设置回传功能基础配置 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_RECORD_PASSBACK_BASIC_CFG
结构体：NET_DVR_REC_PASSBACK_BASIC_CFG
(V2.3.2-4新增)
获取回传历史录像计划配置 NET_DVR_GetSTDConfig 命令：NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG
结构体：NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG
(V2.3.2-4新增)
设置回传历史录像计划配置 NET_DVR_SetSTDConfig 命令：NET_DVR_SET_RECORD_PASSBACK_HISTORY_PLAN_CFG
结构体：NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG
(V2.3.2-4新增)
获取所有手动添加的录像回传任务
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL
(V2.3.2-3新增)
逐个获取查找到的信息 NET_DVR_GetNextRemoteConfig 配置命令：NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL
(V2.3.2-3新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
获取N+1设备信息
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO
(V2.2.0新增)
逐个获取查找到的N+1设备信息 NET_DVR_GetNextRemoteConfig 配置命令：NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO
(V2.2.0新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
N+0重定向
获取N+0模式下重定向信息 NET_DVR_GetDeviceConfig 命令：NET_DVR_GET_RELOCATE_INFO
结构体：NET_DVR_RELOCATE_INFO
V2.3.2新增
一键配置CVR
启动远程配置长连接 NET_DVR_StartRemoteConfig 配置命令：
NET_DVR_ONE_KEY_CONFIG(V2.2.0新增)
NET_DVR_ONE_KEY_CONFIG_V50(V2.3.2-5新增)
获取一键配置的状态 NET_DVR_GetRemoteConfigState 配置命令：
NET_DVR_ONE_KEY_CONFIG(V2.2.0新增)
NET_DVR_ONE_KEY_CONFIG_V50(V2.3.2-5新增)
关闭长连接配置接口所创建的句柄，释放资源 | NET_DVR_StopRemoteConfig
远程控制
N+1模式设备添加、删除 NET_DVR_RemoteControl 控制命令：NET_DVR_ADD_DEVICE、NET_DVR_DEL_DEVICE
(V2.2.0新增)
重启CVR服务 NET_DVR_RemoteControl 控制命令：NET_DVR_RESTART_SERVICE
(V2.2.0新增)
硬盘管理
远程格式化设备硬盘 | NET_DVR_FormatDisk
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle
设备维护管理
获取在线用户参数 NET_DVR_GetDVRConfig 命令：NET_DVR_GET_ONLINE_USER_CFG
结构体：NET_DVR_ONLINE_USER_INFO
(V2.3.2-3新增)
获取设备运行状态 NET_DVR_GetDeviceStatus 命令：NET_DVR_GET_DEVICE_RUN_STATUS
结构体：NET_DVR_DEVICE_RUN_STATUS
(V2.3.2-3新增支持)
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment
远程升级 | NET_DVR_Upgrade
获取远程升级的进度 | NET_DVR_GetUpgradeProgress
获取远程升级的状态 | NET_DVR_GetUpgradeState
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle
查找设备的日志信息 | NET_DVR_FindDVRLog_V30
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30
释放查找日志的资源 | NET_DVR_FindLogClose_V30
恢复设备默认参数 | NET_DVR_RestoreConfig
导出配置文件 | NET_DVR_GetConfigFile_V30
导出配置文件 | NET_DVR_GetConfigFile
导入配置文件 | NET_DVR_SetConfigFile_EX
导入配置文件 | NET_DVR_SetConfigFile
重启设备 | NET_DVR_RebootDVR

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
CVR | 依接入的前端决定 | 依接入的前端决定 |


90XX/91XX V1.0系列网络硬盘录像机功能接口介绍

90XX/91XX V1.0系列网络硬盘录像机除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、零通道预览和配置、录像文件查找、回放和下载、录像文件锁定和备份、手动录像、报警上传、语音对讲、硬盘管理和远程参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
设置播放显示模式 | NET_DVR_SetShowMode |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | NET_DVR_PLAYSETTIME控制不支持 NET_DVR_PLAYGETTOTALLEN控制不支持
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取叠加字符参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30 IP通道不支持字符叠加功能
设置叠加字符参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30 IP通道不支持字符叠加功能
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取设备本地主CVBS输出预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置设备本地主CVBS输出预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40 DS-91XX系列设备不支持
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40 DS-91XX系列设备不支持
获取IP报警输入接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMINCFG_V40 DS-91XX系列设备不支持
获取IP报警输出接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMOUTCFG_V40 DS-91XX系列设备不支持
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
设置盘组管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-90XX | PS | 模拟通道：私有 数字通道：依接入的前端决定 |
DS-91XX | PS | 私有 |


90XX/91XX V1.1系列网络硬盘录像机功能接口介绍

90XX/91XX V1.1系列网络硬盘录像机除分别兼容90XX/91XX V1.0的所有功能外，增加按事件查找录像文件的功能。

功能 | 接口 | 相关参数
按事件查找录像文件的相关功能 |  |
根据事件查找录像文件 | NET_DVR_FindFileByEvent |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-90XX | PS | 模拟通道：私有 数字通道：依接入的前端决定 |
DS-91XX | PS | 私有 |


90XX/91XX V1.2系列网络硬盘录像机功能接口介绍

90XX/91XX V1.2系列网络硬盘录像机除分别兼容90XX/91XX V1.1（含）以下的所有功能外，增加以下接口的功能，包括零通道相关、录像文件备份、获取IPC协议列表、获取和修改IPC信息和邮件测试等。

功能 | 接口 | 相关参数
按区域移动侦测智能搜索功能 |  |
开始智能搜索 | NET_DVR_SmartSearch |
获取区域内的下一个移动侦测信息 | NET_DVR_SearchNextInfo |
停止智能搜索 | NET_DVR_StopSearch |
零通道相关功能 |  |
获取零通道压缩参数 | NET_DVR_GetDVRConfig | NET_DVR_ZEROCHANCFG
设置零通道压缩参数 | NET_DVR_SetDVRConfig | NET_DVR_ZEROCHANCFG
获取零通道本地预览参数 | NET_DVR_GetDVRConfig | NET_DVR_PREVIEWCFG_V30
设置零通道本地预览参数 | NET_DVR_SetDVRConfig | NET_DVR_PREVIEWCFG_V30
获取零通道缩放参数 | NET_DVR_GetDVRConfig | NET_DVR_ZERO_ZOOMCFG
设置零通道缩放参数 | NET_DVR_SetDVRConfig | NET_DVR_ZERO_ZOOMCFG
开启零通道预览 | NET_DVR_ZeroStartPlay |
停止零通道预览 | NET_DVR_ZeroStopPlay |
零通道产生一个关键帧 | NET_DVR_ZeroMakeKeyFrame |
零通道预览画面翻页 | NET_DVR_ZeroTurnOver |
回放录像文件及相关 |  |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | 除支持26之前的控制外，还支持NET_DVR_PLAYSETTIME控制支持 NET_DVR_PLAYGETTOTALLEN控制支持
录像文件备份 |  |
获取设备磁盘列表 | NET_DVR_GetDiskList |
按文件名备份录像文件 | NET_DVR_BackupByName |
按时间段备份录像文件 | NET_DVR_BackupByTime |
获取文件备份的进度 | NET_DVR_GetBackupProgress |
停止文件备份 | NET_DVR_StopBackup |
远程参数配置 |  |
获取设备参数(扩展) | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数(扩展) | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备能力 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：COMPRESSIONCFG_ABILITY（压缩参数能力）
获取IPC协议列表 |  |
获取设备支持的IPC协议表 | NET_DVR_GetIPCProtoList |
邮件测试 |  |
测试按已配置的EMAIL参数能否收发成功 | NET_DVR_StartEmailTest |
获取邮件测试的进度 | NET_DVR_GetEmailTestProgress |
停止邮件测试 | NET_DVR_StopEmailTest |

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-90XX | PS | 模拟通道：私有 数字通道：依接入的前端决定 |
DS-91XX | PS | 私有 |


91XXHF-ST系列网络硬盘录像机功能接口介绍

91XXHF-ST系列网络硬盘录像机除了兼容90XX/91XX的所有功能外，增加以下接口的功能，包括假日参数配置、多网卡配置、检测网络流量、录像标签功能、磁盘配额管理、SNMP协议配置、抓图功能接口以及图片回放备份等。

功能 | 接口 | 相关参数
假日参数配置 |  |
获取节假日参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_PARAM_CFG
设置节假日参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_PARAM_CFG
获取假日报警处理方式 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_HANDLE 包括移动侦测、视频信号丢失、视频遮盖以及报警输入的假日处理方式
设置假日报警处理方式 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_HANDLE 包括移动侦测、视频信号丢失、视频遮盖以及报警输入的假日处理方式
获取假日录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_RECORD
设置假日录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_RECORD
多网卡配置 |  |
获取多网卡配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
设置多网卡配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
获取BONDING网卡参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETWORK_BONDING
设置BONDING网卡参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETWORK_BONDING
网络流量检测 |  |
开始网络流量检测 | NET_DVR_StartNetworkFlowTest |
停止网络流量检测 | NET_DVR_StopNetworkFlowTest |
录像标签功能 |  |
添加录像标签 | NET_DVR_InsertRecordLabel |
删除录像标签 | NET_DVR_DelRecordLabel |
搜索录像标签 | NET_DVR_FindRecordLabel |
逐个获取搜索到的录像标签 | NET_DVR_FindNextLabel |
停止搜索录像标签 | NET_DVR_StopFindLabel |
抓图配置以及图片回放备份功能 |  |
获取设备抓图配置 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_JPEG_CAPTURE_CFG
设置设备抓图配置 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_JPEG_CAPTURE_CFG
获取抓图计划 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SCHED_CAPTURECFG
设置抓图计划 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SCHED_CAPTURECFG
获取抓图FTP上传参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_FTPCFG
设置抓图FTP上传参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_FTPCFG
根据类型和时间查找图片 | NET_DVR_FindPicture |
逐个获取查找到的图片信息 | NET_DVR_FindNextPicture |
关闭图片查找，释放资源 | NET_DVR_CloseFindPicture |
图片回放 | NET_DVR_GetPicture_V30 |
备份图片 | NET_DVR_BackupPicture |
获取图片备份的进度 | NET_DVR_GetBackupProgress |
停止备份 | NET_DVR_StopBackup |
磁盘配额管理 |  |
获取磁盘配额信息 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DISK_QUOTA_CFG
设置磁盘配额信息 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DISK_QUOTA_CFG
SNMP协议配置 |  |
获取SNMP参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SNMPCFG_V30
设置SNMP参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SNMPCFG_V30
通道的功能接口 |  |
获取通道的工作状态 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_LINK_STATUS
获取通道视频输入图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEO_INPUT_EFFECT
设置通道视频输入图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEO_INPUT_EFFECT


81XX/71XX/72XX/73XX系列网络硬盘录像机功能接口介绍

81XX/71XX/72XX/73XX系列网络硬盘录像机除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、录像文件锁定和备份、手动录像、报警上传、语音对讲、硬盘管理和远程参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub | DS-81XXHS-S、DS-81XXHL-S、DS-71XXH-S系列V3.1（含）以上支持
实时预览 | NET_DVR_RealPlay_V30 | DS-81XXHS-S、DS-81XXHL、DS-71XXH-S系列V3.1（含）以上支持子码流预览
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode | DS-81XXHS-S系列设备不支持
独占声卡模式下开启声音 | NET_DVR_OpenSound | DS-81XXHS-S系列设备不支持
独占声卡模式下关闭声音 | NET_DVR_CloseSound | DS-81XXHS-S系列设备不支持
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare | DS-81XXHS-S系列设备不支持
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare | DS-81XXHS-S系列设备不支持
调节播放音量 | NET_DVR_Volume | DS-81XXHS-S系列设备不支持
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | NET_DVR_PLAYSETTIME控制不支持 NET_DVR_PLAYGETTOTALLEN控制不支持
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取叠加字符参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
设置盘组管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-71XX | PS | 标准H264 |
DS-81XX | PS | 标准H264 |


网络硬盘录像机(DS-80XX系列设备)功能接口介绍

客户端SDK开发使用手册

DS-80XX系列设备功能接口介绍

DS-80XX系列设备除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、手动录像、报警上传、语音对讲和远程参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND 不支持带卡号和锁定录像文件的查询
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | 不支持控制命令：NET_DVR_PLAYSETTIME、 NET_DVR_PLAYGETTOTALLEN
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 只支持COMM_ALARM： NET_DVR_ALARMINFO
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile_EX |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
设置设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40 不支持byZeroChanNum、bySupport、byEsataUseage、byIPCPlug
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40 不支持byZeroChanNum、bySupport、byEsataUseage、byIPCPlug
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40 不支持录像过期时间、冗余录像的设置
获取叠加字符参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V30
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V30
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取IP监控设备无线参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_WIFI_CFG 带无线WIFI功能的IPC支持
设置IP监控设备无线参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_WIFI_CFG 带无线WIFI功能的IPC支持
获取IP监控设备网口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_WIFI_WORKMODE 带无线WIFI功能的IPC支持
设置IP监控设备网口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_WIFI_WORKMODE 带无线WIFI功能的IPC支持
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30 byPreviewNumber、wSwitchTime、bySwitchSeq设置无效
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30 不支持参数 struVGAPara、struMatrixPara
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30 不支持参数 struVGAPara、struMatrixPara
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut |
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取RTSP协议参数 | NET_DVR_GetRtspConfig |
设置RTSP协议参数 | NET_DVR_SetRtspConfig |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 | 不支持辅口缩放 dwMinorScale
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 | 不支持辅口缩放dwMinorScale
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 支持的能力类型：DEVICE_ALL_ABILITY、IPC_FRONT_PARAMETER、DEVICE_SOFTHARDWARE_ABILITY、DEVICE_NETWORK_ABILITY、DEVICE_ENCODE_ALL_ABILITY、DEVICE_ENCODE_CURRENT、 支持的IPC： 886、876、877、976；754、854、883；863、893、833、8153、853、763、793、733、7153、753等

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-80XX | 私有 | 私有 |


95系列NVR功能接口介绍

95系列NVR功能接口介绍除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、录像文件锁定和备份、手动录像、报警上传、语音对讲、硬盘管理和远程参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按事件查找录像文件的相关功能 |  |
根据事件查找录像文件 | NET_DVR_FindFileByEvent |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
区域移动侦测智能搜索 |  |
开始智能搜索 | NET_DVR_SmartSearch |
获取区域内的下一个移动侦测信息 | NET_DVR_SearchNextInfo |
停止智能搜索 | NET_DVR_StopSearch |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
录像文件备份 |  |
获取设备磁盘列表 | NET_DVR_GetDiskList |
按文件名备份录像文件 | NET_DVR_BackupByName |
按时间段备份录像文件 | NET_DVR_BackupByTime |
获取文件备份的进度 | NET_DVR_GetBackupProgress |
停止文件备份 | NET_DVR_StopBackup |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备参数(扩展) | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数(扩展) | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40
获取IP报警输入接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMINCFG_V40
获取IP报警输出接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMOUTCFG_V40
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
设置盘组管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取设备能力集 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：COMPRESSIONCFG_ABILITY（压缩参数能力）
获取IPC协议列表 |  |
获取设备支持的IPC协议表 | NET_DVR_GetIPCProtoList |
远程扫描和修改IPC信息 |  |
远程扫描获取IPC信息列表 | NET_DVR_GetSadpInfoList |
远程修改IPC信息 | NET_DVR_UpdateSadpInfo |
邮件测试 |  |
测试按已配置的EMAIL参数能否收发成功 | NET_DVR_StartEmailTest |
获取邮件测试的进度 | NET_DVR_GetEmailTestProgress |
停止邮件测试 | NET_DVR_StopEmailTest |

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-95XX | PS | 依接入的前端决定 |


96系列NVR功能接口介绍

96系列NVR功能接口介绍除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、零通道预览和配置、录像文件查找、回放和下载、录像文件锁定和备份、手动录像、报警上传、语音对讲、硬盘管理和远程参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
零通道相关功能 |  |
获取零通道压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZEROCHANCFG
设置零通道压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZEROCHANCFG
获取零通道本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置零通道本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取零通道缩放参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZERO_ZOOMCFG
设置零通道缩放参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZERO_ZOOMCFG
开启零通道预览 | NET_DVR_ZeroStartPlay |
停止零通道预览 | NET_DVR_ZeroStopPlay |
零通道产生一个关键帧 | NET_DVR_ZeroMakeKeyFrame |
零通道预览画面翻页 | NET_DVR_ZeroTurnOver |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按事件查找录像文件的相关功能 |  |
根据事件查找录像文件 | NET_DVR_FindFileByEvent |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按区域移动侦测智能搜索功能 |  |
开始智能搜索 | NET_DVR_SmartSearch |
获取区域内的下一个移动侦测信息 | NET_DVR_SearchNextInfo |
停止智能搜索 | NET_DVR_StopSearch |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
录像文件备份 |  |
获取设备磁盘列表 | NET_DVR_GetDiskList |
按文件名备份录像文件 | NET_DVR_BackupByName |
按时间段备份录像文件 | NET_DVR_BackupByTime |
获取文件备份的进度 | NET_DVR_GetBackupProgress |
停止文件备份 | NET_DVR_StopBackup |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40
获取IP报警输入接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMINCFG_V40
获取IP报警输出接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMOUTCFG_V40
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
设置盘组管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
获取设备能力 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：COMPRESSIONCFG_ABILITY（压缩参数能力）
获取IPC协议列表 |  |
获取设备支持的IPC协议表 | NET_DVR_GetIPCProtoList |
远程扫描和修改IPC信息 |  |
远程扫描获取IPC信息列表 | NET_DVR_GetSadpInfoList |
远程修改IPC信息 | NET_DVR_UpdateSadpInfo |
邮件测试 |  |
测试按已配置的EMAIL参数能否收发成功 | NET_DVR_StartEmailTest |
获取邮件测试的进度 | NET_DVR_GetEmailTestProgress |
停止邮件测试 | NET_DVR_StopEmailTest |

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-96XX | PS | 依接入的前端决定 |


95XX96XXN-ST系列NVR功能接口介绍

95XXN-ST和96XXN-ST系列NVR除了分别兼容95XXN-S和96XXN-SH的所有功能外，还支持以下接口的功能。

功能 | 接口 | 相关参数
远程参数配置 |  |
获取设备当前网络资源使用情况 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICE_NET_USING_INFO
获取是否同步前端IPC设备参数信息 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SYNCHRONOUS_IPC
设置是否同步前端IPC设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SYNCHRONOUS_IPC
设置IPC的用户名/密码 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_IPC_PASSWD
设置IPC的网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_IPC_NETCFG
假日参数配置 |  |
获取节假日参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_PARAM_CFG
设置节假日参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_PARAM_CFG
获取假日报警处理方式 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_HANDLE 包括移动侦测、视频信号丢失、视频遮盖以及报警输入的假日处理方式
设置假日报警处理方式 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_HANDLE 包括移动侦测、视频信号丢失、视频遮盖以及报警输入的假日处理方式
获取假日录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_RECORD
设置假日录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_RECORD
多网卡配置 |  |
获取多网卡配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
设置多网卡配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
获取BONDING网卡参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETWORK_BONDING
设置BONDING网卡参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETWORK_BONDING
网络流量检测 |  |
开始网络流量检测 | NET_DVR_StartNetworkFlowTest |
停止网络流量检测 | NET_DVR_StopNetworkFlowTest |
录像标签功能 |  |
添加录像标签 | NET_DVR_InsertRecordLabel |
删除录像标签 | NET_DVR_DelRecordLabel |
搜索录像标签 | NET_DVR_FindRecordLabel |
逐个获取搜索到的录像标签 | NET_DVR_FindNextLabel |
停止搜索录像标签 | NET_DVR_StopFindLabel |
抓图配置以及图片回放备份功能 |  |
获取设备抓图配置 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_JPEG_CAPTURE_CFG
设置设备抓图配置 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_JPEG_CAPTURE_CFG
获取抓图计划 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SCHED_CAPTURECFG
设置抓图计划 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SCHED_CAPTURECFG
获取抓图FTP上传参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_FTPCFG
设置抓图FTP上传参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_FTPCFG
根据类型和时间查找图片 | NET_DVR_FindPicture |
逐个获取查找到的图片信息 | NET_DVR_FindNextPicture |
关闭图片查找，释放资源 | NET_DVR_CloseFindPicture |
图片回放 | NET_DVR_GetPicture_V30 |
备份图片 | NET_DVR_BackupPicture |
获取图片备份的进度 | NET_DVR_GetBackupProgress |
停止备份 | NET_DVR_StopBackup |
磁盘配额管理 |  |
获取磁盘配额信息 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DISK_QUOTA_CFG
设置磁盘配额信息 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DISK_QUOTA_CFG
SNMP协议配置 |  |
获取SNMP参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SNMPCFG
设置SNMP参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SNMPCFG


96系列NVR功能接口介绍

96系列NVR功能接口介绍除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、录像文件锁定和备份、手动录像、报警上传、语音对讲、硬盘管理、物理硬盘及阵列操作、远程参数配置等。

功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND（不支持带卡号的查询）
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按事件查找录像文件的相关功能 |  |
根据事件查找录像文件 | NET_DVR_FindFileByEvent |
逐个获取查找到的文件信息 | NET_DVR_FindNextEvent |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
按区域移动侦测智能搜索功能 |  |
开始智能搜索 | NET_DVR_SmartSearch |
获取区域内的下一个移动侦测信息 | NET_DVR_SearchNextInfo |
停止智能搜索 | NET_DVR_StopSearch |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 |
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
录像文件锁定与解锁 |  |
按文件名锁定录像文件 | NET_DVR_LockFileByName |
按文件名解锁录像文件 | NET_DVR_UnlockFileByName |
录像文件备份 |  |
获取设备磁盘列表 | NET_DVR_GetDiskList |
按文件名备份录像文件 | NET_DVR_BackupByName |
按时间段备份录像文件 | NET_DVR_BackupByTime |
获取文件备份的进度 | NET_DVR_GetBackupProgress |
停止文件备份 | NET_DVR_StopBackup |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 |
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
远程面板控制 |  |
远程控制面板上的按键 | NET_DVR_ClickKey |
禁用设备本地面板控制 | NET_DVR_LockPanel |
恢复设备本地面板控制 | NET_DVR_UnLockPanel |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能） | NET_DVR_PTZControl_EX |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能） | NET_DVR_PTZPreset_EX |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能） | NET_DVR_PTZCruise_EX |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能） | NET_DVR_PTZTrack_EX |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能） | NET_DVR_TransPTZ_EX |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
物理硬盘及阵列操作 |  |
获取物理磁盘信息列表 | NET_DVR_GetPDList |
设置热备 | NET_DVR_SetSpareDisk |
获取阵列信息列表 | NET_DVR_GetArrayList |
创建阵列 | NET_DVR_CreateArray |
计算阵列的大小 | NET_DVR_CalcArraySize |
阵列一键配置 | NET_DVR_RaidFastConfig |
获取阵列一键配置的进度 | NET_DVR_FastConfigProcess |
关闭阵列一键配置，释放资源 | NET_DVR_CloseFastConfig |
重建阵列 | NET_DVR_RebuildArray |
迁移阵列 | NET_DVR_MigrateArray |
安全拔盘 | NET_DVR_RaidPullDiskStart |
重新扫描阵列 | NET_DVR_ScanRaidStart |
释放安全拔盘和扫描阵列的句柄资源 | NET_DVR_CloseLongCfgHandle |
获取虚拟磁盘列表 | NET_DVR_GetVDList |
创建虚拟磁盘 | NET_DVR_CreateVD |
删除虚拟磁盘 | NET_DVR_DelVD |
修复虚拟磁盘 | NET_DVR_RepairVD |
获取阵列中虚拟磁盘分配信息 | NET_DVR_GetArraySpaceAlloc |
远程扩容虚拟磁盘 | NET_DVR_ExpandDisk |
获取扩容虚拟磁盘进度 | NET_DVR_GetExpandProgress |
关闭虚拟磁盘扩容，释放资源 | NET_DVR_CloseExpandHandle |
适配器参数信息 | NET_DVR_RAID_ADAPTER_INFO |
远程升级适配器 | NET_DVR_AdapterUpgrade |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
获取设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V430
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取辅助预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置辅助预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30
获取报警触发辅助输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
设置报警触发辅助输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_AUXOUTCFG
获取IP接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40
设置IP接入配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_IPPARACFG_V40
获取IP报警输入接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMINCFG_V40
获取IP报警输出接入配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_IPALARMOUTCFG_V40
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取盘组管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
设置盘组管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDGROUP_CFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
获取设备能力 |  |
获取设备能力 | NET_DVR_GetDeviceAbility | 支持的能力类型有：COMPRESSIONCFG_ABILITY（压缩参数能力）
获取IPC协议列表 |  |
获取设备支持的IPC协议表 | NET_DVR_GetIPCProtoList |
远程扫描和修改IPC信息 |  |
远程扫描获取IPC信息列表 | NET_DVR_GetSadpInfoList |
远程修改IPC信息 | NET_DVR_UpdateSadpInfo |
邮件测试 |  |
测试按已配置的EMAIL参数能否收发成功 | NET_DVR_StartEmailTest |
获取邮件测试的进度 | NET_DVR_GetEmailTestProgress |
停止邮件测试 | NET_DVR_StopEmailTest |
假日参数配置 |  |
获取节假日参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_PARAM_CFG
设置节假日参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_PARAM_CFG
获取假日报警处理方式 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_HANDLE 包括移动侦测、视频信号丢失、视频遮盖以及报警输入的假日处理方式
设置假日报警处理方式 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_HANDLE 包括移动侦测、视频信号丢失、视频遮盖以及报警输入的假日处理方式
获取假日录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HOLIDAY_RECORD
设置假日录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HOLIDAY_RECORD
多网卡配置 |  |
获取多网卡配置参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
设置多网卡配置参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_MULTI
获取BONDING网卡参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETWORK_BONDING
设置BONDING网卡参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETWORK_BONDING
网络流量检测 |  |
开始网络流量检测 | NET_DVR_StartNetworkFlowTest |
停止网络流量检测 | NET_DVR_StopNetworkFlowTest |
录像标签功能 |  |
添加录像标签 | NET_DVR_InsertRecordLabel |
删除录像标签 | NET_DVR_DelRecordLabel |
搜索录像标签 | NET_DVR_FindRecordLabel |
逐个获取搜索到的录像标签 | NET_DVR_FindNextLabel |
停止搜索录像标签 | NET_DVR_StopFindLabel |
抓图配置以及图片回放备份功能 |  |
获取设备抓图配置 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_JPEG_CAPTURE_CFG
设置设备抓图配置 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_JPEG_CAPTURE_CFG
获取抓图计划 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SCHED_CAPTURECFG
设置抓图计划 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SCHED_CAPTURECFG
获取抓图FTP上传参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_FTPCFG
设置抓图FTP上传参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_FTPCFG
根据类型和时间查找图片 | NET_DVR_FindPicture |
逐个获取查找到的图片信息 | NET_DVR_FindNextPicture |
关闭图片查找，释放资源 | NET_DVR_CloseFindPicture |
图片回放 | NET_DVR_GetPicture_V30 |
备份图片 | NET_DVR_BackupPicture |
获取图片备份的进度 | NET_DVR_GetBackupProgress |
停止备份 | NET_DVR_StopBackup |
磁盘配额管理 |  |
获取磁盘配额信息 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DISK_QUOTA_CFG
设置磁盘配额信息 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DISK_QUOTA_CFG
SNMP协议配置 |  |
获取SNMP参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SNMPCFG
设置SNMP参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SNMPCFG
通道的功能接口 |  |
获取通道的工作状态 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_LINK_STATUS
获取通道视频输入图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEO_INPUT_EFFECT
设置通道视频输入图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEO_INPUT_EFFECT

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-9664N-RH | PS(网传RTP) | 依接入的前端决定 |


网络摄像机(IPC系列设备)功能接口介绍

网络摄像机(IPC系列设备)除通用接口的功能外，还支持以下接口的功能，包括预览、视频数据获取、录像文件查找、回放和下载、手动录像、报警上传、语音对讲和远程参数配置等。

支持的IPC主要有:

DS-2CD802/812/892P(N)-IR1(IR3)(IR5), DS-2CD802/812/892PF(NF)(-E)(-W)(-D), DS-2CD832F(-E), DS-2CD833F-E(W), DS-2CD893PFWD(NFWD)-E,
DS-2CD8133F-E(W)(I), DS-2CD726F-PT/DS-2CD727/728PF-PT(W), DS-2CD702/712/792PF(NF)(-E), DS-2CD732F(-E), DS-2CD733F-E(I), DS-2CD793PFWD(NFWD)-E(I),
DS-2CD793PF(NF)-E(I), DS-2CD7133-E, DS-2CD762MF, DS-2CD763PF(NF)-E(I), DS-2CD862MF-E, DS-2CD863PF(NF)-E(W), DS-2CD7153-E, DS-2CD8153F-E(W)(I), DS-2CD754F-E(I),
DS-2CD876BF, DS-2CD877BF, DS-2CD854F-E(W)等
功能 | 接口 | 相关参数
预览相关功能 |  |
主码流动态产生一个关键帧 | NET_DVR_MakeKeyFrame |
子码流动态产生一个关键帧 | NET_DVR_MakeKeyFrameSub |
实时预览 | NET_DVR_RealPlay_V30 |
停止预览 | NET_DVR_StopRealPlay |
获取预览时用来解码和显示的播放器句柄 | NET_DVR_GetRealPlayerIndex |
获取预览视频显示参数 | NET_DVR_ClientGetVideoEffect |
设置预览视频显示参数 | NET_DVR_ClientSetVideoEffect |
预览画面叠加字符和图像 | NET_DVR_RigisterDrawFun |
设置声音播放模式 | NET_DVR_SetAudioMode |
独占声卡模式下开启声音 | NET_DVR_OpenSound |
独占声卡模式下关闭声音 | NET_DVR_CloseSound |
共享声卡模式下开启声音 | NET_DVR_OpenSoundShare |
共享声卡模式下关闭声音 | NET_DVR_CloseSoundShare |
调节播放音量 | NET_DVR_Volume |
初始化系统中的显示设备 | NET_DVR_InitDDrawDevice |
释放显示设备占用的资源 | NET_DVR_ReleaseDDrawDevice |
获取系统的显示设备的数量 | NET_DVR_GetDDrawDeviceTotalNums |
设置播放窗口所使用的显卡 | NET_DVR_SetDDrawDevice |
注册回调函数，捕获实时码流数据 | NET_DVR_SetRealDataCallBack |
注册回调函数，捕获实时码流数据（标准码流） | NET_DVR_SetStandardDataCallBack |
捕获数据并存放到指定的文件中 | NET_DVR_SaveRealData |
停止数据捕获 | NET_DVR_StopSaveRealData |
单帧数据捕获并保存成BMP位图 | NET_DVR_CapturePicture |
单帧数据捕获并保存成JPEG图 | NET_DVR_CaptureJPEGPicture |
单帧数据捕获并保存成JPEG存放在指定的内存空间中 | NET_DVR_CaptureJPEGPicture_NEW |
录像文件操作的相关功能 |  |
根据文件类型、时间查找设备录像文件 | NET_DVR_FindFile_V30 | NET_DVR_FILECOND 不支持带卡号和锁定录像文件的查询
逐个获取查找到的文件信息 | NET_DVR_FindNextFile_V30 |
关闭文件查找，释放资源 | NET_DVR_FindClose_V30 |
回放录像文件及相关 |  |
按文件名回放录像文件 | NET_DVR_PlayBackByName |
按时间回放录像文件 | NET_DVR_PlayBackByTime |
控制录像回放的状态 | NET_DVR_PlayBackControl_V40 | 不支持控制命令：NET_DVR_PLAYSETTIME、 NET_DVR_PLAYGETTOTALLEN
停止回放录像文件 | NET_DVR_StopPlayBack |
捕获回放的录像数据，并保存成文件 | NET_DVR_PlayBackSaveData |
停止保存录象数据 | NET_DVR_StopPlayBackSave |
注册回调函数，捕获录像数据 | NET_DVR_SetPlayDataCallBack |
获取录像回放时显示的OSD时间 | NET_DVR_GetPlayBackOsdTime |
录像回放时抓图，并保存在文件中 | NET_DVR_PlayBackCaptureFile |
刷新显示回放窗口 | NET_DVR_RefreshPlay |
获取回放时用来解码显示的播放库句柄 | NET_DVR_GetPlayBackPlayerIndex |
录像文件下载及相关 |  |
按文件名下载录像文件 | NET_DVR_GetFileByName |
按时间下载录像文件 | NET_DVR_GetFileByTime |
控制录像下载的状态 | NET_DVR_PlayBackControl |
停止下载录像文件 | NET_DVR_StopGetFile |
获取当前下载录像文件的进度 | NET_DVR_GetDownloadPos |
手动录像 |  |
远程手动启动设备录像 | NET_DVR_StartDVRRecord |
远程手动停止设备录像 | NET_DVR_StopDVRRecord |
布防、撤防和监听 |  |
注册回调函数，接收设备报警消息等 | NET_DVR_SetDVRMessageCallBack_V30 | 只支持COMM_ALARM： NET_DVR_ALARMINFO
建立报警上传通道，获取报警等信息 | NET_DVR_SetupAlarmChan_V30 |
撤销报警上传通道 | NET_DVR_CloseAlarmChan_V30 |
启动监听，接收设备主动上传的报警等信息（支持多线程） | NET_DVR_StartListen_V30 |
停止监听（支持多线程） | NET_DVR_StopListen_V30 |
云台控制 |  |
云台控制操作(需先启动图象预览) | NET_DVR_PTZControl |
云台控制操作(不用启动图象预览) | NET_DVR_PTZControl_Other |
带速度的云台控制操作(需先启动图象预览) | NET_DVR_PTZControlWithSpeed |
带速度的云台控制操作(不用启动图象预览) | NET_DVR_PTZControlWithSpeed_Other |
云台预置点操作（需先启动预览） | NET_DVR_PTZPreset |
云台预置点操作 | NET_DVR_PTZPreset_Other |
云台巡航操作，需先启动预览 | NET_DVR_PTZCruise |
云台巡航操作 | NET_DVR_PTZCruise_Other |
云台花样扫描操作，需先启动预览 | NET_DVR_PTZTrack |
云台花样扫描操作 | NET_DVR_PTZTrack_Other |
透明云台操作，需先启动预览 | NET_DVR_TransPTZ |
透明云台操作 | NET_DVR_TransPTZ_Other |
语音对讲、转发及广播 |  |
启动语音对讲 | NET_DVR_StartVoiceCom_V30 |
设置语音对讲客户端的音量 | NET_DVR_SetVoiceComClientVolume |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音转发，获取编码后的音频数据 | NET_DVR_StartVoiceCom_MR_V30 |
转发语音数据 | NET_DVR_VoiceComSendData |
停止语音对讲或者语音转发 | NET_DVR_StopVoiceCom |
启动语音广播的PC端声音捕获 | NET_DVR_ClientAudioStart_V30 |
添加设备的某个语音通道到可以接收PC端声音的广播组 | NET_DVR_AddDVR_V30 |
从可接收PC机声音的广播组里删除该设备的语音通道 | NET_DVR_DelDVR_V30 |
停止语音广播的PC端声音捕获 | NET_DVR_ClientAudioStop |
获取语音对讲音频参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
设置语音对讲音频参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSION_AUDIO
透明通道 |  |
建立透明通道 | NET_DVR_SerialStart |
通过透明通道向设备串口发送数据 | NET_DVR_SerialSend |
断开透明通道 | NET_DVR_SerialStop |
向串口发送数据 |  |
直接向串口发送数据，不需要建立透明通道 | NET_DVR_SendToSerialPort |
直接向232串口发送数据，不需要建立透明通道 | NET_DVR_SendTo232Port |
硬盘管理 |  |
远程格式化设备硬盘 | NET_DVR_FormatDisk |
获取格式化硬盘的进度 | NET_DVR_GetFormatProgress |
关闭格式化硬盘句柄，释放资源 | NET_DVR_CloseFormatHandle |
设备维护管理 |  |
获取设备的工作状态 | NET_DVR_GetDVRWorkState_V30 |
设置远程升级时网络环境 | NET_DVR_SetNetworkEnvironment |
远程升级 | NET_DVR_Upgrade |
获取远程升级的进度 | NET_DVR_GetUpgradeProgress |
获取远程升级的状态 | NET_DVR_GetUpgradeState |
关闭远程升级句柄，释放资源 | NET_DVR_CloseUpgradeHandle |
查找设备的日志信息（可搜索带S.M.A.R.T信息的日志） | NET_DVR_FindDVRLog_V30 |
逐条获取查找到的日志信息 | NET_DVR_FindNextLog_V30 |
释放查找日志的资源 | NET_DVR_FindLogClose_V30 |
恢复设备默认参数 | NET_DVR_RestoreConfig |
导出配置文件 | NET_DVR_GetConfigFile_V30 |
导出配置文件 | NET_DVR_GetConfigFile_EX |
导出配置文件 | NET_DVR_GetConfigFile |
导入配置文件 | NET_DVR_SetConfigFile_EX |
导入配置文件 | NET_DVR_SetConfigFile |
关机和重启 |  |
重启设备 | NET_DVR_RebootDVR |
关闭设备 | NET_DVR_ShutDownDVR |
远程参数配置 |  |
设置设备参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40 不支持byZeroChanNum、bySupport、byEsataUseage、byIPCPlug、byRes
设置设备参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DEVICECFG_V40 不支持byZeroChanNum、bySupport、byEsataUseage、byIPCPlug、byRes
获取设备时间参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_TIME
设置设备时间参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_TIME
获取（云台）解码器参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
设置（云台）解码器参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DECODERCFG_V30
获取232串口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
设置232串口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RS232CFG_V30
获取异常参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
设置异常参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EXCEPTION_V40
获取时区和夏时制参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
设置时区和夏时制参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ZONEANDDST
获取图像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
设置图像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PICCFG_V40
获取压缩参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
设置压缩参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_COMPRESSIONCFG_V30
获取录像参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_RECORD_V40
设置录像参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_RECORD_V40 不支持录像过期时间、冗余录像的设置
获取叠加字符参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
设置叠加字符参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_SHOWSTRING_V30
获取前端参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_CAMERAPARAMCFG
设置前端参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_CAMERAPARAMCFG
获取网络参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
设置网络参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETCFG_V50
获取网络应用(NTP/DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NETAPPCFG 2CD862MF-E、2CD892P(N)-IR3不支持NTP
设置网络应用(NTP/DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NETAPPCFG 2CD862MF-E、2CD892P(N)-IR3不支持NTP
获取网络应用(NTP)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NTPPARA 2CD862MF-E、2CD892P(N)-IR3不支持NTP
设置网络应用(NTP)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NTPPARA 2CD862MF-E、2CD892P(N)-IR3不支持NTP
获取网络应用(DDNS)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
设置网络应用(DDNS)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_DDNSPARA_V30
获取网络应用(EMAIL)参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
设置网络应用(EMAIL)参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_EMAILCFG_V30
获取IP监控设备无线参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_WIFI_CFG 带无线WIFI功能的IPC支持
设置IP监控设备无线参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_WIFI_CFG 带无线WIFI功能的IPC支持
获取IP监控设备网口参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_WIFI_WORKMODE 带无线WIFI功能的IPC支持
设置IP监控设备网口参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_WIFI_WORKMODE 带无线WIFI功能的IPC支持
获取用户参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_USER_V40
设置用户参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_USER_V40
获取本地预览参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30
设置本地预览参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_PREVIEWCFG_V30 byPreviewNumber、wSwitchTime、bySwitchSeq设置无效
获取视频输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30 不支持参数 struVGAPara、struMatrixPara
设置视频输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_VIDEOOUT_V30 不支持参数 struVGAPara、struMatrixPara
获取NFS（网络文件系统）参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NFSCFG
设置NFS（网络文件系统）参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NFSCFG
获取硬盘管理参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_HDCFG
设置硬盘管理参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_HDCFG
获取网络硬盘接入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
设置网络硬盘接入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_NET_DISKCFG
获取报警输入参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
设置报警输入参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMINCFG_V40
获取报警输出参数 | NET_DVR_GetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
设置报警输出参数 | NET_DVR_SetDVRConfig | 配置参数：NET_DVR_ALARMOUTCFG_V30
获取设备报警输出 | NET_DVR_GetAlarmOut |
获取设备报警输出 | NET_DVR_GetAlarmOut_V30 |
设置设备报警输出 | NET_DVR_SetAlarmOut |
获取RTSP协议参数 | NET_DVR_GetRtspConfig |
设置RTSP协议参数 | NET_DVR_SetRtspConfig |
获取设备支持的云台协议 | NET_DVR_GetPTZProtocol |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG |
获取视频输出缩放信息 | NET_DVR_GetScaleCFG_V30 | 不支持辅口缩放 dwMinorScale
设置视频输出缩放参数 | NET_DVR_SetScaleCFG |
设置视频输出缩放参数 | NET_DVR_SetScaleCFG_V30 | 不支持辅口缩放dwMinorScale
获取设备能力集 |  |
获取设备能力集 | NET_DVR_GetDeviceAbility | 支持的能力类型：DEVICE_ALL_ABILITY、IPC_FRONT_PARAMETER、DEVICE_SOFTHARDWARE_ABILITY、DEVICE_NETWORK_ABILITY、DEVICE_ENCODE_ALL_ABILITY、DEVICE_ENCODE_CURRENT、 支持的IPC： 886、876、877、976；754、854、883；863、893、833、8153、853、763、793、733、7153、753等

以下给出设备支持的编码类型和封装格式

设备型号 | 封装格式 | 编码类型 | 备注
DS-2CD876 | RTP | 标准H264或MJPEG | 支持的编码类型需根据设备的能力而定
DS-2CD883 | RTP | 标准H264或MJPEG | 支持的编码类型需根据设备的能力而定


SDK版本更新V6.x

更新版本 更新项目 更新记录
V6.1.9.3
build20210126 		V6.1.9.3基线项目
 1. 补充：NET_VCA_HUMAN_ATTRIBUTE结构体，增加pThermalData（热成像图片指针）。
2. 补充：NET_VCA_BLOCKLIST_INFO结构体dwThermalDataLen（热成像图片长度，对应struAttribute字段中的pThermalData热成像图片数据长度，仅人脸比对事件上报支持）。
3. 补充：NET_DVR_VEHICLE_INFO违法类型byIllegalType字段含义。
4. 补充：NET_DVR_TPS_REAL_TIME_INFO，结构体dwDeviceIDEx（设备ID扩展）。
5. 补充：NET_DVR_TPS_STATISTICS_PARAM，结构体dwDeviceIDEx（设备ID扩展）。
6. 补充：NET_DVR_AID_ALARM_V41结构体byRuleID（规则ID,1-4,当congestion事件配置了规则区域时返回）、wDevInfoIvmsChannelEx（与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。）、byBrokenNetHttp（断网续传标志位，0-不重传数据，1-重传数据）、dwPlateSmallPicDataLen（车牌小图图片长度）、pPlateSmallImage（指向车牌小图的指针）。
7. 补充：NET_DVR_TFS_ALARM结构体byBrokenNetHttp（断网续传标志位，0-不重传数据，1-重传数据）。
8. 补充：NET_DVR_SHIPSDETECTION_ALARM结构体byPicTransType（图片数据传输方式: 0-二进制；1-url）、bySID（场景ID）、szSceneName（场景名称，不超过32字符）、dwXmlLen（XML透传数据长度字段）、pXmlBuf（XML报警信息指针,其XML对应到EventNotificationAlert XML Block）、struShipImageInfo（船只抓拍图片信息,数组下标为0时代表为第一张船只抓拍图片，以此类推；最大支持6张图片）。
9. 补充：VCA_PLATE_TYPE结构体扩展车牌类型说明，增加应急车牌、运输车、商用车等说明。
10. 补充：NET_DVR_FILECOND_V40结构体dwFileType录像文件类型烟雾检测、通道定时录像时间、AI开放平台时间说明。
11. 补充：NET_DVR_FIND_PICTURE_PARAM结构体byFileType查找的图片类型字段说明。
12. 补充：NET_DVR_VOD_PARA_V50结构体byHls（HLS回放，0-否，1-是）字段。
13. 补充：NET_DVR_REALTIME_THERMOMETRY_COND结构体wInterval（上传间隔（仅温差模式支持），取值范围：1-3600 秒，填0则默认3600S上传一次）、fTemperatureDiff（温差）。
14. 补充：NET_DVR_XML_CONFIG_OUTPUT结构体lpDataBuffer（当byNumOfMultiPart>0时，配合报文结构体使用，存放透传数据）、byNumOfMultiPart（报文分段个数）。
15. 补充：NET_DVR_COMPRESSION_AUDIO结构体byAudioEncType（音频编码类型）说明。
16. 补充：NET_DVR_ALARMER结构体bJSONBroken（JSON断网续传标志）、wSocketPort。
17. 补充：NET_DVR_VEHICLE_INFO_CFG结构体字段定义byArea（区域（省份））、byPlateType（车牌类型）、sDeviceName（设备名称）、byPlateColor（车牌颜色）、byPlateSize（车牌尺寸，0~未知，1~long, 2~short(中东车牌使用)）、sPlateCategory（车牌附加信息, 即车牌小字信息，(目前只有中东地区支持)）、sPlateImageURL（车牌小图URL）、sEffectiveTime（车牌信息有效时间，使用ISO8601 time格式）。
18. 补充：NET_DVR_FIREDETECTION_CFG结构体byverificationSensitivity（二次确认灵敏度，范围1~100s，默认50s）、byFireAlgorithmMode（火点算法模式，0：无效，1：模式识别-patternRecognition,:2：机器学习-machineLearning）、byAgriculturalMachineryFilterEnabled（农机过滤模块使能，0：不启用，1：启用）、byWaterReflectionEnabled（水面阳光反射模块使能, 0：不启用，1：启用）、byPatrolSensitivity（巡航检测灵敏度 （针对火点检测）, 范围1~100s，默认50s）。
19. 补充：NET_DVR_SMOKEDETECTION_CFG结构体byPatrolSensitivity（巡航检测灵敏度: 1~100默认50）、byDoubleCheckSensitivity（二次过滤灵敏度: 1~100默认50）。
20. 补充：NET_DVR_THERMAL_PIP结构体fDistance（融合距离,融合模式下生效,范围0.1-4.0米）。
21. 补充：NET_DVR_THERMOMETRY_BASICPARAM结构体byDisplayCentreTemperatureEnabled（显示中心点温度 0-不显示 1-显示）。
22. 补充：NET_DVR_THERMOMETRY_UPLOAD结构体byFaceSnapThermometryEnabled（人脸抓拍测温使能 1-开启 0-关闭）、dwChan（通道号，查询条件中通道号为0xffffffff时该字段生效）、struFaceRect（人脸子图区域）、dwTimestamp（DSP时间戳）。
23. 补充：NET_VCA_APPEND_INFO结构体byAppendChannelType（附加通道类型：0-保留;1-可见光通道;2-热成像通道）、dwAppendChannel（附加通道通道号）。
24. 补充：NET_DVR_ID_CARD_INFO_ALARM结构体dwSerialNo（事件流水号，为0无效）。
25. 新增：NET_DVR_SHIPIMAGE_INFO船只抓图信息结构体说明。
26. 新增：NET_ALARM_EXCEPTION报警异常结构体。
27. 新增：ALARM_EXCEPTION_ERROR_ENUM报警异常类型。
28. 补充：NET_DVR_StartDownload接口dwDownloadType字段定义（NET_SDK_DOWNLOAD_RATIOSTITCHING_FILE、NET_SDK_DOWNLOAD_LENS_PARAM_FILE、NET_SDK_DOWNLOAD_SELECT_DEVTYPE_CALIBFILE、NET_SDK_DOWNLOAD_VIDEOWALL_MATERIAL_FILE）。
29. 补充：NET_DVR_UploadFile_V40接口dwUploadType字段定义（UPLOAD_RATIOSTITCHING_FILE）。
30. 补充：NET_DVR_SetDVRMessageCallBack_V30接口lCommand字段定义（COMM_ALARM_EXCEPTION）。
6.1.6.3
build20200925 		V6.1.6基线项目
 1. 新增获取码流连接地址接口：NET_DVR_GetLinkAddr。
2. NET_DVR_FILECOND_V50(录像文件查找条件结构V50)中使用4个保留字节新增参数：dwTimeout查找超时时间。
3. NET_DVR_ALARM_SEARCH_COND(报警信息查询条件结构体)中使用1个保留字节新增参数：byNoBoundary报警数据是否含有表单数据。
4. 接口：NET_DVR_FindNextFile_V40，新增接口返回类型NET_DVR_FIND _TIMEOUT(宏定义值1005，查找文件超时)。
5. 新增加错误码：NET_DVR_NONBLOCKING_CAPTURE_NOTSUPPORT（185-不支持无阻塞抓图 ）、NET_SDK_ERR_FUNCTION_INVALID（186-已开启异步，该功能无效 ）、NET_SDK_ERR_MAX_PORT_MULTIPLEX（187-已达到端口复用最大数目），对应接口：NET_DVR_GetLastError。
6. 接口：NET_DVR_StartVoiceCom_V30支持linux64环境。
6.1.5.10
build20200624 		审讯刻录打印一体机v3.5.41产品开发(设备型号：DS-96SPN08L-I20220200526CCCH229893147WCVLU)
 1. NET_DVR_INQUEST_ROOM_INFO(审讯室信息结构体)中使用1个保留字节新增参数：byCDPrintEnabled-恢复完成后，是否使能光盘封面打印功能 0-否 1-开启。
2. NET_DVR_INQUEST_SYSTEM_INFO(审讯机系统信息结构体)中使用1个保留字节新增参数：byCDProcessingMode-1.存盘模式 2-出盘模式 存盘模式：刻录完成的光盘归档到出盘桶上；刻录失败的光盘，机械臂将坏盘直接通过中间的出盘位置弹出。出盘模式：将刻录好的光盘从中间的出盘位置出盘，刻录失败的光盘放到出盘桶里。
6.1.4.45
build20200525 		基于G3平台2、3系列5.5.150版本开发
 1. NET_VCA_INTRUSION(入侵参数结构体)中使用3个保留字节新增参数：byPriority-优先级,0~低,1~中,2~高; byAlarmConfidence-报警置信度, 0-低,1-较低,2-较高,3-高; byRecordConfidence-录像置信度, 0-低,1-较低,2-较高,3-高
2. NET_VCA_TRAVERSE_PLANE(穿越警戒面参数结构体)中使用3个保留字节新增参数：byPriority-优先级,0~低,1~中,2~高; byAlarmConfidence-报警置信度, 0-低,1-较低,2-较高,3-高; byRecordConfidence-录像置信度, 0-低,1-较低,2-较高,3-高。
3. NET_DVR_REGIONENTRANCE_REGION(进入区域侦测参数结构体)中使用2个保留字节新增参数：byAlarmConfidence-报警置信度, 0-低,1-较低,2-较高,3-高; byRecordConfidence-录像置信度, 0-低,1-较低,2-较高,3-高。
4. NET_DVR_REGIONEXITING_REGION(离开区域配置结构体)中使用2个保留字节新增参数：byAlarmConfidence-报警置信度, 0-低,1-较低,2-较高,3-高; byRecordConfidence-录像置信度, 0-低,1-较低,2-较高,3-高。
6.1.3.45
build20200120 		V5.5.20_H5_雷球设备
 1. NET_VCA_APPEND_INFO(异常行为识别附加信息)，占用10个字节扩展参数： dwTargetSpeed(雷达检测到目标速度)、dwTargetDistance(雷达检测到目标距离)、byAlarmType(报警类型)、byRadarChannel(雷达通道)。
V6.1.0.40
build20190822 		大超脑 iDS-96064NX-I16/HW-G4（标配）（V2） 小超脑NVR iDS-9632NX-I8/HW(标配)(V2) 小超脑NVS iDS-6704NX/HW(标配)（V2） v4.1.71
 1. NET_DVR_SMART_SEARCH_PIC_RET(图片查找结果信息结构体)，wPicType扩展取值： 13-人员奔跑，14-剧烈运动，15-人员倒地，16-人数异常，17-离岗检测，18-人员滞留，19-态势分析 20-玩手机。
2. JPEG抓图能力集(JpegCaptureAbility，对应接口： NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展：
<supportFileType>(支持图片类型)新增取值：running（人员奔跑）,violentMotion（剧烈运动）,failDown（人员倒地）,peopleNumChange（人数异常）,leavePosition（离岗检测）,retentionParam（人员滞留）,situationAnalysis（态势分析）, playCellphone（玩手机） 。
3. NET_DVR_BEHAVIOUR_COND，dwSearchType扩展取值： &0x20000 – 玩手机
4. NET_VCA_EVENT_UNION，扩展取值： struPlayCellphone（玩手机检测参数）、 struDruation（持续报警参数）。
5. VCA_RULE_EVENT_TYPE_EX，扩展取值： ENUM_VCA_EVENT_PLAY_CELLPHONE（玩手机检测参数）、 ENUM_VCA_EVENT_DURATION（持续报警参数）。
V6.1.0.40
build20190822 		DS_81XX_SHXL_K 超脑审讯主机v3.5.40
 1. NET_DVR_INQUEST_ALARM(审讯机报警信息)，占用8个字节扩展参数： dwInquestTime、dwNotifyChannel。
2. 新增接口：NET_DVR_STDXMLConfig，命令：
获取视音频编码配置参数能力集 ：GET /ISAPI/VCS/terminals/conferenceStreaming/capabilities；
获取视音频编码配置参数：GET /ISAPI/VCS/terminals/conferenceStreaming；
设置视音频编码配置参数：PUT /ISAPI/VCS/terminals/conferenceStreaming；
3. 新增接口：NET_DVR_STDXMLConfig，命令：
获取动态能力集 ：GET /ISAPI/VCS/conferences/<id>/conferenceStreaming/streamDynamicCap
4. 新增接口：NET_DVR_STDXMLConfig，命令：
获取终端会议码流通道信息能力集 ：GET /ISAPI/VCS/terminals/conferenceStreaming/channels?format=json
5. 新增接口：NET_DVR_STDXMLConfig，命令：
获取GENETEC使能开关 ：GET /ISAPI/System/Network/Integrate/genetec；
设置GENETEC使能开关：PUT /ISAPI/System/Network/Integrate/genetec；
6. 新增接口：NET_DVR_STDXMLConfig，命令：
获取ONVIF协议用户配置能力集 ：GET /ISAPI/Security/ONVIF/users/capabilities；
批量获取：GET /ISAPI/Security/ONVIF/users
批量设置：PUT /ISAPI/Security/ONVIF/users
添加单个用户：POST /ISAPI/Security/ONVIF/users
获取单个用户：GET /ISAPI/Security/ONVIF/users/<id>
设置单个用户: PUT /ISAPI/Security/ONVIF/users/<id>
删除所有用户: DELETE /ISAPI/Security/ONVIF/users
删除单个用户: DELETE /ISAPI/Security/ONVIF/users/<id>
7. 新增接口：NET_DVR_STDXMLConfig，命令：
获取GB28181服务能力集：GET /ISAPI/System/Network/GB28181Service/capabilities
获取GB28181服务 ：GET /ISAPI/System/Network/GB28181Service
设置GB28181服务 ：PUT /ISAPI/System/Network/GB28181Service
8. 新增接口：NET_DVR_STDXMLConfig，命令：
获取参数配置重启：GET /ISAPI/System/reboot/capabilities
9. 新增接口：NET_DVR_STDXMLConfig，命令：
获取所有PTZ通道配置：GET /ISAPI/PTZCtrl/channels
10. 新增接口：NET_DVR_STDXMLConfig，命令：
音量输入能力集：GET /ISAPI/System/Audio/AudioIn/capabilities
获取音量输入：GET /ISAPI/System/Audio/AudioIn
设置音量输入：PUT /ISAPI/System/Audio/AudioIn
11. 新增接口：NET_DVR_STDXMLConfig，命令：
音量视频输入能力集：GET /ISAPI/System/Video/inputs/channels/<id>/capabilities
12. 新增接口：NET_DVR_STDXMLConfig，命令：
编码管理能力：GET /ISAPI/Streaming/channels/<id>/capabilities
13. 新增接口：NET_DVR_STDXMLConfig，命令：
获取刻录加密：GET /ISAPI/Streaming/channels/<id>/CDBurningEncryption?format=json
设置刻录加密：PUT /ISAPI/Streaming/channels/<id>/CDBurningEncryption?format=json
14. 新增接口：NET_DVR_STDXMLConfig，命令：
获取设备发现协议能力集：GET /ISAPI/System/discoveryMode/capabilities
V6.1.0.40
build20190822 		AN平台中端人证及访客V1.0
 1. 门禁主机总能力集功能(对应接口：NET_DVR_STDXMLConfig)：
GET /ISAPI/AccessControl/capabilities，新增：isSupportTTSText、isSupportIDBlockListCfg节点。
2. NET_DVR_ID_CARD_INFO_ALARM(身份证信息报警)，占用8个字节扩展参数： dwCertificatePicDataLen、pCertificatePicData。
3. 接口：NET_DVR_SetDVRMessageCallBack_V31，新增报警类型： COMM_ISAPI_ALARM (证件抓拍比对事件，中端人证及访客V1.0新增)，对应结构：COMM_ISAPI_ALARM
4. 能力集(对应接口：NET_DVR_GetDeviceAbility)
门禁能力集XML描述(AcsAbility)，<Group>新增：groupNo (时间类型) ；<CaptureFace>新增：isSupportInfraredFacePic （红外人脸图片数据）。
5. 能力集(对应接口：NET_DVR_GetDeviceAbility)
设备软硬件能力XML描述(BasicCapability)，<NeedReboot>新增：FaceRecogizeModeChange （人脸抓拍模式切换是否需要重启） 。
V6.1.0.40
build20190822 		多功能采集仪V1.0
 1. 门禁主机总能力集功能(对应接口：NET_DVR_STDXMLConfig)：
GET /ISAPI/AccessControl/capabilities，扩展isSupportRFCardCfg、sSupportCaptureCardInfo、isSupportCaptureIDInfo、issupportcapturerule、issupportcapturepresetparam、isSupportOfflineCapture、issupportcardoperations节点。
2. 新增功能：获取算法版本NET_DVR_STDXMLConfig)，命令：GET /ISAPI/System/algorithmsVersion。
3. 新增接口：NET_DVR_STDXMLConfig，命令：
获取在线采集参数预置能力：GET /ISAPI/AccessControl/CapturePresetParam/capabilities?format=json；
获取在线采集参数预置：GET /ISAPI/AccessControl/CapturePresetParam?format=json；
设置在线采集参数预置：PUT /ISAPI/AccessControl/CapturePresetParam?format=json；
4. 新增接口：NET_DVR_STDXMLConfig，命令：
获取在线采集规则配置能力：GET /ISAPI/AccessControl/CaptureRule/capabilities?format=json；
获取在线采集规则配置：GET /ISAPI/AccessControl/CaptureRule?format=json；
设置在线采集规则配置：PUT /ISAPI/AccessControl/CaptureRule?format=json；
5. 新增接口：NET_DVR_STDXMLConfig，命令：
获取采集卡信息能力：GET /ISAPI/AccessControl/CaptureCardInfo/capabilities?format=json；
获取采集卡信息：GET /ISAPI/AccessControl/CaptureCardInfo?format=json；
6. 新增接口：NET_DVR_STDXMLConfig，命令：
获取采集身份证能力：GET /ISAPI/AccessControl/CaptureIDInfo/capabilities?format=json；
采集身份证：POST /ISAPI/AccessControl/CaptureIDInfo?format=json；
7. 新增接口查询离线采集数据集中数据：NET_DVR_StartRemoteConfig，命令：
NET_DVR_CAPTURE_DATA_SEARCH；NET_DVR_SendRemoteConfig、NET_DVR_StopRemoteConfig 。
8. 新增接口下载采集用户列表模板：NET_DVR_StartDownload，命令：
NET_SDK_DOWNLOAD_OFFLINE_CAPTURE_INFO_TEMPLATE；NET_DVR_GetDownloadState、NET_DVR_StopDownload 。
9. 新增接口离线采集用户列表上传：NET_DVR_UploadFile_V40，命令：
UPLOAD_OFFLINE_CAPTURE_INFO；NET_DVR_GetUploadState、NET_DVR_UploadClose 。
10. NET_DVR_CAPTURE_FACE_CFG(人脸信息采集结果)，占用58个字节扩展参数： NET_DVR_FACE_FEATURE、byFacePicQuality、byInfraredFacePicQuality。
11. 新增接口：NET_DVR_STDXMLConfig，命令：
获取用户列表上传失败的详细信息：GET /ISAPI/AccessControl/OfflineCapture/uploadFailedDetails?format=json；
12. 新增接口：NET_DVR_STDXMLConfig，命令：
删除指定采集数据：DELETE /ISAPI/AccessControl/OfflineCapture/DataCollections/<captureno>?format=json
删除全部采集数据：DELETE /ISAPI/AccessControl/OfflineCapture/DataCollections?format=json；
13. 新增接口：NET_DVR_STDXMLConfig，命令：
获取离线采集规则配置：GET /ISAPI/AccessControl/OfflineCapture/ruleInfo?format=json
配置离线采集规则配置：PUT /ISAPI/AccessControl/OfflineCapture/ruleInfo?format=json
14. 新增接口：NET_DVR_STDXMLConfig，命令：
离线采集进度查询:GET /ISAPI/AccessControl/OfflineCapture/progress?format=json
导出控制：PUT /ISAPI/AccessControl/OfflineCapture/dataOutput?format=json
获取导出进度：GET /ISAPI/AccessControl/OfflineCapture/dataOutput/progress?format=json
导出控制：PUT /ISAPI/AccessControl/OfflineCapture/dataOutput?format=json
获取导出进度：GET /ISAPI/AccessControl/OfflineCapture/dataOutput/progress?format=json
离线采集能力：GET /ISAPI/AccessControl/OfflineCapture/capabilities?format=json
15. 新增接口：NET_DVR_STDXMLConfig，命令：
获取射频卡识别启用能力:GET /ISAPI/AccessControl/Configuration/RFCardCfg/capabilities?format=json
获取射频卡识别启用：GET /ISAPI/AccessControl/Configuration/RFCardCfg?format=json
配置射频卡识别启用：PUT /ISAPI/AccessControl/Configuration/RFCardCfg?format=json
16. 新增接口：NET_DVR_STDXMLConfig，命令：
获取红外对射参数配置能力:GET /ISAPI/AccessControl/Configuration/IRCfg/capabilities?format=json
获取红外对射参数配置：GET /ISAPI/AccessControl/Configuration/IRCfg?format=json
配置红外对射参数配置：PUT /ISAPI/AccessControl/Configuration/IRCfg?format=json
17. NET_DVR_CAPTURE_FACE_CFG(人脸信息采集结果)，占用58个字节扩展参数： NET_DVR_FACE_FEATURE、byFacePicQuality、byInfraredFacePicQuality。
18. NET_DVR_GetLastError，扩展错误码：NET_ERR_CAPTURE_TIMEOUT（1927）、NET_ERR_LOW_SCORE（1928）、NET_ERR_OFFLINE_CAPTURING（1929） 。
19. NET_DVR_LOG_V50，MAJOR_EXCEPTION扩展：MINOR_AUXILIARY_BOARD_OFFLINE（0x43c）、MINOR_AUXILIARY_BOARD_RESUME（0x43d）、MINOR_IDCARD_SECURITY_MOUDLE_EXCEPTION（0x43e）、MINOR_IDCARD_SECURITY_MOUDLE_RESUME（0x43f） 、MINOR_FP_PERIPHERAL_EXCEPTION（0x440）、MINOR_FP_PERIPHERAL_RESUME（0x441）；MAJOR_OPERATION扩展：MINOR_OFFLINE_DATA_OUTPUT（0x423）、MINOR_CREATE_SSH_LINK（0x42d）、MINOR_CLOSE_SSH_LINK（0x42e）；MAJOR_INFORMATION扩展： MINOR_LIVE_DETECT_OPEN（0x400）、MINOR_LIVE_DETECT_CLOSE（0x401）、MINOR_CLEAR_DATA_COLLECTION（0x402）、MINOR_DELETE_DATA_COLLECTION（0x403）、MINOR_EXPORT_DATA_COLLECTION（0x404）、MINOR_CARD_LEN_CONFIG（0x405）、 MINOR_DATA_BASE_INIT_FAILED（0x406）、MINOR_DATA_BASE_PATCH_UPDATE（0x407）、MINOR_PSAM_CARD_INSERT（0x408）、MINOR_PSAM_CARD_REMOVE（0x409）、MINOR_HARD_FAULT_REBOOT（0x40a）、MINOR_PSAM_CARD_OCP（0x40b）、MINOR_STACK_OVERFLOW（0x40c） MINOR_PARM_CFG（0x40d）、MINOR_IMPORT_USER_LIST（0x422） 。
V6.1.0.40
build20190822 		3000N平台存储一体机V1.1
 1. 新增接口(对应接口：NET_DVR_FindDVRLog_V50和NET_DVR_FindNextLog_V50)：
配置类型：NET_SDK_LOCAL_CFG_PORT_MULTIPLEX。
2. NET_DVR_TIME_SEARCH_COND(数据时间搜索条件)新增中使用2个保留字节新增参数：cTimeDifferenceH(与UTC的时差（小时），-12 ... +14，+表示东区，byLocalOrUTC为1时有效)、cTimeDifferenceM(与UTC的时差（分钟），-30, 0, 30, 45，+表示东区，byLocalOrUTC为1时有效)。
3. NET_DVR_TIME_SEARCH(数据时间信息)新增中使用2个保留字节新增参数：cTimeDifferenceH(与UTC的时差（小时），-12 ... +14，+表示东区，byLocalOrUTC为1时有效)、cTimeDifferenceM(与UTC的时差（分钟），-30, 0, 30, 45，+表示东区，byLocalOrUTC为1时有效)。
4. NET_DVR_SMART_SEARCH_PARAM_V40(智能搜索参数)新增中使用5个保留字节新增参数：byISO8601、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM。
5. NET_DVR_SMART_SEARCH_RET(智能搜索结果)新增中使用5个保留字节新增参数：byISO8601、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM。
6. NET_DVR_MRD_SEARCH_PARAM(智能搜索参数)新增中使用1个保留字节新增参数：byLocalOrUTC。
7. NET_DVR_FIND_LABEL(录像标签查找)新增中使用5个保留字节新增参数：byISO8601、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM。
8. NET_DVR_FINDLABEL_DATA(标签信息)新增中使用3个保留字节新增参数：byISO8601、cTimeDifferenceH、cTimeDifferenceM。
9. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)新增中使用5个保留字节新增参数：byISO8601、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM。
10. NET_DVR_FIND_PICTURE_V50(图片查找结果信息)新增中使用3个保留字节新增参数：byISO8601、cTimeDifferenceH、cTimeDifferenceM。
11. NET_DVR_SMART_SEARCH_PIC_PARA(智能图片搜索条件)新增中使用5个保留字节新增参数：byISO8601、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM。
12. NET_DVR_SMART_SEARCH_PIC_RET(图片查找结果信息)新增中使用3个保留字节新增参数：byISO8601、cTimeDifferenceH、cTimeDifferenceM。
13. NET_DVR_UPLOAD_RECORD_INFO(录像上传信息)新增中使用5个保留字节新增参数：byISO8601、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM。
14. NET_DVR_FACE_DETECTION(人脸侦测报警)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
15. NET_VCA_FACESNAP_RESULT(人脸抓拍报警)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
16. NET_VCA_FACESNAP_MATCH_ALARM(人脸比对报警)新增中使用3个保留字节新增参数：cTimeDifferenceH、cTimeDifferenceM。
17. NET_ITS_PICTURE_INFO(人脸比对报警)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
18. NET_DVR_TIME_V30(人脸比对报警)新增中使用3个保留字节新增参数：byISO8601、cTimeDifferenceH、cTimeDifferenceM。
19. NET_VCA_RULE_ALARM(异常行为识别结果)新增中使用3个保留字节新增参数：dwRelativeTime、dwAbsTime、byRelativeTimeFlag。
20. NET_DVR_DEFOCUS_ALARM(虚焦侦测)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
21. NET_DVR_HEATMAP_RESULT(热度图)新增中使用5个保留字节新增参数：byTimeDiffFlag、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH cStopTimeDifferenceM。
22. NET_DVR_PDC_ALRAM_INFO(客流量)新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM、byTimeDifferenceFlag、cStartTimeDifferenceH、cStartTimeDifferenceM、cStopTimeDifferenceH、cStopTimeDifferenceM、 cStopTimeDifferenceM。
23. NET_DVR_SHIPSDETECTION_ALARM(船只检测报警)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
24. NET_DVR_FIREDETECTION_ALARM(火点检测)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
25. NET_DVR_ALRAM_FIXED_HEADER(报警信息固定部分)新增中使用3个保留字节新增参数：byTimeDiffFlag、cTimeDifferenceH、cTimeDifferenceM。
26. NET_DVR_STREAM_TIME_LOCK(按流ID对录像段加锁/解锁)新增中使用3个保留字节新增参数：byISO8601、cTimeDifferenceH、cTimeDifferenceM。
27. NET_DVR_LOCK_RETURN(录像段加锁/解锁结果/解锁)新增中使用3个保留字节新增参数：byISO8601、cTimeDifferenceH、cTimeDifferenceM。
28. 新增接口：NET_DVR_STDXMLConfig，命令：
获取完整的设备存储能力：GET /ISAPI/ContentMgmt/capabilities；
获取录像加解锁的能力：GET /ISAPI/ContentMgmt/record/control/locks/capabilities；
按时间加解锁录像：POST /ISAPI/ContentMgmt/record/control/locks/time；
录像查询：POST /ISAPI/ContentMgmt/record/control/locks/time；
获取USB抓包过滤配置能力：GET /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json；
获取USB抓包过滤配置：GET /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage?format=json；
设置USB抓包过滤配置：PUT /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage?format=json；
获取抓包文件：GET /ISAPI/ContentMgmt/Storage/capturePackageFile?format=json；
删除抓包文件：DELETE /ISAPI/ContentMgmt/Storage/capturePackageFile?format=json；
V6.1.3.5
build20190926 		5.5.24筒机类维护项目
 1. 接口：NET_DVR_STDXMLConfig，命令：
获取测温预置点关联信息配置能力集：GET /ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities；
在<thermometryscene><thermometryregionlist> <thermometryregion>中扩展<regionboundary> 规则区域边界节点。
2. 通道信息配置接口：NET_DVR_STDXMLConfig，新增命令：
获取单一通道视频图像能力集：GET /ISAPI/Image/channels/<ID>/capabilities；
亮度限制配置获取：GET /ISAPI/Image/channels/<ID>/irLight；
亮度限制配置设置：PUT /ISAPI/Image/channels/<ID>/irLight；
曝光模式配置获取：GET /ISAPI/Image/channels/<ID>/exposure；
曝光模式配置设置：PUT /ISAPI/Image/channels/<ID>/exposure；
3. 新增加错误码：NET_DVR_RULE_SHIELDMASK_CONFLICT_ERROR（规则区域与屏蔽区域冲突），对应接口：NET_DVR_GetLastError。
4. NET_DVR_REALTIME_THERMOMETRY_COND(实时温度检测条件参数结构体)中使用2个保留字节新增参数：wInterval(上传间隔)。
V6.1.0.2
build20190421 		V6.1.0 SDK基线版本
 1. 新增端口复用功能(对应接口：NET_DVR_GetSDKLocalCfg和NET_DVR_SetSDKLocalCfg)：
配置类型：NET_SDK_LOCAL_CFG_PORT_MULTIPLEX。
2. 新增证书参数配置功能(对应接口：NET_DVR_GetSDKLocalCfg和NET_DVR_SetSDKLocalCfg)：
配置类型：NET_SDK_LOCAL_CFG_CERTIFICATION。
3. 新增加错误码：183- NET_ERR_MAX_PORT_MULTIPLEX（已达到端口复用最大数目）、184- NET_ERR_CREATE_PORT_MULTIPLEX（创建端口复用失败），对应接口：NET_DVR_GetLastError。
4. NET_DVR_NETCFG_V50(网络配置结构体)中使用1个保留字节新增参数：byAlarmOverTLS(监听是否使用TLS链路)。
V6.0.2.40
build20190428 		5.5.18筒机类优化项目
DS-2TD+C6:C551217-2/V1、 DS-2TD1217-3/V1、DS-2TD1217-6/V1、DS-2TD2117-3/V1、DS-2TD2117-6/V1、 DS-2TD2617-3/V1、DS-2TD2617-6/V1、 DS-2TD2136-4/V1、DS-2TD2136-7/V1、DS-2TD2136-10/V1、DS-2TD2136-15/V1、DS-2TD2136-25/V1、DS-2TD2136-35/V1、 DS-2TD2166-7/V1、DS-2TD2166-15/V1、DS-2TD2166-25/V1、DS-2TD2166-35/V1、 DS-2TD2137-7/V1、DS-2TD2137-10/V1DS-2TD2137-15/V1、DS-2TD2137-25/V1、DS-2TD2137-35/V1、 DS-2TD2836-25、DS-2TD2836-50、DS-2TD2866-25、DS-2TD2866-50、 DS-2TD2836-25/V1、DS-2TD2836-50/V1、DS-2TD2866-25/V1、DS-2TD2866-50/V1 DS-2TD2615-7、DS-2TD2615-10、DS-2TD2636-10、DS-2TD2636-15、DS-2TD2636T-10、DS-2TD2636T-15、 DS-2TD2137-7/VP、DS-2TD2137-10/VP、DS-2TD2137-15/VP、DS-2TD2137-25/VP、DS-2TD2137-35/VP
DS-2TD2036、DS-2TD2036-15、DS-2TD2036-75、DS-2TD2036-100、DS-2TD2036-150、DS-2TD2036-100Z、DS-2TD2036-150Z、DS-2TD2036-190Z、 DS-2TD2066、DS-2TD2066-25、DS-2TD2066-75、DS-2TD2066-100、DS-2TD2066-150、DS-2TD2066-100Z、DS-2TD2066-150Z、DS-2TD2066-190Z 		1. 新增接口：NET_DVR_STDXMLConfig，命令：
获取编码能力集：GET /ISAPI/Streaming/channels/<ID>/capabilities；
单通道编码配置获取：GET /ISAPI/Streaming/channels/<ID>；
单通道编码配置设置：PUT /ISAPI/Streaming/channels/<ID>；
获取系统服务能力集能力集：GET /ISAPI/System/capabilities；
获取测温基本参数配置能力集：GET /ISAPI/Thermal/channels/<ID>/thermometry/basicParam/capabilities；
获取测温基本参数配置：GET /ISAPI/Thermal/channels/<ID>/thermometry/basicParam；
设置测温基本参数配置：PUT /ISAPI/Thermal/channels/<ID>/thermometry/basicParam；
获取测温预置点关联信息配置能力集：GET /ISAPI/Thermal/channels/<ID>/thermometry/<SID>/capabilities；
获取测温预置点关联信息配置：GET /ISAPI/Thermal/channels/<ID>/thermometry/<SID>；
设置测温预置点关联信息配置：PUT /ISAPI/Thermal/channels/<ID>/thermometry/<SID>；
配置文件安全导出：GET /ISAPI/System/configurationData；
配置文件安全导入：PUT /ISAPI/System/configurationData；
获取声音报警输出配置能力：GET /ISAPI/Event/triggers/notifications/AudioAlarm/capabilities?format=json；
获取声音报警输出配置：GET /ISAPI/Event/triggers/notifications/AudioAlarm?format=json；
设置声音报警输出配置：PUT /ISAPI/Event/triggers/notifications/AudioAlarm?format=json；
获取事件联动配置能力集：GET /ISAPI/Event/triggersCap；
获取专业智能异常行为识别事件联动方式配置：GET /ISAPI/Intelligent/channels/ID/behaviorRule/<SID>/notifications；
设置专业智能异常行为识别事件联动方式配置：PUT /ISAPI/Intelligent/channels/ID/behaviorRule/<SID>/notifications；
获取测温事件联动方式配置：GET /ISAPI/Event/triggers/thermometry-<channelID>/preset/<ID>；
设置测温事件联动方式配置：PUT /ISAPI/Event/triggers/thermometry-<channelID>/preset/<ID>；
获取烟火检测事件联动方式配置：GET /ISAPI/Event/triggers/fireDetection-<channelID>/notifications；
设置烟火检测事件联动方式配置：PUT /ISAPI/Event/triggers/fireDetection-<channelID>/notifications；
获取测温规则区域单个配置：GET /ISAPI/Thermal/channels/<ID>/thermometry/<SID>/regions/<ID>；
设置测温规则区域单个配置：PUT /ISAPI/Thermal/channels/<ID>/thermometry/<SID>/regions/<ID>；
获取单位统一配置能力集：GET /ISAPI/System/unitConfig/capabilities?format=json；
获取单位统一配置：GET /ISAPI/System/unitConfig?format=json；
设置单位统一配置：PUT /ISAPI/System/unitConfig?format=json；
获取专业智能行为检测能力集：GET /ISAPI/Intelligent/channels/<ID>/behaviorRule/<SID>/rule/capabilities；
获取热成像总能力集：GET /ISAPI/Thermal/capabilities；
获取事件通道级能力集：GET /ISAPI/Event/channels/<ID>/capabilities；
获取布防订阅能力集：GET /ISAPI/Event/notification/subscribeEventCap；
获取融合标定配置能力集：GET /ISAPI/Thermal/channels/<ID>/fusionCalibration/capabilities；
获取融合标定配置：GET /ISAPI/Thermal/channels/<ID>/fusionCalibration；
设置融合标定配置：PUT /ISAPI/Thermal/channels/<ID>/fusionCalibration；
2. NET_DVR_THERMOMETRY_BASICPARAM(测温基本参数配置参数)中使用2个保留字节新增参数：byemissivityMode(发射率配置类型)、bydisplayTemperatureInOpticalChannelEnabled(可见光显示温度信息使能)。
3. 新增加错误码：NET_ERR_UnitConfig_Failed（单位配置失败），对应接口：NET_DVR_GetLastError。
V6.0.2.30
build20190325 		用户信息传输设备
DS-N1103X等系列 		1. 新增接口：NET_DVR_STDXMLConfig，命令： 获取继电器参数配置能力：GET /ISAPI/SecurityCP/Configuration/outputs/capabilities?format=json；
获取继电器参数配置：GET /ISAPI/SecurityCP/Configuration/outputs?format=json；
设置继电器参数配置：PUT /ISAPI/SecurityCP/Configuration/outputs/<id>?format=json。
2. 新增接口：NET_DVR_STDXMLConfig，命令： 获取消防总能力：GET /ISAPI/FireControl/capabilities?format=json。
3. 新增接口：NET_DVR_STDXMLConfig，命令： 获取通信参数配置能力：GET /ISAPI/FireControl/Configuration/commCfg/capabilities?format=json；
获取通信参数配置：GET /ISAPI/FireControl/Configuration/commCfg?format=json；
设置通信参数配置：PUT /ISAPI/FireControl/Configuration/commCfg?format=json。
4. 扩展网络报警主机能力集(DEVICE_ABILITY_INFO，对应接口： NET_DVR_GetDeviceAbility ，能力集类型：AlarmHostAbility)：节点<ZoneConfig >(防区配置)新增取值：linkageAlarmType（关联报警类型）。
V6.0.2.30
build20190325 		组合式电器火灾探测器
NP_FDC240等系列 		1. 新增接口：NET_DVR_STDXMLConfig，命令： 主动上报报警心跳周期配置能力：GET /ISAPI/FireControl/Configuration/heartBeat/capabilities?format=json；
主动上报报警心跳周期获取：GET /ISAPI/FireControl/Configuration/heartBeat?format=json；
主动上报报警心跳周期设置: PUT /ISAPI/FireControl/Configuration/heartBeat?format=json。
2.新增接口：NET_DVR_STDXMLConfig，命令： 上报策略配置能力:GET /ISAPI/FireControl/Configuration/alarmStrategy/capabilities?format=json；
上报策略配置获取：GET /ISAPI/FireControl/Configuration/alarmStrategy?format=json；
上报策略配置设置：PUT /ISAPI/FireControl/Configuration/alarmStrategy?format=json。
3. 新增接口：NET_DVR_STDXMLConfig，命令： 消防工作状态获取能力：GET /ISAPI/FireControl/Status/workStatus/capabilities?format=json；
消防工作状态获取：GET /ISAPI/FireControl/Status/workStatus?format=json 。
4. 新增接口：NET_DVR_STDXMLConfig，命令： 获取CAN总线参数配置能力：GET /ISAPI/FireControl/Configuration/CANCfg/capabilities?format=json；
获取CAN总线参数配置：GET /ISAPI/FireControl/Configuration/CANCfg?format=json；
设置CAN总线参数配置：PUT /ISAPI/FireControl/Configuration/CANCfg?format=json。
5. 新增接口：NET_DVR_STDXMLConfig，命令： 远程控制探测器报警能力：GET /ISAPI/FireControl/Control/detectorAlarm/capabilities?format=json；
设置远程控制探测器报警：PUT /ISAPI/FireControl/Control/detectorAlarm/<id>?format=json。
6. 扩展网络报警主机能力集(DEVICE_ABILITY_INFO，对应接口： NET_DVR_GetDeviceAbility ，能力集类型：AlarmHostAbility)扩展：节点<sensorType>(支持的传感器类型)扩展取值：Arc（电弧传感器）。
V6.0.2.25
build20190311 		门禁基线V2.1&低端经销型指纹门禁机与考勤机项目
V2.1
DS-26等系列 		1. 新增接口：NET_DVR_STDXMLConfig，命令： 获取HTTP/RTSP使能配置：GET /ISAPI/Security/adminAccesses；
设置 HTTP/RTSP使能配置：PUT /ISAPI/Security/adminAccesses；
获取HTTP/RTSP单个使能配置: GET /ISAPI/Security/adminAccesses/<id>；
设置HTTP/RTSP单个使能配置: PUT /ISAPI/Security/adminAccesses/<id>。
2.新增接口：NET_DVR_STDXMLConfig，命令： 获取指纹参数配置能力:GET /ISAPI/AccessControl/FingerPrintCfg/capabilities?format=json；
指纹参数下发：POST /ISAPI/AccessControl/FingerPrintDownload?format=json；
获取指纹参数下发进度：GET /ISAPI/AccessControl/FingerPrintProgress?format=json；
指纹参数修改: POST /ISAPI/AccessControl/FingerPrintModify?format=json；
获取指纹参数: POST /ISAPI/AccessControl/FingerPrintUpload?format=json；
设置指纹参数: POST /ISAPI/AccessControl/FingerPrint/SetUp?format=json。
3. 新增接口：NET_DVR_STDXMLConfig，命令： 获取远程控制读卡器蜂鸣器能力集：GET /ISAPI/AccessControl/RemoteControl/buzzer/capabilities?format=json；
配置远程控制读卡器蜂鸣器:PUT /ISAPI/AccessControl/RemoteControl/buzzer/<id>?format=json。
4. 新增接口：NET_DVR_STDXMLConfig，命令： 门禁设备事件总条数获取能力：GET /ISAPI/AccessControl/AcsEventTotalNum/capabilities?format=json；
门禁设备事件总条数获取：POST /ISAPI/AccessControl/AcsEventTotalNum?format=json；
获取布防信息能力集: GET /ISAPI/AccessControl/DeployInfo/capabilities；
获取布防信息: GET /ISAPI/AccessControl/DeployInfo；
获取事件优化配置能力集: GET /ISAPI/AccessControl/EventOptimizationCfg/capabilities?format=json；
获取事件优化配置: GET /ISAPI/AccessControl/EventOptimizationCfg?format=json；
设置事件优化配置: PUT /ISAPI/AccessControl/EventOptimizationCfg?format=json；
获取日志模式配置能力集: GET /ISAPI/AccessControl/LogModeCfg/capabilities?format=json；
获取日志模式配置: GET /ISAPI/AccessControl/LogModeCfg?format=json；
设置日志模式配置:PUT /ISAPI/AccessControl/LogModeCfg?format=json。
5. 新增接口：NET_DVR_STDXMLConfig，命令： 获取设备内反潜回记录清除能力：GET /ISAPI/AccessControl/ClearAntiSneak/capabilities?format=json；
设备内反潜回记录清除：PUT /ISAPI/AccessControl/ClearAntiSneak?format=json。
6. 新增接口：NET_DVR_STDXMLConfig，命令： 获取OSDP读卡器状态查询能力集：GET /ISAPI/AccessControl/OSDPStatus/capabilities?format=json；
OSDP读卡器状态查询：GET /ISAPI/AccessControl/OSDPStatus/<id>?format=json；
OSDP读卡器ID修改能力：GET /ISAPI/AccessControl/OSDPModify/capabilities?format=json；
OSDP读卡器ID修改：PUT /ISAPI/AccessControl/OSDPModify/<id>?format=json。
7. NET_DVR_FINGER_PRINT_STATUS_V50(指纹状态参数结构体V50)中参数：byCardReaderRecvStatus 扩展取值：10-指纹读卡器版本过低（无法支持工号）；byFingerType扩展取值：2-巡更指纹，3-超级指纹，4-解除指纹；byRecvStatus扩展取值：6-指纹数据长度为0，7-读卡器编号错误，8-工号错误，9-首次认证值非法，10-其他参数错误。
8. 能力集(对应接口：NET_DVR_GetDeviceAbility)
设备软硬件能力XML描述(BasicCapability)，<SoftwareCapability>（软件能力集合）新增：WEBLocation （WEB页面放置位置）和deviceId（设备唯一的设备ID） 。
9. 能力集(对应接口：NET_DVR_GetDeviceAbility)
门禁能力集XML描述(AcsAbility)，<ValidCfg>新增：timeType(时间类型) ；<EventLinkage>新增：isNotSupportOpenDoor（是否不支持联动开门）、 isNotSupportCloseDoor（是否不支持联动关门） 、isnotsupportnormalopen（是否不支持联动常开）、isnotsupportnormalclose（是否不支持联动常开）、isnotsupportalarmout（是否不支持联动报警输出）、isnotsupportcapturepic（是否不支持联动抓图）； recvStatus 扩展取值：6-指纹数据长度为0，7-读卡器编号错误，8-工号错误，9-首次认证值非法，10-其他参数错误；<FingerPrint>新增isSupportFingerCover。
V6.0.2.15
build20190129 		扫码显示一体机
DS-TMS100-S、
DS-TMS100-SG、
DS-TMS100-DG
V4.3.0 		1. 新增导入语音文件功能(对应接口:NET_DVR_STDXMLConfig):
PUT /ISAPI/Parking/channels/<ID>/VoiceFileUpload/<NAME>。
2. 新增获取语音列表功能(对应接口:NET_DVR_STDXMLConfig):
GET /ISAPI/Parking/channels/<ID>/VoiceFileList。
3. 新增删除语音文件功能(对应接口:NET_DVR_STDXMLConfig):
DELETE /ISAPI/Parking/channels/<ID>/VoiceFileList。
4. 新增语音播报配置功能(对应接口:NET_DVR_STDXMLConfig):
GET /ISAPI/Traffic/channels/<ID>/voiceCfg?format=json；
PUT /ISAPI/Traffic/channels/<ID>/voiceCfg?format=json。
5. 语音播报控制(<voicebroadcastinfo>，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<voiceFileName>(语音文件名)。
6. LED显示配置能力集({LEDCfg})和LED显示配置({LEDCfg})，对应接口：NET_DVR_STDXMLConfig)，分别扩展新增节点："TriggerDisplay"(扫码触发显示)，其中"FailedDisplay"(支付失败显示)中新增子节点："faultToleranceTimes"(容错次数)。
7. 支付结果推送能力集({PaymentInfo})和支付结果推送({PaymentInfo})，对应接口：NET_DVR_STDXMLConfig)，分别扩展，"paymentState"(支付结果)新增取值：defalut-终止支付。
V6.0.2.15
build20190129 		交通二维码扫描器
V4.3.0
iDS-TCO100-S等 		1. 新增LED显示配置功能(对应接口:NET_DVR_STDXMLConfig):
能力集: GET /ISAPI/Traffic/LEDCfg/capabilities?format=json；
获取：GET /ISAPI/Traffic/LEDCfg?format=json；
设置：PUT /ISAPI/Traffic/LEDCfg?format=json。
2. 新增扫码头测试功能(对应接口:NET_DVR_STDXMLConfig):
能力集: GET /ISAPI/Traffic/scannerTest/capabilities?format=json；
测试：PUT /ISAPI/Traffic/scannerTest?format=json。
3. 新增支付结果推送功能(对应接口:NET_DVR_STDXMLConfig):
能力集: GET /ISAPI/Traffic/paymentInfo/capabilities?format=json；
推送：PUT /ISAPI/Traffic/paymentInfo?format=json。
4. 声音参数配置扩展，<SoundCfg>中新增节点<audition>(调节音量时是否开启试听)。
5. 新增二维码信息上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31，报警信息类型：COMM_VCA_ALARM)：
二维码信息JSON数据。
V6.0.2.15
build20190129 		交通球机枪球维护项目
V5.5.16
iDS-2VT221A、iDS-2VT221P、 iDS-2VS435、iDS-2VC435、 iDS-2VT441A、iDS-2VT441P、 iDS-2VS235、iDS-2VY235、 iDS-2VC235等系列 		1. 新增HTTP/RTSP 全部使能JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展：
1) <supportFileType>(支持图片类型)新增取值：illegalParking-违停, wrongdirection-逆行, crosslane-压线, vehicleexist-机占非, lanechange-变道, turnround-掉头, pedestrian-行人检测, roadblock-路障, abandonedObject-抛洒物, fogDetection-浓雾检测, construction-施工, congestion-拥堵, trafficAccident-交通事故检测, parallelParking-侧方停车,evidence-手动触发报警。
2) <FindPicInfo>里面新增子节点：<supportAIDTFSType>(AID和TFS事件类型同时支持的事件图片查找类型)。
2. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V50(图片查找结果)中byFileType(图片类型)分别新增取值：0x3a-违停、0x3b-逆行、0x3c-压线、0x3d-机占非、0x3e-变道、0x3f-掉头、0x40-行人检测、0x41-路障、0x42-抛洒物、0x43-浓雾检测、0x44-施工、0x45-拥堵、0x46-交通事故检测、0x47-侧方停车、0x48-手动触发报警。NET_DVR_FIND_PICTURE_PARAM(图片查找条件)中使用1个保留字节新增参数：byEventType(事件类型)。
3. NET_DVR_AID_ALARM_V41(交通事件报警信息)中使用1个保留字节新增参数：byTargetType(检测的目标类型)。
4. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<AIDEventSupport>(支持的AID事件类型)、<TFSEventSupport>(支持的TFS违章取证事件类型)、<isVehicleStatisticsSupport>(是否支持交通数据采集配置)。
V6.0.2.10
build20190117 		安防雷达维护项目 1. 新增接口：NET_DVR_STDXMLConfig，命令： 获取雷达轨迹简略信息查询能力：GET /ISAPI/Radar/TrailInfo/SearchBrief/capabilities?format=json；
雷达轨迹简略信息查询：PUT /ISAPI/Radar/TrailInfo/SearchBrief?format=json。
2. 新增接口：NET_DVR_STDXMLConfig，命令： 按条件获取轨迹详细信息能力：GET /ISAPI/Radar/TrailDetailInfo/capabilities?format=json；
按条件获取轨迹详细信息：GET /ISAPI/Radar/TrailDetailInfo/<ID>?format=json。
3. 新增接口：NET_DVR_STDXMLConfig，命令： 获取报警雷达能力集：GET /ISAPI/Radar/capabilities?format=json。
4. 新增接口：NET_DVR_STDXMLConfig，命令： 获取SSH配置参数：GET /ISAPI/System/Network/ssh；
配置SSH配置参数：PUT /ISAPI/System/Network/ssh。
5. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SYSTEM_CAPABILITIES)扩展，新增节点：<isSupportClientProxyWEB>(是否支持web代理客户端)。
V6.0.2.10
build20190117 		网络球机 V5.6.0_H3 1. 新增接口：NET_DVR_STDXMLConfig，命令： 获取PTZ控制通道能力集：GET /ISAPI/PTZCtrl/channels/<ID>/capabilities；
获取zoom/focus索尼坐标配置：GET /ISAPI/PTZCtrl/channels/<ID>/zoomFocus；
设置zoom/focus索尼坐标配置：PUT /ISAPI/PTZCtrl/channels/<ID>/zoomFocus。
2. 新增接口：NET_DVR_STDXMLConfig，命令： 获取OSD叠加能力：GET /ISAPI/System/Video/capabilities；
获取OSD语言配置：GET /ISAPI/System/Video/inputs/OSDLanguage；
设置OSD语言配置：PUT /ISAPI/System/Video/inputs/OSDLanguage。
3. 新增接口：NET_DVR_STDXMLConfig，命令： 获取安全配置能力集：GET /ISAPI/Security/adminAccesses/capabilities ;
获取安全配置(http配置中新增TLS版本使能)：GET /ISAPI/Security/adminAccesses；
设置安全配置(http配置中新增TLS版本使能)：PUT /ISAPI/Security/adminAccesses；
获取协议ID获取安全配置参数：GET /ISAPI/Security/adminAccesses/<ID>；
设置协议ID获取安全配置参数：PUT /ISAPI/Security/adminAccesses/<ID>
4. NET_DVR_CERT_PARAM(证书参数结构体)：wCertFunc扩展取值：3-ieee802.1x(应用于有线LAN接入认证)，4-ssh；wCertType扩展取值：2-私钥文件。
5. NET_DVR_IPDEVINFO_V31(IP设备信息结构体)：占用一个字节的保留字节扩展参数：byCertificateValidation(是否启用证书)。
6. NET_DVR_NAT_CFG(UPNP配置结构体)：占用一个字节的保留字节扩展参数：struSDKOverTLSPort(SDKOverTLS端口映射配置)。
7. NET_DVR_UPNP_NAT_STATE(Upnp端口映射状态结构体)：strUpnpPort扩展取值：数组4 SDK over TLS 端口。
8. 设备网络应用参数能力集(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展：
<SDKOverTLSPort>(SDKOverTLSPort端口节点)中。
9. 新增接口：NET_DVR_STDXMLConfig，命令： 获取时间能力集：GET /ISAPI/System/time/capabilities。
10. 新增接口：NET_DVR_STDXMLConfig，命令： 获取系统能力集：GET /ISAPI/System/capabilities。
11. 新增接口：NET_DVR_STDXMLConfig，命令： 获取声音报警输出配置能力：GET /ISAPI/Event/triggers/notifications/AudioAlarm/capabilities?format=json；
获取声音报警输出配置：GET /ISAPI/Event/triggers/notifications/AudioAlarm?format=json；
设置声音报警输出配置：PUT /ISAPI/Event/triggers/notifications/AudioAlarm?format=json 。
12. 新增接口：NET_DVR_STDXMLConfig，命令： 获取白光灯报警输出配置能力：GET //ISAPI/Event/triggers/notifications/whiteLightAlarm/capabilities?format=json；
获取白光灯报警输出配置：GET /ISAPI/Event/triggers/notifications/whiteLightAlarm?format=json；
设置白光灯报警输出配置：PUT /ISAPI/Event/triggers/notifications/whiteLightAlarm?format=json。
V6.0.2.5
build20190105 		消防智能分析仪V1.0
NP-FA108、NP-FA116等系列
1. 新增接口：NET_DVR_STDXMLConfig，命令： 获取智能识别参数配置能力：GET /ISAPI/FireControl/Configuration/recognizeCfg/capabilities?format=json；
获取智能识别参数获取：GET /ISAPI/FireControl/Configuration/recognizeCfg/channels/<ID>?format=json (URL中的<ID>代表通道号)；
设置智能识别参数设置：PUT /ISAPI/FireControl/Configuration/recognizeCfg/channels/<ID>?format=json (URL中的<ID>代表通道号)。
2. 新增接口：NET_DVR_STDXMLConfig，命令： 获取智能识别事件查询能力：GET /ISAPI/FireControl/RecognizeResult/search/capabilities?format=json；
智能识别事件查询：POST /ISAPI/FireControl/RecognizeResult/search?format=json。
V6.0.2.5
build20190105 		消防网关V1.0开发
NP-FTG100
NP-FTG100-G
 1. 用户信息结构体NET_DVR_USER_INFO_V51扩展两个字段：byKeypadPassword-键盘密码， byUserOperateType-用户操作类型。
2. 设备参数结构体NET_DVR_DEVICECFG_V40，byStorageMode存储模式新增取值：3-自动。
3. 防区参数结构体NET_DVR_ALARMIN_PARAM_V50
扩展字段：byName-防区名称（探测器安装位置），wDetectorType-探测器类型， byDetectorSignalIntensity-探测器信号强度（0~100），byDetectorVersion-探测器版本（只读）， byDetectorMAC-探测器MAC地址（只读）。
4. 报警主机其他状态结构体NET_DVR_ALARMHOST_OTHER_STATUS_V50
扩展字段：byDetetorPower-探测器电量状态，0xff-无效，电量值为0-100，默认电量小于20为欠压状态， byDetetorConnection-探测器连接状态，0xff-无效，0-表示未注册，1-表示不在线， 2-表示在线。
5. 日志查询接口NET_DVR_FindNextLog_V30
1）日志主类型dwMajorType为报警类型MAJOR_ALARM时，次类型dwMinorType增加取值：MINOR_MANUAL_ALARM-手动报警， MINOR_DETECTOR_ALARM-探测器报警，MINOR_LINKAGE_ALARM-联动报警；
2）日志主类型dwMajorType为异常类型MAJOR_EXCEPTION时，次类型dwMinorType增加取值：MINOR_MAIN_POWER_FAULT-主电故障， MINOR_BACK_UP_POWER_FAULT-备电故障，MINOR_TAMPER_FAULT-防拆故障，
MINOR_RS232_FAULT-232总线故障， MINOR_RS485_FAULT-485总线故障，MINOR_LAN_STATUS_FAULT-LAN网线接入状态故障，MINOR_LAN_LINK1_FAULT-LAN链路1故障，MINOR_LAN_LINK2_FAULT-LAN链路2故障，
MINOR_SIM_CARD_STATUS_FAULT-4G-SIM卡状态故障，MINOR_4G_LINK1_FAULT-4G链路1故障，MINOR_4G_LINK2_FAULT-4G链路2故障，MINOR_OTHER_FAULT-其他故障；
3）日志主类型dwMajorType为操作类型MAJOR_OPERATION时，次类型dwMinorType增加取值：MINOR_LOCAL_CFG_PARM-本地配置参数， MINOR_REMOTE_GET_PARM-远程获取参数， MINOR_REMOTE_CFG_PARM-远程配置参数。
V6.0.2.5
build20190105_win32 		中端人脸门禁(V1.0)项目
DS_K1T607XXXX(中端人脸门禁一体机)
DS_K1T607（M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW）
DS_K1T610XXXX(中端人脸门禁一体机)
DS_K1T610（M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW）
 1. 新增智能身份识别终端参数配置接口(对应接口：NET_DVR_STDXMLConfig)：
1) 获取智能身份识别终端参数能力集: GET /ISAPI/AccessControl/IdentityTerminal/capabilities
2) 获取智能身份识别终端参数: GET /ISAPI/AccessControl/IdentityTerminal
3) 设置智能身份识别终端参数: PUT /ISAPI/AccessControl/IdentityTerminal
2. 新增按条件恢复默认参数接口(对应接口：NET_DVR_STDXMLConfig)：
按条件恢复默认参数: PUT /ISAPI/System/factoryReset?mode=<>
3. NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG(可视对讲设备编号配置结构体)参数byUnitType 扩展取值：7-门禁智能设备
4. NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION(可视对讲关联网络设备配置联合体)扩展：NET_DVR_INDOOR_UNIT_RELATEDEV（室内机）
5. NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG(可视对讲关联网络设备配置结构体)参数byUnitType 扩展取值：7-门禁智能设备
6. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数结构体)参数byResolution 扩展取值：167-720*1280(占位，未测试),172-1080*1920,215-1080*720(占位，未测试), 216-360x640(占位，未测试)
7. NET_DVR_SINGLE_PLAN_SEGMENT(计划参数结构体)参数byVerifyMode 扩展取值：25-刷卡或人脸,26-刷卡或人脸或指纹>
8. 门禁主机总能力集功能(对应接口：NET_DVR_STDXMLConfig)：
GET /ISAPI/AccessControl/capabilities，扩展FactoryReset节点。
9. 能力集(对应接口：NET_DVR_GetDeviceAbility)
IP可视对讲主机能力XML描述，扩展InDoorDevice节点。
10. 能力集(对应接口：NET_DVR_GetDeviceAbility)
门禁能力集XML描述(AcsAbility)，verifyType 扩展取值：cardOrFace,cardOrFaceOrFp（25-刷卡或人脸,26-刷卡或人脸或指纹），modifyParamType 扩展取值：roomNo,simNo,floorNo，扩展节点nightFaceMatchThresholdN（夜晚人脸1:N匹配阀值） 和faceRecogizeEnable（人脸抓拍使能）、PeopleAndIdCardComparePass（人证比对通过）、PeopleAndIdCardCompareFail（人证比对失败）。
11. 能力集(对应接口：NET_DVR_GetDeviceAbility)
设备软硬件能力XML描述(BasicCapability)，扩展WorkModeReboot（智能身份识别设备切换工作模式是否需要重启），MultiFaceRecogizeChange （多人脸抓拍切换是否需要重启）。
V6.0.0.11
build20181126_win32 		通用物联网关V1.0.0
DS-3LGC0
DS-3LGC4
 1. 新增4G模块配置功能接口(对应接口：NET_DVR_STDXMLConfig)：
1) 获取4G配置能力集: GET /ISAPI/System/Network/4G/capabilities?format=json
2) 获取4G网络状态: GET /ISAPI/System/Network/4G/capabilities?format=json
3) 获取4G模块配置参数能力: GET /ISAPI/System/Network/4G/mode/capabilities?format=json
4) 获取4G模块配置参数:GET /ISAPI/System/Network/4G/mode?format=json
5) 设置4G模块配置参数: PUT /ISAPI/System/Network/4G/mode?format=json
6) 4G模块重启: PUT /ISAPI/System/Network/4G/<ID>/reboot?format=json
2. 新增国网B服务器配置功能接口(对应接口：NET_DVR_STDXMLConfig)：
1) 获取国网B服务器配置参数能力: GET /ISAPI/System/Network/GRID/capabilities
2) 获取国网B服务器配置参数: GET /ISAPI/System/Network/GRID
3) 批量设置国网B服务器配置参数: PUT /ISAPI/System/Network/GRID
4) 获取单个国网B服务器配置参数:GET /ISAPI/System/Network/GRID/<ID>
5) 设置单个国网B服务器配置参数: PUT /ISAPI/System/Network/GRID/<ID>
3. 国网B通道配置参数(对应接口：NET_DVR_STDXMLConfig)：
1) 获取国网B通道配置参数能力: GET /ISAPI/System/Network/GRID/ /GRIDInfo/capabilities
2) 获取国网B通道配置参数: GET /ISAPI/System/Network/GRID/<ID>/GRIDInfo
3) 设置国网B通道配置参数: PUT /ISAPI/System/Network/GRID/<ID>/GRIDInfo
4. EHome平台配置参数(对应接口：NET_DVR_STDXMLConfig)：
1) 获取EHome平台配置参数能力: GET /ISAPI/System/Network/Ehome/capabilities
2) 获取EHome平台配置参数: GET /ISAPI/System/Network/Ehome
3) 设置EHome平台配置参数: PUT /ISAPI/System/Network/Ehome
5. RS485参数配置(对应接口：NET_DVR_STDXMLConfig)：
1) 获取485参数配置能力: GET /ISAPI/System/Network/Ehome/capabilities
2) 获取485参数: GET /ISAPI/System/Network/Ehome
3) 设置485参数: PUT /ISAPI/System/Network/Ehome
6. 外接设备状态信息(对应接口：NET_DVR_STDXMLConfig)：
1) 获取外接设备状态查询参数能力: GET /ISAPI/IoTGateway/ExternalStatus/search/capabilities?format=json
2) 获取外接设备状态参数: GET /ISAPI/IoTGateway/ExternalStatus/search?format=json
7. 外继电器、摄像机等通道的关联信息(对应接口：NET_DVR_STDXMLConfig)：
1) 获取查询参数能力: GET /ISAPI/IoTGateway/channelsRelatedInfo/search/capabilities?format=json
2) 获取查询参数: POST /ISAPI/IoTGateway/channelsRelatedInfo//search?format=json
V6.0.2.5
build20190105 		工业测温小型化软件2.0版本
DS-2TA03-4AUM、DS-2TA03-7AUF
DS-2TA03-7HUF、DS-2TA03-10AUF
DS-2TA03-15AUF、DS-2TA03-15HUF
DS-2TA06-7AXF、DS-2TA06-15AXF
 1. 测温配置能力集(ThermometryBasicParam，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES)扩展：
节点<emissivity>(发射率)的 default(默认值)变为 0.96。
2. NET_DVR_THERMOMETRY_UPLOAD(实时温度信息结构体)使用1个保留字节新增参数：byIsFreezedata(是否数据冻结)。
3. NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO(测温规则温度信息结构体)使用1个保留字节新增参数：byIsFreezedata(是否数据冻结)。
V6.0.2.5
build20190105_win32 		运动类版本5.5.12维护版本 1. 测温报警方式配置结构体(NET_DVR_THERMOMETRY_ALARMRULE_PARAM，
新增节点dwAlertFilteringTime-温度预警等待时间,单位秒；dwAlarmFilteringTime-温度报警等待时间,单位秒。
V6.0.2.2
build20181116
Linux32&Linux64 		Linux版本基线项目 1. 新增Linux版本G711音频编解码接口(接口和参数与Windows版本不一样)：
NET_DVR_InitG711Encoder、
NET_DVR_EncodeG711Frame、
NET_DVR_ReleaseG711Encoder、
NET_DVR_InitG711Decoder、
NET_DVR_DecodeG711Frame、
NET_DVR_ReleaseG711Decoder。
2. 新增Linux版本G722音频编解码接口(接口和参数与Windows版本不一样)：
NET_DVR_InitG722Encoder、
NET_DVR_EncodeG722Frame、
NET_DVR_InitG722Decoder、
NET_DVR_DecodeG722Frame。
NET_DVR_ReleaseG722Encoder和NET_DVR_ReleaseG722Decoder复用Windows版本原接口。
3. 新增支持G726音频编解码接口(接口和参数与Windows版本完全一样)：
NET_DVR_InitG726Encoder、
NET_DVR_EncodeG726Frame、
NET_DVR_ReleaseG726Encoder、
NET_DVR_InitG726Decoder、
NET_DVR_DecodeG726Frame、
NET_DVR_ReleaseG726Decoder。
V6.0.2.5
build20190105 		安监一体机 1. 人员密度报警Json数据(人员密度报警Json数据)，对应报警类型(COMM_VCA_ALARM)扩展：
新增节点<densityLevelChangeType>(人员密度等级变化类型)、<regionName>(人员密度检测区域名称)、<regionID>(人员密度检测区域ID)。
2. NET_VCA_LEAVE_POSITION(离岗事件参数结构体)使用2个保留字节新增参数：byOnPosition(在岗人数)、bySensitivity(灵敏度参数)。
3. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)新增， 节点<wirelessZoneNo>(无线防区序号)、<ThirdHostDeviceChange>(切换第三方主机主机是否需要重启)、<DNSIndex>(DNS索引)、<isSupportRemoveEmailOptions>（是否支持邮件附件功能去除）、<isSupportLocalCasecadeCfg>(是否支持本地级联配置)、<isSupportfibreCascadeCfg>(是否支持光纤级联配置)、<isSupportMainCtrlSubBoard>(是否支持主控控制子系统信息)、<isSupportAnalogSwitchMode>(是否支持模拟切换模式配置)。
4. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility)扩展，<LeavePosition>(离岗检测能力集)中新增子节点：<onPosition>(在岗人数参数能力)、<sensitivity>(灵敏度参数能力)。
5. 新增策略路由配置参数接口：NET_DVR_STDXMLConfig：
获取策略路由配置参数能力：GET /ISAPI/System/Network/routingPolicy/capabilities?format=json；
获取所有策略路由配置参数：GET /ISAPI/System/Network/routingPolicy?format=json；
批量设置策略路由配置参数：PUT /ISAPI/System/Network/routingPolicy?format=json；
删除所有策略路由配置参数：DELETE /ISAPI/System/Network/routingPolicy?format=json；
添加策略路由配置参数：POST /ISAPI/System/Network/routingPolicy?format=json；
获取单个策略路由配置参数：GET /ISAPI/System/Network/routingPolicy/<ID>format=json；
修改单个策略路由配置参数：PUT /ISAPI/System/Network/routingPolicy/<ID>format=json；
删除单个策略路由配置参数: DELETE /ISAPI/System/Network/routingPolicy/<ID>format=json。
6. 新增轮巡相关接口：NET_DVR_STDXMLConfig：
获取设备所有轮巡分析任务组：GET /ISAPI/Intelligent/structureAnalysis/loop/group；
新增设备所有轮巡分析任务组：POST /ISAPI/Intelligent/structureAnalysis/loop/group；
获取设备单个轮巡分析任务组：GET /ISAPI/Intelligent/structureAnalysis/loop/group/<ID>；
设置设备单个轮巡分析任务组：PUT /ISAPI/Intelligent/structureAnalysis/loop/group/<ID>；
删除设备单个轮巡分析任务组：DELETE /ISAPI/Intelligent/structureAnalysis/loop/group/<ID>；
获取设备所有轮巡组任务：GET /ISAPI/Intelligent/structureAnalysis/loop/group/tasks；
设置设备所有轮巡组任务：PUT /ISAPI/Intelligent/structureAnalysis/loop/group/tasks；
获取设备单个轮巡组任务：GET /ISAPI/Intelligent/structureAnalysis/loop/group/<ID>/tasks；
设置设备单个轮巡组任务：PUT /ISAPI/Intelligent/structureAnalysis/loop/group/<ID>/tasks。
V6.0.0.10
build20181031 		工业测温软件2.0版本 1. 测温配置能力集(ThermometryBasicParam，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES)扩展：
新增节点<displayMaxTemperatureEnabled>(显示最高温)、<displayMinTemperatureEnabled>(显示最低温)、<displayAverageTemperatureEnabled>(显示平均温)、<thermometryInfoDisplayposition>(测温信息显示位置)。
2. NET_DVR_THERMOMETRY_BASICPARAM(测温基本参数配置结构体)使用4个保留字节新增参数：byDisplayMaxTemperatureEnabled(显示最高温)、byDisplayMinTemperatureEnabled(显示最低温)、byDisplayAverageTemperatureEnabled(显示平均温)、byThermometryInfoDisplayposition(测温信息显示位置)。
3. 设备测温预置点关联配置能力集(ThermometryScene，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES)扩展：
新增子节点：<distanceUnit>(距离单位)。
4. NET_DVR_THERMOMETRY_PRESETINFO_PARAM(预置点关联测温信息结构体)使用1个保留字节新增参数：byDistanceUnit(距离单位)。
5. [本项目不支持]手动测温基本参数配置能力集(ManualThermBasic，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MANUALTHERM_BASIC_CAPABILITIES)扩展：
新增子节点：<distanceUnit>(距离单位)。
6. [本项目不支持]NET_SDK_MANUALTHERM_ BASICPARAM(手动测温基本参数配置结构体)使用1个保留字节新增参数：byDistanceUnit(距离单位)。
V6.0.0.5
build20181016 		小型化工业测温软件1.0 1. 新增手动获取测温规则温度信息(对应接口：NET_DVR_GetDVRConfig)： 命令：NET_DVR_GET_THERMOMETRYRULE_TEMPERATURE_INFO，对应结构体NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO(测温规则温度信息)。
2. 设备测温预置点关联配置能力集(ThermometryScene，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES)扩展：
新增子节点：<maxPointNum>(设备支持的点规则配置最大值)、<maxLineNum>(设备支持的线规则配置最大值)、<maxRegionNum>(设备支持的框规则配置最大值)。
3. 设备测温模式能力集(ThermometryMode，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES)扩展：
新增子节点：<thermometryROIEnabled>(测温ROI使能)。
4. NET_DVR_THERMOMETRY_MODE(测温模式参数配置结构体)使用1个保留字节新增参数：byThermometryROIEnabled(测温ROI使能)。
V6.0.0.5
build20181016 		人体测温V1.1项目 1. 新增人体测温功能接口：NET_DVR_STDXMLConfig：
获取人脸测温相关能力集：GET /ISAPI/Thermal/channels/<ID>/faceThermometry/capabilities；
获取人脸测温配置：GET /ISAPI/Thermal/channels/<ID>/faceThermometry；
设置人脸测温配置：PUT /ISAPI/Thermal/channels/<ID>/faceThermometry；
获取人脸测温所有规则信息：GET /ISAPI/Thermal/channels/<ID>/faceThermometry/regions；
设置人脸测温所有规则信息：PUT /ISAPI/Thermal/channels/<ID>/faceThermometry/regions；
获取人脸测温规则信息：GET /ISAPI/Thermal/channels/<ID>/faceThermometry/regions/<ID>；
设置人脸测温规则信息：PUT /ISAPI/Thermal/channels/<ID>/faceThermometry/regions/<ID>；
获取人脸测温检测结果：GET /ISAPI/Thermal/channels/<ID>/faceThermometry/regions/<ID>/detectionInfo；
获取测温屏蔽区域相关能力集：GET /ISAPI/Thermal/channels/<ID>/thermometryShieldMask/capabilities；
获取测温屏蔽区域配置：GET /ISAPI/Thermal/channels/<ID>/thermometryShieldMask；
设置测温屏蔽区域配置：PUT /ISAPI/Thermal/channels/<ID>/thermometryShieldMask；
获取测温屏蔽区域所有规则信息：GET /ISAPI/Thermal/channels/<ID>/thermometryShieldMask/regions；
设置测温屏蔽区域所有规则信息：PUT /ISAPI/Thermal/channels/<ID>/thermometryShieldMask/regions；
获取测温屏蔽区域规则信息：GET /ISAPI/Thermal/channels/<ID>/thermometryShieldMask/regions/<ID>；
设置测温屏蔽区域规则信息：PUT /ISAPI/Thermal/channels/<ID>/thermometryShieldMask/regions/<ID>；
获取热成像能力集：GET /ISAPI/Thermal/capabilities；
获取测温基本参数配置能力集：GET /ISAPI/Thermal/channels/<ID>/thermometry/basicParam/capabilities；
获取测温基本参数配置：GET /ISAPI/Thermal/channels/<ID>/thermometry/basicParam；
设置测温基本参数配置：PUT /ISAPI/Thermal/channels/<ID>/thermometry/basicParam；
获取体温温度补偿相关能力集：GET /ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation/capabilities；
获取体温温度补偿配置：GET /ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation；
设置体温温度补偿配置：PUT /ISAPI/Thermal/channels/<ID>/bodyTemperatureCompensation；
热成像快门置位：PUT /ISAPI/Thermal /channels/<ID>/shutterSetting；
获取区域曝光能力集：GET /ISAPI/Image/channels/<ID>/imageCap；
设置区域曝光参数：PUT /ISAPI/System/Serial/ports/ISAPI/Image/channels/<ID>/regionalExposure；
2. 新增报警类型COMM_FACE_THERMOMETRY_ALARM：人脸测温报警，对应的报警信息结构体：NET_DVR_FACE_THERMOMETRY_ALARM。
3. 测温配置能力集(ThermometryBasicParam，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES)扩展：
<ThermometryRange>(测温范围)新增取值：-20~120、<distanceUnit>(距离单位)新增取值：centimeter(厘米)。
4. NET_DVR_THERMOMETRY_BASICPARAM(测温基本参数配置结构体)扩展，byThermometryRange新增取值：6-(摄氏度: -20-120℃)，byDistanceUnit新增取值：2-厘米(centimeter)。
5. 新增加错误码：NET_DVR_THERMOMETRY_REGION_OVERSTEP_ERROR（测温区域越界）、NET_DVR_NO_TEMP_SENSOR_ERROR（无温度传感器）、 NET_DVR_PUPIL_DISTANCE_OVERSIZE_ERROR（瞳距过大），对应接口：NET_DVR_GetLastError。
6. 新增日志协议：MAJOR_ALARM中新增：MINOR_ FACE_THERMOMETRY_ALARM（人脸测温报警）。对应接口：NET_DVR_FindDVRLog_V30。
V6.0.0.20
build20181207_win32 		筒机版本 V5.5.16 1. NET_DVR_ALARMOUTCFG_V30(报警输出参数配置结构体)使用1个保留字节新增参数：byNormalSatus(报警输出常态)。
2. NET_VCA_ONE_RULE_V42(警戒规则参数结构体)使用1个保留字节新增参数：byBackgroundSuppression(背景干扰抑制)。
3. 热成像画中画配置能力集(ThermalPip，对应接口：NET_DVR_GetSTDAbility，能力集类型：DEVICE_ABILITY_ThermalPip)扩展：
新增子节点：<imageFusionRatio>(图像融合比例)、<borderFusionRatio>(边缘融合比例)。
4. NET_DVR_THERMAL_PIP(热成像画中画配置结构体)使用2个保留字节新增参数：byImageFusionRatio(图像融合比例)、byBorderFusionRatio(边缘融合比例)。
5. 火点检测配置能力集(FireDetection，对应接口：NET_DVR_GetSTDAbility，能力集类型：DEVICE_ABILITY_FireDetection)扩展：
新增子节点：<fireSourceDetection>(火点搜索模式)。
6. NET_DVR_FIREDETECTION_CFG(火点检测参数配置结构体)使用1个保留字节新增参数：byFireSourceDetection(火点搜索模式)。


SDK版本更新V5.x

更新版本 更新项目 更新记录
V5.3.6.25
build20180801 		PA雷达设备 V1.0.0 build 181024
1. 视频录像策略配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取视频录像策略配置能力：GET /ISAPI/SecurityCP/Configuration/videoStrategy/capabilities?format=json
获取视频录像策略配置：GET /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
设置视频录像策略配置：PUT /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
。
2. 报警模块参数(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取防区参数配置能力：GET /ISAPI/SecurityCP/Configuration/zones/capabilities?format=json
获取获取防区参数配置：GET /ISAPI/SecurityCP/Configuration/zones?format=json
设置防区参数配置：PUT /ISAPI/SecurityCP/Configuration/zones/<ID>?format=json
3. 输出参数配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取输出参数配置能力：GET /ISAPI/SecurityCP/Configuration/outputs/capabilities?format=json
获取输出参数配置：GET /ISAPI/SecurityCP/Configuration/outputs?format=json
设置输出参数配置：PUT /ISAPI/SecurityCP/Configuration/outputs/<ID>?format=json
4. 直连推送配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取输出参数配置能力：GET /ISAPI/SecurityCP/Configuration/outputs/capabilities?format=json
获取输出参数配置：GET /ISAPI/SecurityCP/Configuration/outputs?format=json
设置输出参数配置：PUT /ISAPI/SecurityCP/Configuration/outputs/<ID>?format=json
5. ARC推送配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取ARC推送配置能力：GET /ISAPI/SecurityCP/Configuration/messageSendARC/capabilities?format=json
获取ARC推送配置：GET /ISAPI/SecurityCP/Configuration/messageSendARC?format=json
设置ARC推送配置：PUT /ISAPI/SecurityCP/Configuration/messageSendARC?format=json
6. ARC配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取ARC配置列表：GET /ISAPI/SecurityCP/Configuration/ARC?format=json
获取ARC配置：GET /ISAPI/SecurityCP/Configuration/ARC/<ID>?format=json
设置ARC配置：PUT /ISAPI/SecurityCP/Configuration/ARC/<ID>?format=json
7. 雷达报警事件上传（布防）(对应接口：NET_DVR_STDXMLConfig)： 命令： 雷达报警事件上传：GET /ISAPI/Event/notification/alertStream
普通事件上传：GET /ISAPI/SecurityCP/Configuration/messageSendDirect?format=json
8. 视频录像策略配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取视频录像策略配置能力：GET /ISAPI/SecurityCP/Configuration/videoStrategy/capabilities?format=json
获取视频录像策略配置：GET /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
设置视频录像策略配置：PUT /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
9. 摄像机联动配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取摄像机联动配置能力：GET /ISAPI/SecurityCP/Configuration/videoLinkage/capabilities?format=json
获取摄像机联动配置：GET /ISAPI/SecurityCP/Configuration/videoLinkage/channels/<ID>?format=json
设置摄像机联动配置：PUT /ISAPI/SecurityCP/Configuration/videoLinkage/channels/<ID>?format=json
10. 布撤防计划配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取摄像机联动配置能力：GET /ISAPI/SecurityCP/Configuration/videoLinkage/capabilities?format=json
获取布撤防计划配置：GET /ISAPI/SecurityCP/Configuration/armSchedule?format=json
设置布撤防计划配置：PUT /ISAPI/SecurityCP/Configuration/videoLinkage/channels/<ID>?format=json
11. 灵敏度配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取灵敏度配置能力：GET /ISAPI/Radar/Configuration/sensitivity/capabilities?format=json
获取灵敏度配置：GET /ISAPI/Radar/Configuration/sensitivity?format=json
设置灵敏度配置：PUT /ISAPI/Radar/Configuration/sensitivity?format=json
12. 探测角度与距离配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取获取探测角度与距离配置能力：GET /ISAPI/Radar/Configuration/detectInfo/capabilities?format=json
获取探测角度与距离配置：GET /ISAPI/Radar/Configuration/detectInfo?format=json
设置探测角度与距离配置：PUT /ISAPI/Radar/Configuration/detectInfo?format=json
13. 环境手动学习控制(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取环境自动学习控制能力：GET /ISAPI/Radar/Control/environmentManualLearning/capabilities?format=json
设置环境自动学习控制：PUT /ISAPI/Radar/Control/environmentManualLearning?format=json
14. 布防(对应接口：NET_DVR_STDXMLConfig)： 命令： PUT /ISAPI/SecurityCP/control/disarm/<ID>?format=json
15. 撤防(对应接口：NET_DVR_STDXMLConfig)： 命令： PUT /ISAPI/SecurityCP/control/disarm/<ID>?format=json
16. 继电器控制(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取获取控制操作能力：GET /ISAPI/SecurityCP/control/capabilities?format=json
单个继电器控制：PUT /ISAPI/SecurityCP/control/outputs/<ID>?format=json
批量继电器控制：POST /ISAPI/SecurityCP/control/outputs?format=json
17. 雷达防区绘制模式配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达防区绘制模式配置能力：GET /ISAPI/Radar/Configuration/zoneDrawingMode/capabilities?format=json
获取雷达防区绘制模式配置：GET /ISAPI/Radar/Configuration/zoneDrawingMode?format=json
设置雷达防区绘制模式配置：PUT /ISAPI/Radar/Configuration/zoneDrawingMode?format=json
18. 雷达防区坐标信息（现场绘制雷达防区）(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达防区坐标信息能力：GET /ISAPI/Radar/Configuration/zonesCoordinateInfo/capabilities?format=json
获取雷达防区坐标信息：GET /ISAPI/Radar/Configuration/zonesCoordinateInfo?format=json
19. 雷达标定模式配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达标定模式配置能力：GET /ISAPI/Radar/Configuration/calibratingMode/capabilities?format=json
获取雷达标定模式配置：GET /ISAPI/Radar/Configuration/calibratingMode?format=json
设置雷达标定模式配置：PUT /ISAPI/Radar/Configuration/calibratingMode?format=json
20. 雷达手动标定(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达当前标定位置信息（第一个<ID>：表示通道号，第二个<ID>：表示从摄像机ID[1,4]）：GET /ISAPI/Radar/Configuration/calibratingLocation/channels/<ID>/slaveCamera/<ID>?format=json
获取雷达手动标定配置能力：GET /ISAPI/Radar/Configuration/manualCalibrating/capabilities?format=json
获取雷达手动标定（第一个<ID>：表示通道号，第二个<ID>：表示从摄像机ID[1,4]）：GET /ISAPI/Radar/Configuration/manualCalibrating/channels/<ID>/slaveCamera/<ID>?format=json
设置雷达手动标定（第一个<ID>：表示通道号，第二个<ID>：表示从摄像机ID[1,4]）：PUT /ISAPI/Radar/Configuration/manualCalibrating/channels<ID>/slaveCamera/<ID>?format=json
21. 雷达主从跟踪参数配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达主从跟踪参数配置能力：GET /ISAPI/Radar/Configuration/masterSlaveTracking/capabilities?format=json
获取雷达主从跟踪参数配置（URL中的ID表示通道号）：GET /ISAPI/Radar/Configuration/masterSlaveTracking/channels/<ID>?format=json
设置雷达主从跟踪参数配置（URL中的ID表示通道号）：PUT /ISAPI/Radar/Configuration/masterSlaveTracking/channels/<ID>?format=json
22. 雷达轨迹查询(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达轨迹查询能力：GET /ISAPI/Radar/TrailInfo/Search/capabilities?format=json
雷达轨迹查询：POST /ISAPI/Radar/TrailInfo/Search?format=json
23. 实时状态获取(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取主机状态获取能力：GET /ISAPI/SecurityCP/status/capabilities?format=json
获取所有子系统状态：GET /ISAPI/SecurityCP/status/subSystems?format=json
获取所有外设状态：GET /ISAPI/SecurityCP/status/exDevStatus?format=json
获取主机所有状态：GET /ISAPI/SecurityCP/status/host?format=json
24. 获取能力集(对应接口：NET_DVR_STDXMLConfig)： 命令： 设备系统总能力集：GET /ISAPI/System/capabilities
获取报警主机能力集：GET /ISAPI/SecurityCP/capabilities?format=json
获取报警主机配置能力：GET /ISAPI/SecurityCP/Configuration/capabilities?format=json
V5.3.6.25
build20180801 		监所智能服务器
DS-IE6316-E/J
V1.1.0 		1. 新增NCG取流配置功能(对应接口：NET_DVR_STDXMLConfig):
能力集：/ISAPI/ContentMgmt/InputProxy/NCG/<ID>/capabilities；
批量获取：GET /ISAPI/ContentMgmt/InputProxy/NCG；
批量设置：PUT /ISAPI/ContentMgmt/InputProxy/NCG；
单个获取：GET /ISAPI/ContentMgmt/InputProxy/NCG/<ID>；
单个设置：PUT /ISAPI/ContentMgmt/InputProxy/NCG/<ID>。
2. NET_DVR_IPCHANINFO_V40(IP通道信息)扩展：
1) byTransProtocol(传输协议类型)新增取值：3-RTSP。
2) 使用240个保留字节新增参数：strURL[URL_LEN](RTSP协议取流URL)。
3. 设备流能力集(STREAM_ABILITY，对应接口：NET_DVR_GetDeviceAbility)扩展，节点<transProtocol>(取前端流协议)新增取值：3-RTSP方式，节点<IPCProtocolEntry>(取前端流协议)新增取值：ONVIF。
4. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：DS_IEXX_E_J。
V5.3.6.15
build20180705 		超脑系列庭审主机 V3.4.30 1. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig)扩展：
新增子节点：<isSupportPictureCaptureComparision>(是否支持图片与监控点图片1V1比对)。
2. 设备通道事件能力集(ChannelEventCap，对应接口：NET_DVR_STDXMLConfig)扩展：
新增子节点：<PictureCaptureComparision>(图片与监控点图片1V1比对)。
3. 新增图片1V1比对JSON透传配置接口：NET_DVR_STDXMLConfig：
获取图片与监控点图片1v1比对能力集:GET /ISAPI/Intelligent/channels<ID>PictureCaptureComparision/face/capabilities?format=json;
图片与监控点图片1v1比对:POST /ISAPI/Intelligent/channels<ID>pictureCaptureComparision/face/result?format=json。
4. 设备通道输入能力集(ChannelInputAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO扩展：
新增子节点：<supportMaskNum>(支持马赛克路数)、<AutoMask>(区域字段马赛克配置)。
5. NET_DVR_AREA_MASK_CFG(区域马赛克配置结构体)使用1个保留字节新增参数：byAutoMask(是否启用自动马赛克)。
6. 新增错误码（对应接口：NET_DVR_GetLastError)，新增错误码：NET_DVR_DETECT_REGION_RANGE_INVALID（检测区域范围非法）、NET_DVR_CHANNEL_CAPTURE_PICTURE_FAILURE（通道抓图失败）。
V5.3.6.40
build20180913 		热成像筒机 V5.5.8 1. 新增带全屏测温数据的设备抓图接口：NET_DVR_CaptureJPEGPicture_WithAppendData。
2. NET_DVR_THERMOMETRY_UPLOAD(实时温度信息结构体)使用16个保留字节新增参数：struHighestPoint(线、框测温最高温度位置坐标)、struLowestPoint(线、框测温最低温度位置坐标)。
3. NET_DVR_FOCUSMODE_CFG(快球聚焦模式信息结构体)使用4个保留字节新增参数：dwRelativeFocusPos(相对focus值)。
4. 热成像智能互斥能力集(ThermIntell，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMINTELL_CAPABILITIES)扩展：
<intellType>(智能类型)新增取值：basicBehavior(异常行为识别)。
5. 设备前端参数能力集(CAMERAPARA，对应接口：NET_DVR_GetSTDAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展：
新增子节点：<relativeFocusPoso>(相对focus值)。
6. 设备JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetSTDAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展：
新增子节点：<isSupportCaptureJPEGPicWithAppendData>(是否支持带全屏测温数据的设备抓图)。
7. NET_DVR_THERMINTELL_PARAM(热成像智能互斥配置结构体)byIntellType新增取值：7-异常行为识别。
V5.3.6.5
build20180529 		4K LED控制器 V1.0.0 1. 新增LED控制器配置、控制接口：NET_DVR_STDXMLConfig：
获取设备基本信息：GET /ISAPI/System/deviceInfo；
设置设备基本信息：PUT /ISAPI/System/deviceInfo；
获取发送卡输出参数能力集：GET /ISAPI/LED/SendCard/Operate/output/config/capabilities；
获取发送卡输出参数：GET /ISAPI/LED/SendCard/Operate/output/config；
设置发送卡输出参数：PUT /ISAPI/LED/SendCard/Operate/output/config；
发送卡参数配置（获取单个、获取所有）：GET /ISAPI/LED/SendCard/Operate/output/portConfig/<ID>；
发送卡参数配置（设置单个、设置所有）：PUT /ISAPI/LED/SendCard/Operate/output/portConfig/<ID>；
发送卡端口参数配置（获取单个、获取所有）：GET /ISAPI/LED/SendCard/Operate/output/portConfig/<ID>；
发送卡端口参数配置（设置单个、设置所有）：PUT /ISAPI/LED/SendCard/Operate/output/portConfig/<ID>；
获取发送卡显示参数配置能力集：/ISAPI/LED/SendCard/Operate/display/config/capabilites；
获取发送卡显示参数配置：GET /ISAPI/LED/SendCard/Operate/display/config；
设置发送卡显示参数配置：PUT /ISAPI/LED/SendCard/Operate/display/config；
获取物理连线配置能力集：GET /ISAPI/LED/SendCard/Operate/screenLine/capabilities；
获取物理连线配置: GET /ISAPI/LED/SendCard/Operate/screenLine；
设置物理连线配置: PUT /ISAPI/LED/SendCard/Operate/screenLine；
获取正常值范围: GET /ISAPI/LED/SendCard/Operate/displayNormalStatus/capabilities；
屏幕显示状态: POST /ISAPI/LED/SendCard/Operate/displayStatus；
参数固化: GET /ISAPI/LED/RecvCard/Operate/saveConfiguration；
获取图片轮询配置能力集: GET /ISAPI/LED/SendCard/Operate/pictureLoop/capabilities；
获取图片轮询配置: GET /ISAPI/LED/SendCard/Operate/pictureLoop；
设置图片轮询配置: PUT /ISAPI/LED/SendCard/Operate/pictureLoop；
获取测试信号参数配置能力集: GET /ISAPI/LED/SendCard/Operate/testSignal/config/capabilities；
获取测试信号参数配置: GET /ISAPI/LED/SendCard/Operate/testSignal/config；
设置测试信号参数配置: PUT /ISAPI/LED/SendCard/Operate/testSignal/config；
获取LED屏无信号显示模式配置能力集: GET /ISAPI/LED/SendCard/Operate/noSignal/display/capabilities；
获取LED屏无信号显示模式配置: GET /ISAPI/LED/SendCard/Operate/noSignal/display；
设置LED屏无信号显示模式配置: PUT /ISAPI/LED/SendCard/Operate/noSignal/display；
获取LED发送卡VGA信号参数配置能力集: GET /ISAPI/LED/SendCard/Operate/input/screenVga/capabilities；
获取LED发送卡VGA信号参数配置: GET /ISAPI/LED/SendCard/Operate/input/screenVga；
设置LED发送卡VGA信号参数配置: PUT /ISAPI/LED/SendCard/Operate/input/screenVga；
获取LED发送卡输入分辨率和刷新率获取: GET /ISAPI/LED/SendCard/Operate/input/config；
获取LED校正效果使能: GET /ISAPI/LED/RecvCard/Operate/checkEnabled/<ID>；
设置LED校正效果使能: PUT /ISAPI/LED/RecvCard/Operate/checkEnabled/<ID>；
获取预设GAMMA表: GET /ISAPI/LED/RecvCard/Information/presetGammaTable；
获取接收卡GAMMA表配置能力集: GET /ISAPI/LED/RecvCard/Information/ConfigGammaTable/capabilities；
获取接收卡GAMMA表配置: GET /ISAPI/LED/RecvCard/Information/ConfigGammaTable；
设置接收卡GAMMA表配置: PUT /ISAPI/LED/RecvCard/Information/ConfigGammaTable；
获取接收卡基本参数配置能力集: GET /ISAPI/LED/RecvCard/Information/ConfigGammaTable/capabilities；
获取接收卡基本参数配置: POST /ISAPI/LED/RecvCard/Information/basic；
设置接收卡基本参数配置: PUT /ISAPI/LED/RecvCard/Information/basic；
获取接收卡高级参数配置能力集: GET /ISAPI/LED/RecvCard/Information/advanced/capabilities；
获取接收卡高级参数配置: POST /ISAPI/LED/RecvCard/Information/advanced；
设置接收卡高级参数配置: PUT /ISAPI/LED/RecvCard/Information/advanced；
获取接收卡版本信息: GET /ISAPI/LED/RecvCard/System/version；
接收卡恢复默认参数: GET /ISAPI/LED/RecvCard/System/restore；
获取屏幕型号参数配置能力集: GET /ISAPI/LED/SendCard/Operate/screenModel/config/capabilities；
获取屏幕型号参数配置: GET /ISAPI/LED/SendCard/Operate/screenModel/config；
设置屏幕型号参数配置: PUT /ISAPI/LED/SendCard/Operate/screenModel/config；
获取屏幕坏点检测: GET /ISAPI/LED/RecvCard/Operate/badPointDetection；
获取发送卡输入支持管理能力集: GET /ISAPI/LED/SendCard/Operate/graphicsCard/config/capabilities；
获取发送卡输入支持管理: GET /ISAPI/LED/SendCard/Operate/graphicsCard/config；
设置发送卡输入支持管理: PUT /ISAPI/LED/SendCard/Operate/graphicsCard/config；
获取发送卡多播开关配置能力集: GET /ISAPI/LED/SendCard/Operate/multicastEnabledCfg/capabilities；
获取发送卡多播开关配置: GET /ISAPI/LED/SendCard/Operate/multicastGrp；
设置发送卡多播开关配置: PUT /ISAPI/LED/SendCard/Operate/multicastEnabledCfg；
获取发送卡多播组配置能力集: GET /ISAPI/LED/SendCard/Operate/multicastGrp/capabilities；
获取发送卡多播组配置: GET /ISAPI/LED/SendCard/Operate/multicastGrp；
设置发送卡多播组配置: PUT /ISAPI/LED/SendCard/Operate/multicastGrp；
LED系统状态检测: GET /ISAPI/LED/System/versionCheck；
重启接收卡: PUT /ISAPI/LED/RecvCard/reboot；
获取发送卡图像增强能力集: GET /ISAPI/LED/SendCard/Operate/imageEnhance/capabilities；
获取发送卡图像增强: GET /ISAPI/LED/SendCard/Operate/imageEnhance；
设置发送卡图像增强: PUT /ISAPI/LED/SendCard/Operate/imageEnhance；
获取除湿配置能力集: GET /ISAPI/LED/SendCard/Operate/deHumidity；
获取除湿配置: GET /ISAPI/LED/SendCard/Operate/deHumidity；
设置除湿配置: PUT /ISAPI/LED/SendCard/Operate/deHumidity；
获取系统监测配置能力集: GET /ISAPI/LED/System/monitor/capabilities；
获取系统监测配置: GET /ISAPI/LED/System/monitor；
设置系统监测配置: PUT /ISAPI/LED/System/monitor；
获取字幕配置能力集: GET /ISAPI/LED/Display/captions/capabilities；
获取字幕配置: GET /ISAPI/LED/Display/captions；
设置字幕配置 PUT /ISAPI/LED/Display/captions；
设置字幕配置状态: GET /ISAPI/LED/Display/captions/status；
获取OSD配置能力集: GET /ISAPI/LED/Display/osdCfg/capabilities；
获取OSD配置: GET /ISAPI/LED/Display/osdCfg；
设置OSD配置: PUT /ISAPI/LED/SendCard/Operate/imageEnhance；
获取屏幕模组数配置: GET /ISAPI/LED/RecvCard/Operate/screenModule；
设置屏幕模组数配置: PUT /ISAPI/LED/RecvCard/Operate/screenModule；
获取多功能卡信息: GET /ISAPI/LED/MultiFunCard/basicInfo；
获取LED系统状态信息: GET /ISAPI/LED/System/status；
设置LED系统状态信息: PUT /ISAPI/LED/RecvCard/Operate/screenModule；
获取升级版本检测配置能力集: GET /ISAPI/LED/SendCard/Operate/upgradeCfg/capabilities；
获取升级版本检测配置: GET /ISAPI/LED/SendCard/Operate/upgradeCfg；
设置升级版本检测配置: PUT /ISAPI/LED/SendCard/Operate/upgradeCfg；
获取屏幕坏点坐标及显示配置能力集: GET /ISAPI/LED/RecvCard/Operate/badPointDisplay/capabilities；
设置屏幕坏点坐标及显示配置 PUT /ISAPI/LED/RecvCard/Operate/badPointDisplay；
获取屏幕坏点坐标及显示配置: GET /ISAPI/LED/RecvCard/Operate/badPointDisplay；
获取屏幕坏点信息配置: GET /ISAPI/LED/RecvCard/Operate/badPointInfo；
设备状态信息: GET /ISAPI/System/status；
能力集: GET /ISAPI/LED/capabilities。
2. 升级接口NET_DVR_Upgrade_V40中升级类型字段dwUpgradeType扩展取值：ENUM_UPGRADE_LED = 6, LED发送卡和接收卡升级。
3. 获取设备能力集接口：NET_DVR_GetDeviceAbility： 增加能力集类型：LED_ABILITY-0x807(LED能力集)。
V5.3.6.51
build20180704 		低端经销型指纹门禁机与考勤机 DS_K1A850X、DS_K1T800X 1. 结构体NET_DVR_ALARMHOST_NETPARAM_V50(上传中心网络参数配置结构体)，占用36个保留字节增加如下参数：byProtocolVersion（EHome协议版本）、byEHomeKey（EHome Key）。
2. 人员信息及权限接口：NET_DVR_STDXMLConfig：
人员信息及权限删除（按工号删除、删除所有）：PUT /ISAPI/AccessControl/UserInfoDetail/Delete?format=json
人员信息及权限删除能力能力集：GET /ISAPI/AccessControl/UserInfoDetail/Delete/capabilities?format=json。
3. 新增查询人员信息及权限删除进度接口：NET_DVR_StartRemoteConfig和NET_DVR_StopRemoteConfig： 命令：GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json。
4. 新增指纹管理配置接口：NET_DVR_StartRemoteConfig： 命令：获取指纹配置参数命令：NET_DVR_GET_FINGERPRINT_CFG_V50和设置指纹配置参数命令：NET_DVR_SET_FINGERPRINT_CFG_V50
5. 结构体扩展：NET_DVR_FINGER_PRINT_CFG_V50： 扩展参数：byFingerType扩展取值2-巡更指纹，3-超级指纹，4-解除指纹，扩展byEmployeeNo （32字节，工号（人员ID））；byLeaderFP（256字节，对门是否有首次认证功能）
6. 结构体扩展：NET_DVR_FINGER_PRINT_STATUS_V50： 扩展参数：byCardReaderRecvStatus扩展取值10-指纹读卡器版本过低（无法支持工号）byFingerType扩展取值：2-巡更指纹，3-超级指纹，4-解除指纹；占用保留字节： 新增参数byRecvStatus（1个字节，主机错误状态),byEmployeeNo（32字节，工号（人员ID）），byErrorEmployeeNo（256字节，下发错误信息）
7. 结构体扩展：NET_DVR_FINGER_PRINT_INFO_COND_V50： 占用32个保留字节新增参数：byEmployeeNo（工号）
8. 结构体扩展：NET_DVR_FINGER_PRINT_BYCARD_V50： 占用32个保留字节新增参数：byEmployeeNo（工号）
9. 结构体扩展：NET_DVR_FINGER_PRINT_BYREADER_V50： 占用32个保留字节新增参数：byEmployeeNo（工号）
10. 结构体扩展：NET_DVR_EVETN_CARD_LINKAGE_UNION： 占用32个保留字节新增参数：byEmployeeNo（工号）
11. 结构体扩展：NET_DVR_EVENT_CARD_LINKAGE_CFG_V51： 扩展byProMode 3-工号（人员ID）
12. 结构体扩展：NET_DVR_ACS_EVENT_COND： 占用33个保留字节新增参数：byTimeType（时间类型）、byEmployeeNo（工号）
13. 结构体扩展：NET_DVR_ACS_EVENT_DETAIL： 占用34个保留字节新增参数：byUserType（人员类型）、byCurrentVerifyMode（读卡器当前验证方式）、byEmployeeNo（工号）
14. 结构体扩展：NET_DVR_ACS_EVENT_CFG： 占用1个保留字节新增参数：byTimeType（时间类型）
15. 新增远程控制读卡器蜂鸣器：NET_DVR_STDXMLConfig：
设置远程控制读卡器蜂鸣器：PUT/ISAPI/AccessControl/RemoteControl/buzzer/<ID>?format=json。
16. 新增门禁设备事件获取能力：NET_DVR_STDXMLConfig：
获取门禁设备事件总条数获取能力：GET /ISAPI/AccessControl/AcsEventTotalNum/capabilities?format=json;
门禁设备事件总条数获取:POST /ISAPI/AccessControl/AcsEventTotalNum?format=json ;
获取事件优化配置:GET /ISAPI/AccessControl/EventOptimizationCfg?format=json;
设置事件优化配置:PUT /ISAPI/AccessControl/EventOptimizationCfg?format=json。
17. 新增设备内反潜回记录清除：NET_DVR_STDXMLConfig：
设备内反潜回记录清除：PUT /ISAPI/AccessControl/ClearAntiSneak?format=json。
18. 新增结构体：NET_DVR_ACS_EVENT_INFO_EXTEND：NET_DVR_ACS_ALARM_INFO 结构体中pAcsEventInfoExtend 指向一个NET_DVR_ACS_EVENT_INFO_EXTEND结构体。
19. 布防能力集(BasicCapability，对应接口：NET_DVR_STDXMLConfig)， <deployType>扩展参数布防类型。
20. 结构体扩展：NET_DVR_ACS_WORK_STATUS_V50：占用1个字节，新增参数：byAntiSneakServerStatus（反潜回服务器状态）
21. 结构体扩展：NET_DVR_CARD_READER_CFG_V50：占用 bySupportDelFPByID（读卡器是否支持按手指ID删除指纹）、byDefaultVerifyMode（读卡器默认验证方式）
22. 结构体扩展：NET_DVR_ACS_CFG：占用一个保留字节，新增byProtocol（读卡器通信协议类型）
23. 结构体扩展：NET_DVR_VALID_PERIOD_CFG：占用一个保留字节，新增byTimeType（时间类型）
24. 获取门禁主机总能力集(AccessControl，对应接口：NET_DVR_STDXMLConfig)， 新增：<isSupportRemoteControlDoor>（远程开门）、<isSupportUserInfo>（门禁以人为中心人员管理）、<isSupportCardInfo>（门禁以人为中心卡管理）、<EmployeeNoInfo>（工号（人员ID））。
25. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)新增， 节点<DeviceLanguageChange>(设备语言修改是否需要重启)、<CardReaderFPAlgorithmUpgradeReboot>(读卡器指纹算法程序升级是否需要重启)、<DeviceUpgradeReboot>(设备升级是否自动重启)、<isSupportClientProxyWEB>（是否支持客户端代理透传WEB远程配置）。
26. 门禁主机能力集(AcsAbility)新增节点：
1) <Action>（同步卡参数）；在<PlanTemplate>(计划模板能力)节点中新增：<templateNo>（计划模板编号范围）的<Group >(组参数)扩展参数：timeType(时间类型)。 在<Card>（卡参数）节点中新增<timeRangeBegin>（起始时间范围）和<timeRangeEnd>（结束时间范围）、<cardValidUnit>（卡有效期参数精度） ； 在<AcsWorkStatus>（门禁工作状态）节点中新增：<antiSneakServerStatus>（反潜回服务器状态）； 在<CardReaderCfg>（读卡器配置参数）节点中新增：<supportDelFPByID >（读卡器是否支持按手指ID删除指纹）、<defaultVerifyMode >（读卡器默认验证方式）、<fingerPrintCapacity>（指纹容量）、<fingerPrintNum>（已存在指纹数量） 、<enableFingerPrintNum>（指纹容量使能）； 在<AcsUpgrade>（门禁工作状态）节点中新增：<cardReaderFPAlgorithmUpgrade>（支持读卡器指纹算法程序升级）； 在<AcsHostCfg>（门禁主机配置）节点中新增：<protocol >（读卡器通信协议类型）； 在<EventLinkage>（事件及卡号联动）节点中：<supportMode >（支持的联动方式）扩展取值：EmployeeNo（工号（人员ID））； 在<SubEventNameList>（子事件名称列表）节点中新增：<subEventName >（子事件类型）新增加取值：LegalEventNearlyFull（合法事件满90%报警）、PasswordMismatch（密码不匹配）、EmployeeNoNotExist（工号不存在）、CombinedVerifyPass（组合认证通过） 、CombinedVerifyTimeout（组合认证超时）、VerifyModeMismatch（认证方式不匹配）； 在<FingerPrint>（指纹参数 ）节点中：<fingerType>（指纹类型）扩展取值：patrolFP-巡更指纹，superFP-超级指纹，dismissingFP-解除指纹；新增<recvStatus>（门禁主机配置）、<employeeNo>（工号（人员ID））、<leaderFP >（指纹是否支持首次认证功能配置）； 在<DelFingerPrint>（删除指纹）节点中新增：EmployeeNo（工号（人员ID））。
27. 扩展网络报警主机能力集(DEVICE_ABILITY_INFO，对应接口： NET_DVR_GetDeviceAbility，能力集类型：AlarmHostAbility)扩展：节点<NetParameter>(网络参数配置)新增：protocolVersion (EHome协议版本)、EHomeKey（EhomeKey用于EHome 5.0版本）。
28. 扩展设备网络应用参数能力集(DEVICE_NETAPP_ABILITY，对应接口：NET_DVR_GetDeviceAbility) 节点<PPPOE>(PPPOE参数)新增：httpPortNo(http端口序号)、EHomeKey（EhomeKey用于EHome 5.0版本）
29. 新增错误码（对应接口：NET_DVR_GetLastError)，新增错误码：NET_ERR_NOT_SUPPORT_DEL_FP_BY_ID（读卡器不支持按手指ID删除指纹）、NET_ERR_TIME_RANGE（有效期参数配置范围有误）。
30. 门禁事件获取能力集(GetAcsEvent，对应接口：NET_DVR_STDXMLConfig，新增节点：<localOrUTC>(时间类型)和<employeeNo>(工号) 。
31. 结构体扩展：NET_DVR_ACS_ALARM_INFO：扩展MINOR_LEGAL_EVENT_NEARLY_FULL（合法事件满90%报警）、 MINOR_LOCAL_LOGOUT（本地注销登陆）、MINOR_PASSWORD_MISMATCH（密码不匹配）、MINOR_EMPLOYEE_NO_NOT_EXIST（工号不存在）、MINOR_COMBINED_VERIFY_PASS（组合认证通过）、 MINOR_COMBINED_VERIFY_TIMEOUT（组合认证超时）、MINOR_VERIFY_MODE_MISMATCH（认证方式不匹配）；ACS_DEV_SUBEVENT_ENUM扩展EVENT_ACS_LEGAL_EVENT_NEARLY_FULL（合法事件满90%报警）； ACS_CARD_READER_SUBEVENT_ENUM 扩展EVENT_ACS_PASSWORD_MISMATCH(密码不匹配)、EVENT_ACS_EMPLOYEE_NO_NOT_EXIST（工号不存在）、EVENT_ACS_COMBINED_VERIFY_PASS（组合认证通过）、 EVENT_ACS_COMBINED_VERIFY_TIMEOUT（组合认证超时）、EVENT_ACS_VERIFY_MODE_MISMATCH（认证方式不匹配）。
V5.3.6.51
build20180704 		智慧医疗项目 1. 新增通道信息配置接口：NET_DVR_STDXMLConfig：
获取通道属性(鹰眼、鱼眼、热成像、全景)数据：GET /ISAPI/AUXInfo/attributes/Channels/<ID>；
批量获取通道属性(鹰眼、鱼眼、热成像、全景)数据：GET /ISAPI/AUXInfo/attributes/Channels；
获取事件屏蔽区域配置：GET /ISAPI/Intelligent/channels/<ID>/Shield/<ID>；
设置事件屏蔽区域配置：PUT /ISAPI/Intelligent/channels<ID>/Shield/<ID>；
获取视频输入通道参数配置：GET /ISAPI/System/Video/inputs/channels；
获取指定视频通道配置：GET /ISAPI/System/Video/inputs/channels/<ID>；
设置指定视频通道配置：PUT /ISAPI/System/Video/inputs/channels/<ID>；
添加IPC：POST /ISAPI/ContentMgmt/InputProxy/channels；
删除IPC：DELETE /ISAPI/ContentMgmt/InputProxy/channels/<ID>；
获取设备指定输出通道能力集：GET /ISAPI/System/Video/outputs/PreviewSwitch/capabilities；
获取设备指定输出解码通道：GET /ISAPI/System/Video/outputs/PreviewSwitch?groupNo=1&videoOutType=VGA；
设置指定视频通道配置：PUT /ISAPI/System/Video/outputs/PreviewSwitch?groupNo=1&videoOutType=VGA。
2. 新增事件触发配置接口：NET_DVR_STDXMLConfig：
获取事件触发列表：GET /ISAPI/Event/triggers；
设置事件触发列表：PUT /ISAPI/Event/triggers；
新增事件触发列表：POST /ISAPI/Event/triggers；
删除事件触发列表：DELETE /ISAPI/Event/triggers；
获取事件触发配置：GET /ISAPI/Event/triggers/<ID>；
设置事件触发配置：PUT /ISAPI/Event/triggers/<ID>；
删除事件触发配置：DELETE /ISAPI/Event/triggers/<ID>。
3. 新增录制接口：NET_DVR_STDXMLConfig：
启动录制：POST /ISAPI/ContentMgmt/record/control/manual?format=json。
4. 新增镜像通道配置接口：NET_DVR_STDXMLConfig：
获取镜像通道列表：GET /ISAPI/ContentMgmt/MirrorVideo/channels；
设置镜像通道列表：PUT /ISAPI/ContentMgmt/MirrorVideo/channels；
获取镜像通道属性：GET /ISAPI/ContentMgmt/MirrorVideo/channels/<ID>；
设置镜像通道属性：PUT /ISAPI/ContentMgmt/MirrorVideo/channels/<ID>。
5. 新增画面配置接口：NET_DVR_STDXMLConfig：
获取通道画中画配置能力集：GET /ISAPI/Trial/<ID>/ pipstate/capabilities；
获取画中画配置：GET /ISAPI/Trial/<ID>/pipstate；
设置画中画配置：PUT /ISAPI/Trial/<ID>/ pipstate；
获取画面冻结配置：GET /ISAPI/Image/channels/<ID>/imageFreeze；
设置画面冻结配置：PUT /ISAPI/Image/channels/<ID>/imageFreeze。
6. 新增音频输入输出配置接口：NET_DVR_STDXMLConfig：
获取音频通道列表：GET /ISAPI/System/Audio/channels；
获取音频通道信息：GET /ISAPI/System/Audio/channels/<ID>；
获取音频输出通道配置：GET /ISAPI/System/Audio/AudioOut/channels/<ID>；
设置音频输出通道配置：PUT /ISAPI/System/Audio/AudioOut/channels/<ID>。
7. 新增串口信息配置接口：NET_DVR_STDXMLConfig：
获取串口能力集：GET /ISAPI/System/Serial/capabilities；
获取串口列表：GET /ISAPI/System/Serial/ports；
获取串口配置：GET /ISAPI/System/Serial/ports/<ID>； 设置串口配置：PUT /ISAPI/System/Serial/ports/<ID>。
8. 新增资源控制接口：NET_DVR_STDXMLConfig：
资源控制：POST /ISAPI/ContentMgmt/control/manual?format=json。
9. 新增资源搜索接口：NET_DVR_StartRemoteConfig、 NET_DVR_GetNextRemoteConfig和NET_DVR_StopRemoteConfig。
10. 报警类型 COMM_VCA_ALARM 新增报警类型：录制状态报警信息上传JSON数据和资源上传云存储状态报警信息上传JSON数据
（对应接口：NET_DVR_SetDVRMessageCallBack_V50和NET_DVR_StartListen_V30)
11. 设备流能力(STREAM_ABILITY)<UrlMode>(URL取流模式)新增子节点：<channelNo>(流媒体取流通道号)。
V5.3.6.25
build20180801 		PA雷达设备 V1.0.0 build 181024 1. 视频录像策略配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取视频录像策略配置能力：GET /ISAPI/SecurityCP/Configuration/videoStrategy/capabilities?format=json
获取视频录像策略配置：GET /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
设置视频录像策略配置：PUT /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
。
2. 报警模块参数(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取防区参数配置能力：GET /ISAPI/SecurityCP/Configuration/zones/capabilities?format=json
获取获取防区参数配置：GET /ISAPI/SecurityCP/Configuration/zones?format=json
设置防区参数配置：PUT /ISAPI/SecurityCP/Configuration/zones/<ID>?format=json
3. 输出参数配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取输出参数配置能力：GET /ISAPI/SecurityCP/Configuration/outputs/capabilities?format=json
获取输出参数配置：GET /ISAPI/SecurityCP/Configuration/outputs?format=json
设置输出参数配置：PUT /ISAPI/SecurityCP/Configuration/outputs/<ID>?format=json
4. 直连推送配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取输出参数配置能力：GET /ISAPI/SecurityCP/Configuration/outputs/capabilities?format=json
获取输出参数配置：GET /ISAPI/SecurityCP/Configuration/outputs?format=json
设置输出参数配置：PUT /ISAPI/SecurityCP/Configuration/outputs/<ID>?format=json
5. ARC推送配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取ARC推送配置能力：GET /ISAPI/SecurityCP/Configuration/messageSendARC/capabilities?format=json
获取ARC推送配置：GET /ISAPI/SecurityCP/Configuration/messageSendARC?format=json
设置ARC推送配置：PUT /ISAPI/SecurityCP/Configuration/messageSendARC?format=json
6. ARC配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取ARC配置列表：GET /ISAPI/SecurityCP/Configuration/ARC?format=json
获取ARC配置：GET /ISAPI/SecurityCP/Configuration/ARC/<ID>?format=json
设置ARC配置：PUT /ISAPI/SecurityCP/Configuration/ARC/<ID>?format=json
7. 雷达报警事件上传（布防）(对应接口：NET_DVR_STDXMLConfig)： 命令： 雷达报警事件上传：GET /ISAPI/Event/notification/alertStream
普通事件上传：GET /ISAPI/SecurityCP/Configuration/messageSendDirect?format=json
8. 视频录像策略配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取视频录像策略配置能力：GET /ISAPI/SecurityCP/Configuration/videoStrategy/capabilities?format=json
获取视频录像策略配置：GET /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
设置视频录像策略配置：PUT /ISAPI/SecurityCP/Configuration/videoStrategy?format=json
9. 摄像机联动配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取摄像机联动配置能力：GET /ISAPI/SecurityCP/Configuration/videoLinkage/capabilities?format=json
获取摄像机联动配置：GET /ISAPI/SecurityCP/Configuration/videoLinkage/channels/<ID>?format=json
设置摄像机联动配置：PUT /ISAPI/SecurityCP/Configuration/videoLinkage/channels/<ID>?format=json
10. 布撤防计划配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取摄像机联动配置能力：GET /ISAPI/SecurityCP/Configuration/videoLinkage/capabilities?format=json
获取布撤防计划配置：GET /ISAPI/SecurityCP/Configuration/armSchedule?format=json
设置布撤防计划配置：PUT /ISAPI/SecurityCP/Configuration/videoLinkage/channels/<ID>?format=json
11. 灵敏度配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取灵敏度配置能力：GET /ISAPI/Radar/Configuration/sensitivity/capabilities?format=json
获取灵敏度配置：GET /ISAPI/Radar/Configuration/sensitivity?format=json
设置灵敏度配置：PUT /ISAPI/Radar/Configuration/sensitivity?format=json
12. 探测角度与距离配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取获取探测角度与距离配置能力：GET /ISAPI/Radar/Configuration/detectInfo/capabilities?format=json
获取探测角度与距离配置：GET /ISAPI/Radar/Configuration/detectInfo?format=json
设置探测角度与距离配置：PUT /ISAPI/Radar/Configuration/detectInfo?format=json
13. 环境手动学习控制(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取环境自动学习控制能力：GET /ISAPI/Radar/Control/environmentManualLearning/capabilities?format=json
设置环境自动学习控制：PUT /ISAPI/Radar/Control/environmentManualLearning?format=json
14. 布防(对应接口：NET_DVR_STDXMLConfig)： 命令： PUT /ISAPI/SecurityCP/control/disarm/<ID>?format=json
15. 撤防(对应接口：NET_DVR_STDXMLConfig)： 命令： PUT /ISAPI/SecurityCP/control/disarm/<ID>?format=json
16. 继电器控制(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取获取控制操作能力：GET /ISAPI/SecurityCP/control/capabilities?format=json
单个继电器控制：PUT /ISAPI/SecurityCP/control/outputs/<ID>?format=json
批量继电器控制：POST /ISAPI/SecurityCP/control/outputs?format=json
17. 雷达防区绘制模式配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达防区绘制模式配置能力：GET /ISAPI/Radar/Configuration/zoneDrawingMode/capabilities?format=json
获取雷达防区绘制模式配置：GET /ISAPI/Radar/Configuration/zoneDrawingMode?format=json
设置雷达防区绘制模式配置：PUT /ISAPI/Radar/Configuration/zoneDrawingMode?format=json
18. 雷达防区坐标信息（现场绘制雷达防区）(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达防区坐标信息能力：GET /ISAPI/Radar/Configuration/zonesCoordinateInfo/capabilities?format=json
获取雷达防区坐标信息：GET /ISAPI/Radar/Configuration/zonesCoordinateInfo?format=json
19. 雷达标定模式配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达标定模式配置能力：GET /ISAPI/Radar/Configuration/calibratingMode/capabilities?format=json
获取雷达标定模式配置：GET /ISAPI/Radar/Configuration/calibratingMode?format=json
设置雷达标定模式配置：PUT /ISAPI/Radar/Configuration/calibratingMode?format=json
20. 雷达手动标定(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达当前标定位置信息（第一个<ID>：表示通道号，第二个<ID>：表示从摄像机ID[1,4]）：GET /ISAPI/Radar/Configuration/calibratingLocation/channels/<ID>/slaveCamera/<ID>?format=json
获取雷达手动标定配置能力：GET /ISAPI/Radar/Configuration/manualCalibrating/capabilities?format=json
获取雷达手动标定（第一个<ID>：表示通道号，第二个<ID>：表示从摄像机ID[1,4]）：GET /ISAPI/Radar/Configuration/manualCalibrating/channels/<ID>/slaveCamera/<ID>?format=json
设置雷达手动标定（第一个<ID>：表示通道号，第二个<ID>：表示从摄像机ID[1,4]）：PUT /ISAPI/Radar/Configuration/manualCalibrating/channels<ID>/slaveCamera/<ID>?format=json
21. 雷达主从跟踪参数配置(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达主从跟踪参数配置能力：GET /ISAPI/Radar/Configuration/masterSlaveTracking/capabilities?format=json
获取雷达主从跟踪参数配置（URL中的ID表示通道号）：GET /ISAPI/Radar/Configuration/masterSlaveTracking/channels/<ID>?format=json
设置雷达主从跟踪参数配置（URL中的ID表示通道号）：PUT /ISAPI/Radar/Configuration/masterSlaveTracking/channels/<ID>?format=json
22. 雷达轨迹查询(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取雷达轨迹查询能力：GET /ISAPI/Radar/TrailInfo/Search/capabilities?format=json
雷达轨迹查询：POST /ISAPI/Radar/TrailInfo/Search?format=json
23. 实时状态获取(对应接口：NET_DVR_STDXMLConfig)： 命令： 获取主机状态获取能力：GET /ISAPI/SecurityCP/status/capabilities?format=json
获取所有子系统状态：GET /ISAPI/SecurityCP/status/subSystems?format=json
获取所有外设状态：GET /ISAPI/SecurityCP/status/exDevStatus?format=json
获取主机所有状态：GET /ISAPI/SecurityCP/status/host?format=json
24. 获取能力集(对应接口：NET_DVR_STDXMLConfig)： 命令： 设备系统总能力集：GET /ISAPI/System/capabilities
获取报警主机能力集：GET /ISAPI/SecurityCP/capabilities?format=json
获取报警主机配置能力：GET /ISAPI/SecurityCP/Configuration/capabilities?format=json
V5.3.6.15
build20180705 		中低端摆闸DS-K3B501 V1.0.0 1. ChannelControllerCfg(通道控制器配置)增加节点：alarmAreaNoAuth（报警区域是否禁止开门）、gateWingMaterial（门翼材质）、channelLength（通道长度）。
2. GateStatus(闸机状态)增加节点：gateCurrentStatus（闸门状态）。
3. NET_DVR_ACS_ALARM_INFO(门禁报警信息结构体)增加报警次类型：MINOR_STAY_EVENT（逗留事件）。
4. NET_DVR_ACS_EXTERNAL_DEV_CFG(门禁主机串口外设参数配置结构体)wDevDetailType新增取值：2-海康身份证阅读器。
5. GateDialAndInfo(闸机本地拨码及结构体)新增字段:remoteControllerMode（遥控器模式）。
6. NET_DVR_EVENT_LINKAGE_INFO(事件联动参数结构体)增加报警次类型：MINOR_STAY_EVENT（逗留事件）。
7. 门禁主机能力集(AcsAbility)扩展：
1) <EventLinkage>(事件及卡号联动能力)中<EventList>(事件列表)里面EventEntry的<SubEventNameList>(事件次类型列表)新增类型：StayEvent(逗留事件)。
V5.3.6.15
build20180705 		人证识别终端V1.1基线项目 1. 新增获取设备升级后建模失败的记录信息,对应接口：NET_DVR_StartRemoteConfig： 命令：NET_DVR_GET_FAILED_FACE_INFO
2. 新增批量校验人脸图片,对应接口：NET_DVR_StartRemoteConfig)：命令：NET_DVR_BULK_CHECK_FACE_PICTURE;以及 NET_DVR_SendRemoteConfig、NET_DVR_StopRemoteConfig
3. NET_DVR_ALARM_RS485CFG(报警主机RS485参数结构体)byMode扩展取值：3-连接门禁主机。
4. WiegandCfg(韦根配置)增加节点：enable（韦根参数使能，是否启用）。
5. IdentityTerminal (智能身份识别终端参数)增加节点：MCUVersion（MCU版本）、usbOutput（利旧身份证读卡器USB输出使能）、serialOutput（利旧身份证读卡器串口输出使能）、readInfoOfCard（CPU卡读取内容配置）。
6. NET_DVR_FACE_PARAM_STATUS(人脸参数下发状态信息结构体)byCardReaderRecvStatus扩展取值：10-图片数据长度小于1KB，11-图片格式不符（png/jpg/bmp）,12-图片像素数量超过上限，13-图片像素数量低于下限，14-图片信息校验失败，15-图片解码失败，16-人脸检测失败，17-人脸评分失败。
7. NET_DVR_ACS_WORK_STATUS_V50(门禁主机工作状态结构体)占用8个保留字节扩展参数dwAllowFaceNum（已添加的授权名单人脸数量（通过能力集判断））、dwBlockFaceNum（已添加的非授权名单人脸数量（通过能力集判断））。
8. NET_DVR_ACS_PARAM_TYPE(门禁主机参数结构体)dwParamType 扩展取值：0x00400000：ACS_PARAM_FAILED_FACE_INFO（升级设备人脸建模失败记录）。
9. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息结构体)报警取值扩展取值：MINOR_LOCAL_FACE_MODELING_FAIL（设备升级本地人脸建模失败）。
10. NET_DVR_CARD_READER_CFG_V50(读卡器参数配置结构体)占用9个保留字节扩展参数：dwFingerPrintCapacity（指纹容量）、dwFingerPrintNum（已存在指纹数量）、byEnableFingerPrintNum（指纹容量使能）、byEnableFingerPrintNum（指纹容量使能）。
11. 门禁能力集AcsAbility，对应接口：NET_DVR_GetDeviceAbility中， 节点：<AcsWorkStatus>（门禁工作状态）中新增：whiteFaceNum（支持已添加授权名单人脸数量参数）和blackFaceNum（支持已添加非授权名单人脸数量参数）；
<CardReaderCfg>（读卡器配置参数）中新增：envirMode（人脸抓拍环境模式）、liveDetLevelSet(活体检测阈值等级设置)、liveDetAntiAttackCntLimit（活体检测防攻击次数）、 enableLiveDetAntiAttack （活体检测防攻击使能）、fingerPrintCapacity （指纹容量）、fingerPrintNum （已存在指纹数量）、enableFingerPrintNum （指纹容量使能）；
<FaceParam>（人脸参数）中新增：isSupportFaceCover（人脸数据下发是否支持覆盖已有的数据）; 新增<FaceAndTemplateParam>和<FailedFaceInfoParam> 。
V5.3.5.40
build20180417 		可视对讲DS-KD9502-AF(P)人脸门口机 1. 新增透传参数配置(对应接口：NET_DVR_STDXMLConfig)：
1) 删除单个素材: DELETE /ISAPI/Publish/MaterialMgr/material/<ID>;
2) 删除多个素材: DELETE /ISAPI/Publish/MaterialMgr/material;
3) 获取素材参数配置: GET /ISAPI/Publish/MaterialMgr/material/<ID>;
4) 设置素材参数配置: PUT /ISAPI/Publish/MaterialMgr/material/<ID>;
5) 素材查找: POST /ISAPI/Publish/MaterialMgr/materialSearch;
6) 新建节目: POST /ISAPI/Publish/ProgramMgr/program;
7) 获取节目参数配置: GET /ISAPI/Publish/ProgramMgr/program/<ID>;
8) 设置节目参数配置: SET /ISAPI/Publish/ProgramMgr/program/<ID>;
9) 节目查找: POST /ISAPI/Publish/ProgramMgr/programSearch;
10) 新建页面: POST /ISAPI/Publish/ProgramMgr/program/<ID>/page;
11) 删除页面: DELETE /ISAPI/Publish/ProgramMgr/program/<ID>/page/<ID>;
12) 新建日程: POST /ISAPI/Publish/ScheduleMgr/playSchedule;
13) 获取日程参数: GET /ISAPI/Publish/ScheduleMgr/playSchedule/<ID>;
14) 设置日程参数: PUT /ISAPI/Publish/ScheduleMgr/playSchedule/<ID>;
15) 删除日程: DELETE /ISAPI/Publish/ScheduleMgr/playSchedule/<ID>;
16) 日程查找: POST /ISAPI/Publish/ScheduleMgr/scheduleSearch;
17) 获取人脸服务器配置: GET /ISAPI/VideoIntercom/FaceServerCfg;
18) 设置人脸服务器配置: PUT /ISAPI/VideoIntercom/FaceServerCfg;
19) 素材参数能力: GET /ISAPI/Publish/material/<ID>/capabilities;
20) 节目参数能力: GET /ISAPI/Publish/ProgramMgr/program/<ID>/capabilities;
21) 页面参数能力: GET /ISAPI/Publish/ProgramMgr/program/<ID>/page/<ID>/capabilities;
22) 日程参数能力: GET /ISAPI/Publish/ScheduleMgr/playSchedule/<ID>/capabilities;
23) 素材查找能力: GET /ISAPI/Publish/MaterialMgr/materialSearch/profile;
24) 节目查找能力: GET /ISAPI/Publish/ScheduleMgr/scheduleSearch/profile;
25) 日程查找能力: GET /ISAPI/Publish/ProgramMgr/program/<ID>;
26) 信息发布服务器能力: GET /ISAPI/Publish/capabilities;
27) 可视对讲能力: GET /ISAPI/VideoIntercom/capabilities;
2. NET_DVR_COMPRESSION_AUDIO(语音对讲音频压缩参数)扩展取值：9-G722；10-G723；11-G729
3. NET_DVR_VIDEO_INTERCOM_EVENT(可视对讲事件记录信息结构体中的联合体NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON新增认证记录结构体:NET_DVR_AUTH_INFO)
V5.3.5.40
build20180417 		DS-K1A802增加上一安云 1. NET_DVR_CARD_CFG_V50(卡参数配置结构体)扩展：
dwModifyParamType参数扩展取值：CARD_USER_TYPE（用户类型），使用1个保留字节新增参数：byUserType(用户类型)。
2. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility， 能力集类型：ACS_ABILITY)扩展， 新增：<sequenceNo>（设备支持的流水号数量）。
V5.3.5.30
build20180320 		热成像运动类设备 5.5.2 1. 扩展火点区域屏蔽能力(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES
2. NET_SDK_FIRESHIELDMASK_CFG(火点区域屏蔽配置)扩展：
使用2字节保留字节新增参数：byShieldAreaTransparency(屏蔽区域透明度)、byDisplayShieldAreaEnabled(码流叠加屏蔽区域使能)。
3. 扩展烟雾区域屏蔽能力(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES
4. NET_SDK_SMOKESHIELDMASK_CFG(烟雾区域屏蔽配置)扩展：
使用2字节保留字节新增参数：byShieldAreaTransparency(屏蔽区域透明度)、byDisplayShieldAreaEnabled(码流叠加屏蔽区域使能)。
5. FireDetection(热成像烟火检测配置能力)扩展：
新增字段：ApplicationScene(应用场景模式)、cancelRepeatedAlarmEnabled(取消重复报警使能)。
6. NET_DVR_FIREDETECTION_CFG(热成像烟火检测配置)扩展：
使用6字节保留字节新增参数：byCancelRepeatedAlarmEnabled(取消重复报警使能)、byApplicationSceneMode(应用场景模式)、dwInstallationHeight(安装高度)。
7. NET_VCA_RULE_ALARM(异常行为识别报警结构体)扩展：
使用5字节保留字节新增参数：byAppendInfoUploadEnabled(附加信息上传使能)、pAppendInfo(附加信息NET_VCA_APPEND_INFO的指针)。
8. 新增防灼伤配置(对应接口：NET_DVR_STDXMLConfig)：
1) 获取防灼伤配置能力集： GET /ISAPI/Thermal/channels/<ID>/burningPrevention/capabilities；
2) 获取防灼伤配置： GET /ISAPI/Thermal /channels/<id>/burningPrevention；
3) 设置防灼伤配置： SET /ISAPI/Thermal /channels/<id>/burningPrevention。
9. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)扩展：
1) 使用1字节保留字节新增参数：byBrightnessSuddenChangeSuppression(亮度突变抑制)。
10. NET_DVR_THERMOMETRY_DIFF_ALARM(温差检测报警)扩展：
1) 使用4字节保留字节新增参数：fToleranceTemperature(容差温度)。
2) 使用4字节保留字节新增参数：dwAlarmFilteringTime(温度报警等待时间)。
11. NET_DVR_THERMOMETRY_ALARM(温度检测报警)扩展：
1) 使用12字节保留参数新增参数：fToleranceTemperature(容差温度)、dwAlertFilteringTime(温度预警等待时间)、dwAlarmFilteringTime(温度报警等待时间)。
V5.3.5.35
build20180402_win32 		DS-TRI21A-1-P(国内标配),DS-TRI21A-1-PG(国内标配),DS-TRI21A-1-PWG(国内标配) DS-TRI21A-1-P(国内标配),DS-TRI21A-1-PG(国内标配),DS-TRI21A-1-PWG(国内标配),DS-TRI81A-1-P(国内标配),DS-TRI81A-1-PG(国内标配),DS-TRI81A-1-PWG(国内标配) DS-TRI81A-1-P(国内标配),DS-TRI81A-1-PG(国内标配),DS-TRI81A-1-PWG(国内标配) V1.0.0 1. 新增读写器接口参数配置：NET_DVR_STDXMLConfig：
1)新增读写器接口参数配置能力集: GET /ISAPI/Traffic/UHFRFIDReader/basicInformation/capabilities;
2)获取读写器基本参数: GET /ISAPI/Traffic/UHFRFIDReader/basicInformation;
3)设置读写器基本参数: PUT /ISAPI/Traffic/UHFRFIDReader/basicInformation;
4)获取获取盘存测试能力集: GET /ISAPI/Traffic/UHFRFIDReader/hardDiskStorageTest/capabilities;
5)设置读写器基本参数: GET /ISAPI/Traffic/UHFRFIDReader/hardDiskStorageTest。
2. 设备能力集DeviceCap： 新增节点:, RFID读写器支持能力。
3. 报警布防类型NET_DVR_SetDVRMessageCallBack_V31： 增加类型：COMM_TAG_INFO_ALARM-0x5215， 标签信息上传； 对应结构体：NET_DVR_TAG_INFO_ALARM。
V5.3.5.30
build20180320_win32 		超脑V4.1.10升级项目 1. 新增去误报统计模式配置功能接口：NET_DVR_STDXMLConfig：
获取去误报统计模式配置能力集：GET /ISAPI/Intelligent/misinfoFilter/statisticalMode/capabilities?format=json；
获取去误报统计模式配置：GET /ISAPI/Intelligent/misinfoFilter/statisticalMode?format=json；
设置去误报统计模式配置：PUT /ISAPI/Intelligent/misinfoFilter/statisticalMode?format=json。
V5.3.5.30
build20180320_win32 		【Mickey】超脑V4.1.10 iDS-96064NX-I16、iDS-96128NX-I24、iDS-9608NX-I8/FA 、iDS-9632NX-I8/FA(联网版)、iDS-9632NX-I8/S、iDS-9632NX-I8/S、iDS-8632NX-I8/S、iDS-8832NX-I8/S 1. 新增高频人员检测事件上传，对应接口：NET_DVR_SetDVRMessageCallBack_V50：
报警类型：COMM_HFPD_ALARM（高频人员检测报警）。
2. 新增高频人员检测布防时间和联动方式配置，对应接口：NET_DVR_GetSTDConfig和 NET_DVR_SetSTDConfig
对应命令：NET_DVR_GET_HFPD_TRIGGER（获取高频人员侦测联动配置）和NET_DVR_SET_HFPD_TRIGGER（设置高频人员侦测联动配置）。
3. 新增高频人员检测布防时间能力，对应接口：NET_DVR_GetSTDAbility 对应命令：NET_DVR_GET_HFPD_SCHEDULE_CAPABILITIES（获取高频人员侦测布防时间能力）。
4. 新增高频人员检测布防时间配置，对应接口：NET_DVR_GetSTDConfig和 NET_DVR_SetSTDConfig
对应命令：NET_DVR_GET_HFPD_SCHEDULE（获取高频人员侦测布防时间配置）和NET_DVR_SET_HFPD_SCHEDULE（设置高频人员侦测布防时间配置）。
5.新增日志协议：MAJOR_OPERATION中新增：MINOR_REMOTE_HFPD_CFG（远程高频人员检测配置）；MAJOR_ALARM中新增：MINOR_HFPD_ALARM_START（高频人员检测报警开始）、MINOR_HFPD_ALARM_STOP（高频人员检测报警结束）。 对应接口：NET_DVR_FindDVRLog_V30。
V5.3.5.30
build20180320_win32 		超脑V4.1.10升级项目 1. 新增图片1V1比对识别功能接口：NET_DVR_STDXMLConfig：
获取1v1比对能力集：GET /ISAPI/Intelligent/imagesComparision/face/capabilities?format=json；
设置1v1比对：POST /ISAPI/Intelligent/imagesComparision/face。
2. 新增人脸评分配置接口：NET_DVR_STDXMLConfig：
获取人脸评分配置能力集：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/faceScore/capabilities?format=json；
获取人脸评分配置：：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/faceScore；
设置人脸评分配置：PUT /ISAPI/Intelligent/channels/<ID>/faceContrast/faceScore。
3. 结构体NET_VCA_RULE_ALARM占用一个保留字节新增加byPicTransType（图片数据传输方式）。
4.新增加错误码：NET_DVR_NO_SUPPORT_WITH_PERSON_DENSITY_DETECT（已开启人员密度检测）、NET_DVR_IPC_RESOLUTION_OVERFLOW（IPC分辨率超限） 、NET_DVR_IPC_BITRATE_OVERFLOW（IPC码率超限）、NET_DVR_ERR_INVALID_TASKID（无效的taskID），对应接口：NET_DVR_GetLastError。
5.新增日志协议：MAJOR_OPERATION中新增：MINOR_REMOTE_CFG_FACE_CONTRAST（远程设置人脸比对配置）、MINOR_LOCAL_CFG_FACE_CONTRAST（本地设置人脸比对配置）、 MINOR_REMOTE_CFG_ALLOWLIST_FACE_CONTRAST（远程设置授权名单人脸比对配置）、MINOR_LOCAL_CFG_ALLOWLIST_FACE_CONTRAST（本地设置授权名单人脸比对配置）。对应接口：NET_DVR_FindDVRLog_V30。
V5.3.5.30
build20180320_win32 		NVR 4.1.50 集群功能 1. 新增集群相关功能接口：NET_DVR_STDXMLConfig：
获取设备工作模式：GET /ISAPI/ContentMgmt/Cluster/ClusterMode；
设置设备工作模式：PUT /ISAPI/ContentMgmt/Cluster/ClusterMode；
设置集群组网：PUT /ISAPI/ContentMgmt/Cluster/Creation；
创建集群设备配置：POST /ISAPI/ContentMgmt/Cluster/device；
获取集群设备配置：GET /ISAPI/ContentMgmt/Cluster/device；
删除集群设备配置：DELETE /ISAPI/ContentMgmt/Cluster/device/ID；
取集群内部状态：GET /ISAPI/ContentMgmt/Cluster/Status；
获取集群能力集：GET /ISAPI/ContentMgmt/Cluster/capabilities。
2. 接口NET_DVR_SetDVRMessageCallBack_V50中新增报警类型：COMM_CLUSTER_ALARM（集群异动报警）。
3. 新增查找图片接口：NET_DVR_FindNextPicture_V50。
4. 新增获取设备工作状态V50接口：NET_DVR_StartRemoteConfig和 NET_DVR_StopRemoteConfig。
5. 新增接口NET_DVR_GetPicture_V50(从图片查找集群中CS的地址)。
6. 新增设备升级接口：NET_DVR_Upgrade_V50。
7. 结构体NET_DVR_SINGLE_HD_V50新增加szHDLocateIP（磁盘所在IP信息）。
8.新增加异常消息：EXCEPTION_CLUSTER_CS_ARMFAILED（集群报警异常），对应接口：NET_DVR_Upgrade_V50。
9.新增加错误码：NET_DVR_ERR_CLUSTER_DEVICE_TOO_LESS（设备数少，不允许删除）、NET_DVR_ERR_CLUSTER_DEL_DEVICE_CM_PLAYLOAD（该设备是集群主机，不允许删除） 、NET_DVR_ERR_CLUSTER_DEVNUM_OVER_UPPER_LIMIT（设备数达到上限，不允许增加）、NET_DVR_ERR_CLUSTER_DEVICE_TYPE_INCONFORMITY（设备类型不一致）、NET_DVR_ERR_CLUSTER_DEVICE_VERSION_INCONFORMITY （设备版本不一致） 、NET_DVR_ERR_CLUSTER_IP_CONFLICT（集群系统IP地址冲突）、NET_DVR_ERR_CLUSTER_IP_INVALID（集群系统IP地址无效）、NET_DVR_ERR_CLUSTER_PORT_CONFLICT（集群系统端口冲突） 、NET_DVR_ERR_CLUSTER_PORT_INVALID（集群系统端口非法）、NET_DVR_ERR_CLUSTER_USERNAEM_OR_PASSWORD_INVALID（用户名或密码非法）、NET_DVR_ERR_CLUSTER_DEVICE_ALREADY_EXIST（存在相同设备） 、NET_DVR_ERR_CLUSTER_DEVICE_NOT_EXIST（设备不存在）、NET_DVR_ERR_CLUSTER_NON_CLUSTER_MODE（设备处于非集群模式）、NET_DVR_ERR_CLUSTER_IP_NOT_SAME_LAN（IP地址不在同一局域网），对应接口：NET_DVR_GetLastError。
10.新增日志协议：MAJOR_EXCEPTION中新增：MINOR_CLUSTER_DEVICE_OFFLINE（集群内设备下线）、MINOR_CLUSTER_CONFIG_FAILED（集群内设备配置失败） 、MINOR_CLUSTER_DISASTER_TOLERANCE_EXCEPT（集群容灾异常）、MINOR_CLUSTER_STORFULL_EXCEPTION（集群硬盘满）、MINOR_CLUSTER_VERSION_EXCEPTION （集群版本异常） 、MINOR_CLUSTER_OFFLINENODE_EXCEPTION（集群掉线数超限）、MINOR_CLUSTER_RECORDCYCLE_EXCEPTION（集群录像周期不足）、MINOR_CLUSTER_IPCTRANSFER_EXCEPTION（集群IPC迁移失败） 、MINOR_CLUSTER_IPCONFLICT_EXCEPTION（集群IP冲突）。MAJOR_OPERATION中新增：MINOR_REMOTE_CLUSTER_MODE_CONFIG（远程集群模式配置操作）、MINOR_LOCAL_CLUSTER_MODE_CONFIG（本地集群模式配置操作）、 MINOR_REMOTE_CLUSTER_NETWORK_CONFIG（远程集群组网配置操作）、MINOR_LOCAL_CLUSTER_NETWORK_CONFIG（本地集群组网配置操作）、MINOR_REMOTE_CLUSTER_ADD_DEVICE（远程集群添加设备操作）、 MINOR_LOCAL_CLUSTER_ADD_DEVICE（本地集群添加设备操作）、MINOR_REMOTE_CLUSTER_DEL_DEVICE（远程集群删除设备操作）、MINOR_LOCAL_CLUSTER_DEL_DEVICE（本地集群删除设备操作）。MAJOR_INFORMATION 新增： MINOR_CLUSTER_DEVICE_ONLINE（集群设备上线）、MINOR_CLUSTER_MGR_SERVICE_STARTUP（集群管理服务启动）、MINOR_CLUSTER_BUSINESS_TRANSFER（集群业务迁移）、MINOR_CLUSTER_STATUS（集群状态信息）、 MINOR_CLUSTER_CS_STATUS（集群CS向CM发送设备状态失败）、MINOR_CLUSTER_CM_STATUS（CM状态切换）。对应接口：NET_DVR_FindDVRLog_V30。
11.新增报警订阅接口：NET_DVR_SetupAlarmChan_V50。
12.新增报警订阅能力集(对应接口：NET_DVR_STDXMLConfig)：
命令: GET /ISAPI/Event/notification/subscribeEventCap。
13. 扩展设备系统能力集(DeviceCap，能力集类型：DeviceCap)
新增子节点：<isSupportSubscribeEvent>(报警订阅能力)。
14. 新增功能：UPLOAD_PICTURE_TO_CLOUD（开始上传图片到云存储池）,对应接口：NET_DVR_UploadFile_V40。
15. 新增查找图片接口：NET_DVR_FindNextPicture_V50。
V5.3.5.30
build20180320_win32 		NVR基线V4.1.50 项目
 1. 新增网络资源统计信息查询功能(对应接口：NET_DVR_STDXMLConfig)：
获取网络资源统计信息查询：GET /ISAPI/System/Network/resourceStatistics?format=json；
获取POE口配置：GET /ISAPI/System/Network/POE/server?format=json；
设置POE口配置：PUT /ISAPI/System/Network/POE/server?format=json；
获取带宽限制配置能力：GET /ISAPI/System/Network/bandwidthLimit/capabilities?format=json；
获取带宽限制配置：GET /ISAPI/System/Network/bandwidthLimit?format=json；
设置带宽限制配置：PUT /ISAPI/System/Network/bandwidthLimit?format=json；
2. 新增U盘调试日志开关功能(对应接口：NET_DVR_STDXMLConfig)：
获取U盘调试日志开关：GET /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json；
设置U盘调试日志开关：PUT /ISAPI/ContentMgmt/Storage/externalDevice/USB?format=json；
获取抓包过滤配置能力：GET /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage/capabilities?format=json；
获取抓包过滤配置：GET /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage?format=json；
设置抓包过滤配置：PUT /ISAPI/ContentMgmt/Storage/externalDevice/USB/capturePackage?format=json；
3.NET_DVR_USER_INFO_V51变量：byLocalRight扩展取值：byLocalRight(数组10: 本地预览);使用512个保留字节新增参数：dwLocalPreviewRight(本地预览权限通道)。
4.NET_DVR_IPDEVICE_ACTIVATE_CFG变量：bySelfDefinePassword扩展取值：2-是，且为IPC的自定义密码。
5.NET_DVR_FIND_PICTURE_PARAM变量：byRegion扩展取值：5-北美（North America），6-大洋洲（Oceania）。
6.NET_DVR_IPDEVINFO_V31使用1个保留字节新增参数：byEnableTiming(启用NVR对IPC自动校时)。
7.NET_DVR_FACE_DETECTION使用1个保留字节新增参数：byUploadEventDataType(图片数据长传方式)。
8.NET_DVR_VEHICLE_PARA扩展取值：sLicense(169-加拿大(Canada), 172-美国(US), 227-澳大利亚(Australia))。
9. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)新增， 节点<supportChoosePlaybackDrawframe>(选择性抽帧回放)，<isSupportGetFigure>(支持获取缩略图)，<isSupportGetThumbnails>(按时间段获取缩略图)。
10. 新增IPC激活密码配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取IPC激活密码配置：GET /ISAPI/Security/IPCActivatePasswd；
设置同步IPC激活密码为IPC密码：PUT ISAPI/ContentMgmt/InputProxy/syncIPCActivatePasswd；
设置IPC激活密码配置：PUT /ISAPI/Security/IPCActivatePasswd；
11. 新增“未登录”用户权限配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取“未登录”用户权限配置能力：GET /ISAPI/Security/UnloggedUserPermission/capabilities?format=json；
获取“未登录”用户权限配置：GET /ISAPI/Security/UnloggedUserPermission?format=json；
设置“未登录”用户权限配置：PUT /ISAPI/Security/UnloggedUserPermission?format=json；
12. 设备用户管理参数能力集(UserAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_USER_ABILITY)扩展，节点：<LocalPermission>扩展取值：preview(预览)。
13. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展：
1) <VehicleCond>(车辆检索条件)中<country >(国家和地区)新增取值：canada,us,australia(增加加拿大、美国、澳大利)。
2) <TimingCap >(定时抓图)中新增<delayTime >(抓图延时时间)。
V5.3.5.30
build20180320_win32 		Win32版本SDK基线项目(集成ISAPI协议) 1. 新增ISAPI协议登录、日志查找、录像查找、预览、回放、升级、参数配置透传、报警透传功能。
2. NET_DVR_USER_LOGIN_INFO(用户登录参数结构体)使用2个保留字节新增参数：byLoginMode(登录模式)、byHttps(Https使能)。
3. 新增ISAPI协议报警信息上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V50和NET_DVR_StartListen_V30)：
报警信息类型：COMM_ISAPI_ALARM。
4. 新增通过URL取流预览接口：NET_DVR_RealPlaySpecial。
5. 新增标准码流回调接口：NET_DVR_SetStandardDataCallBackEx。
6. NET_DVR_XML_CONFIG_INPUT(透传接口输入参数结构体)使用1个保留字节新增参数：byNumOfMultiPart(报文分段个数)。
该参数非零时lpInBuffer参数传入新增结构体NET_DVR_MIME_UNIT的指针。
7. 新增设备升级接口：NET_DVR_Upgrade_V50。
8. NET_DVR_UPGRADE_PARAM结构体(对应接口：NET_DVR_Upgrade_V50)中的dwUpgradeType参数新增枚举类型：ENUM_UPGRADE_INTELLIGENT(中心智能设备升级)。
V5.3.5.30
build20180320_win32 		NVR 4.1.50
 1. 新增SoftIO配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取SoftIO的能力：GET /ISAPI/System/IO/softInputs/capabilities?format=json；
获取所有的SoftIO的信息列表：GET /ISAPI/System/IO/softInputs?format=json；
获取单个SoftIO的信息配置：GET /ISAPI/System/IO/softInputs/<ID>?format=json；
设置单个SoftIO的信息配置：PUT /ISAPI/System/IO/softInputs/<ID>?format=json；
设置SoftIO触发配置：PUT /ISAPI/System/IO/softInputs/trigger?format=json；
2. 新增SoftIO布防时间和联动方式配置能力(对应接口：NET_DVR_GetSTDAbility)，对应命令：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES。
3. 新增SoftIO联动方式配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
对应命令：NET_DVR_GET_SOFTIO_TRIGGER和NET_DVR_SET_SOFTIO_TRIGGER。
4. 新增SoftIO布防时间能力配置(对应接口：NET_DVR_GetSTDAbility)，对应命令：NET_DVR_GET_SOFTIO_SCHEDULE_CAPABILITIES。
5. 新增SoftIO布防时间配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
对应命令：NET_DVR_GET_SOFTIO_SCHEDULE和NET_DVR_SET_SOFTIO_SCHEDULE。
V5.3.5.20
build20180201 		超脑ATM主机
 1. 扩展智能通道分析能力(DEVICE_ABILITY_INFO，能力集类型：VcaChanAbility）。
2. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：2146、2153。
V5.3.5.16
build20180129 		区域关注度摄像机
DS-2CD7127FWD/H-IZ V5.5.5 		1. 新增人员排队检测功能(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Intelligent/channels/<ID>/personQueueDetection/capabilities?format=json、
GET /ISAPI/Intelligent/channels/<ID>/personQueueDetection?format=json、
PUT /ISAPI/Intelligent/channels/<ID>/personQueueDetection?format=json、
POST /ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueCountingFile?format=json、
POST /ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueCountingResult?format=json、
POST /ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueTimeFile?format=json、
POST /ISAPI/Intelligent/channels/<ID>/personQueueDetection/queueTimeResult?format=json、
POST /ISAPI/Intelligent/channels/<ID>/personQueueDetection/rawDataFile?format=json。
2. 新增人员排队联动方式配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PERSONQUEUE_TRIGGER、NET_DVR_SET_PERSONQUEUE_TRIGGER。
3. 新增人员排队检测布防时间配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PERSONQUEUE_SCHEDULE、NET_DVR_SET_PERSONQUEUE_SCHEDULE。
4. 新增人员排队检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_PERSONQUEUE_SCHEDULE_CAPABILITIES。
5. 新增人员排队相关事件上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31，报警信息类型：COMM_VCA_ALARM)：
人员排队时长检测报警JSON数据、人员排队人数检测报警JSON数据。
6. NET_DVR_SETUPALARM_PARAM_V50和NET_DVR_SETUPALARM_PARAM(报警布防参数)中参数byBrokenNetHttp(断网续传类型)新增取值：bit5- JSON报警透传。
7. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)扩展，新增节点：<personqueuedetectiontriggercap>(人员排队检测)。
8. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，<SoftwareCapability>(软件能力)中新增子节点：<isSupportAlarmJSONBrokenNetHttp>(是否布防JSON透传报警断网续传功能)。
V5.3.5.10
build20180108 		录播主机 V3.5.0 1. NET_DVR_IPDEVINFO_V31(IP设备信息结构体)使用1个保留字节新增参数：byCameraType(通道接入的相机类型)。
2. NET_DVR_MIX_AUDIOIN_CFG(音频输入口混音参数配置结构体)使用24个保留字节新增参数：struDSPParameter(数字信号处理芯片参数)。
3. NET_DVR_MIX_AUDIOOUT_CFG(音频输出口混音参数配置结构体)使用6个保留字节新增参数：byOutputMute(输出静音使能)、iOutputGainEx(输出增益扩展)、bySoundQualityHanding(音质处理使能)。
4. NET_DVR_VOLUME_CFG(音量调节参数配置结构体)使用16个保留字节新增参数：wVolumeEx(音量大小扩展)。
5. NET_DVR_IMAGE_DIFF_DETECTION_CFG(图像差分检测参数结构体)使用1个保留字节新增参数：byVideoInputType(视频输入口类型)。
6. NET_DVR_RECORDING_PUBLISH_FILE_CFG(文件发布参数结构体)使用1个保留字节新增参数：byFileType(发布文件类型)。
7. 扩展图像差分检测配置能力集(ImageDiffDetectionCfg，对应接口：NET_DVR_GetSTDAbility，能力集类型：ImageDiffDetectionCfg)扩展：
新增子节点：<videoInputType>(视频输入口类型)
8. 扩展录播主机总能力集(RecordHostCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：RecordHostCap)扩展：
新增子节点：<ImageDiffDetectionCap>(图像差分检测)
9. 扩展文件发布能力集(PublishFile，对应接口：NET_DVR_GetSTDAbility，能力集类型：PublishFile)扩展：
新增子节点：<fileType>(发布文件类型)
10. 扩展录播主机能力集(RecordingHostAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：RecordingHostAbility)扩展：
<AudioInCap>新增子节点：<DSPParameter>(数字信号处理芯片参数)、<AudioInVlome>中<index>(音频输出通道索引)、<name>(音频输出通道名称)、<supportVolumeEx>(是否支持输出音量扩展)； <AudioOutCap>新增子节点：<MixAudioOut>中<outputMute>(输出静音)、<soundQualityHanding>(音质处理)、<supportOutputGainEx>(是否支持输出增益扩展)
V5.3.5.10
build20180108 		超脑安全帽佩戴检测NVR&NVS产品 V3.4.94 1. 安全帽检测配置能力集(SafetyHelmetDetectionCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection/capabilities)新增节点：<localStorage>(图片是否在本地存储)。
2. 安全帽检测配置(SafetyHelmetDetection，对应接口：NET_DVR_STDXMLConfig，命令：/ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection)新增节点：<localStorage>(图片是否在本地存储)。
3. 智能XML能力集(IntelliCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/capabilities)新增节点：<isSupportSafetyHelmetDetection>(是否支持安全帽检测)。
4. NET_DVR_SEARCH_EVENT_PARAM_V40(事件查询条件参数)和NET_DVR_SEARCH_EVENT_RET_V40(事件查询结果)，BEHAVIOR_MINOR_TYPE主类型对应的次类型新增取值：EVENT_SAFETY_HELMET。
5. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x2d-安全帽检测。
6. 设备通道输入能力集(ChannelInputAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展：
<EventSearchType>(支持的报警事件类型)中子节点<VcaBehavior>(异常行为识别事件)新增取值：safetyHelmet(安全帽检测)。
7. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展：
<FindPicInfo>(图片查找条件)中<supportFileType>(查找的图片类型)新增取值：vcaEventSafetyHelmet(安全帽检测)。
8. 新增错误码(对应接口：NET_DVR_GetLastError)：2143。
9. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：IDS_86XX_NX_IX_B。
10. 接口NET_DVR_FindNextLog_V30中结构体NET_DVR_LOG_V30的dwMinorType (日志次类型)扩展：
新增报警次类型：MINOR_SAFETY_HELMET_ALARM_START、MINOR_SAFETY_HELMET_ALARM_STOP；
新增异常次类型：MINOR_SAFETY_HELMET_EXCEPTION。
V5.3.5.10
build20180108_win32 		可视对讲1.5.0 DS_KH8302_A DS_KD8101_2 1. NET_DVR_PRIVILEGE_PASSWORD_CFG(权限密码配置结构体)扩展：
PRIVILEGE_PASSWORD_TYPE_ENUM扩展取值：ENUM_PRIVILEGE_PASSWORD_SENDCARD(发卡密码)。
2. NET_DVR_SIP_CFG_V50(SIP参数设置结构体)扩展：
新增参数：bySIPServerDomain(sip服务器域名)、stuSTUNServerIP(STUN服务器IP)、bySTUNServerDomain(STUN服务器域名)、wSTUNServerPort( STUN服务器端口)、stuProxyServerIP( 代理服务器IP)、byProxyServerDomain( 代理服务器域名)、wProxyServerPort（代理服务器端口）。
3. 扩展设备权限密码状态(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/VideoIntercom/PrivilegePasswordStatus。能力集类型：PrivilegePasswordStatus中新增sendCardConfigured节点。
4. 新增SIP参数V50NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig，对应命令：NET_DVR_GET_SIP_CFG_V50（获取SIP参数V50）和NET_DVR_SET_SIP_CFG_V50（设置SIP参数V50）。
5. 新增对讲协议切换配置NET_DVR_STDXMLConfig：
1) 获取对讲协议切换配置： GET /ISAPI/VideoIntercom/IntercomProtocolType；
2) 设置对讲协议切换配置： PUT /ISAPI/VideoIntercom/IntercomProtocolType。
6. NET_DVR_CALL_ROOM_CFG(按键呼叫住户配置结构体)扩展：
使用64字节保留字节新增参数：byCalledName(被叫用户名)。
7. NET_DVR_UNLOCK_RECORD_INFO(可视对讲开锁记录信息结构体)扩展：
使用6字节保留字节新增参数：nFloorNumber（楼层号）、wRoomNumber（房间号）、wLockID（锁类型）。
8. 新增结构体NET_DVR_SEND_CARD_INFO(发送卡信息结构体)。
9. NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON(可视对讲事件记录信息联合体)扩展：struSendCardInfo。
10. NET_DVR_VIDEO_INTERCOM_EVENT(可视对讲事件记录信息结构体)扩展，byEventType新增取值：5-非法卡刷卡事件，6-门口机发卡记录(需要启动门口机发卡功能，刷卡时才会上传该事件)。
11. 新增设备语言配置（门口机、室内机）NET_DVR_STDXMLConfig：
1) 获取设备语言配置（门口机、室内机）能力集： GET /ISAPI/System/DeviceLanguage/capabilities；
2) 获取设备语言配置（门口机、室内机）： GET /ISAPI/System/DeviceLanguage；
3) 设置设备语言配置（门口机、室内机）： PUT /ISAPI/System/DeviceLanguage。
12. NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION(设备编号参数联合体)中新增结构体参数：struAgainConfirmUnit(二次确认机)。
13. NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG(可视对讲设备编号配置结构体)中byUnitType扩展取值：6-二次确认机。
14. NET_DVR_ALARM_RS485CFG(报警主机RS485参数结构体)中byWorkMode扩展取值：4-门禁安全模块。
15. NET_DVR_CONTROL_GATEWAY(远程开锁控制参数结构体)中wLockID添加说明：（远程开门口机锁时，0-表示门口机本机控制器上接的锁、1-表示外接控制器上接的锁）。
16. 新增结构体NET_DVR_INDOOR_UNIT_RELATEDEV(室内机关联的网络设备)。
17. NET_DVR_OUTDOOR_UNIT_RELATEDEV(门口机/围墙机/别墅门口机关联网络设备参数结构体)占用32个保留字节新增参数byManageCenterID(管理中心ID)。
18. NET_DVR_AGAIN_RELATEDEV(二次确认机相关联的网络设备)占用144个保留字节新增参数struAgainAddr(管理中心ID)。
19. NET_DVR_AGAIN_RELATEDEV(二次确认机相关联的网络设备)占用144个保留字节新增参数struAgainAddr(管理中心ID)。
20. DETECTOR_TYPE(防区探测器类型)扩展取值：DOORBELL_SWITCH（门令开关）。
21. NET_DVR_VIDEO_INTERCOM_ALARM(可视对讲报警信息结构体)byAlarmType扩展取值：16-门禁安全模块防拆报警；占用两个保留字节新增参数wLockID（0-表示门口机本机控制器上接的锁、1-表示外接控制器上接的锁）（报警类型为5和6时有效）。
22. 新增发卡功能配置（门口机）NET_DVR_STDXMLConfig：
1) 获取设发卡功能配置（门口机）能力集： GET /ISAPI/VideoIntercom/SendCardCfg/capabilities；
2) 获取发卡功能配置（门口机）： GET /ISAPI/VideoIntercom/SendCardCfg；
3) 设置发卡功能配置（门口机）： PUT /ISAPI/VideoIntercom/SendCardCfg。
23. 获取可视对讲设备工作状态（门口机）(对应接口：NET_DVR_STDXMLConfig)：
获取可视对讲设备工作状态（门口机）： GET /ISAPI/VideoIntercom/WorkStatus。
24. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility， 能力集类型：ACS_ABILITY)扩展， 新增：<isSupportDeviceLanguageCfg>（设备多语言切换配置）、<isSupportIntercomProtocolChange>（设备VoIP协议切换配置）、<isSupportSendCardCfg>（门口机是否支持发卡功能配置）、 <isSupportSendCardCfg>（门口机是否支持发卡功能配置）、<isSupportGetDeployInfo>（是否支持布防信息获取）、<isSupportPrivilegePasswordStatus>（设备权限密码状态获取）、<isSupportWorkStatus>（是否支持设备状态获取） 、<isSupportAppCall>（是否支持主动呼叫）。
25. IP可视对讲主机能力集IpViewDevAbility扩展，新增能力节点：<isNotSupportSipServerIP>（反向能级）、<AgainDevice>（二次确认机）、manageCenterID 、calledName 。 pwdType扩展取值 (sendCard-发卡密码)。
对应接口：NET_DVR_GetDeviceAbility，能力类型：IP_VIEW_DEV_ABILITY
V5.3.3.5
build20171207 		审讯主机V3.5.1
 1. 新增体征仪相关功能(对应接口：NET_DVR_STDXMLConfig)：
体征仪能力集：GET /ISAPI/System/signInstrument/capabilities?format=json；
获取体征仪网络配置参数：GET /ISAPI/System/signInstrument/<ID>/network?format=json；
设置体征仪网络配置参数：PUT /ISAPI/System/signInstrument/<ID>/network?format=json；
体征仪网络配置能力集：GET /ISAPI/System/signInstrument/network/capabilities?format=json；
获取体征仪检测参数配置：GET /ISAPI/System/signInstrument/<ID>/detectParam?format=json；
设置体征仪检测参数配置：PUT /ISAPI/System/signInstrument/<ID>/detectParam?format=json；
体征仪检测参数能力集：GET /ISAPI/System/signInstrument/detectParam/capabilities?format=json；
获取体征仪波形叠加配置：GET /ISAPI/System/signInstrument/<ID>/waveform?format=json；
设置体征仪波形叠加配置：PUT /ISAPI/System/signInstrument/<ID>/waveform?format=json；
体征仪波形叠加配置能力集：GET /ISAPI/System/signInstrument/waveform/capabilities?format=json；
2. 扩展异常联动方式根据能力显示能力集(EventTriggersCap，能力集类型：EventTriggersCap)
新增子节点：<SignAbnormalTriggerCap>(体征异常)
3. 扩展设备系统能力集(DeviceCap，能力集类型：DeviceCap)
新增子节点：<isSupportSignInstrument>(体征仪能力)
4. 新增报警类型COMM_SIGN_ABNORMAL_ALARM：体征异常报警，对应的报警信息json数据结构体：EVENT_JSON
5. 新增体征异常报警联动方式配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SIGN_ABNORMAL_TRIGGER、NET_DVR_SET_SIGN_ABNORMAL_TRIGGER。
6. 接口NET_DVR_FindNextLog_V30中结构体NET_DVR_LOG_V30的dwMinorType (日志次类型)扩展：
新增报警次类型：MINOR_HEART_RATE_ABNORMAL_BEGIN、MINOR_HEART_RATE_ABNORMAL_END、MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN、MINOR_BLOOD_OXYGEN_ABNORMAL_END、MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN、MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END、MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN、MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END；
新增操作次类型：MINOR_LOCAL_MAKECALL、MINOR_LOCAL_REJECTCALL、MINOR_LOCAL_ANSWERCALL、MINOR_LOCAL_HANGUPCALL、MINOR_REMOTE_MAKECALL、MINOR_REMOTE_REJECTCALL、MINOR_REMOTE_ANSWERCALL、MINOR_REMOTE_HANGUPCALL。
V5.3.2.15
build20171122 		四目可调摄像机
 1. 新增红外灯控制配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
硬件能力集：GET /ISAPI/System/Hardware；
获取红外灯状态：GET /ISAPI/System/Hardware/irLightSwitch；
设置红外灯状态：PUT /ISAPI/System/Hardware/irLightSwitch；
红外灯高级参数能力集：GET /ISAPI/System/Hardware/irLightSwitch/advanced/capabilities；
获取红外灯高级参数：GET /ISAPI/System/Hardware/irLightSwitch/advanced；
设置红外灯高级参数：PUT /ISAPI/System/Hardware/irLightSwitch/advanced。
2. 新增Smart通道资源配置功能(对应接口：NET_DVR_STDXMLConfig)：
Smart总能力集：GET /ISAPI/Smart/capabilities；
通道资源能力集：GET /ISAPI/Smart/channelResource/capabilities；
获取：GET /ISAPI/Smart/channelResource；
设置：PUT /ISAPI/Smart/channelResource。
V5.3.2.15
build20171122 		无线报警主机 V1.1 1. 扩展报警主机设备能力集(SecurityCPCapabilities，对应接口：NET_DVR_STDXMLConfig，能力集类型：SecurityCPCapabilities)扩展：
1)新增子节点：<allowListPhoneNum>(授权名单个数)、<remoteControllerNum>(遥控器用户个数)、<relayNum>(触发器个数)、<allowListPhoneCfg>(是否支持批量配置授权名单)、<RemoteCtrllerListCfg>(是否支持批量遥控器配置)、<RelayListCfg>(是否支持批量触发器配置)。
2)<WirelessSCPCap>（无线报警主机设备能力集）新增子节点：<cellPhoneNum>(电话用户个数)、<repeaterModuleNum>(无线中继器模块个数)、<outputModuleNum>(无线输出模块个数)、<doorTimeReminderCfg>(是否支持探测器定时提醒配置)、<outputModuleCfg>(是否支持无线输出模块参数配置)、<repeaterModuleCfg>(是否支持无线中继器参数配置)、<externalDeviceSignal>(是否支持获取外接设备信号强度)、<phoneParamCfg>(是否支持获取电话号码配置)、<zoneArmDisarm>(是否支持单防区布撤防)、<autoDetectorRegister>(是否支持自动注册探测器)、<repeaterModuleCfg>(是否支持无线中继器参数配置)、<externalDeviceSignal>(是否支持获取外接设备信号强度)、<phoneParamCfg>(是否支持获取电话号码配置)、<zoneArmDisarm>(是否支持单防区布撤防)、<autoDetectorRegister>(是否支持自动注册探测器)、<soundVolumCfg>(是否支持扬声器音量调节)、<wirelessSirenCfg>(是否支持无线警号参数配置)。
2. 探测器定时提醒相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/detectorTimeReminder/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/detectorTimeReminder
设置：PUT /ISAPI/SecurityCP/BasicParam/detectorTimeReminder
3. DETECTOR_TYPE(防区探测器类型)新增：DISPLACEMENT_DETECTOR(位移探测器)、SINGLE_INFRARED_DETECTOR(单体门磁探测器)、SINGLE_ZONE_MODULE(无线单防区模块)、CURTAIN_INFRARED_DETECTOR(幕帘红外人体探测器)。
4. 扩展防区参数结构体：NET_DVR_ALARMIN_PARAM和NET_DVR_ALARMIN_PARAM_V50。
5. NET_DVR_EZVIZ_ACCESS_CFG(EZVIZ接入参数配置结构体)使用1个保留字节新增参数：byNetMode(网络模式)。
6. 新增无线中继器参数配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/repeaterCfg/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/repeaterCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/repeaterCfg
7. 无线输出模块参数配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/outputModule/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/outputModule
设置：PUT /ISAPI/SecurityCP/BasicParam/outputModule
8. 新增无线外接设备信号强度相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/externalDeviceSignal/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/externalDeviceSignal
9. NET_DVR_REMOTECONTROLLER_PERMISSION_CFG(遥控器用户参数配置结构体)使用1个保留字节新增参数：byEnableDel(删除遥控器用户)。
10. 新增电话参数配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/phoneParam/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/phoneParam
设置：PUT /ISAPI/SecurityCP/BasicParam/phoneParam
11. 探测器参数能力集(DetectorCfg)和配置XML(DetectorCfg)，对应接口：NET_DVR_STDXMLConfig，扩展新增节点：<detectorHeartBeatCycle>(心跳周期取值范围)。
12. 新增自动注册探测器(对应接口：NET_DVR_StartRemoteConfig、NET_DVR_StopRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_ALARMHOST_REGISTER_DETECTOR。
13. 新增自动注册探测器（手机端）相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/autoDetectorRegister/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/autoDetectorRegister
设置：PUT /ISAPI/SecurityCP/BasicParam/autoDetectorRegister
14. 扩展批量获取防区参数结构体：NET_DVR_SINGLE_ALARMIN_PARAM。
15. 新增授权名单批量配置（手机端）相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/allowListPhoneCfg/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/allowListPhoneCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/allowListPhoneCfg
16. 新增触发器批量配置（手机端）相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/relays/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/relays
设置：PUT /ISAPI/SecurityCP/BasicParam/relays
17. 新增遥控器批量配置（手机端）相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/UserConfig/RemoteControllerUsers/capabilities
获取：GET /ISAPI/SecurityCP/UserConfig/RemoteControllerUsers
设置：PUT /ISAPI/SecurityCP/UserConfig/RemoteControllerUsers
18. 报警主机能力集结构体(NET_DVR_ALARMHOST_ABILITY)中dwOverallEvent(全局事件)参数新增取值：bit8-WIFI通信故障、bit9-RF信号干扰故障。
19. 新增无线警号参数配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/wirelessSirenCfg/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/wirelessSirenCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/wirelessSirenCfg
20. 警号参数结构体(NET_DVR_SIREN_PARAM)中dwOverallEventJointSirenOn(全局事件联动警号输出开启)参数新增取值：bit8-WIFI通信故障、bit9-RF信号干扰故障。
21. 触发器参数结构体(NET_DVR_ALARMOUT_PARAM)中byModuleType(外接触发器类型)参数新增取值：9- 2路触发器。
22. 新增错误码(对应接口：NET_DVR_GetLastError)：1225~1229。
23. NET_DVR_ALARMHOST_SEARCH_LOG_PARAM中的wMinorType(报警主机日志次类型)扩展：
新增报警次类型：MINOR_WIRELESS_OUTPUT_MODULE_REMOVE、MINOR_ WIRELESS_OUTPUT _MODULE_RESET、MINOR_WIRELESS_REPEATER _MODULE_REMOVE、MINOR_WIRELESS_REPEATER_MODULE_RESET、MINOR_WIRELESS_SIREN _MODULE_REMOVE、MINOR_WIRELESS_SIREN_MODULE_RESET；
新增异常次类型：MINOR_ALARMHOST_WIRELESS_OUTPUT_LOSS、MINOR_ALARMHOST_WIRELESS_OUTPUT_RESTORE、MINOR_ALARMHOST_WIRELESS_REPEATER_LOSS、MINOR_ALARMHOST_WIRELESS_ REPEATER _RESTORE；
新增操作次类型：MINOR_ALARMHOST_WIRELESS_OUTPUT_ADD、MINOR_ALARMHOST_WIRELESS_OUTPUT_DEL、MINOR_ALARMHOST_WIRELESS_REPEATER_ADD、MINOR_ALARMHOST_WIRELESS_ REPEATER _DEL、MINOR_ALARMHOST_PHONELIST _CFG、MINOR_ALARMHOST_RF_SIGNAL_CHECK、MINOR_ALARMHOST_USB_UPGRADE、MINOR_ALARMHOST_DOOR_TIME_REMINDER_CFG、MINOR_ALARMHOST_WIRELESS_SIREN_ADD、MINOR_ALARMHOST_WIRELESS_SIREN_DEL。
24. 扩展网络报警主机能力集(DEVICE_ABILITY_INFO，对应接口：NET_DVR_GetDeviceAbility，能力集类型：AlarmHostAbility)扩展：
1)新增子节点：<timeOut>(超时时间)、<timeOutRange>(超时时间范围)、<isSupportDetectorSignalIntensity>(支持探测器信号强度返回)、<TimeOutMethod>(支持超时防区计时方式配置返回)、<AutoSearchDetector>(是否支持自动注册探测器)、 2) <detectorType>(探测器类型能力)新增取值：displacementDetector（位移探测器）、singleInfraredDetector（单体门磁探测器）、singleZoneModule（无线单防区模块）、acoustoopticAlarm（声光报警器）、curtainInfraredDetector（幕帘红外人体探测器）。
3) <TriggerConfig>(触发器参数配置能力)中<ModuleType>(触发类型)新增取值：2-wayTrigger 。
4) <supportOverallEvent>(支持的全局事件)新增取值：WifiFault（WIFI通信故障）、RFSignalFault（RF信号干扰故障）。
5) <overallEventTriggerSirenOn>(全局事件联动警号输出)新增取值：WifiFault（WIFI通信故障）、RFSignalFault（RF信号干扰故障）。
V5.3.2.10
20171108 		人形通道
V1.0 DS-K3BB2-D、DS-K3BB2G-D、DS-K3BA1-D、DS-K3BA4-D、DS-K3B601系列摆闸、DS-K3B601A系列闸机
 1. 新增上传权限控制器音频文件相关功能，对应接口：NET_DVR_UploadFile_V40、 NET_DVR_GetUploadState、NET_DVR_UploadClose：
对应命令：UPLOAD_RIGHT_CONTROLLER_AUDIO。
2. 新增下载权限控制器音频文件，对应接口：NET_DVR_StartDownload、 NET_DVR_GetDownloadState、NET_DVR_StopDownload
对应命令：NET_SDK_DOWNLOAD_RIGHT_CONTROLLER_AUDIO。
3. 新增权限控制器音频文件参数配置(对应接口：NET_DVR_STDXMLConfig)：
获取权限控制器音频文件能力集：GET /ISAPI/AccessControl/RightControllerAudio/capabilities；
获取权限控制器音频文件参数配置：GET /ISAPI/AccessControl/RightControllerAudio/<ID>；
设置权限控制器音频文件参数配置：PUT /ISAPI/AccessControl/RightControllerAudio/<ID>；
删除权限控制器音频文件参数配置：DELETE /ISAPI/AccessControl/RightControllerAudio/<ID>。
4. 新增通道控制器配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/ChannelControllerCfg/capabilities；
获取：GET /ISAPI/AccessControl/ChannelControllerCfg；
设置：PUT /ISAPI/AccessControl/ChannelControllerCfg。
5. 新增闸机本地拨码及信息获取功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/GateDialAndInfo/capabilities；
获取：GET /ISAPI/AccessControl/GateDialAndInfo。
6. 新增闸机状态获取功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/GateStatus/capabilities；
获取：GET /ISAPI/AccessControl/GateStatus。
7. 新增闸机红外状态获取功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/GateIRStatus/capabilities；
获取：GET /ISAPI/AccessControl/GateIRStatus。
8. 新增闸机相关器件状态获取功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/GateRelatedPartsStatus/capabilities；
获取：GET /ISAPI/AccessControl/GateRelatedPartsStatus。
9. 新增通道控制器报警联动配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/ChannelControllerAlarmLinkage/capabilities；
获取：GET /ISAPI/AccessControl/ChannelControllerAlarmLinkage；
设置：PUT /ISAPI/AccessControl/ChannelControllerAlarmLinkage。
10. 新增通道控制器报警输出配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/ChannelControllerAlarmOut/capabilities；
获取：GET /ISAPI/AccessControl/ChannelControllerAlarmOut?controllerType=Master&alarmOutNo=1；
设置：PUT /ISAPI/AccessControl/ChannelControllerAlarmOut?controllerType=Master&alarmOutNo=1。
11. 新增通道控制器报警输出控制功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/ChannelControllerAlarmOutControl/capabilities；
设置：PUT /ISAPI/AccessControl/ChannelControllerAlarmOutControl。
12. 结构体：NET_DVR_REMOTECONTROLLER_PERMISSION_CFG，使用两个保留字节：byAlwaysOpenRight（是否允许常开）、byOpeningDirection（开门方向 ）。
13. 结构体：NET_DVR_PERSON_STATISTICS_CFG，使用1个保留字节：byCountSignalStatisticalStandard（计数信号统计标准）。
14. 结构体：NET_DVR_GATE_TIME_CFG，使用1个保留字节：byIRTriggerTimeoutTime（红外触发超时时间）。
15. 结构体：NET_DVR_EVENT_LINKAGE_INFO，ACS_DEV_SUBEVENT_ENUM扩展:EVENT_ACS_MOTOR_SENSOR_EXCEPTION、EVENT_ACS_CAN_BUS_EXCEPTION、EVENT_ACS_CAN_BUS_RESUME、 EVENT_ACS_IR_EMITTER_EXCEPTION、EVENT_ACS_IR_EMITTER_RESUME、EVENT_ACS_LAMP_BOARD_COMM_EXCEPTION、EVENT_ACS_LAMP_BOARD_COMM_RESUME、EVENT_ACS_IR_ADAPTOR_BOARD_COMM_EXCEPTION、EVENT_ACS_IR_ADAPTOR_BOARD_COMM_RESUME、 、EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_RESUME、EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM、EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME。
16. 结构体：NET_DVR_EVENT_LINKAGE_INFO，ACS_DOOR_SUBEVENT_ENUM扩展：EVENT_ACS_TRAILING、EVENT_ACS_REVERSE_ACCESS、 EVENT_ACS_FORCE_ACCESS、EVENT_ACS_CLIMBING_OVER_GATE、EVENT_ACS_PASSING_TIMEOUT、EVENT_ACS_INTRUSION_ALARM、EVENT_ACS_FREE_GATE_PASS_NOT_AUTH、EVENT_ACS_DROP_ARM_BLOCK、EVENT_ACS_DROP_ARM_BLOCK_RESUME、EVENT_ACS_REMOTE_CONTROL_CLOSE_DOOR、 EVENT_ACS_REMOTE_CONTROL_OPEN_DOOR、EVENT_ACS_REMOTE_CONTROL_ALWAYS_OPEN_DOOR。
17. 结构体：NET_DVR_EVENT_CARD_LINKAGE_CFG_V51，使用两个保留字节:wAudioDisplayID（联动语音播放ID）、byAudioDisplayMode（联动语音播放模式）。
18. 结构体：NET_DVR_ACS_ALARM_INFO，扩展:MINOR_CHANNEL_CONTROLLER_DESMANTLE_ALARM、MINOR_CHANNEL_CONTROLLER_DESMANTLE_RESUME、MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM、MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME。 MINOR_MOTOR_SENSOR_EXCEPTION、MINOR_CAN_BUS_EXCEPTION、MINOR_CAN_BUS_RESUME、MINOR_GATE_TEMPERATURE_OVERRUN、MINOR_IR_EMITTER_EXCEPTION、MINOR_IR_EMITTER_RESUME、MINOR_LAMP_BOARD_COMM_EXCEPTION、MINOR_LAMP_BOARD_COMM_RESUME、MINOR_IR_ADAPTOR_COMM_EXCEPTION、MINOR_IR_ADAPTOR_COMM_RESUME。 MINOR_REMOTE_CONTROL_NOT_CODE_OPER_FAILED、MINOR_REMOTE_CONTROL_CLOSE_DOOR、MINOR_REMOTE_CONTROL_OPEN_DOOR、MINOR_REMOTE_CONTROL_ALWAYS_OPEN_DOOR。MINOR_TRAILING、MINOR_REVERSE_ACCESS、MINOR_FORCE_ACCESS、MINOR_CLIMBING_OVER_GATE、MINOR_PASSING_TIMEOUT、MINOR_INTRUSION_ALARM、 MINOR_FREE_GATE_PASS_NOT_AUTH、MINOR_DROP_ARM_BLOCK、MINOR_DROP_ARM_BLOCK_RESUME。
19. 结构体：NET_DVR_ACS_EVENT_INFO，使用四个保留字节:byChannelControllerID（通道控制器ID）、byChannelControllerLampID（通道控制器灯板ID）、byChannelControllerIRAdaptorID（通道控制器红外转接板ID） 、byChannelControllerIREmitterID（通道控制器红外对射ID）。
20. 结构体：NET_DVR_ACS_WORK_STATUS_V50，使用两个保留字节:byMasterChannelControllerStatus（主通道控制器在线状态）、bySlaveChannelControllerStatus（从通道控制器在线状态）。
21. 结构体：NET_DVR_ACS_EVENT_DETAIL，使用四个保留字节:byChannelControllerID（通道控制器ID）、byChannelControllerLampID（通道控制器灯板ID）、byChannelControllerIRAdaptorID（通道控制器红外转接板ID） 、byChannelControllerIREmitterID（通道控制器红外对射ID）。
22. 结构体：NET_DVR_ACS_EXTERNAL_DEV_CFG，扩展byACSDevType取值:10：人证设备。
23. 获取门禁主机总能力集(AccessControl，对应接口： NET_DVR_STDXMLConfig， 新增<isSupportRightControllerAudio>（权限控制器音频文件参数配置）和<isSupportChannelControllerCfg>（通道控制器配置）、 <isSupportGateDialAndInfo>（闸机本地拨码及信息获取）和<isSupportGateStatus>（闸机状态获取）、<isSupportGateIRStatus>（闸机红外状态获取）和<isSupportGateRelatedPartsStatus>（闸机相关器件状态获取）、 <isSupportChannelControllerAlarmLinkage>（通道控制器报警联动配置）和<isSupportChannelControllerAlarmOut>（通道控制器报警输出配置）、<isSupportChannelControllerAlarmLinkage>（通道控制器报警联动配置）和 <isSupportChannelControllerAlarmOutControl>（通道控制器报警输出控制）。
24. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展，节点<AcsWorkStatus >(门禁工作状态)新增：<masterChannelControllerStatus>(支持主通道控制器在线状态)、<slaveChannelControllerStatus>(支持从通道控制器在线状态)、<masterChannelControllerStatus>(支持主通道控制器在线状态)、<slaveChannelControllerStatus>(支持从通道控制器在线状态)。
节点<AcsUpgrade >(门禁工作状态)新增：<channelControllerUpgrade>(支持通道控制器升级)。
节点<EventLinkage >(门禁工作状态)新增：<audioDisplayMode >(联动语音播放模式)、<audioDisplayID >(联动语音播放ID)。
节点<SubEventNameList >(子事件名称列表)新增：<MotorSensorException >(电机或传感器异常)、<CanBusException >(CAN总线异常)、<CanBusException >(CAN总线异常)等。
节点<SubEventNameList >(子事件名称列表)新增：<Trailing >(尾随通行)、<ReverseAccess >(反向闯入)、<ForceAccess>(外力冲撞)等。
节点<ACSDevType>(门禁设备类型)新增取值：peopleAndIdCard(10：人证设备)。
节点<PersonStatisticsCfg>(人数统计配置)新增：countSignalStatisticalStandard(计数信号统计标准)。
节点<GateTimeCfg>(门禁事件配置)新增：IRTriggerTimeoutTime (红外触发超时时间)。
节点<GateTimeCfg>(门禁事件配置)新增：IRTriggerTimeoutTime (红外触发超时时间)。
新增：节点<UploadRightControllerAudio>（上传权限控制器音频文件）、节点<DownloadRightControllerAudio>（下载权限控制器音频文件）。
25. 扩展网络报警主机能力集(DEVICE_ABILITY_INFO，对应接口： NET_DVR_GetDeviceAbility，能力集类型：AlarmHostAbility)扩展：节点<RemoteController>(远程控制)新增：alwaysOpenRight(是否允许常开)、openingDirection（开门方向）。
26. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)扩展， 节点<NeedReboot>(需要重启)新增子节点：<ChannelControllerUpgradeReboot>(通道控制器升级是否需要重启)。
V5.3.2.5
build20171026 		大超脑NVR V4.1.02
iDS-96000NX-I16、
iDS-96000NX-I24 		1. 新增事件屏蔽区域配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取: GET /ISAPI/Intelligent/channels/<ID>/Shield/<ID>；
设置：PUT /ISAPI/Intelligent/channels/<ID>/Shield/<ID>。
2. NET_VCA_TRAVERSE_PLANE_DETECTION(越界侦测配置)、NET_VCA_FIELDDETECION(区域侦测配置)、NET_DVR_REGION_ENTRANCE_DETECTION(进入区域侦测配置)、NET_DVR_REGION_EXITING_DETECTION(离开区域侦测配置)分别使用1个保留字节新增参数：byEnableVehicleMisinfoFilter(是否启用车辆去误报)。
3. 进入区域侦测能力集(RegionEntrance，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES)扩展，新增节点：<isSupportVehicleMisinfoFilter>(是否支持车辆去误报)。
4. 离开区域侦测能力集(RegionExiting，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_REGION_EXITINT_CAPABILITIES)扩展，新增节点：<isSupportVehicleMisinfoFilter>(是否支持车辆去误报)。
5. 通道支持事件能力集(ChannelEventCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Event/channels/<ID>/capabilities)扩展，新增节点：<shieldEventType>(设备通道不同事件支持的屏蔽区域能力)。
6. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<Behavior>(异常行为识别能力)中穿越警戒面、进入区域、离开区域、周界入侵、徘徊、物品放置拿取能力集中节点<EventType>(事件类型)新增子节点：<isSupportVehicleMisinfoFilter>(车辆去误报)。
7. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<TraversingVirtualPlane>(越界侦测能力)和<FieldDetection>(区域入侵侦测能力)分别新增节点：<isSupportVehicleMisinfoFilter>(是否支持车辆去误报)。
8. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：871~873、875~879、2119~2124。
V5.3.1.45
build20171011 		CVR V2.3.4 1. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/System/capabilities)扩展，新增节点：<isSupportTokenAuthenticate>(是否支持token认证)。
2. 新增token密钥功能(对应接口:NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/System/Token/secretKey/capabilities；
设置token密钥：POST /ISAPI/System/Token/secretKey；
设置token校验：POST /ISAPI/System/Token/check。
3. 新增查询录像存在信息功能(对应接口:NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/record/existInformation/capabilities；
获取所有：GET /ISAPI/ContentMgmt/record/existInformation；
按流ID获取：GET /ISAPI/ContentMgmt/record/existInformation/StreamID/ID。
4. 新增存档任务配置功能(对应接口:NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/ArchivingVolume/task/capabilities；
添加存档任务：POST /ISAPI/ContentMgmt/ArchivingVolume/task；
存档任务控制：PUT /ISAPI/ContentMgmt/ArchivingVolume/task。
5. NET_DVR_DIGITAL_CHANNEL_STATE(设备数字通道状态)中的数字通道状态，新增取值：NET_SDK_DC_STATUS_TOKEN_AUTHENTCATE_FAILED(token认证失败)。
6. NET_DVR_STREAM_RECORD_STATUS(流录像状态信息)中参数byRecord(录像状态)新增取值：12-token认证失败。
7. NET_DVR_CHANS_RECORD_STATUS(通道录像状态信息)中参数byRecord(录像状态)新增取值：12-token认证失败。
8. NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA(外部命令触发录像参数)使用6个保留字节新增参数：dwLockDuration(锁定持续时间)、byBackUp(是否存档)、byPreRecord(是否预录)。
9. NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO(单个硬盘卷信息)中参数byType(硬盘卷类型)新增取值：3-图片卷(只用于存储客户端上传的图片)。
10. NET_DVR_SEARCH_EVENT_PARAM_V40(按事件搜索的条件参数)扩展：
1) 使用1个保留字节新增参数：byQuickSearchbyType(是否启用快速查询)。
2) struStreamIDParam(流ID参数 )使用64个保留字节新增参数：byArchiveLabel(存档标签)。
11. NET_DVR_SEARCH_EVENT_RET_V40(按事件搜索结果)扩展，struStreamIDRet(流ID参数)中dwRecordType(录像类型)新增取值：24-录像拼接存档。
12. 存储总能力集(RacmCap，对应接口：NET_DVR_GetSTDAbility，能力类型：NET_DVR_GET_RACM_CAP)扩展，新增节点<isSupportGetRecordExistInfo>(支持获取录像存在信息)、<isSupportArchiveVolumeTask>(支持存档卷任务配置)。
13. 录像相关能力能力集(RecordAbility，对应接口：NET_DVR_GetSTDAbility，对应命令：DEVICE_ABILITY_INFO)扩展，新增节点：<CMDRecordParameter>(命令触发录像参数)。
14. 设备通道输入能力集(ChannelInputAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<VCAFindFile>新增子节点：<supportQuickSearch>(是否支持快速检索)、<supportArchivedVolumeLabelSearch>(是否支持按存档卷检索)。
V5.3.1.45
build20171011 		人脸抓拍门禁一体机 V1.0
DS-K1T600X系列
三角形人脸抓拍一体机
DS-K1T605E、DS-K1T605M、
DS-K1T600M-L、DS-K1T600MF-L、
DS-K1T605MF-B、DS-K1T605MFR、
DS-K1T605MF、DS-K1T605EF、
DS-K1T605S、DS-K1T605SF
三角形人证智能终端
DS-K5605U、DS-K5605、
DS-K5605-G、DS-K5605F、
DS-K5605F-G 		1. NET_DVR_CARD_READER_CFG_V50，使用两个保留字节新增参数：byFaceMatch1SecurityLevel(人脸1:1识别安全等级)、 byFaceMatchNSecurityLevel（人脸1:N识别安全等级）。
2. NET_DVR_FACE_PARAM_COND，使用一个保留字节新增参数：byFaceDataType(人脸数据类型)。
3. NET_DVR_StartDownload接口中dwDownloadType(下载文件类型)扩展：NET_SDK_DOWNLOAD_CERTIFICATE_BLOCKLIST_TEMPLET(下载身份证非授权名单模板)。
4. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展，节点<CardReaderCfg>(读卡器配置)新增：<faceMatch1SecurityLevel>(人脸1:1识别安全等级)、<faceMatchNSecurityLevel>(人脸1:N识别安全等级)。
5. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)扩展，节点<NeedReboot>(需要重启)新增子节点：<TerminalModeReboot>(智能身份识别设备切换终端模式是否需要重启)。
V5.3.1.45
build20171011 		台式嵌入式人证设备V1.0
DS_K5603X系列
DS-K5603F-D、DS-K5603F、
DS-K5603、DS-K5603M、
DS-K5603U、DS-K5603-W、
DS-K5603F-DW、DS-K5603-Z、
DS-K5603F-H 		1. 获取智能身份识别终端参数能力集IdentityTerminal对应接口NET_DVR_STDXMLConfig， <idCardReader>节点中新增：DS-K1F1110-B、DS-K1F1110-AB；新增<memoryLearning>（记忆学习功能使能）和<saveCertifiedImage>（保存认证图片使能）。
2. 新增批量上传非授权名单图片NET_DVR_StartRemoteConfig，命令：NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE（批量上传非授权名单图片）； NET_DVR_SendRemoteConfig、NET_DVR_StopRemoteConfig 。
3. 新增批量上传身份证非授权名单NET_DVR_StartRemoteConfig，命令：NET_DVR_BULK_UPLOAD_ID_BLOCKLIST（批量上传身份证非授权名单）； NET_DVR_SendRemoteConfig、NET_DVR_StopRemoteConfig 。
4. 新增人脸比对约束条件参数配置NET_DVR_STDXMLConfig， 命令：能力集：GET /ISAPI/AccessControl/FaceCompareCond/capabilities
获取：GET /ISAPI/AccessControl/FaceCompareCond
设置：PUT /ISAPI/AccessControl/FaceCompareCond。
5. NET_DVR_ACS_PARAM_TYPE(门禁主机参数结构体)dwParamType (参数类型)新增取值：ACS_PARAM_BLOCKLIST_PICTURE-非授权名单图片参数， ACS_PARAM_ID_BLOCKLIST-身份证非授权名单参数。
6. 抓拍分辨率(包括联动抓拍和手动抓拍)扩展：
1) SnapConfig中节点<pictureSize>新增取值： 180-180*240、181-360*480、182-540*720、183-720*960、184-960*1280、185-1080*1440。
2) NET_DVR_JPEGPARA(JPEG图像信息)中wPicSize(图片尺寸)新增取值： 180-180*240、181-360*480、182-540*720、183-720*960、184-960*1280、185-1080*1440。
7. 获取门禁主机总能力集(AccessControl，对应接口： NET_DVR_STDXMLConfig， 新增<isSupportSupplementLight>（补光灯配置）和<isSupportFaceCompareCond>（人脸比对约束条件参数配置）。
8. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)， 节点<AcsUpgrade>（ACS升级）新增：extensionModuleUpgrade(支持扩展模块升级)、<clearAcsParam>（支持的清空参数的选项）新增：blockListPicture、IDBlockList；<JpegParam>中picSize 新增：180-180*240、181-360*480、182-540*720、183-720*960、184-960*1280、185-1080*1440；新增<BlockListPictureParam>（非授权名单图片参数）和<IDBlockListParam>（身份非授权名单参数）。
9. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)， 节点<NeedReboot>（需要重启）新增：ExtensionModuleUpgradeReboot(扩展模块升级是否需要重启)。
V5.3.1.45
build20171011 		交通球机枪球
V5.5.12&V5.5.3
iDS-2VC235、iDS-2VS235、
iDS-2VT221、iDS-2VT221、
iDS-2JXF681、iDS-2JXV681、
iDS-2JUF879等系列 		1. 交通事件报警上传功能扩展：
1) NET_DVR_AID_ALARM_V41(交通事件报警信息)使用8个保留字节新增参数：dwXmlLen(XML报警信息长度)、pXmlBuf(XML报警信息指针)。
2) NET_DVR_AID_INFO(交通事件信息)使用1个保留字节新增参数：byVehicleEnterState(车辆出入状态)。
2. NET_DVR_TFS_ALARM(违章取证报警信息)使用3个保留字节新增参数：wCountry(国家和地区索引值)、byRegion(区域索引值)。
3. TRAFFIC_AID_TYPE(交通事件枚举类型)新增取值：ROADBLOCK(路障)、CONSTRUCTION(施工)、TRAFFIC_ACCIDENT(交通事故检测)、PARALLEL_PARKING(侧方位停车检测)。
4. VCA_PLATE_TYPE(车牌类型枚举类型)新增取值：NEW_ENERGY_PLATE(新能源车牌)。
V5.3.1.45
build20171011 		热成像双光谱筒机 V5.4.12 1. NET_DVR_DEVSERVER_CFG(模块服务配置)使用4个保留字节新增参数： byEnableVisibleMovementPower(可见光机芯电源开关)、byEnableThermalMovementPower(热成像机芯电源开关)、byEnablePtzPower(云台电源开关)、byPowerSavingControl(低功耗策略)。
2. 热成像画中画配置扩展：
1) NET_DVR_THERMAL_PIP(热成像画中画配置)中参数byPipMode(画中画模式)新增取值：2-普通模式。
2) 热成像画中画能力集(ThermalPip，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_PIP_CAPABILITIES)中节点<pipMode>(画中画模式)新增取值：normal(普通模式)。
3. 智能互斥配置扩展：
1) NET_DVR_THERMINTELL_PARAM(智能互斥配置)中参数byIntellType(智能功能资源配置类型)新增取值：5-测温+烟火检测、6-测温+火点检测。
2) 智能互斥配置能力集(ThermIntell，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMINTELL_CAPABILITIES)中节点<intellType>(智能功能资源配置类型)新增取值：thermometryAndSmokeFireDetection(测温+烟火检测)、thermometryAndFireDetection(测温+火点检测)。
4. 通道属性信息(ChannelInfo，对应接口：NET_DVR_STDXMLConfig)中<Thermal>(热成像通道能力)新增节点：<Metadata>(支持Metadata提取)。
5. 前端参数配置功能扩展：
1) NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)中byCaptureModeN、byCaptureModeP(视频输入模式)新增取值：158-384*288@8.3fps、159-640*512@8.3fps、160-160*120@8.3fps、161-1024*768@8.3fps、162-640*480@8.3fps。
2) 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)中节点<captureModePWithIndex>和<captureModeNWithIndex>(视频输入模式)增加取值：158-384*288@8.3fps、159-640*512@8.3fps、160-160*120@8.3fps、161-1024*768@8.3fps、162-640*480@8.3fps。
6. 压缩参数配置功能扩展：
1) NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中dwVideoFrameRate(视频帧率)新增取值：33-8.3。
2) 设备所有编码能力集(AudioVideoCompressInfo，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ENCODE_ALL_ABILITY_V20)中个分辨率对应的子节点<VideoFrameRate>和<VideoFrameRateN>(帧率)新增取值：33-8.3。
7. NET_SDK_FIRESHIELDMASK_CFG(火点屏蔽区域配置)和NET_SDK_SMOKESHIELDMASK_CFG(烟雾区域屏蔽配置)分别使用1个保留字节新增参数：byShieldAreaTransparency(屏蔽区域透明度)。
V5.3.1.45
build20171011 		小超脑NVR V4.1.00
iDS-9632NX-I8/FA 		1. 新增人脸比对人员标签信息扩展配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取：GET /ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<ID>；
设置：PUT /ISAPI/Intelligent/faceContrast/personInfoExtend/FDID/<ID>。
2. 新增人脸比对结果打包导出功能(对应接口：NET_DVR_STDXMLConfig)：
全部通道：POST /ISAPI/Intelligent/FDLib/FCSearch/dataPackage；
指定通道：POST /ISAPI/Intelligent/FDLib/FCSearch/channels/<ID>/dataPackage。
3. 新增人脸抓拍布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_FACESNAP_SCHEDULE_CAPABILITIES。
4. 新增人脸抓拍布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FACESNAP_TRIGGER、NET_DVR_SET_FACESNAP_TRIGGER。
5. 新增人脸抓拍联动配置功能(对应接口：对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FACESNAP_TRIGGER、NET_DVR_SET_FACESNAP_TRIGGER。
6. 人脸比对库能力集(FDLibCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/FDLib/capabilities)扩展：
1) 新增节点：<isSupportFCSearchDataPackage>(是否支持人脸检索结果打包)、<maxFCSearchDataPackageNum>(最大支持人脸检索结果打包数目)、<isSupportNewlyPictureUpload>(是否支持导入图片到人脸库)、<isSupportFCSearchNormal>(是否支持人脸数据全部检索)、<FDLibEachImportCap>(人脸库相互导入能力)。
2) <FaceAppendData>(图片附加信息)中子节点<certificateType>(证件类型)新增取值：passportID-护照、other-其他。
3) <FDSearchDescription>(人脸库图片查询)新增子节点：<modelingStatus>(建模状态)。
4) <FCSearchDescription>(人脸比对抓拍结果查询)新增取值：<PictureSearchCap>(支持按图片ID检索能力)、<isSupportMultiChannelSearch>(是否支持多通道检索)、<isSupportTotalSearchResult>(是否支持设备单次检索条数限制)。
5) <FDLibType>(人脸比对类型)新增取值： allowListFaceContrast-授权名单人脸比对(陌生人模式)。
7. 人脸比对配置能力集(FaceContrastCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/capabilities)扩展，新增节点：<contrastFailureAlarmUpload>(人脸比对失败报警上传)、<alarmOutType>(报警输出脉冲使能)、<plusesTime>(报警输出持续时间)。
8. 人脸比对配置(FaceContrastList，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast)扩展，新增节点：<contrastFailureAlarmUpload>(人脸比对失败报警上传使能)、<alarmOutType>(报警输出脉冲使能)、<plusesTime>(报警输出持续时间)。
9. 人脸比对库图片数据附加信息(FaceAppendData，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>)扩展，<certificateType>(证件类型)新增取值：passportID-护照、other-其他。
10. 获取文件上传的进度和状态接口NET_DVR_GetUploadState新增返回值：29-图片未识别到目标。
11. 人脸库图片检索条件(FDSearchDescription，对应接口：NET_DVR_STDXMLConfig)扩展，<certificateType>(证件类型)新增取值：passportID-护照、other-其他。
12. 抓拍报警库人脸检索条件(FCSearchDescription，对应接口：NET_DVR_STDXMLConfig)扩展：
1) 新增节点：<PictureInfoList>(按图片ID检索)、<ChannelList>(查询通道列表)、<ChannelList>(单次搜索总数)。
2) <eventType>(事件类型)新增取值：whiteFaceContrast-授权名单人脸比对(即陌生人报警)。
13. 抓拍报警库人脸检索结果(FCSearchResult，对应接口：NET_DVR_STDXMLConfig)扩展：
1) <MatchElement>(单个人脸匹配信息)中新增子节点：<sex>(性别)、<ageGroup>(年龄段)。
2) <certificateType>(证件类型)新增取值：passportID-护照、other-其他。
14. 人脸比对结果上传信息扩展：
1) NET_VCA_FACESNAP_INFO_ALARM(人脸抓拍信息)使用1个保留字节新增参数：byAgeGroup(年龄段)。
2) NET_VCA_HUMAN_ATTRIBUTE(人员信息)扩展，byCertificateType(证件类型)新增取值：3-护照、4-其他，使用1个保留字节新增参数：byAgeGroup(年龄段)。
15. 人体属性检索功能扩展(对应接口：NET_DVR_STDXMLConfig)：
1) HumanRecognitionSearchDescription(检索条件)中新增节点：<ChannelList>(查询通道列表)、<totalSearchResults>(单次搜索总数)。
2) HumanRecognitionSearchDescription(检索结果)中<HumanMode>(人体属性检索匹配数据)新增子节点：<channelID>(通道号)。
16. 车辆属性检索功能扩展(对应接口：NET_DVR_STDXMLConfig)：
1) VehicleRecognitionSearchDescription(检索条件)中新增节点：<ChannelList>(查询通道列表)、<totalSearchResults>(单次搜索总数)。
2) VehicleRecognitionSearchResult(检索结果)中<VehicleMode>(车辆属性检索匹配数据)新增子节点：<channelID>(通道号)。
17. 智能XML能力集(IntelliCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/capabilities)扩展：
1) 新增节点：<isSupportUploadFacePictureByForm>(人脸图片上传支持表单方式导入)、<isSupportUploadHumanPictureByForm>(人体图片上传支持表单方式导入)。
2) <HumanRecognitionModeSearchCap>(人体检索能力集)和<VehicleRecognitionModeSearchCap>(车辆检索能力集)分别新增子节点：<isSupportMultiChannelSearch>(是否支持多通道检索)、<isSupportTotalSearchResult>(是否支持设备单次检索条数限制)。
18. 新增Smart分析单元切换配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Smart/analysisUnitSwitch/channels/<ID>/capabilities；
获取：GET /ISAPI/Smart/analysisUnitSwitch/channels/<ID>；
设置：PUT /ISAPI/Smart/analysisUnitSwitch/channels/<ID>。
19. Smart能力集(SmartCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMART_CAPABILITIES)新增节点：<isSupportAnalysisUnitSwitch>(分析单元切换能力)。
20. 新增通道支持事件能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Event/channels/<ID>/capabilities。
21. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/System/capabilities)扩展，新增节点：<isSupportChannelEventCap>(是否支持按通道获取事件能力)。
22. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：2116、2117、2118。
23. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)的dwMinorType日志次类型扩展：
1) 新增操作日志次类型：MINOR_LOCAL_FACE_BASE_IMPORT(本地导入人脸库)、MINOR_LOCAL_FACE_BASE_EXPORT(本地导出人脸库)。
2) 新增报警日志次类型：MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_START(陌生人报警开始)、MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_STOP(陌生人报警结束)。
3) 新增异常日志次类型：MINOR_FACESNAP_RESOLUTION_OVERFLOW(人脸抓拍码流分辨率超限)、MINOR_SMD_RESOLUTION_OVERFLOW(SMD码流分辨率超限)。
24. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：IDS_96XX_NX_FA(人脸超脑智能NVR)。
V5.3.1.40
build20170921 		超脑系列安全帽佩戴检测NVS V3.4.93 1. 事件触发能力集(EventTriggerCap，对应接口：NET_DVR_GetSTDAbility)扩展，新增节点：<SafetyHelmetDetectionTriggerCap>(安全帽检测)。
2. 新增安全帽检测联动方式配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)
对应命令：NET_DVR_GET_SAFETY_HELMET_TRIGGER、NET_DVR_SET_SAFETY_HELMET_TRIGGER。
3. 新增安全帽检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility)
能力集类型：NET_DVR_GET_SAFETY_HELMET_SCHEDULE_CAPABILITIES。
4. 新增安全帽检测布防时间配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)
对应命令：NET_DVR_GET_SAFETY_HELMET_SCHEDULE、NET_DVR_SET_SAFETY_HELMET_SCHEDULE。
5. 新增安全帽检测配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection/capabilities
获取：GET /ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection
设置：PUT /ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection
6. 新增安全帽检测高级参数配置相关功能(对应接口：NET_DVR_STDXMLConfig)：
获取：GET /ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection/advanceConfiguration
设置：PUT /ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection/advanceConfiguration
7. 新增安全帽检测报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31，报警信息类型：COMM_VCA_ALARM)：
"recognitionType": "safetyHelmet"且"recognition": "safetyHelmet"。
8. 智能库版本参数结构体(NET_DVR_VCA_VERSION)中byType(算法库类型名称)参数新增取值：10- 安全帽检测。
9. VCA_CHAN_ABILITY_TYPE(智能通道能力类型)新增枚举类型：VCA_SAFETY_HELMET_DETECTION(安全帽检测)。
10. NET_VCA_DEV_ABILITY(智能设备能力集结构体)使用1个保留字节新增参数：bySafetyHelmetDetection(安全帽检测通道个数)。
11. 扩展网络能力集(NetworkCap，对应接口：NET_DVR_GetSTDAbility)新增节点：<verificationCode>(验证码)、<VerificationCodeModification>(验证码修改)。
12. 新增错误码(对应接口：NET_DVR_GetLastError)：2125、2126。
13. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：IDS_67XX_NX_B。
V5.3.1.35
build20170911 		人脸比对相机
DS-2CD8426FWD/F-I
V5.4.61 		1. NET_VCA_FACESNAP_RESULT(人脸抓拍结果)和NET_VCA_FACESNAP_MATCH_ALARM(人脸抓拍结果)分别使用1个保留字节新增参数： byBrokenNetHttp(断网续传标志位)。
2. NET_DVR_SETUPALARM_PARAM(报警布防参数)中参数byBrokenNetHttp(断网续传类型)新增取值：bit3-人脸抓拍、bit4-人脸对比。
3. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility)扩展，<Face>(人脸能力集)中<FaceSnap>(人脸抓拍能力)新增子节点：<brokenNetHttp>(是否支持断网续传)。
4. 人脸比对配置能力集(FaceContrastCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/capabilities)扩展，新增节点：<brokenNetHttp>(是否支持断网续传)。
V5.3.1.35
build20170911 		录播主机V2.2.2 1. NET_DVR_PREVIEW_SWITCH_COND(设备本地预览输出参数配置条件结构体)使用2个保留字节新增参数： byGetDefaultPreviewSet(是否获取预设)、byPreviewNumber(预览数目)。
2. NET_DVR_VOD_PARA(录像回放结构体)使用1个保留字节新增参数：byCourseFile(课程文件)。
3. NET_DVR_PLAYCOND(回放或者下载条件)使用1个保留字节新增参数：byCourseFile(课程文件)。
4. NET_DVR_AUTO_TRACK_CFG(SDI自动跟踪配置结构体)中byCameraType(通道接入的相机类型)新增取值：6-教师定位，7-学生定位，8-板书定位，9-板书相机。
5. NET_VCA_LECTURE(授课参数)扩展，使用一个保留字节新增参数：byTrackStatus(跟踪状态)。
6. NET_VCA_ANSWER(回答问题参数)扩展，使用一个保留字节新增参数：byAnswerStudent(回调问题学生类型)，byZoomOver(变倍到位)新增取值：1-变倍到位。
7. NET_DVR_PPT_DETECT_CFG(PPT检测参数配置结构体)，使用4个保留字节新增参数：dwChangePixelNum(像素点检测阈值)。
8. VCA_RULE_EVENT_TYPE_EX(异常行为识别事件类型)新增枚举类型：ENUM_VCA_EVENT_ BLACKBOARD_WRITE(板书)。
9. NET_VCA_EVENT_UNION(警戒规则参数联合体)新增结构体： NET_VCA_BLACKBOARD_WRITE(板书)。
10. 本地预览切换能力集(PreviewSwitchAbility，对应接口：NET_DVR_GetDeviceAbility，对应命令：DEVICE_ABILITY_INFO)扩展，新增节点：<supportGetByPreviewNum>(是否支持配置条件)。
11. 录像相关能力能力集(RecordAbility，对应接口：NET_DVR_GetSTDAbility，对应命令：DEVICE_ABILITY_INFO)扩展，新增节点：<supportGetCourseFile>(是否支持按课程回放)。
12. 主从跟踪能力集(MasterSlaveTrackingCap，对应接口：NET_DVR_GetDeviceAbility，对应命令：NET_DVR_GET_MASTERSLAVETRACKING_CAPABILITIES)扩展，新增节点：<isSupportAdjustBinocularCalib>、<isSupportHumanCalib>。
13. 从摄像机标定配置能力集(SlaveCameraCalibrating，对应接口：NET_DVR_GetDeviceAbility，对应命令：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES)扩展，新增节点：<horValue>(水平值)、<verValue>(垂直值) 。
14. 新增导播画面停留时间配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_TV_SCREEN_CFG、NET_DVR_SET_TV_SCREEN_CFG。
15. 新增双目标定微调能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/MasterSlaveTracking/AdjustBinocularCalib/capabilities。
16. 新增获取人体坐标标定能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/masterSlaveTracking/channels/<ID >/slaveCamera/HumanCalib/capabilities。
17. 新增人体坐标配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)
对应命令：NET_DVR_GET_HUMAN_CALIB、NET_DVR_SET_HUMAN_CALIB。
18. 新增画面切换控制(对应接口：NET_DVR_SetDVRConfig)：
命令：NET_DVR_SET_SCREEN_SWITCH。
19. 新增删除样本图片功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_DEL_BV_CALIB_PIC。
20. 新增获取设备抓取图片和附加信息(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_DVR_GET_BV_CALIB_PIC。
21. 新增双目外参标定结果(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_DVR_GET_BV_CALIB_RESULT(获取双目外参标定结果)。
22. 新增双目高度矫正数据(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_DVR_GET_BV_HCORRECTION(获取双目高度矫正数据)。
23. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility)扩展，新增节点：<BlackboardWriting>(板书)，<eventType>节点新增取值：writing(板书)。
24. 设备所有编码能力能力集(AudioVideoCompressInfo，对应接口：NET_DVR_GetDeviceAbility)扩展，<AACSamplingRate>节点新增取值：48kHZ。
25. 双目能力XML能力集(BinocularAbility，对应接口：NET_DVR_GetDeviceAbility)扩展，新增节点：<calSampleNum>(标定样本个数)、<getCalibrationPic>(获取双目标定图片)、 <PicCalibrationResult>(获取双目外参标定结果)、<HumanHeightCorrect>(获取双目高度矫正数据)、<deleteCalibrationPic>(删除样本图片图片)。
26. 录播主机能力集能力集(RecordingHostAbility，对应接口：NET_DVR_GetDeviceAbility)扩展，新增节点：<TVScreen>(TV屏幕)、<ScreenSwitch>(屏幕切换)。
27. 扩展结构体(NET_DVR_BV_SAMPLE_CALIB_POINT)参数byCalibPtID参数范围[1,12];扩展结构体( NET_DVR_BV_SAMPLE_CALIB_CFG)参数struCalibPointEx中MAX_SAMPLE_NUM_EX中宏定义为7。
V5.3.1.35
build20170911 		指纹门禁产品 DS_K1T201X、DS_K1201X V2.0 1. NET_DVR_DEVICECFG_V40(设备参数结构体)，byDVRType新增： DS_K1T201X-851(指纹一体机)、DS_K1201X-866(项目型指纹读卡器)。
2. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展， 节点cardType 新增取值：delFingerPrintMode(删除指纹方式)。
V5.3.1.35
build20170911 		紧急报警产品 V2.0.0 1.新增查询语音通道状态能力和查询语音通道状态(对应接口：NET_DVR_STDXMLConfig)：
对应命令：GET /ISAPI/SecurityCP/BasicParam/AudioChannelStatus/capabilities和GET /ISAPI/SecurityCP/BasicParam/AudioChannelStatus。
2. 新增警灯计划闪烁配置能力(对应接口：NET_DVR_STDXMLConfig)：
对应命令：GET /ISAPI/SecurityCP/BasicParam/AlarmLampSchedTimeConfig/capabilities。获取/设置警灯计划闪烁配置 (对应接口：NET_DVR_STDXMLConfig)：
对应命令：GET/ISAPI/SecurityCP/BasicParam/AlarmLampSchedTimeConfig 和 PUT /ISAPI/SecurityCP/BasicParam/AlarmLampSchedTimeConfig
3. 新增信息上传参数配置能力(对应接口：NET_DVR_STDXMLConfig)：
对应命令：GET /ISAPI/SecurityCP/BasicParam/uploadInfoCfg/capabilities。获取/设置信息上传参数配置 (对应接口：NET_DVR_STDXMLConfig)：
对应命令：GET /ISAPI/SecurityCP/BasicParam/uploadInfoCfg 和 PUT /ISAPI/SecurityCP/BasicParam/uploadInfoCfg
4. 新增无线网络信息上传(对应接口：NET_DVR_StartListen_V30和NET_DVR_SetDVRMessageCallBack_V31)
命令：NET_DVR_ALARMWIRELESSINFO
5. 扩展网络报警主机能力集(DEVICE_ABILITY_INFO，对应接口：NET_DVR_GetDeviceAbility)
6. 扩展设备网络应用参数能力集(DEVICE_NETAPP_ABILITY，对应接口：NET_DVR_GetDeviceAbility)
V5.3.1.35
build20170911 		审讯主机V3.5.0
1. 移动侦测、视频丢失、遮挡、信号量等报警结构体NET_DVR_ALARMINFO_V40增加“19、音频丢失”报警类型（对应接口：NET_DVR_SetDVRMessageCallBack_V30和NET_DVR_StartListen_V30)
2. 新增音频丢失日志查询功能(对应结构体：NET_DVR_LOG_V30，对应接口：NET_DVR_FindNextLog_V30)：
命令：MINOR_AUDIO_LOSS_EXCEPTION
V5.3.1.10
build20170703 		DS-2CD8486F/B-I
三目摄像机V5.4.60 		1. 新增区域人数统计相关接口(对应接口：NET_DVR_STDXMLConfig)
1) 获取区域人数统计配置能力集：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions/<ID>;
2) 获取区域人数统计配置：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting;
3) 设置区域人数统计配置：SET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting;
4) 获取区域人数统计区域配置：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions;
5) 设置区域人数统计区域配置：SET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions;
6) 获取区域人数统计区域配置(单个)：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions/<ID>;
7) 获取区域人数统计区域配置(单个)：SET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/regions/<ID>。
2. 新增学生起立检测配置(对应接口：NET_DVR_STDXMLConfig)
1) 获取学生起立检测能力集：GET /ISAPI/Intelligent/channels/<ID>/studentsStoodUp/capabilities;
2) 获取学生起立配置：GET /ISAPI/Intelligent/channels/<ID>/studentsStoodUp;
3) 获取学生起立配置：SET /ISAPI/Intelligent/channels/<ID>/studentsStoodUp;
4) 获取学生起立检测区域配置：GET /ISAPI/Intelligent/channels/<ID>/studentsStoodUpregions;
5) 设置学生起立检测区域配置：SET /ISAPI/Intelligent/channels/<ID>/studentsStoodUpregions;
6) 获取学生起立检测区域配置(单个)：GET /ISAPI/Intelligent/channels/<ID>/studentsStoodUp/regions/<ID>;
7) 设置学生起立检测区域配置(单个)：SET /ISAPI/Intelligent/channels/<ID>/studentsStoodUp/regions/<ID>;
3. 扩展假设标定校验能力(SetupCalibrationCap扩展SetupCalibrationRecommendation字段。)
4. 新增算法库重启控制功能(对应接口：NET_DVR_STDXMLConfig)
1) 重启算法库：GET /ISAPI/Intelligent/channels/<ID>/restoreLib/<NAME>;
2) 获取算法库重启能力：GET /ISAPI/Intelligent/channels/<ID>/capabilities(ID表示通道号，从1开始)。
5. NET_DVR_SETUPALARM_PARAM(新增人体报警上传结构体)其中参数byAlarmTypeURL新增取值：bit-1表示EVENT_JSON中图片数据长传类型
6. 新增区域人数统计布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE_CAPABILITIES。
7. 新增区域人数统计布防时间配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE、NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE。
8. 新增区域人数统计联动方式配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_TRIGGER、NET_DVR_SET_FRAMES_PEOPLE_COUNTING_TRIGGER。
9. 新增区域人数统计结果(对应接口：NET_DVR_GetSTDXMLConfig
命令：NET_DVR_GET_FRAMES_PEOPLE_COUNTING_TRIGGER。
10. 新增学生起立检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_STUDENTS_STOODUP_SCHEDULE_CAPABILITIES。
11. 新增学生起立检测布防时间配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)
命令：NET_DVR_GET_STUDENTS_STOODUP_SCHEDULE、NET_DVR_SET_STUDENTS_STOODUP_SCHEDULE。
12. 新增学生起立检测联动方式配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)
命令：NET_DVR_GET_STUDENTS_STOODUP_TRIGGER、NET_DVR_SET_STUDENTS_STOODUP_TRIGGER。
13. 标定参数推荐值获取(对应接口：NET_DVR_GetSTDXMLConfig)。
V5.3.1.10
build20170703 		经济型指纹门禁产品V1.1 1. NET_DVR_FINGER_PRINT_STATUS(指纹状态参数结构体)，byCardReaderRecvStatus新增取值：9-指纹类型不支持。
2. NET_DVR_ACS_EVENT_INFO(事件/卡号联动配置结构体)，新增变量：dwSerialNo（事件流水号）。
3. NET_DVR_ACS_WORK_STATUS_V50(门禁主机工作状态结构体)，占用一个保留字节新增变量：byBatteryChargeStatus（电池充电状态）。
4. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展， 节点cardType 新增取值：unlockcard(未锁定卡)、新增加节点:batteryChargeStatus(电池充电状态)、isSupportFingerNo(设备是否支持指纹编号配置)。
V5.3.1.10
build20170703 		超脑录播NVS 1. 智能XML能力集(IntelliCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/capabilities)扩展，新增节点：<FaceContrastAnalyzeCap >(人脸比对分析能力集)、<FramesPeopleCountingCap>(单帧画面人脸统计能力集)。
2. 人脸比对库能力集(FDLibCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/FDLib/capabilities)扩展，新增节点：<isSupportFaceDataExport>(支持人脸库中数据是否支持导出)。
3. 人脸库创建(FDLibInfoList，对应接口：NET_DVR_STDXMLConfig，命令：POST /ISAPI/Intelligent/FDLib)扩展，新增节点：<statusCode>(人脸库创建失败时返回状态码)、<subStatusCode>(人脸库创建失败时返回状态码)。
4. 人脸比对库图片数据附加信息(FaceAppendData，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>)扩展，新增节点：<phoneNumber>(电话号码)。
5. 人脸比对配置能力集(FaceContrastCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/capabilities)扩展，新增节点：<SupportFDLibList>(通道关联人连库列表)。
6. 人脸比对配置(FaceContrastList，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast)扩展，新增节点：<SupportFDLibList>(通道关联人连库列表)。
7. 新增人脸比对功能触发(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/analyze?customID=(CustomID来源于人脸数据导入人脸库中附加信息自定义的ID)。
8. 新增某时间段内人脸比对结果查询功能(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/analyze/search?startTime=ISO_8601_time&&endTime=ISO_8601_time。
9. 新增单帧人数统计功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/capabilities；
配置获取：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting；
配置设置：PUT /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting；
触发：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/statistics；
获取：GET /ISAPI/Intelligent/channels/<ID>/framesPeopleCounting/statistics/search?startTime=ISO_8601_time&&endTime=ISO_8601_time。
10. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增附加信息日志次类型：MINOR_INTELLIGENT_BOARD_STATUS(智能板状态)。
11. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：IDS_67XX_NX_L(67系列录播NVS产品)、IDS_ENIXX_XHE(录播NVS行业专业产品)。
V5.3.1.5
build20170623 		DS-2CD8626FWD/D(B)
V5.4.60 		1. 新增人员密度检测的联动方式配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PERSONDENSITY_TRIGGER、NET_DVR_SET_PERSONDENSITY_TRIGGER。
2. 新增人员密度检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_PERSONDENSITY_SCHEDULE_CAPABILITIES。
3. 新增人员密度检测布防时间配置(对应接口：NET_DVR_GetSTDConfig)和 NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PERSONDENSITY_SCHEDULE、NET_DVR_SET_PERSONDENSITY_SCHEDULE。
4. 新增人员密度检测相关功能(对应接口：NET_DVR_STDXMLConfig)：
1) 获取人员密度能力集：GET /ISAPI/Intelligent/channels/<ID>/PersonDensityDetection/capabilities；
2) 获取区域配置信息：GET /ISAPI/Intelligent/channels/<ID>/PersonDensityDetection；
3) 设置区域配置信息：PUT /ISAPI/Intelligent/channels/<ID>/PersonDensityDetection；
4) 设置人员密度数据上传配置信息：PUT /ISAPI/Intelligent/channels/<ID>/personDensityDetection/analyzeDataUploadCtrl；
5) 获取人员密度数据上传配置信息：GET /ISAPI/Intelligent/channels/<ID>/personDensityDetection/analyzeDataUploadCtrl；
6) 设置人员密度高级参数配置信息 ：PUT /ISAPI/Intelligent/channels/<ID>/personDensityDetection/advancedConfiguration；
7) 获取人员密度高级参数配置信息：GET /ISAPI/Intelligent/channels/<ID>/personDensityDetection/advancedConfiguration；
8) 刷新当前画面中的人员密度统计数据：GET /ISAPI/Intelligent/channels/<ID>/PersonDensityDetection/result；
9) 查询人员密度统计数据：POST /ISAPI/Intelligent/channels/<ID>/PersonDensityDetection/search。
5. 新增人员密度报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31，报警信息类型：COMM_VCA_ALARM)：
"recognitionType": "human"且"recognition": "personDensityDetection"。
6. VCA_CHAN_ABILITY_TYPE(智能通道能力类型)新增枚举类型：VCA_PERSON_DENSITY_DETECTION(人员密度检测)。
7. NET_VCA_DEV_ABILITY(智能设备能力集结构体)使用1个保留字节新增参数：byPersonDensityDetection(人员密度检测通道个数)。
8. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility)扩展，新增节点：<PersonDensityDetectionTriggerCap>(人员密度检测)。
V5.3.1.5
build20170623 		DS-19AXX V2.3 1. NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40(报告上传参数配置结构体)，byChanAlarmMode扩展：7-N3、 8-N4。占用四个保留字节：byAlarmNetCard[4](中心组报警网卡中心，0-主网卡中心1，1-主网卡中心2，2-扩展网卡中心1,3-扩展网卡中心2(报警通道为N1、N2、N3、N4时有效))。
2. 扩展结构体NET_DVR_CID_ALARM(CID报警信息结构体)，sCIDCode扩展：CID事件号，参照NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE。
3. 扩展结构体NET_DVR_ALARMIN_PARAM(防区参数结构体)，byType扩展：12-超时防区；占用三个保留字节：byTimeOutRange(超时时间范围)、wTimeOut(超时时间)。
4. 扩展结构体NET_DVR_ALARMIN_PARAM_V50(防区参数结构体)，byType扩展：12-超时防区；占用三个保留字节：byTimeOutRange(超时时间范围)、wTimeOut(超时时间)。
5. 扩展结构体NET_DVR_ALARMIN_PARAM_V50(防区参数结构体)，byType扩展：12-超时防区；占用三个保留字节：byTimeOutRange(超时时间范围)、wTimeOut(超时时间)。
6. 接口NET_DVR_GetLastError(防区参数结构体)新增错误码：NET_ERR_CALL_BUSY(设备正在通话中)和NET_ERR_BROADCAST_BUSY(设备正在广播中)。
7. 扩展结构体NET_DVR_ALARMHOST_SEARCH_LOG_PARAM (防区参数结构体)，新增：MINOR_TRIGGER_MODULE_LOSS(触发器模块掉线)、MINOR_TRIGGER_MODULE_RESTORE(触发器模块掉线恢复)、MINOR_ALARMHOST_NETWORK_MODULE_EXTEND(网络模块参数配置)、MINOR_ALARMHOST_ADD_CONTROLLER(添加遥控器用户)、MINOR_ALARMHOST_DELETE_CONTORLLER(删除遥控器用户)、MINOR_ALARMHOST_REMOTE_NETWORKMODULE_UPGRADE(远程升级网络模块)。
8. 扩展获取所有模块(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_ALARMHOST_MODULE_LIST，lpInBuffer扩展：4-网络模块；对应结构体NET_DVR_MODULE_INFO(模块信息结构体)，byModuleType扩展：4-网络模块。
9. 新增NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE(CID报警全部次类型枚举)。
10. 网络报警主机能力集(报警主机能力集XML描述(AlarmHostAbility)，对应接口：NET_DVR_GetDeviceAbility)，节点：<zoneType >扩展：timeOutZone(超时时区)、timeOut (超时时间)、timeOutRange (超时时间范围)、isNotSupportZoneAddrEdit(防区编号界面能否编辑)、isNotSupportTriggerAddrEdit(触发器编号界面能否编辑)、netModuleNumber (网络模块数目)、netModuleAddr (网络模块地址)、alarmMode (报警通道)、alarmNetCard(报警网卡中心)、moduleType 扩展networkModule(网络模块)、enabledDel(支持删除遥控器用户)。
V5.3.1.5
build20170623 		DS-19DT-KH 1U V2.0 1. NET_DVR_ALARM_RS485CFG(报警主机RS485参数)，占用一个保留字节扩展：bySerialType(串口类型: 0--485, 1--232)。
2. 扩展结构体NET_DVR_SENSOR_ALARM(模拟量上传数据)，占用4个保留字节扩展：fOriginalValue(原始电流电压值，保留小数点后三位)。
3. 新增获取RS485协议库版本(对应接口：NET_DVR_GetDVRConfig)： 命令：NET_DVR_GET_RS485_PROTOCOL_VERSION，对应结构体结构体NET_DVR_RS485_PROTOCOL_VERSION(报警主机RS485参数)。
4. 新增日志文件导出功能(对应接口：NET_DVR_StartDownload)： 命令：NET_SDK_DOWNLOAD_LOG_FILE(日志导出)；获取导出进度功能(对应接口：NET_DVR_GetDownloadState)；停止导出(对应接口：NET_DVR_StopDownload)。
5. 网络报警主机能力集(AlarmHostAbility，对应接口：NET_DVR_GetDeviceAbility)，新增节点：<RS485ProtocolVersion>(是否支持支持获取485协议库版本)、<originalValue>(原始电流电压值)。
6. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility)，新增节点：<isSupportSystemLogFileExport>(是否支持系统日志导出)。
V5.2.7.45
build20170612 		透传ISAPI协议通道方案 1. 新增SDK通道号转ISAPI通道号接口：NET_DVR_SDKChannelToISAPI
V5.2.7.45
build20170612 		人脸比对相机
DS-2CD8426FWD/F-I
V5.4.50 		1. 新增人脸比对库联动方式配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FACELIB_TRIGGER、NET_DVR_SET_FACELIB_TRIGGER。
2. 新增人脸比对库布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FACELIB_SCHEDULE、NET_DVR_SET_FACELIB_SCHEDULE。
3. 新增人脸比对库布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_FACELIB_SCHEDULE_CAPABILITIES。
4. 新增人脸比对人员标签信息扩展配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/faceContrast/personInfoExtend/capabilities；
获取：GET /ISAPI/Intelligent/faceContrast/personInfoExtend；
设置：PUT /ISAPI/Intelligent/faceContrast/personInfoExtend。
5. 新增人脸图片建模功能(对应接口：NET_DVR_STDXMLConfig)：
统一建模控制：GET /ISAPI/Intelligent/FDLib/manualModeling?range=&FDID=；
指定单一图片建模控制：GET /ISAPI/Intelligent/FDLib/manualModeling?FDID=&PID=；
提交批量建模任务：POST /ISAPI/Intelligent/FDLib/manualModelingRangeTask；
查询批量建模任务状态：GET /ISAPI/Intelligent/FDLib/manualModelingRangeTask/progressState?taskID=；
查询指定单一图片的建模状态：GET /ISAPI/Intelligent/FDLib/modelingStatus?FDID=&&PID=；
批量查询指定图片的建模状态：POST /ISAPI/Intelligent/FDLib/modelingStatusRange；
批量查询指定建模状态的图片信息：POST /ISAPI/Intelligent/FDLib/modelingStatus?status=。
6. 新增获取人脸库剩余图片张数功能(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Intelligent/FDLib/<FDID>/picture/surplusCapacity。
7. 人脸库管理方式扩展，新增自定义人脸库ID和自定义人员图片ID的功能，包括能力集(对应接口：NET_DVR_STDXMLConfig)、人脸库创建修改查询(对应接口：NET_DVR_STDXMLConfig)和人脸库图片管理(对应接口：NET_DVR_STDXMLConfig)，相关XML和命令均增加：<customFaceLibID>(自定义人脸库ID，对应设备自动生成的FDID)或者<customHumanID>(自定义人员图片ID，对应设备自动生成的PID)。
8. 获取文件上传的进度和状态接口NET_DVR_GetUploadState新增返回值：22-人脸库存储已满、33-子图建模失败。
9. NET_DVR_FACELIB_COND(导入人脸数据到人脸库的条件参数结构体)使用2个保留字节新增参数：byCover(是否覆盖式导入)、byCustomFaceLibID(人脸库ID是否是自定义)。
10. NET_DVR_FD_DATA_COND(人脸数据文件上传条件参数结构体)使用1个保留字节新增参数：byCover(是否覆盖式导入)。
11. NET_VCA_BLOCKLIST_INFO_ALARM(非授权名单报警信息)使用2个保留字节新增参数：wThresholdValue(人脸库阈值)。
12. NET_VCA_BLOCKLIST_INFO(非授权名单信息)使用8个保留字节新增参数：dwFDDescriptionLen(人脸库描述数据长度)、pFDDescriptionBuffer(人脸库描述数据指针)。
13. NET_DVR_JPEGPARA(JPEG图像信息结构体)中参数wPicSize(图片尺寸)：500-384*288。
14. NET_DVR_AGEGROUP_PARAM(年龄段人数统计参数)使用16个保留字节新增参数：dwChild(儿童人数)、dwAdolescent(青少年)、dwPrime(壮年人数)、dwMidage(中老年人数)。
15. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)扩展，新增节点：<FaceLibTriggerCap>(人脸库联动方式配置)。
16. 人脸比对库能力集(FDLibCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/FDLib/capabilities)扩展，新增节点：<isSupportManualModeling>(是否支持手动建模)、<isSupportSingleManualModeling>(是否支持单一图片手动建模)、<isSupportRangeManualModeling(是否支持离散性手动建模)、<isSupportSingleManualModelingSearch>(是否支持单一手动建模任务查询)、<isSupportRangeManualModelingSearch>(是否支持离散性手动建模任务查询)、<isSupportModelingStatusSearch>(是否支持建模状态查询)、<Reboot>(修改参数后需要重启)、<isSupportCoverImportpictures>(是否支持图片覆盖式导入)、<isSupportCoverImportFaceLib>(是否支持人脸库覆盖式导入)、<isSupportConcurrentImportpictures>(是否支持图片并发式导入)、<isSupportSurplusCapacity>(是否支持指定人脸库中剩余人脸图片张数查询)、<isSupportFDCoverInfo>(是否支持 "获取指定人脸库导入会覆盖的人脸图片张数")。
17. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/System/capabilities)扩展，新增节点：<isSupportPicInfoOverlap>(是否支持图片字符叠加)。
V5.2.7.45
build20170612 		网络球机 V5.5.0 1. 新增安全导入配置文件功能(对应接口：NET_DVR_UploadFile_V40)：
命令：UPLOAD_SECURITY_CFG_FILE。
2. 新增安全导出配置文件功能(对应接口：NET_DVR_StartDownload)：
命令：NET_SDK_DOWNLOAD_SECURITY_CFG_FILE。
3. 新增标准协议网络相关功能(对应接口：NET_DVR_STDXMLConfig)：
URI：/ISAPI/System/Network/Integrate/capabilities；
/ISAPI/System/Network/Integrate；
/ISAPI/Security/adminAccesses；
/ISAPI/System/discoveryMode；
/ISAPI/System/Network/platformAccessFilter/capabilities；
/ISAPI/System/Network/platformAccessFilter/<ID>。
4. 新增云存储配置功能(对应接口：NET_DVR_STDXMLConfig)：
URI：/ISAPI/ContentMgmt/channels/<ID>/cloudStorage/<ID>/capabilities；
/ISAPI/ContentMgmt/channels/<ID>/cloudStorage/<ID>。
5. 获取文件上传的进度和状态接口NET_DVR_GetUploadState新增返回值：34-安全校验密钥错误。
6. 新增GBT28181协议接入设备的语音对讲信息配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_GBT28181_AUDIO_OUTPUT_CFG、NET_DVR_SET_GBT28181_AUDIO_OUTPUT_CFG。
7. NET_DVR_SECURITY_CFG(安全认证配置)扩展，byWebAuthentication(web认证配置)新增取值：2-digest/basic，byRtspAuthentication (RTSP认证配置)新增取值：2-digest、3-digest/basic。
8. NET_DVR_GBT28181_ACCESS_CFG(GBT28181协议接入配置)中byProtocolVersion(协议版本)新增取值：2-GB/T28181-2016。
9. NET_DVR_CMS_PARAM(平台参数)使用1个保留字节新增参数：byProtocolVersion(EHOME协议版本)。
10. NET_DVR_PICCFG_V40和NET_DVR_PICCFG_V30(通道图像)分别使用4个保留字节新增参数：dwBoundary(对齐边界值)，byAlignment(对齐方式)分别新增取值：3-国标模式。
11. NET_DVR_MOTION_V40(移动侦测参数)使用1个保留字节新增参数：byKeyingEnable(启用键控移动侦测)。
12. NET_DVR_SERVER_TEST_PARA(服务器测试参数)的unionServerPara中结构体struCloudStoragePara(云存储服务器测试参数)使用129个保留字节新增参数：byProtocolType(协议版本)、szAccessKey(访问密钥)、szSecretKey(加密密钥)。
13. NET_DVR_ALARMINCFG_V40(报警输入参数)使用512个保留字节新增参数：byPresetDurationTime[MAX_CHANNUM_V40](预置点停留时间)。
14. NET_DVR_WIRELESSDIAL_CFG(无线拨号连接配置)使用32个保留字节新增参数：byNetAPN[NAME_LEN](私有专网APN字段配置)。
15. 安全能力集(SecurityCap，对应接口：NET_DVR_STDXMLConfig)，新增节点：<isSupportConfigFileImport>(是否支持安全导入配置文件)、<isSupportConfigFileExport>(是否支持安全导出配置文件)、<cfgFileSecretKeyLenLimit>(安全导入导出配置文件的校验密钥长度)。
16. 网络能力集(NetworkCap，对应接口：NET_DVR_STDXMLConfig)，新增节点：<isSupportIntegrate>(是否支持ONVIF\CGI\ISAPI标准协议集成)、<isSupportplatformAccess>(是否支持平台接入地址过滤)。
17. 设备网络应用参数能力集(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展：
1) <CMS>(平台参数能力)中<CmsParam>新增子节点：<protocolVersion>(协议版本)。
2) <CloudStorage>(云存储能力)新增节点：<V2.0>(云存储V2.0协议)，<Test>新增子节点：<isSupportAccessKey>(是否支持访问密钥)、<isSupportSecretKey>(是否支持加密密钥)、<accessKeyLen>(访问密钥长度)、<secretKeyLen>(加密密钥长度)。
18. 设备GBT28181能力集(GBT28181AccessAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<protocolVersion>(协议版本)新增取值：GB/T28181-2016，新增节点：<audioOutputCompressionIDLen>(设备语音输出编码ID)。
19. 安全认证配置能力集(SecurityAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<webAuthentication>(web认证能力)新增取值：2-digest/basic，<rtspAuthentication>(RTSP认证能力)新增取值：2-digest,3-digest/basic。
20. 设备协议接入能力集(AccessProtocolAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO扩展，<EzvizParam>(萤石参数能力)新增子节点：<VerificationCode>(验证码支持配置)。
21. 设备图像参数能力集(VideoPicAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_VIDEOPIC_ABILITY)扩展：
1) <OSD>(OSD字符叠加能力)新增子节点：<boundary>(边界值范围)、<lowRightTextNumber>(右对齐字符最小个数)、<lowLeftTextNumber>(左对齐字符最小个数)、<boudaryOptionShow>(边界值选项显示能力)，<alignment>(对齐方式)新增取值：GB(国标模式)。
2) <MotionDetection>(移动侦测能力)新增子节点：<isSupportKeyingEnable>(是否支持键控移动侦测)。
22. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<AlarmIn>(报警输入能力)中<RelatePTZ>(PTZ联动)新增子节点：<presetDurationTime>(云台预置点停留时间)。
23. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：880、1113。
V5.2.7.41
build20170523 		录播主机 V2.2.1 1. 结构体NET_DVR_TERMINAL_CALL_CFG(终端呼叫参数配置结构体)，占用一个保留字节，新增参数byTransmissionProtocol(传输协议类型，0-无效，1-TCP，2-UDP)。
2. 结构体NET_DVR_RECORDING_HOST_CFG(录播主机配置结构体)，占用一个保留字节，新增参数byElectronicEnlargeMode(是否使用电子放大导播, 0-不使用，1-使用)。
3. 扩展终端呼叫配置能力集(CallConfiguration，对应接口：NET_DVR_GetSTDAbility)， 能力集类型：NET_DVR_GET_TERMINAL_CALL_CFG_CAP：
<TransmissionProtocol >(传输协议)。
4. 扩展终端呼叫配置能力集(VCSCap，对应接口：NET_DVR_GetSTDAbility)， 能力集类型：NET_DVR_GET_VCS_CAP；
<isSupportTerminalControl >(是否支持终端控制)、<isSupportTerminalConferenceStatus >(是否支持终端会议状态)、<InputList >(是否输入源列表)、<isSupportCallConfiguration > (是支持会议呼叫参数配置)。
5. 扩展录播主机参数配置能力(ClassDataStatisticCfg，对应接口：NET_DVR_GetSTDAbility)， 对应命令：GET /ISAPI/ContentMgmt/RecordingHost/hostParam/capabilities；<electronicEnlargeMode >(电子放大导播)。
6. 扩展录播主机总能力集(RecordHostCap，对应接口：NET_DVR_GetSTDAbility) 能力集类型：NET_DVR_GET_RECORD_HOST_CAP；<InterfaceDisplay >(接口显示)：新增子节点：<liveBroadcast>(是否支持直播)、<selectBroadcast >(是否支持点播)、<directBroadcast >(是否支持导播)、 <configuration >(是否支持配置)。
V5.2.7.35
build20170512 		大超脑
iDS-96000NX-I16
V4.0.0 		1. 新增智能XML能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Intelligent/capabilities。
2. 新增智能结构化分析能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Intelligent/structureAnalysis/capabilities。
3. 新增分析引擎配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/structureAnalysis/capabilities；
获取：GET /ISAPI/Intelligent/analysisEngines/<ID>；
设置：PUT /ISAPI/Intelligent/analysisEngines/<ID>。
4. 新增视频结构化分析任务配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取：GET /ISAPI/Intelligent/structureAnalysis/tasks/channels/<ID>；
设置：PUT /ISAPI/Intelligent/structureAnalysis/tasks/channels/<ID>。
5. 新增视频结构化分析任务状态月历查询功能(对应接口：NET_DVR_STDXMLConfig)：
命令：POST /ISAPI/Intelligent/structureAnalysis/dailyProgress/channels/<ID>。
6. 新增人脸比对库图片相互导入功能(对应接口：NET_DVR_STDXMLConfig)：
命令：PUT /ISAPI/Intelligent/FDLib/<FDID>/importFrom/FDLibSource。
7. 新增图片上传人脸分析功能(对应接口：NET_DVR_STDXMLConfig)：
命令：POST /ISAPI/Intelligent/analysisImage/face。
8. 新增按通道查询设备端存储的人脸比对结果功能(对应接口：NET_DVR_STDXMLConfig)：
命令：POST /ISAPI/Intelligent/FDLib/FCSearch/channels/<ID>。
9. 新增删除所有人脸库的功能(对应接口：NET_DVR_STDXMLConfig)：
命令：DELETE /ISAPI/Intelligent/FDLib。
10. 新增获取算法库功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_VCA_VERSION_LIST。
11. 新增车辆属性检索功能(对应接口：NET_DVR_STDXMLConfig)：
全部通道：POST /ISAPI/Intelligent/vehicleRecognition/Search/channels；
单个通道：POST /ISAPI/Intelligent/vehicleRecognition/Search/channels/<ID>。
12. HumanRecognitionSearchDescription(人体检索条件参数)扩展，新增节点：<eventType>(事件类型)；<age_group>(年龄段)新增取值：infant-婴幼儿, kid-儿童, teenager-青少年, prime-壮年, middleAged-中老年。
13. 人脸比对功能扩展：
1) NET_VCA_HUMAN_ATTRIBUTE(人员信息)中参数bySex(性别)和byCertificateType(证件类型)新增取值：0xff-未知。
2) NET_VCA_BLOCKLIST_INFO_ALARM(非授权名单报警信息)使用8个保留字节新增参数：dwPIDLen(人脸库图片ID长度)、pPID(人脸库图片ID指针)。
3) FaceContrastCap(人脸比对配置能力集)新增节点：<SupportFDLibList>(通道关联人脸库列表)。
4) FaceContrast(人脸比对配置)新增节点：<FDLibList>(通道关联人脸库列表)。
14. 人体识别配置(HumanRecognition，对应接口：NET_DVR_STDXMLConfig，对应URL：/ISAPI/Intelligent/channels/<ID>/humanRecognition)新增节点：<humanMisinfoFilterEnabled>(去误报使能)、<picRecognitionEnabled>(图片二次识别使能)。
15. 人体识别配置能力集(HumanRecognition，对应接口：NET_DVR_STDXMLConfig，对应URL：/ISAPI/Intelligent/channels//humanRecognition/capabilities)新增节点：<isSupportHumanMisinfoFilter>(是否支持去误报)、<isSupportPicRecognition>(是否支持图片二次识别)、<HumanRecognitionModeSearchCap>(人体检索能力集)。
16. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/System/capabilities)扩展，新增节点：<isSupportIntelligentStructureAnalysis>(是否支持智能结构化分析)、<isSupportIntelligentAnalysisEngines>(是否支持智能分析引擎配置)。
17. 人脸比对库能力集(FDLibCap，对应接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Intelligent/FDLib/capabilities)扩展，新增节点：<isSupportFDLibEachImport>(是否支持人脸比对库图片相互导入的功能)、<isSupportStandardSearch>(是否支持标准查找方式)。
18. NET_DVR_VCA_VERSION(智能库版本参数)使用1个保留字节新增参数：byType(算法库类型名称)。
19. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增操作日志次类型：MINOR_LOCAL_FACE_DATA_EDIT、MINOR_REMOTE_FACE_DATA_EDIT、MINOR_LOCAL_FACE_DATA_DELETE、MINOR_REMOTE_FACE_DATA_DELET、MINOR_LOCAL_VCA_ANALYSIS_CFG、MINOR_REMOTE_VCA_ANALYSIS_CFG。
20. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：851~855、857~859、864~870、874。
V5.2.7.30
build20170428 		垂直双目客流
网络摄像机 V5.4.6 		1. 新增POS叠加能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_POSINFO_OVERLAY_CAPABILITIES。
2. 新增POS叠加配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_POSINFO_OVERLAY、NET_DVR_SET_POSINFO_OVERLAY。
3. 新增查询客流计数状态的功能(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/System/Video/inputs/channels/<ID>/counting/status。
4. 新增ISAPI监听地址配置的功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Event/notification/httpHosts/capabilities；
批量获取：GET /ISAPI/Event/notification/httpHosts；
批量设置：PUT /ISAPI/Event/notification/httpHosts；
批量删除：DELETE /ISAPI/Event/notification/httpHosts；
单个添加：POST /ISAPI/Event/notification/httpHosts；
单个获取：GET /ISAPI/Event/notification/httpHosts/<ID>；
单个设置：PUT /ISAPI/Event/notification/httpHosts/<ID>；
单个删除：DELETE /ISAPI/Event/notification/httpHosts/<ID>。
5. NET_DVR_PDC_RULE_CFG_V42(客流量规则配置)扩展：
1) 使用44个保留字节新增参数：byStreamOverlayRuleInfos(码流智能信息叠加)、byCountingType(计数触发方式)、bySignalType(信号类型)、byRS485TransmissionEnabled(启用485传输)、struDailyResetTime(定时清零)、struPolyLine(折线检测区域)。
2) byOSDEnable(客流统计OSD显示是否启用)新增取值：5-进入和经过。
3) byCurDetectType(当前检测区域类型)新增取值：2-检测折线。
6. 架设标定校验功能扩展：
1) NET_DVR_SETUP_CALIB_COND(架设标定校验条件参数)使用1个保留字节新增参数：byIntelligentType(标定的智能类型)。
2) 架设标定校验能力集(SetupCalibrationCap)新增节点：<intelligentType>(标定的智能类型)。
7. NET_DVR_PDC_QUERY_COND(客流量数据查询条件)使用1个保留字节新增参数：byTriggerPeopleCountingData(触发客流统计数据查询使能)。
8. NET_DVR_PDC_ALRAM_INFO(客流量统计结果)中byMode(数据统计模式)新增取值：2-信号量触发。
9. NET_DVR_XML_CONFIG_INPUT(透传接口输入参数)使用1个保留字节新增参数：byForceEncrpt(是否强制加密)。
10. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中的<PDC>(客流统计能力)扩展：
1) 新增节点：<countingType>(计数触发方式)、<alarmInputTrigger_signalType>(信号类型)、<videoTrigger_RS485Transmission>(启用485传输)、<isSupportTriggerPeopleCountingDataSearch>(是否支持触发客流统计数据查询)、<isSupportDailyResetTime>(是否支持定时清零)、<Polyline>(是否支持折线检测)、<isSupportBusDetectionArea>(是否支车载踏板检测区域)、<isSupportStreamOverlayRuleInfos>(是否支持码流智能信息叠加)、<isSupportInterfaceSegmentation>(是否需要4200进行界面分割能力)、<isSupportMobileDescribeChange>(是否支持移动设备描述)、<isSupportAdvanceConfiguration>(是否支持高级配置)、<isSupportSearchDoorStates>(是否支持车载信号触发中的开关门状态检测)。
2) <OSD>(客流统计OSD显示能力)的子节点<OSDType>(显示类型)新增取值：enterPeoplePassing(进入和经过人数)。
V5.2.7.30
build20170428 		CVR 2.3.3-1
 1. 新增硬盘卷配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_HDVOLUME_CFG、NET_DVR_SET_HDVOLUME_CFG
2. 存储总能力集RacmCap更新，新增能力节点<isSupportFileData>(文件相关配置能力)、<isSupportRemoteBackup>(异地备份相关配置能力)
对应接口：NET_DVR_GetSTDAbility，能力类型：NET_DVR_GET_RACM_CAP
3. 新增数据文件传输速率配置(对应接口：NET_DVR_STDXMLConfig)：
数据文件传输速率配置能力集：GET /ISAPI/ContentMgmt/FileData/TransferSpeedConfiguration/capabilities；
获取数据文件传输速率：GET /ISAPI/ContentMgmt/FileData/TransferSpeedConfiguration；
设置数据文件传输速率：PUT /ISAPI/ContentMgmt/FileData/TransferSpeedConfiguration。
4. 新增数据文件锁定配置(对应接口：NET_DVR_STDXMLConfig)：
数据文件锁定配置能力集：GET /ISAPI/ContentMgmt/FileData/LockConfiguration/capabilities；
设置数据文件锁定：PUT /ISAPI/ContentMgmt/FileData/LockConfiguration。
5. 新增获取数据文件信息(对应接口：NET_DVR_STDXMLConfig)：
获取数据文件信息能力集：GET /ISAPI/ContentMgmt/FileData/SearchFile/capabilities；
获取数据文件信息：POST /ISAPI/ContentMgmt/FileData/SearchFile。
6. 新增异地备份备机信息配置(对应接口：NET_DVR_STDXMLConfig)：
异地备份备机信息配置能力集：GET /ISAPI/ContentMgmt/RemoteBackup/BackupMachineInfo/capabilities；
获取异地备份备机信息配置：GET /ISAPI/ContentMgmt/RemoteBackup/BackupMachineInfo；
设置异地备份备机信息配置：PUT /ISAPI/ContentMgmt/RemoteBackup/BackupMachineInfo。
7. 新增异地备份任务配置(对应接口：NET_DVR_STDXMLConfig)：
异地备份任务能力集：GET /ISAPI/ContentMgmt/RemoteBackup/Task/capabilities；
添加异地备份任务：POST /ISAPI/ContentMgmt/RemoteBackup/addTask；
搜索异地备份任务：POST /ISAPI/ContentMgmt/RemoteBackup/SearchTask；
删除异地备份单个任务：DELETE /ISAPI/ContentMgmt/RemoteBackup/deleteTasks/<taskID>；
删除异地备份所有任务：DELETE /ISAPI/ContentMgmt/RemoteBackup/deleteTasks。
8. 新增上传文件卷数据文件，上传文件类型：UPLOAD_FILEVOLUME_DATA。对应接口：NET_DVR_UploadFile_V40
9. 新增下载文件卷数据文件，下载文件类型：NET_SDK_DOWNLOAD_FILEVOLUME_DATA。对应接口：NET_DVR_StartDownload
10. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：2111。
V5.2.7.25
build20170418 		热成像 V1.1大版本 1. 新增测温模式能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_THERMOMETRY_MODE_CAPABILITIES。
2. 新增测温模式配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMOMETRY_MODE、NET_DVR_SET_THERMOMETRY_MODE。
3. 新增热成像画中画配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_THERMAL_PIP_CAPABILITIES。
4. 新增热成像画中画配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMAL_PIP、NET_DVR_SET_THERMAL_PIP。
5. 新增热成像智能规则显示能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_THERMAL_INTELRULEDISPLAY_CAPABILITIES。
6. 新增热成像智能规则显示配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMAL_INTELRULE_DISPLAY、NET_DVR_SET_THERMAL_INTELRULE_DISPLAY。
7. 新增获取热成像相关算法库版本的功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_THERMAL_ALGVERSION。
8. 新增电流锁定配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_CURRENT_LOCK_CAPABILITIES。
9. 新增电流锁定配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_CURRENT_LOCK、NET_DVR_SET_CURRENT_LOCK。
10. 通道属性信息(ChannelInfo，对应接口：NET_DVR_STDXMLConfig)新增节点：<IntelligentRuleDisplay>(热成像智能规则显示配置通道)、<IntelligentBehaviorRule>(智能行为规则配置通道)、<DPC>(坏点校正通道)。
11. NET_DVR_THERMOMETRY_BASICPARAM(测温基本参数配置)使用53个保留字节新增参数：byThermometryCurve(测温曲线模式显示方式)、byFireImageModea(消防图像模式)、byShowTempStripEnable(显示温度条使能)、fEmissivity(发射率)、byDistanceUnit(距离单位)、byEnviroHumidity(环境相对湿度)、struTempColor(测温报警颜色)、iEnviroTemperature(环境温度)、iCorrectionVolume(测温修正量)、bySpecialPointThermType(特殊测温点显示)、byReflectiveEnabled(反射温度使能)、wDistance(距离)、fReflectiveTemperature(反射温度)、fAlert(预警温度阈值)、fAlarm(报警温度阈值)。
12. NET_DVR_THERMOMETRY_UPLOAD(实时温度信息)使用13个保留字节新增参数：bySpecialPointThermType(是否支持特殊点测温)、fCenterPointTemperature(中心点温度)、fHighestPointTemperature(最高点温度)、fLowestPointTemperature(最低点温度)。
13. NET_DVR_REALTIME_THERMOMETRY_COND(实时温度检测条件参数)使用1个保留字节新增参数：byMode(长连接模式)。
14. NET_DVR_DPC_PARAM(坏点校正参数)使用1个保留字节新增参数：byDPCMode(坏点校正模式)。
15. NET_DVR_FILECOND_V40(录像文件查找条件)中dwFileType(文件类型)和NET_DVR_FINDDATA_V40(录像文件查找结果)中byFileType(文件类型)分别新增取值：43-离线测温报警。
16. NET_DVR_RECORDSCHED_V40(时间段录像参数)和NET_DVR_RECORDDAY_V40(全天录像参数)中byRecordType(录象类型)分别新增取值：39-离线测温报警。
17. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x26-离线测温报警。
18. NET_DVR_CAPTURE_DAY(全天抓图计划参数)和NET_DVR_CAPTURE_SCHED(时间段抓图计划参数)中byCaptureType(抓图类型)分别新增取值：39-离线测温抓图。
19. NET_DVR_THERMINTELL_PARAM(热成像智能互斥配置)中byIntellType(智能功能资源配置类型)新增取值：3-画中画功能。
20. NET_VCA_TRAVERSE_PLANE(穿越警戒面参数)、NET_VCA_AREA(进入/离开区域参数)、NET_VCA_INTRUSION(入侵参数)、NET_VCA_RUN(快速移动参数)中byDetectionTarget(检测目标类型)取值定义修改：0x01-人、0x02-车，支持多选。
21. 热成像能力集(ThermalCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES)扩展：
新增节点：<isSupportThermometryMode>、<isSupportThermalPip>、<isSupportThermalIntelRuleDisplay>、<AlgVersionInfo>。
22. 测温配置能力集(ThermometryBasicParam，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES)扩展：
新增节点：<temperatureCurve>、<fireImageMode>、<emissivity>、<distanceUnit>、<TemperatureColor>、<enviroTemperature>、<enviroHumidity>、<correctionVolume>、<specialPointThermType>、<distance>、<reflectiveEnable>、<reflectiveTemperature>、<alert>、<alarm>、<showTempStripEnable>。
23. 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展，<DPCParam>(坏点校正能力)中新增子节点：<dpcMode>(坏点校正模式)。
24. 设备通道输入能力集(ChannelInputAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<RecordPlan>和<RecordQuery>中子节点<supportRecordType>(支持录像类型)分别新增取值：thermometryOffLineAlarm(离线测温报警)。
25. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展：
1) <FindPicInfo>(图片查找条件)中<supportFileType>(查找的图片类型)新增取值：thermometryOffLineAlarm(离线测温报警)。
2) <SchedCapture>(计划抓图)中<DayCapture>(全天抓图)、<TimeSlot>(时间段抓图)、<HolidayDay>(假日全天抓图)、<HolidayTimeSlot>(假日时间段抓图)的子节点<captureType>(抓图类型)分别新增取值：thermometryOffLineAlarm(离线测温报警)。
26. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中的<Behavior>(异常行为识别能力)扩展， <TraversePlane>(穿越警戒面)、<EnterArea>(进入区域)、<ExitArea>(离开区域)、<Intrusion>(入侵参数)、<Run>(快速移动参数)的子节点<detectionTarget>(检测目标类型)新增取值：human_vehicle(人与车)。
27. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：3005、3006、3007、3008。
V5.2.7.25
build20170418 		IPC基线5.4.50 1. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)，byPowerLineFrequencyMode新增：8- MZ5721D-12MPIR、9- MZ1555D-12MPIR、10- MZ5721D-12MPIR(RS485)、11- MZ1555D-12MPIR(RS485) 。
2. VCA_CHAN_ABILITY_TYPE(智能通道能力类型)，新增类型：VCA_ROAD_DETECTION = 27- 道路监控。
3. NET_VCA_DEV_ABILITY(智能设备能力集)，占用一个保留字节新增参数byRoadDetectionNum(道路监控通道个数)。
4. NET_ITS_PICTURE_INFO(抓拍图片信息结构体)，byType参数新增：12-主驾驶室图 ;13-副驾驶室图。struPlateRecgRect新增：当图片类型为12-主驾驶室图13-副驾驶室图是，该坐标为驾驶员坐标
5. 设备通用能力类型(报警事件处理能力XML描述(EventAbility)，对应接口：NET_DVR_GetDeviceAbility，命令：DEVICE_ABILITY_INFO。itemType 新增：yellowSignCar(33-黄标车),dangerousCar(34-危险品车),carSubBrand(35-车辆子品牌)。
6. 获取设备前端参数(设备前端参数XML描述(CAMERAPARA)，对应接口：NET_DVR_GetDeviceAbility，命令：IPC_FRONT_PARAMETER_V20。IrisMode 新增：8- MZ5721D-12MPIR、9- MZ1555D-12MPIR、10- MZ5721D-12MPIR(RS485)、11- MZ1555D-12MPIR(RS485)；Range 新增：8,9,10,11。
7. 设备通用能力类型(智能通道控制能力XML描述(VcaCtrlAbility)，对应接口：NET_DVR_GetDeviceAbility，命令：DEVICE_ABILITY_INFO。smartSwitchVcaType 新增：roadDetection( 道路检测)。
V5.2.7.20
build20170331 		门禁主机V20
DS-K1T802M/E、
DS-K2601/02/04、
DS-K2601/02/04-G、
DS-K2801/02/04、
DS-K2601/02/04E、
DS-K2601S
V2.0.0
 1. 新增门禁检测报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
报警信息类型：COMM_ALARM_ACS，主类型中添加:门禁自定义报警MINOR_ALARM_CUSTOM1~MINOR_ALARM_CUSTOM164
异常中添加MINOR_LOCAL_LOGIN_LOCK和MINOR_LOCAL_LOGIN_UNLOCK,添加门禁自定义异常MINOR_EXCEPTION_CUSTOM1~MINOR_EXCEPTION_CUSTOM64;
操作中添加:MINOR_LOCAL_LOGIN,添加门禁自定义操作MINOR_OPERATION_CUSTOM1~MINOR_OPERATION_CUSTOM64;
事件中添加门禁自定义事件MINOR_EVENT_CUSTOM1~MINOR_EVENT_CUSTOM64;
2. 新增韦根规则配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取韦根规则配置能力集：GET /ISAPI/AccessControl/WiegandRuleCfg/capabilities；
获取韦根规则：GET /ISAPI/AccessControl/WiegandRuleCfg；
设置韦根规则：PUT /ISAPI/AccessControl/WiegandRuleCfg。
3. 新增M1卡加密验证功能(对应接口：NET_DVR_STDXMLConfig)：
获取M1卡加密验证能力集：GET /ISAPI/AccessControl/M1CardEncryptCfg/capabilities；
获取M1卡加密验证：GET /ISAPI/AccessControl/M1CardEncryptCfg；
设置M1卡加密验证：PUT /ISAPI/AccessControl/M1CardEncryptCfg。
4. 新增布防信息功能(对应接口：NET_DVR_STDXMLConfig)：
获取布防信息能力集：GET /ISAPI/AccessControl/DeployInfo/capabilities；
获取M1卡加密验证：GET /ISAPI/AccessControl/DeployInfo。
5. 新增加入跨主机反潜回主机(对应接口：NET_DVR_STDXMLConfig)：
获取加入跨主机反潜回主机能力集：GET /ISAPI/AccessControl/SubmarineBackHostInfo/capabilities；
获取加入跨主机反潜回主机参数：GET /ISAPI/AccessControl/SubmarineBackHostInfo/ConfigureNo/<ID>；
设置加入跨主机反潜回主机参数：PUT /ISAPI/AccessControl/SubmarineBackHostInfo/ConfigureNo/<ID>。
6. 新增起始读卡器(对应接口：NET_DVR_STDXMLConfig)：
获取起始读卡器能力集：GET /ISAPI/AccessControl/StartReaderInfo/capabilities；
获取起始读卡器：GET /ISAPI/AccessControl/StartReaderInfo；
设置起始读卡器：PUT /ISAPI/AccessControl/StartReaderInfo。
7. 新增跨主机反潜回读卡器(对应接口：NET_DVR_STDXMLConfig)：
获取起始读卡器能力集：GET /ISAPI/AccessControl/SubmarineBackReader/capabilities；
获取起始读卡器：GET /ISAPI/AccessControl/SubmarineBackReader/ConfigureNo/<ID>；
设置起始读卡器：PUT /ISAPI/AccessControl/SubmarineBackReader/ConfigureNo/<ID>。
8. 新增服务器跨主机反潜回刷卡记录清除(对应接口：NET_DVR_STDXMLConfig)：
获取服务器跨主机反潜回刷卡记录清除能力集：GET /ISAPI/AccessControl/ClearCardRecord/capabilities；
设置服务器跨主机反潜回刷卡记录清除：PUT /ISAPI/AccessControl/ClearCardRecord。
9. 新增跨主机反潜回模式(对应接口：NET_DVR_STDXMLConfig)：
获取跨主机反潜回模式能力集：GET /ISAPI/AccessControl/SubmarineBackMode/capabilities；
获取跨主机反潜回模式：GET /ISAPI/AccessControl/SubmarineBackMode；
设置跨主机反潜回模式：PUT /ISAPI/AccessControl/SubmarineBackMode。
10. 新增跨主机反潜回信息清除(对应接口：NET_DVR_STDXMLConfig)：
获取跨主机反潜回信息清除能力集：GET /ISAPI/AccessControl/ClearSubmarineBack/capabilities；
设置跨主机反潜回信息清除：PUT /ISAPI/AccessControl/ClearSubmarineBack。
11. 新增加入跨主机反潜回(对应接口：NET_DVR_STDXMLConfig)：
获取加入跨主机反潜回配置能力集：GET /ISAPI/AccessControl/ServerDevice/capabilities；
获取加入跨主机反潜回配置：GET /ISAPI/AccessControl/ServerDevice；
设置加入跨主机反潜回配置：PUT /ISAPI/AccessControl/ServerDevice。
12. 新增读卡器跨主机反潜回(对应接口：NET_DVR_STDXMLConfig)：
获取读卡器跨主机反潜回能力集：GET /ISAPI/AccessControl/ReaderAcrossHost/capabilities；
获取读卡器跨主机反潜回配置：GET /ISAPI/AccessControl/ReaderAcrossHost；
设置读卡器跨主机反潜回配置：PUT /ISAPI/AccessControl/ReaderAcrossHost。
13. 新增跨主机反潜回服务器配置(对应接口：NET_DVR_STDXMLConfig)：
获取跨主机反潜回服务器配置能力集：GET /ISAPI/AccessControl/SubmarineBack/capabilities；
获取跨主机反潜回服务器：GET /ISAPI/AccessControl/SubmarineBack；
设置跨主机反潜回服务器：PUT /ISAPI/AccessControl/SubmarineBack。
14. 新增设备事件获取功能(对应接口：NET_DVR_StartRemoteConfig)：
命令:NET_DVR_GET_ACS_EVENT,新增结构体:NET_DVR_ACS_EVENT_CFG(报警事件结构体)、
NET_DVR_ACS_EVENT_DETAIL(报警事件细节结构体)、
NET_DVR_ACS_EVENT_COND(报警事件条件结构体)。
15. 新增删除指纹参数配置V50(对应接口：NET_DVR_StartRemoteConfig)：
命令:NET_DVR_DEL_FINGERPRINT_CFG,新增结构体:NET_DVR_FINGER_PRINT_INFO_CTRL_V50 (删除指纹参数配置V50结构体)、
NET_DVR_FINGER_PRINT_BYCARD_V50(卡片关联指纹信息结构体)、
NET_DVR_FINGER_PRINT_BYREADER_V50(指纹读卡器参数结构体)、
NET_DVR_DEL_FINGER_PRINT_MODE_V50(指纹模式参数结构体)、
NET_DVR_FINGER_PRINT_INFO_CTRL_V50(指纹信息控制参数结构体)、
NET_DVR_FINGER_PRINT_INFO_STATUS_V50(指纹信息状态参数结构体)。
16. NET_DVR_ACS_EVENT_INFO(门禁事件信息)中使用4个保留字节新增参数：dwSerialNo(事件流水号)。
17. NET_DVR_SETUPALARM_PARAM(布防参数结构体)中使用1个保留字节新增参数：byDeployType(布防类型)。
18. NET_DVR_CARD_READER_CFG_V50(读卡器参数配置结构体)使用2个保留字节新增参数：wBuzzerTime(蜂鸣时间)。
19. 新增事件及卡号联动参数配置，接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig，命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51(获取事件卡号联动配置参数(V51))和(NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51(设置事件卡号联动配置参数(V51))，对应结构体NET_DVR_EVENT_CARD_LINKAGE_CFG_V51(事件卡号联动配置参数)。新增EVENT_ACS_SUBMARINEBACK_COMM_BREAK(与反潜回服务器通信断开)、EVENT_ACS_SUBMARINEBACK_COMM_RESUME(与反潜回服务器通信恢复)、EVENT_ACS_REMOTE_ACTUAL_GUARD(远程实时布防)、EVENT_ACS_REMOTE_ACTUAL_UNGUARD(远程实时撤防)。新增EVENT_ACS_DOOR_OPEN_OR_DORMANT_FAIL(门状态常闭或休眠状态认证失败)、EVENT_ACS_AUTH_PLAN_DORMANT_FAIL(认证计划休眠模式认证失败)、EVENT_ACS_CARD_ENCRYPT_VERIFY_FAIL(卡加密校验失败)、EVENT_ACS_SUBMARINEBACK_REPLY_FAIL(反潜回服务器应答失败)。NET_DVR_EVENT_CARD_LINKAGE_CFG_V51(事件关联卡片配置V51),使用1个保留字节新增参数byMainDevStopBuzzer(主机停止蜂鸣)、使用512个保留字节新增byReaderStopBuzzer(联动读卡器停止蜂鸣)。
20. 新增多重卡认证模式参数V50，接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig，命令：NET_DVR_GET_MULTI_CARD_CFG_V50(获取多重卡参数V50)和(NET_DVR_SET_MULTI_CARD_CFG_V50(设置多重卡参数V50)，对应结构结构体NET_DVR_MULTI_CARD_CFG_V50(重卡认证模式参数V50参数)。新增结构体NET_DVR_GROUP_COMBINATION_INFO_V50。
21. 获取门禁主机总能力集(AccessControl， 对应接口：NET_DVR_STDXMLConfig，新增节点：<isSupportWiegandRuleCfg>(是否支持韦根规则配置)、<isSupportM1CardEncryptCfg>(是否支持M1卡加密验证功能配置)、<isSupportDeployInfo>(是否支持布防信息获取)、<isSupportSubmarineBack>(是否支持反潜回服务器配置)、<isSupportDeployInfo>(是否支持布防信息获取)、<isSupportSubmarineBackHostInfo>(是否支持加入反潜回主机配置)、<isSupportStartReaderInfo>(是否支持起始读卡器配置)、<isSupportSubmarineBackReader>(是否支持反潜回读卡器配置)、<isSupportServerDevice>(是否支持服务器配置)、<isSupportReaderAcrossHost>(是否支持读卡器跨主机反潜回配置)、<isSupportClearCardRecord>(是否支持服务器跨主机反潜回刷卡记录清除)、<isSupportSubmarineBackMode>(是否支持反潜回模式配置)、<isSupportClearSubmarineBack>(是否支持跨主机反潜回信息清除)。
22. 门禁事件获取能力集(GetAcsEvent，对应接口：NET_DVR_STDXMLConfig，新增节点：<EventCond>(事件获取查询条件)。
23. 新增错误码(对应接口：NET_DVR_GetLastError)： 1922 、1923、1924。
24. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展，<buzzerTime >(蜂鸣时间)、<isSupportAlarmOutClose >(否支持关联报警输出关闭)、<isSupportAlarmInSetup >(是否支持关联防区布防)、<isSupportAlarmInClose>(是否支持关联防区撤防)、<isSupportMainDevStopBuzzer >(是否支持主机停止蜂鸣)、<isSupportReaderStopBuzzer>(是否支持联动读卡器停止蜂鸣)、<SubmarinebackCommBreak >(与反潜回服务器通信断开)、<SubmarinebackCommResume>(与反潜回服务器通信恢复)、<RemoteActualGuard>(远程实时布防)、<RemoteActualUnguard>(远程实时撤防)、<FirstCardAuthorizeBegin>(首卡授权开始)、<FirstCardAuthorizeEnd>(首卡授权结束)、<FirstCardOpenWithoutAuthorize>(首卡未授权开门失败)、<DoorOpenOrDormantFail>(门状态常闭或休眠状态认证失败)、<AuthPlanDormantFail>(认证计划休眠模式认证失败)、<CardEncryptVerifyFail>(卡加密校验失败)、<SubmarinebackReplyFail>(反潜回服务器应答失败)、<callbackMode >(回调方式)、<DelFingerPrint>(删除指纹参数)、<delFingerPrintMode >(删除指纹方式)、<FingerPrintStatus >(删除指纹状态)、<isSupportGetDeviceEvent>(设备事件获取)、<isSupportDeployType>(支持的布防类型)。
25. 设备网络参数能力集(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展，<alarmHost2IpAddrType >(IP地址类型)、<alarmHost2IpPort >(IP地址类型)、<enableDNS>(DNS使能)。
V5.2.7.15
build20170316 		CVR V2.3.2-6 1.新增一键配置SAN功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_ONE_KEY_CONFIG_SAN_V50、NET_DVR_ONE_KEY_CONFIG_SAN。
2. 网络能力集(NetworkCap，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<ResourceIPCap>(是否支持IP资源)。
3.新增硬盘管理参数V50(按组号)功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_HDCFG_V50、NET_DVR_SET_HDCFG_V50。
4. 新增人脸比对约束条件参数配置(对应接口:NET_DVR_STDXMLConfig)：
命令：能力集：GET /ISAPI/System/Network/ResourceIPConfiguration/capabilities
获取：GET /ISAPI/System/Network/ResourceIPConfiguration
设置：PUT /ISAPI/System/Network/ResourceIPConfiguration。
5. NET_DVR_ETHERNET_V30，使用一个保留字节新增参数：byEthernetPortNo(网口号)。
6. NET_DVR_ETHERNET_MULTI，使用一个保留字节新增参数：byEthernetPortNo(网口号)。
7. NET_DVR_ETHERNET_V30，使用一个保留字节新增参数：byEthernetPortNo(网口号)。
8. NET_DVR_ONE_BONDING，使用13个保留字节新增参数：byBondMode(绑定方式)、byBond2（使用eh4）。
9. CVR设备能力集(CVRAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<OneKeyConfigSANV50>(是否支持一键配置SAN—V50)。
10. 磁盘相关能力HardDiskAbility(磁盘相关能力集)，新增节点：<HDCfgV50>和<HDVolumeInfo>。
11. 设备网络应用参数能力集(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展：
1) 节点<NetworkInterfaceEntry>中新增子节点：<EthernetPortNo>(网口号)；
2) 新增节点: <BondCfg>(网卡绑定配置能力)。
12. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility)扩展，新增节点：<HeightFilterOverlay>(高度叠加)，<isSupportPosInfoOverlay>(是否支持字符叠加)。
V5.2.7.15
build20170316 		小超脑人体识别NVR
iDS-9632NX-I8/S
V3.4.92
 1. 新增智能检测报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
报警信息类型：COMM_VCA_ALARM，当前支持人体目标识别报警信息("recognitionType": "human")。
2. 新增人体检索功能(对应接口：NET_DVR_STDXMLConfig)：
上传图片分析：POST /ISAPI/Intelligent/analysisImage/human；
全部通道检索：POST /ISAPI/Intelligent/humanRecognition/Search/channels；
指定通道检索：POST /ISAPI/Intelligent/humanRecognition/Search/channels/<ID>。
3. NET_DVR_SETUPALARM_PARAM(报警布防参数)使用1个保留字节新增参数：byAlarmTypeURL(报警图片数据类型)。
4. NET_VCA_FIELDDETECION(区域入侵侦测配置)、NET_VCA_TRAVERSE_PLANE_DETECTION(越界侦测配置)、NET_DVR_REGION_ENTRANCE_DETECTION(进入区域侦测配置)、NET_DVR_REGION_EXITING_DETECTION(离开区域侦测配置)分别使用1个保留字节新增参数：byEnableHumanMisinfoFilter(启用人体去误报)。
5. NET_DVR_BEHAVIOUR_COND(异常行为识别搜索条件)使用1个保留字节新增参数：byHumanMisinfo(是否只获取人体误报信息)。
6. NET_DVR_PTZ_NOTIFICATION_COND(事件联动PTZ配置条件)中byEventType(事件类型)新增取值：22-人体目标识别。
7. 进入区域侦测能力集(RegionEntrance，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES)扩展，新增节点：<isSupportHumanMisinfoFilter>(是否支持人体去误报)。
8. 离开区域侦测能力集(RegionExiting，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_REGION_EXITINT_CAPABILITIES)扩展，新增节点：<isSupportHumanMisinfoFilter>(是否支持人体去误报)。
9. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<TraversingVirtualPlane>(越界侦测能力)和<FieldDetection>(区域入侵侦测能力)分别新增节点：<isSupportHumanMisinfoFilter>(是否支持人体去误报)。
10. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展，<SmartPicSearchInfo>(智能图片搜索能力)节点：<isSupportHumanMisinfo>(只获取人体误报信息能力)。
11. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增报警日志次类型：MINOR_HUMAN_RECOGNITION_ALARM_BEGIN、MINOR_HUMAN_RECOGNITION_ALARM_END。
12. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：856。
13. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：IDS_96XX_NX_S。
V5.2.7.15
build20170316 		网络摄像机 V5.4.5
监舍全景版本
DS-2CD6700FWD-I(S) 		1. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)扩展：
1) byCaptureModeN、byCaptureModeP(视频输入模式)新增取值：144-3008*2160@25fps、145-3008*2160@30fps。
2) 使用5个保留字节新增参数：byDistortionCorrectionLevel(畸变校正等级)、byCalibrationAccurateLevel(畸变校正强度)、byZoomedInDistantViewLevel(远端放大等级)、byHorizontalFOV(水平视场角)、byVerticalFOV(垂直视场角)。
2. NET_DVR_FILECOND_V40(录像文件查找条件)中dwFileType(文件类型)和NET_DVR_FINDDATA_V40(录像文件查找结果)中byFileType(文件类型)分别新增取值：47-起身检测、48-折线攀高、49-如厕超时。
3. NET_DVR_RECORDSCHED_V40(时间段录像参数)和NET_DVR_RECORDDAY_V40(全天录像参数)中byRecordType(录象类型)分别新增取值：43-起身检测、44-折线攀高、45-如厕超时。
4. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x2a-起身检测、0x2b-折线攀高、0x2c-如厕超时。
5. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增操作日志次类型：MINOR_VCA_GET_UP_ALARM_BEGIN(起床检测报警开始)、MINOR_VCA_GET_UP_ALARM_END(起床检测报警结束)、MINOR_VCA_ADV_REACH_HEIGHT_ALARM_BEGIN(折线攀高报警开始)、MINOR_VCA_ADV_REACH_HEIGHT_ALARM_END(折线攀高报警结束)、MINOR_VCA_TOILET_TARRY_ALARM_BEGIN(如厕超时报警开始)、MINOR_VCA_TOILET_TARRY_ALARM_END(如厕超时报警结束)。
6. 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展：
1) <captureModePWithIndex>和<captureModeNWithIndex>(视频输入模式)增加取值：142-2992*2192@25fps、143-2992*2192@30fps。
2) <LensDistortionCorrection>(镜头畸变校正能力)中新增子节点：<level>(畸变矫正等级)、<accurateLevel>(畸变矫正强度)、<zoomedInDistantViewLevel>(远端放大等级)、<horizontalFOV>(水平视场角)、<verticalFOV>(垂直视场角)。
7. 设备通道输入能力集(ChannelInputAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<RecordPlan>和<RecordQuery>中子节点<supportRecordType>(支持录像类型)分别新增取值：vcaEventGetUp,vcaEventAdvReachHeight,vcaEventToiletTarry(起身检测,折线攀高,如厕超时)。
8. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展，<supportFileType>(支持图片类型)新增取值：vcaEventGetUp,vcaEventAdvReachHeight,vcaEventToiletTarry(起身检测,折线攀高如厕超时)。
9. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，<SoftwareCapability>(软件能力)中新增子节点：<isSupportPrisonPanorama>(是否是监舍全景相机)。
V5.2.7.15
build20170316 		超脑ATM项目 V3.4.80
DS-8100AHQ(L)-E4、
iDS-8100AHQXL-E4、
DS-FT00CGA-QL 		1. NET_DVR_FACEDETECT_RULECFG_V41和NET_DVR_FACEDETECT_RULECFG(人脸检测规则配置)分别使用4个保留字节新增参数：dwEventTypeEx(警戒事件类型扩展)。
2. NET_DVR_FACEDETECT_ALARM(人脸检测报警上传)中byAlarmPicType(报警图片类型)新增取值：3-戴墨镜人脸、4-打电话人脸。
3. ATM_PROTO_TYPE(ATM协议类型)新增枚举类型：ATM_PROTO_ICBC、ATM_PROTO_PSBC。
4. NET_DVR_SEARCH_EVENT_PARAM_V40(事件查询条件参数)和NET_DVR_SEARCH_EVENT_RET_V40(事件查询结果)，BEHAVIOR_MINOR_TYPE主类型对应的次类型新增取值：EVENT_SUNGLASSES_FACE_INFO、EVENT_CALLING_FACE_INFO。
5. NET_DVR_VCA_CTRLINFO_CFG(智能控制参数)使用8个保留字节新增参数：wRelatedChannel[NET_SDK_MAX_RELATED_CHAN_NUM](关联通道号)。
6. 智能通道控制能力集(VcaCtrlAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<VcaCtrlTypeEntry>(ATM能力)新增子节点：<RelatedChannel>(关联通道能力)。
7. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中的<Face>(人脸能力)扩展：
1) <FaceDetect>(人脸侦测)中<eventType>(事件类型)新增取值：sunglassesFace-戴墨镜人脸、callFace-打电话人脸。
2) <FaceInPicture>(人脸画中画)新增子节点：<IPChannel>(是否支持IP通道能力)。
8. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：2110。
9. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：DS_81XXAHQ_E4、IDS_81XXAHQ_E4。
V5.2.7.15
build20170316 		专业智能产品
DS-2CD8426FWD/F-I、
DS-2CD8426FWD/C-I、
DS-2CD8426FWD/B-I 		1. 新增人脸比对联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FACECONTRAST_TRIGGER、NET_DVR_SET_FACECONTRAST_TRIGGER。
2. 新增人脸比对布防时间配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_FACECONTRAST_SCHEDULE_CAPABILITIES。
3. 新增人脸比对布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FACECONTRAST_SCHEDULE、NET_DVR_SET_FACECONTRAST_SCHEDULE。
4. 新增人脸比对库创建、修改、删除等管理功能(对应接口：NET_DVR_STDXMLConfig)：
创建：POST /ISAPI/Intelligent/FDLib；
单个删除：DELETE /ISAPI/Intelligent/FDLib/<FDID>；
批量查询：GET /ISAPI/Intelligent/FDLib；
单个查询：GET /ISAPI/Intelligent/FDLib/<FDID>；
批量修改：PUT /ISAPI/Intelligent/FDLib；
单个修改：PUT /ISAPI/Intelligent/FDLib/<FDID>。
5. 新增图片数据附加信息管理功能(对应接口：NET_DVR_STDXMLConfig)：
获取：GET /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>；
设置：PUT /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>；
删除：DELETE /ISAPI/Intelligent/FDLib/<FDID>/picture/<PID>。
6. 新增查询人脸比对库里的图片数据的功能(对应接口：NET_DVR_STDXMLConfig)：
命令：POST /ISAPI/Intelligent/FDLib/FDSearch。
7. 新增查询设备端存储的人脸比对结果信息的功能(对应接口：NET_DVR_STDXMLConfig)：
命令：POST /ISAPI/Intelligent/FDLib/FCSearch。
8. 新增导入人脸数据到人脸库的功能(对应接口：NET_DVR_UploadFile_V40等)：
命令：IMPORT_DATA_TO_FACELIB。
9. 新增导入人脸数据文件到人脸库的功能(对应接口：NET_DVR_UploadFile_V40等)：
命令：UPLOAD_FD_DATA。
10. 新增导出人脸数据文件的功能(对应接口：NET_DVR_StartDownload等)：
命令：NET_SDK_DOWNLOAD_FD_DATA。
11. 人脸比对结果上传信息扩展：
1) NET_VCA_FACESNAP_MATCH_ALARM(非授权名单比对结果报警)使用8个保留字节新增参数：dwModelDataLen(建模数据长度)、pModelDataBuffer(建模数据指针)。
2) NET_VCA_FACESNAP_INFO_ALARM(人脸抓拍信息)使用9个保留字节新增参数：byAgeDeviation(年龄误差值)、dwUIDLen(上传报警标识的长度)、pUIDBuffer(上传报警标识数据指针)。
3) NET_VCA_BLOCKLIST_INFO_ALARM(非授权名单报警信息)使用8个保留字节新增参数：dwFDIDLen(人脸库ID长度)、pFDID(人脸库ID数据指针)。
4) NET_VCA_HUMAN_ATTRIBUTE(人员信息)使用8个保留字节新增参数：dwPersonInfoExtendLen(人员标签信息扩展长度)、pPersonInfoExtend(人员标签信息扩展数据指针)。
12. 人脸抓拍结果上传信息扩展，NET_VCA_HUMAN_FEATURE(人体属性)使用2个保留字节新增参数：byAge(年龄)、byAgeDeviation(年龄误差值)。
13. NET_DVR_SEND_PARAM_IN(数据发送输入参数)使用5个保留字节新增参数： pSendAppendData(发送图片的附加信息缓冲区)、dwSendAppendDataLen(发送图片的附加信息数据长度)。
14. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)扩展，新增节点：<HumanAttributeTriggerCap>(人体属性)、<FaceContrastTriggerCap>(人脸比对)。
15. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，<SoftwareCapability>(软件能力)中新增子节点：<isSupportNewFaceResult>(是否支持新的方式表示年龄段)。
16. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增操作日志次类型：MINOR_LOCAL_FACE_BASE_CREATE、MINOR_REMOTE_FACE_BASE_CREATE、MINOR_LOCAL_FACE_BASE_MODIFY、MINOR_REMOTE_FACE_BASE_MODIFY、MINOR_LOCAL_FACE_BASE_DELETE、MINOR_REMOTE_FACE_BASE_DELETE、MINOR_LOCAL_FACE_DATA_SEARCH、MINOR_REMOTE_FACE_DATA_SEARCH、MINOR_LOCAL_FACE_DATA_ANALYSIS、MINOR_REMOTE_FACE_DATA_ANALYSIS。
17. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：846、848、848、850。
V5.2.7.15
build20170316 		视频报警主机V2.0.2
DS-19S08-BNG、
DS-19S08-BN、
DS-29S08-04BN、
DS-29S08-04BNG、
DS-29S16-04BN、
DS-29S16-04BNG
1. NET_DVR_EZVIZ_ACCESS_CFG(EZVIZ接入参数)使用1个保留字节新增参数：byNetMode(网络模式)。
2. NET_DVR_ALARMHOST_CID_MINOR_TYPE(CID报警次类型枚举)新增：CID_DATE_TRAFFIC_OVERFLOW(流量超额)。
3. NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40(报告上传参数配置),其中参数byNonZoneReport新增取值：byNonZoneReport[12]-视频报警报告。
4. NET_DVR_ALARM_PHONECFG(报告上传授权名单配置)其中参数dwNonZoneReport新增取值：bit-12视频报警报告。
5. 报警主机设备能力集(SecurityCPCapabilities，对应接口：NET_DVR_STDXMLConfig，能力集类型：SecurityCPCapabilities)新增：<DataTrafficAlert>(是否支持流量提醒配置)。
6. 设备协议接入能力集(AccessProtocolAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO扩展，<AlarmHostAbility>(报警主机能力集)中<EzvizParam>新增子节点：<netMode>(网络模式)。
7. 获取报警主机XML能力集(报警主机能力集XML描述(AlarmHostAbility)，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展：
1) <AlarmHostAbility>(报警主机能力集)中子节点<DialSchedule>新增取值：hideConfig(拨号计划配置是否关闭显示)。
2) <NetParameter>中<reportProtocol>新增取值：ehome(ehome协议)。
3) <ReportModeConfig>中<uploadNonZoneReport> 新增取值：videoAlarmReport(视频报警报告)。
4) <AllowList>中<noneZoneReport > 新增取值：videoAlarmReport(视频报警报告)。
5) <ZoneLinkageChannel>中新增取值：enable(是否支持防区联动视频通道)。
V5.2.7.10
build20170302 		全景细节摄像机
iDS-2PT9122IX-D/S V5.4 		1. 新增人体目标识别配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/capabilities；
获取：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition；
设置：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition；
区域获取(批量)：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions；
区域设置(批量)：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions；
区域获取(单个)：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions/<ID>；
区域设置(单个)：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition/regions/<ID>。
2. 新增人体目标识别图片参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/picParam/capabilities；
获取：GET /ISAPI/Intelligent/channels/<ID>/humanRecognition/picParam；
设置：PUT /ISAPI/Intelligent/channels/<ID>/humanRecognition/picParam。
3. 新增人体目标识别布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE_CAPABILITIES。
4. 新增人体目标识别布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE、NET_DVR_SET_HUMAN_RECOGNITION_SCHEDULE。
5. 新增人体目标识别联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_HUMAN_RECOGNITION_TRIGGER、NET_DVR_SET_HUMAN_RECOGNITION_TRIGGER。
6. VCA_CHAN_ABILITY_TYPE(智能通道能力类型)新增枚举类型：VCA_HUMAN_RECOGNITION(人体目标识别)。
7. NET_VCA_DEV_ABILITY(智能设备能力集)使用1个保留字节新增参数：byHumanRecognitionNum(人体目标识别通道个数)。
8. 通道属性信息(ChannelInfoList，对应接口：NET_DVR_STDXMLConfig)新增节点：<PanoramaCamera>(全景细节通道)。
9. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)扩展，新增节点：<HumanRecognitionTriggerCap>(人体目标识别)。
10. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<HumanRecognition>(人脸目标识别)。
11. 智能通道控制能力集(VcaCtrlAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<VcaCtrlTypeEntry>(人体目标识别能力)。
12. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：1106。
13. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：iDS_PT。
V5.2.7.5
build20170217 		刀锋 V1.1.1
DS-GPKIB0000-V、DS-IB0000-V 		1. 车辆二次识别任务提交V50扩展(对应接口：NET_DVR_SetDeviceConfigEx)：
命令：NET_DVR_SET_VEHICLE_RECOG_TASK_V50。
2. NET_DVR_VEHICLE_RECOG_RESULT(车辆二次识别结果信息)使用75个保留字节新增参数：byVehicleModel(车辆子品牌年款)、wVehicleLogoRecog(车辆主品牌)、struVehicleRect(车身矩形坐标)、struPilotRect(主驾驶矩形坐标)、struCopilotRect(副驾驶矩形坐标)、pJsonBuffer(Json数据指针)、dwJsonBufferLen(Json数据长度)、dwPostID(卡口ID)、struPostTime(过车时间)。
3. NET_DVR_VEHICLE_RECOG_CFG(车辆二次识别任务配置)使用24个保留字节新增参数：dwPostID(卡口ID)、struPostTime(过车时间)、dwJsonLen(Json数据长度)、pJsonBuffer(Json数据指针)。
4. NET_DVR_VEHICLE_RECOG_TASK_COND(车辆二次识别任务信息查询条件)使用64个保留字节新增参数：sDevDataIndex[MAX_DEV_DATAINDEX_LEN](设备数据流水号)。
5. NET_DVR_VEHICLE_RECOG_TASK_INFO(车辆二次识别任务信息)使用24个保留字节新增参数：dwPostID(卡口ID)、struPostTime(过车时间)、dwJsonLen(Json数据长度)、pJsonBuffer(Json数据指针)。
6. 车辆二次识别检测能力集(VehicleRecogAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<isSupportJSON>(是否支持JSON透传)、<isSupportVehRecogTaskV50>(是否支持二次识别任务提交V50扩展)。
V5.2.7.3
build20170118 Linux32&Linux64 		Linux版本基线项目 1. 新增组件和依赖库加载路径配置功能(对应接口：NET_DVR_SetSDKInitCfg)：
参数类型：NET_SDK_INIT_CFG_SDK_PATH。
2. 新增设置录像文件限制大小功能(对应接口：NET_DVR_GetSDKLocalCfg和NET_DVR_SetSDKLocalCfg)：
配置类型：NET_DVR_LOCAL_CFG_TYPE_GENERAL。
3. 新增回放阻塞抓图接口：NET_DVR_CapturePlaybackPictureBlock_New，NET_DVR_SetCapturePictureMode扩展支持设置回放抓图的JPEG或BMP模式。
4. 新增预览阻塞抓图接口：NET_DVR_CapturePictureBlock_New、NET_DVR_CapturePictureBlock。
5. 新增预览裸码流回调功能接口：NET_DVR_SetESRealPlayCallBack。同时开放回放裸码流回调功能接口：NET_DVR_SetPlayBackESCallBack。
6. 新增预览窗口发生改变时下发通知给播放库的接口：NET_DVR_ChangeWndResolution。
7. 新增回放窗口发生改变时下发通知给播放库的功能(对应接口：NET_DVR_PlayBackControl_V40)：
命令：NET_DVR_CHANGEWNDRESOLUTION。
8. Linux 64版本，预览和回放接口新增支持SDK内部播放库解码功能，即可以传入有效的窗口句柄直接预览。
9. NET_DVR_SetConnectTime连接的超时时间默认值修改为3500毫秒。
V5.2.6.30
build20170117 		DS-PM08-RS
防区模块 V1.0 		1. 新增查询防区模块的功能，对应接口：NET_DVR_StartRemoteConfig，输入参数lpInBuffer对应的4字节模块类型新增取值：3-防区。
2. NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM(辅助设备升级条件)中byDevType(升级设备类型)新增取值：4-防区。
3. NET_DVR_ALARMHOST_SEARCH_LOG_PARAM和NET_DVR_ALARMHOST_LOG_RET中的wMinorType(报警主机日志次类型)扩展：
新增报警次类型：MINOR_ZONE_MODULE_REMOVE、MINOR_ZONE_MODULE_RESET；
新增异常次类型：MINOR _ZONE_MODULE_LOSS、MINOR _ZONE_MODULE_RESTORE；
新增操作次类型：MINOR_ALARMHOST_REMOTE_ZONE_MODULE_UPGRADE。
4. 网络报警主机XML能力集(AlarmHostAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<ModuleList>(模块信息能力)中子节点<moduleType>新增取值：zone(防区)。
5. 设备网络应用参数能力集(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展，<AuxiliaryDevUpgrade>(辅助设备升级)中子节点<devType>新增取值：zone(防区)。
V5.2.6.30
build20170117 		小超脑人脸抓拍NVR
iDS-9600NX-I8/FA
V3.4.90 		1. 新增非授权名单人脸比对联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_BLOCKLIST_FACECONTRAST_TRIGGER、NET_DVR_SET_BLOCKLIST_FACECONTRAST_TRIGGER。
2. 新增授权名单人脸比对联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ALLOWLIST_FACECONTRAST_TRIGGER、NET_DVR_SET_ALLOWLIST_FACECONTRAST_TRIGGER。
3. 新增非授权名单人脸比对布防时间配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE_CAPABILITIES。
4. 新增非授权名单人脸比对布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE、NET_DVR_SET_BLOCKLIST_FACECONTRAST_SCHEDULE。
5. 新增授权名单人脸比对布防时间配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE_CAPABILITIES。
6. 新增授权名单人脸比对布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE、NET_DVR_SET_ALLOWLIST_FACECONTRAST_SCHEDULE。
7. 新增人脸比对配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/channels/<ID>/faceContrast/capabilities；
获取：GET /ISAPI/Intelligent/channels/<ID>/faceContrast；
设置：PUT /ISAPI/Intelligent/channels/<ID>/faceContrast。
8. 新增人脸比对库能力集(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Intelligent/FDLib/capabilities。
9. 新增导入人脸图片数据到人脸库的功能(对应接口：NET_DVR_UploadFile_V40)：
上传类型：UPLOAD_FACE_DATA。
10. 新增导入图片数据到设备进行人脸抓拍的功能(对应接口：NET_DVR_UploadFile_V40)：
上传类型：UPLOAD_FACE_ANALYSIS_DATA。
11. NET_DVR_FACE_PIC_DATA_INFO(人脸子图信息查询条件)使用89个保留字节新增参数：byVcaRectOnly(是否使用上传图片ID和坐标的方式)、dwPID(图片ID)、dwFaceSearchNum(搜索人脸区域个数)、struMultiVcaRect[NET_DVR_MAX_FACE_SEARCH_NUM](子图在大图中的坐标位置)。
12. 人脸比对结果上传信息扩展：
1) NET_VCA_FACESNAP_MATCH_ALARM(非授权名单比对结果报警)使用26个保留字节新增参数：byMatchPicNum(匹配图片的数量)、byPicTransType(图片数据传输方式)、dwSnapPicLen(设备识别抓拍图片长度)、pSnapPicBuffer(设备识别抓拍图片指针)、struRegion(人脸子图坐标)。
2) NET_VCA_FACESNAP_INFO_ALARM(人脸抓拍信息)使用3个保留字节新增参数：bySex(性别)、byGlasses(是否带眼镜)、byAge(年龄)。
13. NET_DVR_ALRAM_FIXED_HEADER(报警信息固定部分参数)和NET_DVR_ALARMINFO_V30(报警信息)中dwAlarmType(报警信息类型)分别新增取值：24-人脸库硬盘异常、25-人脸库变更、26-人脸库图片变更。
14. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)扩展，新增节点：<allowListFaceContrastTriggerCap>(非授权名单人脸比对)、<blockListFaceContrastTriggerCap>(授权名单人脸比对)。
15. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<FaceSnap>(人脸抓拍能力)新增子节点：<faceFilteringTime>(人脸停留时间过滤)、<FaceContrast>(人脸比对)。
16. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展，<SmartPicSearchInfo>(智能图片搜索)新增子节点：<isSupportFaceDataAnalysis>(是否支持人脸数据分析)。
17. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增操作日志次类型：MINOR_LOCAL_FACE_DATA_APPEND(本地录入人脸数据)、MINOR_REMOTE_FACE_DATA_APPEND(远程录入人脸数据)。
18. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：843、844、847。
V5.2.6.30
build20170117 		录播主机项目 V2.2.0
DS-8104LHFH-E2、
DS-8604LN-E2、
DS-8104LHFH-F2、
DS-8604LN-F2、
DS-8104LHFHI-F2、
DS-8604LNI-F2、
DS-8104LHFH-E2/RTJ 		1. NET_DVR_RECORDING_HOST_CFG(录播主机配置结构体)中byDirectedMode(导播模式)新增取值：2-半自动导播。
2. NET_DVR_TERMINAL_INPUT_CFG(终端视频会议输入参数结构体)中使用1个保留字节新增：byStreamType(码流类型)。
3. NET_DVR_RECORD_STATUS(课程状态结构体)中使用4个保留字节新增：dwRecordingTime(已录制时长)。
4. 新增人体参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/HumanInformation/capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/HumanInformation；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/HumanInformation。
5. 录播主机参数配置能力集(ClassDataStatisticCfg，对应接口：NET_DVR_STDXMLConfig，对应URL：GET /ISAPI/ContentMgmt/RecordingHost/hostParam/capabilities)扩展，directMode新增取值：semiAuto(半自动)。
6. 录播主机参数配置能力集(InputConfig，对应接口：NET_DVR_GetSTDAbility，对应命令：NET_DVR_GET_TERMINAL_INPUT_CFG_CAP，对应URL：GET /ISAPI/VCS/terminals/inputConfig/capabilities)扩展，新增子节点：streamType(码流类型)。
7. 录播主机总能力集(RecordHostCap，对应接口：NET_DVR_GetSTDAbility，对应命令：NET_DVR_GET_RECORD_HOST_CAP)扩展，新增子节点：isSupportHumanInformation(是否支持人体参数配置)。
V5.2.6.25 build20170104 win32 视频门禁一体机 V1.1
DS-K1T500S、DS-K1T500SF等系列 		1. NET_DVR_SEARCH_EVENT_PARAM_V40（按事件搜索的条件参数结构体），新增结构体：struACSAlarm(门禁事件搜索条件)。
2. NET_DVR_ACS_ALARM_INFO（门禁主机报警信息结构体）， MAJOR_EVENT类型中扩展：MINOR_LEGAL_MESSAGE(合法短信)、MINOR_ILLEGAL_MESSAGE(非法短信)、MINOR_MAC_DETECT(MAC侦测)。
3. NET_DVR_EVENT_LINKAGE_INFO（事件联动参数结构体）， 新增：byMACAddr（物理MAC地址）。
4. NET_DVR_ACS_CFG（门禁主机参数配置结构体）， 占用两个保留字节新增：byEnable3G4G(3G4G使能)。
5. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)， 节点<AcsHostCfg>：新增enable3G4G(3G4G使能)；节点<EventLinkage>：中 supportMode扩展取值：MAC（mac地址联动），新增：isSupportRecordVideo（是否支持联动录像）；节点<SubEventNameList>：新增:MacDetect(MAC侦测)、LegalMessage(合法短信)、IllegalMessage（非法短息）； 节点<SMS>：新增allowListNum (授权名单数量)。
6. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)，扩展 ：AutoStorageMode(是否支持自动存储模式)、SDCardUnlockTime（SD卡解锁时间）、isSupportConfirmMechanism（是否支持布防确认机制）、isSupportUploadCountBinocular（支持表示双目客流相机矫正表上传）。
V5.2.6.25
build20170104 		网络摄像机 V5.4.5
安全版本升级 		1. NET_DVR_EZVIZ_ACCESS_CFG(EZVIZ接入参数配置)使用32个字节新增参数：byVerificationCode(萤石云验证码)。
2. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增操作日志次类型：MINOR_REMOTE_MODIFY_VERIFICATION_CODE(修改平台的验证码)。
3. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：1111、1112。
4. 设备协议接入能力集(AccessProtocolAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<EzvizParam>(萤石云参数能力)新增子节点：<VerificationCode>(配置验证码能力)。
V5.2.6.15
build20161221 		人脸抓拍门禁一体机 V1.0
DS-K1T600X 		1. 新增采集指纹信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_CAPTURE_FINGERPRINT_INFO。
2. 新增采集人脸信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_CAPTURE_FACE_INFO。
3. 新增读卡器参数配置V50扩展命令(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_CARD_READER_CFG_V50、NET_DVR_SET_CARD_READER_CFG_V50。
4. 抓拍分辨率(包括联动抓拍和手动抓拍)扩展：
1) SnapConfig中节点<pictureSize>新增取值：161-288*320、162-144*176、163-480*640、164-240*320、165-120*160、166-576*720、167-720*1280、168-576*960。
2) NET_DVR_JPEGPARA(JPEG图像信息)中wPicSize(图片尺寸)新增取值：161-288*320、162-144*176、163-480*640、164-240*320、165-120*160、166-576*720、167-720*1280、168-576*960。
5. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)中dwMinor(次类型)扩展：
1) 新增报警次类型：MINOR_FACE_IMAGE_QUALITY_LOW、MINOR_FINGE_RPRINT_QUALITY_LOW。
2) 新增异常次类型：MINOR_BATTERY_ELECTRIC_LOW、MINOR_BATTERY_ELECTRIC_RESUME、MINOR_LOCAL_LOGIN_LOCK、 MINOR_LOCAL_LOGIN_UNLOCK。
3) 新增事件次类型：MINOR_FACE_AND_FP_VERIFY_PASS、MINOR_FACE_AND_FP_VERIFY_FAIL、MINOR_FACE_AND_FP_VERIFY_TIMEOUT、MINOR_FACE_AND_PW_VERIFY_PASS、MINOR_FACE_AND_PW_VERIFY_FAIL、MINOR_FACE_AND_PW_VERIFY_TIMEOUT、MINOR_FACE_AND_CARD_VERIFY_PASS、MINOR_FACE_AND_CARD_VERIFY_FAIL、MINOR_FACE_AND_CARD_VERIFY_TIMEOUT、MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS、MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL、MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT、MINOR_FACE_CARD_AND_FP_VERIFY_PASS、MINOR_FACE_CARD_AND_FP_VERIFY_FAIL、MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT、MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS、MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL、MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT、MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS、MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL、MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT、MINOR_FACE_VERIFY_PASS、MINOR_FACE_VERIFY_FAIL、MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS、MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL、MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT、MINOR_FACE_RECOGNIZE_FAIL、MINOR_HUMAN_DETECT_FAIL。
6. NET_DVR_EVENT_LINKAGE_INFO(事件联动参数)中wSubEventType(事件次类型)扩展：
1) 新增设备事件次类型：EVENT_ACS_IMAGE_QUALITY_LOW、EVENT_ACS_FINGER_PRINT_QUALITY_LOW、EVENT_ACS_BATTERY_ELECTRIC_LOW、EVENT_ACS_BATTERY_ELECTRIC_RESUME。
2) 新增读卡器事件次类型：EVENT_ACS_FACE_VERIFY_PASS、EVENT_ACS_FACE_VERIFY_FAIL、EVENT_ACS_FACE_AND_FP_VERIFY_PASS、EVENT_ACS_FACE_AND_FP_VERIFY_FAIL、EVENT_ACS_FACE_AND_FP_VERIFY_TIMEOUT、EVENT_ACS_FACE_AND_PW_VERIFY_PASS、EVENT_ACS_FACE_AND_PW_VERIFY_FAIL、EVENT_ACS_FACE_AND_PW_VERIFY_TIMEOUT、EVENT_ACS_FACE_AND_CARD_VERIFY_PASS、EVENT_ACS_FACE_AND_CARD_VERIFY_FAIL、EVENT_ACS_FACE_AND_CARD_VERIFY_TIMEOUT、EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_PASS、EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_FAIL、EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT、EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_PASS、EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_FAIL、EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_TIMEOUT、EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_PASS、EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_FAIL、EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT、EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS、EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL、EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT、EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_PASS、EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_FAIL、 EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT、EVENT_ACS_FACE_RECOGNIZE_FAIL、EVENT_ACS_HUMAN_DETECT_FAIL。
7. NET_DVR_SINGLE_PLAN_SEGMENT(计划参数)中byVerifyMode(验证方式)新增取值：10-人脸或指纹或刷卡或密码、12-人脸+密码、16-指纹或密码、17-工号+指纹、18-工号+指纹+密码、20-人脸+密码+指纹、21-工号+人脸。
8. NET_DVR_ACS_WORK_STATUS_V50(门禁主机工作状态)中byCardReaderVerifyMode(读卡器当前验证方式)新增取值类型：10-人脸或指纹或刷卡或密码、11-人脸+指纹、12-人脸+密码、13-人脸+刷卡、14-人脸、16-指纹或密码、17-工号+指纹、18-工号+指纹+密码、19-人脸+指纹+刷卡、20-人脸+密码+指纹、21-工号+人脸。
9. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展：
1) 新增节点：<CaptureFingerPrint>(采集指纹信息能力)、<CaptureFace>(采集人脸信息能力)。
2) <CardReaderVerifyTypePlan>(读卡器验证方式计划能力)中<verifyType>(验证方式)新增取值：faceOrFpOrCardOrPw, faceAndFingerPrint, faceAndPassword, faceAndCard, face, fingerPrintOrPassword, employeeNoAndFp, employeeNoAndFpAndPw, faceAndFpAndCard, faceAndPwAndFp, employeeNoAndface。
3) <AcsWorkStatus>(门禁主机工作状态)中<cardReaderVerifyMode>(当前读卡器验证方式状态)新增取值：faceOrFpOrCardOrPw, faceAndFingerPrint, faceAndPassword, faceAndCard, face, fingerPrintOrPassword, employeeNoAndFp, employeeNoAndFpAndPw, faceAndFpAndCard, faceAndPwAndFp, employeeNoAndface。
4) <CardReaderCfg>(读卡器参数能力)新增子节点：<fingerPrintImageQuality>、<fingerPrintContrastTimeOut>、<fingerPrintRecogizeInterval>、<fingerPrintMatchFastMode>、<fingerPrintModuleSensitive>、<fingerPrintModuleLightCondition>、<faceMatchThresholdN>、<faceQuality>、<faceRecogizeTimeOut>、<faceRecogizeInterval>、<cardReaderFunction>、<cardReaderDescription>、<faceImageSensitometryl>、<livingBodyDetect>、<faceMatchThreshold1>。
5) <EventLinkage>(事件及卡号联动能力)扩展，DevEvent对应的<SubEventNameList>(事件次类型)的子节点<subEventName>(事件名称)新增取值：ImageQualityLow、FingerPrintQualityLow、BatteryElectricLow、BatteryElectricResume，ReaderEvent对应的<SubEventNameList>(事件次类型)的子节点<subEventName>(事件名称)新增取值：FaceVerifyPass、FaceVerifyFail、FaceAndFpVerifyPass、FaceAndFpVerifyFail、FaceAndFpVerifyTimeout、FaceAndPwVerifyPass、FaceAndPwVerifyFail、FaceAndPwVerifyTimeout、FaceAndCardVerifyPass、FaceAndCardVerifyFail、FaceAndCardVerifyTimeout、FaceAndPwAndFpVerifyPass、FaceAndPwAndFpVerifyFail、FaceAndPwAndFpVerifyTimeout、FaceAndCardAndFpVerifyPass、FaceAndCardAndFpVerifyFail、FaceAndCardAndFpVerifyTimeout、EmployeeAndFpVerifyPass、EmployeeAndFpVerifyFail、EmployeeAndFpVerifyTimeout、EmployeeAndFpAndPwVerifyPass、EmployeeAndFpAndPwVerifyFail、mployeeAndFpAndPwVerifyTimeout、mployeeAndFaceVerifyPass、EmployeeAndFaceVerifyFail、EmployeeAndFaceVerifyTimeout、FaceRecognizeFail、EmployeeAndPwVerifyPass、EmployeeAndPwVerifyFail、EmployeeAndPwVerifyTimeout、HumanDetectFail。
6) <ContinuousShootCfg>(抓拍参数能力)的子节点<picSize>(图片尺寸)新增取值：288*320,144*176,480*640,240*320,120*160,576*720,720*1280,576*960。
10. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：1920、1921。
11. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：DS_K1T600X(人脸抓拍门禁一体机)。
V5.2.6.15
build20161221 		智能身份识别终端 V1.0
DS-K5600(A、F、AF) 		1. 新增智能身份识别终端参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/IdentityTerminal/capabilities；
获取：GET /ISAPI/AccessControl/IdentityTerminal；
设置：PUT /ISAPI/AccessControl/IdentityTerminal。
2. 新增人脸参数管理功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_SendRemoteConfig)：
命令：NET_DVR_GET_FACE_PARAM_CFG、NET_DVR_SET_FACE_PARAM_CFG。
3. 新增删除人脸参数功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_DEL_FACE_PARAM_CFG 。
4. 新增查询身份登记信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_REGISTER_INFO。
5. 新增身份证非授权名单模板下载功能(对应接口：NET_DVR_StartDownload)：
下载类型：NET_SDK_DOWNLOAD_CERTIFICATE_BLOCKLIST_TEMPLET。
6. 新增身份证非授权名单列表上传功能(对应接口：NET_DVR_UploadFile_V40)：
上传类型：UPLOAD_CERTIFICATE_BLOCKLIST。
7. 门禁主机总能力集(AccessControl，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<isSupportIdentityTerminal>(是否支持智能身份识别终端参数配置)。
8. NET_DVR_ID_CARD_INFO_ALARM(身份证刷卡信息上传)使用17个保留字节新增参数：byDeviceNo(设备编号)、dwFingerPrintDataLen(指纹数据大小)、pFingerPrintData(指纹数据)、dwCapturePicDataLen(抓拍图片数据大小)、pCapturePicData(抓拍图片数据)。
9. NET_DVR_SINGLE_PLAN_SEGMENT(计划参数)中byVerifyMode(验证方式)新增取值：11-人脸+指纹、13-人脸+刷卡、14-人脸、19-人脸+指纹+刷卡、22-人脸或人脸+刷卡。
10. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)扩展：
1) 新增报警次类型：MINOR_ID_CARD_READER_NOT_CONNECT(身份证阅读器未连接)、MINOR_ID_CARD_READER_RESUME(身份证阅读器连接恢复)、MINOR_FINGER_PRINT_MODULE_NOT_CONNECT(指纹模组未连接)、MINOR_FINGER_PRINT_MODULE_RESUME(指纹模组连接恢复)、MINOR_CAMERA_NOT_CONNECT(摄像头未连接)、MINOR_CAMERA_RESUME(摄像头连接恢复)、MINOR_COM_NOT_CONNECT(COM口未连接)、MINOR_COM_RESUME(COM口连接恢复)、MINOR_DEVICE_NOT_AUTHORIZE(设备未授权)、MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE(人证设备在线)、MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE(人证设备离线)。
2) 新增事件次类型：MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS(人证比对通过)、MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL(人证比对失败)、MINOR_CERTIFICATE_BLOCKLIST(非授权名单事件)。
11. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展，新增节点：<simulateDoorNo>(虚拟门范围)、<FaceParam>(人脸参数能力)、<isSupportUploadCertificateBlockList>(是否支持上传身份证非授权名单)、<isSupportGetRegisterInfo>(是否支持登记信息获取)、<isSupportDownloadCertificateBlockListTemplet>(是否支持下载身份证非授权名单模板)。
12. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：DS_K560XX(立式/台式智能身份识别终端)。
V5.2.6.15
build20161221 		网络摄像机 V5.4.5
FF车牌 		1. NET_DVR_EVENT_TRIGGER(事件联动配置)使用1个字节新增参数：byDirection(触发方向)。
2. 事件触发能力集(EventTriggersCap)中<EventTriggerCapType>(事件触发联动类型)新增节点：<direction>(触发方向)。
3. ITS_OVERLAP_ITEM_TYPE(字符叠加类型)新增枚举类型：OVERLAP_ITEM_CAR_VALIDITY(置信度)。
4. NET_DVR_VEHICLE_INFO_CFG(车辆信息查询结果)使用1个字节新增参数：byMatchingResult(授权和非授权名单匹配结果)。
5. 车辆信息查询结果能力集(VehicleInfoResultCap)中<VehicleInfoResult>(车辆信息结果)新增子节点：<isSupportMatchingResult>(是否支持授权和非授权名单匹配结果)。
6. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)中<VehicleDetection>(车辆侦测能力)和<HVTVehicleDetection>(混行检测能力)扩展：
1) <GuardCfg>(布防参数能力)新增子节点：<direction>(触发方向)。
2) <OverlapCfg>(字符叠加能力)中<OverlapItemParam>-><SingleItem>-><itemType>(字符叠加类型)新增取值：validity(置信度)。
V5.2.6.10
build20161201 		一键紧急报警产品V1.1.0
DS_PEAXX系列
 1. 设备系统总能力DeviceCap新增一键式报警主机能力节点isSupportPEA。(对应接口：NET_DVR_STDXMLConfig)
2. 紧急求助报警产品能力集EmergencyAlarmProductCap新增能力节点：audioInOutCfg、nearInfraredInductionCfg、getAudioFileListByType、deleteAudioFile。
(对应接口：NET_DVR_GetSTDAbility，能力类型：NET_DVR_GET_EMERGENCE_ALARM_PRODUCT_CAP)
3. 新增CID报警次类型枚举对照表，参见NET_DVR_ALARMHOST_CID_MINOR_TYPE
4. 事件触发联动配置能力EventTriggersCap扩展，新增节点<AlarmInCap> <EmergencyCallhelpCap> <ConsultCap>
(对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)
5. 新增获取/设置报警主机防区联动配置功能，对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig
命令：NET_DVR_GET_ALARMIN_TRIGGER、NET_DVR_SET_ALARMIN_TRIGGER。
6. 新增获取/设置报警主机紧急求助联动配置功能，对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig
命令：NET_DVR_GET_EMERGENCY_CALL_HELP_TRIGGER、NET_DVR_SET_EMERGENCY_CALL_HELP_TRIGGER。
7. 新增获取/设置报警主机业务咨询联动配置功能，对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig
命令：NET_DVR_GET_CONSULT_TRIGGER、NET_DVR_SET_CONSULT_TRIGGER。
8. 获取报警主机其他状态功能扩展V50。(对应接口：NET_DVR_GetDVRConfig)
命令：NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50。
9. 防区参数配置扩展V50，对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig
命令：NET_DVR_GET_ALARMIN_PARAM_V50、NET_DVR_SET_ALARMIN_PARAM_V50。
10. 全天录像参数结构体NET_DVR_RECORDDAY_V40和时间段录像参数结构体NET_DVR_RECORDSCHED_V40中录像类型字段byRecordType新增取值：40-防区报警，41-紧急求助，42-业务咨询
11. 新增音频输入输出配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/audioInOutCfg/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/audioInOutCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/audioInOutCfg
12. 上传文件接口NET_DVR_UploadFile功能扩展，新增上传语音文件，对应文件类型：UPLOAD_AUDIO_FILE。
13. 获取文件上传的进度和状态接口NET_DVR_GetUploadState新增返回值：10-文件个数超过上限；11-文件过大；12-文件类型错误(设备支持的后缀为.wav的文件)。
14. 新增语音文件列表相关功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/audioFileList/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/audioFileList/type=?
删除：DELETE /ISAPI/SecurityCP/Control/audioFile/name=?
15. NET_DVR_FILECOND_V40(录像文件查找条件)中dwFileType(文件类型)和NET_DVR_FINDDATA_V40(录像文件查找结果)中byFileType(文件类型)分别新增取值：44-防区报警、45-紧急求助、46-业务咨询。
16. 紧急报警处理控制参数结构体NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG新增参数byType(处理类型)：0-紧急报警，1-业务咨询。
对应接口：NET_DVR_STDControl，命令：NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL
17. 报警主机能力集结构体NET_DVR_ALARMHOST_ABILITY新增字段byAlarmLampNum-警灯数目(对应接口：NET_DVR_GetDeviceAbility)
能力集类型：ALARMHOST_ABILITY。
18. 辅助功能控制扩展，辅助功能类型dwType新增：5-警灯。(对应接口：NET_DVR_AlarmHostAssistantControl)
19. 语音提示配置能力集VoicePromptionCfg扩展，新增能力节点callWaitting、consultWaitting(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_VOICE_PROMPTION_CFG_CAP。
20. 语音提示配置结构体NET_DVR_VOICE_PROMPTION_CFG扩展，新增参数byCallWaittingFile、byConsultWaittingFile，对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig
命令：NET_DVR_GET_VOICE_PROMPTION_CFG、NET_DVR_SET_VOICE_PROMPTION_CFG。
21. 报警主机日志类型扩展，报警类型新增：MINOR_ALARMHOST_CONSULTING_ALARM、MINOR_ALARMHOST_CONSULTING_ALARM_RESTORE；
操作类型新增：MINOR_ALARMHOST_READ_CARD、MINOR_ALARMHOST_START_BROADCAST、MINOR_ALARMHOST_STOP_BROADCAST。详见结构体：NET_DVR_ALARMHOST_SEARCH_LOG_PARAM
22. 报警主机XML能力集AlarmHostAbility新增能力节点：associateLampOut、emergencyCallZone、consultZone；辅助控制节点assistantControl新增警灯：alarmLamp。
对应接口：NET_DVR_GetDeviceAbility，能力类型：DEVICE_ABILITY_INFO
23. 门禁能力集AcsAbility扩展，卡类型cardType新增取值：mastercard,staffcard,normalopencard,cleancard,standbycard；新增能力节点：employeeNo、name、departmentNo、schedulePlanNo、schedulePlanType、lockID、roomCode、cardRight。
对应接口：NET_DVR_GetDeviceAbility，能力类型：ACS_ABILITY
24. IP可视对讲主机能力集IpViewDevAbility扩展，新增能力节点：serverSipPort、isNotSupportLocalPort。
对应接口：NET_DVR_GetDeviceAbility，能力类型：IP_VIEW_DEV_ABILITY
25. 设备网络应用参数能力NetAppAbility扩展，新增能力节点：isNotSupportPassword。
对应接口：NET_DVR_GetDeviceAbility，能力类型：DEVICE_NETAPP_ABILITY
26. 设备通道输入能力ChannelInputAbility扩展，RecordPlan和RecordQuery节点均新增取值：alarmInAlarm,emergencyCallhelpAlarm,consultAlarm。
对应接口：NET_DVR_GetDeviceAbility，能力类型：DEVICE_ABILITY_INFO
27. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：1224、1357、1358。
V5.2.6.10
build20161201 		无线报警主机产品V1.0.0
DS-PWXX无线报警主机系列
 1. 设备系统总能力DeviceCap新增：isSupportSoundCfg(是否支持音频配置节点)、isSupportSecurityCP(是否支持报警主机功能)。(对应接口：NET_DVR_STDXMLConfig)
2. 报警主机设备能力SecurityCPCapabilities新增子节点WirelessSCPCap(无线报警主机)，子节点中新增节点：DetectorCfg(探测器参数配置)、faultAlarmCtrl(设备故障提示音配置)、functionKeyCfg(功能键参数配置)。(对应接口：NET_DVR_STDXMLConfig)
3. 新增设备声音参数配置SoundCfg
(对应接口：NET_DVR_STDXMLConfig，命令：
能力集：GET /ISAPI/System/SoundCfg/capabilities
获取：GET /ISAPI/System/SoundCfg
设置：PUT /ISAPI/System/SoundCfg)
4. 新增防区关联探测器配置ZoneAssociatedDetectorCfg新增子节点ZoneCondList(防区列表)。
(对应接口：NET_DVR_STDXMLConfig，命令：
能力集：GET /ISAPI/SecurityCP/BasicParam/ZoneAssociatedDetectorCfg/capabilitie
获取：POST /ISAPI/SecurityCP/BasicParam/ZoneAssociatedDetectorCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/ZoneAssociatedDetectorCfg)
5. 新增探测器参数配置DetectorCfg新增子节点ZoneCondList(防区列表)。
(对应接口：NET_DVR_STDXMLConfig，命令：
能力集：GET /ISAPI/SecurityCP/BasicParam/DetectorCfg/capabilities
获取：POST /ISAPI/SecurityCP/BasicParam/DetectorCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/DetectorCfg)
6. 新增设备故障提示音配置FaultAlarmCtrl
(对应接口：NET_DVR_STDXMLConfig，命令：
能力集：GET /ISAPI/SecurityCP/BasicParam/FaultAlarmCtrl/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/FaultAlarmCtrl
设置：PUT /ISAPI/SecurityCP/BasicParam/FaultAlarmCtrl)
7. 新增功能键参数配置FunctionKeyCfg
(对应接口：NET_DVR_STDXMLConfig，命令：
能力集：GET /ISAPI/SecurityCP/BasicParam/FunctionKeyCfg/capabilities
获取：GET /ISAPI/SecurityCP/BasicParam/FunctionKeyCfg
设置：PUT /ISAPI/SecurityCP/BasicParam/FunctionKeyCfg)
8. 结构体NET_DVR_CID_ALARM、其中NET_DVR_ALARMHOST_CID_MINOR_TYPE中新增加：CID_WIRELESS_DETECTOR_FAIL(无线探测器掉线)、CID_WIRELESS_DETECTOR_BATTERY_LOW(无线探测器欠压/电量恢复正常)、CID_WIFI_ABNORMAL(WIFI通信异常/恢复正常)、CID_RF_ABNORMAL(RF信号异常/恢复正常)、CID_ZONE_ASSOCIATED_DETECTOR (防区添加/删除探测器)，对应接口：NET_DVR_SetDVRMessageCallBack_V30支持的报警信息类型有：COMM_ALARMHOST_CID_ALARM。
9. NET_DVR_ALARMIN_PARAM中新增加：byDetectorSerialNo(探测器序列号)、byZoneSignalType(防区信号传输类型)、byDisableDetectorTypeCfg(探测器类型是否不可配)，对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig，命令为：NET_DVR_GET_ALARMIN_PARAM和NET_DVR_SET_ALARMIN_PARAM。
10. NET_DVR_ALARMHOST_OTHER_STATUS_V50中新增加：byDetetorPower(探测器电量状态)、byDetetorConnection(探测器连接状态)，对应接口：NET_DVR_GetDVRConfig，命令为：NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50。
11. NET_DVR_ALARMHOST_FAULT_CFG中新增加：具体故障类型：bit12-WIFI通信故障，bit13-RF信号干扰故障。对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig，命令为：NET_DVR_GET_ALARMHOST_FAULT_CFG和NET_DVR_SET_ALARMHOST_FAULT_CFG。
12. NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40中byNonZoneReport新增加：byNonZoneReport[10]-探测器连接状态报告(上线、离线)。byNonZoneReport[11]-探测器电量状态报告(电压正常、欠压)。对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig，命令为：NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40和NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40。
13. NET_DVR_ALARM_PHONECFG中dwNonZoneReport新增加：bit10-探测器连接状态报告(上线、离线),bit11-探测器电量状态报告(电压正常、欠压)。对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig，命令为：NET_DVR_GET_ALLOWLIST_ALARM和NET_DVR_SET_ALLOWLIST_ALARM。
V5.2.5.40
build20161102 		"脸谱"人脸分析服务器 V1.0
DS-IE6300-E/FA、
DS-GPKIC0000-F(-2F、-1F)、
DS-IC0000-F(-2F、-1F) 		1. 新增人脸比对报警上传(Json数据透传方式)功能(对应接口：NET_DVR_StartListen_V30)：
报警信息类型：COMM_FACESNAP_RAWDATA_ALARM。
V5.2.5.40
build20161102 		梯控主机 V1.0
DS-K1200SF、DS-K2210、DS-K2M00XXA 		1. 新增梯控继电器配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/LadderControlRelay/capabilities；
获取：GET /ISAPI/AccessControl/LadderControlRelay/FloorNo/<ID>；
设置：PUT /ISAPI/AccessControl/LadderControlRelay/FloorNo/<ID>
2. 梯控主机的楼层参数和梯控计划参数，复用的门参数和门计划参数：
1) NET_DVR_DOOR_CFG(门参数配置)使用1个保留字节新增参数：byLadderControlDelayTime(梯控访客延迟时间)。
2) NET_DVR_SINGLE_PLAN_SEGMENT(计划参数)中byVerifyMode(验证方式)新增取值：15-工号+密码。
3. 远程控梯复用远程门禁控制接口：NET_DVR_ControlGateway，其中dwStatic(操作类型)新增取值：5-访客呼梯、6-住户呼梯。
4. NET_DVR_CARD_CFG_V50(卡参数配置)中dwModifyParamType(需要修改的卡参数)新增取值类型：CARD_PARAM_EMPLOYEE_NO(工号)。
5. NET_DVR_ACS_EVENT_INFO(门禁主机事件信息)使用1个保留字节新增参数：byDistractControlNo(分控器编号)。
6. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)扩展：
1) 新增报警次类型：MINOR_FIRE_BUTTON_TRIGGER(消防按钮触发)、MINOR_FIRE_BUTTON_RESUME(消防按钮恢复)、MINOR_MAINTENANCE_BUTTON_TRIGGER(维护按钮触发)、MINOR_MAINTENANCE_BUTTON_RESUME(维护按钮恢复)、MINOR_EMERGENCY_BUTTON_TRIGGER(紧急按钮触发)、MINOR_EMERGENCY_BUTTON_RESUME(紧急按钮恢复)、MINOR_DISTRACT_CONTROLLER_ALARM(分控器防拆报警)、MINOR_DISTRACT_CONTROLLER_RESUME(分控器防拆报警恢复)。 2) 新增异常次类型：MINOR_DISTRACT_CONTROLLER_ONLINE(分控器在线)、MINOR_DISTRACT_CONTROLLER_OFFLINE(分控器离线)。
3) 新增操作次类型：MINOR_REMOTE_VISITOR_CALL_LADDER(访客呼梯)、MINOR_REMOTE_HOUSEHOLD_CALL_LADDER(住户呼梯)。
4) 新增事件次类型：MINOR_CALL_LADDER_RELAY_BREAK(呼梯继电器断开)、MINOR_CALL_LADDER_RELAY_CLOSE(呼梯继电器闭合)、MINOR_AUTO_KEY_RELAY_BREAK(自动按键继电器断开)、MINOR_AUTO_KEY_RELAY_CLOSE(自动按键继电器闭合)、MINOR_KEY_CONTROL_RELAY_BREAK(按键梯控继电器断开)、MINOR_KEY_CONTROL_RELAY_CLOSE(按键梯控继电器闭合)、MINOR_EMPLOYEENO_AND_PW_PASS(工号加密码认证通过)、MINOR_EMPLOYEENO_AND_PW_FAIL(工号加密码认证失败)、MINOR_EMPLOYEENO_AND_PW_TIMEOUT(工号加密码认证超时)。
7. NET_DVR_EVENT_LINKAGE_INFO(事件联动参数)中wSubEventType(事件次类型)新增取值：
1) 新增设备事件次类型：EVENT_ACS_DISTRACT_CONTROLLER_ONLINE(分控器在线)、EVENT_ACS_DISTRACT_CONTROLLER_OFFLINE(分控器离线)、EVENT_ACS_FIRE_BUTTON_TRIGGER(消防按钮触发)、EVENT_ACS_FIRE_BUTTON_RESUME(消防按钮恢复)、EVENT_ACS_MAINTENANCE_BUTTON_TRIGGER(维护按钮触发)、EVENT_ACS_MAINTENANCE_BUTTON_RESUME(维护按钮恢复)、EVENT_ACS_EMERGENCY_BUTTON_TRIGGER(紧急按钮触发)、EVENT_ACS_EMERGENCY_BUTTON_RESUME(紧急按钮恢复)。
2) 新增门事件次类型：EVENT_ACS_CALL_LADDER_RELAY_BREAK(呼梯继电器断开)、EVENT_ACS_CALL_LADDER_RELAY_CLOSE(呼梯继电器闭合)、EVENT_ACS_AUTO_KEY_RELAY_BREAK(自动按键继电器断开)、EVENT_ACS_AUTO_KEY_RELAY_CLOSE(自动按键继电器闭合)、EVENT_ACS_KEY_CONTROL_RELAY_BREAK(按键梯控继电器断开)、EVENT_ACS_KEY_CONTROL_RELAY_CLOSE(按键梯控继电器闭合)、EVENT_ACS_REMOTE_VISITOR_CALL_LADDER(访客呼梯)、EVENT_ACS_REMOTE_HOUSEHOLD_CALL_LADDER(住户呼梯)。
3) 新增读卡器事件次类型：EVENT_ACS_EMPLOYEENO_AND_PW_PASS(工号加密码认证通过)、EVENT_ACS_EMPLOYEENO_AND_PW_FAIL(工号加密码认证失败)、EVENT_ACS_EMPLOYEENO_AND_PW_TIMEOUT(工号加密码认证超时)。
8. NET_DVR_ACS_WORK_STATUS_V50(门禁主机工作状态)中byCardReaderVerifyMode(读卡器当前验证方式)新增取值类型：15-工号+密码。
9. 门禁主机总能力集(AccessControl，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<isSupportLadderControlRelay>(是否支持梯控继电器配置)。
10. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)扩展：
1) 新增节点：<showDeviceType>(显示设备类型)。
2) <CardReaderVerifyTypePlan>(读卡器验证方式计划能力)中<verifyType>(验证方式)新增取值：employeeNoAndPassword(工号+密码)。
3) <Door>(门参数能力)新增子节点：<ladderControlDelayTime>(梯控访客延迟时间)。
4) <Door>(卡参数能力)中：<modifyParamType>(支持修改的参数类型)新增取值：employeeno(工号)。
11. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：DS_K22X(梯控主控制器)、DS_K2M0016AX(梯控分控制器)。
V5.2.5.40
build20161102 		庭审主机 V3.4.0
DS-8116THFHL-F4 		1. 新增分组混音音频配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取音频配置能力集(扩展)：GET /ISAPI/System/Audio/capabilities；
获取分组混音音频配置能力集：GET /ISAPI/System/Audio/Mixing/capabilities；
获取单路分组混音音频配置：GET /ISAPI/System/Audio/Mixing/<ID>；
设置单路分组混音音频配置：PUT /ISAPI/System/Audio/Mixing/<ID>；
批量获取分组混音音频配置：GET /ISAPI/System/Audio/Mixing；
批量设置分组混音音频配置：PUT /ISAPI/System/Audio/Mixing。
2. 新增支持串口参数XML透传配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取设备串口能力集：GET /ISAPI/System/Serial/capabilities；
获取单个串口参数能力集：GET /ISAPI/System/Serial/ports/<ID>；
设置单个串口参数：PUT /ISAPI/System/Serial/ports/<ID>；
批量获取串口参数：GET /ISAPI/System/Serial/ports。
3. NET_DVR_CASE_INFO(案件信息)扩展，byCaseType(案件类型)新增取值类型：3-自定义类型，使用32个字节新增参数：sCaseTypeCustom[NET_SDK_CASETYPE_LEN](自定义案件类型)。
4. NET_DVR_VIDEOOUT_RESOLUTION_CFG(视频输出口分辨率配置)中byResolution(分辨率)新增取值类型：5-3840*2160。
5. NET_DVR_DEVICECFG_V40(设备参数)和NET_DVR_DEVICEINFO_V30(设备信息)中wDevType(设备类型)分别新增类型取值：DS_8116THFHL_F4(庭审主机)。
V5.2.5.40
build20161102 		网络摄像机 V5.4.4 1. 新增软件服务能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_SOFTWARE_SERVICE_CAPABILITIES。
2. 新增软件服务配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SOFTWARE_SERVICE、NET_DVR_SET_SOFTWARE_SERVICE。
3. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)的参数byResolution(分辨率)新增取值：150-8208*3072、151-4096*1536、152-6912*2800、153-3456*1400。
4. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)中byCaptureModeN、byCaptureModeP(视频输入模式)新增取值：141-2688*1520@12.5fps。
5. 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展，<captureModePWithIndex>和<captureModeNWithIndex>(视频输入模式)增加取值：141-2688*1520@12.5fps。
6. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，<NeedReboot>(是否需要重启)中新增子节点：<ThirdStream>(开启三码流服务是否需要重启)。
V5.2.5.40
build20161102 		热成像重载云台V1.1.0
DS-2TD8135系列
DS-2TD8166系列 		1. 新增高精度PTZ绝对位置配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_PTZABSOLUTEEX_CAPABILITIES。
2. 新增高精度PTZ绝对位置配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PTZABSOLUTEEX、NET_DVR_SET_PTZABSOLUTEEX。
3. 新增烟火检测布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FIREDETECTION_SCHEDULE、NET_DVR_SET_FIREDETECTION_SCHEDULE。
4. 新增烟火检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_FIREDETECTION_SCHEDULE_CAPABILITIES。
5. 新增热成像相机电源配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMALPOWER、NET_DVR_SET_THERMALPOWER。
6. 新增热成像相机电源配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_THERMALPOWER_CAPABILITIES。
7. 新增设置手动测温数据功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_MANUALTHERM。
8. 新增获取手动测温实时数据功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_MANUALTHERM_INFO。
9. 新增手动测温实时数据能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_MANUALTHERM_CAPABILITIES。
10. 新增获取实时环境温湿度功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_TEMP_HUMI_INFO。
11. 新增获取实时温湿度能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_TEMP_HUMI_CAPABILITIES。
12. 新增手动测温基本参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_MANUALTHERM_BASICPARAM、NET_DVR_SET_MANUALTHERM_BASICPARAM。
13. 新增手动测温基本参数配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_MANUALTHERM_BASIC_CAPABILITIES。
14. 新增烟雾区域屏蔽配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SMOKESHIELDMASK_CFG、NET_DVR_SET_SMOKESHIELDMASK_CFG。
15. 新增删除烟雾屏蔽区域功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_DEL_SMOKESHIELDMASK_CTRL。
16. 新增烟雾区域屏蔽能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES。
17. 新增火点区域屏蔽配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FIRESHIELDMASK_CFG、NET_DVR_SET_FIRESHIELDMASK_CFG。
18. 新增删除火点屏蔽区域功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_DEL_FIRESHIELDMASK_CTRL。
19. 新增火点区域屏蔽能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES。
20. 新增远程控制扫描相关功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_DEL_AREASCAN_CFG(扫描区域删除)、
NET_DVR_AREASCAN_INIT_CTRL(进入区域扫描设置)、
NET_DVR_AREASCAN_CONFIRM_CTRL(确认执行区域扫描)、
NET_DVR_AREASCAN_STOP_CTRL(停止区域扫描)、
NET_DVR_SAVE_SCANZOOM_CTRL(设置扫描倍率)、
NET_DVR_GET_SCANZOOM_CTRL(获取扫描倍率)。
21. 新增获取区域扫描状态功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_AREASCAN_CFG。
22. 新增区域扫描能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_AREASCAN_CAPABILITIES。
23. 新增获取手动测温实时数据功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_MANUALTHERM_INFO。
24. 新增获取巡航路径参数功能(V50扩展，支持256个巡航点)(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_GET_CRUISEPOINT_V50，兼容NET_GET_CRUISEPOINT_V40。
25. NET_DVR_FIREDETECTION_CFG(烟火检测配置)使用81个字节新增参数：byDetectionMode(火点检测模式)、byFireFocusMode(火点聚焦模式)、byFireZoomMode(火点光学变倍模式)、byFirezoomLevel(火点光学变倍倍率)、bySmokeFireEnabled(烟火检测总使能)、struAlarmStrategy(报警策略)、struSmokeCfg(烟雾检测配置)。
26. NET_DVR_FIREDETECTION_ALARM(火点检测报警信息)使用36个字节新增参数：byStrategyType(策略类型)、byAlarmSubType(报警子类型)、byPTZPosExEnable(PTZ坐标扩展使能)、struPtzPosEx(PTZ坐标扩展信息)、dwVisiblePicLen(可见光图片长度)、pVisiblePicBuf(可见光图片数据指针)、pSmokeBuf(烟雾检测报警数据指针)。
27. NET_DVR_GIS_INFO(GIS信息数据)使用37个字节新增参数：byPTZPosExEnable(PTZ坐标扩展使能)、struPtzPosEx(PTZ坐标扩展信息)、fMinHorizontalValue(最小水平视场角)、fMaxHorizontalValue(最大水平视场角)、fMinVerticalValue(最小垂直视场角)、fMaxVerticalValue(最大垂直视场角)。
28. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)扩展：
1) byDigitalZoom字段新增取值：3-×8、4-×16、5-×32。
2) byPaletteMode字段新增取值：21-深蓝。
29. NET_DVR_PTZ_PARKACTION_CFG(云台守望参数)扩展，新增参数：byOneTouchSwitch(一键开关)，参数wActionType(任务类型)新增取值：8-区域扫描。
30. NET_DVR_SCHEDTASK(云台定时任务)中参数wAction(任务类型)新增取值：12-areaScan(区域扫描)。
31. 热成像能力集(ThermalCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES)扩展：
新增节点：<isSupportPower>、<isSupportRealtimeTempHumi>、<manualThermRuleNum>、<isSupportManualThermBasic>、<isSupportFireShieldMask>、<isSupportsmokeShieldMask>。
32. 烟火检测配置能力集(FireDetection，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FIREDETECTION_CAPABILITIES)扩展：
新增节点：<detectionMode>、<fireFocusMode>、<FireZoom>、<zoomMode>、<zoomLevel>、<AlarmStrategy>、<strategyType>、<SmokeDetection>、<smokeFireEnabled>。
33. PTZ通道控制能力集(PTZChanelCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PTZ_CAPABILITIES)扩展：
新增节点：<isSupportAbsoluteEx>、<isSupportCruise>、<isSupportAreaScan>。
34. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：3002、3004。
V5.2.5.40
build20161102 		审讯机 V1.1.1
DS-8100SHW(L)-ST、
DS-8100SHFH(L)-ST-DX、
DS-8600SN(L)-SP 		1. 新增光驱配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/ Trial/TrayConfiguration/capabilities；
获取：GET /ISAPI/ContentMgmt/Trial/TrayConfiguration/<ID>；
设置：PUT /ISAPI/ContentMgmt/Trial/TrayConfiguration/<ID>。
2. 新增审讯机总能力集(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/Trial/capabilities。
3. 新增审讯机报警信息上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
报警信息类型：COMM_INQUEST_ALARM。
4. NET_DVR_INQUEST_ROOM_INFO(审讯室信息)使用1个保留字节新增参数：byAutoOpenTray(是否自动弹仓)。
5. NET_DVR_ALARMINCFG_V40和NET_DVR_ALARMINCFG_V30(报警输入参数)分别使用1个保留字节新增参数：byInputType(输入类型)。
6. NET_DVR_ALRAM_FIXED_HEADER(报警信息固定部分参数)和NET_DVR_ALARMINFO_V30(报警信息)中dwAlarmType(报警信息类型)分别新增取值：23-脉冲报警。
7. NET_DVR_PlayBackControl_V40(回放控制)扩展，其中控制命令NET_DVR_SET_TRANS_TYPE对应输入参数新增转封装类型：5-MP4，仅按文件回放和下载支持。
8. NET_DVR_GetBackupProgress(获取备份的进度)的输出参数pState(当前备份的进度)新增取值：BACKUP_CHANGE_DISK(正在更换光盘)。
9. 审讯机能力集(InquestAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<CDWConfig >(是否支持开始刻录自动弹仓)。
10. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<AlarmIn>(报警输入能力)新增子节点：<inputType>(报警输入类型)。
11. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增操作日志次类型：MINOR_REMOTE_INQUEST_DEL_FILE(远程删除文件)、MINOR_LOCAL_UNLOAD_HDISK(本地卸载硬盘)、MINOR_LOCAL_AUDIO_MIX(本地配置音频混音参数)、MINOR_REMOTE_AUDIO_MIX(远程配置音频混音参数)、MINOR_LOCAL_TRIAL_PAUSE(本地暂停讯问)、MINOR_LOCAL_TRIAL_RESUME (本地继续讯问)、MINOR_REMOTE_TRIAL_PAUSE(远程暂停讯问)、MINOR_REMOTE_TRIAL_RESUME(远程继续讯问)。
V5.2.5.35
build20161024 		网络摄像机 V5.4.30 1. 新增主控版本信息功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_FIRMWARE_VERSION。
2. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SYSTEM_CAPABILITIES)扩展，新增节点：<isSupportFirmwareVersionInfo>(是否支持获取主控版本信息)。
3. NET_VCA_FACESNAPCFG(人脸抓拍规则参数)使用12个保留字节新增参数：dwFaceFilteringTime(人脸停留时间过滤)。
4. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<FaceSnap>(人脸抓拍能力)新增子节点：<faceFilteringTime>(人脸停留时间过滤)。
5. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x25-人脸抓拍。
6. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展，<supportFileType>(支持图片类型)新增取值：faceSnap(人脸抓拍)。
7. NET_ITC_POST_MPR_PARAM(卡口多帧检测触发参数)和NET_IPC_POST_HVT_PARAM(IPC混行卡口触发参数)分别使用16个保留字节新增参数：struSnapLine(抓拍线)。
8. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展：
1) <VehicleDetection>-><TriggerCfg>-> <TriggerParam>中的<PostMPR>(卡口多帧检测触发参数)新增子节点：<SnapLine>(抓拍线)。
2) <HVTVehicleDetection>-><TriggerCfg>-> <TriggerParam>中的<PostIPCHVT>(卡口多帧检测触发参数)新增子节点：<SnapLine>(抓拍线)。
9. NET_DVR_ANR_ARMING_HOST(断网续传主机信息)使用1个保留字节新增参数：byConfirmMechanismEnabled(是否开启确认机制方式布防连接)。
10. NET_DVR_SETUPALARM_PARAM(报警布防参数)中参数bySupport新增取值：Bit1表示是否启用断网续传数据确认机制。
11. NET_DVR_PDC_ALRAM_INFO(客流量统计结果参数)和NET_DVR_HEATMAP_RESULT(热度图上传结果)分别使用1个保留字节新增参数：byBrokenNetHttp(断网续传标志位)。
12. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportConfirmMechanism>(断网续传数据确认机制)。
V5.2.5.35
build20161024 		DS-19D2000-S
(视频动环监控主机) V1.0 		1. NET_DVR_ALARM_RS485CFG(报警主机RS485参数)新增支持参数：bySerialType(串口类型)。
2. RS232和RS485串口能力(SerialAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SERIAL_ABILITY)扩展，<RS485>(RS485参数能力)中<RS485Entry>新增子节点：<serialType>(串口类型)。
3. NET_DVR_DEVICEINFO_V30和NET_DVR_DEVICECFG_V40(设备参数)中wDevType新增设备类型取值：DS_19DXX_S(视频动环监控主机)。
4. DS-19D2000-S同时支持DS-19Dxx系列动环监控主机和NVR的功能接口。
V5.2.5.30
build20161009 		CVR V2.3.2-5 1. 新增一键配置CVR V50扩展命令(对应接口：NET_DVR_StartRemoteConfig)：
报警信息类型：NET_DVR_ONE_KEY_CONFIG_V50。
2. 一键配置CVR对应的NET_DVR_GetRemoteConfigState接口返回的状态值新增：1101(热备盘个数过多)、1102(创建图片卷失败)。
3. 新增获取录像缩略图的功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_THUMBNAILS、NET_DVR_GET_FIGURE。
4. CVR设备能力集(CVRAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<OneKeyConfigCVRV50>(一键配置CVR V50扩展)。
5. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportGetFigure>(是否支持按时间点获取缩略图)、<isSupportGetThumbnails>(是否支持按时间段获取缩略图)。
V5.2.5.25
build20160923 		DS-PMXX 4G模块报警主机
V1.0.0 build161101 		1. 扩展设备系统总能力DeviceCap，对应接口：NET_DVR_STDXMLConfig，DeviceCap能力集中新增节点isSupportSecurityCP。
2. 扩展报警主机设备能力SecurityCPCapabilities，对应接口：NET_DVR_STDXMLConfig，SecurityCPCapabilities能力集中新增节点PMCap。
3. 新增主机型号配置功能：HostDevice，对应接口：NET_DVR_STDXMLConfig，
获取主机型号配置能力：GET /ISAPI/SecurityCP/BasicParam/hostDevice/capabilities；
获取主机型号配置：GET /ISAPI/SecurityCP/BasicParam/hostDevice；
设置主机型号配置：PUT /ISAPI/SecurityCP/BasicParam/hostDevice。
4. 新增流量提醒配置功能：DataTrafficAlert，对应接口：NET_DVR_STDXMLConfig，
获取流量提醒配置能力：GET /ISAPI/SecurityCP/BasicParam/dataTrafficAlert/capabilities；(startDay表示每个月开始统计流量的日期，范围由月份决定，能力集不返回。)
获取流量提醒配置：GET /ISAPI/SecurityCP/BasicParam/dataTrafficAlert；
设置流量提醒配置：PUT /ISAPI/SecurityCP/BasicParam/dataTrafficAlert。
5. 新增设备本地流量统计配置功能：DataTrafficStatistics，对应接口：NET_DVR_STDXMLConfig，
获取设备本地流量统计配置：GET /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics/capabilities；
获取设备本地流量统计配置：GET /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics；
设置设备本地流量统计配置：PUT /ISAPI/SecurityCP/BasicParam/dataTrafficStatistics。
6. 扩展结构体： NET_DVR_TRIGGER_EVENT(事件触发触发器)，dwOverallEventTriggerAlarmoutOn新增取值:bit6-3G/4G信号异常, bit7-(模块链接)第三方主机掉线。
7. 扩展结构体：NET_DVR_ALARMHOST_ABILITY(报警主机能力集)，dwOverallEvent新增取值bit6-3G/4G信号异常, bit7-(模块链接)第三方主机掉线。
8. 扩展结构体：NET_DVR_CONTROL_PARAM(控制参数)，新增参数byRes3、wZoneIndex、byOperatorCode。
9. 扩展结构体：NET_DVR_ALARM_DEVICE_USER(控制参数)，新增参数sOriginalPassword。
V5.2.5.25
build20160923 		DS-6400HD-T V3.6.0 1. 新增获取解码通道OSD信息：NET_DVR_GetDVRConfig(命令：NET_DVR_GET_DECODE_CHANNEL_OSD)
2. 新增设置解码通道OSD信息：NET_DVR_SetDVRConfig(命令：NET_DVR_SET_DECODE_CHANNEL_OSD)
V5.2.5.25
build20160923 		96000N-I系列NVR V3.6.1 1. 扩展报警结构体： NET_VCA_RULE_ALARM(异常行为识别)、 NET_DVR_PDC_ALRAM_INFO(客流量统计)、 NET_VCA_FACESNAP_RESULT(人脸抓拍结果)、 NET_DVR_FACE_DETECTION(人脸侦测)、 NET_DVR_AUDIOEXCEPTION_ALARM(声音)、 NET_DVR_DEFOCUS_ALARM(虚焦)、 NET_DVR_SCENECHANGE_DETECTION_RESULT(场景变更)、 NET_DVR_HEATMAP_RESULT(热度图)、 NET_DVR_SHIPSDETECTION_ALARM(船只检测)，这些结构体里的NET_VCA_DEV_INFO对应的byIvmsChannel扩展协议为4字节，对应这些结构体的wDevInfoIvmsChannelEx。NET_ITS_PLATE_RESULT(车牌结果检测)增加byChanIndexEx，与byChanIndex一起表示通道号。
2. NET_DVR_SINGLE_HD(硬盘管理参数)byHDType增加索引值6-minSAS。对应能力在设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportMinSAS>(是否支持minSAS硬盘类型)。
3. 多网卡配置扩展，对应接口：NET_DVR_GetDVRConfig、NET_DVR_SetDVRConfig，新增命令：NET_DVR_GET_NETCFG_MULTI_V50和NET_DVR_SET_NETCFG_MULTI_V50，兼容NET_DVR_GET_NETCFG_MULTI和NET_DVR_SET_NETCFG_MULTI。
V5.2.5.25
build20160923 		垂直双目网络摄像机 V5.4.30 1. 新增架设标定检验功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_POST_SETUP_CALIB。
2. NET_DVR_PDC_RULE_CFG_V42(客流量规则配置)扩展：
1) 使用186个保留字节新增参数：byHeightFilterEnable(高度过滤是否开启)、fHeightFilter(过滤高度)、byCalibrateType(标定类型)、fTiltAngle(俯仰角)、fHeelAngle(倾斜角)、fHeight(高度)、struCountPolygon(计数区域)、struAutoCalibPolygon(标定区域)。
2) byOSDEnable(OSD显示是否启用)新增取值：4-经过人数。
3. NET_DVR_PDC_ALRAM_INFO(客流量统计结果)使用5个保留字节新增参数：dwPassingNum(经过人数)。
4. 客流量数据查询功能扩展： 1) NET_DVR_PDC_QUERY_COND(查询条件)使用5个保留字节新增参数：byEnableProgramStatistics(是否按节目统计)、dwPlayScheduleNo(按节目统计时关联的日程号)。
2) NET_DVR_PDC_RESULT(查询结果)使用56个保留字节新增参数：struProgramInfo(节目信息)、dwPeoplePassing(经过人数)。
5. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中byResolution增加分辨率类型：113-640*960。
6. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)中byCaptureModeN、byCaptureModeP(视频输入模式)新增取值：136-640*960@25fps、137-640*960@24fps。
7. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportCountBinocular>(是否为双目客流相机)。
8. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，<PDC>(客流量统计能力)扩展： 1) <OSD>(OSD能力)子节点<OSDType>(显示类型)新增取值：peoplePassing(经过人数)。
2) 新增子节点：<CountingCalibrate>(架设标定检验)、<isSupportCalibrate>(是否支持标定)、<isSupportSearchPeoplePassing>(是否支持查询经过人数)。
9. 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展，<captureModeP>和<captureModeN>(视频输入模式)增加取值：640*960@25fps,640*960@24fps。
10. NET_DVR_DEVICEINFO_V30和NET_DVR_DEVICECFG_V40(设备参数)中wDevType新增设备类型取值：IDS_2CD6812F_C。
11. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：839、840。
V5.2.5.15
build20160906 		I、K、E系列NVR产品
V3.4.90 		1. 新增通道属性(鹰眼、鱼眼、热成像)数据功能(对应接口：NET_DVR_STDXMLConfig)：
单个获取：GET /ISAPI/AUXInfo/attributes/Channels/<ID>；
批量获取：GET /ISAPI/AUXInfo/attributes/Channels。
2. 新增设备安全能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Security/capabilities。
3. 新增获取在线登录用户信息的功能(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/Security/onlineUser。
4. 新增导出GUID文件功能：
1) 新增上传类型(对应接口：NET_DVR_StartDownload)：NET_SDK_DOWNLOAD_GUID_FILE。
2) 新增获取状态信息接口：NET_DVR_GetDownloadStateInfo。
5. 新增设备安全问题配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SECURITY_QUESTION_CFG、NET_DVR_SET_SECURITY_QUESTION_CFG。
6. 新增支持3D定位功能(需要前端球机支持)，对应接口：NET_DVR_PTZSelZoomIn_EX。
7. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：2107、2109。
8. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增报警日志次类型：MINOR_LOCAL_RESET_LOGIN_PASSWORD(本地重置admin登陆密码)、MINOR_REMOTE_RESET_LOGIN_PASSWORD(远程重置admin登录密码)。
V5.2.5.15
build20160906 		90/80/81/73/72HQH(HGH)-SH
V3.4.80 		1. 新增获取功能互斥信息的功能(对应接口：NET_DVR_STDXMLConfig)：
获取：GET /ISAPI/System/mutexFunctionErrorMsg。
2. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<isSupportGetmutexFuncErrMsg>(是否支持获取功能互斥信息)。
3. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：2108。
V5.2.5.10
build20160817 		分布式三层架构门禁产品V1.0
DS_K2700 分布式三层架构门禁主机；
DS_K270X 分布式三层架构就地控制器 		1. 远程升级接口NET_DVR_Upgrade_V40扩展，支持升级就地控制器， pInbuffer为4字节设备编号，10001表示就地控制器1，10002表示就地控制器2，依次类推。
2. 新增就地控制器管理功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/localController/capabilities；
添加：PUT /ISAPI/AccessControl/localController/addDevice；
获取：GET /ISAPI/AccessControl/localController/localControllerID/<ID>；
设置：PUT /ISAPI/AccessControl/localController/localControllerID/<ID>；
删除单个：DELETE /ISAPI/AccessControl/localController/localControllerID/<ID>；
删除全部：DELETE /ISAPI/AccessControl/localController。
3. 新增就地控制器控制功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/localController/control/capabilities；
设置：PUT /ISAPI/AccessControl/localController/control/localControllerID/<ID>。
4. 新增就地控制器在线搜索和状态查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_ONLINE_LOCAL_CONTROLLER、
NET_DVR_GET_LOCAL_CONTROLLER_STATUS。
5. 新增USB设备管理功能(对应接口：NET_DVR_STDXMLConfig)：
获取状态：GET /ISAPI/AccessControl/USBStatus/USBNumber/<ID>；
获取状态能力集：GET /ISAPI/AccessControl/USBStatus/capabilities；
控制：PUT /ISAPI/AccessControl/USBControl/USBNumber/<ID>；
获取控制能力：GET /ISAPI/AccessControl/USBControl/capabilities；
获取控制进度：GET /ISAPI/AccessControl/USBControlProgress/USBNumber/<ID>；
获取控制进度能力集：GET /ISAPI/AccessControl/USBControlProgress/capabilities。
6. 获取和设置卡参数功能扩展(对应接口：NET_DVR_StartRemoteConfig、NET_DVR_SendRemoteConfig)：
命令：NET_DVR_GET_CARD_CFG_V50、NET_DVR_SET_CARD_CFG_V50。
7. 获取门禁主机工作状态功能扩展(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_ACS_WORK_STATUS_V50。
8. 事件及卡号联动参数配置扩展(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50、NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50。
9. 卡权限计划配置扩展(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
计划模板参数：NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50、NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50；
周计划参数：NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50、NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50；
假日计划参数：NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50、NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50；
假日组参数：NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50、NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50。
10. 网络参数配置扩展，支持两个监听的报警主机地址配置(对应接口：NET_DVR_GetDVRConfig、NET_DVR_SetDVRConfig)： 命令：NET_DVR_GET_NETCFG_V50、NET_DVR_SET_NETCFG_V50。
11. NET_DVR_ALARMIN_PARAM(防区参数)扩展：
1) byType(防区类型)新增取值：10-门禁紧急开门防区，11-门禁紧急关门防区。
2) byModuleType(模块类型)新增取值：7-1门就地控制器、8-2门就地控制器、9-4门就地控制器。
12. NET_DVR_ALARMOUT_PARAM(触发器参数)扩展，byModuleType新增取值：6-1门就地控制器、7-2门就地控制器、8-4门就地控制器。
13. NET_DVR_DOOR_CFG(门参数配置)扩展，使用12个保留字节新增参数：byLeaderCardMode、byUseLocalController、wLocalControllerID、wLocalControllerDoorNumber、wLocalControllerStatus、byLockInputCheck、byLockInputType、byDoorTerminalMode、byOpenButton。
14. NET_DVR_CARD_READER_CFG(读卡器参数配置)扩展，使用7个保留字节新增参数：byUseLocalController、wLocalControllerID、wLocalControllerReaderID、wCardReaderChannel。
15. 新增支持获取子系统防区、触发器、搜索/注册外接模块功能，复用接口：
NET_DVR_StartRemoteConfig、NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig。
16. 设备协议接入能力集(AccessProtocolAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，新增节点：<zoneInfo>(获取所有防区信息)、<alarmoutInfo>(获取所有触发器信息)。
17. 网络报警主机XML能力集(AlarmHostAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展：
1) 新增节点：<noZoneRelatedTrigger>(是否不支持配置防区关联触发器节点)。
2) 节点<zoneType>新增取值：doorEmergencyOpenProtectionZone,doorEmergencyShutdownProtectionZone。
3) 节点<ModuleType>新增取值：1DoorController,2DoorsController,4DoorsController。
18. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)扩展：
1) 主类型“报警”下面新增次类型：0x415～0x417；主类型“异常”下新增次类型：0x413～0x41a；主类型“操作”下新增次类型：0x410～0x416；主类型“事件”下新增次类型：0x51～0x5e。
2) NET_DVR_ACS_EVENT_INFO(门禁主机事件信息)使用4分保留字节新增参数：wLocalControllerID(就地控制器编号)、byInternetAccess(网口ID)、byType(防区类型)。
19. 新增错误码(对应接口：NET_DVR_GetLastError)：1910~1919。
V5.2.5.5
build20160805 		球型鹰眼 V5.3.16
DS-2DP1636Z-D、DS-2DP0818Z-D等 		1. 新增设备抓图扩展接口：NET_DVR_CapturePicture_V50，支持抓取球型鹰眼自动标定的参照场景图片。
2. 新增上传全景自动拼接配置文件功能(对应接口：NET_DVR_UploadFile_V40)：
上传文件类型：UPLOAD_PANORAMIC_STITCH。
3. 新增Sensor调节参数配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES。
4. 新增获取sensor调节参数功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_SENSOR_ADJUSTMENT_INFO。
5. 新增Sensor调节参数控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SENSOR_ADJUSTMENT。
6. 新增Sensor调节复位功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SENSOR_RESET_CTRL。
7. 新增从摄像机标定配置扩展功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SLAVECAMERA_CALIB_V51、NET_DVR_GET_SLAVECAMERA_CALIB_V51，兼容NET_DVR_GET_SLAVECAMERA_CALIB_V50、NET_DVR_SET_SLAVECAMERA_CALIB_V50。
8. 新增控制主摄像机转向指定的场景ID的功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SET_GOTOSCENE。
9. 新增全景联动到位事件上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
报警信息类型：COMM_PANORAMIC_LINKAGE_ALARM。
10. 新增分辨率模式切换能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_RESOLUTION_SWITCH_CAPABILITIES。
11. 新增分辨率模式切换配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_RESOLUTION_SWITCH、NET_DVR_SET_RESOLUTION_SWITCH。
12. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中byResolution增加分辨率类型：137-4096*1200、138-3840*1080、139-2720*800、140-512*232、141-704*200、142-512*152、143-2048*896、144-2048*600、145-1280*376。
13. NET_DVR_DEVICEINFO_V30和NET_DVR_DEVICECFG_V40(设备参数)中wDevType新增设备类型取值：DS_2DP_Z(球型鹰眼)。
14. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：838。
15. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportPanoramicStitch>(是否支持上传全景自动拼接配置文件)。
16. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展，新增节点：<CapturePicture>(抓图能力)。
V5.2.5.5
build20160805 		交通球机 V5.4.13
iDS-2VS225、iDS-2VS325、iDS-TCS215系列 		1. NET_DVR_TPS_INFO_V41(车道统计参数)使用4个保留字节新增参数：dwSceneID(场景ID)。
2. NET_DVR_TFS_ALARM(车道统计参数)使用32个保留字节新增参数：byIllegalCode[ILLEGAL_LEN](违法代码扩展)。
3. 功能说明：交通数据统计信息上传、交通取证报警信息上传功能，同时支持报警布防和报警监听方式。新增支持鹰视聚焦相关功能。
V5.2.5.5
build20160805 		网络摄像机 V5.4.2
FF车牌识别 		1. 新增车辆信息查询结果能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_VEHICLLE_RESULT_CAPABILITIES。
2. 新增车辆信查询功能(对应接口：NET_DVR_StartRemoteConfig)：
能力集类型：NET_DVR_GET_VEHICLE_INFORMATION。
3. NET_ITC_POST_MPR_PARAM(卡口多帧检测触发参数)中byRoadType(道路模式)新增取值：3-报警输入。
4. COUNTRY_INDEX(国家和地区索引值)新增枚举类型：48~253。
5. 事件能力集(EventAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中<VehicleDetection>(车辆侦测能力)扩展：
1) <PostMPR>(卡口多帧检测触发参数)的子节点<RodeType>(道路类型)新增取值：alarmInput(报警输入)。
2) <OverlapCfg>(字符叠加配置参数能力)的子节点<itemType>(字符类型)新增取值：vehicleDirection(车辆方向)。
6. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportDownloadVehicleInfo>(是否支持车辆信息查询功能)。
7. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：845。
V5.2.5.5
build20160805 		录播主机 V2.1.0
 1. 新增录播主机参数配置能力(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/hostParam/capabilities。
2. 新增课堂大数据统计配置(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/ClassDataControl/capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/ClassDataControl；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/ClassDataControl。
3.新增获取统计数据列表(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_STATISTIC_DATA_LIST。
4.新增获取统计数据列表能力(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/ Trial/TrayConfiguration/capabilities。
5.新增导播高级参数配置(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID//capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<ID>；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/DirectedAdvanceCfg/commandID/<ID>。
6.新增视频切换配置(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration/capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/VideoSwitchConfiguration。
7.新增片头配置(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration/capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/VideoTitleConfiguration。
8.新增片尾配置(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration/capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/VideoTrailerConfiguration。
8.新增教育服务器对接配置(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration/capabilities；
获取：GET /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration；
设置：PUT /ISAPI/ContentMgmt/RecordingHost/EducationServerConfiguration。
9. 扩展结构体NET_DVR_TERMINAL_CALL_INFO中修改MAX_URL_LEN长度为128;
新增dwCallRate:呼叫速率，范围为：32~6144，单位Kbps (连接速率)。
10. 扩展能力集ControlParam中添加callRate字段。
11. 扩展能力集RecordHostCap中添加:isSupportVideoSwitchConfiguration、isSupportVideoTitleConfiguration、isSupportVideoTrailerConfiguration、EducationServerConfiguration字段。
12. 扩展能力集VCSCap中添加:isSupportTerminalControl、isSupportTerminalConferenceStatus字段。
V5.2.3.20
build20160722 		CVR V2.3.2-4 1. 新增RACM存储总能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_RACM_CAP。
2. 新增回传功能基础配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG_CAP。
3. 新增回传功能基础配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG、NET_DVR_SET_RECORD_PASSBACK_BASIC_CFG。
4. 新增返回任务ID的手动添加录像回传任务功能(对应接口：NET_DVR_SetDeviceConfigEx)：
命令：NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL_V50。
5. 新增回传历史录像计划能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG_CAP。
6. 新增回传历史录像计划配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG、NET_DVR_SET_RECORD_PASSBACK_HISTORY_PLAN_CFG。
7. NET_DVR_RECORD_PASSBACK_MANUAL_COND(手动添加录像回传任务查询条件参数)扩展，使用21个保留字节新增参数：byTimeSegmentQuety(是否启用时间范围查询)、struBeginTime(查询开始时间)、struEndTime(查询结束时间)、dwTaskID(任务ID)，参数byType(查询方式)新增取值：4-根据任务ID获取任务。
8. CVR设备能力集(CVRAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展：
<GetAllRecordPassBackManulTask>(获取所有手动录像回传任务能力)中新增子节点：<timeSegmentQuety>(是否启用时间范围查询)，子节点<type>(查询方式)新增取值：4-根据任务ID获取任务。
V5.2.3.20
build20160722 		DS-TCGX25 V4.2.1 1. 新增上传语音文件功能(对应接口：NET_DVR_UploadFile_V40)：
UPLOAD_AUDIO_FILE。
2. 语音配置能力集(TMEVoiceConfiguration，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TMEVOICE_CAPABILITIES)扩展，新增节点：<voiceFileName>(语音文件名)。
3. NET_DVR_TMEVOICE_CFG(语音参数配置)使用64个保留字节新增参数：sFileName[MAX_TMEVOICE_LEN](语音文件名)。
4. NET_DVR_BARRIERGATE_CFG(道闸控制参数)新增解锁操作，使用1个保留字节新增参数：byUnlock(启用解锁使能)，byBarrierGateCtrl(控制参数)新增取值：4-解锁道闸。
5. 视频检测触发模式参数配置扩展：
1) NET_ITC_POST_PRS_PARAM(视频检测触发参数)使用2个保留字节新增参数：byNoPlatCarCap(是否启用无车牌抓拍)、bySceneMode(场景模式)。
2) NET_ITC_LANE_PRS_PARAM(视频检测触发模式车道参数)使用24个保留字节新增参数：struTrigLine(触发线)。
6. NET_ITC_IOOUT_PARAM(IO输出配置参数)使用5个保留字节新增参数：byIncrBrightEnable(是否启用增亮模式)、byIncrBrightPercent(增量百分比)、wIncrBrightTime(增亮持续时间)、byBrightness(是否启用增亮模式)。
7. NET_DVR_DECODERCFG_V40(RS485参数)中参数byWorkMode(工作模式)新增取值：12-LED显示、13-触发抓拍数据传输。
8. RS232和RS485串口能力(SerialAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SERIAL_ABILITY)扩展，<RS485>(RS485参数能力)中<workMode>新增取值：Led,CaptureTrigger(LED显示，触发抓拍数据传输)。
V5.2.3.20
build20160722 		DS-NB04XXXX系列便携主机 1. 新增司法设备能力集(对应接口：NET_DVR_STDXMLConfig)：
GET /ISAPI/JusticeDev/capabilitie。
2. 新增音频输出口静音配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/JusticeDev/audioOutMute/channel/<ID>/capabilities；
获取：GET /ISAPI/JusticeDev/audioOutMute/channel/<ID>/config；
设置：PUT /ISAPI/JusticeDev/audioOutMute/channel/<ID>/config。
3. 新增音频参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/System/SoundCfg/capabilities；
获取：GET /ISAPI/System/SoundCfg；
设置：PUT /ISAPI/System/SoundCfg。
4. 新增示证接入配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/JusticeDev/evidence/capabilities；
获取：GET /ISAPI/JusticeDev/evidence/config；
设置：PUT /ISAPI/JusticeDev/evidence/config。
5. 新增本地预览配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/System/Video/outputs/channels/<ID>/capabilities；
单个获取：GET /ISAPI/System/Video/outputs/channels/<ID>；
单个设置：PUT /ISAPI/System/Video/outputs/channels/<ID>；
批量获取：GET /ISAPI/System/Video/outputs/channels；
批量设置：PUT /ISAPI/System/Video/outputs/channels。
6. 新增批量上传图片文件功能(对应接口：NET_DVR_UploadFile_V40 和NET_DVR_GetUploadResult等)：
上传文件类型：BATCH_UPLOAD_PICTURE_FILE。
7. NET_DVR_WORKSTATE_V40(设备工作状态信息)使用8个保留字节新增参数：fHumidity(传感器获知的湿度)、fTemperature(传感器获知的的温度)。
8. NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM(辅助设备升级条件)中byDevType(升级设备类型)新增取值：3-路由器。
9. 设备系统总能力集(DeviceCap，对应接口：NET_DVR_STDXMLConfig)扩展，新增节点：<isSupportJusticeDev>(司法设备能力)。
10. 设备网络应用参数能力(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展，新增节点：<AuxiliaryDevUpgrade>(辅助设备升级能力)。
11. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<isSupportBatchUploadPic >(批量上传图片能力)。
12. NET_DVR_DEVICEINFO_V30和NET_DVR_DEVICECFG_V40(设备参数)中wDevType新增设备类型取值：DS_NBXX_N_E1_X。
V5.2.3.15
build20160713 		I、K、E系列NVR产品 V3.4.80 1. 移动侦测支持多区域配置扩展：
1) NET_DVR_MOTION_V40(移动侦测参数)中参数byConfigurationMode(移动侦测模式)新增取值：2-坐标系区域模式。
2) NET_DVR_MOTION_MULTI_AREA(移动侦测多区域配置)使用1个保留字节新增参数：byAllMotionSensitive(移动侦测灵敏度)。
2. 用户参数配置扩展，支持密码确认(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_USERCFG_V50、NET_DVR_SET_USERCFG_V50。
3. 新增DNS手动设置使能配置功能：
1) NET_DVR_NETCFG_V30(网络配置)使用1个保留字节新增参数：byEnableDNS(DNS使能)。
2) NET_DVR_ETHERNET_MULTI(单个网卡配置)使用1个保留字节新增参数：byEnableDNS(DNS使能)。
4. 设备鱼眼能力集(FishEyeAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：FISHEYE_IPC_ABILITY)扩展，新增节点：<previewMode>(实时输出模式)。
5. 设备图像参数能力集(VideoPicAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_VIDEOPIC_ABILITY)中移动侦测能力节点<MotionDetection>扩展：
<regionType>新增取值：coordinates(坐标系区域模式)；新增子节点：<Coordinates>(坐标系区域参数)。
6. 设备用户管理参数能力集(UserAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_USER_ABILITY)扩展，新增节点：<loginPassword>(登录密码确认)。
7. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<MultiDNSAddress>(支持多DNS)、<isSupportDNS>(支持DNS手动设置使能)。
8. 设备网络应用参数能力集(NetAppAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY)扩展，<NetworkInterfaceEntry >新增子节点：<isSupportDNS>(支持DNS手动设置使能)。
9. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：834。
10. 新增日志类型(对应接口：NET_DVR_FindDVRLog_V30)：
附加日志次类型：0xcc。
V5.2.3.5
build20160622 		经济型指纹门禁产品V1.0
DS-K1A86C、DS-K1T801E 		1. 门禁总的能力集AccessControl更新(对应接口：NET_DVR_STDXMLConfig):
新增能力节点：<isSupportDepartmentParam>(部门参数配置)、<isSupportSchedulePlan>(排班计划配置)、<isSupportAttendanceRule>(考勤规则配置)、<isSupportOrdinaryClass>(普通班参数配置)、<isSupportWorkingClass>(工时班参数配置)、<isSupportAttendanceHolidayGroup>(考勤假日组配置)、<isSupportAttendanceHolidayPlan>(考勤假日计划配置)
2. 读卡器参数配置结构体 NET_DVR_CARD_READER_CFG中读卡器类型字段byCardReaderType 新增类型：36-DS-K1T803F/MF/SF/EF,37-DS-K1A801F/MF/SF/EF
3. 门禁主机能力集ACS_ABILITY更新(对应接口：NET_DVR_GetDeviceAbility)：
新增能力节点：<ScheduleInfo>(排班信息)、<AttendanceSummaryInfo>(考勤汇总信息)、<AttendanceRecordInfo>(考勤记录信息)、<AbnormalInfo>(异常统计信息)
4. 新增部门参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取部门参数配置能力集：GET /ISAPI/AccessControl/DepartmentParam/capabilities；
获取部门参数配置：GET /ISAPI/AccessControl/DepartmentParam/DepartmentNo/<ID>；
设置部门参数配置：PUT /ISAPI/AccessControl/DepartmentParam/DepartmentNo/<ID>。
5. 新增排班计划配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取排班计划配置能力集：GET /ISAPI/AccessControl/SchedulePlan/capabilities；
获取排班计划配置：GET /ISAPI/AccessControl/SchedulePlan/SchedulePlanNo/<ID>；
设置排班计划配置：PUT /ISAPI/AccessControl/SchedulePlan/SchedulePlanNo/<ID>。
6. 新增考勤规则配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取考勤规则配置能力集：GET /ISAPI/AccessControl/AttendanceRule/capabilities；
获取考勤规则配置：GET /ISAPI/AccessControl/AttendanceRule/AttendanceRuleNo/<ID>；
设置考勤规则配置：PUT /ISAPI/AccessControl/AttendanceRule/AttendanceRuleNo/<ID>。
7. 新增普通班参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取普通班参数配置能力集：GET /ISAPI/AccessControl/OrdinaryClass/capabilities；
获取普通班参数配置：GET /ISAPI/AccessControl/OrdinaryClass/OrdinaryClassNo/<ID>；
设置普通班参数配置：PUT /ISAPI/AccessControl/OrdinaryClass/OrdinaryClassNo/<ID>。
8. 新增工时班参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取工时班参数配置能力集：GET /ISAPI/AccessControl/WorkingClass/capabilities；
获取工时班参数配置：GET /ISAPI/AccessControl/WorkingClass/WorkingClassNo/<ID>；
设置工时班参数配置：PUT /ISAPI/AccessControl/WorkingClass/WorkingClassNo/<ID>。
9. 新增考勤假日组配置(对应接口：NET_DVR_STDXMLConfig)：
获取考勤假日组配置能力集：GET /ISAPI/AccessControl/AttendanceHolidayGroup/capabilities；
获取考勤假日组配置：GET /ISAPI/AccessControl/AttendanceHolidayGroup/HolidayGroupNo/<ID>；
设置考勤假日组配置：PUT /ISAPI/AccessControl/AttendanceHolidayGroup/HolidayGroupNo/<ID>。
10. 新增考勤假日计划配置功能(对应接口：NET_DVR_STDXMLConfig)：
获取考勤假日计划配置能力集：GET /ISAPI/AccessControl/AttendanceHolidayPlan/capabilities；
获取考勤假日计划配置：GET /ISAPI/AccessControl/AttendanceHolidayPlan/HolidayPlanNo/<ID>；
设置考勤假日计划配置：PUT /ISAPI/AccessControl/AttendanceHolidayPlan/HolidayPlanNo/<ID>。
11. 新增考勤有效ID获取功能(对应接口：NET_DVR_STDXMLConfig)：
考勤有效ID获取能力集：GET /ISAPI/AccessControl/AttendanceEffectiveID/capabilities；
考勤有效ID获取：GET /ISAPI/AccessControl/AttendanceEffectiveID。
V5.2.3.5
build20160622 		网络球机 V5.4.20 1. 新增光学防抖参数配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_OIS_CAPABILITIES。
2. 新增光学防抖配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_OIS_CFG、NET_DVR_SET_OIS_CFG。
3. 新增鹰视聚焦标定配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_EAGLEFOCUS_CALCFG_CAPABILITIES。
4. 新增鹰视聚焦标定配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_EAGLEFOCUSING_CALCFG、NET_DVR_SET_EAGLEFOCUSING_CALCFG。
5. 新增鹰视聚焦配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_EAGLEFOCUSING_CFG_CAPABILITIES。
6. 新增鹰视聚焦配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_EAGLEFOCUSING_CTRL、NET_DVR_SET_EAGLEFOCUSING_CTRL。
7. NET_DVR_AEMODECFG(曝光、快门等其他参数)使用1个保留字节新增参数：byExposureLevel(曝光等级)。
8. NET_DVR_PDC_RULE_COND(客流量统计规则配置条件)使用4个保留字节新增参数：dwID(场景ID)。
9. NET_DVR_PRESET_NAME(预置点名称配置)使用6个保留字节新增参数：wPanPos(水平参数)、wTiltPos(垂直参数)、wZoomPos(变倍参数)。
10. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x24-违停检测。
11. 球机PTZ控制能力集(PTZChanelCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PTZ_CAPABILITIES)扩展，新增节点：<isSpportPtzEagleFocusing>(是否支持鹰视聚焦功能)。
12. 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展，<AutoExposureMode>(一体机、球机曝光和增益控制能力)中<AutoExposure>(自动曝光模式)增加子节点：<exposureLevel>(曝光等级)。
13. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：836、837。
V5.2.3.5
build20160622 		网络摄像机 V5.4.20 1. 新增MAC地址过滤配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_MACFILTER_CAPABILITIES。
2. 新增MAC地址过滤配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_MACFILTER_CFG、NET_DVR_SET_MACFILTER_CFG。
3. 新增Smart行为标定过滤尺寸配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_SMARTCALIBRATION_CAPABILITIES。
4. 新增Smart行为标定过滤尺寸配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SMARTCALIBRATION_CFG、NET_DVR_SET_SMARTCALIBRATION_CFG。
5. NET_DVR_PDC_RULE_CFG_V42(客流量规则配置)扩展：
1) 使用5个保留字节新增参数：byInterferenceSuppression(干扰抑制)、byEmailDayReport(客流日报表邮件上传使能)、byEmailWeekReport(客流周报表邮件上传使能)、byEmailMonthReport(客流月报表邮件上传使能)、byEmailYearReport(客流年报表邮件上传使能)。
2) byOSDEnable(客流统计OSD显示是否启用)新增取值：2-进入、3-离开。
6. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<HRUDP>(HRUDP可靠传输能力)。
7. 智能通道分析能力集(VcaChanAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，<PDC>(客流量统计能力)扩展： 1) <OSD>(OSD能力)新增子节点：<OSDType>(显示类型)。
2) 新增子节点：<EmailReport>(邮件上传报告)。
8. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：182、834。
V5.2.3.5
build20160622 		楼宇可视对讲 V1.4.0 1. 新增上传铃音文件功能:
1) 新增文件上传类型：UPLOAD_RING_FILE，对应接口：NET_DVR_UploadFile_V40。
2) NET_DVR_GetUploadState返回的状态值新增：21- 上传音频采样率不支持。
2. 新增铃音参数列表查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_RING_LIST。
3. 新增铃音参数能力集(对应接口：NET_DVR_STDXMLConfig)：
获取能力集：GET /ISAPI/VideoIntercom/ring/capabilities。
4. 新增删除铃音功能(对应接口：NET_DVR_STDXMLConfig)：
按铃音编号删除：DELETE /ISAPI/VideoIntercom/ring/ringID/<ID>；
删除所有铃音：DELETE /ISAPI/VideoIntercom/ring。
5. 新增手机布防控制功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/AlarmControlByPhone/capabilities；
获取：GET /ISAPI/SecurityCP/AlarmControlByPhone；
设置：PUT /ISAPI/SecurityCP/AlarmControlByPhone。
6. 新增加密认证功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/VideoIntercom/passwordAuthentication/capabilities；
加密认证：PUT /ISAPI/VideoIntercom/passwordAuthentication。
7. 新增场景管理功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/VideoIntercom/scene/nowMode/capabilities；
获取：GET /ISAPI/VideoIntercom/scene/nowMode；
设置：PUT /ISAPI/VideoIntercom/scene/nowMode。
8. 新增批量获取防区参数功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_ALARMIN_PARAM_LIST。
9. 新增场景防区参数配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/SecurityCP/BasicParam/sceneZoneCfg/capabilities；
获取：GET /ISAPI/SecurityCP/BasicParam/sceneZoneCfg?sceneMode=(atHome、goOut、goToBed、custom可选)；
设置：PUT /ISAPI/SecurityCP/BasicParam/sceneZoneCfg?sceneMode=(atHome、goOut、goToBed、custom可选)。
10. 新增呼叫电梯功能(对应接口：NET_DVR_STDXMLConfig)：
命令：PUT /ISAPI/VideoIntercom/callElevator。
11. 新增获取智能锁信息列表功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/VideoIntercom/SmartLock/lockParam/capabilities；
获取：GET /ISAPI/VideoIntercom/SmartLock/lockParam。
12. 新增扇区加密校检配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/AccessControl/Card/sectorCheck/capabilities；
获取：GET /ISAPI/AccessControl/Card/sectorCheck；
设置：PUT /ISAPI/AccessControl/Card/sectorCheck。
13. 新增APPKey配置功能(对应接口：NET_DVR_STDXMLConfig)：
能力集：GET /ISAPI/VideoIntercom/AppKeyConfiguration/capabilities；
设置：PUT /ISAPI/VideoIntercom/AppKeyConfiguration。
14. 新增ISAPI协议可视对讲能力集(对应接口：NET_DVR_STDXMLConfig)：
命令：GET /ISAPI/VideoIntercom/capabilities。
15. NET_DVR_CONTROL_GATEWAY(远程开锁控制参数)使用20个保留字节新增参数：byLockType(锁类型)、wLockID(锁ID)、byControlType(开锁场景类型)、byPassword[PASSWD_LEN](锁密码)。
16. NET_DVR_CALL_ROOM_CFG(按键呼叫住户配置)使用1个保留字节新增参数：byManageCenter(是否配置成呼叫管理中心)。
17. NET_DVR_VIDEO_CALL_PARAM(可视对讲信令处理参数)使用10个保留字节新增参数：wPeriod(期号)、wBuildingNumber(楼号)、wUnitNumber(单元号)、wFloorNumber(层号)、wRoomNumber(房间号)。
18. NET_DVR_VIDEO_INTERCOM_ALARM(可视对讲报警信息)中参数byAlarmType(报警类型)新增取值：8-通话对讲、9-智能锁劫持指纹报警、10-智能锁劫持密码报警、11-智能锁撬门报警、12-智能锁门锁锁定报警、13-智能锁电量不足报警。
19. NET_DVR_ALARMIN_PARAM(防区参数)中wDetectorType(防区探测器类型)的枚举类型DETECTOR_TYPE新增取值：SMART_LOCK(智能锁)、WATER_DETECTOR(水感探测器)。
20. 可视对讲能力集(IpViewDevAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY)扩展：
1) 新增子节点：<LimitedDetectorType>(探测器类型限制能力)、<ZoneList>(特殊防区配置能力)、<NoNeedReboot>(不需要重启的配置能力)。
2) <ControlGateway>(远程开锁能力)新增子节点：<controlType>(开锁场景类型)、<lockType>(锁类型)、<lockID>(锁ID)、<password>(智能锁密码长度)。
3) <CallRoomConfig>(按键呼叫住户配置能力)新增子节点：<callManageCenter>(是否配置成呼叫管理中心)。
4) <detectorType>(探测器类型能力)新增取值：smartLock(智能锁)、waterDetector(水感探测器)。
5) <VideoCall>(可视通话能力)中<supportCmd>(信令类型)新增取值：Request(请求呼叫)。
21. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：1950~1959。
V5.2.3.5
build20160622 		热成像单目筒机
DS-2TD2166-XX
V1.0 		1. 新增手动除冰能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_MANUALDEICING_CAPABILITIES。
2. 新增手动除冰配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_MANUALDEICING、NET_DVR_SET_MANUALDEICING。
3. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：3001。
V5.2.3.5
build20160622 		热成像中载云台
DS-2TD6135(T)、
DS-2TD6161(T)等
V5.3.5 		1. 热成像能力集(ThermalCap)新增节点：<isSupportRealtimeThermometry>(是否支持实时测温功能)、<isSupportThermIntell>(是否支持热成像智能互斥配置)。
2. 新增测温配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES。
3. 新增测温配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMOMETRY_BASICPARAM、NET_DVR_SET_THERMOMETRY_BASICPARAM。
4. 获取测温预置点关联配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES。
5. 新增测温预置点关联配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMOMETRY_PRESETINFO、NET_DVR_SET_THERMOMETRY_PRESETINFO。
6. 获取测温报警方式配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_THERMOMETRY_ALARMRULE_CAPABILITIES。
7. 新增测温报警规则配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMOMETRY_ALARMRULE、NET_DVR_SET_THERMOMETRY_ALARMRULE。
8. 新增温差规则配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMOMETRY_DIFFCOMPARISON、NET_DVR_SET_THERMOMETRY_DIFFCOMPARISON。
9. 新增测温联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMOMETRY_TRIGGER、NET_DVR_SET_THERMOMETRY_TRIGGER。
10. 新增实时温度检测查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_REALTIME_THERMOMETRY。
11. 新增温度和温差报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
报警信息类型：COMM_THERMOMETRY_ALARM、COMM_THERMOMETRY_DIFF_ALARM。
12. 新增测温标定文件上传下载功能(对应接口：NET_DVR_UploadFile_V40和NET_DVR_StartDownload)：
上传类型：UPLOAD_THERMOMETRIC_FILE、NET_SDK_DOWNLOAD_THERMOMETRIC_FILE。
13. 新增船只检测联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SHIPSDETECTION_EVENT_TRIGGER、NET_DVR_SET_SHIPSDETECTION_EVENT_TRIGGER。
14. 获取船只检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_SHIPSDETECTION_SCHEDULE_CAPABILITIES。
15. 新增船只检测布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SHIPSDETECTION_SCHEDULE、NET_DVR_SET_SHIPSDETECTION_SCHEDULE。
16. 新增船只检测参数配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_SHIPSDETECTION_CAPABILITIES。
17. 新增船只检测配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SHIPSDETECTION_CFG、NET_DVR_SET_SHIPSDETECTION_CFG。
18. 新增获取船只计数信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_SHIPSDETECTION_COUNT。
19. 新增清空船只计数信息功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SHIPSCOUNT_DELETE_CTRL。
20. 新增船只检测报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
报警信息类型：COMM_ALARM_SHIPSDETECTION。
21. 获取热成像裸数据叠加能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_BAREDATAOVERLAY_CAPABILITIES。
22. 新增坏点校正控制功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_DPC_CTRL。
23. 新增热成像智能互斥能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_THERMINTELL_CAPABILITIES。
24. 新增热成像智能互斥配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THERMINTELL、NET_DVR_SET_THERMINTELL。
25. NET_DVR_FILECOND_V40(录像文件查找条件)中dwFileType(文件类型)和NET_DVR_FINDDATA_V40(录像文件查找结果)中byFileType(文件类型)分别新增取值：36-船只检测、37-测温预警、38-测温报警、42-温差报警。
26. NET_DVR_RECORDSCHED_V40(时间段录像参数)和NET_DVR_RECORDDAY_V40(全天录像参数)中byRecordType(录象类型)分别新增取值：35-船只检测、36-测温预警、37-测温报警、38-温差报警。
27. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x20-船只检测、0x21-测温预警、0x22-测温报警、0x23-温差报警。
28. NET_DVR_PREVIEWINFO(预览参数)使用1个保留字节新增参数：byVideoCodingType(码流数据编解码类型)。
29. 事件触发能力集(EventTriggersCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)新增节点：<ThermometryCap>(热成像测温报警)、<ShipsDetectionTriggerCap>(船只检测报警)。
30. Smart能力集(SmartCap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMART_CAPABILITIES)新增节点：<isSupportShipsDetection>(船只检测)。
31. 视频流能力集(StreamingChannel，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_STREAMING_CAPABILITIES)，新增节点：<isSupportBareDataOverlay>(是否支持热成像裸数据叠加功能)。
32. 设备前端参数能力集(IPC_FRONT_PARAMETER_V20，对应接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20)扩展，新增节点：<DPCParam>(坏点校正)。
33. 设备图像显示参数能力集(ImageDisplayParamAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，节点<supportCCDFunc>(支持的前端参数)新增取值：DPC(坏点校正)。
34. PTZ能力集(PTZAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<Preset>(预置点能力)中新增子节点：<maxThermometryPresetNum>(支持的测温预置点个数)。
35. 设备通道输入能力集(ChannelInputAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展，<RecordPlan>和<RecordQuery>中子节点<supportRecordType>(支持录像类型)分别新增取值：shipsDetection,thermEarlyWarning,thermAlarm,thermDiffAlarm(船只检测,测温预警,测温报警,温差报警)。
36. JPEG抓图能力集(JpegCaptureAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY)扩展，<supportFileType>(支持图片类型)新增取值：shipsDetection,thermEarlyWarning,thermAlarm,thermDiffAlarm(船只检测,测温预警,测温报警,温差报警)。
37. 新增日志类型(对应接口：NET_DVR_FindDVRLog_V30)：
报警日志次类型：0x5a~0x60。
V5.2.1.15
build20160608 		网络报警主机V2.2
 1. 报警主机能力集结构体NET_DVR_ALARMHOST_ABILITY修改一个保留字段为bySubSystemAttributeAbility——值恒为1，禁止1号子系统关闭使能。(对应接口：NET_DVR_GetDeviceAbility)
能力集类型：ALARMHOST_ABILITY。
2. 子系统配置结构体NET_DVR_ALARMSUBSYSTEMPARAM使用59字节新增字段：bySubSystemID、byKeyZoneArmReportEnable、byKeyZoneArmEnable、byOneKeySetupAlarmEnable、bySingleZoneSetupAlarmEnable、byCenterType、sCenterAccount、sCenterAccountV40
3. 报警主机控制参数结构体NET_DVR_CONTROL_PARAM使用1字节新增字段：byMandatoryAlarm
4. 新增RS485重新注册功能。(对应接口：NET_DVR_SetSTDConfig)
命令：NET_DVR_REGISTER_ALARM_RS485
5. 打印机配置结构体NET_DVR_ALARMHOST_PRINTER_CFG的设备信息字段dwDeviceInfo新增参数：bit19-键盘锁定。
6. 报警主机日志类型更新，主类型“0x3-操作”下新增次类型0x57~0x71。(详见结构体：NET_DVR_ALARMHOST_SEARCH_LOG_PARAM)
7. 报警主机能力集(AlarmHostAbility，对应接口：NET_DVR_GetDeviceAbility能力类型：DEVICE_ABILITY_INFO)扩展，新增字段<supportCard><RegisterRS485><keyZoneArmReportEnable><keyZoneArmEnable><oneKeyAlarmEnable> <singleZoneAlarmEnable><centerType><centerAccount><centerAccountV40><mandatoryAlarm><NetModuleUpgrade>
V5.2.1.15
build20160608 		大路数NVR
DS-96000N-I系列 V3.6.0 		1. 新增获取配件板信息能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_ACCESSORY_CARD_INFO_CAPABILITIES。
2. 新增获取配件板信息功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_ACCESSORY_CARD_INFO。
3. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType新增附加信息日志次类型：MINOR_ACCESSORIES_MESSAGE(配件板信息)，新增异常日志次类型：MINOR_ACCESSORIES_PLATE(配件板异常)。
4. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：975、976、984~987。
5. 新增设备类型：DS_96XXXN_IX。
V5.2.1.5
build20160506 		I系列NVR V3.4.8 1. NET_DVR_MONITOR_INFO(网络监听模式配置)使用144个保留字节新增参数：struRestrictRemoteIP(限制远程访问IP)。
2. POS过滤规则配置协议扩展：
1) NET_DVR_POS_FILTER_CFG(POS过滤规则配置)中参数byProtocolType(协议类型)新增取值：5- NUCLEUS。
2) NET_DVR_POS_PROTOCOL_UNION(POS协议参数联合体)中新增结构体参数：NET_DVR_POS_NUCLEUS(NUCLEUS协议参数)。
3. NET_DVR_CHAN_FILTER_CFG(POS规则与通道关联信息)使用4个保留字节新增参数：dwTimeOut(超时时间)。
4. 新增日志类型(对应接口：NET_DVR_FindDVRLog_V30)：
报警日志次类型：0x411、0x412。
5. POS能力集(POSAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)扩展：
1) <FilterRule>(过滤规则能力)新增子节点：<NUCLEUS>(NUCLEUS协议配置)，<protocalType>(协议类型)新增取值：NUCLEUS。
2) <ConnectMode>(连接方式能力)中<TCPMonitor>(TCP网络监听)和<UDPMonitor>(UDP网络监听)分别新增子节点：<restrictRemoteIPv4>(远程访问IP限制)。
3) <ChanAssociationRule>(通道与规则关联能力)中<timeOut>(POS数据接收超时时间)。
6. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，<NeedReboot>(是否需要重启)中新增子节点：<NUCLEUSToOther >(nucleus协议切换到其他协议时是否需要重启)。
V5.2.1.5
build20160506 		指纹门禁考勤一体机 V1.1 1. 新增韦根配置功能(对应接口：NET_DVR_STDXMLConfig)：
韦根配置能力集：GET /ISAPI/AccessControl/WiegandCfg/capabilities
韦根配置：GET /ISAPI/AccessControl/WiegandCfg/wiegandNo/<ID>
PUT /ISAPI/AccessControl/WiegandCfg/wiegandNo/<ID>。
2. 新增获取门控安全模块状态功能(对应接口：NET_DVR_STDXMLConfig)：
门控安全模块状态能力集：GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus/capabilities
获取门控安全模块状态：GET /ISAPI/AccessControl/DoorSecurityModule/moduleStatus。
3. 新增获取触发抓拍参数功能(对应接口：NET_DVR_STDXMLConfig)：
触发抓拍参数能力集：GET /ISAPI/AccessControl/SnapConfig/capabilities
获取触发抓拍参数：GET /ISAPI/AccessControl/SnapConfig。
4. 新增门禁主机总能力集功能(对应接口：NET_DVR_STDXMLConfig)：
GET /ISAPI/AccessControl/capabilities。
5. 门禁主机事件信息扩展：
1) NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)中dwMinor(次类型)，新增报警次类型：MINOR_SECURITY_MODULE_DESMANTLE_ALARM(门控安全模块防拆报警)、MINOR_SECURITY_MODULE_DESMANTLE_RESUME(门控安全模块防拆恢复)，新增异常次类型：MINOR_SECURITY_MODULE_OFF(门控安全模块掉线)、MINOR_SECURITY_MODULE_RESUME(门控安全模块掉线恢复)。
2) NET_DVR_EVENT_LINKAGE_INFO(事件联动参数)中wSubEventType(事件次类型)新增门事件类型：EVENT_ACS_SECURITY_MODULE_DESMANTLE_ALARM(门控安全模块防拆报警)。
6. NET_DVR_ALARM_RS485CFG(报警主机RS485参数)使用2个保留字节新增参数：bySerialType(串口类型，暂不支持)、byMode(连接模式)。
7. NET_DVR_SNAPCFG(触发参数)使用4个保留字节新增参数：struJpegPara(抓拍图片参数)。
8. 门禁主机能力集(AcsAbility)扩展：
1) <EventLinkage>(事件及卡号联动能力)中<EventList>(事件列表)里面DoorEvent的<SubEventNameList>(事件次类型列表)新增类型：SecurityMoudleDesmantleAlarm(门控安全模块防拆报警)。
2) <ContinuousShootCfg>(触发抓拍能力)中新增子节点：<JpegParam>(抓拍图片参数)。
9. RS232和RS485串口能力(SerialAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SERIAL_ABILITY)扩展，<RS485>(RS485参数能力)中<RS485Entry>新增子节点：<mode>(连接模式)。
V5.2.3.2
build20160602 win64 		Win64设备网络SDK基线项目 1. Win64版本放开语音对讲、语音广播接口。
2. 支持NET_DVR_SaveRealData_V30，录像可以选择PS封装或者3GP封装格式。
3. 新增SDK支持能力设置(对应接口：NET_DVR_SetSDKInitCfg)：
输入参数：NET_SDK_INIT_CFG_ABILITY。
4. NET_DVR_DEVICECFG_V40(设备参数)使用2个保留字节新增参数：wDevClass(设备大类)。
V5.2.1.10 build20160523 win32 视频门禁一体机 V1.0
DS-K1T500S、DS-K1T500SF等系列 		1. NET_DVR_EVENT_CARD_LINKAGE_CFG（事件/卡号联动配置结构体），使用1个保留字节新增参数：byRecordVideo(是否联动录像)。
2. 门禁能力集(AcsAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY)， 节点<SubEventNameList> 新增参数：unlockcard(未锁定卡)、新增加节点:<CallCenter>(呼叫中心)。
V5.1.6.25
build20160401 		紧急求助报警产品
DS-PEA系列 V1.0.0 		1. 新增紧急求助报警产品能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_EMERGENCE_ALARM_PRODUCT_CAP。
2. 新增呼叫等待参数配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CALL_WAITTING_CFG_CAP。
3. 新增呼叫等待参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_CALL_WAITTING_CFG、NET_DVR_SET_CALL_WAITTING_CFG。
4. 新增警灯参数配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_ALARM_LAMP_CFG_CAP。
5. 新增警灯参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ALARM_LAMP_CFG、NET_DVR_SET_ALARM_LAMP_CFG。
6. 新增语音提示配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_VOICE_PROMPTION_CFG_CAP。
7. 新增语音提示配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VOICE_PROMPTION_CFG、NET_DVR_SET_VOICE_PROMPTION_CFG。
8. 新增紧急报警处理能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_EMERGENCE_ALARM_RESPONSE_CAP。
9. 新增紧急报警处理控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL。
10. 报警主机网络参数配置扩展(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ALARMHOST_NETCFG_V50、NET_DVR_SET_ALARMHOST_NETCFG_V50。
11. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中报警主机XML能力集(AlarmHostAbility)扩展：
1) <SearchOtherStatus>(其他状态查询能力)中<otherStatusType>(其他状态类型)新增取值：electricLock,alarmLamp。
2) <NetworkConfig>(网络参数能力)中<NetParameter>(网络参数)新增子节点：<netType>(网卡类型)，<reportProtocol>(报告上传协议)新增取值：ehome。
12. 新增报警主机日志类型(对应接口：NET_DVR_FindAlarmHostLog)：
1)报警日志次类型：0x30、0x31；
2)操作日志次类型：0x57~0x5c。
13. 新增设备类型：DS_PEAXX。
V5.1.6.21
build20160401 		网络摄像机 V5.4.0 1. 新增获取断网续传主机信息功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_ANR_ARMING_HOST。
2. 新增清空前端参数功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_CLEAR_IPC_PARAM。
3. NET_DVR_STORAGE_DETECTION_ALARM(存储智能检测报警信息)使用1个保留字节新增参数：fResidualLife(SD卡预计剩余寿命)。
4. 设备所有编码能力集(AudioVideoCompressInfo)扩展，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ENCODE_ALL_ABILITY_V20，<SmartCodecCap>(Smart编码能力)新增子节点：<H265>(Smart265能力)，<supportCodeType>新增取值：H.265。
5. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中前端参数动态能力集输入信息(CameraParaDynamicAbility)扩展：<VbrAverageCapDynamicLinkTo>(平均码率动态获取)中<codeType>新增取值：smart265。
6. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：791。
V5.1.6.21
build20160401 		智能交通摄像机 V4.2.0 1. 新增报警控制配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ALARMCTRL_CFG、NET_DVR_SET_ALARMCTRL_CFG。
2. 新增报警控制能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_ALARMCTRL_CAPABILITIESG。
3. 新增车辆子品牌文件上传功能(对应接口：NET_DVR_UploadFile_V40)：
UPLOAD_SUBBRAND_FILE。
4. NET_ITS_PICTURE_INFO(抓拍图片信息)使用5个保留字节新增参数：dwUTCTime(UTC时间)、byCompatibleAblity(兼容能力字段)。
5. NET_ITS_PLATE_RESULT(识别结果)使用5个保留字节新增参数：byIllegalFromatType(违章信息格式类型)、pIllegalInfoBuf(违法代码字符信息)。
6. NET_DVR_MANUALSNAP(手动抓拍参数)使用1个保留字节新增参数：byLaneNo(车道号)。
7. ITS_OVERLAP_ITEM_TYPE(字符叠加类型)新增枚举类型：OVERLAP_ITEM_CAR_SUBBRAND(车辆子品牌)。
8. NET_DVR_SNAP_CAMERAPARAMCFG(CCD参数)使用8个保留字节新增参数：byMCEEnabled(记忆色增强使能)、byMCELevel(记忆色增强强度)、byAutoContrastEnabled(自动对比度使能)、byAutoContrastLevel(自动对比等级)、byLSEDetailEnabled(细节增强使能)、byLSEDetailLevel(细节增强等级)、byLPDEEnabled(车牌增强使能)、byLPDELevel(车牌增强等级)。
9. NET_ITC_ICR_AOTOSWITCH_PARAM(ICR自动切换参数)使用1个保留字节新增参数：byICRAutoSwitch(ICR自动切换加阈值选项)。
10. 触发参数配置扩展：
1) ITC_TRIGGERMODE_TYPE(触发模式)新增枚举类型：ITC_REDLIGHT_PEDESTRIAN_TYPE(行人闯红灯触发)、ITC_NOCOMITY_PEDESTRIAN_TYPE(不礼让行人触发)。
2) NET_ITC_TRIGGER_PARAM_UNION(触发参数联合体)中新增：NET_ITC_REDLIGHT_PEDESTRIAN_PARAM(行人闯红灯参数)、NET_ITC_NOCOMITY_PEDESTRIAN_PARAM(不礼让行人参数)。
3) NET_ITC_PLATE_RECOG_PARAM(牌识参数)中dwRecogMode(识别的类型)新增取值：bit18-使馆车牌识别、bit19-车辆子品牌识别。
4) NET_ITC_SINGLE_IOSPEED_PARAM(单组IO测速参数)、NET_ITC_LANE_PARAM(卡口RS485触发模式车道参数)、NET_ITC_SINGLEIO_PARAM(单IO参数)分别使用1个保留字节新增参数：byEmergencyCapEn(是否启用应急车道抓拍)。
11. 视频电警触发参数扩展：
1) NET_ITC_VIOLATION_DETECT_PARAM(违规检测参数)使用1个保留字节新增参数：byPostSnapTimes(卡口抓拍张数)。
2) NET_ITC_LANE_VIDEO_EPOLICE_PARAM(车道参数)使用20个保留字节新增参数：struInterval(抓拍间隔参数)。
12. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中智能交通设备能力(ITDeviceAbility)扩展：
1) <ITSAbility>中<triggerMode>新增取值：postNoComityPed(不礼让行人触发)、postRedLightPed(行人闯红灯触发)。
2) <ITSAbility>中<ManualSnap>新增子节点：<laneNo>(车道号)。
13. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：1605~1620。
V5.2.1.2
build20160407 		Win32设备网络SDK基线项目 1. 新增SDK日志参数配置功能(对应接口：NET_DVR_SetSDKLocalCfg)：
配置类型：NET_DVR_LOCAL_CFG_TYPE_LOG。
2. 新增多路报警回调设置接口：NET_DVR_SetDVRMessageCallBack_V50。
V5.1.6.20
build20160322 		E系列网络高清智能球机 V5.3.14 1. 设备图像参数能力集(VideoPicAbility)扩展，<OSD>(OSD能力)中新增子节点：<OSDCharactersNum>(OSD字符叠加长度限制)、<ChannelNumOverlySize>(通道名称长度限制)。
V5.1.6.20
build20160322 		防护舱控制器
DS-1H02-A V2.0.2_160511 		1. 新增获取设备总能力集(对应接口：NET_DVR_STDXMLConfig：
设备总能力集：DeviceCap。
2. 新增防护舱控制器能力集(对应接口：NET_DVR_STDXMLConfig)：
防护舱控制器能力集：SafetyCabinCap。
3. 设备声音参数配置能力集(对应接口：NET_DVR_STDXMLConfig)：
声音参数配置能力集：SoundCfg。
4. 防护舱门锁控制能力(对应接口：NET_DVR_STDXMLConfig)：
防护舱门锁控制能力集：LockCtrl。
5. 查询防护舱门锁状态能力(对应接口：NET_DVR_STDXMLConfig)：
查询防护舱门锁状态能力集：LockStatus。
6. 设备声音参数配置(对应接口：NET_DVR_STDXMLConfig)：
设置声音控制参数：SET /ISAPI/System/SoundCfg。
7. 防护舱门锁控制(对应接口：NET_DVR_STDXMLConfig)：
控制防护舱门锁： POST /ISAPI/SafetyCabin/LockCtrl。
8. 设备声音参数获取(对应接口：NET_DVR_STDXMLConfig)：
获取声音控制参数：GET /ISAPI/System/SoundCfg。
9. 控制防护舱门锁状态(对应接口：NET_DVR_STDXMLConfig)：
查询防护舱门锁状态：GET /ISAPI/SafetyCabin/LockStatus。
V5.1.6.17
build20160318 		视频会议MCU及终端
DS-65VM/DS-65VT V1.0.1 		1. 新增终端注册GK参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_TERMINAL_GK_CFG、NET_DVR_SET_TERMINAL_GK_CFG。
2. 新增终端注册GK能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_TERMINAL_GK_CFG_CAP。
3. MCU能力集(VCSCap)扩展，<TerminalCap>(终端能力集)新增子节点：<isSupportTerminalGkCfg>(是否支持终端注册GK参数配置)。
V5.1.6.17
build20160318 		NVR V3.4.6 1. NET_DVR_VEHICLE_CONTROL_ALARM(车辆报警信息)使用13个保留字节新增参数：dwChannel(设备通道号)、dwPicDataLen(图片数据大小)、byPicType(图片类型)、pPicData(图片数据缓冲区)。
V5.1.6.15
build20160302 		出入口控制
DS-TME4XX V2.0.1 		1. 新增语音参数配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_TMEVOICE_CAPABILITIES。
2. 新增语音参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_TMEVOICE_CFG、NET_DVR_SET_TMEVOICE_CFG。
3. NET_DVR_ILLEGALCARDFILTERING_CFG(停车场票箱参数)使用1个保留字节新增参数：byNoplateTakeCardEnabled(是否启用无车牌取凭据放行)。
4. VCA_RULE_EVENT_TYPE_EX(外接设备类型)新增枚举类型：DEVICES_TYPE_PAPER_SCANNERS(纸票扫描仪)、DEVICES_TYPE_IPC_ALARM(IPC布防状态)。
5. EXTERNAL_DEVICES_STATUS(外接设备状态)新增枚举类型：DEVICES_STATUS_SENDCARD_ERROR(预发卡错误)、DEVICES_STATUS_CARD_BLOCKED(堵卡)、DEVICES_STATUS_CARD_FULL(回收仓卡满)、DEVICES_STATUS_LOCK(锁闸)。
6. NET_DVR_ALRAM_FIXED_HEADER(报警信息固定部分参数)中dwAlarmType(报警信息类型)新增取值：18-TME语音对讲请求报警。
7. 停车场出入口设备能力集(TMECap，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TME_CAPABILITIES)扩展，新增节点：<isSupportTMEVoiceConfiguration>(是否支持语音参数配置能力)。
8. 停车场票箱参数配置能力集(TMEConfiguration，对应接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES)扩展，新增节点：<noplateTakePermissionEnabled>(是否启用无车牌取凭据放行)。
9. 新增设备类型：TRAFFIC_TME。
V5.1.6.15
build20160302 		热成像双光谱重载云台
DS-2TD8035T等 V1.0 		1. 新增低功耗配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_LOWPOWER、NET_DVR_SET_LOWPOWER。
2. 新增变倍联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ZOOMLINKAGE、NET_DVR_SET_ZOOMLINKAGE。
3. 新增手动测距功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_MANUALRANGING。
4. 新增火点可见光镜头聚焦变倍功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_FIRE_FOCUSZOOM_CTRL。
5. 新增低功耗配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_LOWPOWER_CAPABILITIES。
6. 新增变倍联动配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_ZOOMLINKAGE_CAPABILITIES。
7. 新增手动测距配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_MANUALRANGING_CAPABILITIES。
8. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)和NET_DVR_FIND_PICTURE_V40(图片查找结果)中byFileType(图片类型)分别新增取值：0x1e-火点检测。
9. NET_DVR_FILECOND_V40(录像文件查找条件)中dwFileType(文件类型)和NET_DVR_FINDDATA_V40(录像文件查找结果)中byFileType(文件类型)分别新增取值：34-火点检测。
10. NET_DVR_RECORDSCHED_V40(时间段录像参数)和NET_DVR_RECORDDAY_V40(全天录像参数)中byRecordType(录象类型)分别新增取值：30-火点检测。
11. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)使用8个保留字节新增参数：struOpticalDehaze(光学透雾参数)。
12. NET_DVR_LASER_PARAM_CFG(激光参数配置)使用3个保留字节新增参数：byEnabled(手动控制激光灯使能)、byIllumination(激光灯强度配置)、byLightAngle(补光角度)。
13. NET_DVR_DEVSERVER_CFG(模块服务配置)使用1个保留字节新增参数：byEnableDeicing(除冰功能)。
14. 火点检测配置能力集(FireDetection)新增节点：<fireFrameDis>(火点框显示)、<fireMaxTemp>(最高温度)、<fireMaxTempPosition>(最高温度位置显示)、<fireDistance>(最高温度距离)。
15. 热成像能力集(ThermalCap)新增节点：<isFireFocusZoomSupport>(是否支持火点可见光镜头聚焦变倍)。
16. JPEG抓图能力集(JpegCaptureAbility)扩展，<supportFileType>(支持图片类型)新增取值：fireDetection(火点检测)。
17. 设备通用能力集(DEVICE_ABILITY_INFO)，其中设备通道输入能力(ChannelInputAbility)扩展，<RecordPlan>和<RecordQuery>中子节点<supportRecordType>(支持录像类型)分别新增取值：fireDetection(火点检测)。
18. 设备前端参数能力(IPC_FRONT_PARAMETER_V20)扩展，新增节点：<OpticalDehaze>(光学透雾能力)，<LaserConfig>(激光参数配置能力)中新增子节点：<enable>(使能)、<illumination>(激光灯强度配置)、<lightAngle>(补光角度)。
19. 设备软硬件能力集(BasicCapability)扩展，节点<DevModuleServerCfg>(模块服务配置能力)中新增子节点：<deicing >(除冰能力)。
V5.1.6.15
build20160302 		GIS网络球机
(DS-2DF8223I-A、
DS-2DF6223I-A)
V5.3.4 		1. 新增集中布防参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_CENTRALIZEDCTRL、NET_DVR_SET_CENTRALIZEDCTRL。
2. 新增防破坏报警参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VANDALPROOFALARM、NET_DVR_SET_VANDALPROOFALARM。
3. 新增获取当前GIS信息数据功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_GISINFO。
4. 新增卫星定位校时配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_SATELLITETIME、NET_DVR_SET_SATELLITETIME。
5. 新增电子罗盘矫正控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_COMPASS_CALIBRATE_CTRL。
6. 新增电子罗盘指向正北控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_COMPASS_NORTH_CTRL。
7. 新增GIS信息上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
命令：COMM_GISINFO_UPLOAD。
8. 新增防破坏报警信息上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
命令：COMM_VANDALPROOF_ALARM。
9. 新增能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CENTRALIZEDCTRL_CAPABILITIES(集中布防能力)、
NET_DVR_GET_COMPASS_CAPABILITIES(电子罗盘能力)。
10. NET_DVR_PICCFG_V30和NET_DVR_PICCFG_V40(通道图像参数)，分别使用1个保留字节新增参数：byAlignment(对齐方式)，byFontSize(字体大小)新增取值：4- 24*24(中)/12*24(英)。
11. NET_DVR_SECURITY_CFG(安全认证配置)使用1个保留字节新增参数：byStreamEncryption(码流加密)，对应安全认证配置能力集(SecurityAbility)新增节点：<streamEncryption>。
12. 设备图像参数能力集(VideoPicAbility)扩展，<OSD>新增子节点：<alignment>。
13. 设备网络应用参数能力(NetAppAbility)扩展，新增节点：<SatelliteTiming>(卫星定位时间使能控制)。
V5.1.6.10
build20160223 		人员通道门禁主机
DS-K2602-A V1.1 		1. 新增下发平台认证结果功能(对应接口：NET_DVR_SetDVRConfig)：
能力集类型：NET_DVR_SET_PLATFORM_VERIFY_CFG。
2. 新增人数统计参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
能力集类型：NET_DVR_GET_PERSON_STATISTICS_CFG、NET_DVR_SET_PERSON_STATISTICS_CFG。
3. 新增屏幕字符串显示配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
能力集类型：NET_DVR_GET_ACS_SCREEN_DISPLAY_CFG、NET_DVR_SET_ACS_SCREEN_DISPLAY_CFG。
4. 新增人员通道闸门时间参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
能力集类型：NET_DVR_GET_GATE_TIME_CFG、NET_DVR_SET_GATE_TIME_CFG。
5. NET_DVR_ACS_EXTERNAL_DEV_CFG(门禁主机串口外设参数)扩展，使用2个保留字节新增参数：wDevDetailType(外设详细设备型号)，byACSDevType(设备类型)新增取值：8-指纹头、9-语音模块。
6. NET_DVR_ID_CARD_INFO_ALARM(身份证刷卡信息上传)使用9个保留字节新增参数：dwPicDataLen(图片数据大小)、pPicData(图片数据)、byCardType(卡类型)。
7. NET_DVR_FINGER_PRINT_STATUS(指纹状态参数)，使用36个保留字节新增参数：byErrorMsg[ERROR_MSG_LEN](下发错误信息)、dwCardReaderNo(指纹读卡器编号)，byCardReaderRecvStatus(指纹读卡器状态)新增取值类型：2-该指纹模组不在线、3-重试或指纹质量差、4-内存已满、5-已存在该指纹、6-已存在该指纹ID、7-非法指纹ID、8-该指纹模组无需配置。
8. 门禁主机通用事件上传信息扩展：
1) NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)中dwMinor新增事件次类型：MINOR_CARD_PLATFORM_VERIFY(刷卡平台认证)。
2) NET_DVR_ACS_EVENT_INFO(事件信息)，使用2个保留字节新增参数：wAccessChannel(人员通道号)，byCardType(卡类型)新增取值：8-解除卡，byCardReaderKind(读卡器类型)新增取值：4-指纹头。
9. NET_DVR_ACS_PARAM_TYPE(清空门禁主机参数)中dwParamType(参数类型)新增取值：ACS_PARAM_PERSON_STATISTICS_CFG(人数统计参数)。
10. 门禁主机能力集(AcsAbility)扩展：
1) 新增节点：<PlatformVerifyCfg>(平台认证能力)、<PersonStatisticsCfg>(人数统计能力)、<ScreenDisplayCfg>(屏幕字符串显示参数能力)、<GateTimeCfg>(人员通道闸门时间参数能力)。
2) <ExternalDevCfg>(串口外设参数能力)，新增子节点：<DevDetailType>(详细设备型号)，<ACSDevType>(设备类型)新增取值：fingerPrintModule(指纹头)、voiceModule(语音模块)。
V5.1.6.7
build20160125 		枪球联动系统 V5.3.13
DS-2CD4026FWD-A(LF)、
DS-2CD4826FWD-IZH(LF)、
DS-2DF8223I-A(LF) 		1. 新增主从跟踪能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_MASTERSLAVEtracking_CAPABILITIES。
2. 新增从摄像机IP信息配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_SLAVECAMERA_CAPABILITIES。
3. 新增从摄像机IP信息配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SLAVECAMERA、NET_DVR_SET_SLAVECAMERA。
4. 新增获取从摄像机连接状态功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_SLAVECAMERA_STATUS。
5. 新增设置从摄像机跟踪倍率功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SET_trackingRATIO。
6. 新增从摄像机标定配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES。
7. 新增从摄像机标定配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SLAVECAMERA_CALIB、NET_DVR_SET_SLAVECAMERA_CALIB。
8. 新增从摄像机标定配置(扩展)功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SLAVECAMERA_CALIB_V50、NET_DVR_SET_SLAVECAMERA_CALIB_V50。
9. 新增主从跟踪功能相机跟踪配置能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_tracking_CAPABILITIES。
10. 新增主从跟踪功能相机跟踪配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_tracking、NET_DVR_SET_tracking。
11. 新增设置从摄像机初始跟踪位置功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SET_TRACK_INITPOSTION。
12. 新增从摄像机手动跟踪倍率配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_trackingRATIO_MANUAL、NET_DVR_SET_trackingRATIO_MANUAL。
13. 新增PTZ球机控制能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_PTZ_CAPABILITIES。
14. NET_DVR_PTZ_TRACK_PARAM(PTZ跟踪参数结)使用2个保留字节新增参数：byLinkageTarget(联动目标)、byAutoTrackEnable(跟踪使能)。
15. NET_VCA_ONE_RULE_V42(异常行为识别警戒规则参数)使用1个保留字节新增参数：byEventPriority(事件优先级)。
16. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中EventAbility(事件能力集)扩展，<Track>(智能跟踪能力)中节点<ManualTrace>(手动跟踪)新增子节点：linkageTrack(联动跟踪)。
17. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中智能通道分析能力集(VcaChanAbility)扩展，<Behavior>(异常行为识别能力)中穿越警戒面、进入区域、离开区域、周界入侵、徘徊、物品放置拿取、停车、人员聚集等能力集中节点<EventType>(事件类型)新增子节点：<eventPriority>(事件优先级)。
V5.1.6.7
build20160125 		网络摄像机 V5.3.8
FF车牌识别 		1. 新增FTP上传信息规整参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FTPUPLOAD_CFG、NET_DVR_SET_FTPUPLOAD_CFG。
2. 新增FTP上传能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_FTP_CAPABILITIES。
3. 新增支持非授权名单布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_BLOCKLIST_SCHEDULE、NET_DVR_SET_VEHICLE_BLOCKLIST_SCHEDULE。
4. 新增支持非授权名单布防联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_BLOCKLIST_EVENT_TRIGGER、NET_DVR_SET_VEHICLE_BLOCKLIST_EVENT_TRIGGER。
5. 新增支持授权名单布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_ALLOWLIST_SCHEDULE、NET_DVR_SET_VEHICLE_ALLOWLIST_SCHEDULE。
6. 新增支持授权名单布防联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_ALLOWLIST_EVENT_TRIGGER、NET_DVR_SET_VEHICLE_ALLOWLIST_EVENT_TRIGGER。
7. 新增支持导入授权和非授权名单配置文件功能(对应接口：NET_DVR_UploadFile_V40)：
文件类型：UPLOAD_VEHICLE_BLOCKALLOWLIST_FILE。
8. 新增支持导出授权和非授权名单配置文件功能(对应接口：NET_DVR_StartDownload)：
文件类型：NET_SDK_DOWNLOAD_VEHICLE_BLOCKALLOWLIST_FILE。
9. NET_ITC_POST_MPR_PARAM(卡口多帧检测(MPR)触发参数)使用3个保留字节新增参数：byRoadType(道路模式)、wCustomDelayTime(自定义抓拍延时时间)。
10. NET_DVR_DAYNIGHT(日夜转换功能参数)中byDayNightFilterType(日夜切换模式)新增取值：5-自动模式2(无光敏)。
11. 事件触发能力集(EventTriggersCap)新增节点：<BlockListTriggerCap>(非授权名单事件触发能力)、<AllowListTriggerCap>(授权名单事件触发能力)。
12. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中EventAbility(事件能力集)扩展，<TriggerCfg>(触发参数配置能力)中节点<PostMPR>(卡口多帧检测)新增子节点：RodeType(道路类型)。
13. 设备前端参数能力集(CAMERAPARA)扩展，<DayNightFilter>(日夜切换能力)中<DayNightFilterType>(日夜切换模式)的子节点<Range>(取值范围)新增取值：5-自动模式2(无光敏)。
14. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：180、181。
V5.1.6.5
build20160113 		DS-7800HUH-F/N V3.4.50 1. 新增获取云存储URL功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_CLOUD_URL。
2. 新增获取云存储URL能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CLOUD_URL_CAP。
3. 新增云存储配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_CLOUD_CFG、NET_DVR_SET_CLOUD_CFG。
4. 新增云存储配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CLOUD_CFG_CAP。
5. 新增云存储上传策略配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_CLOUD_UPLOADSTRATEGY、NET_DVR_SET_CLOUD_UPLOADSTRATEGY。
6. 新增云存储上传策略配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CLOUDSTORAGE_UPLOADSTRATEGY_CAP。
7. 新增POS过滤规则配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_POS_FILTER_CFG、NET_DVR_SET_POS_FILTER_CFG。
8. 新增DVR与POS连接方式配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_CONNECT_POS_CFG、NET_DVR_SET_CONNECT_POS_CFG。
9. 新增规则与通道关联配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_CHAN_FILTER_CFG、NET_DVR_SET_CHAN_FILTER_CFG。
10. 新增POS能力集(对应接口：NET_DVR_GetDeviceAbility，对应能力集类型：DEVICE_ABILITY_INFO)：
POSAbility。
11. 报警关联处理方式增加联动抓图上传云存储的功能，NET_DVR_MOTION_V40(移动侦测参数)、NET_DVR_HIDEALARM_V40(遮挡报警参数)、NET_DVR_VILOST_V40(信号丢失参数)、NET_DVR_ALARMINCFG_V40(报警输入参数)、NET_DVR_HANDLEEXCEPTION_V40(报警和异常处理参数)、NET_DVR_HANDLEEXCEPTION_V40(报警和异常处理参数)中dwHandleType(处理方式)分别新增取值：0x1000-抓图上传到云存储。
12. 新增POS联动录像和录像搜索功能：
1) NET_DVR_RECORDDAY(全天录像参数)中byRecordType(录像类型)新增取值：21-POS录像。
2) NET_DVR_SEARCH_EVENT_PARAM_V40(按事件搜索的条件参数)扩展，wMajorType(搜索主类型)新增取值：5-pos录像，uSeniorParam(事件联合体参数)新增结构体参数：struPosAlarm(POS事件查询参数)。
3)NET_DVR_SEARCH_EVENT_RET_V40(按事件搜索结果)中uSeniorRet(查询结果联合体参数)新增结构体参数：struPosRet(POS事件相关参数)。
13. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中byResolution增加分辨率类型：133-3MP(1920*1536/2048*1536)，134-5MP(2560*1944)。
14. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中通道输入能力(ChannelInputAbility)，<RecordPlan>(录像计划能力)和<RecordQuery>(录像查询能力)的子节点<supportRecordType>新增取值：POS，RecordSchedule>(时间段录像能力)新增子节点：<supportRecordType>(支持的录像能力)。
15. 设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点：<UploadCloud>(是否支持抓图上传云存储)、<CloudSupport>(是否支持第三方云)。
16. 设备图像参数能力集(VideoPicAbility，对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_VIDEOPIC_ABILITY)中<alarmHandleType >(处理方式)新增取值：uploadcloud(上传云存储)。
17. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中事件能力(EventAbility)扩展，<alarmHandleType >(处理方式)新增取值：uploadcloud(上传云存储)。
18. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中录像相关能力(RecordAbility)扩展，<TraversingVirtualPlane >(越界侦测后检索)和<FieldDetection >(区域入侵侦测后检索)中<alarmHandleType >(处理方式)新增取值：uploadcloud(上传云存储)。
V5.1.6.5
build20160113 		智能分析仪
iVMS-6200(B/J)
V3.0.0 		1. VCA_RULE_EVENT_TYPE_EX(异常行为识别事件类型)新增枚举类型：ENUM_VCA_EVENT_HIGH_DENSITY_STATUS(区域内人员聚集状态)。
2. NET_VCA_EVENT_UNION(事件规则参数联合体)中新增结构体参数：NET_VCA_HIGH_DENSITY_STATUS(人员聚集状态)。
3. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中智能通道分析能力集(VcaChanAbility)扩展，<Behavior>(异常行为识别能力)中节点<EventType>(事件类型)新增子节点：<HighDensityStatus>(人员聚集状态能力)。
V5.1.6.5
build20160113 		CVR V2.3.2-3 1. 新增录像完整性检测功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_RECORD_CHECK。
2. 新增获取录像段总大小功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_RECORD_SEGMENT_CFG。
3. 新增手动添加录像回传任务功能(对应接口：NET_DVR_SetDeviceConfig)：
命令：NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL。
4. 新增删除手动录像回传任务功能(对应接口：NET_DVR_SetDeviceConfig)：
命令：NET_DVR_DEL_RECORD_PASSBACK_TASK_MANUAL。
5. 新增获取所有录像回传手动任务功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL。
6. 新增控制录像回传手动任务功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_RECORD_PASSBACK_TASK_MANUAL_CTRL。
7. 新增录像回传计划配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_RECORD_PASSBACK_PLAN_CFG、NET_DVR_SET_RECORD_PASSBACK_PLAN_CFG。
8. 新增获取设备存储信息功能(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_DEV_STORAGE_CFG。
9. 新增获取在线用户信息功能(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_ONLINE_USER_CFG。
10. NET_DVR_DEVICE_RUN_STATUS(设备运行状态信息)使用4个保留字节新增参数：fNetworkFlow(网络流量)。
11. 设备通用能力集(对应接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO)，其中CVR设备能力集(CVRAbility)扩展，新增节点：<RecordCheck>(是否支持录像检测)、<AddRecordPassBackManul>(是否支持手动添加录像回传任务)、<GetAllRecordPassBackManulTask>(是否支持获取所有录像回传手动任务)、<RecordPassBackManulTaskCtrl>(是否支持控制录像回传手动任务)、<RecordPassBackManulTaskDel>(是否支持删除录像回传手动任务)、<RecordPassBackPlanConfig>(是否支持录像回传计划配置)、<GetSegmentRecordtotalSize>(是否支持获取录像段总大小)、<DeviceStorageStatus>(是否支持获取设备存储信息)、<OnlineUser>(是否支持获取在线用户)。
V5.1.6.5
build20160113 		视频会议MCU及终端
DS-65VM/DS-65VT V1.0.0 		1. 新增获取终端会议状态功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_TERMINAL_CONFERENCE_STATUS。
2. 新增终端视频会议输入参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_TERMINAL_INPUT_CFG、NET_DVR_SET_TERMINAL_INPUT_CFG。
3. 新增终端会议区域参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_CONFERENCE_REGION、NET_DVR_SET_CONFERENCE_REGION。
4. 新增终端呼叫参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_TERMINAL_CALL_CFG、NET_DVR_SET_TERMINAL_CALL_CFG。
5. 新增终端呼叫控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_TERMINAL_CTRL。
6. 新增按条件查询呼叫记录功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_CALLINFO_BY_COND。
7. 新增终端输入参数能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_TERMINAL_INPUT_CFG_CAP。
8. 新增终端会议区域能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CONFERENCE_REGION_CAP。
9. 新增终端呼叫配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_TERMINAL_CALL_CFG_CAP。
10. 新增终端呼叫控制能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_TERMINAL_CTRL_CAP。
11. 新增终端会议查找能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CALL_QUERY_CAP。
12. 新增终端MCU能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_VCS_CAP。
13. 新增会议呼叫报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
COMM_CONFERENCE_CALL_ALARM。
14. 新增错误码(对应接口：NET_DVR_GetLastError和NET_DVR_GetErrorMsg)：780。
15. 新增操作日志次类型：0x2501~0x2505。
16. 新增设备类型：DS_65VMXX、DS_65VTXX、DS_65VTA。
V5.1.5.10
build20151210 		64分离便携式网络摄像机
DS-2CD6416C1-GLT V5.3.4 		1. 新增校时功能(对应接口：NET_DVR_SetDVRConfig)：
命令：NET_DVR_SET_TIMECORRECT。
2. 新增WIFI热点参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_WIRELESSSERVER、NET_DVR_SET_WIRELESSSERVER。
3. 新增获取Wifi热点连接设备列表信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_CONNECT_LIST。
4. 新增OSD电池电量显示配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_OSD_BATTERY_POWER_CFG、NET_DVR_SET_OSD_BATTERY_POWER_CFG。
5. 新增获取热点连接设备列表信息能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_CONNECT_LIST_CAPABILITIES。
6. 新增OSD电池电量显示参数能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_OSD_BATTERY_POWER_CFG_CAPABILITIES 。
7. NET_DVR_WIFIETHERNET(无线网口参数)使用1个保留字节新增参数：byCloseWifi(是否关闭wifi连接)。
8. Wifi热点配置能力集(WirelessServer)新增节点：<isMutexWithWireless>(互斥能力)。
9. 设备软硬件能力集(BasicCapability)扩展，新增节点<isSupportTimeCorrect>(是否支持NET_DVR_SET_TIMECORRECT校时操作)。
10. 设备无线设备网络能力集(NetworkSetting)扩展，<WirelessSetting >(无线网络配置)中新增子节点：<closeWifi >(是否支持关闭wifi)、<mutexAbility >(和wifi热点互斥)。
V5.1.5.10
build20151210 		录播主机V1.2.2
DS-8104LHFH-E2 V1.2.2 		1. 新增获取课程列表信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_COURSE_LIST。
NET_DVR_COURSE_LIST_COND使用1个保留字节新增参数：byInstructorName(授课老师)。
2. 新增查询录播主机当前状态(包含录像状态和下载状态)功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_RECORD_STATUS(查询录播主机当前状态(包含录像状态和下载状态))、NET_DVR_RECORDING_PUBLISH_FILE(文件发布)。
3. 新增手动课程录像控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_MANUAL_CURRICULUM_CONTROL：
NET_DVR_MANUAL_CURRICULUM_CFG,使用1个保留字节新增参数：byInstructorName(授课老师)。
4. 获取能力集(对应接口：NET_DVR_GetSTDAbility：
命令：手动课程录像能力集：NET_DVR_MANUAL_CURRICULUM_CONTROL_CAP(ManualCurriculumCap)、文件发布能力集：NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP(PublishFile )。
5. 新增图像差分检测配置(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG和NET_DVR_SET_IMAGE_DIFF_DETECTION_CFG。
6. 新增图像差分检测能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG_CAP(ImageDiffDetectionCfg ) 。
7. 修改查询背景图片文件(对应接口：NET_DVR_GetSTDConfig：
命令：NET_DVR_GET_BACKGROUND_PIC_CFG(查询背景图片文件)。NET_DVR_BACKGROUND_PIC_CFG使用1个保留字节新增参数：byPicName(图片名称)。
8. 新增配置发布文件信息参数(对应接口：NET_DVR_GetSTDConfig和：NET_DVR_SetSTDConfig
命令：NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO(获取发布文件信息参数)和NET_DVR_SET_RECORDING_PUBLISH_FILE_INFO(设置发布文件信息参数)。新增结构体NET_DVR_RECORDING_PUBLISH_FILE_COND。
9.新增获取发布文件信息配置能力集(对应接口：NET_DVR_GetSTDAbility_RECORD
，能力集类型：NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO_CAP(PublishFileCfg )。
10. 修改获取录播主机总能力集合(RecordHostCap)扩展新增节点：<isSupportPublishFileCfg >(是否支持发布文件信息)、<isSupportSearchCourse >(是否支持查询课程列表信息)、<isSupportCurriculumControl >(是否支持手动录像控制)、<isSupportUploadBackPic >(是否支持上传背景图片)、<isSupportGetRecordStatus >(是否支持查询录播主机当前状态)、<isSupportImageDiffDetection >(是否支持图像差分检测)。
V5.1.5.7
build20151125 		网络摄像机 V5.3.6 1. 新增内置补光灯配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_SUPPLEMENTLIGHT、NET_DVR_SET_SUPPLEMENTLIGHT。
2. 新增获取用户在线信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_ONLINEUSER_INFO。
3. 新增存储健康检测联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_STORAGEDETECTION_EVENT_TRIGGER、NET_DVR_SET_STORAGEDETECTION_EVENT_TRIGGER。
4. 新增存储健康检测布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_STORAGEDETECTION_SCHEDULE、NET_DVR_SET_STORAGEDETECTION_SCHEDULE。
5. 新增存储健康状态查询功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_STORAGEDETECTION_STATE。
6. 新增存储侦测读写锁配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_STORAGEDETECTION_RWLOCK、NET_DVR_SET_STORAGEDETECTION_RWLOCK。
7. 新增存储侦测解锁配置功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_STORAGEDETECTION_UNLOCK。
8. 新增内置补光灯配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_SUPPLEMENTLIGHT_CAPABILITIES 。
9. 新增存储健康检测布防时间能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_STORAGEDETECTION_SCHEDULE_CAPABILITIES 。
10. 新增存储侦测读写锁配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_STORAGEDETECTION_RWLOCK_CAPABILITIES 。
11. 新增存储侦测解锁配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_STORAGEDETECTION_UNLOCK_CAPABILITIES 。
12. 新增存储侦测报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
COMM_ALARM_STORAGE_DETECTION。
13. NET_DVR_FindDVRLog_V30(日志查询)和NET_DVR_LOG_V30(日志查询结果)中dwMinorType 新增异常日志次类型：MINOR_SDCARD_ABNORMAL(SD卡不健康)、MINOR_SDCARD_DAMAGE(SD卡损坏)。
14. 新增支持WIFI热点连接设备信息查询功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_WIFI_CLIENT_LIST_INFO。
15. NET_DVR_GBT28181_ACCESS_CFG(GBT28181协议接入配置)使用1个保留字节新增参数：byProtocolVersion(协议版本)。
16. NET_DVR_JPEG_CAPTURE_CFG和NET_DVR_JPEG_CAPTURE_CFG_V40(设备抓图配置)分别使用1个保留字节新增参数：byStreamType(抓图码流类型)。
17. FTP参数配置扩展：
1) NET_DVR_FTPCFG(FTP上传参数)使用1个保留字节新增参数：byPicArchivingInterval(图片归档间隔)。
2) NET_DVR_FTPCFG_V40(FTP上传参数扩展)使用2个保留字节新增参数：byPicArchivingInterval(图片归档间隔)、byPicNameRuleType(图片命令规则类型)。
3) NET_DVR_PICTURE_NAME_EX(图片命名规则)使用32个保留字节新增参数：byPicNamePrefix[PICNAME_PREFIX](图片名自定义前缀)。
18. NET_DVR_SUPPLEMENTLIGHT(补光灯参数配置)使用2个保留字节新增参数：wFilteringTime(过滤时间)。
19. NET_DVR_SINGLE_HD(设备硬盘信息)扩展，dwHdStatus(硬盘状态)新增取值：16-已锁定，byHDAttr(硬盘状态)新增取值：4-不可读写。
20. NET_VCA_DEV_ABILITY(智能设备能力集)使用3个保留字节新增参数：bySmartRoadDetectionNum(SMART事件+道路监控通道个数)、bySmartFaceDetectionNum(SMART事件+人脸侦测通道个数)、bySmartHeatMapNum(SMART事件+热度图通道个数)。
21. VCA_CHAN_ABILITY_TYPE(智能通道能力类型)新增枚举类型：VCA_SMART_ROAD_DETECTION(SMART事件+道路监控)、VCA_SMART_FACE_DETECTION(SMART事件+人脸侦测)、VCA_SMART_HEATMAP(SMART事件+热度图)。
22. NET_DVR_WIFI_CFG_EX(WIFI无线参数)中wpa_psk结构体使用69个保留字节新增参数：sNewKeyInfo[WIFI_WPA_PSK_MAX_HEXKEY_LENGTH](新类型密钥)、byKeyType(密钥类型)。
23. JPEG抓图能力集(JpegCaptureAbility)扩展，<SchedCapture>(抓图计划)新增子节点：<AdvancedParam>(抓图高级参数配置)。
24. 设备软硬件能力集(BasicCapability)新增节点：<isSupportOnLineUser>(设备支持在线用户获取功能)。
25. 设备网络应用参数能力集(NetAppAbility)扩展，<FTP>(FTP能力)新增子节点：<picNameRuleType>(图片命令规则类型)、<picNamePrefix>(自定义前缀长度)、<notSupportSymbol>(自定义前缀支持符号)。
26. 设备前端参数能力集(CAMERAPARA)扩展，<ISPAdvanceCfg>(ISP前端参数配置)中子节点<ISPCfgSupport>(支持参数)新增取值：saturationLevel(饱和度)。
27. 设备无线设备网络能力集(NetworkSetting)新增节点：<support64bitKey>(是否支持64位十六进制密码)。
28. 协议能力集扩展：
1) Smart能力集(SmartCap)新增节点：<isSupportStorageDetection>(存储健康检测能力)。
2) 事件触发能力集(EventTriggersCap)中<EventTriggerCapType>(事件触发联动类型)新增节点：<StorageDetectionTriggerCap>(存储健康检测联动方式)。
3) 外设配置能力集(ExternalDevice)新增节点：<filteringTime>(过滤时间)。
4) 视频流能力集(StreamingChannel)中<Video>(视频能力)新增子节点：<H265Profile>(H.265编码)。
29. 设备通用能力集(DEVICE_ABILITY_INFO)扩展：
1) EventAbility(事件能力集)扩展，<VehicleDetection>(车辆侦测能力)中节点<mutexAbility>(互斥能力)新增取值：heatMap(热度图)。
2) VcaDevAbility(智能设备能力集)扩展，新增节点：<SmartRoadDetectionChanNum>(SMART事件+道路监控通道个数)、<SmartFaceDetectionChanNum>(SMART事件+人脸侦测通道个数)、<SmartHeatMapChanNum>(SMART事件+人脸侦测通道个数)。
3) VcaCtrlAbility(智能通道控制能力集)扩展，新增节点：<VcaCtrlTypeEntry>(SMART事件+道路监控、SMART事件+人脸侦测、SMART事件+热度图)。
4) HardDiskAbility(磁盘相关能力集)扩展，<hdAttribute>(硬盘状态)新增取值：4-不可读写。
5) 设备GBT28181能力集(GBT28181AccessAbility)新增节点：<protocolVersion>(协议版本)。
V5.1.5.7
build20151125 		楼宇可视对讲 V1.3.0 1. 新增可视对讲报警事件参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_VIDEO_INTERCOM_ALARM_CFG、NET_DVR_SET_VIDEO_INTERCOM_ALARM_CFG。
2. NET_DVR_VIDEOINTERCOM_STREAM(可视对讲流通道参数)中bySourceType(视频源类型)新增取值：5-二次确认机。
3. NET_DVR_CARD_CFG(卡参数配置)使用4个保留字节新增参数：wRoomNumber(房间号)、wFloorNumber(层号)。
4. NET_DVR_AGAIN_RELATEDEV(二次确认机相关联网络设备)使用144个保留字节新增参数：struIndoorUnit(室内主机IP)。
5. 可视对讲能力集(IpViewDevAbility)，<VideoIntercom>(楼宇可视对讲能力)扩展：
1) 新增子节点：<VideoIntercomStream>(视频源能力)、<UploadAlarmCfg>(可视对讲报警事件参数配置能力)。
2) <DeviceID>(设备编号能力)新增子节点：<AgainDevice>(二次确认机)。
3) <OperationTime>(操作时间能力)新增子节点：<callForwardingTime>(呼叫转移超时时间)。
4) <RelateDevice>(关联设备能力)新增子节点：<notSupportAgainUnitIP >(是否不支持配置二次确认机IP)、<againUnitIP>(二次确认机IP )、<notSupportOutDoorType>(是否不支持配置主门口机类型)、<outDoorType>(主门口机类型)。
6. 门禁主机能力集(AcsAbility)扩展，<Card>(卡参数配置能力)中新增子节点：<roomNumber>(房间号)、<floorNumber>(层号)。
V5.1.5.5
build20151111 		CVR V2.3.2 1. 新增获取N+0模式下重定向设备信息功能(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_DVR_GET_RELOCATE_INFO。
2. 新增能力集(对应接口：NET_DVR_GetDeviceAbility，对应能力集类型：DEVICE_ABILITY_INFO)：
CVR设备能力集CVRAbility。
3. NET_DVR_SEARCH_EVENT_PARAM_V40(事件录像查询条件)和NET_DVR_SEARCH_EVENT_RET_V40(事件录像查询结果)中wMinorType新增主类型为EVENT_STREAM_INFO(流ID信息)对应的次类型：9~32。
4. 新增错误码：824、825。
V5.1.6.2
build20151209 linux64 		Linux64设备网络SDK基线项目 1. 新增字符转码库：libiconv2.so。
V5.1.3.33
build20151030 		基线NVR V3.4.1 1. 新增非授权名单布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_BLOCKLIST_SCHEDULE、NET_DVR_SET_VEHICLE_BLOCKLIST_SCHEDULE。
2. 新增非授权名单布防联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_BLOCKLIST_EVENT_TRIGGER、NET_DVR_SET_VEHICLE_BLOCKLIST_EVENT_TRIGGER。
3. 新增授权名单布防时间配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_ALLOWLIST_SCHEDULE、NET_DVR_SET_VEHICLE_ALLOWLIST_SCHEDULE。
4. 新增支持授权名单布防联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_ALLOWLIST_EVENT_TRIGGER、NET_DVR_SET_VEHICLE_ALLOWLIST_EVENT_TRIGGER。
5. 新增导入授权和非授权名单配置文件功能(对应接口：NET_DVR_UploadFile_V40)：
文件类型：UPLOAD_VEHICLE_BLOCKALLOWLIST_FILE。
6. 新增导出授权和非授权名单配置文件功能(对应接口：NET_DVR_StartDownload)：
文件类型：NET_SDK_DOWNLOAD_VEHICLE_BLOCKALLOWLIST_FILE。
7. NET_DVR_SEARCH_EVENT_RET_V40和NET_DVR_SEARCH_EVENT_RET(事件录像查询结果)中struStreamIDRet(流ID录像查询结果)的参数dwRecordType(录像类型)新增取值：13-全部事件。
8. 新增错误码：2101~2106。
V5.1.5.2
build20151027 win64 		Win64设备网络SDK基线项目 1. 新增ISAPI协议命令透传接口：NET_DVR_STDXMLConfig。
2. 新增字符转码库：libiconv2.dll。
3. 新增错误码：581。
V5.1.3.32
build20151021 		人员通道门禁主机
DS-K2602-A V1.0 		1. 新增串口外设参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ACS_EXTERNAL_DEV_CFG、NET_DVR_SET_ACS_EXTERNAL_DEV_CFG。
2. 新增人员通道参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_PERSONNEL_CHANNEL_CFG、NET_DVR_SET_PERSONNEL_CHANNEL_CFG。
3. 新增报警信息上传类型(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
COMM_ID_INFO_ALARM(身份证刷卡信息)、
COMM_PASSNUM_INFO_ALARM(通行人数信息)。
4. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)扩展：
1) 新增异常次类型：MINOR_CHANNEL_CONTROLLER_OFF、MINOR_CHANNEL_CONTROLLER_RESUME，新增事件次类型：MINOR_CARD_PLATFORM_VERIFY。
2) NET_DVR_ACS_EVENT_INFO(事件信息)使用1个保留字节新增参数：byCardReaderKind(读卡器类型)
5. 门禁主机能力集(AcsAbility)扩展，新增节点：<ExternalDevCfg>(串口外设参数配置能力)、<PersonnelChannelCfg>(人员通道参数配置能力)。
6. 新增设备类型：DS_K2602_AX(人员通道主机)。
V5.1.3.25
build20150916 		汉军型号门禁产品
RAC-6X00 V1.0.0 		1. NET_DVR_ACS_WORK_STATUS(门禁主机工作状态)使用1个保留字节新增参数：byIndicatorLightStatus(指示灯状态)。
2. NET_DVR_CARD_READER_CFG(读卡器参数)中byCardReaderType(读卡器类型)增加取值：33-DS-K1T200EF/EF-C/MF-MF-C/CF/CF-C，34-DS-K1T300EF/EF-C/MF-MF-C/CF/CF-C。
3.指纹管理配置扩展：
1) NET_DVR_FINGER_PRINT_INFO_COND(指纹参数配置条件)使用1个保留字节新增参数：byCallbackMode(设备回调方式)。
2) NET_DVR_FINGER_PRINT_STATUS(指纹状态)使用1个保留字节新增参数：byTotalStatus(下发总的状态)。
4. NET_DVR_ACS_ALARM_INFO中dwMinor(报警次类型)新增异常次类型取值：MINOR_INDICATOR_LIGHT_OFF、MINOR_INDICATOR_LIGHT_RESUME。
5. 门禁主机能力集(AcsAbility)扩展：
1) <AcsWorkStatus>(工作状态能力)新增子节点：<indicatorLightStatus>(支持指示灯状态)。
2) <CardReaderCfg>(读卡器参数能力)中<cardReaderType>(读卡器类型)新增取值：DS-K1T200EF/EF-C/MF-MF-C/CF/CF-C,DS-K1T300EF/EF-C/MF-MF-C/CF/CF-C。
6. 新增设备型号：RAC_6X00(汉军指纹门禁一体机)。
V5.1.3.25
build20150916 		90/80/81/73/72HQH(HGH)-SH
V3.3.1 		1. 新增设备支持DDNS国家和地区能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_DDNS_COUNTRY_ABILITY。
2. 录像配置和查找增加支持码流类型：
1) NET_DVR_RECORD_V40(通道录像参数)中参数byStreamType(码流类型)新增取值：2-主码流&子码流。
2) NET_DVR_FILECOND_V40(文件查找条件)中参数byStreamType(码流类型)分别新增取值：0xff-全部。
3) NET_DVR_MRD_SEARCH_PARAM(月历录像分布查询条件)使用1个保留字节新增参数：byStreamType(码流类型)。
3. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中byResolution增加分辨率类型：111-960*1080(1080p Lite)，112-640*720(half 720p)。
4. 设备通用能力集(DEVICE_ABILITY_INFO)，其中设备通道输入能力(ChannelInputAbility)扩展，节点<recordStreamType>新增取值：2-main_and_sub(主码流&子码流)。
5. 设备通用能力集(DEVICE_ABILITY_INFO)，其中录像相关能力(RecordAbility)扩展，新增节点：<MDRCondStreamType>(月历搜索条件支持的码流类型)。
V5.1.3.25
build20150916 		iDS-TCC225智能云台 V5.1.10 1. 新增移动交通触发模式：
1) 联合体NET_ITC_TRIGGER_PARAM_UNION中新增：NET_ITC_POST_MOBILE_PARAM。
2) ITC_TRIGGERMODE_TYPE新增枚举类型：ITC_POST_MOBILE_TYPE。
2. 新增WIFI热点参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG、NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG。
3. 新增热点功能配置能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_WIRELESSSERVER_CAPABILITIES。
4. 新增设备类型：TRAFFIC_YTDOME、TRAFFIC_RDDOME。
V5.1.3.25
build20150916 		简易庭审主机 V3.1.0 1. NET_DVR_INQUEST_ROOM_INFO(审讯室信息)中参数byInquestChannelResolution(审讯通道分辨率)新增取值：4- WD1，5- VGA。
2. NET_DVR_VOLUME_CFG(音量调节参数配置)使用9个保留字节新增参数：byEnableAEC(是否启用全局的回声消除)、byEnableFBC[MAX_AUDIOOUT_PRO_TYPE](是否启用FBC啸叫抑制)。
3. 设备通用能力集(DEVICE_ABILITY_INFO)，其中审讯机能力集InquestAbility扩展，节点<resolutionMode >新增取值：WD1,VGA。
V5.1.3.25
build20150916 		智能交通摄像机 V4.1.1 1. NET_DVR_SNAPCFG(触发参数)使用4个保留字节新增参数：dwSnapVehicleNum(抓拍匹配序号)。
V5.1.3.25
build20150916 		网络摄像机 V5.3.4 FF车牌识别 1. 新增全部车辆检测名单布防联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_ALLLIST_EVENT_TRIGGER、NET_DVR_SET_VEHICLE_ALLLIST_EVENT_TRIGGER。
2. 新增其他车辆检测名单布防联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VEHICLE_OTHERLIST_EVENT_TRIGGER、NET_DVR_SET_VEHICLE_OTHERLIST_EVENT_TRIGGER。
3. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)、NET_ITC_PLATE_RECOG_PARAM(牌识参数)和NET_DVR_PLATE_INFO(交通抓拍结果)中分别新增取值：3- 欧洲&俄罗斯(EU&CIS)。
4. NET_DVR_GetUploadState(获取文件上传的进度和状态)返回状态值新增类型：19- 文件格式不正确、20- 文件内容不正确。
5. 事件触发能力集(EventTriggersCap)新增节点：<AllVehicleListTriggerCap>(全部车辆检测名单触发能力)、<OtherVehicleListTriggerCap>(其他车辆检测名单触发能力)。
6. JPEG抓图能力集(DEVICE_JPEG_CAP_ABILITY)扩展，<FindPicInfo>(图片检索)中节点<region>(国家区域)新增取值：EU&CIS(欧洲&俄罗斯)。
7. 设备通用能力集(DEVICE_ABILITY_INFO)，其中事件能力(EventAbility)扩展：
1) <VehicleDetection>(车辆侦测能力)中新增节点：<autoBuildRecogArea>(客户端界面自动生成识别区域)、<brokenNetHttp>(车辆识别是否支持断网续传)。
2) <VehicleDetection>(车辆侦测能力)中<PlateRecogParam>(牌识参数)的子节点新增取值：EU&CIS(欧洲&俄罗斯)。
V5.1.3.21
build20150915 		出入口控制
DS-TME4XX V1.2.0 		1. 新增报警信息上传类型(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
类型：COMM_ITS_GATE_ALARMINFO(出入口控制机数据上传)
COMM_GATE_CARDINFO_UPLOAD(出入口卡片信息上传)
COMM_GATE_CHARGEINFO_UPLOAD(出入口付费信息上传)
COMM_TME_VEHICLE_INDENTIFICATION(TME车辆抓图上传)。
2. 新增停车场出入口设备相关能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_PXOFFLINE_CAPABILITIES(票箱脱机参数配置能力集)
NET_DVR_GET_PAPERCHARGEINFO_CAPABILITIES(纸票信息下发能力集)
NET_DVR_GET_PARKINGSAPCE_CAPABILITIES(停车位信息下发能力集)
NET_DVR_GET_PXMULTICTRL_CAPABILITIES(票箱从属设备多角度参数配置能力集)
NET_DVR_GET_CHARGEACCOUNT_CAPABILITIES(停车费用下发能力集)
NET_DVR_GET_TME_CHARGERULE_CAPABILITIES(车卡收费信息配置能力集)
NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES(票箱参数配置能力集)
NET_DVR_GET_TME_CAPABILITIES(停车场出入口设备能力集)
NET_DVR_GET_LEDDISPLAY_CAPABILITIES(LED屏幕显示参数配置能力集)
NET_DVR_GET_VOICEBROADCAST_CAPABILITIES(语音播报控制参数配置能力集)
NET_DVR_GET_PAPERPRINTFORMAT_CAPABILITIES(纸票打印格式配置能力集)
NET_DVR_GET_LOCkGATE_CAPABILITIES(智能锁闸配置能力集)。
3. 新增票箱脱机参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PXOFFLINE_CFG、NET_DVR_SET_PXOFFLINE_CFG。
4. 新增纸票信息下发功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_PAPERCHARGEINFO。
5. 新增停车位信息下发功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_PARKINGSAPCE_INFO。
6. 新增停车费用下发播报功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_CHARGE_ACCOUNTINFO。
7. 新增票箱从属设备多角度参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PXMULTICTRL_CFG、NET_DVR_SET_PXMULTICTRL_CFG。
8. 新增车卡收费规则配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_TME_CHARGERULE、NET_DVR_SET_TME_CHARGERULE。
9. 新增票箱参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ILLEGALCARDFILTERING_CFG、NET_DVR_SET_ILLEGALCARDFILTERING_CFG。
10. 新增LED屏幕显示配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_LEDDISPLAY_CFG、NET_DVR_SET_LEDDISPLAY_CFG。
11. 新增语音播报下发功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_VOICEBROADCAST_CFG。
12. 新增纸票打印格式配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_PAPERPRINTFORMAT_CFG、NET_DVR_SET_PAPERPRINTFORMAT_CFG。
13. 新增智能锁闸配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_LOCKGATE_CFG、NET_DVR_SET_LOCKGATE_CFG。
14. 新增停车卡下发功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_SendRemoteConfig)：
命令：NET_DVR_PARKING_CARD_SEND。
15. 新增停车卡删除功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_PARKING_CARD_CTRL。
16. 新增车车辆信息下发功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_SendRemoteConfig)：
命令：NET_DVR_PARKING_VEHICLE_SEND。
17. 新增出入口管理文件上传下载功能(对应接口：NET_DVR_UploadFile_V40和NET_DVR_StartDownload)：
文件类型：UPLOAD_TME_FILE、NET_SDK_DOWNLOAD_TME_FILE。
18. 新增数据同步状态配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_PARKING_DATASTATE、NET_DVR_SET_PARKING_DATASTATE。
19. NET_DVR_BARRIERGATE_CFG(道闸控制)使用1个保留字节新增参数：byEntranceNo(出入口编号)。
20. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能交通设备能力(ITDeviceAbility)扩展，<ITCAbility>新增节点：<ITCDataState>(数据同步状态)。
V5.1.3.20
build20150831 		E系列网络高清智能球 V5.3.9 1. NET_DVR_PTZ_BASICPARAMCFG(PTZ基本参数配置)使用1个保留字节新增参数：byPTZMotionTrack(启用运动跟踪)。
2. 设备通用能力集(DEVICE_ABILITY_INFO)，其中PTZ能力(PTZAbility)扩展，<BasicParamCfg>(云台基本参数能力)中新增节点：<PTZMotionTrack>(运动跟踪能力)。
V5.1.3.20
build20150831 		网络摄像机 V5.3.5 1. 新增获取客流统计表示推荐值功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_PDC_RECOMMEND。
2. 新增客流数据清除操作功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_REMOVE_FLASHSTORAGE。
3. 新增能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_COUNTING_CAPABILITIES(客流量统计能力集)。
4. NET_DVR_SETUPALARM_PARAM(报警布防参数)中参数byBrokenNetHttp(断网续传类型)新增取值：bit1-客流统计、bit2-热度图统计。
5. NET_DVR_PDC_RULE_CFG_V42(客流量规则配置)使用2个保留字节新增参数：byDataUploadCycle(客流量检测数据上传周期)、bySECUploadEnable(每秒上传机制使能)。
6. NET_DVR_HEATMAP_INFO(热度图数据查询结果)使用8个保留字节新增参数：dwHeatMapMaxValue(检测区域最高热度点人员活动时间)、dwHeatMapMinValue(检测区域最低热度点人员活动时间)。
7. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道分析能力集(VcaChanAbility)扩展：
1) <PDC>(客流量能力)新增子节点：<brokenNetHttp>(是否支持断网续传)、<SecUploadEnable>(每秒上传机制使能)、<DataUploadCycle>(客流量检测数据上传周期)、<isSupportRecommendedValue>(推荐值)、<isSupportFlashRemoveCouting>(清除Flash中的客流数据统计)。
2) <HeatMapDetection>(热度图能力)新增子节点：<brokenNetHttp>(是否支持断网续传)。
8. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)扩展，新增节点<BrokenNetHttpSupport >(支持断网续传的功能)。
9. 新增错误码：179。
V5.1.3.16
build20150826 		基线NVR V3.4.0 1. 新增同步IPC密码与NVR一致功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SYNC_IPC_PASSWD。
2. 新增配置字符编码相关处理回调功能(对应接口：NET_DVR_SetSDKLocalCfg)：
配置类型：NET_SDK_LOCAL_CFG_TYPE_CHAR_ENCODE。
3. 新增允许在线升级控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SET_ONLINE_UPGRADE。
4. 新增在线升级相关信息、状态查询功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_ONLINEUPGRADE_PROGRESS(在线升级进度)、
NET_DVR_GET_FIRMWARECODE(获取识别码)、
NET_DVR_GET_ONLINEUPGRADE_SERVER(获取升级服务器状态)、
NET_DVR_GET_ONLINEUPGRADE_VERSION(获取新版本信息)、
NET_DVR_GET_RECOMMEN_VERSION(检测是否推荐升级到此版本)。
5. 新增能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_TRAFFIC_CAP(抓拍相关能力集)、
NET_DVR_GET_ONLINEUPGRADE_ABILITY(在线升级能力集)。
6. 新增异常日志次类型：MINOR_SYNC_IPC_PASSWD、MINOR_EZVIZ_OFFLINE。
7. NET_DVR_PREVIEWINFO(预览参数)中dwLinkMode(连接方式)新增取值：6- HRUDP(可靠UDP传输)。
8. NET_DVR_DEVICEINFO_V40(设备参数)使用1个保留字节新增参数：byCharEncodeType(字符编码格式)。
9. NET_DVR_DIGITAL_CHANNEL_STATE(设备数字通道状态)中的数字通道状态取值新增：NET_SDK_DC_STATUS_POE_PORT_DETECTING(POE通道检测中)。
10. NET_DVR_VEHICLE_PARA(车辆检测信息)使用1个保留字节新增参数：byCountry(国家和地区索引值)。
11. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)新增节点：<isSupportSyncIPCPassword>(是否支持同步IPC密码)、<isSupportTransferIPC>(是否支持透传IPC协议功能)、<supportPreviewHRUDP>(是否支持HRUDP预览取流方式)。
12. JPEG抓图能力集(DEVICE_JPEG_CAP_ABILITY)扩展，<SmartPicSearchInfo>(智能图片检索)中节点<VehicleCond>(车辆检索条件)新增子节点<country>(国家和地区索引)。
13. 设备图像参数能力集(VideoPicAbility)扩展，新增节点：<Sensitivity>(灵敏度节点)。
V5.1.3.15
build20150819 		录播主机 V1.2.0 1. 新增上传背景图片功能(对应接口：NET_DVR_UploadFile_V40)：
上传类型：UPLOAD_BACKGROUND_PIC。
2. 新增背景图片查询功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_BACKGROUND_PIC_CFG。
3. 新增背景图片配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_BACKGROUND_PIC_INFO、NET_DVR_SET_BACKGROUND_PIC_INFO。
4. 新增删除背景图片功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_DEL_BACKGROUND_PIC。
5. 新增文件发布功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_RECORDING_PUBLISH_FILE。
6. 新增获取发布进度功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_PUBLISH_PROGRESS。
7. 新增电影模式配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FILM_MODE_CFG、NET_DVR_SET_FILM_MODE_CFG。
8. 新增导播策略配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_DIRECTED_STRATEGY_CFG、NET_DVR_SET_DIRECTED_STRATEGY_CFG。
9. 新增画面边框配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FRAME_CFG、NET_DVR_SET_FRAME_CFG。
10. 新增音频优化配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_AUDIO_EFFECTIVE_CFG、NET_DVR_SET_AUDIO_EFFECTIVE_CFG。
11. 新增录制视频配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_RECORD_VIDEO_CFG、NET_DVR_SET_RECORD_VIDEO_CFG。
12. 新增RTMP参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_RTMP_CFG、NET_DVR_SET_RTMP_CFG。
13. 新增能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：
NET_DVR_GET_FILM_MODE_CFG_CAP(电影模式配置能力集)、
NET_DVR_GET_DIRECTED_STRATEGY_CFG_CAP(导播策略配置能力集)、
NET_DVR_GET_FRAME_CFG_CAP(画面边框配置能力集)、
NET_DVR_GET_AUDIO_EFFECTIVE_CFG_CAP(频效果优化配置能力集)、
NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP(文件发布能力集)、
NET_DVR_GET_RECORD_VIDEO_CFG_CAP(录制视频配置能力集)、
NET_DVR_GET_RTMP_CFG_CAP(RTMP配置能力集)、
NET_DVR_GET_BACKGROUND_PIC_INFO_CAP(背景图片配置能力集)、
NET_DVR_GET_RECORD_HOST_CAP(录播主机总能力集)。
14. NET_DVR_RECORDING_CONTROL_CFG(录播主机控制参数)中wCmdType(控制命令类型)新增取值：5- 一键开始屏蔽 6- 一键停止屏蔽。
15. 设备通用能力集(DEVICE_ABILITY_INFO)，其中录播主机能力集(RecordingHostAbility)，<supportRemoteCtrlType>(远程控制类型)新增取值：startShield(一键开始屏蔽)、stopShield(一键停止屏蔽)。
16. 设备网络应用参数能力(NetAppAbility)扩展，<NetCfg>新增子节点：<RTMPCfg>(RTMP预览能力)。
V5.1.3.13
build20150812 		网络高清球机 V5.3.10
DF8523IW、DF8223IW、
DE3204SW-D等 		1. 新增温湿度配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_THSCREEN_CAPABILITIES。
2. 新增温湿度配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_THSCREEN、NET_DVR_SET_THSCREEN。
3. 新增温湿度屏幕校时功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_THSCREEN_TIMING。
4. 新增校准GPS经纬度能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_REVISE_GPS_CAPABILITIES。
5. 新增校准GPS经纬度配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig):
能力集类型：NET_DVR_GET_REVISE_GPS、NET_DVR_SET_REVISE_GPS。
6. NET_DVR_EMAILCFG_V30(邮件参数配置)使用1个保留字节新增参数：byStartTLS(是否启用StartTLS)。
7. NET_DVR_PICCFG_V30和NET_DVR_PICCFG_V40(通道图像参数)扩展，byFontSize(字体大小)新增取值：4-24*24(中)/12*24(英)，byAlignment(对齐方式)新增取值：2-左对齐。
8. NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM(辅助设备升级条件)中byDevType(升级设备类型)新增取值：1-机芯。
9. 设备图像参数能力集(VideoPicAbility)扩展，<FontSize>(字体大小)节点新增取值：24*24，<alignment >(对齐方式)新增取值：alignLeft。
10. 设备网络应用参数能力(NetAppAbility)扩展，<Email>新增子节点：<enableStartTLS>(邮件支持启用TSL)。
11. 设备所有编码能力集(DEVICE_ENCODE_ALL_ABILITY_V20)扩展，<DynamicAbility>中<dynamicAbilityLinkTo>新增取值：vbrAverageCap(视频平均码率)。
V5.1.3.13
build20150812 		智能人脸分析服务器
IVMS-6200FA V2.2.0 		1. 新增报警处理参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_ALARM_PROCESS_CFG、NET_DVR_SET_ALARM_PROCESS_CFG。
2. 新增授权和非授权名单报警路径查询功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_BLOCKLIST_ALARM_INFO。
3. 新增名单报警记录删除功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_DEL_BLOCKLIST_ALARM_RECORD。
4. 新增存储资源配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
NET_DVR_GET_STORAGE_RESOURCE_CFG、NET_DVR_SET_STORAGE_RESOURCE_CFG。
5. 新增分组列表查询、添加/修改、删除功能(对应接口：NET_DVR_GetSTDConfig、NET_DVR_SetSTDConfig和NET_DVR_STDControl)：
NET_DVR_GET_BLOCKLIST_GROUP_INFO、NET_DVR_SET_BLOCKLIST_GROUP_INFO、NET_DVR_DEL_BLOCKLIST_GROUP_INFO。
6. 新增分组记录查询、添加/修改、删除功能(对应接口：NET_DVR_GetSTDConfig、NET_DVR_SetSTDConfig和NET_DVR_STDControl)： NET_DVR_GET_BLOCKLIST_GROUP_RECORD_CFG、NET_DVR_SET_BLOCKLIST_GROUP_RECORD_CFG、NET_DVR_DEL_BLOCKLIST_GROUP_RECORD_CFG。
7. 新增区域监控点查询、添加/修改、删除功能(对应接口：NET_DVR_GetSTDConfig、NET_DVR_SetSTDConfig和NET_DVR_STDControl)：
NET_DVR_GET_AREA_MONITOR_CFG、NET_DVR_SET_AREA_MONITOR_CFG、NET_DVR_DEL_AREA_MONITOR_CFG。
8. 新增抓拍库检索功能(对应接口：NET_DVR_GetSTDConfig)：
NET_DVR_RETRIEVAL_SNAP_RECORD。
9. 新增名单报警列表查询功能(对应接口：NET_DVR_GetSTDConfig)：
NET_DVR_GET_ALARMLIST。
10. 新增单张图片检测功能(对应接口：NET_DVR_GetSTDConfig)：
NET_DVR_DETECT_IMAGE。
11. 新增抓拍记录查询、删除功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_STDControl)：
NET_DVR_GET_SNAP_RECORD、NET_DVR_DEL_SNAP_RECORD。
12. 新增人脸记录、添加/修改、删除功能(对应接口：NET_DVR_GetSTDConfig、NET_DVR_SetSTDConfig和NET_DVR_STDControl)：
NET_DVR_GET_FACE_RECORD、NET_DVR_SET_FACE_RECORD、NET_DVR_DEL_FACE_RECORD。
13. 新增人脸库查询、添加/修改、删除功能(对应接口：NET_DVR_GetSTDConfig、NET_DVR_SetSTDConfig和NET_DVR_STDControl)：
NET_DVR_GET_FACE_DATABASE、NET_DVR_SET_FACE_DATABASE、NET_DVR_DEL_FACE_DATABASE。
14. 新增人脸库检索功能(对应接口：NET_DVR_GetSTDConfig)：
NET_DVR_RETRIEVAL_FACE_DATABASE。
15. 新增设备关联名单分组添加/修改、删除功能(对应接口：NET_DVR_SetSTDConfig和NET_DVR_STDControl)：
NET_DVR_SET_BLOCKLIST_REL_DEV_CFG、NET_DVR_DEL_BLOCKLIST_REL_DEV。
16. NET_DVR_ALARMCENTER_NETCFG(报警中心网络配置)使用342个保留字节新增参数：struHostAddr[MAX_CENTERNUM_V40](报警中心地址)。
V5.1.3.10
build20150720 		网络摄像机 V5.3.4 1. 新增外设配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_EXTERNALDEVICE、NET_DVR_SET_EXTERNALDEVICE。
2. 新增外设配置能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_EXTERNALDEVICE_CAPABILITIES。
3. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)扩展，byIrisMode(光圈模式)新增取值：6-HIK 11-40mm F1.7 (HV1140P-8MPIR)、7-HIK 2.7-12mm F1.2(TV2712P-MPIR)。
4. NET_DVR_UNATTENDED_BAGGAGE_REGION(物品遗留侦测配置)使用3个保留字节新增参数：wTimeThreshold(时间阈值)、byTimeThresholdMode(使用的时间阈值字段类型)。
5. NET_DVR_ATTENDED_BAGGAGE_REGION(物品拿取侦测配置)使用3个保留字节新增参数：wTimeThreshold(时间阈值)、byTimeThresholdMode(使用的时间阈值字段类型)。
6. 设备前端参数能力(IPC_FRONT_PARAMETER_V20)扩展：
1) <ExposureSet>(曝光时间)中<Range>(取值范围)新增取值：21-1/75、22-1/125、23-1/175、24-1/225、25-1/300、26-1/400。
2) <IrisMode>(镜头类型)中<Range>：6-HIK 11-40mm F1.7 (HV1140P-8MPIR)、7-HIK 2.7-12mm F1.2(TV2712P-MPIR)。
3) <Piris>(Piris光圈镜头)中新增节点：<Piris6>、<Piris7>。
V5.1.3.10
build20150720 		门禁指纹一体机
DS-K1TXXX V1.0 		1. 新增卡号关联用户配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_CARD_USERINFO_CFG、NET_DVR_SET_CARD_USERINFO_CFG。
2. NET_DVR_SINGLE_PLAN_SEGMENT(计划参数)中byVerifyMode(验证方式)新增取值：5-指纹、6-指纹+密码、7-指纹或刷卡、8-指纹+刷卡、9-指纹+刷卡+密码(无先后顺序)。
3. NET_DVR_EVENT_LINKAGE_INFO(事件联动参数)中wSubEventType(事件次类型)新增取值：
1) 新增设备事件次类型：EVENT_ACS_SD_CARD_FULL、EVENT_ACS_LINKAGE_CAPTURE_PIC。
2) 新增门事件次类型：EVENT_ACS_REMOTE_CAPTURE_PIC、EVENT_ACS_DOORBELL_RINGING。
4. NET_DVR_ACS_ALARM_INFO(门禁主机报警信息)扩展：
1) 使用8个保留字节新增参数：dwPicDataLen(图片数据大小)、pPicData(图片数据缓冲区)。
2) dwMinor(报警信息次类型)新增取值，报警次类型：0x40d、0x40e，操作次类型：0x40b，事件次类型：0x25~0x31。
5. 门禁主机能力集(AcsAbility)扩展：
1) 新增节点：<RealteUserInfo>(卡号关联用户配置能力)、<ContinuousShootCfg>(网络触发连拍能力)、<PictureCfg>(底图能力)。
2) <CardReaderVerifyTypePlan>(读卡器验证方式计划能力)中<verifyType>(验证方式)新增取值：fingerPrint,fingerPrintAndPasswd,fingerPrintorCard,fingerPrintAndCard,fingerPrintAndCardAndPasswd。
3) <AcsHostCfg>(门禁主机参数配置能力)中新增子节点：<showCapPic>(是否支持LCD屏上显示抓拍图片)、<showCardNo>(是否支持LCD屏上显示卡号)、<showUserInfo>(是否支持LCD屏上显示用户信息)、<overlayUserInfo>(抓拍的图片是否支持叠加用户信息)、<voicePrompt>(是否支持语音提示)、<uploadCapPic>(是否支持联动抓拍后上传图片)、<saveCapPic>(是否支持抓拍保存图片)。
4) <EventLinkage>(事件及卡号联动能力)中<SubEventNameList>(事件次类型)的子节点<subEventName>(事件名称)新增取值：SDCardFull、LinkageCapturePic、RemoteCapturePic、DoorBellRing。
6. 新增设备类型：DS_K1TXXX(指纹一体机)。
V5.1.3.10
build20150720 		32寸&42寸解码监视器
DS_D50XX V1.0 		1. 新增屏幕音频参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_LCD_AUDIO_CFG、NET_DVR_SET_LCD_AUDIO_CFG。
2. 新增屏幕开机LOGO显示参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_BOOT_LOGO_CFG、NET_DVR_SET_BOOT_LOGO_CFG。
3. 新增获取屏幕工作状态功能(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_LCD_WORK_STATE。
4. NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL(模拟遥控按键控制参数)扩展：
1) byControlType(按键类型)新增取值：12- 数字按键。
2) 使用1个保留字节新增参数：byControlParam (操作参数)。
5. NET_DVR_CAM_MODE(输入源类型)增加枚举类型：NET_DVR_CAM_SDI、NET_DVR_CAM_HDI、NET_DVR_CAM_DP、NET_DVR_CAM_HDTVI、NET_DVR_CAM_JOINT、NET_DVR_CAM_HDBASET。
6. LCD拼接屏能力集(LCD_SCREEN_ABILITY)扩展，<ScreenSignalCFG>中子节点<signalSourceType>(信号源类型)新增取值：8-SDI，9-DP，10-HDBASET。
V5.1.3.10
build20150720 		双出网络SDI一体机 V5.3.7 1.新增人员侦测报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
命令：COMM_PEOPLE_DETECTION_UPLOAD
V5.1.3.5
build20150701 		DS-19D系列动环监控主机V3.2.4 1. 新增报警主机日志的操作日志次类型：0xf0、0xf1、0xf2、0xf3。
V5.1.3.5
build20150701 		DS-6400HD-T V3.5.0 1. 新增窗口漫游模式开关配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_WIN_ROAM_SWITCH_CFG、NET_DVR_SET_WIN_ROAM_SWITCH_CFG。
2. NET_DVR_MATRIX_DECCHAN_CONTROL(窗口参数配置)使用5个保留字节新增参数：byEnableVcaDec (是否启用智能解码)、dwAllCtrlType(所有子窗口一起操作的类型)。
3. 设备能力集扩展(对应接口：NET_DVR_GetDeviceAbility)：
1) 电视墙能力集(WALL_ABILITY)中新增节点：<VcaDecode>(是否支持智能解码)。
2) 解码器能力集(DECODER_ABILITY)中新增节点：<SupportWinRoamSwitch>(是否支持窗口漫游)。
V5.1.1.21
build20150616 		网络摄像机 V5.3.3 1.新增支持智能规则关联颜色设置功能(对应接口：NET_DVR_SetDVRConfig)：
命令：NET_DVR_SET_VCA_RULE_COLOR_CFG。
2. 新增支持智能规则关联颜色查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_VCA_RULE_COLOR_CFG。
3. 新增人员统计查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_FACECAPTURE_STATISTICS。
4. 新增人员统计报警上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
COMM_FACECAPTURE_STATISTICS_RESULT。
5. NET_VCA_FACESNAPCFG(人脸抓拍配置)使用1个保留字节新增参数：byBackgroundPic(背景图上传使能)。
6. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道分析能力集(VcaChanAbility)扩展：
1) 新增节点：<FaceCaptureStatistics>(人员统计能力)、<ColorFilter>(智能规则关联颜色配置能力)。
2) <FaceSnap>(人脸抓拍能力)新增子节点：<backgroundPic>(背景图上传使能)。
V5.1.1.21
build20150616 		门禁主机 V1.1 1. 新增手机关联门权限配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_PHONE_DOOR_RIGHT_CFG、NET_DVR_SET_PHONE_DOOR_RIGHT_CFG。
2. 新增事件/卡号联动配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_EVENT_CARD_LINKAGE_CFG、NET_DVR_SET_EVENT_CARD_LINKAGE_CFG。
3. 新增门禁主机参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ACS_CFG、NET_DVR_SET_ACS_CFG。
4. 新增指纹管理配置功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_SendRemoteConfig)：
命令：NET_DVR_GET_FINGERPRINT_CFG、NET_DVR_SET_FINGERPRINT_CFG。
5. 新增删除指纹参数功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_DEL_FINGERPRINT_CFG。
6. 新增卡密码开门使能配置功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_SendRemoteConfig)：
命令：NET_DVR_GET_CARD_PASSWD_CFG、NET_DVR_SET_CARD_PASSWD_CFG。
7. NET_DVR_SINGLE_PLAN_SEGMENT(计划参数)中byVerifyMode(验证方式)新增取值：3-刷卡、4-刷卡或密码。
8. NET_DVR_ACS_WORK_STATUS(工作状态)，byDoorStatus(门状态)取值修改为：1-休眠、2-常开状态、3-常闭状态、4-普通状态，byCardReaderVerifyMode(读卡器当前验证方式)取值修改为：1-休眠、2-刷卡+密码、3-刷卡、4-刷卡或密码。
9. NET_DVR_ALARMHOST_NETPARAM(上传中心网络参数)扩展：
1) byReportProtocol(报告协议)新增取值：3- ehome。
2) byDevID[ACCOUNTNUM_LEN_V40]扩展为byDevID[ACCOUNTNUM_LEN_32]，即长度从9字节扩展为32字节。
10. NET_DVR_PHONECFG(电话配置)中byPhonePerssion(号码权限)新增类型：0x4表示支持门操作控制。
11. NET_DVR_CARD_READER_CFG(读卡器参数配置)扩展：
1) byCardReaderType(读卡器类型)新增取值：6~32。
2) 使用1个保留字节新增参数：byFingerPrintCheckLevel(指纹识别等级)。
12. NET_DVR_CARD_CFG(卡参数)中byCardType(卡类型)新增取值：8- 解除卡。
13. NET_DVR_DOOR_CFG(门参数)使用8个保留字节新增参数：byUnlockPassword[UNLOCK_PASSWORD_LEN](解除码)。
14. NET_DVR_ACS_PARAM_TYPE(清空门禁主机参数)中dwParamType(参数类型)新增取值：ACS_PAPAM_EVENT_CARD_LINKAGE(事件及卡号联动参数)、ACS_PAPAM_CARD_PASSWD_CFG(密码开门使能参数)。
15. 门禁主机报警上传扩展：
1) NET_DVR_ACS_EVENT_INFO(门禁主机事件信息)使用2个保留字节新增参数：byAllowListNo(授权名单单号)、byReportChannel(报告上传通道)。
2) NET_DVR_ACS_ALARM_INFO(门禁主机事件信息)中dwMinor新增操作报警次类型：0x40c~0x40f。
16. 门禁主机能力集(AcsAbility)扩展：
1) 新增节点：<AcsHostCfg>(门禁主机参数配置能力)、<EventLinkage>(事件及卡号联动配置能力)、<FingerPrint>(指纹参数配置能力)、<SMS>(手机短信能力)。
2) <CardReaderVerifyTypePlan>(读卡器验证方式计划能力)中<verifyType>(验证方式)新增取值：swipecardorpasswd。
3) <Door>(门参数能力)新增节点：<unlockPassword>(解锁密码长度)。
4) <Card>(卡参数能力)新增节点：<onlyPasswdOpen >(密码开门能力)。
5) <CardReaderCfg>(读卡器参数能力)中<cardReaderType>(读卡器类型)新增取值：DS-K182AMF/ACF,韦根或485不在线,DS-K1101M/MK,DS-K1101C/CK,DS-K1102M/MK/M-A,DS-K1102C/CK,DS-K1103M/MK,DS-K1103C/CK,DS-K1104M/MK,DS-K1104C/CK,DS-K1102S/SK/S-A,DS-K1102G/GK,DS-K1100S-B,DS-K1102EM/EMK,DS-K1102E/EK,DS-K1200EF,DS-K1200MF,DS-K1200CF,DS-K1300EF,DS-K1300MF,DS-K1300CF,DS-K1105E,DS-K1105M,DS-K1105C,DS-K182AMF,DS-K196AMF,DS-K194AMP。
6) <clearAcsParam>(清空门禁参数能力)新增取值：,eventandCardLinkage,cardPasswdOpendoor。
V5.1.1.19
build20150605 		iVMS-6200智能分析服务器 V2.4.0 1. 新增获取GOP信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_GOP_INFO。
2. 新增智能规则关联颜色设置功能(对应接口：NET_DVR_SetDVRConfig)：
命令：NET_DVR_SET_VCA_RULE_COLOR_CFG。
3. 新增智能规则关联颜色查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_VCA_RULE_COLOR_CFG。
4. 新增开关灯检测规则配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_SWITCH_LAMP_CFG、NET_DVR_SET_SWITCH_LAMP_CFG。
5. 新增开关灯检测报警上传(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
COMM_SWITCH_LAMP_ALARM。
6. NET_DVR_CHANNEL_GROUP(通道号和组号信息)使用4个保留字节新增参数：dwPositionNo(场景位置索引号)。
7. 智能异常行为识别功能扩展：
1) VCA_RULE_EVENT_TYPE_EX(异常行为识别事件类型)新增枚举类型：ENUM_VCA_EVENT_SIT_QUIETLY(一动不动事件)。
2) NET_VCA_EVENT_UNION(事件规则参数联合体)中新增结构体参数：NET_VCA_SIT_QUIETLY(一动不动事件参数)。
3) NET_VCA_RELATE_RULE_PARAM(关联规则)使用2个保留字节新增参数：wEventType(行为事件类型)。
4) VCA_ABILITY_TYPE_EX(支持的异常行为识别能力类型)新增枚举类型：EVENT_SIT_QUIETLY_ABILITY(一动不动事件)。
8. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道分析能力(VcaChanAbility)扩展：
1) <Behavior>(异常行为识别)：<EventType>(事件类型)新增子节点<SitQuietly>(一动不动事件)；<BehaviorRule>(异常行为识别规则)中<eventType>(事件类型)新增取值：sitQuietly(一动不动事件)。
2) 新增节点：<SwitchLamp>(开关灯检测能力)。
9. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道控制能力(VcaCtrlAbility)扩展:
1) 新增节点：<VcaCtrlTypeEntry>(“放风场”和“审讯室模式”能力)。
2) <VcaCtrlTypeEntry>(异常行为识别监狱版能力)新增子节点：<mode>(模式)。
10. 设备通用能力集(DEVICE_ABILITY_INFO)，其中录像相关能力(RecordAbility)扩展，新增节点：<supportGetGopInfo>(是否支持结构化信息获取)。
V5.1.1.19
build20150605 		DS-KV8XX2-XX系列别墅门口机 V1.1 1.新增梯控器参数配置扩展(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ELEVATORCONTROL_CFG_V40、NET_DVR_SET_ELEVATORCONTROL_CFG_V40。
2. 新增按键呼叫住户配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_CALL_ROOM_CFG、NET_DVR_SET_CALL_ROOM_CFG。
3. 新增可视通话信令交互功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_SendRemoteConfig)：
命令：NET_DVR_VIDEO_CALL_SIGNAL_PROCESS。
4.新增支持报警布防方式获取报警(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
COMM_UPLOAD_VIDEO_INTERCOM_EVENT、
COMM_ALARM_VIDEO_INTERCOM。
5. 新增类型别墅门口机和二次确认机设备类型：
1) NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG(设备编号配置)、NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG(操作时间配置)、NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG(关联网络设备配置)中byUnitType(设备类型)分别新增取值：5-别墅门口机、6-二次确认机。
2) NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION(设备编号参数联合体)中新增结构体参数：struVillaOutdoorUnit(别墅门口机)。
3) NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION(关联网络设备配置联合体)中新增结构体参数：struVillaUnit(别墅门口机)、struAgainUnit(二次确认机)。
6. NET_DVR_NOTICE_DATA(公告数据下发参数)中byLevel(公告等级)新增取值：4- 通知类信息。
7. NET_DVR_VIDEO_INTERCOM_ALARM(可视对讲报警信息)中byAlarmType(报警类型)新增取值：7- SOS(呼救报警)。
8. 可视对讲能力集(IP_VIEW_DEV_ABILITY)中<IpViewDevAbility>(可视对讲能力)扩展：
1) 新增节点：<CallRoomConfig>(别墅机按键呼叫住户配置)、<VideoCall>(可视通话能力)。
2) <DeviceID>(设备编号)新增节点：<VillaOutDoorDevice>(别墅门口机)。
3) <RelateDevice>(关联网络设备)新增节点：<centerIP>(中心平台IP)、<centerPort>(中心平台端口)。
4) <NoticeData>(公告数据)中<noticeLevel>(公告等级)新增取值：notification(通知类信息)。
5) <ElevatorControl>(梯控参数)新增节点：<serverIP>(梯控服务器IP)、<serverPort>(梯控服务器端口)。
6) <IOIn>(IO输入能力)、<IOOut>(IO输出能力)新增节点：<NodeList>(IO输入/输出口列表)。
9.新增设备类型：DS_KVXXXX_XX(别墅门口机)。
V5.1.1.18
build20150603 		公安一体机视图库 V1.1 1. 新增上传文件到视图库功能(对应接口：NET_DVR_UploadFile_V40和NET_DVR_UploadSend)：
上传类型：UPLOAD_DATA_TO_DB。
2. 新增视图库信息配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_VIDEO_IMAGE_DB_CFG、NET_DVR_SET_VIDEO_IMAGE_DB_CFG。
3. 新增按文件ID查询视图库文件的功能(对应接口：NET_DVR_GetSTDConfig)：
命令：NET_DVR_GET_FILE_INFO_BY_ID。
4. 新增按文件ID删除视图库文件的功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_DEL_FILE_FROM_DB。
5.新增从视图库中下载文件的功能(对应接口：NET_DVR_StartDownload)：
下载类型：NET_SDK_DOWNLOAD_FILE_FORM_DB。
6.新增能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CFG_CAP(视图库信息配置能力)、
NET_DVR_QUERY_FILE_INFO_CAP(按文件ID查询文件能力)、
NET_DVR_GET_VIDEO_IMAGE_DB_CAP(视图库总能力)。
7.新增操作日志次类型：0x2200~0x2204。
8.新增错误码：2100
V5.1.1.17
build20150602 		网络摄像机 V5.3.3 FF车牌识别 1. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)使用2个保留字节新增参数：byRegion(区域索引)、byCountry(国家和地区索引)。
2. 触发模式配置(NET_ITC_TRIGGERCFG)中各种触发模式的NET_ITC_PLATE_RECOG_PARAM(牌识参数)使用1个保留字节新增参数：byRegion(区域索引)。
3. 交通抓拍结果上传(NET_ITS_PLATE_RESULT)中NET_DVR_PLATE_INFO(车牌信息)使用2个保留字节新增参数：byRegion(区域索引)、byCountry(国家和地区索引)。
4. NET_VCA_DEV_ABILITY(智能设备能力集)使用2个保留字节新增参数：bySmartNum(SMART事件个数)、byVehicleNum(车辆检测通道个数)。
5. VCA_CHAN_ABILITY_TYPE(智能通道能力类型)新增枚举类型：VCA_SMART_EVENT(SMART事件)、VCA_VEHICLE_DETECTION(车辆检测)。
6. JPEG抓图能力集(DEVICE_JPEG_CAP_ABILITY)扩展，<FindPicInfo>(图片查找能力)新增节点：<region >(区域索引)、<country>(国家和地区索引)。
7. 设备通用能力集(DEVICE_ABILITY_INFO)，其中事件能力(EventAbility)，<VehicleDetection>(车辆检测)和<HVTVehicleDetection>(混行卡口检测)中节点<PlateRecogParam>(车牌识别参数)分别新增子节点：<region>(区域索引)。
8. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道控制能力(VcaCtrlAbility)扩展:
1) 新增节点：<VcaCtrlTypeEntry>(“SMART事件”和“车辆检测事件”能力)。
2) <NeedReboot>(是否需要重启)中<smartSwitchVcaType>(智能类型切换)新增取值：smartEvent,vehicleDetection。
V5.1.1.17
build20150602 		智能交通摄像机 V4.1.0 1. NET_ITC_POST_IMT_PARAM(智慧监控配置)使用1个保留字节新增参数：bySnapMode(抓拍类型)。
2. NET_ITC_EPOLICE_LANE_PARAM(电警RS485车检器触发模式车道参数)使用1个保留字节新增参数：bySnapPicPreRecord(抓拍图片预录时间点)。
3. NET_ITC_POST_MPR_PARAM(卡口多帧检测(MPR)触发参数)使用1个保留字节新增参数：byPicUploadType(图片上传类型)。
4. NET_DVR_PICCFG_V30和NET_DVR_PICCFG_V40(通道图像参数)分别使用1个保留字节新增参数：byOSDMilliSecondEnable(视频叠加时间支持毫秒)。
5. NET_ITC_LANE_VIDEO_EPOLICE_PARAM(视频电警触发模式车道参数)使用1个保留字节新增参数：bySnapPicPreRecord(抓拍图片预录时间点)。
6. NET_ITC_IOOUT_PARAM(IO输出配置参数)中byIOWorkMode(IO输出口工作模式)新增取值：2- 常亮灯。
7. NET_DVR_SNAPENABLECFG(使能参数)使用1个保留字节新增参数：bySnapPicResolution(抓拍图片分辨率)。
8. NET_DVR_SNAP_ABILITY(智能交通摄像机能力集)的bySupport2新增取值：bySupport2&0x02, 表示是否支持时间毫秒视频叠加功能。
9. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能交通设备能力(ITDeviceAbility)扩展，<ITCAbility>中<imageOverlayString>新增子节点<itemTypeCustomLength>(自定义类型长度)。
10. 设备图像参数能力集(VideoPicAbility)扩展，<OSD>新增子节点：<OSDMilliSecond>(频叠加时间支持毫秒)。
V5.1.1.16
build20150528 		CVR Mars V2.3.1 1. 智能搜索接口扩展，支持流ID方式：
NET_DVR_SmartSearch_V40
V5.1.1.16
build20150528 		高清审讯机DS-8604SN-SP(/-ST) V1.1.0 1. 新增审讯案件信息配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_INQUEST_CASE_INFO、NET_DVR_SET_INQUEST_CASE_INFO。
2. 新增审讯机用户权限配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_INQUEST_USER_RIGHT、NET_DVR_SET_INQUEST_USER_RIGHT。
3. 新增音频输入混音配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_INQUEST_MIX_AUDIOIN_CFG、NET_DVR_SET_INQUEST_MIX_AUDIOIN_CFG。
4. 新增案件信息显示控制功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_CASE_INFO_CTRL。
5. NET_DVR_INQUEST_SYSTEM_INFO(系统信息)使用2个保留字节新增参数：byEnableHashCheck(是否启用对光盘数据HASH值校验)、byEnableInitCD(是否启用初始化光盘)。
6. 新增音频信号丢失配置和报警功能：
1) NET_DVR_PICCFG_V40(通道图像参数)中新增支持struAULost(音频信号丢失报警参数)。
2) NET_DVR_VILOST_V40(信号丢失报警参数)使用1个保留字节新增参数：byVILostAlarmThreshold(信号丢失报警阈值)。
3) NET_DVR_ALARMINFO_V30(上传的报警信息)中dwAlarmType(报警类型)新增取值：19-音频丢失。
7. NET_DVR_PREVIEW_SWITCH_COND(本地预览输出参数配置条件)中byVideoOutType(视频输出接口类型)新增取值：17-主LCD、18-辅助VGA、19-辅助LCD。
8. 设备通用能力集(DEVICE_ABILITY_INFO)，其中审讯机能力集(InquestAbility)扩展，新增节点：<InquestCaseInfoConfig>(审讯案件信息配置能力)、<CaseInfoDisplay>(案件信息显示控制能力)、<InquestUserRight>(用户权限配置能力)、<InquestMixAudoiInCfg>(音频输入混音配置能力)、<HashCheck>(光盘数据HASH值校验能力)、<FormatDisk>(初始化光盘能力)、<VILostAlarm>(信号丢失报警能力)。
9. 设备通用能力集(DEVICE_ABILITY_INFO)，其中本地预览切换能力(PreviewSwitchAbility)，<VideoOutType>(视频输出类型)新增取值：8-非同源VGA1、9-非同源VGA2、10-同源VGA3、11-同源VGA4。
V5.1.1.10
build20150429 		防护舱控制器DS-1H02-A V1.0 1. 新增防护舱状态查询功能(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_SAFETYCABIN_STATE。
2. 新增RS485级联设备配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_RS485_CASCADE_CFG、NET_DVR_SET_RS485_CASCADE_CFG。
3. NET_DVR_AudioCtrl语音控制接口中参数dwAudioNum新增取值：7- 超时提示音。
4. 设备通用能力集(DEVICE_ABILITY_INFO)，其中报警主机XML能力AlarmHostAbility扩展，新增节点：<SafetyCabinCascadeCfg>(是否支持防护舱级联)、<SafetyCabinWorkMode>(是否支持防护舱工作模式设置)、<SafetyCabinStatus>(是否支持配置方式获取防护舱状态)。
V5.1.1.10
build20150429 		网络报警主机 V2.1.0 1. 新增辅助设备升级功能(对应接口：NET_DVR_Upgrade_V40)：
升级类型：ENUM_UPGRADE_AUXILIARY_DEV。
2. 新增单个时控输出参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ONE_OUTPUT_SCH_RULECFG_V40、NET_DVR_SET_ONE_OUTPUT_SCH_RULECFG_V40。
V5.1.1.10
build20150429 		视频报警主机 V2.0.0 1. 新增延迟预览参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_PREVIEW_DELAY_CFG、NET_DVR_SET_PREVIEW_DELAY_CFG。
2. 新增防区联动视频通道配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ZONE_CHANNEL_LINKAGE_CFG、NET_DVR_SET_ZONE_CHANNEL_LINKAGE_CFG。
3. 新增报警中心服务器配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_CENTER_SERVER_CFG、NET_DVR_SET_CENTER_SERVER_CFG。
4. 新增无线业务查询功能(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_DVR_GET_ALARMHOST_WIRELESS_BUSINNESS_INFO。
5. 新增获取所有遥控器功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_ALL_REMOTECONTROLLER_LIST。
6. NET_DVR_CMS_PARAM(平台参数)使用65个保留字节新增参数：byAddressType(地址类型)、sDomainName[64](域名)。
7. NET_DVR_CID_ALARM(CID报警信息)使用10个保留字节新增参数：byCenterType(中心账号类型)、sCenterAccountV40[9](中心账号扩展)。
8. NET_DVR_SUBSYSTEM_PARAM_EX(子系统扩展参数)使用224个保留字节新增参数：struAlarmRemindTime[7][8](布撤防提醒时间)。
9. NET_DVR_ALARMIN_PARAM(防区参数)，使用5个保留字节新增参数：byZoneResistor(防区电阻)、fZoneResistorManual(防区手动电阻)，byType(防区类型)新增取值：8-24小时辅助防区、9-24小时震动防区。
10. NET_DVR_TAMPER_ALARMIN_PARAM(防区防拆参数)使用5个保留字节新增参数：byTamperResistor(防拆电阻)、fTamperResistorManual(防拆手动电阻)。
11. NET_DVR_ALARM_CAPTRUE_CFG(报警抓图参数)中byResolution(图片分辨率)新增取值：5-WD1、6- VGA、7-XVGA、8-720P、9-1080P。
12. NET_DVR_REMOTECONTROLLER_PERMISSION_CFG(遥控器用户参数)使用2个保留字节新增参数：wRemoteCtrllerID(遥控器号)。
13. NET_DVR_ALARMHOST_NETPARAM(上传中心网络参数)，使用1个保留字节新增参数：byAddressType(地址类型)，数组byDevID[6]扩展为byDevID[9]。
14. NET_DVR_ALARMHOST_MAIN_STATUS_V40(报警主机主要状态)使用64个保留字节新增参数：byEnableSubSystem[32](子系统启用状态)，bySubSystemGuardType[32](子系统布防类型)。
15. 设备通用能力集(DEVICE_ABILITY_INFO)，其中报警主机XML能力AlarmHostAbility扩展：
1) 新增节点：<keyboardAddr>(键盘地址)、<KeyboardAlarm>(键盘报警)、<WirelessBusiness>(无线业务查询)、<RemoteController>(遥控器能力)、<CenterServerConfig>(报警中心服务器配置)、<ZoneLinkageChannel>(防区联动视频通道)。
2) <ZoneConfig>(防区参数配置)中，新增子节点：<InDelayTime>(进入延时时间)、<OutDelayTime>(退出延迟时间)、<alarmType>(报警器类型)、<zoneResistor>(防区电阻)、<zoneResistorManual>(自定义防区电阻)，<zoneType>新增取值：24hourAuxiliaryAlarmIn, 24hourVibrationAlarmIn。
3) <SearchMainStatus>(主要状态查询)中，新增子节点：<enableSubSystem>(是否启用子系统)、<subSystemGuardType>(布防类型)。
4) <SubSystemConfig>(子系统配置)中新增子节点：<alarmRemindTime>(布防提示时间)。
5) <WirelessNetworkConfig>(无线网络配置)、<NetworkConfig(网络参数配置)>中分别新增子节点：<addressType>(支持的地址类型)。
6) <ProcessFaultConfig>(故障配置)中<supportFaultType(支持的故障类型)新增取值：expandBoardAbnormal(防区扩展板异常)。
16. 设备网络应用参数能力(DEVICE_NETAPP_ABILITY)扩展，<CMS>新增子节点：<deviceID>(设备ID支持的字符)、<addressType>(支持的地址类型)。
17. 设备通用能力集(DEVICE_ABILITY_INFO)，其中设备通道输入能力(ChannelInputAbility)扩展，新增节点：<PreviewDelayConfig>(延时预览参数配置)。
V5.1.1.10
build20150429 		视频报警主机V1.3.0 1.新增获取主要状态扩展(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40。
2. 新增时控输出参数配置扩展(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG_V40、NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG_V40。
3. 新增报警抓图参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ALARM_CAPTRUE_CFG、NET_DVR_SET_ALARM_CAPTRUE_CFG。
4. 新增子系统定时布撤防和优先计划配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_SUBSYSTEM_ALARM、NET_DVR_SET_SUBSYSTEM_ALARM、
NET_DVR_GET_PRIOR_ALARM、NET_DVR_SET_PRIOR_ALARM。
5. 新增授权名单参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ALLOWLIST_ALARM、NET_DVR_SET_ALLOWLIST_ALARM。
6. 新增防拆参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_TAMPER_ALARMIN_PARAM、NET_DVR_GET_TAMPER_ALARMIN_PARAM。
7. 新增遥控器权限参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG、NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG。
8. 新增获取所有模块信息功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_ALARMHOST_MODULE_LIST。
9. 新增报警主机日志类型(对应接口：NET_DVR_FindAlarmHostLog)：
1)报警日志次类型：0x2e、0x2f；
2)异常日志次类型：0x2c、0x2d、0x2e；
3)操作日志次类型：0x4d~0x56；
4)事件日志次类型：0x06~0x0e。
10. NET_DVR_ALARMHOST_MODULE_CFG(模块信息)使用64个保留字节新增参数：sModelInfo[32](模块信息)、sDeviceVersionInfo[32](版本信息)。
11. NET_DVR_SIREN_PARAM(警号参数)中dwOverallEventJointSirenOn(全局事件联动警号输出开启)新增取值：bit2-交流电断电、bit3-电池电压低、bit4-电话线掉线、bit5-有线网络异常、bit6-无线网络异常、bit7-键盘485断线。
12. NET_DVR_ALARMHOST_PRINTER_CFG(打印机配置)中dwDeviceInfo(故障设备信息)新增取值：bit17-硬盘故障、bit18-硬盘故障恢复。
13. NET_DVR_TRIGGER_EVENT(事件触发触发器参数)扩展，新增全局事件：bit5-硬盘故障，新增子系统事件：bit7-防区防拆、bit8-防区防拆恢复。
14. NET_DVR_CMS_PARAM(平台参数)使用1个保留字节新增参数：byNetWork(网络类型)。
15. 设备通用能力集(DEVICE_ABILITY_INFO)，其中报警主机XML能力AlarmHostAbility扩展：
1) 新增节点：<ZoneTamperConfig>(防区防拆)、<WhiteAlarm>(授权名单配置)、<SubSystemTimeAlarm>(子系统定时布撤防)、<PriorSubSystemAlarm>(子系统优先计划配置)、<ModuleList>(获取模块信息列表)、<AlarmCaptrue>(报警抓图)。
2) <ModuleConfig>(模块配置)新增子节点：<moduleType>(类型)、<ModuleInfo>(模块信息)、<deviceVersionInfo>(设备版本信息)。
3) <SirenConfig>(警号配置)中，<overallEventTriggerSirenOn>新增取值：ACPower, lowBatteryVoltage, phoneOffLine, wireNetWorkException, wirelessNetWorkException, keyBoard485Break。
4) <SearchMainStatus>(主要状态查询)中，<mainStatusType>新增取值：zoneMemory, zoneTamper。
5) <TriggerEventConfig>(触发事件能力)中，<supportOverallEvent>新增取值：harddiskException，<supportSubsystemEvent>新增取值：zoneTamper, zoneTamperRestore。
6) <OutputScheduleRuleCfg>(时控输出配置)新增子节点：<triggerIndex>(关联触发器)、<isSupportSingleOutputScheduleRule>(是否支持单个规则配置命令)。
16. 设备网络应用参数能力(DEVICE_NETAPP_ABILITY)扩展，<CMS>新增子节点：<netWork>(网络模式)。
V5.1.1.10
build20150429 		TS-5004-A V4.0.4 1.新增交通数据查询功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_GET_TRAFFIC_DATA。
2. 新增交通流量查询功能(对应接口：NET_DVR_StartRemoteConfig):
命令：NET_DVR_GET_TRAFFIC_FLOW。
V5.1.1.10
build20150429 		网络摄像机 V5.3.2 1.新增取流预览强制刷新帧功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_STREAMING_REFRESH_FRAME。
2. 新增视频流能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_STREAMING_CAPABILITIES。
3. 新增刷新帧能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_REFRESHFRAME_CAPABILITIES。
4. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)使用3个保留字节新增参数：bySmartCodec(是否启用Smart编码)、wAverageVideoBitrate(平均码率)。
5. NET_DVR_LITESTORAGE(轻存储配置)使用4个保留字节新增参数：byLevel(等级参数)、byDefLowStorageTime(低等级模式下推荐天数)、byDefMediumStorageTime(中等级模式下推荐天数)、byDefHighStorageTime(高等级模式下推荐天数)。
6. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)扩展，<NeedReboot>中新增子节点：<SmartCodec>(Smart编码切换检测模式是否需要重启)。
7. 设备所有编码能力集(DEVICE_ENCODE_ALL_ABILITY_V20)扩展，<MainChannel>、<SubChannelEntry>、<Stream3>中分别新增子节点：<SmartCodecCap>(Smart编码能力)，<VideoResolutionEntry>中新增子节点：<AverageVideoBitrate>(平均编码码率)。
8. 轻存储能力集(LiteStorage)扩展，新增节点：<level>(等级参数)、<DefStorageTime>(存储时间推荐值)。
V5.1.1.6
build20150409 		DS_TP3200_EC
机柜智能检测仪
V1.0.0 		1.新增报警信息上传(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
COMM_ALARM_SENSORINFO_UPLOAD(传感器上传)、
COMM_ALARM_CAPTURE_UPLOAD(抓拍图片上传)。
2. 新增传感器信息查询功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_SENSOR_INFO。
3. 新增传感器控制功能(对应接口：NET_DVR_STDControl)：
命令：NET_DVR_SET_SENSOR_SWITCH。
4. 新增传感器能力集(对应接口：NET_DVR_GetSTDAbility):
能力集类型：NET_DVR_GET_SENSOR_PORT_CAPABILITIES。
5. SENSOR_TYPE(传感器类型)新增枚举类型：SENSOR_TYPE_AC_TERMINAL(AC端子)、SENSOR_TYPE_AC_SOCKET(AC插座)。
6. NET_ITS_SINGLE_DEVICE_INFO(路口设备信息)，dwDeviceType(设备类型)新增取值：18-机柜检测仪，使用1个保留字节新增参数：byRelateChan(关联通道号)。
7. 新增设备类型：DS_TP3200_EC。
V5.1.1.3
build20150318 		Win32基线SDK项目 1.更新V40登录扩展接口：
NET_DVR_Login_V40。
2. 新增设备激活接口：
NET_DVR_ActivateDevice。
3. 新增通过NVR激活前端设备功能(对应接口：NET_DVR_SetSTDConfig)：
命令：NET_DVR_SET_IPDEVICE_ACTIVATED。
4. 新增获取数字通道对应设备安全状态功能(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_DIGITAL_CHAN_SECURITY_STATUS。
5. 新增NVR激活前端设备能力集(对应接口：NET_DVR_GetSTDAbility)
能力集类型：NET_DVR_GET_ACTIVATE_IPC_ABILITY。
6. 新增设备激活相关错误码：250、251、252。
7. NET_DVR_DEVICEINFO_V40(设备参数)中byPasswordLevel(密码安全等级)新增取值：3- 风险较高的密码。
8. NET_DVR_DIGITAL_CHANNEL_STATE(设备数字通道状态)中的数字通道状态取值新增：NET_SDK_DC_STATUS_IPC_LAN_ERR(IPC语言与NVR语言不匹配)、NET_SDK_DC_STATUS_USER_LOCKED(用户被锁定)、NET_SDK_DC_STATUS_NOT_ACTIVATED(设备未激活)、NET_SDK_DC_STATUS_USER_NOT_EXIST(用户不存在)、NET_SDK_DC_STATUS_IPC_UNREGISTERED(GB28181协议接入的IP通道对应设备未注册)。
9. NET_DVR_SADPINFO(SADP搜索到的设备信息)使用1个保留字节新增参数：byActivated(激活状态)。
10. 设备通用能力集(DEVICE_ABILITY_INFO)，其中NVR前端待接入设备通道能力(GetAccessDeviceChannelAbility)扩展，新增节点<SupportActivateIPC>(是否支持激活IPC)、<SupportActivateIPC>(是否支持检测IPC风险密码)。
V5.0.3.20
build20150318 		NVR V3.3.0 1.新增GB28181服务器参数配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_GBT28181_SERVICE_CFG、NET_DVR_SET_GBT28181_SERVICE_CFG。
2. 新增GB28181服务器能力集(对应接口：NET_DVR_GetSTDAbility)
能力集类型：NET_DVR_GET_GBT28181_SERVICE_CAPABILITIES。
3. NET_DVR_SADPINFO(SADP搜索的IPC信息)使用32个保留字节新增参数：szGB28181DevID[DEV_ID_LEN](GB28181协议接入时的设备ID)。
4. NET_DVR_IPDEVINFO_V31(IP设备信息)使用32个保留字节新增参数：szDeviceID[DEV_ID_LEN](设备ID)。
5. NET_DVR_DDNSPARA_V30(DDNS网络应用参数)使用5个保留字节新增参数：wCountryID(国家和地区编号)、byStatus(DDNS运行状态)。
6. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)新增节点：<DDNSStatus>(DDNS运行状态能力)、<supportGB28181Service>(支持GB28181服务参数配置)。
V5.0.3.17
build20150210 		网络摄像机 V5.3.0、
网络球机 V5.3.0 		1.新增物理倍率坐标配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_PHY_RATIO、NET_DVR_SET_PHY_RATIO
2. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中byResolution(分辨率)新增取值：86- 640*360。
3. NET_DVR_FIND_PICTURE_PARAM(图片查找条件)中byFileType(查找的图片类型)新增取值：0x1d- 取证事件。
4. NET_DVR_FIND_PICTURE和NET_DVR_FIND_PICTURE_V40(图片查找结果)分别使用18个保留字节新增参数：byEventSearchStatus(搜索状态，后面是否还有图片)、byRecogResult(车辆识别结果)，sLicense[16](车牌号码)。
5. NET_DVR_PRIVACY_MASKS_CFG(云台隐私遮蔽参数)使用5个保留字节新增参数：byCurZoomRatio(当前倍率使用字段)、fActiveZoomRatio(屏蔽倍率，精确到小数点1位)。
6. NET_DVR_PTZ_BASICPARAMCFG(PTZ基本参数)使用1个保留字节新增参数：byManualControlSpeed(手控速度模式)。
7. NET_DVR_CHANNELSTATE_V30(通道状态信息)使用4个保留字节新增参数：dwAllBitRate(实际码率之和)。
8. VCA_CHAN_ABILITY_TYPE(智能能力类型)新增枚举类型：VCA_SMART_VEHICLE_DETECTION(SMART事件+车辆检测)、VCA_SMART_HVT_DETECTION(SMART事件+混行检测)。
9. NET_VCA_DEV_ABILITY(智能设备能力集)使用2个保留字节新增参数：bySmartVehicleNum(SMART事件+车辆检测通道个数)、bySmartHVTNum(SMART事件+混行检测通道个数)。
10. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道控制能力(VcaCtrlAbility)扩展，新增节点：<VcaCtrlTypeEntry>(“SMART事件+车辆检测”和“SMART事件+混行检测”能力)、<defVcaType>(设备默认支持的异常行为识别类型)、<NeedReboot>(是否需要重启)。
11. 设备通用能力集(DEVICE_ABILITY_INFO)，其中PTZ能力(PTZAbility)扩展:
1) <BasicParamCfg>(云台基本参数能力)中新增节点：<manualControlSpeed>(手控速度模式)。
2) <PrivacyMaskCfg >(云台隐私遮蔽)中新增节点：<curActiveZoomRatioType>(屏蔽倍率精确到小数点)。
12. JPEG抓图能力集(DEVICE_JPEG_CAP_ABILITY)扩展，<supportFileType>(图片类型)新增取值：evidence(取证事件)。
13. 设备前端参数能力(IPC_FRONT_PARAMETER_V20)扩展：
1) 新增视频制式与宽动态互斥能力节点：<CaptureModeIndex87>(1280*960@50fps)、<CaptureModeIndex88>(1280*960@60fps)、<CaptureModeIndex89>(1280*960@100fps)、<CaptureModeIndex90>(1280*960@120fps)。
2) <WDR>(宽动态)中<mutexAbility >(互斥能力)新增取值：87-1280*960@50fps,88-1280*960@60fps,89-1280*960@100fps,90-1280*960@120fps。
3) <FocusMode>(聚焦模式)新增节点：<physicsRatio>(物理倍率坐标范围)。
14. 设备通用能力集(DEVICE_ABILITY_INFO)，其中报警事件处理能力(EventAbility)扩展：
1) 新增节点：<HVTVehicleDetection>(HVT混行卡口能力)、<CurVehicleDetection>(获取当前触发模式)。
2) <TraversingVirtualPlane>(越界侦测)，新增子节点：<recogRuleType>(运动方向判断方式)、<triggerRecord>(触发录像能力)，<mutexAbility>(互斥能力)新增取值：recordPlan(计划录像)。
3) <FieldDetection>(区域入侵)，新增子节点：<triggerRecord>(触发录像能力)，<mutexAbility>(互斥能力)新增取值：recordPlan(计划录像)。
15. 设备网络应用参数能力集(DEVICE_NETAPP_ABILITY)扩展，新增节点：<allBitRate>(所有连接实际码率之和的参数能力)。
16. 设备编码能力集(DEVICE_ENCODE_ALL_ABILITY_V20)扩展，<VideoEncodeEfficiency>(视频编码复杂度能力)新增子节点：<EncodeTypeList>(编码类型列表，新增H.265类型对应复杂度取值)。
17. 设备通用能力集(DEVICE_ABILITY_INFO)，其中录像相关能力(RecordAbility)扩展，新增节点：<recordPlan>(计划录像互斥能力)。
18. 进入区域侦测能力集(RegionEntrance)、离开区域侦测能力集(RegionExiting)、徘徊侦测能力集(Loitering)、人员聚集侦测能力集(Group)、快速运动侦测能力集(RapidMove)、停车侦测能力集(Parking)、物品遗留侦测能力集(UnattendedBaggage)、物品拿取侦测能力集(AttendedBaggageCap)，<mutexAbility>(互斥能力)新增互斥类型：recordPlan(计划录像)。
V5.0.3.15
build20150129 		事件取证分析仪 V4.1.0 1. NET_DVR_TFS_ALARM(违章取证报警信息)使用22个保留字节新增参数：byVehicleAttribute(车辆属性)、byPilotSafebelt(主驾驶员是否系安全带)、byCopilotSafebelt(副驾驶员是否系安全带)、byPilotSunVisor(主驾驶是否打开遮阳板)、byCopilotSunVisor(副驾驶是否打开遮阳板)、byPilotCall(主驾驶员是否在打电话)。
2. NET_DVR_VEHICLE_INFO(车辆信息参数)使用3个保留字节新增参数：byVehicleModel(车辆子品牌年款)、wVehicleLogoRecog(车辆主品牌)。
3. TRAFFIC_AID_TYPE(交通事件类型)新增枚举类型：VEHICLE_OCCUPANCY_NONVEHICLE(机动车占用非机动车位)、GASSER(加塞)。
V5.0.3.15
build20150129 		智能交通摄像机 V4.0.0 1. 新增字符叠加参数配置扩展(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_ITS_GET_OVERLAP_CFG_V50、NET_ITS_SET_OVERLAP_CFG_V50。
2. 新增上传违法字典文件功能(对应接口：NET_DVR_UploadFile_V40)
上传文件类型：UPLOAD_VIOLATION_FILE。
3. 新增雷达报警上传(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
COMM_ITS_RADARINFO。
4. 触发参数配置扩展：
1) ITC_TRIGGERMODE_TYPE(触发模式)新增枚举类型：ITC_POST_HVT_TYPE_V50(混行卡口视频触发模式)、ITC_POST_IMT_TYPE(智慧监控配置)。
2) NET_ITC_TRIGGER_PARAM_UNION(触发参数联合体)中新增结构体参数：NET_ITC_POST_HVT_PARAM_V50(混行卡口视频触发)、NET_ITC_POST_IMT_PARAM(智慧监控配置)。
3) ITC_LANE_USEAGE_TYPE(车道用途)新增枚举类型：ITC_LANE_BAN_LEFT(禁左车道)、ITC_LANE_BAN_RIGHT(禁右车道)。
4) ITC_LANE_DIRECTION_TYPE(车道方向)新增枚举类型：ITC_LANE_FORWARD(正向行驶)、ITC_LANE_BACKWARD(背向行驶)、ITC_LANE_BOTHWAY(双向行驶)、ITC_LANE_STRAIGHT_WAIT_RIGHT(直行待行+右转)。
5) NET_ITC_LANE_LOGIC_PARAM(车道属性)使用1个保留字节新增参数：byCarDriveDirect(车辆行驶方向)。
6) NET_ITC_LANE_PARAM(车道参数)、NET_ITC_SINGLE_IOSPEED_PARAM(单组IO测速参数)分别使用4个保留字节新增参数：byRelaLaneDirectionType(关联车道方向类型)、byLowSpeedLimit(小车限低速值)、byBigCarLowSpeedLimit(大车限低速值)、byLowSpeedCapEn(是否启用低速抓拍)。
7) NET_ITC_VTLANE_PARAM(虚拟线圈触发模式车道参数)、NET_ITC_EPOLICE_LANE_PARAM(电警RS485车检器触发模式车道参数)、NET_ITC_LANE_MPR_PARAM(多帧检测模式车道参数)、NET_ITC_LANE_PRS_PARAM(视频检测触发模式车道参数)分别使用1个保留字节新增参数：byRelaLaneDirectionType(关联车道方向类型)。
8) NET_ITC_POST_RS485_PARAM(卡口RS485车检器触发参数)中的byTriggerSpareMode(触发备用模式)新增取值：2- 卡口混合车道模式。
5. NET_ITS_IMGMERGE_CFG(图片合成配置)中dwTwoMergeType(两张图合成方式)、dwThreeMergeType(三张图合成方式)新增合成编码取值：203~210、313~320。
6. 车牌识别上传信息扩展：
1) NET_DVR_VEHICLE_INFO(车辆信息)中byIllegalType(违法类型)新增取值：18-禁右、19-禁左、20-压黄线、21-未系安全带。
2) NET_ITS_PICTURE_INFO(抓拍图片信息)使用1个保留字节新增参数：byPicRecogMode(图片背向识别)。
3) NET_ITS_PLATE_RESULT(交通识别结果)使用5个保留字节新增参数：byRelaLaneDirectionType(关联车道方向类型)、dwCustomIllegalType(自定义违章类型)。
4) NET_DVR_PLATE_RESULT(交通识别结果老报警信息类型)使用1个保留字节新增参数：byRelaLaneDirectionType(关联车道方向类型)。
7. NET_ITC_VIOLATION_DETECT_PARAM(违规检测参数)使用2个保留字节新增参数：byTurnAroundEnable(违章掉头使能)、byThirdPlateRecogTime(第三张牌识时间)。
8. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)使用64个保留字节新增参数：struSnapCCD(抓拍机CCD参数)。
9. NET_DVR_SETUPALARM_PARAM(报警布防参数)中byLevel(布防优先级)增加支持三级布防。
10. NET_DVR_SNAP_ABILITY(智能交通摄像机能力集参数)使用1个保留字节新增参数：bySupportWhiteBalance(白平衡能力)。
11. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能交通设备能力(ITDeviceAbility)扩展，<ITCAbility>中<imageOverlayString>新增子节点<itemTypeCustomLength>(自定义类型长度)。
V5.0.3.15
build20150129 		DS-19D系列动环监控主机 V3.1 1. RS485外接设备状态扩展：
1) NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE(外接设备类型)中byDevType新增取值：8-水位传感器、9-扬尘噪声传感器、10-环境采集仪。
2) NET_DVR_EXTERNAL_DEVICE_STATE_UNION(外接设备状态联合体)新增结构体参数：NET_DVR_ALARMHOST_WATERLEVEL_SENSOR(水位传感器)、NET_DVR_ALARMHOST_DUSTNOISE_SENSOR(扬尘噪声传感器)、NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER(环境采集仪)。
2. 新增报警日志次类型：MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM、MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM_RESTORE、MINOR_ALARMHOST_DUST_NOISE_ALARM、MINOR_ALARMHOST_DUST_NOISE_ALARM_RESTORE、MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM、MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM_RESTORE。
V5.0.3.15
build20150129 		楼宇可视对讲 V1.0.1 1.新增门口机注册信息查询功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_VIS_REGISTER_INFO
2. NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG(管理机操作时间配置)使用4个保留字节新增参数：dwTalkTime(最大通话时间)。
3. NET_DVR_VIDEOINTERCOM_STREAM(流通道参数)使用1个保留字节新增参数：bySourceType(视频源类型)。
4. NET_DVR_FTPCFG_V40(FTP配置)扩展：
1) byTopDirMode(一级目录)新增取值：0xb-期号，bySubDirMode(二级目录)新增取值：0xc-设备编号。
2) NET_DVR_PICTURE_NAME_EX(图片命名规则)中byItemOrder新增元素取值：PICNAME_ITEM_PERIOD_NO、PICNAME_ITEM_DEV_INDEX。
5. 可视对讲能力集(IP_VIEW_DEV_ABILITY)新增节点：<supportVisRegisterInfo>(是否支持获取注册信息)。
6. 设备网络应用参数能力(DEVICE_NETAPP_ABILITY)扩展，<FTP>中<topDirMode>(一级目录类型)新增取值：periodNo(期号)，<subDirMode>(二级目录类型)新增取值：devIndex(设备编号)，<supportPicNameRule>(支持图片命令规则)新增取值：periodNo(期号)、devIndex(设备编号)。
V5.0.3.15
build20150129 		庭审主机 V3.0.1 1. 新增马赛克区域配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_AREA_MASK_CFG、NET_DVR_SET_AREA_MASK_CFG。
2. 新增音频变音配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_AUDIO_DIACRITICAL_CFG、NET_DVR_SET_AUDIO_DIACRITICAL_CFG。
3. 新增WIFI DHCP地址范围配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_WIFI_DHCP_ADDR_CFG、NET_DVR_SET_WIFI_DHCP_ADDR_CFG。
4. 新增多码流关联通道配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_MULTISTREAM_RELATION_CHAN_CFG、NET_DVR_SET_MULTISTREAM_RELATION_CHAN_CFG。
5. 新增输入通道配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_INPUT_CHAN_CFG、NET_DVR_SET_INPUT_CHAN_CFG。
6. 新增WIFI热点连接设备信息查询功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_WIFI_CLIENT_LIST_INFO。
7. 新增审讯中刻录控制(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_INQUEST_PAUSE_CDW、NET_DVR_INQUEST_RESUME_CDW。
8. 新增远程开机功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_REMOTECONTROL_POWER_ON。
9. NET_DVR_DEVICECFG_V40(设备参数)使用1个保留字节新增参数：byEnableRemotePowerOn(是否启用远程开机功能)。
10. 新增错误码：830~833。
11. 设备通用能力集(DEVICE_ABILITY_INFO)，其中设备通道输入能力(ChannelInputAbility)扩展，新增节点：<AreaMask>(区域马赛克能力)、<AudioDiacritical>(音频变音配置能力)。
12. 设备无线网络能力集(DEVICE_NETWORK_ABILITY)扩展，新增节点：<WifiDHCPAddr>(wifi模式下DHCP范围配置)、<WifiClientListInfo>(Wifi热点连接的设备信息查询能力)。
13. 设备通用能力集(DEVICE_ABILITY_INFO)，其中庭审主机能力(TrialHostAbility)扩展，<AudioInChanList>(语音输入通道)和<AudioOutChanList>(语音输出通道)中分别新增节点：<MixAudio>(混音配置)、<VolumeChange>(音量调节)。
V5.0.3.15
build20150129 		LCD拼接屏 V1.3 1. 新增屏幕报警上传类型(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
COMM_ALARM_LCD。
2. NET_DVR_SCREEN_CONTROL_V41(屏幕控制)扩展：
1) dwCommand(控制方法)新增取值：13-区域放大还原。
2) NET_DVR_SCREEN_CONTROL_PARAM(屏幕控制参数联合体)新增结构体参数：NET_DVR_AREA_ZOOM_CFG(区域放大还原参数)。
3. NET_DVR_SCREEN_WORK_STATE(屏幕工作状态)使用1个保留字节新增参数：byFanExceptionStatus(风扇异常状态)。
4. INPUT_INTERFACE_TYPE(输入源类型)新增枚举类型：INTERFACE_SDI、INTERFACE_DP、INTERFACE_HDBASET。
5. NET_DVR_EXTERNAL_MATRIX_CFG(矩阵信息)中byMatrixProtocol(矩阵所用协议)新增取值：5- 自定义。
6. LCD拼接屏能力集(LCD_SCREEN_ABILITY)扩展：
1) 新增节点：<AreaZoom>(是否支持屏幕区域放大)、<LCDAlarm>(屏幕报警上传能力)。
2) <ScreenWorkStatus>中新增子节点：<fanExceptionStatus>(风扇异常状态)。
V5.0.3.10
build20150112 		iDS-TP6200-HP V4.0.2 1. 新增车辆二次识别任务提交功能(对应接口：NET_DVR_SetDeviceConfig)：
命令：NET_DVR_SET_VEHICLE_RECOG_TASK。
2. 新增车辆二次识别任务获取功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_VEHICLE_RECOG_TASK。
3. 新增车辆二次识别数据上传信息类型(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
COMM_VEHICLE_RECOG_RESULT。
4. 新增车辆二次识别检测能力集(对应接口：NET_DVR_GetDeviceAbility，对应能力集类型：DEVICE_ABILITY_INFO)
VehicleRecogAbility。
5. NET_DVR_SETUPALARM_PARAM(报警布防参数)使用2个保留字节新增参数：wTaskNo(任务处理号)。
6. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)新增节点：<VehicleRecogAbility>(支持车辆二次检测能力)。
V5.0.2.15
build20141212 		火点检测
DS-2TD4035D-25、
DS-2TD4035D-50 		1. 新增火点检测配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FIREDETECTION、NET_DVR_SET_FIREDETECTION。
2. 新增火点检测联动配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
命令：NET_DVR_GET_FIREDETECTION_TRIGGER、NET_DVR_SET_FIREDETECTION_TRIGGER。
3. 新增火点检测报警功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31)：
COMM_FIREDETECTION_ALARM。
4. 新增设备能力集(对应接口：NET_DVR_GetSTDAbility)：
能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES(热成像能力)、
NET_DVR_GET_FIREDETECTION_CAPABILITIES(火点检测配置能力)。
5. 新增日志类型(对应接口：NET_DVR_FindDVRLog_V30)：
报警日志次类型：0x48、0x49。
V5.0.2.15
build20141212 		录播主机 V1.1.0 1. 新增录播主机相关参数配置(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_LOGO_OVERLAYCFG、NET_DVR_SET_LOGO_OVERLAYCFG、
NET_DVR_GET_RECORDING_AUTO_TRACK_CFG、NET_DVR_SET_RECORDING_AUTO_TRACK_CFG、
NET_DVR_GET_RECORDING_PUBLISH_CFG、NET_DVR_SET_RECORDING_PUBLISH_CFG、
NET_DVR_GET_RECORDING_END_TIME、
NET_DVR_GET_COURSE_INDEX_CFG、NET_DVR_SET_COURSE_INDEX_CFG、
NET_DVR_GET_PPT_CHANNEL、
NET_DVR_GET_PPT_DETECT_CFG、NET_DVR_SET_PPT_DETECT_CFG、
NET_DVR_GET_RECORDINGHOST_CFG、NET_DVR_SET_RECORDINGHOST_CFG、
NET_DVR_GET_BACKUP_RECORD_CFG、NET_DVR_SET_BACKUP_RECORD_CFG、
NET_DVR_GET_MIX_AUDIOIN_CFG、NET_DVR_SET_MIX_AUDIOIN_CFG、
NET_DVR_GET_MIX_AUDIOOUT_CFG、NET_DVR_SET_MIX_AUDIOOUT_CFG、
NET_DVR_GET_AUDIOIN_VOLUME_CFG、NET_DVR_SET_AUDIOIN_VOLUME_CFG、
NET_DVR_GET_AUDIOOUT_VOLUME_CFG、NET_DVR_SET_AUDIOOUT_VOLUME_CFG、
NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG、NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG、
NET_DVR_GET_MEMU_OUTPUT_MODE、NET_DVR_SET_MEMU_OUTPUT_MODE。
2. 新增录播主机课表配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_CURRICULUM_CFG、NET_DVR_SET_CURRICULUM_CFG。
3. 新增一键发布录像功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_RECORDING_PUBLISH。
4. 新增录播主机能力集(对应接口：NET_DVR_GetDeviceAbility，对应能力集类型：DEVICE_ABILITY_INFO)
RecordingHostAbility。
5. NET_DVR_DEVICEINFO_V30(设备参数)使用2个字节新增参数：byMirrorChanNum(镜像通道个数)、wStartMirrorChanNo(起始镜像通道号)。
6. NET_DVR_DIRECT_CONNECT_CHAN_INFO(IP通道信息)使用3个字节新增参数：byPriority(优先级)、wDirectLastTime(导播持续时间)。
7. NET_DVR_DISP_LOGOCFG(上传的LOGO参数)使用4个字节新增参数：wPicWidth(图片宽)、wPicHeight(图片高)。
8. NET_DVR_BACKUP_TIME_PARAM(按时间备份参数)使用5个字节新增参数：byUseBackCfgParam (启用备份配置参数)、dwStreamType (备份码流类型)。
9. NET_DVR_VOD_PARA(录像回放参数)、NET_DVR_PLAYCOND(回放下载条件)、NET_DVR_FILECOND_V40(文件查找条件)、NET_DVR_FINDDATA_V40(文件查找结果信息)分别使用1个字节新增参数：byStreamType(码流类型)。
10. NET_DVR_FILECOND_V40(文件查找条件)的dwUseCardNo新增类型：5-按课程名称查找。
11. NET_DVR_ACCESS_CAMERA_INFO(前端相机信息)的byInterfaceType(接口类型)新增类型：6-自动。
12. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)扩展，<HardwareCapability>新增节点：<MirrorChanNum>(镜像通道个数)。
13. 设备通用能力集(DEVICE_ABILITY_INFO)，其中录像相关能力(RecordAbility)扩展，新增节点：<CourseNameSearch>(是否支持按课程查找)。
V5.0.2.15
build20141212 		IPC V5.2.6
IPD V5.2.8 		1. 新增监测点信息配置(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_MONITOR_LOCATION_INFO、NET_DVR_SET_MONITOR_LOCATION_INFO。
2. 新增抓拍图片参数扩展配置(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_SNAPINFO_CFG_V40、NET_DVR_SET_SNAPINFO_CFG_V40。
3. 新增测试功能(对应接口：NET_DVR_StartRemoteConfig)：
命令：NET_DVR_CLOUDSTORAGE_SERVER_TEST(云存储服务器测试)、NET_DVR_PHONE_NUM_TEST(电话号码测试)。
4. 新增获取无线布防状态功能(对应接口：NET_DVR_GetDeviceStatus)：
命令：NET_DVR_GET_REMOTECONTROL_STATUS。
5. 新增获取轻存储能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_LITESTORAGE_CAPABILITIES。
6. 新增轻存储配置功能(对应接口：NET_DVR_GetSTDConfig和NET_DVR_SetSTDConfig)：
NET_DVR_GET_LITESTORAGE、NET_DVR_SET_LITESTORAGE。
7. 新增获取车俩检测标定能力集(对应接口：NET_DVR_GetSTDAbility)：
命令：NET_DVR_GET_VEHICLE_CAPABILITIES。
8. 新增获取车辆检测标定功能(对应接口：NET_DVR_GetSTDConfig)：
NET_DVR_GET_VEHICLE_CALIBRATION。
9. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)扩展：
1) byAudioEncType(音频编码类型)新增取值：8- PCM。
2) byEnableSvc(SVC功能)新增取值：2-自动启用SVC功能。
3) byAudioBitRate(音频码率)新增取值：7-40Kbps、8-48Kbps、9-56Kbps、10-80Kbps、11-96Kbps、12-112Kbps、13-144Kbps、14-160Kbps。
4) byAudioSamplingRate(音频采样率)新增取值：3-48kHZ、4- 44.1kHZ、5-8kHZ。
10. NET_DVR_COMPRESSION_AUDIO(语音对讲参数)的byAudioEncType(音频编码类型)新增取值：8- PCM。
11. 车牌识别扩展：
1) NET_ITS_PICTURE_INFO(抓拍图片信息)使用1个保留字节新增参数：byCloseUpType(特写图类型)，参数byType(数据类型)新增取值：8- 非机动车、9- 行人。
2) NET_ITS_PLATE_RESULT(识别结果)的byDetectType(检测方式)新增取值：0-车辆检测(IPC内部的多帧识别)、5-混行检测。
3) ITC_TRIGGERMODE_TYPE(触发模式)新增枚举类型：IPC_POST_HVT_TYPE(IPC支持的HVT)。
4) NET_ITC_TRIGGER_PARAM_UNION(触发参数联合体)新增结构体参数：NET_IPC_POST_HVT_PARAM(IPC混行卡口参数)。
5) NET_ITC_LANE_MPR_PARAM(多帧检测模式车道参数)使用1个保留字节新增参数：byCarDriveDirect(车辆行驶方向)。
6) NET_DVR_GUARD_COND(车牌侦测计划配置条件)、NET_ITS_OVERLAPCFG_COND(字符叠加配置条件)分别使用1个保留字节新增参数：byRelateType(关联类型)。
7) NET_DVR_FIND_PICTURE_PARAM(图片查找条件)使用1个保留字节新增参数：bySubHvtType(混行检测查找子类型)，byFileType(查找类型)新增取值：0x1c- 混行检测。
12. NET_DVR_CAMERAPARAMCFG_EX(前端参数配置)使用1个保留字节新增参数：byLensDistortionCorrection(镜头畸变校正)，byCaptureModeN、byCaptureModeP(视频输入模式)新增取值：91- 4000*3000@20fps。
13. NET_DVR_SERVER_TEST_PARA(服务器测试参数)的unionServerPara新增结构体参数：struCloudStoragePara(云存储服务器测试参数)、struPhoneNumPara(电话号码测试参数)。
14. 客流量统计功能扩展：
1) NET_DVR_PDC_RULE_CFG_V42(客流量规则配置)使用17个保留字节新增参数：byCurDetectType(当前检测区域类型)、struLine(检测线)。
2) NET_DVR_RESET_COUNTER_CFG(统计数据清零参数)使用1个保留字节新增参数：byMode(生效模式)。
3) CALIBRATE_TYPE(标定类型)新增枚举类型：PDC_LINE_CALIBRATE(PDC线标定)。
4) NET_DVR_CALIBRATION_PRARM_UNION(标定参数联合体)新增结构体参数：NET_DVR_PDC_LINE_CALIBRATION(PDC线标定参数)。
15. 智能异常行为识别功能扩展：
1) VCA_ABILITY_TYPE_EX(异常行为识别能力类型)新增枚举类型：EVENT_COMBINED_ABILITY(组合规则事件)。
2) VCA_RULE_EVENT_TYPE_EX(异常行为识别事件类型)新增枚举类型：ENUM_VCA_EVENT_COMBINED_RULE(组合规则事件)。
3) NET_VCA_EVENT_UNION(警戒规则参数联合体)新增结构体参数：NET_VCA_COMBINED_RULE(组合规则参数)。
4) NET_VCA_TRAVERSE_PLANE(穿越警戒面参数)、NET_VCA_AREA(进入/离开区域参数)、NET_VCA_INTRUSION(入侵参数)、NET_VCA_RUN(快速移动参数)分别使用1个保留字节新增参数：byDetectionTarget(检测目标类型)。
16. NET_DVR_SECURITY_CFG(安全认证配置)使用2个保留字节新增参数：byCommuMode(私有协议通信模式)、byIllegalLoginLock(开启违法登录锁定)，对应安全认证配置能力集(SecurityAbility)新增节点：<security>、<illegalLoginLock>。
17. 设备通用能力集(DEVICE_ABILITY_INFO)，其中智能通道分析能力(VcaChanAbility)扩展：
1) <Behavior>(异常行为识别)，<EventType>(事件类型)新增子节点<CombinedRule>(组合规则)，<BehaviorRule>(异常行为识别规则)中<eventType>(事件类型)新增取值：combinedRule(组合规则)。
2) <PDC>(客流量统计)，新增节点：<resetCounterMode>(重置统计模式)，<PDCRule>中新增子节点<Line>(检测线)，<Calibration>中新增子节点<calibLine>(支持标定线)。
3) <TraversePlane>(穿越警戒面)、<EnterArea>(进入区域)、<ExitArea>(离开区域)、<Intrusion>(入侵参数)、<Run>(快速移动参数)新增子节点：<detectionTarget>(检测目标类型)。
18. JPEG抓图能力集(DEVICE_JPEG_CAP_ABILITY)扩展，<FindPicInfo>(查找图片信息)新增节点：<subHvtType>(混行检测子类型)，<supportFileType>(图片类型)新增取值：HvtVehicleDetection(混行检测)。
19. 设备前端参数能力(IPC_FRONT_PARAMETER_V20)扩展：
1) 新增节点：<LensDistortionCorrection>(镜头畸变校正能力)。
2) <WDR>(宽动态)中<mutexAbility >(互斥能力)新增取值：LensDistortionCorrection,52-2048*1536@50fps,53-2048*1536@60fps。
3) <captureModePWithIndex>、<captureModeNWithIndex>新增取值：91-4000*3000@20fps。
20. 设备通用能力集(DEVICE_ABILITY_INFO)，其中报警事件处理能力(EventAbility)扩展：
1) 新增节点：<HVTVehicleDetection>(HVT混行卡口能力)、<CurVehicleDetection>(获取当前触发模式)。
2) <TraversingVirtualPlane>(越界侦测)、<FieldDetection>(区域入侵)中<mutexAbility>(互斥能力)新增取值：videoFrameRate50,videoFrameRate60。
3) <VehicleDetection>(车辆侦测能力)，新增节点：<mutexAbility>(互斥能力)，<triggerMode>和<triggerType>新增取值：ipcHVT(IPC混行卡口)，<LaneParam>中新增子节点：<carDriveDirection>(车辆行驶方向)，<OverlapCond>中新增子节点：<relateType>(关联类型)。
21. 设备网络应用参数能力集(NetAppAbility)扩展，<CloudStorage>(云存储能力)新增子节点：<Test>(测试能力)。
22. 设备无线网络能力集(NetworkSetting)扩展，新增节点：<MessageConfig>(短信相关参数配置)、<SendSms>(短信发送能力)，<WirelessSetting>新增子节点：<NotSupportAutoDNS>(DNS自动能力)。
23. 设备软硬件能力集(BasicCapability)，<NeedReboot>(是否需要重启)新增节点：<SwitchVehicleDetection>(车辆检测模式切换)、<SwitchHVTVehicleDetection>(混行车辆检测切换)。
24. 设备所有编码能力集(AudioVideoCompressInfo)扩展：
1) <AudioCompressInfo>新增子节点：<noiseFilterSupportSamplingRate>(环境噪声过滤支持的采样率)。
2) <MainAudioEncodeType>、<SubAudioEncodeType>、<EventAudioEncodeType>、<Stream3AudioEncodeType>新增子节点：<MP2L2SamplingRate>、<MP2L2SamplingRate16kHZ>、<MP2L2SamplingRate32kHZ>、<MP2L2SamplingRate44.1kHZ>、<MP2L2SamplingRate48kHZ>、<PCMSamplingRate>。
3) <MainChannel>、<SubChannelList>、<EventChannel>、<Stream3>新增子节点：<VideoFrameRate50>(高帧率50)、<VideoFrameRate60>(高帧率60)、<VideoFrameRate100>(高帧率100)、<VideoFrameRate120>(高帧率120)，<SvcFunEnable>(SVC使能)新增取值：auto。
25. 设备通用能力集(DEVICE_ABILITY_INFO)，其中PTZ能力(PTZAbility)扩展，<Patrol>中<dwellTime >和<speed>新增字段：default(默认值)，<PTZLOCK>中<supportFunction >新增取值：hvtVehicleDetection(HVT混行卡口侦测)。
26. 新增错误码：175、176、177。
V5.0.2.15
build20141212 		DS_96XXN_FX
DS_86XXN_FX
V3.2.0 		1. 按事件查找录像文件接口扩展：
NET_DVR_FindFileByEvent_V40、
NET_DVR_FindNextEvent_V40。
2. 图片查找接口扩展：
NET_DVR_FindNextPicture_V40。
3. 新增智能图片查找接口：
NET_DVR_SmartSearchPicture、
NET_DVR_FindNextSmartPicture、
NET_DVR_CloseSmartSearchPicture。
4. 新增简易智能假日计划配置功能(对应接口：NET_DVR_GetDeviceConfig和NET_DVR_SetDeviceConfig)：
命令：NET_DVR_GET_SMD_HOLIDAY_HANDLE、NET_DVR_SET_SMD_HOLIDAY_HANDLE。
5. 新增获取所有被锁定信息功能(对应接口：NET_DVR_StartRemoteConfig和NET_DVR_GetNextRemoteConfig)：
命令：NET_DVR_GET_LOCKED_INFO_LIST。
6. 新增用户解锁功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_UNLOCK_USER。
7. 新增图片建模配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_PIC_MODEL_CFG、NET_DVR_SET_PIC_MODEL_CFG。
8. 智能搜索扩展：
1) NET_DVR_SMART_SEARCH_PARAM(智能搜索条件)的bySearchCondType(智能查找类型)新增取值：3-人脸侦测。
2) NET_DVR_AREA_SMARTSEARCH_COND_UNION(智能查找条件联合体)新增结构体参数：NET_DVR_FACEDETECTION_SEARCHCOND。
3) NET_DVR_TRAVERSE_PLANE_SEARCHCOND(越界侦测录像查找条件)和NET_DVR_INTRUSION_SEARCHCOND(区域入侵录像查找条件)分别使用37个保留字节新增参数：byAdvanceType(组合方式)、uAdvanceCond(组合属性联合体)。
9. NET_DVR_DISK_RAID_INFO(磁盘Raid信息)使用1个保留字节新增参数：bySleepStatus(休眠状态)。
10. NET_DVR_CORRIDOR_MODE(旋转功能配置)使用1个保留字节新增参数：byMirrorMode(镜像方式)。
11. NET_DVR_GUARD_CFG(车牌侦测计划配置)使用424个保留字节新增参数：dwMaxRelRecordChanNum(最大支持触发的录像通道数)、dwRelRecordChanNum(报警触发的录像通道数实际个数)、dwRelRecordChan[MAX_CHANNUM_V30](报警触发的录像通道)、struHolidayTime[MAX_TIMESEGMENT_V30](假日布防时间)。
12. NET_DVR_PHY_DISK_INFO(物理磁盘信息)中byStatus(硬盘状态)新增取值：9-休眠。
13. NET_DVR_CAPTURE_DAY(全天抓图计划)和NET_DVR_CAPTURE_SCHED(时间段抓图布防计划)中byCaptureType(抓图类型)新增取值：8-全部事件。
V5.0.2.15
build20141212 		DS-19D2000动环主机V1.0 1. 新增报警中心网络参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ALARMCENTER_NETCFG、NET_DVR_SET_ALARMCENTER_NETCFG。
2. 新增获取报警相关通道参数能力功能(对应接口：NET_DVR_GetDVRConfig)：
命令：NET_DVR_GET_ALARM_CHAN_ABLITITY。
3. 新增报警主机日志类型(对应接口：NET_DVR_FindAlarmHostLog)：
1)异常日志次类型：0x27~0x2b；
2)操作日志次类型：0x4c；
3)事件日志次类型：0x04、0x05。
4. 设备通用能力集(DEVICE_ABILITY_INFO)，其中报警主机XML能力AlarmHostAbility扩展：
1) 新增节点：<subSystemPermission>(子系统布防能力)、<DeviceSelfCheckState>(设备自检状态能力)、<IsSupportAlarmChanAbility>(获取报警输入通道能力)。
2) <TriggerConfig>中新增子节点：<workMode>(工作模式)、<alarmOutMode>(输出类型)、<timeOn>(开时间)、<timeOff >(关时间)。
3) <AlarmhostRS485Config>中新增子节点：<channel>(通道号)。
4) <RS485SlotConfig>中新增子节点：<channel>(通道号)、<slotChan>(槽位号)。
5) <SensorConfig>和<SensorJointConfig>中分别新增子节点：<chan>(通道号)。
6) <AlarmPointConfig>中新增子节点：<chanType>(接入类型)、<chanNo>(通道号)、<subChanNo>(槽位号)、<variableNo>(变量编号)。
5. NET_DVR_NETCFG_MULTI(多网卡网络配置)使用2个保留字节新增参数：wDvrPort2(通讯端口2)。
V5.0.3.2
build20141201
linux32&linux64 		Linux32位、Linux 64位基线项目 1. NET_DVR_STD_CONFIG(配置输入输出参数)使用9个保留字节新增参数：lpXmlBuffer(xml格式数据内容)、dwXmlSize(lpXmlBuffer指向的内存大小)、byDataType(输入/输出参数类型)。
2. NET_DVR_COMPRESSION_INFO_V30(码流压缩参数)中byResolution(分辨率)新增取值：72-160*128，73-324*240，74-324*256，75-336*256，76-640*512，77-2720*2048，78-384*256，79-384*216，80-320*256，81-320*180，82-320*192，83-512*384，84-325*256，85-256*192。
V5.0.2.10
build20141113 		DS-6400HD-T V3.0.0 1. 新增解码器智能报警配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_DEC_VCA_CFG、NET_DVR_SET_DEC_VCA_CFG。
2. 新增智能解码报警信息上传功能(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
类型：COMM_ALARM_DEC_VCA。
3. NET_DVR_DEV_WORK_MODE(设备工作模式)使用1个保留字节新增参数：byEnableVcaDec (是否启用智能解码)。
4. 设备软硬件能力集(DEVICE_SOFTHARDWARE_ABILITY)中节点<NeedReboot>(是否需要重启)新增子节点：<VcaDecModeChange>(开启智能解码模式是否需要重启)。
5. 解码器能力集(DECODER_ABILITY)新增节点：<VcaDec>(智能解码能力)。
V5.0.2.10
build20141113 		楼宇可视对讲 V1.0.0 1. 新增设备编号配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG、NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG。
2. 新增权限密码配置功能(对应接口：NET_DVR_SetDVRConfig)：
命令：NET_DVR_SET_PRIVILEGE_PASSWORD。
3. 新增操作时间配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_OPERATION_TIME_CFG、NET_DVR_SET_OPERATION_TIME_CFG。
4. 新增流通道配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_VIDEOINTERCOM_STREAM、NET_DVR_SET_VIDEOINTERCOM_STREAM。
5. 新增IO输入参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_VIDEO_INTERCOM_IOIN_CFG、NET_DVR_SET_VIDEO_INTERCOM_IOIN_CFG。
6. 新增IO输出参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_VIDEO_INTERCOM_IOOUT_CFG、NET_DVR_SET_VIDEO_INTERCOM_IOOUT_CFG。
7. 新增梯控器参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_ELEVATORCONTROL_CFG、NET_DVR_SET_ELEVATORCONTROL_CFG。
8. 新增宽动态参数配置功能(对应接口：NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig)：
命令：NET_DVR_GET_WDR_CFG、NET_DVR_SET_WDR_CFG。
9. 新增远程开锁功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_REMOTECONTROL_GATEWAY。
10. 新增公告数据下发功能(对应接口：NET_DVR_RemoteControl)：
命令：NET_DVR_REMOTECONTROL_NOTICE_DATA。
11. 新增可视对讲事件记录上传信息类型(对应接口：NET_DVR_StartListen_V30)：
COMM_UPLOAD_VIDEO_INTERCOM_EVENT。
12. 新增可视对讲报警信息类型(对应接口：NET_DVR_StartListen_V30)：
COMM_ALARM_VIDEO_INTERCOM。
13. NET_DVR_FTPCFG_V40(FTP配置)扩展，使用49个保留字节新增参数：byFTPPicType(FTP上传图片类型)、struPicNameRule(图片命名规则)，byTopDirMode(一级目录)新增取值：0xa-栋号单元号，bySubDirMode(二级目录)新增取值：0xa-栋号单元号、0xb-门口机编号。
14. NET_DVR_ALARMIN_PARAM(防区参数)使用5个保留字节新增参数：wInDelay(进入延时)、wOutDelay(退出延时)、byAlarmType(报警器类型)。
15. NET_DVR_ALARM_RS485CFG(RS485参数)中byWorkMode(工作模式)新增取值：2-梯控、3-读卡器、0xfe-自定义、0xff-禁用。
16. 可视对讲能力集(IP_VIEW_DEV_ABILITY)新增节点：<VideoIntercom>(楼宇可视对讲能力)。
17. RS232和RS485串口能力(DEVICE_SERIAL_ABILITY)扩展，<RS485>中<workMode>(工作模式)新增取值：stairsControl,cardReader,disabled,custom。
18. 设备网络应用参数能力(DEVICE_NETAPP_ABILITY)扩展，<FTP>中<topDirMode>(一级目录类型)新增取值：buildingOrUnitNum(栋号单元号)，<subDirMode>(二级目录类型)新增取值：buildingOrUnitNum(栋号单元号)、outDoorNo(门口机编号)。
19. 设备通用能力集(DEVICE_ABILITY_INFO)，其中设备通道输入能力(ChannelInputAbility)扩展，新增节点：<WDR>(宽动态配置能力)。
20. 设备通用能力集(DEVICE_ABILITY_INFO)，其中日志搜索能力(SearchLogAbility)扩展，<MinorInformationType>(附加信息次类型)中<minorType>新增取值：unlockRecord,VISAlarm,talkRecord。
21. 新增日志类型(对应接口：NET_DVR_FindDVRLog_V30)：
附加信息日志次类型：0xc3、0xc4、0xc5。
22. 新增错误号：1220。
23. 新增设备类型：DS_KH8302_A、DS_KD8101_2、DS_KM8301。
V5.0.2.10
build20141113 		DS-TCP125、
DS-TCP325
V5.1.2 		1. 新增压线报警信息类型(对应接口：NET_DVR_SetDVRMessageCallBack_V31和NET_DVR_StartListen_V30)：
命令：COMM_CROSSLINE_ALARM。
2. 新增获取停车场信号灯状态功能(对应接口：NET_DVR_GetDeviceConfig)：
命令：NET_DVR_GET_PARKLAMP_STATE。
3. NET_DVR_VEHICLE_INFO(车辆信息)使用1个保留字节新增参数：byVehicleSubLogoRecog(车辆子品牌)。
win32：
V5.0.1.2 build20140915

win64：
V5.0.2.2 build20141023 		1.新增设备在线状态自动巡检功能(对应接口：NET_DVR_GetSDKLocalCfg和NET_DVR_SetSDKLocalCfg)：
配置类型：NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV。
2.新增设备在线状态手动检测功能(对应接口：NET_DVR_RemoteControl)：
控制命令：NET_DVR_CHECK_USER_STATUS。
3.新增设备状态巡检功能：
NET_DVR_StartGetDevState
NET_DVR_StopGetDevState。
4.新增错误：107~113、121~128、136~142。


注意事项

1. 优先使用带“V30”、“V40”、“V41”、“V50”后缀的接口与结构

“V30”、“V40”、“V41”、“V50”后缀表示版本，数字越大，版本越新，新版本对函数和结构做了较多变更和改善。在执行同一功能时，新版本兼容老版本，推荐使用最新版本的函数或者结构体。

2. 更新SDK，所有库文件都需要更新

V5.0及以上版本SDK，针对产品应用业务进行细化，对之前版本的SDK的功能模块进行组件化，其中外部接口（HCNetSDK.dll）仍然保持和设备网络SDK V4.x版本保存一致(向下兼容)，其他单独的业务功能（预览、回放等）可以加载单独的模块组件，多个业务功能也可以组合使用。更新SDK时，HCNetSDK.dll、HCCore.dll、ssleay32.dll、libeay32.dll以及HCNetSDKCom文件夹下的功能组件库文件都需要更新加载，且HCNetSDKCom文件夹名不能修改。

如果出现SSL库或者组件库加载失败的情况，可以调用接口设置下路径：1）调用NET_DVR_SetSDKInitCfg(enumType类型赋值为2，lpInBuff对应结构体NET_DVR_LOCAL_SDK_PATH)设置组件库所在路径（HCNetSDKCom文件夹所在的路径）；2）调用NET_DVR_SetSDKInitCfg(enumType类型赋值为3，lpInBuff对应libeay32.dll/libcrypto.so所在的路径字符串)、NET_DVR_SetSDKInitCfg(enumType类型赋值为4，lpInBuff对应ssleay32.dll/libssl.so所在的路径字符串)指定这两个库文件加载路径。

3. 需重启操作

通过NET_DVR_GetDeviceAbility(命令: DEVICE_SOFTHARDWARE_ABILITY)获取设备软硬件能力集，对应能力集BasicCapability的XML中NeedReboot字段相关参数可以判断对应操作是否需要重启，需要重启的操作之后需要自行调用NET_DVR_RebootDVR接口进行重启。


常见问题

  • 常见问题
    • 一、通用问题
      • 1.1 SDK开发时调用接口失败
      • 1.2 SDK登录失败，但是网页登录正常
      • 1.3 如何判断设备是否在线
      • 1.4 二次开发时SDK库加载失败导致程序无法正常编译运行或者接口调用失败
      • 1.5 官网下载的Linux SDK在ARM嵌入式系统下无法使用，需要提供ARM版本的SDK
      • 1.6 多语言开发，怎么获取C#\Java\VB\Delphi\Python等其他语言的开发包
      • 1.7 官网下载的ClientDemo或者C#的Demo运行之后界面显示不全或者显示错位
      • 1.8 Java开发，Native.loadLibrary加载库文件失败
      • 1.9 Windows的代码移植到Linux下编译报错“java.lang.IllegalArgumentException: Unrecognized calling convention: 1”是什么原因？
      • 1.10 C#开发，SDK接口调用时报错“对PInvoke函数xxxxxxx的调用导致堆栈不对称”，为什么？
      • 1.11 对接多台设备，是否需要调用多次NET_DVR_Init接口分别初始化？
      • 1.12 SDK支持的注册、预览、回放、报警和对讲等的连接数限制是多少？
    • 二、视频相关问题
      • 2.1 设备主码流、子码流、三码流什么含义？
      • 2.2 如何预览子码流、三码流
      • 2.3 能否获取当前云台的水平、垂直位置，如何获取云台变倍值。 如何获取云台当前位置\当前坐标。 如何转到云台到指定的位置。
      • 2.4 为什么按时间回放时获取不到0到100之间的进度？ 回放录像文件，如何实现进度条功能/如何定位？
      • 2.5 如何实现抓图/截图/获取一帧图片？
      • 2.6 预览OSD时间不对，怎么校时？
      • 2.7 为什么录像文件使用通用播放器播放不了？
      • 2.8 Web网页和和IVMS-4200客户端软件预览正常，自己调用SDK预览接口或者ClientDemo测试预览卡顿。
    • 三、报警事件
      • 3.1 设备登录成功但是布防失败，错误号28或者1924
      • 3.2 接收多台设备的报警信息，如何操作，如何区分是哪一台设备上传的报警信息？
      • 3.3 布防成功，报警回调函数没有调用，是什么原因？布防成功后，为什么接收不到报警信息？
      • 3.4 布防成功， 回调函数调用几次之后就不再调用了，是什么原因？ 布防成功，程序运行一段时间之后接收不到报警信息，重启程序会恢复正常，是什么原因？
      • 3.5 调用报警监听接口失败，获取错误码为72。
      • 3.6 回调函数中的pUser有什么用？

一、通用问题

1.1 SDK开发时调用接口失败

SDK接口返回失败可以调用NET_DVR_GetLastError获取错误号，通过错误号判断原因。

1.2 SDK登录失败，但是网页登录正常

首先，建议在同样的环境下使用我们IVMS-4200（移动端开发使用IVMS-4500）进行测试，客户端软件可以正常访问之后再进行开发，避免网络原因导致的访问问题。其次，通过错误号判断原因，常见错误号有：

1）错误号7，网络不通导致连接不上设备，需要确认登录接口传入的IP和端口是否正确，网络通不通。

2）错误号10，接收数据超时。SDK登录使用的端口跟网页访问使用的端口是不一样的，WEB网页登录设备使用的是HTTP端口（默认：80），而SDK登录使用的是设备服务端口（默认：8000），而不是HTTP端口，使用的端口不对会出现该错误。其他原因需要排查网络环境。

3） 错误号52，登录设备的用户数达到最大，设备最大支持同时登录路数为128。软件频繁登录登出，设备端资源还未释放，也会导致该问题，建议每台设备只登录一次。

4）错误号153，用户IP被锁定，用户名密码错误且尝试登录次数超过设备限制个数，设备就会锁定，禁止该IP地址的客户端访问。可以重启设备恢复或者等待30分钟设备自动解锁。

1.3 如何判断设备是否在线

SDK是主动登录设备的，正常登录说明设备在线，登录设备之后需要判断设备是否掉线，有两种方式：

1）NET_DVR_SetExceptionCallBack_V30设置异常消息回调函数，网络异常连接断开或者恢复重连，都会回调获取消息。

2）调用NET_DVR_RemoteControl(命令: NET_DVR_CHECK_USER_STATUS)手动判断设备是否在线。

1.4 二次开发时SDK库加载失败导致程序无法正常编译运行或者接口调用失败

1）错误号107~114：V5.x以上版本SDK组件化方式，不能只加载HCNetSDK.dll，HCCore.dll、HCNetSDKCom文件夹等文件均要加载到程序里面，HCNetSDKCom文件夹（包含里面的功能组件dll库文件）需要和HCNetSDK.dll放在同一个目录下，且HCNetSDKCom文件夹名不能修改。

2）预览失败，错误号64：播放库没有正常加载，包括PlayCtrl.dll、SuperRender.dll、AudioRender.dll、D3DX9_43.dll。

1.5 官网下载的Linux SDK在ARM嵌入式系统下无法使用，需要提供ARM版本的SDK

嵌入式系统并不是就是一种系统，多种多样，我司没有对应的嵌入式系统测试环境，临时编译不能保证稳定性和兼容性，后续也没有办法提供开发上的问题支持，所以不提供相关定制编译。我司目前出厂的设备都是支持标准协议的，ONVIF、RTSP、ISAPI等，建议使用这些协议进行开发，这样的话支持相关协议的设备都可以对接，后续功能扩展也非常方便。

1.6 多语言开发，怎么获取C#\Java\VB\Delphi\Python等其他语言的开发包

SDK是将协议封装成API接口，以dll(windows)或so(linux)动态库形式提供，不限制开发语言。无论用什么语言开发，对应的接口和调用流程都是相同的，参考C++文档即可。官网上提供的demo有C++和C#以及Java，其他开发语言也支持调用，只是需要重定义下接口和结构体声明。而且官网上的C#和Java demo只有部分功能示例，没有包括所有的接口和结构体，可以根据库文件对应的头文件HCNetSDK.h，并且C#或者Java已有定义的示例代码，重定义下对应的接口、结构体及子结构体，然后可以直接调用。

1.7 官网下载的ClientDemo或者C#的Demo运行之后界面显示不全或者显示错位

Demo界面都是固定的，不会自适应，跟系统显示分辨率和显示模式有关系，显示分辨率需要大于1280*768，并且系统的显示DPI需要配置为100%。

Win7配置方法：

Win10配置方法：

1.8 Java开发，Native.loadLibrary加载库文件失败

该错误一般提示Unable to load library 'xxx'。这个是动态库加载失败：

  1. 请确认dll库加载路径是否正确，相关的库文件是不是全部拷贝到对应目录下了。相对路径加载失败，可以尝试换成绝对路径，例如: “D:\Demo\PlayCtrl.dll”。

  2. 编译环境必须匹配，X64的编译环境（JRE、JDK等都是64位的，jdk建议1.8.0版本）需要加载64位的SDK库，X86的编译环境（JRE、JDK等都是32位的，jdk建议1.8.0版本）需要加载32位的SDK库。

  3. 可执行程序的工作目录建议配置跟dll库所在路径一样。

  4. 如果还是不行，SDK库所在路径可以添加到Java变量里面，或者拷贝到JRE的bin文件夹下，或者将SDK库拷贝到system32、sysWOW64目录下(Linux系统库路径为usr\lib、usr\lib64)。

1.9 Windows的代码移植到Linux下编译报错“java.lang.IllegalArgumentException: Unrecognized calling convention: 1”是什么原因？

Windows使用的约定，Linux下不支持，是需要修改的，比如：

public interface HCNetSDK extends Library{ //Windows系统下是StdCallLibrary

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("HCNetSDK", HCNetSDK.class);

还有回调函数的约定也是一样的，需要修改，比如：

public static interface FRealDataCallBack_V30 extends Callback { //Windows系统下是StdCallCallback

public void invoke(NativeLong lRealHandle, int dwDataType,

ByteByReference pBuffer, int dwBufSize, Pointer pUser);

}

注：除了示例中的库文件加载和回调函数，其他库文件加载和回调函数的约定都需要修改。

1.10 C#开发，SDK接口调用时报错“对PInvoke函数xxxxxxx的调用导致堆栈不对称”，为什么？

接口或者结构体中参数定义和C++头文件中HCNetSDK.h中参数定义不一致，如缺少参数、定义错误（如C++中WORD类型长度为2字节，在C#或Java中误定义成4字节的int类型，实际应该定义成short类型）、参数顺序错误等。

1.11 对接多台设备，是否需要调用多次NET_DVR_Init接口分别初始化？

不需要，初始化和设备无关，只需要调用一次，程序开始是调用。

1.12 SDK支持的注册、预览、回放、报警和对讲等的连接数限制是多少？

设备网络SDK支持的预览、回放和下载、对讲等连接数最大值均可通过接口NET_DVR_GetSDKAbility获取，参考值见下表所示。

二、视频相关问题

2.1 设备主码流、子码流、三码流什么含义？

设备码流类型有：

  1. 主码流：顾名思义，是设备的最主要的一路数据，分为主码流（定时）与主码流（事件），码流分辨率、码率较大，清晰度高，占用带宽高，一般用于存储。

  2. 子码流：码流分辨率、码率较低，清晰度低，占用带宽小，一般用于网传。

  3. 三码流：和子码流类似，可以看作第2路子码流，可以配置跟子码流不同的分辨率、码率。

  4. 事件码流：也称为主码流（事件），当移动侦测、报警输入等事件发生时的主码流会从定时参数切换成为事件码流。此时，主码流的数据由事件码流的参数决定，一般用于提高事件发生情况下的图像清晰度。如果事件码流的参数与主码流（定时）不同，当移动侦测、报警等发生时，会导致主码流的图像不断切换，影响视频效果，一般不建议使用。

  5. 虚拟码流：即转码码流，实际不存在，预览时，设备根据配置的虚拟码流压缩参数进行转编码的一路码流，需要额外消耗设备资源，一般只支持1路，只支持网传。

以上这些码流都支持预览，通过预览参数(NET_DVR_PREVIEWINFO)中的dwStreamType选择当前预览的码流类型。并且，这些类型的码流压缩参数都可以分别获取和设置置，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG)，对应配置结构体：NET_DVR_MULTI_STREAM_COMPRESSIONCFG。

2.2 如何预览子码流、三码流

调用NET_DVR_RealPlay_V40预览接口，NET_DVR_PREVIEWINFO预览参数里面dwStreamType 可以选择码流类型。

2.3 能否获取当前云台的水平、垂直位置，如何获取云台变倍值。 如何获取云台当前位置\当前坐标。 如何转到云台到指定的位置。

  1. 设备的云台PTZ范围可以通过NET_DVR_GetDVRConfig(命令: NET_DVR_GET_PTZSCOPE)获取，如果最小值大于最大值，说明最小值是负数，需要减去360度。

  2. 通过NET_DVR_GetDVRConfig(命令: NET_DVR_GET_PTZPOS)获取的PTZ值。实际显示的PTZ值是获取到的十六进制值的十分之一，如获取的水平参数P的值是0x1750，实际显示的P值为175度；获取到的垂直参数T的值是0x0789，实际显示的T值为78.9度；获取到的变倍参数Z的值是0x1100，实际显示的Z值为110倍。如果大于取值范围，说明是负数，需要减去360度。

  3. 通过NET_DVR_SetDVRConfig(命令:NET_DVR_SET_PTZPOS)可以设置云台PTZ坐标，云台直接转动到指定的位置。

2.4 为什么按时间回放时获取不到0到100之间的进度？ 回放录像文件，如何实现进度条功能/如何定位？

按时间回放(NET_DVR_PlayBackByTime_V40)不支持设置进度，获取进度也只支持获取0、100（完成）、200（异常）三个进度值，不支持获取0~100中间进度。如果是按时间回放，如果需要定位，接口里面直接传入窗口句柄，可以调用NET_DVR_GetPlayBackOsdTime获取当前OSD时间，然后自己根据开始时间和结束时间计算回放进度。定位的时候根据进度计算新的回放时间点，停止之前回放从新的时间点重新开始回放。

2.5 如何实现抓图/截图/获取一帧图片？

客户端抓图实现方法有：

  1. 如果每秒抓取1~2张（具体由设备性能决定），不是很频繁抓图，可以登录之后调用NET_DVR_CaptureJPEGPicture或NET_DVR_CaptureJPEGPicture_NEW进行抓图。该抓图方式需要设备支持。可以通过能力集判断设备是否支持抓图以及支持的抓图分辨率，即调用NET_DVR_GetDeviceAbility获取设备抓图能力集：能力集类型PIC_CAPTURE_ABILITY（DVR、NVR设备）和DEVICE_JPEG_CAP_ABILITY（IPC、IPD设备）。

  2. 如果需要频繁抓图，每秒10多张或者更多，需要调用预览抓图接口，先调用NET_DVR_RealPlay_V40进行预览传入窗口句柄，然后调用NET_DVR_CapturePicture（调用之前可以通过NET_DVR_SetCapturePictureMode设置抓图模式）进行抓图。如果需要抓图不保存成文件而是存放在缓冲区里面，可以再预览之后调用NET_DVR_GetRealPlayerIndex获取播放库句柄，再调用播放库的抓图接口PlayM4_GetBMP或PlayM4_GetJPEG进行抓图。

  3. 如果不需要预览显示图像，但是需要频繁抓图，可以调用NET_DVR_RealPlay_V40进行预览，窗口句柄传空，设置回调函数，回调获取实时流数据，送入播放库进行解码，播放库PlayM4_Play接口里面窗口句柄也传空，这样只解码不显示。然后再调用PlayM4_GetBMP或PlayM4_GetJPEG进行抓图，或者设置解码回调函数（PlayM4_SetDecCallBack）获取解码后的原始YUV数据，再自己转成需要的图片格式。

2.6 预览OSD时间不对，怎么校时？

通过NET_DVR_GetDVRConfig(命令:NET_DVR_GET_TIMECFG)、NET_DVR_SetDVRConfig(命令:NET_DVR_SET_TIMECFG)可以获取和设置设备时间，实现手动校时。或者设备直接配置NTP校时服务器自动校时，不需要调用接口实现。

2.7 为什么录像文件使用通用播放器播放不了？

能否播放取决于视音频编码和封装格式，SDK默认录像封装格式为PS封装，编码一般为H.264或者H.265，需要播放器支持相应的编码封装格式。

1）设备视频编码是H.264编码，音频是AAC编码，设备网络SDK对接时预览录像可以调用NET_DVR_SaveRealData_V30时dwTransType赋值为2选择3GPP封装，保存为标准MP4文件，通用播放器一般可以支持播放。或者是取流之后自己转封装。

2）如果设备编码不是H.264编码或者音频不是AAC编码，需要取流之后转码（解码再重新编译），使用第三方转码库或者转码工具，或者使用我司的转码库SDK（需要专门申请获取）。

2.8 Web网页和和IVMS-4200客户端软件预览正常，自己调用SDK预览接口或者ClientDemo测试预览卡顿。

WEB网页和IVMS-4200预览默认是流畅好或者均衡，ClientDemo默认是实时性好，调用NET_DVR_RealPlay_V40预览接口时NET_DVR_PREVIEWINFO中dwDisplayBufNum参数可以设置播放库播放缓冲区最大缓冲帧数，取值范围：1（实时性好）、6（均衡）、15（流畅性好）。

三、报警事件

3.1 设备登录成功但是布防失败，错误号28或者1924

接口返回失败，可以调用NET_DVR_GetLastError获取错误号，通过错误号判断原因。常见错误号为28、52或者1924，表示同时登录布防连接该设备的客户端连接数达到上限，设备支持的布防连接数由设备本身性能决定，不支持修改。

1）对于网络摄像机、硬盘录像机等设备，最大布防连接数一般是10个；

2）对于交通抓拍机，一级布防只支持1个客户端布防，二级布防可以支持3个；在调用布防接口NET_DVR_SetupAlarmChan_V41时，NET_DVR_SETUPALARM_PARAM报警布防参数中byLevel表示交通抓拍机的布防等级，0表示一级布防，1表示二级布防。

3）对于门禁产品，设备只支持1路客户端布防（支持离线事件上传）、支持4路实时布防（不支持离线事件上传，DS-K5603不支持）；在调用布防接口NET_DVR_SetupAlarmChan_V41时，NET_DVR_SETUPALARM_PARAM报警布防参数中byDeployType字段表示门禁产品的布防类型，0表示客户端布防，1表示实时布防。

3.2 接收多台设备的报警信息，如何操作，如何区分是哪一台设备上传的报警信息？

对接多台设备时，SDK初始化接口NET_DVR_Init和设置报警回调接口NET_DVR_SetDVRMessageCallBack_V31只需要在程序启动时调用一次，然后每一台设备需要分别调用NET_DVR_Login_V40接口进行登录，返回不同的lUserID，再分别调用布防接口NET_DVR_SetupAlarmChan_V41（传入不同的lUserID句柄）对每台设备进行布防。在报警回调函数中接收所有设备的报警信息，通过pAlarmer对应的结构体NET_DVR_ALARMER中的登录句柄lUserID、设备序列号sSerialNumber、设备IP地址sDeviceIP 等字段来区分。

3.3 布防成功，报警回调函数没有调用，是什么原因？布防成功后，为什么接收不到报警信息？

1.排查设备是否有触发报警事件，报警事件的联动方式是否有勾选上传中心。

2.相同网络和设备环境下，使用我们官网win32开发包/库文件/ClientDemo.exe测试能否收到报警信息。测试方法：左侧设备树添加设备，在其他-布防/撤防-选中您的设备-布防/撤防，最右下角选择报警信息，在报警信息中查看。

3.如果ClientDemo测试正常，则需排查程序代码，常见原因有：程序进程已退出、回调函数没有设置成全局类型导致已被回收、回调函数中没有对应lCommand（报警类型）的处理。

3.4 布防成功， 回调函数调用几次之后就不再调用了，是什么原因？ 布防成功，程序运行一段时间之后接收不到报警信息，重启程序会恢复正常，是什么原因？

  1. 请确认程序进程是否已退出，如果是控制台程序main函数运行结束程序就退出了。如果程序进程退出了，那布防长连接就会断开，这样就没有办法继续接收报警信息。
  2. 请将回调函数设置为全局类型，很多语言比如Java和C#开发时存在内存自动回收机制， 如果回调函数被设置成局部的，很有可能在回调几次后，回调函数地址就被回收了。

简单示例（Java）：

public class Test{
static int lUserID = -1;//用户句柄
static FMSGCallBack fMSFCallBack = null; //回调函数应该定义在这里

public class FMSGCallBack implements HCNetSDK.FMSGCallBack
{
    public void invoke(int lCommand, HCNetSDK.NET_DVR_ALARMER pAlarmer, Pointer pAlarmInfo, int dwBufLen, Pointer pUser)
    {
    //这里接收报警事件数据，解析数据，不能有耗时处理阻塞回调
    }
}

public static void main(String[] args) {
    //FMSGCallBack fMSFCallBack = new FMSGCallBack_V31();回调函数不能定义在这里
    hCNetSDK.NET_DVR_Init(); //SDK初始化
    if (fMSFCallBack_V31 == null)
    {
        fMSFCallBack_V31 = new FMSGCallBack_V31();
        hCNetSDK.NET_DVR_SetDVRMessageCallBack_V31(fMSFCallBack_V31, pUser);
    }

    //布防等其他代码…
    while(true); //不要退出程序，一直接收就需要一直运行
}

3.5 调用报警监听接口失败，获取错误码为72。

72为绑定套接字失败，可能原因有：

1.监听接口传入的IP和端口为PC机本地网卡的IP和端口。

2.PC机有多网卡，需要调用接口NET_DVR_SetValidIP绑定实际使用的网卡。

3.PC机端口被占用，需要使用空闲的端口。

3.6 回调函数中的pUser有什么用？

用户指针，该指针传入自定义数据，指针指向的内存中传入的数据，不做任何修改直接在回调函数中返回。

如果不需要，可以置空。


人脸侦测模块流程

人脸侦测

人脸功能，根据不同的设备型号或者版本，有人脸抓拍、人脸侦测等不同的实现方式，人脸抓拍摄像机一般对应人脸抓拍，热成像人脸抓拍测温也是对应的人脸抓拍（事件里面包含测温温度），Smart IPC/NVR设备一般对应人脸侦测功能，具体可以通过设备能力集进行判断。如果设备同时支持两种方式，布防时可以选择设备上传信息类型。此处介绍人脸侦测的接口实现流程。

目录

  • 人脸侦测
    • 目录
    • 一、接口调用流程
    • 二、示例代码

一、接口调用流程

  • 登录设备之后，通过NET_DVR_GetDeviceAbility（能力集类型：DEVICE_ABILITY_INFO，能力集：EventAbility，节点：）获取事件能力集可以判断设备是否支持相关功能。

  • 人脸侦测参数配置，包括使能、灵敏度、布防时间、联动参数等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_FACE_DETECT)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_FACE_DETECT)。参数配置和联动方式也可以通过WEB网页直接访问设备进行配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测监控画面上的人脸，检测到人脸后可按照配置的参数联动录像、抓拍或者报警，SDK可以通过报警布防方式获取设备上传的识别结果，此时处理方式必须选择“上传中心”类型。

  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数。对于人脸侦测，回调函数中获取的报警类型(lCommand)为COMM_ALARM_FACE_DETECTION，报警信息(pAlarmInfo)对应结构体：NET_DVR_FACE_DETECTION。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。如果设备同时支持人脸侦测和人脸抓拍方式，调用该接口时，NET_DVR_SETUPALARM_PARAM布防参数中byFaceAlarmDetection赋值为1即选择设备上传的报警信息类型为人脸侦测类型。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。

  • 设备人脸侦测功能，检测到人脸时，除了联动录像、抓拍和报警，在预览画面中也可以叠加绿色框（或者其他颜色，以实际效果为准）将人脸位置标识出来（如下图所示），该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。

二、示例代码

下面示例代码为报警布防接收人脸侦测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_FACE_DETECTION: //人脸侦测报警信息
        {
            NET_DVR_FACE_DETECTION struFaceDetectionAlarm = {0};
            memcpy(&struFaceDetectionAlarm, pAlarmInfo, sizeof(NET_DVR_FACE_DETECTION));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struFaceDetectionAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struFaceDetectionAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struFaceDetectionAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struFaceDetectionAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struFaceDetectionAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struFaceDetectionAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struFaceDetectionAlarm.dwBackgroundPicLen > 0 && struFaceDetectionAlarm.pBackgroundPicpBuffer != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "FaceDetectionBackPic[%s][%s].jpg",struFaceDetectionAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile(cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struFaceDetectionAlarm.pBackgroundPicpBuffer, struFaceDetectionAlarm.dwBackgroundPicLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            printf("人脸侦测报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] \n",\
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, \
                struAbsTime.dwMinute, struAbsTime.dwSecond, struFaceDetectionAlarm.struDevInfo.struDevIP.sIpV4, \
                struFaceDetectionAlarm.struDevInfo.wPort, struFaceDetectionAlarm.struDevInfo.byIvmsChannel);
        }
        break;
        default:
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    struAlarmParam.byFaceAlarmDetection = 1; //人脸侦测报警，设备支持人脸侦测功能的前提下，上传COMM_ALARM_FACE_DETECTION类型报警信息
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    Sleep(50000); //等待过程中，如果设备上传报警信息，在报警回调函数里面接收和处理报警信息

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(人员滞留)

异常行为识别：人员滞留

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【人员滞留】

人员滞留（或放风场滞留）检测功能，设备对人员滞留时间达到一定阈值时报警。

目录

  • 异常行为识别：人员滞留
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(放风场滞留)
      • 1.3 能力集和配置(人员滞留)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2、1.3章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 滞留事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_YARD_TARRY(放风场滞留检测)或ENUM_VCA_EVENT_RETENTION(人员滞留检测)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(放风场滞留)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<YardTarry>可以判断设备是否支持相关功能。
  • 放风场滞留检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_YARD_TARRY。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(人员滞留)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为retention表示人员滞留检测。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为retention表示人员滞留检测。
  • 人员滞留检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isRetentionParamSupport>可以判断设备是否支持人员滞留检测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<RetentionParam>是人员滞留检测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为retentionParam表示人员滞留检测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 人员滞留检测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收人员滞留事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
            case ENUM_VCA_EVENT_YARD_TARRY://滞留报警
            {
                printf("滞留检测报警: 滞留时间[%d]\n", \
                    struVcaAlarm.struRuleInfo.uEventParam.struYardTarry.wDelay);

                printf("规则区域: \n");
                NET_VCA_POLYGON tempPolygon;
                memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struYardTarry.struRegion, sizeof(NET_VCA_POLYGON));
                for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                {
                    printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                }
                Sleep(20000);
                break;
            }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(人员离岗)

异常行为识别：人员离岗

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【人员离岗】

人员离岗检测功能，对离岗或者睡岗的事件进行检测。

目录

  • 异常行为识别：人员离岗
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(专业智能方式一)
      • 1.3 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2、1.3章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 人员离岗事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_LEAVE_POSITION。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<FallDown>可以判断设备是否支持相关功能。
  • 人员离岗检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_LEAVE_POSITION。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为leavePosition表示人员离岗检测。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为leavePosition表示人员离岗检测。
  • 人员离岗检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isLeavePositionSupport>可以判断设备是否支持人员离岗检测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<LeavePositionParam>是人员离岗检测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为leavePosition表示人员离岗检测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 人员离岗检测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收人员离岗事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
            case ENUM_VCA_EVENT_FALL_DOWN://离岗报警
            {
                printf("离岗检测报警: 模式[%d]\n", \
                    struVcaAlarm.struRuleInfo.uEventParam.struLeavePos.byMode);

                printf("规则区域: \n");
                NET_VCA_POLYGON tempPolygon;
                memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struLeavePos.struRegion, sizeof(NET_VCA_POLYGON));
                for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                {
                    printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                }
                Sleep(20000);
                break;
            }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(人员聚集)

异常行为识别：人员聚集

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【人员聚集】

人员聚集，在指定区域内人体密度超过设置的阈值时设备上传报警信息。

目录

  • 异常行为识别：人员聚集
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 人员聚集侦测事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_HIGH_DENSITY(密度超过设置的阈值上传事件)或者ENUM_VCA_EVENT_HIGH_DENSITY_STATUS(按一定的时间间隔定时上传人员密度状态)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/capabilities)获取Smart智能事件能力集，<isSupportGroup>为true表示支持人员聚集侦测功能。
  • 人员聚集侦测相关参数配置，包括灵敏度、区域、布防时间、联动方式等，相关接口：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/group/<channelID>/capabilities)获取Smart智能的人员聚集侦测参数能力集。
    2)人员聚集侦测参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/group/<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/group/<channelID>)。
    3)人员聚集侦测单个区域配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/group/<channelID>/regions/<regionID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/group/<channelID>/regions/<regionID>)。
    4) 人员聚集侦测联动参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/group-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/group-<channelID>)。
    5) 人员聚集侦测布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/groups/group-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/groups/group-<channelID>)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<HighDensity>或<HighDensityStatus>可以判断设备是否支持相关功能。
  • 人员聚集侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_HIGH_DENSITY(密度超过设置的阈值上传事件)或者ENUM_VCA_EVENT_HIGH_DENSITY_STATUS(按一定的时间间隔定时上传人员密度状态)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括人员聚集侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括人员聚集侦测在内的9种异常行为识别事件)。
  • 人员聚集侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isGroupSupport>可以判断设备是否支持异常行为识别的人员聚集侦测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<GroupParam>是人员聚集侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型为group表示人员聚集。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 人员聚集侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收人员聚集事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
                case ENUM_VCA_EVENT_HIGH_DENSITY: //人员聚集报警
                {
                    printf("人员聚集报警: 密度[%d],灵敏度[%d],报警时间阈值[%d]\n", \
                        struVcaAlarm.struRuleInfo.uEventParam.struHighDensity.fDensity,
                        struVcaAlarm.struRuleInfo.uEventParam.struHighDensity.bySensitivity,
                        struVcaAlarm.struRuleInfo.uEventParam.struHighDensity.wDuration);

                    printf("规则区域: \n");
                    NET_VCA_POLYGON tempPolygon;
                    memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struHighDensity.struRegion, sizeof(NET_VCA_POLYGON));
                    for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                    {
                        printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                    }

                    break;
                }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(人数异常)

异常行为识别：人数异常

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【人数异常】

人数异常侦测功能，设备对一定区域内人数变化达到阈值的事件报警。

目录

  • 异常行为识别：人数异常
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2能力集和配置(专业智能方式一)
      • 1.3 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2、1.3章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 人数异常事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_PEOPLENUM_CHANGE。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<PeopleNumChange>可以判断设备是否支持相关功能。
  • 人数异常检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_PEOPLENUM_CHANGE。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为peopleNumChange表示人数异常检测。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为peopleNumChange表示人数异常检测。
  • 人数异常检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isPeopleNumChange>可以判断设备是否支持人数异常检测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<PeopleNumChangeParam>是人数异常检测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型为peopleNumChange表示人数异常检测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收人数异常事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
            case ENUM_VCA_EVENT_PEOPLENUM_CHANGE://人数异常
            {
                printf("人数异常报警: 人数阈值[%d]，触发事件阈值[%d]\n", \
                struVcaAlarm.struRuleInfo.uEventParam.struPeopleNumChange.byPeopleNumThreshold,
                struVcaAlarm.struRuleInfo.uEventParam.struPeopleNumChange.wDuration);

                printf("规则区域: \n");
                NET_VCA_POLYGON tempPolygon;
                memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struPeopleNumChange.struRegion, sizeof(NET_VCA_POLYGON));
                for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                {
                    printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                }
                Sleep(20000);
                break;
            }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(倒地检测)

异常行为识别：倒地检测

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【倒地检测】

倒地检测功能，对倒地的事件进行检测。当发生倒地时设备发出报警，通知布防主机有倒地现象发生，从而可以进行提前预警。

目录

  • 异常行为识别：倒地检测
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(专业智能方式一)
      • 1.3 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2、1.3章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 倒地检测事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_FALL_DOWN。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<FallDown>可以判断设备是否支持相关功能。
  • 倒地检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_FALL_DOWN。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括人员倒地检测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括人员倒地检测在内的9种异常行为识别事件)。
  • 倒地检测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isFailDownSupport>可以判断设备是否支持倒地检测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<FailDownParam>是倒地检测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为failDown表示倒地检测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 倒地检测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收倒地检测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
            case ENUM_VCA_EVENT_FALL_DOWN://倒地报警
            {
                printf("倒地报警: 阈值[%d]，灵敏度[%d]\n", \
                    struVcaAlarm.struRuleInfo.uEventParam.struFallDown.wDuration,
                    struVcaAlarm.struRuleInfo.uEventParam.struFallDown.bySensitivity);

                printf("规则区域: \n");
                NET_VCA_POLYGON tempPolygon;
                memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struFallDown.struRegion, sizeof(NET_VCA_POLYGON));
                for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                {
                    printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                }
                Sleep(20000);
                break;
            }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(剧烈运动)

异常行为识别：剧烈运动

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【剧烈运动】

剧烈运动侦测功能，对剧烈运动的事件进行检测。当发生剧烈运动时设备发出报警，通知布防主机有剧烈运动现象发生，从而可以进行提前预警。

目录

  • 异常行为识别：剧烈运动
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(专业智能方式一)
      • 1.3 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2、1.3章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 剧烈运动事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_VIOLENT_MOTION。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<ViolentMotion>可以判断设备是否支持相关功能。
  • 剧烈运动侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_VIOLENT_MOTION。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括剧烈运动侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括剧烈运动侦测在内的9种异常行为识别事件)。
  • 剧烈运动侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isViolentMotionSupport>可以判断设备是否支持剧烈运动侦测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<ViolentMotionParam>是剧烈运动侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型为violentMotion表示剧烈运动侦测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 剧烈运动侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收剧烈运动事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
            case ENUM_VCA_EVENT_VIOLENT_MOTION://剧烈运动报警
            {
                printf("剧烈运动报警: 阈值[%d]，灵敏度[%d]\n", \
                    struVcaAlarm.struRuleInfo.uEventParam.struViolentMotion.wDuration,
                    struVcaAlarm.struRuleInfo.uEventParam.struViolentMotion.bySensitivity);
                printf("规则区域: \n");
                NET_VCA_POLYGON tempPolygon;
                memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struViolentMotion.struRegion, sizeof(NET_VCA_POLYGON));
                for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                {
                    printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                }
                Sleep(20000);
                break;
            }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(徘徊侦测)

异常行为识别：徘徊侦测

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【徘徊侦测】

徘徊侦测功能可侦测目标在设定的区域内停留超过设定的时间阈值后，根据判断结果联动报警。

目录

  • 异常行为识别：徘徊侦测
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 徘徊侦测事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_LOITER。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/capabilities)获取Smart智能事件能力集，<isSupportLoitering>为true表示支持徘徊侦测功能。
  • 徘徊侦测相关参数配置，包括灵敏度、区域、布防时间、联动方式等，相关接口：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/loitering/<channelID>/capabilities)获取Smart智能的徘徊侦测参数能力集。
    2) 徘徊侦测参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/loitering/<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/loitering/<channelID>)。
    3) 徘徊侦测单个区域配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/loitering/<channelID>/regions/<regionID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/loitering/<channelID>/regions/<regionID>)。
    4) 徘徊侦测联动参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/loitering-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/loitering-<channelID>)。
    5) 徘徊侦测布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/loiterings/loitering-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/loiterings/loitering-<channelID>)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<Loiter>可以判断设备是否支持相关功能。
  • 徘徊侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_LOITER。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括徘徊侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括徘徊侦测在内的9种异常行为识别事件)。
  • 徘徊侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isLoiteringSupport>可以判断设备是否支持异常行为识别的徘徊侦测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<LoiteringParam>是徘徊侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为loitering表示徘徊侦测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 徘徊侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收徘徊侦测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)
int flag = 0;

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch (lCommand)
    {
    case COMM_ALARM_RULE: //异常行为识别报警信息
    {
        NET_VCA_RULE_ALARM struVcaAlarm = { 0 };
        memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

        NET_DVR_TIME struAbsTime = { 0 };
        struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
        struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
        struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
        struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
        struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
        struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

        //保存抓拍场景图片
        if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
        {
            char cFilename[256] = { 0 };
            HANDLE hFile;
            DWORD dwReturn;

            char chTime[128];
            sprintf_s(chTime, "%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d", struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, struAbsTime.dwSecond);

            sprintf_s(cFilename, "VcaAlarmPic[%s][%s].jpg", struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

            hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
            if (hFile == INVALID_HANDLE_VALUE)
            {
                break;
            }
            WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
            CloseHandle(hFile);
            hFile = INVALID_HANDLE_VALUE;
        }

        WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

        printf("\n\n");
        printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
            lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
            struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
            struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

        NET_VCA_TARGET_INFO tmpTargetInfo;
        memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
        printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
            tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
            tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

        switch (wEventType)
        {
        case ENUM_VCA_EVENT_LOITER://徘徊侦测报警
        {
            printf("徘徊侦测报警: wDuration[%d]\n", \
                struVcaAlarm.struRuleInfo.uEventParam.struLoiter.wDuration);

            printf("规则区域: \n");
            NET_VCA_POLYGON tempPolygon;
            memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struLoiter.struRegion, sizeof(NET_VCA_POLYGON));
            for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
            {
                printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
            }
            Sleep(20000);
            flag = 1;
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
            flag = 1;
        }
        }
        break;
    }

    default:
    {
        printf("其他报警，报警信息类型: 0x%x\n", lCommand);
        break;
        flag = 1;
    }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy_s(struLoginInfo.sDeviceAddress, "10.18.37.117"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy_s(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy_s(struLoginInfo.sPassword, "abc12345"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 };

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }
    else printf("Login success\n");
    Sleep(5000);

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam = { 0 };
    struAlarmParam.dwSize = sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, &struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if(!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(快速运动)

异常行为识别：快速运动

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【快速运动(奔跑)】

快速移动侦测功能，对非法追跑、道路超速等行为进行事件检测，对快速移动的事件进行检测。当发生快速运动时设备发出报警，通知布防主机有快速快速移动现象发生，从而可以进行提前预警。

目录

  • 异常行为识别：快速运动
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 快速运动事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_RUN或者ENUM_VCA_EVENT_RUNNING。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/capabilities)获取Smart智能事件能力集，<isSupportRapidMove>为true表示支持快速运动侦测功能。
  • 快速运动侦测相关参数配置，包括灵敏度、区域、布防时间、联动方式等，相关接口：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/rapidMove/<channelID>/capabilities)获取Smart智能的快速运动侦测参数能力集。
    2) 快速运动侦测参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/rapidMove/<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/rapidMove/<channelID>)。
    3) 快速运动侦测单个区域配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/rapidMove/<channelID>/regions/<regionID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/rapidMove/<channelID>/regions/<regionID>)。
    4) 快速运动侦测联动参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/rapidMove-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/rapidMove-<channelID>)。
    5) 快速运动侦测布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/rapidMoves/rapidMove-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/rapidMoves/rapidMove-<channelID>)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<Run>可以判断设备是否支持相关功能。
  • 快速运动侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_RUN。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括快速运动侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括快速运动侦测在内的9种异常行为识别事件)。
  • 快速运动侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isRapidMoveSupport>可以判断设备是否支持异常行为识别的快速运动侦测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<GroupParam>是快速运动侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为group表示快速运动。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 快速运动侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收快速运动事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
            case ENUM_VCA_EVENT_RUN://快速运动报警
            {
                printf("快速运动报警: 检测目标[%d]，奔跑最大距离[%d],灵敏度[%d]\n", \
                    struVcaAlarm.struRuleInfo.uEventParam.struRun.byDetectionTarget,
                    struVcaAlarm.struRuleInfo.uEventParam.struRun.fRunDistance,
                    struVcaAlarm.struRuleInfo.uEventParam.struRun.bySensitivity);

                printf("规则区域: \n");
                NET_VCA_POLYGON tempPolygon;
                memcpy(&tempPolygon, &struVcaAlarm.struRuleInfo.uEventParam.struRun.struRegion, sizeof(NET_VCA_POLYGON));
                for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                {
                    printf("[%f, %f] ", tempPolygon.struPos[i].fX, tempPolygon.struPos[i].fY);
                }
                Sleep(20000);
                break;
            }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(离开区域)

异常行为识别：离开区域

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【离开区域】

离开区域，对离开指定区域的运动目标进行自动检测。

目录

  • 异常行为识别：离开区域
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 离开区域事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_EXIT_AREA。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/capabilities)获取Smart智能事件能力集，<isSupportRegionExiting>为true表示支持离开区域侦测功能。
  • 离开区域侦测相关参数配置，包括灵敏度、区域、布防时间、联动方式等，相关接口：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/regionExiting/<channelID>/capabilities)获取Smart智能离开区域侦测参数能力集。
    2) 离开区域参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/regionExiting/<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/regionExiting/<channelID>)。
    3) 离开区域单个区域配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/regionExiting/<channelID>/regions/<regionID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/regionExiting/<channelID>/regions/<regionID>)。
    4) 离开区域联动参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/regionExiting-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/regionExiting-<channelID>)。
    5) 离开区域布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/regionExitings/regionExiting-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/regionExitings/regionExiting-<channelID>)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<ExitArea>可以判断设备是否支持相关功能。
  • 离开区域参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_EXIT_AREA。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括离开区域侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括离开区域侦测在内的9种异常行为识别事件)。
  • 离开区域侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isRegionExitingSupport>可以判断设备是否支持异常行为识别的离开区域侦测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中是离开区域侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为regionExiting表示离开区域侦测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 离开区域侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收离开区域事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
                case ENUM_VCA_EVENT_EXIT_AREA: //离开区域报警
                {
                    printf("离开区域报警: 检测目标[%d]\n", \
                        struVcaAlarm.struRuleInfo.uEventParam.struArea.byDetectionTarget);

                    printf("规则区域: \n");
                    NET_VCA_POLYGON tempPolygon;
                    memcpy(&tempPolygon,&struVcaAlarm.struRuleInfo.uEventParam.struArea.struRegion,sizeof(NET_VCA_POLYGON));
                    for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                    {
                        printf("[%f, %f] ",tempPolygon.struPos[i].fX,tempPolygon.struPos[i].fY);
                    }

                    break;
                }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(越界侦测)

异常行为识别：越界侦测

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【越界侦测】

越界侦测（或穿越警戒面），检测是否有目标按指定方向越过指定界线，当有目标越过指定界线时触发报警。

目录

  • 异常行为识别：越界侦测
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 越界侦测(穿越警戒面)事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_TRAVERSE_PLANE。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，能力集：EventAbility，节点：<TraversingVirtualPlane>)获取事件能力集可以判断设备是否支持相关功能。
  • 越界侦测参数配置，包括使能、区域范围、灵敏度、阈值、布防时间、联动参数等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_TRAVERSE_PLANE_DETECTION)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_TRAVERSE_PLANE_DETECTION)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<TraversePlane>可以判断设备是否支持相关功能。
  • 穿越警戒面参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_TRAVERSE_PLANE。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括越界侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括越界侦测在内的9种异常行为识别事件)。
  • 越界侦测(穿越警戒面)参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isLineDetectionSupport>可以判断设备是否支持异常行为识别的穿越警戒面功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<LineDetectionParam>是越界侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为lineDetection表示越界侦测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 越界侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收越界侦测事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
                case ENUM_VCA_EVENT_TRAVERSE_PLANE: //越界侦测报警
                {
                    printf("越界侦测报警: 穿越方向[%d], 灵敏度[%d], 检测目标[%d]\n", \
                        struVcaAlarm.struRuleInfo.uEventParam.struTraversePlane.dwCrossDirection, \
                        struVcaAlarm.struRuleInfo.uEventParam.struTraversePlane.bySensitivity, \
                        struVcaAlarm.struRuleInfo.uEventParam.struTraversePlane.byDetectionTarget);

                    printf("警戒线: \n");
                    NET_VCA_LINE tempLine ={0};
                    memcpy(&tempLine,&struVcaAlarm.struRuleInfo.uEventParam.struTraversePlane.struPlaneBottom,sizeof(NET_VCA_LINE));

                    printf("Start Point[%f, %f], End Point[%f, %f]",tempLine.struStart.fX,tempLine.struStart.fY,tempLine.struEnd.fX,tempLine.struEnd.fY);

                    break;
                }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


异常行为识别模块流程(进入区域)

异常行为识别：进入区域

异常行为识别包含区域入侵、越界侦测 、进入区域 、离开区域、徘徊侦测、人员聚集、快速运动、剧烈运动、倒地检测、人员离岗、人员滞留、人数异常等，但是不仅限于下文介绍的这些类型，更多类型参考VCA_RULE_EVENT_TYPE_EX枚举说明，各种事件均通过报警布防或者报警监听方式接收，接口流程完全相同，只是事件类型不一样，对应的设备参数配置不一样。

【进入区域】

进入区域，对进入指定区域的运动目标进行自动检测。

目录

  • 异常行为识别：进入区域
    • 目录
    • 一、接口调用流程
      • 1.1 报警事件上传
      • 1.2 能力集和配置(Smart智能)
      • 1.3 能力集和配置(专业智能方式一)
      • 1.4 能力集和配置(专业智能方式二)
    • 二、示例代码

一、接口调用流程

1.1 报警事件上传

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 规则参数和联动方式等配置，如果事先已经配置则可省略该过程，配置相关参数和联动方式之后，设备将按照配置的规则自动检测，SDK可以通过报警布防方式获取设备上传的识别结果（联动方式必须选择“上传中心”类型）。不同的设备配置接口可能不同，详见1.2~1.4章节。
  • 报警布防方式实现方法：
    1) 先调用NET_DVR_SetDVRMessageCallBack_V50设置报警回调函数（V31、V30接口也支持，新接口兼容老接口），在SDK初始化之后即可以调用，多台设备对接时也只需要调用一次设置一个回调函数，回调函数里面接收数据之后可以通过报警设备信息(NET_DVR_ALARMER)中lUserID等参数判断区分设备。
    2) 每台设备分别登录，分别调用NET_DVR_SetupAlarmChan_V41进行布防，布防即建立设备跟客户端之间报警上传的连接通道，这样设备发生报警之后通过该连接上传报警信息，SDK在报警回调函数中接收和处理报警信息数据即可。
    3) 程序退出前或者不需要接收报警信息时调用NET_DVR_CloseAlarmChan_V30进行撤防，释放资源，此时连接断开，设备将不再上传报警信息。
  • 进入区域事件对应报警类型（lCommand）为COMM_ALARM_RULE，报警信息对应结构体：NET_VCA_RULE_ALARM，其中wEventTypeEx(行为事件类型)为ENUM_VCA_EVENT_ENTER_AREA。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.2 能力集和配置(Smart智能)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/capabilities)获取Smart智能事件能力集，<isSupportRegionEntrance>为true表示支持进入区域侦测功能。
  • 进入区域侦测相关参数配置，包括灵敏度、区域、布防时间、联动方式等，相关接口：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/regionEntrance/<channelID>/capabilities)获取Smart智能进入区域侦测参数能力集。
    2) 进入区域参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/regionEntrance/<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/regionEntrance/<channelID>)。
    3) 进入区域单个区域配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Smart/regionEntrance/<channelID>/regions/<regionID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Smart/regionEntrance/<channelID>/regions/<regionID>)。
    4) 进入区域联动参数配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/triggers/regionEntrance-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/triggers/regionEntrance-<channelID>)。
    5) 进入区域布防时间配置：NET_DVR_STDXMLConfig(命令：GET /ISAPI/Event/schedules/regionEntrances/regionEntrance-<channelID>)、NET_DVR_STDXMLConfig(命令：PUT /ISAPI/Event/schedules/regionEntrances/regionEntrance-<channelID>)。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.3 能力集和配置(专业智能方式一)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 登录设备之后，通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取智能通道分析能力集(VcaChanAbility)，通过节点<EnterArea>可以判断设备是否支持相关功能。
  • 进入区域参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式等，相关接口：NET_DVR_GetDeviceConfig(命令:NET_DVR_GET_RULECFG_V42)、NET_DVR_SetDeviceConfig(命令:NET_DVR_SET_RULECFG_V42)，对应结构体NET_VCA_RULECFG_V42中NET_VCA_ONE_RULE_V42的wEventType参数为ENUM_VCA_EVENT_ENTER_AREA。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

1.4 能力集和配置(专业智能方式二)

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 智能分析引擎配置：
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/System/capabilities)获取设备系统能力集可以判断设备是否支持智能引擎配置，对应节点<isSupportIntelligentAnalysisEngines>。NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/analysisEngines/capabilities)获取分析引擎参数能力。
    2) 单一引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines/<engineID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines/<engineID>)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括进入区域侦测在内的9种异常行为识别事件)。
    3) 全部引擎获取和配置：NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/analysisEngines)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/analysisEngines)，其中异常行为识别引擎节点<mode>为behavior表示异常行为识别(包括进入区域侦测在内的9种异常行为识别事件)。
  • 进入区域侦测参数配置，包括规则参数、灵敏度、阈值、布防时间、处理方式、联动参数等。
    1) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/capabilities获取智能通道分析能力集，其中节点<isRegionEntranceSupport>可以判断设备是否支持异常行为识别的进入区域侦测功能。
    2) NET_DVR_STDXMLConfig(命令：GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/rule/capabilities)获取专业智能异常行为识别规则配置能力集，其中<RegionEntranceParam>是进入区域侦测参数能力。
    3) 指定通道和场景的所有规则配置: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)、NET_DVR_STDXMLConfig(命令: PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>)，事件类型<eventType>为regionEntrance表示进入区域侦测。
    4) 联动参数配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/notifications)。
    5) 布防时间配置，相关接口: NET_DVR_STDXMLConfig(命令: GET /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules、PUT /ISAPI/Intelligent/channels/<channelID>/behaviorRule/<SID>/schedules)。
  • 进入区域侦测功能，除了联动录像、抓拍和报警等，在预览画面中也可以叠加蓝色框、绿色框（或者其他颜色，以实际效果为准）将规则区域、目标物体标识出来，该信息直接叠加到码流里面，客户端预览取流后使用我司播放库解码显示时将直接显示该信息。调用NET_DVR_RealPlay_V40传窗口句柄直接预览默认显示该叠加信息，此时调用NET_DVR_GetRealPlayerIndex获取播放库句柄，然后调用播放库接口PlayM4_RenderPrivateData（该接口调用请参考播放库SDK编程指南）可以控制显示或者取消显示。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源，一个程序只需要调用一次。

二、示例代码

下面示例代码为报警布防接收进入区域事件的C++示例代码，仅供参考。

#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include "HCNetSDK.h"
using namespace std;

//时间解析宏定义
#define GET_YEAR(_time_)      (((_time_)>>26) + 2000)
#define GET_MONTH(_time_)     (((_time_)>>22) & 15)
#define GET_DAY(_time_)       (((_time_)>>17) & 31)
#define GET_HOUR(_time_)      (((_time_)>>12) & 31)
#define GET_MINUTE(_time_)    (((_time_)>>6)  & 63)
#define GET_SECOND(_time_)    (((_time_)>>0)  & 63)

void CALLBACK cbMessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    switch(lCommand)
    {
        case COMM_ALARM_RULE: //异常行为识别报警信息
        {
            NET_VCA_RULE_ALARM struVcaAlarm = {0};
            memcpy(&struVcaAlarm, pAlarmInfo, sizeof(NET_VCA_RULE_ALARM));

            NET_DVR_TIME struAbsTime = {0};
            struAbsTime.dwYear = GET_YEAR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMonth = GET_MONTH(struVcaAlarm.dwAbsTime);
            struAbsTime.dwDay = GET_DAY(struVcaAlarm.dwAbsTime);
            struAbsTime.dwHour = GET_HOUR(struVcaAlarm.dwAbsTime);
            struAbsTime.dwMinute = GET_MINUTE(struVcaAlarm.dwAbsTime);
            struAbsTime.dwSecond = GET_SECOND(struVcaAlarm.dwAbsTime);

            //保存抓拍场景图片
            if (struVcaAlarm.dwPicDataLen > 0 && struVcaAlarm.pImage != NULL)
            {
                char cFilename[256] = {0};
                HANDLE hFile;
                DWORD dwReturn;

                char chTime[128];
                sprintf(chTime,"%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",struAbsTime.dwYear,struAbsTime.dwMonth,struAbsTime.dwDay,struAbsTime.dwHour,struAbsTime.dwMinute,struAbsTime.dwSecond);

                sprintf(cFilename, "VcaAlarmPic[%s][%s].jpg",struVcaAlarm.struDevInfo.struDevIP.sIpV4, chTime);

                hFile = CreateFile((LPCWSTR)cFilename, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                if (hFile == INVALID_HANDLE_VALUE)
                {
                    break;
                }
                WriteFile(hFile, struVcaAlarm.pImage, struVcaAlarm.dwPicDataLen, &dwReturn, NULL);
                CloseHandle(hFile);
                hFile = INVALID_HANDLE_VALUE;
            }

            WORD wEventType = struVcaAlarm.struRuleInfo.wEventTypeEx;

            printf("\n\n");
            printf("异常行为识别报警[0x%x]: Abs[%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d] Dev[ip:%s,port:%d,ivmsChan:%d] Smart[%d] EventTypeEx[%d]\n", \
                lCommand, struAbsTime.dwYear, struAbsTime.dwMonth, struAbsTime.dwDay, struAbsTime.dwHour, struAbsTime.dwMinute, \
                struAbsTime.dwSecond, struVcaAlarm.struDevInfo.struDevIP.sIpV4, struVcaAlarm.struDevInfo.wPort, \
                struVcaAlarm.struDevInfo.byIvmsChannel, struVcaAlarm.bySmart, wEventType);

                NET_VCA_TARGET_INFO tmpTargetInfo;
                memcpy(&tmpTargetInfo, &struVcaAlarm.struTargetInfo, sizeof(NET_VCA_TARGET_INFO));
                printf("目标信息:ID[%d]RECT[%f][%f][%f][%f]\n",
                tmpTargetInfo.dwID, tmpTargetInfo.struRect.fX, tmpTargetInfo.struRect.fY,
                tmpTargetInfo.struRect.fWidth, tmpTargetInfo.struRect.fHeight);

            switch(wEventType)
            {
                case ENUM_VCA_EVENT_ENTER_AREA: //进入区域报警
                {
                    printf("进入区域报警: 检测目标[%d]\n", \
                        struVcaAlarm.struRuleInfo.uEventParam.struArea.byDetectionTarget);

                    printf("规则区域: \n");
                    NET_VCA_POLYGON tempPolygon;
                    memcpy(&tempPolygon,&struVcaAlarm.struRuleInfo.uEventParam.struArea.struRegion,sizeof(NET_VCA_POLYGON));
                    for (int i = 0; i < (int)tempPolygon.dwPointNum ;i ++)
                    {
                        printf("[%f, %f] ",tempPolygon.struPos[i].fX,tempPolygon.struPos[i].fY);
                    }

                    break;
                }
                default:
                {
                    printf("其他报警，报警信息类型: 0x%x\n", lCommand);
                    break;
                }
            }
            break;
        }

        default:
        {
            printf("其他报警，报警信息类型: 0x%x\n", lCommand);
            break;
        }
    }

    return;
}

void main() {
    //---------------------------------------
    // 初始化
    NET_DVR_Init();
    //设置连接时间与重连时间
    NET_DVR_SetConnectTime(2000, 1);
    NET_DVR_SetReconnect(10000, true);

    //---------------------------------------
    // 注册设备
    LONG lUserID;

    //登录参数，包括设备地址、登录用户、密码等
    NET_DVR_USER_LOGIN_INFO struLoginInfo = {0};
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.0.0.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备信息, 输出参数
    NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0};

    lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40);
    if (lUserID < 0)
    {
        printf("Login failed, error code: %d\n", NET_DVR_GetLastError());
        NET_DVR_Cleanup();
        return;
    }

    //设置报警回调函数
    /*注：多台设备对接时也只需要调用一次设置一个回调函数，不支持不同设备的事件在不同的回调函数里面返回*/
    NET_DVR_SetDVRMessageCallBack_V50(0, cbMessageCallback, NULL);

    //启用布防
    LONG lHandle;
    NET_DVR_SETUPALARM_PARAM  struAlarmParam={0};
    struAlarmParam.dwSize=sizeof(struAlarmParam);
    //其他报警布防参数不需要设置，不支持

    lHandle = NET_DVR_SetupAlarmChan_V41(lUserID, & struAlarmParam);
    if (lHandle < 0)
    {
        printf("NET_DVR_SetupAlarmChan_V41 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //事件信息在回调函数里面获取
    //控制台输入q退出程序，否则一直运行
    char c = 0;
    while ('q' != c)
    {
        printf("input 'q' to quit\n");
        printf("input: ");
        scanf("%c", &c);
    }

    //撤销布防上传通道
    if (!NET_DVR_CloseAlarmChan_V30(lHandle))
    {
        printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
        NET_DVR_Logout(lUserID);
        NET_DVR_Cleanup();
        return;
    }

    //注销用户
    NET_DVR_Logout(lUserID);
    //释放SDK资源
    NET_DVR_Cleanup();
    return;
}


门禁人员管理-以卡为中心

人员管理(以卡为中心)

明眸门禁产品包括门禁主机、人员通道、明眸人证、梯控主机等。

人员管理包括人员工号、卡号、人脸、指纹等人员信息的下发、修改、查询、删除等。人员管理包括以人为中心和以卡为中心两种方式：

  1. 以人为中心，先下发人员信息（工号），再根据工号下发卡号、人脸或者指纹等。使用该方式对接时，工号是字符串，最长支持32位。
  2. 以卡为中心，先下发卡参数（可以一起下发工号），再根据卡号下发人脸、指纹等。使用该方式对接时，工号是整型的数字，最长只支持8位，取值范围是1~99999999。

目录

  • 人员管理(以卡为中心)
    • 目录
    • 一、卡参数管理
      • 1.1 获取所有卡参数
      • 1.2 按条件(指定卡号)查询卡参数
      • 1.3 下发卡参数
      • 1.4 删除卡参数
    • 二、人脸参数管理
      • 2.1 根据卡号查询人脸
      • 2.2 下发人脸参数
      • 2.3 删除人脸参数
      • 2.4 远程采集人脸
    • 三、指纹参数管理
      • 3.1 根据卡号查询指纹
      • 3.2 下发指纹参数
      • 3.3 删除指纹参数
      • 3.4 远程采集指纹
    • 四、示例代码

一、卡参数管理

1.1 获取所有卡参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 查询设备上所有卡参数包括卡号、工号、姓名、有效期、关联门权限和计划模板编号等：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_CARD)建立长连接，条件参数(NET_DVR_CARD_COND)中dwCardNum赋值为0xffffffff表示查询所有卡参数。
    2) 循环调用NET_DVR_GetNextRemoteConfig逐条获取查找的结果信息(NET_DVR_CARD_RECORD)。
    3) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.2 按条件(指定卡号)查询卡参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据卡号查询对应卡参数包括工号、姓名、有效期、关联门权限和计划模板编号等：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_CARD)建立长连接，条件参数(NET_DVR_CARD_COND)中dwCardNum指定查询个数(即可以批量查询)。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发需要查询的卡号条件(NET_DVR_CARD_SEND_DATA)并且获取查找的结果信息(NET_DVR_CARD_RECORD)。
    3) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.3 下发卡参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 下发卡参数包括工号、姓名、有效期、关联门权限和计划模板编号等：
    1)调用NET_DVR_StartRemoteConfig(命令: NET_DVR_SET_CARD)建立长连接，条件参数(NET_DVR_CARD_COND)中dwCardNum指定下发个数(即可以批量下发)。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发卡参数(NET_DVR_CARD_RECORD)并且获取下发的结果信息(NET_DVR_CARD_STATUS)。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 修改卡参数也是通过该接口流程实现的，设备上已经存在的卡号对应工号、姓名、有效期、关联门权限和计划模板编号可以修改，卡号不支持修改（需要删除然后重新下发）。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

1.4 删除卡参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 删除卡参数：
    1) 删除卡参数之前需要先删除卡号关联的人脸、指纹数据(详见人脸参数管理和指纹参数管理的介绍)：
    2) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_DEL_CARD)建立长连接，条件参数(NET_DVR_CARD_COND)中dwCardNum指定需要删除的个数。
    3) 循环调用NET_DVR_SendWithRecvRemoteConfig下发需要删除的卡号(NET_DVR_CARD_SEND_DATA)并且获取下发的结果信息(NET_DVR_CARD_STATUS)。
    4) 删除结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

二、人脸参数管理

2.1 根据卡号查询人脸

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据卡号查询关联的人脸图片数据：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_FACE)建立长连接，条件参数(NET_DVR_FACE_COND)中byCardNo表示需要查询的卡号，dwFaceNum指定查询个数，目前一个卡号只支持关联一个人脸图片，因此建立一次长连接只能查询一个。
    2) 循环调用NET_DVR_GetNextRemoteConfig逐条获取查找的结果信息(NET_DVR_FACE_RECORD)。
    3) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.2 下发人脸参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 下发人脸图片数据到设备人脸库：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_SET_FACE)建立长连接，条件参数(NET_DVR_FACE_COND)中byCardNo表示卡号，dwFaceNum指定下发的个数。支持批量下发，批量下发的时候条件参数中的byCardNo不需要赋值。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig下发人脸参数(NET_DVR_FACE_RECORD)并且获取下发的结果信息(NET_DVR_FACE_STATUS)。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.3 删除人脸参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 调用NET_DVR_RemoteControl(命令: NET_DVR_DEL_FACE_PARAM_CFG)删除人脸数据，支持按卡号和按读卡器删除，按读卡器方式可以删除指定读卡器下的所有人脸图片。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

2.4 远程采集人脸

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 远程采集人脸是指客户端下发采集命令给设备，设备本地开启人脸采集窗口，刷脸之后采集到的人脸数据再上传给客户端：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_CAPTURE_FACE_INFO)建立长连接，开启人脸采集。
    2) 循环调用NET_DVR_GetNextRemoteConfig直到获取到采集结果(NET_DVR_CAPTURE_FACE_CFG)。开启人脸采集之后设备端需要采集时间之内(一般是5秒)刷脸，否则就会超时采集失败。
    3) 采集到人脸之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

三、指纹参数管理

3.1 根据卡号查询指纹

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 根据卡号查询关联的指纹数据：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_GET_FINGERPRINT)建立长连接，条件参数(NET_DVR_FINGERPRINT_COND)中byCardNo表示需要查询的卡号，dwFingerprintNum指定查询个数。
    2) 循环调用NET_DVR_GetNextRemoteConfig逐条获取查找的结果信息(NET_DVR_FINGERPRINT_RECORD)。
    3) 查询结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

3.2 下发指纹参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 下发指纹数据到设备：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_SET_FINGERPRINT)建立长连接，条件参数(NET_DVR_FINGERPRINT_COND)中byCardNo表示指纹关联的卡号，dwFingerprintNum指定下发的个数。支持批量下发，批量下发的时候条件参数中的byCardNo不需要赋值。
    2) 循环调用NET_DVR_SendWithRecvRemoteConfig逐条下发指纹数据(NET_DVR_FINGERPRINT_RECORD)并且获取下发结果(NET_DVR_FINGERPRINT_STATUS)。
    3) 下发结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

3.3 删除指纹参数

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 删除卡号关联的指纹数据：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_DEL_FINGERPRINT)建立长连接，条件参数(NET_DVR_FINGER_PRINT_INFO_CTRL_V50)中指定删除方式以及对应的卡号或者读卡器编号。按读卡器方式可以删除指定读卡器下的所有指纹数据。
    2) 循环调用NET_DVR_GetNextRemoteConfig逐条获取删除的结果信息(NET_DVR_FINGER_PRINT_INFO_STATUS_V50)。
    3) 删除结束之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

3.4 远程采集指纹

  • 初始化NET_DVR_Init接口在程序开始是调用，一个程序只需要调用一次。
  • 用户注册即登录设备，调用NET_DVR_Login_V40接口，每一台设备只需要登录一次。
  • 远程采集指纹是指客户端下发采集命令给设备，设备本地开启指纹采集窗口，指纹采集之后将采集到的指纹数据再上传给客户端：
    1) 调用NET_DVR_StartRemoteConfig(命令: NET_DVR_CAPTURE_FINGERPRINT_INFO)建立长连接，开启指纹采集。
    2) 循环调用NET_DVR_GetNextRemoteConfig直到获取到采集结果(NET_DVR_CAPTURE_FINGERPRINT_CFG)。开启指纹采集之后设备端需要采集时间之内(一般是5秒)进行指纹采集，否则就会超时采集失败。
    3) 采集到指纹数据之后调用NET_DVR_StopRemoteConfig关闭长连接，释放资源。
  • 退出程序时调用NET_DVR_Logout注销设备，每一台设备调用一次。最后调用NET_DVR_Cleanup释放SDK所有资源。

四、示例代码

#include "stdafx.h"
#include "include\HCNetSDK.h"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

int DoLogin(); //注册登录设备

void GetAllCard(int lLoginID);//查询所有卡参数
void SetOneCard(int lLoginID, string strCardNO, DWORD strEmployeeNo);//下发卡参数
void GetOneCard(int lLoginID, string strCardNO);//查询指定卡号的卡参数

void SetOneFace(int lLoginID, string strCardNO);//下发人脸图片
void GetOneFace(int lLoginID, string strCardNO);//查询人脸图片

int byEncodeType = 0;//设备字符集

/****************************************
Function:    UTF8ToAnsi
Description: UTF-8字符转换成Ansi字符
Input:       szAnsiString UTF-8字符
Return:      Ansi字符
****************************************/
char* UTF8ToAnsi(const char *szUTF8String)
{
#if defined(_WIN32) || defined(_WIN64)
    WCHAR* strSrc = NULL;
    char* szRes = NULL;

    int i = MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, NULL, 0);

    strSrc = new WCHAR[(size_t)i + 1];
    MultiByteToWideChar(CP_UTF8, 0, szUTF8String, -1, strSrc, i);

    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);

    szRes = new char[(size_t)i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    delete[] strSrc;
    strSrc = NULL;

    return szRes;

#else
    char *outbuf = 0;
    if (szUTF8String)
    {
        iconv_t cd = iconv_open("EUC-CN", "UTF-8");
        if (cd)
        {
            size_t contlen = strlen(szUTF8String);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szUTF8String);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

char* AnsiToUTF8(const char *szAnsiString)
{
#if defined(_WIN32) || defined(_WIN64)
    if (szAnsiString == NULL || strlen(szAnsiString) == 0)
    {
        return NULL;
    }
    //AnsiToUnicode
    //预转换，得到所需空间的大小
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), NULL, 0);

    //分配空间要给'\0'留个空间，MultiByteToWideChar不会给'\0'空间
    wchar_t* wszUnicodeString = new wchar_t[(size_t)wcsLen + 1];

    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsiString, (int)strlen(szAnsiString), wszUnicodeString, wcsLen);

    //最后加上'\0'
    wszUnicodeString[wcsLen] = '\0';

    // unicode to UTF8
    //预转换，得到所需空间的大小，这次用的函数和上面名字相反
    int UTF8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), NULL, 0, NULL, NULL);

    //同上，分配空间要给'\0'留个空间
    //UTF8虽然是Unicode的压缩形式，但也是多字节字符串，所以可以以char的形式保存
    char* szUTF8 = new char[(size_t)UTF8Len + 1];

    //转换
    //unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszUnicodeString, (int)wcslen(wszUnicodeString), szUTF8, UTF8Len, NULL, NULL);

    //最后加上'\0'
    szUTF8[UTF8Len] = '\0';

    delete[] wszUnicodeString;
    wszUnicodeString = NULL;

    return szUTF8;

#else
    if (NULL == szAnsiString)
    {
        return NULL;
    }
    char *outbuf = 0;
    if (szAnsiString)
    {
        iconv_t cd = iconv_open("UTF-8", "EUC-CN");
        if (cd)
        {
            size_t contlen = strlen(szAnsiString);
            size_t outbuflen = contlen * 3 + 1;
            outbuf = new char[outbuflen];
            memset(outbuf, 0, outbuflen);

            char *inptr = const_cast<char*>(szAnsiString);
            char *outptr = outbuf;

            size_t inlen = contlen;
            size_t outlen = outbuflen;
            if (iconv(cd, &inptr, &inlen, &outptr, &outlen) == (size_t)(-1))
            {
                outbuf = 0;
            }

            iconv_close(cd);
        }
    }
    return outbuf;
#endif
}

int _tmain(int argc, _TCHAR* argv[])
{
    //SDK初始化
    NET_DVR_Init();

    //注册登录设备
    int lUserID = DoLogin();

    if (lUserID >= 0)
    {
        //查询所有卡参数
        GetAllCard(lUserID);
        Sleep(1000);

        //卡号
        string cardNo = "12345678";
        //工号（用户ID），1~99999999，不能以0开头且不能重复
        DWORD dwEmployeeNo = 7654321;

        //下发卡参数
        SetOneCard(lUserID, cardNo, dwEmployeeNo);
        Sleep(1000);

        //查询指定卡号的卡参数
        GetOneCard(lUserID, cardNo);
        Sleep(1000);

        //下发人脸图片
        SetOneFace(lUserID, cardNo);
        Sleep(1000);

        //查询人脸图片
        GetOneFace(lUserID, cardNo);
        Sleep(1000);

        //程序退出时注销登录
        NET_DVR_Logout(lUserID);
    }

    //程序退出时释放SDK资源
    NET_DVR_Cleanup();
    return 0;
}

// 设备登录
int DoLogin()
{
    NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 };
    struLoginInfo.bUseAsynLogin = 0; //同步登录方式
    strcpy(struLoginInfo.sDeviceAddress, "192.168.1.64"); //设备IP地址
    struLoginInfo.wPort = 8000; //设备服务端口
    strcpy(struLoginInfo.sUserName, "admin"); //设备登录用户名
    strcpy(struLoginInfo.sPassword, "abcd1234"); //设备登录密码

    //设备参数结构体
    NET_DVR_DEVICEINFO_V40 DeviceInfoV40 = { 0 };
    memset(&DeviceInfoV40, 0, sizeof(NET_DVR_DEVICEINFO_V40));

    //设备注册
    int lLoginID = NET_DVR_Login_V40(&struLoginInfo, &DeviceInfoV40);
    if (lLoginID< 0)
    {
        cout << "注册失败, 错误码: " << NET_DVR_GetLastError() << endl;
    }
    if (lLoginID >= 0)
    {
        byEncodeType = DeviceInfoV40.byCharEncodeType;
        cout << "注册成功，设备字符集类型：" << byEncodeType << endl;
        //字符编码类型（SDK所有接口返回的字符串编码类型，透传接口除外）：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)
    }
    return lLoginID;
}

////////////////////////////////
//获取所有的卡
void GetAllCard(int lLoginID)
{
    NET_DVR_CARD_COND  struCardCond = { 0 };
    struCardCond.dwSize = sizeof(struCardCond);
    struCardCond.dwCardNum = 0xffffffff;  //查询所有
    int m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_GET_CARD, &struCardCond, sizeof(struCardCond), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << ("建立查询卡参数长连接失败，错误码为:%d", NET_DVR_GetLastError()) << endl;
        return;
    }
    else
    {
        cout << "建立查询卡参数长连接成功！" << endl;
    }
    NET_DVR_CARD_RECORD struCardRecord = { 0 };
    struCardCond.dwSize = sizeof(struCardCond);

    DWORD pInt = 0;
    DWORD dwState = -1;
    while (true)
    {
        dwState = NET_DVR_GetNextRemoteConfig(m_lSetCardCfgHandle, &struCardRecord, sizeof(struCardRecord));
        if (dwState == -1)
        {
            cout << "NET_DVR_SendWithRecvRemoteConfig查询卡参数调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "获取卡参数失败" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "获取卡参数异常" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            //中文字符，需要根据设备实际字符集处理
            BYTE byUserName[32] = { 0 };
            if (byEncodeType == 6)
            {
                strcpy((char*)byUserName, UTF8ToAnsi((char*)struCardRecord.byName));
            }
            else
            {
                strcpy((char*)byUserName, (char*)struCardRecord.byName);
            }

            cout << "获取卡参数成功, 卡号: " << struCardRecord.byCardNo << ", 卡类型：" << (int)struCardRecord.byCardType
                << ", 姓名：" << byUserName << endl;
            continue;

        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "获取卡参数完成" << endl;
            break;
        }
    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
    return;
}

///////////////////////////////
//下发一张卡
void SetOneCard(int lLoginID, string strCardNO, DWORD dwEmployeeNo)
{
    NET_DVR_CARD_COND struCardCond = { 0 };
    struCardCond.dwSize = sizeof(struCardCond);
    struCardCond.dwCardNum = 1;  //下发一张卡

    int m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_SET_CARD, &struCardCond, sizeof(struCardCond), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << "建立下发卡参数长连接失败，错误码为:"<< NET_DVR_GetLastError() << endl;
        return;
    }
    else
    {
        cout << "建立下发卡参数长连接成功！" << endl;
    }

    NET_DVR_CARD_RECORD struCardRecord = { 0 };
    struCardRecord.dwSize = sizeof(struCardRecord);
    for (int i = 0; i < ACS_CARD_NO_LEN; i++)
    {
        struCardRecord.byCardNo[i] = 0;
    }
    for (int i = 0; i < strCardNO.length(); i++)
    {
        struCardRecord.byCardNo[i] = strCardNO[i];
    }
    struCardRecord.byCardType = 1; //普通卡
    struCardRecord.byLeaderCard = 0; //是否为首卡，0-否，1-是
    struCardRecord.byUserType = 0;
    struCardRecord.byDoorRight[0] = 1; //门1有权限

    struCardRecord.struValid.byEnable = 1;  //卡有效期使能，下面是卡有效期从2000-1-1 11:11:11到2030-1-1 11:11:11
    struCardRecord.struValid.byBeginTimeFlag = 1;
    struCardRecord.struValid.byEnableTimeFlag = 1;
    struCardRecord.struValid.struBeginTime.wYear = 2020;
    struCardRecord.struValid.struBeginTime.byMonth = 1;
    struCardRecord.struValid.struBeginTime.byDay = 1;
    struCardRecord.struValid.struBeginTime.byHour = 11;
    struCardRecord.struValid.struBeginTime.byMinute = 11;
    struCardRecord.struValid.struBeginTime.bySecond = 11;
    struCardRecord.struValid.struEndTime.wYear = 2037;
    struCardRecord.struValid.struEndTime.byMonth = 1;
    struCardRecord.struValid.struEndTime.byDay = 1;
    struCardRecord.struValid.struEndTime.byHour = 11;
    struCardRecord.struValid.struEndTime.byMinute = 11;
    struCardRecord.struValid.struEndTime.bySecond = 11;

    struCardRecord.wCardRightPlan[0] = 1;//卡计划模板1有效
    struCardRecord.dwEmployeeNo = dwEmployeeNo; //工号
    struCardRecord.byBelongGroup[0] = 1;//所属群组，按字节表示，1-属于，0-不属于，从低位到高位表示是否从属群组1~N

    //需要根据设备实际字符集进行赋值
    if (byEncodeType == 6)
    {
        strcpy((char *)struCardRecord.byName, AnsiToUTF8("张三123")); //姓名
    }
    else
    {
        strcpy((char *)struCardRecord.byName, "张三123"); //姓名
    }

    NET_DVR_CARD_STATUS struCardStatus = { 0 };
    struCardStatus.dwSize = sizeof(struCardStatus);
    DWORD pInt = 0;

    DWORD dwState = -1;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &struCardRecord, sizeof(struCardRecord),
            &struCardStatus, sizeof(struCardStatus), &pInt);
        if (dwState == -1){
            cout << "NET_DVR_SendWithRecvRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout<<"配置等待"<<endl;
            Sleep(10);
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout<<"下发卡失败, 卡号: " <<struCardStatus.byCardNo <<", 错误码："<<struCardStatus.dwErrorCode<<endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout<<"下发卡异常, 卡号: "<<struCardStatus.byCardNo<< ", 错误码："<<struCardStatus.dwErrorCode<<endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS)
        {
            if (struCardStatus.dwErrorCode != 0){
                cout << "下发卡成功,但是错误码:" << struCardStatus.dwErrorCode << ", 卡号：" << struCardStatus.byCardNo << endl;
            }
            else{
                cout << "下发卡成功, 卡号: " << struCardStatus.byCardNo << ", 状态：" << (int)struCardStatus.byStatus << endl;
            }
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout<<"下发卡完成"<<endl;
            break;
        }

    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError()<<endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
}

// 按条件查询一张卡
void GetOneCard(int lLoginID, string strCardNO)
{
    NET_DVR_CARD_COND struCardCond = { 0 };
    struCardCond.dwSize = sizeof(struCardCond);
    struCardCond.dwCardNum = 1;  //查询一张卡

    int m_lSetCardCfgHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_GET_CARD, &struCardCond, sizeof(struCardCond), NULL, NULL);
    if (m_lSetCardCfgHandle == -1)
    {
        cout << ("建立查询卡参数长连接失败，错误码为:%d", NET_DVR_GetLastError()) << endl;
        return;
    }
    else
    {
        cout << "建立查询卡参数长连接成功！" << endl;
    }

    //查找指定卡号的参数，需要下发查找的卡号条件
    NET_DVR_CARD_SEND_DATA struCardNo = { 0 };
    struCardNo.dwSize = sizeof(struCardNo);

    for (int i = 0; i < ACS_CARD_NO_LEN; i++)
    {
        struCardNo.byCardNo[i] = 0;
    }
    for (int i = 0; i < strCardNO.length(); i++)
    {
        struCardNo.byCardNo[i] = strCardNO[i];
    }

    NET_DVR_CARD_RECORD struCardRecord = { 0 };
    struCardCond.dwSize = sizeof(struCardCond);

    DWORD pInt = 0;
    DWORD dwState = -1;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, &struCardNo, sizeof(struCardNo), &struCardRecord, sizeof(struCardRecord), &pInt);
        if (dwState == -1)
        {
            cout << "NET_DVR_SendWithRecvRemoteConfig查询卡参数调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "获取卡参数失败" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "获取卡参数异常" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            //中文字符，需要根据设备实际字符集处理
            BYTE byUserName[32] = { 0 };
            if (byEncodeType == 6)
            {
                strcpy((char*)byUserName, UTF8ToAnsi((char*)struCardRecord.byName));
            }
            else
            {
                strcpy((char*)byUserName, (char*)struCardRecord.byName);
            }
            cout << "获取卡参数成功, 卡号: " << struCardRecord.byCardNo << ", 卡类型：" << (int)struCardRecord.byCardType
                << ", 姓名：" << byUserName << endl;
            continue;

        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "获取卡参数完成" << endl;
            break;
        }
    }
    if (!NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：%d" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
}

///////////////////
//下发人脸图片
void SetOneFace(int lLoginID, string strCardNO)
{
    NET_DVR_FACE_COND struFaceCond = { 0 };
    struFaceCond.dwSize = sizeof(struFaceCond);
    struFaceCond.dwFaceNum = 1;  //下发一个
    struFaceCond.dwEnableReaderNo = 1;//人脸读卡器编号

    int iFaceSetHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_SET_FACE, &struFaceCond, sizeof(struFaceCond), NULL, NULL);
    if (iFaceSetHandle == -1)
    {
        cout << "建立下发人脸参数长连接失败，错误码为:" << NET_DVR_GetLastError() << endl;
        return;
    }
    else
    {
        cout << "建立下发人脸参数长连接成功！" << endl;
    }

    NET_DVR_FACE_RECORD struFaceRecord = { 0 };
    struFaceRecord.dwSize = sizeof(struFaceRecord);

    //关联的卡号
    for (int i = 0; i < ACS_CARD_NO_LEN; i++)
    {
        struFaceRecord.byCardNo[i] = 0;
    }
    for (int i = 0; i < strCardNO.length(); i++)
    {
        struFaceRecord.byCardNo[i] = strCardNO[i];
    }

    //读取本地人脸图片
    FILE* fp = NULL;
    BYTE* byteBuffer = NULL;
    int jpgSize = 0;
    fp = fopen("E:\\FacePicture.jpg", "rb");

    if (fp == NULL)
    {
        printf("读取图片E:\\face.jpg失败\n");
        return;
    }

    if (fp)
    {
        //求得文件的大小
        fseek(fp, 0, SEEK_END);
        jpgSize = ftell(fp);
        rewind(fp);
        byteBuffer = new BYTE[jpgSize + 1];
        fread(byteBuffer, jpgSize, 1, fp);
        struFaceRecord.pFaceBuffer = byteBuffer;
        struFaceRecord.dwFaceLen = jpgSize;
        printf("读取图片E:\\face.jpg成功，图片大小：%d字节\n", jpgSize);
        fclose(fp);
        fp = NULL;
    }

    //下发结果状态信息
    NET_DVR_FACE_STATUS struFaceStatus = { 0 };
    struFaceStatus.dwSize = sizeof(struFaceStatus);
    DWORD pInt = 0;

    DWORD dwState = -1;
    while (true)
    {
        dwState = NET_DVR_SendWithRecvRemoteConfig(iFaceSetHandle, &struFaceRecord, sizeof(struFaceRecord),
            &struFaceStatus, sizeof(struFaceStatus), &pInt);
        if (dwState == -1){
            cout << "NET_DVR_SendWithRecvRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "配置等待" << endl;
            Sleep(10);
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "下发人脸失败, 卡号: " << struFaceStatus.byCardNo << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "下发人脸异常, 卡号: " << struFaceStatus.byCardNo << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS)
        {
            if (struFaceStatus.byRecvStatus != 1){
                cout << "下发人脸成功，但是人脸图片不正常, 卡号：" << struFaceStatus.byCardNo << ", 读卡器状态:" << (int)struFaceStatus.byRecvStatus << endl;
            }
            else{
                cout << "下发人脸成功, 卡号: " << struFaceStatus.byCardNo << ", 读卡器状态：" << (int)struFaceStatus.byRecvStatus << endl;
            }
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "下发人脸完成" << endl;
            break;
        }

    }
    if (!NET_DVR_StopRemoteConfig(iFaceSetHandle)){
        cout << "NET_DVR_StopRemoteConfig接口调用失败，错误码：" << NET_DVR_GetLastError() << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig接口成功" << endl;
    }
}

//查询人脸图片
void GetOneFace(int lLoginID, string strCardNO)
{
    NET_DVR_FACE_COND structFaceCOND = { 0 };

    structFaceCOND.dwSize = sizeof(structFaceCOND);
    structFaceCOND.dwFaceNum = 1;

    //卡号，先初始化再赋值
    for (int i = 0; i < ACS_CARD_NO_LEN; i++)
    {
        structFaceCOND.byCardNo[i] = 0;
    }
    for (int i = 0; i < strCardNO.length(); i++)
    {
        structFaceCOND.byCardNo[i] = strCardNO[i];
    }

    structFaceCOND.dwEnableReaderNo = 1;

    int lHandle = NET_DVR_StartRemoteConfig(lLoginID, NET_DVR_GET_FACE, &structFaceCOND, sizeof(structFaceCOND), NULL, NULL);
    if (lHandle < 0)
    {
        cout << "NET_DVR_GET_FACE failed, error code:" << NET_DVR_GetLastError() << "\n" << endl;
    }
    else
    {
        cout << "NET_DVR_GET_FACE succ\n" << endl;
    }

    NET_DVR_FACE_RECORD structFaceRECORD = { 0 };
    structFaceRECORD.dwSize = sizeof(NET_DVR_FACE_RECORD);

    while (true)
    {
        long dwState = NET_DVR_GetNextRemoteConfig(lHandle, &structFaceRECORD, sizeof(structFaceRECORD));
        if (dwState == -1)
        {
            cout << "NET_DVR_GetNextRemoteConfig failed, error code:" << NET_DVR_GetLastError() << "\n" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_NEEDWAIT)
        {
            cout << "NET_SDK_CONFIG_STATUS_NEEDWAIT\n" << endl;
            continue;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FAILED)
        {
            cout << "NET_SDK_CONFIG_STATUS_FAILED\n" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_EXCEPTION)
        {
            cout << "NET_SDK_CONFIG_STATUS_EXCEPTION\n" << endl;
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_SUCCESS){
            cout << "NET_SDK_CONFIG_STATUS_SUCCESS, CardNo:" << structFaceRECORD.byCardNo << ", PicLen: " << structFaceRECORD.dwFaceLen << "\n" << endl;

            //保存人脸图片
            if (structFaceRECORD.dwFaceLen > 0)
            {
                char cFilename[256] = { 0 };
                sprintf(cFilename, "%s_facepic.jpg", strCardNO);
                FILE *fFacePic = fopen(cFilename, "wb");
                fwrite(structFaceRECORD.pFaceBuffer, structFaceRECORD.dwFaceLen, 1, fFacePic);
                fclose(fFacePic);
                fFacePic = NULL;
            }
            break;
        }
        else if (dwState == NET_SDK_CONFIG_STATUS_FINISH) {
            cout << "NET_SDK_CONFIG_STATUS_FINISH\n" << endl;
            break;
        }
    }

    if (!NET_DVR_StopRemoteConfig(lHandle)){
        cout << "NET_DVR_StopRemoteConfig failed, error code:" << NET_DVR_GetLastError() << "\n" << endl;
    }
    else{
        cout << "NET_DVR_StopRemoteConfig succ\n" << endl;
    }
}


AIOPData示例Json数据

{
    "width":"512",                                  /*必填，string，maxLen=32，图片宽*/
    "height":"288",                                 /*必填，string，maxLen=32，图片高*/
    "targets":[                                     /*选填，array，输出目标*/
        {
            "obj":{                                 /*选填，object，检测跟踪输出目标*/
                "modelID":"uuid",                   /*必填，string，模型id  当前版本检测只有一个模型*/
                "id":1,                             /*必填，*/
                "type":0,                           /*必填，int，算法分析返回结果值*/
                "confidence":1000,                  /*必填，int，range=[0,1000]，检测结果置信度*/
                "valid":1,                          /*必填，int，目标是否有效 0无效  1 有效*/
                "visible":1,                        /*必填，int，目标是否可见 0不可见，1 可见*/
                "rect":{                            /*选填，object，目标框，*/
                    "x":"0.217483",                 /*必填，string，maxLen=32，目标框x值*/
                    "y":"0.588785",                 /*必填，string，maxLen=32，目标框y值*/
                    "w":"0.149191",                 /*必填，string，maxLen=32，目标框W值*/
                    "h":"0.409346"                  /*必填，string，maxLen=32，目标框h值*/
                },
                "polygon":[                         /*选填，object，旋转矩形框，现在只针对OCR项目*/
                    {
                        "x":"0.446360",             /*必填，string，maxLen=32，目标框第一个坐标x值*/
                        "y":"0.383170"              /*必填，string，maxLen=32，目标框第一个坐标y值*/
                    },
                    {
                        "x":"0.571710",             /*必填，string，maxLen=32，目标框第二个坐标x值*/
                        "y":"0.385769"              /*必填，string，maxLen=32，目标框第二个坐标x值*/
                    },
                    {
                        "x":"0.570812",             /*必填，string，maxLen=32，目标框第三个坐标x值*/
                        "y":"0.518384"              /*必填，string，maxLen=32，目标框第三个坐标x值*/
                    },
                    {
                        "x":"0.445462",             /*必填，string，maxLen=32，目标框第四个坐标x值*/
                        "y":"0.515785"              /*必填，string，maxLen=32，目标框第四个坐标x值*/
                    }
                ]
            },
            "properties":[                          /*选填，object，分类结果*/
                {
                    "modelID":"uuid",               /*必填，string，模型id*/
                    "classify":{                    /*选填，object，分类结果*/
                        "attrType":1,               /*必填，int，分类类型*/
                        "attrValue":1,              /*必填，int，分类属性*/
                        "attrConf":1000             /*必填，int，range=[0,1000]，分类结果置信度*/
                    },
                    "ocrclassify":{                 /*选填，object，文字识别结果，目前只针对文字识别项目*/
                        "OcrResult":"7B",           /*必填，string，文字识别内容*/
                        "OcrConf":1000              /*必填，int，改行文字内容的置信度*/
                    }
                }
            ]
        }
    ],
    "events":{                                      /*选填，object，事件结果*/
        "alertInfo":[                               /*选填，object，报警结果*/
            {
                "target":{                          /*必填，object，目标*/
                    "id":1,                         /*必填，int，目标id*/
                    "type":0,                       /*必填，int，算法分析返回目标类型*/
                    "confidence":1000,              /*必填，int，range=[0,1000]，结果置信度*/
                    "region":{                      /*必填，object，目标框，polygon和rect只显示一个*/
                        "polygon":[                 /*选填，object，多边形*/
                            {
                                "x":"0.217483",     /*必填，string，maxLen=32，目标框x值*/
                                "y":"0.588785"      /*必填，string，maxLen=32，目标框y值*/
                            }
                        ],
                        "rect":{                    /*选填，object，矩形*/
                            "x":"0.217483",         /*必填，string，maxLen=32，目标框x值*/
                            "y":"0.588785",         /*必填，string，maxLen=32，目标框y值*/
                            "w":"0.149191",         /*必填，string，maxLen=32，目标框W值*/
                            "h":"0.409346"          /*必填，string，maxLen=32，目标框h值*/
                        }
                    }
                },
                "ruleInfo":{                        /*必填，object，规则信息*/
                    "ruleID":1,                     /*必填，int，规则id*/
                    "triggerType":1,                /*必填，int，事件类型*/
                    "movDir":1,                     /*必填，int，运动方向   0 双向，1由左至右 ，2由右至左*/
                    "region":{                      /*必填，object，检测区域，polygon和rect只显示一个*/
                        "polygon":[
                            {
                                "x":"0.217483",     /*必填，string，maxLen=32，目标框x值*/
                                "y":"0.588785"      /*必填，string，maxLen=32，目标框y值*/
                            }
                        ],
                        "rect":{
                            "x":"0.217483",         /*必填，string，maxLen=32，目标框x值*/
                            "y":"0.588785",         /*必填，string，maxLen=32，目标框y值*/
                            "w":"0.149191",         /*必填，string，maxLen=32，目标框W值*/
                            "h":"0.409346"          /*必填，string，maxLen=32，目标框h值*/
                        }
                    }
                }
            }
        ],
        "statInfo":[                                /*选填，object，状态结果*/
            {
                "ruleID":1,                         /*必填，int，规则id*/
                "statType":1,                       /*必填，int，统计区域的状态*/
                "statParam":{                       /*必填，object，状态参数*/
                    "regionCount":{                 /*选填，object，目标统计参数*/
                        "targetNum":4               /*必填，int，目标数量*/
                    },
                    "pdcCount":{                    /*选填，object，流量统计参数*/
                        "leaveNum":100,             /*必填，int，离开数量*/
                        "enterNum":222              /*必填，int，进入数量*/
                    }
                }
            }
        ]
    }
}


AlgorithmModel示例Json数据

{
    "engine":[1,2,3,4],                             /*可选，integer类型数组，用于区分不同引擎中运行的模型，当不填写该字段的时候表示不做绑定，只存储在设备内部，如果携带engine，默认进行绑定*/
    "MPID":"",                                      /*必填, string类型, strlen==64, 模型ID, 由业务平台管理，设备透传记录, 用于区分模型包信息*/
    "URL":"",                                       /*可选, string类型, maxLen == 256, 算法模型下载的URL, 业务平台需要保证下发到设备的模型下载URL是有效可访问的，鉴权需要在URL中实现*/
    "MPName":"",                                    /*可选, string类型, maxLen == 128, 模型包名称*/
    "description":[                                 /*"description"来自于萤石下载模型返回一个打包后的模型url+一个json格式的描述文件,需要从文件中整段截取"description"节点*/
        {

        }
    ],
    "authorized":true,                              /*可选,Boolean类型,是否为授权模型*/
    "appID":"",                                     /*可选, string类型, appID,maxLen == 64,用户提交训练任务后, 后台执行模型训练操作（该步骤与原有步骤相同）, Saas保存训练任务ID作appID*/
    "licenseKeyUrl":""                              /*可选, string类型, maxLen == 256, licenseKey文件下载的URL, 业务平台需要保证下发到设备下载licenseKeyURL是有效可访问的, 鉴权需要在URL中实现*/
}


EVENT_JSON_Density

人员密度事件JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,32]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "personDensityDetection",
    /*ro, req, string, 触发的事件类型, range:[,128], desc:personDensityDetection - 人员密度检测报警事件*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始 或者 无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Person Density Detection",
    /*ro, req, string, 事件描述, range:[,], desc:人员密度检测报警事件检测(Person Density Detection)*/
    "channelName":  "test",
    /*ro, opt, string, 通道名称（监控点名称）, range:[1,64]*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:在ehome协议接入透传ISAPI事件信息中必须返回*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据*/
    "personDensityResult": {
    /*ro, opt, object, 人员密度检测结果*/
        "Target": [
        /*ro, opt, array, 目标, subType:object, range:[,]*/
            {
                "recognitionType":  "human",
                /*ro, req, string, 识别目标类型, range:[,]*/
                "TargetInfo": {
                /*ro, opt, object, 目标信息*/
                    "recognition":  "personDensityDetection",
                    /*ro, req, string, 识别事件类型, range:[,]*/
                    "dataSource":  "timing",
                    /*ro, req, enum, 检测数据来源, subType:string, [timing#定时统计,trigger#人员密度等级（拥堵等级）变化触发上传（超过设置的等级限制）,PDC#当任何一个检测区域的人数发生变化时上报报警,PQA#当区域内人数异常时则上报报警,DSA#当区域内人员停留时间异常时则上报报警]*/
                    "framesPeopleCounting_number":  0,
                    /*ro, opt, int, 单帧画面人数统计, range:[,], step:, unit:, unitType:*/
                    "densityLevel":  1,
                    /*ro, opt, int, 密度等级值, range:[1,3], step:, unit:, unitType:, desc:在定时统计的模式下，如果统计的结果没有达到设置的等级限制，该字段不要上传*/
                    "personCnt":  0,
                    /*ro, opt, int, 密度等级中的统计人数限制, range:[,], step:, unit:, unitType:, desc:在定时统计的模式下，如果统计的结果没有达到设置的等级限制，该字段不要上传*/
                    "customName":  "高",
                    /*ro, opt, string, 密度等级配置自定义信息, range:[,], desc:在定时统计的模式下，如果统计的结果没有达到设置的等级限制，该字段不要上传*/
                    "densityLevelChangeType":  "highToLow",
                    /*ro, opt, enum, 人员密度等级变化类型, subType:string, [highToLow#由高到低,lowToHigh#由低到高]*/
                    "regionName":  "区域1",
                    /*ro, opt, string, 人员密度检测区域名称, range:[,], desc:与人员密度配置保持一致,若只支持单个区域配置的设备则无需返回该字段*/
                    "regionID":  1,
                    /*ro, opt, int, 区域ID, range:[,], step:, unit:, unitType:*/
                    "occupancyRatio":  1,
                    /*ro, opt, int, 占空比, range:[0,100], step:, unit:, unitType:, desc:区域中人员所占像素占整个区域面积的比例,单位:%*/
                    "DSA": {
                    /*ro, opt, object, 人员停留时间报警*/
                        "alarmTime":  600,
                        /*ro, req, int, 该规则区域中人员等待时长规则值, range:[0,3600], step:, unit:s, unitType:时间*/
                        "timeTriggerType":  "greater",
                        /*ro, opt, enum, 等待时间报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于], desc:该节点需与alarmTime节点配合使用。例如：检测规则配置为alarmTime=600s,countingTriggerType=greater时,则设备当等待时间大于600s时才会上报报警, 报警时alarmTime为实际触发值, countingTriggerType为触发条件,即与配置规则保持一致countingTriggerType=greater。注：该节点若不支持，设备的报警触发类型默认当大于来处理。*/
                        "Region": [
                        /*ro, req, array, 规则区域坐标, subType:object, range:[,], desc:3~10边形*/
                            {
                                "x":  0.120,
                                /*ro, req, float, x坐标, range:[0.000,1], step:, unit:, unitType:*/
                                "y":  0.120
                                /*ro, req, float, y坐标, range:[0.000,1], step:, unit:, unitType:*/
                            }
                        ]
                    },
                    "PQA": {
                    /*ro, opt, object, 人数异常报警*/
                        "alarmCount":  10,
                        /*ro, req, int, 规则区域统计人数规则值, range:[0,60], step:, unit:, unitType:*/
                        "countTriggerType":  "greater",
                        /*ro, opt, enum, 等待人数报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于], desc:该节点需与alarmCount节点配合使用。例如：alarmCount=8,countTriggerType=greater时,则设备当等待人数大于8人时才会上报报警报警中alarmCount为实际触发值, countTriggerType为触发条件, countTriggerType=greater。注：该节点若不支持，设备的报警触发类型默认当大于来处理。例如：alarmCount=8,countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警, 报警中alarmCount为实际触发值, countTriggerType为触发条件, countTriggerType=range例如：alarmCount=8,countTriggerType=outOfRange时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在"<8"或者">10"时上报报警, 报警中alarmCount为实际触发值, countTriggerType为触发条件, countTriggerType=outOfRange*/
                        "Region": [
                        /*ro, req, array, 规则区域坐标, subType:object, range:[,], desc:3~10边形*/
                            {
                                "x":  0.120,
                                /*ro, req, float, x坐标, range:[0.000,1], step:, unit:, unitType:*/
                                "y":  0.120
                                /*ro, req, float, y坐标, range:[0.000,1], step:, unit:, unitType:*/
                            }
                        ]
                    },
                    "targetID":  1
                    /*ro, opt, int, 目标ID, range:[,], step:, unit:, unitType:*/
                }
            }
        ],
        "contentID":  "background_image",
        /*ro, opt, string, 背景图, range:[,], desc:传输方式为二进制传输时返回该节点，不返回imageURL节点*/
        "imageURL":  "test"
        /*ro, opt, string, 背景图, range:[,], desc:传输方式为URL时，返回该节点，不返回contentID节点*/
    },
    "URLCertificationType":  "digest"
    /*ro, opt, string, 认证类型, range:[,]*/
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。

格式未统一的历史版本：

{
  "time": "2004-05-03T17:30:08.000Z",
  "ipV4": "172.6.64.7",
  "ipV6": "fe80::4080:c199:f513:3ebf%13",
  "port": 80,
  "macAddress": "01:17:24:45:D9:F4",
  "channel": 9,                          //监控点通道号
  "channelName": "",                //监控点名称, string类型, 最大长度为64
  "cameraIndexCode": "",          //IndexCode是唯一的, 平台里面使用这个作为标识, string类型, 最大长度为64, 可选
  "Target": [{
    "recognitionType": "human",     //识别类型：human-人体识别
    "TargetInfo": {
      "recognition": "personDensityDetection", //识别目标类型：personDensityDetection-人员密度
      "dataSource": "timing",                         //检测数据来源: timing-定时, trigger-触发(超过设置的等级限制)
      "framesPeopleCounting_number": 23,    //单帧画面人数统计
      "densityLevel": 3,     //密度等级值, 取值范围:[1,3]; 在定时统计的模式下, 如果统计的结果没有达到设置的等级限制, 该字段不上传
      "personCnt": 3,        //密度等级中的统计人数限制, integer32类型; 在定时统计的模式下, 如果统计的结果没有达到设置的等级限制, 该字段不上传
      "customName": "高", //密度等级配置自定义信息; 在定时统计的模式下, 如果统计的结果没有达到设置的等级限制, 该字段不上传
      "densityLevelChangeType": "highToLow", //人员密度等级变化类型[highToLow:由高到低,lowToHigh:由低到高]
      "regionName": "Region1", //人员密度检测区域名称，与人员密度配置保持一致,若只支持单个区域配置的设备则无需返回该字段
      "regionID": "1", //人员密度检测区域ID，与人员密度配置保持一致,若只支持单个区域配置的设备则无需返回该字段
      "contentID": "person_density_image" //人员密度图
    }
  }],
  "contentID": "background_image" //可见光图
}


EVENT_JSON_faceCapture

人脸抓拍识别事件JSON数据

字符编码为UTF-8。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome]*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "faceCapture",
    /*ro, req, string, 事件类型, range:[,]*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发]*/
    "eventDescription":  "faceCapture",
    /*ro, req, string, 事件描述, range:[,], desc:人脸抓拍数据上传-faceCapture*/
    "channelName":  "ABC",
    /*ro, req, string, 通道名称（监控点名称）, range:[,]*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,]*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 选填*/
    "faceCapture": [
    /*ro, opt, array, 人脸抓拍结果信息, subType:object, range:[,]*/
        {
            "errorCode":  1,
            /*ro, opt, int, 错误码, range:[,], step:, unit:, unitType:*/
            "errorMsg":  "ok",
            /*ro, opt, string, 错误码描述, range:[,]*/
            "taskid":  "temp_dfasdffsadfdsadada",
            /*ro, opt, string, 任务ID, range:[,]*/
            "faceTime":  "2016-09-10 00:00:00.000",
            /*ro, opt, datetime, 抓拍时间*/
            "traceUuid":  "sddddddddff",
            /*ro, opt, string, 目标ID, range:[,]*/
            "traceIdx":  1,
            /*ro, opt, int, 图片索引, range:[,], step:, unit:, unitType:*/
            "targetAttrs": {
            /*ro, opt, object, 目标属性*/
                "deviceId":  "ee3c4000-a22d-11b4-8334-5803fb77894c",
                /*ro, opt, string, 设备UUID, range:[,]*/
                "deviceChannel":  1,
                /*ro, opt, int, 设备通道号, range:[,], step:, unit:, unitType:*/
                "deviceName":  "shebei",
                /*ro, opt, string, 设备名称, range:[,]*/
                "faceTime":  "2009-11-14T15:27:00.000Z ",
                /*ro, opt, datetime, 抓拍时间*/
                "bkgUrl":  "test",
                /*ro, opt, string, 背景图片URL(URL传输), range:[,]*/
                "thermalURL":  "test",
                /*ro, opt, string, 热成像图片URL(URL传输), range:[,]*/
                "contentID":  "backgroundImage",
                /*ro, opt, string, 背景大图(二进制传输), range:[,]*/
                "pId":  "F4F665D6A18E41308CE9934DCDDD1111"
                /*ro, opt, string, 视频采集抓拍的背景图(二进制传输), range:[,], desc:设备内部抓图的唯一标识片*/
            },
            "faces": [
            /*ro, opt, array, 人脸信息包括检测结果、属性、建模和匹配名单, subType:object, range:[,]*/
                {
                    "faceId":  1,
                    /*ro, opt, int, 人脸ID, range:[,], step:, unit:, unitType:*/
                    "faceRect": {
                    /*ro, opt, object, 人脸小图矩形框, desc:屏幕左上角为坐标原点*/
                        "height":  1.000,
                        /*ro, opt, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, opt, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, opt, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, opt, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "age": {
                    /*ro, opt, object, 年龄*/
                        "range":  5,
                        /*ro, opt, int, 年龄偏差, range:[,], step:, unit:, unitType:*/
                        "value":  23,
                        /*ro, opt, int, 年龄, range:[,], step:, unit:, unitType:*/
                        "ageGroup":  "old"
                        /*ro, opt, string, 年龄段, range:[,]*/
                    },
                    "gender": {
                    /*ro, opt, object, 性别*/
                        "confidence":  99.9999,
                        /*ro, opt, float, 置信度, range:[,], step:, unit:, unitType:*/
                        "value":  "male"
                        /*ro, opt, enum, 性别, subType:string, [male#男,female#女,unknown#未知]*/
                    },
                    "glass": {
                    /*ro, opt, object, 是否戴眼镜*/
                        "confidence":  99.945,
                        /*ro, opt, float, 置信度, range:[,], step:, unit:, unitType:*/
                        "value":  "yes"
                        /*ro, opt, enum, 是否戴眼镜, subType:string, [no#不戴眼镜,yes#戴眼镜]*/
                    },
                    "mask": {
                    /*ro, opt, object, 是否带口罩*/
                        "confidence":  99.945,
                        /*ro, opt, float, 置信度, range:[,], step:, unit:, unitType:*/
                        "value":  "yes"
                        /*ro, opt, enum, 是否带口罩, subType:string, [no#否,yes#是]*/
                    },
                    "smile": {
                    /*ro, opt, object, 是否微笑*/
                        "confidence":  99.945,
                        /*ro, opt, float, 置信度, range:[,], step:, unit:, unitType:*/
                        "value":  "no"
                        /*ro, opt, enum, 是否微笑, subType:string, [no#否,yes#是]*/
                    },
                    "hat": {
                    /*ro, opt, object, 戴帽子*/
                        "value":  "no"
                        /*ro, opt, enum, 戴帽子, subType:string, [no#否,yes#是,unknown#未知]*/
                    },
                    "URL":  "xxxxxxx",
                    /*ro, opt, string, 人脸小图(URL传输), range:[,256]*/
                    "contentID":  "faceImage",
                    /*ro, opt, string, 人脸小图（二进制传输）, range:[,]*/
                    "stayDuration":  20,
                    /*ro, opt, int, 停留画面中时间, range:[,], step:, unit:ms, unitType:时间*/
                    "faceScore":  30,
                    /*ro, req, int, 人脸评分, range:[0,100], step:, unit:, unitType:*/
                    "captureEndMark":  true,
                    /*ro, req, bool, 抓拍结束标记, desc:true-结束,false-未结束*/
                    "targetID":  "xxxxxxx",
                    /*ro, opt, string, 人脸、人体关联ID, range:[,]*/
                    "FacePictureRect": {
                    /*ro, opt, object, 人脸矩形框, desc:屏幕左上角为坐标原点*/
                        "height":  1.000,
                        /*ro, req, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "width":  1.000,
                        /*ro, req, float, 宽度, range:[0.000,1.000], step:, unit:, unitType:*/
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    },
                    "blockingState":  "noBlocking",
                    /*ro, opt, enum, 目标人脸遮挡状态, subType:string, [noBlocking#无遮挡,instantaneousInsignificantBlocking#瞬时轻度遮挡,continuousInsignificantBlocking#持续轻度遮挡,significantBlocking#严重遮挡,OSD#OSD屏幕遮挡,unknown#未知]*/
                    "swingAngle":  -90,
                    /*ro, opt, int, 目标人脸旋转角, range:[-90,90], step:, unit:, unitType:*/
                    "tiltAngle":  -90,
                    /*ro, opt, int, 目标人脸俯仰角, range:[-90,90], step:, unit:, unitType:*/
                    "pupilDistance":  10,
                    /*ro, opt, int, 目标人脸瞳距, range:[,], step:, unit:, unitType:, desc:最小值为10像素,最大值为当前分辨率宽度/1.6*/
                    "livenessDetectionStatus":  "liveFace",
                    /*ro, opt, enum, 活体检测状态, subType:string, [liveFace#真人人脸,notLiveFace#非真人人脸,detectionFailed#检测失败,notEnabled#未开启活体检测]*/
                    "pId":  "F4F665D6A18E41308CE9934DCDDD2222",
                    /*ro, opt, string, 人脸子图图片ID(二进制), range:[,], desc:该人脸子图用于显示,是目标识别图扩大后的图片*/
                    "enterTime":  "2004-05-03T17:30:08+08:00",
                    /*ro, opt, datetime, 最佳抓拍下进入时间*/
                    "exitTime":  "2004-05-03T17:30:08+08:00",
                    /*ro, opt, datetime, 最佳抓拍下离开时间*/
                    "perClassify":  0,
                    /*ro, opt, int, 人脸预分类, range:[,], step:, unit:, unitType:*/
                    "faceSnapThermometryEnabled":  true,
                    /*ro, opt, bool, 人脸抓拍测温使能*/
                    "currTemperature":  36.8,
                    /*ro, opt, float, 人脸温度, range:[,], step:, unit:, unitType:*/
                    "isAbnomalTemperature":  true,
                    /*ro, opt, bool, 人脸抓拍测温是否温度异常 true-是 false-否*/
                    "thermometryUnit":  "celsius",
                    /*ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文]*/
                    "alarmTemperature":  36.7
                    /*ro, opt, float, 全局预警阈值 , range:[,], step:, unit:, unitType:*/
                }
            ],
            "uid":  "2019052010392202600Kb4s3iQPzLignc1sRUbFT0hR039Y0YzuLt0VLfl99yZi",
            /*ro, opt, string, 事件上报的唯一标识, range:[,]*/
            "OperatorInfo": {
            /*ro, opt, object, 操作人员信息, desc:班牌2.7.0项目增加，应用场景如下：班牌支持界面上手动补录人脸（补录前需要刷卡确认操作者和补录人员），并通过事件方式将人脸数据上传给平台，以供平台进行人员人脸替换；平台在替换的时候需要记录手动补录人脸的操作者人员。*/
                "personUUID":  "test",
                /*ro, opt, string, 人员UUID, range:[1,32]*/
                "personName":  "test"
                /*ro, opt, string, 人员名称, range:[1,64]*/
            },
            "MEFData": [
            /*ro, opt, array, 该目标对应的移动电子围栏数据(Mobile electronic fence), subType:object, range:[,], desc:该数据需要进行敏感信息加密*/
                {
                    "time":  "2004-05-03T17:30:08+08:00.000",
                    /*ro, req, datetime, 该电围数据采集时间, desc:精确到毫秒*/
                    "IMSI":  "460001357924680",
                    /*ro, req, string, SIM卡号(International Mobile Subscriber Identity), range:[1,15]*/
                    "bandIdx":  11
                    /*ro, opt, enum, 当前用户所使用的频带类型, subType:int, [0#联通B3,1#电信B3,2#移动B39,3#移动B38,4#移动B40,5#移动B41,6#联通B1,7#电信B1,8#移动2G,9#联通2G,10#联通WCDMA,11#电信CDMA,12#电信CDMA2000,13#移动TD,19#移动B1,20#移动B3,21#移动B8]*/
                }
            ]
        }
    ],
    "GPS": {
    /*ro, opt, object, 设备GPS信息*/
        "divisionEW":  "E",
        /*ro, req, enum, 东西半球, subType:string, [E#东半球,W#西半球]*/
        "longitude":  100,
        /*ro, req, int, 经度, range:[,], step:, unit:, unitType:, desc:经度=实际度*3600*100+实际分*60*100+实际秒*100*/
        "divisionNS":  "N",
        /*ro, req, enum, 南北半球, subType:string, [N#北半球,S#南半球]*/
        "latitude":  100
        /*ro, req, int, 纬度, range:[,], step:, unit:, unitType:, desc:纬度=实际度*3600*100+实际分*60*100+实际秒*100 integer32类型*/
    },
    "URLCertificationType":  "digest"
    /*ro, opt, enum, 图片url认证方式, subType:string, [no#无,digest#摘要认证], desc:no-无（这个是针对武汉云存储协议）,digest-摘要认证（这个针对设备本地存储返回URL的方式,设备例如NVR/DVR*/
}


EVENT_JSON_FaceTemperatureMeasurementEvent

门禁人脸测温事件信息JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,32]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, string, 协议类型, range:[,], desc:HTTP或HTTPS*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "dateTime":  "2016-12-12T17:30:08+08:00",
    /*ro, req, string, 报警触发时间, range:[,]*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "FaceTemperatureMeasurementEvent",
    /*ro, req, string, 触发的事件类型, range:[,], desc:FaceTemperatureMeasurementEvent-人脸测温事件*/
    "eventState":  "active",
    /*ro, opt, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发]*/
    "eventDescription":  "Face Temperature Measurement Event",
    /*ro, req, string, 事件描述, range:[,], desc:人脸测温事件(Face Temperature Measurement Event)*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,], desc:在ISUP协议接入透传ISAPI事件信息中必须返回*/
    "FaceTemperatureMeasurementEvent": {
    /*ro, opt, object, FaceTemperatureMeasurementEvent*/
        "deviceName":  "test设备",
        /*ro, opt, string, 设备名称, range:[,]*/
        "serialNo":  1,
        /*ro, opt, int, 事件流水号, range:[,], step:, unit:, unitType:*/
        "thermometryUnit":  "celsius",
        /*ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度,fahrenheit#华氏度,kelvin#开尔文], desc:默认摄氏度*/
        "currTemperature":  36.1,
        /*ro, opt, float, 人脸温度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位*/
        "isAbnomalTemperature":  true,
        /*ro, opt, bool, 人脸测温是否温度异常, desc:true-是，false-否*/
        "RegionCoordinates": {
        /*ro, opt, object, 人脸温度坐标*/
            "positionX":  1,
            /*ro, opt, int, X坐标, range:[0,10000], step:, unit:, unitType:, desc:归一化坐标0-1000*/
            "positionY":  1
            /*ro, opt, int, Y坐标, range:[,1000], step:, unit:, unitType:, desc:归一化坐标0-1000*/
        },
        "remoteCheck":  false,
        /*ro, opt, bool, 是否需要远程核验, desc:true-需要，false-不需要（默认）*/
        "mask":  "unknown",
        /*ro, opt, enum, 是否戴口罩, subType:string, [unknown#未知,yes#戴口罩,no#不戴口罩]*/
        "visibleLightURL":  "xxxxxxx",
        /*ro, opt, string, 热成像相机可见光图片URL, range:[,]*/
        "thermalURL":  "xxxxxxx",
        /*ro, opt, string, 热成像图片URL, range:[,]*/
        "pictureURL":  "test",
        /*ro, opt, string, 抓拍图片URL, range:[,]*/
        "helmet":  "unknown"
        /*ro, opt, enum, 是否戴安全帽, subType:string, [unknown#未知,yes#戴安全帽,no#不戴安全帽]*/
    }
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_faultAlarm

设备故障报警XML数据

<EventNotificationAlert version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
  <ipAddress>
    <!--dep, xs:string, 设备IPv4地址-->
  </ipAddress>

  <ipv6Address>
    <!--dep, xs:string, 设备IPv6地址-->
  </ipv6Address>

  <portNo>
    <!--opt, xs:integer, 设备端口号-->
  </portNo>

  <protocol>

    <!--opt, xs:string, "HTTP,HTTPS", 协议类型-->

  </protocol>

  <macAddress>
    <!--opt, xs:string, MAC地址-->
  </macAddress>

  <channelID>
    <!--dep, xs:string, 通道号-->
  </channelID>

  <dateTime>
    <!--req, xs:datetime ios8601, eg:2017-04-22T15:39:01+08:00-->
  </dateTime>

  <activePostCount>0</activePostCount>
  <!--req, xs:integer, 激活端口次数, 代表着设备对同一个目标触发的报警次数-->

  <eventType>faultAlarm</eventType>
  <!--req, xs:string, "faultAlarm"表示设备故障报警信息-->

  <eventState>active</eventState>
  <!--req, xs:string, "active,inactive", 报警上报时为active, 心跳上报时为inactive-->

  <eventDescription>faultAlarm</eventDescription>
  <!--req, xs:string, 事件描述, "faultAlarm"表示设备故障-->
</EventNotificationAlert>


EVENT_JSON_FramesPeopleCounting

区域人数统计事件JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "test",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:与/ISAPI/Event/notification/httpHosts/<ID>的protocolType一致*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, string, 报警触发时间, range:[,]*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "framesPeopleCounting",
    /*ro, req, enum, 触发的事件类型, subType:string, [framesPeopleCounting#区域人数统计], desc:framesPeopleCounting-区域人数统计, string类型, 最大长度为128*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发(表示心跳数据)]*/
    "eventDescription":  "framesPeopleCounting",
    /*ro, req, string, 事件描述, range:[,], desc:framesPeopleCounting-区域人数统计, string类型, 最大长度为128*/
    "channelName":  "ABC",
    /*ro, opt, string, 通道名称, range:[,], desc:通道名称（监控点名称）,与 /ISAPI/Streaming/channels/<ID>的<channelName>一致*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:在ISUP协议接入透传ISAPI事件信息中必须返回,与/ISAPI/System/Network/Ehome的deviceID一致*/
    "targetAttrs": {
    /*ro, opt, object, 透传字段*/
        "deviceId":  "1",
        /*ro, opt, string, 设备ID, range:[,]*/
        "deviceChannel":  1,
        /*ro, opt, int, 设备通道号, range:[,], step:, unit:, unitType:*/
        "deviceName":  "shebei"
        /*ro, opt, string, 设备名称, range:[,]*/
    },
    "FramesPeopleCounting": {
    /*ro, opt, object, 区域人数统计信息*/
        "BackgroundImage": {
        /*ro, opt, object, 事件触发时的背景图*/
            "resourcesContentType":  "base64",
            /*ro, opt, enum, 资源传输类型, subType:string, [url#url方式传输,binary#二进制方式传输,base64#base64编码的资源], desc:资源传输类型,当设备返回的报警报文中带有额外资源（比如图片）时,该节点必须返回,url-url方式传输, binary-二进制方式传输,base64-base64编码的资源*/
            "resourcesContent":  "test"
            /*ro, opt, string, 资源标识ID, range:[,],
            desc:依赖,string类型,资源标识ID,当设备返回的报警报文中带有额外资源（比如图片）时,该节点必须返回;
                        当resourcesContentType为binary时,该节点与图片的Content-ID严格对应;
                        当resourcesContentType为url时,该节点填写具体的url;
                        当当resourcesContentType为base64时,该节点填写base64编码过的资源*/
        },
        "framesPeopleCountingNum":  23,
        /*ro, opt, int, 单帧人数, range:[,], step:, unit:, unitType:*/
        "timeStamp":  "1970-01-01T00:00:00+08:00",
        /*ro, opt, datetime, 触发报警的帧的时间戳*/
        "regionID":  "1"
        /*ro, opt, string, 规则(区域)ID, range:[,], desc:在/ISAPI/Intelligent/channels/<ID>/framesPeopleCounting配置中一个区域就是一个规则,所以区域ID也即规则ID*/
    }
}


EVENT_JSON_heartBeat

设备心跳上传XML数据

<EventNotificationAlert version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
  <ipAddress>
    <!--dep, xs:string, 设备IPv4地址-->
  </ipAddress>

  <ipv6Address>
    <!--dep, xs:string, 设备IPv6地址-->
  </ipv6Address>

  <portNo>
    <!--opt, xs:integer, 设备端口号-->
  </portNo>

  <protocol>
    <!--opt, xs:string, "HTTP,HTTPS", 协议类型-->
  </protocol>

  <macAddress>
    <!--opt, xs:string, MAC地址-->
  </macAddress>

  <channelID>
    <!--dep, xs:string, 通道号-->
  </channelID>

  <dateTime>
    <!--req, xs:datetime ios8601, eg:2017-04-22T15:39:01+08:00-->
  </dateTime>

  <activePostCount>0</activePostCount>
  <!--req, xs:integer, 激活端口次数, 代表着设备对同一个目标触发的报警次数-->

  <eventType>heartBeat</eventType>
  <!--req, xs:string, "heartBeat"表示设备心跳信息-->

  <eventState>active</eventState>
  <!--req, xs:string, 事件状态-->

  <eventDescription>heartBeat</eventDescription>
  <!--req, xs:string, 事件描述, "heartBeat"表示设备心跳-->
</EventNotificationAlert>


EVENT_JSON_heatmap

热度图统计事件JSON数据

字符编码为UTF-8。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,32]*/
    "ipv6Address":  "test",
    /*ro, opt, string, 报警设备IPv6地址, range:[,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:最大长度为32,与/ISAPI/Event/notification/httpHosts/<ID>的protocolType一致*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "heatmap",
    /*ro, req, string, 触发的事件类型, range:[,128], desc:热度图上传-heatmap, string类型, 最大长度为128*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发(表示心跳数据)], desc:最大长度为32*/
    "eventDescription":  "HeatMap Value",
    /*ro, req, string, 事件描述, range:[,], desc:热度图上传-HeatMap Value, 最大长度为128*/
    "channelName":  "ABC",
    /*ro, req, string, 通道名称（监控点名称）, range:[,], desc:与/ISAPI/Streaming/channels/<ID>的<channelName>一致*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:在ehome协议接入透传ISAPI事件信息中必须返回,与/ISAPI/System/Network/Ehome的deviceID一致*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据*/
    "HeatMapValueStatistics": {
    /*ro, opt, object, 热度值统计*/
        "startTime":  "2018-04-24T16:56:43.000+08:00",
        /*ro, req, datetime, 检测开始时间*/
        "endTime":  "2018-04-25T16:56:43.000+08:00",
        /*ro, req, string, 检测结束时间, range:[,]*/
        "statisticsType":  "PDC",
        /*ro, req, enum, 统计类型, subType:string, [PDC#按人数统计,DURATION#按人员停留时间统计,INTERSECTION#按路口人数统计]*/
        "HeatMapValue": [
        /*ro, req, array, 热度值结构化信息, subType:object, range:[,]*/
            {
                "heatmapDataType":  "PDC_stayNum",
                /*ro, opt, string, 热度图数据类型, range:[,], desc:在 statisticsType == PDC的时候，赋值如下:PDC_stayNum:表示按人数统计中的画面中停留人数的热度值；PDC_leaveNum:表示按人数统计中的画面中离开人数的热度值；在 statisticsType == DURATION的时候，赋值如下:heatmapDataType字段不返回；在 statisticsType == INTERSECTION的时候，赋值如下:heatmapDataType字段不返回；*/
                "maxHeatMapValue":  1,
                /*ro, req, int, 最大热度值（4字节整数）, range:[,], step:, unit:, unitType:*/
                "minHeatMapValue":  1,
                /*ro, req, int, 最小热度值（4字节整数）, range:[,], step:, unit:, unitType:*/
                "timeHeatMapValue":  1,
                /*ro, req, int, 平均热度值（4字节整数）, range:[,], step:, unit:, unitType:*/
                "lineValue":  1,
                /*ro, req, int, 像素点行值（4字节整数）, range:[,], step:, unit:, unitType:*/
                "columnValue":  1,
                /*ro, req, int, 像素点列值（4字节整数）, range:[,], step:, unit:, unitType:*/
                "curNumber":  1,
                /*ro, opt, int, 当前人数, range:[,], step:, unit:, unitType:,
                desc:在 statisticsType == PDC的时候，赋值如下:
                curNumber:表示当前人数
                在 statisticsType == DURATION的时候，赋值如下:
                curNumber字段不返回
                在 statisticsType == INTERSECTION的时候，赋值如下:
                curNumber字段不返回*/
                "leaveNumber":  1,
                /*ro, opt, int, 离开人数, range:[,], step:, unit:, unitType:,
                desc:在 statisticsType == PDC的时候，赋值如下:
                leaveNumber:表示离开人数
                在 statisticsType == DURATION的时候，赋值如下:
                leaveNumber字段不返回
                在 statisticsType == INTERSECTION的时候，赋值如下:
                leaveNumber字段不返回*/
                "totalTime":  1
                /*ro, opt, int, 停留总时间, range:[,], step:, unit:, unitType:,
                desc:在 statisticsType == PDC的时候，赋值如下:
                totalTime字段不返回
                在 statisticsType == DURATION的时候，赋值如下:
                totalTime:表示停留总时间时间，单位秒
                在 statisticsType == INTERSECTION的时候，赋值如下:
                totalTime字段不返回*/
            }
        ],
        "heatmapURL":  "http://127.0.0.1",
        /*ro, opt, string, 热度图片像素点数据url, range:[,], desc:statisticsType为DURATION、INTERSECTION的时候返回*/
        "PDC_stayURL":  "http://127.0.0.1",
        /*ro, opt, string, 停留人数热度图片像素点数据url, range:[,], desc:desc:仅statisticsType == PDC的时候返回*/
        "PDC_leaveURL":  "http://127.0.0.1"
        /*ro, opt, string, 离开人数热度图片像素点数据url, range:[,], desc:仅statisticsType == PDC的时候返回*/
    }
}


高频人员人脸抓拍结果上传

设备网络SDK开发使用手册

高频人员人脸抓拍结果Json数据结构

Content-Type: application/json

{

    "ipAddress": "172.6.64.7",
    /*必填, 报警设备IPv4地址, string类型, 最大长度为32*/
    "ipv6Address": "",
    /*可选, 报警设备IPv6地址, string类型, 最大长度为128*/
    "portNo": 80,
    /*可选, 报警设备端口号, integer32类型*/
    "protocol": "HTTP",
    /*可选, 协议类型: HTTP或HTTPS, string类型, 最大长度为32*/
    "macAddress": "01:17:24:45:D9:F4",
    /*可选, MAC地址, string类型, 最大长度为32*/
    "channelID": "1",
    /*可选, 触发报警的设备通道号, integer32类型*/
    "dateTime": "2009-11-14T15:27Z",
    /*必填, 报警触发时间, ISO8601 time格式, string类型, 最大长度为32*/
    "activePostCount": 1,
    /*必填, 同一个报警已经上传的次数, integer32类型*/
    "eventType": "HFPD",
    /*必填, 触发的事件类型: HFPD -高频人员检测事件, string类型, 最大长度为,128*/
    "eventState": "active",
    /*必填, 事件触发状态: active-触发, inactive-未触发(表示心跳数据), string类型, 最大长度为32*/
    "eventDescription": "High frequency personnel detection",
    /*必填, 事件描述: 高频人员检测(High frequency personnel detection)*/
    "faceCapture": [
    {
        /*人脸抓拍结果信息, 一次识别可以输出多张抓拍图片的结果, 单张图片可能存在多个人脸, array数组*/
        "errorCode": 1,
        /*可选,当人脸图片分析失败时，会返回对应的错误码,int*/
        "errorMsg": "ok",
        /*可选,当人脸图片分析失败时，会返回对应的错误信息,string*/
        "image": " http://10.7.52.174:8080/kms/services/rest/dataInfoService/downloadFile?id=00000001/temp001/011_163957_23006&token=7a57a5a7ffffffffc1a0316369671314",
        /*可选, 提交人脸比对识别任务时的图片URL（对应/ISAPI/SDT/Management/Task/facePicture中的 URL字段）, string类型, 最长256位, {dep if errcode == 1 && errMsg == ok}*/
        "traceUuid": "sddddddddff",
        /*可选, 目标ID, 一个人员对应一个目标ID, 相同的人员多个报警结果对应相同的目标ID(对应/ISAPI/SDT/Management/Task/facePicture中的 traceUuid字段), string类型, 最大长度为32*/
        "traceIdx": 1,
        /*可选, 图片索引, 同一个人员匹配的多张图片中相似度最高的图片索引(对应/ISAPI/SDT/Management/Task/facePicture中的 traceIdx字段), integer32类型*/
        "targetAttrs":
        {
            /*目标属性*/
            "deviceId": "1",
            /*可选, 设备ID, string类型, 最大长度为64*/
            "deviceChannel": 1,
            /*可选, 设备通道号, integer32类型*/
            "deviceName": "shebei",
            /*可选, 设备名称, string类型, 最大长度为128*/
            "faceTime": "2009-11-14T15:27:00.000Z ",
            /*可选, 抓拍时间, ISO8601 time格式,例如：2009-11-14T15:27:00.000Z, string类型, 最大长度为64*/
            "rect":
            {
                /*可选, 人脸大图矩形框*/
                "height": 1.0,
                /*可选, 高度, float类型*/
                "width": 1.0,
                /*可选, 宽度, float类型*/
                "x": 0.0,
                /*可选, X坐标, float类型*/
                "y": 0.0
                /*可选, Y坐标, float类型*/
            },
            "bkgUrl": "http://absddsdfsdfsdk.jpg",
            /*可选, 背景大图URL, string类型, 最大长度为256*/
        },
        "faces": [
        {
            /*人脸信息包括检测结果、属性、建模和匹配名单, 一张图片中的可能多个人脸结果, array数组*/
            "faceId": 1,
            /*可选, 人脸ID, 一张图片中的人脸ID不能重复, integer32类型*/
            "faceRect":
            {
                /*可选, 人脸小图矩形框*/
                "height": 1.0,
                /*可选, 高度, float类型*/
                "width": 1.0,
                /*可选, 宽度, float类型*/
                "x": 0.0,
                /*可选, X坐标, float类型*/
                "y": 0.0
                /*可选, Y坐标, float类型*/
            },
            "faceMark":
            {
                "leftEye":
                {
                    /*可选, 左眼位置*/
                    "x": 0.13,
                    /*可选, X坐标, 归一化坐标, 精确度0.001,, float类型*/
                    "y": 0.87
                    /*可选, Y坐标, 归一化坐标, 精确度0.001,, float类型*/
                },
                "rightEye":
                {
                    /*可选, 右眼位置*/
                    "x": 0.78,
                    /*可选, X坐标, 归一化坐标, 精确度0.001,, float类型*/
                    "y": 0.50
                    /*可选, Y坐标, 归一化坐标, 精确度0.001,, float类型*/
                },
                "noseTip":
                {
                    /*可选, 鼻尖位置*/
                    "x": 0.78,
                    /*可选, X坐标, 归一化坐标, 精确度0.001,, float类型*/
                    "y": 0.50
                    /*可选, Y坐标, 归一化坐标, 精确度0.001,, float类型*/
                },
                "leftMouth":
                {
                    /*可选, 左嘴角位置*/
                    "x": 0.78,
                    /*可选, X坐标, 归一化坐标, 精确度0.001,, float类型*/
                    "y": 0.50
                    /*可选, Y坐标, 归一化坐标, 精确度0.001,, float类型*/
                },
                "rightMouth":
                {
                    /*可选, 右嘴角位置*/
                    "x": 0.78,
                    /*可选, X坐标, 归一化坐标, 精确度0.001,, float类型*/
                    "y": 0.50
                    /*可选, Y坐标, 归一化坐标, 精确度0.001,, float类型*/
                }
            },
            "recommendFaceRect":
            {
                /*可选, 人脸区域推荐位置*/
                "height": 1.0,
                /*可选, 高度, float类型*/
                "width": 1.0,
                /*可选, 宽度, float类型*/
                "x": 0.0,
                /*可选, X坐标, float类型*/
                "y": 0.0
                /*可选, Y坐标, float类型*/
            },
            "facePose":
            {
                /*可选, 人脸角度*/
                "pitch": 0.998,
                /*可选, 平面外上下俯仰角, 人脸朝上为正, 取值范围: [-90, 90], 若无效时此项不存在, float类型, 保留3位有效数字*/
                "yaw": 0.876,
                /*可选, 平面外左右偏转角, 人脸朝左为正, 取值范围: [-90, 90], 若无效时此项不存在, float类型, 保留3位有效数字*/
                "roll": 0.623,
                /*可选, 平面内旋转角, 人脸顺时针旋转为正, 取值范围: [-90, 90], 若无效时此项不存在, float类型, 保留3位有效数字*/
            },
            "age":
            {
                /*可选, 年龄*/
                "range": 5,
                /*可选, 年龄偏差, 年龄偏差值存在时年龄值必填, integer32类型*/
                "value": 23,
                /*可选, 年龄, integer32类型*/
                "ageGroup": "old"
                /*可选, 年龄段: unknown-未知, child-少年, young-青年, middle-中年, old-老年, string类型, 最大长度为32*/
            },
            "gender":
            {
                /*可选, 性别*/
                "confidence": 99.99990,
                /*可选, 置信度, float类型*/
                "value": "male "
                /*可选, 性别: male-男, female-女, unknown-未知, string类型, 最大长度为32*/
            },
            "glass":
            {
                /*可选, 是否戴眼镜*/
                "confidence": 99.94499999999999,
                /*可选, 置信度, float类型*/
                "value": "yes"
                /*可选, 是否戴眼镜: no-不戴眼镜, yes-戴眼镜, string类型, 最大长度为32*/
            },
            "smile":
            {
                /*可选, 是否微笑*/
                "confidence": 99.99990,
                /*可选, 置信度, float类型*/
                "value": "yes"
                /*可选, 是否微笑: no-不微笑, yes-微笑, string类型, 最大长度为32*/
            },
            "modeldata": "xxxx",
            /*可选, 目标模型数据（只会在 captureResult-抓拍结果 中实现）, string类型，最大长度5*1024字节*/
            "URL": "",
            /* 可选，人脸小图URL string maxLen=256*/
            "stayDuration": 20,
            /* 停留画面中时间，单位：毫秒，integer32类型*/
        }] ,//faces
        "recordDataIndex": "",
        /* 必填，高频人员检测报警历史查询索引（该字段作用于URI(GET /ISAPI/SDT/HFPD/searchTask/result/recordData/?format=json)）*/
}],
    "URLCertificationType": "digest"
    /*可选, 图片url认证方式: no-无（这个是针对武汉云存储协议），digest-摘要认证（这个针对设备本地存储返回URL的方式，设备例如NVR/DVR），string类型, 最大长度为32*/

}

See Also

NET_DVR_SetDVRMessageCallBack_V50


人体目标识别报警信息

设备网络SDK开发使用手册

人体目标识别报警信息Json数据结构

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，从Json数据里面解析数图片数据可以直接保存成文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V41布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM中的byAlarmTypeURL参数）。

  • 图片数据为二进制传输方式

Content-Type: multipart/form-data; boundary=MIME_boundary
--MIME_boundary
Content-Type: application/json
Content-Length: 480

{

"time": "2004-05-03T17:30:08.000Z", //ISO8601_time, 使用UTC时间, 例如: 2004-05-03T17:30:08.000Z

"ipV4": "172.6.64.7", //报警设备IPv4地址

"ipV6": "fe80::4080:c199:f513:3ebf%13", //IPv6地址

"port": 80, //报警设备通信端口

"macAddress": "01:17:24:45:D9:F4", //报警设备MAC地址

"channel": 9, //设备报警触发通道号

"Target": [{ //识别目标属性

"recognitionType": "human", //识别目标类型：human-人体目标识别

"TargetInfo": { //识别目标信息

"recognition": "human",

"Region": [{ //人体目标区别

"x": 0.120,

"y": 0.120

}],

"Property": //属性信息，不同的属性对应不同的取值，含义也不同，更多属性取值具体请参考人体识别数据字典

[

{

"description": "glass", //是否戴眼镜

"value": "unknown"

},

{

"description": "jacet_color", //上衣颜色

"value": "unknown"

},

{

"description": "ride", //是否骑车

"value": "unknown"

},

{

"description": "bag", //是否背包

"value": "unknown"

}

],

"contentID": "single_human_image_0" //目标小图片ID，多张小图的时候，分别为single_human_image_0/single_human_image_1/single_human_image_2，contentID不能重复

}

}],

"Location": { //经纬度信息

"lng": "116.46", //经度，例如：116.46，0.46*60 = 27.6，0.6*60 = 36，an>即表示116度27分36秒

"lat": "39.92" //纬度，例如：39.92，0.92*60 = 55.2，0.2*60 = 12，即表示39度55分12秒

},

"contentID": "background_image" //场景图ID

} --MIME_boundary

Content-Type: image/jpeg

Content-Length: 516876

Content-ID: background_image

fefefwageegfqaeg…

--MIME_boundary

Content-Type: image/jpeg

Content-Length: 516876

Content-ID: single_human_image_0

fefefwageegfqaeg…

--MIME_boundary--

  • 图片数据为URL传输方式

Content-Type: multipart/form-data; boundary=MIME_boundary
--MIME_boundary
Content-Type: application/json
Content-Length: 480

{

"time": "2004-05-03T17:30:08.000Z", //ISO8601_time, 使用UTC时间, 例如: 2004-05-03T17:30:08.000Z

"ipV4": "172.6.64.7", //报警设备IPv4地址

"ipV6": "fe80::4080:c199:f513:3ebf%13", //IPv6地址

"port": 80, //报警设备通信端口

"macAddress": "01:17:24:45:D9:F4", //报警设备MAC地址

"channel": 9, //设备报警触发通道号

"Target": [{ //识别目标属性

"recognitionType": "human", //识别目标类型：human-人体目标识别

"TargetInfo": { //识别目标信息

"recognition": "human",

"Region": [{ //人体目标区别

"x": 0.120,

"y&qu"y": 0.120

}],

"Property": //属性信息，不同的属性对应不同的取值，含义也不同，更多属性取值具体请参考人体识别数据字典

[

{

"description": "glass", //是否戴眼镜

"value": "unknown"

},

{

"description": "jacet_color", //上衣颜色

"value": "unknown"

},

{

"description": "ride", //是否骑车

"value": "unknown"

},

{

"description": "bag", //是否背包

"value": "unknown"

}

],

"targetImageURL": "" //目标小图片URL, HTTP协议

}

}],

"Location": { //经纬度信息

"lng": "116.46", //经度，例如：116.46，0.46*60 = 27.6，0.6*60 = 36，an>即表示116度27分36秒

"lat": "39.92" //纬度，例如：39.92，0.92*60 = 55.2，0.2*60 = 12，即表示39度55分12秒

},

"imageURL": "" //场景图URL, HTTP协议

}

--MIME_boundary

See Also

NET_DVR_SetDVRMessageCallBack_V31


EVENT_JSON_mixedTargetDetection

混合目标检测报警事件JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress": "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, desc:触发的视频通道号*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "mixedTargetDetection",
    /*ro, req, enum, 事件类型, subType:string, [mixedTargetDetection#混合目标检测事件]*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始 或者 无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Mixed target detection",
    /*ro, req, enum, 事件描述, subType:string, [Mixed target detection#混合目标检测件]*/
    "channelName":  "ABC",
    /*ro, opt, string, 通道名称（监控点名称）, desc:/ISAPI/Streaming/channels/<ID>可配置*/
    "deviceID":  "test0123",
    /*ro, opt, string, 设备ID, desc:/ISAPI/System/Network/Ehome可配置*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:重传数据标记（由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据）*/
    "customChanID":  "null",
    /*ro, opt, string, 自定义监控点通道号, desc:64字节长度,/ISAPI/ContentMgmt/InputProxy/channels/<ID>配置中的<customChanID>*/
    "CaptureResult": [
    /*ro, opt, array, 检测目标抓拍结果信息, subType:object*/
        {
            "targetID":  1,
            /*ro, req, int, 抓拍的目标ID*/
            "Face": {
            /*ro, opt, object, 人脸属性*/
                "Rect": {
                /*ro, opt, object, 特征图坐标系, desc:人脸小图(特征图)矩形框，人脸特征图坐标，是基于背景大图（faceBackgroundImage）*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "Property": [
                /*ro, opt, array, 属性数据, subType:object*/
                    {
                        "description":  "age",
                        /*ro, opt, enum, 属性描述, subType:string, [age#年龄,ageGroup#年龄段,gender#性别,glass#是否戴眼镜,smile#是否微笑,mask#是否戴口罩,hat#戴帽子,score#人脸评分]*/
                        "value":  "23"
                        /*ro, opt, string, 依赖description的赋值*/
                    }
                ],
                "contentID1":  "faceImage",
                /*ro, opt, enum, 人脸小图, subType:string, [faceImage#人脸小图]*/
                "contentID2":  "faceBackgroundImage",
                /*ro, opt, enum, faceBackgroundImage, subType:string, []*/
                "FacePictureRect": {
                /*ro, req, object, 头肩照坐标系, desc:该坐标为头肩照坐标，基于背景大图抠的（faceBackgroundImage），按照这个坐标抠出来的图片 等同于设备上传的人脸小图（faceImage）*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "pId1":  "F4F665D6A18E41308CE9934DCDDD1111",
                /*ro, opt, string, 人脸小图(头肩照) 图片ID（表示图片数据的唯一性）, range:[0,32], desc:contentID 和 pId 的关系说明:本质上,两种都适用于 Content-Type: multipart/form-data 的格式数据传输中，实现对应内容"图片数据"和"结构化数据"的关联；contentID1/contentID2  对应于 contentID；pId1/pId2 对应于 name和filename；pId的优势在于：通过name进行数据匹配，通过filename直接标明文件命名和格式，集成上通用性更强;集成策略上：contentID 必须返回，IAC平台组件已经集成了。pId  也需要返回，主要针对对外集成。这种情况下，faceImageURL 和 faceBackgroundImageURL 不需要返回；*/
                "pId2":  "F4F665D6A18E41308CE9934DCDDD2222",
                /*ro, opt, string, 人脸背景大图图片ID*/
                "faceImageURL":  "test",
                /*ro, opt, string, 人脸小图图片URL*/
                "faceBackgroundImageURL":  "test",
                /*ro, opt, string, 人脸背景大图URL,
                desc:当设备对该目标同时检测到人体和人脸属性的情况下，将会共用一张背景大图，
                                因此此处pId2中的内容将会跟Human节点下的humanBackgroundImageURL内容一致,人体及人脸将共用一份背景大图的二进制数据*/
                "snapTime":  "2015-06-04T19:25:16-07:00"
                /*ro, opt, date, 人脸设备抓拍时间*/
            },
            "Human": {
            /*ro, opt, object, 人体属性*/
                "Rect": {
                /*ro, req, object, 目标框(基于背景图), desc:该坐标为人体目标框坐标，基于背景大图（humanBackgroundImage）抠图*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "Property": [
                /*ro, opt, array, 属性数据, subType:object*/
                    {
                        "description":  "jacketColor",
                        /*ro, opt, enum, 属性描述, subType:string, [jacketColor#上衣颜色,trousersColor#下衣颜色,ageGroup#年龄段,gender#性别,glass#是否戴眼镜,ride#是否骑车,bag#是否背包,things#是否拎东西,hat#是否戴帽子,trousersType#下装类型,mask#是否戴口罩,hairStyle#发型,cyclingPersonNumber#骑车人数,direction#目标方向,score#人体评分,hatStyle#帽子款式,cyclingType#骑车类型]*/
                        "value":  "23"
                        /*ro, opt, string, 依赖description的赋值*/
                    }
                ],
                "modeldata":  "null",
                /*ro, opt, string, 人体附带建模模型base64编码数据*/
                "contentID1":  "humanImage",
                /*ro, opt, enum, 人体小图(在目标框的基础上外扩了一定比例, subType:string, [humanImage#人体小图]*/
                "contentID2":  "humanBackgroundImage",
                /*ro, opt, enum, 人体背景图, subType:string, [humanBackgroundImage#人体背景图]*/
                "pId1":  "F4F665D6A18E41308CE9934DCDDD1111",
                /*ro, opt, string, 人体小图图片ID, range:[0,32], desc:注：当设备对该目标同时检测到人体和非机动车属性的情况下，人体及非机动车属性将会共用一张小图，此时此处将pId1中的内容会跟nonMotor节点下的pId1一致；及非机动车将会共用一份非机动车小图的二进制图片数据。*/
                "pId2":  "F4F665D6A18E41308CE9934DCDDD2222",
                /*ro, opt, string, 人体背景大图图片ID, range:[0,32], desc:注：当设备对该目标同时检测到人体和非机动车属性的情况下，人体及非机动车属性将会共用一张背景大图，此时此处将pId2中的内容会跟nonMotor节点下的pId2一致；人体及非机动车将会共用一份非机动车背景大图的二进制图片数据。*/
                "humanImageURL":  "test",
                /*ro, opt, string, 人体小图URL,
                desc:注：当设备对该目标同时检测到人体和非机动车属性的情况下，人体及非机动车属性将会共用一张图片，此时humanImageURL返回的内容和nonMotorImageURL保持一致；
                                人体及非机动车将会共用一份非机动车小图的二进制图片数据。*/
                "humanBackgroundImageURL":  "test",
                /*ro, opt, string, 人体背景图URL, desc:注：当设备对该目标同时检测到人体和非机动车属性的情况下，人体及非机动车属性将会共用一张图片，此时humanBackgroundImageURL返回的内容和nonMotorBackgroundImageURL保持一致*/
                "snapTime":  "2015-06-04T19:25:16-07:00",
                /*ro, opt, datetime, 人体设备抓拍时间*/
                "contentID3":  "humanMergeImage",
                /*ro, opt, string, 人体融合细节小图*/
                "pId3":  "F4F665D6A18E41308CE9934DCDDD2222",
                /*ro, opt, string, 人体融合细节小图图片ID, range:[0,32]*/
                "HumanImageRect": {
                /*ro, opt, object, 人体小图中的目标框（基于人体小图）, desc:该坐标为人体目标框坐标，基于人体小图（humanImage）抠图*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "smallImageRectInBackground": {
                /*ro, req, object, 人体小图框（基于背景图）, desc:基于humanBackgroundImage图片的人体小图区域矩形框，扣出的图片等同于humanImage*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                }
            },
            "NonMotor": {
            /*ro, opt, object, 非机动车属性*/
                "Rect": {
                /*ro, req, object, 非机动车小图矩形框*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "Property": [
                /*ro, opt, array, 属性数据, subType:object*/
                    {
                        "description":  "nonMotorType",
                        /*ro, opt, enum, 属性描述, subType:string, [nonMotorType#非机动车类型,plateColor#非机动车牌颜色,plateNo#非机动车牌号码,directionIndex#车辆行驶方向,laneNo#车道号,RFID#关联的RFID]*/
                        "value":  "23"
                        /*ro, opt, string, 依赖description的赋值*/
                    }
                ],
                "contentID1":  "nonMotorImage",
                /*ro, opt, enum, 非机动车子图图片, subType:string, [nonMotorImage#非机动车子图图片]*/
                "contentID2":  "nonMotorBackgroundImage",
                /*ro, opt, enum, 非机动车背景图, subType:string, [nonMotorBackgroundImage#非机动车背景图]*/
                "pId1":  "F4F665D6A18E41308CE9934DCDDD1111",
                /*ro, opt, string, 非机动车子图图片ID, range:[0,32]*/
                "pId2":  "F4F665D6A18E41308CE9934DCDDD2222",
                /*ro, opt, string, 非机动车背景图图片ID, range:[0,32]*/
                "nonMotorImageURL":  "test",
                /*ro, opt, string, 非机动车子图图片URL*/
                "nonMotorBackgroundImageURL":  "test",
                /*ro, opt, string, 非机动车背景图URL*/
                "snapTime":  "2015-06-04T19:25:16-07:00",
                /*ro, opt, datetime, 非机动车设备抓拍时间*/
                "contentID3":  "nonMotorBackgroundImage2",
                /*ro, opt, enum, 非机动车背景图2, subType:string, [nonMotorBackgroundImage2#非机动车背景图2]*/
                "contentID4":  "nonMotorBackgroundImage3",
                /*ro, opt, enum, 非机动车背景图3, subType:string, [nonMotorBackgroundImage3#非机动车背景图3]*/
                "contentID5":  "faceImage",
                /*ro, opt, enum, 人脸子图, subType:string, [faceImage#人脸子图]*/
                "contentID6":  "plateImage",
                /*ro, opt, enum, 车牌子图, subType:string, [plateImage#车牌子图]*/
                "pId3":  "F4F665D6A18E41308CE9934DCDDD2223",
                /*ro, opt, string, 非机动车背景图2图片ID, range:[0,32]*/
                "pId4":  "F4F665D6A18E41308CE9934DCDDD2224",
                /*ro, opt, string, 非机动车背景图3图片ID, range:[0,32]*/
                "pId5":  "F4F665D6A18E41308CE9934DCDDD2225",
                /*ro, opt, string, 人脸子图图片ID, range:[0,32]*/
                "pId6":  "F4F665D6A18E41308CE9934DCDDD2226",
                /*ro, opt, string, 车牌子图图片ID, range:[0,32]*/
                "nonMotorBackgroundImage2URL":  "test",
                /*ro, opt, string, 非机动车背景图2URL*/
                "nonMotorBackgroundImage3URL":  "test",
                /*ro, opt, string, 非机动车背景图3URL*/
                "faceImageURL":  "test",
                /*ro, opt, string, 人脸子图URL*/
                "plateImageURL":  "test",
                /*ro, opt, string, 车牌子图URL*/
                "illegalCode":  "12313"
                /*ro, opt, string, 违章代码*/
            },
            "Vehicle": {
            /*ro, opt, object, 机动车属性*/
                "VehicleRect": {
                /*ro, req, object, 机动车目标框(基于背景图)*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "PlateRect": {
                /*ro, req, object, 机动车车牌区域矩形框*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "Property": [
                /*ro, opt, array, 属性数据, subType:object*/
                    {
                        "description":  "plateNo",
                        /*ro, opt, enum, 属性描述, subType:string, [plateNo#车牌号码,plateType#车牌类型,plateColor#车牌颜色,vehicleType#车辆类型,vehicleColor#车辆颜色,vehicleLogo#车辆品牌,vehicleSublogo#车辆子品牌,vehicleSize#车辆大小]*/
                        "value":  "23",
                        /*ro, opt, string, 依赖description的赋值*/
                        "confidence":  99.00
                        /*ro, opt, float, 置信度, range:[0.00,100.00]*/
                    }
                ],
                "contentID1":  "vehicleImage",
                /*ro, opt, enum, 机动车小图图片(在目标框的基础上外扩了一定比例, subType:string, [vehicleImage#机动车子图图片]*/
                "contentID2":  "plateImage",
                /*ro, opt, enum, 车牌小图图片, subType:string, [plateImage#车牌小图图片]*/
                "contentID3":  "vehicleBackgroundImage",
                /*ro, opt, enum, vehicleBackgroundImage, subType:string, [vehicleBackgroundImage#车辆背景大图图片]*/
                "pId1":  "F4F665D6A18E41308CE9934DCDDD1111",
                /*ro, opt, string, 机动车小图图片ID, range:[0,32]*/
                "pId2":  "F4F665D6A18E41308CE9934DCDDD2222",
                /*ro, opt, string, 车牌小图图片ID, range:[0,32]*/
                "pId3":  "F4F665D6A18E41308CE9934DCDDD3333",
                /*ro, opt, string, 车辆背景大图图片ID, range:[0,32]*/
                "vehicleImageURL":  "test",
                /*ro, opt, string, 机动车子图URL*/
                "plateImageURL":  "test",
                /*ro, opt, string, 车牌小图URL*/
                "vehicleBackgroundImageURL":  "test",
                /*ro, opt, string, 车辆背景大图URL*/
                "snapTime":  "2015-06-04T19:25:16-07:00",
                /*ro, opt, datetime, 机动车设备抓拍时间*/
                "humanMergeImageURL":  "test",
                /*ro, opt, string, 人体融合细节小图URL*/
                "VehicleImageRect": {
                /*ro, req, object, 机动车小图中的目标框（基于机动车小图）, desc:基于vehicleImage图片的目标区域矩形框*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                },
                "smallImageRectInBackground": {
                /*ro, req, object, 机动车小图框（基于背景图）, desc:基于vehicleBackgroundImage图片的机动车小图矩形框，抠出的图片等同于vehicleImage*/
                    "height":  1.000,
                    /*ro, req, float, 高度, range:[0.000,1.000]*/
                    "width":  1.000,
                    /*ro, req, float, 宽度, range:[0.000,1.000]*/
                    "x":  0.000,
                    /*ro, req, float, X坐标, range:[0.000,1.000]*/
                    "y":  0.000
                    /*ro, req, float, Y坐标, range:[0.000,1.000]*/
                }
            },
            "AbsoluteHigh": {
            /*ro, opt, object, PTZ位置信息*/
                "elevation":  11,
                /*ro, opt, int, 仰角, desc:对应T,0..3600*/
                "azimuth":  22,
                /*ro, opt, int, 方位角, desc:对应P,0..3600,*/
                "absoluteZoom":  33
                /*ro, opt, int, 变倍倍率, desc:1.. 1000, 变倍倍率，对应Z*/
            },
            "GPS": {
            /*ro, req, object, 设备GPS信息*/
                "longitude":  -180.000000,
                /*ro, req, float, 经度*/
                "latitude":  -90.000000
                /*ro, req, float, 纬度*/
            },
            "FaceContrastResult": [
            /*ro, opt, array, 单次抓拍的比对报警结果, subType:object*/
                {
                    "errorCode":  1,
                    /*ro, opt, int, 错误码, desc:当人脸图片分析失败时，会返回对应的错误码,参考错误码章节*/
                    "errorMsg":  "ok",
                    /*ro, opt, string, 人脸库中底图的模型建模数据, desc:当人脸图片分析失败时，会返回对应的错误信息*/
                    "modelData":  "null",
                    /*ro, opt, string, 人脸库中底图的模型建模数据, range:[0,2048], desc:base64编码*/
                    "faces": [
                    /*ro, opt, array, 匹配人脸信息, subType:object, desc:人脸信息包括检测结果、属性、建模和匹配名单, 一张图片中的可能多个人脸结果*/
                        {
                            "faceId":  1,
                            /*ro, opt, int, 人脸ID, desc:一张图片中的人脸ID不能重复*/
                            "identify": [
                            /*ro, opt, array, 特征值, subType:object*/
                                {
                                    "relationId":  "9887",
                                    /*ro, opt, string, 布防的关联关系ID, range:[0,64], desc:对应/ISAPI/SDT/Management/Task/facePicture  relateGroup数组中的id字段)来源于用户提交任务是指定的布防比对策略的ID*/
                                    "maxsimilarity":  0.204000,
                                    /*ro, opt, float, 最大相似度, range:[0.000000,1.000000], desc:所有匹配人员比对结果中的最大相似度, 取值范围: 0~1, 精确到小数点后六位*/
                                    "candidate": [
                                    /*ro, opt, array, 人员名单信息列表, subType:object*/
                                        {
                                            "blacklist_id":  "2323",
                                            /*ro, opt, string, 报警名单ID, range:[0,64], desc:对应人脸库中FDID,前端只返回设备默认的FDID,自定义人脸库ID在“customFaceLibID”中返回*/
                                            "human_data": [
                                            /*ro, opt, array, 人脸信息列表, subType:object*/
                                                {
                                                    "face_id":  "123445",
                                                    /*ro, opt, string, 人脸ID*/
                                                    "contentID":  "faceLibImage",
                                                    /*ro, opt, string, 人脸库图片*/
                                                    "similarity":  0.204000,
                                                    /*ro, opt, float, 人脸图片的相似度, range:[0.000000,1.000000]*/
                                                    "isNoSaveFDPicture":  "true",
                                                    /*ro, opt, string, 不保存人脸库图片, desc:不保存人脸库图片,若开启了导入图片或者建模时不保存原图功能,则需返回该节点为true,未开启则无需返回该节点*/
                                                    "pId":  "F4F665D6A18E41308CE9934DCDDD766F",
                                                    /*ro, opt, string, 人脸库中的图片ID, range:[0,32], desc:人脸库中的图片ID，该字段匹配，HTTP表单格式中文件名称的定义*/
                                                    "face_picurl":  "http://127.0.0.1:6120/face_picurl"
                                                    /*ro, opt, string, 人脸子图URL*/
                                                }
                                            ],
                                            "human_id":  "123",
                                            /*ro, opt, string, 对应人脸库中FPID, range:[0,64], desc:名单人员ID, 对应人脸库中FPID,人脸库ID*/
                                            "reserve_field": {
                                            /*ro, req, object, 透传数据*/
                                                "name":  "张三",
                                                /*ro, opt, string, 姓名, range:[0,96]*/
                                                "gender":  "any",
                                                /*ro, req, enum, 性别, subType:string, [any#条件不限（搜索的时候使用）,unknown#未知,male#男,female#女]*/
                                                "bornTime":  "2004-05-03",
                                                /*ro, opt, datetime, 出生日期*/
                                                "city":  "130100",
                                                /*ro, opt, string, 人员出生城市编号, desc:详见:全国各省份城市列表*/
                                                "certificateType ":  "officerID",
                                                /*ro, opt, string, 证件类型*/
                                                "certificateNumber":  "null",
                                                /*ro, opt, string, 证件号, range:[0,32]*/
                                                "ageGroup":  "unknown",
                                                /*ro, req, enum, 年龄段, subType:string, [unknown#未知,child#少年,young#青年,middle#中年,old#老年,infant#婴幼儿,kid#儿童,teenager#青少年,prime#壮年,middleAged#中老年,any#条件不限（搜索的时候使用）]*/
                                                "phoneNumber":  "null",
                                                /*ro, opt, string, 电话号码, range:[0,64]*/
                                                "cityName":  "石家庄市",
                                                /*ro, opt, string, 城市名称（与city字段对应）, range:[0,32], desc:使用场景:客户端等计算能力较弱,不能实时根据city的编号查询出对应的城市名称*/
                                                "provinceName":  "河北省"
                                                /*ro, opt, string, 省份名称, range:[0,32], desc:使用场景:客户端等计算能力较弱,不能实时根据city的编号查询出对应的省份名称*/
                                            },
                                            "similarity":  0.780,
                                            /*ro, opt, float, 最大相似度, range:[0.000,1.000], desc:该人员所有匹配人脸图片结果中的最大相似度*/
                                            "listType":  "blackList",
                                            /*ro, opt, enum, 名单类型, subType:string, [blackList#非授权名单,whiteList#授权名单]*/
                                            "extendData": [
                                            /*ro, opt, array, 人员扩展信息, subType:object*/
                                                {
                                                    "extendID":  1,
                                                    /*ro, opt, int, 人员扩展信息ID*/
                                                    "enable":  true,
                                                    /*ro, opt, bool, 人员扩展信息使能*/
                                                    "name":  "null",
                                                    /*ro, opt, string, 人员标签信息扩展名称, range:[0,96]*/
                                                    "value":  "null"
                                                    /*ro, opt, string, 人员标签信息扩展内容, range:[0,64]*/
                                                }
                                            ],
                                            "FDLibName":  "faceLib1",
                                            /*ro, opt, string, 人脸库检测阈值*/
                                            "FDLibThreshold":  "50",
                                            /*ro, opt, string, 人脸库检测阈值*/
                                            "customFaceLibID":  "null",
                                            /*ro, opt, string, 自定义人脸库ID*/
                                            "customHumanID":  "null"
                                            /*ro, opt, string, 自定义人员ID*/
                                        }
                                    ]
                                }
                            ],
                            "stayDuration":  20
                            /*ro, opt, int, 停留画面中时间, step:, unit:ms, unitType:时间*/
                        }
                    ]
                }
            ],
            "ModelingResult": {
            /*ro, req, object, 人脸抓拍建模*/
                "modelingStatus":  "succeeded",
                /*ro, req, enum, 建模状态, subType:string, [succeeded#成功,resourceInsuf#引擎能力不足,faceDetectingFail#人脸检测失败,faceModelingFail#人脸建模失败,faceGradingFail#人脸质量评分失败,featureExtractFail#特征点提取失败,featureAnalyzeFail#属性提取失败,otherErrors#引擎其它错误,DSPInternalError#DSP内部错误]*/
                "facePicQuality":  "lower",
                /*ro, opt, enum, 人脸子图图片质量评估等级, subType:string, [lower#低等质量,medium#中等质量,high#高等质量], desc:人脸子图图片质量评估等级，低等质量(lower),中等质量(medium),高等质量(high).新增人脸抓拍质量评分机制与原有的人脸评分区别：原有的人脸评分是在人脸抓拍中实现，目的是确保一次人脸抓拍中获取最好的图像效果，是一个相对图像质量的评分；新增人脸抓拍质量评分机制是针对已经抓拍完成的人脸图片，使用图像算法对图像中人脸，人眼，肩宽等相对重要的信息进行分析，按照统一的标准对人脸图片效果质量进行评分*/
                "stayDuration":  20,
                /*ro, opt, int, 停留画面中时间, step:, unit:ms, unitType:时间*/
                "modeldata":  "null"
                /*ro, opt, string, 模型base64编码数据*/
            },
            "sid":  "123",
            /*ro, opt, string, 场景ID*/
            "sceneName":  "场景1",
            /*ro, opt, string, 场景名称*/
            "uid":  "null",
            /*ro, opt, string, 事件上报的唯一标识, range:[0,64], desc:可以使用时间（精确到毫秒）加上随即数的方式组成*/
            "behaviorLinkageUid":  "null",
            /*ro, opt, string, 联动专业智能事件上报的唯一标识, range:[0,64], desc:该字段主要用于与专业智能报警(人员聚集和剧烈运动)中uid字段内容一样的事件进行关联"表示该混合目标报警属于专业智能事件的具体目标;可以使用时间（精确到毫秒）加上随即数的方式组成*/
            "position": [500, 500],
            /*ro, opt, array, 目标中心相对于相机的偏移, subType:int, desc:X坐标和Y坐标，X左负右正，Y向上为正（没有负值），相机所在水平线（垂直于车道）的中点（所有车道的中点）为原点*/
            "laneNo":  1,
            /*ro, opt, int, 目标所在车道号*/
            "speed":  23.4,
            /*ro, opt, float, 目标速度*/
            "targetType":  "human",
            /*ro, opt, enum, 目标速度, subType:string, [vehicle#机动车,human#人,nonMotor#非机动车]*/
            "horizonSpeed":  33.4,
            /*ro, opt, float, 目标速度-横向速度*/
            "NormalizationPosition": [500, 500],
            /*ro, opt, array, 归一化坐标, subType:int, desc:归一化坐标(X:0-1000*/
            "targetMaxY":  340,
            /*ro, opt, int, 目标y坐标最大值, desc:目标y坐标最大值（此值是实际y轴的最大值经坐标变换后的值,不超过1500）*/
            "TargetGPSInfo": [
            /*ro, req, array, 目标GPS信息, subType:object*/
                {
                    "longitude":  -180.000000,
                    /*ro, req, float, 经度*/
                    "latitude":  -90.000000
                    /*ro, req, float, 纬度*/
                }
            ],
            "perimeterLinkageUid":  "null",
            /*ro, opt, string, 关联周界事件上报的uid, desc:唯一标识"64字节的长度"可以使用时间（精确到毫秒）加上随即数的方式组成*/
            "MEFData": [
            /*ro, opt, array, 该目标对应的移动电子围栏数据(Mobile electronic fence), subType:object, desc:可支持多个用户的电围数据(该数据需要进行敏感信息加密)*/
                {
                    "time":  "2004-05-03T17:30:08+08:00.000",
                    /*ro, req, datetime, 该电围数据采集时间, desc:精确到毫秒*/
                    "IMSI":  "460001357924680",
                    /*ro, req, string, SIM卡号(International Mobile Subscriber Identity), range:[1,15]*/
                    "IMEI":  "359355041886388",
                    /*ro, opt, string, 国际移动设备识别码（International Mobile Equipment Identity), range:[0,17]*/
                    "bandIdx":  11
                    /*ro, opt, enum, 当前用户所使用的频带类型, subType:int, [0#联通B3,1#电信B3,2#移动B39,3#移动B38,4#移动B40,5#移动B41,6#联通B1,7#电信B1,8#移动2G,9#联通2G,10#联通WCDMA,11#电信CDMA,12#电信CDMA2000,13#移动TD,19#移动B1,20#移动B3,21#移动B8]*/
                }
            ]
        }
    ],
    "captureResultTargetNum":  10,
    /*ro, opt, int, 本次报警信息上报的目标数量*/
    "URLCertificationType":  "digest",
    /*ro, opt, enum, 图片url认证方式, subType:string, [no#无（这个是针对武汉云存储协议）,digest#摘要认证（这个针对设备本地存储返回URL的方式 设备例如NVR/DVR）]*/
    "triggerSourceType":  "linkedTrackingCapture"
    /*ro, opt, enum, 报警触发源类型, subType:string, [ruleTrigger#规则参数触发的报警,linkedTrackingCapture#联动跟踪抓拍触发的报警], desc:若未返回该节点或者返回ruleTrigger,则代表该报警是通过混合目标规则参数触发的报警,规则配置接口：/ISAPI/Intelligent/channels/<ID>/mixedTargetDetection?format=json;若该节点返回linkedTrackingCapture,则代表该报警是通过联动跟踪抓拍触发的报警，对应配置接口为/ISAPI/MasterSlaveTracking/linkedTracking?format=json中的linkedTrackingCaptureEnabled参数*/
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_objectsThrownDetection

高空抛物检测报警信息JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[1,32]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[1,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[1,65535], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP或HTTPS；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[1,128]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "objectsThrownDetection",
    /*ro, req, enum, 事件类型, subType:string, [objectsThrownDetection#高空抛物事件检测]*/
    "eventState":  "active",
    /*ro, req, enum, 持续性时间状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active-表示有效事件（开始 或者 无过程状态也使用该字段）；inactive-表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Objects Thrown From Buildings Detection",
    /*ro, req, string, 事件描述;高空抛物事件检测(Objects Thrown From Buildings Detection), range:[,]*/
    "channelName":  "ABC",
    /*ro, opt, string, 通道名称（监控点名称）, range:[,], desc:与/ISAPI/Streaming/channels/的一致*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[1,64]*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素;导致的实时检测的数据上传失败;后设备异常因素恢复后重新上传当时的采集分析数据*/
    "ObjectsThrownDetection": [
    /*ro, opt, array, 高空抛物事件检测结果, subType:object, range:[,], desc:检测规则区域中抛出的物体进行抛物线运动轨迹检测;在物体完成抛物线运动后;并进行报警信息以及图片上报;上报的图片中将叠加完整的运动轨迹。*/
        {
            "startTime":  "2004-05-03T17:30:08+08:00",
            /*ro, req, datetime, 开始对抛出物体进行检测的时间。*/
            "endTime":  "2004-05-03T17:30:10+08:00",
            /*ro, req, datetime, 结束对抛出物体进行检测的时间。*/
            "RuleInfo": {
            /*ro, opt, object, 规则信息*/
                "ruleID":  1,
                /*ro, req, int, 规则规则ID, range:[1,3], step:, unit:, unitType:*/
                "ruleName":  "rule1",
                /*ro, opt, string, 规则名称, range:[1,32], desc:支持中文A-Z a-z 0-9 !"#$%&'()*+,-./;<=>?@[]^_`{|}~空格*/
                "sensitive":  50,
                /*ro, opt, int, 目标灵敏度, range:[1,100], step:, unit:, unitType:, desc:高灵敏度对应低漏报;低灵敏度对应低误报*/
                "confidence":  50,
                /*ro, opt, int, 事件上报置信度, range:[1,100], step:, unit:, unitType:, desc:算法判定报警置信度高于配置值后;进行报警上报*/
                "uploadPicEnabled":  true,
                /*ro, opt, bool, 该规则对应触发事件是否联动图片上报*/
                "overlayPicEnabled":  true,
                /*ro, opt, bool, 是否对事件图片中做抛物线OSD叠加*/
                "uploadVideoEnabled":  true
                /*ro, opt, bool, 该规则对应触发事件联动小视频数据上报,
                desc:注1：短视频上传走云存储流模式方式；在未接入云的情况下，走二进制方式。
                     注2：ISUPSDK配套SS存储服务器时不支持短视频。
                     注3：该视频非录像视频,不受码流编码参数以及隐私遮蔽影响。*/
            },
            "Image": {
            /*ro, opt, object, 高空抛物事件检测图片*/
                "resourcesContentType":  "binary",
                /*ro, opt, enum, 资源传输类型, subType:string, [url#url方式传输,binary#二进制方式传输], desc:当设备返回的报警报文中带有额外资源（比如图片）时;该节点必须返回*/
                "resourcesContent":  "image"
                /*ro, opt, string, 资源标识ID, range:[1,128], desc:当设备返回的报警报文中带有额外资源（比如图片）时;该节点必须返回;当resourcesContentType为binary时;该节点与图片的Content-ID严格对应;当resourcesContentType为url时;该节点填写具体的url。*/
            },
            "Video": {
            /*ro, opt, object, 高空抛物事件检测小视频,
            desc:注1：小视频记录时间为检测出规则区域中抛出物体时到物体完成抛物线运动。该视频非录像视频,不受码流编码参数以及隐私遮蔽影响。
                 注2：短视频上传走云存储流模式方式；在未接入云的情况下，走二进制方式。
                 注3：ISUPSDK配套SS存储服务器时不支持短视频。*/
                "resourcesContentType":  "binary",
                /*ro, opt, enum, 资源传输类型, subType:string, [url#url方式传输,binary#二进制方式传输], desc:当设备返回的报警报文中带有额外资源（比如图片）时;该节点必须返回*/
                "resourcesContent":  "video"
                /*ro, opt, string, 资源标识ID, range:[1,128], desc:当设备返回的报警报文中带有额外资源（比如图片）时;该节点必须返回;当resourcesContentType为binary时;该节点与图片的Content-ID严格对应;当resourcesContentType为url时;该节点填写具体的url。*/
            }
        }
    ]
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_personQueueCounting

排队检测人数报警事件JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,32]*/
    "ipv6Address":  "test",
    /*ro, opt, string, 报警设备IPv6地址, range:[,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:string类型,最大长度为32,与/ISAPI/Event/notification/httpHosts/<ID>的protocolType一致;SDK透传json报文时,填写"HTTP";ISUP透传json报文时,填写"EHome";https时,填写"HTTPS"*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2009-11-14T15:27Z",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "personQueueCounting",
    /*ro, req, string, 触发的事件类型, range:[,128], desc:personQueueCounting -排队检测人数（区域人数检测事件）, string类型, 最大长度为,128*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发(表示心跳数据)]*/
    "eventDescription":  "Person queue time detection",
    /*ro, req, string, 事件描述, range:[,], desc:人员排队时长检测(Person queue time detection)*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:ehome报警中需返回*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据*/
    "RegionCapture": {
    /*ro, opt, object, 区域抓拍结果信息*/
        "humanCounting": {
        /*ro, opt, object, 人数统计*/
            "count":  5
            /*ro, req, int, 规则区域统计实际人数值, range:[0,60], step:, unit:, unitType:*/
        },
        "rule": {
        /*ro, opt, object, 规则属性*/
            "ruleID":  1,
            /*ro, req, int, 该人员对应的规则区域ID, range:[,], step:, unit:, unitType:, desc:与配置中的规则ID*/
            "alarmCount":  10,
            /*ro, req, int, 规则区域统计人数报警值, range:[0,60], step:, unit:, unitType:*/
            "regionColor":  "blue",
            /*ro, req, enum, 规则区域颜色, subType:string, [blue#蓝色,red#红色,yellow#黄色]*/
            "Region": [
            /*ro, req, array, 规则区域坐标, subType:object, range:[,], desc:3~10边形*/
                {
                    "x":  0.120,
                    /*ro, req, float, x坐标, range:[0.000,1], step:, unit:, unitType:*/
                    "y":  0.120
                    /*ro, req, float, y坐标, range:[0.000,1], step:, unit:, unitType:*/
                }
            ],
            "countTriggerType":  "range",
            /*ro, opt, enum, 等待人数报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于,range#区间], desc:该节点需与alarmCount节点配合使用。例如：alarmCount=8,countTriggerType=greater时,则设备当等待人数大于8人时才会上报报警。注：该节点若不支持，设备的报警触发类型默认当大于来处理。例如：alarmCount=8,countTriggerType=range时,就必须对maxAlarmCount进行赋值,若maxAlarmCount赋值为10,则代表设备将在8~10区间人数时上报报警*/
            "durationTime":  300
            /*ro, opt, int, 排队人数报警的持续时间, range:[0,3600], step:, unit:s, unitType:时间*/
        }
    },
    "backgroundImageURL":  "test",
    /*ro, opt, string, 背景图URL, range:[,256], desc:传输方式为URL时返回该节点，不返回contentID节点*/
    "contentID":  "background_image"
    /*ro, opt, string, 背景图, range:[,64], desc:传输方式为二进制方式时，返回该节点，不返回backgroundImageURL节点*/
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_personQueueRealTime

排队检测实时数据上报事件JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,32]*/
    "ipv6Address":  "test",
    /*ro, opt, string, 报警设备IPv6地址, range:[,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#SDK透传json报文,HTTPS#EHome透传json报文,EHome#走https], desc:协议类型: "HTTP,HTTPS,EHome",string类型,最大长度为32,与/ISAPI/Event/notification/httpHosts/<ID>的protocolType一致;SDK 透传json报文时,填写"HTTP";ISUP透传json报文时,填写"EHome";走https时,填写"HTTPS"*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2018-03-13T19:42:27+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  " personQueueRealTime",
    /*ro, req, string, 触发的事件类型, range:[,128], desc:personQueueRealTime-排队检测人员实时数据上报（区域实时人数检测事件）*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发(表示心跳数据)]*/
    "eventDescription":  "Person Queue Real Time Data",
    /*ro, req, string, 事件描述, range:[,], desc:人员排队检测实时数据上报*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:ehome报警中需返回*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据*/
    "PersonQueueRealTimeData": {
    /*ro, opt, object, 人员排队检测实时数据信息*/
        "targetID":  1,
        /*ro, req, int, 目标ID, range:[,], step:, unit:, unitType:*/
        "ruleID":  1,
        /*ro, req, int, 该人员对应的规则区域ID, range:[,], step:, unit:, unitType:, desc:与配置中的规则ID*/
        "personState":  "enter",
        /*ro, req, enum, 人员状态类型, subType:string, [enter#进入区域,leave#离开区域]*/
        "waitTime":  600,
        /*ro, opt, int, 人员排队实际等待时长, range:[0,3600], step:, unit:s, unitType:时间, desc:依赖项,integer32类型,当personState为leave时生效*/
        "peopleNum":  6,
        /*ro, req, int, 此刻该区域内总人数, range:[,], step:, unit:, unitType:*/
        "enterTime":  "2018-03-13T19:42:27+08:00"
        /*ro, opt, datetime, 目标进入时间, desc:依赖项,ISO8601 time格式,当personState==leave时才需返回。*/
    }
}


EVENT_JSON_personQueueTime

排队检测时长报警事件JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,32]*/
    "ipv6Address":  "test",
    /*ro, opt, string, 报警设备IPv6地址, range:[,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:string类型,最大长度为32,与/ISAPI/Event/notification/httpHosts/<ID>的protocolType一致;SDK 透传json报文时,填写"HTTP";ISUP透传json报文时,填写"EHome";https时,填写"HTTPS"*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2009-11-14T15:27Z",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "personQueueTime",
    /*ro, req, string, 触发的事件类型, range:[,128], desc:personQueueTime -排队检测时长（区域人员停留时长检测事件）, string类型, 最大长度为,128*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发(表示心跳数据)]*/
    "eventDescription":  "Person queue time detection",
    /*ro, req, string, 事件描述, range:[,], desc:人员排队时长检测(Person queue time detection)*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:ehome报警中需返回*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据*/
    "humanCapture": {
    /*ro, opt, object, 人体属性*/
        "human": {
        /*ro, req, object, 人体属性*/
            "targetID":  1,
            /*ro, req, int, 超过报警等待时间的人员目标ID, range:[,], step:, unit:, unitType:, desc:由DSP生成，对应其人员目标位置*/
            "waitTime":  600,
            /*ro, req, int, 人员排队实际等待时长, range:[0,3600], step:, unit:s, unitType:时间*/
            "Region": [
            /*ro, req, array, 该人员目标位置区域坐标, subType:object, range:[,], desc:4边形*/
                {
                    "x":  0.120,
                    /*ro, req, float, x坐标, range:[0,1], step:, unit:, unitType:*/
                    "y":  0.120
                    /*ro, opt, float, y坐标, range:[0,1], step:, unit:, unitType:*/
                }
            ],
            "humanImageURL":  "test",
            /*ro, opt, string, 人体子图URL, range:[1,256], desc:最大长度为256*/
            "contentID":  "human_image"
            /*ro, opt, string, 人体子图, range:[0,64]*/
        },
        "rule": {
        /*ro, opt, object, 规则属性*/
            "ruleID":  1,
            /*ro, req, int, 该人员对应的规则区域ID, range:[,], step:, unit:, unitType:, desc:与配置中的规则ID*/
            "alarmTime":  10,
            /*ro, req, int, 该规则区域中排队时长报警值, range:[0,3600], step:, unit:s, unitType:时间*/
            "regionColor":  "blue",
            /*ro, req, enum, 规则区域颜色, subType:string, [blue#蓝色,red#红色,yellow#黄色]*/
            "Region": [
            /*ro, req, array, 规则区域坐标, subType:object, range:[,], desc:3~10边形*/
                {
                    "x":  0.120,
                    /*ro, req, float, x坐标, range:[0.000,1], step:, unit:, unitType:*/
                    "y":  0.120
                    /*ro, req, float, y坐标, range:[0.000,1], step:, unit:, unitType:*/
                }
            ],
            "timeTriggerType":  "greater"
            /*ro, opt, enum, 等待时间报警触发类型, subType:string, [greater#大于,less#小于,equal#等于,unequal#不等于],
            desc:该节点需与alarmTime节点配合使用。
                        例如：alarmTime=600s,countingTriggerType=greater时,则设备当等待时间大于600s时才会上报报警。
                        注：该节点若不支持，设备的报警触发类型默认当大于来处理。*/
        }
    },
    "backgroundImageURL":  "test",
    /*ro, opt, string, 背景图URL, range:[,256], desc:传输方式为URL时返回该节点，不返回contentID节点*/
    "contentID":  "background_image"
    /*ro, opt, string, 背景图, range:[,64], desc:传输方式为二进制方式时，返回该节点，不返回backgroundImageURL节点*/
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_personQueueTimingStatistics

排队检测定时人数统计事件JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "personQueueTimingStatistics",
    /*ro, req, string, 事件类型;排队检测定时人数统计, range:[,]*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始 或者 无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Personnel queuing timed statistics data upload",
    /*ro, req, string, 事件描述, range:[,]*/
    "channelName":  "ABC",
    /*ro, opt, string, 通道名称（监控点名称）, range:[,], desc:与/ISAPI/Streaming/channels/<ID>的<channelName>一致*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[1,64]*/
    "isDataRetransmission":  true,
    /*ro, opt, bool, 重传数据标记, desc:由于网络异常等因素;导致的实时检测的数据上传失败;后设备异常因素恢复后重新上传当时的采集分析数据*/
    "PersonQueueTimingStatistics": {
    /*ro, opt, object, 排队检测定时统计数据, desc:设备可在间隔时间范围内,定时统计所有规则区域中各排队时长区间内的人数,并上报结果。*/
        "startTime":  "2004-05-03T17:30:08+08:00",
        /*ro, req, datetime, 开始统计时间。*/
        "endTime":  "2004-05-03T17:30:10+08:00",
        /*ro, req, datetime, 结束统计时间。*/
        "QueueTimeCounting": [
        /*ro, req, array, 排队时长区间人数统计, subType:object, range:[1,4], desc:设备可在间隔时间范围内,定时统计每个规则区域中各排队时长区间内的人数之和,并上报结果。*/
            {
                "ruleID":  1,
                /*ro, req, int, 规则ID, range:[1,8], step:, unit:, unitType:*/
                "QueueTime": [
                /*ro, req, array, 排队时长人数统计区间, subType:object, range:[1,4], desc:设备可在间隔时间范围内,定时统计每个规则区域中各排队时长区间内的人数,并上报结果。如统计的最大时长无上限（例如大于等于60s的人数）,则最小排队时长minQueueTime赋值为60s,并不下发最大时长maxQueueTime*/
                    {
                        "minQueueTime":  1,
                        /*ro, req, int, 最小排队时长(即该区间内大于等于该时长), range:[1,3600], step:, unit:s, unitType:, desc:最小排队时长的值必须小于最大排队时长。*/
                        "maxQueueTime":  1,
                        /*ro, opt, int, 最大排队时长(即该区间内小于等于该时长;若未下发该字段则代表最大时长无上限), range:[1,3600], step:, unit:s, unitType:, desc:最大排队时长的值必须大于最小排队时长。*/
                        "count":  5,
                        /*ro, req, int, 该区间内统计的实际人数值, range:[0,60], step:, unit:, unitType:*/
                        "averageQueueTime":  3600
                        /*ro, opt, int, 该区间内平均排队时长, range:[1,3600], step:, unit:s, unitType:*/
                    }
                ],
                "ruleCount":  5,
                /*ro, req, int, 该规则内(包含各个时间区间)统计的实际人数值, range:[0,60], step:, unit:, unitType:*/
                "ruleAverageQueueTime":  3600
                /*ro, opt, int, 该规则内(包含各个时间区间)平均排队时长, range:[1,3600], step:, unit:s, unitType:*/
            }
        ]
    }
}


EVENT_JSON_QRCodeEvent

门禁二维码事件信息JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、    在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、    在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、    在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "QRCodeEvent",
    /*ro, req, string, 事件类型, range:[,], desc:二维码事件*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active - 表示有效事件（开始 或者 无过程状态也使用该字段）；inactive - 表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "QR Code Event",
    /*ro, req, string, 事件描述, range:[,], desc:二维码事件*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,], desc:ehome报警中需返回，例如test0123.*/
    "QRCodeEvent": {
    /*ro, opt, object, 门禁二维码事件*/
        "deviceName":  "test",
        /*ro, opt, string, 设备名称, range:[,]*/
        "serialNo":  "test",
        /*ro, opt, string, 事件流水号, range:[,]*/
        "currentEvent":  true,
        /*ro, opt, bool, 是否为实时事件*/
        "QRCodeInfo":  "test",
        /*ro, req, string, 二维码信息, range:[,]*/
        "thermometryUnit":  "celsius",
        /*ro, opt, enum, 测温单位, subType:string, [celsius#摄氏度（默认）,fahrenheit#华氏度,kelvin#开尔文]*/
        "currTemperature":  1.0,
        /*ro, opt, float, 人脸温度, range:[,], step:, unit:, unitType:, desc:精确到小数点后一位*/
        "isAbnomalTemperature":  true,
        /*ro, opt, bool, 人脸测温是否温度异常*/
        "RegionCoordinates": {
        /*ro, opt, object, 人脸温度坐标*/
            "positionX":  1,
            /*ro, opt, int, X坐标, range:[0,1000], step:, unit:, unitType:*/
            "positionY":  1
            /*ro, opt, int, Y坐标, range:[0,1000], step:, unit:, unitType:*/
        },
        "remoteCheck":  true,
        /*ro, opt, bool, 是否需要远程核验, desc:默认不需要*/
        "mask":  "test",
        /*ro, opt, string, 是否戴口罩, range:[,]*/
        "visibleLightURL":  "test",
        /*ro, opt, string, 热成像相机可见光图片URL, range:[,]*/
        "thermalURL":  "test",
        /*ro, opt, string, 热成像图片URL, range:[,]*/
        "helmet":  "unknown"
        /*ro, opt, enum, 是否戴安全帽, subType:string, [unknown#未知,yes#戴安全帽,no#不戴安全帽]*/
    }
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_radarVideoDetection

雷视目标检测事件JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[0,32]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[0,128]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome]*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[0,32]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:*/
    "dateTime":  "2004-05-03T17:30:08.123+08:00",
    /*ro, req, string, 报警触发时间, range:[,]*/
    "activePostCount":  1,
    /*ro, req, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:*/
    "eventType":  "radarVideoDetection",
    /*ro, req, enum, 触发的事件类型, subType:string, [radarVideoDetection#雷视目标检测事件]*/
    "eventState":  "active",
    /*ro, req, enum, 事件触发状态, subType:string, [active#触发,inactive#未触发(表示心跳数据)]*/
    "eventDescription":  "Radar Video Detection",
    /*ro, req, string, 事件描述, range:[,]*/
    "channelName":  "ABC",
    /*ro, opt, string, 通道名称（监控点名称）, range:[,]*/
    "deviceID":  "test0123",
    /*ro, opt, string, PUID, range:[,], desc:在ehome协议接入透传ISAPI事件信息中必须返回*/
    "Datas": [
    /*ro, req, array, 雷视目标检测数据, subType:object, range:[,]*/
        {
            "targetID":  1,
            /*ro, req, int, 抓拍的目标ID, range:[,], step:, unit:, unitType:*/
            "UUID":  "test",
            /*ro, req, string, 事件上报的唯一标识, range:[0,64]*/
            "GPS": {
            /*ro, opt, object, GPS信息*/
                "longitude":  -180.000000,
                /*ro, req, float, 经度, range:[-180.000000,180.000000], step:, unit:, unitType:*/
                "latitude":  -90.000000
                /*ro, req, float, 维度, range:[-90.000000,90.000000], step:, unit:, unitType:*/
            },
            "targetType":  "vehicle",
            /*ro, opt, enum, 目标类型, subType:string, [vehicle#机动车,human#人,nonMotor#非机动车,ship#船舶], desc:当目标类型为ship船舶时，设备上传参数如下："targetID""UUID""GPS""targetType""speed""shipLength"*/
            "vehicleSize":  "oversize",
            /*ro, opt, enum, 车辆大小, subType:string, [oversize#大型车,middle#中型车,light#小型车]*/
            "plateNo":  "蓝浙AX2P12",
            /*ro, opt, string, 车牌号码, range:[,]*/
            "plateColor":  "yellow",
            /*ro, opt, string, 车牌颜色, range:[,], desc:参考车牌颜色定义*/
            "vehicleLogo":  1,
            /*ro, opt, int, 车辆主品牌, range:[,], step:, unit:, unitType:, desc:详见车辆主子品牌表*/
            "vehicleSublogo":  1,
            /*ro, opt, int, 车辆子品牌, range:[,], step:, unit:, unitType:, desc:详见车辆主子品牌表*/
            "vehicleColor":  "red",
            /*ro, opt, string, 车辆颜色, range:[,], desc:参考车辆颜色定义*/
            "laneNo":  1,
            /*ro, opt, int, 车道号, range:[,], step:, unit:, unitType:*/
            "vehicleParkingTimes":  1,
            /*ro, opt, int, 车辆停车次数, range:[,], step:, unit:, unitType:, desc:设备会检测监测区域内单一车辆的停车次数,并统计上报*/
            "position": [500.0, 500.0],
            /*ro, opt, array, 目标中心相对于相机的偏移, subType:float, range:[,], desc:（单位米）,X坐标和Y坐标，X左负右正，Y向上为正（没有负值），相机所在水平线（垂直于车道）的中点（所有车道的中点）为原点*/
            "speed":  23.4,
            /*ro, opt, float, 目标速度-纵向速度, range:[,], step:, unit:km/h, unitType:速度*/
            "horizonSpeed":  33.4,
            /*ro, opt, float, 目标速度-横向速度, range:[,], step:, unit:km/h, unitType:速度*/
            "normalizationPosition": [500, 500],
            /*ro, opt, array, 归一化坐标, subType:int, range:[,], desc:(X:0-1000,Y:-500-1500),该坐标表示坐标归一化后坐标系中原坐标的值，可能存在负数（不用0-1表示）*/
            "targetMaxY":  340.0,
            /*ro, opt, float, 目标y坐标最大值, range:[,], step:, unit:, unitType:, desc:（此值是实际y轴的最大值经坐标变换后的值,不超过1500）,雷达检测的最远距离,由于不同雷达安装位置不同,距离有差异，终端需要校准使用*/
            "radarDetected":  true,
            /*ro, opt, bool, 目标是否被雷达检测到,
            desc:对于radarDetected字段为true的目标，该字段表示的是该目标被雷达检测到，意味着这个目标的位置和速度将会更加准确。
                        对于radarDectected字段为false的目标，表示的是该目标雷达未检测到，反馈的坐标和速度将会不太准确（能够反应大致位置），
                        但该目标可能包含视频给出的车型，车牌，和车辆特征等数据。
                        是否使用这个目标，取决于平台。 若需要使用准确的目标位置，则最好取radarDetected=true的目标*/
            "relativeMotionStatus":  "approaching",
            /*ro, opt, enum, 检测目标相对雷达的运动状态, subType:string, [leaving#远离,approaching#靠近]*/
            "shipLength":  10,
            /*ro, opt, int, 船身长度, range:[,], step:, unit:m, unitType:长度*/
            "isOutOfRelayArea":  true,
            /*ro, opt, bool, 是否超出接力区域*/
            "vehicleType":  "bus",
            /*ro, opt, string, 车辆类型, range:[,], desc:详细枚举见PMP标准字典*/
            "radarDirection":  0.000
            /*ro, opt, float, 雷达航向角, range:[0,359], step:, unit:°, unitType:平面角*/
        }
    ],
    "DeviceDistance": {
    /*ro, opt, object, 设备间距*/
        "horizontal":  0.000,
        /*ro, req, float, 横向间距, range:[,], step:, unit:m, unitType:长度*/
        "vertical":  0.000
        /*ro, req, float, 纵向间距, range:[,], step:, unit:m, unitType:长度*/
    }
}


EVENT_JSON_recordStatusUpload

录制状态报警信息JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "recordStatusUpload",
    /*ro, req, string, 事件类型, range:[,], desc:设备录制状态上报*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active-表示有效事件（开始 或者 无过程状态也使用该字段）；inactive-表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "divice's recording status upload",
    /*ro, req, string, 事件描述, range:[,], desc:设备录制状态上报*/
    "recordStatus": [
    /*ro, req, array, 录像状态 integer32类型, subType:object, range:[,]*/
        {
            "channelId":  1,
            /*ro, opt, int, 通道号, range:[,], step:, unit:, unitType:*/
            "recordStatus":  "recording"
            /*ro, opt, enum, 通道录制状态, subType:string, [recording#录像中,pausing#暂停中,notRecording#未录像]*/
        }
    ]
}


EVENT_JSON_safetyHelmet

安全帽检测结果JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "safetyHelmetDetection",
    /*ro, req, string, 事件类型, range:[,], desc:safetyHelmetDetection- 安全帽检测事件*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active - 表示有效事件（开始 或者 无过程状态也使用该字段）；inactive - 表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Safety Helmet Detection",
    /*ro, req, string, 事件描述, range:[,], desc:安全帽检测(Safety Helmet Detection)*/
    "channelName":  "ABC",
    /*ro, req, string, 通道名称（监控点名称）, range:[,]*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,], desc:在ehome协议接入透传ISAPI事件信息中必须返回*/
    "Target": [
    /*ro, opt, array, 目标, subType:object, range:[,], desc:一次识别可以输出多个目标*/
        {
            "recognitionType":  "safetyHelmet",
            /*ro, req, enum, 识别类型, subType:string, [safetyHelmet#安全帽检测]*/
            "TargetInfo": {
            /*ro, opt, object, 目标信息*/
                "recognition":  "safetyHelmet",
                /*ro, req, enum, 识别类型, subType:string, [safetyHelmet#安全帽检测]*/
                "dataSource":  "timing"
                /*ro, req, enum, 检测数据来源, subType:string, [timing#定时,trigger#触发（超过设置的等级限制）]*/
            },
            "rect": [
            /*ro, opt, array, 安全帽矩形框, subType:object, range:[,], desc:注：该节点实际只有一个元素返回*/
                {
                    "height":  1.000,
                    /*ro, opt, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "width":  1.000,
                    /*ro, opt, float, 高度, range:[0.000,1.000], step:, unit:, unitType:*/
                    "x":  0.000,
                    /*ro, opt, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    "y":  0.000
                    /*ro, opt, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                }
            ],
            "contentID":  "safetyHelmet1_image",
            /*ro, opt, string, 未佩戴安全帽小图contentID, range:[0,256]*/
            "pId":  "F4F665D6A18E41308CE9934DCDDD2222",
            /*ro, opt, string, 未佩戴安全帽小图图片ID, range:[0,64]*/
            "uid":  "test",
            /*ro, opt, string, 事件上报的唯一标识, range:[0,64], desc:可以使用时间（精确到毫秒）加上随即数的方式组成,用于标注人脸目标是否唯一（例如：安全帽检测到的人脸再进行人脸比对，则人脸比对报警中的uid需要和本字段保持一致，以表明是同一个人脸产生的报警）*/
            "safetyHelmetURL":  "test",
            /*ro, opt, string, 未佩戴安全帽小图url, range:[0,256]*/
            "faceContrastResult":  "success",
            /*ro, opt, enum, 人脸比对结果, subType:string, [success#成功,failed#失败], desc:配置安全帽关联人脸（人脸比对联动）才会返回，普通安全帽告警不返回，返回success时，表示比对成功，Face节点有效；返回failed时，表示比对失败Face节点无效*/
            "Face": {
            /*ro, opt, object, 人脸信息*/
                "FDID":  "1123",
                /*ro, req, string, 人脸库ID, range:[0,63]*/
                "FPID":  "test",
                /*ro, opt, string, 人脸记录ID, range:[0,63], desc:字母数字组合*/
                "contentID":  "faceLibPic",
                /*ro, opt, string, 抓拍人脸匹配到的库图片contentID, range:[0,256]*/
                "pId":  "F4F665D6A18E41308CE9934DCDDD3333",
                /*ro, opt, string, 抓拍人脸匹配到的库图片ID, range:[0,64]*/
                "libFacePicURL":  "test"
                /*ro, opt, string, 抓拍人脸匹配到的库图片url, range:[0,256]*/
            },
            "FaceList": [
            /*ro, opt, array, 人脸信息列表, subType:object, range:[,],
            desc:人脸信息,faceContrastResult为"success"的时候返回,该节点和Face节点功能一致，但是Face节点只能返回top1的结果。因此扩展成数组,可以topN的结果。之后只扩展FaceList，不再扩展Face节点,但是为了保证兼容性，应该同时返回Face和FaceList
            此外该节点的人脸数据应该按照匹配度降序排序。也即数组第一个是匹配度最高的，最后一个是匹配度最低的。*/
                {
                    "FDID":  "1123",
                    /*ro, req, string, 人脸库ID, range:[0,63]*/
                    "FPID":  "test",
                    /*ro, opt, string, 人脸记录ID, range:[0,63], desc:字母数字组合*/
                    "contentID":  "faceLibPic",
                    /*ro, opt, string, 抓拍人脸匹配到的库图片contentID, range:[0,256]*/
                    "pId":  "F4F665D6A18E41308CE9934DCDDD3333",
                    /*ro, opt, string, 抓拍人脸匹配到的库图片ID, range:[0,64]*/
                    "name":  "test",
                    /*ro, opt, string, 人员姓名, range:[1,32], desc:敏感信息需要加密*/
                    "certificateType":  "passportID",
                    /*ro, opt, enum, 证件类型, subType:string, [ID#身份证,passportID#护照,other#其他], desc:敏感信息需要加密*/
                    "certificateNumber":  "test"
                    /*ro, opt, string, 证件号, range:[8,32], desc:敏感信息需要加密*/
                }
            ],
            "status":  "wear"
            /*ro, opt, enum, 是否佩戴安全帽, subType:string, [unwear#未佩戴,wear#佩戴], desc:如果本节点不传默认未佩戴*/
        }
    ],
    "contentID":  "background_image",
    /*ro, opt, string, 未佩戴安全帽小图contentID, range:[0,256]*/
    "pId":  "F4F665D6A18E41308CE9934DCDDD1111",
    /*ro, opt, string, 未佩戴安全帽小图图片ID, range:[0,64]*/
    "imageURL":  "test",
    /*ro, opt, string, 背景图url, range:[0,256]*/
    "URLCertificationType":  "digest"
    /*ro, opt, enum, 图片url认证方式, subType:string, [no#无（这个是针对武汉云存储协议）,digest#摘要认证（这个针对设备本地存储返回URL的方式]*/
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


体征异常报警信息

设备网络SDK开发使用手册

体征异常报警信息Json数据结构

Content-Type: application/json

{

    "ipAddress": "172.6.64.7",

    /*必填, 报警设备IPv4地址, string类型, 最大长度为32*/

    "ipv6Address": "",

    /*可选, 报警设备IPv6地址, string类型, 最大长度为128*/

    "portNo": 80,

    /*可选, 报警设备端口号, integer32类型*/

    "protocol": "HTTP",

    /*可选, 协议类型: HTTP或HTTPS, string类型, 最大长度为32*/

    "macAddress": "01:17:24:45:D9:F4",

    /*可选, MAC地址, string类型, 最大长度为32*/

    "channelID": "1",

    /*可选, 触发报警的设备通道号, integer32类型*/

    "dateTime": "2009-11-14T15:27Z",

    /*必填, 报警触发时间, ISO8601 time格式, string类型, 最大长度为32*/

    "activePostCount": 1,

    /*必填, 同一个报警已经上传的次数, integer32类型*/

    "eventType": "signAbnormal",

    /*必填, 触发的事件类型: signAbnormal-体征异常报警, string类型, 最大长度为128*/

    "eventState": "active",

    /*必填, 事件触发状态: active-触发, inactive-未触发(表示心跳数据), string类型, 最大长度为32*/

    "eventDescription": "signAbnormal",

    /*必填, 事件描述: signAbnormal-体征异常报警, string类型, 最大长度为128*/

    "signAbnormal": [

    {

        /*体征异常报警信息, 一次识别可以输出多种报警的结果, array数组*/

        "alarmSubType": "heartRateDetect,bloodOxygenDetect,systolicBloodPressureDetect,diastolicBloodPressureDetect",

        /*可选, 报警子类型,heartRateDetect-心率检测,bloodOxygenDetect-血氧浓度检测,systolicBloodPressureDetect-血压收缩压检测,diastolicBloodPressureDetect-血压舒张压检测, string类型*/

        "AbnormalInformation":

        {

            /*异常信息*/

            "realValue": 80,

            /*必填, 实时值, integer类型*/

            "upperLimit": 80,

            /*必填, 上限, integer类型*/

            "lowerLimit": 80,

            /*必填, 下限, integer类型*/

        },

    }], //signAbnormal

}

See Also

NET_DVR_STDXMLConfig


EVENT_JSON_TargetCapture

全景目标识别报警事件JSON数据

字符编码为UTF-8。

设备上传的报警信息包含图片数据，图片数据有二进制传输方式和URL传输方式两种：如果是二进制传输方式，图片数据和JSON数据以表单的形式一起上传，解析出图片二进制数据可以直接保存成jpg图片文件；如果使用URL方式传输，则上传的为图片的存储URL，HTTP协议。如果设备同时支持二进制和URL传输方式，可以在调用NET_DVR_SetupAlarmChan_V50布防时选择当前使用的类型（NET_DVR_SETUPALARM_PARAM_V50中的byAlarmTypeURL参数）。

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "releatedChannelList": [1, 2, 3],
    /*ro, opt, array, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), subType:int, range:[,], desc:用于平台收到报警时展示预览或回放*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "TargetCapture",
    /*ro, req, string, 事件类型, range:[,], desc:全景目标抓拍检测*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始 或者 无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Target capture detection",
    /*ro, req, string, 事件描述, range:[,], desc:全景目标抓拍检测*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,], desc:ehome事件中需返回,例如test0123.*/
    "AssociatedChannels": [
    /*ro, opt, array, 事件关联通道列表, subType:object, range:[,]*/
        {
            "channel":  10
            /*ro, opt, int, 事件关联通道, range:[,], step:, unit:, unitType:, desc:全景设备带有细节相机通道,在接入后端的时候,通道是分别接入,在该事件中做区分,用于4200界面显示*/
        }
    ],
    "Target": [
    /*ro, opt, array, 全景目标抓拍结果信息, subType:object, range:[,]*/
        {
            "recognitionType":  "human",
            /*ro, opt, enum, 识别目标类型, subType:string, [human#人体,face#人脸,vehicle#车辆,plate#车牌,nonMotor#非机动车]*/
            "TargetInfo": {
            /*ro, opt, object, 目标信息*/
                "recognition":  "human",
                /*ro, opt, enum, 识别目标类型, subType:string, [human#人体,face#人脸,vehicle#车辆,plate#车牌,nonMotor#非机动车]*/
                "Region": [
                /*ro, opt, array, 具体目标坐标, subType:object, range:[,]*/
                    {
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ],
                "Property": [
                /*ro, opt, array, 属性数据, subType:object, range:[,]*/
                    {
                        "description":  "jacketColor",
                        /*ro, opt, enum, 属性描述, subType:string, [jacketColor#上衣颜色,trousersColor#下衣颜色,ageGroup#年龄段,gender#性别,glass#是否戴眼镜,ride#是否骑车,bag#是否背包,things#是否拎东西,hat#是否戴帽子,trousersType#下装类型,mask#是否戴口罩,hairStyle#发型,cyclingPersonNumber#骑车人数,direction#目标方向,score#人体评分,hatStyle#帽子款式,cyclingType#骑车类型]*/
                        "value":  "23"
                        /*ro, opt, string, 依赖description的赋值, range:[,]*/
                    }
                ],
                "structureInformation": {
                /*ro, opt, object, 结构化信息*/
                    "confidence":  100,
                    /*ro, opt, int, 人脸置信度, range:[0,100], step:, unit:, unitType:*/
                    "faceScore":  100
                    /*ro, opt, int, 人脸评分, range:[0,100], step:, unit:, unitType:*/
                },
                "contentID":  "single_human_image_0",
                /*ro, opt, string, 目标小图片contentID, range:[,], desc:多张小图的时候，single_human_image_0/single_human_image_1/single_human_image_2；contentID不能重复；*/
                "targetImageURL":  "test",
                /*ro, opt, string, 目标小图片URL, range:[,]*/
                "targetID":  "test",
                /*ro, opt, string, 识别目标ID, range:[,], desc:同一个人员的人脸和人体中携带的ID相同*/
                "modeldata":  "test",
                /*ro, opt, string, 模型base64编码数据, range:[,]*/
                "linkageUid":  "test",
                /*ro, opt, string, 联动其他事件上报的唯一标识, range:[0,64],
                desc:可以使用时间（精确到毫秒）加上随即数的方式组成,
                                 该字段当前主要用于与专业智能报警(学生起立)中uid字段内容一样的事件进行关联,
                                 表示该全景目标事件中的当前目标与专业智能事件(学生起立)的具体目标进行关联*/
                "ClassRegions": [
                /*ro, opt, array, 人脸在全景上的具体坐标位置, subType:object, range:[,], desc:球机通道上传，为人脸在全景通道的坐标（球机反算）；为了对接已经发布的后端设备，全景通道也会上传，坐标值与TargetInfo. Region一致*/
                    {
                        "x":  0.000,
                        /*ro, req, float, X坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                        "y":  0.000
                        /*ro, req, float, Y坐标, range:[0.000,1.000], step:, unit:, unitType:*/
                    }
                ]
            }
        }
    ],
    "Location": {
    /*ro, opt, object, 方位*/
        "lng":  "116.46",
        /*ro, opt, string, 经度, range:[,]*/
        "lat":  "39.92"
        /*ro, opt, string, 纬度, range:[,]*/
    },
    "contentID":  "background_image",
    /*ro, opt, string, 全景抓拍大图contentID, range:[,]*/
    "imageURL":  "test",
    /*ro, opt, string, 全景抓拍大图URL, range:[,]*/
    "AbsoluteHigh": {
    /*ro, opt, object, PTZ位置*/
        "elevation":  -900,
        /*ro, opt, int, 仰角, range:[-900,2700], step:, unit:, unitType:*/
        "azimuth":  22,
        /*ro, opt, int, 方位角, range:[0,3600], step:, unit:, unitType:*/
        "absoluteZoom":  1
        /*ro, opt, int, 变倍倍率, range:[1,1000], step:, unit:, unitType:*/
    },
    "analysisMode":  "individualBehavior",
    /*ro, opt, enum, 分析模式, subType:string, [individualBehavior#个体行为（本字段未返回即为个体行为模式）,groupBehavior#群体行为]*/
    "PanoramicChannelImage": {
    /*ro, opt, object, 全景通道信息*/
        "contentID":  "group_background_image",
        /*ro, opt, string, 细节路上传全景抓拍大图contentID, range:[,], desc:只在细节路报警中上传*/
        "imageURL":  "test"
        /*ro, opt, string, 细节路上传全景抓拍大图URL, range:[,], desc:只在细节路报警中上传*/
    }
}

如果以二进制方式上传图片数据，使用表单格式：

  1. “Content-Type: multipart/form-data”表示以表单格式发送数据；boundary为分割符。
  2. 请求体由多个相同的部分组成，每一个部分都是以”--“再加上boundary定义的分隔符开始的，分隔符回车后面为该部分的内容描述。
  3. JSON数据里面的contentID对应图片数据报文中的Content-ID，对应Content-ID的报文部分是图片二进制数据。
  4. 以”--分割符--”结尾，表示请求体结束。


EVENT_JSON_tollCodeInfo

二维码信息上报JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "tollCodeInfo",
    /*ro, req, string, 事件类型, range:[,], desc:二维码信息上报*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始或者无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "tollCodeInfo",
    /*ro, req, string, 事件描述, range:[,], desc:二维码信息上报*/
    "channelName":  "ABC",
    /*ro, req, string, 通道名称（监控点名称）, range:[,], desc:与 /ISAPI/Streaming/channels/<ID>的<channelName>一致*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,], desc:在ehome协议接入透传ISAPI事件信息中必须返回,与/ISAPI/System/Network/Ehome的deviceID一致*/
    "TollCodeInfo": {
    /*ro, opt, object, 二维码信息上报*/
        "UUID":  "123456789",
        /*ro, req, string, 本条消息的UUID, range:[,], desc:给设备推送收款结果需要携带UUID*/
        "tollCode":  "abcdefg"
        /*ro, req, string, 扫码信息, range:[,]*/
    }
}


EVENT_JSON_TTD

交通瞬时数据上传JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "TTD",
    /*ro, req, string, 事件类型, range:[,], desc:交通瞬时数据上传*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始 或者 无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "Traffic Transient Data",
    /*ro, req, string, 事件描述, range:[,], desc:交通瞬时数据上传*/
    "channelName":  "ABC",
    /*ro, req, string, 通道名称（监控点名称）, range:[,], desc:与 /ISAPI/Streaming/channels/<ID>的<channelName>一致*/
    "deviceID":  "test0123",
    /*ro, opt, string, 即PUID, range:[,], desc:在ehome协议接入透传ISAPI事件信息中必须返回,与/ISAPI/System/Network/Ehome的deviceID一致*/
    "TTD": {
    /*ro, opt, object, 交通瞬时数据上传信息*/
        "totalLaneNum":  1,
        /*ro, req, int, 有效车道总数, range:[1,18], step:, unit:, unitType:*/
        "LaneInfo": [
        /*ro, req, array, 车道信息, subType:object, range:[,]*/
            {
                "laneNo":  1,
                /*ro, req, int, 车道号, range:[1,18], step:, unit:, unitType:*/
                "smallCarNum":  20,
                /*ro, req, int, 小型车数量, range:[,], step:, unit:, unitType:*/
                "midsizeCarNum":  20,
                /*ro, req, int, 中型车数量, range:[,], step:, unit:, unitType:*/
                "heavyVehicleNum":  20,
                /*ro, req, int, 重型车数量, range:[,], step:, unit:, unitType:*/
                "nonmotorVehicleNum":  20,
                /*ro, req, int, 非机动车车数量, range:[,], step:, unit:, unitType:*/
                "aversgeSpeed":  60,
                /*ro, req, int, 车道过车平均速度, range:[,], step:, unit:km/h, unitType:速度*/
                "queueVehicleNum":  2,
                /*ro, req, int, 排队停车数, range:[,], step:, unit:, unitType:*/
                "queueLen":  10,
                /*ro, req, int, 排队长度, range:[,], step:, unit:m, unitType:长度*/
                "channelizationLaneNo":  2,
                /*ro, opt, int, 渠化车道号, range:[,], step:, unit:, unitType:*/
                "isIntersectionJam":  true
                /*ro, opt, bool, 路口是否溢出*/
            }
        ],
        "totalCustomRegionNum":  2,
        /*ro, opt, int, 自定义区域总数, range:[1,2], step:, unit:, unitType:*/
        "CustomRegionInfo": [
        /*ro, opt, array, 自定义区域信息, subType:object, range:[,]*/
            {
                "regionNo":  2,
                /*ro, req, int, 区域编号, range:[1,2], step:, unit:, unitType:*/
                "smallCarNum":  20,
                /*ro, req, int, 小型车数量, range:[,], step:, unit:, unitType:*/
                "midsizeCarNum":  20,
                /*ro, req, int, 中型车数量, range:[,], step:, unit:, unitType:*/
                "heavyVehicleNum":  20,
                /*ro, req, int, 重型车数量, range:[,], step:, unit:, unitType:*/
                "nonmotorVehicleNum":  20,
                /*ro, req, int, 非机动车车数量, range:[,], step:, unit:, unitType:*/
                "aversgeSpeed":  60
                /*ro, req, int, 车道过车平均速度, range:[,], step:, unit:km/h, unitType:速度*/
            }
        ],
        "VehicleStatistics": {
        /*ro, opt, object, 车辆统计*/
            "RegionList": [
            /*ro, opt, array, 区域列表, subType:object, range:[,]*/
                {
                    "Region": {
                    /*ro, opt, object, 区域*/
                        "id":  1,
                        /*ro, req, int, 区域编号, range:[,], step:, unit:, unitType:*/
                        "vehicleNum":  1
                        /*ro, opt, int, 区域车辆数, range:[,], step:, unit:, unitType:*/
                    }
                }
            ]
        }
    }
}


EVENT_JSON_uploadCloudStatus

资源上传云存储状态报警JSON数据

{
    "ipAddress":  "172.6.64.7",
    /*ro, req, string, 报警设备IPv4地址, range:[,]*/
    "ipv6Address":  "null",
    /*ro, opt, string, 报警设备IPv6地址, range:[,]*/
    "portNo":  80,
    /*ro, opt, int, 报警设备端口号, range:[,], step:, unit:, unitType:*/
    "protocol":  "HTTP",
    /*ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP；ISUP透传ISAPI 的时候赋值 EHome）protocolType作为历史遗留由平台兼容*/
    "macAddress":  "01:17:24:45:D9:F4",
    /*ro, opt, string, MAC地址, range:[,]*/
    "channelID":  1,
    /*ro, opt, int, 触发报警的设备通道号, range:[,], step:, unit:, unitType:, desc:触发的视频通道号（1、在SDK透传ISAPI协议的时候，上传的是 私有协议对应的视频通道号；（2、在萤石透传ISAPI协议的时候，上传的是 萤石协议对应的视频通道号；（3、在ISUP透传ISAPI协议的时候，上传的是 ISUP协议对应的视频通道号；*/
    "dateTime":  "2004-05-03T17:30:08+08:00",
    /*ro, req, datetime, 报警触发时间*/
    "activePostCount":  1,
    /*ro, opt, int, 同一个报警已经上传的次数, range:[,], step:, unit:, unitType:, desc:事件触发频次脉冲事件 定义：事件持续触发（按照设备的检测频率），例如：移动侦测。瞬时事件 定义：区分目标，一个目标触发一次，例如：人脸抓拍activePostCount  在脉冲事件 类型触发的时候，用于区分是否是同一触发源触发的事件。例如：移动侦测，按照设备检测频率会一直上传；如果触发源发生了变化，这个时候计数就可以重新开始了。这个可以作为事件触发频次的方式来集成；*/
    "eventType":  "uploadCloudStatus",
    /*ro, req, string, 事件类型, range:[,], desc:上传云存储状态上报*/
    "eventState":  "active",
    /*ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件active表示有效事件（开始 或者 无过程状态也使用该字段）；inactive表示无效事件（结束）；remark:在心跳类型下，该字段赋值（表示心跳数据,10s上传一次）；*/
    "eventDescription":  "the status upload to cloud",
    /*ro, req, string, 事件描述, range:[,], desc:上传云存储状态上报*/
    "statusInfo": {
    /*ro, req, object, 状态信息*/
        "storageType":  1,
        /*ro, opt, enum, 上传存储类型, subType:int, [1#云存储]*/
        "resoureIndexKey":  "test",
        /*ro, opt, string, 索引key, range:[,]*/
        "resourceDataKey":  "test",
        /*ro, opt, string, 数据key, range:[,]*/
        "patientId":  "test",
        /*ro, opt, string, 资源所属patientId, range:[,]*/
        "deviceId":  "test",
        /*ro, req, string, 资源所属设备ID, range:[,]*/
        "channelId":  "test",
        /*ro, req, string, 资源所属通道ID, range:[,]*/
        "startTime":  "1970-01-01T00:00:00+08:00",
        /*ro, req, datetime, 资源起始时间*/
        "endtime":  "1970-01-01T00:00:00+08:00",
        /*ro, req, datetime, 资源结束时间*/
        "resourceType":  "video",
        /*ro, opt, enum, 上传资源文件类型, subType:string, [video#视频,picture#图片,others#其他]*/
        "resourceLength":  1
        /*ro, req, int, 上传资源文件大小, range:[,], step:, unit:, unitType:*/
    }
}


EVENT_XML_shipsDetection

船只检测事件XML数据

字符编码为UTF-8。

<?xml version="1.0" encoding="UTF-8"?>

<EventNotificationAlert xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 事件参数, attr:version{opt, string, 协议版本}-->
  <ipAddress>
    <!--ro, req, string, 报警设备IPv4地址-->172.6.64.7
  </ipAddress>
  <ipv6Address>
    <!--ro, opt, string, 报警设备IPv6地址-->1080:0:0:0:8:800:200C:417A
  </ipv6Address>
  <portNo>
    <!--ro, opt, int, 报警设备端口号-->80
  </portNo>
  <protocol>
    <!--ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP； ISUP透传ISAPI 的时候赋值 EHome）-->HTTP
  </protocol>
  <macAddress>
    <!--ro, opt, string, MAC地址-->01:17:24:45:D9:F4
  </macAddress>
  <dynChannelID>
    <!--ro, opt, string, 数字通道号-->test
  </dynChannelID>
  <channelID>
    <!--ro, opt, int, 触发报警的设备通道号, desc:触发的视频通道号-->1
  </channelID>
  <releatedChannelList>
    <!--ro, opt, string, 报警关联(同源)通道列表(与channelID在同一个相机上的通道), desc:用于平台收到报警时展示预览或回放,多个通道号用逗号隔开-->1,2,3
  </releatedChannelList>
  <dateTime>
    <!--ro, req, datetime, 报警触发时间-->2004-05-03T17:30:08+08:00
  </dateTime>
  <activePostCount>
    <!--ro, opt, int, 同一个报警已经上传的次数, desc:事件触发频次-->1
  </activePostCount>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [shipsDetection#shipsDetection], desc:船只检测-->shipsDetection
  </eventType>
  <eventState>
    <!--ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件-->active
  </eventState>
  <eventDescription>
    <!--ro, req, string, 事件描述, desc:船只检测-->shipsDetection
  </eventDescription>
  <DetectionRegionList>
    <!--ro, opt, array, 检测区域列表, subType:object-->
    <DetectionRegionEntry>
      <!--ro, opt, object, 检测区域-->
      <RegionCoordinatesList>
        <!--ro, opt, array, 区域点列表, subType:object, range:[3,10]-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, float, x坐标, range:[0.000,1.000]-->0.000
          </positionX>
          <positionY>
            <!--ro, req, float, y坐标, range:[0.000,1.000]-->0.000
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <ShipsDetection>
        <!--ro, opt, object, 船只检测-->
        <shipsNum>
          <!--ro, req, int, 船只数目-->0
        </shipsNum>
        <shipsNumHead>
          <!--ro, opt, int, 船只开始数量-->0
        </shipsNumHead>
        <shipsNumEnd>
          <!--ro, opt, int, 船只结束数量-->0
        </shipsNumEnd>
        <shipsInfoList>
          <!--ro, opt, array, 船只信息列表, subType:object-->
          <shipInfo>
            <!--ro, opt, object, 船只信息-->
            <id>
              <!--ro, req, int, 所有-->0
            </id>
            <shipsLength>
              <!--ro, req, float, 船长度-->0.000
            </shipsLength>
            <shipsHeight>
              <!--ro, req, float, 船高度-->0.000
            </shipsHeight>
            <shipsWidth>
              <!--ro, req, float, 船宽度-->0.000
            </shipsWidth>
            <shipsSpeed>
              <!--ro, req, float, 船速度-->0.000
            </shipsSpeed>
            <shipsDirection>
              <!--ro, req, string, 船方向-->test
            </shipsDirection>
            <shipsDetState>
              <!--ro, req, string, 船检测状态-->test
            </shipsDetState>
            <RegionCoordinatesList>
              <!--ro, opt, array, 区域点列表, subType:object, range:[3,10]-->
              <RegionCoordinates>
                <!--ro, opt, object, 区域点, desc:屏幕左上角为坐标原点-->
                <positionX>
                  <!--ro, req, float, x坐标, range:[0.000,1.000]-->0.000
                </positionX>
                <positionY>
                  <!--ro, req, float, y坐标, range:[0.000,1.000]-->0.000
                </positionY>
              </RegionCoordinates>
            </RegionCoordinatesList>
            <shipName>
              <!--ro, opt, string, 船名称-->浙嘉兴资03181
            </shipName>
            <captureTime>
              <!--ro, opt, datetime, 设备抓拍到船只的时间(ISO8601 time格式)-->2009-11-14T15:27:34+08:00
            </captureTime>
            <shipLocation>
              <!--ro, opt, object, 船只定位信息-->
              <longitudeType>
                <!--ro, opt, enum, 经度, subType:string, [E#东经,W#西经]-->E
              </longitudeType>
              <latitudeType>
                <!--ro, opt, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
              </latitudeType>
              <longitude>
                <!--ro, opt, object, 经度-->
                <degree>
                  <!--ro, opt, int, 度, range:[0,180]-->0
                </degree>
                <minute>
                  <!--ro, opt, int, 分, range:[0,60]-->0
                </minute>
                <sec>
                  <!--ro, opt, float, 秒, range:[0,60.000000], desc:保留6位小数点-->0.000
                </sec>
              </longitude>
              <latitude>
                <!--ro, opt, object, 纬度-->
                <degree>
                  <!--ro, opt, int, 度, range:[0,180]-->0
                </degree>
                <minute>
                  <!--ro, opt, int, 分, range:[0,60]-->0
                </minute>
                <sec>
                  <!--ro, opt, float, 秒, range:[0,60.000000], desc:保留6位小数点-->0.000
                </sec>
              </latitude>
            </shipLocation>
            <shipType>
              <!--ro, opt, enum, 船只类型, subType:string, [fishingShip#渔船,lawEnforcementVessel#执法船,freighter#货轮,cruiseShip#游轮,kayak#皮划艇,unknown#未知]-->fishingShip
            </shipType>
          </shipInfo>
        </shipsInfoList>
      </ShipsDetection>
    </DetectionRegionEntry>
  </DetectionRegionList>
  <channelName>
    <!--ro, opt, string, 通道名称, range:[1,64]-->test
  </channelName>
  <deviceID>
    <!--ro, opt, string, 设备ID, desc:EHome报警中需返回，例如test0123（EHome2.0、EHome4.0、ISUP5.0）-->12345
  </deviceID>
  <detectionPicturesNumber>
    <!--ro, opt, int, 检测图片数目-->0
  </detectionPicturesNumber>
  <visibleLightURL>
    <!--ro, opt, string, 可见光图片URL-->test
  </visibleLightURL>
  <thermalURL>
    <!--ro, opt, string, 热成像图片URL-->test
  </thermalURL>
  <URLCertificationType>
    <!--ro, opt, enum, 图片url认证方式, subType:string, [no#无（这个是针对武汉云存储协议）,digest#摘要认证（这个针对设备本地存储返回URL的方式 设备例如NVR/DVR）]-->no
  </URLCertificationType>
  <sid>
    <!--ro, opt, int, 场景ID-->0
  </sid>
  <sceneName>
    <!--ro, opt, string, 场景名称-->test
  </sceneName>
  <ShipImageList>
    <!--ro, opt, object, 船只抓拍图列表-->
    <ShipImage>
      <!--ro, opt, object, 船只抓拍图-->
      <contentID>
        <!--ro, opt, string, 该节点与图片二进制表单的Content-ID严格对应-->shipImage
      </contentID>
    </ShipImage>
  </ShipImageList>
</EventNotificationAlert>


人脸比对报警信息

设备网络SDK开发使用手册

人脸比对报警信息Json数据结构

[ "ipAddress": "172.6.64.7",
    /*必填, 设备IPv4地址, string类型, 最大长度为32*/
    "ipv6Address": "",
    /*可选, 设备IPv6地址, string类型, 最大长度为128*/
    "portNo": 80,
    /*可选, 设备端口号, integer32类型*/
    "protocol": "HTTP",
    /*可选, 协议类型: HTTP或HTTPS, string类型, 最大长度为32*/
    "macAddress": "01:17:24:45:D9:F4",
    /*可选, MAC地址, string类型, 最大长度为32*/
    "channelID": "1",
    /*可选, 触发报警的设备通道号, integer32类型*/
    "dateTime": "2009-11-14T15:27Z",
    /*必填, 报警触发时间, ISO8601 time格式, string类型, 最大长度为32*/
    "activePostCount": 1,
    /*必填, 同一个报警已经上传的次数, integer32类型*/
    "eventType": "sysStorFull",
    /*必填, 触发的事件类型: sysStorFull-集群系统存储满异常, versionAbnormal-集群版本异常,
nodeOffline-掉线异常, recordCycleAbnormal-录像周期不足, ipcTransferAbnormal-IPC迁移失败, string类型, 最大长度为128*/
    "eventState": "active",
    /*必填, 事件触发状态: active-触发, inactive-未触发(表示心跳数据), string类型, 最大长度为32*/
    "eventDescription": "sysStorFull",
    /*必填, 事件描述: sysStorFull-集群系统存储满异常, versionAbnormal-集群版本异常,
nodeOffline-掉线异常, recordCycleAbnormal-录像周期不足, ipcTransferAbnormal-IPC迁移失败, string类型, 最大长度为128*/
    "clusterCapacityInfo": {
        /*可选,集群存储信息,当eventType为sysStorFull有效*/
        "curCapacity": 2048,
        /*可选,当前存储容量，单位：MB,integer*/
        "restCapacity": 2048,
        /*可选,剩余存储容量，单位：MB,integer*/
    },
    "versionInfo": {
        /*可选,版本信息,当eventType为versionAbnormal时有效*/
        "version": "V4.5.10",
        /*可选,当前版本号,string*/
        "exceptionNum": 5,
        /*可选，集群中版本异常节点数量,integer*/
        "exceptionList": [{
            "node": {
                "MACAddress": "",
                /*可选, MAC地址, string类型*/
                "ipAddress": "",
                /*必填, 设备IPv4地址, string类型*/
                "ipv6Address": "",
                /*可选, 设备IPv6地址, string类型*/
                "nodeDeviceVersion": ""
                /*可选,节点异常版本号,string*/
            }
        }]
    },
    "offlineNodeInfo": {
        /*可选,掉线信息,当eventType为 nodeOffline 时有效*/
        "offlinedNum": 5,
        /*可选，已掉线设备数,integer*/
        "deviceOfflinedList": [{
            "node": {
                "ipAddress": "",
                /*必填, 设备IPv4地址, string类型*/
                "ipv6Address": "",
                /*可选, 设备IPv6地址, string类型*/
            }
        }]
    },
    "StorageCycle": {
        /*可选,存储周期,当eventType为recordCycleAbnormal有效*/
        "userConfig": 6,
        /*可选,用户配置存储周期,单位：天,integer*/
        "estimated": 5,
        /*可选,根据负载估计的存储周期,单位：天,integer*/
"totalCapacity": 2048,
/*可选,集群存储总容量，单位：MB,integer*/
        "quotaCapacity": 2048,
/*可选,当前配额所需存储容量，单位：MB,integer*/
    },
    "ipcTransferInfo": {
        /*可选,IPC迁移信息,当eventType为ipcTransferAbnormal时有效*/
        "ipcTransferAbnormalNum": 5,
        /*可选，IPC迁移失败个数,integer*/
        "ipcInfoList": [{
            "node": {
                "ipAddress": "",
                /*必填, 设备IPv4地址, string类型*/
                "ipv6Address": "",
                /*可选, 设备IPv6地址, string类型*/
                "channel": 5
                /*可选,通道号,integer*/
            }
        }]
    },
}

]

Remarks

  • sysStorFull：集群系统存储满异常：集群中所有的硬盘都满时上报。
  • versionAbnormal：集群版本异常：当集群中CS版本号不一致时，上报异常。
  • nodeOffline：掉线异常，CS掉线时，上报异常。
  • recordCycleAbnormal：录像周期不足。
  • ipcTransferAbnormal：IPC迁移失败，当一台CS掉线时，其上面的IPC会负载均衡到其他CS上。如果ICP在迁移时，失败，会上报该异常。

See Also

NET_DVR_SetDVRMessageCallBack_V50


证件抓拍比对事件

{
       "ipAddress": "172.6.64.7",
    /*必填, 报警设备IPv4地址, string类型, 最大长度为32*/
    "ipv6Address": "",
    /*可选, 报警设备IPv6地址, string类型, 最大长度为128*/
    "portNo": 80,
    /*可选, 报警设备端口号, integer32类型*/
    "protocol": "HTTP",
    /*可选, 协议类型: HTTP或HTTPS, string类型, 最大长度为32*/
    "macAddress": "01:17:24:45:D9:F4",
    /*可选, MAC地址, string类型, 最大长度为32*/
    "channelID": "1",
    /*可选, 触发报警的设备通道号, integer32类型*/
    "dateTime": "2016-12-12T17:30:08+08:00",
    /*必填, 报警触发时间（UTC时间）, string类型, 最大长度为32*/
    "activePostCount": 1,
    /*必填, 同一个报警已经上传的次数, integer32类型*/
    "eventType": "CertificateCaptureEvent",
    /*必填, 触发的事件类型: CertificateCaptureEvent–证件抓拍比对事件, string类型, 最大长度为,128*/
    "eventState": "active",
    /*必填, 事件触发状态: active-触发, inactive-未触发, string类型, 最大长度为32*/
    "eventDescription": "Certificate Capture Comparison Event",
    /*必填, 事件描述: 证件抓拍比对事件(Certificate Capture Comparison Event)*/
    "CertificateCaptureEvent":
    {
        "deviceName": "", //可选，string，设备名称
        "majorEventType": , //必填，integer，报警主类型，参考宏定义（此处传递的是10进制数据，不能传递16进制，如传递1代表0x1（报警主类型））
        "subEventType": , //必填，integer，报警次类型，参考宏定义（此处传递的是10进制数据，不能传递16进制，如传递1024代表0x400（防区短路报警次类型））（人证比对通过，人证比对失败）
        "cardReaderNo": , //可选，integer，读卡器编号
        "doorNo": , //可选，integer，门编号（楼层编号）
        "deviceNo": , //可选，integer，设备编号
        "serialNo": , //可选，integer，事件流水号
        "currentEvent": , //可选，boolean，是否为实时事件，ture-是（实时事件），false-否（离线事件）
        "frontSerialNo": , //可选，integer，上一条事件流水号（若设备没返回该字段，平台根据serialNo判断是否丢失事件；若设备返回该字段，平台根据该字段和serialNo字段共同判断是否丢失事件）（主要用于解决报警订阅后导致serialNo不连续的情况）
        "contentId": "Picture", //可选，string，人脸抓拍图片contentid,与报文Content-ID对应
        "certificateContentId": "CertificatePic", //可选，string，证件抓拍图片contentid,与报文Content-ID对应
    }

}

See Also

NET_DVR_ALARM_ISAPI_INFO


查询离线采集数据条件

{
    "SearchTaskCond":
  {
     "searchID": "",/*必填,搜索记录唯一标识,用来确认上层客户端是否为同一个,string 类型*/
     "searchResultPosition": 0,/*必填, 结果过滤器,查询结果在结果列表中的起始位置, integer32 类型; 当记录条数很多时, 一次查询不能获取所有的记录, 下一次查询时指定位置可以查询后面的记录 */
    "maxResults": ,/*必填, 结果过滤器,本次协议调用可获取的最大记录数, integer32 类型*/
     "captureNoList":[1,2,],/*可选，查询条件，采集序号列表，不填采集序号时按searchResultPosition 依次查询得到全部数据，integer 类型*/
     "searchType": "new"/*可选，查询条件，查询类型，new-查询只返回新增数据，modified-查询只返回修改数据，默认查询全部数据*/
}

}

See Also

NET_DVR_SendRemoteConfig


查询离线采集数据结果

{
    "SearchTaskResponse":
     {
"searchID": "",/*必填,搜索记录唯一标识,用来确认上层客户端是否为同一个,string 类型*/
"responseStatusStrg": "OK",/*可选 查询状态字符串描述: OK-查询结束, MORE-还有数据等待查询, NOMATCH-没有匹配数据, string 类型，最大长度为32, {dep if errcode == 1 && errMsg == ok}*/
"numOfMatches": 1,/*可选, 本次返回的记录条数, integer32 类型, {dep if errcode == 1 && errMsg ==ok}*/
"totalMatches": 1,/*可选, 符合条件的记录总条数, integer32 类型, {dep if errcode == 1 && errMsg ==ok}*/
"DataCollections": [{ /*可选, 查询到的匹配数据信息, array 类型*/
"lastCaptureNo":,/*必填, 上一个采集序号，判断数据是否丢失，integer*/
"captureNo":,/*必填, 当前采集序号，integer*/
"name":"",/*可选, 姓名，string*/
"employeeNo":"",/*可选, 工号，string*/
"IDCardNo":"",/*可选, 身份证号，string*/
"CardNoList":["",""],/*可选, 卡号列表，string*/
"FingerprintList":
[{
"fingerprintID":,/*可选，指纹编号，integer*/
"fingerprint": ""/*可选，指纹信息，string, base64 编码*/
}],
"FaceFeature":/*可选,人脸抠图特征信息*/
{
"Region":/*必填,人脸抠图区域坐标,矩形*/
{
"height": 0.120,/*必填, 高度, float 类型*/
"width": 0.120,/*必填, 宽度, float 类型*/
/*必填, 左上角点X 坐标, float 类型*/
    "x": 0.120,
/*必填, 左上角点Y 坐标, float 类型*/
"y": 0.120
},
"LeftEyePoint": /*可选，左眼坐标 */
{
"x": 0.120,/*必填,float 类型,x 坐标,范围为0.000~1*/
"y": 0.120/*必填,float 类型,y 坐标,范围为0.000~1*/
},
"RightEyePoint": /*可选，右眼坐标 */
{
"x": 0.120,/*必填,float 类型,x 坐标,范围为0.000~1*/
"y": 0.120/*必填,float 类型,y 坐标,范围为0.000~1*/
},
"LeftMouthPoint": /*可选，嘴左边坐标 */
{
"x": 0.120,/*必填,float 类型,x 坐标,范围为0.000~1*/
"y": 0.120/*必填,float 类型,y 坐标,范围为0.000~1*/
},
"RightMouthPoint": /*可选，嘴右边坐标 */
{
"x": 0.120,/*必填,float 类型,x 坐标,范围为0.000~1*/
"y": 0.120/*必填,float 类型,y 坐标,范围为0.000~1*/
},
"NoseTipPoint": /*可选，鼻子坐标 */
{
"x": 0.120,/*必填,float 类型,x 坐标,范围为0.000~1*/
"y": 0.120/*必填,float 类型,y 坐标,范围为0.000~1*/
}
},
"riskDataMark": true/*可选,boolean 类型,true 标记数据为风险数据，人证比对失败；false 或者不返回表示数据正常*/
"dataType": "new"/* 可选,string 类型, 数据类型状态,”new,modified,normal”,new- 新增的数据,modified-修改过的数据,normal-未变更*/

}]
}

}

See Also

NET_DVR_SendRemoteConfig


人脸比对报警信息

设备网络SDK开发使用手册

人脸比对报警信息Json数据结构

[//一次可以输出多个图片的结果

    {//输入的单张图像 所对应的结果， 其结果中可能存在多个人脸

        "errorCode" : 0,                       //云分析错误码，0表示成功，其他值表示失败

        "image" : "http://absddsdfsdfsdk.jpg", //提交任务时的图片URL，为抓拍人脸小图

       "traceUuid" : "sddddddddff",            //32位字符串，同一个人的一批图片

        "traceIdx" : 1,                        //int类型，同一个人的一批图片中的具体第几张，最多10张

        "targetAttrs" : "{                     //关于实时提交的抓拍人物的透传字段，以下内容仅为举例
                "deviceId": "1",			   //设备ID
                "deviceChannel": 1,			   //可选，设备通道号
                "deviceName": "shebei",		   //可选，设备名称
                "faceTime": "2016-09-10 00:00:00.000",    //抓拍时间
                "rect": {				   //人脸大图矩形框，相对于背景图片的归一化坐标
            "height": 1.0,
            "width": 1.0,
            "x": 0.0,
            "y": 0.0
                },
                "bkgUrl": "http://absddsdfsdfsdk.jpg"  //可选，背景图片大图URL
         }",

        "faces" : [//人脸分析比对结果（检测、属性、建模及匹配名单），一张图像中的可能的多个人脸

            {

                "faceId" : 1,                  //int类型，人脸ID，一张图片内不能重复

                   "eyesPosition" : {          //可选，提交任务operation选项开启detect则输出（具体请参考云分析人脸REST接口说明）

                        "leftEye" : {          //左眼位置
                        "x" : 0.120,

                        "y" : 0.120

                     },

                    "rightEye" : {            //右眼位置
                        "x" : 0.230,

                        "y" : 0.120

                    }

                },

                "faceRect" : {//可选，提交任务operation选项开启detect则输出，人脸区域，相对于抓拍人脸小图的归一化坐标

                    "height" : 1.0,

                    "width" : 1.0,

                    "x" : 0.0,

                    "y" : 0.0

                },

                "facePose" : {//可选，提交任务attribute选项开启facePose则输出

                    "pitch" : 0.9980,        //平面外上下俯仰角，人脸朝上为正, 若无效时此项不存在

                    "roll" : 0.6230,         //平面内旋转角，人脸顺时针旋转为正, 若无效时此项不存在

                    "yaw" : 0.8760,          //平面外左右偏转角，人脸朝左为正, 若无效时此项不存在

                    "poseConf":0.1           //姿态评分

                   },

                "age" : {//年龄

                    "range" : 5,            //年龄误差值，如value为23、range为5，则表示实际人脸年龄为18~28之间

                    "value" : 23,           //年龄

                    "ageGroup" : 2          //年龄段：0- 未知，1- 少年，2- 青年，3- 中年，4- 老年

                   },

                "gender" : {//性别

                    "confidence" : 99.99990,//置信度

                    "value" : 0             //0- 未知，1- 男，2- 女

                   },

                "glass" : {//是否带眼镜

                    "confidence" : 99.94499999999999, //置信度

                    "value" : 0             //0- 未知，1- 不带眼镜，2- 带眼镜

                   },

                "smile" : {//是否微笑

                    "confidence" : 99.99990,//置信度

                    "value" : 0             //0- 未知，1- 不微笑，2- 带微笑

                   },

                "faceQuality" : {//人脸质量

                    "detectConf" : 0.1,    //检测置信度

                    "pointsConf" : 0.1,    //特征点定位置信度

                    "eyeDis" : 0.1,        //两眼间距

                    "colorConf" : 0.1,     //彩色图置信度

                    "grayScale" : 1,       //灰阶数

                    "grayMean" : 0.1,      //亮度均值

                    "clearScore" : 0.1,    //清晰度评分

                    "frontalConf" : 0.1,   //正面程度评分

                    "visibleConf" : 0.1,   //可见性评分

                    "totalConf" : 0.1      //总评分

                  },

                "modeldata" : "xxxx" //模型base64编码数据，可选， 提交任务operation选项开启train则输出

                  "identify" : [//一组识别结果，默认情况下仅输出一组

                    {

                        "relationId" : 9887,        //布防的关联关系，来源用户提交任务是指定的布防比对策略的ID

                        "maxsimilarity" : 0.780,    //所有匹配人员的最大相似度，取值范围0到1

                        "candidate" : [//布防关系生效，若匹配中符合条件的非授权名单最大推荐不超过5个不同人员比对结果（不大于用户指定的输出结果）

                            {

                                "alarmId" : 1,           //int类型，一个布防关系内不能重复

                                "blocklist_id" : "2323", //非授权名单库ID
                                "human_data" : [

                                    {

                                        "bkg_picurl" : "http://127.0.0.1:6120/bkg_picurl",  //背景图片URL，一般无此URL

                                        "face_id" : "123445",                               //匹配报警的非授权名单人脸ID

                                        "face_picurl" : "http://127.0.0.1:6120/face_picurl",//匹配报警的非授权名单人脸图片URL

                                        "face_rect" : {                                     //人脸区域，相对于人脸小图，归一化坐标

                                                   "height" : 0.5140,

                                            "width" : 0.29090,

                                            "x" : 0.1830,

                                            "y" : 0.36690

                                        },

                                        "similarity" : 0.780                               //人员图片相似度，取值范围0到1

                                    }

                                ],

                                "human_id" : "123",            //非授权名单人员ID

                                "reserve_field" : "xxxx256",   //最大不超过256字节预留字段，若下发的数据超过此会产生截断，由平台设计者关注此长度

                                "similarity" : 0.780           //该人员所有匹配图片的最大相似度，取值范围为0到1

                            }

                        ]

                    }

                ] //identify

            } //face

        ] //faces

    }

]

See Also

NET_VCA_FACESNAP_RAWDATA_ALARM


查询人员信息及权限删除进度

{
     "UserInfoDetailDeleteProcess" : {
        "status": ""    //必填，string，状态（processing-处理中，success-成功，failed-失败）
    }

}

See Also

NET_DVR_StartRemoteConfig


车辆识别报警信息

设备网络SDK开发使用手册

车辆识别报警信息Json数据结构

字符编码为UTF-8。

{
"crossing_id":"1",
//卡口编号(透传)

"pass_id":"116",
//过车流水号(透传)

"lane_no":"1",
//车道号(透传)

"pass_time":"2016-08-15 16:39:19.000",
//过车时间(透传)

"plate_no":"浙U76310",
//车牌号码

"plate_position":"243,764,126,25",
//车牌位置

"plate_diff":"2",
//前端传递车牌与二次识别是否一致

"confidence":"982",
//车牌置信度，取值范围：0~1000

"front_confidence":"0",
//前端车牌置信度(透传)

"front_confidence_detail":"0,0,0,0,0,0,0",
//前端车牌置信度具体值 （透传）

"plate_type":"1",
//车牌类型，数字索引值或者字符串，具体请参考“Remarks”里面表格

"plate_color":"2",
//车牌颜色，数字索引值或者字符串，具体请参考“Remarks”里面表格

"vehiclepicurl":"http://10.7.35.70:8080/kms/services/rest/dataInfoService/downloadFile?id=160815/temp1/003_5513789_106497&token=7a57a5a7ffffffffc1a0316369671314",
//图片URL

"vehicle_state":"0",
//车辆状态

"plate_state":"0",
//车牌状态

"vehicle_type":"3",
//车辆类型，数字索引值或者字符串，具体请参考“Remarks”里面表格

"vehicle_color":"4",
//车辆颜色，数字索引值或者字符串，具体请参考“Remarks”里面表格

"vehicle_color_depth":"0",
//车辆颜色深浅：0- 深色，1- 浅色

"vehicle_logo":"1112",
//主品牌，参考品牌字典

"vehicle_sublogo":"10",
//子品牌，参考子品牌字典

"vehicle_model":"1",
//车辆年款，参考车辆年款字典

"vehicle_head":"1",
//正背向：0- 未知，1- 正向，2- 背向

"plateDir":"0",
//前端透传方向(透传)

"pilotsafebelt":"2",
//主驾驶安全带检测结果：0- 未知，1- 未系安全带，2- 系安全带

"vicepilotsafebelt":"2",
//副驾驶安全带检测结果：0- 未知，1- 未系安全带，2- 系安全带

"pilotsunvisor":"1",
//主遮阳板打开情况：0- 未知，1- 未打开，2- 已打开

"vicepilotsunvisor":"1",
//副遮阳板打开情况：0- 未知，1- 未打开，2- 已打开

"driver_position":"413,351,128,107",
//主驾驶位置

"vice_driver_position":"261,358,128,107",
//副驾驶位置

"pdvs":"2",
//天窗人员状态：0- 未知，1- 站人，2- 未站人

"sunroof_position":"0,0,0,0",
//天窗位置

"temp_plateno":"0",
//临时车牌

"uphone":"2",
//打电话：0- 未知，1- 打电话，2- 未打电话

"envprosign":"1",
//黄标车：0- 未知，1- 绿标，2- 黄标

"dangmark":"0",
//危险品车：0- 未知，1- 未悬挂危险品标志，2- 悬挂危险品标志

"pendant":"2",
//挂件：0- 未知，1- 未悬挂挂件，2- 悬挂挂件

"vmodel_x":"48",
//图片模型x

"vmodel_y":"312",
//图片模型y

"vmodel_w":"560",
//图片模型w

"vmodel_h":"544",
//图片模型h

"vmodel":"yQAgDAAEAQIBBAE",
//图片模型

"vehicle_is_slave":"0"
//是否主车辆

}

Remarks

字段名称 | 字段描述 | 数字索引值 | 字符串 | 描述
plate_type | 车牌类型 | 0 | unknown | 未知
 |  | 1 | 92TypeCivil | 92式民用车
 |  | 2 | arm | 警车
 |  | 3 | upDownMilitay | 上下军车
 |  | 4 | 92TypeArm | 92式武警车
 |  | 5 | leftRightMilitay | 左右军车
 |  | 7 | 02TypePersonalized | 02式个性化车
 |  | 8 | yellowTwoLine | 黄色双行尾牌
 |  | 9 | 04NewMilitay | 04式新军车
 |  | 10 | embassy | 使馆车
 |  | 11 | oneLineArm | 一行结构的新武警车
 |  | 12 | twoLineArm | 两行结构的新武警车
 |  | 13 | yellow1225FarmVehicle | 黄色1225农用车
 |  | 14 | green1325FarmVehicle | 绿色1325农用车
 |  | 15 | yellow1325FarmVehicle | 黄色1325结构农用车
 |  | 16 | motorola | 摩托车
 |  | 17 | newEnergy | 新能源车牌
 |  | 100 | coach | 教练车
 |  | 101 | tempTravl | 临时行驶车
 |  | 102 | trailer | 挂车
 |  | 103 | consulate | 领馆汽车
 |  | 104 | hongKongMacao | 港澳入出车
 |  | 105 | tempEntry | 临时入境车
 |  |  | civilAviation | 民航车牌
plate_color | 车牌颜色 | 0 | white | 白色
 |  | 1 | yellow | 黄色
 |  | 2 | blue | 蓝色
 |  | 3 | black | 黑色
 |  | 4 | 0xff/other | 其他颜色
 |  | 5 | green | 绿色
 |  |  | civilAviationBlack | 民航黑色
 |  |  | civilAviationGreen | 民航绿色
vehicle_type | 车辆类型 | 0 | unknown | 未知
 |  | 1 | largeBus | 大型客车
 |  | 2 | truck | 货车
 |  | 3 | vehicle | 轿车
 |  | 4 | van | 面包车
 |  | 5 | buggy | 小货车
 |  | 6 | pedestrian | 行人
 |  | 7 | twoWheelVehicle | 二轮车
 |  | 8 | threeWheelVehicle | 三轮车
 |  | 9 | SUVMPV | SUV/MPV
 |  | 10 | mediumBus | 中型客车
 |  | 11 | motorVehicle | 机动车
 |  | 12 | nonmotorVehicle | 非机动车
 |  | 13 | smallCar | 小型轿车
 |  | 14 | miniCar | 微型轿车
 |  | 15 | pickupTruck | 皮卡车
vehicle_color | 车辆颜色 | 0 | unknown | 未知
 |  | 1 | white | 白
 |  | 2 | silver | 银
 |  | 3 | gray | 灰
 |  | 4 | black | 黑
 |  | 5 | red | 红
 |  | 6 | deepBlue | 深蓝
 |  | 7 | blue | 蓝
 |  | 8 | yellow | 黄
 |  | 9 | green | 绿
 |  | 10 | brown | 棕
 |  | 11 | pink | 粉
 |  | 12 | purple | 紫
 |  | 13 | deepGray | 深灰
 |  | 14 | cyan | 青
 |  | 15 | orange | 橙

See Also

NET_DVR_VEHICLE_RECOG_RESULT


ResponseStatus

设备网络SDK开发使用手册

ResponseStatus Json数据结构

{
    "requestURL": "",
    /*可选,URL,string*/
    "statusCode": ,
    /*必填,状态码,int*/
    "statusString": "",
    /*必填,状态描述,string*/
    "subStatusCode": "",
    /*必填,子状态码,string*/
    "errorCode": 1,
    /*可选,当statusCode不为1时，必填。错误码,与subStatusCode对应,（此处返回的是转换为10进制后的数字）*/
    "errorMsg": "ok",
    /*可选, 当statusCode不为1时，必填,错误详细信息,能具体到某一个参数的错误,string*/
}


车辆二次识别任务提交信息

设备网络SDK开发使用手册

车辆二次识别任务提交信息Json数据结构

字符编码为UTF-8。

{
"detect_mode":0,
//检测模式：0- 一图多车，1- 一图一车，2- 全检模式

"priority":0,
//检测优先级，取值范围：1~100

"vehicle_dir":0,
//车辆正背向信息：0- 未知，1- 正向，2- 背向

"plate" : "浙A12345"
//车牌号码

"rect" : {//牌识区域，归一化坐标
"x" : 0.10,
//边界框左上角点的X轴坐标
"y" : 0.10,
//边界框左上角点的Y轴坐标
"w" : 0.50,
//边界框的宽度
"h" : 0.50
//边界框的高度
}
"targetAttrs":{//透传字段
"pass_id" : "123456",
//过车流水号
"pass_time" : "2004-05-03T17:30:08:000Z ",
//过车时间，ISO8601格式的 UTC时间
"crossing_id" : "1",
//卡口编号
"lane_no" : "1"
//车道编号
}
}

See Also

NET_DVR_VEHICLE_RECOG_CFG


人体识别数据字典

功能 | recognitionType | 属性字段 | 属性描述 | 属性取值 | 取值含义
人体识别 | human | jacketColor | 上衣颜色 | unknown | 未知
 |  |  |  | white | 白
 |  |  |  | silver | 银
 |  |  |  | gray | 灰
 |  |  |  | black | 黑
 |  |  |  | red | 红
 |  |  |  | deepBlue | 深蓝
 |  |  |  | blue | 蓝
 |  |  |  | yellow | 黄
 |  |  |  | green | 绿
 |  |  |  | brown | 棕
 |  |  |  | pink | 粉
 |  |  |  | purple | 紫
 |  |  |  | deepGray | 深灰
 |  |  |  | cyan | 青
 |  |  |  | orange | 橙
 |  |  |  | mixture | 混色
 |  | pantsColor | 下衣颜色 | unknown | 未知
 |  |  |  | white | 白
 |  |  |  | silver | 银
 |  |  |  | gray | 灰
 |  |  |  | black | 黑
 |  |  |  | red | 红
 |  |  |  | deepBlue | 深蓝
 |  |  |  | blue | 蓝
 |  |  |  | yellow | 黄
 |  |  |  | green | 绿
 |  |  |  | brown | 棕
 |  |  |  | pink | 粉
 |  |  |  | purple | 紫
 |  |  |  | deepGray | 深灰
 |  |  |  | cyan | 青
 |  |  |  | orange | 橙
 |  |  |  | mixture | 混色
 |  | glass | 是否戴眼镜 | unknown | 未知
 |  |  |  | false | 不戴眼镜
 |  |  |  | true | 戴眼镜
 |  | ride | 是否骑车 | unknown | 未知
 |  |  |  | false | 不骑车
 |  |  |  | true | 骑车
 |  | bag | 是否背包 | unknown | 未知
 |  |  |  | false | 不背包
 |  |  |  | true | 背包
 |  | things | 是否拎东西 | unknown | 未知
 |  |  |  | false | 不拎东西
 |  |  |  | true | 拎东西
 |  | hat | 是否戴帽子 | unknown | 未知
 |  |  |  | false | 不戴帽子
 |  |  |  | true | 戴帽子
 |  | jacket | 上衣类型 | unknown | 未知
 |  |  |  | shortSleeve | 短袖
 |  |  |  | longSleeve | 长袖
 |  | pants | 下装类型 | unknown | 未知
 |  |  |  | shortTrousers | 短裤
 |  |  |  | longTrousers | 长裤
 |  |  |  | skirt | 裙子
 |  | mask | 是否戴口罩 | unknown | 未知
 |  |  |  | false | 不戴口罩
 |  |  |  | true | 戴口罩
 |  | hair | 发型 | unknown | 未知
 |  |  |  | shortHair | 短发
 |  |  |  | longHair | 长发
 |  | smile | 是否微笑 | unknown | 未知
 |  |  |  | false | 不微笑
 |  |  |  | true | 微笑


ACS_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 门禁能力集描述 -->
<AcsAbility version="2.0">
<channelControllerNo min="" max=""/>
<!--req,通道控制器范围-->
<doorNo min="" max=""/>
<!--req,门编号范围（对于梯控，表示楼层编号范围）-->
<simulateDoorNo min="" max=""/>
<!--req,智能身份识别终端虚拟门范围-->
<cardReaderNo min="" max=""/>
<!--req,读卡器编号范围-->
<maxCardNum min="" max=""/>
<!--req,支持的卡数-->
<caseSensorNo min="" max=""/>
<!--req,事件触发器编号-->
<DoorRelateCardReaderList>
<!--opt,门编号关联读卡器读卡器编号（只有在门关联读卡器的方式为特殊的情况下，才返回该字段，普通情况下不返回该字段）-->
<Action>
<!--opt,门编号-->
<doorNo>1</doorNo>
<!--opt,读卡器编号-->
<cardReaderNo>1,2</cardReaderNo>
</Action>
</DoorRelateCardReaderList>

<DoorStatusPlan>
<!--req,门状态计划能力-->
<WeekPlan>
<!--req,周计划能力-->
<weekPlanNo min="" max=""/>
<!--req,周计划编号范围-->
<maxDaySegment>8</maxDaySegment>
<!--req,每天支持的时间段数-->
<status opt="invalid,sleep,alwaysopen,alwaysclose,normal"/>
<!--req,状态值范围-->
<verifyType opt="invalid,sleep,swipecard,swipecardandpassword,swipecardorpasswd,fingerPrint,
fingerPrintAndPasswd,fingerPrintorCard,fingerPrintAndCard,fingerPrintAndCardAndPasswd"/>
<!--req,验证方式范围-->
<TimeAccuracy>
<!--req,时间精确度-->
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
</WeekPlan>
<HolidayPlan>
<!--req,假日计划-->
<holidayPlanNo min="" max=""/>
<!--req,假日计划编号范围-->
<maxDaySegment>8</maxDaySegment>
<!--req,每天支持的时间段数-->
<TimeAccuracy>
<!--req,时间精确度-->
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
</HolidayPlan>
<HolidayGroup>
<!--req,假日组能力-->
<holidayGroupNo min="" max=""/>
<!--req,假日组编号范围-->
<holidayGroupName min="" max=""/>
<!--req,假日组名称长度-->
<maxHolidayPlanNum></maxHolidayPlanNum>
<!--req,假日组最大包含假日计划数-->
</HolidayGroup>
<PlanTemplate>
<!--req,计划模板能力-->
<templateNo min="" max=""/>
<!--opt,计划模板编号范围-->
<templateName min="" max=""/>
<!--req,计划模板名称长度-->
<maxHolidayGroupNum></maxHolidayGroupNum>
<!--req,计划模板最大假日组数-->
</PlanTemplate>
<supportLocalController>enable</supportLocalController>
<!--req,支持就地控制器-->
</DoorStatusPlan>
<CardReaderVerifyTypePlan>
<!--req,读卡器验证方式计划能力-->
<WeekPlan>
<!--req,周计划能力-->
<weekPlanNo min="" max=""/>
<!--req,周计划编号范围-->
<maxDaySegment>8</maxDaySegment>
<!--req,每天支持的时间段数-->
<status opt="invalid,sleep,alwaysopen,alwaysclose,normal"/>
<!--req,状态值范围-->
<verifyType opt="invalid,sleep,swipecard,swipecardandpassword,swipecardorpasswd,fingerPrint,fingerPrintAndPasswd,
fingerPrintorCard,fingerPrintAndCard,fingerPrintAndCardAndPasswd,faceOrFpOrCardOrPw,faceAndFingerPrint,
faceAndPassword,faceAndCard,face,employeeNoAndPassword,fingerPrintOrPassword,employeeNoAndFp,
employeeNoAndFpAndPw,faceAndFpAndCard,faceAndPwAndFp,employeeNoAndface,faceOrFaceAndCard,fingerPrintOrFace,swipecardOrFaceOrPw,cardOrFace,cardOrFaceOrFp"/>
<!--req,验证方式范围：invalid-无效，sleep-休眠，swipecard-刷卡，swipecardandpassword-刷卡+密码，swipecardorpasswd-刷卡或密码，
fingerPrint-指纹，fingerPrintAndPasswd-指纹+密码，fingerPrintorCard-指纹或刷卡，fingerPrintAndCard-指纹+刷卡，
fingerPrintAndCardAndPasswd-指纹+刷卡+密码（无先后顺序），faceOrFpOrCardOrPw-人脸或指纹或刷卡或密码，faceAndFingerPrint-人脸+指纹，
faceAndPassword-人脸+密码，faceAndCard-人脸+刷卡，face-人脸，employeeNoAndPassword-工号+密码，fingerPrintOrPassword-指纹或密码，
employeeNoAndFp-工号+指纹，employeeNoAndFpAndPw-工号+指纹+密码，faceAndFpAndCard-人脸+指纹+刷卡，faceAndPwAndFp-人脸+密码+指纹，
employeeNoAndface-工号+人脸，人脸或人脸+刷卡，指纹或人脸，刷卡或人脸或密码, 刷卡或人脸，刷卡或人脸或指纹,-->
<TimeAccuracy>
<!--req,时间精确度-->
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
</WeekPlan>
<HolidayPlan>
<!--req,假日计划-->
<holidayPlanNo min="" max=""/>
<!--req,假日计划编号范围-->
<maxDaySegment>8</maxDaySegment>
<!--req,每天支持的时间段数-->
<TimeAccuracy>
<!--req,时间精确度-->
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
</HolidayPlan>
<HolidayGroup>
<!--req,假日组能力-->
<holidayGroupNo min="" max=""/>
<!--req,假日组编号范围-->
<holidayGroupName min="" max=""/>
<!--req,假日组名称长度-->
<maxHolidayPlanNum></maxHolidayPlanNum>
<!--req,假日组最大包含假日计划数-->
</HolidayGroup>
<PlanTemplate>
<!--req,计划模板能力-->
<templateNo min="" max=""/-->
<!--opt,计划模板编号范围>
<templateName min="" max=""/>
<!--req,计划模板名称长度-->
<maxHolidayGroupNum></maxHolidayGroupNum>
<!--req,计划模板最大假日组数-->
</PlanTemplate>
<supportLocalController>enable</supportLocalController>
<!--req,支持就地控制器-->
</CardReaderVerifyTypePlan>
<CardRightPlan>
<!--req,卡权限计划能力-->
<WeekPlan>
<!--req,周计划能力-->
<weekPlanNo min="" max=""/>
<!--req,周计划编号范围-->
<maxDaySegment>8</maxDaySegment>
<!--req,每天支持的时间段数-->
<status opt="invalid,sleep,alwaysopen,alwaysclose,normal"/>
<!--req,状态值范围-->
<verifyType opt="invalid,sleep,swipecard,swipecardandpassword"/>
<!--req,验证方式范围-->
<TimeAccuracy>
<!--req,时间精确度-->
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
</WeekPlan>
<HolidayPlan>
<!--req,假日计划-->
<holidayPlanNo min="" max=""/>
<!--req,假日计划编号范围-->
<maxDaySegment>8</maxDaySegment>
<!--req,每天支持的时间段数-->
<TimeAccuracy>
<!--req,时间精确度-->
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
</HolidayPlan>
<HolidayGroup>
<!--req,假日组能力-->
<holidayGroupNo min="" max=""/>
<!--req,假日组编号范围-->
<holidayGroupName min="" max=""/>
<!--req,假日组名称长度-->
<maxHolidayPlanNum></maxHolidayPlanNum>
<!--req,假日组最大包含假日计划数-->
</HolidayGroup>
<PlanTemplate>
<!--req,计划模板能力-->
<templateNo min="" max=""/-->
<!--opt,计划模板编号范围>
<templateName min="" max=""/>
<!--req,计划模板名称长度-->
<maxHolidayGroupNum></maxHolidayGroupNum>
<!--req,计划模板最大假日组数-->
</PlanTemplate>
<supportLocalController>enable</supportLocalController>
<!--req,支持就地控制器-->
</CardRightPlan>
<Door>
<!--req,门参数能力-->
<doorName min="" max=""/>
<!--req,门名称长度-->
<magneticMode opt="alwaysclose,alwaysopen"/>
<!--req,门磁类型-->
<openButtonMode opt="alwaysclose,alwaysopen"/>
<!--req,开门按钮类型-->
<openDuration min="" max=""/>
<!--req,开门持续时间范围，单位：秒-->
<disabledOpenDuration min="" max=""/>
<!--req,残障人士卡开门持续时间范围，单位：秒-->
<magneticAlarmTimeout min="" max=""/>
<!--req,门磁检测超时报警时间,单位：秒，0表示不报警-->
<doorLock>enable</doorLock>
<!--req,是否支持闭门回锁-->
<leaderCard>enable</leaderCard>
<!--req,是否支持首卡常开功能-->
<stressPassword min="" max=""/>
<!--req,胁迫密码长度-->
<superPassword min="" max=""/>
<!--req,超级密码长度-->
<unlockPassword min="" max=""/>
<!--opt,解锁密码长度，不支持不返回-->
<leaderCardMode opt="close,alwaysopen,authorized"/>
<!--req,首卡模式-->
<useLocalController>enable</useLocalController>
<!--req,门是否连接就地控制器-->
<localControllerID min="" max=""/>
<!--req,就地控制器序号-->
<localControllerDoorNumber min="" max=""/>
<!--req,就地控制器的门编号-->
<localControllerStatus opt="offline,netOnline,authorized"/>
<!--req,就地控制器在线状态-->
<lockInputCheck>enable</lockInputCheck>
<!--req,是否启用门锁输入检测(1字节，0不启用，1启用，默认不启用)-->
<lockInputType opt="NormallyClose,NormallyOpen"/>
<!--req,门锁输入类型(1字节，0常闭，1常开，默认常闭)-->
<doorTerminalMode opt="PreventCutShort,Normal"/>
<!--req,门相关端子工作模式(1字节，0防剪防短，1普通，默认防剪防短)-->
<openButton>enable</openButton>
<!--req,是否启用开门按钮(1字节，0是，1否，默认是)-->
<ladderControlDelayTime min="1" max="255"/>
<!--opt,integer, 梯控访客延迟时间, 单位：分钟-->
</Door>
<DoorStatusPlan>
<!--req,门状态计划参数-->
<enable>true</enable>
</DoorStatusPlan>
<Group>
<!--req,群组参数能力-->
<ValidCfg>
<!--req,有效期能力-->
<TimeAccuracy>
<!--req,时间精确度-->
<year>enable</year>
<month>enable</month>
<day>enable</day>
<hour>enable</hour>
<minute>enable</minute>
<second>enable</second>
</TimeAccuracy>
<timeType opt="local,UTC"/>
<!--opt, 时间类型：local-设备本地时间（默认），UTC-UTC时间>
</ValidCfg>
<groupName min="" max=""/>
<!--req,群组名称长度-->
<groupNo min="" max=""/>
<!--req,群组编号范围，老设备不会返回，解析不到该节点，使用默认值-->
</Group>
<MultiCard>
<!--req,多重卡能力-->
<swipeIntervalTimeout min="" max=""/>
<!--req,多重卡刷卡间隔超时，单位：秒-->
<maxMultiCardGroupNum min="1" max="20"></maxMultiCardGroupNum>
<!--req,最大支持的多重卡组数-->
<maxGroupCombinationNum></maxGroupCombinationNum>
<!--req,一个多重卡组最多包含群组数-->
<remoteOpenDoor>enable</remoteOpenDoor>
<!--req,支持远程开门验证方式-->
<offlineVerifyMode>enable</offlineVerifyMode>
<!--req,支持主机离线时验证方式（超级密码代替远程开门）-->
</MultiCard>
<Card>
<!--req,卡参数能力-->
<cardNo min="" max=""/>
<!--req,卡号长度-->
<modifyParamType opt="cardvalid,validtime,cardtype,doorright,leadercard,swipenum,group,password,rightplan，swipednum,employeeno,name,departmentNo,schedulePlanNo,schedulePlanType,roomNo,simNo,floorNo,userType"/>
<!--req,支持单独修改的参数类型：cardvalid-卡是否有效参数,validtime-有效期参数,cardtype-卡类型参数,doorright-门权限参数,
leadercard-首卡参数,swipenum-最大刷卡次数参数,group-所属群组参数,password-卡密码参数,rightplan-卡权限计划参数，
swipednum-已刷卡次数, employeeno-工号,name-姓名，departmentNo-公寓编号，schedulePlanNo-计划编号，schedulePlanType-计划类型，roomNo-房间号,simNo-sim卡号,floorNo-楼层号,userType-用户类型-->
<cardValid>enable</cardValid>
<!--req,支持卡是否有效参数配置-->
<timeRangeBegin>1970-01-01T00:00:00</timeRangeBegin>
<!--opt,beginTime和endTime可配置的起始时间点（能力集如不返回该字段，则设备默认的可配起始时间点为1970-01-01T00:00:00）-->
<timeRangeEnd>2037-12-31T23:59:59</timeRangeEnd>
<!--opt,beginTime和endTime可配置的结束时间点（能力集如不返回该字段，则设备默认的可配结束时间点为2037-12-31T23:59:59）-->
<cardValidUnit opt="day,hour,minute,second"></cardValidUnit>
<!--req,卡有效期参数精度（如设备支持到分钟，则opt="minute"），设备未返回该节点时，则默认精度为天（即opt="day"）-->

<!--req,卡类型（emergencyCard-应急管理卡（用于授权临时卡权限，本身不能开门-->
<cardType opt="normalcard,disabledcard,blocklistcard,nightwatchcard,stresscard,supercard,guestcard,mastercard,staffcard,normalopencard,cleancard,standbycard，unlockcard,emergencyCard"/>
<doorRight>enable</doorRight>
<!--req,门权限-->
<leaderCard>enable</leaderCard>
<!--req,支持是否为首卡配置-->
<swipeNum min="" max=""/>
<!--req,最大刷卡次数,0值为无次数限制-->
<maxBelongGroup></maxBelongGroup>
<!--req,最多属于几个群组-->
<cardPassword min="" max=""/>
<!--req,卡密码-->
<doorRightPlanNum></doorRightPlanNum>
<!--req,对单个门可配的最大计划模板数-->
<swipeTime>enabled</swipeTime>
<!--req,支持已刷卡次数-->
<onlyPasswdOpen opt="true,false"/>
<!--opt,是否支持密码单独开门，不支持不返回，目前无效-->
<roomNumber min="" max=""/>
<!--opt,房间号-->
<floorNumber min="" max=""/>
<!--opt,层号-->
<employeeNo min="" max=""/>
<!--opt,工号-->
<name min="" max=""></name>
<!--req,姓名（如设备返回该节点，则可直接使用卡参数接口设置和获取卡号关联用户的姓名，不必再调用NET_DVR_SET_CARD_USERINFO_CFG和NET_DVR_GET_CARD_USERINFO_CFG接口了-->
<departmentNo min="" max=""/>
<!--opt,部门编号-->
<schedulePlanNo min="" max=""/>
<!--opt,排班计划编号-->
<schedulePlanType opt="personal,department"/>
<!--opt,排班计划类型-->
<lockID min="" max=""/>
<!--req,锁ID-->
<roomCode min="" max=""/>
<!--req,房间代码-->
<cardRight opt="lowPowerAlarm,openDoorSound,customCardLimit,normalOpen,openLockedDoor,keepWatch"/>
<!--req,卡权限-->
<supportLocalController>enable</supportLocalController>
<!--req,支持就地控制器-->
<userType opt="normal,admin"></userType>
<!--req,用户类型：normal –普通用户（0），admin–管理员用户（1）-->
<isSupportCardModify>true</isSupportCardModify>
<!--req,支持卡参数异动下载（仅供可视对讲设备使用，门禁设备默认都是支持异动下载的）-->
</Card>
<CardParamSync>
<!--opt,同步卡参数到智能锁-->
<CardParamSyncCond>
<!--req，卡参数同步条件，-->
<command opt="startSync,getProgress"></command>
<!--req,string，命令（startSync-开始同步，getProgress-获取进度）-->
<maxResults min="1" min="100"></maxResults>
<!--req,int，本次调用可获取的最大同步信息数-->
</CardParamSyncCond>
<progressValue min="0" min="100"></progressValue>
<!--req,int，进度值（0-100）-->
<SyncInfo>
<!--opt,同步信息（同步给锁失败时才返回，成功的不返回）-->
<doorNo min="1" min="8"></doorNo><!--req,int，门编号（锁ID）-->
<cardNo min="1" min="32"></cardNo><!--req,string，卡号-->
<errorCode opt="fail"></errorCode><!--req,string，错误码（fail-下发失败）-->
</SyncInfo>
</CardParamSync>

<AntiSneak>
<!--req,反潜回能力-->
<startCardReaderNo>enable</startCardReaderNo>
<!--req,支持反潜回读卡器号设置-->
<maxSneakPath></maxSneakPath>
<!--req,最大反潜回后续读卡器数-->
</AntiSneak>
<MultiDoorInterlock>
<!--req,多门互锁参数-->
<maxMultiDoorInterlockGroup></maxMultiDoorInterlockGroup>
<!--req,最大多门互锁组数-->
<maxInterlockDoorNum></maxInterlockDoorNum>
<!--req,一个多门互锁组中最大互锁门数-->
</MultiDoorInterlock>
<AcsWorkStatus>
<!--req,门禁主机工作状态参数-->
<doorLogicalStatus>enable</doorLogicalStatus>
<!--req,支持电门逻辑状态-->
<doorStatus opt="alwaysopen,alwaysclose,normal"/>
<!--req,支持电门状态参数-->
<magneticStatus>enable</magneticStatus>
<!--req,支持门磁状态参数-->
<relayStatus>enable</relayStatus>
<!--req,支持继电器状态-->
<caseSensorStatus>enable</caseSensorStatus>
<!--req,支持case触发器状态-->
<BatteryVoltage>enable</BatteryVoltage>
<!--req,支持蓄电池电压值-->
<BatteryLowVoltage>enable</BatteryLowVoltage>
<!--req,支持蓄电池低压检测-->
<PowerSupplyStatus>enable</PowerSupplyStatus>
<!--req,支持设备供电状态-->
<multiDoorInterlockStatus>enable</multiDoorInterlockStatus>
<!--req,支持多门互锁状态参数-->
<antiSneakStatus>enable</antiSneakStatus>
<!--req,支持反潜回状态参数-->
<hostAntiDismantleStatus>enable</hostAntiDismantleStatus>
<!--req,支持主机防拆状态-->
<indicatorLightStatus>enable</indicatorLightStatus>
<!--req,支持指示灯状态-->
<cardReaderOnlineStatus>enable</cardReaderOnlineStatus>
<!--req,支持读卡器在线状态-->
<cardReaderAntiDismantleStatus>enable</cardReaderAntiDismantleStatus>
<!--req,支持读卡器防拆状态-->
<cardReaderVerifyMode opt="invalid,sleep,swipecard,swipecardandpassword,swipecardorpasswd,fingerPrint,
fingerPrintAndPasswd,fingerPrintor Card,fingerPrintAndCard,fingerPrintAndCardAndPasswd,
faceOrFpOrCardOrPw,faceAndFingerPrint,faceAndPassword,faceAndCard,face,
employeeNoAndPassword,fingerPrintOrPassword,employeeNoAndFp,employeeNoAndFpAndPw,
faceAndFpAndCard,faceAndPwAndFp,employeeNoAndface"/>
<!--req,支持当前读卡器验证方式状态-->
<setupAlarmStatus>enable</setupAlarmStatus>
<!--req,支持防区布防状态-->
<alarmInStatus>enable</alarmInStatus>
<!--req,支持报警输入状态-->
<alarmOutStatus>enable</alarmOutStatus>
<!--req,支持报警输出状态-->
<cardNum>enable</cardNum>
<!--req,支持已添加卡数量参数-->
<fireAlarmStatus opt="normal,shortCircuit,break"/>
<!--req,支持消防报警状态-->
<supportLocalController>enable</supportLocalController>
<!--req,支持就地控制器-->
<batteryChargeStatus opt="InCharge,NotCharge"/>
<!--req,电池充电状态：InCharge-充电中；NotCharge-未充电-->
<masterChannelControllerStatus>enable</masterChannelControllerStatus>
<!--req,支持主通道控制器在线状态-->
<slaveChannelControllerStatus>enable</slaveChannelControllerStatus>
<!--req,支持从通道控制器在线状态-->
<whiteFaceNum>enable</whiteFaceNum>
<!--req,支持已添加授权人员人脸数量参数-->
<blackFaceNum>enable</blackFaceNum>
<!--req,支持已添加非授权人员人脸数量参数-->
<antiSneakServerStatus opt="disable,normal,disconnect"/>
<!--opt,反潜回服务器状态：disable-未启用，normal-正常，disconnect-断开-->
</AcsWorkStatus>
<CaseSensor>
<!--req,事件触发器参数能力-->
<triggerHostBuzzer>enable</triggerHostBuzzer>
<!--req,支持触发主机蜂鸣器-->
<triggerCardReaderBuzzer>enable</triggerCardReaderBuzzer>
<!--req,支持触发读卡器蜂鸣器-->
<triggerAlarmOut>enable</triggerAlarmOut>
<!--req,支持触发报警输出-->
<triggerDoorOpen>enable</triggerDoorOpen>
<!--req,支持触发按门ID打开-->
<triggerAlarmOutClose>enable</triggerAlarmOutClose>
<!--req,支持触发报警输出关闭-->
<triggerAlarmInSetup>enable</triggerAlarmInSetup>
<!--req,支持触发防区布防-->
<triggerAlarmInClose>enable</triggerAlarmInClose>
<!--req, 支持触发防区撤防-->
</CaseSensor>
<CardReaderCfg>
<!--req,读卡器参数能力-->
<!--req,支持的读卡器类型-->
<cardReaderType opt="DS-K110XM/MK/C/CK,DS-K192AM/AMP,DS-K192BM/BMP,DS-K182AM/AMP,DS-K182BM/BMP,DS-K182AMF/ACF,
韦根或485不在线,DS-K1101M/MK,DS-K1101C/CK,DS-K1102M/MK/M-A,DS-K1102C/CK,DS-K1103M/MK,
DS-K1103C/CK,DS-K1104M/MK,DS-K1104C/CK,DS-K1102S/SK/S-A,DS-K1102G/GK,DS-K1100S-B,DS-K1102EM/EMK,
DS-K1102E/EK,DS-K1200EF,DS-K1200MF,DS-K1200CF,DS-K1300EF,DS-K1300MF,DS-K1300CF,DS-K1105E,
DS-K1105M,DS-K1105C,DS-K182AMF,DS-K196AMF,DS-K194AMP,DS-K1T200EF/EF-C/MF-MF-C/CF/CF-C,
DS-K1T300EF/EF-C/MF-MF-C/CF/CF-C,DS-K1T105E/E-C/M/M-C/C/C-C"/>
<okLedPolarity op="cathode,anode"/>
<!--req,OK LED极性-->
<errorLedPolarity op="cathode,anode"/>
<!--req,ERROR LED极性-->
<buzzerLedPolarity op="cathode,anode"/>
<!--req,蜂鸣器极性-->
<swipeInterval min="" max=""/>
<!--req,重复认证间隔时间取值范围，单位：秒-->
<pressTimeout min="" max=""/>
<!--req,按键超时时间，单位：秒-->
<enableFailAlarm>enable</enableFailAlarm>
<!--req,支持是否启用认证失败超次报警配置-->
<maxReadCardFailNum min="" max=""/>
<!--req,最大数认证失败次数取值范围-->
<enableTamperCheck>enable</enableTamperCheck>
<!--opt,是否支持防拆检测-->
<offlineCheckTime min="" max=""/>
<!--opt,掉线检测时间，单位：秒-->
<fingerPrintCheckLevel opt="1/10,1/100,1/1000,1/10000,1/100000,1/1000000,1/10000000,1/100000000,3/100,3/1000,
3/10000,3/100000,3/1000000,3/10000000,3/100000000,Automatic Normal,Automatic Secure,Automatic More Secure"/>
<!--opt,指纹识别等级-->
<useLocalController>enable</useLocalController>
<!--req,门是否连接就地控制器-->
<localControllerID min="" max=""/>
<!--opt,就地控制器序号-->
<localControllerReaderID min="" max=""/>
<!--opt,就地控制器的读卡器ID-->
<cardReaderChannel opt="Wiegand/Offline,RS485A,RS485B"/>
<!--opt,读卡器通信通道号-->
<fingerPrintImageQuality min="1" max="8"/>
<!--opt,指纹图像质量-->
<fingerPrintContrastTimeOut min="0" max="20"/>
<!--opt,指纹对比超时时间，0代表无限大，即0xff-->
<fingerPrintRecogizeInterval min="0" max="10"/>
<!--opt,指纹连续识别间隔，0代表无延迟，即0xff-->
<fingerPrintMatchFastMode min="0" max="5"/>
<!--opt,指纹匹配快速模式，0代表自动，即0xff-->
<fingerPrintModuleSensitive min="1" max="8"/>
<!--opt,指纹模组灵敏度-->
<fingerPrintModuleLightCondition opt="outdoor,indoor"/>
<!--opt,指纹模组光线条件-->
<faceMatchThresholdN min="0" max="100"/>
<!--opt,人脸1:N匹配阀值-->
<faceQuality min="0" max="100"/>
<!--opt,人脸质量-->
<faceRecogizeTimeOut min="0" max="20"/>
<!--opt,人脸抓拍超时时间，0代表无限大，即0xff-->
<faceRecogizeInterval min="0" max="10"/>
<!--opt,人脸连续识别间隔，0代表无限大，即0xff-->
<cardReaderFunction opt="fingerPrint,face,fingerVein"/>
<!--opt,读卡器种类-->
<cardReaderDescription min="1" max="32"/>
<!--opt,读卡器描述-->
<faceImageSensitometryl min="0" max="65535"/>
<!--opt,人脸图像曝光度-->
<livingBodyDetect opt="disable,enable"/>
<!--opt,真人检测-->
<faceMatchThreshold1 min="0" max="100"/>
<!--opt,人脸1:1匹配阀值-->
<buzzerTime min="0" max="5999"/>
<!--opt,蜂鸣时间-->
<liveDetLevel opt="low,middle,high"/>
<!--opt,活体检测等级（low-低，middle-中，high-高）-->
<faceMatch1SecurityLevel opt="normal, more secure,extremely secure"/>
<!--opt,人脸1:1识别安全等级：1-normal，2- more secure ,3- extremely secure-->
<faceMatchNSecurityLevel opt="normal, more secure,extremely secure"/>
<!--opt,人脸1:N识别安全等级：1-normal，2- more secure ,3- extremely secure-->
<supportDelFPByID opt="true"/>
<!--ro,opt,xs:boolean,读卡器是否支持按手指ID删除指纹（支持时，该字段返回opt="true"；不支持时，该字段返回opt="false"）-->
<defaultVerifyMode opt="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24"/>
<!--ro,opt,读卡器默认验证方式（出厂默认），1-休眠，2-刷卡+密码，3-刷卡，4-刷卡或密码，5-指纹，6-指纹+密码，7-指纹或刷卡，8-指纹+刷卡，9-指纹+刷卡+密码，10-人脸或指纹或刷卡或密码，11-人脸+指纹，12-人脸+密码，13-人脸+刷卡，14-人脸，15-工号+密码，16-指纹或密码，17-工号+指纹，18-工号+指纹+密码，19-人脸+指纹+刷卡，20-人脸+密码+指纹，21-工号+人脸，22-人脸或人脸+刷卡，23-指纹或人脸，24-刷卡或人脸或密码-->
<fingerPrintCapacity min="" max=""/>
<!--ro,opt,xs:integer,指纹容量-->
<fingerPrintNum min="" max=""/>
<!--ro,opt,xs:integer,已存在指纹数量-->
<enableFingerPrintNum opt="true"/>
<!--ro,opt,xs:boolean,指纹容量使能（只有当该字段为true使能时，fingerPrintCapacity和fingerPrintNum才有效）-->
<envirMode opt="0,1,2"></envirMode>
<!--opt,人脸抓拍环境模式，0-无效，1-室内，2-其他-->
<liveDetLevelSet opt="0,1,2,3"></liveDetLevelSet>
<!--opt,活体检测阈值等级设置，0-无效，1-低，2-中，3-高-->
<liveDetAntiAttackCntLimit min="0" max="255"></liveDetAntiAttackCntLimit>
<!--opt,活体检测防攻击次数-->
<enableLiveDetAntiAttack opt="0,1,2">
<!--opt,活体检测防攻击使能，0-无效，1-不启用，2-启用-->
</enableLiveDetAntiAttack>
<faceContrastMotionDetLevel opt="low,middle,high"/><!--opt,人脸比对时移动侦测级别（low-低，middle-中，high-高）-->
<dayFaceMatchThresholdN min="0" max="100"/><!--opt,白天人脸1:N匹配阀值-->
<nightFaceMatchThresholdN min="0" max="100"/><!--opt,夜晚人脸1:N匹配阀值-->
<faceRecogizeEnable opt="true,false,multi"/>
<!--opt,人脸抓拍使能：true-开启（单人脸），false-关闭, multi-多人脸抓拍使能-->
<fingerPrintCapacity min="" max=""/><!--ro,opt,xs:integer,指纹容量-->
<fingerPrintNum min="" max=""/>
<!--ro,opt,xs:integer,已存在指纹数量-->
<enableFingerPrintNum opt="true"/>
<!--ro,opt,xs:boolean,指纹容量使能（只有当该字段为true使能时，fingerPrintCapacity和fingerPrintNum才有效）-->
</CardReaderCfg>
<AcsUpgrade>
<!--req,门禁升级能力-->
<hostUpgrade>enable</hostUpgrade>
<!--req,支持主机升级-->
<cardReaderUpgrade>enable</cardReaderUpgrade>
<!--req,支持读卡器升级-->
<localControllerUpgrade>enable</localControllerUpgrade>
<!--req,支持就地控制器升级-->
<extensionModuleUpgrade>enable</extensionModuleUpgrade>
<!--req,支持扩展模块升级-->
<channelControllerUpgrade>enable</channelControllerUpgrade>
<!--req,支持通道控制器升级-->
<smartLockUpgrade>enable</smartLockUpgrade>
<!--req,支持智能锁升级-->
<cardReaderFPAlgorithmUpgrade>enable</cardReaderFPAlgorithmUpgrade>
<!--req,支持读卡器指纹算法程序升级-->
</AcsUpgrade>
<clearAcsParam opt="doorstatusweekplan,cardreaderverifyweek,cardrightweekplan,doorstatusholidayplan,
cardreaderverifyholidayplan,cardrightholidayplan,doorstatusholidayplan,doorstatusholidaygroup,
cardreaderverifyholidaygroup,cardrightplantemplate,doorstatusplantemolate,
cardreaderverifyplantemplate,card,group,antisneak,eventandCardLinkage,cardPasswdOpendoor,blockListPicture,IDBlockList"/>
<!--req,支持的清空参数的选项-->
<ACSClearParam>
<!--req,扩展清空门禁主机参数节点-->
<localControllerID min="" max=""/>
<!--opt, 就地控制器序号-->
</ACSClearParam>
<MultiHostAntiSneak>
<!--req,跨主机反潜回-->
<startAntiSnealHost opt="true,false"/>
<!--opt,是否支持设置反潜回主机-->
<antiSnealHostNum min="" max=""/>
<!--req,反潜回主机组主机个数-->
<ReadersCfg>
<!--req,跨主机反潜回读卡器参数信息-->
<maxRouteGroupNum></maxRouteGroupNum>
<!--req,最大路径条数-->
<oneRouteReadersNum min="" max=""/>
<!--req,每条路径内后续读卡器数目-->
</ReadersCfg>
</MultiHostAntiSneak>

<AcsHostCfg>
<!--req,门禁主机参数配置能力-->
<enableRS485Backup opt="true,false"/>
<!--req,是否支持下行RS485通信备份功能 -->
<showCapPic opt="true,false"/>
<!--opt,是否支持LCD屏上显示抓拍图片-->
<showCardNo opt="true,false"/>
<!--opt,是否支持LCD屏上显示卡号-->
<showUserInfo opt="true,false"/>
<!--opt,是否支持LCD屏上显示用户信息-->
<overlayUserInfo opt="true,false"/>
<!--opt,抓拍的图片是否支持叠加用户信息-->
<voicePrompt opt="true,false"/>
<!--opt,是否支持语音提示-->
<uploadCapPic opt="true,false"/>
<!--opt,是否支持联动抓拍后上传图片-->
<saveCapPic opt="true,false"/>
<!--opt,是否支持抓拍后保存图片-->
<inputCardNo opt="true,false"/>
<!--opt,是否允许按键输入卡号-->
<enable3G4G opt="true,false"/>
<!--opt,3G4G使能-->
<protocol opt="Private,OSDP"/>
<!--opt,读卡器通信协议类型：Private-私有协议，OSDP-OSDP协议-->
</AcsHostCfg>

<EventLinkage>
<!--req,事件及卡号联动-->
<maxEventNum></maxEventNum>
<!--req,设备支持的最大事件联动数目-->
<supportMode opt="Event,CardNo，MAC,EmployeeNo"/>
<!--req,支持的联动方式，Event-事件联动，CardNo 卡号联动，MAC-mac地址联动，EmployeeNo-工号（人员ID）-->
<isSupportRecordVideo opt="ture,false"/>
<!--req,是否支持联动录像-->
<supportLocalController>enable</supportLocalController>
<!--req,支持就地控制器-->
<isSupportAlarmOutClose opt="ture,false"/>
<!--req,是否支持关联报警输出关闭-->
<isSupportAlarmInSetup opt="ture,false"/>
<!--req,是否支持关联防区布防-->
<isSupportAlarmInClose opt="ture,false"/>
<!--req,是否支持关联防区撤防-->
<isSupportMainDevStopBuzzer opt="ture,false"/>
<!--req是否支持主机停止蜂鸣（不支持不返回）-->
<isSupportReaderStopBuzzer opt="ture,false"/>
<!--req是否支持联动读卡器停止蜂鸣（不支持不返回）-->
<isSupportMainDevStopBuzzer opt="ture,false"/>
<!--req,是否支持主机停止蜂鸣-->
<isSupportReaderStopBuzzer opt="ture,false"/>
<!--req,是否支持联动读卡器停止蜂鸣-->
<audioDisplayMode opt="Close,SinglePlay,CyclePlay"/>
<!--req,联动语音播放模式：Close-关闭，SinglePlay-单次播放，CyclePlay-循环播放-->
<audioDisplayID min="1" max="32"/>
<!--req联动语音播放ID -->
<isNotSupportOpenDoor>true</isNotSupportOpenDoor>
<!--opt,是否不支持联动开门-->
<isNotSupportCloseDoor>true</isNotSupportCloseDoor>
<!--opt,是否不支持联动关门-->
<isNotSupportNormalOpen>true</isNotSupportNormalOpen>
<!--opt,是否不支持联动常开-->
<isNotSupportNormalClose>true</isNotSupportNormalClose>
<!--opt,是否不支持联动常开-->
<isNotSupportAlarmout>true</isNotSupportAlarmout>
<!--opt,是否不支持联动报警输出-->
<isNotSupportCapturePic>true</isNotSupportCapturePic>
<!--opt,是否不支持联动抓图-->

<isNotSupportMainDevBuzzer>true</isNotSupportMainDevBuzzer>
<!--opt是否不支持主机蜂鸣（支持不返回）-->
<isNotSupportReaderBuzzer> true </isNotSupportReaderBuzzer>
<!--opt是否不支持联动读卡器蜂鸣（支持不返回）-->

<EventList>
<EventEntry>
<Index>0</Index>
<mainEventName>DevEvent</mainEventName>
<SubEventNameList>
<subEventName>hostAntiDismantle</subEventName>
<!--req,主机防拆报警-->
<subEventName>OfflineEcentNearlyFull</subEventName>
<!--req,离线事件满90%报警-->
<subEventName>NetBroken</subEventName>
<!--req,网络断开-->
<subEventName>NetRume</subEventName>
<!--req,网络恢复-->
<subEventName>LowBattery</subEventName>
<!--req,蓄电池电压低-->
<subEventName>BatteryReume</subEventName>
<!--req,蓄电池电压恢复正常-->
<subEventName>ACOff</subEventName>
<!--req,交流电断电-->
<subEventName>ACResume</subEventName>
<!--req,交流电恢复-->
<subEventName>SDCardFull</subEventName>
<!--req,SD卡存储满报警-->
<subEventName>LinkageCapturePic</subEventName>
<!--req,联动抓拍事件报警-->
<subEventName>ImageQualityLow</subEventName>
<!--req,人脸图像画质低-->
<subEventName>FingerPrintQualityLow</subEventName>
<!--req,指纹图像画质低-->
<subEventName>BatteryElectricLow</subEventName>
<!--req,电池电压低（仅人脸设备使用）-->
<subEventName>BatteryElectricResume</subEventName>
<!--req,电池电压恢复正常（仅人脸设备使用）-->
<subEventName>FireImportShortCircuit</subEventName>
<!--req,消防输入短路报警-->
<subEventName>FireImportBrokenCircuit</subEventName>
<!--req,消防输入断路报警-->
<subEventName>FireImportResume</subEventName>
<!--req,消防输入恢复-->
<subEventName>MasterRS485LoopnodeBroken</subEventName>
<!--req,主控RS485环路节点断开-->
<subEventName>MasterRS485LoopnodeResume</subEventName>
<!--req,主控RS485环路节点恢复-->
<subEventName>LocalControlOffline</subEventName>
<!--req,就地控制器掉线-->
<subEventName>LocalControlResume</subEventName>
<!--req,就地控制器掉线恢复-->
<subEventName>LocalDownsideRS485LoopNodeBroken</subEventName>
<!--req,就地下行RS485环路断开-->
<subEventName>LocalDownsideRS485LoopNodeResume</subEventName>
<!--req,就地下行RS485环路恢复-->
<subEventName>DistractControllerOnLine</subEventName>
<!--req,分控器在线-->
<subEventName>DistractControllerOffLine</subEventName>
<!--req,分控器离线-->
<subEventName>FireButtonTrigger</subEventName>
<!--req,消防按钮触发-->
<subEventName>FireButtonResume</subEventName>
<!--req,消防按钮恢复-->
<subEventName>MaintenanceButtonTrigger</subEventName>
<!--req,维护按钮触发-->
<subEventName>MaintenanceButtonResume</subEventName>
<!--req,维护按钮恢复-->
<subEventName>EmergencyButtonTrigger</subEventName>
<!--req,紧急按钮触发-->
<subEventName>EmergencyButtonResume</subEventName>
<!--req,紧急按钮恢复-->
<subEventName>SubmarinebackCommBreak</subEventName>
<!--req 与反潜回服务器通信断开-->
<subEventName>SubmarinebackCommResume</subEventName>
<!--req 与反潜回服务器通信恢复-->
<subEventName>RemoteActualGuard</subEventName>
<!--req 远程实时布防-->
<subEventName>RemoteActualUnguard</subEventName>
<!--req 远程实时撤防-->
<subEventName>MotorSensorException</subEventName>
<!--req 电机或传感器异常-->
<subEventName>CanBusException</subEventName>
<!--req CAN总线异常-->
<subEventName>CanBusResume</subEventName>
<!--req CAN总线恢复-->
<subEventName>GateTemperatureOverrun</subEventName>
<!--req 闸机腔体温度超限-->
<subEventName>IREmitterException</subEventName>
<!--req 红外对射异常-->
<subEventName>IREmitterResume</subEventName>
<!--req 红外对射恢复-->
<subEventName>LampBoardCommException</subEventName>
<!--req 灯板通信异常-->
<subEventName>LampBoardCommResume</subEventName>
<!--req 灯板通信恢复-->
<subEventName>IRAdaptorBoardCommException</subEventName>
<!--req 红外转接板通信异常-->
<subEventName>IRAdaptorBoardCommResume</subEventName>
<!--req 红外转接板通信恢复-->
<subEventName>ChannelControllerDesmantleAlarm</subEventName>
<!--req通道控制器防拆报警-->
<subEventName>ChannelControllerDesmantleResume</subEventName>
<!--req通道控制器防拆报警恢复-->
<subEventName>ChannelControllerFireImportAlarm</subEventName>
<!--req通道控制器消防输入报警-->
<subEventName>ChannelControllerFireImportResume</subEventName>
<!--req通道控制器消防输入报警恢复-->
<subEventName>StayEvent</subEventName>
<!--opt逗留事件-->
<subEventName>LegalEventNearlyFull</subEventName>
<!--opt合法事件满90%报警-->
</SubEventNameList>
</EventEntry>
<EventEntry>
<Index>1</Index>
<mainEventName>AlarmEvent</mainEventName>
<SubEventNameList>
<subEventName>AlarminShortCircuit</subEventName>
<!--req,防区短路报警-->
<subEventName>AlarminBrokenCircuit</subEventName>
<!--req,防区断路报警-->
<subEventName>AlarminException</subEventName>
<!--req,防区异常报警-->
<subEventName>AlarmResume</subEventName>
<!--req,防区报警恢复-->
<subEventName>CaseSensorAlarm</subEventName>
<!--req,事件输入报警-->
<subEventName>CaseSensorResume</subEventName>
<!--req,事件输入恢复-->
</SubEventNameList>
</EventEntry>
<EventEntry>
<Index>2</Index>
<mainEventName>DoorEvent</mainEventName>
<SubEventNameList>
<subEventName>LeaderCardOpenBegin</subEventName>
<!--req,首卡开门开始-->
<subEventName>LeaderCardOpenStop</subEventName>
<!--req,首卡开门结束-->
<subEventName>AlwaysOpenBegin</subEventName>
<!--req,常开状态开始-->
<subEventName>AlwaysOpenStop</subEventName>
<!--req,常开状态结束-->
<subEventName>AlwaysCloseBegin</subEventName>
<!--req,常关状态开始-->
<subEventName>AlwaysCloseStop</subEventName>
<!--req,常关状态结束-->
<subEventName>LockOpen</subEventName>
<!--req,门锁打开-->
<subEventName>LockClose</subEventName>
<!--req,门锁关闭-->
<subEventName>DoorButtonPress</subEventName>
<!--req,开门按钮按下 -->
<subEventName>DoorButtonRelease</subEventName>
<!--req,开门按钮放开-->
<subEventName>DoorOpenNormal</subEventName>
<!--req,正常开门（门磁）-->
<subEventName>DoorCloseNormal</subEventName>
<!--req,正常关门（门磁）-->
<subEventName>DoorOpenAbnormal</subEventName>
<!--req,门异常打开（门磁）-->
<subEventName>DoorOpenTimeout</subEventName>
<!--req,门打开超时（门磁）-->
<subEventName>RemoteOpenDoor</subEventName>
<!--req,远程开门-->
<subEventName>RemoteCloseDoor</subEventName>
<!--req,远程关门-->
<subEventName>RemoteAlwaysOpen</subEventName>
<!--req,远程常开-->
<subEventName>RemoteAlwaysClose</subEventName>
<!--req,远程常关-->
<subEventName>NotBelongMultiCard</subEventName>
<!--req,卡不属于多重认证群组-->
<subEventName>InvalidMultiVerifyPeriod</subEventName>
<!--req,卡不在多重认证时间段内-->
<subEventName>MultiVerifySuperRightFail</subEventName>
<!--req,多重认证超级密码认证失败-->
<subEventName>MultiVerifyRemoteRightFail</subEventName>
<!--req,多重认证远程认证失败-->
<subEventName>MultiVerifySuccess</subEventName>
<!--req,多重认证成功-->
<subEventName>MultiVerifyNeedRemoteOpen</subEventName>
<!--req,多重认证需要远程开门-->
<subEventName>MultiVerifySuperRightSuccess</subEventName>
<!--req,多重认证超级密码认证成功-->
<subEventName>MultiVerifyRepeatFail</subEventName>
<!--req,多重认证重复认证失败-->
<subEventName>MultiVerifyTimeout</subEventName>
<!--req,多重认证超时失败-->
<subEventName>RemoteCapturePic</subEventName>
<!--req,远程抓拍-->
<subEventName>DoorBellRing</subEventName>
<!--req,门铃响-->
<subEventName>CallCenter</subEventName>
<!--req,呼叫中心-->
<subEventName>FirstCardAuthorizeBegin</subEventName>
<!--req首卡授权开始-->
<subEventName>FirstCardAuthorizeEnd</subEventName>
<!--req首卡授权结束-->
<subEventName>FirstCardOpenWithoutAuthorize</subEventName>
<!--req首卡未授权开门失败-->
<subEventName>SecurityMoudleDesmantleAlarm</subEventName>
<!--req,门控安全模块防拆报警-->
<subEventName>FirstCardAuthorizeBegin</subEventName>
<!--req,首卡授权开始-->
<subEventName>FirstCardAuthorizeEnd</subEventName>
<!--req,首卡授权结束-->
<subEventName>DoorLockInputShortCircuit</subEventName>
<!--req,门锁输入短路报警-->
<subEventName>DoorLockInputBrokenCircuit</subEventName>
<!--req,门锁输入断路报警-->
<subEventName>DoorLockInputException</subEventName>
<!--req,门锁输入异常报警-->
<subEventName>DoorContactInputShortCircuit</subEventName>
<!--req,门磁输入短路报警-->
<subEventName>DoorContactInputBrokenCircuit</subEventName>
<!--req,门磁输入断路报警-->
<subEventName>DoorContactInputException</subEventName>
<!--req,门磁输入异常报警-->
<subEventName>OpenButtonInputShortCircuit</subEventName>
<!--req,开门按钮输入短路报警-->
<subEventName>OpenButtonInputBrokenCircuit</subEventName>
<!--req,开门按钮输入断路报警-->
<subEventName>OpenButtonInputException</subEventName>
<!--req,开门按钮输入异常报警-->
<subEventName>DoorLockOpenException</subEventName>
<!--req,门锁异常打开-->
<subEventName>DoorLockOpenTimeout</subEventName>
<!--req,门锁打开超时-->
<subEventName>FirstCardOpenWithoutAuthorize</subEventName>
<!--req,首卡未授权开门失败-->
<subEventName>CallLadderRelayBreak</subEventName>
<!--req,呼梯继电器断开-->
<subEventName>CallLadderRelayClose</subEventName>
<!--req,呼梯继电器闭合-->
<subEventName>AutoKeyRelayBreak</subEventName>
<!--req,自动按键继电器断开-->
<subEventName>AutoKeyRelayClose</subEventName>
<!--req,自动按键继电器闭合-->
<subEventName>KeyControlRelayBreak</subEventName>
<!--req,按键梯控继电器断开-->
<subEventName>KeyControlRelayClose</subEventName>
<!--req,按键梯控继电器闭合-->
<subEventName>RemoteVisitorCallLadder</subEventName>
<!--req,访客呼梯-->
<subEventName>RemoteHouseholdCallLadder</subEventName>
<!--req,住户呼梯-->
<subEventName>LegalMessage</subEventName>
<!--req,合法短信-->
<subEventName>IllegalMessage</subEventName>
<!--req,非法短息-->
<subEventName>Trailing</subEventName>
<!--req,尾随通行-->
<subEventName>ReverseAccess</subEventName>
<!--req,反向闯入-->
<subEventName>ForceAccess</subEventName>
<!--req,外力冲撞-->
<subEventName>ClimbingOverGate</subEventName>
<!--req,翻越-->
<subEventName>PassingTimeout</subEventName>
<!--req,通行超时-->
<subEventName>IntrusionAlarm</subEventName>
<!--req,误闯报警-->
<subEventName>FreeGatePassNotAuth</subEventName>
<!--req,闸机自由通行时未认证通过-->
<subEventName>DropArmBlock</subEventName>
<!--req,摆臂被阻挡-->
<subEventName>DropArmBlockResume</subEventName>
<!--req,摆臂阻挡消除-->
<subEventName>RemoteControlCloseDoor</subEventName>
<!--req,遥控器关门-->
<subEventName>RemoteControlOpenDoor</subEventName>
<!--req,遥控器开门-->
<subEventName>RemoteControlAlwaysOpenDoor</subEventName>
<!--req,遥控器常开门-->
</SubEventNameList>
</EventEntry>
<EventEntry>
<Index>3</Index>
<mainEventName>ReaderEvent</mainEventName>
<SubEventNameList>
<subEventName>StressAlarm</subEventName>
<!--req,胁迫报警-->
<subEventName>ReaderDesmantleAlarm</subEventName>
<!--req,读卡器防拆报警-->
<subEventName>LegalCardPass</subEventName>
<!--req,合法卡认证通过-->
<subEventName>CardAndPasswdPass</subEventName>
<!--req,刷卡加密码认证通过-->
<subEventName>CardAndPasswdFail</subEventName>
<!--req,刷卡加密码认证失败-->
<subEventName>CardAndPasswdTimeout</subEventName>
<!--req,刷卡加密码认证超时-->
<subEventName>CardMaxAuthenticateFail</subEventName>
<!--req,读卡器认证失败超次-->
<subEventName>CardNoRight</subEventName>
<!--req,卡未分配权限-->
<subEventName>CardInvalidPeriod</subEventName>
<!--req,卡当前时段无效-->
<subEventName>CardOutofDate</subEventName>
<!--req,卡号过期-->
<subEventName>InvalidCard</subEventName>
<!--req,无此卡号-->
<subEventName>AntiSneakFail</subEventName>
<!--req,反潜回认证失败-->
<subEventName>InterlockDoorNotClose</subEventName>
<!--req,互锁门未关闭-->
<subEventName>FingerprintComparePass</subEventName>
<!--req,指纹比对通过-->
<subEventName>FingerprintCompareFail</subEventName>
<!--req,指纹比对失败-->
<subEventName>CardFingerprintVerifyPass</subEventName>
<!--req,刷卡加指纹认证通过-->
<subEventName>CardFingerprintVerifyFail</subEventName>
<!--req,刷卡加指纹认证失败-->
<subEventName>CardFingerprintVerifyTimeout</subEventName>
<!--req,刷卡加指纹认证超时-->
<subEventName>CardFingerprintPasswdVerifyPass</subEventName>
<!--req,刷卡加指纹加密码认证通过-->
<subEventName>CardFingerprintPasswdVerifyFail</subEventName>
<!--req,刷卡加指纹加密码认证失败-->
<subEventName>CardFingerprintPasswdVerifyTimeout</subEventName>
<!--req,刷卡加指纹加密码认证超时-->
<subEventName>FingerprintPasswdVerifyPass</subEventName>
<!--req,指纹加密码认证通过-->
<subEventName>FingerprintPasswdVerifyFail</subEventName>
<!--req,指纹加密码认证失败-->
<subEventName>FingerprintPasswdVerifyTimeout</subEventName>
<!--req,指纹加密码认证超时-->
<subEventName>FingerprintInexistence</subEventName>
<!--req,指纹不存在-->
<subEventName>FaceVerifyPass</subEventName>
<!--req,人脸认证通过-->
<subEventName>FaceVerifyFail</subEventName>
<!--req,人脸认证失败-->
<subEventName>FaceAndFpVerifyPass</subEventName>
<!--req,人脸加指纹认证通过-->
<subEventName>FaceAndFpVerifyFail</subEventName>
<!--req,人脸加指纹认证失败-->
<subEventName>FaceAndFpVerifyTimeout</subEventName>
<!--req,人脸加指纹认证超时-->
<subEventName>FaceAndPwVerifyPass</subEventName>
<!--req,人脸加密码认证通过-->
<subEventName>FaceAndPwVerifyFail</subEventName>
<!--req,人脸加密码认证失败-->
<subEventName>FaceAndPwVerifyTimeout</subEventName>
<!--req,人脸加密码认证超时-->
<subEventName>FaceAndCardVerifyPass</subEventName>
<!--req,人脸加刷卡认证通过-->
<subEventName>FaceAndCardVerifyFail</subEventName>
<!--req,人脸加刷卡认证失败-->
<subEventName>FaceAndCardVerifyTimeout</subEventName>
<!--req,人脸加刷卡认证超时-->
<subEventName>FaceAndPwAndFpVerifyPass</subEventName>
<!--req,人脸加密码加指纹认证通过-->
<subEventName>FaceAndPwAndFpVerifyFail</subEventName>
<!--req,人脸加密码加指纹认证失败-->
<subEventName>FaceAndPwAndFpVerifyTimeout</subEventName>
<!--req,人脸加密码加指纹认证超时-->
<subEventName>FaceAndCardAndFpVerifyPass</subEventName>
<!--req,人脸加刷卡加指纹认证通过-->
<subEventName>FaceAndCardAndFpVerifyFail</subEventName>
<!--req,人脸加刷卡加指纹认证失败-->
<subEventName>FaceAndCardAndFpVerifyTimeout</subEventName>
<!--req,人脸加刷卡加指纹认证超时-->
<subEventName>EmployeeAndFpVerifyPass</subEventName>
<!--req,工号加指纹认证通过-->
<subEventName>EmployeeAndFpVerifyFail</subEventName>
<!--req,工号加指纹认证失败-->
<subEventName>EmployeeAndFpVerifyTimeout</subEventName>
<!--req,工号加指纹认证超时-->
<subEventName>EmployeeAndFpAndPwVerifyPass</subEventName>
<!--req,工号加指纹加密码认证通过-->
<subEventName>EmployeeAndFpAndPwVerifyFail</subEventName>
<!--req,工号加指纹加密码认证失败-->
<subEventName>EmployeeAndFpAndPwVerifyTimeout</subEventName>
<!--req,工号加指纹加密码认证超时-->
<subEventName>EmployeeAndFaceVerifyPass</subEventName>
<!--req,工号加人脸认证通过-->
<subEventName>EmployeeAndFaceVerifyFail</subEventName>
<!--req,工号加人脸认证失败-->
<subEventName>EmployeeAndFaceVerifyTimeout</subEventName>
<!--req,工号加人脸认证超时-->
<subEventName>FaceRecognizeFail</subEventName>
<!--req,人脸抓拍失败-->
<subEventName>EmployeeAndPwVerifyPass</subEventName>
<!--req,工号加密码认证通过-->
<subEventName>EmployeeAndPwVerifyFail</subEventName>
<!--req,工号加密码认证失败-->
<subEventName>EmployeeAndPwVerifyTimeout</subEventName>
<!--req,工号加密码认证超时-->
<subEventName>DoorOpenOrDormantFail</subEventName>
<!--req,门状态常闭或休眠状态认证失败-->
<subEventName>AuthPlanDormantFail</subEventName>
<!--req,认证计划休眠模式认证失败-->
<subEventName>CardEncryptVerifyFail</subEventName>
<!--req,卡加密校验失败-->
<subEventName>SubmarinebackReplyFail</subEventName>
<!--req,反潜回服务器应答失败-->
<subEventName>HumanDetectFail</subEventName>
<!--req,真人检测失败-->
<subEventName>PeopleAndIdCardComparePass</subEventName>
<!--req人证比对通过-->
<subEventName>PeopleAndIdCardCompareFail</subEventName>
<!--req人证比对失败-->
<subEventName>PasswordMismatch</subEventName>
<!--opt密码不匹配-->
<subEventName>EmployeeNoNotExist</subEventName>
<!--opt工号不存在-->
<subEventName>CombinedVerifyPass</subEventName>
<!--opt组合认证通过-->
<subEventName>CombinedVerifyTimeout</subEventName>
<!--opt组合认证超时-->
<subEventName>VerifyModeMismatch</subEventName>
<!--opt认证方式不匹配-->

</SubEventNameList>
</EventEntry>
</EventList>
</EventLinkage>

<FingerPrint>
<!--req,指纹参数 -->
<enable opt="true,false"/>
<!--req,是否支持指纹参数配置-->
<cardNo min="" max=""/>
<!--req,卡号长度-->
<fingerPrintLen min="" max=""/>
<!--req,指纹数据长度-->
<EnableCardReader min="" max=""/>
<!--req,支持的读卡器编号-->
<fingerType opt="Normal,Stress,patrolFP,superFP,dismissingFP"/>
<!--req,Normal-普通指纹，Stress-胁迫指纹，patrolFP-巡更指纹，superFP-超级指纹，dismissingFP-解除指纹-->
<fingerPrintID min="" max=""/>
<!--req,手指编号-->
<callbackMode opt="allRetrun,partReturn"/>
<!--req,回调方式，allRetrun-阻塞（设备所有读卡器下完了范围），partReturn-非阻塞（在时间段内下了部分也返回）-->
<isSupportFingerNo/>
<!--opt,boolean设备是否支持手指指纹编号配置（返回true表示支持）-->
<isSupportFingerNo/>
<!--opt,boolean设备是否支持指纹编号配置（返回true表示支持）-->
<recvStatus opt="0,1,2,3,4,5,6,7,8,9,10"/>
<!--opt,主机错误状态：0-成功，1-手指编号错误，2-指纹类型错误，3-卡号错误（卡号规格不符合设备要求），4-指纹未关联工号或卡号（工号或卡号字段为空），5-工号不存在，6-指纹数据长度为0，7-读卡器编号错误，8-工号错误，9-首次认证值非法，10-其他参数错误-->
<employeeNo min="" max=""/>
<!--opt,工号（人员ID）-->
<leaderFP opt="true"/>
<!--opt,指纹是否支持首次认证功能配置（不支持时，不返回该字段或opt="false"）-->
<isSupportFingerCover>true</isSupportFingerCover>
<!--opt,xs:boolean, 指纹下发是否支持指纹覆盖（相同人员ID，相同工号，新下发的指纹直接覆盖原来已下发的指纹）（支持时：返回true，不支持时：不返回该字段）-->
</FingerPrint>

<DelFingerPrint>
<!--req删除指纹参数（1.设备端支持DVR_DEL_FINGERPRINT_CFG_V50时，才需要返回该字段，不支持时不要返回。2.对于用户调用者来说，调用NET_DVR_DEL_FINGERPRINT_CFG_V50时，若返回该字段，则需要等待回调返回实际的删除结果；若未返回该字段，则NET_DVR_StartRemoteConfig接口的返回结果就代表实际删除指纹是否成功，不需要等待回调数据）-->
<delFingerPrintMode opt="byCard,byReader"/>
<!--req,删除指纹方式：byCard-按卡号，byReader按读卡器-->
<FingerPrintStatus>
<!--req,删除指纹状态-->
<cardReaderNo min="" max=""/>
<!--req,指纹读卡器编号-->
<status min="0" max="3"/>
<!--req,状态0-无效，1-处理中，2-删除失败，3-成功-->
</FingerPrintStatus>
<employeeNo min="" max=""/>
<!--req,工号（人员ID）-->
</DelFingerPrint>

<SMS>
<enable opt="true,false"/>
<!--req,是否支持手机短信功能-->
<PhoneLinkageDoor>
<!--req,手机联动门-->
<openRight opt="true,false"/>
<!--req,开门权限-->
<closeRight opt="true,false"/>
<!--req,关门权限-->
<NormalOpenRight opt="true,false"/>
<!--req,常开门权限-->
<NormalCloseRight opt="true,false"/>
<!--req,常闭门权限-->
<armRight opt="true,false"/>
<!--req,布防权限-->
<DisarmRight opt="true,false"/>
<!--req,撤防权限-->
</PhoneLinkageDoor>
<allowListNum min="1" max="32"/>
<!--req,授权名单数量-->
</SMS>
<RealteUserInfo>
<!--req,NET_DVR_CARD_CFG_SEND_DATA和NET_DVR_CARD_USER_INFO_CFG-->
<enabled opt="true,false"/>
<!--req,是否支持卡号关联用户信息-->
<userNameLen min="" max=""/>
<!--req,用户名长度-->
</RealteUserInfo>
<ContinuousShootCfg>
<!--req,NET_DVR_SNAPCFG-->
<enabled opt="true,false"/>
<!--req,是否支持配置触发抓拍参数-->
<relatedDriveWay min="" max=""/>
<!--req,触发IO关联的车道号-->
<snapTimes min="" max=""/>
<!--req,线圈抓拍次数，0-5-->
<snapWaitTime min="" max=""/>
<!--req,抓拍等待时间，单位ms，取值范围[0,60000]-->
<IntervalTimeList size="4">
<intervalTime min="" max=""/>
<!--req,连拍间隔时间，单位ms-->
</IntervalTimeList>
<JpegParam>
<picSize opt="CIF,QCIF,D1,UXGA,SVGA,HD720P,VGA,XVGA,HD900p,HD1080,2560*1920,1600*304,2048*1536,2448*2048,2448*1200,
2448*800,XGA,SXGA,WD1,1080i,576*576,1536*1536,1920*1920,320*240,720*720,1024*768,1280*1280,1600*600,
2048*768,160*120,336*256,384*256,384*216,320*256,320*192,512*384,480*272,512*272,288*320,144*176,
480*640,240*320,120*160,576*720,720*1280,576*960,180*240,360*480,540*720,720*960,960*1280,1080*1440,Auto"/>
<!--opt,图像大小-->
<picQuality opt="best,good,general"/>
<!--opt,图像质量 0：最好 1：较好 2：一般-->
</JpegParam>
</ContinuousShootCfg>
<PictureCfg>
<!--req,复用NET_DVR_PICTURECFG某些字段-->
<enableUp opt="true,false"/>
<!--req,是否支持上传背景图片-->
<enableDel opt="true,false"/>
<!--req,是否支持删除背景图片-->
<useType min="" max=""/>
<!--req,图片类型，1-底图，2-GIF图片，3-CAD图片-->
<sequence min="" max=""/>
<!--req,序号-->
<BasemapCfg>
<sourWidth min="" max=""/>
<!--req,原图片的宽度-->
<sourHeight min="" max=""/>
<!--req,原图片的高度-->
</BasemapCfg>
</PictureCfg>

<ExternalDevCfg>
<!--req,NET_DVR_ACS_EXTERNAL_DEV_CFG-->
<IDCardUpMode opt="number,all"/>
<!--req,身份证信息上报, number：上传18位身份证号；all：上传全部信息-->
<cardVerifyMode opt="remoteCenter,clientPlatform"/>
<!--req,刷卡认证模式，remoteCenter：远程中心认证；clientPlatform：客户端平台认证-->
<ACSDevType opt="IDCardReader,ICReader,QRCodeReader,fingerPrintReader,QRCodeReaderandScreen,recycleCard,screen,fingerPrintModule,voiceModule,peopleAndIdCard"/>
<!--req,设备型号，1：身份证读卡器，2：IC读卡器，3：二维码读卡器，4：指纹读卡器，5：字符屏+二维码读卡器，6：收卡器，7：字符屏，8：指纹头，9：语音模块，10：人证设备-->
<doorMode opt="inDoor,outDoor"/>
<!--req,门出入类型，inDoor：进门，outDoor：出门-->
<DevDetailType>
<IDCardReaderType opt="iDR210,IDM10"/>
<!--req,身份证读卡器具体型号-->
<screenType opt="DC48270RS043_01T,DC80480B070_03T"/>
<!--req,LCD屏具体型号-->
</DevDetailType>
</ExternalDevCfg>
<PersonnelChannelCfg>
<!--req,NET_DVR_PERSONNEL_CHANNEL_CFG-->
<inMode opt="controlled,forbid,freedom"/>
<!--req,进门模式，0受控；1禁止；2自由；-->
<outMode opt="controlled,forbid,freedom"/>
<!--req,出门模式，0受控；1禁止；2自由；-->
<workMode opt="urgent,repair,normalClose,normalOpen"/>
<!--req,工作模式，0紧急；1维护；2常闭；3常开-->
</PersonnelChannelCfg>
<PlatformVerifyCfg>
<!--req,NET_DVR_PLATFORM_VERIFY_CFG-->
<doorNo min="" max=""/>
<!--req,门编号；-->
<resultType opt="legal,illegal"/>
<!--req,认证结果类型，legal：非法，illegal：合法-->
<screenDisplay min="" max=""/>
<!--req,LED屏幕显示字符长度-->
</PlatformVerifyCfg>
<PersonStatisticsCfg>
<!--req,NET_DVR_PERSON_STATISTICS_CFG-->
<enableStatistics opt="true,false"/>
<!--req,是否开启人数统计-->
<enableOfflineStatistics opt="true,false"/>
<!--req,是否开启离线人数统计-->
<countSignalStatisticalStandard opt="IRDetectPass,AuthQuantity"/>
<!--req,计数信号统计标准：IRDetectPass-红外检测通行统计，AuthQuantity-认证数量统计-->
</PersonStatisticsCfg>
<ScreenDisplayCfg>
<!--req,NET_DVR_SCREEN_DISPLAY_CFG-->
<FontSize min="" max=""/>
<!--req,字体大小-->
<rowSpacing min="" max=""/>
<!--req,行间距-->
<columnSpacing min="" max=""/>
<!--req,行间距-->
<firstRowPosition opt="0,1/8,2/8,3/8,4/8,5/8,6/8,7/8"/>
<!--req,起始行位置-->
<degree opt="0,90"/>
<!--req,字符显示方向角度,单位度-->
<screenType opt="DC48270RS043_01T,DC80480B070_03T"/>
<!--req,屏幕类型-->
</ScreenDisplayCfg>
<GateTimeCfg>
<!--req,NET_DVR_GATE_TIME_CFG-->
<holdOnALarmTime min="" max=""/>
<!--req,延续报警器蜂鸣时间，单位ms -->
<holdOnGateOpenTime min="" max=""/>
<!--req,闸门收到关闭命令前继续保持打开状态时间，单位ms-->
<postponeIntrusionAlarmTime min="" max=""/>
<!--req,推迟触发闯入欺骗行为报警时间，单位ms-->
<noLaneAccessTimeLimitTime min="" max=""/>
<!--req,通道收到有效通行认证信号，但无人通行超时报警时间，单位s-->
<safetyZoneStayTime min="" max=""/>
<!--req,通道收到有效通行认证信号，乘客到达安全区后滞留通道超时报警时间，单位s-->
<IRTriggerTimeoutTime min="0" max="255"/>
<!--req,红外触发超时时间，单位s-->
</GateTimeCfg>
<LocalControllerStatus>enable</LocalControllerStatus>
<!--req,支持获取就地控制器状态-->
<searchLocalController>enable</searchLocalController>
<!--req,支持搜索就地控制器-->
<showDeviceType opt="Floor"/>
<!--opt,显示设备类型（若没该字段，默认显示门参数），Floor-显示楼层-->

<FaceParam>
<!--req,人脸参数-->
<enable opt="true"/>
<!--req,是否支持人脸参数配置，支持仅返回true-->
<cardNo min="" max=""/>
<!--req,卡号长度-->
<faceLen min="" max=""/>
<!--req,人脸数据长度-->
<enableCardReader min="" max=""/>
<!--req,支持的读卡器编号-->
<faceID min="" max=""/>
<!--req,人脸编号-->
<faceDataType opt="module,picture"/>
<!--req,人脸数据类型（若不包含此节点，默认类型为模板）-->
<isSupportFaceCover>
<!--opt,人脸数据下发是否支持覆盖已有的数据-->
</isSupportFaceCover>
</FaceParam>

<isSupportGetDeviceEvent opt="true,false"/>
<!--opt 设备事件获取（支持该功能返回opt="true"，不支持该功能返回opt="false"或不返回该节点）-->
<isSupportDeployType min="0" max="1"/>
<!--opt,支持的布防类型：0-客户端布防，1-实时布防-->
<UploadRightControllerAudio>
<!--req,上传权限控制器音频文件-->
<audioID min="2" max="32"/>
<!--req,音频文件ID（0xffffffff代表上传全部音频文件，目前设备仅支持全量上传，不支持单个音频ID上传）-->
</UploadRightControllerAudio>
<DownloadRightControllerAudio>
<!--req,下载权限控制器音频文件-->
<audioID min="2" max="32"/>
<!--req,音频文件ID（0xffffffff代表下载全部音频文件，目前设备仅支持全量下载，不支持单个音频ID下载）-->
</DownloadRightControllerAudio>

<BlockListPictureParam>
<!--req,非授权人员图片参数（NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE）-->
<BlockListPictureCond>
<!--req 非授权人员图片条件-->
<pictureNum min="" max=""/>
<!--req图片数量-->
</BlockListPictureCond>
<cardNo min="" max=""/>
<!--req,卡号-->
<name min="" max=""/>
<!--req,姓名-->
<sex opt="male,female"/>
<!--req,性别：male-男，female-女-->
<pictureValid opt="invalid,valid"/>
<!--req,非授权人员图片是否有效：invalid-无效，valid –有效-->
<pictureLen min="" max=""/>
<!--req,非授权人员图片长度-->
<BlockListPictureStatus>
<!--req,非授权人员图片状态-->
<cardNo min="" max=""/>
<!--req,卡号-->
<status opt=" processing,failed,success"/>
<!--req,状态：processing-处理中，failed-失败，success-成功-->
</BlockListPictureStatus>
</BlockListPictureParam>

<IDBlockListParam>
<!--req,非授权人员身份证参数（NET_DVR_BULK_UPLOAD_ID_BLOCKLIST）-->
<IDBlockListCond>
<!--req,非授权人员身份证条件-->
<blockListNum min="" max=""/>
<!--req,非授权人员数量-->
</IDBlockListCond>
<blockListValid opt="invalid,valid"/>
<!--req,非授权人员身份证是否有效：invalid-无效，valid–有效-->
<IDBlockListStatus>
<!--req,非授权人员身份证状态-->
<IDNum min="" max=""/>
<!--req,身份证号码-->
<status opt=" processing,failed,success"/>
<!--req,状态：processing-处理中，failed-失败，success-成功-->
</IDBlockListStatus>
</IDBlockListParam>

<sequenceNo min="0" max="100000"/>
<!--req,设备支持的流水号数量-->
<CheckFacePicture>
<!-- opt, xs:boolean，批量校验人脸图片-->
<pictureNum min="" max="">
<!--req, xs:integer, 图片数量-->
</pictureNum>
<checkStatus opt="1,2,3,4,5,6,7,8,9,10,11,12,13">
<!--req,xs:integer, 校验结果：1-建模成功，2-建模失败，3-人脸模块通讯异常，4-图像无人脸，5-人脸朝上，6-人脸朝下，7-人脸偏左，8-人脸偏右，9-人脸顺时旋转，10-人脸逆时旋转，11-人眼间距小12-人脸和模板匹配，13-人脸和模板不匹配-->
</checkStatus>
<checkTemplate opt="0,1"><!--opt, xs:integer, 0-图片校验，1-图片和建模数据匹配校验--></checkTemplate>
</CheckFacePicture>

<supplementLightNo min="" max=""/><!--opt,补光灯编号-->
<maxWhiteFaceNum></maxWhiteFaceNum><!--opt,支持的授权人员人脸数量-->
<maxBlackFaceNum></maxBlackFaceNum><!--opt,支持的非授权人员人脸数量-->
<isSupportGetFailedFaceInfo><!-- opt,xs:boolean, 获取升级后人脸建模失败信息--></isSupportGetFailedFaceInfo>
<FailedFaceInfoParam>
<!--opt,建模失败记录参数（NET_DVR_FAILED_FACE_INFO）-->
<FailedFaceInfoCond/>
<!--opt,建模失败人脸记录条件-->
<FailedFaceInfo>
<!--req,建模失败记录信息-->
<cardNo min="" max=""/>
<!--req,卡号-->
<errorCode min="" max=""/>
<!--req,建模失败错误码-->
<errorMsg min="" max=""/>
<!--req,建模失败描述-->
</FailedFaceInfo>
</FailedFaceInfoParam>
<isSupportFaceAndTemplate>
<!-- opt, xs:boolean, 是否支持人脸图片及建模数据配置接口-->
</isSupportFaceAndTemplate>
<FaceAndTemplateParam>
<!--opt,人脸图片及建模数据配置接口-->
<faceNum min="" max=""/>
<!--req,人脸数量-->
<cardNo min="" max=""/>
<!--req,卡号-->
<faceLen min="" max=""/>
<!--req,人脸数据长度-->
<faceTemplateLen min="" max=""/>
<!--req,人脸模板数据长度-->
</FaceAndTemplateParam>

<CaptureFingerPrint>
<!--opt,xs:boolean，采集指纹信息-->
<pictureType opt="full,quarter">
<!--req, xs:string, 指纹图片类型-->
</pictureType>
<fingerNo min="1" max="10">
<!--req,xs:integer, 手指编号-->
</fingerNo>
<isSupportFingerData opt="true,false">
<!--req,xs:boolen, 指纹数据-->
</isSupportFingerData>
<isSupportFingerPicture opt="true,false">
<!--req, xs:boolen, 指纹图片-->
</isSupportFingerPicture>
<fingerPrintQuality min="1" max="100">
<!--req, xs:integer, 指纹质量-->
</fingerPrintQuality>
</CaptureFingerPrint>

<CaptureFace>
<!--opt, xs:boolean，采集人脸信息-->
<isSupportFaceTemplate1 opt="true,false">
<!--req, xs:boolen, 人脸模板数据1-->
</isSupportFaceTemplate1>
<isSupportFaceTemplate2 opt="true,false">
<!--req, xs:boolen, 人脸模板数据2-->
</isSupportFaceTemplate2>
<isSupportFacePic opt="true,false">
<!--req, xs:boolen, 人脸图片数据-->
</isSupportFacePic>
<faceQuality min="1" max="100">
<!--req,xs:integer, 人脸质量-->
</faceQuality>
<captureProgress opt="0,100">
<!--req, xs:integer, 采集进度-->
</captureProgress>
<isSupportInfraredFacePic opt="true,false">
<!--req, xs:boolen, 红外人脸图片数据--></isSupportInfraredFacePic>
</CaptureFace>

<isSupportUploadCertificateBlockList>
<!--opt, xs:boolean, 是否支持上传非授权人员身份证-->
</isSupportUploadCertificateBlockList>
<isSupportGetRegisterInfo>
<!--opt, xs:boolean, 是否支持登记信息获取-->
</isSupportGetRegisterInfo>
<isSupportDownloadCertificateBlockListTemplet>
<!--opt, xs:boolean, 是否支持下载非授权人员身份证模板-->
</isSupportDownloadCertificateBlockListTemplet>

<ScheduleInfo>
<!-- opt, xs:boolean，排班信息-->
<command opt="personal,everyone">
<!--req,xs:string, 查询条件-->
</command>
<employeeNo min="" max="">
<!--req,xs:integer, 工号-->
</employeeNo>
<name min="1" max="32">
<!--req,xs:string, 姓名-->
</name>
<departmentName min="1" max="32">
<!--req,xs:string, 部门名称-->
</departmentName>
<schedulePlanNo min="" max="">
<!--req,xs:integer, 排班计划编号-->
</schedulePlanNo>
<schedulePlanType opt="personal,department">
<!--req,xs:string, 排班计划类型-->
</schedulePlanType>
<enabled opt="true,false">
<!--req,xs:boolen, 使能-->
</enabled>
<scheduleType opt="noSchedule,ordinaryClass,workingClass">
<!--req,xs:string, 班次类型-->
</scheduleType>
<scheduleNo min="" max="">
<!--req,xs:integer, 班次编号-->
</scheduleNo>
<scheduleStartTime>
<!--req,xs:time, ISO8601 time, "2016-01-01", 开始时间-->
</scheduleStartTime>
<scheduleEndTime>
<!--req,xs:time, ISO8601 time, "2016-02-17", 结束时间-->
</scheduleEndTime>
<holidayNo min="" max="">
<!--req,xs:integer, 假日组编号-->
</holidayNo>
</ScheduleInfo>
<AttendanceSummaryInfo>
<!-- opt,xs:boolean，考勤汇总信息-->
<command opt="personal,everyone">
<!--req,xs:string, 查询条件-->
</command>
<employeeNo min="" max="">
<!--req,xs:integer, 工号-->
</employeeNo>
<name min="1" max="32">
<!--req,xs:string, 姓名-->
</name>
<departmentName min="1" max="32">
<!--req,xs:string, 部门名称-->
</departmentName>
<workStandard min="" max="">
<!--req,xs:integer, 标准工作时间（分钟）-->
</workStandard>
<workActual min="" max="">
<!--req,xs:integer, 实际工作时间（分钟）-->
</workActual>
<lateTimes min="" max="">
<!--req,xs:integer, 迟到次数-->
</lateTimes>
<lateMinutes min="" max="">
<!--req,xs:integer, 迟到累计时间（分钟）-->
</lateMinutes>
<leaveEarlyTimes min="" max="">
<!--req,xs:integer, 早退次数-->
</leaveEarlyTimes>
<leaveEarlyMinutes min="" max="">
<!--req,xs:integer, 早退累计时间（分钟）-->
</leaveEarlyMinutes>
<overtimeStandard min="" max="">
<!--req,xs:integer, 标准加班时间（分钟）-->
</overtimeStandard>
<overtimeActual min="" max="">
<!--req,xs:integer, 实际加班时间（分钟）-->
</overtimeActual>
<attendanceStandard min="" max="">
<!--req,xs:integer, 标准出勤天数（天）-->
</attendanceStandard>
<attendanceActual min="" max="">
<!--req,xs:integer, 实际出勤天数（天）-->
</attendanceActual>
<absentDays min="" max="">
<!--req,xs:integer, 旷工天数（天）-->
</absentDays>
</AttendanceSummaryInfo>
<AttendanceRecordInfo>
<!--opt,xs:boolean，考勤记录信息-->
<command opt="personal,everyone">
<!--req,xs:string, 查询条件-->
</command>
<employeeNo min="" max="">
<!--req,xs:integer, 工号-->
</employeeNo>
<name min="1" max="32">
<!--req,xs:string, 姓名-->
</name>
<departmentName min="1" max="32">
<!--req,xs:string, 部门名称-->
</departmentName>
<attendanceTime>
<!--req,xs:time, ISO8601 time, "2016-02-17T17:30:08+08:00", 考勤时间-->
</attendanceTime>
</AttendanceRecordInfo>
<AbnormalInfo>
<!-- opt,xs:boolean，异常统计信息-->
<command opt="personal,everyone">
<!--req,xs:string, 查询条件-->
</command>
<employeeNo min="" max="">
<!--req,xs:integer, 工号-->
</employeeNo>
<name min="1" max="32">
<!--req,xs:string, 姓名-->
</name>
<departmentName min="1" max="32">
<!--req,xs:string, 部门名称-->
</departmentName>
<onDutyTime>
<!--req,xs:time, ISO8601 time, "2016-02-17T08:30:08+08:00", 上班时间-->
</onDutyTime>
<offDutyTime>
<!--req,xs:time, ISO8601 time, "2016-02-17T17:30:08+08:00", 下班时间-->
</offDutyTime>
<lateMinutes min="" max="">
<!--req,xs:integer, 迟到时间（分钟）-->
</lateMinutes>
<leaveEarlyMinutes min="" max="">
<!--req,xs:integer, 早退时间（分钟）-->
</leaveEarlyMinutes>
<absenceMinutes min="" max="">
<!--req,xs:integer, 缺勤时间（分钟）-->
</absenceMinutes>
<totalMinutes min="" max="">
<!--req,xs:integer, 合计时间（分钟）-->
</totalMinutes>
</AbnormalInfo>
<sequenceNo min="0" max="100000">
<!--req,设备支持的流水号数量-->
</sequenceNo>
</AcsAbility>


ACS_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取门禁能力时pInBuf参数描述 -->
<AcsAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</AcsAbility>


DECODER_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 多路解码器XML能力集描述 -->
<DecoderAbility version="2.0">
<SupportAutoReboot>
<enable>true</enable><!--req,支持自动重启，不支持不显示-->
</SupportAutoReboot>
<SupportUrl>
<enable>true</enable><!--req,支持Url取流，不支持不显示-->
<mediaServerVersion opt="2,3,4"/><!--req,支持url可选流媒体版本-->
<heartBeatType opt="OPTION,RTCP,NULL"/><!--req,支持url可选心跳类型-->
</SupportUrl>
<SupportManageDecResource>
<enable>true</enable><!--req,支持自动分配解码资源-->
</SupportManageDecResource>
<SupportStreamIdDec>
<enable>true</enable><!--req,支持流ID方式取流解码-->
<SupportMediaStreamId>
<enable>true</enable><!--req,支持过流媒体流ID方式取流解码-->
</SupportMediaStreamId>
</SupportStreamIdDec>

<SupportDdnsDec>
<enable>true</enable><!--req,支持通过动态域名解析方式取流解码-->
<ddnsType opt = "IPServer,Dyndns,PeanutHull,N0-IP,hiDDNS"/><!--req,支持的动态域名类型-->
<SupportMediaDdns>
<enable>true</enable><!--req,支持动态域名解析后过流媒体取流-->
</SupportMediaDdns>
</SupportDdnsDec>

<SupportZeroChanDec>
<enable>true</enable><!--req,支持零通道取流解码-->
<SupportMediaZeroChan>
<enable>true</enable><!--req,支持过流媒零通道取流-->
</SupportMediaZeroChan>
</SupportZeroChanDec>

<SupportLocalInputDec>
<enable>true</enable>
<!--req,支持本地输入源-->
<InputIndex >
<VGA min="" max=""/>
<!--req,VGA输入-->
<DVI min="" max=""/>
<!--req, DVI输入-->
<HDMI min="" max=""/>
<!--req, HDMI输入-->
</InputIndex >
</SupportLocalInputDec>

<!--req, 设备支持的显示模式，0-普通模式，1-畅显模式，不支持模式设置不显示-->
<DeviceDisplayMode>0,1</DeviceDisplayMode>

<VcaDec>
<!--opt,支持智能解码-->
<maxVcaDecChanNum></maxVcaDecChanNum>
<!--req,最大智能解码通道数-->
<VcaDecAlarmLogo>
<!--req,支持智能报警logo叠加-->
<logoFlash>enable</logoFlash>
<!--req,支持logo闪烁-->
<logoFlashTime min="" max=""/>
<!--req,logo闪烁时间，单位：秒-->
<logoPositionX min="" max=""/>
<!--req,logo X坐标位置-->
<logoPositonY min="" max=""/>
<!--req,logo Y坐标位置-->
</VcaDecAlarmLogo>
</VcaDec>

<SupportWinRoamSwitch>
<!--opt,支持窗口漫游开关-->
<enabled>true</enabled>
</SupportWinRoamSwitch>

<DecodeResource>
<!--req-->
<decodeChanNo min="" max=""/><!--req,解码通道最大最小值-->
<dspNum><!--req--></dspNum>
<DecodeResourceEntry>
<!--req, 同级节点可以有多个-->
<id><!--req 从0开始的节点序号--></id>
<decodeResolution>CIF</decodeResolution>
<!--req, xs:string, "CIF", "2CIF", "4CIF", "720P", "1080P", "500W"解码的图像分辨率-->
<validDecodeChanNum>
<!--req, xs:inter,当前分辨率下可用的解码通道个数-->
</validDecodeChanNum>
<DecodeChanSelectEntry>
<!--req, 同级节点可以有多个-->
<decodeChanRange min="" max=""></decodeChanRange>
<!--req, xs:inter,解码通道区间最小/最大通道号-->
<validRangeChanNum></validRangeChanNum>
<!--req, xs:inter,该区间内可用的解码通道个数-->
</DecodeChanSelectEntry>
</DecodeResourceEntry>
</DecodeResource>

<VoutResource>
<videoOutNum><!--req, xs:inter, 视频输出个数--></videoOutNum>
<audioOutNum><!--req, xs:inter, 音频输出个数--></audioOutNum>
<VoutResourceEntry>
<!--req, 同级节点可以有多个-->
<id><!--req--></id>
<voutType>vga<!--req, xs:string,bnc,vga,hdmi,dvi--></voutType>
<voutNo min="" max=""/>
<!--req, xs:inter,此输出类型的输出序号-->
<Audio>
<enabled>true</enabled><!--req, 是否支持独立音频-->
</Audio>
<VoutResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>
<!--req, xs:string, ''1080P_60HZ(1920*1080)”...,显示输出分辨率名称-->
</resolutionName>
<index>
<!--req, xs:inter,该分辨率对应的索引值-->
</index>
</VoutResolutionEntry>
<VoutChanDisplayEntry>
<!--req, 同级节点可以有多个,每个表示一个输出口-->
<voutName>vag1<!--req, xs:string,输出口号名称--></voutName>
<voutID>1<!--req, xs:inter,输出口号--></voutID>
<displayWindowMode opt="1,4,9,16"></displayWindowMode>
<relatedDecodeChan min="" max=""/><!--req, 可关联的解码通道范围-->
</VoutChanDisplayEntry>
</VoutResourceEntry>
</VoutResource>

<VoutDisplayConstraint>
<!--opt, 显示输出的约束条件,如vga1和hdmi1互斥关系-->
<voutDisplayChanNum></voutDisplayChanNum>
<!--req, xs:inter,可同时输出的最大显示通道个数-->
<voutDisplayChanEntry>
<!--req, 同级节点可以有多个,表示各类型输出有效的个数-->
<voutDisplayChanType opt="vga1,hdmi1"></voutDisplayChanType>
<validChanNum><!--req inter, 有效个数--></validChanNum>
</voutDisplayChanEntry>
</VoutDisplayConstraint>

<!--req, 以下是视频综合平台解码板的能力-->
<uploadLogoMode opt="decodeChan,displayChan"/><!--opt,上传LOGO模式, 0-上传给解码通道，1-上传给显示通道-->
<BaseMap>
<enabled>true</enabled><!--opt,是否支持底图-->
</BaseMap>
<pictureLayer>
<pictureLayerNo min="" max=""/><!--opt,图层个数-->
<Transparency>
<enabled>true</enabled>
<!--req, 支持透明度-->
</Transparency>
</pictureLayer>
<decodeDelay opt="1,2,3,4,5"/>
<!--req,解码延时等级-->
<Playback>
<!--req,不支持不需要此节点-->
<enabled>true</enabled>
<!--req,支持回显-->
</Playback>
<VoutSplice>
<VoutSpliceEntry>
<id>1<!--req--></id>
<voutType>vga1<!--req,输出口--></voutType>
<decodeSubSystemSlotNo>1<!--req,解码子系统槽位号--></decodeSubSystemSlotNo>
<spliceVoutType opt="vga1,vga2,hdmi1"/>
<!--req,允许拼接的输出口-->
</VoutSpliceEntry>
<VoutSpliceEntry>
<id>2<!--req--></id>
<voutType>vga2<!--req,输出口--></voutType>
<decodeSubSystemSlotNo>1<!--req,解码子系统槽位号--></decodeSubSystemSlotNo>
<spliceVoutType opt="vga1,vga2,hdmi1"/>
<!--req,允许拼接的输出口-->
</VoutSpliceEntry>
<VoutSpliceEntry>
<!--req, ……-->
</VoutSpliceEntry>
</VoutSplice>
<borrowDecodeResource>
<enabled>true</enabled>
<!--req,支持借用解码资源-->
</borrowDecodeResource>
<SeizeDecodeResource>
<enabled>true</enabled>
<!--req,支持借用解码资源-->
</SeizeDecodeResource>
</DecoderAbility>


DECODER_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取多路解码器XML能力时pInBuf参数描述 -->
<DecoderAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
<DecodeResource/>
<!--opt,指定返回DecodeResource节点-->
</DecoderAbility>


DEVICE_ABILITY_accessDeviceList

设备网络SDK开发使用手册

<accessDeviceList version="2.0" >
<accessDevice size="">
<id>
<!--req, xs:integer, 序列号-->
</id>
<MACAddress>
<!--opt, xs:string, MAC物理地址-->
</MACAddress>
<ipV4Address>
<!--opt, xs:string, 设备IP地址 -->
</ipV4Address>
<accessTime>
<!--req, xs:time, ISO8601 data, 接入时间-->
</accessTime>
</accessDevice>
</accessDeviceList>


DEVICE_ABILITY_AccessoryCardInfo

设备网络SDK开发使用手册

<AccessoryCardInfo version="2.0">
<AccessoryCardTypeName>
<!--opt,ro,xs:string, 配件板信息(智能板和拼控板)-->
</AccessoryCardTypeName>
</AccessoryCardInfo>


DEVICE_ABILITY_AlarmCtrlParam

设备网络SDK开发使用手册

<AlarmCtrlParam version="2.0">
<id>
<!--req, xs:string;id, hostId -->
</id>
<listenPicUploadEnabled>
<!--req, xs:boolean, “true, false”，监听图片上传使能-->
</listenPicUploadEnabled>
</AlarmCtrlParam>


DEVICE_ABILITY_AlarmLampConfig

设备网络SDK开发使用手册

<AlarmLampConfig version="2.0">
<enabled>
<!--req, xs: boolean, 是否启用警灯定时闪烁 -->
</enabled>
<flashDuration min="" max="">
<!--req, xs:integer, 警灯定时闪烁持续时间，单位秒 -->
</flashDuration>
<flashIntervalTime min="" max="">
<!--req, xs:integer, 警灯闪烁间隔时间，单位秒 -->
</flashIntervalTime>
</AlarmLampConfig>


DEVICE_ABILITY_AreaScan

设备网络SDK开发使用手册

<AreaScan version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<scanState opt="not Set, set " >
<!-- opt, xs:string，区域扫描当前设置状态，not Set为未设置，set为已设置（该参数为只读）-->
</scanState>
<isSupportDelAreaScan>
<!--opt,xs:boolen，是否支持删除区域扫描，与<isSupportInitialization>、<isSupportConfirm>相互依赖。-->
</isSupportDelAreaScan>
<isSupportInitialization>
<!--opt,xs:boolen，是否支持进入区域设置，与<isSupportDelAreaScan>、<isSupportConfirm>相互依赖。-->
</isSupportInitialization>
<isSupportConfirm>
<!--opt,xs:boolen，是否支持保存区域设置，与<isSupportInitialization>、<isSupportDelAreaScan>相互依赖。-->
</isSupportConfirm>
<isSupportStop>
<!--opt,xs:boolen，是否支持停止区域设置-->
</isSupportStop>
<isSupportSaveZoom>
<!--opt,xs:boolen，是否支持设置扫描倍率-->
</isSupportSaveZoom>
<isSupportGetZoom>
<!--opt,xs:boolen，是否支持调用扫描倍率-->
</isSupportGetZoom>
</AreaScan>


DEVICE_ABILITY_AttendedBaggageCap

设备网络SDK开发使用手册

<AttendedBaggage version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<AttendedBaggageRegionList size="4">
<AttendedBaggageRegion version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive-->
</sensitivityLevel>
<timeThreshold min="5" max="100"/>
<!-- req, xs:integer,seconds -->
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</AttendedBaggageRegion>
</AttendedBaggageRegionList>
<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,录像计划" -->
<isSupportMultiScene>
<!-- opt, xs:boolen -->
</isSupportMultiScene>
</AttendedBaggage>


DEVICE_ABILITY_AudioEffectiveCfg

设备网络SDK开发使用手册

<AudioEffectiveCfg version="2.0">
<threshold min="0" max="100">
<!--req, xs: integer, 阈值 -->
</threshold>
<checkDelay min="0">
<!--req, xs: integer, 检测间隔，0表示不自动优化，单位：秒-->
</checkDelay>
<volume min="0" max="100">
<!--req, xs: integer, 音量 -->
</volume>
<priority min="0" max="100">
<!--req, xs: integer，等级-->
</priority>
</AudioEffectiveCfg>


DEVICE_ABILITY_BackPicInfo

设备网络SDK开发使用手册

<BackPicInfo version="2.0">
<enable>
<!--req, xs: boolean, 是否启用背景图片叠加，0-启用，1-启用-->
</enable>
<picID min="0" max="128">
<!--req, xs: integer, 图片ID长度-->
</picID>
</BackPicInfo>


DEVICE_ABILITY_BareDataOverlay

设备网络SDK开发使用手册

<BareDataOverlay version="2.0">
<enabled>
<!--req, xs:boolean, 使能 -->
</enabled>
<intervalTime min="1" max="5" def="3">
<!--req, xs:integer;unit:s, 时间间隔-->
</intervalTime >
</BareDataOverlay>


DEVICE_ABILITY_BatteryPowerOverlay

设备网络SDK开发使用手册

<BatteryPowerOverlay>
<!--req, 电池电量OSD叠加显示能力-->
<enabled>
<!--req, xs:boolean, OSD显示使能,-->
</enabled>
<positionX>
<!--req, xs:integer;coordinate, OSD显示左上角X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, OSD显示左上角Y坐标-->
</positionY>
</BatteryPowerOverlay>


DEVICE_ABILITY_Calibration

设备网络SDK开发使用手册

<Calibration version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<CalibrationRegionList size="1">
<CalibrationRegion>
<id>
<!-- ro, req, xs:string -->
</id>
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- ro, req, -->
<positionX>
<!-- ro, req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- ro, req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</CalibrationRegion>
</CalibrationRegionList>
</Calibration>


DEVICE_ABILITY_CallConfiguration

设备网络SDK开发使用手册

<CallConfiguration version="2.0">
<answerType opt="autoAnswer,autoReject,manualAnswer">
<!--req,xs:string,"autoAnswer,autoReject,manualAnswer", 会议呼叫响应方式: autoAnswer-自动接听, autoReject-自动拒接, manualAnswer-手动接听-->
</answerType>
<protocolType opt="SIP,H323">
<!--opt,xs:string,"SIP,H323", 使用的协议类型: 1-SIP, 2-H323（录播主机V2.1.0仅支持H323）-->
</protocolType>
<TransmissionProtocol opt="TCP,UDP">
<!--opt,xs:string -->
</TransmissionProtocol>
</CallConfiguration>


DEVICE_ABILITY_CallQueryProfile

设备网络SDK开发使用手册

<CallQueryProfile version="2.0">
<maxSearchTimespans>
<!--req,integer, 每次搜索支持的最大时间段数-->
</maxSearchTimespans>
<maxSearchMatchResults>
<!--req,integer, 一次搜索支持返回的最大结果个数-->
</maxSearchMatchResults>
<maxSearchTimeout>
<!--opt,integer, 查找超时时间, 单位: 秒-->
</maxSearchTimeout>
<maxConcurrentSearches>
<!--opt,integer, 支持的最大并发搜索数量-->
</maxConcurrentSearches>
<callType opt="answered,missed,dialled,all">
<!--req,xs:string,"answered,missed,dialled,all", 查找呼叫类型: 1-answered, 2-未接, 3-已拨, all-全部-->
</callType>
</CallQueryProfile>


DEVICE_ABILITY_CallWaittingCfg

设备网络SDK开发使用手册

<CallWaittingCfg version="2.0">
<enabled>
<!--req, xs: boolean, 是否启用呼叫等待 -->
</enabled>
<waitTime min="" max="">
<!--req, xs:integer, 呼叫等待时间，单位秒 -->
</waitTime>
</CallWaittingCfg>


DEVICE_ABILITY_CentralizedControl

设备网络SDK开发使用手册

<CentralizedControl version="2.0">
<enabled>
<!-- req, xs:boolean “true-开始，false-结束”-->
</enabled>
<controlType opt="forcedControl,optionalControl">
<!--dep, xs:string;集成控制模式"(强制布防 ),(非强制布防)"-->
</controlType>
<expires min="" max="">
<!--dep,xs:integer "60S-6*60*60S" 单位是S-->
</expires>
<longitudeType opt="E,W">
<!--req,xs:string "经度"-->
</longitudeType>
<latitudeType opt="S,N">
<!--req,xs:string "纬度"-->
</latitudeType>
<Longitude>
<!--req,"经度"-->
<degree>
<!--req,xs:interge-->
</degree>
<minute>
<!--req,xs:interge-->
</minute>
<sec>
<!--req,xs:float,"精确到小数点后6位"-->
</sec>
</Longitude>
<Latitude>
<!--req,"纬度"-->
<degree>
<!--req,xs:interge-->
</degree>
<minute>
<!--req,xs:interge-->
</minute>
<sec>
<!--req,xs:float,"精确到小数点后6位"-->
</sec>
</Latitude>
</CentralizedControl>


DEVICE_ABILITY_ChargeAmount

设备网络SDK开发使用手册

<ChargeAmount version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,收费信息-->
<amount min="" max="">
<!--req,xs:integer, fen;收费金额-->
</amount>
</ChargeAmount>


DEVICE_ABILITY_ChargeRuleInfoList

设备网络SDK开发使用手册

<ChargeRuleInfoList version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<ChargeRuleInfo>
<!--收费规则信息-->
<ruleID min="" max="">
<!--req, integer; 规则ID-->
</ruleID>
<ruleName min="" max="">
<!--req, string; 规则名称-->
</ruleName>
<NoCharge>
<!--opt, 不收费-->
<ruleType opt="noCharge（不收费）">
<!--req, xs:string, -->
</ruleType>
</NoCharge>
<ChargeByTimeRule>
<!--opt, 按时收费信息-->
<ruleType opt="chargeByTime（按时收费）">
<!--req, xs:string, -->
</ruleType>
<firstChargeDuration min="" max="">
<!--req, xs:integer, Minute：首段收费时长-->
</firstChargeDuration>
<firstDurationChargeAmount min="" max="">
<!--req, xs:integer, fen :首段收费金额-->
</firstDurationChargeAmount>
<intervalChargeDuration min="" max="">
<!--req, xs:integer, Minute：间隔收费时长-->
</intervalChargeDuration>
<intervalChargeAmount min="" max="">
<!--req, xs:integer, fen:间隔收费金额-->
</intervalChargeAmount>
<freePackingDuration min="" max="">
<!--req, xs:integer, Minute:免费停车时长-->
</freePackingDuration>
<enableMaxAmount>
<!--req, xs:boolean,是否启用封顶金额-->
</enableMaxAmount>
<dailyMaxAmount min="" max="">
<!--req, xs:integer, fen:每天最高限额-->
</dailyMaxAmount>
</ChargeByTimeRule>
<ChargeByOnceRule>
<!--opt, 按次收费规则信息-->
<ruleType opt="chargeByOnce">
<!--req, xs:string,按次收费类型-->
</ruleType>
<chargeAmount min="" max="">
<!--req, xs:integer,fen;收费金额-->
</chargeAmount>
</ChargeByOnceRule>
<ChargeByTimeSegRule>
<!--opt, 分时段收费规则信息-->
<ruleType opt="chargeByTimeSeg">
<!--req, xs:string,分时段收费规则类型-->
</ruleType>
<freePackingDuration min="" max="">
<!--req, xs:integer,免费停车时长-->
</freePackingDuration>
<timeSegNumber min="" max="">
<!--req, xs:integer,具体时段个数-->
</timeSegNumber>
<timeSegAmountList size="">
<!--req, 时段列表信息-->
<timeSegAmount>
<id>
<!--req, xs:integer;-->
</id>
<startTime min="" max="">
<!--req, xs:integer; 单位：分钟, 开始时间-->
</startTime>
<endTime min="" max="">
<!--req, xs:integer; 单位：分钟, 开始时间-->
</endTime>
<amount min="" max="">
<!--req, xs:integer, fen;金额-->
</amount>
</timeSegAmount>
</timeSegAmountList>
<enableMaxAmount>
<!--req, xs:boolean, 是否启用封顶金额-->
</enableMaxAmount>
<maxAccountPerDay min="" max="">
<!--req, xs:integer, fen;每天最高限额 -->
</maxAccountPerDay>
</ChargeByTimeSegRule>
<ChargeByDataSegRule >
<!--opt, 分时收费规则信息-->
<id>
<!--req, xs:integer;-->
</id>
<ruleType opt="chargeByDateSeg">
<!--req, xs:string,分时收费类型-->
</ruleType>
<freePackingDuration min="" max="">
<!--req, xs:integer, Minute;免费停车时长-->
</freePackingDuration>
<timeSegNumber min="" max="">
<!--req, xs:integer,具体时段个数-->
</timeSegNumber>
<parkingAccountList size="">
<parkingAmount>
<id>
<!--req,xs:integer;-->
</id>
<startTime opt="HH:MM">
<!--req, xs:string; "HH:MM";开始时间-->
</startTime>
<endTime opt="HH:MM">
<!--req, xs:string; "HH:MM";结束时间-->
</endTime>
<account min="" max="">
<!--req, xs:integer, fen;金额-->
</account>
</parkingAmount>
</parkingAccountList>
<enableMaxAmount>
<!--req, xs:boolean, 是否启用封顶金额-->
</enableMaxAmount>
<maxAccountPerDay min="" max="">
<!--req, xs:integer, fen;每天最高限额-->
</maxAccountPerDay>
</ChargeByDataSegRule>
<ChargeByTimeSegUnitRule>
<!--opt, 单位分时 收费规则信息-->
<id>
<!--req, xs:integer;-->
</id>
<ruleType opt="chargeByTimeSegUnit">
<!--req, xs:string,单位分时段收费规则类型-->
</ruleType>
<freePackingDuration min="" max="">
<!--req, xs:integer, Minute;免费停车时长-->
</freePackingDuration>
<timeSegNumber min="" max="">
<!--req, xs:integer,具体时段个数-->
</timeSegNumber>
<parkingAmountList size="">
<parkingAmount>
<id>
<!--req, xs:integer;-->
</id>
<startTime opt="HH:MM">
<!--req, xs:string; "HH:MM";开始时间-->
</startTime>
<endTime opt="HH:MM">
<!--req, xs:string; "HH:MM";结束时间-->
</endTime>
<account min="" max="">
<!--req, xs:integer, fen;金额-->
</account>
<chargeCostUnit opt="minute">
<!--req, xs:string,收费单元-->
</chargeCostUnit>
<minAmount min="" max="">
<!--req, xs:integer, fen;封顶金额 -->
</minAmount>
<minTimePeriod min="" max="">
<!--req, xs:integer, Minute;最小跨段 时间-->
</minTimePeriod>
</parkingAmount>
</parkingAmountList>
<enableMaxAmount>
<!--req, xs:boolean,是否启用封顶-->
</enableMaxAmount>
<dailyMaxAmount min="" max="">
<!--req, xs:integer, fen;每天最高限额-->
</dailyMaxAmount>
<enableFreeParkingDuration>
<!--req, xs:boolean,是否包含免费时长-->
</enableFreeParkingDuration>
</ChargeByTimeSegUnitRule>
<ChargeByDayNightTimeSegRule>
<!--opt, 日夜分时按次收费信息-->
<id>
<!--req, xs:integer;-->
</id>
<ruleType opt="chargeByDayNightTimeSeg">
<!--req, xs:string, 日夜分时按次收费类型-->
</ruleType>
<initialfreeParkingDuration min="" max="">
<!--req, xs:integer, Minute:初始免费停车时长-->
</initialfreeParkingDuration>
<enableFreeTimeExceedingCharge>
<!--req, xs:boolean,超出免费时长是否收费-->
</enableFreeTimeExceedingCharge>
<dayStartTime opt="HH:MM">
<!--req, xs:string, "HH:MM";白天开始时间-->
</dayStartTime>
<firstUnitDuration min="" max="">
<!--req, xs:integer, Minute:首段单位时间-->
</firstUnitDuration>
<firstDurationAmount min="" max="">
<!--req, xs:integer, fen:首段收费-->
</firstDurationAmount>
<unitTime min="" max="">
<!--req, xs:integer, Minute:单位时间-->
</unitTime>
<unitTimeAccount min="" max="">
<!--req, xs:integer, fen:单位时间收费 -->
</unitTimeAccount>
<payByOnceStartTime opt="HH:MM">
<!--req, xs:string, "HH:MM";按次收费时间段开始时间-->
</payByOnceStartTime>
<payByOnce min="" max="">
<!--req, xs:integer, fen;按次收费 -->
</payByOnce>
<dailyMaxAmount min="" max="">
<!--req, xs:integer, fen;24小时内封顶金额 -->
</dailyMaxAmount>
<enableChargeByTime>
<!--req, xs:boolean, 24小时内存在时间收费时段，是否全按时间收费-->
</enableChargeByTime>
<enableChargeByOnce>
<!--req, xs:boolean, 按次收费的情况下一次出入算一次-->
</enableChargeByOnce>
<maxfreeChargeNumber min="" max="">
<!--req, xs:integer, 最大免费次数-->
</maxfreeChargeNumber>
</ChargeByDayNightTimeSegRule>
</ChargeRuleInfo>
</ChargeRuleInfoList>


DEVICE_ABILITY_Cloud

设备网络SDK开发使用手册

<Cloud version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enable>
<!-- req, xs:boolean, 使能 -->
</enable>
<type opt="OneDrive, GoogleDrive ,DropBox">
<!-- req, xs:string, 云类型-->
</type>
<status opt="Online, Offline">
<!-- req, xs: string,ro, 状态: Online- 在线, Offline- 不在线-->
</status>
<authCode min="0" max="64">
<!-- req, xs: string, 授权码 -->
</authCode>
<alias min="0" max="32">
<!--ro, xs: string, 别名-->
</alias>
<tolalCapacity>
<!--ro, xs:integer(64bit), 总容量，单位：MB -->
</tolalCapacity>
<usedSpace>
<!--ro,xs:integer(64bit), 可用空间，单位：MB -->
</usedSpace>
</Cloud>


DEVICE_ABILITY_CloudURL

设备网络SDK开发使用手册

<CloudURL version="2.0">
<url min="0" max="256">
<!--req, xs:string, 云存储URL-->
</url>
</CloudURL>


DEVICE_ABILITY_CompassCap

设备网络SDK开发使用手册

<CompassCap version="2.0">
<VandalProofAlarm>
<!--req,防破坏报警关联配置-->
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive-->
</sensitivityLevel>
<isSupportUpload>
<!-- req, xs:boolen "启用防破坏报警上传"-->
</isSupportUpload>
<isSupportVoiceWarning>
<!-- req, xs:boolen "启用防破坏报警语音提示"-->
</isSupportVoiceWarning>
</VandalProofAlarm>
<isSupportCalibrate>
<!-- opt, xs:boolen -->
</isSupportCalibrate>
<isSupportPointToNorth>
<!-- opt, xs:boolen -->
</isSupportPointToNorth>
</CompassCap>


DEVICE_ABILITY_ConferenceRegion

设备网络SDK开发使用手册

<ConferenceRegion version="2.0">
<enabled>
<!--req,boolean,"true,false", 终端会议区域使能-->
</enabled>
<RegionCoordinatesList size="4">
<!--req -->
<RegionCoordinates>
<!--req, 会议区域，矩形，起始点为左下角，顺时针方向-->
<positionX>
<!--req, xs:integer;coordinate-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
<SingleOutputSize>
<!--req,ro, 只读-->
<width>
<!--req,xs:integer, 单输出口基准宽-->
</width>
<height>
<!--req,xs:integer, 单输出口基准高-->
</height>
</SingleOutputSize>
</ConferenceRegion>


DEVICE_ABILITY_Control

设备网络SDK开发使用手册

<Control version="2.0">
<enabled opt="true,false">
<!--req, xs:boolean, 鹰视聚焦功能使能-->
</enabled>
</Control>


DEVICE_ABILITY_ControlParam

设备网络SDK开发使用手册

<ControlParam version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<operateType opt="answer,reject,call,adjustAudio,hangUp,dualStreamEnabled,dualStreamDisabled">
<!--req,xs:string, "answer,reject,call,adjustVolume"-->
</operateType>
<CallParam>
<!--dep,depends on operateType-->
<addressType opt="URL">
<!--req,xs:string,"URL"-->
</addressType>
<URL>
<!--req,xs:string-->
</URL>
<callRate min="32" max="6144">
<!-- opt, xs:integer, unit:Kbps-->
</callRate>
</CallParam>
<AudioParam>
<!--dep,depends on operateType-->
<mute>
<!--opt,xs:boolean,"true,false"-->
</mute>
<volume>
<!-- dep, xs:integer,depends on mute,1-100-->
</volume>
<audioInputDisabled>
<!--opt,xs:boolean,"true,false"-->
</audioInputDisabled>
</AudioParam>
</ControlParam>


DEVICE_ABILITY_CountingCap

设备网络SDK开发使用手册

<CountingCap version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<CountingRegionType>line</CountingRegionType>
<dataUploadCycle opt="1,5,10,15,20,30,60">
<!--opt, xs:integer, 客流量检测数据上传周期（1、5、10、15、20、30、60）单位：分钟-->
</dataUploadCycle>
<isSupportRecommendValue>
<!-- opt, xs:boolen,"true",支持返回true，不支持则不返回这个节点 -->
</isSupportRecommendValue>
<isSupportFlashRemoveCouting>
<!-- opt, xs:boolen,"true",清除Flash中的客流数据统计,支持返回true,不支持则不返回这个节点 -->
</isSupportFlashRemoveCouting>
</CountingCap>


DEVICE_ABILITY_CurrentLock

设备网络SDK开发使用手册

<CurrentLock>
<!--req, 电流锁定配置能力集-->
<lockType opt="notLock,all,3/4,1/2">
<!--req,xs:string, 云台垂直电机锁定电流类型, notLock: 不锁定, all: 全流锁定, 3/4: 3/4流锁定, 1/2: 半流锁定-->
</lockType>
</CurrentLock>


DEVICE_ABILITY_DDNSCountry

设备网络SDK开发使用手册

<DDNSCountry version="2.0">
<ContinentList>
<Continent>
<id>
<!--req, xs:integer, 区域编号-->
</id>
<name>
<!-- req, xs:string, 区域名称-->
</name>
<CountryList>
<Country>
<id>
<!--req, xs:integer, 国家和地区编号-->
</id>
<name>
<!-- req, xs:string, 国家和地区名称 -->
</name>
</Country>
</CountryList>
</Continent>
</ContinentList>
</DDNSCountry>


DEVICE_ABILITY_DeviceCap

设备网络SDK开发使用手册

<DeviceCap>
<SysCap>
<!--opt, 系统能力集-->
<isSupportDst>
<!--opt, xs:boolean -->
</isSupportDst>
<NetworkCap/>
<!--opt, 网络能力集-->
<IOCap/>
<!--opt, IO能力集-->
<SerialCap/>
<!--opt, 串口能力集-->
<VideoCap/>
<!--opt, 视频能力集-->
<AudioCap/>
<!--opt, 音频能力集-->
<isSupportExternalDevice>
<!--opt,xs:boolean, 是否支持外接设备-->
</isSupportExternalDevice>
<isSupportSubscribeEvent>
<!--opt, xs:boolean, 报警订阅能力-->
</isSupportSubscribeEvent>
<isSupportSoundCfg>
<!--opt, xs:boolean, 是否支持音频参数配置-->
</isSupportSoundCfg>
</SysCap>
<voicetalkNums >
<!--opt, xs:integer, 语音对讲通道数-->
</voicetalkNums >
<isSupportSnapshot>
<!--opt, xs:boolean, 是否支持抓拍-->
</isSupportSnapshot>
<SecurityCap/>
<!--opt, 安全参数能力集-->
<EventCap/>
<!--opt, 事件能力集-->
<ImageCap/>
<!--opt, 图像能力集-->
<RacmCap/>
<!--opt, Racm能力集-->
<SmartCap/>
<!--opt, Smart智能能力集-->
<WLAlarmCap/>
<!--opt, 无线报警能力集-->
<SecurityCPCapabilities/>
<!--opt-->
<isSupportGIS>
<!--opt, xs:boolean, 是否GIS能力-->
</isSupportGIS>
<isSupportCompass>
<!--opt, xs:boolean, 是否支持罗盘能力-->
</isSupportCompass>
<isSupportRoadInfoOverlays>
<!--opt, xs:boolean, 是否支持道路信息叠加-->
</isSupportRoadInfoOverlays>
<isSupportFaceCaptureStatistics>
<!--opt, xs:boolean, 是否支持人脸抓拍人员统计信息-->
</isSupportFaceCaptureStatistics>
<isSupportElectronicsEnlarge>
<!--opt, xs:boolean, 是否支持电子放大-->
<isSupportSecurityCP>
<!-- opt, xs:boolean -->
</isSupportSecurityCP>
<isSupportClientProxyWEB>
<!--opt, xs:boolean-->
</isSupportClientProxyWEB>
</isSupportElectronicsEnlarge>
<isSupportSafetyCabin>
<!--opt, xs:boolean, 防护舱能力-->
</isSupportSafetyCabin>
<isSupportJusticeDev>
<!--opt, xs:boolean, 司法设备能力-->
</isSupportJusticeDev>
<isSupportGetmutexFuncErrMsg>
<!--opt, xs:boolean, 是否支持获取功能互斥信息-->
</isSupportGetmutexFuncErrMsg>
<isSupportEagleEye>
<!--opt, xs:boolean, 是否支持鹰眼（球形鹰眼和碗形鹰眼等）-->
</isSupportEagleEye>
<isSupportFirmwareVersionInfo>
<!--opt, xs:boolean, 是否支持显示主控版本信息-->
</isSupportFirmwareVersionInfo>
<isSupportPEA>
<!--opt, xs:boolean, 一键式报警主机能力-->
</isSupportPEA>
<isSupportIntelligentStructureAnalysis>
<!--opt, xs:boolean, 是否支持智能结构化分析-->
</isSupportIntelligentStructureAnalysis>
<isSupportIntelligentAnalysisEngines>
<!--opt, xs:boolean, 是否支持智能分析引擎配置-->
</isSupportIntelligentAnalysisEngines>
<isSupportPictureCaptureComparision>
<!-- opt, xs:boolen, 是否支持图片与监控点图片1V1比对-->
</isSupportPictureCaptureComparision>
<isSupportPicInfoOverlap>
<!--opt, xs:boolean, 是否支持图片字符叠加-->
</isSupportPicInfoOverlap>
<isSupportDiscoveryMode>
<!--opt,xs:boolen, 是否支持被SADP发现-->
</isSupportDiscoveryMode>
<isSupportTokenAuthenticate>
<!--opt, xs:boolean, 是否支持token认证-->
</isSupportTokenAuthenticate>
<isSupportChannelEventCap>
<!--opt, xs:boolean, 是否支持按通道获取事件能力-->
</isSupportChannelEventCap>
<isSupportSignInstrument>
<!--opt, xs:boolean 体征仪能力-->
</isSupportSignInstrument>
<isSupportCluster>
<!--opt, xs:boolean，是否支持集群-->
</isSupportCluster>
<UHFRFIDReader>
<!--opt, RFID读写器支持能力-->
<isSupportBasicInformation>
<!--opt, xs:boolean, 读写器基本参数支持能力-->
</isSupportBasicInformation>
<isSupportHardDiskStorageTest>
<!--opt, xs:boolean, 读写器盘存测试支持能力备注-->
</isSupportHardDiskStorageTest>
</UHFRFIDReader>
<isSupportChannelEventListCap>
<!--opt, xs:boolen, 表示是否支持获取设备所有通道的事件能力-->
</isSupportChannelEventListCap>
<VCAResourceChannelsCap>
<!--opt, 表示支持智能资源按通道独立切换-->
<ChannelsList>
<channelsID>
<!--req,xs:integer, 设备支持的通道号"-->
</channelsID>
</ChannelsList>
</VCAResourceChannelsCap>
<isSupportMixedTargetDetection>
<!--opt, xs:boolean, 是否支持混合目标检测事件-->
</isSupportMixedTargetDetection>
<AIDEventSupport opt="abandonedObject, pedestrian,congestion,roadBlock,construction,trafficAccident,fogDetection">
<!--opt, xs:string, 支持的AID事件类型：abandonedObject-抛洒物,pedestrian-行人检测,congestion-拥堵,
roadBlock-路障,construction-施工,trafficAccident-交通事故检测,fogDetection-浓雾检测-->
</AIDEventSupport>
<TFSEventSupport opt="illegalParking ,wrongDirection,crossLane,laneChange,vehicleExist,turnRound, parallelParking">
<!--opt, xs:string,支持的TFS违章取证事件类型: illegalParking-违停,wrongDirection-逆行,crossLane-压线,
laneChange-变道,vehicleExist-机占非,turnRound-掉头,parallelParking-侧方位停车-->
</TFSEventSupport>
<isVehicleStatisticsSupport>
<!--opt, xs:boolen,是否支持交通数据采集配置(TPS交通参数统计)-->
</isVehicleStatisticsSupport>
</DeviceCap>


DEVICE_ABILITY_Dial

设备网络SDK开发使用手册

<Dial version="1.0">
<enabled opt="true,false" def="false">
<!--req, xs:boolean, 使能-->
</enabled>
<DialMethod opt="auto,manual">
<!--req, xs:string, 拨号方式: auto-自动, manual-手动-->
</DialMethod>
<SwitchMethod opt="auto,4GFirst,3GFirst,manualto2G,manualto3G,manual4G">
<!--req, xs:string, 网络切换方式: auto-自动, 4GFirst-4G优先, 3GFirst-3G优先, manualto2G-手动切换2G,
manualto3G-手动切换3G, manual4G-手动切换4G, cableFirst-有线优先-->
</SwitchMethod>
<OfflineTime min="30" max="65535">
<!--req, xs:integer, 下线时间, 单位:秒(s)-->
</OfflineTime>
<UIMCardNum min="1" max="32">
<!--req, xs:string, 手机号码-->
</UIMCardNum>
<DialNum min="1" max="32">
<!--req, xs:string, 拨号号码-->
</DialNum>
<Username min="1" max="32">
<!--req, xs:string, 用户名-->
</Username>
<Password min="1" max="32">
<!--req, xs:string, 密码-->
</Password>
<APNname min="1" max="32">
<!--req, xs:string, APN-->
</APNname>
<MTU min="100" max="1500">
<!--req, xs: integer, MTU-->
</MTU>
<VerifyProto opt="auto,CHAP,PAP">
<!--req, xs:string, 验证协议:"auto, CHAP, PAP" -->
</VerifyProto>
<DefaultParam>
<!--opt, 默认参数-->
<DialNum min="1" max="32">
<!--opt, xs:string, 拨号号码-->
</DialNum>
<Username min="1" max="32">
<!--opt, xs:string, 用户名-->
</Username>
<Password min="1" max="32">
<!--opt, xs:string, 密码-->
</Password>
<APNname min="1" max="32">
<!--opt, xs:string, APN-->
</APNname>
<VerifyProto opt="auto,CHAP,PAP">
<!--req, xs:string, 验证协议:"auto, CHAP, PAP"-->
</VerifyProto>
</DefaultParam>
<netAPN min="" max="" />
<!--opt, xs:string, "私有专网APN配置"-->
</Dial>


DEVICE_ABILITY_DirectedStrategyCfg

设备网络SDK开发使用手册

<DirectedStrategyCfg version="2.0">
<type opt="normal,fine">
<!--req, xs:string, 导播策略类型：normal- 常态导播策略，fine- 精品导播策-->
</type>
</DirectedStrategyCfg>


DEVICE_ABILITY_EagleEyeCap

设备网络SDK开发使用手册

<EagleEyeCap>
<devType opt="2DP_Z,2DP">
<!--req, xs:string, "2DP_Z- 球型鹰眼(4+1,8+1), 2DP- 碗型鹰眼(7+1)"-->
</devType>
<displayType opt="4+1,8+1,7+1">
<!--req, xs:string, 显示模式-->
</displayType>
<isSupportResolutionSwitch>
<!--opt,xs:boolean, 是否支持分辨率切换-->
</isSupportResolutionSwitch>
</EagleEyeCap>


DEVICE_ABILITY_EagleFocusing

设备网络SDK开发使用手册

<EagleFocusing version="2.0">
<id>
<!--opt, xs: string, ID-->
</id>
<enabled>
<!--req, xs:boolean, 使能-->
</enabled>
<normalizedScreenSize >
<!--req, ro, 归一化坐标值-->
<normalizedScreenWidth>
<!--req, ro,xs:integer, -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, ro,xs:integer, -->
</normalizedScreenHeight>
</normalizedScreenSize>
<EagleFocusingRegionList>
<!--req, xs:boolean, 鹰视聚焦标定规则列表-->
<EagleFocusingRegion>
<id>
<!--req ,xs: string, 规则ID-->
</id>
<type>
<!--req, xs:string, "line", 规则类型: line-线-->
</type>
<Region>
<!--dep, 规则区域-->
<RegionCoordinatesList size="">
<!--opt, 区域坐标点列表-->
<RegionCoordinates>
<!--opt, 区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标 -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</Region>
</EagleFocusingRegion>
</EagleFocusingRegionList>
</EagleFocusing>


DEVICE_ABILITY_EmergencyAlarmProductCap

设备网络SDK开发使用手册

<EmergencyAlarmProductCap version="2.0">
<callWaittingCfg><!--req, xs: boolean, 是否支持呼叫等待配置，不支持不返回该节点 --></callWaittingCfg>
<alarmLampConfig><!--req, xs: boolean, 是否支持呼叫警灯配置，不支持不返回该节点 --></alarmLampConfig>
<voicePromptionCfg><!--req, xs: boolean, 是否支持语音提示配置，不支持不返回该节点 --></voicePromptionCfg>
<emergencyAlarmResponse><!--req, xs: boolean, 是否支持紧急报警处理，不支持不返回该节点 --></emergencyAlarmResponse>
<audioInOutCfg><!--opt, xs: boolean, 是否支持音频输入输出配置，不支持不返回该节点 --></audioInOutCfg>
<nearInfraredInductionCfg><!--opt, xs: boolean, 是否支持近距离红外感应配置，不支持不返回该节点 --></nearInfraredInductionCfg>
<getAudioFileListByType><!--opt, xs: boolean, 是否支持获取语音文件列表，不支持不返回该节点 --></getAudioFileListByType>
<deleteAudioFile><!--opt, xs: boolean, 是否支持删除语音文件，不支持不返回该节点 --></deleteAudioFile>
<audioChannelStatus><!--opt, xs: boolean, 是否支持获取语音通道状态，不支持不返回该节点 --></audioChannelStatus>
<alarmLampSchedTime><!--opt, xs: boolean, 是否支持警灯定时闪烁配置，不支持不返回该节点 --></alarmLampSchedTime>
<uploadInfoCfg><!--opt, xs: boolean, 是否支持信息上传参数配置，不支持不返回该节点 --></uploadInfoCfg>
<wifiInfoCfg><!--opt, xs: boolean, 是否支持wifi探测参数配置，不支持不返回该节点 --></wifiInfoCfg>
</EmergencyAlarmProductCap>


DEVICE_ABILITY_EmergencyAlarmResponseCtrl

设备网络SDK开发使用手册

<EmergencyAlarmResponseCtrl version="2.0">
<command opt="centerBusy,refuse">
<!--req, xs:string, 紧急报警控制命令, 0- 中心忙, 1- 拒绝-->
</command>
</EmergencyAlarmResponseCtrl>


DEVICE_ABILITY_EventTriggerCapType

设备网络SDK开发使用手册

<EventTriggerCapType version="2.0">
<isSupportCenter>
<!--opt, xs:boolean, 是否支持上传中心 -->
</isSupportCenter>
<isSupportRecord>
<!--opt, xs:boolean, 是否支持触发录像 -->
</isSupportRecord>
<isSupportMonitorAlarm>
<!--opt, xs:boolean, 是否支持监视器上警告 -->
</isSupportMonitorAlarm>
<isSupportBeep>
<!--opt, xs:boolean, 是否支持声音警告 -->
</isSupportBeep>
<isSupportIO>
<!--opt, xs:boolean, 是否支持触发报警输出 -->
</isSupportIO>
<isSupportFTP>
<!--opt, xs:boolean, 是否支持上传FTP -->
</isSupportFTP>
<isSupportEmail>
<!--opt, xs:boolean, 是否支持联动EMAIL -->
</isSupportEmail>
<isSupportLightAudioAlarm>
<!--opt, xs:boolean, 是否支持无线声光报警器联动 -->
</isSupportLightAudioAlarm>
<isSupportFocus>
<!--opt, xs:boolean, 是否支持联动聚焦 -->
</isSupportFocus>
<isSupportPTZ>
<!--opt, xs:boolean, 是否支持联动PTZ -->
</isSupportPTZ>
<maxPresetActionNum>
<!--dep,xs:integer, 最大支持联动的预置点个数-->
</maxPresetActionNum>
<maxPatrolActionNum>
<!--dep,xs:integer, 最大支持联动的巡航路径个数-->
</maxPatrolActionNum>
<maxPatternActionNum>
<!--dep,xs:integer, 最大支持联动的花样扫描路径个数-->
</maxPatternActionNum>
<isSupportTrack>
<!--opt, xs:boolean, 是否支持PTZ联动跟踪 -->
</isSupportTrack>
<direction>
<!--opt,xs:string, "both,forward,reverse", 触发方向(BlockListTriggerCap、AllowListTriggerCap、AllVehicleListTriggerCap、OtherVehicleListTriggerCap时有效)-->
</direction>
</EventTriggerCapType>


EventTriggersCap XML Block

EventTriggersCap事件触发能力集XML描述

<EventTriggersCap version="2.0">

<DiskfullTriggerCap><!--opt, 硬盘满, xs: EventTriggerCapType --></DiskfullTriggerCap>

<DiskerrorTriggerCap><!--opt, 硬盘错误, xs: EventTriggerCapType --></DiskerrorTriggerCap>

<NicbrokenTriggerCap><!--opt, 网络断开, xs: EventTriggerCapType --></NicbrokenTriggerCap>

<IpconflictTriggerCap><!--opt, IP冲突, xs: EventTriggerCapType --></IpconflictTriggerCap>

<IllaccesTriggerCap><!--opt, 非法访问, xs: EventTriggerCapType --></IllaccesTriggerCap>

<BadvideoTriggerCap><!--opt, 视频信号异常, xs: EventTriggerCapType--></BadvideoTriggerCap>

<VideomismatchTriggerCap><!--opt, 制式不匹配, xs: EventTriggerCapType --></VideomismatchTriggerCap>

<IOTriggerCap><!--opt, 信号量报警, xs: EventTriggerCapType --></IOTriggerCap>

<LineDetectTriggerCap><!--opt, 越界侦测, xs: EventTriggerCapType --></LineDetectTriggerCap>

<RegionEntranceTriggerCap><!--opt, 进入区域侦测, xs: EventTriggerCapType--></RegionEntranceTriggerCap>

<RegionExitingTriggerCap><!--opt, 离开区域侦测, xs: EventTriggerCapType--></RegionExitingTriggerCap>

<LoiteringTriggerCap><!--opt, 徘徊侦测, xs: EventTriggerCapType--></LoiteringTriggerCap>

<GroupDetectionTriggerCap><!--opt, 人员聚集侦测, xs: EventTriggerCapType--></GroupDetectionTriggerCap>

<RapidMoveTriggerCap><!--opt, 快速运动侦测, xs: EventTriggerCapType--></RapidMoveTriggerCap>

<ParkingTriggerCap><!--opt, 停车侦测, xs: EventTriggerCapType--></ParkingTriggerCap>

<UnattendedBaggageTriggerCap><!--opt, 物品遗留侦测, xs: EventTriggerCapType--></UnattendedBaggageTriggerCap>

<AttendedBaggageTriggerCap><!--opt, 物品拿取侦测, xs: EventTriggerCapType--></AttendedBaggageTriggerCap>

<FireDetectionCap><!--opt, 火点检测, xs: EventTriggerCapType--></FireDetectionCap>

<StorageDetectionTriggerCap><!--opt, 存储健康检测, xs: EventTriggerCapType--></StorageDetectionTriggerCap>

<ShipsDetectionTriggerCap><!--opt, 船只检测报警, xs: EventTriggerCapType--></ShipsDetectionTriggerCap>

<ThermometryCap><!--opt, 热成像测温报警, xs: EventTriggerCapType--></ThermometryCap>

<VandalProofTriggerCap><!--opt, 防破坏报警, xs: EventTriggerCapType--></VandalProofTriggerCap>

<BlockListTriggerCap><!--opt, 非授权人员, xs: EventTriggerCapType--></BlockListTriggerCap>

<AllowListTriggerCap><!--opt, 授权人员, xs: EventTriggerCapType--></AllowListTriggerCap>

<AllVehicleListTriggerCap><!--opt, 全部车辆检测名单, xs: EventTriggerCapType--></AllVehicleListTriggerCap>

<OtherVehicleListTriggerCap><!--opt, 其他车辆检测名单, xs: EventTriggerCapType--></OtherVehicleListTriggerCap>

<PeopleDetectionTriggerCap><!--opt, 人员侦测, xs: EventTriggerCapType--></PeopleDetectionTriggerCap>

<TamperDetectionTriggerCap><!--opt, 防拆报警, xs: EventTriggerCapType--></TamperDetectionTriggerCap>

<DefocusDetectionTriggerCap><!--opt, 虚焦侦测, xs: EventTriggerCapType--></DefocusDetectionTriggerCap>

<FaceDetectionTriggerCap><!--opt, 人脸侦测, xs: EventTriggerCapType--></FaceDetectionTriggerCap>

<SceneChangeDetectionTriggerCap><!--opt, 场景变更侦测, xs: EventTriggerCapType--></SceneChangeDetectionTriggerCap>

<VideoLossTriggerCap><!--opt, 视频信号丢失侦测, xs: EventTriggerCapType--></VideoLossTriggerCap>

<HideTriggerCap><!--opt, 遮挡报警, xs: EventTriggerCapType--></HideTriggerCap>

<AlarmInTriggerCap><!--opt, 报警输入, xs: EventTriggerCapType--></AlarmInTriggerCap>

<VehicleDetectionTriggerCap ><!--opt, 车辆侦测, xs: EventTriggerCapType--></VehicleDetectionTriggerCap>

<VCATriggerCap><!--opt, 解码器智能解码侦测, xs: EventTriggerCapType--></VCATriggerCap>

<AudioExceptionCap><!--opt, 音频异常侦测, xs: EventTriggerCapType--></AudioExceptionCap>

<PIRCap><!--opt, PIR报警侦测, xs: EventTriggerCapType--></PIRCap>

<FiledDetectTriggerCap><!--opt, 区域侦测, xs: EventTriggerCapType--></FiledDetectTriggerCap>

<MotionDetectionTriggerCap><!--opt, 移动侦测, xs: EventTriggerCapType--></MotionDetectionTriggerCap>

<CountingTriggerCap><!--opt, 过线计数侦测, xs: EventTriggerCapType--></CountingTriggerCap>

<AlarmInCap><!--opt, 报警输入, xs: EventTriggerCapType--></AlarmInCap>

<EmergencyCallhelpCap><!--opt, 紧急报警求助, xs: EventTriggerCapType--></EmergencyCallhelpCap>

<ConsultCap><!--opt, 业务咨询, xs: EventTriggerCapType--></ConsultCap>

<blockListFaceContrastTriggerCap><!--opt, 非授权人员人脸比对, xs: EventTriggerCapType--></blockListFaceContrastTriggerCap>

<allowListFaceContrastTriggerCap><!--opt, 授权人员(陌生人模式)人脸比对, xs: EventTriggerCapType--></allowListFaceContrastTriggerCap>

<HumanAttributeTriggerCap><!--opt, 人体属性, xs: EventTriggerCapType--></HumanAttributeTriggerCap>

<FaceContrastTriggerCap><!--opt, 人脸比对, xs: EventTriggerCapType--></FaceContrastTriggerCap>

<PersonDensityDetectionTriggerCap><!--opt, 人员密度检测, xs: EventTriggerCapType--></PersonDensityDetectionTriggerCap>

<HumanRecognitionTriggerCap><!--opt, 人体目标识别, xs: EventTriggerCapType--></HumanRecognitionTriggerCap>

<FaceLibTriggerCap><!--opt, 人脸库联动方式配置, xs: EventTriggerCapType--></FaceLibTriggerCap>

<SignAbnormalTriggerCap><!--opt, 体征异常, xs: EventTriggerCapType--></SignAbnormalTriggerCap>

<StudentsStoodUpTriggerCap><!--opt, 学生起立检测, xs: EventTriggerCapType--></StudentsStoodUpTriggerCap>

<FramesPeopleCountingTriggerCap><!--opt, 人数统计, xs: EventTriggerCapType--></FramesPeopleCountingTriggerCap>

<HFPDTriggerCap><!--opt, 高频人员侦测, xs: EventTriggerCapType--></HFPDTriggerCap>

<personqueuedetectiontriggercap><!--opt, 人员排队检测, xs: EventTriggerCapType--></personqueuedetectiontriggercap>

<SafetyHelmetDetectionTriggerCap><!--opt, 安全帽检测, xs: EventTriggerCapType--></SafetyHelmetDetectionTriggerCap>

</EventTriggersCap>

See Also

NET_DVR_STD_ABILITY


DEVICE_ABILITY_ExternalDevice

设备网络SDK开发使用手册

<ExternalDevice version="2.0">
<SupplementLight>
<!--补光灯功能能力集-->
<enabled>
<!--opt,xs:boolen, 使能-->
</enabled>
<mode def="schedule" opt="schedule,auto">
<!--opt,xs:string,"", 补光灯模式：schedule- 定时，auto- 自动-->
</mode>
<Schedule>
<!--dep, 依赖于mode节点中的schedule子节点-->
<TimeRange>
<!-- req, 时间段 -->
<beginTime>
<!-- req, xs:time, ISO8601 time, 开始时间 -->
</beginTime>
<endTime>
<!-- req, xs:time, ISO8601 time, 结束时间 -->
</endTime>
</TimeRange>
</Schedule>
<lowBeamBrightness min="" max="">
<!--opt,xs:integer,"0~10", 近光灯亮度取值范围 -->
</lowBeamBrightness>
<highBeamBrightness min="" max="">
<!--opt,xs:integer,"0~10", 远光灯亮度取值范围 -->
</highBeamBrightness>
</SupplementLight>
<filteringTime min="" max="">
<!--opt,xs:integer,"0~120",unit:s, 过滤时间-->
</filteringTime>
</ExternalDevice>


DEVICE_ABILITY_FileInfoCap

设备网络SDK开发使用手册

<FileInfoCap version="2.0">
<isSupportFileLen>
<!-- opt, xs:boolean，文件大小-->
</isSupportFileLen>
</FileInfoCap>


DEVICE_ABILITY_FilmModeCfg

设备网络SDK开发使用手册

<FilmModeCfg version="2.0">
<type opt="single,double,pip">
<!--req, xs:string, 画面类型：single-单画面，double-两画面，pip-画中画-->
</type>
</FilmModeCfg>


DEVICE_ABILITY_FireDetection

设备网络SDK开发使用手册

<FireDetection version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<enabled>
<!--req ,xs:boolean, 使能-->
</enabled>
<sensitivity min="1" max="100">
<!--req,xs:integer, 1..100, 检测灵敏度-->
</sensitivity>
<fireComfirmTime min="0" max="120">
<!--req ,xs:integer 0..120, 发现火点等待时间 -->
</fireComfirmTime>
<fireRegionOverlay>
<!--req ,xs:boolean, 码流叠加火点框-->
</fireRegionOverlay>
<fireFrameDis>
<!--opt ,xs:boolean, ro, 火点框显示-->
</fireFrameDis>
<fireMaxTemp>
<!--opt ,xs:boolean, ro, 最高温度-->
</fireMaxTemp>
<fireMaxTempPosition>
<!--opt ,xs:boolean, ro, 最高温度位置显示-->
</fireMaxTempPosition>
<fireDistance>
<!--opt ,xs:boolean, ro, 最高温度距离-->
</fireDistance>
<detectionMode opt = "multipleFarme, singleFarme">
<!--opt, xs:string, 火点检测模式：multipleFarme为二次判别，singleFarme为单帧检测 -->
</detectionMode>
<fireFocusMode opt = "auto, cruise">
<!--opt, xs:string, 火点聚焦模式：auto为自动模式, cruise为巡航模式 -->
</fireFocusMode>
<FireZoom>
<!--火点变倍（光学变倍），当发生火点时变倍生效。-->
<zoomMode opt = "auto, manual">
<!--req, xs:string, 火点光学变倍模式：auto为自动模式, manual为手动模式。-->
</zoomMode>
<zoomLevel min="1" max="100">
<!--dep, xs:integer, 火点光学变倍倍率, 当光学变倍模式为手动模式时生效。-->
</zoomLevel>
</FireZoom>

<AlarmStrategy>
<!--报警策略-->
<strategyType opt = "any, cooperate, multisystem, appointFire, appointSmoke">
<!--req, xs:string， 报警策略类型：
any- 任意报警，只要任何一个识别系统发现疑似火情时候，均实现报警上传，只要任何一种发生报警，报警信息则按照该种报警信息上传。
cooperate- 协同报警，某一系统识别火情后暂不报警，疑似目标由剩下的系统确认，两个均认为是目标则标识两个报警，如不是则单一报警
上传的报警信息中需要说明为协同报警下，如有两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF
（归一化处理）数值，（包含热成像和可见光的ZF），经纬度，画面中的坐标），一个确认则上传一个的信息。
multisystem- 多系统报警，多个系统均识别后才报警，否则不报警进行双确认的时候需要可见光与热成像视场角一致上传的报警信息中
需要说明为多系统报警下，两个均确认发生则要上传（每个报警发生的时间；每个图片；设备的PTZF（归一化处理）数值，
（包含热成像和可见光的ZF），经纬度，画面中的坐标）。
appointFire- 指定火点报警，指定的识别系统发现疑似火情才报警上传，非指定的发现不报警上传，只有指定的火点报警发生才上传，
不指定的报警不上传不显示任何报警信息。
appointSmoke- 指定烟雾报警，指定的识别系统发现疑似火情才报警上传，非指定的发现不报警上传，只有指定的烟雾报警发生才上传，
不指定的报警不上传不显示任何报警信息。-->
</strategyType>
</AlarmStrategy>

<SmokeDetection>
<enabled>
<!--req, xs:boolean, 控制烟雾检测是否开启。-->
</enabled>
<sensitivity min="1" max="100">
<!--opt, xs:integer, 1..100, 控制对于烟雾检测的灵敏度。-->
</sensitivity>
</SmokeDetection>

<smokeFireEnabled>
<!--req, xs:boolean, 烟火总使能, 该使能与火点以及烟雾的单独使能能力互斥, 若返回总使能能力, 则无需返回火点以及烟雾的单独使能能力-->
</smokeFireEnabled>

<ApplicationScene>
<mode opt = "forest-Fire_Prevention, strawBurning, high-building, Indoor/Perimeter">
<!-- opt, xs:string -->
</mode>
<InstallationHeight min = "1" max = "500">
<!--dep mode="strawBurning, high-building, Indoor/Perimeter" ,xs:integer 1-500m -->
</InstallationHeight>
</ApplicationScene>
<cancelRepeatedAlarmEnabled opt = "true, false">
<!--opt, xs:boolean -->
</cancelRepeatedAlarmEnabled>
<fireSourceDetection opt="dynamicFire, smokingMode">
<!--opt, xs:string, "火点搜索模式：动态火点、吸烟模式"-->
</fireSourceDetection>
<displayFireInfoOnStreamEnabled opt="true,false"><!--opt, xs:boolean, "码流叠加火点信息"--></displayFireInfoOnStreamEnabled>
<smokeAuxiliaryDetectionEnabled opt="true,false"><!--dep, xs:boolean, "烟雾辅助判断启用使能,检测模式是二次判别时生效"--></smokeAuxiliaryDetectionEnabled>
</FireDetection>


DEVICE_ABILITY_FireShieldMask

设备网络SDK开发使用手册

<FireShieldMask version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 火点屏蔽区域能力集-->
<enabled>
<!--req, xs:boolean, 屏蔽区域功能使能-->
</enabled>

<normalizedScreenSize>
<!--opt, 归一化坐标-->
<normalizedScreenWidth>
<!--req, xs:integer, 归一化坐标宽度-->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, xs:integer, 归一化坐标高度-->
</normalizedScreenHeight>
</normalizedScreenSize>

<FireShieldMaskRegionList size = "24">
<!--opt, 火点屏蔽区域列表-->
<FireShieldMaskRegion>
<!--opt, 单个火点屏蔽区域-->
<id min="1" max="24">
<!--req, xs:integer, 火点屏蔽区域ID编号-->
</id>
<showEnabled>
<!--req,xs:boolean, 区域显示使能(该节点为只读, 若该使能为false则上层不显示该区域相关信息, 为True则显示该区域相关信息-->
</showEnabled>
<enabled>
<!--req,xs:boolean, 单个火点屏蔽区域使能-->
</enabled>
<maskName min="0" max="32">
<!--opt, xs:string, 屏蔽区域名称长度-->
</maskName>
<shieldZoom min="0" max="32">
<!--opt, xs:integer, 屏蔽倍率, 屏蔽大于等于该值的光学变倍-->
</shieldZoom>
<regionType opt="quadrilateral">
<!--opt, xs:string, 区域类型: quadrilateral-四边形-->
</regionType>
<maskType opt="gray,red,yellow,blue,orange,green,transparent,half-transparent,mosaic">
<!--opt, xs:string, 屏蔽区域颜色类型: gray-灰色, red-红色, yellow-黄色, blue-蓝色, orange-橙色, green-绿色, transparent-透明, half-transparent-半透明, mosaic-马赛克-->
</maskType>

<RegionCoordinatesList>
<!--req, 屏蔽区域坐标点列表-->
<RegionCoordinates>
<!--req, 屏蔽区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</FireShieldMaskRegion>
</FireShieldMaskRegionList>
<shieldAreaTransparency opt="no_transparent,transparent,semi_transparent">
<!--opt, xs:string,屏蔽区域透明度:no_transparent-不透明,transparent-透明,semi_transparent-半透明-->
</shieldAreaTransparency>
<displayShieldAreaEnabled opt="true,false">
<!-- opt ,xs:boolean opt="true,false" "码流叠加屏蔽区域使能"-->
</displayShieldAreaEnabled>
</FireShieldMask>


DEVICE_ABILITY_FrameCfg

设备网络SDK开发使用手册

<FrameCfg version="2.0">
<enable>
<!--req, xs: boolean, 边框叠加使能，0-不叠加，1-叠加-->
</enable>
<TopFrame>
<!--opt, 上边框-->
<wide opt="0,2,4,6,8,10,12,14">
<!--req, xs: integer, 边宽 -->
</wide>
<Red min="0" max="255">
<!--req, xs: integer, RGB中R值-->
</Red>
<Green min="0" max="255">
<!--req, xs: integer, RGB中G值-->
</Green>
<Blue min="0" max="255">
<!--req, xs: integer, RGB中B值-->
</Blue>
</TopFrame>
<BottomFrame>
<!--opt, 下边框-->
<wide opt="0,2,4,6,8,10,12,14">
<!--req, xs: integer, 边宽 -->
</wide>
<Red min="0" max="255">
<!--req, xs: integer, RGB中R值-->
</Red>
<Green min="0" max="255">
<!--req, xs: integer, RGB中G值-->
</Green>
<Blue min="0" max="255">
<!--req, xs: integer, RGB中B值-->
</Blue>
</BottomFrame>
<LeftFrame>
<!--opt, 左边框-->
<wide opt="0,2,4,6,8,10,12,14">
<!--req, xs: integer, 边宽 -->
</wide>
<Red min="0" max="255">
<!--req, xs: integer, RGB中R值-->
</Red>
<Green min="0" max="255">
<!--req, xs: integer, RGB中G值-->
</Green>
<Blue min="0" max="255">
<!--req, xs: integer, RGB中B值-->
</Blue>
</LeftFrame>
<RightFrame>
<!--opt, 右边框-->
<wide opt="0,2,4,6,8,10,12,14">
<!--req, xs: integer, 边宽 -->
</wide>
<Red min="0" max="255">
<!--req, xs: integer, RGB中R值-->
</Red>
<Green min="0" max="255">
<!--req, xs: integer, RGB中G值-->
</Green>
<Blue min="0" max="255">
<!--req, xs: integer, RGB中B值-->
</Blue>
</RightFrame>
</FrameCfg>


DEVICE_ABILITY_FTPNotificationList

设备网络SDK开发使用手册

<FTPNotificationList version="2.0" xmlns="http://www.std-cgi.com/ver20/XMLSchema">
<FTPNotification>
<id>1</id>
<!--req, FTP序号-->
<enabled opt="true">true</enabled>
<!--req, 是否启用-->
<addressingFormatType opt="ipaddress,hostname">ipaddress</addressingFormatType>
<!--req, 地址类型：ipaddress-IP方式，hostname-域名方式-->
<ipAddress>0.0.0.0</ipAddress>
<!--req, FTP地址-->
<portNo>21</portNo>
<!--req, FTP端口-->
<userName></userName>
<!--req, FTP登录用户名-->
<annoyftp opt="true,false">false</annoyftp>
<!--req, 是否匿名登录-->
<uploadPicture opt="true,false">false</uploadPicture>
<!--req, 是否上传图片-->
<uploadPath>
<!--req, 上传路径-->
<pathDepth min="" max="">0</pathDepth>
<!--req, 目录结构等级-->
<topDirNameRule opt="devName,devId,devIp,customize">customize</topDirNameRule>
<!--req, 一级目录命名规则：devName-设备名，devId-设备号，devIp-设备IP地址，customize-自定义-->
<topDirName min="" max=""></topDirName>
<!--req, 一级目录命名长度限制-->
<subDirNameRule opt="chanName,chanId,customize">customize</subDirNameRule>
<!--req, 二级目录命名规则：chanName-通道名，chanId-通道号，customize-自定义-->
<subDirName min="" max=""></subDirName>
<!--req, 二级目录命名长度限制-->
</uploadPath>
<FtpUpload version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<PicName>
<EventType opt="default,vehicledetection">
<!--req, xs:string,"", 事件类型：default-默认，vehicledetection-车辆侦测-->
</EventType>
<mode opt="default,custom">
<!--req, xs:string, 图片命名模式：default-默认，custom-自定义-->
</mode>
<NameRuleType>
<!--req, xs:string, 图片命名规则-->
<RuleTypeItemList size="">
<RuleTypeItem>
<id>
<!-- req, xs: interger-->
</id>
<item opt="capture_time,plate_No,alarm_type,camera_name">
<!-- req, xs: string -->
</item>
<cameraName min="" max="">
<!-- dep, xs: string, "依赖于camera_name节点"-->
</cameraName>
</RuleTypeItem>
</RuleTypeItemList>
</NameRuleType>
</PicName>
</FtpUpload>
</FTPNotification>
</FTPNotificationList>


DEVICE_ABILITY_GB28181ServiceCap

设备网络SDK开发使用手册

<GB28181ServiceCap version="2.0">
<serverID size="20">
<!-- opt, xs:string, SIP服务器ID -->
</serverID>
<port min="1025" max="65535" default="5060">
<!-- opt, xs:integer, “1025~65535”, SIP服务器端口-->
</port>
<authPasswd size="16">
<!-- opt, xs:string,认证密码-->
</authPasswd>
<defaultAuthPasswd>"12345678"</defaultAuthPasswd>
<liveTime min="5" max="3600" default="60">
<!-- opt, xs:integer,存活周期, 5~3600, 单位秒-->
</liveTime>
<heartbeatCount min="3" max="255" default="5">
<!-- opt, xs:integer,心跳次数, 3~255-->
</heartbeatCount>
<autoAddIPC>
<!-- opt, xs:Boolean,是否自动添加IPC, true.false -->
</autoAddIPC>
</GB28181ServiceCap>


DEVICE_ABILITY_GkConfig

设备网络SDK开发使用手册

<GkConfig version="2.0">
<enabled>
<!--req,boolean,"true,false", 使能-->
</enabled>
<IpAddress>
<!--opt, GK IP地址-->
<ipVersion opt="v4,v6,dual">
<!--req, xs:string,"v4,v6,dual"-->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址 -->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
</IpAddress>
<gkPort>
<!--opt,xs:integer, GK 服务端口号-->
</gkPort>
<registerName min="" max="" >
<!--req,xs:string, 终端注册到GK的名字-->
</registerName>
<registerState>
<!--ro,opt,boolean,"true,false", 注册状态-->
</registerState>
</GkConfig>


DEVICE_ABILITY_Group

设备网络SDK开发使用手册

<Group version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<GroupRegionList size="4">
<GroupRegion version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<objectOccupation min="1" max="100"/>
<!-- req, xs:integer -->
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</GroupRegion>
</GroupRegionList>
<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像" -->
<isSupportMultiScene>
<!-- opt, xs:boolen -->
</isSupportMultiScene>
</Group>


DEVICE_ABILITY_INFO

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 智能交通摄像机和智能终端能力集描述 -->
<!--req, ITCAbility节点中的能力针对抓拍机；ITSAbility节点中的能力针对终端 -->
<ITDeviceAbility version="2.0">
<channelNO>1</channelNO>
<!--req, xs:inter,通道号-->
<ITCAbility>
<!--req, 智能交通IPC能力-->
<IOInNo min="" max=""/>
<!--req, xs:inter,IO输入口最大最小值-->
<IOOutNo min="" max=""/>
<!--req, xs:inter,IO输出口最大最小值-->
<singleIOTriggerNum>4</singleIOTriggerNum>
<!--req, xs:inter,单IO触发组数-->
<lightArrayNum>8</lightArrayNum>
<!--req, xs:inter,红绿灯组数-->
<measureArrayNum>4</measureArrayNum>
<!--req, xs:inter, 测速模式组数-->
<lensMode opt="CCD,CMOS"/>
<!-- 镜头模式-->
<PreTrigger>
<enabled>
true
</enabled>
<!--req, 是否原触发模式,不支持不显示-->
</PreTrigger>
<triggerMode opt="postIOSpeed,postSingleIO,postRS485,postRS485Radar,postVirtualcoil,epoliceIoTrafficLights,
epoliceRS485,peRS485,videoEpolice,postMPR,postPRS,postHVT,PostMobile,postNoComityPed,postRedLightPed"/>
<!--req, 触发模式,3.1之前版本无此项-->

<support opt="imageOverlayString,calibrateTime,multiNIC,NICBonding,voiceIntercom,IOEnableCfg,FTPExpand,CloudStorage"/>
<!--req, bySupport：
bySupport&0x1，表示是否支持扩展的字符叠加配置
bySupport&0x2，表示是否支持扩展的校时配置结构
bySupport&0x4, 表示是否支持多网卡(多网隔离)
bySupport&0x8, 表示是否支持网卡的bonding功能(网络容错)
bySupport&0x10, 表示是否支持语音对讲
bySupport&0x20，表示是否支持单IO触发界面IO使能配置
bySupport&0x40，表示是否支持扩展的FTP接口（3.6版本支持）
bySupport&0x80，表示是否支持云存储接口（3.7版本支持）-->
<supportMultiRadar opt="postRS485Radar,postVirtualcoil,videoEpolice,postHVT"/>
<!--req, wSupportMultiRadar：
wSupportMultiRadar&0x1，表示 卡口RS485雷达 支持车道关联雷达处理
wSupportMultiRadar&0x2，表示 卡口虚拟线圈 支持车道关联雷达处理
wSupportMultiRadar&0x4，表示 混行卡口 支持车道关联雷达处理
wSupportMultiRadar&0x8，表示 视频检测 支持车道关联雷达处理-->
<ICRPresetNum min="0" max="8"/>
<!--req, 支持的ICR预置点（滤光片偏移点）数 byICRPresetNum-->
<ICRTimeSlot min="0" max="8"/>
<!--req, 表示支持的ICR的时间段数（1～8）byICRTimeSlot-->
<expandRs485SupportSensor opt="peRS485,epoliceRS485"/>
<!--req, byExpandRs485SupportSensor：
byExpandRs485SupportSensor &0x1，表示电警车检器支持车检器
byExpandRs485SupportSensor &0x2，表示卡式电警车检器支持车检器-->
<expandRs485SupportSignalLampDet opt="videoEpolice,epoliceRS485,peRS485"/>
<!--req, byExpandRs485SupportSignalLampDet：
byExpandRs485SupportSignalLampDet &0x1，表示电警车检器支持外接信号灯检测器
byExpandRs485SupportSignalLampDet &0x2，表示卡式电警车检器支持外接信号灯检测器
byExpandRs485SupportSignalLampDet &0x4，表示视频电警 支持外接信号灯检测器-->
<ImageCombine>
<enabled>true</enabled>
<!--req,是否支持图片合成,不支持不显示-->
</ImageCombine>
<TrafficDataUpload>
<UploadType1>
<enabled>
true
</enabled>
<!--req, 支持上传模式1(即抓拍机支持的类型,布防方式的COMM_UPLOAD_PLATE_RESULT),不支持不显示-->
</UploadType1>
<UploadType2>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即终端支持的类型,监听方式的COMM_ITS_PLATE_RESULT),不支持不显示-->
</UploadType2>
<UploadType3>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即抓拍机支持布防上传(COMM_ITS_PLATE_RESULT/NET_ITS_PLATE_RESULT),不支持不显示-->
</UploadType3>
</TrafficDataUpload>

<VideoLocalRecord>
<enabled>true</enabled>
<!--req, 是否支持本地录像,不支持不显示-->
</VideoLocalRecord>
<PicLocalStore>
<enabled>true</enabled>
<!--req, 是否支持图片本地存储,不支持不显示-->
</PicLocalStore>
<PlateRecognise>
<enabled>true</enabled>
<!--req, 是否支持车牌识别,不支持不显示-->
<regionType opt="rect,polygon"/>
<!-- 牌识区域支持的类型-->
<plateTypeopt opt="standard92,standard02,armedPolice,police,standard92Back,embassy,agricultural,moto"/>
<plateColor opt="blue,yellow,white,black,green"/>
<vehicleType opt="small,big"/>
<bodyworkColor opt="white,silver,gray,black,red,darkblue,blue,yellow,green,brown,pink,violet"/>
</PlateRecognise>
<imageOverlayString>
<mode1>
<!--opt, 原抓拍机的图片字符叠加,不支持不显示-->
<overlayStringType opt="monitor,time,speed,speedRatio,speedLimit,plate,carColor,carLength,carType,laneNum,
milliSecond,illegalInfo,redOnTime"/>
<!--opt, 监测点,时间,速度,超速比,限速标志,车牌,车身颜色,车身长度,车辆类型,车道号,毫秒,违规信息,红灯已亮时间-->
</mode1>
<mode2>
<!--opt, 终端和终端相机的图片字符叠加,不支持不显示-->
<overlapType opt="monitor,site,roadNum,instrumentNum,directionNum,directionDes,laneNum,laneDes,capTime,
capTimeMilli,plate,carColor,carLength,carType,carBrand,speed,speedRatio,speedLimit,illegalDes,
redStart,redStop,redOnTime,securityCode,capCode,seatBelt"/>
<!--opt, 监测点,地点,路口编号,设备编号,方向编号,方向描述,车道号,车道描述,抓拍时间,抓拍时间(毫秒),车牌号,
车身颜色,车身长度,车辆类型,车辆品牌,速度,超速比,限速标志,违规信息,红灯开始时间,红灯结束时间,红灯已亮时间,
防伪码,抓拍编号,安全带(3.7Ver)-->
<itemLength min="0" max=""/>
<!--opt, 字符叠加长度-->
<changeLineNum min="0" max="10"/>
<!--opt, 换行数-->
<spaceNum min="0" max="255"/>
<!--opt, 空格数-->
<linePercent min="0" max="100"/>
<!--opt, 叠加行百分比-->
<itemsStlye opt="horizontal,vertical"/>
<!--opt, 叠加方式，横排，竖排-->
<startPosTop min="0" max="2448"/>
<!--opt, 起始上坐标-->
<startPosLeft min="0" max="2448"/>
<!--opt, 起始左坐标-->
<charStyle opt="SongTi,WeiTi"/>
<!--opt, 字体，宋体，魏体-->
<charSize opt="16*16,32*32,48*48,64*64,128*128"/>
<!--req,字符大小0-32*32(中)/16*32(英)，1-64*64(中)/32*64(英)，2-48*48，3- 64*64(默认)，4- 128*128(Ver3.7)-->
<charInterval min="0" max="16"/>
<!--opt, 字符间距-->
<ForeClorRGB>
<enabled>
true
</enabled>
<!--opt, 是否支持调节前景色RGB,不支持不显示-->
</ForeClorRGB>
<BackClorRGB>
<enabled>
true
</enabled>
<!--opt, 是否支持调节背景色RGB,不支持不显示-->
</BackClorRGB>
<ColorSelfAdapt>
<enabled>
true
</enabled>
<!--opt, 颜色是否自适应,不支持不显示-->
</ColorSelfAdapt>
<ParamFillZero>
<enabled>true</enabled>
<!--req 是否支持参数补零(3.7Ver)-->
</ParamFillZero>
<itemTypeCustomLength min="0" max="32"/>
<!--opt, 自定义类型长度(NET_ITS_OVERLAP_CFG_V50接口新增)，不支持不显示-->
</mode2>
</imageOverlayString>
<TPSAlarm>
<!--req, 支持交通统计报警上传,不支持不显示-->
<UploadType1>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即终端支持的类型,监听方式的COMM_ITS_TRAFFIC_COLLECT),不支持不显示-->
</UploadType1>
<UploadType2>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即抓拍机支持布防上传(COMM_ITS_TRAFFIC_COLLECT/NET_ITS_TRAFFIC_COLLECT),不支持不显示-->
</UploadType2>
</TPSAlarm>
<CameraSetup>
<!--req, 支持相机架设配置,不支持不显示-->
<enabled>
true
</enabled>
</CameraSetup>
<AlarmRecordDown>
<!--req, 支持报警录像下载,不支持不显示-->
<enabled>
true
</enabled>
</AlarmRecordDown>

<supportMilliCheckTime>
<!--req, 支持毫秒校时 -->
<enabled>true</enabled>
<customSetTimeSignLen min="" max =""/>
<!--req, 校时标记自定义数据-->
</supportMilliCheckTime>

<SnapStatusDetectCFG>
<!--req, 状态检测使能参数能力,对应结构体(NET_DVR_STATUS_DETECTCFG),不支持不显示-->
<triggerIODectect opt="true,false"/>
<!--req,抓拍机触发IO状态检测, true-启用，false-不启用-->
<flashOutDetect opt="true,false"/>
<!--req,抓拍机同步输出状态检测, true-启用，false-不启用-->
<RS485Detect opt="true,false"/>
<!--req,抓拍机RS485接收状态检测, true-启用，false-不启用-->
<trafficLightDetect opt="true,false"/>
<!--req,抓拍机交通灯状态检测, true-启用，false-不启用-->
</SnapStatusDetectCFG>

<SnapRadarParam>
<!--req, 雷达配置参数能力,对应结构体(NET_ITC_RADAR_PARAM),不支持不显示-->
<radarType opt="noRadar,Andaolei,Olivia,microwave,IOExpanBox,AndaoleiWithoutCtrl,other"/>
<!--req,雷达类型, 0-noRadar,1-Andaolei,2-Olivia,3-microwave, 4-IOExpanBox,5-AndaoleiWithoutCtrl,0xff-other -->
<levelAngle min="0" max="90"/>
<!--req,与水平线所成角度, 0~90度 -->
<radarSensitivity min="0" max="65535"/>
<!--req,雷达灵敏度, 0~65535 -->
<radarSpeedValidTime min="0" max="2000"/>
<!--req,雷达速度有效时间[0~2000] -->
<lineCorrectParam min="0.0" max="2.0"/>
<!--req,线性矫正参数 -->
<constCorrectParam min="-100" max="100"/>
<!--req,常量矫正参数 -->
</SnapRadarParam>

<SnapEnableCfg>
<!--req,对应的结构体(NET_DVR_SNAPENABLECFG) -->
<plateEnable opt="true,false"/>
<!--req,是否支持车牌识别，0-false 不支持，1-true 支持-->
<jpegPICSize min="64" max="8196"/>
<!--req,Jpeg图片大小[64-8196]-->
<frameFlip opt="noturn,turn"/>
<!--req,0-noturn(不翻转) 1-turn(翻转)-->
<flipAngle opt="0,90,180,270"/>
<!--req,图像翻转角度 0,90,180,270-->
<lightPhase min="0" max="360"/>
<!--req,相位，取值范围[0, 360]-->
<lightSyncPower opt="noSynchronized,Synchronized"/>
<!--req,是否信号灯电源同步：0-noSynchronized(不同步)，1-Synchronized(同步)-->
<frequency min="0" max="255"/>
<!--req,信号频率-->
<uploadSDEnable opt="false,true"/>
<!--req,是否自动上传SD图片 0-false(否) 1-true(是)-->
<plateMode opt="videoTrigger,externalTrigger"/>
<!--req,识别模式参数 0-videoTrigger(视频触发) 1-externalTrigger(外部触发)-->
<uploadInfoFTP opt="false,true"/>
<!--req,是否上传抓拍附加信息到FTP 0-false(否) 1-true(是)-->
<autoFormatSD opt="false,true"/>
<!--req,是否自动格式化SD卡 0-false(否) 1-true(是)-->
<SnapPicResolutionList>
<!--req,抓拍图片分辨率列表-->
<SnapPicResolutionEntry>
<!--req,示例1-->
<Index>0</Index>
<Name>DCIF</Name>
<!--req,此值仅作参考,设备可能返回不一致-->
<Resolution>528*384</Resolution>
</SnapPicResolutionEntry>
<SnapPicResolutionEntry>
<!--req,示例2 -->
<Index>6</Index>
<Name>QVGA</Name>
<!--req,此值仅作参考,设备可能返回不一致-->
<Resolution>320*240</Resolution>
</SnapPicResolutionEntry>
</SnapPicResolutionList>
</SnapEnableCfg>

<ITCIOoutParam>
<defaultStatus opt="lowlevel,highlevel"/>
<!--req IO默认状态 0 - lowlevel(低电平)，1 - highlevel(高电平)-->
<IOoutStatus opt="lowlevel,highlevel,impulse"/>
<!--req IO起效时状态 0 - lowlevel(低电平),1 - highlevel(高电平),2 - impulse(脉冲)-->
<flashMode opt="video,post,illegal"/>
<!--req 闪光灯工作方式,按位表示，0-表示工作，1-表示不工作 bit0 - video(视频), bit1 - post(卡口),bit2 - illegal(违章)-->
<timeDelay min="" max=""/>
<!--req IO有效持续时间，单位us-->
<aheadTime min="" max=""/>
<!--req 输出IO提前时间，单位us-->
<dutyRate min="0" max="40"/>
<!--req 占空比，[0,40%]-->
<detectBrightness opt="false,true"/>
<!--req 自动检测亮度使能闪光灯 0-false(不检测) 1-true(检测)-->
<brightnessThreld min="0" max="100"/>
<!--req 使能闪光灯亮度阈值，范围[0,100],高于阈值闪-->
<flashLightEnable opt="false,true"/>
<!--req 设置闪光灯时间使能 0-false(关) 1-true(开)-->
<autoPlateBrightness opt="false,true"/>
<!--req 车牌亮度自动使能闪光灯 0-false(不启用) 1-true(启用)-->
<ioWorkMode opt="flashlight,polarizer"/>
<!-- IO输出口工作模式：0-闪光灯，1-偏振镜-->
</ITCIOoutParam>

<CameraSetUpCfg>
<setupHeight min="0" max="65535"/>
<!--req 架设高度-->
<lensType opt="unKnown,8mm,12mm,16mm,25mm,35mm,50mm"/>
<!--req 镜头焦距类型-->
<setupHeightUnit opt="M,CM"/>
<!-- req 0~M,1~CM-->
<sceneDis min="0" max="65535"/>
<!--req 图像下边缘位置与相机之间的水平距离，单位：厘米-->
<videoDetCoefficient min="" max=""/>
<!--req 视频测试系数[0,300]-->
<erectMethod opt="normalinstallation,sideinstallation"/>
<!--req, 架设方式：0-正装，1-侧装-->
<horFieldAngle min="" max=""/>
<!-- 相机水平视场角角度[0°,360°]-->
<verFieldAngle min="" max=""/>
<!-- 相机垂直视场角角度[0°,360°]-->
</CameraSetUpCfg>

<PlcCfg>
<PLCEnable opt="false,true"/>
<!--req 车牌亮度补偿（默认启用）：0-关闭，1-启用-->
<plateExpectBright min="0" max="100"/>
<!--req 车牌的预期亮度（默认值50）, 范围[0, 100]-->
<brightChangeEnable opt="false,true"/>
<!--req 考虑光照变化（默认启用）：0-关闭，1-启用-->
<brightChangeThreld min="0" max="100"/>
<!--req 判断光照变化的阈值（默认值50），范围[0, 100]-->
<tradeOffFlash opt="false,true"/>
<!--req 考虑闪光灯的影响: 0 - 否; 1 - 是(默认) 使用闪光灯补光时, 如果考虑减弱闪光灯的亮度增强效应, 则需要设为1;否则为0-->
<correctFactor min="0" max="100"/>
<!--req 纠正系数, 范围[0,100], 默认值50 (在tradeoff_flash切换时,恢复默认值） -->
<loopStatsEn opt="false,true"/>
<!--req 该线圈的亮度，按位表示，0-不统计，1-统计-->
<PLCBrightOffSet min="0" max="100"/>
<!--req 车牌亮度补偿灵敏度(虚拟线圈模式起效)，取值范围1~100-->
</PlcCfg>

<CabinetAlarmParamCfg>
<supportCabinetNum min="0" max="8"/>
<cabinetNameLen min="0" max="32"/>
<associateIO opt="1,2,3,4,0xff"/>
<!--req 1-4，0xff， 其中1-4表示具体的IO通道号，0xff表示不启用-->
<cabinetState opt="lowlevel,hightlevel"/>
<!--req 0~低电平,1~高电平-->
<alarmIntervalTime min="1" max="60"/>
<!--req 取值范围1-60，单位：秒-->
</CabinetAlarmParamCfg>

<ExceptionAlarmITC>
<exceptionType opt="diskError,nicBroken,ipConflict,sensors,signalDetector"/>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
</ExceptionAlarmITC>
<ICRCFG>
<autoCtrlTime>4</autoCtrlTime>
<ICRPreset>2</ICRPreset>
<switchType opt="no,auto,manual,time,algorithmAuto"/>
<!--0 ~不切换，1~自动切换，2~手动切换 ,3~定时切换，4~算法自动-->
<AlgorithmAutoSwitch>
<detThreshold min="" max="" def=""/>
<!--检测阈值,范围[0,100],默认 58-->
<unBrightnessThreshold min="" max="" def=""/>
<!--异常亮度阈值，范围[0,255]，默认12-->
</AlgorithmAutoSwitch>
</ICRCFG>

<ITCFTP>
<ItcFtpTypeCond>
<workMode opt="ftp1,ftp2"/>
<!--req 0-FTP1(主FTP)，1-FTP2(备FTP)-->
</ItcFtpTypeCond>
<ItcFtpCfg>
<enableFtp opt="true,false"/>
<!--req 0-false(否),1-true(是)-->
<addressType opt="ipaddress,domainname"/>
<!--req 0-实际ipv4 ipv6地址 1-域名-->
<ftpPort min="" max=""/>
<!--req ftp端口范围-->
<domainLen min="" max=""/>
<!--req 域名长度-->
<userNameLen min="" max=""/>
<!--req 用户名长度-->
<passwordLen min="" max=""/>
<!--req 密码长度-->
<dirLevel opt="rootdirectory,parentdirectory,childdirectory,threedirectory,fourdirectory"/>
<!--req 0 = 不使用目录结构，直接保存在根目录,1 = 使用1级目录,2=使用2级目录,3 = 使用3级目录,4=使用4级目录-->
<uploadDataType opt="all,post,illegal"/>
<!--req 0-all,1-卡口,2-违章(单FTP时默认选择全部，双FTP时支持卡口，违章的选择)-->
<itemOrder opt="devname,devno,devip,channelname,channelno,time,cardno,plateno,paltecolor,laneno,carspeed,picnumber,
carnumber,speedlimit,illegalcode,crossnumber,directionnumber,carColor,plateCoordinate,carType,violationType,custom"/>
<delimiter opt="_"/>
<!--req 分隔符，一般为'_'-->
<topDirMode opt="deviceName,deviceNO,deviceIP,monitor,time,timeday,violatetype,direction,place ,channelName,channelNo,LaneNo,custom"/>
<!--req 0x1 =使用设备名,0x2 = 使用设备号,0x3 =使用设备ip地址，0x4=使用监测点,0x5=使用时间(年月), 0x6=使用时间(年月日),
0x7=违规类型,0x8=方向,0x9=地点,0xa=通道名,0xb=通道号,0xc=车道号0xff=自定义-->
<subDirMode opt="deviceName,deviceNO,deviceIP,monitor,time,timeday,violatetype,direction,place ,channelName,channelNo,LaneNo,custom"/>
<threeDirMode opt="deviceName,deviceNO,deviceIP,monitor,time,timeday,violatetype,direction,place ,channelName,channelNo,LaneNo,custom"/>
<fourDirMode opt="deviceName,deviceNO,deviceIP,monitor,time,timeday,violatetype,direction,place ,channelName,channelNo,LaneNo,custom"/>
<topCustomDirLen min="" max=""/>
<!--req 自定义一级目录长度-->
<subCustomDirLen min="" max=""/>
<!--req 自定义二级目录长度-->
<threeCustomDirLen min="" max=""/>
<!--req 自定义三级目录长度-->
<fourCustomDirLen min="" max=""/>
<!--req 自定义四级目录长度-->
<supportUploadPlate opt="true,false"/>
<!--req 是否上传车牌小图-->
<picNameCustomLen min="" max=""/>
<!--req 图片命名自定义,当PICNAME_ITEM_CUSTOM时生效-->
</ItcFtpCfg>
</ITCFTP>

<CloudStorage>
<poolID min="" max=""/>
<userNameLen min="" max=""/>
<passwdLen min="" max=""/>
<poolInfo opt="postVideoPool,illegalVideoPool"/>
<!--req, 数组0表示卡口录像池，数组1表示违章录像池-->
<supportURLUpload opt="true,false"/>
<!--req, 支持URL上传方式-->
</CloudStorage>

<SignalLampDet>
<enabled>true</enabled>
<!--req, 支持信号灯检测-->
</SignalLampDet >

<FlashLampDet>
<enabled>true</enabled>
<!--req, 支持闪光检测-->
</FlashLampDet>

<CurTriggerMode>
<!-- req, 3.7新增-->
<enabled>true</enabled>
<!--req, 支持获取当前设备的触发模式-->
</CurTriggerMode>

<ManualSnap>
<!--req, 3.7新增-->
<osdEnable>true</osdEnable>
<!--req, 抓图OSD支持强制关闭-->
<laneNo min = "1" man = "6"></laneNo>
<!--req, 车道号-->
</ManualSnap>

<GPSDATACFG>
<gpsDataMode opt="auto,manual"/>
<!--req, GPS数据获取: 0-自动，1-手动-->
<longitudeType opt="east,west"/>
<!--req, 经度: 0-东经，1-西经-->
<latitudeType opt="north,south"/>
<!--req, 纬度: 0-南纬，1-北纬-->
<Longitude>
<degree min="0" max="180"/>
<minute min="0" max="60"/>
<sec min="0" max="60"/>
</Longitude>
<Latitude>
<degree min="0" max="180"/>
<minute min="0" max="60"/>
<sec min="0" max="60"/>
</Latitude>
</GPSDATACFG>

<ITCGateNum>1</ITCGateNum>
<!--req, 道闸数-->
<ITCEntranceCfg>
<relateTriggerMode opt="postSingleType,postRS485,postHVTType"/>
<!--req, 单IO触发（卡口）,RS485车检器触发（卡口）,混行卡口视频触发（卡口）-->
<matchContent opt="null,plateContentWithColor,plateContentWithoutColor,cardContent"/>
<!--req, 0-无(不做匹配) 1-车牌匹配（带车牌颜色）2-车牌匹配（不带车牌颜色）3-卡号匹配-->
<barrierGateCtrlMode opt="camera, platform"/>
<!--req,0-camera,1-platform-->
<relayCfg>
<relayNum>4</relayNum>
<!--req,继电器个数-->
<accessDevInfo opt="null,openGate,closeGate,stopGate,alarm,lamp"/>
<!--req 0-不接入设备，1-开道闸、2-关道闸、3-停道闸、4-报警信号、5-常亮灯-->
</relayCfg>
<ITCVehicleCfg>
<vehicleCtrlType opt="temporaryVehicle,blockListVehicle,allowListVehicle"/>
<!--req,0-临时车辆配置的模式,1-非授权车辆的模式,2-授权车辆的模式-->
<gateOperateType opt="null,open"/>
<!--req,0-无操作,1-开道闸-->
<alarmOperateType opt="null,relay,setAlarm,upload"/>
<!--req, 0-无操作,bit0-继电器输出报警 bit1-布防上传报警 bit3-告警主机上传（可复选）(0-表示关，1-表示开)-->
</ITCVehicleCfg>
<GateCtrlCfg>
<gateCtrl opt="closeGate,openGate,stopGate,lockGate"/>
<!--req, 0-关闭道闸 1-开启道闸 2-停止道闸 3-锁定道闸-->
</GateCtrlCfg>
</ITCEntranceCfg>

</ITCAbility>
<ITSAbility>
<cameraAmount>
<!--req, xs:inter, 最大支持的相机个数-->
</cameraAmount>
<storeAmount>
<!--req, xs:inter, 最大支持的数据存储总量（单位：个）-->
</storeAmount>
<ImageCombine>
<enabled>true</enabled>
<!--req,是否支持图片合成,不支持不显示-->
</ImageCombine>
<TrafficDataUpload>
<UploadType1>
<enabled>
true
</enabled>
<!--req, 支持上传模式1(即抓拍机支持的类型,布防方式的COMM_UPLOAD_PLATE_RESULT),不支持不显示-->
</UploadType1>
<UploadType2>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即终端支持的类型,监听方式的COMM_ITS_PLATE_RESULT),不支持不显示-->
</UploadType2>
<UploadType3>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即抓拍机支持布防上传(COMM_ITS_PLATE_RESULT/NET_ITS_PLATE_RESULT),不支持不显示-->
</UploadType3>
</TrafficDataUpload>
<VideoLocalRecord>
<enabled>
true<!--req, 是否支持本地录像,不支持不显示-->
</enabled>
</VideoLocalRecord>
<PicLocalStore>
<enabled>
true<!--req, 是否支持图片本地存储,不支持不显示-->
</enabled>
</PicLocalStore>
<PlateRecognise>
<enabled>
true<!--req, 是否支持车牌识别,不支持不显示-->
</enabled>
<regionType opt="rect,polygon"/>
<!-- 牌识区域支持的类型-->
<plateTypeopt opt="standard92,standard02,armedPolice,police,standard92Back,embassy,agricultural,moto"/>
<plateColor opt="blue,yellow,white,black,green"/>
<vehicleType opt="small,big"/>
<bodyworkColor opt="white,silver,gray,black,red,darkblue,blue,yellow,green,brown,pink,violet"/>
</PlateRecognise>
<imageOverlayString>
<mode1>
<!--opt, 原抓拍机的图片字符叠加,不支持不显示-->
<overlayStringType opt="monitor,time,speed,speedRatio,speedLimit,plate,carColor,carLength,carType,laneNum,milliSecond,illegalInfo,redOnTime"/>
<!--opt, 监测点,时间,速度,超速比,限速标志,车牌,车身颜色,车身长度,车辆类型,车道号,毫秒,违规信息,红灯已亮时间-->
</mode1>
<mode2>
<!--opt, 终端和终端相机的图片字符叠加,不支持不显示-->
<overlapType opt="monitor,site,roadNum,instrumentNum,directionNum,directionDes,laneNum,laneDes,capTime,capTimeMilli,plate,carColor,carLength,carType,carBrand,speed,speedRatio,speedLimit,illegalDes,redStart,redStop,redOnTime,securityCode,capCode"/>
<!--opt, 监测点,地点,路口编号,设备编号,方向编号,方向描述,车道号,车道描述,抓拍时间,抓拍时间(毫秒),车牌号,车身颜色,车身长度,车辆类型,车辆品牌,速度,超速比,限速标志,违规信息,红灯开始时间,红灯结束时间,红灯已亮时间,防伪码,抓拍编号-->
<itemLength min="0" max=""/>
<!--opt, 字符叠加长度-->
<changeLineNum min="0" max="10"/>
<!--opt, 换行数-->
<spaceNum min="0" max="255"/>
<!--opt, 空格数-->
<linePercent min="0" max="100"/>
<!--opt, 叠加行百分比-->
<itemsStlye opt="horizontal,vertical"/>
<!--opt, 叠加方式，横排，竖排-->
<startPosTop min="0" max="2448"/>
<!--opt, 起始上坐标-->
<startPosLeft min="0" max="2448"/>
<!--opt, 起始左坐标-->
<charStyle opt="SongTi,WeiTi"/>
<!--opt, 字体，宋体，魏体-->
<charSize opt="16*16,32*32,48*48,64*64"/>
<!--req,字符大小0-32*32(中)/16*32(英)，1-64*64(中)/32*64(英)，2-48*48 -->
<charInterval min="0" max="16"/>
<!--opt, 字符间距-->
<ForeClorRGB>
<enabled>
true
</enabled>
<!--opt, 是否支持调节前景色RGB,不支持不显示-->
</ForeClorRGB>
<BackClorRGB>
<enabled>
true
</enabled>
<!--opt, 是否支持调节背景色RGB,不支持不显示-->
</BackClorRGB>
<ColorSelfAdapt>
<enabled>
true
</enabled>
<!--opt, 颜色是否自适应,不支持不显示-->
</ColorSelfAdapt>
</mode2>
</imageOverlayString>
<TPSAlarm>
<!--req, 支持交通统计报警上传,不支持不显示-->
<UploadType1>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即终端支持的类型,监听方式的COMM_ITS_TRAFFIC_COLLECT),不支持不显示-->
</UploadType1>
<UploadType2>
<enabled>
true
</enabled>
<!--req, 支持上传模式2(即抓拍机支持布防上传(COMM_ITS_TRAFFIC_COLLECT/NET_ITS_TRAFFIC_COLLECT),不支持不显示-->
</UploadType2>
</TPSAlarm>
<CameraSetup>
<!--req, 支持相机架设配置,不支持不显示-->
<enabled>
true
</enabled>
</CameraSetup>

<supportMilliCheckTime>
<!--req, 支持毫秒校时 -->
<enabled>true</enabled>
</supportMilliCheckTime>

<CloudStorage>
<poolID min="" max=""/>
<userNameLen min="" max=""/>
<passwdLen min="" max=""/>
<poolInfo opt="postVideoPool,illegalVideoPool"/>
<!--req 数组0表示卡口录像池，数组1表示违章录像池-->
<supportURLUpload opt="true,false"/>
<!--req 支持URL上传方式-->
</CloudStorage>

<!--req,停车场项目-->
<LampCtrlInfo>
<lampCtrlMode opt="inlayLamp,externalLamp"/>
<!--req, 控灯模式：1代表内置灯，2代表外接灯-->
<ctrlChannelIndex min="" max=""/>
<!--req 交替控制通道号-->
<inlayLampCtrlMode>
<!--req 内置灯控制模式结构 -->
<lampStateCtrlNum min="" max=""/>
<!--req 停车位支持数范围-->
<parkInlayInfo>
<enable opt="false,true"/>
<!--req,是否启用, true-启用，false-不启用-->
<flicker opt="false,true"/>
<!--req,是否闪烁, true-闪烁，false-不闪烁-->
<lampColor opt="close,red,green,yellow,blue,magenta,cyan,white"/>
<!--req 0- 灭 1-红 2-绿 3-黄 4-蓝 5-品红 6-青 7-白色-->
</parkInlayInfo>
</inlayLampCtrlMode>
<externalLampCtrlMode>
<!--req 接灯控制模式结构 -->
<maxParkNum min="" max=""/>
<!--req 停车位数量-->
<parkInfoType opt="normalParkIOstate,normalNoParkIOstate,specialParkIOstate,noSpecialParkIOstate"/>
<parkExternalSubinfo>
<enable opt="false,true"/>
<!--req,是否启用, true-启用，false-不启用-->
<flicker opt="false,true"/>
<!--req,是否闪烁, true-闪烁，false-不闪烁-->
<IOstate opt="lowLevel,hightLevel"/>
<!--req,高低电平, 0-低电平，1-高电平(外置灯起效)-->
</parkExternalSubinfo>
</externalLampCtrlMode>
</LampCtrlInfo>

<parkSpaceAttributeParam>
<maxParkNum min="" max=""/>
<!--req 停车位数量-->
<parkSpaceInfo>
<parkSpaceAttribute opt="normalPack,specialPack"/>
<!-- 0~普通车位 1~特殊车位-->
</parkSpaceInfo>
</parkSpaceAttributeParam>

<lampExternalCfg>
<enable opt="false,true"/>
<!--req,是否启用, true-启用，false-不启用-->
<lampState>
<flicker opt="false,true"/>
<!--req,是否闪烁, true-闪烁，false-不闪烁-->
<IONo opt="IO1,IO2,IO3"/>
<!--req 1~IO1,2~IO2,4~IO3 -->
</lampState>
</lampExternalCfg>

<compelCaptureCfg>
<parkIndex opt="parkPlace1,parkPlace2,parkPlace3,parkPlace4"/>
<!-- 车位序号从左到右 1,2,3,4-->
</compelCaptureCfg>

<externalControlAlarm>
<lampState>
<flicker opt="false,true"/>
<!--req,是否闪烁, true-闪烁，false-不闪烁-->
<IONo opt="IO1,IO2,IO3"/>
<!--req 1~IO1,2~IO2,4~IO3 -->
</lampState>
<externalBeginTime>true</externalBeginTime>
<!--req 是否支持 外控开始时间的上传-->
</externalControlAlarm>
</ITSAbility>
</ITDeviceAbility>


DEVICE_ABILITY_INFO_ALARMHOST

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<AlarmHostAbility version="2.0">
<!--req, 网络报警主机能力集描述-->
<keyboardNo min="" max=""/>
<!--req, 键盘序号-->
<keyboardAddr min="" max=""/>
<!--req, 键盘地址-->
<operatorUserNo min="" max=""/>
<!--req, 键盘操作用户序号-->
<operatorPasswordLen min="" max=""/>
<!--req, 操作用户密码长度-->
<operatorPassword opt="0,1,2,3,4,5,6,7,8,9,F"/>
<!--req, 操作用户密码支持的字符-->
<subSystemPermission opt="0,1,2,3,4,5 "/>
<!--req, 0-单布防，不能旁路；1-单撤防，不能旁路；2-布撤防，不能旁路；3-单布防，能旁路；4-单撤防，能旁路；5-布撤防，能旁路 -->
<!--注：没有返回该能力的设备显示全部能力！原先的能力为：1-单布防，无布防报告，不能旁路；2-单撤防，无撤防报告，不能旁路；
3-布撤防，无布撤防报告，不能旁路；4-单布防，有布防报告，不能旁路；5-单撤防，有撤防报告，不能旁路；
6-布撤防，有布撤防报告，不能旁路；7-单布防，无布撤防报告，允许旁路；8-单撤防，无布撤防报告，允许旁路；
9-布撤防，无布撤防报告，允许旁路；10-单布防，有布防报告，允许旁路；11-单撤防，有撤防报告，允许旁路；12-布撤防，有布撤防报告，允许旁路-->
<installerNo min="" max=""/>
<!--req, 安装员序号-->
<installPasswordLen min="" max=""/>
<!--req, 安装员用户密码长度-->
<installPassword min="" max=""/>
<!--req, 安装员用户密码支持的字符-->
<supportCard>true</supportCard>
<!-- true,表示支持卡号关联用户功能;false，表示不支持卡号关联用户功能-->
<Zone>
<ZoneConfig>
<enabled>true</enabled>
<!--req, 支持防区参数配置（报警输入参数配置）-->
<delayInParam>true</delayInParam>
<!--req, true,表示客户端应该使用NET_DVR_ALARMIN_PARAM中的dwParam来设置延时时间,动环报警主机和自助行报警主机使用这种配置延时方式;
false，表示通过NET_DVR_ALARMSUBSYSTEMPARAM中的wEnterDelay、wExitDelay来设置-->
<detectorType opt="panicButton,magneticContact,smokeDetector,activeInfraredDetector,passiveInfraredDetector,glassBreakDetector,vibrationDetector,
dualTechnologyPirDetector,tripleTechnologyPirDetector,humidityDetector,temperatureDetector,combustibleGasDetecto,dynamicSwitch,
controlSwitch,waterDetector,displacementDetector,singleInfraredDetector,singleZoneModule,acoustoopticAlarm,curtainInfraredDetector,otherDetector"/>
<!--req, 设备支持的探测器类型：紧急开关，门磁开关，烟感探测器，主动红外探测器，被动红外探测器，玻璃破碎探测器，震动探测器，
双鉴移动探测器，三技术探测器，湿度探测器，温度探测器，可燃气体探测器, 随动开关，
控制开关，水感探测器，位移探测器，单体门磁探测器，无线单防区模块，声光报警器，幕帘红外人体探测器，其他探测类型-->
<zoneType opt="instantZone, 24hourAudibleZone,delayZone,interiorWithDelayZone,keyswitchZone,
supervisedFireZone,perimeterZone,24hourSlientZone,24hourAuxiliaryAlarmIn,24hourVibrationAlarmIn,,timeOutZone
doorEmergencyOpenProtectionZone,doorEmergencyShutdownProtectionZone,timeOutZone,disable"/>
<!--,设备支持的防区类型-->
<uploadAlarmRecoveryReport>true</uploadAlarmRecoveryReport>
<!--req, 上传报警恢复报告配置-->
<zoneDelayTime min="" max=""/>
<!--req, 延时防区延时时间-->
<sensitivity opt="10ms,250ms,500ms,750ms"/>
<!--req, 灵敏度-->
<arrayBypass>true</arrayBypass>
<!--req, 支持防区组旁路配置-->
<moduleStatus attri="readonly" opt="offline,online"/>
<!--req, 模块状态-->
<moduleAddress min="" max=""/>
<!--req, 模块地址-->
<moduleChannel>true</moduleChannel>
<!--req, 模块通道-->
<moduleType opt="localZone, 1zoneExpander,2zoneExpander,8ZoneExpander,8sensorZoneExpander,1ZoneAndTrigger,1DoorController,2DoorsController,4DoorsController"/>
<!--req, 支持的防区类型-->
<zoneNo attri="readonly" min="" max=""/>
<!--req, 防区序号，只能获取-->
<subsystemNo attri="readonly">1</subsystemNo>
<!--req, 防区所属的子系统号，只能获取-->
<InDelayTime min="0" max="255"/>
<!--req, 进入延迟时间，单位s-->
<OutDelayTime min="0" max="255"/><!--req, 退出延迟时间，单位s-->
<alarmType opt="open,close" default="open"/><!--req, 报警器类型: open-常开，close-常闭-->
<zoneResistor opt="2.2,4.7 ,5.6 ,8.2 ,manual"/>"<!--req, 防区电阻，单位: 千欧-->
<zoneResistorManual min="0" max="10"/>
<!--req, 自定义防区电阻，精确到小数点后一位，单位：千欧-->
<timeOut min="" max=""/><!--opt, 超时时间，单位s-->
<timeOutRange opt="1-599s,1-65535s"/><!--opt, 超时时间范围-->
<isSupportDetectorSignalIntensity>true</isSupportDetectorSignalIntensity><!--opt,支持探测器信号强度返回-->
<TimeOutMethod opt="trigger, recovery" /><!--opt支持超时防区计时方式配置返回-->
<detectorSerialNo min="0" max="9"/><!--req, xs: string, 探测器序列号-->
<zoneSignalType opt="0,1"/><!--req, 防区信号传输类型: 0-有线防区，1-无线防区-->
<enableDetectorTypeCfg>true</enableDetectorTypeCfg><!--req,探测是类型是否可配-->
<zoneTypeWithDelayCfg opt="instantZone, 24hourAudibleZone,delayZone,interiorWithDelayZone,keyswitchZone,supervisedFireZone,perimeterZone,24hourSlientZone,24hourAuxiliaryAlarmIn,24hourVibrationAlarmIn,disable"/><!--,支持配置延迟时间的防区类型，反向能力，当设备不返回按照以前默认逻辑处理-->
<linkageAlarmType opt="1,2,3,4,5"/><!--opt,关联报警类型：1-火警，2-监管，3-联动，4-屏蔽，5-故障-->
</ZoneConfig>
<ZoneTamperConfig>
<!--req, 防区防拆-->
<tamperType opt="0,1,2"/>
<!--req, 0-无，1-常开，2-常闭-->
<uploadAlarmRecoveryReport>true</uploadAlarmRecoveryReport>
<!--req, 上传报警恢复报告配置-->
<associateAlarmOut min="0" max="512"/>
<!--req, 防区关联触发器-->
<associateSirenOut min="0" max="8"/>
<!--req, 防区关联警号输出-->
<tamperResistor opt="2.2,4.7 ,5.6 ,8.2 ,manual"/>
<!--req, 防拆电阻，单位千欧-->
<tamperResistorManual min="0" max="10"/>
<!--req, 自定义防拆电阻，精确到小数点后一位，单位千欧-->
<supportZoneNo min="" max=""/>
<!--req, 防拆电阻支持的防区-->
</ZoneTamperConfig>
<GetZoneList>
<enabled>true</enabled>
<!--req, 支持获取防区列表-->
</GetZoneList>
<ZoneArmDisarm>
<enabled>true</enabled>
<!--req, 支持防区布撤防-->
</ZoneArmDisarm>
<ZoneGroupBypass>
<enabled>true</enabled>
<!--req, 支持防区组旁路-->
</ZoneGroupBypass>
<associateLampOut min="0" max="8"/><!--req防区关联警灯输出-->
<emergencyCallZone opt="3"/><!--req 紧急求助防区号，表示这些是紧急求助防区-->
<consultZone opt="4"/><!--req 业务咨询防区号，表示这些是业务咨询防区-->
</Zone>

<Trigger>
<TriggerConfig>
<enabled>true</enabled>
<!--req, 支持触发器参数配置（报警输出参数配置）-->
<TriggerIndex>attri=readonly,true</TriggerIndex>
<ModuleType opt="localTrigger,4-wayTrigger,8-wayTrigger,1ZoneAndTrigger,32Trigger,2-wayTrigger,1DoorController,2DoorsController,4DoorsController"/>
<ModuleAddress min="1" max="253" />
<ModuleChan>true</ModuleChan>
<outputDelay min="1" max="65535"/>
<!--req, 报警输出持续时间，单位：秒-->
<workMode opt="linkage,dynamic"/>
<!--req, 联动，随动-->
<alarmOutMode opt="pulseMode,nonePulseMode"/>
<!--req, 脉冲，非脉冲-->
<timeOn min="1" max="60"/>
<!--req, 开时间1-60-->
<timeOff min="1" max="60"/>
<!--req, 关时间1-60-->
</TriggerConfig>
<TriggerControl>
<enabled>true</enabled>
<!--req, 支持触发器控制（报警输出口控制）-->
</TriggerControl>
<GetTriggerList>
<enabled>true</enabled>
<!--req, 支持获取触发器列表-->
</GetTriggerList>
</Trigger>

<AutoRegisterExternalModule>
<enabled>true</enabled>
<!--req, 支持自动注册外接模块-->
</AutoRegisterExternalModule>
<AutoSearchExternalModule>
<enabled>true</enabled>
<!--req, 支持自动搜索外接模块-->
</AutoSearchExternalModule>
<AutoSearchDetector>
<enabled>true</enabled>
<!--, 支持自动注册探测器-->
</AutoSearchDetector>

<moduleNo min="" max=""/>
<!--req, 模块序号-->
<ModuleConfig>
<enabled>true</enabled>
<!--req, 模块配置-->
<moduleType opt="zone,trigger,keyBoard"/>
<!--req, 防区，触发器，键盘-->
<ModuleInfo>
<enable>true</enable>
</ModuleInfo>
<!--req, 模块信息-->
<deviceVersionInfo>true</deviceVersionInfo>
<!--req, 设备版本信息-->
</ModuleConfig>
<isNotSupportZoneAddrEdit>true</isNotSupportZoneAddrEdit>
<!--返回表示防区编号界面不能编辑；不返回表示界面可编辑-->
<isNotSupportTriggerAddrEdit>true</isNotSupportTriggerAddrEdit >
<!--返回表示触发器编号界面不能编辑；不返回表示界面可编辑-->

<assistantControl opt="electricLock, mobileGate,audioOut,siren,alarmLamp"/>
<!--req,辅助功能控制，电锁，移动门，语音输出，警号，警灯-->
<GatewayConfig>
<enabled>true</enabled>
<!--req, 支持门禁参数配置-->
<delayTime min="" max=""/>
<!--req, 延时时间，单位：秒。当门被打开delayTime时间以后，门会自动关闭 -->
<nameLen min="" max=""/>
<!--req,门禁名称长度-->
<enabledConfig>true</enabledConfig>
<!--req,支持启用/停用门禁参数-->
<enabledLocal>true</enabledLocal>
<!--req,支持本地启用/停用门禁参数-->
<lockWorkMode opt="setUpEnabled,interruptEnabled"/>
<!--req,电锁工作模式，通电启动，断电启动-->
</GatewayConfig>
<SirenConfig>
<enabled>true</enabled>
<!--req, 支持警号参数配置-->
<outputDelay min="1" max="65535"/>
<!--req, 警号输出持续时间,单位：秒-->
<sirenNameLength min="" max=""/>
<!--req, 支持警号名称配置-->
<overallEventTriggerSirenOn opt="tamperAlarm,overallKeypadEmergencyAlarm,ACPower,
lowBatteryVoltage,phoneOffLine,wireNetWorkException,
wirelessNetWorkException,keyBoard485Break,mBusException,WifiFault,RFSignalFault"/>
<!--req, 全局事件联动警号输出开启、主机防拆、全局键盘紧急报警、交流电断电、电池电压低、
电话线掉线、有线网络异常、无线网络异常、键盘485断线、MBus异常、WIFI通信故障、RF信号干扰故障-->
<overallEventTriggerSirenOff opt=""/>
<!--req, 全局事件联动警号输出开启-->
<subsystemEventTriggerSirenOn opt="emergencyKeypadAlarm,arm,disarm"/>
<!--req, 子系统事件联动警号输出开启,紧急报警，布防，撤防-->
<subsystemEventTriggerSirenOff opt=""/>
<!--req, 子系统事件联动警号输出开启-->
</SirenConfig>
<SearchMainStatus>
<enabled>true</enabled>
<!--req, 支持主要状态查询-->
<mainStatusType opt="zoneArmed, zoneAlarm, trigger, zoneBypass, subSystemArmed, zoneFault, zoneMemory, zoneTamper"/>
<!--req,支持的主要状态类型：防区布防状态，防区报警状态，触发器报警状态，防区旁路状态，子系统布防状态，
防区故障状态，防区报警记忆状态，防区防拆状态-->
<enableSubSystem opt="disable,enable"/>
<!--req, 是否启用子系统-->
<subSystemGuardType opt="armAway,armInstant,armStay"/>
<!--req, 布防类型：外出布防，即时布防，留守布防-->
</SearchMainStatus>
<SearchOtherStatus>
<enabled>true</enabled>
<!--req, 支持其他状态查询-->
<otherStatusType opt="siren,electricLock,alarmLamp,detectorPower,detectorConnection"/>
<!--req, 支持的其他状态类型：siren-警号状态，electricLock-电锁，alarmLamp-警灯，detectorPower-探测器电量状态，detectorConnection-探测器在线状态-->
<detectorPower min="0" max="100"/>
<!--req, 探测器电量-->
<detectorConnection opt="unregedit,disconnect,connect"/>
<!--req, 探测器连接状态: unregedit-未注册, disconnect-不在线, connect-在线-->
</SearchOtherStatus>
<EnableConfig>
<enabled>true</enabled>
<!--req, 支持使能配置-->
<enableType opt="audioOut, electricLock,mobileGate,siren"/>
<!--req,支持的使能项：语音输出使能，电锁使能，移动门使能，警号使能-->
<serialPurpose opt="cascade, PTZ"/>
<!--req,串口用途：级联报警主机，PTZ控制-->
</EnableConfig>

<TransparencySerial>
<enabled>true</enabled>
<!--req, 支持报警主机透明通道-->
</TransparencySerial>

<Get485DeviceList>
<enabled>true</enabled>
<!--req, 支持获取485外接设备列表-->
</Get485DeviceList>
<Get485DeviceProtocolList>
<enabled>true</enabled>
<!--req, 支持获取485外接设备的协议列表-->
</Get485DeviceProtocolList>
<RS485Config>
<enabled>true</enabled>
<!--req, 支持485参数配置，视频报警主机的485使用这个接口，配置结构体中的485通信能力参数能力见"RS232和RS485串口能力节点"-->
</RS485Config>
<AlarmhostRS485Config>
<enabled>true</enabled>
<!--req,报警485参数配置，配置结构体中关于485通信的参数能力见"RS232和RS485串口能力节点"-->
<deviceNameLength min="0" max="32"/>
<!--req,485名称-->
<deviceType>true</deviceType>
<!--req,支持设备类型配置，具体支持的设备类型通过获取外接设备列表接口获取-->
<deviceProtocol>true</deviceProtocol>
<!--req,支持设备类型配置，具体支持的设备协议通过"获取协议列表接口"获取-->
<channel>true</channel>
<!--req,通道号-->
</AlarmhostRS485Config>
<RegisterRS485>
<deviceProtocol>true</deviceProtocol>
<!--支持设备类型配置，具体支持的设备协议通过"获取协议列表接口”获取-->
<baudRate>true</baudRate >
<!--波特率-->
</RegisterRS485>

<RS485SlotConfig>
<enabled>true</enabled>
<!--req, 485槽位参数配置-->
<deviceNameLength min="0" max="32"/>
<!--req, 485名称-->
<deviceType>true</deviceType>
<!--req, 支持设备类型配置，具体支持的设备类型通过获取外接设备列表接口获取-->
<deviceProtocol>true</deviceProtocol>
<!--req, 支持设备类型配置，具体支持的设备协议通过"获取协议列表接口"获取-->
<deviceAddress min="0" max="65535"/>
<!--req, 设备地址-->
<channel>true</channel>
<!--req, 通道号-->
<slotChan>true</slotChan>
<!--req, 槽位号-->
</RS485SlotConfig>

<UploadExternalDeviceAlarm>
<enabled>true</enabled>
<!--req, 485外接设备报警上传-->
</UploadExternalDeviceAlarm>
<GetExternalDeviceStatus>
<enabled>true</enabled>
<!--req, 获取485外接设备状态-->
</GetExternalDeviceStatus>
<ExternalDeviceLimitValueConfig>
<enabled>true</enabled>
<!--req, 485外接设备报警限值配置-->
</ExternalDeviceLimitValueConfig>
<RS485ProtocolVersion>
<enabled>true</enabled>
<!--req,支持获取485协议库版本-->
</RS485ProtocolVersion>

<Sensor>
<SensorConfig>
<enabledConfig>true</enabledConfig>
<!--req, 支持模拟量配置-->
<sensorNameLength min="" max=""/>
<!--req, 模拟量名称长度-->
<enabledSensor>true</enabledSensor>
<!--req, 模拟量使能-->
<normalWork>true</normalWork>
<!--req, 传感器工作状态显示-->
<alarmMode opt="HHHH,HHHL,HHLL,HLLL,LLLL"/>
<!--req,支持的报警模式-->
<sensorType opt="none,temperature, humidity，windspeed，gas,ACVoltage,ACCurrent,DCVoltage,
DCCurrent,waterPressure,pressureTransmitter,flowTransmitter,waterLeakage,
intergratedTemperatureDetector, isolationTemperatureDetector, residualChlorine,Arc,others"/>
<!--req,支持的传感器类型：无，温度传感器，湿度传感器，风速传感器，气体传感器,交流电压传感器，
交流电流传感器，直流电压传感器，直流电流传感器，水压传感器，压力变送器，流量变送器，漏水传感器，
一体化温变传感器，隔离式温变传感器，在线余氯仪，电弧传感器，自定义-->
<measureHigh min="-10000.000" max="10000.000"/>
<!--req, 量程上限-->
<measureLow min="-10000.000" max="10000.000"/>
<!--req, 量程下限-->
<alarmLimitValue1 min="-10000.000" max="10000.000"/>
<!--req, 报警限值1-->
<alarmLimitValue2 min="-10000.000" max="10000.000"/>
<!--req, 报警限值2-->
<alarmLimitValue3 min="-10000.000" max="10000.000"/>
<!--req, 报警限值3-->
<alarmLimitValue4 min="-10000.000" max="10000.000"/>
<!--req, 报警限值4-->
<osd>true</osd>
<!--req, 模拟量字符叠加-->
<sensitive min="0.010" max="1.000"/>
<!--req, 灵敏度-->
<sensorStandard opt="4~20mA,0~5V"/>
<!--req, 传感器规格-->
<chan>true</chan>
<!--req, 通道号-->
</SensorConfig>
<SensorValueUpload>
<enabled>true</enabled>
<!--req, 模拟量数据上传-->
</SensorValueUpload>
<GetSensorValue>
<enabled>true</enabled>
<!--req, 获取模拟量实时数据-->
<absTime>true</absTime>
<!--req, 绝对时标信息-->
<sensorName>true</sensorName>
<!--req, 模拟量名称-->
<sensorChannel>true</sensorChannel>
<!--req, 模拟量通道-->
<sensorType opt="none,temperature, humidity,windspeed,gas,ACVoltage,ACCurrent,DCVoltage,DCCurrent,
waterPressure,pressureTransmitter,flowTransmitter,waterLeakage, intergratedTemperatureDetector,
isolationTemperatureDetector, residualChlorine,others"/>
<!--req,支持的传感器类型：无，温度传感器，湿度传感器，风速传感器，气体传感器,交流电压传感器，交流电流传感器，
直流电压传感器，直流电流传感器，水压传感器，压力变送器，流量变送器，漏水传感器，一体化温变传感器，
隔离式温变传感器，在线余氯仪，自定义-->
<alarmType opt="upper4, upper3, upper2, upper1,lower1, lower2, lower3, lower4,fault"/>
<!--req, 报警类型-->
<alarmMode opt="HHHH,HHHL,HHLL,HLLL,LLLL"/>
<!--req,支持的报警模式-->
<value>true</value>
<!--req, 模拟量实时值-->
<originalValue>true</originalValue>
<!--req,原始电流电压值，具体指表示电流还是电压根据模拟量参数中的传感器bySensorStandard规格决定-->
</GetSensorValue>

<SensorAlarmUpload>
<enabled>true</enabled>
<!--req, 模拟量报警上传-->
</SensorAlarmUpload>
<SensorJointConfig>
<enabled>true</enabled>
<!--req, 模拟量联动配置-->
<sensorJointAlarmout opt="joint,notJoint"/>
<!--req, 模拟量联动报警输入（防区）联动，不联动-->
<sensorJointSiren opt="joint,notJoint"/>
<!--req, 模拟量联动警号-->
<sensorAlarmTypeJointAlarmOut opt="alarmLimitValue1, alarmLimitValue2, alarmLimitValue3, alarmLimitValue4,fault"/>
<!--req, 按模拟量报警类型联动报警输出（触发器）限1，限2，限3，限4，故障-->
<sensorAlarmTypeJointSiren opt="alarmLimitValue1, alarmLimitValue2, alarmLimitValue3, alarmLimitValue4,fault"/>
<!--req, 按模拟量报警类型联动警号输出，限1，限2，限3，限4，故障-->
<chan>true</chan>
<!--req, 通道号-->
</SensorJointConfig>
</Sensor>
<SwitchAlarmUpload>
<enabled>true</enabled>
<!--req, 开关量报警上传-->
</SwitchAlarmUpload >

<SubSystem>
<subSystemNo opt="1,2,3,4,5,6,7,8,0xffffffff"/>
<!--req, 子系统序号-->
<SubSystemConfig>
<Part1Config>
<enterDelayTime min="10" max="150"/>
<!--req, 进入延时，单位：秒-->
<exitDelayTime min="10" max="300"/>
<!--req, 退出延时，单位：秒-->
<hostageReportEnable>true</hostageReportEnable>
<!--req, 挟持报告使能-->
<keyboardWarmingOfArmDisarmReport>true</keyboardWarmingOfArmDisarmReport>
<!--req, 键盘提示成功发送布撤防报告-->
<keyboardWarmingOfTestReport>true</keyboardWarmingOfTestReport>
<!--req, 键盘提示成功发送测试报告-->
<sirenDelayTime min="" max=""/>
<!--req, 警号持续输出时间，单位：秒-->
<publicSubSystemNum>1</publicSubSystemNum>
<!--req, 公共子系统个数-->
<keySwitchZoneArm>true</keySwitchZoneArm>
<!--req, 支持钥匙布撤防防区对子系统进行布防操作-->
<keySwitchZoneArmReport>true</keySwitchZoneArmReport>
<!--req, 支持钥匙布撤防防区对子系统布防时发送布防报告-->
<keySwitchZoneDisarm>true</keySwitchZoneDisarm>
<!--req, 支持钥匙布撤防防区对子系统进行撤防操作-->
<keySwitchZoneDisarmReport>true</keySwitchZoneDisarmReport>
<!--req, 支持钥匙布撤防防区对子系统进行撤防操作时发送撤防报告-->
<notSupportSubsystemEnable>false</notSupportSubsystemEnable>
<!--req, 子系统使能反向能力，返回true表示不支持，不返回或者返回false表示支持-->
</Part1Config>
<Part2Config>
<armTime>true</armTime>
<!--req, 布撤防时间设置-->
<alarmInAdvance min="" max=""/>
<!--req, 自动布防提前提示时间，单位：分钟-->
<jointZone>true</jointZone>
<!--req, 支持子系统关联防区-->
<jointKeyboard>true</jointKeyboard>
<!--req, 支持子系统关联键盘-->
<jointOperaterUser>true</jointOperaterUser>
<!--req, 支持子系统关联操作用户-->
<alarmRemindTime>
<enable>true</enable>
<!--req, 是否支持布防提示时间设置-->
<maxDay>7</maxDay>
<!--req, 最大天数-->
<timesegment>8</timesegment>
<!--req, 时间段-->
</alarmRemindTime>
</Part2Config>
</SubSystemConfig>
<subSystemArmType opt="armAway,armInstant,armStay"/>
<!--req, 子系统布防类型，外出布防，即时布防，留守布防-->
<SubSystemDisarm>
<enabled>true</enabled>
<!--req, 支持子系统撤防-->
</SubSystemDisarm>
<SubSystemClearAlarm>
<enabled>true</enabled>
<!--req, 支持子系统消警-->
</SubSystemClearAlarm>
<SubSystemCloseWarning>
<enabled>true</enabled>
<!--req, 支持关闭子系统故障提示音-->
</SubSystemCloseWarning>
<SubSystemGroupBypass>
<enabled>true</enabled>
<!--req, 支持子系统组旁路，组旁路恢复-->
</SubSystemGroupBypass>

<subSystemIDLength min="" max=""/>
<!--req, 子系统ID名称长度-->
<subSystemID opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req, 子系统ID支持的字符-->
<keyZoneArmReportEnable>true</keyZoneArmReportEnable >
<!--req, 钥匙防区上传布防报告使能-->
<keyZoneArmEnable>true</keyZoneArmEnable >
<!--req, 钥匙防区上使能-->
<oneKeyAlarmEnable>true</oneKeyAlarmEnable >
<!--req, 一键布防使能-->

<singleZoneAlarmEnable>true</singleZoneAlarmEnable >
<!--req, 单防区布撤防使能-->
<centerType>true</centerType >
<!--req, 中心账号类型-->
<centerAccount opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req, 中心账号支持的字符-->
<centerAccountV40 opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req, 中心账号支持的字符-->
<SubSystemControl>
<mandatoryAlarm>true</mandatoryAlarm >
<!--req, 支持子系统强制布防-->
</SubSystemControl>

</SubSystem>

<telModuleNo min="" max=""/>
<!--req, 电话模块序号-->
<DialConfig>
<PhoneCenterParameter>
<centerPhoneNumberLength min="" max=""/>
<!--req, 中心号码长度-->
<centerPhoneNumber opt="0,1,2,3,4,5,6,7,8,9"/>
<!--req, 中心号码支持的字符-->
<repeatCall min="" max=""/>
<!--req, 拨号次数，单位：次-->
<dialDelay min="" max=""/>
<!--req, 拨号延时，单位：秒-->
<pstnTransMode opt="DTMF 5/S,DTMF 10/S"/>
<!--,传输方式-->
<receiveID opt="0,1,2,3,4,5,6,7,8,9,F,E"/>
<!--,接收账号中支持的字符-->
<receiveIDLength min="" max=""/>
<!--req, 接收账号长度-->
<enabled opt=”true,false”/>
<!--opt ,是否支持使能，不支持不返回-->
</PhoneCenterParameter>
<reportPeried min="" max=""/>
<!--req, 测试报告上传周期，单位：小时-->
<firstReportTime min="" max=""/>
<!--req, 第一条测试报告上传时间，单位：分钟-->
<reportEnable>true</reportEnable>
<!--req, 是否启用测试报告上传-->
</DialConfig>

<DialMode>
<enabled>true</enabled>
<!--req, 拨号启用方式-->
</DialMode>

<DialSchedule>
<hideConfig>true</hideConfig>
<!--opt, 拨号计划配置是否隐藏-->
</DialSchedule >

<GPRSModuleNo min="" max=""/>
<!--req, GPRS模块序号-->
<thirdGeneralModuleNo min="" max=""/>
<!--req, 3G模块序号-->
<WirelessNetworkConfig>
<NetParameter>
<domainName>true</domainName>
<!--req, 域名-->
<reportProtocol opt="private,NAL2300,ehome"/>
<!--req, 支持的报警上传协议-->
<deviceIDLength min="" max=""/>
<!--req, 设备ID名称长度-->
<deviceID opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req,设备ID支持的字符-->
<protocolList>
<!--req, 报警上传协议相关能力-->
<private>
<deviceIDLength min="" max=""/>
<!--req, 设备ID名称长度-->
</private>
<NAL2300>
<deviceIDLength min="" max=""/>
<!--req, 设备ID名称长度-->
</NAL2300>
</protocolList>
<addressType opt="IP/IPV6, domain"/>
<!--req,支持的地址类型-->
<protocolVersion opt="v2.0,v4.0,v5.0"/>
<!--opt,EHome协议版本-->
<EHomeKey min="" max=""/>
<!--opt,EHome Key（用于EHome 5.0版本，只能配置，不能获取）-->

</NetParameter>
<netType opt="1, 2"/>
<!--req, 网卡类型（1-主网卡，2-扩展网卡）-->
<APNName>true</APNName>
<!--req, APN名称-->
<APNUserName>true</APNUserName>
<!--req, APN用户名称-->
<APNPassword>true</APNPassword>
<!--req, APN用户密码-->
<reconnectTime min="" max=""/>
<!--req, 连接失败后启动重连的时间，单位：10秒-->
<overTime min="" max=""/>
<!--req, 超时时间，超过该时间没有收到有效数据则重连，单位：30秒-->
<detectLinkTime min="" max=""/>
<!--req, 探测时间，探测链路是否还保持，单位：10秒-->
<SIMNumberLength min="" max=""/>
<!--req, SIM卡号，手机号-->
<SIMIP>true</SIMIP>
<!--req, 登陆网络后网络给分配的IP地址，只能获取-->
</WirelessNetworkConfig>
<netModuleNumber min="" max=""/>
<!--reg, 网络模块数目-->
<netModuleAddr min="" max=""/>
<!--reg, 网络模块地址-->

<netModuleNo min="" max=""/>
<!--req, 有线网络模块序号-->
<NetworkConfig>
<NetParameter>
<domainName>true</domainName>
<!--req, 域名-->
<reportProtocol opt="private,NAL2300,ehome"/>
<!--req, 支持的报警上传协议-->
<deviceIDLength min="" max=""/>
<!--req, 设备ID名称长度-->
<deviceID opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req, 设备ID支持的字符-->
<protocolList>
<!--req, 报警上传协议相关能力-->
<private>
<deviceIDLength min="" max=""/>
<!--req, 设备ID名称长度-->
</private>
<NAL2300>
<deviceIDLength min="" max=""/>
<!--req, 设备ID名称长度-->
</NAL2300>
</protocolList>
<addressType opt="IP/IPV6, domain"/>
<!--req, 支持的地址类型-->
</NetParameter>
<netType opt="1, 2"/>
<!--req, 网卡类型: 1-主网卡, 2-扩展网卡-->
<NetModuleUpgrade>
<enabled>true</enabled>
<!--网络模块支持升级-->
</NetModuleUpgrade >
<protocolVersion opt="v2.0,v4.0,v5.0"/>
<!--opt,EHome协议版本-->
<EHomeKey min="1" max="32"/>
<!--opt,EHome Key（用于EHome 5.0版本，只能配置，不能获取）-->

</NetworkConfig>

<centerGroupNo min="" max=""/>
<!--req, 中心组序号-->
<ReportModeConfig>
<enabled>true</enabled>
<!--req, 报警上传方式配置-->
<valid>true</valid>
<!--req 是否启用-->
<alarmMode opt="T1, T2,N1,N2,G1,G2,N3,N4"/>
<!--opt,报警通道-->
<dataType opt="allAlarmData,allNonAlarmData,allData,zoonAlarmData,zoonNonAlarmData"/>
<!--数据类型-->
<alarmChannelMode>true</alarmChannelMode>
<!--支持报警通道类型配置-->
<dealFailCenter>true</dealFailCenter>
<!--req向指定中心组发送报告-->
<uploadZoneReport opt="upload, notUpload" />
<uploadNonZoneReport opt="softZoneReport,systemStatusReport,cancelReport,testReport,armReport,disarmReport,
duressReport,alarmRestoreReport,bypassReport,bypassRestoreReport,detectorConnectReport,
detectorPowerReport,videoAlarmReport"/>
<!--req,非防区报警报告，系统状态报告，取消报告，测试报告，布防报告，撤防报告，挟持报告，报警恢复报告，
旁路报告，旁路恢复报告，探测器连接状态报告（在线/离线），探测器电量状态报告（正常/欠压），视频报警报告-->
<alarmChanNum min="" max=""/>
<!--通道个数，一个主通道，剩余都是备份通道” "反向能力，如果没有设备返回该能力，则4个通道都支持-->
<alarmNetCard opt="primaryCard-1, primaryCard-2，extendCard-1，extendCard-2"/>
<!--opt,报警网卡中心-->
</ReportModeConfig>

<ProcessFaultConfig>
<supportFaultType opt="ACOutage,lowVoltageOfBattery,devicePreventDisassemble,telephoneOffLine,RS485busAbnormal,
networkAbnormal,wirelessAbnormal,expandbusAbnormal,hardDiskAbnormal,FPGAFault,sensorFault,
expandBoardAbnormal,WifiFault,RFSignalFault"/>
<!--req, 支持的故障类型，交流电断电，蓄电池欠压，主机防拆开，电话线掉线，485设备异常，网络故障，无线异常，扩展总线异常，
硬盘异常，FPGA故障，模拟量故障，防区扩展板异常，WIFI通信故障，RF信号干扰故障-->
<checkFault>true</checkFault>
<!--req, 故障检测-->
<overallFaultJointLED>true</overallFaultJointLED>
<!--req, 故障关联全局键盘指示灯输出-->
<overallFaultJointSound>true</overallFaultJointSound>
<!--req, 故障关联全局键盘声音输出-->
<subsystemFaultJointLED>true</subsystemFaultJointLED>
<!--req, 故障关联子系统键盘指示灯输出-->
<subsystemFaultJointSound>true</subsystemFaultJointSound>
<!--req, 故障关联子系统键盘声音输出-->
<faultJointFaultLight>true</faultJointFaultLight>
<!--req,故障关联故障指示灯输出-->
</ProcessFaultConfig>

<OverallFaultAlarmNo min="" max=""/>
<!--req, 全局键盘序号-->
<CloseOverallFaultAlarm>
<enabled>true</enabled>
<!--req, 关闭全局键盘故障提示音-->
</CloseOverallFaultAlarm>
<TriggerEventConfig>
<supportOverallEvent opt="ACOutage,lowVoltageOfBattery,telephoneOffLinek,networkAbnormal,wirelessNetworkAbnormal,harddiskException,485Exception,mBusException,3G4GSignalAbnormal,thirdHostOffline,WifiFault,RFSignalFault"/>
<!--req,支持的全局事件-->
<supportSubsystemEvent opt="enterDelayTime,exitDelayTime,arm,disarm,alarm, clearAlarm,AlarmRestore"/>
<!--req,支持的子系统事件-->
<overallEventTriggerAlarmoutOn>true</overallEventTriggerAlarmoutOn>
<!--req, 全局事件触发触发器开启-->
<overallEventTriggerAlarmoutOff>true</overallEventTriggerAlarmoutOff>
<!--req, 全局事件触发触发器关闭-->
<subsystemEventTriggerAlarmoutOn>true</subsystemEventTriggerAlarmoutOn>
<!--req, 子系统事件触发触发器开启-->
<subsystemEventTriggerAlarmoutOff>true</subsystemEventTriggerAlarmoutOff>
<!--req, 子系统事件触发触发器关闭-->
</TriggerEventConfig>

<BatteryVoltage>
<enabled>true</enabled>
<!--req, 支持蓄电池电压查询-->
</BatteryVoltage>
<AlarmHostLog>
<enabled>true</enabled>
<!--req, 支持报警主机日志查询-->
</AlarmHostLog>
<FaultAlarmUpload>
<enabled>true</enabled>
<!--req, 支持故障报警上传-->
</FaultAlarmUpload>
<RemoteUpgrade>
<enabled>true</enabled>
<!--req, 支持远程升级-->
</RemoteUpgrade>
<VoiceUpload>
<enabled>true</enabled>
<!--req, 支持语音上传-->
</VoiceUpload>
<VoiceDownload>
<enabled>true</enabled>
<!--req, 支持语音下载-->
</VoiceDownload>
<voiceNo min="" max=""/>
<!--,语音序号-->
<VoiceControl>
<enabled>true</enabled>
<!--req, 支持语音控制-->
</VoiceControl>
<UploadSafetyCabinState>
<enabled>true</enabled>
<!--req, 防护舱状态上传-->
</UploadSafetyCabinState>
<UploadAlarmoutStatus>
<enabled>true</enabled>
<!--req, 支持主动上传报警输出口状态-->
</UploadAlarmoutStatus>
<UploadSirenStatus>
<enabled>true</enabled>
<!--req, 支持主动上传警号状态-->
</UploadSirenStatus>
<AudioAssociateAlarmEventConfig>
<enabled>true</enabled>
<!--req, 音频跟随报警事件-->
</AudioAssociateAlarmEventConfig>
<CIDReportUpload>
<enabled>true</enabled>
<!--req, CID报告上传-->
</CIDReportUpload>

<RS485ExternalDeviceAlarmUpload>
<enabled>true</enabled>
<!--req, 485外接设备报警上传-->
</RS485ExternalDeviceAlarmUpload>
<GetExternalDeviceState>
<enabled>true</enabled>
<!--req, 获取外接设备状态-->
</GetExternalDeviceState>
<GetVariableList>
<enabled>true</enabled>
<!--req, 获取变量元素列表-->
<LocalSensorChannel>
<enable>true</enable>
<!--支持获取本地模拟量的变量列表-->
<channel>true</channel>
<!--通道号，具体的通道范围需要根据通道类型来定，比如类型为本地模拟量时，通道范围就从本地模拟量能力节点获取。这个channel节点只是表示获取变量元素列表的时候是否需要给设备传该参数-->
<subChannel>true</subChannel>
<!--子通道号，即槽位号-->
</LocalSensorChannel>
<LocalSwitchChannel>
<enable>true</enable>
<!--支持获取本地开关量的变量列表-->
<channel>true</channel>
<!--通道号-->
<subChannel>true</subChannel>
<!--子通道号，即槽位号-->
</LocalSwitchChannel>
<RS485Channel>
<enable>true</enable>
<!--支持获取485通道的变量列表-->
<channel>true</channel>
<!--通道号-->
<subChannel>true</subChannel>
<!--子通道号，即槽位号-->
</RS485Channel>
<AlarmVariableConfig>
<variableIndex attri="readonly">true</variableIndex>
<!--变量序号-->
<variableType attri="readonly" opt="sensor,switch"/>
<!--变量类型，模拟量，开关量-->
<variableDescribe attri="readonly">true</variableDescribe>
<!--变量描述-->
<limitLineType attri="readonly" opt="notSupport,twoLimitLines,fourLimitLines"/>
<!--变量限值类型-->
<OSDEnabled><!--req,xs:boolean--></OSDEnabled>
<!--OSD使能-->
</AlarmVariableConfig>
</GetVariableList>
<AlarmPointConfig>
<enable>true</enable>
<!--报警点号配置-->
<pointNo min="" max=""/>
<!--点号范围-->
<pointDescribe>true</pointDescribe>
<!--点号描述-->
<pointType opt="sensor,switch"/>
<!--支持的点号类型-->
<PointParam>
<enable>true</enable>
<!--点号参数-->
<SensorPoint>
<!--遥测点号参数-->
<measureHigh min="-10000.000" max="10000.000"/>
<!--req, 量程上限-->
<measureLow min="-10000.000" max="10000.000"/>
<!--req, 量程下限-->
<alarmMode opt="HHHH,HHHL,HHLL,HLLL,LLLL"/>
<!--,支持的报警模式-->
<alarmLimitValue1 min="-10000.000" max="10000.000"/>
<!--req, 报警限值1-->
<alarmLimitValue2 min="-10000.000" max="10000.000"/>
<!--req, 报警限值2-->
<alarmLimitValue3 min="-10000.000" max="10000.000"/>
<!--req, 报警限值3-->
<alarmLimitValue4 min="-10000.000" max="10000.000"/>
<!--req, 报警限值4-->
<osd>true</osd>
<!--req, 模拟量字符叠加-->
<sensitive min="0.010" max="1.000"/>
<!--req, 灵敏度-->
<RS485Sensitive min="" max=""/>
<!--opt, 485灵敏度-->
<osdUnit>true</osdUnit>
<!--opt,是否支持OSD叠加单位-->
</SensorPoint>
<SwitchPoint>
<enable>true</enable>
<!--req, 遥信点号参数-->
<ipcChanOsd min="" max=""/>
<!--opt,xs:boolean,是否支持OSD叠加,min/max表示通道个数范围-->
</SwitchPoint>
</PointParam>
<chanType opt="analogChan,switchChan,485Chan,netChan"/>
<!--req, 接入类型：1-本地模拟量通道，2-本地开关量通道，3-485通道，4-网络通道-->
<chanNo>true</chanNo>
<!--req, 通道号-->
<subChanNo>true</subChanNo>
<!--req, 槽位号-->
<variableNo>true</variableNo>
<!--req, 变量编号-->
</AlarmPointConfig>
<AlarmModeConfig>
<enable>true</enable>
<!--支持报警模式配置接口-->
<dataUploadMode opt="uploadByChannel,uploadByPoint"/>
</AlarmModeConfig>
<AlarmHostDataUpload>
<enable>true</enable>
<!--支持报警数据上传接口-->
</AlarmHostDataUpload>
<PrinterConfig>
<enablePrinter>true</enablePrinter>
<!--是否启用打印机-->
<printTime>true</printTime>
<!--是否打印时间-->
<faultDetect>true</faultDetect >
<!--是否支持故障检测-->
<alarmInfo opt="zoneAlarm,zoneAlarmRestore,emergencyKeypadAlarm,duressAlarm"/>
<!--报警事件,防区报警，防区报警恢复，紧急报警，挟持报警-->
<deviceInfo opt="ACLoss,ACLossRestore,systemLowBattery,systemLowBatteryRestore,PSTNFault,PSTNFaultRestore,
testReport,tamperAlarm,temperAlarmRestore,RS485deviceFault,RS485deviceFaultRestore,wirelessFault,
wirelessFaultRestore,networkFault,networkFaultRestore,BUSFault,BUSFaultRestore,harddiskFault,hardDiskFaultRestore,keyBoardLocked"/>
<!--设备信息,交流电断电、交流电断电恢复，蓄电池欠压、蓄电池欠压恢复、电话线断线、电话线断线恢复、
测试报告、防拆、防拆恢复、485设备掉线、485设备掉线恢复、无线网络异常、无线网络恢复正常、有线网络异常、
有线网络恢复正常、扩展总线异常、扩展总线恢复正常、硬盘故障、硬盘故障恢复、键盘锁定-->
<operateInfo opt="arm,disarm,clearAlarm,bypass,bypassRestore,enterProgram,exitProgram,restart"/>
<!--操作事件，布防，撤防， 消警，旁路，旁路恢复，进入编程，退出编程，重启-->
</PrinterConfig>
<SearchHistoryData>
<SearchCondition>
<majorType opt="all,time,type,timeAndtype"/>
<!--主类型:全部，按时间，按类型，时间+类型-->
<minorType opt="point,variable"/>
<!--次类型：点号，通道+槽位+变量号-->
<startTime>true</startTime>
<!--开始时间支持-->
<stopTime>true</stopTime>
<!--结束时间支持-->
<chanType opt="sensor,switch,RS485"/>
<!--通道类型：模拟量，开关量， 485通道-->
<sensorChan min="1" max="16"/>
<RS485Chan>
<chanNo min="1" max="8"/>
<!--通道号-->
<subChanNo min="1" max=""/>
<!--槽位号-->
</RS485Chan>
<variableNo min="1" max=""/>
<!--变量号-->
<pointNo min="" max=""/>
<!--点号-->
</SearchCondition>
<HistoryData>
<struTime>true</struTime>
<!--时间点-->
<chanType opt="sensor,switch,RS485"/>
<!--通道类型：模拟量，开关量，485通道-->
<chanNo min="1" max=""/>
<!--通道号-->
<subChanNo min="1" max=""/>
<!--槽位号-->
<variableNo min="1" max=""/>
<!--变量号-->
<pointNo min="" max=""/>
<!--点号-->
<data>true</data>
<!--历史数据-->
</HistoryData>
</SearchHistoryData>
<OutputScheduleRuleCfg>
<OutputScheduleRuleList>
<ruleNum>3</ruleNum>
<!--req,规则数目-->
<OutputScheduleRule>
<!--req,时控输出规则-->
<enabled>true</enabled>
<!--req,规则启用性 -->
<scheduleDate>true</scheduleDate>
<!--req,日期段-->
<OutputScheduleList>
<scheduleNum>3</scheduleNum>
<!--时控输出数目-->
<OutputSchedule>
<!--req,时控输出参数-->
<scheduleTime>true</scheduleTime>
<!--req,时间段-->
<state opt = "off,on"/>
<!--req,off-关闭,on-开启-->
<triggerIndex min="0" max="512"/>
<!--req,关联触发器-->
</OutputSchedule>
</OutputScheduleList>
</OutputScheduleRule>
</OutputScheduleRuleList>
<isSupportSingleOutputScheduleRule>true</isSupportSingleOutputScheduleRule>
</OutputScheduleRuleCfg>
<LED>
<LEDScreen>
<nameLength min="1" max="32"/>
<!--req,LED屏幕名称长度-->
<transMode opt="serial"/>
<!--req,通信方式,serial-串口通信-->
<protocol>true</protocol>
<!--req,LED屏幕协议-->
<color opt = "monochrome,bicolour,256GrayDualColor,fullcolor"/>
<!--req,monochrome-单色,bicolour-双色,256GrayDualColor—256级灰度双基色,fullcolor-全彩色-->
<dataPolarity opt="negative,positive"/>
<!--req,数据极性,negative-负极,positive-正极-->
<OEPolarity opt="low,high"/>
<!--req, OE(Output Enable)电平,low-低有效,high-高有效-->
<scanMode opt="1/16,1/8,1/4,1/2,static"/>
<!--req,扫描方式-->
<width min="16" max="2048"/>
<!--req,LED屏幕宽度-->
<height min="16" max="2048"/>
<!--req,LED屏幕高度-->
</LEDScreen>
<LEDContent>
<contentLength min="32" max="512"/>
<!--req,字幕内容长度-->
<contentAct opt="static,quick-play,left,right,up,down"/>
<!--req,字幕动作,static-静态,quick-play-快速打出,left—向左移动,right-向右移动,up-向上移动,down-向下移动-->
<contentSpeed min="1" max="24"/>
<!--req,显示速度-->
<contentStayTime min="0" max="127.5"/>
<!--req,停留时间-->
</LEDContent>
<LEDSwitch>
<manual>true</manual>
<!--req,手动开关-->
<Auto>
<!--req,自动开关-->
<switchTimeNum>3</switchTimeNum>
<!--req,时间段数目-->
<SwitchTime>
<valid>true</valid>
<!--req,有效性-->
<onTime>true</onTime>
<!--req,开机时间-->
<offTime>true</offTime>
<!--req,关机时间-->
</SwitchTime>
</Auto>
</LEDSwitch>
<LEDTimeAdjustment>true</LEDTimeAdjustment>
<!--LED校时-->
<LEDBrightnessAdjustment>
<!--req,LED亮度调节-->
<manual>true</manual>
<!--req,手动调整-->
<Auto>
<!--req,自动调整-->
<BrightnessStep>
<valid>true</valid>
<!--req,分时亮度调节是否有效-->
<timeSegNum>48</timeSegNum>
<!--req,时间段数目-->
</BrightnessStep>
</Auto>
</LEDBrightnessAdjustment>
<LEDStatus>
<!--req,设备状态-->
<switchState opt="off,on"/>
<!--req,off-关机状态,on-开机状态-->
<brightNess min="0" max="15"/>
<!--req,亮度值-->
</LEDStatus>
</LED>
<safetyCabinWorkMode opt="nobody-doorOpen,nobody-doorLocked"/>
<!--req,防护舱工作模式,nobody-doorOpen-无人时门常开,nobody-doorLocked-无人时门常锁-->
<isSptFaintToUnlock opt="true">
<!--opt,xs:boolean,是否支持晕倒报警一段时间后外部按钮可开门配置-->
</isSptFaintToUnlock>
<isSptOvertimeToUnlock opt="true">
<!--opt,xs:boolean,是否支持使用超时后外部按钮可开门配置-->
</isSptOvertimeToUnlock>
<SafetyCabinPersonSignal>
<!--req,防护舱人信号探测参数-->
<sensorType opt="infrared-shooting,curtain-sensor"/>
<!--req,传感器类型,infrared-shooting-红外对射,curtain-sensor-幕帘传感器-->
<sensorSensitivity min="0" max="100"/>
<!--req,传感器灵敏度-->
<devUseTimeOut min="5" max="30"/>
<!--req,设备使用超时时间-->
<curtainDelayTime min="0" max="10"/>
<!--req,幕帘传感器探测延时时间-->
<curtainResponseTime min="0" max="300"/>
<!--req,幕帘人状态变化控制器响应时间-->
<faintToEmergencyTime min="" max=""/>
<!--opt,xs:integer,晕倒告警生效时间-->
<followDetectorSensitivity min="" max=""/>
<!--opt,xs:integer,尾随检测灵敏度-->
<manyPersonSensitivity min="" max=""/>
<!--opt,xs:integer,多人检测灵敏度-->
</SafetyCabinPersonSignal>
<SafetyCabinCascadeCfg>
<enable>true</enable>
<!--req,是否支持防护舱级联-->
</SafetyCabinCascadeCfg>
<SafetyCabinWorkMode>
<setConfig>true</setConfig>
<!--req,是否支持防护舱工作模式设置-->
</SafetyCabinWorkMode>
<SafetyCabinStatus>
<getConfig>true</getConfig>
<!--req,是否支持配置方式获取防护舱状态-->
</SafetyCabinStatus>

<WhiteAlarm>
<!--req,授权名单配置-->
<AllowList>
<listNum>6</listNum>
<!--req,授权名单列表数默认为6个-->
<enable>true</enable>
<phoneNum>true</phoneNum>
<!--手机号码是否显示-->
<alarmArmRight min="0" max="32"/>
<!--req,子系统布防权限-->
<alarmDisarmRight min="0" max="32"/> <!--req,子系统撤防权限-->
<clearAlarmRight min="0" max="32"/> <!--req,消警权限-->
<zoneReport>true</zoneReport>
<!--req,防区报告，是否上传-->
<noneZoneReport opt="softZoneReport,systemStateReport,cancelReport,testReport,armReport,disarmReport,
hijackReport,alarmRetoreReport,byPassReport,byPassRestoreReport,detectorConnectReport,
detectorPowerReport,videoAlarmReport"/>
<!--req,软防区报告，系统状态防区报告，取消报告，测试报告，布防报告，撤防报告，挟持报告，报警恢复报告，
旁路报告，旁路恢复报告，探测器连接状态报告（在线/离线），探测器电量状态报告（正常/欠压），视频报警报告-->
</AllowList>
<messageInterval opt="0,1,2,3,4,5,6"/>
<!--req,0s,10s,30s,1min,5min,10min,自定义（1~5999s）-->
<defineInterval min="1" max="5999"/>
<!--req,自定义间隔时间-->
</WhiteAlarm>
<SubSystemTimeAlarm>
<NormalSchedule>
<maxDay>7</maxDay>
<!--req,最大天数-->
<timesegment>8</timesegment>
<!--req,时间段-->
<time>true</time>
<!--req,日常计划时间-->
<alarmType opt="outArm,stayArm,immediatelyArm,disArm"/>
<!--req,外出布防，留守布防，即时布防，撤防-->
</NormalSchedule>
<enableNormalSchedule>true</enableNormalSchedule>
<!--req,是否启用日常计划-->
<enableForceArm opt="forceArm,disForceArm"/>
<!--req,强制布防，非强制布防-->
</SubSystemTimeAlarm >
<!--req,子系统定时布撤防-->
<PriorSubSystemAlarm>
<enableForceArm opt="forceArm,disForceArm"/>
<!--req,强制布防，非强制布防-->
<PriorSchedule>
<PriorSchedTimeNum>12</PriorSchedTimeNum>
<!--req,时间段-->
<dataTime>true</dataTime>
<!--req,日常计划时间-->
<OneDayTime>
<timesegment>8</timesegment>
<!--req,时间段-->
<time>true</time>
<!--req,优先计划时间-->
<alarmType opt="outArm,stayArm,immediatelyArm,disArm"/>
<!--req,外出布防，留守布防，即时布防，撤防-->
</OneDayTime>
</PriorSchedule>
</PriorSubSystemAlarm>
<ModuleList>
<enable>true</enable>
<moduleType opt="keyBoard,trigger,zone,networkModule"/>
<!--req,LED,LCD,触发器,防区,网络模块-->
<keyBoardType opt="LCD,LED"/>
<!--req,键盘类型，LCD,LED-->
<TriggerType opt="localTrigger,4trigger,8trigger,singleZoneTrigger,32trigger"/>
<!--req,本地触发器，4路触发器，8路触发器，单防区触发器，32路触发器-->
<ZoneType opt="localZone,singleZone,2Zone,8Zone,8sensorZone,singleZoneTrigger"/>
<!--req,本地防区,单防区,双防区,8防区, 8路模拟量防区,单防区触发器-->
<moduleAddress>true</moduleAddress>
<moduleInfo>true</moduleInfo>
<!--req,模块信息-->
<versionInfo>true</versionInfo>
<!--req,版本信息-->
</ModuleList>
<DeviceSelfCheckState>
<rs485Chan>64</rs485Chan>
<!--req,485通道通断情况-->
<senorChan>true</senorChan>
<!--req,模拟量无效通道号-->
</DeviceSelfCheckState>
<AirCondition>
<enable>true</enable>
<!--req,是否关机-->
<mode opt="refrigeration,hearting,dehumidifier,auto"/>
<!--req,制冷，制热，抽湿，自动-->
<temperature min="16" max="30"/>
<!--req,温度16-30-->
</AirCondition>
<AuxPower>
<enable>true</enable>
<!--req,是否启用-->
<auxType opt="DC12V,DC24V"/>
<!--req,输出类型DC12V，DC24V-->
</AuxPower>
<IsSupportAlarmChanAbility>
<enable>true</enable>
<!--req,是否支持获取报警输入通道能力-->
</IsSupportAlarmChanAbility>

<AlarmCaptrue>
<!--req,报警抓图能力-->
<AlarmCaptrueCfg>
<channel>1</channel>
<!--req,视频通道号-->
<interval min="0" max="65535"/>
<!--req,间隔时间-->
<Resolution>
<index>1</index>
<!--req,索引-->
<name>CIF</name>
<!--req,名称-->
<beforeAlarmPic min="0" max="40"/>
<!--req,报警前图片数-->
<afterAlarmPic min="0" max="40"/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>2</index>
<!--req,索引-->
<name>QCIF</name>
<!--req,名称-->
<beforeAlarmPic min="0" max="80"/>
<!--req,报警前图片数-->
<afterAlarmPic min="0" max="80"/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>3</index>
<!--req,索引-->
<name>4CIF</name>
<!--req,名称-->
<beforeAlarmPic min="0" max="10"/>
<!--req,报警前图片数-->
<afterAlarmPic min="0" max="10"/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>4</index>
<!--req,索引-->
<name>2CIF</name>
<!--req,名称-->
<beforeAlarmPic min="0" max="20"/>
<!--req,报警前图片数-->
<afterAlarmPic min="0" max="20"/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>5</index>
<!--req,索引-->
<name>WD1</name>
<!--req,名称-->
<beforeAlarmPic min="" max=""/>
<!--req,报警前图片数-->
<afterAlarmPic min="" max=""/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>6</index>
<!--req,索引-->
<name>VGA</name>
<!--req,名称-->
<beforeAlarmPic min="" max=""/>
<!--req,报警前图片数-->
<afterAlarmPic min="" max=""/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>7</index>
<!--req,索引-->
<name>XVGA</name>
<!--req,名称-->
<beforeAlarmPic min="" max=""/>
<!--req,报警前图片数-->
<afterAlarmPic min="" max=""/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>8</index>
<!--req,索引-->
<name>720P</name>
<!--req,名称-->
<beforeAlarmPic min="" max=""/>
<!--req,报警前图片数-->
<afterAlarmPic min="" max=""/>
<!--req,报警后图片数-->
</Resolution>
<Resolution>
<index>9</index>
<!--req,索引-->
<name>1080P</name>
<!--req,名称-->
<beforeAlarmPic min="" max=""/>
<!--req,报警前图片数-->
<afterAlarmPic min="" max=""/>
<!--req,报警后图片数-->
</Resolution>
</AlarmCaptrueCfg>
</AlarmCaptrue>

<KeyboardAlarm>
<enableKeyboardAlarm>true</enableKeyboardAlarm>
<enableAlarmSound>true</enableAlarmSound>
</KeyboardAlarm>
<WirelessBusiness>
<enable>true</enable>
<businessType opt="TelephoneCharges,DataFlow"/>
<!--req,查询业务类型-->
<communicationOperatorNum opt="0,1,2,3,4,5,6,7,8,9"/>
<!--req,运营商号码支持的字符-->
<queryCode opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req,业务查询代码支持的字符-->
</WirelessBusiness>
<RemoteController>
<!--req,遥控器-->
<enable>true</enable>
<deviceID min="1" max="32"/>
<!--req,设备（遥控器）号-->
<IsSupportkeyboardAddr>true</IsSupportkeyboardAddr>
<!--req,是否接收键盘的地址-->
<keyboardAddr min="0" max="31"/>
<!--req,dep IsSupportkeyboardAddr -->
<!--req,键盘地址-->
<subSystemID min="1" max="8"/>
<!--req,设备（遥控器）所属子系统号-->
<deviceSnLength min="0" max="9"/>
<!--req,设备（遥控器）序列号长度-->
<deviceSnType opt="0,1,2,3,4,5,6,7,8,9"/>
<!--req,设备（遥控器）序列号类型-->
<alarmRight opt="armRight,disArmRight,armReportRight,disArmReportRight,clearAlarmRight"/>
<!--req,支持的权限类型：布防权限,撤防权限,布防报告权限,撤防报告权限,消警权限-->
<enabledDel opt="true,false"/>
<!--opt,支持删除遥控器用户-->
<alwaysOpenRight opt="Allow,NotAllow"></alwaysOpenRight>
<!--是否允许常开：Allow-允许，NotAllow-不允许允许-->
<openingDirection opt="InDirection,OutDirection"></openingDirection>
<!--开门方向：InDirection-进门方向，OutDirection-出门方向-->
</RemoteController>
<CenterServerConfig>
<!--req,报警中心服务器配置-->
<addressType opt="IP/IPV6, domain"/>
<!--req,支持的地址类型-->
<time min="" max=""/>
<!--req,报警间隔时间-->
</CenterServerConfig>
<ZoneLinkageChannel>
<!--req,防区；联动视频通道-->
<enable>true</enable>
<!--req,是否支持防区联动视频通道-->
<addressType opt="IP/IPV6, domain"/>
<!--req,支持的地址类型-->
<ddnsType opt="IPServer,HiDDNS"/>
<supportZoneNo min="" max=""/>
<!--req,支持的防区-->
</ZoneLinkageChannel>
<SafetyCabinCascadeCfg>
<enable>true</enable>
<!--req,是否支持防护舱级联-->
</SafetyCabinCascadeCfg>
<SafetyCabinWorkMode>
<setConfig>true</setConfig>
<!--req,是否支持防护舱工作模式设置-->
</SafetyCabinWorkMode>
<SafetyCabinStatus>
<getConfig>true</getConfig>
<!--req,是否支持配置方式获取防护舱状态-->
</SafetyCabinStatus>
<KeyboradUserLockCfg>
<errorTimes min="" max=""/>
<!--req,输入键盘用户密码错误次数（锁定键盘）-->
<lockTime min="" max=""/>
<!--req,键盘锁定时间，秒-->
</KeyboradUserLockCfg>

<isSptModbusProtoCfgFile opt="true,false">
<!--opt,xs:boolean,是否支持Modbus协议配置文件导入导出-->
</isSptModbusProtoCfgFile>
<SptGenerateOutputCtrl>
<!--opt,是否支持通用扩展输出模块控制-->
<generateOutputNum>
<!--opt,xs:integer,通用扩展输出模块的输出通道数量-->
</generateOutputNum>
</SptGenerateOutputCtrl>

<noZoneRelatedTrigger opt="true,false"/>
<!--opt 是否不支持配置防区关联触发器-->
</AlarmHostAbility>


DEVICE_ABILITY_INFO_BINOCULAR

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 双目能力集描述 -->
<BinocularAbility version="2.0">
<outputVideoType opt="compositeImage, depthImage"/>
<!--输出视频类型，compositeImage-合成图, depthImage-深度图-->
<!--标定-->
<Calibration>
<!--直接标定-->
<DirectCalibration>
<cameraHeight min="100" max="1000"/>
<!--摄像机高度，单位：厘米-->
<pitchAngle min ="0" max="60"/>
<!--摄像机俯视角度-->
<inclineAngle min="-20" max="20"/>
<!--摄像机倾斜角度-->
</DirectCalibration>
<!--样本标定-->
<SampleCalibration>
<cameraHeight min="100" max="1000"/>
<!--摄像机高度，单位：厘米-->
<humanHeight min="130" max="255"/>
<!--人体身高，单位：厘米-->
<calSampleNum min="5" max="5"/>
<!--标定样本个数-->
</SampleCalibration>
<calibVerify>true</calibVerify>
<!--支持标定校验-->
<getCalibrationPic opt="true,false">
<!--获取双目标定图片NET_DVR_BV_CALIB_COND-->
</getCalibrationPic>
<PicCalibrationResult>
<!--获取双目外参标定结果NET_DVR_BV_CALIB_INFO-->
<humanHeight min="" max=""/>
<!--人体真实身高，单位cm -->
</PicCalibrationResult>
<HumanHeightCorrect>
<!--获取双目高度矫正数据NET_DVR_BV_HCORRECTION_COND-->
<picID min="" max=""/><!—标cc定图片名长度 -->
</HumanHeightCorrect>
<deleteCalibrationPic opt="true,false"><!—删除样本图片图片NET_DVR_BV_HCORRECTION_COND-->
</deleteCalibrationPic>

</Calibration>
<!--图像校正-->
<VideoCorrection>
<videoType opt="compositeImage, depthImage "/>
<!--支持的视频类型-->
<lensType opt="0-unknow,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm,7-4mm,8-6mm"/>
<!-- 镜头焦距类型，0-未知,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm, 7-4mm,8-6mm-->
<reprojectMatrix min="-1000" max="1000"/>
<!--重投影矩阵-->
<LeftCamera>
<internalMatrix min="-1000" max="1000"/>
<!--内参矩阵-->
<distCoeffs min="-1000" max="1000"/>
<!--镜头畸变系数-->
<rotateMatrix min="-1000" max="1000"/>
<!--旋转矩阵-->
<projectMatrix min="-1000" max="1000"/>
<!--投影矩阵-->
</LeftCamera>
<RightCamera>
<internalMatrix min="-1000" max="1000"/>
<!--内参矩阵-->
<distCoeffs min="-1000" max="1000"/>
<!--镜头畸变系数-->
<rotateMatrix min="-1000" max="1000"/>
<!--旋转矩阵-->
<projectMatrix min="-1000" max="1000"/>
<!--投影矩阵-->
</RightCamera>
</VideoCorrection>
</BinocularAbility>


DEVICE_ABILITY_INFO_CHANINPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备通道输入能力集描述 -->
<ChannelInputAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
<RecordPlan>
<supportRecordType opt="CMR,MOTION,ALARM,EDR,ALARMANDMOTION,command,INTELLIGENT,pir,wlsensor,
callhelp,AllEvent,intelligentTraffic,LineDetection,FieldDetection,AudioDetection,
scenechangedetection,smartDetection,facedetection,POS,regionEntrance,regionExiting,
loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,fireDetection,
shipsDetection,thermEarlyWarning,thermAlarm,thermDiffAlarm,thermometryOffLineAlarm,
alarmInAlarm,emergencyCallhelpAlarm,consultAlarm,vcaEventGetUp,vcaEventAdvReachHeight,
vcaEventToiletTarry"/>
<!--req, CMR-定时, MOTION-移动侦测, ALARM-报警, EDR- 报警|移动侦测, ALARMANDMOTION- 报警&移动侦测, command-命令触发,
INTELLIGENT-智能报警, pir-PIR, wlsensor-无线报警, callhelp-呼救报警, AllEvent-全部事件(移动侦测、PIR、无线、呼救等所有报警类型的"或"）,
intelligentTraffic-智能交通事件, LineDetection-越界侦测, FieldDetection-区域入侵侦测, AudioDetection-音频异常侦测,
scenechangedetection-场景变更侦测, smartDetection-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测）,
facedetection-人脸侦测, POS-POS录像, regionEntrance-进入区域侦测, regionExiting-离开区域侦测, loitering-徘徊侦测,
group-人员聚集侦测, rapidMove-快速运动侦测, parking-停车侦测, unattendedBaggage-物品遗留侦测, attendedBaggage-物品拿取侦测,
fireDetection-火点检测, shipsDetection-船只检测, thermEarlyWarning-测温预警, thermAlarm-测温报警, thermDiffAlarm-温差报警,
thermometryOffLineAlarm-离线测温报警, alarmInAlarm-防区报警, emergencyCallhelpAlarm-紧急求助, consultAlarm-业务咨询,
vcaEventGetUp-起身检测, vcaEventAdvReachHeight-折线攀高, vcaEventToiletTarry-如厕超时-->
<!--req, 反馈该节点的情况下, 返回设备支持的录像, 不返回的情况下, 是否支持全部事件录像根据录像能力中的allAlarmTypeRecord字段,
是否支持智能侦测或专业智能录像，根据RecordSchedule的individuallyRecordType字段处理-->
<allDayRecord opt="disable,enable"/>
<supportDay>7</supportDay>
<supportSched>8</supportSched>
<recordTime opt="0-5s,1-10s,2-30s,3-1min,4-2min,5-5min,6-10min"/>
<preRecorderTime opt="0-disable,1-5s,2-10s,3-15s,4-20s,5-25s,6-30s,7-0xffffffff"/>
<recorderDuration max="" unit="day"/>
<redundancyRec opt="disable,enable"/>
<audioRec opt="disable,enable"/>
<streamType opt="main,sub,third"/>
<passbackRecord opt="disable,enable"/>
<lockDuration max="" unit="hour"/>
<recordBackup opt="disable,enable"/>
<svcLevel opt="disable,0.5,0.75"/>
<recordManage opt="disable,enable"/>
</RecordPlan>
<RecordQuery>
<!--req,录像查询能力-->
<supportRecordType opt="CMR, MOTION, ALARM, EDR, ALARMANDMOTION,command,manual, INTELLIGENT, pir,wlsensor,
callhelp,AllEvent, intelligentTraffic,LineDetection,FieldDetection,AudioDetection,
scenechangedetection,smartDetection,facedetection,POS,regionEntrance,regionExiting,
loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,fireDetection,
shipsDetection,thermEarlyWarning,thermAlarm,thermDiffAlarm,alarmInAlarm,emergencyCallhelpAlarm,consultAlarm,thermometryOffLineAlarm,
vcaEventGetUp,vcaEventAdvReachHeight,vcaEventToiletTarry,allType"/>
<isSupportMainStreamSearch>
<!--opt, xs:boolean, 是否支持主码流搜索(不管设备端是否有其他码流类型录像，只搜索返回主码流录像),对应录像查找byStreamType为3的情况-->
</isSupportMainStreamSearch>
</RecordQuery>

<CameraInterface>
<cameraInterfaceEnable opt="true,false"/>
<!--req,是否支持设置,true-支持设置，false-不支持设置-->
<cameraInterfaceType opt="VGA,HDMI,YPbPr,SDI,FC"/>
</CameraInterface>
<WD1Enable opt="true,false"/>
<!--req,true-支持，false-不支持-->
<recordPlanAbility opt="substream,passback,lockduration,recordbackup,recordManage"/>
<!--req 录像计划能力，对应结构体NET_DVR_RECORD_V30只增加CVR新增的能力，默认其他均支持，CVR2.2.0和Netra3.0.0-->
<VCAFindFile>
<!--req, 是否支持智能事件查找，不支持不显示-->
<enabled>true</enabled >
<supportQuickSearch opt="true,false"/>
<!--opt是否支持快速检索，不支持不返回-->
<supportArchivedVolumeLabelSearch opt="true,false"/>
<!--opt是否支持按存档卷检索，不支持不返回-->
</VCAFindFile>
<!--对新设备需要既返回recordPlanAbility节点又要返回recordStreamType,recordBackup,LockDuration,recordArchive节点。
客户端优先解析recordStreamType，如果解析到该节点则继续析recordBackup,LockDuration,recordArchive节点，
如果解析不到则解析recordPlanAbility节点-->
<recordStreamType opt="0-mainstream,1-substream,2-main_and_sub,3-stream3,4-stream4,5-stream5"/>
<!--req,0-主码流，1-子码流，2-主码流&子码流，3-3码流-->
<recordBackup>true</recordBackup >
<!--req,支持录像回传-->
<LockDuration>
<!--req,支持录像锁定-->
<enabled>true</enabled>
</LockDuration>
<recordArchive>true</recordArchive>
<!--req,支持录像存档-->

<RecordSchedule>
<!--req,录像计划-->
<individuallyRecordType opt="smartDetection, intelligentRecord" />
<!--opt,支持单独配置的录像计划类型，仅对智能侦测、智能录像有效，其余的录像类型可用通用项13进行统一配置。
smartDetection-智能侦测, intelligentRecord-智能录像 -->
<supportRecordType opt="scheduled,motion,alarm,motionOrAlarm,motionAndAlarm,command,intelligentRecord,PIR,
wireless,callingForHelp,AllEvent,intelligentTraffic,overLineDetection,fieldDetection,
audioException,sceneChange,smartDetection,faceDetection,POS"/>
<!--req,反馈该节点的情况下，返回设备支持的录像，不返回的情况下，是否支持全部事件录像根据录像能力中的allAlarmTypeRecord字段，
是否支持智能侦测或专业智能录像，根据上面的individuallyRecordType字段处理-->
</RecordSchedule>

<PreviewDelayConfig>
<!--req,延时预览参数配置-->
<time min="" max=""/>
<!--req,预览延时时间-->
</PreviewDelayConfig>

<AreaMask>
<!--req,区域马赛克配置-->
<enable opt="true,false"/>
<!--req,是否支持区域马赛克配置，true-支持设置，false-不支持设置-->
<maskThick opt="8*8,16*16,32*32" default="16*16"/>
<!--req,马赛克厚度，薄码的区块大小为8*8，中码16*16，厚码32*32，默认为中码-->
<areaPointNum min="4" max="4"/>
<!--req 支持马赛克区域点个数-->
<xRange min="0" max="1000"/>
<!--req xs:integer 起始x坐标范围-->
<yRange min="0" max="1000"/>
<!--req xs:integer 起始y坐标范围-->
<widthRange min="1" max="500"/>
<!--req xs:integer 宽度范围-->
<HeightRange min="1" max="500"/>
<!--req xs:integer 高度范围-->
<supportMaskNum min="1" max="1"/>
<!--opt 支持马赛克路数-->
<AutoMask>
<!--opt,区域字段马赛克配置,不支持不返回本节点-->
<regionNum min="1" max="1"/>
<!--req 支持自动马赛克区域数，自动马赛克由于设备能力限制，当前只支持1个区域-->
<xRange min="0" max="1000"/>
<!--req xs:integer 起始x坐标范围-->
<yRange min="0" max="1000"/>
<!--req xs:integer 起始y坐标范围-->
<widthRange min="32" max="500"/>
<!--req xs:integer 宽度范围-->
<HeightRange min="32" max="500"/>
<!--req xs:integer 高度范围-->
</AutoMask>
</AreaMask>

<AudioDiacritical>
<!--req 音频变音配置-->
<enable opt="true,false"/>
<!--req,是否支持音频变音配置 true-支持设置，false-不支持设置-->
<bassValue min="0" max="100" default="50"/>
<!--req,支持高低音处理，越大声音越细，反之声音越粗，50-表示不变音-->
</AudioDiacritical>

<WDR>
<!--req 宽动态-->
<enabled opt="true,false"/>
<WDRLevel1 min="0" max="2"/>
<!--req 宽动态等级1-->
<WDRLevel2 min="0" max="2"/>
<!--req 宽动态等级2-->
</WDR>

<chanWorkMode opt="DVRmode,IPCMode"/>
<!--req,通道工作模式，主要针对的是设备的IP通道，支持前端工作模式及后端模式-->

<CorridorMode>
<supportCorridorMode opt="true,false"/>
<!--req,是否支持走廊模式，不支持不返回-->
<mirror opt="close,LeftRigh,UpDown,center"/>
<!--req,设备支持的镜像方式，0-关闭，1-左右，2-上下，3-中间-->
</CorridorMode>

<EventSearchType>
<!--opt，支持的报警事件类型 -->
<majorType opt="motion,alarmIn,vacBehavior,inquest,vcaDetect,pos,trialCase,streamID">
<!-- opt , xs:string 支持的主类型：motion-移动侦测,alarmIn-报警输入,vacBehavior-异常行为识别,inquest-审讯事件,vcaDetect-智能侦测,pos-Pos录像,trialCase-庭审案件,streamID-流ID事件 -->
</majorType>
<VcaBehavior>
<!--dep，异常行为识别-->
<type opt="traversePlane,enterArea,exitArea,intrusion,loitering,bagLeftTake,parking,run,highDensity,stickUp,installScanner,operateOverTime,faceDetect,bagLeft,bagTake,leavePostion,trailInfo,humanEnter,fallDownInfo,objectPaste,faceCaptureInfo,multlFacesInfo,audioAbnormalInfo,sunglassesFaceInfo,callingFaceInfo,violentMotion,safetyHelmet">
<!-- opt , xs:string 支持的类型：依次为 穿越警戒面、目标进入区域、目标离开区域、周界入侵、徘徊、丢包捡包、停车、奔跑、区域内人员密度、贴纸条、安装读卡器、操作超时、异常人脸、物品遗留、物品拿取、离岗事件、尾随、人员进入、倒地、异物粘贴区域、正常人脸、多张人脸、声强突变、戴墨镜人脸、打电话人脸、剧烈运动、安全帽检测 -->
</type>
</VcaBehavior>
<Inquest>
<!--dep，审讯事件 -->
<type opt="inquestStartInfo,inquestStopInfo,inquestTagInfo,inquestSegmentInfo">
<!-- opt , xs:string 支持的类型：依次为 审讯开始信息、审讯停止信息、重点标记信息、审讯片断状态信息 -->
</type>
</Inquest>
<VcaDetect>
<!--dep，智能侦测 -->
<type opt="traversePlane,fieldDetection,audioInput,soundIntensity,faceDetection,virtualFocus,sceneChange,pir,enterArea,exitArea,loitering,groupDetection,rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection">
<!-- opt , xs:string 支持的类型：依次为 越界侦测、区域入侵侦测、音频丢失侦测、声强突变侦测、人脸侦测、虚焦侦测、场景变更侦测、PIR报警、进入区域、目标离开区域、徘徊、区域内人员聚集、快速移动、停车、物品遗留、物品拿取、车辆检测 -->
</type>
</VcaDetect>
<TrialCase>
<!--dep，庭审案件 -->
<type opt="trialStartInfo,trialStopInfo,trialTagInfo,trialSegmentInfo,judgeCaseInfo">
<!-- opt , xs:string 支持的类型：依次为 庭审开始信息、庭审停止信息、庭审重点标记信息、庭审片断状态信息、庭审案件信息 -->
</type>
</TrialCase>
<StreamID>
<!--dep，流ID事件-->
<type opt="streamID,timing,motion,alarm,alarmOrMotion,alarmAndMotion,commandTrigger,manual,backupVolume,semaphore,hide,inverse,videoLoss,wireless,pir,callHelp,faceSnap,faceDetection,ITSPlate,PDC,sceneChange,defocus,audioException,traversePlane,intrusion,enterArea,exitArea,loitering,highDensity,run,parking,bagLeft,bagTake">
<!-- opt , xs:string 支持的类型：依次为 流ID、定时录像、移动侦测、报警录像、报警或移动侦测、报警和移动侦测、命令触发、手动录像、存档卷录像、信号量、遮挡、逆行、视频丢失、无线报警、PIR报警、呼救报警、人脸抓拍、人脸侦测、车辆检测、客流量统计、场景变更、虚焦侦测、音频异常、穿越警戒面、周界入侵、进入区域、离开区域、徘徊侦测、人员聚集、快速移动、非法停车、物品遗留、物品拿取 -->
</type>
</StreamID>
</EventSearchType>

</ChannelInputAbility>


DEVICE_ABILITY_INFO_CVR

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<CVRAbility version="2.0">
<!--req, CVR设备能力集描述 -->
<oneKeyConfigCVR>true</oneKeyConfigCVR>
<!--req, 是否支持一键配置CVR，对应NET_DVR_ONE_KEY_CONFIG命令，不支持不显示-->

<OneKeyConfigCVRV50>
<!--opt, 是否支持一键配置CVR—V50，对应NET_DVR_ONE_KEY_CONFIG_V50命令，不支持不返回-->
<raidType opt="raid5,raid6,raid95,singleDiskMode">
<!--req, xs:string, RAID类型：0- raid5，1- raid6，2- raid95（Vraid），3- 单盘模式（即不创建raid）-->
</raidType>
<spareRaidProportion min="" max="">
<!--req, xs:integer, (热备盘:RAID阵列)的比例：0- (0:1)，1-（1:1)，2- (1:2)，3- (1:3)，4- (1:4)，
5- (1:5)，6- (1:6)，7- (6:1)，8- (5:1)，9- (4:1),10- (3:1)，11- (2:1)-->
</spareRaidProportion>
<picQuota min="0" max="100">
<!--req, xs:integer, 图片卷比例，取值范围：0~100-->
</picQuota>
</OneKeyConfigCVRV50>

<restartCVRService>true</restartCVRService>
<!--req, 是否支持重启CVR服务，不支持不显示-->

<!--opt 是否支持一键配置SAN—V50，不支持不返回-->
<OneKeyConfigSANV50>
<raidType opt="raid5,raid6" def="">
<!--req, xs:string, RAID类型：0-raid5,1-raid6 -->
</raidType>
<spareRaidProportion min="" max="" def="">
<!--req, xs:integer, 热备盘：raid（阵列）的比例,0--（0:1）,1--（1:1）,2--（1:2）,3--（1:3）,4--（1:4）,5--（1:5）,6--（1:6） ,7--（6:1）,8--（5:1）,9--（4:1）,10--（3:1）,11--（2:1）-->
</spareRaidProportion>
</OneKeyConfigSANV50>

<NPlus0>
<!--opt, 是否支持获取N+0重定向信息，不支持不显示-->
<isSupport opt="true,false"/>
<!--opt, true-支持, false-不支持-->
</NPlus0>
<RecordCheck>
<!--opt, 是否支持录像检测，不支持不显示-->
<checkType opt="0,1"/>
<!--req, 0-录像是否完整, 1-录像是否完整&缺失录像的起止时间-->
<isRecordComplete opt="0,1"/>
<!--req, 0-完整, 1-不完整-->
</RecordCheck>
<AddRecordPassBackManul>
<!--opt, 是否支持手动添加录像回传任务，不支持不显示-->
<isSupport opt="true,false"/>
</AddRecordPassBackManul>
<GetAllRecordPassBackManulTask>
<!--opt, 是否支持获取所有手动录像回传任务，不支持不显示-->
<type opt="0,1,2,3,4"/>
<!--req, 查询方式：0-获取全部剩余任务, 1-根据流ID获取剩余任务, 2-获取全部任务, 3-根据流ID获取任务, 4-根据任务ID获取任务-->
<taskStatus opt="0,1,2"/>
<!--req, 任务状态，0-未执行，1-暂停中，2-已执行-->
<timeSegmentQuety opt="true,false"/>
<!--opt是否启用时间范围查询-->
</GetAllRecordPassBackManulTask>
<RecordPassBackManulTaskCtrl>
<!--opt, 是否支持控制手动录像回传任务，不支持不显示-->
<controlType opt="0,1"/>
<!--req, 控制方式,0-暂停所有手动任务，1-恢复所有手动任务-->
</RecordPassBackManulTaskCtrl>
<RecordPassBackManulTaskDel>
<!--opt, 是否支持删除手动录像回传任务，不支持不显示-->
<delType opt="0,1,2"/>
<!--req, 删除方式,0-根据任务ID删除，1-根据流ID删除任务，2-删除全部任务-->
</RecordPassBackManulTaskDel>
<RecordPassBackPlanConfig>
<!--opt, 是否支持录像回传计划配置，不支持不显示-->
<enable opt="true,false"/>
<!--req, 是否启用，0-不启用，1-启用-->
<passBackWeek opt="true,false"/>
<!--req, 是否按周回传，0-否，1-是-->
<allDay opt="true,false"/>
<!--req, 是否启用全天回传，0-否，1-是-->
</RecordPassBackPlanConfig>
<GetSegmentRecordtotalSize>
<!--opt, 是否支持获取录像段总大小，不支持不显示-->
<isSupport opt="true,false"/>
</GetSegmentRecordtotalSize>
<DeviceStorageStatus>
<!--opt, 是否支持获取设备存储信息，不支持不显示-->
<capacityTotal min="" max="" />
<!--req, 设备存储总容量-->
<freeSpaceTotal min="" max="" />
<!--req, 设备存储剩余总空间-->
<lockedRecordSpace min="" max="" />
<!--req, 设备所有已加锁录像总存储容量-->
<unLockedRecordSpace min="" max="" />
<!--req, 设备所有未加锁总存储容量（包含未加锁录像和剩余存储）-->
</DeviceStorageStatus>
<OnlineUser>
<!--opt, 是否支持获取在线用户，不支持不显示-->
<onlineUserCount min="" max="" />
<!--req, 登录设备的用户数-->
</OnlineUser>
</CVRAbility>


DEVICE_ABILITY_INFO_DYNAMIC

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 前端参数动态能力集描述-->
<CameraParaDynamicAbility version="2.0">
<channelNO>1</channelNO>
<!--req, 通道号 oxff-全部;可以是通道的组合-->
<ExposureSet>
<!--req, 0-自动*8-40000*8us、1-自动*5-40000*5us、2-自动*4-40000*4us、3-自动*2-40000*2us、
4-1/25-40000us、5-1/50-20000us、6-1/100-10000us、7-1/250-4000us、8-1/500-2000us、
9-1/750-1333us、10-1/1000-1000us、11-1/2000-500us、12-1/4000-250us、13-1/10,000-100us、14-1/100,000-10us -->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14</Range>
<Default>4</Default>
<!--req, 默认值-->
</ExposureSet>
<vbrAverageCap>
<!--opt, xs:integer, in kbps,该节点依赖于输入信息中的VbrAverageCapDynamicLinkTo-->
</vbrAverageCap>
</CameraParaDynamicAbility>


DEVICE_ABILITY_INFO_EVENT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备报警事件处理能力集描述 -->
<!--req, EventAbility：异常、报警输入输出报警处理能力-->
<!--req, 对于该能力中的ExceptionAlarm、AlarmIn、AlarmOut节点，从设备获取能力，如果设备支持能力按能力解析；
若设备不支持按SDK接口全部显示，即异常类型全部显示，报警输入和报警输出的布防时间段为8，报警输出延时以SDK定义的全值显示。-->

<EventAbility version="2.0">
<channelNO>1</channelNO><!--req,通道号-->
<ExceptionAlarm>
<exceptionType opt="diskFull,diskError,nicBroken,ipConflict,illAccess,videoMismatch,
badVideo,recordingFailure,raid,resolutionMismatch,spareException,POEPoweException"/>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,异常联动功能细化，解析到下面能力的，则优先处理按照下面异常报警类型处理；
没有解析到，则按照上述alarmHandleType 节点处理-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
<DetailedExceptionAlarm>
<DiskFull>
<!--req, 硬盘满-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</DiskFull>
<DiskError><!--req, 硬盘错误-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</DiskError>
<NicBroken><!--req, 网线断-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</NicBroken>
<IPConflict><!--req, IP冲突-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</IPConflict>
<IllAccess><!--req, 非法访问-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</IllAccess>
<BadVideo><!--req, 视频丢失-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</BadVideo>
<VideoMismatch><!--req, 视频不匹配-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</VideoMismatch>
<RecordingFailure><!--req, 录像异常-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</RecordingFailure>
<Raid><!--req, 阵列异常-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</Raid>
<ResolutionMismatch><!--req, 分辨率不匹配-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</ResolutionMismatch>
<SpareException><!--req, 热备异常-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</SpareException>
<TemperatureException><!--req, 温度异常-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</TemperatureException>
<SubsystemException><!--req, 子系统异常-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</SubsystemException>
<FanException><!--req, 风扇异常-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
</FanException>
</DetailedExceptionAlarm>
</ExceptionAlarm>
<AlarmIn>
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型-->
<notSupportPTZLinkage>true</notSupportPTZLinkage>
<!--req,之前设备不返回PTZ联动能力，客户端默认显示，现在根据能力动态显示-->
<RelatePTZ>
<!--req,之前设备不返回PTZ联动能力具体信息，现在根据能力动态显示-->
<presetNo min="" max=""/>
<!--req,关联支持的预置点号-->
<CruiseNo min="" max=""/>
<!--req,关联支持的巡航路径号-->
<ptzTrackNo min="" max=""/>
<!--req,关联支持的云台的花样扫描路径序号-->
<presetDurationTime min="0" max="20"/>
<!--opt,云台预置点停留时间 -->
</RelatePTZ>
<inputType opt="switch,signal"/>
<!--opt,报警输入类型: switch-开关量,signal-脉冲信号-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</AlarmIn>
<AlarmOut>
<alarmTime>8</alarmTime>
<!--req,输出激活时间段个数-->
<pulseDuration opt="5,10,30,60,120,300,600,manual"/>
<!--req,报警输出延时,单位:s-->
</AlarmOut>
<FaceDetection>
<!--req,人脸侦测-->
<detectFaceEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<detectFaceSensitive min="0" max="9"/>
<!--req,灵敏度-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp, uploadcloud"/>
<!--req,处理类型-->
<triggerRecord>true</triggerRecord >
<!--req,触发录像, true-支持，false-不支持-->
<mutexAbility opt="traversingVirtualPlane,fieldDetection"/>
<!--req,互斥能力越界侦测，区域入侵-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</FaceDetection>
<Track>
<!--req,智能跟踪-->
<trackEnable opt="true,false"/>
<!--req,支持智能跟踪是否启用配置, true-启用，false-不启用-->
<stopTrackWhenFindFace opt="true,false"/>
<!--req发现人脸时，是否停止跟踪-->
<stopTrackThreshold min="1" max="100"/><!--req停止跟踪阈值，支持该功能必须有该节点-->

<ManualTrace>
<!--opt,支持手动跟踪定位，对应结构体NET_DVR_PTZ_MANUALTRACE-->
<enabled>true</enabled>
<!--req,若支持该节点必须存在-->
<trackType opt="normalTrack,highSpeedRoadTrack,urbanRoadTrack"/>
<!--req, 跟踪类型，支持必须有该节点, 0-普通跟踪normalTrack,1- 高速道路跟踪highSpeedRoadTrack, 2- 城市道路跟踪urbanRoadTrack-->
<linkageTrack opt="ipd"/>
<!--opt,"ipd 含义表示联动球机跟踪"-->
</ManualTrace>
</Track>
<VoiceDetection>
<!--req,声音异常侦测-->
<enable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<Abnormal>
<sensitivityLevel min="1" max="100"/>
<!--req,灵敏度-->
<audioMode opt="0,1,2"/>
<!--req,声音检测模式，0：启用灵敏度检测；1：启用分贝阈值检测,2：灵敏度和阈值检测同时启用-->
<enable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<threshold min="1" max="100"/>
<!--req,声音阈值-->
</Abnormal>
<alarmTime>8</alarmTime>
<!--req,输出激活时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型-->
<audioSteepDrop>
<!--声强突变，陡降-->
<enable opt="true,false"/><!--req,是否启用,true-启用，false-不启用-->
<sensitivityLevel min="1" max="100"/>
<!--req,灵敏度-->
</audioSteepDrop>
</VoiceDetection >
<TraversingVirtualPlane>
<!--req, 越界侦测能力-->
<enable opt="true,false"/>
<!--req, false:不使能, true:使能-->
<enableDualVca opt="true,false"/>
<!--req, 启用支持智能后检索,是否启用:true-启用，false-不启用-->
<alertlineNum>8</alertlineNum><!--req,越界侦测支持的最大警戒线个数-->
<AlertLine>
<!--req, 根据ALERTLINENum的值,本节点会有相应的个数-->
<ID>1</ID>
<crossDirection opt="0,1,2"/>
<!--req, 警戒面支持的跨越方向: 0-双向，1-从左到右2-从右到左-->
<sensitivityLevel min="0" max="100"/>
<!--req, 灵敏度-->
</AlertLine>
<alarmTime>8</alarmTime>
<!--req, 布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,ptztrack,uploadcloud"/>
<!--req, 处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，
判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<supportLogNotCfg>true</supportLogNotCfg><!--req, 支持日志但不支持配置，不返回表示既支持配置也支持日志-->
<holidayTimeSlotNum>8</holidayTimeSlotNum> <!--req,越界侦测支持的假日时间段个数 -->
<mutexAbility opt="faceDetection,19-1920*1080@50fps,20-1920*1080@60fps,PDC,videoFrameRate50,videoFrameRate60,recordPlan"/>
<!--req, 互斥能力，人脸侦测、CaptureMode 1920*1080@50fps、CaptureMode 1920*1080@60fps、PDC、videoFrameRate50、videoFrameRate60、计划录像-->
<recogRuleType opt="vectorMode,slopeMode"/>
<!--req, 越界侦测的运动方向的判断方式：向量方式还是斜率方式 -->
<triggerRecord>true</triggerRecord >
<!--req, 是否启用触发录像功能：true-支持，false-不支持-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean, "是否支持人体去误报功能, 支持返回true, 不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"是否支持车辆去误报, 支持返回true, 不支持不返回"-->
</isSupportVehicleMisinfoFilter>
</TraversingVirtualPlane>
<FieldDetection>
<!--req,区域入侵侦测-->
<enable opt="true,false"/>
<!--req,false:不使能，true:使能-->
<enableDualVca opt="true,false"/>
<!--req启用支持智能后检索,是否启用:true-启用，false-不启用-->
<intrusiongionNum>8</intrusiongionNum>
<normalizedScreenSize>
<normalizedScreenWidth></normalizedScreenWidth>
<!--req,xs:integer-->
<normalizedScreenHeight></normalizedScreenHeight>
<!--req,xs:integer-->
</normalizedScreenSize>
<FieldDetectionRegionList size="4">
<FieldDetectionRegion>
<id></id>
<!--req,xs:string-->
<minRegionCoordinatesNum></minRegionCoordinatesNum>
<!--opt,最小节点个数-->
<maxRegionCoordinatesNum></maxRegionCoordinatesNum>
<!-- opt,最大节点个数-->
<sensitivityLevel></sensitivityLevel>
<!--req,xs:integer-->
<timeThreshold></timeThreshold>
<!--req,xs:integer-->
<objectOccupation></objectOccupation>
<!--req,xs:integer-->
<detectionTarget></detectionTarget>
<!--opt,xs:string,"all,human,vehicle,others"-->
<RegionCoordinatesList>
<RegionCoordinates>
<!--list,req,-->
<positionX></positionX>
<!--req,xs:integer;coordinate-->
<positionY></positionY>
<!--req,xs:integer;coordinate-->
</RegionCoordinates>
</RegionCoordinatesList>
<humanMisinfoFilterEnabled></humanMisinfoFilterEnabled>
<!--opt,xs:boolean,"true,false","人体去误报使能"-->
<vehicleMisinfoFilterEnabled></vehicleMisinfoFilterEnabled>
<!--opt,xs:boolean,"true,false","车辆去误报使能"-->
<priority></priority>
<!--opt,xs:string,优先级,"low,middle,high"-->
<alarmConfidence opt="low,mediumLow,mediumHigh,high" def="low"></alarmConfidence>
<!--opt,xs:string,报警置信度,low-低,mediumLow-较低,mediumHigh-较高,high-高,默认:low-->
<recordConfidence opt="low,mediumLow,mediumHigh,high" def="low"></recordConfidence>
<!--opt,xs:string,录像置信度,low-低,mediumLow-较低,mediumHigh-较高,high-高,默认:low-->
</FieldDetectionRegion>
</FieldDetectionRegionList>
<!--req,区域入侵侦测支持的最大警戒线个数 -->
<Intrusiongion>
<!--req,INTRUSIONREGIONNum,本节点会有相应的个数-->
<ID>1</ID>
<regionNum min="3" max="10"/>
<!--req,每个区域入侵侦测支持的有效点个数-->
<duration min="1" max="100"/>
<!--req,触发时间阈值-->
<sensitivityLevel min="0" max="100"/>
<!--req,灵敏度-->
<rate min = "0" max = "100"/>
<!--req, 占比：区域内所有未报警目标尺寸目标占区域面积的比重-->
</Intrusiongion>
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,ptztrack,uploadcloud"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<holidayTimeSlotNum>8</holidayTimeSlotNum>
<!--req,区域入侵侦测支持的假日时间段个数 -->
<mutexAbility opt="faceDetection,19-1920*1080@50fps,20-1920*1080@60fps,PDC,videoFrameRate50,videoFrameRate60,recordPlan"/>
<!--req, 互斥能力，人脸侦测、CaptureMode 1920*1080@50fps、CaptureMode 1920*1080@60fps、PDC、videoFrameRate50、videoFrameRate60、计划录像-->
<triggerRecord>true</triggerRecord >
<!--req,是否启用触发录像功能：true-支持，false-不支持-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"是否支持人体去误报功能, 支持返回true, 不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"是否支持车辆去误报, 支持返回true, 不支持不返回"-->
</isSupportVehicleMisinfoFilter>
</FieldDetection>
<DefousDetection>
<!--req,虚焦侦测-->
<enable opt="true,false"/>
<!--req,false:不使能，true:使能-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,focus"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<sensitivityLevel min="1" max="100"/>
<!--req,灵敏度-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</DefousDetection>
<SceneChangeDetection>
<!--req,场景变更侦测 -->
<enable opt="true,false"/>
<!--req,false:不使能，true:使能 -->
<sensitiveLevel min="1" max="100"/>
<!--req,灵敏度-->
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型-->
<sceneChangeDetectionRecord>true</sceneChangeDetectionRecord >
<!--req关联录像-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</SceneChangeDetection>
<AudioLimitAlarm>
<!--req,声音超限报警-->
<enable opt="true,false"/><!--req,false:不使能，true:使能-->
<!--req,分贝告警阀值,单位：分贝-->
<decibelLimit min="50" max="70"/>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
</AudioLimitAlarm>
<ButtonDownAlarm>
<enable opt="true,false"/>
<!--req,false:不使能，true:使能-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
</ButtonDownAlarm>
<VCADetection>
<!--req, 智能侦测-->
<enable opt="true,false"/>
<!--req,false:不使能，true:使能-->
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，
判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<preset>true</preset>
<!--预置点, 不支持则不返回-->
<cruise>true</cruise>
<!--巡航点, 不支持则不返回-->
<ptzTrack>true</ptzTrack >
<!--云台花样扫描, 不支持则不返回-->
<holidaySched>true</holidaySched>
<!--假日计划, 不支持则不返回-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</VCADetection>
<VehicleDetection>
<DetectVehicleCalibration>
<!--req,检测车辆标定能力-->
<widePixels>400</widePixels>
<highPixels>400</highPixels>
</DetectVehicleCalibration>
<TriggerCond>
<channel min="" max=""/>
<!--req,通道号-->
<detSenceID min="" max=""/>
<!--req,检测场景号-->
<triggerMode opt="postIOSpeed,postSingleIO,postRS485,postRS485Radar,postVirtualcoil,
epoliceIoTrafficLights,epoliceRS485,peRS485,videoEpolice,postMPR,viaVtCoil,ipcHVT"/>
<!--req,触发模式-->
</TriggerCond>
<TriggerCfg>
<enable opt="disable,enable"/>
<!--req,是否启用该触发模式-->
<triggerType opt="postIOSpeed,postSingleIO,postRS485,postRS485Radar,postVirtualcoil,
epoliceIoTrafficLights,epoliceRS485,peRS485,videoEpolice,postMPR,viaVtCoil,ipcHVT"/>
<!--req,触发模式-->
<TriggerParam>
<PostMPR>
<!--req,卡口多帧检测触发参数-->
<enable opt="disable,enable"/>
<!--req,使能-->
<laneNum min="" max=""/>
<!--req,车道数-->
<sourceType opt="MPR,IO,RS485"/>
<!--req,信号触发源-->
<LaneBoundaryLine>
<Line>
<Start>
<x min="0.001" max="1"/>
<!--req,X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req,Y轴坐标, 0.001~1-->
</Start>
<End>
<x min="0.001" max="1"/>
<!--req,X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req,Y轴坐标, 0.001~1-->
</End>
</Line>
</LaneBoundaryLine>
<PlateRecogParam>
<defaultCHNLen min="0" max="3"/>
<!--req,设备运行省份的汉字简写字符串长度-->
<province opt="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,0xff"/>
<!--req,省份索引-->
<enable opt="disable,enable"/>
<!--req,是否启用该区域牌识-->
<!--req,识别的类型-->
<RecogMode>
<plateRecogPos opt="fromFront,fromBack"/>
<!--req,车牌识别位置，fromFront-正向识别,fromBack-背向识别-->
<plateRecogType opt="big,little"/>
<!--req,车牌识别类型，big-大车牌,little-小车牌-->
<vechileColorRecog opt="true,false"/>
<!--req,车身颜色识别：0-不采用车身颜色识别，在背向识别或小车牌识别时禁止启用，1-车身颜色识别-->
<farmVehicleRecog opt="true,false"/>
<!--req,农用车识别-->
<blurRecog opt="true,false"/>
<!--req,模糊识别-->
<locationType opt="frameLocation,sceneLocation"/>
<!--req,定位类型，frameLocation-帧定位,sceneLocation-场定位-->
<recogType opt="frameRecognition,sceneRecognition"/>
<!--req,识别类型，frameRecognition-帧识别,sceneRecognition-场识别-->
<recogTime opt="daytime,night"/>
<!--req,识别时间，daytime-白天,night-晚上-->
<motorCarRecog opt="true,false"/>
<!--req,摩托车识别识别-->
<sceneType opt="epolice,gate"/>
<!--req,场景类型，EPolice-电警/多帧,gate-卡口-->
<microPlateRecog opt="true,false"/>
<!--req,微小车牌识别-->
<region opt="Res,EU,ER,EUAndCIS"/>
<!--req,区域索引：0-保留，1-欧洲（EU），2-俄罗斯(ER)，3-欧洲&俄罗斯(EU&CIS) -->
<platePixelWidthMin min="" max=""/>
<!--req,车牌识别像素宽度值，对应结构体NET_ITC_PLATE_RECOG_PARAM中的字段wPlatePixelWidthMin-->
<platePixelWidthMax min="" max=""/>
<!--req,车牌识别像素宽度值，对应结构体NET_ITC_PLATE_RECOG_PARAM中的字段wPlatePixelWidthMax -->
</RecogMode>
<vehicleLogoRecog opt="disable,enable"/>
<!--req,车标识别-->
</PlateRecogParam>
<maxLaneLineNum min="0" max="6"/>
<!--req,支持的最大车道线数-->
<LaneParam>
<laneNO min="" max=""/>
<!--req,关联车道号-->
<TssParamInfo>
<IO>
<no min="" max=""/>
<triggerType opt="fallEdge,riseEdge"/>
</IO>
<RS485>
<relateChan min="" max=""/>
</RS485>
</TssParamInfo>
<carDriveDirection opt="unknown,uptodown,downtoup"/>
<!--车辆行驶方向,unknown-未知,uptodown-下行,downtoup-上行-->
<LaneLine>
<Line>
<Start>
<x min="0.001" max="1"/>
<!--req,X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req,Y轴坐标, 0.001~1-->
</Start>
<End>
<x min="0.001" max="1"/>
<!--req,X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req,Y轴坐标, 0.001~1-->
</End>
<lineType opt="unknown,ordinaryLanes,busLanes,fastLane,slowLane,motorcycleLane,
nonmotorVehicleLane,reversedLane,banTrucksLane,mixLane"/>
<!--req,车道线类型 0-未知，1-车道间的白实线，2-车道停止线，3-单黄线，4-双黄线，
5-车道线上有护栏，6-车辆无法跨越的车道线，7-虚线-->
</Line>
</LaneLine>
<PlateRecog>
<pointNum min="3" max="20"/>
<!--req,有效点 大于等于3，若是3点在一条线上认为是无效区域，线交叉认为是无效区域，最大支持20个点-->
<Pos>
<x min="0.001" max="1"/>
<!--req,X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req,Y轴坐标, 0.001~1-->
</Pos>
</PlateRecog>
</LaneParam>
<autoBuildRecogArea>true</autoBuildRecogArea>
<!--opt,客户端界面自动生成识别区域, SDK接口没有对应的字段信息-->
<brokenNetHttp>true</brokenNetHttp>
<!--opt,车辆识别是否支持断网续传-->
<RodeType>
<type opt="entrance,city,custom,alarmInput"/>
<!--opt,道路类型: entrance-出入口, city-城市道路, custom-自定义, alarmInput-报警输入-->
<Custom>
<delayTime min="0" max="15000"/>
<delayTimeUnit opt="ms"/>
</Custom>
</RodeType>

<brokenNetHttp>true</brokenNetHttp>
<!--opt,车辆识别是否支持断网续传-->

<SnapLine>
<!--opt, 抓拍线-->
<Line>
<Start>
<x min="0.001" max="1"/>
<!--req, X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</Start>
<End>
<x min="0.001" max="1"/>
<!--req, X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</End>
</Line>
</SnapLine>
</PostMPR>
</TriggerParam>
</TriggerCfg>

<!--req,抓拍触发模式支持关联布防时间段和上传中心-->
<GuardCond>
<channel min="" max=""/>
<!--req,通道号-->
<relateType opt="MPR"/>
<!--req,关联类型-->
</GuardCond>
<GuardCfg>
<detSenceID min="" max=""/>
<!--req,检测场景号-->
<alarmSchedDays min="0" max="7"/>
<!--req,布防天数,最大支持一周7天-->
<alarmSchedTimes min="0" max="8"/>
<!--req,布防时间段，最大支持一天8个时间段-->
<AlarmSched>
<startHour min="0" max="24"/>
<!--req,布防开始时间-->
<startMin min="0" max="60"/>
<!--req,布防开始时间-->
<stopHour min="0" max="24"/>
<!--req,布防结束时间-->
<stopMin min="0" max="60"/>
<!--req,布防结束时间-->
</AlarmSched>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,focus,PTZ,uploadcloud"/>
<!--req,处理类型-->
<maxAlarmOutChannelNum min="0" max="64"/>
<!--req,设备支持的最大可触发的报警输出通道数-->
<alarmOutChannelNum min="" max=""/>
<!--req,当前实际设置的报警触发通道数-->
<alarmOutTriggeredChannel min="" max=""/>
<!--req,触发报警通道-->
<direction>
<!--opt,xs:string,"both,forward,reverse",触发方向-->
</direction>
</GuardCfg>

<OverlapCond>
<!--req,OSD字符叠加(支持独立图和合成图信息叠加)配置条件能力-->
<channel min="" max=""/>
<!--req,通道号-->
<configMode opt="terminal,camera"/>
<!--req,配置模式，0-终端，1-前端(直连前端或终端接前端)-->
<picModeType opt="smallPicture,bigPicture"/>
<!--req,图片类型；0-表示小图(独立图)，1-表示大图(合成图)-->
<relateType opt="MPR,HVT"/>
<!--req,没有该节点返回的时候，默认是MPR-->
</OverlapCond>
<OverlapCfg>
<!--req,字符叠加配置参数能力-->
<enable opt="disable,enable"/>
<!--req,是否启用，0-不启用，1-启用-->
<OverlapItemParam>
<overlapItemNum min="0" max="50"/>
<!--req,最大字符数为50条-->
<SingleItem>
<itemType opt="unknown,place,crossingNo,deviceNo,directionNo,direction,laneNo,lane,captureTime,
captureTimeWithMS,plateNo,vehicleColor,vehicleType,vehicleBrand,vehicleSpeed,speedLimitSign,
vehicleLength,illegalcode,monitorInfo,illegalActivities,superSpeedRatio,redStartTime,
redStopTime,redBrightTime,securityCode,captureNo,safeBelt,monitorNo,sunVisor,laneDirection,
licensePlateColor,sceneNumber,sceneName,,yellowSignCar,dangerousCar,carSubBrand,vehicleDirection, validity"/>
<!--req,字符类型，0-未知，1-地点，2-路口编号，3-设备编号，4-方向编号，5-方向，6-车道号，7-车道，8-抓拍时间(不带毫秒)，
9-抓拍时间(带毫秒)，10-车牌号，11-车身颜色，12-车辆类型，13-车辆品牌，14-车辆速度，15-限速标志，16-车辆长度1~99m，
17-违法代码(违法代码叠加应该没用的，应该直接叠加违法信息，比如正常、低速、超速、逆行、闯红灯、占道、压黄线等)，
18-监测点信息，19-违法行为，20-超速比，21-红灯开始时间，22-灯结束时间，23-红灯已亮时间，24-防伪码，25-抓拍编号，
26-安全带，27-监测点编号, 28-遮阳板,29-车道行驶方向,30-车牌颜色,31-场景编号,32-场景名称,33-黄标车,34-危险品车,35-车辆子品牌,36-车辆方向,38-置信度-->
<changeLineNum min="0" max="10"/>
<!--req,叠加项后的换行数[0-10](默认0)-->
<spaceNum min="0" max="255"/>
<!--req,叠加项后的空格数[0-255](默认0)-->
<enablePos opt="0,1 "/>
<!--req,是否启用坐标显示,0-不显示，1-显示-->
<startPosTop min="0" max="2448"/>
<!--req,起始上坐标,只对图片内部叠加有效[0~2448](默认0)-->
<startPosLeft min="0" max="2448"/>
<!--req,起始左坐标,只对图片内部叠加有效[0~2448](默认0)-->
</SingleItem>
<linePercent min="0" max="100"/>
<!--req,叠加行百分比(0-100),(默认100)-->
<itemsStlye opt="0,1"/>
<!--req,叠加方式：0-横排,1-竖排(默认横排)-->
<startPosTop min="0" max="2448"/>
<!--req,起始上坐标,只对图片内部叠加有效[0~2448](默认0)-->
<startPosLeft min="0" max="2448"/>
<!--req,起始左坐标,只对图片内部叠加有效[0~2448](默认0)-->
<charStyle opt="0,1"/>
<!--req,字体类型,0-宋体1-魏体(默认)-->
<charSize min="" max=""/>
<!--req,字符长度-->
<charInterval min="0" max=""/>
<!--req,字符间距，[0～16]，可设单位：像素(默认)-->
<foreClorRGB opt="B,G,R,White"/>
<!--req,前景色的RGB值 bit0-7:(B) bit8-15:(G) bit16-23:(R) (默认0x00FFFFFF-白)-->
<backClorRGB opt="B,G,R,Black"/>
<!--req,背景色的RGB值,只对图片外叠加有效bit0-7:(B) bit8-15:(G) bit16-23:(R) (默认x00000000-黑-->
<colorAdapt opt="disable,enable"/>
<!--req,颜色是否自适应0-否1-是-->
<paramFillZeroEnble opt="disable,enable"/>
<!--req,参数补零使能 0-补零, 1-不补零（详细注释）速度,限速值 不足3位补0-->
<plateLeftCornerEnable opt="disable,enable"/>
<!--req,车牌小图叠加左上角使能 0-不叠加, 1-叠加-->
<startSPicPosTop min="0" max="2448"/>
<!--req,起始上坐标,只对图片内部叠加有效[0~2448](默认0)-->
<startSPicPosLeft min="0" max="2448"/>
<!--req,起始左坐标,只对图片内部叠加有效[0~2448](默认0)-->
<osdLocate opt="inside,upper,lower"/>
<!--req,OSD叠加位置 0-图片内,1-图片上边缘,2-图片下边缘（合成图专用的是上边缘外）-->
</OverlapItemParam>
<OverlapInfoParam>
<siteLen min="0" max="128"/>
<!--req,地点描述长度-->
<roadNumLen min="0" max="32"/>
<!--req,路口编号长度-->
<instrumentNumLen min="0" max="32"/>
<!--req,设备编号长度-->
<directionLen min="0" max="32"/>
<!--req,方向编号长度-->
<directionDescLen min="0" max="32"/>
<!--req,方向描述长度-->
<laneDesLen min="0" max="32"/>
<!--req,车道描述长度-->
<monitoringSite1Len min="0" max="44"/>
<!--req,监测点1信息长度-->
<monitoringSite2Len min="0" max="32"/>
<!--req,监测点2信息长度-->
</OverlapInfoParam>
</OverlapCfg>

<!--req,监测点参数配置-->
<MonitorCfg>
<deviceType opt="camera,coilTriggeringCamera,videoAnalysisCamera,ITC"/>
<!--req,设备类型,0-监控用相机;1-线圈触发相机;2-视频分析用相机,3-一体机(ITC)-->
<monitoringSiteIDLen min="0" max="48"/>
<!--req,监测点编号长度-->
<deviceIDLen min="0" max="48"/>
<!--req,设备编号长度-->
<directionNo min="" max=""/>
<!--req,监测方向编号-->
<monitoringSInfoLen min="0" max="48"/>
<!--req,监测点信息描述长度-->
</MonitorCfg>

<!--req,手动触发抓拍-->
<ManualSnap>
<enabled opt="disable,enable"/>
<!--req, 是否支持手动触发抓拍,不支持不显示-->
<osdEnable opt="disable,enable"/>
<!--req,OSD使能 false-不关闭(默认)，true-关闭-->
</ManualSnap>

<!--req,抓拍图片参数配置-->
<SnapPicInfoCfg>
<picSize min="64" max="2048"/>
<!--req,图片大小[64k,2048k]-->
<picQuality min="1" max="100"/>
<!--req,图片质量[1,100]-->
</SnapPicInfoCfg>
<mutexAbility opt="stream3,hvtVehicleDetection,heatMap"/>
<!--req,互斥能力:stream3(码流3)、混行车辆检测、热度图 -->
</VehicleDetection>
<HVTVehicleDetection>
<DetectVehicleCalibration>
<!--req,检测车辆标定能力-->
<widePixels>400</widePixels>
<highPixels>400</highPixels>
</DetectVehicleCalibration>
<TriggerCond>
<channel min="" max=""/>
<!--req 通道号-->
<detSenceID min="" max=""/>
<!--req 检测场景号-->
<triggerMode opt="postIOSpeed,postSingleIO,postRS485,postRS485Radar,postVirtualcoil,epoliceIoTrafficLights,
epoliceRS485,peRS485,videoEpolice,postMPR,viaVtCoil,ipcHVT"/>
<!--req, 触发模式-->
</TriggerCond>
<TriggerCfg>
<enable opt="disable,enable"/>
<!--req,是否启用该触发模式-->
<triggerType opt="postIOSpeed,postSingleIO,postRS485,postRS485Radar,postVirtualcoil,epoliceIoTrafficLights,
epoliceRS485,peRS485,videoEpolice,postMPR,viaVtCoil,ipcHVT"/>
<!--req, 触发模式 -->
<TriggerParam>
<PostIPCHVT>
<enable opt="disable,enable"/>
<!--req,使能-->
<laneNum min="" max=""/>
<!--req,车道数-->
<LaneBoundaryLine>
<Line>
<Start>
<x min="0.001" max="1"/>
<!--req, X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</Start>
<End>
<x min="0.001" max="1"/>
<!--req, X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</End>
</Line>
</LaneBoundaryLine>
<PlateRecogParam>
<defaultCHNLen min="0" max="3"/>
<!--req, 设备运行省份的汉字简写字符串长度-->
<province opt="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,0xff"/>
<!--req 省份索引-->
<enable opt="disable,enable"/>
<!--req, 是否启用该区域牌识-->
<!--识别的类型-->
<RecogMode>
<plateRecogPos opt="fromFront,fromBack"/>
<!--车牌识别位置，fromFront-正向识别,fromBack-背向识别-->
<plateRecogType opt="big,little"/>
<!--车牌识别类型，big-大车牌,little-小车牌-->
<vechileColorRecog opt="true,false"/>
<!--车身颜色识别：0-不采用车身颜色识别，在背向识别或小车牌识别时禁止启用，1-车身颜色识别-->
<farmVehicleRecog opt="true,false"/>
<!--农用车识别-->
<blurRecog opt="true,false"/>
<!--模糊识别-->
<locationType opt="frameLocation,sceneLocation"/>
<!--定位类型，frameLocation-帧定位,sceneLocation-场定位-->
<recogType opt="frameRecognition,sceneRecognition"/>
<!--识别类型，frameRecognition-帧识别,sceneRecognition-场识别-->
<recogTime opt="daytime,night"/>
<!--识别时间，daytime-白天,night-晚上-->
<motorCarRecog opt="true,false"/>
<!--摩托车识别识别-->
<sceneType opt="epolice,gate"/>
<!--场景类型，EPolice-电警/多帧,gate-卡口-->
<microPlateRecog opt="true,false"/>
<!--微小车牌识别-->
<region opt="Res,EU,ER"/>
<!--req,区域索引：0-保留，1-欧洲（EU），2-俄罗斯(ER)-->
</RecogMode>
<vehicleLogoRecog opt="disable,enable"/>
<!--车标识别-->
</PlateRecogParam>
<maxLaneLineNum min="0" max="6"/>
<!--req支持的最大车道线数-->
<LaneParam>
<laneNO min="" max=""/>
<!--req 关联车道号-->
<carDriveDirection opt="unknown,uptodown,downtoup"/>
<!--车辆行驶方向,unknown-未知,uptodown-下行,downtoup-上行-->
<LaneLine>
<Line>
<Start>
<x min="0.001" max="1"/>
<!--req X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req Y轴坐标, 0.001~1-->
</Start>
<End>
<x min="0.001" max="1"/>
<!--req X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req Y轴坐标, 0.001~1-->
</End>
</Line>
</LaneLine>
<PlateRecog>
<!--req, 牌识区域-->
<pointNum min="3" max="20"/>
<!--req, 有效点,大于等于3，若是3点在一条线上认为是无效区域，线交叉认为是无效区域，最大支持20个点-->
<Pos>
<x min="0.001" max="1"/>
<!--req, X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</Pos>
</PlateRecog>
</LaneParam>
<SnapLine>
<!--opt, 抓拍线-->
<Line>
<Start>
<x min="0.001" max="1"/>
<!--req X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</Start>
<End>
<x min="0.001" max="1"/>
<!--req, X轴坐标, 0.001~1-->
<y min="0.001" max="1"/>
<!--req, Y轴坐标, 0.001~1-->
</End>
</Line>
</SnapLine>
</PostIPCHVT>
</TriggerParam>
</TriggerCfg>

<!--req,抓拍触发模式支持关联布防时间段和上传中心-->
<GuardCond>
<channel min="" max=""/>
<!--req,通道号-->
<relateType opt="MPR"/>
<!--req,关联类型-->
</GuardCond>
<GuardCfg>
<detSenceID min="" max=""/>
<!--req,检测场景号-->
<alarmSchedDays min="0" max="7"/>
<!--req,布防天数,最大支持一周7天-->
<alarmSchedTimes min="0" max="8"/>
<!--req,布防时间段，最大支持一天8个时间段-->
<AlarmSched>
<startHour min="0" max="24"/>
<!--req,布防开始时间-->
<startMin min="0" max="60"/>
<!--req,布防开始时间-->
<stopHour min="0" max="24"/>
<!--req,布防结束时间-->
<stopMin min="0" max="60"/>
<!--req,布防结束时间-->
</AlarmSched>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,focus,PTZ"/>
<!--req,处理类型-->
<maxAlarmOutChannelNum min="0" max="64"/>
<!--req, 设备支持的最大可触发的报警输出通道数-->
<alarmOutChannelNum min="" max=""/>
<!--req, 当前实际设置的报警触发通道数-->
<alarmOutTriggeredChannel min="" max=""/>
<!--req, 触发报警通道-->
<direction>
<!--opt,xs:string,"both,forward,reverse",触发方向-->
</direction>
</GuardCfg>

<!--req,OSD字符叠加(支持独立图和合成图信息叠加)-->
<OverlapCond>
<channel min="" max=""/>
<!--req 通道号-->
<configMode opt="terminal,camera"/>
<!--req 配置模式，0-终端，1-前端(直连前端或终端接前端)-->
<picModeType opt="smallPicture,bigPicture"/>
<!--req 图片类型；0-表示小图(独立图)，1-表示大图(合成图)-->
<relateType opt="MPR,HVT"/>
<!-- 没有该节点返回的时候，默认是MPR-->
</OverlapCond>
<OverlapCfg>
<enable opt="disable,enable"/>
<!--req 是否启用，0-不启用，1-启用-->
<OverlapItemParam>
<overlapItemNum min="0" max="50"/>
<!--req 最大字符数为50条-->
<SingleItem>
<itemType opt="unknown,place,crossingNo,deviceNo,directionNo,direction,laneNo,lane,
captureTime,captureTimeWithMS,plateNo,vehicleColor,vehicleType,vehicleBrand,
vehicleSpeed,speedLimitSign,vehicleLength,illegalcode,monitorInfo,illegalActivities,
superSpeedRatio,redStartTime,redStopTime,redBrightTime,securityCode,captureNo,
safeBelt,monitorNo,sunVisor,laneDirection,licensePlateColor,sceneNumber,sceneName,
vehicleDirection,validity"/>
<!--req 字符类型，0-未知，1-地点，2-路口编号，3-设备编号，4-方向编号，5-方向，6-车道号，7-车道，
8-抓拍时间(不带毫秒)，9-抓拍时间(带毫秒)，10-车牌号，11-车身颜色，12-车辆类型，13-车辆品牌，
14-车辆速度，15-限速标志，16-车辆长度1~99m，17-违法代码(违法代码叠加应该没用的，应该直接叠加违法信息，
比如正常、低速、超速、逆行、闯红灯、占道、压黄线等)，18-监测点信息，19-违法行为，20-超速比，
21-红灯开始时间，22-灯结束时间，23-红灯已亮时间，24-防伪码，25-抓拍编号，26-安全带，27-监测点编号,
28-遮阳板,29-车道行驶方向,30-车牌颜色,31-场景编号,32-场景名称,36-车辆方向,38-置信度-->
<changeLineNum min="0" max="10"/>
<!--req 叠加项后的换行数[0-10](默认0)-->
<spaceNum min="0" max="255"/>
<!--req 叠加项后的空格数[0-255](默认0)-->
<enablePos opt="0,1 "/>
<!--req 是否启用坐标显示,0-不显示，1-显示-->
<startPosTop min="0" max="2448"/>
<!--req 起始上坐标,只对图片内部叠加有效[0~2448](默认0)-->
<startPosLeft min="0" max="2448"/>
<!--req 起始左坐标,只对图片内部叠加有效[0~2448](默认0)-->
</SingleItem>
<linePercent min="0" max="100"/>
<!--req 叠加行百分比(0-100),(默认100)-->
<itemsStlye opt="0,1"/>
<!--req 叠加方式：0-横排,1-竖排(默认横排)-->
<startPosTop min="0" max="2448"/>
<!--req 起始上坐标,只对图片内部叠加有效[0~2448](默认0)-->
<startPosLeft min="0" max="2448"/>
<!--req 起始左坐标,只对图片内部叠加有效[0~2448](默认0)-->
<charStyle opt="0,1"/>
<!--req 字体类型,0-宋体1-魏体(默认)-->
<charSize min="" max=""/>
<!--req 字符长度-->
<charInterval min="0" max=""/>
<!--req 字符间距，[0～16]，可设单位：像素(默认)-->
<foreClorRGB opt="B,G,R,White"/>
<!--req 前景色的RGB值 bit0-7:(B) bit8-15:(G) bit16-23:(R) (默认0x00FFFFFF-白)-->
<backClorRGB opt="B,G,R,Black"/>
<!--req 背景色的RGB值,只对图片外叠加有效bit0-7:(B) bit8-15:(G) bit16-23:(R) (默认x00000000-黑-->
<colorAdapt opt="disable,enable"/>
<!--req 颜色是否自适应0-否1-是-->
<paramFillZeroEnble opt="disable,enable"/>
<!--req 参数补零使能 0-补零, 1-不补零（详细注释）速度,限速值 不足3位补0-->
<plateLeftCornerEnable opt="disable,enable"/>
<!--req 车牌小图叠加左上角使能 0-不叠加, 1-叠加-->
<startSPicPosTop min="0" max="2448"/>
<!--req 起始上坐标,只对图片内部叠加有效[0~2448](默认0)-->
<startSPicPosLeft min="0" max="2448"/>
<!--req 起始左坐标,只对图片内部叠加有效[0~2448](默认0)-->
<osdLocate opt="inside,upper,lower"/>
<!--req OSD叠加位置 0-图片内,1-图片上边缘,2-图片下边缘（合成图专用的是上边缘外）-->
</OverlapItemParam>
<OverlapInfoParam>
<siteLen min="0" max="128"/>
<!--req, 地点描述长度-->
<roadNumLen min="0" max="32"/>
<!--req, 路口编号长度-->
<instrumentNumLen min="0" max="32"/>
<!--req, 设备编号长度-->
<directionLen min="0" max="32"/>
<!--req, 方向编号长度-->
<directionDescLen min="0" max="32"/>
<!--req, 方向描述长度-->
<laneDesLen min="0" max="32"/>
<!--req, 车道描述长度-->
<monitoringSite1Len min="0" max="44"/>
<!--req, 监测点1信息长度-->
<monitoringSite2Len min="0" max="32"/>
<!--req, 监测点2信息长度-->
</OverlapInfoParam>
</OverlapCfg>

<!--req,监测点参数配置-->
<MonitorCfg>
<deviceType opt="camera,coilTriggeringCamera,videoAnalysisCamera,ITC"/>
<!--req, 设备类型,0-监控用相机;1-线圈触发相机;2-视频分析用相机,3-一体机(ITC)-->
<monitoringSiteIDLen min="0" max="48"/><!--req 监测点编号长度-->
<deviceIDLen min="0" max="48"/>
<!--req, 设备编号长度-->
<directionNo min="" max=""/>
<!--req, 监测方向编号-->
<monitoringSInfoLen min="0" max="48"/>
<!--req, 监测点信息描述长度-->
</MonitorCfg>

<!--req,手动触发抓拍-->
<ManualSnap>
<enabled opt="disable,enable"/>
<!--req, 是否支持手动触发抓拍,不支持不显示-->
<osdEnable opt="disable,enable"/>
<!--req, OSD使能 false-不关闭(默认)，true-关闭-->
</ManualSnap>

<!--req,抓拍图片参数配置-->
<SnapPicInfoCfg>
<picSize min="64" max="2048"/>
<!--req 图片大小[64k,2048k]-->
<picQuality min="1" max="100"/>
<!--req 图片质量[1,100]-->
</SnapPicInfoCfg>
<mutexAbility opt="stream3,vehicleDetection"/>
<!--req 互斥能力：stream3(码流3), 混行车辆检测 -->
</HVTVehicleDetection>
<!--req,默认支持获取当前触发模式,返回该节点则表示设备,支持功能细化,界面显示按照能力-->
<CurVehicleDetection>
<getCfg>true</getCfg>
<setCfg>true</setCfg>
</CurVehicleDetection>

</EventAbility>


DEVICE_ABILITY_INFO_GBT28181

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, GB/T28181能力集描述 -->
<GBT28181AccessAbility version="2.0">
<GBT28181AccessCfg>
<enable opt="true,false"/>
<!--req, 28181协议使能 0-关闭 1-开启-->
<localSipPort min="1024" max="65535"/><!--req,1024-65535(IPC设备端)-->
<serverIDLen min="1" max="32"/><!--req, 服务器ID：32字节字符串，仅限数字-->
<serverDomainLen min="1" max="64"/><!--req, 服务器域：64字节字符串，仅限数字-->
<serverSipAddressLen min="1" max="128"/><!--req, sip服务器地址-->
<serverSipPort min="1024" max="65535"/><!--req, 服务器SIP端口：1024-65535-->
<sipUserNameLen min="1" max="32"/><!--req,SIP用户名称：32字节字符串(第三方SIP终端请求IPC服务时使用)-->
<sipAuthenticateIDLen min="1" max="64"/><!--req,SIP用户认证ID：64字节字符串-->
<SipAuthenticatePasswdLen min="1" max="32"/><!--req,SIP用户认证密码：32字节字符串(IPC设备注册到SIP服务器时使用)-->
<registerValid min="1" max="3600"/><!--req,注册有效期：单位秒，默认3600-->
<heartbeatInterval min="1" max="10"/><!--req,心跳间隔：单位秒，默认10秒-->
<maxHeartbeatTimeOut min="1" max="3"/><!--req,最大心跳超时次数：默认3次-->
<streamType opt="mainstream,substream,stream3"/><!--req,取流类型 1～主码流，2～子码流，3～3码流-->
<cameraNoCompressionIDLen min="1" max="64"/><!--req,设备视频通道编码ID：64字节字符串，仅限数字-->
<alarmInputCompressionIDLen min="1" max="64"/><!--req,设备报警输入编码ID（每一路报警输入不同）：64字节字符串，仅限数字-->
<deviceStatus attri="readonly" opt="offline,online"/>
<!--设备注册状态-->
<transProtocol opt="0-UDP,1-TCP"/>
<!--req,传输协议:0-UDP、1-TCP、默认0-UDP-->
<registerInterval min="60" max="600"/>
<!--req, 注册间隔:注册失败后再次注册的时间间隔,范围60-600s，默认60s-->
<decChanIDLen min="1" max="64"/>
<!--req, 设备解码通道ID: 64字节字符串，仅限数字-->
<serverSipType opt="encodeServer,decServer"/>
<!--req, 支持按编解码sip服务器配置-->
<autoAllocID opt="camerano,alarminput,decchan"/>
<!--req, 支持自动分配ID的类型-->
<SupportDeviceDomain>
<enabled>true</enabled>
<deviceDomainLen min="" max=""/>
<!--req, 设备域-->
</SupportDeviceDomain>
<protocolType opt="UDP,TCP"/>
<!--opt, 支持的协议类型,不返回此节点默认支持UDP协议-->
<protocolVersion opt="GB/T28181-2011,GB/T28181-2015,GB/T28181-2016"/>
<!--opt, 协议版本-->
<audioOutputCompressionIDLen min="1" max="64"/>
<!--opt, 设备语音输出编码ID, 64字节字符串, 仅限数字-->
<mutexAbility opt="ezviz,ehome,sip"/>
<!--req, 互斥能力, ezviz、ehome接入/sip能力-->
</GBT28181AccessCfg>
</GBT28181AccessAbility>


DEVICE_ABILITY_INFO_HD

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备磁盘相关能力集描述 -->
<HardDiskAbility version="2.0">
<!--req, 磁盘卷（硬盘）属性，NET_DVR_SINGLE_HD中的byHDAttr，如果没有此节点则只默认支持0,1,2 -->
<hdAttribute opt="0,1,2,3,4"/>
<!--req, 0-默认, 1-冗余, 2-只读, 3-存档, 4-不可读写 -->
<HDStatus>
<!--req, 对应NET_DVR_HD_STATUS -->
<SleepStatus opt="0,1"/> <!--req, 支持休眠的状态: 0-不休眠, 1-休眠 -->
</HDStatus>
<HDCfgV50>
<enable opt="true,flase"/>
<!--req, 是否支持 -->
</HDCfgV50>
<HDVolumeInfo>
<LoopCover opt="true,flase"/>
<!--req, 是否支持循环覆盖配置 -->
</HDVolumeInfo>

</HardDiskAbility>


DEVICE_ABILITY_INFO_ImageDisplay

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备图像显示参数能力集描述 -->
<ImageDisplayParamAbility version="2.0">
<DevAbility>
<!--req, 不区分通道号,设备支持的最大能力节点-->
<supportCCDFunc opt="whiteBalance,exposure,WDR,dayNightFilter,gammaCorrection,digitalNoiseReduction,backLight,LowLightLimit,FocusMode,IrDomeCfg,AutoExposureMode,dehaze,parkAction,ImageStabilize,other,ISP,laser,FFC,DDE,AGC,DPC"/>
<!--req, 支持的前端参数功能项-->
</DevAbility>
<ChannelNO1>
<!--req,通道号-->
<supportCCDFunc opt="whiteBalance,exposure,WDR,dayNightFilter,gammaCorrection,digitalNoiseReduction,backLight,LowLightLimit,FocusMode,IrDomeCfg,AutoExposureMode,dehaze,parkAction,ImageStabilize,other,ISP,laser,FFC,DDE,AGC,DPC "/>
<!--req, 支持的前端参数功能项-->
</ChannelNO1>
<ChannelNO2>
<!--req,通道号-->
<supportCCDFunc opt="whiteBalance,exposure,WDR,dayNightFilter,gammaCorrection,digitalNoiseReduction,backLight,LowLightLimit,FocusMode,IrDomeCfg,AutoExposureMode,dehaze,parkAction,ImageStabilize,other,ISP,laser,FFC,DDE,AGC,DPC "/>
<!--req, 支持的前端参数功能项-->
</ChannelNO2>
<!--ItemWhiteBalance(白平衡),
ItemExposure(曝光),
ItemWDR(宽动态),
ItemDayNightFilter(日夜切换),
ItemGammaCorrection(Gamma校正),
ItemDigitalNoiseReduction(数字降噪),
ItemBackLight(背光补偿),
ItemLowLightLimit(低照度),
ItemFocus(聚焦),
ItemInfrared(红外配置),
ItemDomeAemode(自动曝光),
ItemDehaze(去雾),
ItemParkAction(云台守望),
ItemElecStab(电子防抖),
ItemOther,
ItemISP,
ItemLaser,（激光灯）
ItemFFC,
ItemDDE,
ItemAGC,
DPCParam,
-->
</ImageDisplayParamAbility>


DEVICE_ABILITY_INFO_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取智能交通摄像机或者智能终端能力时pInBuf参数描述-->
<!--req, ITCAbility节点中的能力针对抓拍机；ITSAbility节点中的能力针对终端-->
<ITDeviceAbility version="2.0">
<channelNO>
1<!--req, xs:inter,通道号-->
</channelNO>
<!--opt,可以指定节点返回-->
<ITCAbility/>
<!--opt,指定返回节点-->
</ITDeviceAbility>


DEVICE_ABILITY_INFO_INPUT_ALARMHOST

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取网络报警主机能力时pInBuf参数描述-->
<!--req, AlarmHostAbility：网络报警主机能力集-->
<AlarmHostAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
<ExtendAlarmbox/>
<!--opt,指定返回ExtendAlarmbox节点-->
</AlarmHostAbility>


DEVICE_ABILITY_INFO_INPUT_BINOCULAR

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取双目能力时pInBuf参数描述-->
<BinocularAbility version="2.0">
<channelNO></channelNO><!--req,通道号-->
</BinocularAbility >


DEVICE_ABILITY_INFO_INPUT_CHANINPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备通道输入能力时pInBuf参数描述-->
<ChannelInputAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</ChannelInputAbility>


DEVICE_ABILITY_INFO_INPUT_CVR

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取CVR设备能力时pInBuf参数描述-->
<CVRAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</CVRAbility>


DEVICE_ABILITY_INFO_INPUT_DYNAMIC

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取前端参数动态能力时pInBuf参数描述-->
<CameraParaDynamicAbility version="2.0">
<channelNO>1</channelNO>
<!--req, 通道号 oxff-全部;可以是通道的组合-->
<!--req, 曝光时间动态获取-->
<ExposureSetDynamicLinkTo>
<!--opt,曝光时间能力动态关联节点-->
<WDR>
<WDREnable>0</WDREnable>
<!--opt, 0- disable, 1- enable, 2- Auto,只可能为1个-->
</WDR>
<IrisMode>
<IrisType>0</IrisType>
<!--opt,0-自动光圈镜头, 1-手动光圈镜头, 2- Piris1 “Tamron 2.8-8mm F1.2(M13VP288-IR)-->
</IrisMode>
</ExposureSetDynamicLinkTo>

<!--req, 分辨率动态获取 -->
<AudioVideoCompressInfoDynamicLinkTo>
<!--req,1-640*480@30fps、2-4CIF@30fps、3-720P@25fps、4-720P@30fps、5-720P@60fps、6-1280*960@15fps、
7-1280*960@25fps、8-1280*960@30fps、9-1280*1024@30fps、10-1600*900@15fps、11-1600*1200@15fps、
12-1080P@15fps、13-1080P@25fps、14-1080P@30fps、15-1080P@50fps、16-1080P@60fps、17-2048*1536@15fps、
18-2048*1536@20fps、19-2048*1536@24fps、20-2048*1536@25fps、21-2048*1536@30fps、22-2560*2048@25fps、
23-2560*2048@30fps、24-2560*1920@7.5fps、25-3072*2048@30fps -->
<captureMode opt="640*480@30fps"/>
<!--req,变化后的captureMode值-->
</AudioVideoCompressInfoDynamicLinkTo>

<VbrAverageCapDynamicLinkTo>
<!--opt, 平均码率动态获取-->
<streamType>
<!--opt,xs:string, 码流类型 "main,sub,stream3"-->
</streamType>
<codeType>
<!-- opt, xs:string, 编码类型 "smart264,smart265" -->
</codeType>
<videoQualityControlType>
<!-- opt, xs:string, "CBR,VBR" -->
</videoQualityControlType>
<vbrUpperCap>
<!-- opt, xs:integer, in kbps -->
</vbrUpperCap>
</VbrAverageCapDynamicLinkTo>

</CameraParaDynamicAbility>


DEVICE_ABILITY_INFO_INPUT_EVENT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备报警事件处理能力时pInBuf参数描述-->
<!--req, EventAbility：异常、报警输入输出报警处理能力-->
<EventAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</EventAbility>


DEVICE_ABILITY_INFO_INPUT_GBT28181

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取GB/T28181能力时pInBuf参数描述 -->
<GBT28181AccessAbility version="2.0">
<channelNO>1</channelNO>
<!--req, 通道号, oxff-全部, 可以是通道的组合-->
</GBT28181AccessAbility>


DEVICE_ABILITY_INFO_INPUT_HD

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备磁盘相关能力时pInBuf参数描述-->
<HardDiskAbility version="2.0">
<!--opt,可以指定节点返回，不指定时，所有该模块能力全部返回-->
</HardDiskAbility >


DEVICE_ABILITY_INFO_INPUT_ImageDisplay

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备图像显示参数能力时pInBuf参数描述 -->
<ImageDisplayParamAbility version="2.0">
<channelNO>1,2</channelNO>
<!--req,通道号，获取指定通道的能力，可以单个通道获取，也可以同时获取多个通道-->
</ImageDisplayParamAbility>


DEVICE_ABILITY_INFO_INPUT_INQUEST

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取审讯能力时pInBuf参数描述-->
<InquestAbility version="2.0">
</InquestAbility>


DEVICE_ABILITY_INFO_INPUT_IO

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备IO口输入输出能力时pInBuf参数描述 -->
<IOAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</IOAbility>


DEVICE_ABILITY_INFO_INPUT_IPACCESS

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取NVR前端待接入设备通道能力时pInBuf参数描述-->
<GetAccessDeviceChannelAbility version="2.0">

</GetAccessDeviceChannelAbility >


DEVICE_ABILITY_INFO_INPUT_IPCCFGFILE

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取IPC配置文件导入导出能力时pInBuf参数描述-->
<IPAccessConfigFileAbility version="2.0">
<!--opt,可以指定节点返回，不指定时，所有该模块能力全部返回-->
</IPAccessConfigFileAbility>


DEVICE_ABILITY_INFO_INPUT_LOG

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取日志搜索能力时pInBuf参数描述-->
<SearchLogAbility version= "2.0">
<channelNO>1</channelNO>
<!--req,通道号,oxff-全部,可以是通道的组合-->
</SearchLogAbility>


DEVICE_ABILITY_INFO_INPUT_MOUNT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取摄像机架设参数能力时pInBuf参数描述 -->
<CameraMountAbility version="2.0">
<channelNO>1</channelNO>
<!--req, 通道号, oxff-全部;可以是通道的组合-->
</CameraMountAbility>


DEVICE_ABILITY_INFO_INPUT_NPLUS

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取N+1能力时pInBuf参数描述-->
<NPlusOneAbility version="2.0">
<!--opt,可以指定节点返回，不指定时，所有该模块能力全部返回-->
</NPlusOneAbility>


DEVICE_ABILITY_INFO_INPUT_PROTOCOL

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备协议接入能力时pInBuf参数描述 -->
<AccessProtocolAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</AccessProtocolAbility>


DEVICE_ABILITY_INFO_INPUT_PTZ

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备PTZ能力时pInBuf参数描述-->
<!--req, PTZAbility：花样扫描、云台守望等PTZ能力-->
<PTZAbility version= "2.0">
<channelNO>
1<!--req,通道号-->
</channelNO>
</PTZAbility>


DEVICE_ABILITY_INFO_INPUT_RECORD

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取录像相关能力时pInBuf参数描述-->
<RecordAbility version="2.0">
</RecordAbility>


DEVICE_ABILITY_INFO_INPUT_RECORDHOST

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取录播主机能力时pInBuf参数描述-->
<RecordingHostAbility version="2.0">
<!--opt, 可以指定节点返回，指定节点可以是根节点的下一级节点-->
</RecordingHostAbility >


DEVICE_ABILITY_INFO_INPUT_ROI

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取ROI能力时pInBuf参数描述-->
<!--req, ROIAbility：ROI（感兴趣区域编码）能力-->
<ROIAbility version="2.0">
<channelNO>
1<!--req,通道号-->
</channelNO>
</ROIAbility>


DEVICE_ABILITY_INFO_INPUT_SECURITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备安全认证配置能力时pInBuf参数描述 -->
<SecurityAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</SecurityAbility>


DEVICE_ABILITY_INFO_INPUT_SWITCH

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备本地预览切换能力时pInBuf参数描述-->
<PreviewSwitchAbility version="2.0">

</PreviewSwitchAbility>


DEVICE_ABILITY_INFO_INPUT_TRIAL

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取庭审主机能力时pInBuf参数描述-->
<TrialHostAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</TrialHostAbility>


DEVICE_ABILITY_INFO_INPUT_TRIGGER

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取报警触发录像能力时pInBuf参数描述-->
<AlarmTriggerRecordAbility version="2.0">
<channelNO>1</channelNO>
<!--req 通道号,oxff-全部, 可以是通道的组合-->
</AlarmTriggerRecordAbility >


DEVICE_ABILITY_INFO_INPUT_VCACHAN

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取智能通道分析能力时pInBuf参数描述-->
<VcaChanAbility version="2.0">
<channelNO>1</channelNO>
<!--req, 通道号-->
</VcaChanAbility >


DEVICE_ABILITY_INFO_INPUT_VCACTRL

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取智能通道控制能力时pInBuf参数描述-->
<VcaCtrlAbility version="2.0">
<channelNO>1</channelNO>
<!--req, 通道号-->
</VcaCtrlAbility >


DEVICE_ABILITY_INFO_INPUT_VCADEV

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取智能设备能力时pInBuf参数描述-->
<VcaDevAbility version="2.0">
</VcaDevAbility >


DEVICE_ABILITY_INFO_INPUT_VEHICLERECOG

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取车辆二次识别检测能力时pInBuf参数描述-->
<VehicleRecogAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</VehicleRecogAbility>


DEVICE_ABILITY_INFO_INQUEST

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 审讯能力集描述 -->
<InquestAbility version="2.0">

<maxInquestRoomNum>2</maxInquestRoomNum>
<!--req, 支持的审讯室个数-->

<maxPipNum>7</maxPipNum>
<!--req, 支持的画中画个数-->

<pipPositionParam opt="x,y,w,h "/>
<!--req, 支持的画中画位置参数: x坐标，y坐标，高，宽-->

<supportSensorProtocol opt="jiameng,mile,leicai,youli,yongkong,longshang,venusda"/>
<!--req, 支持的传感器种类-->

<resolutionMode opt="sd,d1,720p,1080p,WD1,VGA"/>
<!--req, 支持的分辨率: 标清，D1，720P，1080P，WD1，VGA-->

<workMode opt="standard,general"/>
<!--req, 工作模式: 标准模式，通用模式-->

<recordMode opt="SingleRoomDoubleRecord,SingleRoomSingleRecord,DoubleRoomDoubleRecord"/>
<!--req, 刻录模式: 单室双刻，单室轮刻，双室双刻-->

<autoDelRecordAbility opt="true,false"/>
<!--req, 是否支持自动删除录像-->

<setAlarmThresholdAbility opt="true,false"/>
<!--req, 是否支持声音报警阀值设定-->

<setCDNameAbility opt="true,false"/>
<!--req, 是否支持光盘名称的设定-->

<bitRateRecord opt="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"/>
<!--req, 按码率刻录-->

<timeRecord opt="0,1,2,3,4,5,6,7,8,9,10,11"/>
<!--req, 按时间刻录-->

<InquestCaseInfoConfig>
<isSupport opt="true,false"/>
<!--req, 是否支持审讯案件信息配置-->
<displayTime min="" max=""/>
<!--req, 案件信息显示时间，单位：秒-->
<displayPosition opt="up-Left, bottom-Left"/>
<!--req, 案件信息位置：左上、左下-->
</InquestCaseInfoConfig>

<CaseInfoDisplay>
<isSupport opt="true,false"/>
<!--req, 是否支持案件信息显示控制-->
<displayTime min="1" max="30"/>
<!--req, 案件信息显示时间，单位：秒-->
</CaseInfoDisplay>

<InquestUserRight>
<isSupport opt="true,false"/>
<!--req, 是否支持审讯机用户权限-->
<userRight opt="LocalInquestDelRecRight,NetAudioRight"/>
<!--req, 支持的用户权限-->
</InquestUserRight>

<InquestMixAudoiInCfg>
<isSupport opt="true,false"/>
<!--req, 是否支持审讯机音频输入混音配置-->
<lineInNo min="1" max="1"/>
<micNo min="1" max="1"/>
<mixAudioDelay min="" max=""/>
<!--req, 混音延迟帧数，单位：帧-->
</InquestMixAudoiInCfg>

<HashCheck>
<!--req, 是否支持光盘数据HASH值校验-->
<isSupport opt="true,false"/>
<enable opt="true,false"/>
</HashCheck>

<FormatDisk>
<!--req, 是否支持初始化光盘-->
<isSupport opt="true,false"/>
<enable opt="true,false"/>
</FormatDisk>

<VILostAlarm>
<!--req, 是否支持信号丢失报警-->
<isSupport opt="true,false"/>
<threshold>20</threshold>
</VILostAlarm>

<CDWConfig>
<isSupportStartCDWAutoOpenTray opt="true,false"/>
<!--req,是否支持开始刻录自动弹仓-->
</CDWConfig>

</InquestAbility>


DEVICE_ABILITY_INFO_IO

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备IO口输入输出能力集描述 -->
<IOAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
<IOParam>
<IOOutParam>
<syncOutputNo opt="0-F1,1-F2,2-F3"/>
<!--req,同步输出号-->
<strobeLamp>
<workMode opt="strobelamp,alarmoutput"/>
<!--req,0- alarmOutput(报警输出),1- strobeLamp(频闪灯)-->
<defaultStatus opt=" lowlevel, highlevel"/><!--req, IO默认状态 0- lowlevel(低电平),1- highlevel(高电平)-->
<workStatus opt="lowlevel,highlevel,pulse"/><!--req, IO起效时状态 0 - lowlevel(低电平),1 - highlevel(高电平),2 - impulse(脉冲)-->
<freqMulti min="" max=""/><!--req, 倍频数值范围-->
<dutyRatio min="0" max="40"/><!--req, 占空比，[0,40]-->
<flashLightEnable opt="false,true"/><!--req, 设置闪光灯时间使能 0-false(关) 1-true(开)-->
<flashTime>
<beginTime opt="hour,min"/>
<!--req,开始时间段类型-->
<endTime opt="hour,min"/>
<!--req,结束时间段类型-->
</flashTime>
</strobeLamp>
</IOOutParam>
<signalSync>
<phase min="" max=""/><!--req, 相位(0~360)-->
<lineLock opt="false,true"/><!--req, 电源同步：0-否(false), 1-是(true)-->
</signalSync>
</IOParam>
</IOAbility>


DEVICE_ABILITY_INFO_IPACCESS

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, NVR前端待接入设备通道能力集描述 -->
<GetAccessDeviceChannelAbility version="2.0">
<Enable>true</Enable>
<!--opt,是否支持获取前端待接入设备通道信息-->
<SupportActivateIPC>true</SupportActivateIPC>
<!--opt, xs:boolean是否支持激活IPC,不支持时无此节点-->
<!--具体支持激活哪些协议，在能力VideoSourceActivationCapability中-->
<SupportCheckIPCRiskPwd>true</SupportCheckIPCRiskPwd>
<!--opt, xs:boolean,是否支持检测IPC风险密码,不支持时无此节点-->
</GetAccessDeviceChannelAbility >


DEVICE_ABILITY_INFO_IPCCFGFILE

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, IPC配置文件导入导出能力集描述 -->
<IPAccessConfigFileAbility version="2.0">
<!--req, 导入配置文件 -->
<ImportConfigFile>
<enabled>true</enabled>
<!--opt,是否支持,不支持不显示-->
</ImportConfigFile>

<!--req, 导出配置文件 -->
<ExportConfigFile>
<enabled>true</enabled>
<!--opt,是否支持,不支持不显示-->
</ExportConfigFile>

<ErrInfo>
<!--req, 对应NET_DVR_ERR_INFO -->
<supportRow>true</supportRow> <!--req, 配置文件中出错的某行，不支持不显示 -->
<supportErrNo>true</supportErrNo> <!--req, 错误码，不支持不显示 -->
</ErrInfo>
</IPAccessConfigFileAbility>


DEVICE_ABILITY_INFO_LOG

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备日志搜索能力集描述 -->
<SearchLogAbility version="2.0">
<majorType opt="alarm,abnormal,operate,information,all"/><!--req, 日志主类型 -->
<MinorAlarmType>
<!--req, 日志次类型：报警日志 -->
<minorType opt=" alarmIn,alarmOut,motdetStart,motdetStop,hideAlarmStart,hideAlarmStop,vcaAlarmStart,
vcaAlarmStop,itsAlarmStart,itsAlramStop,netAlarmStart,netAlarmStop,wirelessAlarmStart,
wirelessAlarmStop,pirAlarmStart,pirAlarmStop,callhelpAlarmStart,callhelpAlarmStop,
ipChannelAlarmInStart,ipChannelAlarmInStop,detectfaceAlarmStart,detectfaceAlarmStop,
vodAlarmStart,vodAlarmStop,vcaSecnechangeDet,vcaAlarmLineDetBegin,vcaAlarmLineDetEnd,
vcaAlarmIntrudeBegin,vcaAlarmIntrudeEnd,vcaAlarmAudioInput,vcaAlarmAudioAbnormal,
vcaDefocusDetBegin,vcaDefocusDetEnd"/>
</MinorAlarmType>
<MinorAbnormalType>
<!--req, 日志次类型：异常日志 -->
<minorType opt=" raidError,viLost,illegalAccess,HDFull,HDError,DCDLost,IPConflict,NETBroken,RECError,
IPCNoLink,VIException,IPCIPConflict,senceExpection,PICRECError,VIMismatch,resolutionMismatch,
fanAbnormal,fanResume,SubSystemAbnormalReboot,MatrixStartBuzzer,NETAbnormal,MEMAbnormal,
fileAbnormal,pannelAbnormal,pannelResume,RS485DeviceAbnormal,RS485DeviceRevert,
screenSubsystemAbnormalReboot,screenSubsystemAbnormalInsert,screenSubsystemAbnormalPullOut,
screenAbnormalTemperature,highTemperatureProtect,recordOverFlow,DSPAbnormal,ANRRecordFail,
spareWorkDeviceExcept,startIPCMasFail,SubSystemIPConflict,SubSystemNETBroken,fanAbnormal,
backpanelTemperatureAbnormal"/>
</MinorAbnormalType>
<MinorOperateType>
<!--req, 日志次类型：操作日志 -->
<minorType opt=" startDVR,stopDVR,stopAbnormal,rebootDVR,remoteLogin,remotelogout,remoteStartREC,
remoteStopREC,startTransChan,stopTransChan,remoteGetParam,remoteCfgParam,remoteGetStatus,
remoteARM,remoteDisARM,remoteReboot,remoteStartVT,remoteStopVT,remoteUpgrade,remotePlayByFile,
remotePalyByTime,remotePTZCtrl,remoteFormatHDD,remoteStop,remoteLockFile,remoteUnLockFile,
remoteCfgFileOutput,remoteCfgFileInput,remoteRecFileOutput,remoteDVRAlarm,remoteIPCAdd,
remoteIPCDel,remoteIPCSet,rebootVCALib,remoteAddNas,remoteDelNas,remoteSetNas,remoteStartRECCdrw,
remoteStopRECCdrw,remotePICOutput,remoteInquestResume,remoteInquestAddFile,remoteInquestDelFile,
remoteDelHDisk,remoteLoadHDisk,remoteUnloadHDisk,subsystemReboot,matrixStartTransferVideo,
matrixStopTransferVideo,remoteSetAllSubSystem,remoteGetAllSubSystem,remoteSetPlanArray,
remoteGetPlanArray,matrixStartTransferAudio,matrixStopTransferAudio,logonCodeSpiter,logoffCodeSpiter,
startDynamicDecode,stopDynamicDecode,getCYCCfg,setCYCCfg,startCYCDecode,stopCYCDecode,getDecChanStatus,
getDecChanInfo,startPassiveDec,stopPassiveDec,ctrlPassiveDec,reconPassiveDec,getDecChanSW,setDecChanSW,
ctrlDecChanScale,setRemoteReplay,getRemoteReplay,ctrlRemoteReplay,setDispCfg,getDispCfg,setPlanAble,
getPlanAble,startPpppoe,stopPpppoe,uploadLogo,SMSControl,callOnline,remotePin,remoteBypass,
remoteUnBypass,remoteSetAlarmInCfg,remoteGetAlarmInCfg,remoteSetAlarmOutCfg,remoteGetAlarmOutCfg,
remoteAlarmOutOpenMan,remoteAlarmOutCloseMan,remoteAlarmEnableCfg,DBDataOutput,DBDataInput,MUSwitch,
MUPTZ,remoteConfRebRaid,remoteConfSpare,remoteAddRaid,remoteDelRaid,remoteMigRaid,remoteRebRaid,
remoteQuickConfRaid,remoteAddVD,remoteDelVD,remoteRPVD,remoteFormatExpanDVD,remoteRaidUpgrade,
remoteStopRaid,remoteStartPICREC,remoteStopPICREC,remoteSetSnmp,remoteTagOpt,streamCabac,remoteSpareOpt,
remoteIPCcfgFileOutput,remoteIPCcfgFileInput,remoteIPCUpgrade,setTriggerModeCfg,getTriggerModeCfg,
setIOOutCfg,getIOOutCfg,getTriggerModeDefault,getITCStatus,setStatusDetectCfg,getStatusDetectCfg,
setVideoTriggerModeCfg,getVideoTriggerModeCfg,remoteDeiceControl,remoteSetGateParmCfg,
remoteGetGateParmCfg,remoteSetDataUploadParmCfg,remoteGetDataUploadParmCfg,remoteGetBaseInfo,
remoteGetOverLapCfg,remoteSetOverLapCfg,remoteGetRoadInfo,remoteGetEctWorkState,remoteGetEctChanInfo,
remoteOnCtrlLamp,remoteOffCtrlLamp"/>
</MinorOperateType>
<MinorInformationType>
<!--req, 日志次类型：附加信息 -->
<minorType opt=" HDDInfo,smartInfo,RECStart,RECStop,RECOverdue,linkStart,linkStop,NETDiskInfo,raidInfo,runStatusInfo,
spareStartBackup,spareStopBackup,ANRRecordStart,ANRRecordend,ANRAddTimeQuantum,ANRDelTimeQuantum,setMultiMaster,
setMultiSlave,cancelMultiMaster,cancelMultiSlave,dispalyLogo,hideLogo,setDECDelayLevel,setBigScreenDispalyArea,
cutVideoSource,setBasemapArea,downloadBasemap,cutBasemap,controlElecEnlarge,setOutputResolution,setTrancsparecy,
setOSD,restoreDECStatus,screenSetInput,screenSetOutput,screenSetOSD,screenSetLogo,screenSetLayout,
screenPictureReview,screenGetOSD,screenGetLayout,getAllValidWND,getSignalWND,windowCtrl,getLayoutList,layoutCtrl,
setSignalLayout,getSignalList,getPlanList,setPlan,ctrlPlan,ctrlScreen,addNETSIG,setNETSIG,setDECBDCfg,getDECBDCfg,
getDeviceStatus,uploadPicture,setUserPWD,addLayout,delLayout,delNETSIG,addPlan,delPlan,getExternalMatrixCfg,
setExternalMatrixCfg,getUserCfg,setUsercfg,getDisplayPanelLinkCfg,setDisplayPanelLinkCfg,getWallsceneParam,
setWallsceneParam,getCurrentWallScene,switchWallScene,unlockRecord,VISAlarm,talkRecord"/>
</MinorInformationType>
</SearchLogAbility>


DEVICE_ABILITY_INFO_MOUNT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 摄像机架设参数能力集描述 -->
<CameraMountAbility version="2.0">
<CameraMountConfiguration>
<setupHeight min="" max=""/>
<!--架设高度-->
<lensType opt="0-unknow,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm"/>
<!-- 镜头焦距类型，0-未知,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm-->
<setupHeightUnit opt="0-m,1-cm"/>
<!--架设高度单位0～M,1~CM-->
<scenceDis min="" max=""/>
<!--图像下边缘位置与相机之间的水平距离，单位：厘米-->
<fPitchAngle min="" max=""/>
<!--相机俯仰角度[-180°, 180°]-->
<fInclineAngle min="" max=""/>
<!--相机倾斜角度[-180°, 180°]-->
<fRotateAngle min="" max=""/>
<!--相机旋转角度[-180°, 180°]-->
<videoDetCoeffcient min="" max=""/>
<!--视频测试系数[0,300]-->
<erectMethod opt="0-positive,1-lateral"/>
<!--架设方式0-正装，1-侧装-->
<cameraViewAngle opt="0-vertical,1-tilt"/>
<!--摄像机安装视野角度(0-垂直，1-倾斜，默认0-垂直)-->
<detailLensType min="" max=""/>
<!--镜头聚焦详细范围1-100，默认28，单位0.1mm SmartIPC-->
<detailLensUnit opt="0.1mm"/>
<!--镜头聚焦值的单位-->
<horizontalDistance min="" max=""/>
<!--摄像机与出入口水平距离：范围1-1000，默认30，单位cm-->
<horizontalDistanceUnit opt="cm"/>
<!--镜头聚焦值的单位-->
</CameraMountConfiguration>
</CameraMountAbility>


DEVICE_ABILITY_INFO_NPLUS

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备N+1能力集描述 -->
<NPlusOneAbility version="2.0">
<!--req,配置工作模式，对应NET_DVR_N_PLUS_ONE_WORK_MODE_CFG-->
<WorkModeCfg>
<supportMode opt="0,1"/>
<!--req, 支持模式：0-工作机，1-备机，不支持不显示-->
<modeChangeReboot>true,false</modeChangeReboot>
<!--req, true-模式改变后自动重启，不支持或不重启不显示-->
</WorkModeCfg>

<!--req, 添加删除设备，对应NET_DVR_N_PLUS_ONE_DEVICE_PARAM-->
<AddOrDelDevice>
<supportIP>true</supportIP>
<!--req, 支持添加删除IP，不支持时不显示-->
<addType opt="0,1"/>
<!--req,添加类型 0-(工作机上)添加备机,1-(备机上)添加工作机-->
<delType opt="0,1"/> <!--req,删除类型0-删除指定的机器（备机或工作机）1-全删-->
<supportBackupDisable>true</supportBackupDisable> <!--req,备份功能使能开关，不支持不显示-->
<supportPassword>true</supportPassword>
<!--req,密码，不支持不显示-->
</AddOrDelDevice>

<!--req, 获取的N+1设备信息，对应NET_DVR_N_PLUS_ONE_DEVICE_INFO-->
<DeviceInfo>
<nPlusOneType opt="0,1"/>
<!--req, N+1类型 0-备机,1-工作机-->
<supportIP>true</supportIP>
<!--req, 添加删除的IP地址，不支持不显示-->
<WorkingDeviceInfo>
<!--req, 工作机信息-->
<linkStatus opt="0,1"/> <!--req, 连接状态 0-连接失败1-连接成功-->
<workStatus opt="0,1"/> <!--req, 工作状态 0-正常1-异常-->
<backupStatus opt="0,1"/> <!--req, 备份状态 0-不在备份1-正在备份-->
<syncProgress min="0" max="100"/> <!--req, 录像同步进度-->
<supportSyncBeginTime>true</supportSyncBeginTime> <!--req, 同步开始时间，不支持不显示-->
<supportSyncEndTime>true</supportSyncEndTime> <!--req, 同步结束时间，不支持不显示-->
<supportSerialNumber>true</supportSerialNumber> <!--req, 设备序列号，不支持不显示-->
<supportSoftwareVersion>true</supportSoftwareVersion> <!--req, 设备软件版本，不支持不显示-->
<supportDeviceType>true</supportDeviceType> <!--req, 设备类型，不支持不显示-->
<supportGUID>true</supportGUID> <!--req, 设备GUID，不支持不显示-->
</WorkingDeviceInfo>
<RedundantDeviceInfo>
<!--req, 备机机信息-->
<workStatus opt="0,1"/> <!--req, 工作状态 0-正常1-异常-->
<backupStatus opt="0,1,2,3"/><!--req, 备份状态:0-不在监控,1-正在监控,2-正在备份中,3-正在同步,4-正在同步和备份中-->
<supportBackupPort>true</supportBackupPort ><!--req, 备份端口，不支持不显示-->
</RedundantDeviceInfo>
</DeviceInfo>
</NPlusOneAbility>


DEVICE_ABILITY_INFO_pos

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, POS能力集描述 -->
<POSAbility version="2.0">
<FilterRule>
<maxFilterNum>4</maxFilterNum>
<!--req,设备支持的最大可配规则数-->
<enable opt ="true,false"/>
<!--req,规则使能-->
<!--req,0-UTF-8,1-GB2312,2-Latin-1,3-Latin-2,4-Latin-3,5-Latin-4,6-Cyrillic,7-Arabic,8-Greek,9-Hebrew,10-Turkish,
11-Nordic,12-Thai,13-Latin-7,14-Latin-8,15-Latin-9,16-Latin-10,17-CentralEuropean,18-CyrillicScript-->
<characterSetType opt="UTF-8,GB2312,Latin-1,Latin-2,Latin-3,Latin-4,Cyrillic,Arabic,Greek,Hebrew,Turkish,
Nordic,Thai,Latin-7,Latin-8,Latin-9,Latin-10,CentralEuropean,CyrillicScript,Hebrew"/>
<!--req,设备支持的字符集类型-->
<protocalType opt="Generic, AVE VSI-ADD,AVE Vnet,EPSON,NUCLEUS"/>
<Generic>
<!--req,Generic协议配置-->
<caseSensitive opt="true,false"/>
<!--req,是否支持大小写敏感-->
<GenericStartCond>
<exclusive opt="true,false"/>
<!--req,是否包含标志本身，目前设备只支持起始标志位，用起始标志位同时控制起始和结束标志位-->
<maxSignalDataLen>128</maxSignalDataLen>
<!--req,最大标志数据长度-->
<supportAnyChar opt="true,false"/>
<!--req,是否支持任意字符，true-支持，false-不支持-->
<supportHex opt="true,false"/>
<!--req,是否支持十六进制表示，true-支持，false-不支持-->
</GenericStartCond>
<GenericEndCond>
<exclusive opt="true,false"/>
<!--req,是否包含标志本身-->
<maxSignalDataLen>128</maxSignalDataLen>
<!--req,最大标志数据长度-->
<moreLine min="0" max="4"/>
<!--req,匹配到交易结束后继续查找行数-->
<supportHex opt="true,false"/>
<!--req,是否支持十六进制表示，true-支持，false-不支持-->
</GenericEndCond>
<GenericLineSpaceCond>
<maxSignalDataLen>128</maxSignalDataLen>
<!--req,最大标志数据长度-->
<supportHex opt="true,false"/>
<!--req,是否支持十六进制表示，true-支持，false-不支持-->
</GenericLineSpaceCond>
<GenericIgnoreCond>
<maxSignalDataLen>128</maxSignalDataLen>
<!--req,最大标志数据长度-->
</GenericIgnoreCond>
</Generic>
<AVE>
<!--req,AVE协议配置-->
<posAddr min="0" max="10"/>
<!--req,pos地址编号范围-->
</AVE>
<NUCLEUS>
<!--opt, NUCLEUS协议配置-->
<employeeNo min="" max=""/>
<!--opt, 员工编号-->
<terminalNo min="" max=""/>
<!--opt, POS机编号-->
<shiftNo min="" max=""/>
<!--opt, 轮班编号-->
</NUCLEUS>
</FilterRule>
<ConnectMode>
<!--req,连接方式能力-->
<enbale opt = "true,false"/>
<!--req,是否支持-->
<!--req,0-TCPMonitor-监听模式（TCP）,1-TCPRecv-TCP网络接受,2-Serial-串口连接,3-UDPMonitor-监听模式（UDP）,
4-Sniff-网络侦听,5-MultiCast-多播,6-USBToRS232 USB转232-->
<connectMode opt="TCPMonitor,TCPRecv,Serial232,UDPMonitor,Sniff,MultiCast,USBToRS232"/>
<TCPMonitor>
<!--req,TCP模式网络监听-->
<port min="0" max="65535"/>
<!--req,允许配置的端口范围-->
<restrictRemoteIPv4 opt="true,false"/>
<!--opt,远程访问IP限制-->
</TCPMonitor>
<UDPMonitor>
<!--req,UDP网络监听-->
<port min="0" max="65535"/>
<!--req,允许配置的端口范围-->
<restrictRemoteIPv4 opt="true,false"/>
<!--opt,远程访问IP限制-->
</UDPMonitor>
<Sniff>
<!--req,网络侦听-->
<enableSourcePort opt="true,false"/>
<!--req,是否支持数据源端口过滤-->
<enableDestAddr opt="true,false"/>
<!--req,是否支持对目标地址过滤-->
<enableDestPort opt="true,false"/>
<!--req,是否支持数目标地址端口过滤-->
<sourcePort min="0" max="65535"/>
<!--req,数据源端口范围-->
<destPort min="0" max="65535"/>
<!--req,目标地址端口范围-->
</Sniff>
<multiCast>
<!--req,多播-->
<port min="0" max="65535"/>
<!--req,允许配置的端口范围-->
</multiCast>
<USBToSerial232>
<!--req,USB转232串口方式-->
<baudRate opt="50,75,110,150,300,600,1200,2400,4800,9600,19200,38400,57600,76800,115200"/>
<!--req设备支持的波特率，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k-->
<dataBit opt="5,6,7,8"/>
<!--req,数据有几位 0-5位，1-6位，2-7位，3-8位-->
<stopBit opt="1,2"/>
<!--req,停止位0-1位，1-2位-->
<parity opt="none,odd,even"/>
<!--req,校验方式 none-无校验，odd-奇校验，even-偶校验-->
<flowcontrol opt="none,hard,soft"/>
<!--req,流控方式 none-无，hard-硬流控，soft-软流控-->
<virtualSerialPort min="0" max="254"/>
<!--req,虚拟串口编号-->
</USBToSerial232>
</ConnectMode>
<ChanAssociationRule>
<!--req,通道与规则关联能力-->
<fontSize opt="8*16,16*32,32*64"/>
<!--req,设置支持的字体大小:0-8*16,1-16*32,2-32*64-->
<showPosInfo opt="true,false"/>
<!--req,设备支持码流中叠加pos信息-->
<overlayMode opt="scroll,page"/>
<!--req,字符叠加显示方式-->
<delayTime min="5" max="3600"/>
<!--req,OSD叠加消失时间，单位s-->
<supportOSDColor opt="true,false"/>
<!--req,是否支持颜色配置-->
<timeOut min="5" max="3600"/>
<!--opt,POS数据接收超时时间，单位s-->
</ChanAssociationRule>
<ExceptionHandle>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
</ExceptionHandle>
</POSAbility>


DEVICE_ABILITY_INFO_pos_input

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取POS能力集时pInBuf参数描述 -->
<POSAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</POSAbility>


DEVICE_ABILITY_INFO_PROTOCOL

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备协议接入能力集描述 -->
<AccessProtocolAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
<EzvizParam>
<enable opt="true,false"/>
<!--req, EZVIZ 视频7 协议使能: 0-关闭, 1-开启-->
<mutexAbility opt="gbt28181,ehome"/>
<!--req, 互斥能力,GBT28181和Ehome能力-->
<deviceStatus attri="readonly" opt="offline,online"/>
<!--设备注册状态-->
<allowRedirect opt ="0,1,2"/>
<!--opt, 是否支持域名地址重定向,不支持时无此节点-->
<domainLen min="" max=""/>
<!--opt, 域名服务器长度,不支持时无此节点-->
<netMode opt="auto,wiredNetworkPriority, wiredNetwork,wirelessNetwork"/>
<!--opt, 网络模式：自动、有线网络优先、有线网络默认、无线网络-->
<VerificationCode>
<!--opt, 支持配置验证码, 不支持时无此节点-->
<!--opt, xs:string-->
<verificationCodeType opt="normal,empty">normal</verificationCodeType>
<supportDeclarationURL>
<!--opt, xs:string, 服务声明超链接返回-->
</supportDeclarationURL>
<supportPrivacyPolicyURL>
<!--opt, xs:string, 隐私条款超链接返回-->
</supportPrivacyPolicyURL>
<!--opt, 设备验证码是否修改过，修改了返回true, 没有修改返回false, 不返回该节点表示不支持判断认证码是否修改-->
<verificationCodeModify>true</verificationCodeModify>
</VerificationCode>
</EzvizParam>
<SupportTransPrivateProtocol>
<!--opt 支持通过萤石云透传私有协议-->
<NotSupportLongConfig>
<!--opt 通过SDK通过萤石云平台与设备通信时，萤石云平台不支持的长连接功能-->
<preview>true</preview>
<!--opt 预览 NET_DVR_RealPlay_V40-->
<voiceCom>true</voiceCom>
<!--opt 语音对讲 NET_DVR_StartVoiceCom_V30-->
<playbackByTime>true</playbackByTime>
<!--opt 按时间回放 NET_DVR_PlayBackByTime-->
<playbackByFile>true</playbackByFile>
<!--opt 按文件回放NET_DVR_PlayBackByName-->
<playReverseByTime>true</playReverseByTime>
<!--opt 按时间倒放NET_DVR_PlayBackReverseByTime_V40-->
<playReverseByFile>true</playReverseByFile>
<!--opt 按文件倒放NET_DVR_PlayBackReverseByName-->
<playbackByTimeAndId>true</playbackByTimeAndId>
<!--opt 按ID和时间回放 NET_DVR_PlayBackByTime_V40-->
<playbackByTimeLatitudeLongitude>true</playbackByTimeLatitudeLongitude>
<!--opt 按时间、经纬度回放 NET_DVR_PlayBackByTime_NEW-->
<playbackByTimePCNVR>true</playbackByTimePCNVR>
<!--opt PCNVR, 按时间回放 NET_DVR_PlayBackByTime_PCNVR-->
<arm>true</arm>
<!--opt 布防 NET_DVR_SetupAlarmChan_V41-->
<format>true</format>
<!--opt 远程格式化 NET_DVR_FormatDisk-->
<log>true</log>
<!--opt 设备日志 NET_DVR_FindDVRLog_V30-->
<matrixLog>true</matrixLog>
<!--opt 视频综合平台日志 NET_DVR_FindDVRLog_Matrix-->
<smartLog>true</smartLog>
<!--opt smart日志 NET_DVR_FindDVRLog_V30-->
<alarmHostLog>true</alarmHostLog>
<!--opt 报警主机日志 NET_DVR_FindAlarmHostLog-->
<uploadConfigFile>true</uploadConfigFile>
<!--opt 导入配置文件 NET_DVR_UploadFile_V40/CONFIGURATION_FILE-->
<downloadConfigFile>true</downloadConfigFile>
<!--opt 导出配置文件 NET_DVR_StartDownload/NET_SDK_DOWNLOAD_CONFIGURATION_FILE-->
<exportIPCConfigFile>true</exportIPCConfigFile>
<!--opt 导出IPC配置文件NET_DVR_StartRemoteConfig/NET_DVR_IMPORT_IPC_CFG_FILE-->
<importIPCConfigFile>true</importIPCConfigFile>
<!--opt 导入IPC配置文件NET_DVR_StartDownload/NET_SDK_DOWNLOAD_IPC_CFG_FILE-->
<transparencySerial>true</transparencySerial>
<!--opt 透明通道NET_DVR_SerialStart-->
<alarmHostTransparencySerial>true</alarmHostTransparencySerial>
<!--opt 报警主机透明通道NET_DVR_AlarmHostSerialStart -->
<backupByFile>true</backupByFile>
<!--opt 按文件名备份录像 NET_DVR_BackupByName-->
<backupByTime>true</backupByTime>
<!--opt 按时间备份录像NET_DVR_BackupByTime-->
<backupPicture>true</backupPicture>
<!--opt 备份图片NET_DVR_Backup-->
<backupLog>true</backupLog>
<!--opt 备份日志 NET_DVR_Backup-->
<upgrade>true</upgrade>
<!--opt 升级NET_DVR_StartUpgrade-->
<upgradeRaidAdapter>true</upgradeRaidAdapter>
<!--opt 升级适配器 NET_DVR_AdapterUpgrade-->
<upgradeIPChannel>true</upgradeIPChannel>
<!--opt 升级IP通道 NET_DVR_StartRemoteConfig/NET_DVR_UPGRADE_IPC-->
<upgradeVCALib>true</upgradeVCALib>
<!--opt 智能库升级 NET_DVR_VcalibUpgrade-->
<upgradeOptical>true</upgradeOptical>
<!--opt 光端机升级 NET_DVR_OpticalUpgrade-->
<inquireFaceDBRecord>true</inquireFaceDBRecord>
<!--opt 查询智能人脸数据库记录 NET_DVR_InquireFaceDBRecord-->
<searchFaceDB>true</searchFaceDB>
<!--opt 检索智能人脸数据库 NET_DVR_SearchFaceDB-->
<inquireSnapDBRecord>true</inquireSnapDBRecord>
<!--opt 查询抓拍数据库记录NET_DVR_InquireSnapDBRecord-->
<searchSnapDB>true</searchSnapDB>
<!--opt 检索抓拍数据库NET_DVR_SearchSnapDB-->
<faceMatchAlarm>true</faceMatchAlarm>
<!--opt 查询非授权人员比对报警结果NET_DVR_FindFaceMatchAlarm-->
<findDatabase>true</findDatabase>
<!--opt 查询数据库NET_DVR_FindDataBase-->
<findBlockList>true</findBlockList>
<!--opt 查询非授权人员NET_DVR_FindBlockList-->
<findSnapPicture>true</findSnapPicture>
<!--opt 查询抓拍图片NET_DVR_FindSnapPicture-->
<findAdvanceSnapPicture>true</findAdvanceSnapPicture>
<!--opt 事后检索NET_DVR_AdvanceFindSnapPicture-->
<uploadAudio>true</uploadAudio>
<!--opt 上传音频文件 NET_DVR_StartUploadFile-->
<downloadAudio>true</downloadAudio>
<!--opt 下载音频文件NET_DVR_StartDownloadFile-->
<passiveDecode>true</passiveDecode>
<!--opt 被动解码NET_DVR_MatrixStartPassiveDecode-->
<passiveTranseCode>true</passiveTranseCode>
<!--opt 被动转码NET_DVR_StartPassiveTransCode-->
<pictureView>true</pictureView>
<!--opt 图片回显NET_DVR_StartPicPreview-->
<dvcsOperateDevice>true</dvcsOperateDevice>
<!--opt 配置分布式子设备-->
<uploadPicture>true</uploadPicture>
<!--opt 底图上传NET_DVR_PicUpload-->
<t1Test>true</t1Test>
<!--opt t1功能测试，产线使用NET_DVR_StartT1Test-->
<uploadCert>true</uploadCert>
<!--opt 上传证书NET_DVR_UploadFile_V40/UPLOAD_CERTIFICATE-->
<downloadCert>true</downloadCert>
<!--opt 下载证书NET_DVR_StartDownload/NET_SDK_DOWNLOAD_CERT-->
<downloadBaselineScenePicture>true</downloadBaselineScenePicture>
<!--opt 下载基准场景图片NET_DVR_StartDownload/NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC-->
<downloadVQDAlarmPicture>true</downloadVQDAlarmPicture>
<!--opt 下载VQD报警图片NET_DVR_StartDownload/NET_SDK_DOWNLOAD_VQD_ALARM_PIC-->
<uploadInquestFile>true</uploadInquestFile>
<!--opt 上传审讯文件NET_DVR_InquestUploadFile_V30-->
<resumeInquestEvent>true</resumeInquestEvent>
<!--opt 恢复审讯事件 NET_DVR_Backup-->
<getNetworkFlow>true</getNetworkFlow>
<!--opt 网络流量NET_DVR_StartNetworkFlowTest-->
<emailTest>true</emailTest>
<!--opt emial服务测试NET_DVR_StartEmailTest-->
<algolibDebugInfo>true</algolibDebugInfo>
<!--opt 算法库调试信息输出NET_DVR_AlgoDebugStart-->
<eventSearch>true</eventSearch>
<!--opt 事件搜索NET_DVR_FindFileByEvent-->
<smartSearch>true</smartSearch>
<!--opt smart搜索NET_DVR_SmartSearch-->
<findFile>true</findFile>
<!--opt 文件搜索NET_DVR_FindFile_V30-->
<findIPSANDirectory>true</findIPSANDirectory>
<!--opt 查找IPSAN文件目录NET_DVR_FindIpSanDirectory-->
<findPicture>true</findPicture>
<!--opt 查找图片NET_DVR_FindPicture-->
<findInquestFile>true</findInquestFile>
<!--opt 搜索审讯文件NET_DVR_InquestFindFile-->
<findRecordLabel>true</findRecordLabel>
<!--opt 搜索录像标签NET_DVR_FindRecordLabel-->
<findPCNVRFile>true</findPCNVRFile>
<!--opt PCNVR搜索文件NET_DVR_FindFile_PCNVR-->
<setAccessCameraInfo>true</setAccessCameraInfo>
<!--opt 设置前端信息NET_DVR_SetAccessCameraInfo-->
<securityPullRaidDisk>true</securityPullRaidDisk>
<!--opt 安全拔盘NET_DVR_RaidPullDiskStart-->
<scanRaid>true</scanRaid>
<!--opt 扫描阵列NET_DVR_ScanRaidStart-->
<GPSData>true</GPSData>
<!--opt 获取GPS数据NET_DVR_GetVehicleGpsInfo-->
<oneKeyConfig>true</oneKeyConfig>
<!--opt 一键配置ET_DVR_StartRemoteConfig/NET_DVR_ONE_KEY_CONFIG-->
<streamInfoList>true</streamInfoList>
<!--opt 获取已添加的ID信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_STREAM_INFO-->
<findNASDirectory>true</findNASDirectory>
<!--opt 查找NAS目录 NET_DVR_StartRemoteConfig/NET_DVR_FIND_NAS_DIRECTORY-->
<ITSTransparencyChannel>true</ITSTransparencyChannel>
<!--opt ITS透明通道 NET_DVR_StartRemoteConfig/NET_ITS_TRANSCHAN_START-->
<getInputVolume>true</getInputVolume>
<!--opt 获取输入音量 NET_DVR_StartRemoteConfig/NET_DVR_START_GET_INPUTVOLUME-->
<vehicleCheck>true</vehicleCheck>
<!--opt 非授权车辆稽查 NET_DVR_StartRemoteConfig/NET_DVR_VEHICLE_CHECK_START-->
<fisheyeConfig>true</fisheyeConfig>
<!--opt 鱼眼长连接配置 NET_DVR_StartRemoteConfig/NET_DVR_FISHEYE_CFG-->
<getVehicleList>true</getVehicleList>
<!--opt 获取所有车辆名单信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST-->
<setVehicleList>true</setVehicleList>
<!--opt 设置所有车辆名单信息 NET_DVR_StartRemoteConfig/NET_DVR_VEHICLE_CONTROL_LIST_START-->
<NASServerTest>true</NASServerTest>
<!--opt NAS服务器测试 NET_DVR_StartRemoteConfig/NET_DVR_NAS_SERVER_TEST-->
<NTPServerTest>true</NTPServerTest>
<!--opt NTP服务器测试 NET_DVR_StartRemoteConfig/NET_DVR_NTP_SERVER_TEST-->
<IPServerTest>true</IPServerTest>
<!--opt IP冲突测试 NET_DVR_StartRemoteConfig/NET_DVR_IP_TEST-->
<FTPServerTest>true</FTPServerTest>
<!--opt FTP服务器测试 NET_DVR_StartRemoteConfig/NET_DVR_FTP_SERVER_TEST-->
<emailServerTest>true</emailServerTest>
<!--opt email服务器测试 NET_DVR_StartRemoteConfig/NET_DVR_EMAIL_SERVER_TEST-->
<expand>true</expand>
<!--opt 远程扩容NET_DVR_ExpandDisk-->
<raidFastConfig>true</raidFastConfig>
<!--opt 阵列一键配置NET_DVR_RaidFastConfig-->
<VQDDiagnoseInfo>true</VQDDiagnoseInfo>
<!--opt 获取VQD诊断信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_VQD_DIAGNOSE_INFO-->
<ITSExternalDevice>true</ITSExternalDevice>
<!--opt 获取ITS外接设备信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_ITS_EXDEVSTATUS-->
<FCInfo>true</FCInfo>
<!--opt 获取FC信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_FC-->
<NPlusOneDeviceInfo>true</NPlusOneDeviceInfo>
<!--opt 获取N+1模式的设备信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO-->
<matrixDispRoute>true</matrixDispRoute>
<!--opt 视频显示路径 NET_DVR_StartRemoteConfig/NET_DVR_GET_DISP_ROUTE_LIST-->
<Ipv6List>true</Ipv6List>
<!--opt IPv6地址 NET_DVR_StartRemoteConfig/NET_DVR_GET_IPV6_LIST-->
<zoneInfo>true</zoneInfo>
<!--opt 获取所有防区信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM-->
<alarmoutInfo>true</alarmoutInfo>
<!--opt 获取所有触发器信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_ALARMHOST_TRIGGER_LIST-->
<variableInfo>true</variableInfo>
<!--opt 获取变量元素信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_ALL_VARIABLE_INFO-->
<searchAlarmhostExternalDevice>true</searchAlarmhostExternalDevice>
<!--opt 搜索外接设备 NET_DVR_StartRemoteConfig/NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE-->
<registerAlarmhostExternalDevice>true</registerAlarmhostExternalDevice>
<!--opt 注册外接设备 NET_DVR_StartRemoteConfig/NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE-->
<historyValue>true</historyValue>
<!--opt 获取历史数据 NET_DVR_StartRemoteConfig/NET_DVR_GET_HISTORY_VALUE-->
<ETCChannelState>true</ETCChannelState>
<!--opt 获取ECT通道状态 NET_DVR_StartRemoteConfig/NET_ITS_GET_ECT_CHAN_INFO-->
<VQDmonitorPlan>true</VQDmonitorPlan>
<!--opt 获取管理计划 NET_DVR_StartRemoteConfig/NET_DVR_GET_MONITOR_PLAN_VQD-->
<VQDmonitorID>true</VQDmonitorID>
<!--opt 获取监控点信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_MONITORID_VQD-->
<CDWriteStatus>true</CDWriteStatus>
<!--opt CD刻录状态 NET_DVR_StartRemoteConfig/NET_DVR_INQUEST_GET_CDW_STATUS-->
<pdcResult>true</pdcResult>
<!--opt 客流量数据 NET_DVR_StartRemoteConfig/NET_DVR_GET_PDC_RESULT-->
<ptzLockInfo>true</ptzLockInfo>
<!--opt PTZ锁定信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_PTZLOCKINFO-->
<gopInfo>true</gopInfo>
<!--opt gop信息 NET_DVR_StartRemoteConfig/NET_DVR_GET_GOP_INFO-->
<heatMapResult>true</heatMapResult>
<!--opt 热度图数据 NET_DVR_StartRemoteConfig/NET_DVR_GET_HEATMAP_RESULT-->
<lockInfoList>true</lockInfoList>
<!--opt 被锁定用户信息 NET_DVR_StartRemoteConfig/ NET_DVR_GET_LOCKED_INFO_LIST -->
</NotSupportLongConfig>
</SupportTransPrivateProtocol>
</AccessProtocolAbility>


DEVICE_ABILITY_INFO_PTZ

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备PTZ能力集描述 -->
<!--req, PTZAbility：花样扫描、云台守望等PTZ能力 -->
<PTZAbility version="2.0">
<channelNO>
1<!--req,通道号-->
</channelNO>
<PTZControl>
<!--req,云台控制-->
<controlType opt="light,wiper,fan,heater,aux1,aux2,zoomIn,zoomOut,focusNear,focusFar,irisOpen,irisClose,
ttiltUp,tiltDown,panLeft,panRight,upLeft,upRight,downLeft,downRight,panAuto,panCircle,
linearScan,cleanAllPreset, cleanAllSeq, cleanAllCruise, tiltUpZoomIn, tiltUpZoomOut,
tiltDownZoomIn, tiltDownZoomOut, panLeftZoomIn, panLeftZoomOut, panRightZoomIn, panRightZoomOut,
upLeftZoomIn, upLeftZoomOut, upRightZoomIn, upRightZoomOut, downLeftZoomIn, downLeftZoomOut,
downRightZoomIn, downRightZoomOut"/>
<!--req,支持的云台控制类型，分别为接通灯光电源、接通雨刷开关、接通风扇开关、接通加热器开关、接通辅助设备开关、
接通辅助设备开关、焦距以速度SS变大、焦距以速度SS变小、焦点以速度SS前调、焦点以速度SS后调、光圈以速度SS扩大、
光圈以速度SS缩小、云台以SS的速度上仰、云台以SS的速度下俯、云台以SS的速度左转、云台以SS的速度右转、
云台以SS的速度上仰和左转、云台以SS的速度上仰和右转、云台以SS的速度下俯和左转、云台以SS的速度下俯和右转、
云台以SS的速度左右自动扫描、云台以SS的速度自动圆周扫描、区域扫描、预置点全部清除、巡航全部清除、花样扫描路径全部清除、
云台以SS的速度上仰&&焦距以速度SS变大、云台以SS的速度上仰&&焦距以速度SS变小、云台以SS的速度下俯&&焦距以速度SS变大、
云台以SS的速度下俯&&焦距以速度SS变小、云台以SS的速度左转&&焦距以速度SS变大、云台以SS的速度左转&&焦距以速度SS变小、
云台以SS的速度右转&&焦距以速度SS变大、云台以SS的速度右转&&焦距以速度SS变小、云台以SS的速度上仰和左转&&焦距以速度SS变大、
云台以SS的速度上仰和左转&&焦距以速度SS变小、云台以SS的速度上仰和右转&&焦距以速度SS变大、云台以SS的速度上仰和右转&&焦距以速度SS变小、
云台以SS的速度下俯和左转&&焦距以速度SS变大、云台以SS的速度下俯和左转&&焦距以速度SS变小、云台以SS的速度下俯和右转&&焦距以速度SS变大、
云台以SS的速度下俯和右转&&焦距以速度SS变小-->
</PTZControl>
<Patrol><!--巡航-->
<patrolNum min="1" max="16"/>
<!--req,巡航扫描的个数-->
<presetNum min="1" max="256"/>
<!--req,单条巡航扫描的预置点个数-->
<dwellTime min="1" max="255" default="10"/>
<!--req,巡航点停顿时间-->
<speed min="1" max="255" default=""/>
<!--req,巡航速度-->
</Patrol>
<Preset>
<!--req,预置点-->
<presetNum min="1" max="256"/>
<!--req,预置点个数-->
<nameLen max="32"/><!--req, 无此节点认为不支持设置名称-->
<specialNo opt ="1,2,3,4,5"/>
<!--req, 此列表里的预置点只能用于调用，不能有其他操作，比如修改、删除-->
<maxThermometryPresetNum>100</maxThermometryPresetNum>
<!--opt,支持的测温预置点个数，最大100个-->
</Preset>
<PTZZoomIn><!--支持云台缩放（3D定位）功能-->
<enabled>true</enabled>
<!--req,支持云台缩放-->
</PTZZoomIn>
<Pattern>
<!--req,花样扫描-->
<operateType opt="recordStart,recordStop,run,stop,delete,deleteAll"/>
<!--req,支持的花样扫描的操作类型-->
<patternID min="1" max="4"/>
<!--req,花样扫描的ID号-->
</Pattern>
<ParkAction><!--云台守望-->
<parkTime min="5" max="720"/>
<!--req,守望等待时间，单位s-->
<actionType opt="atuoScan,frameScan,patrol,verticalScan,preset,randomScan,pattern,panoramaScan,areaScan"/>
<!--req,守望动作类型，支持patrol（巡航扫描）、preset（预置点）、pattern（花样扫描）、areaScan（区域扫描）还需要填写下面支持的编号能力-->
<patrolID min="1" max="8"/>
<!--req,巡航扫描的ID号-->
<presetID min="1" max="8"/><!--req,预置点的ID号-->
<patternID min="1" max="4"/><!--req,花样扫描的ID号-->
<oneTouchSwitch opt="true,false"/><!--req,一键功能使能-->
</ParkAction>
<SchduleTask><!--云台定时任务-->
<enable opt="true,false"/>
<!--req, 是否支持使能-->
<maxTimeNum>10</maxTimeNum>
<!--req, 每天支持设置的时间段-->
<parkTime min="5" max="720"/>
<!--req,任务等待时间，单位：s-->
<actionType opt="autoscan,framescan,randomscan,patrol,pattern,preset,panoramascan,tiltscan,periodreboot,periodadjust,auxoutput,areaScan"/>
<!--req,动作类型，支持autoscan（自动扫描）、framescan(帧扫描)、patrol（巡航扫描）、preset（预置点）、pattern（花样扫描）、
panoramascan(全景扫描)、tiltscan(垂直扫描)、periodreboot(定时重启)、periodadjust(定时校正)、auxoutput（辅助输出）、areaScan（区域扫描）还需要填写下面支持的编号能力-->
<patrolID min="1" max="8"/>
<!--req,巡航扫描的ID号-->
<presetID min="1" max="8"/>
<!--req,预置点的ID号-->
<patternID min="1" max="4"/>
<!--req,花样扫描的ID号-->
<auxoutput min="1" max="2"/>
<!--req,辅助输出-->
</SchduleTask>
<LinearScanCfg>
<type opt="leftLimit,rightLimit"/>
<!--req,left左边界设置，right右边界设置-->
</LinearScanCfg>

<WiperCfg><!--req, 雨刷控制配置NET_DVR_WIPERINFO_CFG-->
<wiperWorkMode opt="single, repeat"/><!--req, 雨刷工作模式0-single(单次操作) 1-continue(持续操作)-->
<WiperContinueWorkParam>
<!--req, 持续操作模式-->
<workTimeIntervalUnit opt="sec"/>
<!--req, 间隔时间单位: sec-秒-->
<workTimeInterval min="" max=""/><!--req, 间隔时间-->
<continueWorkTimeUnit opt="minute"/>
<!--req, 持续时间单位,minute-分钟-->
<continueWorkTime min="" max=""/><!--req,持续时间-->
</WiperContinueWorkParam>
</WiperCfg>
<WiperStatus opt="false"/>
<!--req,true表示支持雨刷状态, false表示支持不支持雨刷-->
<PtzBasicCfg>
<BasicParamCfg>
<proportionalPan opt="false,true"/>
<!--req,启用比例变倍配置, 0-否，1-是-->
<presetFreezing opt="false,true"/>
<!--req,启用预置点视频冻结, 0-否，1-是-->
<presetSpeed min="" max=""/>
<!--req,预置点速度等级, 1~8，默认4-->
<keyboardCtrlSpeed opt="low,normal,high"/>
<!--req,手控速度等级, 0-低,1-中,2-高-->
<autoScanSpeed min="" max=""/>
<!--req,扫描速度等级：1~40，默认28-->
<zoomingSpeed min="" max=""/>
<!--req,变倍速度：1~3，默认3-->
<manualControlSpeed opt="compatibility,human,nonMotorVehicle, motorVehicle, adaptive"/>
<!--req,0-兼容，1-行人，2-非机动车，3-机动车，4-自适应 -->
<PTZMotionTrack opt="true,false"/>
<!--opt,0-默认（开启）,1-关闭 -->
</BasicParamCfg>
<OSDCfg>
<zoomStatus opt="2s,5s,10s,normallyOpen,normallyClose"/><!--req,镜头倍数显示：1-2秒、2-5秒、3-10秒、0xff-常关、0-常开，默认2秒-->
<ptStatus opt="2s,5s,10s,normallyOpen,normallyClose"/><!--req,方位角显示：1-2秒、2-5秒、3-10秒、0xff-常关、0-常开，默认2秒-->
<presetStatus opt="2s,5s,10s,normallyOpen,normallyClose"/><!--req,预置点标题显示：1-2秒、2-5秒、3-10秒、0xff-常关、0-常开，默认2秒-->
</OSDCfg>
<PowerOffMemCfg>
<resumeTimePoint opt="forbidden,30s,60s,300s,600s"/><!--req,掉电记忆模式：Oxff-禁用、1-30秒、2-60秒、3-300秒、4-600秒，默认30秒-->
</PowerOffMemCfg>
</PtzBasicCfg>

<LimitCfg>
<enable opt="false,true"/>
<!--req,启用使能，0-否，1-是-->
<limitMode opt="mamualStops,scanStops"/>
<!--req,限位模式 1-键控限位，2-扫描限位-->
<limitStatus attri="readonly" opt="noLimited,limited"/>
<!--req,限位状态 0-未限位，1-已限位（不可编辑-->
</LimitCfg>

<LimitCtrl>
<workMode opt="set,clear"/>
<!--req,工作模式 :0-设置，1-清除-->
</LimitCtrl>

<ClearCfg>
<allPreset opt="false,true"/>
<!--req,清除所有的预置点，0-否，1-是-->
<allPatrols opt="false,true"/>
<!--req,清除所有的巡航路径，0-否，1-是-->
<allPatterms opt="false,true"/>
<!--req,清除所有的花样扫描，0-否，1-是-->
<allPrivacyMasks opt="false,true"/>
<!--req,清除所有的隐私块，0-否，1-是-->
<allPTZLimited opt="false,true"/>
<!--req,清除所有的限位设置，0-否，1-是-->
<allScheduledTasks opt="false,true"/>
<!--req,清除所有的定时任务，0-否，1-是-->
<allParkAction opt="false,true"/>
<!--req,清除所有的守望，0-否，1-是-->
</ClearCfg>

<PtzPrioritizeCfg>
<PtzPrioritize opt="net,Rs485"/>
<!--req,云台优先：0-RS485，1-网络，默认网络-->
<delay min="" max=""/>
<!--req,延时：2~200秒-->
</PtzPrioritizeCfg>

<InitalPostionCtrl>
<workMode opt="set,goto,clear"/>
<!--req,工作模式 : 0-设置，1-调用, 2-清除-->
</InitalPostionCtrl>

<PrivacyMaskCfg>
<globalEnable opt="false,true"/>
<!--req,启用全局使能，0-否，1-是-->
<RegionalID min="" max=""/>
<!--req,区域ID号 1~24-->
<enable opt="false,true"/>
<!--req,启用使能，0-否，1-是-->
<colorType opt="gray,red,green,blue,orange,yellow,mosaic"/>
<!--req,颜色 1-灰、2-红、3-绿、4-蓝、5-橙、6-黄、0xff-马赛克-->
<delPrivacyMaskCfg attri="writeonly" opt="delete"/>
<!--req,字段索引含义 1-删除（WriteOnly）-->
<privacyMaskCfgEnable attri="readonly" opt="false,true"/>
<!--req, 隐私遮蔽区域配置参数是否显示 0-否，1-是（ReadOnly）-->
<currentRegionEnable opt="false,true"/>
<!--req, 当前区域坐标是否有效 0-否，1-是-->
<activeZoomRatio min="" max=""/>
<!--req, 屏蔽倍率：1~100-->
<PrivacyMaskNameLen min="" max=""/>
<!--req, 遮挡区域名称长度-->
<PrivacyMaskArea>
<Region>
<regionType opt="rectangle,convexPolygon,concavePolygon"/>
<!--req,矩形,凸多边形,凹多边形-->
<vertexNum min="3" max="10"/>
<!--req,区域顶点数量-->
</Region>
</PrivacyMaskArea>
</PrivacyMaskCfg>

<SmartTrackCfg>
<enable opt="false,true"/>
<!--req,启用使能，0-否，1-是-->
<duration min="" max=""/>
<!--req,持续时间：0~300秒，默认300秒-->
</SmartTrackCfg>

<ZoomRatioCtrl>
<enable opt="true"/>
<!--req,支持设置跟踪倍率-->
</ZoomRatioCtrl>

<PTZLOCK>
<ptzLockCtrl opt="unlock,lock"/>
<!--req,云台锁定控制 0-解锁，1-锁定-->
<supportFunction opt="fieldDetection,traversingVirtualPlane,regionEntrance,regionExiting,loitering,peopleGathering,
fastMoving,parking,unattendedBaggage,objectRemoval,vehicleDetection,hvtVehicleDetection"/>
<!--req,支持 区域入侵侦测,越界侦测界面,进入区域侦测,离开区域侦测,徘徊侦测,人员聚集侦测,快速运动侦测,
停车侦测,物品遗留侦测,物品拿取侦测,车辆侦测,HVT混行卡口侦测-->
</PTZLOCK>

<PositionLimitAngle>
<!--场景限位操作-->
<positionIndex min="" max=""/>
<!--场景索引-->
<LimitAngle>
<able opt="enable,disable"/>
<!--场景是否启用-->
<Up>
<action opt="ptz,p,t,z,pt"/>
<panpos>true</panpos>
<tiltpos>true</tiltpos>
<zoompos>true</zoompos>
</Up>
<Down>
<action opt="ptz,p,t,z,pt"/>
<panpos>true</panpos>
<tiltpos>true</tiltpos>
<zoompos>true</zoompos>
</Down>
<Left>
<action opt="ptz,p,t,z,pt"/>
<panpos>true</panpos>
<tiltpos>true</tiltpos>
<zoompos>true</zoompos>
</Left>
<Right>
<action opt="ptz,p,t,z,pt"/>
<panpos>true</panpos>
<tiltpos>true</tiltpos>
<zoompos>true</zoompos>
</Right>
</LimitAngle>
</PositionLimitAngle>

</PTZAbility>


DEVICE_ABILITY_INFO_RECORD

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备录像相关能力集描述 -->
<RecordAbility version="2.0">
<Label>true</Label>
<!--opt,是否支持录像标签-->
<CmdTriggerRecord>true</CmdTriggerRecord >
<!--req,是否支持命令触发录像，对应NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA-->
<PackRecord>true</PackRecord >
<!--opt,是否支持按时间打包录像，对应NET_DVR_RECORD_PACK-->
<RecordScheduleNum>8</RecordScheduleNum><!--req,录像时间段个数-->
<!--req, 录像计划能力，对应结构体NET_DVR_RECORD_V30只增加CVR新增的能力，默认其他均支持-->
<recordPlanAbility opt="substream,passback,lockduration,recordbackup"/>
<!--req, 是否支持查询存档卷录像，不支持不显示-->
<findBackupRecordAbility>true</findBackupRecordAbility>
<MonthlyDistribution>true</MonthlyDistribution><!--opt,是否支持月历搜索-->
<monthlyDistributionAndRecodeType>true</monthlyDistributionAndRecodeType><!--opt,是否支持月历搜索中的录像类型-->
<MDRCondStreamType opt="main,sub"></MDRCondStreamType>
<!--opt, 月历搜索条件支持的码流类型-->
<DailyDistribution>true</DailyDistribution><!--opt,是否支持日历搜索-->
<findWorkingDeviceRecord>true</findWorkingDeviceRecord >
<!--opt, 是否支持备机上查询工作机录像，不支持不显示，对应NET_DVR_FILECOND_V40中的szWorkDeviceIP，Netra3.0.0新增-->
<autoUnlockTimePointAbility>true</autoUnlockTimePointAbility>
<!--req, 是否支持自动解锁时间点,结构体NET_DVR_TIME_LOCK不支持不显示此节点，CVR2.2.0新增-->
<findWithATMCond>true</findWithATMCond><!--req, 是否支持带ATM信息的查询，不支持不返回该节点，ATM H-DVR产品新增-->
<PlayBack>
<controlSpeed min="" max=""/>
<!--req,回放是否支持设置码流-->
<playBackReverseByName>true</playBackReverseByName>
<!--req,是否支持按文件倒放-->
<playBackReverseByTime>true</playBackReverseByTime>
<!--req,是否支持按时间倒放-->
<playbackBackupRecordAbility>true</playbackBackupRecordAbility>
<!--req, 否支持回放存档卷录像，不支持不显示-->
<supportInvalidChannelPlaybackByName>true</supportInvalidChannelPlaybackByName>
<!--是否支持无效数字通道搜索和按文件名回放录像，Netra3.0.0新增-->
<supportInvalidChannelPlaybackByTime>true</supportInvalidChannelPlaybackByTime>
<!--是否支持无效数字通道按时间回放录像，Netra3.0.0新增-->
<PlayConvert>
<!--req, 回放转码压缩参数配置，该节点不返回，表示不支持转码回放功能-->
<VideoEncodeType>
<!--req, 0-私有264, 1-标准h264, 2-标准mpeg4, 7-M-JPEG, 8-MPEG2-->
<Range>0,1,2,7,8</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!--req, 视频编码复杂度：0-低，1-中，2-高-->
<Range>0</Range>
</VideoEncodeEfficiency>
<!--req, 是否支持CABAC-->
<VideoCabac>1</VideoCabac>

<VideoResolutionList>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution><!--req, CIF-->
<!--req, 为了兼容原解析方式，只支持N制式的设备也必须P制的帧率节点，且P制和N制的帧率一致；
只支持P制的设备仅返回P制的帧率节点；P制和N制都支持的，返回两个制式的帧率节点-->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20;
14-15; 15-18; 16-22；17-25；18-30；19-35；20-40；21-45；22-50；23-55；24-60; 25-3;26-5; 27-7; 28-9-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率；如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20;
14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3; 26-5; 27-7; 28-9-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率；如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点：如果设备支持自定义码率，以最大最小格式返回，如果设备不支持自定义码率，以Range格式返回-->
<VideoBitrate>
<!--req, 编码码率-->
<Min>16</Min><!--req, 最小码率(单位Kb)-->
<Max>16384</Max><!--req, 最大码率(单位Kb)-->
<!--req, 0-保留，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，
13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K，24-3072K，
25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>2</Index>
<Name>QCIF</Name>
<Resolution>176*144</Resolution><!--req, QCIF-->
<!--req, 为了兼容原解析方式，只支持N制式的设备也必须P制的帧率节点，且P制和N制的帧率一致；只支持P制的设备仅返回P制的帧率节点；
P制和N制都支持的，返回两个制式的帧率节点-->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20; 14-15;
15-18; 16-22；17-25；18-30；19-35；20-40；21-45；22-50；23-55；24-60; 25-3;26-5; 27-7; 28-9-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率；如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req,N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20; 14-15;
15-18; 16-22；17-25；18-30；19-35；20-40；21-45；22-50；23-55；24-60 ; 25-3;26-5; 27-7; 28-9-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率；如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点：如果设备支持自定义码率，以最大最小格式返回，如果设备不支持自定义码率，以Range格式返回-->
<VideoBitrate>
<!--req, 编码码率-->
<Min>16</Min><!--req, 最小码率(单位Kb)-->
<Max>16384</Max><!--req, 最大码率(单位Kb)-->
<!--req, 0-保留，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，
14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K，24-3072K，
25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>6</Index>
<Name>QVGA</Name>
<Resolution>320*240</Resolution><!--req, QVGA-->
<!--req, 为了兼容原解析方式，只支持N制式的设备也必须P制的帧率节点，且P制和N制的帧率一致；只支持P制的设备仅返回P制的帧率节点；
P制和N制都支持的，返回两个制式的帧率节点-->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20; 14-15;
15-18; 16-22；17-25；18-30；19-35；20-40；21-45；22-50；23-55；24-60; 25-3;26-5; 27-7; 28-9-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率；如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20; 14-15;
15-18; 16-22；17-25；18-30；19-35；20-40；21-45；22-50；23-55；24-60; 25-3;26-5; 27-7; 28-9-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率；如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点：如果设备支持自定义码率，以最大最小格式返回，如果设备不支持自定义码率，以Range格式返回-->
<VideoBitrate>
<!--req, 编码码率-->
<Min>16</Min>
<!--req,最小码率(单位Kb)-->
<Max>16384</Max><!--req,最大码率(单位Kb)-->
<!--req,0-保留，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，
14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K，24-3072K，25-4096K，
26-8192K，27-16384K-->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>
</VideoResolutionList>

<IntervalBPFrame>
<!--req,0-BBP帧; 1-BP帧;2单P帧-->
<Range>0,1,2</Range>
</IntervalBPFrame>
<EFrame>0</EFrame>
<!--req,E帧最大编码能力-->
<SVCFunEnable opt="true,false"/><!--req,是否启用, true-启用，false-不启用-->
</PlayConvert>
<TraversingVirtualPlane>
<!--req,越界侦测后检索，不支持不返回-->
<alertlineNum>8</alertlineNum><!--req,越界侦测支持的最大警戒线个数-->
<AlertLine>
<!--req,根据ALERTLINENum的值,本节点会有相应的个数-->
<id>1</id>
<crossDirection opt="bothway,leftToRight,rightToLeft"/>
<!--req,警戒面支持的跨越方向: 0-双向，1-从左到右2-从右到左-->
<sensitivityLevel min="0" max="100"/>
<!--req,灵敏度-->
</AlertLine>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，
判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<PreTime>
<!--req,智能报警提前时间 单位:秒-->
<rate min = "0" max = "600"/>
<!--req,智能报警提前时间 单位:秒-->
</PreTime>
<DelayTime>
<!--req,智能报警提前时间 单位:秒-->
<rate min = "0" max = "600"/>
<!--req, 智能报警延迟时间 单位:秒-->
</DelayTime>
<supportPTZInfo>true</supportPTZInfo><!--req,检索时是否支持带PTZ信息-->
</TraversingVirtualPlane>
<FieldDetection>
<!--req,区域入侵侦测后检索，不支持不返回-->
<intrusiongionNum>8</intrusiongionNum>
<!--req,区域入侵侦测支持的最大警戒线个数 -->
<Intrusiongion>
<!--req,INTRUSIONREGIONNum,本节点会有相应的个数-->
<id>1</id>
<regionNum min="3" max="10"/>
<!--req,每个区域入侵侦测支持的有效点个数-->
<duration min="1" max="100"/>
<!--req,触发时间阈值-->
<sensitivityLevel min="0" max="100"/>
<!--req,灵敏度-->
<rate min = "0" max = "100"/>
<!--req, 占比：区域内所有未报警目标尺寸目标占区域面积的比重-->
</Intrusiongion>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，
判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<PreTime>
<!--req, 智能报警提前时间，单位:秒-->
<rate min = "0" max = "600"/>
<!--req, 智能报警提前时间，单位:秒-->
</PreTime>
<DelayTime>
<!--req, 智能报警提前时间，单位:秒-->
<rate min = "0" max = "600"/>
<!--req, 智能报警延迟时间，单位:秒-->
</DelayTime>
<supportPTZInfo>true</supportPTZInfo>
<!--req,检索时是否支持带PTZ信息-->
</FieldDetection>
<FaceSnapDetection>
<!--req,人脸侦测后检索，不支持不返回-->
<pointNum>4</pointNum >
<!--req,人脸侦测识别区域有效点个数-->
<FilterMode opt = "imagePix,realWorld,default"/>
<!--req,支持的尺寸过滤器类型0-根据像素大小设置, 1-根据实际大小设置,2-默认模式-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<PreTime>
<!--req,智能报警提前时间，单位:秒-->
<rate min = "0" max = "600"/>
</PreTime>
<DelayTime>
<!--req, 智能报警延迟时间 单位:秒-->
<rate min = "0" max = "600"/>
</DelayTime>
<sensitivityLevel min="0" max="100"/>
<!--req,灵敏度-->
</FaceSnapDetection>
</PlayBack>
<sceneChangeDetectionRecord>true</sceneChangeDetectionRecord>
<!--req,是否支持场景变更侦测搜索-->
<faceDetectionRecord>true</faceDetectionRecord>
<!--req,是否支持人脸侦测录像查询-->
<allAlarmTypeRecord>true</allAlarmTypeRecord>
<!--opt,是否支持“PIR|无线报警|呼救报警”所有报警类型录像，需要同时判断设备的报警能力集的<PIRAlarm>是否存在，才能断定本功能是否支持-->
<ANR>true</ANR><!--opt,是否支持ANR功能（IPC断网录像）-->
<drawFrameInPlayBack>true</drawFrameInPlayBack><!--req,是否支持回放过程中抽帧-->
<RecordLockTime>
<!--opt,如果该节点不返回，则设备默认最大锁定时间为60天-->
<rate min = "0" max = "750"/>
<!--req,录像锁定时间 单位:天-->
</RecordLockTime>

<supportGetGopInfo opt="true,false"/>
<!--opt,是否支持GOP结构化信息获取-->
<CourseNameSearch>
<!--opt, 是否支持按课程查找不支持则不返回-->
<supportFuzzySearch>true</supportFuzzySearch>
<!--req, 支持模糊查找-->
</CourseNameSearch>
<recordPlan>
<mutexAbility opt="LineDetection,FieldDetection,scenechangedetection,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req, 互斥能力，SMART智能-->
</recordPlan>
<CMDRecordParameter>
<!--opt 命令触发录像参数-->
<lockDuration min="0" max="0xffffffff"/>
<!--opt 加锁时间-->
<bakup opt="true,false"/>
<!--opt 是否存档-->
<preRecord opt="true,false"/>
<!--opt 是否预录-->
</CMDRecordParameter>
<supportGetCourseFile opt="true,false"/>
<!--opt 是否支持按课程回放-->
</RecordAbility>


DEVICE_ABILITY_INFO_RECORDHOST

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 录播主机能力集描述 -->
<RecordingHostAbility version="2.0">
<oneKeyDelayTime min="1" max="3600" default="600"/>
<!--req, 最大可配一键延迟时间,单位s-->
<supportDirectMode opt="auto,manu" />
<!--req, 支持的导播模式 auto-自动, manu-手动-->
<LogoOverlay>
<!--req, 图标叠加信息,支持则返回，不支持不返回-->
<logoSize min="" max=""/>
<!--req,支持的logo大小，以字节为单位-->
<logoNameLen min="" max=""/>
<!--req,logo名称长度大小-->
<logoStatus opt = " show, hide "/>
<!--req,logo显示状态-->
<logoCorordinateX min="" max=""/>
<!--req,logo显示区域X坐标范围-->
<logoCorordinateY min="" max=""/>
<!--req,logo显示区域Y坐标范围-->
<LogoFlash>
<!--req,支持logo闪烁-->
<enabled>true</enabled>
</LogoFlash>
<LogoTranslucent>
<!--req,logo半透明-->
<enabled>true</enabled>
</LogoTranslucent>
</LogoOverlay >
<PublishCfg>
<!--req, 支持的信息发布方式-->
<supportPublishType opt="http,ftp"/>
<!--req, 支持发布的码流类型:0-主码流，1-子码流，3-码流3-->
<supportPublishStreamType opt=" 0-mainstream,1-substream,3-stream3"/>
</PublishCfg>
<!--req, 支持的远程控制类型，开始，结束，暂停、延长录播时间、恢复、一键开始屏蔽、一键停止屏蔽-->
<supportRemoteCtrlType opt="start,stop,pause,restart,delay,release,startShield,stopShield"/>
<CourseInfoCfg>
<!--req, 课程信息配置-->
<maxCourseNum>60</maxCourseNum>
<!--req, 最大可支持的课程数-->
<maxLessionNumOneDay>12</maxLessionNumOneDay><!--req, 每天上课节次-->
</CourseInfoCfg><!--req, 课程信息配置-->
<ManualDirect>
<!--req, 手动导播参数配置（画中画配置）-->
<enableBaseChan opt="true,false"/>
<!--req, 是否支持画中画所在通道，录播主机不支持，不返回-->
<enableBackChan opt="true,false"/>
<!--req, 是否支持画中画模式背景通道，录播主机中表示导播通道-->
<supportPIPMode opt="PIP,picAverage, picSplice"/>
<!--req, 支持的画面布局模式-->
<PIPModePositionList>
<PIPModePosition>
<smallPicNum>1</smallPicNum>
<!--req, 小画面个数-->
<positionName>bottomRight</positionName>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<widtth min="" max=""/>
</PIPModePosition>
<PIPModePosition>
<smallPicNum>1</smallPicNum>
<!--req, 小画面个数-->
<positionName>bottomLeft</positionName>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</PIPModePosition>
</PIPModePositionList>
<PicAverageModePositionList>
<!--req, 画面均分-->
<supportAverage opt="1,2"/>
<!--req, 画面均分数，1-一画面均分，2-2画面均分-->
<PicAverageModePosition>
<smallPicNum>1</smallPicNum>
<!--req, 小画面个数-->
<positionName>bottomRight</positionName>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</PicAverageModePosition>
</PicAverageModePositionList>
<PicSpliceModePositionList>
<!--req, 画面分割模式-->
<PicSpliceModePosition>
<smallPicNum>2</smallPicNum>
<!--req, 小画面个数-->
<positionName>bigPicOnLeft</positionName>
<picPositionList>
<picPosition>
<index>1</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
<picPosition>
<index>2</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
</picPositionList>
</PicSpliceModePosition>
<PicSpliceModePosition>
<smallPicNum>2</smallPicNum>
<!--req, 小画面个数-->
<positionName>bigPicOnRight</positionName>
<picPositionList>
<picPosition>
<index>1</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
<picPosition>
<index>2</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
</picPositionList>
</PicSpliceModePosition>
<PicSpliceModePosition>
<smallPicNum>3</smallPicNum>
<!--req, 小画面个数-->
<positionName>bigPicOnLeft</positionName>
<picPositionList>
<picPosition>
<index>1</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
<picPosition>
<index>2</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
<picPosition>
<index>3</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
</picPositionList>
</PicSpliceModePosition>
<PicSpliceModePosition>
<smallPicNum>3</smallPicNum>
<!--req, 小画面个数-->
<positionName>bigPicOnRight</positionName>
<picPositionList>
<picPosition>
<index>1</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
<picPosition>
<index>2</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
<picPosition>
<index>3</index>
<leftX min="" max=""/>
<leftY min="" max=""/>
<height min="" max=""/>
<width min="" max=""/>
</picPosition>
</picPositionList>
</PicSpliceModePosition>
</PicSpliceModePositionList>
</ManualDirect>
<PublishCfg>
<!--req, 一键发布配置-->
<supportMode opt="http,ftp,ftpDir"/>
<!--req, 支持一键发布的方式-->
<PublishAddr>
<!--req, 发布地址信息-->
<HttpInfo>
<URLLen min="0" max="256"/>
<!--req, 支持的URL长度-->
</HttpInfo>
<FTP>
<!--req, FTP，支持多级目录填写-->
<protocalType opt="FTP,SFTP"/>
<!--req, 协议类型-->
<port min="" max=""/>
<!--req, 当为IP地址时，有效端口范围-->
<addrType opt="IPV4,IPV6,Domain"/>
<!--req, 支持的地方类型，IPV4,IPv6,域名-->
<userNameLen min="" max=""/>
<!--req, 用户名长度-->
<passwordLen min="" max=""/>
<!--req, 密码长度-->
<DirLen min="" max=""/>
<!--req, 目录长度-->
</FTP>
<FTPDir>
<!--req, FTP，支持自动目录-->
<protocalType opt="FTP,SFTP"/>
<!--req, 协议类型-->
<port min="" max=""/>
<!--req, 当为IP地址时，有效端口范围-->
<addrType opt="IPV4,IPV6,Domain"/>
<!--req, 支持的地方类型，IPV4,IPv6,域名-->
<userNameLen min="" max=""/>
<!--req, 用户名长度-->
<passwordLen min="" max=""/>
<!--req, 密码长度-->
<DirlLevel opt="root,top,sub"/>
<!--req, 支持的目录结构，root- 根目录,top- 一级目录,sub- 二级目录-->
<topDirMode opt="deviceName,deviceNo,deviceIP,sel-define"/>
<!--req, 一级目录定义方式-->
<subDirMode opt="channelName,channelNo,courseTitle,drivingDate,sel-define"/>
<!--req, 二级目录方式-->
</FTPDir>
</PublishAddr>
<PublishChanRecord>
<streamType opt="main,sub,three"/>
<!--req, 支持发布的码流类型-->
</PublishChanRecord>
<publishMode opt="lastLesson,byTime"/>
<!--req, 支持发布的方式，lastLesson- 最后一堂课，byTime- 按时间方式处理-->
</PublishCfg>
<!--req, 支持的分辨率- 标清，D1，720P，1080P-->
<resolutionMode opt="sd,d1,720p ,1080p"/>
<LogoUpload>
<!--req, 支持的logo上传信息-->
<logoSize min="" max=""/>
<!--req, 支持的logo大小，以字节为单位-->
<logoStatus opt = " show, hide "/>
<!--req, logo显示状态-->
<logoCorordinateX min="" max=""/>
<!--req, logo显示区域X坐标范围-->
<logoCorordinateY min="" max=""/>
<!--req, logo显示区域Y坐标范围-->
<LogoFlash>
<!--req, 支持logo闪烁-->
<enabled>true</enabled>
</LogoFlash>
<LogoTranslucent>
<!--req,logo半透明-->
<enabled>true</enabled>
</LogoTranslucent>
</LogoUpload>
<AudioInCap>
<MixAudioIn>
<enabled opt="true,false"/>
<audioInputType opt="micIn, lineIn"/>
<!--opt, xs:string-->
<highPassFilter opt="0,8,16,24,31,39,47,55,63,71,79,87,94,102,110,118,126,134,
142,150,157,165,173,181,189,197,205,213,220,228,236,244,252,260,
268,276,283,291,299,307,315,323,331,339,346,354,362,370,378,386,
394,402,409,417,425,433,441,449,457,465,472,480,488,496,504,512,
520,528,535,543,551,559,567,575,583,591,598,606,614,622,630,638,
646,654,661,669,677,685,693,701,709,717,724,732,740,748,756,764,
772,780,787,795,803,811,819,827,835,843,850,858,866,874,882,890,
898,906,913,921,929,937,945,953,961,969,976,984,992,1000" default="30">
<!--req, xs:integer;Hz-->
</highPassFilter>
<noiseMargin opt="1000,660,657,653,650,647,643,640,637,633,-630,627,623,620,617,613,
610,607,603,600,597,593,590,587,583,580,577,573,570,567,563,560,557,553,
550,547,543,540,537,533,530,527,523,520,517,513,510,507,503,500,497,493,
490,487,483,480,477,473,470,467,463,460,457,453,450,447,443,440,437,433,
430,427,423,420,417,413,410,407,403,400,397,393,390,387,383,380,377,373,
370,367,363,360,357,353,350,347,343,340,337,333,330,327,323,320,317,313,
310,307,303,300,297,293,290,287,283,280,277,273,270,267,263,260,257,253,
250,247,243,240" default="30">
<!--req, xs:integer;-dB-->
</noiseMargin>
<AutoLimitWave>
<!--dep,audioInputType-->
<FBCEnable opt="true,false">
<!--req, xs:Boolean-->
</FBCEnable>
<mode opt="fast,general,slow" default="general">
<!--req, xs:string-->
</mode>
<filterQValue opt="40,10" default="40">
<!--req, xs:integer;Oct-->
</filterQValue>
<staticFilterNum min="0" max="12" default="0">
<!--req, xs:integer-->
</staticFilterNum>
</AutoLimitWave>
<DSPParameter>
<!--opt, 数字信号处理芯片参数-->
<FBCEnable>
<!--req, xs:boolean, opt="true,false"-->
</FBCEnable>
<volume>
<!--req, xs:integer,输入音量-->
</volume>
</DSPParameter>
</MixAudioIn>
<AudioInVlome>
<type opt="audioOutput,audioEncode,specific">
<!--req, xs:integer-->
</type>
<volume min="0" max="127" defalut="50">
<!--req, xs:integer-->
</volume>
<index>
<!--opt, xs:string, if <type> is specific, 音频输出通道索引 -->
</index>
<name>
<!--opt, xs:string, if <type> is specific, 音频输出通道名称 -->
</name>
<supportVolumeEx opt="true,false">
<!--req, xs:boolean,是否支持输出音量扩展-->
</supportVolumeEx>
</AudioInVlome>
</AudioInCap>
<AudioOutCap>
<MixAudioOut>
<enabled opt="true,false"/>
<modulatorEnbale opt="true,false"/>
<postFilter opt="false,true" default="true"/>
<!--req,xs:Boolean-->
<limitPressure opt="false,true" default="true"/>
<!--req, xs:Boolean-->
<modulatorValue min="0" max="127" default="10">
<!--req,xs:integer;Oct-->
</modulatorValue>
<triggerTime opt="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,
3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,6,6,6,7,7,7,8,8,8,9,9,10,10,11,11,12,12,13,
14,15,15,16,17,18,19,20,21,23,24,25,27,29,30,32,34,36,38,41,43,46,49,52,
55,59,63,67,72,76,82,87,93,10,17,114,123,132,141,152,163,175,188,23,218,
235,254,274,296,320,347,375,47,441,479,520,566,616,671,731,798,872"
default="4">
<!--req,xs:integer;ms-->
</triggerTime>
<freeTime opt="98,11,15,18,112,116,120,124,129,133,138,143,148,154,159,165,171,177,184,
191,198,26,213,222,230,239,248,258,268,278,289,31,313,325,338,352,366,381,397,
413,430,448,467,486,57,528,551,575,60,626,653,682,712,743,776,811,848,887,927,
970,1014,1062,1111,1163,1218,1276,1337,142,1470,1541,1617,1697,1781,1870,1964,
2063,2168,2279,2397,2521,2653,2792,2940,3097,3263,3439,3626,3825,4035,4259,4497,
4750,5020,536,5611,5936,6282,6651,7045,7465,7914,8393,895,9452,10037,10664,11335,
12053,12824,13650,14537,15489,16511,17610,18793,20065,21435,22911,2452,26219,
28073,30075,32239,34580,37114,39859,42834,46062" default="42">
<!--req,xs:integer;ms-->
</freeTime>
<compressThreshold opt="1,2,4,8" defalut="2">
<!--req, xs:integer;x-->
</compressThreshold>
<compressMode opt="soft,hard" default="soft">
<!--req, xs:string;ms-->
</compressMode>
<compressRate min="0" max="127">
<!--req, xs:integer;x-->
</compressRate>
<recoveryGain opt="1,2,4,8" defalut="2">
<!--req, xs:integer;x-->
</recoveryGain>
<outputGain opt="100,421,361,325,30,281,265,252,240,230,221,212,25,198,192,186,180,175,170,
165,161,156,152,148,145,141,138,134,131,128,125,122,120,117,114,112,110,17,15,13,
10,98,96,94,92,90,88,86,85,83,81,79,78,76,74,73,71,70,68,67,65,64,62,61,60,58,57,
56,54,53,52,51,49,48,47,46,45,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,
26,25,24,23,23,22,21,20,19,18,17,17,16,15,14,13,12,12,11,10,9,9,8,7,6,6,5,4,3,3,2,1,1,0">
<!--req, xs:integer-->
</outputGain>
<outputMute opt="true,false">
<!--opt,xs:Boolean, 输出静音 -->
</outputMute>
<soundQualityHanding opt="true,false">
<!--opt,xs:Boolean, 音质处理 -->
</soundQualityHanding>
<supportOutputGainEx opt="true,false">
<!--req, xs:boolean,是否支持输出增益扩展-->
</supportOutputGainEx>
</MixAudioOut>
<AudioOutVlome>
<type opt="audioOutput,audioEncode"/>
<volume min="0" max="127" defalut="50">
<!--req, xs:integer-->
</volume>
</AudioOutVlome>
</AudioOutCap>
<MenuOutputCfg>
<!--req 设备本地输出菜单配置-->
<homologousMode opt="true,false"/>
<outputMode opt="auto,VGA,HDMI"/>
<!--req 设备支持的本地菜单输出方式，auto-自动，VGA-VGA口输出菜单，HDMI-HDMI口输出菜单-->
</MenuOutputCfg >
<VideoOutResolutionCfg>
<!--req 设备本地视频输出分辨率-->
<VideoOutChanList>
<VideoOutChanEntry>
<VideoOutChanNum>1</VideoOutChanNum>
<Type>VGA</Type>
<resolution opt="1024x768,1280x720,1280x1024,1680x1050,1920x1080"/>
<!--req, 支持的分辨率，以设备实际返回为准-->
</VideoOutChanEntry>
<VideoOutChanEntry>
<VideoOutChanNum>2</VideoOutChanNum>
<Type>HDMI</Type>
<resolution opt="1024x768,1280x720,1280x1024,1680x1050,1920x1080"/>
<!--req, 支持的分辨率，以设备实际返回为准-->
</VideoOutChanEntry>
</VideoOutChanList>
</VideoOutResolutionCfg>
<PPTDetection>
<!--req, PPT检测-->
<enable opt="true,false"/>
<!--req, 是否支持PPT检测，支持则返回，不支持返回false-->
<detectLevel min="0" max="100"/>
<!--req, 设备支持的灵敏度检测范围-->
<enablePartScreen opt="true,false"/>
<!--req, 是否支持配置区域-->
<changePixelNum min="" max=""/>
<!--dep, "像素点检测阈值[0,1000](ps : 一幅图像有多少像素在变化)"-->
</PPTDetection>
<TVScreen>
<picStayTime min="" max=""/>
<!--opt导播画面停留时间-->
<TVScreenNo min="" max=""/>
<!--opt,导播屏编号-->
</TVScreen>
<ScreenSwitch>
<enable>true</enable>
<!--req, “表示支持ScreenSwitch的控制接口，与具体的字段无关”-->
</ScreenSwitch>
</RecordingHostAbility>


DEVICE_ABILITY_INFO_ROI

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, ROI（感兴趣区域编码）能力集描述 -->
<!--req, ROIAbility：ROI能力 -->

<ROIAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
<ROIRectCfg>
<MainStream>
<FixROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--<xs:string,支持的编码类型>-->
<singleScreenFixROITotalNum>4</singleScreenFixROITotalNum>
<singleScreenFixROIID min="1" max="4"/>
<multiScreenFixROITotalNum>24</multiScreenFixROITotalNum>
<multiScreenFixROIID min="1" max="24"/>
<fixROINameLength min="1" max="32"/>
<fixROIDetectEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
</FixROIRectCfg>

<TrackROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--<xs:string,支持的编码类型>-->
<singleScreenTrackROITotalNum>4</singleScreenTrackROITotalNum>
<singleScreenTrackROIID min="1" max="4"/>
<multiScreenTrackROITotalNum>24</multiScreenTrackROITotalNum>
<multiScreenTrackROIID min="1" max="24"/>
<trackROINameLength min="1" max="32"/>
<trackROIDetectEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
<trackROIModeType opt="moveTrack,licencePlateTrack"/>
<!--req,支持的跟踪区域类型：moveTrack-移动物体跟踪，licencePlateTrack-车牌跟踪-->
</TrackROIRectCfg>
</MainStream>

<SubStream>
<FixROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--<xs:string,支持的编码类型>-->
<singleScreenFixROITotalNum>4</singleScreenFixROITotalNum>
<singleScreenFixROIID min="1" max="4"/>
<multiScreenFixROITotalNum>24</multiScreenFixROITotalNum>
<multiScreenFixROIID min="1" max="24"/>
<fixROINameLength min="1" max="32"/>
<fixROIDetectEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
</FixROIRectCfg>

<TrackROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--<xs:string,支持的编码类型>-->
<singleScreenTrackROITotalNum>4</singleScreenTrackROITotalNum>
<singleScreenTrackROIID min="1" max="4"/>
<multiScreenTrackROITotalNum>24</multiScreenTrackROITotalNum>
<multiScreenTrackRoiID min="1" max="24"/>
<trackROINameLength min="1" max="32"/>
<trackROIDetectEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
<trackROIModeType opt="moveTrack,licencePlateTrack"/>
<!--req,支持的跟踪区域类型：moveTrack-移动物体跟踪，licencePlateTrack-车牌跟踪-->
</TrackROIRectCfg>
</SubStream>

<Stream3>
<FixROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--<xs:string,支持的编码类型>-->
<singleScreenFixROITotalNum>4</singleScreenFixROITotalNum>
<singleScreenFixROIID min="1" max="4"/>
<multiScreenFixROITotalNum>24</multiScreenFixROITotalNum>
<multiScreenFixROIID min="1" max="24"/>
<fixROINameLength min="1" max="32"/>
<fixROIDetectEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
</FixROIRectCfg>

<TrackROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--<xs:string,支持的编码类型>-->
<singleScreenTrackROITotalNum>4</singleScreenTrackROITotalNum>
<singleScreenTrackROIID min="1" max="4"/>
<multiScreenTrackROITotalNum>24</multiScreenTrackROITotalNum>
<multiScreenTrackROIID min="1" max="24"/>
<trackROINameLength min="1" max="32"/>
<trackROIDetectEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
<trackROIModeType opt="moveTrack,licencePlateTrack"/>
<!--req,支持的跟踪区域类型：moveTrack-移动物体跟踪，licencePlateTrack-车牌跟踪-->
</TrackROIRectCfg>
</Stream3>

<Stream4>
<FixROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--req, xs:string,支持的编码类型-->
<singleScreenFixROITotalNum>4</singleScreenFixROITotalNum>
<singleScreenFixROIID min="1" max="4"/>
<multiScreenFixROITotalNum>24</multiScreenFixROITotalNum>
<multiScreenFixROIID min="1" max="24"/>
<fixROINameLength min="1" max="32"/>
<fixROIDetectEnable opt="true,false"/>
<!--req, 是否启用: true-启用, false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
</FixROIRectCfg>
<TrackROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--req, xs:string,支持的编码类型-->
<singleScreenTrackROITotalNum>4</singleScreenTrackROITotalNum>
<singleScreenTrackROIID min="1" max="4"/>
<multiScreenTrackROITotalNum>24</multiScreenTrackROITotalNum>
<multiScreenTrackROIID min="1" max="24"/>
<trackROIDetectEnable opt="true,false"/>
<!--req, 是否启用: true-启用, false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
<trackROIModeType opt="all, moveTrack, licencePlateTrack"/>
<!--req, xs:string,支持的跟踪区域类型: all-所有模式, moveTrack-移动物体跟踪, licencePlateTrack-车牌跟踪-->
</TrackROIRectCfg>
</Stream4>

<Stream5>
<FixROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--req, xs:string,支持的编码类型-->
<singleScreenFixROITotalNum>4</singleScreenFixROITotalNum>
<singleScreenFixROIID min="1" max="4"/>
<multiScreenFixROITotalNum>24</multiScreenFixROITotalNum>
<multiScreenFixROIID min="1" max="24"/>
<fixROINameLength min="1" max="32"/>
<fixROIDetectEnable opt="true,false"/>
<!--req, 是否启用: true-启用, false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
</FixROIRectCfg>
<TrackROIRectCfg>
<ROISupportEncodeType opt = "standardh264,standardh265"/>
<!--req, xs:string,支持的编码类型-->
<singleScreenTrackROITotalNum>4</singleScreenTrackROITotalNum>
<singleScreenTrackROIID min="1" max="4"/>
<multiScreenTrackROITotalNum>24</multiScreenTrackROITotalNum>
<multiScreenTrackROIID min="1" max="24"/>
<trackROIDetectEnable opt="true,false"/>
<!--req, 是否启用: true-启用, false-不启用-->
<ROIImageQualityLevel min="1" max="6"/>
<!--req, 图像质量提升等级-->
<trackROIModeType opt="all, moveTrack, licencePlateTrack"/>
<!--req, xs:string,支持的跟踪区域类型: all-所有模式, moveTrack-移动物体跟踪, licencePlateTrack-车牌跟踪-->
</TrackROIRectCfg>
</Stream5>

</ROIRectCfg>
</ROIAbility>


DEVICE_ABILITY_INFO_SECURITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备安全认证配置能力集描述 -->
<SecurityAbility version="2.0">
<channelNO>1</channelNO><!--req,通道号-->
<SecurityCfgParam>
<securityLevel opt="0-close,1-open,2-custom"/>
<!--req,安全等级，0-关，1-开，2-自定义-->
<commadCheckLevel opt="0-close,1-open"/>
<!--req,0-单条信令认证关，1-单条信令认证开-->
<loginLevel opt="0-nolimit,1-MD5"/>
<!--req,登陆等级，0-不限制，1-高安全性认证才能登陆（MD5)-->
<sshServer opt="0-disable,1-enable"/>
<!--req,0-disable(禁用),1-enable(启用)-->
<webAuthentication opt="0-digest,1-basic,2-digest/basic"/>
<!--req,0-digest,1-basic(默认) -->
<rtspAuthentication opt="0-disable,1-basic,2-digest,3-digest/basic"/>
<!--req,0-disable,1-basic(默认) -->
<telnetServer opt="0-disable,1-enable"/>
<!--req,0-disable(禁用),1-enable(启用)-->
<illegalLoginLock opt="0-enable,1-disable" default="0-enable"/>
<!--req,0-enable(启用),1-disable(禁用)-->
</SecurityCfgParam>
</SecurityAbility>


DEVICE_ABILITY_INFO_SWITCH

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备本地预览切换能力集描述 -->
<PreviewSwitchAbility version="2.0">
<Enable>true</Enable>
<!--opt,是否支持本地预览切换能力，新命令DVR_GET_PREVIEW_SWITCH_CFG -->
<!--req, 当设备支持该功能时，如果对支持的视频输出类型不区分画面数，则可以按方式一进行返回；
如果每种视频输出类型对画面数、切换时间等信息有不同的支持类型，则按方式二返回 -->
<!--req, ************方式一开始************ -->
<VideoOutType opt="0,1,2,3,4,5,"/>
<!--opt, 0-主CVBS，1-HDMI，2-VGA，3-辅助输出一，4-辅助输出二，5-辅助输出三，6-辅助输出四，7-HDMI扩展，8-非同源VGA1，9-非同源VGA2，10-同源VGA3，11-同源VGA4-->
<PreviewNum opt="0,1,2,3,4,5,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面,8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
<!--req, ************方式一结束*********** -->
<VideoOutList>
<!--req, 视频输出列表 方式二 -->
<VideoOutTypeEntry>
<Name>Main CVBS</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>1</Index>
<Name>HDMI</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>2</Index>
<Name>VGA</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>3</Index>
<Name>Spot BNC 1 </Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>4</Index>
<Name>Spot BNC 2</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>5</Index>
<Name> Spot BNC 3</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>6</Index>
<Name>Spot BNC 4</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面,9-64画面,0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>7</Index>
<Name>Aux HDMI</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<switchMode opt="Forward, Backward"/>
<!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
</SwitchCtrl>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>

<VideoOutTypeEntry>
<Index>8</Index>
<Name>Expend HDMI1</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<switchMode opt="Forward, Backward"/>
<!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
</SwitchCtrl>
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>9</Index>
<Name>Expend HDMI2</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<switchMode opt="Forward, Backward"/>
<!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
</SwitchCtrl>
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>

<VideoOutTypeEntry>
<Index>10</Index>
<Name>Expend HDMI3</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<switchMode opt="Forward, Backward"/>
<!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
</SwitchCtrl>
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>

<VideoOutTypeEntry>
<Index>11</Index>
<Name>Expend HDMI4</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<switchMode opt="Forward, Backward"/>
<!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
</SwitchCtrl>
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
</VideoOutList>
<VideoOutTypeEntry>
<Index>17</Index>
<Name>Main LCD</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<!--req, 是否支持远程控制本地切屏-->
<switchMode opt="Forward, Backward"/><!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
<!--req允许一次翻屏页数-->
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</SwitchCtrl>
</VideoOutTypeEntry>
<VideoOutTypeEntry>
<Index>18</Index>
<Name>Aux VGA</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt,0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<!--req, 是否支持远程控制本地切屏-->
<switchMode opt="Forward, Backward"/>
<!--opt，Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
<!--req允许一次翻屏页数-->
</SwitchCtrl>
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry >
<VideoOutTypeEntry>
<Index>19</Index>
<Name>Aux LCD</Name>
<PreviewNum opt="0,1,2,3,4,5,6,7,8,0xff"/>
<!--opt, 0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面, 6-25画面,7-32画面, 8-36画面, 9-64画面0xff:最大画面-->
<SwitchTime opt="0,1,2,3,4,5,6,7"/>
<!--opt, 0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s -->
<SwitchCtrl>
<!--req, 是否支持远程控制本地切屏-->
<switchMode opt="Forward, Backward"/>
<!--opt, Forward—向上切屏，BackWard—向下切屏-->
<switchNum min="1" max="1"/>
<!--req, 允许一次翻屏页数-->
</SwitchCtrl>
<supportGetByPreviewNum opt="true,false"/>
<!--opt 是否支持配置条件INTER_PREVIEW_SWITCH_COND中带预览画面数-->
</VideoOutTypeEntry>
</PreviewSwitchAbility>


DEVICE_ABILITY_INFO_TRIAL

设备网络SDK开发使用手册

<?xml version="1.0" encoding="UTF-8"?>
<!--req, 庭审主机能力集描述 -->
<TrialHostAbility version="2.0">
<PipNum opt="0,1,2,3,5,7"/><!--req,支持的画中画个数-->
<PicSplitNum opt="2,4,6,8,9"/><!--req,支持的画面均分个数-->
<pipPositionParam opt="x,y,w,h "/><!--req,支持的画中画位置参数，x坐标，y坐标，高，宽-->
<LearnIRCmd>
<!--req,学码能力-->
<maxIROutPortNum>8</maxIROutPortNum><!--req,设备支持的红外输出口数-->
<maxEachLearnCmdNum>32</maxEachLearnCmdNum><!--req,每个红外输出口支持的最大学码个数-->
</LearnIRCmd >
<IROutCtrl>1</IROutCtrl><!--req,红外输出控制，1-支持，不支持不返回-->
<VoiceActivation>
<!--req,语音激励，不支持不返回-->
<maxVoiceInNum>32</maxVoiceInNum><!--req,最大支持的语音输入数-->
<sensitivity min="1" max="100"/><!--req,灵敏度(1~100)-->
<priority min="0" max="5"/><!--req,优先级(0~100)-->
<delaySwitchTime opt="5,10,15,20,60"/><!--req,激励结束切换时间(s),支持的值以设备返回返回为准-->
</VoiceActivation>
<VideoSignalInput>
<!--req,视频信号输入能力-->
<maxSDINum>32</maxSDINum>
<!--req,支持的SDI输入数,不支持不返回-->
<maxHDMINum>32</maxHDMINum>
<!--req,支持的HDMI输入数,不支持不返回-->
<maxVGANum>32</maxVGANum>
<!--req,支持的VGA输入数,不支持不返回-->
<maxPOENum>32</maxPOENum>
<!--req,支持的POE口个数，不支持不返回-->
<maxYPbPrNum>32</maxYPbPrNum>
<!--req,支持的YPbPr数入数，不支持不返回-->
</VideoSignalInput>
<VideoSignalOutput>
<!--req,视频信号输出能力-->
<maxSDINum>32</maxSDINum>
<!--req,支持的SDI输入数,不支持不返回-->
<maxHDMINum>32</maxHDMINum>
<!--req,支持的HDMI输入数,不支持不返回-->
<maxVGANum>32</maxVGANum>
<!--req,支持的VGA输入数,不支持不返回-->
</VideoSignalOutput>
<AudioInChanList>
<AudioInChanEntry>
<index>1</index>
<!--req,语音输入通道索引-->
<InMode opt="Mic In, Line In"/>
<!--req,音频输入类型mic In音频输入，Line In音频输入-->
<channelType opt="Mono, Dual"/>
<!--req,声道类型，Mono-单声道，Dual-双声道-->
<MixAudio>
<enable opt="true,false"/>
<!--req,是否支持混音配置 true-支持设置，false-不支持设置-->
<higPassFilter min="0.0" max="100.0" default="50.4"/>
<!--req是否支持高通滤波，单位Hz-->
<noiseMargin min="-100" max="-24" default="-45"/>
<!--req,是否支持噪声门限，单位dB-->
<AutoLimitWave>
<!--req 自动限波控制-->
<enableFBC opt="true,false"/>
<!--req 是否支持FBC-->
<mode opt="general,quick,slow"/>
<!--req,模式,general-普通, quick-快速,slow-慢速-->
<filterQValue opt="1/40,1/10" default="1/10"/>
<!--req,自适应滤波器Q值，单位Oct-->
<staticFilterNum min="0" max="12"/>
<!--req,静态滤波器数量-->
</AutoLimitWave>
</MixAudio>
<VolumeChange>
<!--req,音量调节-->
<enable opt="true,false"/>
<!--req,是否支持音量调节-->
<volume min="0" max="100"/>
<!--req,音量范围，单位dB-->
</VolumeChange>
</AudioInChanEntry>
</AudioInChanList>
<AudioOutChanList>
<AudioOutChanEntry>
<index>1</index>
<!--req,语音输出通道索引-->
<channelType opt="Mono, Dual"/>
<!--req,声道类型，Mono-单声道，Dual-双声道-->
<MixAudio>
<enable opt="true,false"/>
<!--req,是否支持混音配置，true-支持设置，false-不支持设置-->
<modulator opt="true,false"/>
<!--req,是否相位调制器-->
<modulatorValue min="0" max="127" default="10"/>
<!--req,相位调制量-->
<postFilter opt="true,false"/>
<!--req,是否支持PostFilter-->
<limitPressure opt="true,false"/>
<!--req,是否支持输出压限-->
<triggerTime min="0.1" max="87.2" default="1.2"/>
<!--req,压限触发时间,单位ms-->
<freeTime min="9.8" max="4606.2" default="121.8"/>
<!--req,压限释放时间，单位:ms-->
<threshold opt="1X,2X,4X,8X" default="2X"/>
<!--req,压缩门限，X表示倍-->
<compressMode opt="soft,hard" default="soft"/>
<!--req,压缩方式，soft-软压缩，hard-硬压缩-->
</MixAudio>
<VolumeChange>
<enable opt="true,false"/>
<!--req 是否支持音量调节-->
<volume min="0" max="100"/>
<!--req,音量范围，单位:dB-->
</VolumeChange>
</AudioOutChanEntry>
</AudioOutChanList>
<fileSize min="0" max="256"/>
<!--req,上传文件大小 单位MB-->
<fileNum min="0" max="4"/>
<!--req,上传文件数量-->
<onlyAudioRecord>true</onlyAudioRecord>
<!--req,是否对音频单独存储-->
<CaseInfo>
<caseNo>32</caseNo>
<!--req,案件编号-->
<caseName>128</caseName>
<!--req,案件名称-->
<caseType>32</caseType>
<!--req,案件类型-->
<litigant1>32</litigant1>
<!--req,当事人1-->
<litigant2>32</litigant2>
<!--req,当事人1-->
<chiefJudge>32</chiefJudge>
<!--req,审判长-->
</CaseInfo>
<RemotePlay>
<fileName>32</fileName> <!--req,文件名称-->
<videoOut opt="VGA1,VGA2,VGA3,VGA4,VGA5-10,HDMI1,HDMI2"/>
<!--req,播放输出口-->
<type opt="1,2,3,4"/>
<!--req,1-开始播放，2-停止播放，3-暂停，4-恢复-->
</RemotePlay>
<TrialHostStatus>
<fanSpeed>8</fanSpeed><!--req,风扇转速单位RPM-->
<!--req,具体和FPGA温度有关-->
<temp>2</temp>
<!--req,主板温度和FPGA温度-->
<fpgaTempWarn>1</fpgaTempWarn>
</TrialHostStatus>
<LocalInputInfo>
<channelName>32</channelName> <!--req,通道名称-->
</LocalInputInfo>
<LampOut>
<LampInfo>
<enable>true</enable>
<!--req,是否启用-->
<lampName>32</lampName>
<!--req,lamp名称-->
<lampState1>32</lampState1>
<!--req,lamp状态1名称-->
<lampState2>32</lampState2>
<!--req,lamp状态2名称-->
<lampState3>32</lampState3>
<!--req,lamp状态3名称-->
</LampInfo>
</LampOut>
<LampControl>
<lampNo>true</lampNo>
<!--req,lamp编号-->
<lampStateNo>true</lampStateNo>
<!--req,lamp状态编号-->
</LampControl>
</TrialHostAbility >


DEVICE_ABILITY_INFO_TRIGGER

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备报警触发录像能力集描述 -->
<AlarmTriggerRecordAbility version="2.0">
<AlarmTriggerRecordType opt="regularVideo,motion,hide,loss,PIR,wireless,callhelp,vca,facedDetect,
lineDetection,fieldDetection,sceneChangeDetection,audioExceptDetection"/>
<!--req 0:定时录像，1:移动侦测，2:报警录像，3:动测|报警，4:动测&报警, 5:命令触发, 6: 智能录像,
10-PIR报警，11-无线报警，12-呼救报警,13-所有报警,14-智能交通事件,15越界侦测,16区域入侵侦测,17 场景异常侦测,18音频异常侦测-->
</AlarmTriggerRecordAbility>


DEVICE_ABILITY_INFO_VCACHAN

设备网络SDK开发使用手册

<?xml version="1.0" encoding="UTF-8"?>
<!--req, 智能通道分析能力集描述 -->
<VcaChanAbility>
<channelNO>1</channelNO>
<!--通道号-->
<restartLib>true</restartLib>
<!--支持重启算法库-->
<vcaVersion>true</vcaVersion>
<!--支持查看算法库版本-->
<syncChannelName>true</syncChannelName>
<!--同步分析仪的通道名为前端设备通道名-->

<VcaDrawMode>
<!--智能信息叠加-->
<dspEncAddTarget opt="true,false"/>
<!--编码叠加目标-->
<dspEncAddRule opt="true,false"/>
<!--编码叠加规则-->
<dspPicAddTarget opt="true,false"/>
<!--抓图叠加目标-->
<dspPicAddRule opt="true,false"/>
<!--抓图叠加规则-->
</VcaDrawMode>

<AlarmPicResolutionList>
<!--报警图片分辨率，index为SDK定义的图片大小索引值，参见NET_DVR_JPEGPARA-->
<picResolutionEntry index="3" name="UXGA" resolution="1600*1200"/>
<picResolutionEntry index="4" name="SVGA" resolution="800*600"/>
<picResolutionEntry index="5" name="HD720P" resolution="1280*720"/>
<picResolutionEntry index="6" name="VGA" resolution="640*480"/>
</AlarmPicResolutionList>

<GlobalSizeFilter>
<!--全局尺寸过滤-->
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</GlobalSizeFilter>

<Behavior>
<!--异常行为识别-->
<EventType>
<BlackboardWriting>
<!--板书-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</BlackboardWriting>
<Lecture>
<!--授课-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<duration min="0" max="10" default="5"/>
<!--行为事件触发时间阈值-->
<trackingMode opt="auto,horizontal,vertical" default="auto"/>
<!--跟踪模式-->
<zoomMode opt="fixed,auto" default="fixed"/>
<!--变倍模式-->
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</SizeFilter>
</Lecture>
<!--回答-->
<Answer>
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</SizeFilter>
</Answer>

<TraversePlane>
<!--穿越警戒面-->
<planeBottom>true</planeBottom>
<!--警戒面底边-->
<crossDirection opt="bothDirection,leftToRight,rFaceSnapightToLeft" default="bothDirection"/>
<!--穿越方向，bothDirection-双向，leftToRight-从左到右，rightToLeft-从右到左-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<planeHeight min="0" max="255" default="5"/>
<!--警戒面高度-->
<detectionTarget opt="all,human,vehicle,human_vehicle"/>
<!--侦测目标：all-所有目标, human-人, vehicle-车, human_vehicle-人与车(节点中带_符号的代表支持多选项,例如human_vehicle代表人与车)-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"人体去误报,支持返回true,不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"车辆去误报,支持返回true,不支持不返回"-->
</isSupportVehicleMisinfoFilter>
</TraversePlane>
<EnterArea>
<!--进入区域-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<detectionTarget opt="all,human,vehicle,human_vehicle"/>
<!--侦测目标：all-所有目标, human-人, vehicle-车, human_vehicle-人与车(节点中带_符号的代表支持多选项,例如human_vehicle代表人与车)-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"人体去误报,支持返回true,不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"车辆去误报,支持返回true,不支持不返回"-->
</isSupportVehicleMisinfoFilter>
</EnterArea>
<ExitArea>
<!--离开区域-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<detectionTarget opt="all,human,vehicle,human_vehicle"/>
<!--侦测目标：all-所有目标, human-人, vehicle-车, human_vehicle-人与车(节点中带_符号的代表支持多选项,例如human_vehicle代表人与车)-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"人体去误报,支持返回true,不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"车辆去误报,支持返回true,不支持不返回"-->
</isSupportVehicleMisinfoFilter>
</ExitArea>
<Intrusion>
<!--入侵参数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="0" max="100" default="5"/>
<!--行为事件触发时间阈值-->
<sensitivity min="1" max="100" default="50"/>
<!--灵敏度-->
<rate min="1" max="100" default="5"/>
<!--占比-->
<detectionTarget opt="all,human,vehicle,human_vehicle"/>
<!--侦测目标：all-所有目标, human-人, vehicle-车, human_vehicle-人与车(节点中带_符号的代表支持多选项,例如human_vehicle代表人与车)-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"人体去误报,支持返回true,不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"车辆去误报,支持返回true,不支持不返回"-->
</isSupportVehicleMisinfoFilter>
</Intrusion>

<Loiter>
<!--徘徊-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="120" default="10"/>
<!--触发时间阈值-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
<loiterDistance min="100" max="5000" default="1000"/>
<!--opt,行程总距离阈值，单位:cm-->
</Loiter>

<LeftTake>
<!--物品放置拿取-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="120" default="10"/>
<!--触发时间阈值-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</LeftTake>

<Parking>
<!--停车-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="100" default="10"/>
<!--触发时间阈值-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</Parking>

<Run>
<!--奔跑-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<distance min="0.1" max="1.0" default="0.5"/>
<!--人奔跑最大距离-->
<mode opt="imagePixel,realWorld" default="imagePixel"/>
<!--imagePixel-像素模式，realWorld-实际模式-->
<ImagePixelMode>
<!--像素模式参数-->
<distance min="0.1" max="1.0" default="0.5"/>
<!--人奔跑最大距离-->
</ImagePixelMode>
<RealWorldMode>
<!--实际模式参数-->
<distance min="1" max="20" default="10"/>
<!--人奔跑最大距离-->
</RealWorldMode>
<detectionTarget opt="all,human,vehicle,human_vehicle"/>
<!--侦测目标：all-所有目标, human-人, vehicle-车, human_vehicle-人与车(节点中带_符号的代表支持多选项,例如human_vehicle代表人与车)-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</Run>

<HighDensity>
<!--人员聚集-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<density min="0.1" max="1.0" default="0.5"/>
<!--密度比率-->
<duration min="20" max="360" default="20"/>
<!--触发人员聚集参数报警阈值-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</HighDensity>

<ViolentMotion>
<!--剧烈运动-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="120" default="50"/>
<!--触发事件阈值-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<mode opt="video,audio,videoAndAudio" default="video"/>
<!--video-纯视频模式，audio-纯音频模式，videoAndAudio-音视频联合模式-->
</ViolentMotion>

<ReachHeight>
<!--攀高-->
<planeBottom>true</planeBottom>
<!--攀高警戒面-->
<duration min="1" max="120" default="10"/>
<!--触发攀高报警阈值-->
</ReachHeight>
<!--起身-->
<GetUp>
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="100" default="10"/>
<!--触发起床报警阈值-->
<sensitivity min="1" max="10" default="10"/>
<!--灵敏度-->
<mode opt="overBed,areaMove,sitting" default="overBed"/>
<!--overBed-大床通铺模式，areaMove-高低铺模式，sitting-大床通铺坐立起身模式-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</GetUp>

<Left>
<!--物品放置-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="10" max="100" default="10"/>
<!--触发物品遗留报警阈值-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</Left>

<Take>
<!--物品拿取-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="10" max="100" default="10"/>
<!--触发物品拿取报警阈值-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<eventPriority opt="low,mid,high"/>
<!--opt,"事件优先级:0-低，1-中，2-高"-->
</Take>

<LeavePosition>
<!--离岗-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<leaveDelay min="1" max="7200" default="120"/>
<!--无人报警时间-->
<staticDealy min="1" max="7200" default="120"/>
<!--睡觉报警时间-->
<mode opt="leave,sleep,leaveAndSleep" default="leave"/>
<!--leave-离岗事件，sleep-睡岗事件，leaveAndSleep-离睡岗事件-->
<personType opt="single,couple" default="single"/>
<!--值岗人数类型，single-单人值岗，couple-双人值岗-->
<OnPosition min="1" max="10" default="1"/>
<!--在岗人数-->
<sensitivity min="1" max="5"/>
<!--灵敏度参数能力-->
</LeavePosition>

<Trail>
<!--尾随-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
</Trail>

<KeyPersonGetUp>
<!--重点人员起身-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="100" default="20"/>
<!--触发起床报警阈值-->
<sensitivity min="1" max="10" default="5"/>
<!--灵敏度-->
<mode opt="overBed,areaMove,sitting" default="overBed"/>
<!--overBed-大床通铺模式，areaMove-高低铺模式，sitting-大床通铺坐立起身模式-->
</KeyPersonGetUp>

<FallDown>
<!--倒地-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="60" default="30"/>
<!--触发事件阈值-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<heightThreshold min="10" max="100"/>
<!--触发报警高度阈值，单位：cm-->
</FallDown>

<AudioAbnormal>
<!--声强突变-->
<decibel min="1" max="255" default="50"/>
<!--声音强度-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<audioMode opt="sensitivity,decibel,sensitivityAndDecibel" default="sensitivity"/>
<!--sensitivity-灵敏度检测，decibel-分贝阈值检测，sensitivityAndDecibel-灵敏度与分贝阈值检测-->
<enabled>true</enabled>
<!--使能标志-->
<threshold min="0" max="100" default="80"/>
<!--声音阈值-->
</AudioAbnormal>

<ADVReachHeight>
<!--折线攀高-->
<Region>
<vertexNum min="2" max="10"/>
<!--区域顶点数量-->
</Region>
<crossDirection opt="bothDirection,leftToRight,rightToLeft" default="bothDirection"/>
<!--穿越方向，bothDirection-双向，leftToRight-从左到右,rightToLeft-从右到左-->
</ADVReachHeight>

<ToiletTarry>
<!--如厕超时-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="3600" default="600"/>
<!--如厕超时时间-->
</ToiletTarry>

<YardTarry>
<!--放风场滞留-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="1" max="120" default="60"/>
<!--放风场滞留时间-->
</YardTarry>

<ADVTraversePlane>
<!--折线警戒面-->
<Region>
<vertexNum min="2" max="10"/>
<!--区域顶点数量-->
</Region>
<crossDirection opt="bothDirection,leftToRight,rightToLeft" default="bothDirection"/>
<!--穿越方向，bothDirection-双向，leftToRight-从左到右,rightToLeft-从右到左-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
</ADVTraversePlane>

<OverTime>
<!--操作超时-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="4" max="60000" default="30000"/>
<!--操作报警时间阈值 -->
</OverTime>

<StickUp>
<!--贴纸条-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="4" max="60" default="30"/>
<!--触发时间阈值-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
</StickUp>

<InstallScanner>
<!--安装读卡器-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<duration min="4" max="60" default="30"/>
<!--读卡持续时间-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
</InstallScanner>

<Standup>
<!--人员站立-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<sensitivity min="1" max="100" default="5"/>
<!--灵敏度-->
<duration min="1" max="3600" default="2"/>
<!--触发时间阈值-->
<heightThreshold min="0" max="250" default="130"/>
<!--高度阈值-->
</Standup>

<PeopleNumChange>
<!--人数异常-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<sensitivity min="1" max="100" default="5"/>
<!--灵敏度-->
<peopleNumThreshold min="0" max="5" default="1"/>
<!--人数阈值-->
<detectMode opt="greaterthan,lessthan,equal,notEqual"/>
<!--检测方式：greaterthan-大于,lessthan-小于,equal-等于,notEqual-不等于-->
<noneStateEffective opt="true,false"/>
<!--无人状态是否有效-->
<duration min="1" max="3600" default="2"/>
<!--触发时间阈值-->
</PeopleNumChange>

<SpacingChange>
<!--间距异常-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<sensitivity min="1" max="100" default="5"/>
<!--灵敏度-->
<spacingThreshold min="0" max="10.0" default="1.0"/>
<!--间距阈值-->
<detectMode opt="greaterthan,lessthan,equal,notEqual"/>
<!--检测方式：greaterthan-大于,lessthan-小于,equal-等于,notEqual-不等于-->
<duration min="1" max="3600" default="2"/>
<!--触发时间阈值-->
</SpacingChange>

<CombinedRule>
<!--组合规则 -->
<supportCombinedRule min="" max=""/>
<relateRuleID min="" max=""/>
<ruleSequence opt="ascending, ascendingOrDescending"/>
<minTimeInterval min="" max=""/>
<maxTimeInterval min="" max=""/>
<rule1ID min="" max=""/>
<rule2ID min="" max=""/>
</CombinedRule>

<SitQuietly>
<!--opt,一动不动事件-->
<duration min="" max=""/>
<!--req,持续时间-->
</SitQuietly>

<HighDensityStatus>
<!--人员聚集状态-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<density min="0.1" max="1.0" default="0.5"/>
<!--密度比率-->
<sensitivity min="0" max="100"/>
<!--灵敏度-->
</HighDensityStatus>
</EventType>

<BehaviorRule>
<!--行为规则-->
<picProcType opt="notProcess,upload"/>
<!--图片处理方式,notProcess-不处理，upload-上传-->
<uploadLastAlarm opt="false,true"/>
<!--上传最近一次的报警-->
<picRecordEnable opt="false,true"/>
<!--图片存储-->
<JpegParam>
<picSize>true</picSize>
<!--图片大小-->
<picQuality opt="best,better,normal"/>
<!--图片质量,best-最好，better-较好，normal-一般-->
</JpegParam>
<maxRelSnapChanNum>3</maxRelSnapChanNum>
<!--最大关联抓图通道数-->
<RuleEntryList>
<maxRuleNum>10</maxRuleNum>
<!--最大规则数目-->
<RuleEntry>
<eventType opt="traversePlane,enterArea,exitArea,intrusion,loiter,leftAndTake,parking,run,
highDensity,violentMotion,reachHeight,getup,left,take,leavePosition,trail,
keyPersonGetup,fallDown,audioAbnormal,advReachHeight,toiletTarry,yardTarry,
advTraversePlane,humanEnter,overTime,stickup,installScanner,standup,
peopleNumChange,spacingChange,lecture,answer,combinedRule,sitQuietly,lecture,answer, writing"/>
<!--事件类型,traversePlane-穿越警戒面,enterArea-进入区域,exitArea-离开区域,intrusion-周界入侵,
loiter-徘徊,leftAndTake-物品放置拿取,parking-停车,run-奔跑,highDensity-区域内人员密度,
violentMotion-剧烈运动,reachHeight-攀高,getup-起身,left-物品放置,take-物品拿取,leavePosition-离岗,
trail-尾随,keyPersonGetup-重点人员起身,fallDown-倒地,audioAbnormal-声强突变,advReachHeight-折线攀高,
toiletTarry-如厕超时,yardTarry-放风场滞留,advTraversePlane-折线警戒面,humanEnter-人靠近ATM,
overTime-操作超时,stickup-贴纸条,installScanner-安装读卡器,standup-起立,peopleNumChange-人数变化,
spacingChange-间距变化,lecture-授课,answer-回答问题,combinedRule-组合规则,sitQuietly-一动不动事件,lecture-授课,answer-回答问题, writing –板书-->
<ruleNameLength min="0" max="32"/>
<!--规则名称长度-->
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</SizeFilter>
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--monitor-监视器上警告,audio-声音警告,center-上传中心,alarmout-触发报警输出,picture-jpeg抓图并上传email,wirelesslight-无线声光报警，uploadftp-抓图并上传ftp-->
<relRecordChan>true</relRecordChan>
<!--报警触发通道录像-->
<alarmDelay opt="5,10,30,60,120,300,600"/>
<!--报警延时-->
<FilterStrategy>
<strategy opt="disabled,widthAndHeight,targetArea" default="disabled"/>
<!--过滤策略，disabled-不启用，widthAndHeight-高度和宽度过滤，targetArea-目标面积过滤-->
</FilterStrategy>
<TriggerParam>
<tiggerMode opt="disabled,trackPoint,targetArea" default="disabled"/>
<!--触发方式，disabled-不启用，trackPoint-路径点，targetArea-目标面积-->
<triggerPoint opt="center,up,down" default="center"/>
<!--触发点,center-中，up-上，down-下-->
<triggerArea min="0" max="100" default="50"/>
<!--触发目标面积百分比-->
</TriggerParam>
<intervalTime min="" max="" default=""/>
<!--单次报警间隔时间（秒）, 取值范围：[1,7200]（默认为600）-->
<heightLimit min="" max=""/>
<!--目标检测高度下限（厘米）, 取值范围：[0,250]（默认为80cm）, 小于此高度的目标将不作为目标进行检测-->
</RuleEntry>
</RuleEntryList>
</BehaviorRule>

<MaskRegion>
<!--屏蔽区域-->
<maxRegionNum>4</maxRegionNum>
<!--区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</MaskRegion>

<EnterRegion>
<!--进入区域-->
<maxRegionNum>1</maxRegionNum>
<!--区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</EnterRegion>

<Calibration>
<!--标定-->
<BehaviorIn>
<!--行为室内场景标定-->
<enabled opt="true,false"/>
<!--启用性-->
<calSampleNum min="2" max="5"/>
<!--标定样本个数-->
<CalSample>
<!--标定样本-->
<targetRect>true</targetRect>
<!--目标框-->
<LineSegment>
<lineMode opt="heightLine,lengthLine"/>
<!--heightLine-高度样本线,lengthLine-长度样本线-->
<value min="1" max="1000"/>
<!--高度或长度-->
</LineSegment>
</CalSample>
<CameraParam>
<cameraHeight min="2" max="50"/>
<!--摄像机高度-->
<cameraPitchAngle min="1" max="89"/>
<!--摄像机俯仰角度-->
<horizonLine min="0.0" max="1.0"/>
<!--场景中的地平线-->
</CameraParam>
</BehaviorIn>
<BehaviorOut>
<!--行为室外场景标定-->
<enabled opt="true,false"/>
<!--启用性-->
<lineSegNum min="4" max="8"/>
<!--样本线个数-->
<LineSegment>
<lineMode opt="heightLine,lengthLine"/>
<!--heightLine-高度样本线,lengthLine-长度样本线-->
<value min="1" max="1000"/>
<!--高度或长度-->
</LineSegment>
<CameraParam>
<cameraHeight min="2" max="50"/>
<!--摄像机高度-->
<cameraPitchAngle min="1" max="89"/>
<!--摄像机俯仰角度-->
<horizonLine min="0.0" max="1.0"/>
<!--场景中的地平线-->
</CameraParam>
</BehaviorOut>
<calibVerify>true</calibVerify>
<!--支持标定校验-->
</Calibration>
<Scene>
<maxSceneNum>1</maxSceneNum>
<!--最大场景数量-->
</Scene>
</Behavior>

<Traffic>
<!--交通-->
<Scene>
<!--场景参数-->
<maxSceneNum>16</maxSceneNum>
<!--最大场景数量-->
<maxSceneTimeSegNum>16</maxSceneTimeSegNum>
<!--最大场景时间段数量-->
<SceneParam>
<direction>true</direction>
<!--检测方向-->
<sceneID>true</sceneID>
<!--场景ID-->
<sceneNameLength min="0" max="32"/>
<!--场景名称长度-->
<ptzPos>true</ptzPos>
<!--ptz坐标-->
<trackTime min="5" max="300"/>
<!--球机跟踪时间-->
</SceneParam>
</Scene>

<MaskRegion>
<!--屏蔽区域-->
<maxRegionNum>4</maxRegionNum>
<!--区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</MaskRegion>
<!--参考区域-->
<ReferenceRegion>
<maxRegionNum>4</maxRegionNum>
<!--区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</ReferenceRegion>

<Calibration>
<!--标定-->
<enabled opt="true,false"/>
<!--启用性-->
<calibPointNum min="4" max="4"/>
<!--标定点个数-->
<width>true</width>
<!--宽度-->
<height>true</height>
<!--高度-->
<calibVerify>true</calibVerify>
<!--支持标定校验-->
</Calibration>

<LaneCfg>
<!--车道配置-->
<maxLaneNum>8</maxLaneNum>
<!--最大车道数量-->
<LaneParam>
<laneNameLength min="0" max="32"/>
<!--车道名称长度-->
<flowDirection>true</flowDirection>
<!--车道内车流方向-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</LaneParam>
</LaneCfg>

<AidRule>
<!--交通事件规则-->
<picProcType opt="notProcess,upload"/>
<!--图片处理方式,notProcess-不处理，upload-上传-->
<JpegParam>
<picSize>true</picSize>
<!--图片大小-->
<picQuality opt="best,better,normal"/>
<!--图片质量,best-最好，better-较好，normal-一般-->
</JpegParam>
<RuleEntryList>
<maxRuleNum>8</maxRuleNum>
<!--最大规则数量-->
<RuleEntry>
<ruleNameLength min="0" max="32"/>
<!--规则名称长度-->
<eventType opt="congestion,parking,inverse,pedestrian,debris,smoke,overLine,vehicleControlList,speed,illegalLaneChange,turnAround"/>
<!--事件类型，congestion-拥堵，parking-停车，inverse-逆行，pedestrian-行人，debris-遗留物，smoke-烟雾，
overLine-压线，vehicleControlList-非授权车辆，speed-超速，illegalLaneChange-变道，turnAround-掉头-->
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</SizeFilter>
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<AidParam>
<parkingDuration min="10" max="120" default="100"/>
<!--停车持续时间-->
<pedestrianDuration min="1" max="120" default="100"/>
<!--行人持续时间-->
<debrisDuration min="10" max="120" default="100"/>
<!--抛洒物持续时间-->
<congestionLength min="5" max="200" default="100"/>
<!--拥堵长度阈值-->
<congestionDuration min="10" max="120" default="60"/>
<!--拥堵持续时间-->
<inverseDuration min="1" max="10" default="5"/>
<!--逆行持续时间-->
<inverseDistance min="2" max="100" default="50"/>
<!--逆行距离阈值-->
<inverseAngleTolerence min="90" max="180" default="100"/>
<!--允许角度偏差-->
<illegalParkingTime min="4" max="60" default="10"/>
<!--违停时间-->
<illegalParkingPicNum min="1" max="6" default="4"/>
<!--违停图片数量-->
<mergePic>true</mergePic>
<!--支持图片拼接-->
</AidParam>
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--monitor-监视器上警告,audio-声音警告,center-上传中心,alarmout-触发报警输出,picture-jpeg抓图并上传email,wirelesslight-无线声光报警，uploadftp-抓图并上传ftp-->
<relRecordChan>true</relRecordChan>
<!--报警触发通道录像-->
<laneNo min="1" max="99"/>
<!--车道号 -->
</RuleEntry>
</RuleEntryList>
</AidRule>

<TpsRule>
<!--交通数据统计规则-->
<RuleEntryList>
<maxRuleNum>8</maxRuleNum>
<!--最大规则数目-->
<RuleEntry>
<laneID>true</laneID>
<!--车道ID-->
<calcType opt="laneVolume,laneVelocity,timeHeadway,spaceHeadway,timeOccupancyRatio,spaceOccupancyRatio,queue,vehicleType,trafficState"/>
<!--统计参数类型，laneVolume-车道流量，laneVelocity-车道速度，timeHeadway-车头时距，spaceHeadway-车头间距，timeOccupancyRatio-车道占有率（时间上），spaceOccupancyRatio-车道占有率（空间上），queue-排队长度，vehicleType-车辆类型，trafficState-交通状态-->
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</SizeFilter>
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--monitor-监视器上警告,audio-声音警告,center-上传中心,alarmout-触发报警输出,picture-jpeg抓图并上传email,wirelesslight-无线声光报警，uploadftp-抓图并上传ftp-->
</RuleEntry>
</RuleEntryList>
</TpsRule>
<forensicsMode opt="manual,auto"/>
<!--取证方式，manual-手动取证，auto-自动取证-->
<trafficSceneMode opt="freeway,tunnel,bridge"/>
<!--交通场景模式，freeway-高速户外场景，tunnel-高速隧道场景，bridge-高速桥梁场景-->

<ITCTriggerCfg>
<!--视频触发参数-->
<triggerMode opt="VIAVirtualCoil"/>
<!--触发模式，VIAVirtualCoil-VIA（Vehicle characteristics Intelligent Analysis）虚拟线圈触发-->
<!--VIA虚拟线圈触发参数-->
<VIAVirtualCoilParam>
<laneNum>true</laneNum>
<!--车道数量-->
<laneBoundaryLine>true</laneBoundaryLine>
<!--车道边界线,即最左边车道的左边界线-->
<VIALane>
<maxLaneNum>6</maxLaneNum>
<!--最大车道数量-->
<associatedLaneNO>true</associatedLaneNO>
<!--关联车道号-->
<LaneLogicParam>
<laneUseage opt="unknown,carriageWay,bus,fast,slow,motor,nonMotor,reverse,banTrucks,mix"/>
<!--车道用途，unknown-未知,carriageWay-普通车道,bus-公交专用车道,fast-快车道,slow-慢车道,motor-摩托车道,nonMotor-非机动车道,reverse-反向车道,banTruck-禁止货车车道,mix-混合车道-->
<laneDirection opt="unknown,left,straight,leftStraight,right,leftRight,rightStraight,leftRightStraight,leftWait,straightWait,forward,backward,bothway"/>
<!--车道方向,unknown-未知，left-左转，straight-直行,leftStraight-左转+直行,right-右转,leftRight-左转+右转,rightStraight-右转+直行,leftRightStraight-左转+右转+直行,leftWait-左转待行,straightWait-直行待行,forward-正向行驶,backward-背向行驶,bothway-双向行驶-->
<carDriveDirection opt="unknown,uptodown,downtoup"/>
<!--车辆行驶方向,unknown-未知,uptodown-下行,downtoup-上行-->
</LaneLogicParam>
<laneLine>true</laneLine>
<!--车道线-->
<Region>
<vertexNum min="3" max="20"/>
<!--牌识区域，区域顶点数量-->
</Region>
</VIALane>
<PlateRecogParam>
<provinceAbbreviation>true</provinceAbbreviation>
<!--设备运行省份的汉字简写-->
<!--识别的类型-->
<RecogMode>
<plateRecogPos opt="fromFront,fromBack"/>
<!--车牌识别位置，fromFront-正向识别,fromBack-背向识别-->
<plateRecogType opt="big,little"/>
<!--车牌识别类型，big-大车牌,little-小车牌-->
<locationType opt="sceneLocation,frameLocation"/>
<!--定位类型，sceneLocation-场定位,frameLocation-帧定位-->
<recogType opt="sceneRecognition,frameRecognition"/>
<!--识别类型，sceneRecognition-场识别,frameRecognition-帧识别-->
<recogTime opt="daytime,night"/>
<!--识别时间，daytime-白天,night-晚上-->
<sceneType opt="EPolice,gate"/>
<!--场景类型，EPolice-电警,gate-卡口-->
<microPlateRecog opt="true,false"/>
<!--微小车牌识别-->
<farmVehicleRecog opt="true,false"/>
<!--农用车识别-->
<vechileColorRecog opt="true,false"/>
<!--车身颜色识别-->
<motorCarRecog opt="true,false"/>
<!--摩托车识别识别-->
<blurRecog opt="true,false"/>
<!--模糊识别-->
</RecogMode>
<vehicleLogoRecog opt="true,false"/>
<!--车标识别-->
</PlateRecogParam>
</VIAVirtualCoilParam>
</ITCTriggerCfg>
</Traffic>

<PDC>
<!--客流量统计-->
<PDCType opt="smart, professionalIntelligence"/>
<!--客流智能类型，区分Smart设备和专业智能iDS设备-->
<PDCRule>
<Region>
<vertexNum min="4" max="10"/>
<!--区域顶点数量-->
</Region>
<Line>
<support opt="leftLine,rightLine"/>
</Line>
<enterDirection>true</enterDirection>
<!--客流量进入方向-->
<dayStartTime>true</dayStartTime>
<!--白天开始时间-->
<nightStartTime>true</nightStartTime>
<!--夜晚开始时间-->
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型-->
<detecteSensitive min="" max=""/>
<!--目标检测灵敏度：范围1-100，默认50-->
<generatieSpeedSpace min="" max=""/>
<!--目标生成速度（空域）：范围1-100，默认50-->
<generatieSpeedTime min="" max=""/>
<!--目标生成速度（时域）：范围1-100，默认50-->
<countSpeed min="" max=""/>
<!--计数速度：范围1-100，默认50-->
<detecteType opt="auto,head,shoulder"/>
<!--目标检测类型：0-自动，1-人头，2-头肩，默认0-自动-->
<targetSizeCorrect min="" max=""/>
<!--目标尺寸修正：范围1-100，默认50-->
</PDCRule>
<Calibration>
<calibRectNum min="1" max="6"/>
<!--标定框个数-->
<calibLine>true</calibLine>
<!--支持标定线-->
<calibVerify>true</calibVerify>
<!--支持标定校验-->
</Calibration>
<resetCounter>true</resetCounter>
<!--重置统计参数-->
<resetCounterMode opt="timing,manual"/>
<!--重置统计模式-->
<OSD>
<enable opt="disable,enable"/>
<!--req, 客流统计OSD显示使能-->
<topLeftPoint>true</topLeftPoint>
<!--req, 支持左上角坐标-->
<OSDType opt="enter,leave,enterLeave,none,peoplePassing,enterPeoplePassing">
<!--opt, xs:string, 显示类型: enter-进入人数, leave-离开人数, enterLeave-进入和离开人数, none-无,
peoplePassing-经过人数, enterPeoplePassing-进入和经过人数-->
</OSDType>
</OSD>
<mutexAbility opt="fieldDetection,traversingVirtualPlane,regionEntrance,regionExiting,
loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
<brokenNetHttp>true</brokenNetHttp>
<!--opt,是否支持断网续传-->
<SecUploadEnable opt="true,false"/>
<!--opt,xs:boolen, 每秒上传机制使能-->
<!--opt,xs:inter, 客流量检测数据上传周期（0-15、1-1、2-5、3-10、4-20、5-30、6-60）单位：分钟-->
<DataUploadCycle opt="1,5,10,15,20,30,60"/>
<isSupportRecommendedValue>
<!--opt, xs:boolen,"true",支持返回true，不支持则不返回这个节点 -->
</isSupportRecommendedValue>
<isSupportFlashRemoveCouting>
<!--opt, xs:boolen,"true",清除Flash中的客流数据统计,支持返回true,不支持则不返回这个节点 -->
</isSupportFlashRemoveCouting>
<InterferenceSuppression>
<!--opt,干扰抑制-->
<shadow opt="true,false">
<!--opt, xs:boolean, 阴影-->
</shadow>
<loitering opt="true,false">
<!--opt, xs:boolean, 徘徊-->
</loitering>
<cart opt="true,false">
<!--opt, xs:boolean, 推车-->
</cart>
</InterferenceSuppression>
<EmailReport>
<!--opt, 邮件上传报告-->
<DayReport opt="true,false">
<!--opt, xs:boolean, 客流日报表-->
</DayReport>
<WeekReport opt="true,false">
<!--opt, xs:boolean, 客流周报表-->
</WeekReport>
<MonthReport opt="true,false">
<!--opt, xs:boolean, 客流月报表-->
</MonthReport>
<YearReport opt="true,false">
<!--opt, xs:boolean,客流年报表 -->
</YearReport>
</EmailReport>
<CountingCalibrate>
<!--opt, 架设标定检验-->
<calibrateType opt="automatic,manual,no">
<!--opt ,xs:string,"", automatic-自动，manual-手动，no-未进行标定-->
</calibrateType>
<SetupParam>
<!--req,架设参数-->
<height min="" max="">
<!--opt, xs:float, unit:cm, 高度-->
</height>
<tiltAngle min="" max="">
<!--opt, ro,xs:float, 俯仰角-->
</tiltAngle>
<heelAngle min="" max="">
<!--opt, ro,xs:float, 倾斜角-->
</heelAngle>
</SetupParam>
<CountingArea>
<!--req,ro,"计数区域（红框）"-->
<RegionCoordinatesList size="">
<RegionCoordinates>
<!--req, 区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</CountingArea>
<AutomaticCalib>
<!--opt,dep if<calibrateType>Automatic</calibrateType>-->
<CalibRegion>
<!--opt,标定区域(绿框)-->
<RegionCoordinatesList size="">
<RegionCoordinates>
<!--req, 区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</CalibRegion>
</AutomaticCalib>
</CountingCalibrate>
<HeightFilterOverlay>
<!-- opt-->
<enable opt="true,false" default="">
<!-- opt, xs:boolean -->
</enable>
<heightFilter min="" max="" default="">
<!-- opt ,xs:integer -->
</heightFilter>
</HeightFilterOverlay>

<isSupportPosInfoOverlay opt="true,false">
<!-- opt, xs:boolean -->
</isSupportPosInfoOverlay>

<isSupportCalibrate opt="true,false">
<!--opt, xs:boolean, 是否支持标定-->
</isSupportCalibrate>
<isSupportSearchPeoplePassing opt="true,false">
<!--opt, xs:boolean, 是否支持查询经过人数-->
</isSupportSearchPeoplePassing>
<countingType opt="none,alarmInputTrigger,videoTrigger" />
<!--opt, xs:string,"计数触发方式", none-无, alarmInputTrigger-报警输入触发, videoTrigger-视频分析触发-->
<alarmInputTrigger_signalType opt="level,pulses" />
<!--opt, xs:string,"信号类型：level-电平, pulses-脉冲"-->
<videoTrigger_RS485Transmission opt="true,false" />
<!--opt, xs:boolean,"启用485传输"-->
<isSupportTriggerPeopleCountingDataSearch>true</isSupportTriggerPeopleCountingDataSearch>
<!--opt, "是否支持触发客流统计数据查询"-->
<isSupportDailyResetTime>true</isSupportDailyResetTime>
<!--opt, "是否支持定时重置清零"-->
<Polyline>
<!--opt, "是否支持折线检测"-->
<maxPointNumber>
<!--req,xs:integer, 支持的折线端点个数-->
</maxPointNumber>
</Polyline>
<isSupportBusDetectionArea>true</isSupportBusDetectionArea>
<!--opt, "是否支车载踏板检测区域"-->
<isSupportStreamOverlayRuleInfos>true</isSupportStreamOverlayRuleInfos>
<!--opt, "是否支持码流智能信息叠加"-->
<isSupportInterfaceSegmentation>true</isSupportInterfaceSegmentation>
<!--opt, "是否需要4200进行界面分割能力"-->
<isSupportMobileDescribeChange>true</isSupportMobileDescribeChange>
<!--opt, 该节点用于标注客流相机界面参数名称的修改，区分于基线产品和车载产品-->
<isSupportAdvanceConfiguration>true</isSupportAdvanceConfiguration>
<!--opt, 该节点用于标注相机是否支持高级配置-->
<isSupportSearchDoorStates>true</isSupportSearchDoorStates>
<!--opt, 该节点用于支持车载信号触发中的开关门状态检测-->
</PDC>
<HeatMapDetection>
<!--req,热度图侦测-->
<enable opt="true,false"/>
<!--req,false:不使能，true:使能-->
<detSenceID min="" max=""/>
<!--req 检测场景号-->
<heatMapRegionNum>8</heatMapRegionNum>
<!--req,热度图侦测区域个数 -->
<HeatMapParam>
<!--req,本节点会有相应的个数-->
<regionNum min="3" max="10"/>
<!--req,每个热度图侦测区域支持的有效点个数-->
<targetTrackEnable opt="true,false"/>
<!--req,目标跟踪：0-关闭，1-开启，默认0-关闭-->
<sensitivityLevel min="0" max="100"/>
<!--req,灵敏度-->
<backgroundUpdateRate min="1" max="100"/>
<!--req,背景更新速度：范围1-100，默认50-->
<sceneChangeLevel min="1" max="100"/>
<!--req,场景变化等级：范围1-100，默认50-->
<minTargetSize min="1" max="100"/>
<!--req,最小目标尺寸：范围1-100，默认50-->
</HeatMapParam>
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,处理类型,picture:抓图并邮件(此处由于早期能力缺少uploadftp，后才加上，此处若解析不到该字符串，判断是否支持抓图传FTP再解析设备软硬件能力中的UploadFTP节点)-->
<brokenNetHttp>true</brokenNetHttp>
<!--opt,是否支持断网续传-->
</HeatMapDetection>

<Face>
<!--人脸检测-->
<FaceDetect>
<eventType opt="abnormalFace,normalFace,multiFace,sunglassesFace,callFace"/>
<!--abnormalFace-异常人脸, normalFace-正常人脸, multiFace-多张人脸, sunglassesFace-戴墨镜人脸, callFace-打电话人脸-->
<uploadLastAlarm opt="false,true"/>
<!--上传最近一次的报警-->
<uploadFacePic opt="false,true"/>
<!--上传人脸子图-->
<picRecordEnable opt="false,true"/>
<!--图片存储-->
<ruleNameLength min="0" max="32"/>
<!--规则名称长度-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
<picProcType opt="notProcess,upload"/>
<!--图片处理方式,no-process-不处理，upload-上传-->
<sensitivity min="1" max="100" default="10"/>
<!--灵敏度-->
<duration min="4" max="60" default="30"/>
<!--触发人脸报警时间阈值-->
<JpegParam>
<picSize>true</picSize>
<!--图片大小-->
<picQuality opt="best,better,normal"/>
<!--图片质量,best-最好，better-较好，normal-一般-->
</JpegParam>
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
</SizeFilter>
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--monitor-监视器上警告,audio-声音警告,center-上传中心,alarmout-触发报警输出,picture-jpeg抓图并上传email,wirelesslight-无线声光报警，uploadftp-抓图并上传ftp-->
<relRecordChan>true</relRecordChan>
<!--报警触发通道录像-->
<alarmDelay opt="5,10,30,60,120,300,600"/>
<!--报警延时-->
<!--人脸画中画-->
<FaceInPicture>
<enabled opt="true,false"/>
<!--启用性-->
<backChannel>true</backChannel>
<!--背景通道-->
<position opt="topLeft,topRight,bottomLeft,bottomRight" default="bottomRight"/>
<!--叠加位置，topLeft-左上,topRight-右上,bottomLeft-左下,bottomRight-右下-->
<division opt="1/4,1/9,1/16"/>
<!--分屏系数-->
<IPChannel>
<isSupport>true</isSupport>
<!--是否支持IP通道，超脑ATM项目新增，老设备只支持模拟通道人脸画中画功能-->
<isSupportBackChannel>true</isSupportBackChannel>
<!--是否支持IP通道为背景通道，超脑ATM项目新增，老设备只支持模拟通道为背景通道-->
</IPChannel>
</FaceInPicture>
<maxRelSnapChanNum>3</maxRelSnapChanNum>
<!--最大关联抓图通道数-->
<isSupportEventTypeEx>true</isSupportEventTypeEx>
<!--设备是否支持EventTypeEx扩展字段，主要用于4200兼容性判断-->
<AlgParam>
<!--opt, 人脸检测算法库配置显示能力，目前只限于ATM项目内部使用，该能力中没有包含的算法库配置项将默认显示，不通过能力判断-->
<FaceDetectAlg>
<!--opt,人脸检测算法相关能力-->
<FaceDetectList size="">
<!--opt,人脸检测算法能力列表-->
<FaceDetect>
<!--opt-->
<eventType opt="abnormalFace,normalFace,multiFace,sunglassesFace,callFace"/>
<!--abnormalFace-异常人脸，normalFace-正常人脸，multiFace-多张人脸, sunglassesFace-戴墨镜人脸, callFace-打电话人脸-->
<sensitivity min="1" max="5" default="3"/>
<!--灵敏度-->
<duration min="30" max="1800" default="60"/>
<!--触发人脸报警时间阈值,单位：秒-->
</FaceDetect>
</FaceDetectList>
</FaceDetectAlg>
</AlgParam>
<NotDisplayDefaultDetectRegion>true</NotDisplayDefaultDetectRegion>
<!--规则配置不显示默认检测范围，主要用于4200兼容性判断-->
</FaceDetect>
<!--人脸抓拍-->
<FaceSnap>
<snapTime min="0" max="10" default="5"/>
<!--抓拍次数-->
<snapInterval min="0" max="255" default="24"/>
<!--抓拍间隔，单位：帧-->
<snapThreshold min="0" max="100" default="80"/>
<!--抓拍阈值-->
<generateRate min="1" max="5" default="3"/>
<!--目标生成速度-->
<sensitivity min="1" max="5" default="5"/>
<!--灵敏度-->
<referenceBright min="0" max="100" default="80"/>
<!--参考亮度-->
<matchType opt="alarmRealtime,alarmAfterDisappear" default="alarmRealtime"/>
<!--比对报警模式，alarmRealtime-实时报警，alarmAfterDisappear-目标消失后报警-->
<matchThreshold min="0" max="100" default="80"/>
<!--实时比对阈值-->
<JpegParam>
<picSize>true</picSize>
<!--图片大小-->
<picQuality opt="best,better,normal"/>
<!--图片质量,best-最好，better-较好，normal-一般-->
</JpegParam>
<RuleEntryList>
<maxRuleNum>8</maxRuleNum>
<!--最大规则数量-->
<RuleEntry>
<SizeFilter>
<mode opt="imagePixel,realWorld,default" default="imagePixel"/>
<!--过滤模式，imagePixel-像素大小，realWorld-实际大小，default-默认-->
<minRect>true</minRect>
<!--最小目标框-->
<maxRect>true</maxRect>
<!--最大目标框-->
<PupillaryDistance>
<!-- 瞳距限制-->
<width min="" max=""/>
<!-- 宽度限制-->
</PupillaryDistance>
</SizeFilter>
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</RuleEntry>
<autoROI opt="false,true"/>
<!--人脸自动ROI开关使能, false- 关闭，true- 开启-->
</RuleEntryList>
<faceExposure opt="false,true"/>
<!--人脸曝光使能 false- 关闭，true- 开启-->
<faceExposureMinDuration min="" max=""/>
<!--人脸曝光最短时间-->
<backgroundPic opt="open,close"/>
<!--req, "背景图上传使能 0-默认值（开启），1-禁止"-->
<faceFilteringTime min="" max="" default="">
<!--opt,人脸停留时间过滤, 取值范围: 0~100, 默认: 5-->
</faceFilteringTime>
<isSupportMultiScene opt="true,false">
<!--opt,xs:boolen, 是否支持人脸多场景配置-->
</isSupportMultiScene>
<FaceContrast>
<!--opt,人脸比对-->
<enabled opt="false,true"/>
</FaceContrast>
<brokenNetHttp>true</brokenNetHttp>
<!--opt,是否支持断网续传-->
</FaceSnap>

<SnapDevAccess>
<!--抓拍接入参数-->
<devIP opt="ipv4,ipv6"/>
<!--ip地址-->
<devPort min="8000" max="65535"/>
<!--端口-->
<usernameLength min="0" max="32"/>
<!--用户名长度-->
<passwordLength min="0" max="16"/>
<!--密码长度-->
</SnapDevAccess>

<SavePathCfg>
<!--存储路径参数-->
<partitionNum>33</partitionNum>
<!--分区个数-->
<SinglePath>
<type opt="snapFace,blocklistAlarm,snapFaceAndBlocklistAlarm" default="snapFaceAndBlocklistAlarm"/>
<!--存储类型，snapFace-抓拍人脸,blocklistAlarm-非授权人员报警,snapFaceAndBlocklistAlarm-抓拍人脸和非授权人员报警-->
<saveAlarmPic>true</saveAlarmPic>
<!--支持保存断网的报警图片-->
<diskDriver min="0" max="32"/>
<!--盘符号-->
<reservedSpace min="10" max="20" default="10"/>
<!--预留容量，单位:G-->
</SinglePath>
</SavePathCfg>

<MaskRegion>
<!--屏蔽区域-->
<maxRegionNum>4</maxRegionNum>
<!--区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</MaskRegion>
</Face>

<VQD>
<!--视频质量诊断-->
<VQDEventType opt="blur,luma,chroma,snow,streak,freeze,signalLoss,ptzControl,sceneChange,videoAbnormal,videoBlock"/>
<!--blur-图像模糊,luma-亮度异常,chroma-图像偏色,snow-雪花干扰,streak-条纹干扰,freeze-画面冻结,signalLoss-信号丢失,ptzControl-云台失控,sceneChange-场景突变,videoAbnormal-视频异常,videoBlock-视频遮挡-->
<VQDRule>
<EventParam>
<threshold min="0" max="100"/>
<!--报警阈值-->
<triggerMode opt="continuous,single"/>
<!--报警触发方式，continuous-持续触发,single-单次触发-->
<uploadPic opt="false,true"/>
<!--报警图片上传-->
<timeInterval min="0" max="3600" default="120"/>
<!--持续触发报警时间间隔，单位：秒-->
</EventParam>
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--monitor-监视器上警告,audio-声音警告,center-上传中心,alarmout-触发报警输出,picture-jpeg抓图并上传email,wirelesslight-无线声光报警，uploadftp-抓图并上传ftp-->
<relRecordChan>true</relRecordChan>
<!--报警触发通道录像-->
</VQDRule>
<downloadAlarmPic>true</downloadAlarmPic>
<!--下载VQD报警图片-->
</VQD>

<ObjectColor>
<!--物体颜色-->
<objectType opt="coat"/>
<!--物体类型，coat-上衣-->
<colorMode opt="value,picture" default="value"/>
<!--取色方式，value-颜色值，picture-图片-->
<colorValue>
<brightness min="0" max="255"/>
<!--亮度-->
<saturation min="0" max="255"/>
<!--饱和度-->
<hue min="0" max="255"/>
<!--色调-->
</colorValue>
<colorPicture>
<picType opt="jpg"/>
<!--图片类型-->
<picWidth min="100" max="400"/>
<!--图片宽度-->
<picHeight min="100" max="300"/>
<!--图片高度-->
</colorPicture>
</ObjectColor>

<AuxArea>
<!--辅助区域-->
<maxAreaNum>16</maxAreaNum>
<!--区域个数-->
<areaType opt="overlapRegion,bedLocation"/>
<!--区域类型，overlapRegion-共同区域，bedLocation-床铺位置-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</AuxArea>
<!--基准场景-->
<BaselineScene>
<operation opt="update"/>
<!--操作，update-更新-->
<downloadBaselineScenePic>true</downloadBaselineScenePic>
<!--基准场景图片下载-->
</BaselineScene>
<channelWorkMode opt="independent,master,slave"/>
<!--通道工作模式，independent-独立模式，master-主模式，slave-从模式-->
<!--从通道-->
<SlaveChannel>
<maxChanNum>16</maxChanNum>
<!--最大从通道个数-->
<chanType opt="local,remote"/>
<!--从通道类型，local-本机通道，remote-远程设备通道-->
<RemoteChannel>
<!--远程通道-->
<devAddress opt="ipv4,ipv6,domainName"/>
<!--地址类型,domainName-设备域名-->
<devPort min="8000" max="65535"/>
<!--端口-->
<userNameLength min="0" max="32"/>
<!--用户名长度-->
<passwordLength min="0" max="16"/>
<!--密码长度-->
<channelNumber>true</channelNumber>
<!--通道号-->
</RemoteChannel>
</SlaveChannel>

<VcaKeyParam>
<!--算法库关键字参数，当前默认都是整型，其他类型如浮点、字符串等需额外增加接口-->
<!--翻译后缀含义: cn-中文,en-英文-->
<VcaKeyParamEntry>
<index>101</index>
<!--关键字索引值-->
<PlainText>
<translationCn>关键参数1</translationCn>
<!--中文名称-->
<translationEn>Key Parameter 1</translationEn>
<!--英文名称-->
</PlainText>
<value min="1" max="100" default="50"/>
<!--取值范围-->
</VcaKeyParamEntry>
<VcaKeyParamEntry>
<index>102</index>
<!--关键字索引值-->
<PlainText>
<translationCn>关键参数2</translationCn>
<!--中文名称-->
<translationEn>Key Parameter 2</translationEn>
<!--英文名称-->
</PlainText>
<value min="1" max="100" default="50"/>
</VcaKeyParamEntry>
<VcaKeyParamEntry>
<index>103</index>
<!--关键字索引值-->
<PlainText>
<translationCn>关键参数3</translationCn>
<!--中文名称-->
<translationEn>Key Parameter 3</translationEn>
<!--英文名称-->
</PlainText>
<value min="1" max="100" default="50"/>
</VcaKeyParamEntry>
</VcaKeyParam>

<SwitchLamp>
<enabled opt="true,false"/>
<triggerMode opt="continue,once"/>
<!--req,触发方式，continue-持续触发，once-单次触发-->
<timeInterval min="0" max="3600" default="120"/>
<!--req,triggerMode持续触发报警时间间隔，单位：秒-->
<uploadPic opt="false,true"/>
<!--req,报警图片上传-->
<AlarmTime>
<timeSegNum min="2" max="8"/>
<!--req,每天布防时间段数量-->
</AlarmTime>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"/>
<!--req,monitor-监视器上警告,audio-声音警告,center-上传中心,alarmout-触发报警输出,picture-jpeg抓图并上传email,wirelesslight-无线声光报警，uploadftp-抓图并上传ftp-->
<relRecordChan>true</relRecordChan>
<!--req,报警触发通道录像-->
</SwitchLamp>

<FaceCaptureStatistics>
<!--req,人员统计-->
<isSupportStartTime>true</isSupportStartTime>
<reportType opt="daily,weekly,monthly,yearly"/>
<!--req,报表类型-->
<statType opt="age,gender,numberOfPeople"/>
<!--req,数据类型-->
</FaceCaptureStatistics>

<ColorFilter>
<!--req,颜色过滤-->
<enable opt="true,false"/>
<ruleID min="" max=""/>
<sequenceNo min="" max=""/>
<PicInfo>
<picType opt="jpg"/>
<width>true</width>
<height>true</height>
<picDataLen min="" max=""/>
</PicInfo>
</ColorFilter>

<HumanRecognition>
<!--人体目标识别能力-->
<MaskRegion>
<!--屏蔽区域-->
<maxRegionNum>4</maxRegionNum>
<!--区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--区域顶点数量-->
</Region>
</MaskRegion>
</HumanRecognition>

<AtmCabinKeyParam>
<!--防护舱路的参数-->
<VcaKeyParam>
<VcaKeyParamEntry>
<index>31</index>
<!--剧烈运动报警人数限制索引值-->
<PlainText>
<translationCn>剧烈运动报警人数限制</translationCn>
<!--中文名称-->
<translationEn>ViolentMotion Number Limitation</translationEn>
<!--英文名称-->
</PlainText>
<value min="0" max="32" default="2"/>
</VcaKeyParamEntry>
<VcaKeyParamEntry>
<index>30</index>
<!--尾随报警时间阀值索引值-->
<PlainText>
<translationCn>尾随报警时间阀值</translationCn>
<!--中文名称-->
<translationEn>Trail Alarm Time Threshold</translationEn>
<!--英文名称-->
</PlainText>
<value min="1" max="10000" default="1400"/>
<!--单位ms-->
</VcaKeyParamEntry>
<VcaKeyParamEntry>
<index>28</index>
<!--物品遗留虚警过滤索引值-->
<PlainText>
<translationCn>物品遗留虚警过滤</translationCn>
<!--中文名称-->
<translationEn>LeftAndTake False Alarm Filtering</translationEn>
<!--英文名称-->
</PlainText>
<enabled opt="true,false"/>
</VcaKeyParamEntry>
</VcaKeyParam>
</AtmCabinKeyParam>

<AtmSurroundKeyParam>
<!--环境路参数-->
<VcaKeyParam>
<VcaKeyParamEntry>
<index>28</index>
<!--物品遗留虚警过滤索引值-->
<PlainText>
<translationCn>物品遗留虚警过滤</translationCn>
<!--中文名称-->
<translationEn>LeftAndTake False Alarm Filtering</translationEn>
<!--英文名称-->
</PlainText>
<enabled opt="true,false"/>
</VcaKeyParamEntry>
</VcaKeyParam>
</AtmSurroundKeyParam>

<AtmPanelKeyParam>
<!--面板路的参数-->
<VcaKeyParam>
<VcaKeyParamEntry>
<index>28</index>
<!--异物粘贴虚警过滤索引值-->
<PlainText>
<translationCn>异物粘贴虚警过滤</translationCn>
<!--中文名称-->
<translationEn>Stickup False Alarm Filtering</translationEn>
<!--英文名称-->
</PlainText>
<enabled opt="true,false"/>
</VcaKeyParamEntry>
</VcaKeyParam>
</AtmPanelKeyParam>
</VcaChanAbility>


DEVICE_ABILITY_INFO_VCACTRL

设备网络SDK开发使用手册

<?xml version="1.0" encoding="UTF-8"?>
<!--req, 智能通道控制能力集描述 -->
<VcaCtrlAbility version="2.0">
<channelNO>1</channelNO>
<VcaCtrlTypeList>
<VcaCtrlTypeEntry>
<vcaType name="basicBehavior"/>
<!--异常行为识别基本版-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="advanceBehavior"/>
<!--异常行为识别高级版-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="fullBehavior"/>
<!--异常行为识别完整版-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="default,wall,indoor"/>
<!--模式,default-使用系统默认值，wall-围墙，indoor-室内-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="plate"/>
<!--车牌识别-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="ATM"/>
<!--ATM-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="pannel,surround,face,safetycabin"/>
<!--模式,pannel-面板模式，surround-环境模式，face-人脸模式,safetycabin-防护舱模式-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
<RelatedChannel>
<!--opt, 是否支持关联通道，不支持不返回-->
<Pannel>
<!--opt, 面板模式-->
<relatedChannelNum min="" max=""/>
<!--关联通道数目-->
<relatedChannelmode opt="pannel,surround,face,safetycabin"/>
<!--关联通道模式, pannel-面板模式, surround-环境模式, face-人脸模式, safetycabin-防护舱模式-->
</Pannel>
<Surround>
<!--opt, 环境模式-->
<relatedChannelNum min="" max=""/>
<!--关联通道数目-->
<relatedChannelmode opt="pannel,surround,face,safetycabin"/>
<!--关联通道模式, pannel-面板模式, surround-环境模式, face-人脸模式, safetycabin-防护舱模式-->
</Surround>
<Face>
<!--opt, 人脸模式-->
<relatedChannelNum min="" max=""/>
<!--关联通道数目-->
<relatedChannelmode opt="pannel,surround,face,safetycabin"/>
<!--关联通道模式, pannel-面板模式, surround-环境模式, face-人脸模式, safetycabin-防护舱模式-->
</Face>
<Safetycabin>
<!--opt, 防护舱模式-->
<relatedChannelNum min="" max=""/>
<!--关联通道数目-->
<relatedChannelmode opt="pannel,surround,face,safetycabin"/>
<!--关联通道模式, pannel-面板模式, surround-环境模式, face-人脸模式, safetycabin-防护舱模式-->
</Safetycabin>
</RelatedChannel>
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="PDC"/>
<!--客流量统计-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="ITS"/>
<!--智能交通事件-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="prisonBehavior"/>
<!--异常行为识别监狱版（监舍）-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="default,getUp,advReachHeight,leavePosition,violentMotion,audioAbnormal,keyPersonGetUp"/>
<!--模式,default-使用系统默认值,getUp-起身,advReachHeight-攀高,leavePosition-离岗,
violentMotion-剧烈运动,audioAbnormal-声强突变,keyPersonGetUp-重点人员起身-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="facesnap"/>
<!--人脸抓拍-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="facesnapRecog"/>
<!--人脸抓拍与识别-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="faceRetrieval"/>
<!--人脸后检索-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="faceRecog"/>
<!--人脸抓拍-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="prisonPerimeterBehavior"/>
<!--异常行为识别监狱版（周界）-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="default,fieldDetection,enterArea,exitArea,traversePlane,trailInfo"/>
<!--模式,default-使用系统默认值,fieldDetection-区域入侵,enterArea-进入区域,
exitArea-离开区域,traversePlane-传越警戒面,trailInfo-尾随 -->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="TPS"/>
<!--交通数据采集-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="TFS"/>
<!--道路交通事件取证-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="cityroad,freeway"/>
<!--模式,cityroad-城市道路，freeway-高速道路-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="facesnapBehavior"/>
<!--人脸抓拍与异常行为识别-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="yard"/>
<!--放风场-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="yardTarry"/>
<!--模式, yardTarry –放风场滞留-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="inquestRoomsss"/>
<!--审讯室模式-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<mode opt="yardTarry,audioAbnormal,leavePosition,sitUp,switchLampDetec"/>
<!--模式, yardTarry –放风场滞留, audioAbnormal-声强突变,leavePosition-离岗,sitUp-坐立起身,switchLampDetec t-开关灯检测-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>

<VcaCtrlTypeEntry>
<vcaType name="heatmap"/>
<!--热度图-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="smartVehicleDetection"/>
<!--SMART事件+车辆检测-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="smartHVTDetection"/>
<!--SMART事件+混行检测-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="smartEvent"/>
<!-- SMART事件-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="vehicleDetection"/>
<!--车辆检测事件-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="smartRoadDetection"/>
<!--SMART事件+道路监控-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="smartFaceDetection"/>
<!--SMART事件+人脸侦测-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>
<VcaCtrlTypeEntry>
<vcaType name="smartHeatMap"/>
<!-- SMART事件+热度图-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型，snapshot-抓拍功能，frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>

<VcaCtrlTypeEntry>
<vcaType name="humanRecognition"/>
<!--人体目标识别-->
<vcaEnable opt="true,false"/>
<!--启用性-->
<streamWithVca opt="true,false"/>
<!--码流中是否带智能信息-->
<controlType opt="snapshot,frontLinkage"/>
<!--控制类型: snapshot-抓拍功能, frontLinkage-联动前端设备-->
</VcaCtrlTypeEntry>

<defVcaType opt="smartVehicleDetection,fullBehavior"/>
<!--req, 设备默认支持的异常行为识别类型-->

<NeedReboot>
<smartSwitchVcaType opt="TPS,smartVehicleDetection,smartHVTDetection,heatmap,smartEvent,vehicleDetection,humanRecognition, roadDetection"/>
<!--req, 智能资源分配, TPS- 违章取证, smartVehicleDetection- Smart+车辆检测, smartHVTDetection- Smart+混行检测,
heatmap- 热度图, smartEvent- Smart事件, vehicleDetection- 车辆检测事件, humanRecognition- 人体目标识别，roadDetection- 道路检测 , 模式切换需要提示重启-->
<vcaSwitchVcaType opt="TPS"/>
<!--req, 智能资源分配, 切换为违章事件以及从违章事件切换为其它三种模式, 需要提示重启 -->
</NeedReboot>

</VcaCtrlTypeList>
</VcaCtrlAbility>


DEVICE_ABILITY_INFO_VCADEV

设备网络SDK开发使用手册

<?xml version="1.0" encoding="UTF-8"?>
<!--req, 智能设备能力集描述 -->
<VcaDevAbility>
<vcaChanNum>32</vcaChanNum>
<!--智能通道总个数-->
<plateChanNum>2</plateChanNum>
<!--车牌通道个数-->
<basicBehaviorChanNum>2</basicBehaviorChanNum>
<!--异常行为识别基本版个数-->
<advanceBehaviorChanNum>2</advanceBehaviorChanNum>
<!--行为高级版个数-->
<fullBehaviorChanNum>2</fullBehaviorChanNum>
<!--行为完整版个数-->
<ATMChanNum>2</ATMChanNum>
<!--智能ATM个数-->
<PDCChanNum>2</PDCChanNum>
<!--人数统计通道个数-->
<ITSChanNum>2</ITSChanNum>
<!--交通事件通道个数-->
<prisonBehaviorChanNum>2</prisonBehaviorChanNum>
<!--行为监狱版(监舍)通道个数-->
<faceSnapChanNum>2</faceSnapChanNum>
<!--人脸抓拍通道个数-->
<faceSnapRecogChanNum>2</faceSnapRecogChanNum>
<!--人脸抓拍和识别通道个数-->
<faceRetrievalChanNum>2</faceRetrievalChanNum>
<!--人脸后检索个数-->
<faceRecogChanNum>2</faceRecogChanNum>
<!--人脸抓拍通道个数-->
<prisonPerimeterChanNum>2</prisonPerimeterChanNum>
<!--行为监狱版(周界)通道个数-->
<TPSChanNum>2</TPSChanNum>
<!--交通诱导通道个数-->
<TFSChanNum>2</TFSChanNum>
<!--道路违章取证通道个数-->
<faceSnapBehaviorChanNum>2</faceSnapBehaviorChanNum>
<!--人脸抓拍和异常行为识别通道个数-->
<vcaCtrlBatch>true</vcaCtrlBatch>
<!--支持智能控制类型批量配置-->
<SmartRoadDetectionChanNum>2</SmartRoadDetectionChanNum>
<!--SMART事件+道路监控通道个数-->
<SmartFaceDetectionChanNum>2</SmartFaceDetectionChanNum>
<!--SMART事件+人脸侦测通道个数-->
<SmartHeatMapChanNum>2</SmartHeatMapChanNum>
<!--SMART事件+人脸侦测通道个数-->

<!--普通设备取流-->
<NormalPuStream>
<StreamMediaServer>
<!--流媒体-->
<enabled opt="true,false"/>
<!--启用性-->
<streamMediaServerIP opt="ipv4,ipv6"/>
<!--流媒体服务器地址-->
<streamMediaServerPort min="8000" max="65535"/>
<!--流媒体服务器端口-->
<transProtocol opt="TCP,UDP"/>
<!--传输协议-->
</StreamMediaServer>
<DevChanInfo>
<!--设备通道-->
<devIP opt="ipv4,ipv6"/>
<!--ip地址-->
<devPort min="8000" max="65535"/>
<!--端口-->
<channelNO>true</channelNO>
<!--通道号-->
<transProtocol opt="TCP,UDP,RTP"/>
<!--传输协议-->
<transMode opt="mainstream,substream"/>
<!--传输码流模式,mainstream-主码流，substream-子码流-->
<usernameLength min="0" max="32"/>
<!--用户名长度-->
<passwordLength min="0" max="16"/>
<!--密码长度-->
</DevChanInfo>
</NormalPuStream>
<!--IP接入参数-->
<IPAccessParam>
<analogChanEnable opt="true,false"/>
<!--模拟通道启用性-->
<ipDevInfo>
<!--IP设备信息-->
<enabled opt="true,false"/>
<!--IP设备启用性-->
<protocolType>true</protocolType>
<!--协议类型-->
<quickAdd opt="true,false"/>
<!--支持快速添加-->
<devIP opt="ipv4,ipv6"/>
<!--ip地址-->
<devPort min="8000" max="65535"/>
<!--端口-->
<usernameLength min="0" max="32"/>
<!--用户名长度-->
<passwordLength min="0" max="16"/>
<!--密码长度-->
<domainNameLength min="0" max="64"/>
<!--设备域名长度-->
</ipDevInfo>
<!--取流方式参数-->
<PuStreamType>
<!--直接从设备取流-->
<DirectDevice>
<enabled opt="true,false"/>
<!--启用性-->
<ipIDLow>true</ipIDLow>
<!--IP设备ID的低8位-->
<ipIDHigh>true</ipIDHigh>
<!--IP设备ID的高8位-->
<channelNO>true</channelNO>
<!--取流设备通道号-->
<transProtocol opt="TCP,UDP,RTP"/>
<!--传输协议-->
<transMode opt="mainstream,substream"/>
<!--传输码流模式,mainstream-主码流，substream-子码流-->
<factoryType>true</factoryType>
<!--前端设备厂家类型-->
</DirectDevice>
<!--从流媒体取流-->
<OverMediaServer>
<StreamMediaServer>
<!--流媒体-->
<enabled opt="true,false"/>
<!--启用性-->
<streamMediaServerIP opt="ipv4,ipv6"/>
<!--流媒体服务器地址-->
<streamMediaServerPort min="8000" max="65535"/>
<!--流媒体服务器端口-->
<transProtocol opt="TCP,UDP"/>
<!--传输协议-->
</StreamMediaServer>
<DevChanInfo>
<!--设备通道-->
<devIP opt="ipv4,ipv6"/>
<!--ip地址-->
<devPort min="8000" max="65535"/>
<!--端口-->
<channelNO>true</channelNO>
<!--通道号-->
<transProtocol opt="TCP,UDP,RTP"/>
<!--传输协议-->
<transMode opt="mainstream,substream"/>
<!--传输码流模式,mainstream-主码流，substream-子码流-->
<usernameLength min="0" max="32"/>
<!--用户名长度-->
<passwordLength min="0" max="16"/>
<!--密码长度-->
</DevChanInfo>
</OverMediaServer>
<!--通过IPServer获得IP地址后取流-->
<DeviceOverIpServer>
<enabled opt="true,false"/>
<!--启用性-->
<ipServerIP opt="ipv4,ipv6"/>
<!--IPServer地址-->
<ipServerPort min="8000" max="65535"/>
<!--IPServer端口-->
<devNameLength min="0" max="32"/>
<!--取流设备名称长度-->
<devSerialLength min="0" max="48"/>
<!--取流设备序列号长度-->
<devUsernameLength min="0" max="32"/>
<!--取流设备用户名长度-->
<devPasswordLength min="0" max="16"/>
<!--取流设备密码长度-->
<devChannelNO>true</devChannelNO>
<!--取流设备通道号-->
</DeviceOverIpServer>
<!--通过IPServer找到设备，再通过流媒体取流-->
<MediaServerOverIpServer>
<enabled opt="true,false"/>
<!--启用性-->
<streamMediaServerIP opt="ipv4,ipv6"/>
<!--流媒体服务器地址-->
<streamMediaServerPort min="8000" max="65535"/>
<!--流媒体服务器端口-->
<streamMediaServerTransmitType opt="TCP,UDP"/>
<!--流媒体服务器传输协议-->
<ipServerIP opt="ipv4,ipv6"/>
<!--IPServer地址-->
<ipServerPort min="8000" max="65535"/>
<!--IPServer端口-->
<devNameLength min="0" max="32"/>
<!--取流设备名称长度-->
<devSerialLength min="0" max="48"/>
<!--取流设备序列号长度-->
<devUsernameLength min="0" max="32"/>
<!--取流设备用户名长度-->
<devPasswordLength min="0" max="16"/>
<!--取流设备密码长度-->
<devChannelNO>true</devChannelNO>
<!--取流设备通道号-->
<devPort min="8000" max="65535"/>
<!--取流设备端口-->
<transProtocol opt="TCP,UDP,RTP"/>
<!--传输协议-->
<transMode opt="mainstream,substream"/>
<!--传输码流模式,mainstream-主码流，substream-子码流-->
<factoryType>true</factoryType>
<!--前端设备厂家类型-->
</MediaServerOverIpServer>
<!--通过流媒体由URL去取流-->
<UrlOverMediaServer>
<enabled opt="true,false"/>
<!--启用性-->
<urlLength min="0" max="255"/>
<!--取流URL路径长度-->
<transProtocol opt="TCP,UDP,RTP"/>
<!--传输协议-->
<ipID>true</ipID>
<!--设备ID号-->
<channelNO>true</channelNO>
<!--通道号-->
</UrlOverMediaServer>
<!--通过hiDDNS找到设备然后从设备取流-->
<DeviceOverHiDDNS>
<enabled opt="true,false"/>
<!--启用性-->
<hiDDNSDomainLength min="0" max="64"/>
<!--hiDDNS服务器地址长度-->
<hiDDNSPort min="8000" max="65535"/>
<!--hiDDNS服务器端口-->
<devAliasLen min="0" max="32"/>
<!--取流设备别名长度-->
<devSerialLength min="0" max="48"/>
<!--取流设备序列号长度-->
<devUsernameLength min="0" max="32"/>
<!--取流设备用户名长度-->
<devPasswordLength min="0" max="16"/>
<!--取流设备密码长度-->
<devChannelNO>true</devChannelNO>
<!--取流设备通道号-->
</DeviceOverHiDDNS>
</PuStreamType>
</IPAccessParam>
</VcaDevAbility>


DEVICE_ABILITY_INFO_VEHICLERECOG

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 车辆二次识别检测能力集描述 -->
<VehicleRecogAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
<dataIndex>true</dataIndex>
<!--req,数据流水号-->
<taskNo>true</taskNo>
<!--req,任务处理号-->
<plateRect>true</plateRect>
<!--req,车牌位置-->
<plateNo>true</plateNo>
<!--req,车牌号码-->
<recogOperate opt="plate,vehicle,carColor,vehicleLogo, copilotSafebelt, pilotSafebelt, pilotSunVisor, copilotSunVisor"/>
<!--req,车辆图片二次识别操作: 车牌、车辆类型、车身颜色、车辆品牌、安全带识别(副驾驶)、安全带识别(主驾驶)、遮挡板识别(主驾驶)、遮挡板识别(副驾驶)-->
<picUploadMethods opt="sdk,URL"/>
<!--req,图片数据上传类型-->
<isSupportJSON>
<!--opt, xs:boolean; 是否支持JSON透传: false为不支持, true为支持-->
</isSupportJSON>
<isSupportVehRecogTaskV50>
<!--opt, xs:boolean; 是否支持二次识别任务提交: false为不支持, true为支持 -->
</isSupportVehRecogTaskV50>
</VehicleRecogAbility>


DEVICE_ABILITY_InputConfig

设备网络SDK开发使用手册

<InputConfig version="2.0">
<inputNo>
<!--req,xs:integer,作为视频会议输入的输入口编号-->
</inputNo>
<streamType opt="mainstream,substream,stream3">
<!-- opt, xs:string -->
</streamType>
</InputConfig>


DEVICE_ABILITY_IntelRuleDisplay

设备网络SDK开发使用手册

<IntelRuleDisplay>
<!--req,热成像智能规则显示能力集-->

<fontSize opt="8,12,16,20,24" def="12">
<!--req,xs:string, 字体大小倍率: 8-小, 12-标准(默认值), 16-大, 20-超大, 24-特大,
播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小, 公式为: fontSize/8*(0.01*预览窗口宽度)-->
</fontSize>

<NormalRulesLine>
<!--opt,正常规则线相关属性参数-->
<LineColor>
<!--req,规则线RGB颜色配置-->
<R min="0" max="255">
<!--req,xs:integer-->
</R>
<G min="0" max="255">
<!--req,xs:integer-->
</G>
<B min="0" max="255">
<!--req,xs:integer-->
</B>
</LineColor>
</NormalRulesLine>

<AlertRulesLine>
<!--opt,预警规则线相关属性参数-->
<LineColor>
<!--req,规则线RGB颜色配置-->
<R min="0" max="255">
<!--req,xs:integer, R(红色)值-->
</R>
<G min="0" max="255">
<!--req,xs:integer, G(绿色)值-->
</G>
<B min="0" max="255">
<!--req,xs:integer, B(蓝色)值-->
</B>
</LineColor>
</AlertRulesLine>

<AlarmRulesLine>
<!--opt,报警规则线相关属性参数-->
<LineColor>
<!--req,规则线RGB颜色配置-->
<R min="0" max="255">
<!--req,xs:integer, R(红色)值-->
</R>
<G min="0" max="255">
<!--req,xs:integer, G(绿色)值-->
</G>
<B min="0" max="255">
<!--req,xs:integer, B(蓝色)值-->
</B>
</LineColor>
</AlarmRulesLine>
</IntelRuleDisplay>


DEVICE_ABILITY_LEDConfiguration

设备网络SDK开发使用手册

<LEDConfiguration version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,LED屏幕显示参数配置能力集-->
<information min="0" max="512">
<!--req,xs:string,LED显示内容-->
</information>
<displayMode opt="left,right,immediate">
<!--req,xs:string;显示方式:左移,右移,立即显示-->
</displayMode>
<speedType opt="fast,medium,slow">
<!--req,xs:string;速度类型:快,中,慢-->
</speedType>
<showTime min="1" max="60">
<!--req,xs:integer;显示时长，1~60秒 -->
</showTime>
</LEDConfiguration>


DEVICE_ABILITY_LiteStorage

设备网络SDK开发使用手册

<LiteStorage version="2.0">
<id>
<!-- req, xs:string-->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<capacity>
<!-- ro, opt, xs:float,GB -->
</capacity>
<storageTime min="1" max="30">
<!-- req, xs:integer-->
</storageTime>
<level opt="low,medium,high" def="medium">
<!--req, xs:string, "低，中，高" -->
</level>
<DefStorageTime>
<!--dep, "存储时间推荐值"-->
<low min="" max="">
<!-- ro, opt, xs:integer, 低模式下推荐天数-->
</low>
<medium min="" max="">
<!-- ro, opt, xs:integer, 中模式下推荐天数-->
</medium>
<high min="" max="">
<!-- ro, opt, xs:integer, 高模式下推荐天数-->
</high>
</DefStorageTime>
</LiteStorage>


DEVICE_ABILITY_LockGateConfigList

设备网络SDK开发使用手册

<LockGateConfigList version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,智能锁闸参数配置信息-->
<LockGateConfig>
<!--req,智能锁闸单个时间段参数配置信息-->
<beginTime >
<!--req, xs:time, ISO8601 time, 即HH：MM：SS -->
</beginTime>
<endTime >
<!--req, xs:time, ISO8601 time ,即HH：MM：SS -->
</endTime>
</LockGateConfig>
</LockGateConfigList>


DEVICE_ABILITY_Loitering

设备网络SDK开发使用手册

<Loitering version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<LoiteringRegionList size="4">
<LoiteringRegion version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive-->
</sensitivityLevel>
<timeThreshold min="1" max="10"/>
<!-- req, xs:integer,seconds -->
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</LoiteringRegion>
</LoiteringRegionList>
<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像" -->
<isSupportMultiScene>
<!-- opt, xs:boolen -->
</isSupportMultiScene>
</Loitering>


DEVICE_ABILITY_LowPower

设备网络SDK开发使用手册

<LowPower version="2.0">
<mode opt="manual,schedule">
<!--opt,xs:string, 模式, manual-手动, schedule-自动-->
</mode>
<enabled>
<!--dep, xs:boolen, "true,false"依赖于mode节点中的 manual, 手动模式下的使能开关, true-关闭，false-开启-->
</enabled>
<Schedule>
<!--dep, 依赖于mode节点中的 schedule子节点, 自动模式下定时时间段-->
<TimeRange>
<!-- req -->
<beginTime>
<!-- req, xs:time, ISO8601 time hh:mm:ss, 开始时间-->
</beginTime>
<endTime>
<!-- req, xs:time, ISO8601 time hh:mm:ss, 结束时间-->
</endTime>
</TimeRange>
</Schedule>
</LowPower>


DEVICE_ABILITY_MACFilter

设备网络SDK开发使用手册

<MACFilter version="2.0">
<enabled opt="true,false">
<!--req, xs:boolean, 是否开启MAC地址过滤: true-是, false-否-->
</enabled>
<permissionType opt="deny, allow">
<!--req, xs:string,"deny, allow", MAC地址过滤类型: deny-禁止，allow-允许-->
</permissionType>
<MACFilterAddressList size="">
<MACFilterAddress>
<id>
<!--req, xs:string;id, 序号-->
</id>
<MACAddress max="">
<!--req, xs:string, 过滤的MAC地址-->
</MACAddress>
</MACFilterAddress>
</MACFilterAddressList>
</MACFilter>


DEVICE_ABILITY_ManualDeicing

设备网络SDK开发使用手册

<ManualDeicing version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled>
<!--req, xs:boolean, 是否启用手动除冰-->
</enabled>
</ManualDeicing>


DEVICE_ABILITY_ManualRanging

设备网络SDK开发使用手册

<ManualRanging version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<enabled>
<!--req, xs:boolean, 手动测距使能-->
</enabled>
</ManualRanging>


DEVICE_ABILITY_ManualThermBasic

设备网络SDK开发使用手册

<ManualThermBasic version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<id min="" max="">
<!--req ,xs:integer，通道号 -->
</id>
<distance min="0" max="10000">
<!--req ,xs:integer; 距离，单位：m-->
</distance>
<emissivity min="0.01" max="1.00">
<!--req ,xs:float，发射率-->
</emissivity>
<distanceUnit opt="meter,feet,centimeter">
<!--req, xs:string, 距离单位: meter-米, feet-英尺，centimeter-厘米-->
</distanceUnit>
</ManualThermBasic>


DEVICE_ABILITY_ManualThermometry

设备网络SDK开发使用手册

<ManualThermometry version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<id min="" max="">
<!-- req ,xs:integer -->
</id>
<currentTime>
<!-- req, xs:time, ISO8601 time -->
</currentTime>
<temperatureUnit opt="degreeCentigrade,degreeFahrenheit,degreeKelvin">
<!-- req ,xs:string -->
</temperatureUnit>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<!-- <ThermometryRuleList size = "10"> -->

<ThermometryRuleList>
<ThermometryRule>
<ruleId min="1" max="10">
<!-- req ,xs:integer -->
</ruleId>
<enabled opt="true,false">
<!-- req ,xs:boolean -->
</enabled>
<name min="0" max="32">
<!-- req, xs:string -->
</name>
<type opt="point,region,line">
<!-- req, xs:string"point,region,line" -->
</type>
<Point>
<TempValue min="-40.0" max="1000.0">
<!-- dep, xs:float "-40.0 .. 1000.0" ro-->
</TempValue>
<CalibratingCoordinates>
<!-- dep -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</CalibratingCoordinates>
</Point>
<Region>
<highestTempValue min="-40.0" max="1000.0">
<!-- dep, xs: float ro-->
</highestTempValue>
<lowestTempValue min="-40.0" max="1000.0">
<!-- dep, xs: float ro-->
</lowestTempValue>
<averageTempValue min="-40.0" max="1000.0">
<!-- dep, xs: float ro-->
</averageTempValue>
<diffTempValue min="-40.0" max="1000.0">
<!-- dep, xs: float ro-->
</diffTempValue>
<RegionCoordinatesList>
<!-- dep -->
<RegionCoordinates>
<!-- opt -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</Region>
<Line>
<highestTempValue min="-40.0" max="1000.0">
<!-- dep, xs: float ro-->
</highestTempValue>
<lowestTempValue min="-40.0" max="1000.0">
<!-- dep, xs: float ro-->
</lowestTempValue>
<RegionCoordinatesList size="">
<!-- dep -->
<RegionCoordinates>
<!-- opt -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</Line>
</ThermometryRule>

</ThermometryRuleList>

</ManualThermometry>


DEVICE_ABILITY_MasterSlaveTrackingCap

设备网络SDK开发使用手册

<MasterSlaveTrackingCap version="2.0">
<isSupportSlaveCameraCfg>
<!-- opt, xs:boolen, 是否支持从摄像机参数配置 -->
</isSupportSlaveCameraCfg>
<isSupportSlaveCameraStatus>
<!-- opt, xs:boolen, 是否支持从摄像机状态信息获取 -->
</isSupportSlaveCameraStatus>
<isSupportSlaveCameraTrackingRatio>
<!-- opt, xs:boolen, 是否支持从摄像机跟踪倍率设置 -->
</isSupportSlaveCameraTrackingRatio>
<isSupportSlaveCameraTracking>
<!-- opt, xs:boolen, 是否支持从摄像机跟踪配置 -->
</isSupportSlaveCameraTracking>
<isSupportAdjustBinocularCalib>
<!-- opt, xs:boolen -->
</isSupportAdjustBinocularCalib>
<isSupportHumanCalib>
<!-- opt, xs:boolen -->
</isSupportHumanCalib>
</MasterSlaveTrackingCap>


DEVICE_ABILITY_NetworkCap

设备网络SDK开发使用手册

<NetworkCap version="2.0">
<isSupportWireless>
<!--req, xs:boolean, 是否支持无线-->
</isSupportWireless>
<isSupportPPPoE>
<!--req, xs:boolean, 是否支持PPPoE-->
</isSupportPPPoE>
<isSupportBond>
<!--req, xs:boolean, 是否支持网卡绑定模式-->
</isSupportBond>
<isSupport802_1x>
<!--req, xs:boolean, 是否支持802_1x-->
</isSupport802_1x>
<isSupportNtp>
<!--opt, xs:boolean, 是否支持NTP-->
</isSupportNtp>
<isSupportFtp>
<!--opt, xs:boolen, 是否支持FTP-->
</isSupportFtp>
<isSupportUpnp>
<!--opt, xs:boolean, 是否支持UPNP-->
</isSupportUpnp>
<isSupportPNP>
<!--opt, xs:boolean, 是否支持PNP-->
</isSupportPNP>
<isSupportDdns>
<!--opt, xs:boolean, 是否支持DDNS-->
</isSupportDdns>
<isSupportHttps>
<!--opt, xs:boolea, 是否支持HTTPS-->
</isSupportHttps>
<SnmpCap>
<!--opt, SNMP能力-->
<isSupport>
<!--req, xs:boolean, 是否支持SNMP-->
</isSupport>
</SnmpCap>
<isSupportExtNetCfg>
<!--opt, xs:boolean, 是否支持扩展网卡配置-->
</isSupportExtNetCfg>
<isSupportIPFilter>
<!--opt, xs:boolean, 是否支持IP地址过滤-->
</isSupportIPFilter>
<isSupportEZVIZ>
<!--opt, xs:boolean, 是否支持EZVIZ-->
</isSupportEZVIZ>
<isSupportEhome>
<!--opt, xs:boolean, 是否支持EHOME-->
</isSupportEhome>
<isSupportWirelessServer>
<!--opt, xs:boolean, 是否支持WIFI热点服务-->
</isSupportWirelessServer>
<isSupportWirelessDial/>
<!--opt, req, xs:boolean, 是否支持wireless dial参数配置-->
<GB28181Cap>
<!--opt, GB/T28181能力-->
<isSupportGB28181Service>
<!--opt, xs:boolean, 是否支持GB/T28181-->
</isSupportGB28181Service>
</GB28181Cap>
<isSupportMACFilter>
<!--opt, xs:boolean, 是否支持MAC地址过滤-->
</isSupportMACFilter>
<isSupportIntegrate>
<!--opt, xs:boolean, 是否支持ONVIF\CGI\ISAPI标准协议集成-->
</isSupportIntegrate>
<isSupportplatformAccess>
<!--opt, xs:boolean, 是否支持GB28181或者EHOME协议平台接入地址过滤功能-->
</isSupportplatformAccess>
<ResourceIPCap>
<!--opt, xs:boolean, 是否支持IP资源-->
<isSupport>
<!--req, xs:boolean,opt=”true,false” -->
</isSupport>
<ipType>
<!--req, xs:string,opt=”normal,resource，ip类型：普通（控制器）IP、资源IP” -->
</ipType>
<needSetting>
<!--dep, xs:boolean,opt=”true,false”，是否需要设置资源IP，该节点仅当ipType为normal时才返回 -->
</needSetting>
</ResourceIPCap>
<isSupportResourceStatistics>
<!-- opt, xs:boolean ,是否支持网络资源统计-->
</isSupportResourceStatistics>
<isSupportBandwidthLimit>
<!-- opt, xs:boolean，是否支持限制带宽 -->
</isSupportBandwidthLimit>
<isSupportPOEPortsDisableAdaptiveServer>
<!-- opt, xs:boolean, 是否支持POE协议 -->
</isSupportPOEPortsDisableAdaptiveServer>

<WPS>
<NetworkInterfaceList size="2">
<NetworkInterface>
<id>
<!-- req, xs:string, -->
</id>
<enabled>
<!-- req, xs:boolean-->
</enabled>
<isSupportAutoConnect>
<!-- opt, xs:boolean -->
</isSupportAutoConnect>
<isSupportDevicePinCode>
<!-- opt, xs:boolean -->
</isSupportDevicePinCode>
<isSupportDevicePinCodeUpdate>
<!-- opt, xs:boolean -->
</isSupportDevicePinCodeUpdate>
<ApPinCode>
<ssid min="" max="">
<!-- opt, xs:string -->
</ssid>
<pinCode min="" max="">
<!-- opt, xs:string -->
</pinCode>
</ApPinCode>
</NetworkInterface>
</NetworkInterfaceList>
</WPS>

<verificationCode max="">
<!--opt, xs:string，是否支持在登陆用户为admin的情况下返回验证码-->
</verificationCode>

<VerificationCodeModification>
<!--opt,xs:string，是否支持在登陆用户为admin的情况下，返回该节点，验证码支持修改节点；没有节点和节点值里面返回值为false 表示不支持-->

<verificationCodeType opt="normal,empty">normal</verificationCodeType>
<isSupportDeclarationURL>
<!-- opt, xs:boolean，是否支持服务申明的超链接 -->
</isSupportDeclarationURL>
<isSupportPrivacyPolicyURL>
<!-- opt, xs:boolean，是否支持隐私条款的超链接 -->
</isSupportPrivacyPolicyURL>
<!--opt,设备验证码是否修改过，修改了返回true,没有修改，返回false,不返回该节点表示不支持判断认证码是否修改-->

<verificationCodeModify opt="true,false">true</verificationCodeModify>
<Hyperlinks>
<!--opt-->
<declarationURL>
<!--opt,xs:string，服务申明的超链接-->
</declarationURL>
<privacyPolicyURL>
<!--opt,xs:string，隐私条款的超链接-->
</privacyPolicyURL>
</Hyperlinks>
<isSupportVerificationCodeCheck>
<!-- opt, xs:boolean，是否支持验证码检验 -->
</isSupportVerificationCodeCheck>
<isSupportOldVerificationCode>
<!-- opt, xs:boolean，是否支持老版本萤石密码配置（老版本密码为六位，全为大写字母） -->
</isSupportOldVerificationCode>

</VerificationCodeModification>

</NetworkCap>


DEVICE_ABILITY_OIS

设备网络SDK开发使用手册

<OIS version="2.0">
<mode opt="close,ordinary,experts" default="ordinary">
<!--req, xs:string, 光学防抖模式: close-关闭, ordinary-普通, experts-专家-->
</mode>
<OISLevel opt="high,middle,low" default="middle">
<!--opt, xs:string, 光学防抖等级(光学防抖模式为专家时有效): high-高, middle-中, low-低-->
</OISLevel>
<OISSensitivity opt="high,middle,low" default="middle">
<!--opt, xs: string, 光学防抖灵敏度(光学防抖模式为专家时有效): high-高, middle-中, low-低-->
</OISSensitivity>
</OIS>


DEVICE_ABILITY_OnlineUpgradeCap

设备网络SDK开发使用手册

<OnlineUpgradeCap version="2.0">
<firmwareNum max=""/>
<!--req,可在线升级的包数量，包括全量包和增量包。全量包是指整个固件升级包，增加包是指某个小的单元，比如openssl库-->
<firmwareCode max=""/>
<!--req,识别码最大长度-->
<firmwareVersion max=""/>
<!--req,版本最大长度-->
<firmwareCodeNumOnce max=""/>
<!--req,单次可获取的识别码的最大个数-->
<upgradePercent min="" max=""/>
<!--req,升级进度-->
<Version>
<newVersion max=""/>
<!--req,新版本-->
<changeLog max=""/>
<!--req,新版本的更新内容-->
</Version>
<rebootAfterUpgrade>
<!--opt, ro, string, "auto,manual", 升级之后是否自动重启-->
</rebootAfterUpgrade>
</OnlineUpgradeCap>


DEVICE_ABILITY_PaperChargeInfo

设备网络SDK开发使用手册

<PaperChargeInfo version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<barCode min="" max="">
<!--req,xs:string, 条形码-->
</barCode>
<licensePlate max="">
<!--req,xs:string; 车牌号码-->
</licensePlate>
<inTime opt="YYYY-MM-DD HH:MM:SS">
<!--req,xs:string; 入场时间-->
</inTime>
<paymentTime opt="YYYY-MM-DD HH:MM:SS">
<!--req,xs:string; 缴费时间-->
</paymentTime>
<paymentAmount min="" max="">
<!--req,xs:integer, fen, 缴费金额-->
</paymentAmount>
<outTimeOut min="" max="">
<!--req,xs:integer, Minute, 缴费出场失效时间-->
</outTimeOut>
<outType opt="noOut, out">
<!--req,xs:string, noOut- 未出场, out-已出场 -->
</outType>
</PaperChargeInfo>


DEVICE_ABILITY_PaperPrintFormatInfo

设备网络SDK开发使用手册

<PaperPrintFormatInfo version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,纸票打印格式配置能力集-->
<titleInfo min="0" max="64">
<!--req,xs:string,纸票标题内容-->
</titleInfo>
<customInfo min="0" max="64">
<!--req,xs:string,纸票自定义信息内容-->
</customInfo>
<phoneNumber min="0" max="16">
<!--req,xs:string,联系电话-->
</phoneNumber>
<printInTimeEnabled>
<!--req,xs:boolean;是否打印入场时间-->
</printInTimeEnabled>
</PaperPrintFormatInfo>


DEVICE_ABILITY_Parking

设备网络SDK开发使用手册

<Parking version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<ParkingRegionList size="4">
<ParkingRegion version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive-->
</sensitivityLevel>
<timeThreshold min="5" max="100"/>
<!-- req, xs:integer,seconds -->
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</ParkingRegion>
</ParkingRegionList>
<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像" -->
<isSupportMultiScene>
<!-- opt, xs:boolen -->
</isSupportMultiScene>
</Parking>


DEVICE_ABILITY_ParkingSpaceInfo

设备网络SDK开发使用手册

<ParkingSpaceInfo version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<totalParkingLot min="" max="">
<!--req,xs:integer, 总停车位数 -->
</totalParkingLot>
<currentParkingLot min="" max="">
<!--req,xs:integer, 当前剩余停车位数 -->
</currentParkingLot >
</ParkingSpaceInfo>


DEVICE_ABILITY_PosOverlayCap

设备网络SDK开发使用手册

<PosOverlayCap>
<!--req, POS叠加能力集-->
<enabled opt="false,true">
<!--opt,xs:boolen, 是否开启Pos信息叠加-->
</enabled>
<backpackEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加背包情况-->
</backpackEnanble>
<sexEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加性别情况-->
</sexEnanble>
<carryEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加拎东西情况-->
</carryEnanble>
<rideEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加骑车情况-->
</rideEnanble>
<maskEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加带口罩情况-->
</maskEnanble>
<hatEnanble opt= "false,true">
<!--opt,xs:boolean, 是否叠加戴帽子情况-->
</hatEnanble>
<sleeveEnanble opt= "false,true">
<!--opt,xs:boolean, 是否叠加长短袖情况-->
</sleeveEnanble>
<pantsTypeEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加裤子属性情况-->
</pantsTypeEnanble>
<hairEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加长短发情况-->
</hairEnanble>
<glassesEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加戴眼镜情况-->
</glassesEnanble>
<ageEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加年龄情况-->
</ageEnanble>
<heightEnanble opt="false,true">
<!--opt,xs:boolean, 是否叠加身高情况-->
</heightEnanble>
</PosOverlayCap>


DEVICE_ABILITY_Power

设备网络SDK开发使用手册

<Power version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<powerSwitch>
<!-- req ,xs:boolean，是否支持电源开关配置 -->
</powerSwitch>
</Power>


DEVICE_ABILITY_PTZAbsoluteEx

设备网络SDK开发使用手册

<PTZAbsoluteEx version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<elevation min="-90.000" max="270.000">
<!-- opt, xs:float,垂直转动角度范围-->
</elevation>
<azimuth min="0" max="360.000">
<!-- opt, xs:float,水平转动角度范围 -->
</azimuth>
<absoluteZoom min="0" max="10000.00">
<!-- opt, xs:float,变倍范围 -->
</absoluteZoom>
<focus min="1" max="100000">
<!-- req, xs:intger, 聚焦范围-->
</focus>
<focalLen min="1" max="100000">
<!-- req, xs:intger, 焦距范围-->
</focalLen>
<horizontalSpeed min="0" max="1000.00">
<!--opt, xs:float ，水平转动速度，单位：度/S-->
</horizontalSpeed>
<verticalSpeed min="0" max="1000.00">
<!--opt, xs:float，垂直转动速度，单位：度/S-->
</verticalSpeed>
<zoomType opt = "absoluteZoom, focalLen">
<!--opt, xs:string，镜头变倍类型，absoluteZoom:通过变倍参数进行配置，选择为该类型时，<absoluteZoom>参数生效。focalLen:通过焦距参数进行配置，选择为该类型时，<focalLen>参数生效。 -->
</zoomType>
</PTZAbsoluteEx>


DEVICE_ABILITY_PTZChanelCap

设备网络SDK开发使用手册

<PTZChanelCap>
<AbsolutePanTiltPositionSpace>
<!--opt, -->
<XRange/>
<!--req, -->
<YRange/>
<!--req, -->
</AbsolutePanTiltPositionSpace>
<AbsoluteZoomPositionSpace>
<!--opt, -->
<ZRange/>
<!--req, -->
</AbsoluteZoomPositionSpace>
<RelativePanTiltSpace>
<!--opt, -->
<XRange/>
<!--req, -->
<YRange/>
<!--req, -->
</RelativePanTiltSpace>
<RelativeZoomSpace>
<!--opt, -->
<ZRange/>
<!--req, -->
</RelativeZoomSpace>
<ContinuousPanTiltSpace>
<!--opt, -->
<XRange/>
<!--req, -->
<YRange/>
<!--req, -->
</ContinuousPanTiltSpace>
<ContinuousZoomSpace>
<!--opt, -->
<ZRange/>
<!--req, -->
</ContinuousZoomSpace>
<MomentaryPanTiltSpace>
<!--opt, -->
<XRange/>
<!--req, -->
<YRange/>
<!--req, -->
</MomentaryPanTiltSpace>
<MomentaryZoomSpace>
<!--opt, -->
<ZRange/>
<!--req, -->
</MomentaryZoomSpace>
<homePostionSupport>
<!--req, xs:boolean-->
</homePostionSupport>
<maxPresetNum>
<!--req, xs:integer, 支持的最大预置点个数-->
</maxPresetNum>
<maxPatrolNum>
<!--req,xs:integer, 支持的最大巡航路径个数-->
</maxPatrolNum>
<maxPatternNum>
<!--req,xs:integer, 支持的最大花样扫描路径个数-->
</maxPatternNum>
<maxLimitesNum>
<!--req,xs:integer, 支持的最大限位个数-->
</maxLimitesNum >
<maxTimeTaskNum>
<!--req,xs:integer, 支持的最大定时任务个数-->
</maxTimeTaskNum>
<controlProtocol>
<!--opt, xs:string,“pelco-d,…”, 支持的云台控制协议 -->
</controlProtocol>
<controlAddress>
<!--opt, xs:string, 1-255, 地址位 -->
</controlAddress>
<PTZRs485Para>
<!--opt, 云台RS485参数能力 -->
<baudRate>
<!--req, xs:integer, 波特率 -->
</baudRate>
<dataBits>
<!-- req, xs:integer, 数据位-->
</dataBits>
<parityType>
<!-- req, xs:string, "none,even,odd,mark,space", 校验类型-->
</parityType>
<stopBits>
<!-- req, xs:string, "1,1.5,2" ,停止位 -->
</stopBits>
<flowCtrl>
<!-- req, xs:string, "none, software, hardware", 流控类型 -->
</flowCtrl>
</PTZRs485Para>
<PresetNameCap>
<!--opt, 预置点名称能力 -->
<presetNameSupport>
<!--opt,xs:boolean, 是否支持预置点名称-->
</presetNameSupport>
<maxPresetNameLen>
<!--dep,xs:integer, 预置点名称长度 -->
</maxPresetNameLen>
<specialNo/>
<!--dep, 特殊预置点 -->
</PresetNameCap>
<isSupportAbsoluteEx>
<!--opt,xs:boolean，是否支持PTZ绝对位置配置扩展支持能力-->
</isSupportAbsoluteEx>
<isSupportCruise>
<!--opt,xs:boolen，是否支持巡航模式配置-->
</isSupportCruise>
<isSupportAreaScan>
<!--opt,xs:boolen，是否支持区域扫描-->
</isSupportAreaScan>
<isSupportPosition3D>
<!--opt,xs:boolen, 是否支持3D定位-->
</isSupportPosition3D>
<isSupportManualTrack>
<!--opt,xs:boolen, 是否支持手动跟踪定位(NET_DVR_PTZ_MANUALTRACE)-->
</isSupportManualTrack>
<manualControlSpeed opt="compatible,pedestrian,nonMotorVehicle,motorVehicle,selfadaptive">
<!--opt,xs:string, 手动控制速度：compatible-兼容模式, pedestrian-行人, nonMotorVehicle-非机动车, motorVehicle-机动车, selfadaptive-自适应 -->
</manualControlSpeed>
<isSpportPtzlimiteds>
<!--opt,xs:boolen, 是否支持云台限位-->
</isSpportPtzlimiteds>
<isSpportPtzEagleFocusing>
<!--opt,xs:boolen, 是否支持鹰视聚焦功能-->
</isSpportPtzEagleFocusing>
<ParkAction/>
<TimeTaskList/>
<TrackingRatio>
<!--opt, 跟踪倍率-->
<coefficient min="1" max="10" default="5">
<!--opt, xs:integer, 倍率系数-->
</coefficient>
</TrackingRatio>

<TrackInitPosition>
<!--opt, 跟踪初始位置-->
<slaveCameraID>
<!--opt, xs:integer, 从摄像机ID, 1..4 -->
</slaveCameraID>
</TrackInitPosition>

<isSupportPTZTrackStatus>
<!--opt,xs:boolean, "是否支持PTZ跟踪联动状态获取"-->
</isSupportPTZTrackStatus>

</PTZChanelCap>


DEVICE_ABILITY_PublishFile

设备网络SDK开发使用手册

<PublishFile version="2.0">
<beginTime>
<!-- req, xs:time, ISO8601 time, 开始时间-->
</beginTime>
<endTime>
<!-- req, xs:time, ISO8601 time, 结束时间-->
</endTime>
<fileID min="0" max="128">
<!--req, xs: integer, 文件名ID-->
</fileID>
<cmdType opt="StartPublist,StopPublish">
<!--req, xs: string, 发布命令类型: StartPublist-开始发布, StopPublish- 停止发布-->
</cmdType>
<fileType opt="timing,manual">
<!--req, xs: string, 发布文件类型：timing-定时课程，manual-手动课程-->
</fileType>
</PublishFile>


DEVICE_ABILITY_RacmCap

设备网络SDK开发使用手册

<RacmCap version="1.0">
<!--req, RACM存储总能力集, 对应/ISAPI/Image/channels/<ID>/SupplementLight/capabilities-->
<isSupportZeroChan>
<!--opt, xs:boolean, 是否支持零通道-->
</isSupportZeroChan >
<inputProxyNums>
<!--opt, xs:integer, 支持的数字通道数-->
</inputProxyNums>
<eSATANums>
<!--opt, xs:integer, 支持的eSATA数目-->
</eSATANums>
<miniSASNums>
<!--opt, xs:integer, 支持的miniSAS数目-->
</miniSASNums>
<nasNums>
<!--opt, xs:integer, 支持的nas数目-->
</nasNums>
<ipSanNums>
<!--opt, xs:integer, 支持的ipsan数目-->
</ipSanNums>
<isSupportRaid>
<!--opt, xs:boolean, 是否支持Raid-->
</isSupportRaid>
<isSupportExtHdCfg>
<!--opt, xs:boolean, 是否支持硬盘高级管理-->
</isSupportExtHdCfg>
<isSupportTransCode>
<!--opt, xs:boolean, 是否支持转码预览-->
</isSupportTransCode>
<isSupportIpcImport>
<!--opt, xs:boolean, 是否支持IPC配置文件导入-->
</isSupportIpcImport>
<NasMountType>
<!--opt, NAS接口类型-->
<isNFSSupportAuthentication/>
<!--opt, xs:boolean, 是否支持NFS身份验证-->
<isCIFSSupportAuthentication/>
<!--opt, xs:boolean, 是否支持CIFS身份验证-->
</NasMountType>
<isSupportIpcStreamType/>
<!--opt, xs:boolean, 是否支持IPC码流类型-->
<isSupportIOInputProxy/>
<!--opt, xs:boolean, 是否支持动态IO输入通道-->
<isSupportIOOutputProxy/>
<!--opt, xs:boolean, 是否支持动态IO输出通道-->
<isSupportPTZRs485Proxy/>
<!--opt, xs:boolean, 是否支持动态PTZ485通道-->
<isSupportSrcIDSearch/>
<!--opt, xs:boolean, 是否支持流ID搜索-->
<isSupportReversePlayback/>
<!--opt, xs:boolean, 是否支持倒放-->
<isSupportSMARTTest/>
<!--opt, xs:boolean, 是否支持硬盘检测功能-->
<isSupportDownloadByTime/>
<!--opt, xs:boolean, 是否支持按时间下载-->
<pictureSearchType opt="AllEvent,CMR,MOTION,ALARM,EDR,ALARMANDMOTION,Command,pir,wlsensor,callhelp,facedetection,
FieldDetection,scenechangedetection,LineDetection,regionEntrance,regionExiting,loitering,group,
rapidMove,parking,unattendedBaggage,attendedBaggage,vehicleDetection,manual,manualSnapShot,
playSnapShot,allPic"/>
<!--opt, xs:string, 图片查找类型-->
<isSupportActivateIpc/>
<!--opt, xs:boolean 是否支持激活IPC-->
<isSupportCheckIpcSecurity>
<!--opt, xs:boolean, 是否支持IPC安全认证-->
<isSupportCheckPassword/>
<!--opt, xs:boolean, 是否支持密码检测-->
</isSupportCheckIpcSecurity>
<isSupportMainAndSubRecord/>
<!--opt, xs:boolean, 是否支持主子码流录像-->
<isSupportSyncIPCPassword>
<!--opt, xs:boolean, 是否支持同步IPC密码-->
</isSupportSyncIPCPassword>
<isSupportTransferIPC>
<!--opt, xs:boolean, 是否支持IPC透传功能-->
</isSupportTransferIPC>
<isSupportPOS>
<!--opt, xs:boolean, 是否支持POS-->
</isSupportPOS>
<isSupportPassBackBasicCfg>
<!--opt, xs:boolean, 支持CVR回传功能基础能力 -->
</isSupportPassBackBasicCfg>
<isSupportPassBackHistoryPlanCfg>
<!--opt, xs:boolean, 支持回传历史录像计划配置能力 -->
</isSupportPassBackHistoryPlanCfg>
<isSupportFileData>
<!--opt, xs:boolean, 支持文件相关配置能力:
/ISAPI/ContentMgmt/FileData/TransferSpeedConfiguration;
/ISAPI/ContentMgmt/FileData/LockConfiguration;
/ISAPI/ContentMgmt/FileData/Search-->
</isSupportFileData>
<isSupportRemoteBackup>
<!--opt, xs:boolean, 支持异地备份相关配置能力:
/ISAPI/ContentMgmt/RemoteBackup/BackupMachineInfo;
/ISAPI/ContentMgmt/RemoteBackup/addTask;
/ISAPI/ContentMgmt/RemoteBackup/deleteTask-->
</isSupportRemoteBackup>
<isSupportGetRecordExistInfo>
<!--opt, xs:boolean, 支持获取录像存在信息:
/ISAPI/ContentMgmt/record/ExistInformation;
/ISAPI/ContentMgmt/record/ExistInformation/StreamID/ID;
/ISAPI/ContentMgmt/record/ExistInformation/capabilities-->
</isSupportGetRecordExistInfo>
<isSupportArchiveVolumeTask>
<!--opt, xs:boolean 支持存档卷任务配置:
/ISAPI/ContentMgmt/ArchivingVolume/Task;
/ISAPI/ContentMgmt/ArchivingVolume/Task/capabilities-->
</isSupportArchiveVolumeTask>
<ExternalDevice>
<!--opt, 外置设备存储-->
<USB>
<!--opt, USB信息 -->?
<debugLogOutput>
<!--opt, xs: boolean 调试日志开启使能 -->?
</debugLogOutput>
<isSupportCapturePackage>
<!--opt, xs:boolean,"true,false",USB抓包过滤配置功能是否支持-->?
</isSupportCapturePackage>
</USB>
</ExternalDevice>
<customProtocolNums>
<!--opt, xs:integer, IPC接入支持的自定义协议数目-->??
</customProtocolNums>
<isSupportIPCTiming>
<!--opt, xs:boolean, "true,false", 是否支持IPC定时-->??
</isSupportIPCTiming>

</RacmCap>


DEVICE_ABILITY_RapidMove

设备网络SDK开发使用手册

<RapidMove version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<RapidMoveRegionList size="4">
<RapidMoveRegion version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive-->
</sensitivityLevel>
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</RapidMoveRegion>
</RapidMoveRegionList>
<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像" -->
<isSupportMultiScene>
<!-- opt, xs:boolen -->
</isSupportMultiScene>
</RapidMove>


DEVICE_ABILITY_RecordHostCap

设备网络SDK开发使用手册

<RecordHostCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<isSupportFilmModeCfg>
<!-- opt, xs:boolean，对应电影模式配置-->
</isSupportFilmModeCfg>
<isSupportDirectedStrategyCfg>
<!-- opt, xs:boolean，对应导报策略配置-->
</isSupportDirectedStrategyCfg>
<isSupportFrameCfg>
<!-- opt, xs:boolean，对应画面边框配置-->
</isSupportFrameCfg>
<isSupportAudioEffectiveCfg>
<!-- opt, xs:boolean，对应音频效果配置-->
</isSupportAudioEffectiveCfg>
<isSupportRecordingVideoCfg>
<!-- opt, xs:boolean，对应录制视频参数-->
</isSupportRecordingVideoCfg>
<isSupportRTMPCfg>
<!-- opt, xs:boolean，对应RTMP配置-->
</isSupportRTMPCfg>
<isSupportDel>
<!-- opt, xs:boolean，删除图片功能-->
</isSupportDel>
<isSupportBackPicCfg>
<!-- opt, xs:boolean，查询背景图片-->
</isSupportBackPicCfg>
<isSupportBackPicInfo>
<!-- opt, xs:boolean，配置哪张图片作为背景图片-->
</isSupportBackPicInfo>
<isSupportPublishFile>
<!-- opt, xs:boolean，文件发布-->
</isSupportPublishFile>
<isSupportPublishProgress>
<!-- opt, xs:boolean，获取发布进度-->
</isSupportPublishProgress>
<isSupportPublishFileCfg>
<!-- opt, xs:boolean，发布文件信息-->
</isSupportPublishFileCfg>
<isSupportSearchCourse>
<!-- opt, xs:boolean，查询课程列表信息-->
</isSupportSearchCourse>
<isSupportCurriculumControl>
<!-- opt, xs:boolean，手动录像控制-->
</isSupportCurriculumControl>
<isSupportUploadBackPic>
<!-- opt, xs:boolean，上传背景图片-->
</isSupportUploadBackPic>
<isSupportGetRecordStatus>
<!-- opt, xs:boolean，查询录播主机当前状态-->
</isSupportGetRecordStatus>
<isSupportImageDiffDetection>
<!-- opt, xs:boolean，图像差分检测-->
</isSupportImageDiffDetection>
<ClassDataStatisticCfg>
<!-- opt -->
<isSupportClassDataStatisticCfg>
<!-- opt, xs:boolean，课堂大数据统计配置-->
</isSupportClassDataStatisticCfg>
<isSupportGetStatisticDataList>
<!-- opt, xs:boolean，获取统计数据列表-->
</isSupportGetStatisticDataList>
</ClassDataStatisticCfg>
<DirectedAdvanceCfg>
<!-- opt -->
<isSupportDirectedAdvanceCfg>
<!-- opt, xs:boolean，录播主机高级参数配置-->
</isSupportDirectedAdvanceCfg>
</DirectedAdvanceCfg>
<isSupportVideoSwitchConfiguration>
<!-- opt, xs:boolean，视频切换配置-->
</isSupportVideoSwitchConfiguration>
<isSupportVideoTitleConfiguration>
<!-- opt, xs:boolean，片头配置-->
</isSupportVideoTitleConfiguration>
<isSupportVideoTrailerConfiguration>
<!-- opt, xs:boolean，片尾配置-->
</isSupportVideoTrailerConfiguration>
<EducationServerConfiguration>
<!-- opt -->
<isSupportEducationServerConfiguration>
<!-- opt, xs:boolean，教育服务器对接配置-->
</isSupportEducationServerConfiguration>
</EducationServerConfiguration>
<isSupportHumanInformation>
<!-- opt, xs:boolean，人体参数配置-->
</isSupportHumanInformation>
<InterfaceDisplay>
<!-- opt -->
<liveBroadcast opt="false, ture">
<!--opt, xs:boolean，是否支持直播 -->
</liveBroadcast>
<selectBroadcast opt="false, ture">
<!--opt, xs:boolean，是否支持点播 -->
</selectBroadcast>
<directBroadcast opt="false, ture">
<<!--opt, xs:boolean，是否支持导播 -->
</directBroadcast>
<configuration opt="false, ture">
<!--opt, xs:boolean，是否支持配置 -->
</configuration>
</InterfaceDisplay>
<ImageDiffDetectionCap>
<!-- opt, 图像差分检测（课件检测）-->
<supportChannelID>
<!-- opt, xs:string，支持本功能的通道号，多个通道支持以逗号隔开，如：1,2-->
</supportChannelID>
</ImageDiffDetectionCap>
</RecordHostCap>


DEVICE_ABILITY_RecordHostCap_ImageDiffDetectionCfg

设备网络SDK开发使用手册

<ImageDiffDetectionCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled>
<!-- req, xs:boolean -->
</enabled>
<threshold min="0" max="100">
<!--req, xs: integer, 阈值-->
</threshold>
<sensitivity min="0" max="100">
<!--req, xs: integer, 灵敏度-->
</sensitivity>
<normalizedScreenSize>
<!--opt—归一化参数-->
<normalizedScreenWidth>
<!-- req, xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<RegionCoordinatesList size="">
<!-- req 区域坐标点-->
<RegionCoordinates>
<!-- Note: at least two coordinates are required -->
<positionX>
<!-- req, xs:integer-->
</positionX>
<positionY>
<!-- req, xs:integer-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
<videoInputType opt="auto,HDMI,VGA">
<!-- opt, xs:string，视频输入口类型-->
</videoInputType>
</ImageDiffDetectionCfg>


DEVICE_ABILITY_RecordHostCap_ManualCurriculum

设备网络SDK开发使用手册

<ManualCurriculum version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<recUUID min="0" max="64">
<!--req, xs: string, 手动课表UUID-->
</recUUID>
<courseName min="0" max="128">
<!--req, xs: string, 课程名称-->
</courseName>
<instructorName min="0" max="64">
<!--req, xs: string, 授课老师-->
</instructorName>
<courseDescription min="0" max="256">
<!--req, xs: string, 课程简介-->
</courseDescription>
<cmdType opt="startRecord,stopRecord,pauseRecord,continueRecord,startShield,stopShield">
<!--req, xs: string, 命令类型-->
</cmdType>
</ManualCurriculum>


DEVICE_ABILITY_RecordHostCap_PublishFileCfg

设备网络SDK开发使用手册

<PublishFileCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<fileID min="" max="">
<!--req, xs: string, 文件名ID-->
</fileID>
<startTime>
<!-- opt, ro,xs:time, ISO8601 time 开始时间-->
</startTime>
<endTime>
<!-- opt, ro,xs:time, ISO8601 time 结束时间-->
</endTime>
<courseName min="" max="">
<!--req, xs: string, 课程名称-->
</courseName>
<instructorName min="" max="">
<!--req, xs: string, 授课老师-->
</instructorName>
<courseDescription min="0" max="256">
<!--req, xs: string, 课程简介-->
</courseDescription>
</PublishFileCfg>


DEVICE_ABILITY_RecordingVideoCfg

设备网络SDK开发使用手册

<RecordingVideoCfg version="2.0">
<videoExportType opt="mp4,avi">
<!--req, xs:string,导出类型 -->
</videoExportType>
</RecordingVideoCfg>


DEVICE_ABILITY_RecordPassBackBasicCfg

设备网络SDK开发使用手册

<RecordPassBackBasicCfg version="2.0">
<beginTime min="" max="">
<!--opt, xs:integer, unit: min, 开始时间-->
</beginTime>
<endTime min="" max="">
<!--opt, xs:integer, unit: min, 结束时间-->
</endTime>
<maxTotalConcurrenceNum min="" max="">
<!--opt, xs:integer, 并发回传路数上限，针对的是编码器路数，不是回传任务条数 -->
</maxTotalConcurrenceNum>
<maxDvrConcurrenceNum min="" max="">
<!--opt, xs:integer, 单台DVR并发回传通道数上限 -->
</maxDvrConcurrenceNum>
</RecordPassBackBasicCfg>


DEVICE_ABILITY_RecordPassBackHistoryPlanCfg

设备网络SDK开发使用手册

<RecordPassBackHistoryPlanCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<streamID min="1" max="32">
<!--req, xs: string, 流ID-->
</streamID>
<channel min="1" max="1024">
<!--req, xs: integer, 通道号, 0xffffffff表示无效-->
</channel>
<enable opt="true,false">
<!--req, xs: boolean, 是否启用-->
</enable>
<maxSchedulePeriodOfDay min="1" max="8">
<!--req, xs: integer, 单日最多可配8个计划时间段-->
</maxSchedulePeriodOfDay>
<ScheduleActionList size="56">
<!--req, 计划时间段列表-->
<ScheduleAction>
<id min="1" max="56">
<!--req, xs: integer, 时间段序号-->
</id>
<ScheduleActionStartTime>
<!--req, 回传任务时间段: 开始时间-->
<DayOfWeek opt="Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday">
<!--req, xs: string, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日-->
</DayOfWeek>
<TimeOfDay>
<!--req, xs: string eg: 08:00:00-->
</TimeOfDay>
</ScheduleActionStartTime>
<ScheduleActionEndTime>
<!--req, 回传任务时间段: 结束时间，结束时间和开始时间对应同一天-->
<DayOfWeek opt="Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday">
<!--req, xs: string, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日-->
</DayOfWeek>
<TimeOfDay>
<!--req, xs: string eg: 08:00:00-->
</TimeOfDay>
</ScheduleActionEndTime>
</ScheduleAction>
</ScheduleActionList>
</RecordPassBackHistoryPlanCfg>


DEVICE_ABILITY_RefreshFrame

设备网络SDK开发使用手册

<RefreshFrame version="2.0">
<streamType opt="mainStream,subStream,Stream3">
<!--req, xs:string -->
</streamType>
</RefreshFrame>


DEVICE_ABILITY_RegionClip

设备网络SDK开发使用手册

<RegionClip version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro, xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro, xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<regionType opt="rectangle,convexPolygon,concavePolygon">
<!--req ro="", xs:string -->
</regionType>
<videoResolutionWidth opt="704">704</videoResolutionWidth>
<videoResolutionHeight opt="576">576</videoResolutionHeight>
<ClipRegionList size="1">
<ClipRegion>
<RegionCoordinatesList>
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</ClipRegion>
</ClipRegionList>
</RegionClip>


DEVICE_ABILITY_RegionEntrance

设备网络SDK开发使用手册

<RegionEntrance version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req, 进入区域侦测能力集-->
<id>
<!-- req, xs:string, 通道号-->
</id>
<enabled>
<!-- req, xs:boolean, 是否启用-->
</enabled>

<normalizedScreenSize>
<!-- req, ro, 归一化坐标 -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>

<RegionEntranceRegionList size="4">
<!--req, 进入区域侦测的区域列表-->
<RegionEntranceRegion>
<id>
<!--req, xs:string, 侦测区域序号-->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive, 灵敏度-->
</sensitivityLevel>
<RegionCoordinatesList size="4">
<!--req, 侦测区域坐标列表-->
<RegionCoordinates>
<!--req, 侦测区域坐标-->
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</RegionEntranceRegion>
</RegionEntranceRegionList>

<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像", 互斥能力-->

<isSupportMultiScene>
<!--opt, xs:boolen, 是否支持多场景-->
</isSupportMultiScene>

<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"是否支持人体去误报,支持返回true,不支持不返回"-->
</isSupportHumanMisinfoFilter>

<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"是否支持车辆去误报,支持返回true,不支持不返回"-->
</isSupportVehicleMisinfoFilter>

</RegionEntrance>


DEVICE_ABILITY_RegionExiting

设备网络SDK开发使用手册

<RegionExiting version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req, 离开区域侦测能力集-->
<id>
<!--req, xs:string, 通道号-->
</id>
<enabled>
<!--req, xs:boolean, 是否启用-->
</enabled>
<normalizedScreenSize>
<!--req, ro, 归一化坐标-->
<normalizedScreenWidth>
<!--req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>

<RegionExitingRegionList size="4">
<!--req, 离开区域侦测的区域列表-->
<RegionExitingRegion>
<id>
<!--req, xs:string, 侦测区域序号-->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive, 灵敏度-->
</sensitivityLevel>
<RegionCoordinatesList size="4">
<!--req, 侦测区域坐标列表-->
<RegionCoordinates>
<!--req, 侦测区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</RegionExitingRegion>
</RegionExitingRegionList>

<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像", 互斥能力-->

<isSupportMultiScene>
<!--opt, xs:boolen, 是否支持多场景-->
</isSupportMultiScene>

<isSupportHumanMisinfoFilter>
<!--opt, xs:boolean,"是否支持人体去误报,支持返回true,不支持不返回"-->
</isSupportHumanMisinfoFilter>

<isSupportVehicleMisinfoFilter>
<!--opt, xs:boolean,"是否支持车辆去误报,支持返回true,不支持不返回"-->
</isSupportVehicleMisinfoFilter>

</RegionExiting>


DEVICE_ABILITY_ResolutionSwitch

设备网络SDK开发使用手册

<ResolutionSwitch>
<ResolutionType opt="all,20:9,20:6">
<!--opt,xs:string, 分辨率模式-->
</ResolutionType>
</ResolutionSwitch>


DEVICE_ABILITY_ReviseGPS

设备网络SDK开发使用手册

<ReviseGPS version="2.0">
<longitudeType opt="E,W">
<!--req,xs:string, 经度类型-->
</longitudeType>
<latitudeType opt="S,N">
<!--req,xs:string, 纬度类型-->
</latitudeType>
<Longitude>
<!--req,"经度"-->
<degree>
<!--req,xs:interge, 度-->
</degree>
<minute>
<!--req,xs:interge, 分-->
</minute>
<sec>
<!--req,xs:float,"精确到小数点后6位", 秒-->
</sec>
</Longitude>
<Latitude>
<!--req,"纬度"-->
<degree>
<!--req,xs:interge, 度-->
</degree>
<minute>
<!--req,xs:interge, 分-->
</minute>
<sec>
<!--req,xs:float,"精确到小数点后6位", 秒-->
</sec>
</Latitude>
</ReviseGPS>


DEVICE_ABILITY_RTMPCfg

设备网络SDK开发使用手册

<RTMPCfg version="2.0">
<id>
<!--req, xs:string-->
</id>
<enabled>
<!--req, xs: boolean, 是否启用RTMP，"ture,false"-->
</enabled>
<url max="128">
<!--req, xs:string, url地址 -->
</url>
<packetLen>
<!--opt, xs:integer, 包长 -->
</packetLen>
</RTMPCfg>


DEVICE_ABILITY_RWLock

设备网络SDK开发使用手册

<RWLock version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<enabled>
<!--req,xs:boolen, 使能-->
</enabled>
<passwd min="" max="">
<!-- req,wo, xs:string, 新密码-->
</passwd>
<originalPasswd min="" max="">
<!-- opt,wo, xs:string, 原始密码 -->
</originalPasswd>
<SDCardType opt="HIK">
<!--opt,ro,xs:string, SD卡厂商类型-->
</SDCardType>
</RWLock>


DEVICE_ABILITY_Schedule

设备网络SDK开发使用手册

<Schedule>
<!--req, 布防时间能力集-->
<id>
<!--req, xs:string; id, 序号 -->
</id>
<eventType>
<!--opt, xs:string, 事件类型, "IO(信号量报警),VMD(移动侦测),videoloss(视频丢失),PIR,linedetection(越界侦测),
fielddetection(区域入侵),audioexception(音频异常),facedetection(人脸侦测),regionEntrance(进入区域),
regionExiting(离开区域),loitering(徘徊侦测),group(人员聚集),rapidMove(快速运动侦测),parking(停车侦测),
unattendedBaggage(物品遗留侦测),attendedBaggage(物品拿取侦测),storageDetection(存储健康检测),
shipsDetection(船只检测),fireDetection(火点检测),humanAttribute(人体属性),faceContrast(人脸比对),
humanRecognition(人体目标识别),personDensityDetection(人员密度),faceLib(人脸比对库),framesPeopleCounting(区域人数统计),
studentsStoodUp(学生起立检测),safetyHelmetDetection(安全帽检测)，personqueueDetection(人员排队检测)"-->
</eventType>
<inputIOPortID>
<!--ro, dep, xs:string; id, IO输入口 -->
</inputIOPortID>
<outputIOPortID>
<!--ro, dep, xs:string; id, IO输出口-->
</outputIOPortID>
<videoInputChannelID>
<!--ro, dep, xs:string; id, 视频输入通道-->
<!--当事件类型为“safetyHelmetDetection(安全帽检测)”时，该参数赋值为safetyHelmetDetection-通道号，如：safetyHelmetDetection-1（视频通道号为1）-->
</videoInputChannelID>
<TimeBlockList size="8">
<!--req, 布防时间段列表 -->
<TimeBlock>
<dayOfWeek>
<!--opt, xs:integer, ISO8601 weekday number, 1=Monday, … -->
</dayOfWeek>
<TimeRange>
<!--req,布防时间段-->
<beginTime>
<!--req, xs:time, ISO8601 time, 开始时间 -->
</beginTime>
<endTime>
<!--req, xs:time, ISO8601 time, 结束时间-->
</endTime>
</TimeRange>
</TimeBlock>
</TimeBlockList>
<HolidayBlockList>
<!--opt, 假日布防时间段列表-->
<TimeBlock>
<TimeRange>
<!--req,布防时间段-->
<beginTime>
<!--req, xs:time, ISO8601 time, 开始时间-->
</beginTime>
<endTime>
<!--req, xs:time, ISO8601 time, 结束时间-->
</endTime>
</TimeRange>
</TimeBlock>
</HolidayBlockList>
</Schedule>


DEVICE_ABILITY_SecurityCap

设备网络SDK开发使用手册

<SecurityCap version="2.0" xmlns=”http://www.isapi.org/ver20/XMLSchema”>
<supportUserNums>
<!--opt, xs:integer-->
</supportUserNums>
<userBondIpNums>
<!--opt, xs:integer-->
</userBondIpNums>
<userBondMacNums>
<!--opt, xs:integer -->
</userBondMacNums >
<issupIllegalLoginLock>
<!--opt, xs: Boolean,”true, false” -->
</issupIllegalLoginLock>
<isSupportOnlineUser>
<!--opt, xs: Boolean,”true,false” -->
</isSupportOnlineUser>
<isSupportAnonymous>
<!--opt, xs: Boolean,”true,false” -->
</isSupportAnonymous>
<securityVersion>
<!--opt, xs: int,”1,2”,表示加密能力集，每一个版本包括两个方面：加密算法及加密的节点范围。目前1表示AES128加密，2表示AES256加密，加密范围在各个协议中描述。 -->
</securityVersion>
<keyIterateNum>
<!--dep,xs:integer,depend on securityVersion,取值一般是100~1000-->
</keyIterateNum>
<isSupportUserCheck>
<!--dep,opt,xs:boolean,增加能力，表示是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验，此功能只在支持敏感信息加密的版本上有效,即depend on securityVersion-->
</isSupportUserCheck>
<isSupportGUIDFileDataExport>
<!-- opt, xs: Boolean,"true,false" -->
</isSupportGUIDFileDataExport>
<isSupportSecurityQuestionConfig>
<!-- opt, xs: Boolean,"true,false" -->
</isSupportSecurityQuestionConfig>
<isSupportGetOnlineUserListSC>
<!-- opt, xs: Boolean,"true,false" -->
</isSupportGetOnlineUserListSC>
<SecurityLimits>
<!-- opt -->
<LoginPasswordLenLimit min="1" max="16">
<!-- opt -->
</LoginPasswordLenLimit>
<SecurityAnswerLenLimit min="1" max="128">
<!-- opt -->
</SecurityAnswerLenLimit>
</SecurityLimits>
<isSupportConfigFileImport>
<!-- opt, xs: Boolean,"true" "支持返回，不支持不返回"-->
</isSupportConfigFileImport>
<isSupportConfigFileExport>
<!-- opt, xs: Boolean,"true" "支持返回，不支持不返回"-->
</isSupportConfigFileExport>
<cfgFileSecretKeyLenLimit min="1" max="">
<!-- opt -->
</cfgFileSecretKeyLenLimit>
</SecurityCap>


DEVICE_ABILITY_SensorCap

设备网络SDK开发使用手册

<SensorCap>
<maxSensorNum>
<!--opt, xs:integer, -->
</maxSensorNum>
<isSupportMosaicPattern>
<!--opt, xs:boolean -->
</isSupportMosaicPattern>
<isSupportReset>
<!--opt, xs:boolean -->
</isSupportReset>
<isSupportSingleReset>
<!--opt, xs:boolean -->
</isSupportSingleReset>
</SensorCap>


SensorPortList XML Block

SensorPortList传感器能力集XML描述

<SensorPortList version="2.0">
<SensorPort/>
<!-- opt -->
</SensorPortList>

<SensorPort version="2.0">
<id><!-- req, xs:string;id "Terminal1-4,Socket1-2,Analog1-8"传感器id--></id>
<enabled><!-- req, xs:boolean 传感器是否使能--></enabled>
<name><!-- req, xs:string, 1-32Bytes 传感器名称--> </name>
<samplingTime><!-- req, xs:integer, 1-3600秒 传感器采样时间--></samplingTime>
<AnalogRegions><!-- dep 模拟量传感器参数--></AnalogRegions>
<ACTerminal><!-- dep 上电端子参数--></ACTerminal>
<SocketRegions><!-- dep 上电插座参数--></SocketRegions>
</SensorPort>

<AnalogRegions version="2.0">
<type><!--req,xs:string,"temperature, humidity, wind speed, gas, AC voltage, AC current, DC voltage, DC current, water pressure, pressure transmitter, flow transmitter, water leakage, intergrated temperature detector, isolation temperature detector, residual chlorine 传感器检测的类型，即实际值代表的类型--></type>
<maxValue><!-- req, xs:integer 量程上限--> </maxValue>
<minValue><!-- req, xs:integer 量程下限--> </minValue>
<sensitivity><!-- req, xs:integer, 0.01-1 灵敏度--></sensitivity>
<unit><!--opt,xs:string,"℃, V, mA…, 0-32Bytes" 实际值的单位--></unit>
<Region><!-- dep -->
<id><!-- req, xs:integer --></id>
<regionMin><!-- req, xs:integer--></regionMin>
<regionMax><!-- req, xs:integer--></regionMax>
<normalOrExcept>
<!-- req, xs:integer 1-normal, 2-exception-->
</normalOrExcept>
</Region>
</AnalogRegions>

<ACTerminal>
<isPowerOn><!-- req, xs:boolean true-on, false-off 是否通电--></isPowerOn>
<normalOrExcept><!-- req, xs:integer 1-normal, 2-exception 本区段是正常还是异常状态--></normalOrExcept>
</ACTerminal>

<SocketRegions version="2.0">
<CurrentRegion><!-- opt 电流区间参数-->
<id><!-- req, xs:integer --> </id>
<regionMin><!-- req, xs:integer--></regionMin>
<regionMax><!-- req, xs:integer--></regionMax>
<normalOrExcept>
<!-- req, xs:integer 1-normal, 2-exception-->
</normalOrExcept>
</CurrentRegion>

<VoltageRegion><!-- opt 电压区间参数-->
<id><!-- req, xs:integer --> </id>
<regionMin><!-- req, xs:integer--></regionMin>
<regionMax><!-- req, xs:integer--></regionMax>
<normalOrExcept>
<!-- req, xs:integer 1-normal, 2-exception-->
</normalOrExcept>
</VoltageRegion>

<PowerStatus><!-- opt 是否通电状态-->
<isPowerOn><!-- req, xs:boolean true-on, false-off--></isPowerOn>
<normalOrExcept>
<!-- req, xs:integer 1-normal, 2-exception-->
</normalOrExcept>
</PowerStatus>
</SocketRegions>

See Also

NET_DVR_STD_ABILITY


DEVICE_ABILITY_SetupCalibrationCap

设备网络SDK开发使用手册

<SetupCalibrationCap>
<!--req, 架设标定校验能力集-->
<calibrateType opt="automatic,manual,no,smart">
<!--opt,xs:string, 标定类型: automatic-自动标定, manual-手动标定, no-未进行标定, smart-智能标定-->
</calibrateType>
<ManualCalib>
<!--opt,dep if<calibrateType>manual</calibrateType>-->
<height min="" max="">
<!--opt,xs:float, unit:cm, 高度, 单位: 厘米-->
</height>
<tiltAngle min="" max="">
<!--opt, xs:float, 俯仰角, 单位: 度-->
</tiltAngle>
<heelAngle min="" max="">
<!--opt, xs:float, 倾斜角, 单位: 度-->
</heelAngle>
</ManualCalib>
<AutomaticCalib>
<!--opt,dep if<calibrateType>automatic</calibrateType>-->
<CalibRegion>
<!--opt,标定区域(绿框)-->
<RegionCoordinatesList size="">
<RegionCoordinates>
<!--req, 区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</CalibRegion>
</AutomaticCalib>
<isSupportCalibrationCheck>
<!--opt,xs:boolen, 是否支持标定校验-->
</isSupportCalibrationCheck>
<intelligentType opt="couting,humanAttribute,behaviorRule">
<!--opt,string, 标定的智能类型：couting-客流, humanAttribute-人体属性, behaviorRule-异常行为识别-->
</intelligentType>
<SetupCalibrationRecommendation>
<tiltAngle min="" max="">
<!-- opt, xs:float range:(-180°,180°),"俯仰角"-->
</tiltAngle>
<heelAngle min="" max="">
<!-- opt, xs:float range:(-180°,180°)，"倾斜角"-->
</heelAngle>
</SetupCalibrationRecommendation>
</SetupCalibrationCap>


DEVICE_ABILITY_ShipsDetectionCap

设备网络SDK开发使用手册

<ShipsDetectionCap version="2.0">
<ShipsDetection>
<id min="" max="">
<!--req, xs:string, 规则ID -->
</id>
<enabled opt="true,false">
<!--req, xs:boolean, 使能 -->
</enabled>
<lookDownUpAngle min="" max="">
<!--req, xs:float, 设备俯仰角度，精确到小数点后一位-->
</lookDownUpAngle>
<horizontalHeight min="" max="">
<!--req, xs:float, 设备水平高度，精确到小数点后一位 -->
</horizontalHeight>
<normalizedScreenSize>
<normalizedScreenWidth>
<!--req, xs:integer, 归一化宽度 -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, xs:integer, 归一化高度-->
</normalizedScreenHeight>
</normalizedScreenSize>
<ShipsDetectionRegionList size="4">
<!--opt, 船只检测区域列表-->
<ShipsDetectionRegion>
<id>
<!--req, xs:string, 区域ID-->
</id>
<enabled>
<!--req, xs:boolean, 使能-->
</enabled>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1~100, 0 is the least sensitive, 灵敏度参数-->
</sensitivityLevel>
<frameOverlayEnabled>
<!--req, xs:boolean, 视频是否叠加检测框-->
</frameOverlayEnabled >
<RegionCoordinatesList size="10">
<!--opt, 区域坐标点列表 -->
<RegionCoordinates>
<!--opt, 坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标 -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
<TriggerLineCoordinatesList size="2">
<!--opt, 触发线坐标点列表-->
<TriggerLineCoordinates>
<!--opt, 触发线坐标点-->
<positionX>
<!-- req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate, Y坐标-->
</positionY>
</TriggerLineCoordinates>
</TriggerLineCoordinatesList>
<TriggerLineList size="16">
<!--opt -->
<TriggerLine>
<id>
<!--req, xs:integer, "序号，从1开始" -->
</id>
<enabled opt="true,false">
<!--req, xs:boolean -->
</enabled>
<sensitivity min="1" max="100" default="50">
<!--req, xs:integer, 1-100, 灵敏度-->
</sensitivity>
<MinimumTargetSize>
<!--req, "最小目标尺寸" -->
<width min="0" max="1000" default="52">
<!--req, xs:integer, "宽，0-1000，默认52" -->
</width>
<height min="0" max="1000" default="35">
<!--req, xs:integer, "高，0-1000， 默认35" -->
</height>
</MinimumTargetSize>
<TriggerLineCoordinatesList size="2">
<!--req -->
<TriggerLineCoordinates>
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</TriggerLineCoordinates>
</TriggerLineCoordinatesList>
</TriggerLine>
</TriggerLineList>
</ShipsDetectionRegion>
</ShipsDetectionRegionList>
</ShipsDetection>
<isSupportShipsDetectionCount>
<!--opt, xs:boolen, 是否支持船只计数-->
</isSupportShipsDetectionCount>
</ShipsDetectionCap>


DEVICE_ABILITY_SlaveCamera

设备网络SDK开发使用手册

<SlaveCamera version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<SlaveCameraInfoList>
<SlaveCameraInfo>
<id min="1" max="4">
<!--req, xs:integer, 从摄像机ID-->
</id>
<serverAddress>
<addressingFormatType opt="ipaddress,hostname">
<!--req, xs:string, "ipaddress,hostname", 设备地址类型：ipaddress-IP方式, hostname-域名方式-->
</addressingFormatType>
<hostName max="">
<!--dep, xs:string, 域名，不能为中文 -->
</hostName>
<ipAddress>
<!--dep, xs:string, IPv4地址 -->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
</serverAddress>
<userName max="">
<!--req, xs:string, 用户名 -->
</userName>
<password max= "">
<!--req, xs:string, 密码-->
</password>
<port min="" max="">
<!--req, xs:integer, 端口号-->
</port>
<loginStatus opt="login,logout">
<!--req, xs:string, 登录状态 -->
</loginStatus>
</SlaveCameraInfo>
</SlaveCameraInfoList>
</SlaveCamera>


DEVICE_ABILITY_SlaveCameraCalibrating

设备网络SDK开发使用手册

<SlaveCameraCalibrating version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<CalibratingMode opt="auto,manual">
<!-- req, xs:string "auto,manual", auto-自动, manual-手动-->
</CalibratingMode>
<trackingRatio opt="support">
<!-- opt, xs:string, 是否支持跟踪倍率设置：support-支持-->
</trackingRatio>
<normalizedScreenSize>
<!-- req, ro, 坐标点参照比（归一化比例）-->
<normalizedScreenWidth>
<!-- req, ro,xs:integer-->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<CalibratingList min="4" max="6">
<!-- dep, 标定点列表 -->
<Calibrating version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id min="" max="">
<!-- req, xs:string, 标定点ID -->
</id>
<CalibratingCoordinates>
<!-- opt, manual-wr auto-ro, 标定点坐标 -->
<positionX>
<!-- req, xs:integer;coordinate, X轴坐标, 归一化值, 取值范围[0.001,1]-->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate, Y轴坐标, 归一化值, 取值范围[0.001,1]-->
</positionY>
</CalibratingCoordinates>
<AbsoluteHigh>
<!-- opt, ro, PTZ位置-->
<elevation>
<!-- opt, xs:integer, -900..2700, 仰角 -->
</elevation>
<azimuth>
<!-- opt, xs:integer, 0..3600, 方位角-->
</azimuth>
<absoluteZoom>
<!-- opt, xs:integer,1.. 1000, 变倍倍率-->
</absoluteZoom>
</AbsoluteHigh>
<horValue min="" max="">
<!-- opt,xs:integer -->
</horValue>
<verValue min="" max="">
<!-- opt,xs:integer -->
</verValue>
</Calibrating>
</CalibratingList>
<ManualTrackRatio>
<coefficient>
<!--opt, xs:integer, 1..60, 手动跟踪倍率 -->
</coefficient>
</ManualTrackRatio>
<sceneID min="" max="">
<!--opt, xs:integer, 场景号-->
</sceneID>
<CalibPanoramicPic>
<!--opt, xs:boolen, "重新获取设备标定图片，非Flash中图片"-->
<channel opt="2,3">
<!--req,xs:string, 通道号-->
</channel>
</CalibPanoramicPic>
</SlaveCameraCalibrating>


DEVICE_ABILITY_SmartCalibrationCap

设备网络SDK开发使用手册

<SmartCalibrationCap version="2.0">
<eventType opt="linedetection,fielddetection,regionEntrance,regionExiting,loitering,rapidMove,parking,unattendedBaggage,attendedBaggage">
<!--req,ro,事件类型: linedetection-越界侦测, fielddetection-入侵区域侦测, regionEntrance-进入区域侦测, regionExiting-离开区域侦测,
loitering-徘徊侦测, rapidMove-快速运动侦测, parking-停车侦测, unattendedBaggage-物品遗留侦测, attendedBaggage-物品拿取侦测-->
</eventType>
<FilterSize>
<!--opt,标定过滤尺寸-->
<MaxTargetSize size=""><!--opt,"最大目标尺寸"-->
<RegionCoordinatesList size="">
<RegionCoordinates>
<!--req,区域坐标点-->
<positionX> <!--req, xs:integer;coordinate, X轴坐标--> </positionX>
<positionY> <!--req, xs:integer;coordinate, Y轴坐标--> </positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</MaxTargetSize>
<MinTargetSize size=""><!--opt,"最小目标尺寸"-->
<RegionCoordinatesList size="">
<RegionCoordinates> <!--req, 区域坐标点-->
<positionX> <!--req, xs:integer;coordinate, X轴坐标--> </positionX>
<positionY> <!--req, xs:integer;coordinate, Y轴坐标--> </positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</MinTargetSize>
</FilterSize>
</SmartCalibrationCap>


DEVICE_ABILITY_SmartCap

设备网络SDK开发使用手册

<SmartCap version="2.0">
<isSupportROI>
<!--opt, xs:boolen, ROI感兴趣编码-->
</isSupportROI>
<isSupportFaceDetect>
<!--opt, xs:boolen, 人脸侦测-->
</isSupportFaceDetect>
<isSupportFieldDetection>
<!--opt, xs:boolen, 区域入侵侦测-->
</isSupportFieldDetection>
<isSupportDefocusDetection>
<!--opt, xs:boolen, 虚焦侦测-->
</isSupportDefocusDetection>
<isSupportAudioDetection>
<!--opt, xs:boolen, 音频异常侦测-->
</isSupportAudioDetection>
<isSupportSceneChangeDetection>
<!--opt, xs:boolen, 场景变更侦测-->
</isSupportSceneChangeDetection>
<isSupportLineDetection>
<!--opt, xs:boolen, 越界侦测-->
</isSupportLineDetection>
<isSupportRegionEntrance>
<!--opt, xs:boolen, 进入区域侦测-->
</isSupportRegionEntrance>
<isSupportRegionExiting>
<!--opt, xs:boolen, 离开区域侦测-->
</isSupportRegionExiting>
<isSupportLoitering>
<!--opt, xs:boolen, 徘徊侦测-->
</isSupportLoitering>
<isSupportGroup>
<!--req, xs:string,"true,false", 人员聚集侦测-->
</isSupportGroup>
<isSupportRapidMove>
<!--req, xs:string,"true,false", 快速运动侦测-->
</isSupportRapidMove>
<isSupportParking>
<!--opt, xs:boolen, 停车侦测-->
</isSupportParking>
<isSupportUnattendedBaggage>
<!--opt, xs:boolen, 物品遗留侦测-->
</isSupportUnattendedBaggage>
<isSupportAttendedBaggage>
<!--req,xs:string,"true,false",物品拿取侦测-->
</isSupportAttendedBaggage>
<isSupportPeopleDetection>
<!--opt, xs:boolen, 人员侦测-->
</isSupportPeopleDetection>
<isSupportStorageDetection>
<!--opt, xs:boolen, 存储健康检测-->
</isSupportStorageDetection>
<isSupportShipsDetection>
<!--opt, xs:boolen, 船只检测-->
</isSupportShipsDetection>
<isSupportChannelResource>
<!--opt, xs:boolen, Smart通道资源配置-->
</isSupportChannelResource>
<isSupportAnalysisUnitSwitch opt="true,false">
<!--opt, xs:boolen, 分析单元切换能力-->
</isSupportAnalysisUnitSwitch>
</SmartCap>


DEVICE_ABILITY_SmokeShieldMask

设备网络SDK开发使用手册

<SmokeShieldMask version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 烟雾区域屏蔽能力集-->
<enabled>
<!--req, xs:boolean, 烟雾区域屏蔽功能使能-->
</enabled>

<normalizedScreenSize>
<!--opt, 归一化坐标-->
<normalizedScreenWidth>
<!--req, xs:integer, 归一化坐标宽度-->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, xs:integer, 归一化坐标高度-->
</normalizedScreenHeight>
</normalizedScreenSize>

<SmokeShieldMaskRegionList size = "24">
<!--opt, 烟雾屏蔽区域列表-->
<SmokeShieldMaskRegion>
<!--opt, 单个烟雾屏蔽区域-->
<id min="1" max="24">
<!--req, xs:integer, 烟雾屏蔽区域ID编号-->
</id>
<showEnabled>
<!--req,xs:boolean, 区域显示使能(该节点为只读, 若该使能为false则上层不显示该区域相关信息, 为True则显示该区域相关信息-->
</showEnabled>
<enabled>
<!--req,xs:boolean, 单个烟雾屏蔽区域使能-->
</enabled>
<maskName min="0" max="32">
<!--opt, xs:string, 屏蔽区域名称长度-->
</maskName>
<shieldZoom min="0" max="32">
<!--opt, xs:integer, 屏蔽倍率, 屏蔽大于等于该值的光学变倍-->
</shieldZoom>
<regionType opt="quadrilateral">
<!--opt, xs:string, 区域类型: quadrilateral-四边形-->
</regionType>
<maskType opt="gray,red,yellow,blue,orange,green,transparent,half-transparent,mosaic">
<!--opt, xs:string, 屏蔽区域颜色类型: gray-灰色, red-红色, yellow-黄色, blue-蓝色, orange-橙色, green-绿色, transparent-透明, half-transparent-半透明, mosaic-马赛克-->
</maskType>

<RegionCoordinatesList>
<!--req, 屏蔽区域坐标点列表-->
<RegionCoordinates>
<!--req, 屏蔽区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</SmokeShieldMaskRegion>
</SmokeShieldMaskRegionList>
<shieldAreaTransparency opt="no_transparent,transparent,semi_transparent">
<!-- opt, xs:string, 屏蔽区域透明度-->
</shieldAreaTransparency>
<displayShieldAreaEnabled opt="true,false">
<!-- opt ,xs:boolean opt="true,false"， 码流叠加屏蔽区域使能-->
</displayShieldAreaEnabled>
</SmokeShieldMask>


DEVICE_ABILITY_SoftwareService

设备网络SDK开发使用手册

<SoftwareService version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req,软件服务能力集，对应NET_DVR_SOFTWARE_SERVICE_CFG配置功能-->
<ThirdStream>
<!--opt, 三码流-->
<enabled opt="true,false">
<!--req,xs:boolean, 是否启用三码流-->
</enabled>
<thirdStreamPrompt opt="prompt1">
<!--req,xs:string,启用三码流之后的提示信息，prompt1: "启用三码流后将不支持旋转、宽动态、h264+功能。重启后生效。"-->
</thirdStreamPrompt>
</ThirdStream>
</SoftwareService>


DEVICE_ABILITY_StreamChannel

设备网络SDK开发使用手册

<StreamingChannel version="2.0">
<id>
<!--req, xs:string;id -->
</id>
<channelName>
<!--req, xs:string, 通道名称 -->
</channelName>
<enabled>
<!--req, xs:boolean, 使能 -->
</enabled>
<Transport>
<!--req, 传输能力 -->
<maxPacketSize>
<!-- opt, xs:integer -->
</maxPacketSize>
<audioPacketLength>
<!-- opt, xs:integer -->
</audioPacketLength>
<audioInboundPacketLength>
<!-- opt, xs:integer -->
</audioInboundPacketLength>
<audioInboundPortNo>
<!-- opt, xs:integer -->
</audioInboundPortNo>
<videoSourcePortNo>
<!-- opt, xs:integer -->
</videoSourcePortNo>
<audioSourcePortNo>
<!-- opt, xs:integer -->
</audioSourcePortNo>
<ControlProtocolList>
<!-- req -->
<ControlProtocol>
<!-- req -->
<streamingTransport>
<!-- req, xs:string, "HTTP,RTSP,SHTTP" -->
</streamingTransport>
</ControlProtocol>
</ControlProtocolList>
<Unicast>
<!-- opt -->
<enabled>
<!-- req, xs:boolean -->
</enabled>
<interfaceID>
<!-- opt, xs:string -->
</interfaceID>
<rtpTransportType>
<!-- opt, xs:string, "RTP/UDP,RTP/TCP" -->
</rtpTransportType>
</Unicast>
<Multicast>
<!-- opt -->
<enabled>
<!-- req, xs:boolean -->
</enabled>
<userTriggerThreshold>
<!-- opt, xs:integer -->
</userTriggerThreshold>
<destIPAddress>
<!-- dep, xs:string -->
</destIPAddress>
<videoDestPortNo>
<!-- opt, xs:integer -->
</videoDestPortNo>
<audioDestPortNo>
<!-- opt, xs:integer -->
</audioDestPortNo>
<destIPv6Address>
<!-- dep, xs:string -->
</destIPv6Address>
<ttl>
<!-- opt, xs:integer -->
</ttl>
</Multicast>
<Security>
<!-- opt -->
<enabled>
<!-- req, xs:boolean -->
</enabled>
</Security>
</Transport>
<Video>
<!--opt, 视频流能力 -->
<enabled>
<!-- req, xs:boolean -->
</enabled>
<videoInputChannelID>
<!-- req, xs:string;id -->
</videoInputChannelID>
<videoCodecType>
<!-- req, xs:string, "MPEG4,MJPEG,3GP,H.264,HK.264,MPNG,SVAC" -->
</videoCodecType>
<videoScanType>
<!-- opt, xs:string, "progressive,interlaced" -->
</videoScanType>
<videoResolutionWidth>
<!-- req, xs:integer -->
</videoResolutionWidth>
<videoResolutionHeight>
<!-- req, xs:integer -->
</videoResolutionHeight>
<videoPositionX>
<!-- opt, xs:integer -->
</videoPositionX>
<videoPositionY>
<!-- opt, xs:integer -->
</videoPositionY>
<videoQualityControlType>
<!-- opt, xs:string, "CBR,VBR" -->
</videoQualityControlType>
<constantBitRate>
<!-- dep, xs:integer, in kbps -->
</constantBitRate>
<fixedQuality>
<!-- opt, xs:integer, percentage, 0..100 -->
</fixedQuality>
<vbrUpperCap>
<!-- dep, xs:integer, in kbps -->
</vbrUpperCap>
<vbrLowerCap>
<!-- dep, xs:integer, in kbps -->
</vbrLowerCap>
<maxFrameRate>
<!-- req, xs:integer, maximum frame rate x100 -->
</maxFrameRate>
<keyFrameInterval>
<!-- opt, xs:integer, milliseconds -->
</keyFrameInterval>
<rotationDegree>
<!-- opt, xs:integer, degrees, 0..360 -->
</rotationDegree>
<mirrorEnabled>
<!-- opt, xs:boolean -->
</mirrorEnabled>
<snapShotImageType>
<!-- opt, xs:string, "JPEG,GIF,PNG" -->
</snapShotImageType>
<Mpeg4Profile>
<!--dep, xs:string, "SP,ASP"-->
</Mpeg4Profile>
<H264Profile>
<!-- dep, xs:string, "Baseline,Main,High, Extended" -->
</H264Profile>
<SVACProfile>
<!-- dep, xs:string, "Baseline,Main,High,Extended" -->
</SVACProfile>
<GovLength>
<!--opt, xs:integer -->
</GovLength>
<SVC>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<SVCMode>
<!--dep, xs:string, "manual,auto" -->
</SVCMode>
</SVC>
<smoothing>
<!-- opt, xs:integer-->
</smoothing>
</Video>
<Audio>
<!-- opt, 音频流能力 -->
<enabled>
<!-- req, xs:boolean, 使能 -->
</enabled>
<audioInputChannelID>
<!-- req, xs:string;id, 音频输入通道号-->
</audioInputChannelID>
<audioCompressionType>
<!-- req, xs:string, "G.711alaw,G.711ulaw,G.726,G.729,G.729a,G.729b,PCM,MP3,AC3,AAC,ADPCM，MP2L2", 音频编码类型-->
</audioCompressionType>
<audioInboundCompressionType>
<!-- opt, xs:string, "G.711alaw,G.711ulaw,G.726,G.729,G.729a,G.729b,PCM,MP3,AC3,AAC,ADPCM,MP2L2", 音频输入类型-->
</audioInboundCompressionType>
<audioBitRate>
<!-- opt, xs:integer, in kbps, 音频码率-->
</audioBitRate>
<audioSamplingRate>
<!-- opt, xs:float, in kHz, 音频采样率-->
</audioSamplingRate>
<audioResolution>
<!-- opt, xs:integer, in bits, 音频位数 -->
</audioResolution>
</Audio>
<enableCABAC>
<!-- opt, xs: boolean, 是否支持CABAC功能-->
</enableCABAC>
<subStreamRecStatus>
<!-- opt, xs: boolean, 是否支持子码流录像状态-->
</subStreamRecStatus>
<isSupportRefreshFrame>
<!-- opt, xs:boolen, 是否支持强制刷新帧，对应NET_DVR_STREAMING_REFRESH_FRAME命令 -->
</isSupportRefreshFrame>
<isSupportBareDataOverlay>
<!--opt, xs:boolen, 是否支持热成像裸数据叠加功能，对应NET_DVR_BAREDATAOVERLAY_CFG配置结构体-->
</isSupportBareDataOverlay>
</StreamingChannel>


DEVICE_ABILITY_SupplementLight

设备网络SDK开发使用手册

<SupplementLight version="2.0">
<!--req, 内置补光灯配置能力集, 对应/ISAPI/Image/channels/<ID>/SupplementLight/capabilities-->
<mode def="schedule" opt="schedule,off,on,auto">
<!--opt,xs:string, schedule-定时, off-开启, on-关闭, auto-自动-->
</mode>
<Schedule>
<!--dep, 依赖于mode节点中的schedule子节点-->
<TimeRange>
<!--req, 定时时间段-->
<beginTime>
<!--req, xs:time, ISO8601 time, 开始时间-->
</beginTime>
<endTime>
<!--req, xs:time, ISO8601 time, 结束时间-->
</endTime>
</TimeRange>
</Schedule>
<brightnessLimit min="" max="">
<!--dep,xs:integer, "0~100", 依赖于mode节点中open子节点和schedule子节点, 亮度限制-->
</brightnessLimit>
</SupplementLight>


DEVICE_ABILITY_TempHumi

设备网络SDK开发使用手册

<TempHumi version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<id min="" max="">
<!-- opt ,xs:integer ，设备通道号-->
</id>
<currentTime>
<!-- req, xs:time, ISO8601 time -->
</currentTime>
<temperature min="-273.00" max="1000.00">
<!--opt, xs:float，设备环境温度，精确到小数点后两位，（-273 – 1000摄氏度）-->
</temperature>
<humidity min="0" max="100.00">
<!--opt, xs:float，设备环境湿度，精确到小数点后两位。单位为：%-->
</humidity>
</TempHumi>


DEVICE_ABILITY_ThermalCap

设备网络SDK开发使用手册

<ThermalCap version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<isSupportFireDetection>
<!--opt,xs:boolean, 是否支持火点检测 -->
</isSupportFireDetection>
<isSupportThermometry>
<!-- opt ,xs:boolean，是否支持测温 -->
</isSupportThermometry>
<isSupportRealtimeThermometry>
<!-- opt ,xs:boolean，是否支持实时测温数据上传 -->
</isSupportRealtimeThermometry>
<isFireFocusZoomSupport>
<!--opt,xs:boolean, 是否支持火点可见光镜头聚焦变倍 -->
</isFireFocusZoomSupport>
<isSupportManualRanging>
<!-- opt ,xs:Boolean ，是否支持手动测距，只要设备有一个通道支持该功能，就返回该节点能力，具体通道的能力，参见具体的各通道返回信息-->
</isSupportManualRanging>
<isSupportPower>
<!-- opt ,xs:boolean，是否支持电源开关支持能力-->
</isSupportPower>
<isSupportRealtimeTempHumi>
<!-- opt ,xs:boolean，是否支持设备环境实时温湿度能力 -->
</isSupportRealtimeTempHumi>
<ManualThermCap>
<manualThermRuleNum>
<!-- opt, xs:integer，设备手动测温支持的最大规则数，若不返回该节点则设备不支持手动测温 -->
</manualThermRuleNum>
</ManualThermCap>
<isSupportManualThermBasic>
<!-- opt ,xs:boolean，是否支持手动测温基本参数配置-->
</isSupportManualThermBasic>
<isSupportFireShieldMask>
<!-- opt ,xs:boolean，是否支持火点区域屏蔽参数配置-->
</isSupportFireShieldMask>
<isSupportsmokeShieldMask>
<!-- opt ,xs:boolean，是否支持烟雾区域屏蔽参数配置-->
</isSupportsmokeShieldMask>
<isSupportThermIntell>
<!--opt,xs:boolean, 是否支持热成像智能互斥配置-->
</isSupportThermIntell>
<isSupportThermometryMode>
<!--opt,xs:boolean, 是否支持测温模式配置能力-->
</isSupportThermometryMode>
<isSupportThermalPip>
<!--opt,xs:boolean, 是否支持热成像画中画配置能力-->
</isSupportThermalPip>
<isSupportThermalIntelRuleDisplay>
<!--opt,xs:boolean, 是否支持热成像智能规则显示配置能力-->
</isSupportThermalIntelRuleDisplay>
<AlgVersionInfo>
<!--opt, 是否支持获取热成像相关算法库版本能力-->
<thermometryAlgName min = "1" max = "128">
<!--ro, xs:string, 测温算法库版本信息-->
</thermometryAlgName>
<shipsAlgName min = "1" max = "128">
<!--ro, xs:string, 船只算法库版本信息-->
</shipsAlgName>
<fireAlgName min = "1" max = "128">
<!--ro, xs:string, 火点检测算法库版本信息-->
</fireAlgName>
</AlgVersionInfo>
<isSupportFaceThermometry>
<!-- opt ,xs:boolean，是否支持人脸测温功能-->
</isSupportFaceThermometry>
<isSupportThermalBlackBody>
<!-- opt ,xs:boolean，是否支持热成像黑体参数配置-->
</isSupportThermalBlackBody>
<isSupportThermalStreamParam>
<!-- opt ,xs:boolean，是否支持热成像码流参数配置-->
</isSupportThermalStreamParam>
<isSupportBodyTemperatureCompensation>
<!-- opt ,xs:boolean，是否支持体温温度补偿参数配置-->
</isSupportBodyTemperatureCompensation>
<isSupportClickToThermometry>
<!-- opt ,xs:boolean，是否支持点击测温-->
</isSupportClickToThermometry>
<isSupportThermometryHistorySearch>
<!-- opt ,xs:boolean-->
</isSupportThermometryHistorySearch>
<isSupportThermometryShieldMask>
<!-- opt ,xs:boolean，是否支持测温屏蔽区域-->
</isSupportThermometryShieldMask>
<isSupportTemperatureCorrection>
<!-- opt ,xs:boolean，是否支持测温矫正-->
</isSupportTemperatureCorrection>
<isSupportBurningPrevention>
<!-- opt ,xs:boolean，是否支持防灼伤-->
</isSupportBurningPrevention>
<isSupportJpegPicWithAppendData>
<!-- opt, xs:boolean, "是否支持抓热图，支持返回且值为true，不支持不返回"-->
</isSupportJpegPicWithAppendData>
<isSupportRealTimethermometryForHTTP>
<!-- opt, xs:boolean, "是否支持实时温度检测，支持返回且值为true，不支持不返回"-->
</isSupportRealTimethermometryForHTTP>
</ThermalCap>


DEVICE_ABILITY_ThermalPip

设备网络SDK开发使用手册

<ThermalPip>
<!--req, 热成像画中画配置能力集-->
<enabled>
<!--req, xs:boolean, 使能-->
</enabled>
<pipMode opt="overlap,fusion,normal" def="normal">
<!--req,xs:string, 画中画模式: overlap-叠加模式, fusion-融合模式, normal-普通模式-->
</pipMode>
<overlapType opt="visibleOverlapThermal,thermalOverlapVisible" def="visibleOverlapThermal">
<!--req,xs:string, 叠加类型：visibleOverlapThermal-可见光叠加热成像图片，thermalOverlapVisible-热成像叠加可见光图片-->
</overlapType>
<transparency min="0" max="100">
<!--opt, xs: integer, 透明度-->
</transparency>
<normalizedScreenSize>
<!--req, ro, 归一化坐标-->
<normalizedScreenWidth>
<!--req, ro,xs:integer, 归一化坐标宽度-->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, ro,xs:integer, 归一化坐标高度-->
</normalizedScreenHeight>
</normalizedScreenSize>
<PipRegion>
<!--dep, 画中画区域-->
<RegionCoordinatesList size ="4">
<!--dep, 画中画区域坐标列表-->
<RegionCoordinates>
<!--opt, 画中画区域点坐标-->?
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</PipRegion>
<imageFusionRatio min="0" max="100" default="75">
<!--dep, xs: integer "图像融合比例,融合模式下生效"-->
</imageFusionRatio>
<borderFusionRatio min="0" max="100" default="100">
<!--dep, xs: integer "边缘融合比例,融合模式下生效"-->
</borderFusionRatio>
</ThermalPip>


DEVICE_ABILITY_ThermIntell

设备网络SDK开发使用手册

<ThermIntell version="2.0">
<id>
<!--req, xs:integer, 通道号-->
</id>
<intellType opt="thermometryAndSmart,shipsDetection,fireDetection,pip,faceThermometry,
thermometryAndSmokeFireDetection,thermometryAndFireDetection,basicBehavior" def="thermometryAndSmart">
<!--req ,xs:string, 智能功能资源配置类型: thermometryAndSmart-测温+异常行为识别(默认)，shipsDetection-船只检测，fireDetection-火点检测,
pip-画中画功能, faceThermometry-人脸测温, thermometryAndSmokeFireDetection-测温+烟火检测,
thermometryAndFireDetection-测温+火点检测, basicBehavior-异常行为识别-->
</intellType>
</ThermIntell>


DEVICE_ABILITY_ThermometryAlarmRule

设备网络SDK开发使用手册

<ThermometryAlarmRule version="2.0">
<ThermometryAlarmModeList size="">
<!--req, 测温预置点报警规则配置参数-->
<ThermometryAlarmMode>
<id min="" max="">
<!--req, xs:inter, 规则ID -->
</id>
<enabled opt="true,false">
<!--req ,xs:boolean, 使能：false-否，true-是-->
</enabled>
<name min="0" max="32">
<!--req, xs:string, ro, 规则名称-->
</name>
<pointRule opt="averageGreater,averageLess" def="averageGreater">
<!--req, xs:string, 点测温的报警温度比较方式：averageGreater-平均温大于(默认), averageLess-平均温小于-->
</pointRule>
<lineRule opt="highestGreater,highestLess,lowestGreater,lowestLess, averageGreater,averageLess" def="averageGreater">
<!--req, xs:string, 线测温的报警温度比较方式：highestGreater-高温大于, highestLess-高温小于, lowestGreater-低温大于,
lowestLess-低温小于, averageGreater-平均温大于(默认), averageLess-平均温小于-->
</lineRule>
<regionRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess,diffTempGreater,diffTempLess" def="averageGreater">
<!--req, xs:string, 框测温的报警温度比较方式：highestGreater-高温大于, highestLess-高温小于, lowestGreater-低温大于,
lowestLess-低温小于, averageGreater-平均温大于(默认), averageLess-平均温小于, diffTempGreater-温差大于, diffTempLess-温差小于-->
</regionRule>
<alert min="0" max="32">
<!--req ,xs: float, 预警温度-->
</alert>
<alarm min="0" max="32">
<!--req ,xs: float, 报警温度 -->
</alarm>
<threshold min="0" max="32">
<!--req ,xs: float, 门限温度-->
</threshold>
<isSupportAlertOutputIOPortList><!--opt, xs:boolean, "true"--></isSupportAlertOutputIOPortList>
<!-- "支持时返回且值为true, 不支持时不返回"-->
<isSupportAlarmOutputIOPortList><!--opt, xs:boolean, "true"--></isSupportAlarmOutputIOPortList>
<!-- "支持时返回且值为true, 不支持时不返回"-->
<alertFilteringTime min="0" max="200" default="0"><!--opt, xs:integer, "温度预警等待时间"unit:s--></alertFilteringTime>
<alarmFilteringTime min="0" max="200" default="0"><!--opt, xs:integer, "温度报警等待时间"unit:s--></alarmFilteringTime>
<visibleLightLinkageEnabled opt="true, false"><!--opt, xs:boolean, "可见光联动"--></visibleLightLinkageEnabled>
<TemperatureSuddenChange>
<mode opt="close, temperatureSuddenIncrease, temperatureSuddenDecrease"><!--req, xs:string --></mode>
<!--"温度突变模式"-->
<cycle opt="1, 5, 10, 30, 60"><!--opt, xs:integer "记录周期, 单位秒"--></cycle>
<alert min="" max=""><!--opt, xs: float "预警值"--></alert>
<alarm min="" max=""><!--opt, xs: float "报警值"--></alarm>
</TemperatureSuddenChange>
</ThermometryAlarmMode>
</ThermometryAlarmModeList>
<TemperatureDifferenceComparisonList size="">
<!--req, 测温预置点温差规则配置参数-->
<TemperatureDifferenceComparison>
<id min="" max="">
<!--req, xs:inter, 规则ID-->
</id>
<enabled opt="true,false">
<!--req ,xs:boolean, 使能：false-否，true-是-->
</enabled>
<ruleID1 min="" max="">
<!--req, xs:string, 报警点1-->
</ruleID1>
<ruleID2 min="" max="">
<!--req, xs:string, 报警点2-->
</ruleID2>
<pointRule opt="averageGreater,averageLess" def="averageGreater">
<!--req, xs:string, 点测温的报警温度比较方式：averageGreater-平均温大于(默认), averageLess-平均温小于-->
</pointRule>
<lineRule opt="highestGreater,highestLess,lowestGreater,lowestLess, averageGreater,averageLess" def="averageGreater">
<!--req, xs:string, 线测温的报警温度比较方式：highestGreater-高温大于, highestLess-高温小于, lowestGreater-低温大于,
lowestLess-低温小于, averageGreater-平均温大于(默认), averageLess-平均温小于-->
</lineRule>
<regionRule opt="highestGreater,highestLess,lowestGreater,lowestLess,averageGreater,averageLess,diffTempGreater,diffTempLess" def="averageGreater">
<!--req, xs:string, 框测温的报警温度比较方式：highestGreater-高温大于, highestLess-高温小于, lowestGreater-低温大于,
lowestLess-低温小于, averageGreater-平均温大于(默认), averageLess-平均温小于, diffTempGreater-温差大于, diffTempLess-温差小于-->
</regionRule>
<temperatureDifference min="0" max="32">
<!--req, xs: float, 温差值-->
</temperatureDifference>
<isSupportAlarmOutputIOPortList><!--opt, xs:boolean, "true"--></isSupportAlarmOutputIOPortList>
<!--"支持时返回且值为true, 不支持时不返回"-->
<alarmFilteringTime min="0" max="200" default="0"><!--opt, xs:integer, "温度报警等待时间"unit:s--></alarmFilteringTime>
</TemperatureDifferenceComparison>
</TemperatureDifferenceComparisonList>
</ThermometryAlarmRule>


DEVICE_ABILITY_ThermometryBasicParam

设备网络SDK开发使用手册

<ThermometryBasicParam version="2.0">
<id>
<!--req, xs:integer, 通道号-->
</id>
<enabled opt="true,false">
<!--req, xs:boolean, 是否使能：false-否，true-是-->
</enabled>
<streamOverlay opt="true,false">
<!--req, xs:boolean, 码流是否叠加温度信息：false-否，true-是-->
</streamOverlay>
<pictureOverlay opt="true,false">
<!--req, xs:boolean, 抓图是否叠加温度信息：false-否，true-是-->
</pictureOverlay>
<temperatureRange opt="-20~150,0~550,0~650,-20~650,-20~1500,-20~120,automatic">
<!--req,xs:string, 测温范围（这里以摄氏度为单位计算，其他单位由上层自行转换）-->
</temperatureRange>
<temperatureUnit opt="degreeCentigrade,degreeFahrenheit,degreeKelvin">
<!--req, xs:string, 测温单位: degreeCentigrade-摄氏度（℃），degreeFahrenheit-华氏度（℉），degreeKelvin-开尔文(K)-->
</temperatureUnit>
<temperatureCurve opt="close,transverseTemperatureTrend,longitudinalTemperatureTrend">
<!--opt, xs:string, 测温曲线: close-关闭, transverseTemperatureTrend-横向温度趋势线模式, longitudinalTemperatureTrend-纵向温度趋势线模式-->
</temperatureCurve>
<fireImageMode opt="blackWhite,thermalProbe,fireGround">
<!--opt, xs:string, 消防模式: blackWhite-黑白模式, thermalProbe-热探测模式, fireGround-火场模式 -->
</fireImageMode>
<emissivity min="0.01" max="1.00" default="0.96">
<!--opt, xs:float, 发射率, 精确到小数后两位, 这个值对于不支持规则框以及预置点的设备使用, 例如: DS-2TF03-260V/GLT、DS-2TF03-167V/GLT-->
</emissivity>
<distanceUnit opt="meter,feet,centimeter">
<!--req, xs:string, 距离单位: meter-米, feet-英尺，centimeter-厘米-->
</distanceUnit>
<TemperatureColor>
<!--opt, 测温报警颜色设置-->
<type opt="highTemperature,lowTemperature,rangeTemperature,heatPreservation">
<!--req, xs:string, 设置类型
highTemperature: 高温报警类型, 此时<highTemperature>字段生效, 当高于该温度值时会有进行颜色标注;
lowTemperature: 低温报警类型, 此时<lowTemperature>字段生效, 当低于该温度值时会有进行颜色标注;
rangeTemperature: 区间报警类型, 此时<highTemperature>、<lowTemperature>字段生效, 当在温度在该温度区间时会有进行颜色标注;
heatPreservation: 保温报警类型, 此时<highTemperature>、<lowTemperature>字段生效, 当温度不在该温度区间时会有进行颜色标注
-->
</type>
<highTemperature min="-273" max="10000">
<!--dep, xs:integer, 最高温度-->
</highTemperature>
<lowTemperature min="-273" max="10000">
<!--dep, xs:integer, 最低温度 -->
</lowTemperature>
</TemperatureColor>
<enviroTemperature min="-273" max="10000">
<!--opt, xs:integer，unit:℃, 环境温度-->
</enviroTemperature>
<enviroHumidity min="0" max="100">
<!--opt, xs:integer,unit:%, 环境相对湿度-->
</enviroHumidity>
<correctionVolume min="-100" max="100" def="0">
<!--opt, xs:integer, 测温修正量-->
</correctionVolume>
<specialPointThermType opt = "centerPoint,highestPoint,lowestPoint">
<!--req, xs:string, 特殊测温点显示: centerPoint-中心点测温, highestPoint-最高点测温, lowestPoint-最低点测温, 可支持多选-->
</specialPointThermType>
<distance min="0" max="10000">
<!--req, xs:integer; unit:m, 距离，单位：米-->
</distance>
<reflectiveEnable>
<!--req, xs:boolean, 反射温度使能: false-否, ture-是-->
</reflectiveEnable>
<reflectiveTemperature min="" max="">
<!--opt, xs:float, 反射温度, 精确到小数后一位-->
</reflectiveTemperature>
<alert min="-100.0" max="1000.0">
<!--opt, xs: float, 全局预警阈值, 单位:摄氏度, 保留后一位小数点-->
</alert>
<alarm min="-100.0" max="1000.0">
<!--opt, xs: float, 全局报警阈值, 单位:摄氏度, 保留后一位小数点 -->
</alarm>
<showTempStripEnable>
<!--opt, xs:boolean, 温度条显示使能-->
</showTempStripEnable>
<thermalOpticalTransmittance min="0.001" max="1.000" def="1.000">
<!--opt ,xs: float, "光学透过率, 精确到小数点后3位" -->
</thermalOpticalTransmittance>
<externalOpticsWindowCorrection min="-40.0" max="80.0" def="20.0">
<!--opt ,xs: float, "外部光学温度, 精确到小数点后1位" -->
</externalOpticsWindowCorrection>
<displayMaxTemperatureEnabled opt="true,false">
<!--opt ,xs:boolean，显示最高温度：false-否, ture-是 -->
</displayMaxTemperatureEnabled>
<displayMinTemperatureEnabled opt="true,false">
<!--opt ,xs:boolean，显示最低温度：false-否, ture-是 -->
</displayMinTemperatureEnabled>
<displayAverageTemperatureEnabled opt="true,false">
<!--opt ,xs:boolean，显示平均温度：false-否, ture-是 -->
</displayAverageTemperatureEnabled>
<thermometryInfoDisplayposition opt="rules_around,top_left_of_screen">
<!--opt ,xs:string，测温信息显示位置：rules_around-跟随规则，top_left_of_screen-屏幕左上角-->
</thermometryInfoDisplayposition>
<isSupportAlertOutputIOPortList>
<!--opt, xs:boolean, "true", "支持时返回且值为true, 不支持时不返回"-->
</isSupportAlertOutputIOPortList>
<isSupportAlarmOutputIOPortList>
<!--opt, xs:boolean, "true", "支持时返回且值为true, 不支持时不返回"-->
</isSupportAlarmOutputIOPortList>
<alertFilteringTime min="0" max="200" default="0">
<!--opt ,xs:integer, "温度预警等待时间"unit:s-->
</alertFilteringTime>
<alarmFilteringTime min="0" max="200" default="0">
<!--opt ,xs:integer, "温度报警等待时间"unit:s-->
</alarmFilteringTime>
<displayMaxTemperatureEnabled opt="true,false">
<!-- opt, xs:boolean, "显示最高温" -->
</displayMaxTemperatureEnabled>
<displayMinTemperatureEnabled opt="true,false">
<!-- opt,xs:boolean, "显示最低温" -->
</displayMinTemperatureEnabled>
<displayAverageTemperatureEnabled opt="true,false">
<!-- opt, xs:boolean, "显示平均温" -->
</displayAverageTemperatureEnabled>
<thermometryInfoDisplayposition opt="rules_around,top_left_of_screen">
<!-- opt,xs:string-->
</thermometryInfoDisplayposition>
<!-- "测温信息显示位置:rules_around跟随规则、top_left_of_screen屏幕左上角"-->
<calibrationCoefficientEnabled opt="true,false">
<!-- opt,xs:boolean, "启用标定系数使能"-->
</calibrationCoefficientEnabled>
<calibrationCoefficient min="0.00" max="30.00">
<!-- dep,xs:float, "标定系数，0-30，精确小数点后2位"-->
</calibrationCoefficient>
</ThermometryBasicParam>


DEVICE_ABILITY_ThermometryMode

设备网络SDK开发使用手册

<ThermometryMode version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 测温模式能力集-->
<mode opt="normal,expert" def="normal">
<!--dep, xs:string, 测温模式: normal-普通模式, expert-专家模式-->
<!--普通模式等于全局测温配置，不需要区分规则以及预置点，直接全局测温，当选择该模式时，测温基本参数配置中的测温相关配置将生效。
专家模式，是区分规则以及预置点进行测温配置，可以选择某个区域以及预置点来进行测温，当选择该模式时，测温预置点关联配置将生效-->
</mode>
<thermometryROIEnabled opt="true,false">
<!--opt,xs:boolean,"测温ROI使能", ROI与测温模式mode配置是互斥的, 是两种独立的测温解决方案-->
</thermometryROIEnabled>
</ThermometryMode>


DEVICE_ABILITY_ThermometryScene

设备网络SDK开发使用手册

<ThermometryScene version="2.0">
<normalizedScreenSize>
<!-- req, ro, 坐标归一化-->
<normalizedScreenWidth>
<!-- req, ro,xs:integer, 归一化宽度-->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer, 归一化高度-->
</normalizedScreenHeight>
</normalizedScreenSize>
<ThermometryRegionList size="">
<ThermometryRegion>
<id min="1" max="40">
<!--req ,xs:integer, 通道号-->
</id>
<enabled opt="true,false">
<!--req ,xs:boolean, 是否使能：false-否，true-是-->
</enabled>
<name min="0" max="32">
<!--req, xs:string, 规则名称-->
</name>
<emissivity min="0.01" max="1.00">
<!--req ,xs:float, 发射率-->
</emissivity>
<distance min="0" max="10000">
<!--req ,xs:integer;unit:m, 距离-->
</distance>
<reflectiveEnable>
<!--req ,xs:boolean, 反射温度使能：false-否，true-是-->
</reflectiveEnable>
<reflectiveTemperature min="" max="">
<!--opt ,xs:float, 反射温度-->
</reflectiveTemperature>
<type opt="point,region,line">
<!--req, xs:string"point,region,line", 规则标定类型: point-点, region-框, line-线-->
</type>
<Point>
<!--dep, 点测温, 显示平均温度-->
<TempValue min="-40.0" max="1000.0">
<!--dep, xs:float "-40.0 .. 1000.0" ro-->
</TempValue>
<CalibratingCoordinates>
<!--dep, 点坐标-->
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</CalibratingCoordinates>
</Point>
<Region>
<!--dep, 框测温, 显示最高温、最低温、平均温、温差-->
<highestTempValue min="-40.0" max="1000.0">
<!--dep, xs: float, ro, 最高温-->
</highestTempValue>
<lowestTempValue min="-40.0" max="1000.0">
<!--dep, xs: float, ro, 最低温-->
</lowestTempValue>
<averageTempValue min="-40.0" max="1000.0">
<!--dep, xs: float, ro, 平均温-->
</averageTempValue>
<diffTempValue min="-40.0" max="1000.0">
<!--dep, xs: float, ro, 温差-->
</diffTempValue>
<RegionCoordinatesList size="">
<!--dep, 框的区域坐标点列表-->
<RegionCoordinates>
<!--opt-->
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</Region>
<Line>
<!--dep, 线测温, 显示最高温、最低温-->
<highestTempValue min="-40.0" max="1000.0">
<!--dep, xs: float, ro, 最高温-->
</highestTempValue>
<lowestTempValue min="-40.0" max="1000.0">
<!--dep, xs: float, ro, 最低温-->
</lowestTempValue>
<RegionCoordinatesList size="">
<!--dep, 线的端点坐标列表-->
<RegionCoordinates>
<!--opt-->
<positionX>
<!--req, xs:integer;coordinate -->
</positionX>
<positionY>
<!--req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</Line>
<distanceUnit opt="meter,feet,centimeter">
<!--opt ,xs:string ，距离单位：meter(米)，feet(英尺)，centimeter(厘米)-->
</distanceUnit>
</ThermometryRegion>
<maxPointNum>
<!--req, xs:integer, "设备支持的点规则配置最大值"-->
</maxPointNum>
<maxLineNum>
<!--req, xs:integer, "设备支持的线规则配置最大值"-->
</maxLineNum>
<maxRegionNum>
<!--req, xs:integer, "设备支持的框规则配置最大值"-->
</maxRegionNum>
</ThermometryRegionList>
</ThermometryScene>


DEVICE_ABILITY_THScreen

设备网络SDK开发使用手册

<THScreen version="2.0">
<enabled>
<!--req,xs:boolen, 启用定时使能-->
</enabled>
<THOSDDisplay>
<!--dep, 温湿度OSD显示-->
<enabled>
<!-- req, xs:boolean, 使能 -->
</enabled>
<positionX>
<!-- req, xs:integer;coordinate, 温湿度OSD显示左上角X轴坐标-->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate, 温湿度OSD显示左上角Y轴坐标 -->
</positionY>
</THOSDDisplay>
<Timing>
<!--dep,-->
<timing opt="manual,auto">
<!--dep,xs:string,依赖于<enabled>节点打开, 校时模式: manual- 手动，auto- 定时-->
</timing>
<interval min="1" max="10080">
<!--dep,xs:interge,依赖于<timing>节点为auto,校时定时模式下，间隔时间设置[1,10080]，单位：分钟-->
</interval>
</Timing>
</THScreen>


DEVICE_ABILITY_TMECap

设备网络SDK开发使用手册

<TMECap version="2.0">
<isSupportTMEChargeRule>
<!--opt, xs:boolen, 是否支持收费规则配置 -->
</isSupportTMEChargeRule>
<isSupportPaperCharge>
<!--opt, xs:boolen, 是否支持纸票信息下发-->
</isSupportPaperCharge>
<isSupportParkingSpace>
<!--opt, xs:boolen, 是否支持停车位信息下发-->
</isSupportParkingSpace>
<isSupportTMEOffline>
<!--opt, xs:boolen, 是否支持停车场票箱脱机参数配置-->
</isSupportTMEOffline>
<isSupportTMEMultiCtrl>
<!--opt, xs:boolen, 是否支持停车场票箱从属设备多角度参数配置 -->
</isSupportTMEMultiCtrl>
<isSupportTMECFG>
<!--opt, xs:boolen, 是否支持停车场票箱参数配置-->
</isSupportTMECFG>
<isSupportChargeAmount>
<!--opt, xs:boolen, 是否支持缴费金额配置 -->
</isSupportChargeAmount>
<isSupportVehicleCtrl>
<!--opt, xs:boolen, 是否支持车辆布控(非授权名单) -->
</isSupportVehicleCtrl>
<isSupportBarrierGate>
<!--opt, xs:boolen, 是否支持远程控制道闸 -->
</isSupportBarrierGate>
<isSupportTemporaryParkingCard>
<!--opt, xs:boolen, 是否支持临时卡 -->
</isSupportTemporaryParkingCard>
<isSupportLEDConfiguration>
<!--opt, xs:boolen, 是否支持LED屏幕显示参数配置 -->
</isSupportLEDConfiguration>
<isSupportVoiceBroadcastInfo>
<!--opt, xs:boolen, 是否支持语音播报-->
</isSupportVoiceBroadcastInfo>
<isSupportPaperPrintFormatInfo>
<!--opt, xs:boolen, 是否支持纸票打印格式配置 -->
</isSupportPaperPrintFormatInfo>
<isSupportLockGateConfig>
<!--opt, xs:boolen, 是否支持智能锁闸配置 -->
</isSupportLockGateConfig>
<isSupportTMEVoiceConfiguration >
<!--opt, xs:boolen, 是否支持语音参数配置-->
</isSupportTMEVoiceConfiguration>
<isSupportVoiceFileUpload>
<!--opt,xs:boolean, 是否支持语音文件上传-->
</isSupportVoiceFileUpload>
<isSupportVoiceFileList>
<!--opt,xs:boolean, 是否支持获取语音文件列表-->
</isSupportVoiceFileList>
</TMECap>


DEVICE_ABILITY_TMEConfiguration

设备网络SDK开发使用手册

<TMEConfiguration version="2.0">
<!--req,票箱设备参数配置能力集-->
<illegalCardFilteringEnabled>
<!--req,xs:boolean;启用非法卡过滤的意思-->
</illegalCardFilteringEnabled>
<LEDDefaultInfo min="0" max="512">
<!--req,xs:string,LED默认显示内容-->
</LEDDefaultInfo>
<sendCardSensingCoilEnabled>
<!--req,xs:boolean;发卡机是否关联地感线圈-->
</sendCardSensingCoilEnabled>
<wiegendSensingCoilEnabled>
<!--req,xs:boolean;远距离卡是否关联地感线圈-->
</wiegendSensingCoilEnabled>
<gateSwitchSignalEnabled>
<!--req,xs:boolean;是否有道闸开关信息-->
</gateSwitchSignalEnabled>
<verifyKeyWriteCardEnabled>
<!--req,xs:boolean;是否验证密钥和写卡-->
</verifyKeyWriteCardEnabled>
<noplateTakePermissionEnabled>
<!--req,xs:boolean;是否启用无车牌取凭据放行-->
</noplateTakePermissionEnabled >
</TMEConfiguration>


DEVICE_ABILITY_TMEMultiCtrlConfiguration

设备网络SDK开发使用手册

<TMEMultiCtrlConfiguration version="2.0">
<!--req,票箱多通道抓拍参数能力集-->
<multiChansCapEnabled>
<!--req,xs:boolean;是否启用多通道抓拍-->
</multiChansCapEnabled>
<multiChansWaitTime min="1" max="1000">
<!--req,多通道抓拍匹配时间-->
<!--req,xs:integer, ms(毫秒) -->
</multiChansWaitTime>
</TMEMultiCtrlConfiguration>


DEVICE_ABILITY_TMEOfflineConfiguration

设备网络SDK开发使用手册

<TMEOfflineConfiguration version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,票箱脱机参数配置信息-->
<enabled>
<!--req,xs:boolean;是否启用脱机-->
</enabled>
<chargeEnabled>
<!--req,xs:boolean;是否收费-->
</chargeEnabled>
<alarmEnabled>
<!--req,xs:boolean;是否报警-->
</alarmEnabled>
<recordSource opt="plate,card">
<!--req,xs:string;记录产生依据-->
</recordSource>
<timeWait min="1" max="300">
<!--req,xs:integer, s：票箱进入脱机模式前的等待时间 -->
</timeWait>
<releaseMode opt="fixed固定车放行),fixCard(固定卡放行),tempCar(临时车放行),tempCard(临时卡放行),
noPlate(无车牌放行),freefixCar(固定车若免费则自动放行),freetempCar(临时车若免费则自动放行)">
<!--req,xs:string;放行方式-->
</releaseMode>
<vehicleCardMatchEnabled>
<!--req,xs:boolean;是否启用车卡一致-->
</vehicleCardMatchEnabled>
<singleInSingleOutEnabled>
<!--req,xs:boolean;是否单进单出-->
</singleInSingleOutEnabled>
</TMEOfflineConfiguration>


DEVICE_ABILITY_TMEVoiceConfiguration

设备网络SDK开发使用手册

<TMEVoiceConfiguration version="2.0">
<!--req,语音参数配置能力集-->
<voiceSpeed min="0" max="100">
<!--req,xs:integer,语速-->
</voiceSpeed >
<voicePitch min="0" max="100">
<!--req,xs:integer,语调-->
</voicePitch >
<voiceVolum min="0" max="100">
<!--req,xs:integer,音量-->
</voiceVolum >
<voiceRole opt="3,51,52,53,54,55" >
<!--req,xs:integer,发音人-->
</voiceRole >
<voiceContent min="1" max="64">
<!--req, xs:string,语音内容（出入口压线圈播报的语音内容）-->
</voiceContent>
<voiceFileName min="1" max="64">
<!--req,xs:string,语音文件名-->
</voiceFileName>
</TMEVoiceConfiguration>


DEVICE_ABILITY_Tracking

设备网络SDK开发使用手册

<Tracking version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<enabled>
<!-- req, xs:boolean, 是否启用 -->
</enabled>
<mode opt="auto,manual">
<!-- dep, xs:string "auto,manual", 跟踪模式: auto-自动, manual-手动 -->
</mode>
<trackingTime min="0" max="60" def="5">
<!-- req, xs:integer, 跟踪时间，单位: s -->
</trackingTime>
<ManualRegionCoordinatesList min="" max="">
<!-- dep, 手动跟踪目标区域-->
<RegionCoordinates>
<!-- opt, 手动跟踪目标区域坐标点-->
<positionX>
<!-- req, xs:integer;coordinate, X轴坐标, 取值范围[0.001,1] -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate, Y轴坐标, 取值范围[0.001,1] -->
</positionY>
</RegionCoordinates>
</ManualRegionCoordinatesList>
</Tracking>


DEVICE_ABILITY_TrafficCap

设备网络SDK开发使用手册

<TrafficCap version="2.0">
<plateCap>
<!-- opt, 车牌相关能力能力-->
<supCustomStateOrProvince>
<!--opt, xs:boolean,是否支持自定义省份-->
</supCustomStateOrProvince>
<supCountry>
<!--opt,xs:integer,1,2,3..支持的区域国家-->
</supCountry>
<isSupportPlateList>
<!--opt,xs:boolean,是否支持车牌非授权名单导入导出-->
</isSupportPlateList>
<plateListNum>
<!--opt, integer,支持最大导入非授权名单数-->
</plateListNum>
<plateMaskLen>
<!--opt, integer,支持最长车牌字符数数-->
</plateMaskLen>
</plateCap>
</TrafficCap>


DEVICE_ABILITY_UnattendedBaggage

设备网络SDK开发使用手册

<UnattendedBaggage version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<enabled>
<!-- req, xs:boolean -->
</enabled>
<normalizedScreenSize>
<!-- req, ro -->
<normalizedScreenWidth>
<!-- req, ro,xs:integer -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, ro,xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>
<UnattendedBaggageRegionList size="4">
<UnattendedBaggageRegion version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<id>
<!-- req, xs:string -->
</id>
<sensitivityLevel min="1" max="100">
<!--req, xs:integer, 1..100, 1 is the least sensitive-->
</sensitivityLevel>
<timeThreshold min="5" max="100"/>
<!-- req, xs:integer,seconds -->
<RegionCoordinatesList size="4">
<RegionCoordinates>
<!-- req, -->
<positionX>
<!-- req, xs:integer;coordinate -->
</positionX>
<positionY>
<!-- req, xs:integer;coordinate -->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</UnattendedBaggageRegion>
</UnattendedBaggageRegionList>
<mutexAbility opt="PDC,videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,recordPlan"/>
<!--opt,ro, xs:string, "PDC, videoFrameRate50,videoFrameRate60,19-1920*1080@50fps,20-1920*1080@60fps,计划录像" -->
<isSupportMultiScene>
<!-- opt, xs:boolen -->
</isSupportMultiScene>
</UnattendedBaggage>


DEVICE_ABILITY_UnLock

设备网络SDK开发使用手册

<UnLock version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<passwd min="" max="">
<!-- req,wo, xs:string, 解锁密码 -->
</passwd>
</UnLock>


DEVICE_ABILITY_UploadStrategy

设备网络SDK开发使用手册

<UploadStrategy>
<strategyType opt="record,picture"/>
<!--req, xs:string, 策略类型：record-录像，picture-图片 -->
<Record>
<!--req, 录像类型 -->
<allEvent>true</allEvent>
<!--dep, xs:boolean depend strategyType, 全部事件 -->
<motion>true</motion>
<!--dep, xs:boolean depend strategyType, 移动侦测 -->
<alarm>true</alarm>
<!--dep, xs:boolean depend strategyType, 信号量报警-->
<VCA>true</VCA>
<!--dep, xs:boolean depend strategyType, 智能类型 -->
</Record>
</UploadStrategy>


DEVICE_ABILITY_VCSCap

设备网络SDK开发使用手册

<VCSCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<isSupportConferences>
<!--opt,xs:boolean,"true,false，是否支持会议相关参数配置"-->
</isSupportConferences>
<isSupportConferenceBasicInfo>
<!--opt,xs:boolean,"true,false，是否支持会议基本参数配置"-->
</isSupportConferenceBasicInfo>
<isSupportMemberView>
<!--opt,xs:boolean,"true,false，是否支持会议成员观看模式参数配置"-->
</isSupportMemberView>
<isSupportConferenceLayout>
<!--opt,xs:boolean,"true,false，是否支持会议布局参数配置"-->
</isSupportConferenceLayout>
<isSupportAudioMix>
<!--opt,xs:boolean,"true,false，是否支持音频混音参数"-->
</isSupportAudioMix>
<isSupportConferenceSearch>
<!--opt,xs:boolean,"true,false，是否支持会议搜索"-->
</isSupportConferenceSearch>
<isSupportConferenceStatus>
<!--opt,xs:boolean,"true,false，是否支持会议状态获取"-->
</isSupportConferenceStatus>
<isSupportConferenceControl>
<!--opt,xs:boolean,"true,false，是否支持会议控制"-->
</isSupportConferenceControl>
<isSupportTerminals>
<!--opt,xs:boolean,"true,false，是否支持会议终端管理"-->
</isSupportTerminals>
<isSupportTerminalControl>
<!--opt,xs:boolean,"true,false，是否支持会议终端控制"-->
</isSupportTerminalControl>
<isSupportTerminalPTZ>
<!--opt,xs:boolean,"true,false，是否支持终端PTZ控制"-->
</isSupportTerminalPTZ>
<isSupportTerminalFocus>
<!--opt,xs:boolean,"true,false，是否支持终端聚焦控制"-->
</isSupportTerminalFocus>
<isSupportTerminalStatus>
<!--opt,xs:boolean,"true,false，是否支持会议终端状态获取"-->
</isSupportTerminalStatus>
<isSupportRunStatus>
<!--opt,xs:boolean,"true,false，是否支持运行状态获取"-->
</isSupportRunStatus>
<isSupportTerminalGroup>
<!--opt,xs:boolean,"true,false，是否支持终端分组管理"-->
</isSupportTerminalGroup>
<isSupportConferenceDailyDistribution>
<!--opt,xs:boolean,"true,false，是否支持会议分布信息查询"-->
</isSupportConferenceDailyDistribution>
<isSupportHistoryClear>
<!--opt,xs:boolean,"true,false，是否支持清除历史会议信息"-->
</isSupportHistoryClear>
<isSupportTerminalConferenceStatus>
<!--opt,xs:boolean,"true,false，是否支持终端会议状态获取"-->
</isSupportTerminalConferenceStatus>
<maxConferenceNum>
<!--opt,xs:string，支持的最大会议数量-->
</maxConferenceNum>
<maxTerminalNum>
<!--opt,xs:string，支持的最大的终端管理数量-->
</maxTerminalNum>
<maxTerminalGroupNum>
<!--opt,xs:string，支持的最大终端组数量-->
</maxTerminalGroupNum>
<isSupportMcuGkCfg>
<!--opt,xs:boolean,”true,false，是否支持MCU GK参数配置-->
</isSupportMcuGkCfg>
<isSupportGkServer>
<!--opt,xs:boolean,”true,false，是否支持GK服务器功能”-->
</isSupportGkServer>
<TerminalCap>
<!--opt,终端相关能力-->
<InputList>
<!--req，本地输入口列表-->
<Input>
<!--req-->
<inputType>
<!--req,xs:string,"DVI,SDI,YPbPr，输入口类型，分DVI,SDI,YPbPr"-->
</inputType>
<inputNo min="" max=""/>
<!--req,xs:integer, 输入口编号-->
</Input>
</InputList>
<isSupportConferenceRegion>
<!--opt,xs:boolean,"true,false,是否支持会议区域配置"-->
</isSupportConferenceRegion>
<isSupportCallConfiguration>
<!--opt,xs:boolean,"true,false,是支持会议呼叫参数配置"-->
</isSupportCallConfiguration>
<isSupportControl>
<!--opt,xs:boolean,"true,false,是否支持终端控制"-->
</isSupportControl>
<isSupporCallQuery>
<!--opt,xs:boolean,"true,false,是否支持会议呼叫查询"-->
</isSupporCallQuery>
<isSupportMcuBinding>
<!--opt,xs:boolean,"true,false,是否支持MCU绑定"-->
</isSupportMcuBinding>
<isSupportTerminals>
<!--opt,xs:boolean,"true,false,是否支持终端列表获取"-->
</isSupportTerminals>
<isSupportSelfInfo>
<!--opt,xs:boolean,"true,false,是否支持获取终端自身信息"-->
</isSupportSelfInfo>
<isSupportConferences>
<!--opt,xs:boolean,"true,false,是否支持会议相关参数配置"-->
</isSupportConferences>
<isSupportConferencesCurrent>
<!--opt,xs:boolean,"true,false,是否支持获取当前所在会议"-->
</isSupportConferencesCurrent>
<isSupportConferenceSearch>
<!--opt,xs:boolean,"true,false,是否支持通过终端查找会议"-->
</isSupportConferenceSearch>
<isSupportTerminalGroup>
<!--opt,xs:boolean,"true,false,是否支持终端组信息获取"-->
</isSupportTerminalGroup>
<isSupportConferencesJoin>
<!--opt,xs:boolean,"true,false,是否支持加入会议"-->
</isSupportConferencesJoin>
<isSupportConferencesChairman>
<!--opt,xs:boolean,"true,false,是否支持主席相关操作"-->
</isSupportConferencesChairman>
<isSupportConferenceControl>
<!--opt,xs:boolean,"true,false,是否支持会议控制"-->
</isSupportConferenceControl>
<isSupportTerminalGkCfg>
<!--opt,xs:boolean,"true,false,是否支持终端GK参数配置"-->
</isSupportTerminalGkCfg>
<isSupportStunCfg>
<!--opt,xs:boolean,"true,false,是否支持STUN参数配置"-->
</isSupportStunCfg>
<isSupportConferenceStreaming>
<!--opt,xs:boolean,"true,false,是否支持会议视音频压缩参数配置"-->
</isSupportConferenceStreaming>
<isSupportTerminalInputCfg>
<!--opt,xs:boolean,"true,false,是否支持终端视频输入选择"-->
</isSupportTerminalInputCfg>
<isSupportOutputConfig>
<!--opt,xs:boolean,"true,false,是否支持终端视频输出选择"-->
</isSupportOutputConfig>
</TerminalCap>
</VCSCap>


DEVICE_ABILITY_VehicleInfoResultCap

设备网络SDK开发使用手册

<VehicleInfoResultCap version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<VehicleInfoResultList>
<VehicleInfoResult>
<id>
<!--req,xs: integer, 序号-->
</id>
<isSupportDeviceID>
<!--opt,xs: boolean, 是否支持设备编号-->
</isSupportDeviceID>
<isSupportMonitoringSiteID>
<!--opt,xs: boolean, 是否支持监测点编号-->
</isSupportMonitoringSiteID>
<isSupportIndexID>
<!--opt,xs: boolean, 是否支持序号-->
</isSupportIndexID>
<isSupportPlateNo>
<!--opt,xs: boolean, 是否支持车牌号-->
</isSupportPlateNo>
<isSupportTimeSpan>
<!--opt,xs: boolean, 是否支持抓拍时间-->
</isSupportTimeSpan>
<isSupportCountry>
<!--opt,xs: boolean, 是否支持国家和地区-->
</isSupportCountry>
<isSupportLaneID>
<!--opt,xs: boolean, 是否支持车道号-->
</isSupportLaneID>
<isSupportDirection>
<!--opt,xs: boolean, 是否支持方向-->
</isSupportDirection>
<isSupportBelieve>
<!--opt,xs: boolean, 是否支持置信度-->
</isSupportBelieve>
<isSupportMatchingResult>
<!--opt,xs: boolean, 是否支持非授权名单匹配结果-->
</isSupportMatchingResult>
</VehicleInfoResult>
</VehicleInfoResultList>
</VehicleInfoResultCap>


DEVICE_ABILITY_VideoImgDBCap

设备网络SDK开发使用手册

<VideoImgDBCap version="2.0">
<isSupportUpload>
<!-- opt, xs:boolean，对应上传功能-->
</isSupportUpload>
<isSupportDownLoad>
<!-- opt, xs:boolean，对应下载功能-->
</isSupportDownLoad>
<isSupportDownLoadQos>
<!-- opt, xs:boolean，对应下载流控功能-->
</isSupportDownLoadQos>
<isSupportConfig>
<!-- opt, xs:boolean，对应配置视频库功能-->
</isSupportConfig>
<isSupportQuery>
<!-- opt, xs:boolean，对应查询功能-->
</isSupportQuery>
<isSupportDelete>
<!-- opt, xs:boolean，对应删除功能-->
</isSupportDelete>
</VideoImgDBCap>


DEVICE_ABILITY_VideoImgDBCfgCap

设备网络SDK开发使用手册

<VideoImgDBCfgCap version="2.0" xmlns= "http://www.isapi.org/ver20/XMLSchema">
<isSupportConfigCapacity>
<!-- opt, xs:boolean，是否支持配置视图库容量-->
</isSupportConfigCapacity>
<isSupportUsedSpace>
<!-- opt, xs:boolean，已用空间-->
</isSupportUsedSpace>
<isSupportAvailableSpace>
<!-- opt, xs:boolean，可用空间-->
</isSupportAvailableSpace>
</VideoImgDBCfgCap>


DEVICE_ABILITY_VideoSourceActivationCapability

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 数字通道的前端设备激活能力集描述 -->

<VideoSourceActivationCapability version="2.0">
<ActivateByChannel>
<proxyProtocol opt="HIKVISION, SONY, ISAPI, ONVIF …"/>
<!--req, xs:string-->
</ActivateByChannel>
<ActivateByAddress>
<proxyProtocol opt="HIKVISION, SONY, ISAPI, ONVIF …"/>
<!--req, xs:string-->
</ActivateByAddress>
</VideoSourceActivationCapability>


DEVICE_ABILITY_VoiceBroadcastInfo

设备网络SDK开发使用手册

<VoiceBroadcastInfo version="2.0">
<!--req,语音播报控制参数配置能力集-->
<information min="0" max="128">
<!--req,xs:string,语音播报内容-->
</information>
</VoiceBroadcastInfo>


DEVICE_ABILITY_VoicePromptionCfg

设备网络SDK开发使用手册

<VoicePromptionCfg version="2.0">
<enabled>
<!--req, xs: boolean, 是否启用语音提示 -->
</enabled>
<FileName>
<!--req, 语音提示文件名 -->
<centerBusy min="" max="">
<!--req, xs:string, 中心繁忙提示语音 -->
</centerBusy>
<refuse min="" max="">
<!--req, xs:string, 拒绝语音 -->
</refuse>
<hangUp min="" max="">
<!--req, xs:string, 对讲结束语音 -->
</hangUp>
<callWaitting opt="">
<!--req, xs:string, 呼叫等候音 -->
</callWaitting>
<consultWaitting opt="">
<!--req, xs:string, 业务咨询等候音 -->
</consultWaitting>
</FileName>
</VoicePromptionCfg>


DEVICE_ABILITY_WirelessServer

设备网络SDK开发使用手册

<WirelessServer version="2.0">
<wifiApEnabled>
<!--req,xs:boolean,"true,false", 是否启用无线AP-->
</wifiApEnabled>
<broadcastEnabled>
<!--req,xs:boolean,"true,false", 是否启用广播-->
</broadcastEnabled>
<wlanShareEnabled>
<!--req,xs:boolean,"true,false", 是否启用共享-->
</wlanShareEnabled>
<ssid min="" max="">
<!--req, xs:string, SSID -->
</ssid>

<WirelessSecurity>
<!--opt, 无线安全加密参数-->
<securityMode opt="disable,WEP,WPA-personal,WPA2-personal,WPA-RADIUS,WPA-enterprise,WPA2-enterprise">
<!--opt, xs:string,-->
</securityMode>
<WEP>
<!--dep, depends on <securityMode>, WEP加密参数-->
<authenticationType opt="open,sharedkey,auto">
<!--req, xs:string, "", 身份验证类型-->
</authenticationType>
<defaultTransmitKeyIndex min="" max="">
<!--req, xs:integer, 默认传输密钥个数-->
</defaultTransmitKeyIndex>
<wepKeyLength opt="64,128">
<!--opt, xs:integer “64,128”, 密钥长度类型-->
</wepKeyLength>
<keyType>ASC,HEX</keyType>
<ASCKeyList>
<!--dep, depends on <keyType>, 密钥类型-->
<ASCIIKey>ascii format</ASCIIKey>
</ASCKeyList>
<EncryptionKeyList size="">
<!--dep, depends on <keyType>, WEP加密密钥-->
<encryptionKey>
<!--req, xs:hexBinary, WEP encryption key in hexadecimal format -->
</encryptionKey>
</EncryptionKeyList>
</WEP>
<WPA>
<!--dep, depends on <securityMode>, WPA加密参数-->
<algorithmType opt="TKIP,AES,TKIP/AES">
<!--req, xs:string, “TKIP,AES,TKIP/AES”, 算法类型-->
</algorithmType>
<sharedKey>
<!--opt, xs:string, pre-shared key used in WPA, WPA共享密钥-->
</sharedKey>
<wpaKeyLength min="" max="">
<!--opt, xs: integer, “8-63”, WPA共享密钥长度-->
</wpaKeyLength>
<defaultPassword>
<!--opt,xs:boolen, 是否启用默认WPA密钥-->
</defaultPassword>
</WPA>
</WirelessSecurity>

<!-- req -->
<DHCPEnabled>
<!--req,xs:boolean,"true,false", 是否启用DHCP-->
</DHCPEnabled>
<ipVersion opt="v4,v6">
<!-- req, xs:string-->
</ipVersion>
<HostIpAddress>
<!--req, 主机IP地址-->
<ipAddress>
<!--dep, xs:string -->
</ipAddress>
<ipv6Address>
<!--dep, xs:string -->
</ipv6Address>
</HostIpAddress>
<IPMask>
<!--req, IP地址掩码 -->
<subnetMask>
<!--dep, xs:string, subnet mask for IPv4 address -->
</subnetMask>
<bitMask>
<!--dep, xs:integer, bitmask IPv6 address -->
</bitMask>
</IPMask>
<AddressPool>
<!--req, IP段-->
<startIPV4Address>
<!--dep, xs:string -->
</startIPV4Address>
<endIPV4Address>
<!--dep, xs:string -->
</endIPV4Address>
<startIPV6Address>
<!--dep, xs:string -->
</startIPV6Address>
<endIPV6Address>
<!--dep, xs:string -->
</endIPV6Address>
</AddressPool>
<DNSAddressList size="2">
<!--req-->
<DNSAddress>
<!--req, DNS服务器地址-->
<id>
<!--req,xs:string,start from 1-->
</id>
<ipAddress>
<!--dep, xs:string -->
</ipAddress>
<ipv6Address>
<!--dep, xs:string -->
</ipv6Address>
</DNSAddress>
</DNSAddressList>
<GatewayAddress>
<!--req, 网关-->
<ipAddress>
<!--dep, xs:string -->
</ipAddress>
<ipv6Address>
<!--dep, xs:string -->
</ipv6Address>
</GatewayAddress>
<isMutexWithWireless>
<!--opt,xs:boolean,"true,false", 能力集互斥，表示如果开了wifi就必须关了热点，反之亦然-->
</isMutexWithWireless>
</WirelessServer>


DEVICE_ABILITY_ZoomLinkage

设备网络SDK开发使用手册

<ZoomLinkage version="2.0">
<enabled>
<!--opt,xs:boolen,"指全部通道变倍联动"-->
</enabled>
</ZoomLinkage>


DEVICE_ALARM_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备报警能力集描述 -->
<AlarmAbility version="2.0">
<channelEntry>
<channelID>
<!--req, 通道号-->
</channelID>
<PIRAlarm>
<enabled opt="true,false">
<!--req, 是否启用PIR报警-->
</enabled>
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"></alarmHandleType>
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</PIRAlarm>
<wirelessAlarm>
<enabled opt="true,false">
<!-- req, 是否启用无线报警-->
</enabled>
<wirelessAlarmID min="1" max="8">
<!--req,支持的无线报警个数 -->
</wirelessAlarmID>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"></alarmHandleType>
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</wirelessAlarm>
<CallHelpAlarm>
<enabled opt="true,false">
<!--req,是否启用呼救报警-->
</enabled>
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp"></alarmHandleType>
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</CallHelpAlarm>
</channelEntry>
</AlarmAbility>


DEVICE_ALARM_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取报警能力时pInBuf参数描述-->
<AlarmAbility version="2.0">
<channelID><!-- req, 通道号 --></channelID>
</AlarmAbility>


DEVICE_DYNCHAN_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 数字通道能力集描述-->
<DynChannelAbility version="2.0">
<channelNO>1</channelNO><!--req, 通道号-->
<chanNICConfig><!--opt, 自动添加设备能力,不支持表示仅是手动添加设备-->
<NICSelect>true</NICSelect><!--opt, 是否支持网卡选择-->
<NICType opt="eth0,poe0"/><!--opt, 网卡类型-->
</chanNICConfig>

<!--req, 升级IPC能力-->
<IPCUpgradeAbility version="2.0">
<supportChannelMode>true</supportChannelMode> <!--req,是否支持通道模式-->
<supportStreamIDMode>true</supportStreamIDMode> <!--req, 是否支持流ID模式-->
</IPCUpgradeAbility>

<ChannelRecordStatus>
<!--req, 通道录像状态，对应NET_DVR_CHAN_GROUP_RECORD_STATUS-->
<recordStatus opt="0,1,2,3,4,5,6,7,8,9,10,11"/>
<!--req,录像状态：0-不在录像，1-在录像，2-空闲，3-无连接，4-无输入视频，5-未加载，6-存档中
7-回传中，8-用户名或密码错，9-未验证，10-存档中和录像中，11-录像回传中和录像中-->
<supportValid>true</supportValid ><!--req,是否有效，不支持不显示-->
<supportChannel>true</supportChannel><!--req,通道号，不支持不显示-->
<supportRelatedHD>true</supportRelatedHD><!--req,关联磁盘，不支持不显示-->
<supportOffLineRecord>true</supportOffLineRecord><!--req,断网录像，不支持不显示-->
<ANRCfgReconnect>true</ANRCfgReconnect><!--opt, IPC ANR功能配置后设备是否需要重连-->
</ChannelRecordStatus >

<!--req, 检查数字通道状态-->
<DigitalChanState>
<supportCheck>true</supportCheck><!--opt,是否支持检查,不支持不显示-->
</DigitalChanState>

</DynChannelAbility>


DEVICE_DYNCHAN_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取数字通道能力时pInBuf参数描述-->
<DynChannelAbility version="2.0">
<channelNO>1</channelNO>
<!--req,通道号-->
</DynChannelAbility>


DEVICE_ENCODE_ALL_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备编码能力集描述 -->
<AudioVideoCompressInfo>
<AudioCompressInfo>
<AudioEncodeType> <!-- req, 音频编码类型 -->
<!-- req, 0:G722_1; 1:G711_MU; 2:G711_A; 3: G723; 4: MP1L2; 5 MP2L2; 99: RAW-->
<Range>0,1,2,3,4,5,99</Range>
</AudioEncodeType>
<!-- req, 音频输入类型,0-mic in,1-line in-->
<AudioInType>
<Range>0</Range>
</AudioInType>
<VoiceTalkEncodeType> <!-- req, 语音对讲编码类型 -->
<!-- req, 0:G722_1; 1:G711_MU; 2:G711_A; 3: G723;4: MP1L2;5 MP2L2;99: RAW-->
<Range>0,1,2,3,4,5,99</Range>
</VoiceTalkEncodeType>
<!-- req, 语音对讲音频输入类型,0-mic in,1-line in-->
<VoiceTalkInType>
<Range>0</Range>
</VoiceTalkInType>
</AudioCompressInfo>
<VideoCompressInfo>
<ChannelList>
<ChannelEntry>
<ChannelNumber>1</ChannelNumber><!-- req, 通道-->
<MainChannel>
<VideoEncodeType>
<!-- req, 0-Private 264；1-STD_H264；2-STD_MPEG4；7-STD_RTPMJPEG-->
<Range>1,2</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!-- req, 视频编码复杂度,0-低,1-中,2高-->
<Range>0</Range>
</VideoEncodeEfficiency>
<VideoResolutionList> <!-- req, 分辨率列表 -->
<VideoResolutionEntry>
<Index>0</Index>
<Name>DCIF</Name>
<Resolution>528*384</Resolution><!-- req, DCIF -->
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution><!-- req, CIF -->
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>2</Index>
<Name>QCIF</Name>
<Resolution>176*144</Resolution><!-- req, QCIF -->
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>3</Index>
<Name>4CIF</Name>
<Resolution>704*576</Resolution><!-- req, 4CIF -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>4</Index>
<Name>2CIF</Name>
<Resolution>704*288</Resolution><!-- req, 2CIF -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>5</Index>
<Name>2CIF</Name>
<Resolution>704*288</Resolution><!-- req, QQVGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>6</Index>
<Name>QVGA</Name>
<Resolution>320*240</Resolution><!-- req, QVGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>12</Index>
<Name>384*288</Name>
<Resolution>384*288</Resolution><!-- req, 384*288 -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>15</Index>
<Name>QUXGA</Name>
<Resolution>400*300</Resolution><!-- req, QUXGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>16</Index>
<Name>VGA</Name>
<Resolution>640*480</Resolution><!-- req, VGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>17</Index>
<Name>UXGA</Name>
<Resolution>1600*1200</Resolution><!-- req, UXGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>18</Index>
<Name>SVGA</Name>
<Resolution>800*600</Resolution><!-- req, SVGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>19</Index>
<Name>720P</Name>
<Resolution>1280*720</Resolution><!-- req, 720P -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>20</Index>
<Name>XVGA</Name>
<Resolution>1280*960</Resolution><!-- req, XVGA -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>21</Index>
<Name>HD900</Name>
<Resolution>1600*912</Resolution><!-- req, HD900 -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>27</Index>
<Name>HD1080P</Name>
<Resolution>1920*1080</Resolution><!-- req, 1080P -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>30</Index>
<Name>2048*1536</Name>
<Resolution>2048*1536</Resolution><!-- req, 2048*1536 -->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>28</Index>
<Name>2560*1920</Name>
<Resolution>2560*1920</Resolution><!-- req, 2560*1920 -->
</VideoResolutionEntry>
</VideoResolutionList>

<VideoFrameRate>
<!-- req, 0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6 -->
<!-- req, 9-8; 10-10; 11-12; 12-16; 13-20; 14-15; 15-18; 16-22 -->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
</VideoFrameRate>

<VideoBitrate><!-- req, 编码码率 -->
<Min>16</Min><!-- req, 最小玛率(单位Kb) -->
<Max>16384</Max><!-- req, 最大玛率(单位Kb) -->
</VideoBitrate>

<IntervalBPFrame>
<Range>0,1,2</Range> <!-- req, 0-BBP帧; 1-BP帧;2单P帧 -->
</IntervalBPFrame>
<EFrame>0</EFrame><!-- req, E帧最大编码能力 -->
</MainChannel>
<SubChannelList>
<SubChannelEntry>
<index>1</index><!-- req, 子通道索引 -->
<VideoEncodeType>
<!-- req, 0:Private 264; 1: STD_H264; 2 :STD_MPEG4；7:STD_RTPMJPEG-->
<Range>0,1,2,7</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!-- req, 视频编码复杂度,0-低,1-中,2高-->
<Range>0</Range>
</VideoEncodeEfficiency>
<VideoResolutionList>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution><!-- req, CIF-->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>2</Index>
<Name>QCIF</Name>
<Resolution>176*144</Resolution><!-- req, QCIF-->
</VideoResolutionEntry>

<VideoResolutionEntry>
<Index>6</Index>
<Name>QVGA</Name>
<Resolution>320*240</Resolution><!-- req, QVGA-->
</VideoResolutionEntry>
</VideoResolutionList>

<VideoFrameRate>
<!-- req, 0-全部; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; V2.0版本中新加14-15; 15-18; 16-22 -->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
</VideoFrameRate>

<VideoBitrate><!-- req, 编码码率-->
<Min>16</Min><!-- req, 最小码率(单位Kb)-->
<Max>16384</Max><!-- req, 最大码率(单位Kb)-->
</VideoBitrate>

<IntervalBPFrame>
<!-- req, 0-BBP帧; 1-BP帧;2单P帧-->
<Range>0,1,2</Range>
</IntervalBPFrame>
<EFrame>0</EFrame><!-- req, E帧最大编码能力-->
</SubChannelEntry>
</SubChannelList>
</ChannelEntry>
</ChannelList>
</VideoCompressInfo>
</AudioVideoCompressInfo>


DEVICE_ENCODE_ALL_ABILITY_V20

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备编码能力集描述 -->
<AudioVideoCompressInfo version="2.0">
<AudioCompressInfo>
<Audio>
<!--req, 音频 -->
<ChannelList>
<ChannelEntry>
<ChannelNumber>1</ChannelNumber>
<!--req, 通道1 -->
<!--req, 主码流音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<MainAudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</MainAudioEncodeType>
<!--req, 子码流音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<SubAudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ"/>
<!--音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ/ -->
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</SubAudioEncodeType>
<!--req, 事件码流音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<EventAudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ"/>
<!-- 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ/ -->
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</EventAudioEncodeType>
<!--req, 码流3音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<Stream3AudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ,48kHZ" default="16kHZ"/>
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</Stream3AudioEncodeType>
<!--req, 音频输入类型,0-mic in,1-line in -->
<AudioInType>
<Range>0</Range>
</AudioInType>
<enableNoiseFilter opt="true,false"/>
<!--req, 是否开启声音过滤：true-关，false-开,无此节点说明不支持该使能-->
<noiseFilterSupportSamplingRate opt="8kHZ,16kHZ,32kHZ,44.1kHZ,48kHZ"/>
<!--req, 环境噪声过滤支持的采样率；不支持该节点的，默认全部显示-->
<AudioInVolume>
<!--opt,音频输入音量大小-->
<!--req, 2012-08-29-->
<Min>0</Min>
<Max>100</Max>
</AudioInVolume>
</ChannelEntry>
<ChannelEntry>
<ChannelNumber>2</ChannelNumber>
<!--req, 通道2 -->
<!--req, 主码流音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<MainAudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</MainAudioEncodeType>
<!--req, 子码流音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<SubAudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</SubAudioEncodeType>
<!--req, 事件码流音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<EventAudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</EventAudioEncodeType>
<!--req, 码流3音频编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<Stream3AudioEncodeType>
<Range>0</Range>
<OggVorbisAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G722音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps -->
<G711UAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-U音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<G711AAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G711-A音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<MP2L2AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps,40kbps,48kbps,56kbps,80kbps,96kbps,
112kbps,144kbps,160kbps" default="32kbps"/>
<!--req, MP2L2音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps,7-40Kbps,8-48Kbps,9-56Kbps,
10-80Kbps,11-96Kbps,12-112Kbps,13-144Kbps,14-160Kbps-->
<MP2L2SamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ-->
<MP2L2SamplingRate16kHZ>
<audioBitRate opt="32kbps,40kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,144kbps,160kbps"/>
</MP2L2SamplingRate16kHZ>
<MP2L2SamplingRate32kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate32kHZ>
<MP2L2SamplingRate44.1kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate44.1kHZ>
<MP2L2SamplingRate48kHZ>
<audioBitRate opt="32kbps,48kbps,56kbps,64kbps,80kbps,96kbps,112kbps,128kbps,160kbps,192kbps"/>
</MP2L2SamplingRate48kHZ>
<G726AudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps"/>
<!--req, G726音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps；ipc5.1.0默认0-64Kbps-->
<AACAudioBitRate opt="default,8kbps,16kbps,32kbps,64kbps,128kbps,192kbps" default="32kbps"/>
<!--req, AAC音频码率0-default,1-8Kbps,2-16Kbps,3-32Kbps,4-64kbps,5-128Kbps,6-192Kbps -->
<AACSamplingRate opt="default,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req, AAC音频采样率0-default,1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ -->
<PCMSamplingRate opt="default,8kHZ,16kHZ,32kHZ,48kHZ,44.1kHZ" default="16kHZ"/>
<!--req 音频采样率0-default, 1-16kHZ,2-32kHZ,3-48kHZ,4-44.1kHZ,5-8kHZ-->
</Stream3AudioEncodeType>
<!--req, 音频输入类型,0-mic in,1-line in -->
<AudioInType>
<Range>0</Range>
</AudioInType>
<AudioInVolume>
<!--opt,音频输入音量大小-->
<!--req, 2012-08-29-->
<Min>0</Min>
<Max>100</Max>
</AudioInVolume>
</ChannelEntry>
</ChannelList>
<audioOutVolumeLevel min="1" max="100"/>
<!--req, 设备输出音频等级-->
</Audio>
<VoiceTalk>
<!--req, 语音对讲 -->
<ChannelList>
<ChannelEntry>
<ChannelNumber>1</ChannelNumber>
<!--req, 通道1 -->
<!--req, 语音对讲编码类型0:G722; 1:G711_MU; 2:G711_A; 5:MP2L2; 6:G726; 7-AAC; 8-PCM -->
<VoiceTalkEncodeType>
<Range>0</Range>
</VoiceTalkEncodeType>
<!--req, 语音对讲音频输入类型,0-mic in,1-line in -->
<VoiceTalkInType>
<Range>0</Range>
</VoiceTalkInType>
</ChannelEntry>
</ChannelList>
</VoiceTalk>
</AudioCompressInfo>
<VideoCompressInfo>
<!--req, 视频编码类型 -->
<ChannelList>
<ChannelEntry>
<ChannelNumber>1</ChannelNumber>
<!--req, 通道 -->
<MainChannel>
<VideoEncodeType>
<Range>0,1,2,7,8,10</Range>
<!--req, 0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2，10-H.265-->
</VideoEncodeType>
<VideoEncodeEfficiency>
<Range>0</Range>
<!--req, 视频编码复杂度：0-低,1-中,2高 -->
<suportEncodeType opt="0,1"/>
<!--opt, 0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2，10-H.265 -->
<!--req, 无suportEncodeType节点认为都支持 -->
<EncodeTypeList>
<!--req,编码类型列表，不同的编码类型对应不同的复杂度取值-->
<EncodeType>
<index>10</index>
<Range>1</Range>
</EncodeType>
</EncodeTypeList>
</VideoEncodeEfficiency>
<!--req, 是否支持CABAC -->
<VideoCabac>1</VideoCabac>
<VideoResolutionList>
<!--req, 分辨率列表 -->
<VideoResolutionEntry>
<!--req, DCIF -->
<Index>0</Index>
<Name>DCIF</Name>
<!--req, 此值仅作参考,设备可能返回不一致 -->
<Resolution>528*384</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;26-5;
27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K, -->
<!--req, 10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K, -->
<!--req, 19-1024K,20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K-->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, CIF -->
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K, -->
<!--req, 10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, QCIF -->
<Index>2</Index>
<Name>QCIF</Name>
<Resolution>176*144</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K, -->
<!--req, 10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 4CIF -->
<Index>3</Index>
<Name>4CIF</Name>
<Resolution>704*576</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 2CIF -->
<Index>4</Index>
<Name>2CIF</Name>
<Resolution>704*288</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K, -->
<!--req, 21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, VGA -->
<Index>16</Index>
<Name>VGA</Name>
<Resolution>640*480</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K, -->
<!--req, 21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, UXGA -->
<Index>17</Index>
<Name>UXGA</Name>
<Resolution>1600*1200</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K, -->
<!--req, 21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, SVGA -->
<Index>18</Index>
<Name>SVGA</Name>
<Resolution>800*600</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 720P -->
<Index>19</Index>
<Name>720P</Name>
<Resolution>1280*720</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K, -->
<!--req, 21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, XVGA -->
<Index>20</Index>
<Name>XVGA</Name>
<Resolution>1280*960</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, HD900 -->
<Index>21</Index>
<Name>HD900</Name>
<Resolution>1600*912</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, SXGA -->
<Index>22</Index>
<Name>SXGA</Name>
<Resolution>1280*1024</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 1080P -->
<Index>27</Index>
<Name>HD1080P</Name>
<Resolution>1920*1080</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 2560*1920 -->
<Index>28</Index>
<Name>2560*1920</Name>
<Resolution>2560*1920</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 1600*304 -->
<Index>29</Index>
<Name>1600*304</Name>
<Resolution>1600*304</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 2048*1536 -->
<Index>30</Index>
<Name>2048*1536</Name>
<Resolution>2048*1536</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 1920*1536或2048*1536 -->
<Index>133</Index>
<Name>3MP</Name>
<Resolution>1920*1536</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<!--req, 2560*1944 -->
<Index>134</Index>
<Name>5MP</Name>
<Resolution>2560*1944</Resolution>
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K, -->
<!--req, 20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>

<DynamicAbility>
<dynamicAbilityLinkTo opt="captureMode,vbrAverageCap"/>
<!--req, 动态关联项：宽动态使能，镜头类型对应结构体字段NET_DVR_CAMERAPARAMCFG_EX中byCaptureMode；视频平均码率-->
</DynamicAbility>
</VideoResolutionList>
<IntervalBPFrame>
<Range>0,1,2</Range>
<!--req, 0-BBP帧; 1-BP帧;2单P帧 -->
</IntervalBPFrame>

<SVCFunEnable opt="true,false,auto"/>
<!--req,是否启用, true-启用，false-不启用，auto-自动-->
<SVCSuportEncodeType opt="0,1"/>
<!--req,0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2，无SVCSuportEncodeType节点认为都支持-->

<EFrame>0</EFrame>
<!--req, E帧最大编码能力 -->

<FormatType>
<!--opt,封转类型，不支持不返回此节点-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</FormatType>

<PassiveTransFormatType>
<!--req,被动转码支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</PassiveTransFormatType>

<GBModeFormatType>
<!--req,国标28281模式下支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req,1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</GBModeFormatType>

<AutoMatchSupport opt="0,1,2"/>
<!--req,支持和源一致的参数，1-分辨率，4-帧率，5-视频码率类型，6-视频码率，7-I帧间隔，8-码流类型，9-图像质量，10-BP帧类型，11-视频编码类型，12-音频编码类型，13-视频编码复杂度，14-封装类型-->

<StreamSmooth>
<level min="" max=""/>
<!--req,1等级表示清晰(Clear)，100表示平滑(Smooth)-->
<!--req,0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2-->
<supportEncodeType opt="1"/>
<supportRateType opt="constant,variable"/>
<!--req constant 定码率,variable 变码率-->
</StreamSmooth>

<VideoFrameRate50>
<!--高帧率50-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/><!--req 互斥能力-->
</VideoFrameRate50>

<VideoFrameRate60>
<!--高帧率60-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/><!--req 互斥能力-->
</VideoFrameRate60>

<VideoFrameRate100>
<!--高帧率100-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/><!--req 互斥能力-->
</VideoFrameRate100>

<VideoFrameRate120><!--高帧率120-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/><!--req 互斥能力-->
</VideoFrameRate120>
<SmartCodecCap>
<!--req, Smart编码 -->
<supportCodeType opt="H.264,H.265">
<!--req, xs:string= "支持的编码类型,当视频编码类型为其他类型时，Smart264、Smart265的开关不显示" -->
</supportCodeType>
<smartCodec opt="true,false" default="false">
<!--req, xs:boolen="", "Smart编码开关"-->
</smartCodec>
<H264>
<!--需要关闭显示的功能，在开启智能编码功能使能，重启设备生效后，对应关闭显示的功能能力不返回-->
<readOnlyAbility opt="keyFrameInterval,Profile,SVC,videoBitrate">
<!-- req, xs:string, "需要灰显的项有：I帧间隔、编码复杂度、SVC"-->
</readOnlyAbility>
<!--req, 当Smart264开启后，在变码率情况下，界面上码率上限下方增加一行，标题为平均码率，同时码率上限灰显，不能修改，
平均码率默认值根据码率上限做转换，平均码率的范围为(0,码率上限]。平均码率单独保存，不复用码率上限；
当码率类型为定码率时，要求平均码率不显示，码率上限可以配置。-->
<BitrateType>
<Constant>
<!--req,定码率-->
<support opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</support>
<hiddenAbility opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</hiddenAbility>
</Constant>
<Variable>
<!--req,变码率-->
<support opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</support>
<readOnlyAbility opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</readOnlyAbility>
</Variable>
</BitrateType>
<smart264EnabledPrompt opt="prompt1,prompt2,prompt3">
<!--opt,wo,xs:string,"Smart264使能提示语"-->
</smart264EnabledPrompt>
</H264>
<H265>
<!--需要关闭显示的功能，在开启智能编码功能使能，重启设备生效后，对应关闭显示的功能能力不返回-->
<readOnlyAbility opt="keyFrameInterval,Profile,SVC,fixedQuality">
<!--req, xs:string, "需要灰显的项有：I帧间隔、编码复杂度、SVC、图片质量"-->
</readOnlyAbility>
<BitrateType>
<Constant>
<!--req,定码率-->
<support opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</support>
<hiddenAbility opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</hiddenAbility>
</Constant>
<Variable>
<!--req,变码率-->
<support opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</support>
<readOnlyAbility opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</readOnlyAbility>
</Variable>
</BitrateType>
<smart265EnabledPrompt opt="prompt4">
<!--opt,wo,xs:string,"Smart265使能提示语"-->
</smart265EnabledPrompt>
</H265>
<rateType opt="constant,variable"/>
<!--opt,constant(定码率)，variable(变码率)-->
<!--opt,rateType对应结构体NET_DVR_COMPRESSION_INFO_V30中的字段byBitrateType,
在没有返回该节点<rateType>的情况下, 默认都支持, 一旦返回该节点, 就按照节点内容进行解析显示(子码流和第三码流定义类似)-->
</SmartCodecCap>
</MainChannel>
<SubChannelList>
<SubChannelEntry>
<index>1</index>
<!--req, 子通道索引 -->
<VideoEncodeType>
<!--req, 0-私有264,1-标准h264,2-标准mpeg4,7-M-JPEG , 8-MPEG2 -->
<Range>0,1,2,7,8</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!--req, 视频编码复杂度,0-低,1-中,2高 -->
<Range>0</Range>
</VideoEncodeEfficiency>
<!--req, 是否支持CABAC -->
<VideoCabac>1</VideoCabac>
<VideoResolutionList>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution>
<!--req, CIF -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 29-100; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->

<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K, -->
<!--req, 11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K, -->
<!--req, 21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>2</Index>
<Name>QCIF</Name>
<Resolution>176*144</Resolution>
<!--req, QCIF -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K, -->
<!--req, 12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K, -->
<!--req, 22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>6</Index>
<Name>QVGA</Name>
<Resolution>320*240</Resolution>
<!--req, QVGA -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K, -->
<!--req, 12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K, -->
<!--req, 22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<DynamicAbility>
<dynamicAbilityLinkTo opt="captureMode,vbrAverageCap"/>
<!--req, 动态关联项：宽动态使能，镜头类型，对应结构体字段NET_DVR_CAMERAPARAMCFG_EX中byCaptureMode；视频平均码率-->
</DynamicAbility>
</VideoResolutionList>
<IntervalBPFrame>
<!--req, 0-BBP帧; 1-BP帧;2单P帧 -->
<Range>0,1,2</Range>
</IntervalBPFrame>
<EFrame>0</EFrame>
<!--req, E帧最大编码能力 -->
<SVCFunEnable opt="true,false,auto"/>
<!--req,是否启用, true-启用，false-不启用，auto-自动-->

<FormatType>
<!--opt,封转类型，不支持不返回此节点-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</FormatType>

<PassiveTransFormatType>
<!--req,被动转码支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</PassiveTransFormatType>

<GBModeFormatType>
<!--req,国标28281模式下支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req,1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</GBModeFormatType>

<AutoMatchSupport opt="0,1,2"/>
<!--req,支持和源一致的参数，1-分辨率，4-帧率，5-视频码率类型，6-视频码率，7-I帧间隔，8-码流类型，9-图像质量，10-BP帧类型，11-视频编码类型，12-音频编码类型，13-视频编码复杂度，14-封装类型-->

<StreamSmooth>
<level min="" max=""/>
<!--req, 1等级表示清晰(Clear)，100表示平滑(Smooth)-->
<!--req, 0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2 -->
<supportEncodeType opt="1"/>
<supportRateType opt="constant,variable"/>
<!--req, constant定码率,variable变码率-->
</StreamSmooth>
<VideoFrameRate50>
<!--高帧率50-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate50>

<VideoFrameRate60>
<!--高帧率60-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate60>

<VideoFrameRate100>
<!--高帧率100-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate100>

<VideoFrameRate120>
<!--高帧率120-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate120>
<SmartCodecCap>
<!--req, Smart编码 -->
<supportCodeType opt="H.264,H.265">
<!--req, xs:string= "支持的编码类型,当视频编码类型为其他类型时，Smart264、Smart265的开关不显示" -->
</supportCodeType>
<smartCodec opt="true,false" default="false">
<!--req, xs:boolen="", "Smart编码开关"-->
</smartCodec>
<H264>
<!--需要关闭显示的功能，在开启智能编码功能使能，重启设备生效后，对应关闭显示的功能能力不返回-->
<readOnlyAbility opt="keyFrameInterval,Profile,SVC,videoBitrate">
<!-- req, xs:string, "需要灰显的项有：I帧间隔、编码复杂度、SVC"-->
</readOnlyAbility>
<!--req, 当Smart264开启后，在变码率情况下，界面上码率上限下方增加一行，标题为平均码率，同时码率上限灰显，不能修改，
平均码率默认值根据码率上限做转换，平均码率的范围为(0,码率上限]。平均码率单独保存，不复用码率上限；
当码率类型为定码率时，要求平均码率不显示，码率上限可以配置。-->
<BitrateType>
<Constant>
<!--req,定码率-->
<support opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</support>
<hiddenAbility opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</hiddenAbility>
</Constant>
<Variable>
<!--req,变码率-->
<support opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</support>
<readOnlyAbility opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</readOnlyAbility>
</Variable>
</BitrateType>
<smart264EnabledPrompt opt="prompt1,prompt2,prompt3">
<!--opt,wo,xs:string,"Smart264使能提示语"-->
</smart264EnabledPrompt>
</H264>
<H265>
<!--需要关闭显示的功能，在开启智能编码功能使能，重启设备生效后，对应关闭显示的功能能力不返回-->
<readOnlyAbility opt="keyFrameInterval,Profile,SVC,fixedQuality">
<!--req, xs:string, "需要灰显的项有：I帧间隔、编码复杂度、SVC、图片质量"-->
</readOnlyAbility>
<BitrateType>
<Constant>
<!--req,定码率-->
<support opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</support>
<hiddenAbility opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</hiddenAbility>
</Constant>
<Variable>
<!--req,变码率-->
<support opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</support>
<readOnlyAbility opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</readOnlyAbility>
</Variable>
</BitrateType>
<smart265EnabledPrompt opt="prompt4">
<!--opt,wo,xs:string,"Smart265使能提示语"-->
</smart265EnabledPrompt>
</H265>
<rateType opt="constant,variable"/>
<!--opt,constant(定码率)，variable(变码率)-->
<!--opt,rateType对应结构体NET_DVR_COMPRESSION_INFO_V30中的字段byBitrateType,
在没有返回该节点<rateType>的情况下, 默认都支持, 一旦返回该节点, 就按照节点内容进行解析显示(子码流和第三码流定义类似)-->
</SmartCodecCap>
</SubChannelEntry>
</SubChannelList>
<EventChannel>
<VideoEncodeType>
<!--req, 0-私有264,1-标准h264,2-标准mpeg4,7-M-JPEG , 8-MPEG2 -->
<Range>0,1,2,7,8</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!--req, 视频编码复杂度,0-低,1-中,2高 -->
<Range>0</Range>
</VideoEncodeEfficiency>
<!--req, 是否支持CABAC -->
<VideoCabac>1</VideoCabac>
<VideoResolutionList>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution>
<!--req, CIF -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K, -->
<!--req, 12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K, -->
<!--req, 22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>2</Index>
<Name>QCIF</Name>
<Resolution>176*144</Resolution>
<!--req, QCIF -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K, -->
<!--req, 12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-280K,21-1536K, -->
<!--req, 22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>6</Index>
<Name>QVGA</Name>
<Resolution>320*240</Resolution>
<!--req, QVGA -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K, -->
<!--req, 12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K, -->
<!--req, 22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>
<DynamicAbility>
<dynamicAbilityLinkTo opt="captureMode,vbrAverageCap"/>
<!--req, 动态关联项：宽动态使能，镜头类型对应结构体字段NET_DVR_CAMERAPARAMCFG_EX中byCaptureMode；视频平均码率-->
</DynamicAbility>
</VideoResolutionList>
<IntervalBPFrame>
<!--req, 0-BBP帧; 1-BP帧;2单P帧 -->
<Range>0,1,2</Range>
</IntervalBPFrame>
<EFrame>0</EFrame>
<!--req, E帧最大编码能力 -->
<FormatType>
<!--opt,封转类型，不支持不返回此节点-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</FormatType>

<PassiveTransFormatType>
<!--req,被动转码支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</PassiveTransFormatType>

<GBModeFormatType>
<!--req,国标28281模式下支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req,1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</GBModeFormatType>

<AutoMatchSupport opt="0,1,2"/>
<!--req,支持和源一致的参数，1-分辨率，4-帧率，5-视频码率类型，6-视频码率，7-I帧间隔，8-码流类型，9-图像质量，10-BP帧类型，11-视频编码类型，12-音频编码类型，13-视频编码复杂度，14-封装类型-->

<StreamSmooth>
<level min="" max=""/>
<!--req, 1等级表示清晰(Clear)，100表示平滑(Smooth)-->
<!--req, 0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2 -->
<supportEncodeType opt="1"/>
<supportRateType opt="constant,variable"/>
<!--req, constant定码率,variable变码率-->
</StreamSmooth>
<VideoFrameRate50>
<!--高帧率50-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate50>

<VideoFrameRate60>
<!--高帧率60-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate60>

<VideoFrameRate100>
<!--高帧率100-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate100>

<VideoFrameRate120>
<!--高帧率120-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate120>
</EventChannel>
<Stream3>
<VideoEncodeType>
<!--req, 0-私有264,1-标准h264,2-标准mpeg4,7-M-JPEG,0xff-无效 -->
<Range>0,1,2,7</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!--req, 视频编码复杂度,0-低,1-中,2高 -->
<Range>0</Range>
</VideoEncodeEfficiency>
<!--req, 是否支持CABAC -->
<VideoCabac>1</VideoCabac>
<VideoResolutionList>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution>
<!--req, CIF -->
<!--req, P制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率，如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req, N制支持的帧率：0-全帧率;1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12;
12-16; 13-20; 14-15; 15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3;
26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率，如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req, 编码码率节点:如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<!--req, 编码码率 -->
<Min>16</Min>
<!--req, 最小码率(单位Kb) -->
<Max>16384</Max>
<!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K, -->
<!--req, 12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K, -->
<!--req, 22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
<AverageVideoBitrate>
<!--req, 平均编码码率（在SmartCodec使能开启下生效）-->
<Min>32</Min>
<!--req, 最小码率(单位Kb)-->
<Max>16384</Max>
<!--req, 最大码率(单位Kb)-->
<!--req, 0-0 K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K-->
<!--req, 13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K-->
<!--req, 24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
<Default>
<!--req, 不同的产品的默认值不一致，设备保证正确性-->
</Default>
</AverageVideoBitrate>
</VideoResolutionEntry>
<DynamicAbility>
<dynamicAbilityLinkTo opt="captureMode,vbrAverageCap"/>
<!--req, 动态关联项：宽动态使能，镜头类型对应结构体字段NET_DVR_CAMERAPARAMCFG_EX中byCaptureMode；视频平均码率-->
</DynamicAbility>
</VideoResolutionList>
<IntervalBPFrame>
<!--req, 0-BBP帧; 1-BP帧;2单P帧 -->
<Range>0,1,2</Range>
</IntervalBPFrame>
<EFrame>0</EFrame>
<!--req, E帧最大编码能力 -->
<SVCFunEnable opt="true,false,auto"/>
<!--req,是否启用, true-启用，false-不启用，auto-自动-->

<FormatType>
<!--opt,封转类型，不支持不返回此节点-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</FormatType>

<PassiveTransFormatType>
<!--req,被动转码支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req, 1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</PassiveTransFormatType>

<GBModeFormatType>
<!--req,国标28281模式下支持的封装类型-->
<Range>1,2,3,4</Range>
<!--req,1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181）-->
</GBModeFormatType>

<AutoMatchSupport opt="0,1,2"/>
<!--req,支持和源一致的参数，1-分辨率，4-帧率，5-视频码率类型，6-视频码率，7-I帧间隔，8-码流类型，9-图像质量，10-BP帧类型，11-视频编码类型，12-音频编码类型，13-视频编码复杂度，14-封装类型-->

<StreamSmooth>
<level min="" max=""/>
<!--req, 1等级表示清晰(Clear)，100表示平滑(Smooth)-->
<!--req, 0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2 -->
<supportEncodeType opt="1"/>
<supportRateType opt="constant,variable"/>
<!--req, constant定码率,variable变码率-->
</StreamSmooth>
<VideoFrameRate50>
<!--高帧率50-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate50>

<VideoFrameRate60>
<!--高帧率60-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate60>

<VideoFrameRate100>
<!--高帧率100-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate100>

<VideoFrameRate120>
<!--高帧率120-->
<!--req, 互斥能力:数字降噪，宽动态，旋转，10中SMD 区域入侵，越界侦测，进入区域，离开区域，徘徊，聚集，快速移动，
停车，物品遗留，物品拿取 接入能力-->
<mutexAbility opt="digitalNoiseReduction,WDR,corridorMode,fieldDetection,traversingVirtualPlane,regionEntrance,
regionExiting,loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req 互斥能力-->
</VideoFrameRate120>
<SmartCodecCap>
<!--req, Smart编码 -->
<supportCodeType opt="H.264,H.265">
<!--req, xs:string= "支持的编码类型,当视频编码类型为其他类型时，Smart264、Smart265的开关不显示" -->
</supportCodeType>
<smartCodec opt="true,false" default="false">
<!--req, xs:boolen="", "Smart编码开关"-->
</smartCodec>
<H264>
<!--需要关闭显示的功能，在开启智能编码功能使能，重启设备生效后，对应关闭显示的功能能力不返回-->
<readOnlyAbility opt="keyFrameInterval,Profile,SVC,videoBitrate">
<!-- req, xs:string, "需要灰显的项有：I帧间隔、编码复杂度、SVC"-->
</readOnlyAbility>
<!--req, 当Smart264开启后，在变码率情况下，界面上码率上限下方增加一行，标题为平均码率，同时码率上限灰显，不能修改，
平均码率默认值根据码率上限做转换，平均码率的范围为(0,码率上限]。平均码率单独保存，不复用码率上限；
当码率类型为定码率时，要求平均码率不显示，码率上限可以配置。-->
<BitrateType>
<Constant>
<!--req,定码率-->
<support opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</support>
<hiddenAbility opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</hiddenAbility>
</Constant>
<Variable>
<!--req,变码率-->
<support opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</support>
<readOnlyAbility opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(码率上限)"-->
</readOnlyAbility>
</Variable>
</BitrateType>
<smart264EnabledPrompt opt="prompt1,prompt2,prompt3">
<!--opt,wo,xs:string,"Smart264使能提示语"-->
</smart264EnabledPrompt>
</H264>
<H265>
<!--需要关闭显示的功能，在开启智能编码功能使能，重启设备生效后，对应关闭显示的功能能力不返回-->
<readOnlyAbility opt="keyFrameInterval,Profile,SVC,fixedQuality">
<!--req, xs:string, "需要灰显的项有：I帧间隔、编码复杂度、SVC、图片质量"-->
</readOnlyAbility>
<BitrateType>
<Constant>
<!--req,定码率-->
<support opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</support>
<hiddenAbility opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</hiddenAbility>
</Constant>
<Variable>
<!--req,变码率-->
<support opt="averageVideoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</support>
<readOnlyAbility opt="videoBitrate">
<!--req, xs:string,"averageVideoBitrate(平均码率),videoBitrate(视频码率)"-->
</readOnlyAbility>
</Variable>
</BitrateType>
<smart265EnabledPrompt opt="prompt4">
<!--opt,wo,xs:string,"Smart265使能提示语"-->
</smart265EnabledPrompt>
</H265>
<rateType opt="constant,variable"/>
<!--opt,constant(定码率)，variable(变码率)-->
<!--opt,rateType对应结构体NET_DVR_COMPRESSION_INFO_V30中的字段byBitrateType,
在没有返回该节点<rateType>的情况下, 默认都支持, 一旦返回该节点, 就按照节点内容进行解析显示(子码流和第三码流定义类似)-->
</SmartCodecCap>
</Stream3>
<TranscodeStream>
<VideoEncodeType>
<!--req,0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，0xff-无效-->
<Range>0,1,2,7</Range>
</VideoEncodeType>
<VideoEncodeEfficiency>
<!--req,视频编码复杂度，0-低，1-中，2高-->
<Range>0</Range>
</VideoEncodeEfficiency>
<!--req,是否支持CABAC-->
<VideoCabac>1</VideoCabac>
<VideoResolutionList>
<VideoResolutionEntry>
<Index>1</Index>
<Name>CIF</Name>
<Resolution>352*288</Resolution>
<!--req,CIF -->
<!--req,为了兼容原解析方式，只支持N制式的设备也必须P制的帧率节点，且P制和N制的帧率一致；只支持P制的设备仅返回P制的帧率节点；P制和N制都支持的，返回两个制式的帧率节点-->
<!--req,P制支持的帧率：0-全帧率; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20; 14-15;
15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3; 26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRate>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</VideoFrameRate>
<!--req, P制支持的帧率；如果没有下面VideoFrameRateN节点，表示P制和N制支持的帧率一致，都用此节点表示-->
<!--req,N制支持的帧率：0-全帧率; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6;9-8; 10-10; 11-12; 12-16; 13-20; 14-15;
15-18; 16-22; 17-25; 18-30; 19-35; 20-40; 21-45; 22-50; 23-55; 24-60; 25-3; 26-5; 27-7; 28-9; 30-120; 31-24; 32-48; 33-8.3-->
<VideoFrameRateN>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</VideoFrameRateN>
<!--req, N制支持的帧率；如果没有此节点，表示P制和N制支持的帧率一致，都用VideoFrameRate节点表示-->
<!--req,编码码率节点：如果设备支持自定义码率，以最大最小格式返回，如果设备不支持自定义码率，以Range格式返回-->
<VideoBitrate>
<!--req,编码码率-->
<Min>16</Min>
<!--req,最小码率(单位Kb)-->
<Max>16384</Max>
<!--req,最大码率(单位Kb)-->
<!--req,0-保留，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，
11-256K，12-320K，13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，
21-1536K，22-1792K，23-2048K，24-3072K，25-4096K，26-8192K，27-16384K-->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>
<DynamicAbility>
<dynamicAbilityLinkTo opt="captureMode,vbrAverageCap"/>
<!--req, 动态关联项：宽动态使能，镜头类型对应结构体字段NET_DVR_CAMERAPARAMCFG_EX中byCaptureMode；视频平均码率-->
</DynamicAbility>
</VideoResolutionList>
<IntervalBPFrame>
<!--req,0-BBP帧; 1-BP帧;2单P帧-->
<Range>0,1,2</Range>
</IntervalBPFrame>
<EFrame>0</EFrame>
<!--req,E帧最大编码能力-->
<SVCFunEnable opt="true,false,auto"/>
<!--req,是否启用, true-启用，false-不启用，auto-自动-->

<StreamSmooth>
<level min="" max=""/>
<!--req, 1等级表示清晰(Clear)，100表示平滑(Smooth)-->
<!--req, 0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2 -->
<supportEncodeType opt="1"/>
<supportRateType opt="constant,variable"/>
<!--req, constant定码率,variable变码率-->
</StreamSmooth>

</TranscodeStream>
</ChannelEntry>
</ChannelList>
</VideoCompressInfo>
<!--req, 码流附加信息-->
<StreamAttachInfo>
<streamWithVca>true</streamWithVca>
<!--码流叠加智能信息-->
<mutexAbility opt="PDC"/>
<!-- opt -->
</StreamAttachInfo>
</AudioVideoCompressInfo>


DEVICE_ENCODE_ALL_ABILITY_V20_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取编码能力时pInBuf参数描述-->
<AudioVideoCompressInfo>
<!--req, 单次获取一个通道，视频和音频通道一致 -->
<AudioChannelNumber>1</AudioChannelNumber><!--req, 通道1 -->
<VoiceTalkChannelNumber>1</VoiceTalkChannelNumber><!--req, 通道1 -->
<VideoChannelNumber>1</VideoChannelNumber><!--req, 通道1 -->
</AudioVideoCompressInfo>


DEVICE_ENCODE_CURRENT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备当前编码能力集描述 -->
<CurrentCompressInfo version="2.0">
<ChannelNumber>1</ChannelNumber><!--req, 通道1 -->
<!--req, 当前主码流编码类型,0-私有264,1-标准h264,2-标准mpeg4,7-M-JPEG,8-MPEG2,0xff-无效 -->
<VideoEncodeType>0</VideoEncodeType>
<!--req, 当前主码流分辨率,0-DCIF,1-CIF,2-QCIF,3-4CIF,4-2CIF,16-VGA,17-UXGA,18-SVGA,19-HD720p,20-XVGA,21-HD900p,22-SXGAp,27-1920*1080,28-2560*1920,29-1600*304,30-2048*1536,31-2448*2048,32-2448*1200,33-2448*800,34-XGA,35-SXGA,36-WD1(960*576/960*480),37-1080i-->
<VideoResolution>3</VideoResolution>

<!--req, 当前编码分辨率下,主码流支持的帧率 -->
<VideoFrameRate>
<!--req, 0-全部,1-1/16,2-1/8,3-1/4,4-1/2,5-1,6-2,7-4,8-6,9-8,10-10,11-12,12-16,13-20,14-15,15-18,16-22-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
</VideoFrameRate>
<!--req, 编码码率节点：如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回-->
<VideoBitrate>
<Min>16</Min><!--req, 最小码率(单位Kb) -->
<Max>16384</Max><!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>

<!--req, 当前编码分辨率和当前帧率情况下,子主码流支持的分辨率和帧率 -->
<SubChannelList>
<SubChannelEntry>
<index>1</index><!--req, 子通道索引 -->
<VideoResolutionList>
<VideoResolutionEntry>
<!--req,CIF -->
<Index>1</Index>
<VideoFrameRate>
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
</VideoFrameRate>
<!--req, 编码码率节点：如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<Min>16</Min><!--req, 最小码率(单位Kb) -->
<Max>16384</Max><!--req, 最大码率(单位Kb) -->
<!--req, 0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K -->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry>
<VideoResolutionEntry>
<Index>6</Index>
<VideoFrameRate>
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
</VideoFrameRate>
<!--req, 编码码率节点：如果设备支持自定义码率,以最大最小格式返回,如果设备不支持自定义码率,以Range格式返回 -->
<VideoBitrate>
<Min>16</Min><!--req,最小码率(单位Kb)-->
<Max>16384</Max><!--req,最大码率(单位Kb)-->
<!--req,0-保留,1-16K,2-32K,3-48k,4-64K,5-80K,6-96K,7-128K,8-160k,9-192K,10-224K,11-256K,12-320K,13-384K,14-448K,15-512K,16-640K,17-768K,18-896K,19-1024K,20-1280K,21-1536K,22-1792K,23-2048K,24-3072K,25-4096K,26-8192K,27-16384K-->
<Range>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</Range>
</VideoBitrate>
</VideoResolutionEntry><!--req,QVGA-->
</VideoResolutionList>
</SubChannelEntry>
</SubChannelList>
</CurrentCompressInfo>


DEVICE_ENCODE_CURRENT_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取设备当前编码能力时pInBuf参数描述 -->
<CurrentCompressInfo>
<!--req, 为兼容IPC的能力集，若无通道信息表示通道1，若有通信信息根据解析结果返回 -->
<ChannelNumber>1</ChannelNumber><!--req, 通道1 -->
<!--req, 当前主码流编码类型，0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG -->
<VideoEncodeType>0</VideoEncodeType>
<!--req, 当前主码流分辨率，0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF，16-VGA，17-UXGA，18-SVGA，19-HD720p，20-XVGA，21-HD900p，22-SXGAp，27-1920*1080，28-2560*1920，29-1600*304，30-2048*1536，31-2448*2048，32-2448*1200，33-2448*800，34-XGA，35-SXGA,36-WD1(960*576/960*480),37-1080i -->
<VideoResolution>3</VideoResolution>
</CurrentCompressInfo>


DEVICE_JPEG_CAP_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备JPEG抓图能力集描述-->
<JpegCaptureAbility version="2.0">
<!--req,通道号-->
<channelNO>1</channelNO>
<FindPicInfo>
<!--req,对应结构 NET_DVR_FIND_PICTURE_PARAM -->
<supportFileType opt= "CMR,MOTION,ALARM,EDR,ALARMANDMOTION,manual,intelligentPic,pir,wlsensor,callhelp,
previewScreenshot,facedetection,LineDetection,FieldDetection,scenechangedetection,
lockPlaybackScreenshot,INTELLIGENT,regionEntrance,regionExiting,loitering,group,
rapidMove,parking,unattendedBaggage,attendedBaggage,VehicleDetection,HvtVehicleDetection,
evidence,fireDetection,shipsDetection,thermEarlyWarning,thermAlarm,thermDiffAlarm,
thermometryOffLineAlarm,faceSnap,vcaEventGetUp,vcaEventAdvReachHeight,vcaEventToiletTarry,
vcaEventSafetyHelmet,illegalParking,wrongdirection,crosslane,vehicleexist,lanechange,
turnround,pedestrian,roadblock,abandonedObject,fogDetection,construction,congestion,
trafficAccident,parallelParking,evicenceallType"/>
<!--req, 查找的图片类型: CMR-定时抓图, MOTION-移动侦测抓图, ALARM-报警抓图, EDR-报警|移动侦测抓图, ALARMANDMOTION-报警&移动侦测抓图
manual-手动抓图, intelligentPic-智能图片, pir-PIR报警, wlsensor-无线报警, callhelp-呼救报警, previewScreenshot-预览时截图，
facedetection人脸侦测, LineDetection-越界侦测, FieldDetection-入侵区域侦测, scenechangedetection-场景变更侦测,
lockPlaybackScreenshot-设备本地回放时截图, INTELLIGENT-智能侦测, regionEntrance-进入区域侦测, regionExiting-离开区域侦测,
loitering-徘徊侦测, group-人员聚集侦测, rapidMove-快速运动侦测, parking-停车侦测, unattendedBaggage-物品遗留侦测,
attendedBaggage-物品拿取侦测, VehicleDetection-车辆检测, HvtVehicleDetection-混行检测, evidence-取证事件, fireDetection-火点检测,
shipsDetection-船只检测, thermEarlyWarning-测温预警, thermAlarm-测温报警, thermDiffAlarm-测差报警, thermometryOffLineAlarm-离线测温报警,
faceSnap-人脸抓拍, vcaEventGetUp-起身检测, vcaEventAdvReachHeight-折线攀高, vcaEventToiletTarry-如厕超时, vcaEventSafetyHelmet-安全帽检测,
illegalParking-违停, wrongdirection-逆行, crosslane-压线, vehicleexist-机占非, lanechange-变道, turnround-掉头, pedestrian-行人检测,
roadblock-路障, abandonedObject-抛洒物, fogDetection-浓雾检测, construction-施工, congestion-拥堵, trafficAccident-交通事故检测,
parallelParking-侧方停车,evidence-手动触发报警, 0xff-全部类型-->

<enableNeedCard opt="disable,able"/>
<province opt="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,0xff"/>
<!--req, 省份索引-->
<cardNumberLen min="" max=""/>
<StartTime>
<year min="" max=""/>
<month min="" max=""/>
<day min="" max=""/>
<hour min="" max=""/>
<minute min="" max=""/>
<second min="" max=""/>
</StartTime>
<StopTime>
<year min="" max=""/>
<month min="" max=""/>
<day min="" max=""/>
<hour min="" max=""/>
<minute min="" max=""/>
<second min="" max=""/>
</StopTime>
<trafficType opt="license,vehicleType,illegalType"/>
<vehicleType opt="smallCar,bigCar,bus,truck,car,minibus,smallTruck"/>
<subHvtType opt="all,motorVehicle,nonMotorVehicle,pedestrian"/>
<!--req, all-全部,Non-motor Vehicle(非机动车), Motor Vehicle(机动车), Pedestrian(行人)-->
<illegalType opt="postPic,lowSpeed,highSpeed,retrograde,rushRedLight,pressLane,violateGuide,roadStrand,
vehicleillegal,roadStand,changeLane,dirveillegalLane,violate,crossParking,greenParking"/>
<region opt="Res,EU,ER,EUAndCIS,All"/>
<!--req,区域索引：0-保留，1-欧洲（EU），2-俄罗斯(ER)，3-欧洲&俄罗斯(EU&CIS)，0xff-所有-->
<country opt="0,1,2,3,4,5,6,7,8,9,10,11,12,0xfe,0xff "/>
<!--req 国家和地区索引:0-算法库不支持牌识国家和地区, 1-捷克共和国(CZ - Czech Republic)，2-法国(FRA - France)，3-德国(DE - Germany)，
4-西班牙(E - Spain)，5-意大利(IT - Italy)，6-荷兰(NL - Netherlands)，7-波兰(PL - Poland)，8-斯洛伐克(SVK - Slovakia)，
9-白俄罗斯(BY - Belorussia)，10-摩尔多瓦(MDA - Moldova)，11-俄罗斯(RU - Russia)，12-乌克兰(UA - Ukraine)，13-比利时(BEL - Belgium)，
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-斯洛文尼亚，0xfe-无法识别，0xff-全部(All)-->
<licenseLen min="" max=""/>
<!--opt,车牌号支持最大，最小长度-->
<supportAIDTFSType opt="illegalParking,wrongdirection,crosslane,vehicleexist,lanechange,turnround,evidence"/>
<!--opt,AID和TFS事件类型同时支持的事件图片查找类型: illegalParking-违停, wrongdirection-逆行, crosslane-压线,
vehicleexist-机占非, lanechange-变道, turnround-掉头,evidence-手动触发报警-->
</FindPicInfo>

<SmartPicSearchInfo>
<!--req,对应结构NET_DVR_SMART_SEARCH_PIC_PARA-->
<supportFileType opt= "vehicleDetection,faceFeature,facePicData,FieldDetection,unattendedBaggage,attendedBaggage,regionEntrance,
regionExiting,parking,loitering,group,rapidMove,running,violentMotion,failDown,peopleNumChange,leavePosition,retentionParam,situationAnalysis, playCellphone,allType"/>
<!--req 0-车辆检索，1-人脸属性，2-人脸图片数据，3-穿越警戒线(越界侦测)，4-区域入侵，5-物品遗留，6-物品拿取，7-进入区域，8-离开区域，9-非法停车，
10-徘徊，11-人员聚集，12-快速移动，13-人员奔跑，14-剧烈运动，15-人员倒地，16-人数异常，17-离岗检测，18-人员滞留，19-态势分析 20-玩手机-->
<StartTime>
<year min="" max=""/>
<month min="" max=""/>
<day min="" max=""/>
<hour min="" max=""/>
<minute min="" max=""/>
<second min="" max=""/>
</StartTime>
<StopTime>
<year min="" max=""/>
<month min="" max=""/>
<day min="" max=""/>
<hour min="" max=""/>
<minute min="" max=""/>
<second min="" max=""/>
</StopTime>
<VehicleCond>
<!--req,支持车辆检索时返回的-->
<licenseLen min="1" max="16"/>
<!--req,支持的车牌号长度-->
<country opt="czech,france,germany,spain,italy,netherlands,poland,slovakia,
belorussia,moldova,russia,ukraine,canada,us,australia"/>
<!--req,支持的国家和地区-->
</VehicleCond>
<FaceFeature>
<!--req,人脸属性-->
<ageGroup opt="infant,child,youngster,adolescent,youth,prime,midlife,midage,old"/>
<!--req,支持的年龄段范围-->
<sex opt="man,women"/>
<withGlasses opt="true,false"/>
<!--req,是否支持带眼镜-->
</FaceFeature>
<FacePicData>
<!--req,人脸图片数据-->
<faceScore min="0" max="100"/>
<!--req,相似度-->
<picType opt="jpg"/>
<!--req,支持的图片格式-->
</FacePicData>
<isSupportFaceDataAnalysis>
<!--opt, xs: bool,"true, false",是否支持人脸数据分析,true则支持使用只上传图片ID和坐标的方式进行识别-->
</isSupportFaceDataAnalysis>
<isSupportHumanMisinfo>
<!--opt, xs:boolean,"只获取人体误报信息,支持返回true,不支持不返回"-->
</isSupportHumanMisinfo>
</SmartPicSearchInfo>

<ManualCapture>
<!--req,手动抓图-->
<!--req, IPC返回当前支持的分辨率-->
<ResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>CIF</resolutionName>
<!--req, xs:string, "CIF"...,分辨率名称-->
<index>0</index>
<!--req, xs:inter,该分辨率对应SDK中定义的值-->
</ResolutionEntry>
<ResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>4CIF</resolutionName>
<!--req, xs:string, "4CIF"...,分辨率名称-->
<index>2</index>
<!--req, xs:inter,该分辨率对应SDK中定义的值-->
</ResolutionEntry>
<picQuality opt="best,better,normal"/>
<!--图片质量,best-最好，better-较好，normal-一般-->
</ManualCapture>
<SchedCapture>
<!--req,计划抓图-->
<!--req,以下是抓图配置中对应的参数能力,SDK结构体NET_DVR_JPEG_CAPTURE_CFG-->
<TimingCap>
<!--req,定时抓图-->
<ResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>CIF</resolutionName>
<!--req, xs:string, "CIF"...,分辨率名称-->
<index>0</index>
<!--req, xs:inter,该分辨率对应SDK中定义的值-->
</ResolutionEntry>
<ResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>4CIF</resolutionName>
<!--req, xs:string, "4CIF"...,分辨率名称-->
<index>2</index>
<!--req, xs:inter,该分辨率对应SDK中定义的值-->
</ResolutionEntry>
<intervalUnit>ms</intervalUnit>
<!--req,时间间隔单位,s/ms-->
<interval min="" max="" opt="0"/>
<!--req, xs:inter,抓拍间隔,可选0表示关闭抓图(没有连续值min和max空，没有可选值opt空,后端前两个空，opt填上)-->
<!--req,以上是抓图配置中对应的参数能力,SDK结构体NET_DVR_JPEG_CAPTURE_CFG-->
<!--req,以下是抓图计划配置中对应的参数能力,SDK结构体NET_DVR_SCHED_CAPTURECFG-->
<RecorderDuration min="" max=""/>
<!--req,抓图保存天数-->
<DayCapture>
<!--req,全天抓图-->
<captureType opt="timing,motion,alarm,motionOrAlarm,motionAndAlarm,vca,command,thermometryOffLineAlarm "/>
<!--req,抓图类型-->
</DayCapture>
<TimeSlot>
<!--req,时间段抓图-->
<slotNum>8</slotNum>
<!--req,时间段-->
<captureType opt="timing,motion,alarm,motionOrAlarm,motionAndAlarm,vca,command,thermometryOffLineAlarm "/>
<!--req,抓图类型-->
</TimeSlot>
<HolidayDay>
<!--req,假日全天抓图-->
<captureType opt="timing,motion,alarm,motionOrAlarm,motionAndAlarm,vca,command,thermometryOffLineAlarm "/>
<!--req,抓图类型-->
</HolidayDay>
<HolidayTimeSlot>
<!--req,假日时间段抓图-->
<slotNum>8</slotNum>
<!--req,时间段-->
<captureType opt="timing,motion,alarm,motionOrAlarm,motionAndAlarm,vca,command,thermometryOffLineAlarm "/>
<!--req,抓图类型-->
</HolidayTimeSlot>
<delayTime opt="0,3,4,5,10,30,60,120,300"/>
<!--抓图延时时间, unit:s -->
<!--req,以上是抓图计划配置中对应的参数能力,SDK结构体NET_DVR_SCHED_CAPTURECFG-->
</TimingCap>
<!--req,以下是抓图配置中对应的参数能力,SDK结构体NET_DVR_JPEG_CAPTURE_CFG-->
<EventCap>
<eventType opt="motion,hide,loss,PIR,wireless,callhelp,vca,facedDetect,lineDetection,
filedDetection,sceneChangeDetection,regionEntrance,regionExiting,loitering,
group,rapidMove,parking,unattendedBaggage,attendedBaggage"/>
<!--req, xs:string,事件类型-->
<ResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>CIF</resolutionName>
<!--req, xs:string, "CIF"...,分辨率名称-->
<index>0</index>
<!--req, xs:inter,该分辨率对应SDK中定义的值-->
</ResolutionEntry>
<ResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>4CIF</resolutionName>
<!--req, xs:string, "4CIF"...,分辨率名称-->
<index>2</index>
<!--req, xs:inter,该分辨率对应SDK中定义的值-->
</ResolutionEntry>
<intervalUnit>ms</intervalUnit>
<!--req,时间间隔单位,s/ms-->
<interval min="" max="" opt="0"/>
<!--req, xs:inter,抓拍间隔,可选0表示关闭抓图(没有连续值min和max空，没有可选值opt空,后端前两个空，opt填上)-->
<capTimes min="" max=""/>
<!--req, xs:inter,抓拍张数-->
<eventCapChan opt="1,2"/>
<!--req, xs:inter,事件可触发抓拍的通道号列举-->
<alarmInCapChan opt="1,2"/>
<!--req, xs:inter,报警输入可触发抓拍的通道号列举-->
</EventCap>
<!--req,以上是抓图配置中对应的参数能力,SDK结构体NET_DVR_JPEG_CAPTURE_CFG-->
<AdvancedParam>
<!--opt,"抓图高级参数配置"-->
<streamType opt="0-mainstream,1-substream,2-stream3,3-stream4,4-stream5">
<!--opt,xs:string, 码流类型-->
</streamType>
</AdvancedParam>
</SchedCapture>
<PromptDescription>
<prompt1>true</prompt1>
<!--opt,支持就返回，不支持不返回，上层判断节点存在-->
</PromptDescription>
<CapturePicture>
<!--opt,抓图能力，对应接口NET_DVR_CapturePicture_V50-->
<Resolution>
<!--req,支持分辨率-->
<value opt="500-384*288"/>
</Resolution>
<picQuality opt="best,good,normal"/>
<!--req,图片质量系数：0-最好，1-较好，2-一般-->
<picFormat opt="0-Jpeg"/>
<!--req,设备抓图图片格式：0- JPEG-->
<picType opt="normal,calibPanoramicPic,calibPanoramicPicinFlash"/>
<!--req,设备抓图类型：normal-设备通用抓图，calibPanoramicPic-鹰眼标定图片（FPJA重启刷新获取图片，需要时间较长，最长超时3分钟），calibPanoramicPicinFlash-从Flash中获取已存在鹰眼标定图片-->
</CapturePicture>
<isSupportCaptureJPEGPicWithAppendData>
<!--opt, xs:boolean,"是否支持带全屏测温数据的设备抓图,支持返回true,不支持不返回"-->
</isSupportCaptureJPEGPicWithAppendData>
</JpegCaptureAbility>


DEVICE_JPEG_CAP_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取JPEG抓图能力时pInBuf参数描述-->
<JpegCaptureAbility version="2.0">
<channelNO>1</channelNO><!--req,通道号-->
</JpegCaptureAbility>


DEVICE_NETAPP_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备网络应用参数能力集描述 -->
<NetAppAbility version="2.0">
<NTP>
<intervalUnit>minute</intervalUnit>
<!--req,时间间隔单位,minute,hour-->
<serverTest>true</serverTest>
<!--req,支持ntp服务器测试-->
</NTP>
<Net>
<NetworkInterface>
<networkInterfaceNum>2</networkInterfaceNum>
<!--req,网卡个数-->
<NetworkInterfaceEntry>
<id>1</id>
<type opt="10Mbase-T,10MBase-T-full,100MBase-TX,100M-full,10M/100M/1000M-adapt,1000M-full"/>
<MTU min="500" max="9676"/>
<isSupportDNS>
<!--opt, 是否支持DNS手动设置使能配置，1-表示支持，不支持不显示-->
</isSupportDNS>
<EthernetPortNo min="" max=""/>
<!--opt,ro,网口号-->
</NetworkInterfaceEntry>
<NetworkInterfaceEntry>
<id>2</id>
<type opt="10Mbase-T,10MBase-T-full,100MBase-TX,100M-full,10M/100M/1000M-adapt,1000M-full"/>
<MTU min="500" max="9676"/>
<isSupportDNS>
<!--opt, 是否支持DNS手动设置使能配置，1-表示支持，不支持不显示-->
</isSupportDNS>
<EthernetPortNo min="" max=""/>
<!--opt,ro,网口号-->
</NetworkInterfaceEntry>
</NetworkInterface>
<multicastIpAddr opt="IPV4,IPV6"/>
<!--req,多播地址类型-->
<IPv6Address>
<IPv6List>
<!--req,是否支持IPv6地址信息获取功能,有接口-->
<enabled>true</enabled>
</IPv6List>
<IPv6Mode opt="routerAdvertisement,DHCP,manual"/>
<!--req,IPv6分配方式, routerAdvertisement—路由公告,DHCP,manual—手动设置-->
</IPv6Address>
<DHCPandPPPoE>
<!--opt,该节点表示DHCP和PPPoE是否支持同时设置-->
<enabled>true</enabled>
<!--req,若支持同时设置，该节点必须存在-->
</DHCPandPPPoE>
<IPTest>true</IPTest>
<!--req,IP冲突测试-->
</Net>
<Email>
<receiverNum>3</receiverNum>
<!--req,收件人个数-->
<emailTest>true</emailTest>
<!--req,邮件测试,对应接口：NET_DVR_StartEmailTest-->
<emailTestWithParam>true</emailTestWithParam>
<!--req,带参数的邮件测试，对应接口：NET_DVR_StartRemoteConfig（命令：NET_DVR_EMAIL_SERVER_TEST）-->
<enableTLS>true</enableTLS >
<!--req,邮件支持TLS加密-->
<enableStartTLS>true</enableStartTLS>
<!--opt,邮件支持启用TSL-->
</Email>
<Bonjour>
<enabled>true</enabled>
<!--opt,支持Bonjour-->
</Bonjour>
<UPNP>
<!--2012-08-29-->
<NATType opt="manual,auto"/>
<!--req,映射类型,0-手动(manual),1-自动(auto)-->
<friendNameLen min="0" max="64"/>
<!--req,UPNP服务名-->
<serverPort>
<enabled>true</enabled>
<!--req,支持服务端口(8000)的映射设置-->
</serverPort>
<HTTPPort>
<enabled>true</enabled>
<!--req,支持HTTP(80)的映射设置-->
</HTTPPort>
<RTSPPort>
<enabled>true</enabled>
<!--req,支持RTSP端口(554)的映射设置-->
</RTSPPort>
<HTTPSPort>
<enabled>true</enabled>
<!--req,支持HTTPS端口的映射设置-->
</HTTPSPort>
<ManualMap>
<enabled>true</enabled>
<!--req,支持手动映射-->
</ManualMap>
<SDKOverTLSPort>
<enabled>true</enabled>
<!--opt,支持SDKOverTLS端口的映射设置-->
</SDKOverTLSPort>
</UPNP>
<IPAddrFilter>
<!--req,IP地址过滤能力, 2012-08-29-->
<IPAddrType opt="IPV4,IPV6"/>
<!--req,过滤IP地址类型-->
<filterType opt="forbid,permit"/>
<!--req,过滤类型,0-禁用,1-允许-->
<IPTest>true</IPTest>
<!--req,IP冲突测试-->
</IPAddrFilter>
<FTP>
<!--2012-08-29-->
<SecondFTP>
<enabled>true</enabled>
<!--req,支持备用FTP-->
</SecondFTP>
<Protocol>
<type opt="FTP, SFTP"/>
<!--req,支持的FTP协议类型-->
</Protocol>

<AnonyFTP>
<enabled>true</enabled>
<!--req,支持匿名FTP-->
</AnonyFTP>
<dirLevel opt="rootDir,topDir,subDir"/>
<!--req,支持FTP目录-->
<topDirMode opt="deviceName,deviceNO,deviceIP,monitor,time,custom,violatetype,direction,place,buildingOrUnitNum,periodNo"/>
<!--req,一级目录类型-->
<subDirMode opt="chanName,chanNO,time,laneNO,custom,violatetype,direction,place,buildingOrUnitNum,outDoorNo,devIndex"/>
<!--req,二级目录类型-->
<serverTest>true</serverTest>
<!--req,支持FTP服务器测试-->
<ftpPicType opt="0,1,2"/>
<!--req,启动停车场抓拍图片命名规则, 0-保留, 1-停车场抓拍图片命名规则,2-可视对讲抓拍命名规则-->
<supportPicNameRule opt="deviceIP,time,buildingOrUnitNum,outDoorNo,unlockType,deviceName,periodNo,devIndex"/>
<!--req,DevIP-设备IP,Time-时间,BuildingNumber-栋号单元号,OutDoorUnitID-门口机编号,UnlockType-开锁方式,
DeviceName-设备名称,periodNo-期号,devIndex-设备编号-->
<picNameRuleType opt="default,prefix">
<!-- opt, xs:string, 图片命令规则类型：default-默认, prefix-自定义前缀-->
</picNameRuleType>
<picNamePrefix min="0" max="32">
<!-- dep, xs:string；依赖于picNameRuleType为prefix类型, 自定义前缀长度-->
</picNamePrefix>
<notSupportSymbol opt = "0,1,2,3,4,5,6,7,8,9,10">
<!-- opt, xs:string；图片命名前缀中不支持的特殊符号；其所引分别代表 / \ : * ? ' " < > | % 该节点暂不实现-->
</notSupportSymbol>

</FTP>
<SOCKS>
<SOCKSVersion opt="SOCKS4,SOCKS5"/>
<!--req,SOCKS版本-->
<proxyIP opt="IPV4,IPV6,domain"/>
<!--req,代理服务器地址支持的类型-->
<proxyPort min="" max=""/>
<!--req,代理服务器端口-->
<userNameLength min="" max=""/>
<!--req,代理服务器用户名长度-->
<passwordLength min="" max=""/>
<!--req,代理服务器密码长度-->
</SOCKS>
<QoS>
<manageDscp min="" max=""/>
<!--req,管理数据的DSCP值-->
<alarmDscp min="" max=""/>
<!--req,报警数据的DSCP值-->
<videoDscp min="" max=""/>
<!--req,视频数据的DSCP值-->
<audioDscp min="" max=""/>
<!--req,音频数据的DSCP值-->
<flagType opt="videoAudio,videoAudioSeparate"/>
<!--req,标签类型,videoAudio-音视频合并,videoAudioSeparate-音视频分开-->
</QoS>
<HTTPS>
<HTTPSPort min="" max=""/>
<!--req,HTTPS端口-->
<Certificate>
<certtype opt="CA,Certificate,privateKey"/>
<!-- req,证书类型,0-CA,1-Certificate,2-私钥文件-->
<fileType opt="PEM,PFX"/>
<!-- req,证书文件类型,0-PEM,1-PFX-->
<keyAlgorithm opt="RSA,DSA"/>
<!-- req,加密算法类型,0-RSA 1-DSA-->
<keyLen opt="512,1024,2048" def=""/>
<!-- req,加密长度-->
<SignatureAlgorithm opt="MD5,RSA,DSA"/>
<!-- req,签名算法类型,MD5、RSA、DSA-->
<certRequest opt="true,false"/>
<!--req,证书请求（证书请求，由第三方数字签名,区别于之前的创建证书，默认HIK签名）-->
</Certificate>
</HTTPS>
<NAS>
<enabled>true</enabled>
<!--opt,支持NAS搜索-->
<serverTest>true</serverTest>
<!--req,支持NAS服务器测试-->
</NAS>
<IPSAN>
<enabled>true</enabled>
<!--opt,支持IPSAN搜索-->
</IPSAN>
<NAT>
<enabled>true</enabled>
<!--req,支持NAT-->
</NAT>
<FuzzyUpgrade>
<enabled>true</enabled>
<!--req,支持FuzzyUpgrade模糊升级-->
</FuzzyUpgrade>
<AuxiliaryDevUpgrade>
<enabled>true</enabled>
<!--req,支持AuxiliaryDevUpgrade辅助设备升级(ENUM_UPGRADE_AUXILIARY_DEV)-->
<devType opt="keyborad,xxx,router,zone"/>
<!--req,升级设备类型：keyborad-键盘,xxx-机芯,router-路由器,zone-防区-->
</AuxiliaryDevUpgrade>
<EthernetChannel>
<!--req,端口聚合功能，不支持不显示-->
<ethernetPortNum>8</ethernetPortNum>
<!--req,端口数量-->
<ethernetLinkNum>8</ethernetLinkNum>
<!--req,链路数量-->
</EthernetChannel>
<CMS>
<cmsNo min="" max=""/>
<!--req, 推模式设备注册平台个数-->
<ehomeNo min="" max=""/>
<!--req, ehome平台序号-->
<CmsParam>
<enable opt="open,close"/>
<!--使能-->
<serverIpv4>true</serverIpv4>
<!--req,支持IPV4-->
<serverIpv6>true</serverIpv6>
<!--req,支持IPV6-->
<serverPort min="" max=""/>
<!--req,平台端口号-->
<serverProtocolType opt="private,EHome"/>
<!--req,平台支持的协议,私有协议，EHome协议-->
<deviceStatus opt="offline,online"/>
<!--req,设备注册状态-->
<deviceIdLength min="" max=""/>
<!--req,设备ID长度-->
<netWork opt="auto,wiredNetWorkFirst,wiredNetWork,3GNetWork"/>
<!--req,自动,有线网络优先,有线网络,3G网络-->
<deviceID opt="0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,
v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"/>
<!--req,设备ID支持的字符-->
<addressType opt="IP/IPV6, domain"/>
<!--req,支持的地址类型-->
<protocolVersion opt="v2.0, v4.0"/>
<!--opt,协议版本-->
<isNotSupportPassword>true</isNotSupportPassword>
<!--反向能级，不返回表示支持密码，返回值为true表示不支持密码-->
<platformEhomeVersionLength attri="readonly" min="" max=""/>
<!--req,设备ID长度该字段只读-->
<mutexAbility opt="ezviz, gbt28181"/>
<!--req,互斥能力ezviz,gbt28181接入能力-->
</CmsParam>
</CMS>
<CloudStorage>
<enable opt="disable,enable"/>
<!--req 支持云直存方式-->
<poolID min="" max=""/>
<userNameLen min="" max=""/>
<passwdLen min="" max=""/>
<poolInfo opt="postVideoPool,illegalVideoPool,vehicleDetection"/>
<!--req,数组0表示卡口录像池，数组1表示违章录像池, 数组2表示车辆侦测数据池（IPC/D）-->
<V2.0>
<enable opt="disable,enable"/>
<!--req, 支持云存储2.0协议-->
<isSupportAccessKey>
<!--opt, xs:boolen, 是否支持访问密钥-->
</isSupportAccessKey>
<isSupportSecretKey>
<!--opt, xs:boolen, 是否支持加密密钥-->
</isSupportSecretKey>
<postPoolID min="0" max="4294967295">
<!--opt, xs:integer-->
</postPoolID>
<accessKeyLen min="1" max="64"/>
<!--dep, 访问密钥长度, isSupportAccessKey为true时有效-->
<secretKeyLen min="1" max="64"/>
<!--dep, 加密密钥长度, isSupportAccessKey为true时有效-->
<poolInfo opt="postVideoPool,illegalVideoPool,vehicleDetection"/>
<!--req 数组0表示卡口录像池，数组1表示违章录像池, 数组2表示车辆侦测数据池（IPC/D）-->
</V2.0>
<Test>
<serverIpv4>true</serverIpv4>
<!--支持IPV4-->
<serverIpv6>true</serverIpv6>
<!--支持IPV6-->
<serverPort min="" max=""/>
<!--平台端口号-->
<poolID min="" max=""/>
<userNameLen min="" max=""/>
<passwdLen min="" max=""/>
<poolInfo opt="postVideoPool,illegalVideoPool,vehicleDetection"/>
<!--数组0表示卡口录像池，数组1表示违章录像池, 数组2表示车辆侦测数据池（IPC/D）-->
<isSupportAccessKey>
<!--opt, xs:boolen, 是否支持访问密钥-->
</isSupportAccessKey>
<isSupportSecretKey>
<!--opt, xs:boolen, 是否支持加密密钥-->
</isSupportSecretKey>
<accessKeyLen min="1" max="64"/>
<!--dep, 访问密钥长度, isSupportAccessKey为true时有效-->
<secretKeyLen min="1" max="64"/>
<!--dep, 加密密钥长度, isSupportAccessKey为true时有效-->
</Test>
</CloudStorage>
<allBitRate opt="support"/>
<!--NET_DVR_CHANNELSTATE_V30中的dwAllBitRate字段值-->
<NetCfg>
<Ethernet1>
<IPAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<IPAddrMaskType opt="IPV4,IPV6"/>
<!--req,IP地址掩码-->
<netInterface opt="10MBase-T,10MBase-T_FullDuplex,100MBase-TX,100M_FullDuplex,Adaptive,1000M_FullDuplex"/>
<port min="" max=""/>
<mtu min="" max=""/>
<macAddrLen min="" max=""/>
</Ethernet1>
<Ethernet2>
<IPAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<IPAddrMaskType opt="IPV4,IPV6"/>
<!--req,IP地址掩码-->
<netInterface opt="10MBase-T,10MBase-T_FullDuplex,100MBase-TX,100M_FullDuplex,Adaptive,1000M_FullDuplex"/>
<port min="" max=""/>
<mtu min="" max=""/>
<macAddrLen min="" max=""/>
</Ethernet2>
<manageHost1IpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<manageHost2IpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<alarmHostIpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<alarmHost2IpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<manageHost1Port min="" max=""/>
<manageHost2Port min="" max=""/>
<alarmHostIpPort min="" max=""/>
<alarmHost2IpPort min="" max=""/>
<useDhcp opt="enable,disable"/>
<IPV6Mode opt="route,manual,dhcp"/>
<privateMulticastDiscovery opt="enable,disable"/>
<onvifMulticastDiscovery opt="enable,disable"/>
<dnsServer1IpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<dnsServer2IpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<IpResolverLen min="" max=""/>
<ipResolverPort min="" max=""/>
<httpPortNo min="" max=""/>
<multicastIpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<gatewayIpAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
<PPPOE>
<pppoe opt="enable,disable"/>
<pppoeUserNameLen min="" max=""/>
<pppoeUserPassWordLen min="" max=""/>
<pppoeIPAddrType opt="IPV4,IPV6"/>
<!--req,IP地址类型-->
</PPPOE>
<RTMPCfg>
<isSupportRTMPCfg opt="true,false"/>
<!--req,是否支持RTMP-->
<streamType opt="mainStream,subStream"/>
<!--req,支持的码流类型-->
</RTMPCfg>
<enableDNS opt="enable,disable"/>
<!--req,DNS使能-->
</NetCfg>

<BondCfg>
<bondNum min="" max=""/><!--opt,ro,支持绑定网卡数目-->
<bondMode opt="balance-rr, active-backup, balance-xor, broadcast, 802.3ad, balance-tlb, balance-alb"/>
<!--opt,绑定模式：轮转模式、主备模式、XOR模式、广播模式、IEEE 802.3ad 动态链路聚合、自适应传输负载均衡、自适应负载均衡（虚拟化）-->
<isSupportBondExtension opt="true,false"/>
<!--opt,是否支持bond扩展-->
<NetworkInterfaceBond>
<!--opt -->
<EthernetPortNo min="" max=""/>
<!--opt,ro,网口号-->
</NetworkInterfaceBond>
</BondCfg>

<SatelliteTiming>
<enabled opt="true,false" default="true"/>
<!--req,卫星定位时间使能控制-->
</SatelliteTiming>
</NetAppAbility>


DEVICE_NETAPP_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取网络应用参数能力时pInBuf参数描述-->
<NetAppAbility version="2.0">
</NetAppAbility>


DEVICE_NETWORK_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备无线网络能力集描述 -->
<NetworkSetting version="2.0">
<!-- req, wifi能力描述 -->
<WirelessSetting>
<InterfaceMode>
<!-- req, 0-自动切换; 1-有线模式-->
<Range>0,1</Range>
</InterfaceMode>
<NetworkMode>
<!-- req, 网络模式-->
<!-- req, 0 -managed; 1- ad-hoc(不通过路由器,设备在无线网络上别人就能看到设备)-->
<Range>0,1</Range>
</NetworkMode>
<NotSupportAutoDNS>true</NotSupportAutoDNS>
<!--req,不支持DNS自动能力返回该能力值-->
<SecurityMode>
<!-- req, 安全模式-->
<Range>0,1,2,3,4,5</Range>
<!-- req, 0 不加密; 1 wep; 2 wpa-psk; 3 wpa-enterprise; 4 wpa2-psk; 5 wpa2-enterprise -->
<!-- req, 与老设备兼容方法,先解析此节点,若有节点根据节点内容,若无此节点,默认都支持0-不加密类型（其他加密类型仍根据下面节点解析）-->
<WEP>
<!-- req, WEP加密模式-->
<AuthenticationType>
<!-- req, WEP认证类型-->
<!-- req, 0开放式; 1共享式-->
<Range>0,1</Range>
</AuthenticationType>
<WEPKeyLength>
<!-- req, WEP认证密钥长度-->
<!-- req, 0:64位; 1 :128位; 2 :152位-->
<Range>0,1,2</Range>
</WEPKeyLength>
<WEPKeyType>
<!-- req, WEP密钥类型-->
<!-- req, 0:16进制; 1:ASCII码-->
<Range>0,1</Range>
</WEPKeyType>
</WEP>
<WPA_PSK>
<!-- req, WAP_PSK认证类型-->
<WPAKeyLength>
<Min>8</Min>
<Max>63</Max>
</WPAKeyLength>
<WPAEncryptType>
<!-- req, WAP_PSK加密模式-->
<!-- req, 0-AES, 1-TKIP-->
<Range>0,1</Range>
</WPAEncryptType>
</WPA_PSK>
<WPA_enterprise>
<WPAEncryptType>
<!-- req, 0-AES, 1-TKIP-->
<Range>0,1</Range>
</WPAEncryptType>
<AuthType>
<!-- req,认证类型-->
<Range>0,1,2</Range>
<!-- req,认证类型,0-EAP_TTLS,1-EAP_PEAP,2-EAP_TLS-->
</AuthType>
<EAP_TTLS>
<EapolVersion>
<!-- req,EAPOL版本,0-版本1,1-版本2-->
<Range>0,1</Range>
</EapolVersion>
<InterAuthType>
<!-- req,内部认证方式,0- PAP,1- MSCHAPV2-->
<Range>0,1</Range>
</InterAuthType>
<AnonyIdentityLength>
<!-- req,匿名身份-->
<Min>0</Min>
<Max>32</Max>
</AnonyIdentityLength>
<UserNameLength>
<!-- req,用户名-->
<Min>1</Min>
<Max>32</Max>
</UserNameLength>
<PasswordLength>
<!-- req,密码-->
<Min>1</Min>
<Max>32</Max>
</PasswordLength>
<Certificate>
<Certtype>
<Range>0,1,2</Range>
<!-- req,证书类型,0-CA,1-Certificate,2-私钥文件-->
</Certtype>
<FileType>
<Range>0,1</Range>
<!-- req,证书文件类型,0-PEM,1-PFX-->
</FileType>
</Certificate>
</EAP_TTLS>
<EAP_PEAP>
<EapolVersion>
<!-- req,EAPOL版本,0-版本1,1-版本2-->
<Range>0,1</Range>
</EapolVersion>
<InterAuthType>
<!-- req, 内部认证方式,0-GTC,1-MD5,2-MSCHAPV2-->
<Range>0,1,2</Range>
</InterAuthType>
<PeapVersion>
<!-- req,PEAP版本,0-版本0,1-版本1-->
<Range>0,1</Range>
</PeapVersion>
<PeapLabel>
<!-- req,PEAP标签,0-老标签,1-新标签-->
<Range>0,1</Range>
</PeapLabel>
<AnonyIdentityLength>
<!-- req,匿名身份-->
<Min>0</Min>
<Max>32</Max>
</AnonyIdentityLength>
<UserNameLength>
<!-- req,用户名-->
<Min>1</Min>
<Max>32</Max>
</UserNameLength>
<PasswordLength>
<!-- req,密码-->
<Min>1</Min>
<Max>32</Max>
</PasswordLength>
<Certificate>
<Certtype>
<Range>0,1,2</Range>
<!-- req,证书类型,0-CA,1-Certificate,2-私钥文件-->
</Certtype>
<FileType>
<Range>0,1</Range>
<!-- req,证书文件类型,0-PEM,1-PFX-->
</FileType>
</Certificate>
</EAP_PEAP>
<EAP_TLS>
<EapolVersion>
<!-- req,EAPOL版本,0-版本1,1-版本2-->
<Range>0,1</Range>
</EapolVersion>
<IdentityLength>
<!-- req,身份-->
<Min>1</Min>
<Max>32</Max>
</IdentityLength>
<PrivateKeyPswdLength>
<!-- req,私钥密码-->
<Min>1</Min>
<Max>32</Max>
</PrivateKeyPswdLength>
<Certificate>
<Certtype>
<Range>0,1,2</Range>
<!-- req,证书类型,0-CA,1-Certificate,2-私钥文件-->
</Certtype>
<FileType>
<Range>0,1</Range>
<!-- req,证书文件类型,0-PEM,1-PFX-->
</FileType>
</Certificate>
</EAP_TLS>
</WPA_enterprise>
</SecurityMode>
<closeWifi opt="true,false"/>
<!--opt,是否支持关闭wifi，true-支持关闭，false-不支持关闭-->
<mutexAbility opt="wirelessServer"/>
<!--opt，和wifi热点互斥 -->
</WirelessSetting>
<WPS>
<Enabled>
<Range>0,1</Range>
<!-- req,WPS使能,0 disable 1 enable-->
<Default>1</Default>
</Enabled>
<WPSConnect>
<Range>0,1,2,3</Range>
<!-- req,WPS连接方式,0-PBC,1-AP PIN,2-设备产品PIN码,路由器输入实现连接-->
</WPSConnect>
</WPS>
<MessageConfig>
<enable opt="true,false"/>
<allowListNum>8</allowListNum>
<PhoneCfg>
<phoneNumLen>32</phoneNumLen>
<supportEntry opt="SMSAlarm, SMSCtrl, CallCtrl"/>
<SMSAlarmType opt="diskfull, diskerror, nicbroken, ipconflict, illaccess, AlarmInErr, tamper,
vmd, wireless, pir, callhelp, MOTION, hideAlarm, AudioDetection, scenechangeDetection,
defocusDetection, facedetection, LineDetection, FieldDetection, regionEntrance,
regionExiting, loitering, group, rapidMove, parking, unattendedBaggage, attendedBaggage,dataTrafficExcess"/>
<SMSCtrlType opt="messageReboot"/>
</PhoneCfg>
</MessageConfig>
<SendSms>
<phoneNumLen>32</phoneNumLen>
<msgLen>140</msgLen>
</SendSms>

<WifiDHCPAddr>
<enable opt="true,false"/>
<!--req,是否支持wifi模式下DHCP范围配置，true-支持设置，false-不支持设置-->
</WifiDHCPAddr>

<WifiClientListInfo>
<enable opt="true,false"/>
<!--req,是否支持获取wifi下连接的客户端信息，true-支持设置，false-不支持设置-->
</WifiClientListInfo>
<support64bitKey opt="WPA-personal, WPA2-personal"/>
<!--opt,是否支持64位十六进制密码, 目前只有WPA-personal和WPA2-personal支持的-->
</NetworkSetting>


DEVICE_RAID_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备RAID参数能力集描述 -->
<RAID version="2.0">
<RaidType>
<!--req, RAID类型,1-MARVELL RAID卡,2-软RAID -->
<Range>1,2</Range>
</RaidType>
<RaidAutoRebuild>
<!--req, 是否支持配置RAID自动重建,1-支持,不支持无此项 -->
<Range>1</Range>
</RaidAutoRebuild>
<AdapterUpgrade>
<!--req, 是否支持固件升级,1-支持,不支持无此项 -->
<Range>1</Range>
</AdapterUpgrade>
<MaxPdCount>
<!--req, 最大物理磁盘个数 -->
<Value>1</Value>
</MaxPdCount>
<MaxArrayCount>
<!--req, 最大阵列个数 -->
<Value>1</Value>
</MaxArrayCount>
<MaxVdCount>
<!--req, 最大可显示虚拟磁盘个数 -->
<Value>1</Value>
</MaxVdCount>
<MaxCreateVdCount>
<!--req, 最大可创建虚拟磁盘个数 -->
<Value>1</Value>
</MaxCreateVdCount>
<SpareType>
<!--req, 热备类型,1-全局热备,2-指定阵列热备 -->
<Range>1,2</Range>
</SpareType>
<RaidMode>
<!--req, 阵列模式,1-RAID0,2-RAID1,3-RAID10,4-RAID1E,5-RAID5,6-RAID6,7-RAID50,8-JBOD,9-RAID60 -->
<Range>1,2,3,4,5,6,7,8,9</Range>
</RaidMode>
<RebuildArray>
<!--req, 是否支持阵列重建,1-支持,不支持无此项 -->
<Range>1</Range>
</RebuildArray>
<MigrateArray>
<!--req, 是否支持阵列迁移,1-支持,不支持无此项 -->
<Range>1</Range>
</MigrateArray>
<MigrateArrayType>
<!--req, 支持阵列迁移类型,不支持阵列迁移无此项 -->
<!--req, 1-RAID0,2-RAID1,3-RAID10,4-RAID1E,5-RAID5,6-RAID6,7-RAID50,8-JBOD,9-RAID60 -->
<RAID0> <!--req, 迁移前阵列类型 -->
<Range>2,3,4,5,6,7,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID0>
<RAID1> <!--req, 迁移前阵列类型 -->
<Range>1,3,4,5,6,7,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID1>
<RAID10> <!--req, 迁移前阵列类型 -->
<Range>1,2,4,5,6,7,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID10>
<RAID1E> <!--req, 迁移前阵列类型 -->
<Range>1,2,3,5,6,7,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID1E>
<RAID5> <!--req, 迁移前阵列类型 -->
<Range>1,2,3,4,6,7,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID5>
<RAID6> <!--req, 迁移前阵列类型 -->
<Range>1,2,3,4,5,7,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID6>
<RAID50> <!--req, 迁移前阵列类型 -->
<Range>1,2,3,4,5,6,8,9</Range> <!--req, 迁移后阵列类型 -->
</RAID50>
<JBOD> <!--req, 迁移前阵列类型 -->
<Range>1,2,3,5,4,6,7,9</Range> <!--req, 迁移后阵列类型 -->
</JBOD>
<RAID60> <!--req, 迁移前阵列类型 -->
<Range>1,2,3,4,5,6,7,8</Range> <!--req, 迁移后阵列类型 -->
</RAID60>
</MigrateArrayType>
<ScanArray>
<!--req, 是否支持重新扫描阵列,1-支持,不支持无此项 -->
<Range>1</Range>
</ScanArray>
<StopArray>
<!--req, 是否支持阵列停止,1-支持,不支持无此项 -->
<Range>1</Range>
</StopArray>
<ArrayInitType>
<!--req, 阵列初始化类型,0-快速初始化,1-完全初始化（前台）,2-完全初始化（后台）,3-不初始化 -->
<Range>0,1,2,3</Range>
</ArrayInitType>
<VdInitType>
<!--req, 虚拟磁盘初始化类型,0-快速初始化,1-完全初始化（前台）,2-完全初始化（后台）,3-不初始化 -->
<Range>0,1,2,3</Range>
</VdInitType>
<MinVdSize>
<!--req, 虚拟磁盘最小容量,单位：MB -->
<Value>1</Value>
</MinVdSize>
<ArrayTaskSpeed>
<!--req, 阵列后台任务的速度：0-高速、1-中速、2-低速 -->
<Range>0,1,2</Range>
</ArrayTaskSpeed>
<RaidInfo>
<!--req,磁盘阵列信息，对应NET_DVR_DISK_RAID_INFO -->
<Enable>true</Enable>
<!--req,是否支持配置开启关闭软RAID -->
<!--req,开启软Raid后是否需要重启，1-重启，不需要重启不显示 -->
<NeedReboot>1</NeedReboot>
</RaidInfo>
</RAID>


DEVICE_RESPONSE_STATUS

设备网络SDK开发使用手册

<ResponseStatus>
<requestURL>
<!--req, ro,xs:string, 请求URL-->
</requestURL>
<statusCode>
<!--req, ro,xs:integer, 状态码：0=1-OK, 2-Device Busy, 3-Device Error, 4-Invalid Operation, 5-Invalid XML Format, 6-Invalid XML Content, 7-Reboot Required-->
</statusCode>
<statusString>
<!--req, ro,xs:string, 状态描述，不同的状态码对应不同的状态描述，详见《ISAPI错误码对照表》-->
</statusString>
<subStatusCode>
<!--req, ro,xs:string, 子状态码，不同的状态码对应不同的子状态码，详见《ISAPI错误码对照表》-->
</subStatusCode>
<ID>
<!--opt,xs:string, 设备返回的ID-->
</ID>
</ResponseStatus>


DEVICE_SERIAL_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备串口能力集描述 -->
<SerialAbility version="2.0">
<RS232>
<RS232Num>1</RS232Num>
<RS232Entry>
<!--req, 同级节点可以有多个-->
<baudRate opt="50,75,110,150,300,600,1200,2400,4800,9600,19200,38400,57600,76800,115.2k"/>
<dataBit opt="5,6,7,8"/>
<stopBit opt="1,2"/>
<parity opt="none,odd,even"/>
<flowcontrol opt="none,hard,soft"/>
<workMode opt="narrowBand,console,transparentChan,inquestSensor,alarmBoxMode,matrixControl,
screenControl,directConnect,keyboardControl,monitorControl,PTZControl"/>
<!--req, narrowBand(窄带传输),console(控制台),transparentChan(透明通道),inquestSensor(ptz模式（审讯温湿度传感器）),
alarmBoxMode(报警盒模式),矩阵控制(matrixControl),屏幕控制(screenControl),串口直连(directConnect),
键盘控制(keyboardControl),监控板管理(monitorControl),控制云台(PTZControl))-->
<maxSerialNum>4</maxSerialNum>
<!--req,不返回表示设备仅有一个串口，返回则以返回值为准-->
<startSerialNo>1</startSerialNo>
<!--req,起始232串口编号-->
</RS232Entry>
</RS232>
<RS485>
<RS485Num>1</RS485Num>
<RS485Entry>
<!--req, 同级节点可以有多个-->
<baudRate opt="50,75,110,150,300,600,1200,2400,4800,9600,19200,38400,57600,76800,115.2k"/>
<dataBit opt="5,6,7,8"/>
<stopBit opt="1,2"/>
<parity opt="none,odd,even"/>
<flowcontrol opt="none,hard,soft"/>
<decoderAddress min="0" max="255"/>
<duplex opt="halfDuplex,fullDuplex"/>
<!--req,半双工，全双工-->
<workMode opt="console,transparent,stairsControl,cardReader,accessControlModule,disabled,custom"/>
<!--req,工作模式，控制台，透明通道，梯控，读卡器，门禁安全模块，禁用，自定义-->
<workMode opt="console,transparent, matrixControl, screenControl, PPPMode, directConnect, keyboardControl, monitorControl, PTZControl,Led,CaptureTrigger"/>
<!--req,工作模式，控制台, 透明通道, 矩阵控制, 屏幕控制, PPP模式, 串口直连, 键盘控制, 监控板管理, 控制云台, LED显示, 触发抓拍数据传输-->
<maxSerialNum>4</maxSerialNum>
<!--req,不返回表示设备仅有一个串口，返回则以返回值为准-->
<startSerialNo>1</startSerialNo>
<!--req,起始485串口编号-->
<serialType opt="0,1"/>
<!--req,串口类型: 0- 485,1- 232-->
<mode opt="readerMode,clientMode,externMode">
<!--req,连接模式: readerMode-连接读卡器, clientMode-连接客户端, externMode-连接扩展模块，accessControlHost-连接门禁主机，disabled-禁用-->
</mode>
</RS485Entry>
<SupportConfigWorkMode>
<!--req,支持配置工作模式-->
<enabled>true</enabled>
</SupportConfigWorkMode>
</RS485>
<VariableSerial>
<!--req,可变串口能力-->
<FrontSerial>
<serialNo min="" max=""/>
<!--req,可变串口编号，前后串口编号统一编排-->
<serialWorkMode opt="RS232,RS485,RS422"/>
<!--req,串口工作模式-->
<funType opt="matrixControl,screenControl,transparent,keyboardControl,PTZControl"/>
<!--req,支持的串口功能：控制台,透明通道,矩阵控制,屏幕控制,键盘控制,控制云台-->
<baudRate opt="50,75,110,150,300,600,1200,2400,4800,9600,19200,38400,57600,76800,115.2k"/>
<dataBit opt="5,6,7,8"/>
<stopBit opt="1,2"/>
<parity opt="none,odd,even"/>
<flowcontrol opt="none,hard,soft"/>
<decoderAddress min="0" max="255"/>
</FrontSerial>
<BackSerial>
<serialNo min="" max=""/>
<!--req,可变串口编号，前后串口编号统一编排-->
<serialWorkMode opt="RS232,RS485,RS422"/>
<!--req,串口工作模式-->
<funType opt="matrixControl,screenControl,transparent,keyboardControl,PTZControl"/>
<!--req,支持的串口功能：控制台,透明通道,矩阵控制,屏幕控制,键盘控制,控制云台-->
<baudRate opt="50,75,110,150,300,600,1200,2400,4800,9600,19200,38400,57600,76800,115.2k"/>
<dataBit opt="5,6,7,8"/>
<stopBit opt="1,2"/>
<parity opt="none,odd,even"/>
<flowcontrol opt="none,hard,soft"/>
<decoderAddress min="0" max="255"/>
</BackSerial>
</VariableSerial>
<SerialProtocol>
<!--req, 支持的串口协议-->
<KeyBoardProtocol>
<!--req, 支持的键盘协议-->
<ProtocolEntry>
<!--req, 同级节点可以有多个-->
<describe>
<!--req, xs:string, 协议描述-->
</describe>
<index>
<!--req, xs:inter, 索引值-->
</index >
</ProtocolEntry>
</KeyBoardProtocol>
<ScreenCtrlProtocol>
<!--opt, 支持的屏幕控制协议-->
<ProtocolEntry>
<!--req, 同级节点可以有多个-->
<describe>
<!--req, xs:string, 协议描述-->
</describe>
<index>
<!--req, xs:inter, 索引值-->
</index >
</ProtocolEntry>
</ScreenCtrlProtocol>
<MatrixCtrlProtocol>
<!--opt, 支持的矩阵控制协议-->
<ProtocolEntry>
<!--req, 同级节点可以有多个-->
<describe>
<!--req, xs:string, 协议描述-->
</describe>
<index>
<!--req, xs:inter, 索引值-->
</index>
</ProtocolEntry>
</MatrixCtrlProtocol>
</SerialProtocol>
</SerialAbility>


DEVICE_SERIAL_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取串口能力时pInBuf参数描述-->
<SerialAbility version="2.0">
<subBoardNo>
<!--opt,xs:integer, 子板号, 设备支持时可以选择指定子板-->
</subBoardNo>
</SerialAbility>


DEVICE_SOFTHARDWARE_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备软硬件能力集描述 -->
<BasicCapability version="2.0">
<!-- req, 硬件支持能力 -->
<HardwareCapability>
<HardwareVersion>0x0</HardwareVersion>
<!-- req, 前面板版本,高16位是主版本,低16位是次版本 -->
<AlarmInPortNum>4</AlarmInPortNum><!-- req, 报警输入个数 -->
<AlarmOutPortNum>4</AlarmOutPortNum><!-- req, 报警输出个数 -->
<RS232Num>1</RS232Num><!-- req, 232串口个数 -->
<RS485Num>1</RS485Num><!-- req, 485串口个数 -->
<NetworkPortNum>1</NetworkPortNum><!-- req, 网络口个数 -->
<USBNum>1</USBNum><!-- req, USB口的个数 -->
<FlashSize></FlashSize ><!-- req, Flash大小（单位M） -->
<RamSize></RamSize><!-- req, Ram大小（单位M） -->
<USBVersion></USBVersion><!-- req, USB版本 -->
<SDNum>0</SDNum><!-- req, SD卡个数 -->
<HardDiskNum>1</HardDiskNum><!-- req, 硬盘个数(包括SATA、eSATA和NAS)，实际已接可用的硬盘个数 -->
<SATANum>1</SATANum><!-- req, 2012-5-14SATA盘个数 -->
<eSATANum>1</eSATANum><!-- req, 2012-5-14eSATA盘个数 -->
<miniSASNum>1</miniSASNum><!-- req, 2012-5-14miniSAS盘个数 -->
<VideoInNum>4</VideoInNum> <!-- req, VIN个数 -->
<AudioInNum>4</AudioInNum><!-- req, AIN个数 -->
<VideoOutNum>1</VideoOutNum><!-- req, VOUT个数 -->
<AudioOutNum>1</AudioOutNum><!-- req, AOUT个数 -->
<AudioTalkNum>2</AudioTalkNum><!-- req, 语音对讲通道个数 -->
<SDSupport>1</SDSupport><!-- req, 支持SD卡，1-支持，不支持时不显示 -->
<WiFiSupport>1</WiFiSupport><!-- req, 支持WiFi，1-支持，不支持时不显示 -->
<POESupport>1</POESupport><!-- req, 支持POE(IPC的网线供电)，1-支持，不支持时不显示 -->
<IRSupport>1</IRSupport><!-- req, 支持红外，1-支持，不支持时不显示 -->
<VideoOutSupport>1</VideoOutSupport><!-- req, 支持本地输出，1-支持，不支持时不显示 -->
<ResetSupport>1</ResetSupport><!-- req, 支持恢复出厂设置，1-支持，不支持时不显示 -->
<CompleteRestoreSupport>1</CompleteRestoreSupport><!-- req, 支持完全恢复出厂值，1-支持，不支持时不显示 -->
<AnalogChannelNum>255</AnalogChannelNum><!-- req, 模拟通道个数,和注册返回的byChanNum的值一致 -->
<IPChannelNum>255</IPChannelNum><!-- req, 数字通道个数 -->
<MultiNetworkCard>1</MultiNetworkCard><!-- req, 支持多网卡, 1-支持，不支持时不显示 -->
<MultiDNSAddress>1</MultiDNSAddress><!-- req, 支持多DNS, 1-支持，不支持时不显示 -->
<BondingSupport>1</BondingSupport><!-- req, 支持bonding功能，1-支持，不支持时无此项 -->
<VGANumber>255</VGANumber><!-- req, VGA个数 -->
<HDMINumber>255</HDMINumber><!-- req, HDMI个数 -->
<SDINumber>255</SDINumber><!-- req, SDI个数 -->
<CVBSNumber>255</CVBSNumber><!-- req, CVBS个数 -->
<AuxoutNumber>255</AuxoutNumber><!-- req, 辅助输出个数 -->
<RAIDType>1</RAIDType><!-- req, RAID类型，0-硬RAID，1-软RAID -->
<RS485>
<localRs485No min="" max=""/>
<!--req, 本地485口序号-->
<expandRS485No min="" max="" />
<!--req, 可扩展485口序号-->
<fullDuplexRS485No min="" max="" />
<!--req, 全双工485口序号，相对于本地485口数-->
<semiDuplexRS485No min="" max="" />
<!--req, 半双工485口序号，相对于本地485口数-->
<RS485SlotNo min="" max=""/>
<!--req, 485槽位序号-->
</RS485>

<ZoneNum>
<!--报警主机使用该节点-->
<localZoneNo min="1" max="64"/>
<!--req,本地报警输入口(本地防区)序号-->
<extendZoneNo min="1" max="64"/>
<!--req,可扩展报警输入口（可扩展防区）序号-->
<wirelessZoneNo min="1" max="64"/>
<!--req,无线防区序号-->?
</ZoneNum>

<sirenNo min="" max=""/>
<!--req,主机警号序号-->
<electroLockNo min="" max=""/>
<!--req,电锁序号-->
<mobileGateNo min="" max=""/>
<!--req,移动门序号-->

<TriggerNum>
<!--req,报警主机使用该节点-->
<localTriggerNo min="1" max="64"/>
<!--req,本地报警输出口（本地触发器）序号-->
<extendTriggerNo min="1" max="64"/>
<!--req,可扩展报警输出口（可扩展触发器）序号-->
</TriggerNum>
<Sensor>
<!--req,动环报警主机使用该节点-->
<totalSensorNum>
<!--, xs:inter, 模拟量总数-->
</totalSensorNum>
<localSensorNo min="" max="" />
<!--req,本地模拟量序号-->
<expandSensorNo min="" max="" />
<!--req,可扩展模拟量序号-->
</Sensor>
<rs232_rs485No min="" max=""/>
<!--req,RS232/RS485串口个数-->

<MirrorChanNum>1</MirrorChanNum>
<!--req, 镜像通道个数-->
<DeviceSubBoardInfo>
<!--req, 设备子板信息，集中式大屏控制器使用-->
<BackBoardType opt = "4U,8U,13U"/>
<!--req, 支持的背板类型-->
<SubBoardType opt= "DVI-IInput,YPbPrInput,BNCInput,SDIInput,DVI DualLinkInput,OrdinaryDecodeInput,DVI-IOutput,SDIOutput,EnhanceDecodeInput"/>
<!--req, 支持的子板类型-->
</DeviceSubBoardInfo>
</HardwareCapability>

<!--req, 软件支持能力 -->
<SoftwareCapability>
<!--req, 硬盘是否支持新的硬盘号映射方式:1-支持, 不支持时不显示 -->
<!--req, 在新的映射方式下，IPC给SDK传的硬盘号：SD卡是0，NAS盘从8开始；之前的硬盘号表示为0、1、2.....-->
<NewHdNo>1</NewHdNo>
<!--req, 2012-5-14支持网盘的最大个数(不支持时不显示),网盘包括Nas和IPSAN -->
<MaxNetworkHDNum>8</MaxNetworkHDNum>
<!--req, 支持nas存储功能，1-支持，不支持时不显示。兼容IPC不能删除 -->
<NasSupport>1</NasSupport>

<!--req, nas个数 -->
<NasNumber>8</NasNumber>
<!--req, 支持的结构体 NET_DVR_NET_DISKCFG -->
<NetDiskIdentification>
<!--req, 表示支持网盘接入支持认证 -->
<NASIdentification>
<!--req, 表示支持 NAS接入支持认证 -->
<NFSMountType>true</NFSMountType>
<!--req, 表示支持 NAS支持NFS方式接入 -->
<CIFSMountType>
<!--req, 表示支持 NAS支持CIFS方式接入 -->
<usernameLen min = "" max= ""/>
<!--req, NAS认证上的name长度的最大值和最小值-->
<passwordLen min = "" max= ""/>
<!--req, NAS认证上的passwd长度的最大值和最小值-->
</CIFSMountType>
</NASIdentification>
</NetDiskIdentification>
<NasMountPara>
<addressType opt="IP, Domain"/>
<!--req, 挂载硬盘的地址类型0-IP地址；1-域名-->
<domainAddressLen min = "" max= ""/>
<!--req, 挂载硬盘域名长度的最大值和最小值-->
</NasMountPara >
<NasMountPara>
<addressType opt="IP, Domain"/>
<!--req, 挂载硬盘的地址类型0-IP地址；1-域名-->
<domainAddressLen min = "" max= ""/>
<!--req, 挂载硬盘域名长度的最大值和最小值-->
</NasMountPara >

<NetDiskDomain>
<domainSupport>true</domainSupport>
<!--req, 挂载硬盘是否支持域名true-支持；false-不支持-->
<domainAddressLen min = "" max= ""/>
<!--req, 挂载硬盘域名长度的最大值和最小值-->
</NetDiskDomain>

<ShowStringNumber>8</ShowStringNumber>
<!--req, 最大字符串叠加个数（针对模拟通道） -->
<MotionDetectAlarmSupport>1</MotionDetectAlarmSupport>
<!--req, 支持移动侦测，1-支持，不支持时不显示 -->
<VILostAlarmSupport>1</VILostAlarmSupport>
<!--req, 支持视频丢失报警，1-支持，不支持时不显示（针对模拟通道） -->
<HideAlarmSupport>1</HideAlarmSupport>
<!--req, 支持遮挡报警，1-支持，不支持时不显示（针对模拟通道） -->
<ShelterSupport>1</ShelterSupport>
<!--req, 支持遮盖，1-支持，不支持时不显示（针对模拟通道） -->
<RtspSupport>1</RtspSupport>
<!--req, 支持rtsp网络传输功能，1-支持，不支持时不显示 -->
<RtpoverRtspSupport>1</RtpoverRtspSupport>
<!--req, 支持rtp over rtsp网络传输功能，1-支持，不支持时不显示 -->
<RtspoverHttpSupport>1</RtspoverHttpSupport>
<!--req, 支持rtsp over http网络传输功能，1-支持，不支持时不显示 -->
<NtpSupport>1</NtpSupport>
<!--req, 支持NTP校时 ，1-支持，不支持时不显示 -->
<EptzSupport>1</EptzSupport>
<!--req, 支持电子云台，1-支持，不支持时不显示 -->
<PtzSupport>1</PtzSupport>
<!--req, 支持云台控制，1-支持，不支持时不显示 -->
<DDNSSupport>1</DDNSSupport>
<!--req, 支持DDNS，1-支持，不支持时不显示。兼容IPC不能删除 -->
<DDNSHostType>0,1,2,3,4</DDNSHostType>
<!--req, DDNS服务器类型：0- IP Server，1-Dyndns，2-PeanutHull(花生壳)，3-NO-IP, 4- hkDDNS -->
<DDNSStatus>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15</DDNSStatus>
<!--req, 支持的DDNS状态类型，1-连接地址服务器失败，2-解析地址消息失败，3-连接心跳服务器失败，
4-解析心跳服务器消息失败，5-连接域名服务器失败，6-解析域名服务器消息失败，7-注册域名成功，8-注册域名失败，9-发送心跳成功，10-DNS服务器未配置，
11-域名被占用，12-服务异常，13-需要鉴权，14-域名不合法，15-未启用 -->

<SNMPSupport>1</SNMPSupport>

<!--req, SNMP版本，1-v1，2-v2，3-v3 -->
<SNMPVersion>1,2,3</SNMPVersion>
<!--req, 支持UPNP，1-支持，不支持时不显示 -->
<UPNPSupport>1</UPNPSupport>
<!--req, 支持iSCSI，1-支持，不支持时不显示 -->
<iSCSISupport>1</iSCSISupport>
<!--req, 2012-5-14支持IP SAN个数 -->
<iSCSINum>1</iSCSINum>
<!--req, 支持ipv6，1-支持，不支持时不显示 -->
<Ipv6Support>0</Ipv6Support>
<!--req, 支持智能，1-支持，不支持时不显示 -->
<VCASupport>1</VCASupport>
<!--req, 反向能力集，返回该节点，表示不支持视频流 -->
<VideoStreamnotSupport>true</VideoStreamnotSupport >
<!--req, 支持复合流，1-支持，不支持时不显示（针对模拟通道） -->
<MultipleStreamSupport>1</MultipleStreamSupport>
<!--req, 支持子码流，1-支持，不支持时不显示（针对模拟通道） -->
<SubStreamSupport>1</SubStreamSupport>
<!--req, 支持EMAIL，1-支持，不支持时不显示 -->
<EmailSupport>1</EmailSupport>
<!--req, SADP版本，0-V1.0，1-V3.0 -->
<SADPVersion>0,1</SADPVersion>
<ZeroChanNumber>1</ZeroChanNumber>
<!--req, 支持备份，1-支持，不支持时不显示 -->
<BackupSupport>1</BackupSupport>
<!--req, 支持按事件查找录像，1-支持，不支持时无此项 -->
<FindFileByEventSupport>1</FindFileByEventSupport>
<!--req, 支持智能搜索录像，1-支持，不支持时不显示 -->
<SmartSearchSupport>1</SmartSearchSupport>
<!--req, 支持ATM配置，1-支持，不支持时不显示 -->
<ATMSupport>1</ATMSupport>
<!--req, 支持文件锁定/解锁，1-支持，不支持时不显示 -->
<FileLockSupport>1</FileLockSupport>
<!--req, 支持主子码流码率动态限制，1-支持，不支持时不显示(此能力无对应配置) -->
<BitrateLimitSupport>1</BitrateLimitSupport>
<!--req, 支持注册最大路数 -->
<MaxLoginNum>0</MaxLoginNum>
<!--req, 支持预览最大路数 -->
<MaxPreviewNum>0</MaxPreviewNum>
<!--req, 支持回放最大路数 -->
<MaxPlayBackNum>0</MaxPlayBackNum>
<!--req, 通道支持最大连接路数 -->
<MaxChanLinkNum>6</MaxChanLinkNum>
<ShutDownSupport>1</ShutDownSupport>
<!--req, 支持预置点冻结，1-支持，不支持时不显示 -->
<FrameFreezeSupport>1</FrameFreezeSupport>
<!--req, 2012-03-22是否支持硬盘盘组配置，1-支持，不支持时不显示 -->
<HDgroupConfig>1</HDgroupConfig>
<!--req, 是否支持自动存储模式，1-支持，不支持时不显示 -->
<AutoStorageMode>1</AutoStorageMode>
<!--req, 2012-03-22是否支持232配置，1-支持，不支持时不显示 -->
<RS232Config>1</RS232Config>
<!--req, 2012-03-22是否支持PPPoE配置，1-支持，不支持时不显示 -->
<PPPoEConfig>1</PPPoEConfig>
<!--req, 2012-03-22是否支持冗余录像，1-支持，不支持时不显示 -->
<RedundancyRecord>1</RedundancyRecord>
<!--req, 2012-03-22是否支持主辅口缩放配置，1-支持，不支持时不显示 -->
<VideoOutScaleConfig>1</VideoOutScaleConfig>
<!--req, 2012-03-22是否支持guest用户，1-支持，不支持时不显示 -->
<GuestUser>1</GuestUser>
<!--req, 2012-03-22是否支持FTP上传图片，1-支持，不支持时不显示 -->
<UploadFTP>1</UploadFTP>
<!--req, 2012-05-15是否不支持磁盘配额，录像和图片配额都支持时不显示，1-录像和图片配额都不支持，2-支持录像配额但不支持图片配额 -->
<UploadCloud>1</UploadCloud>
<!--req, 2015-12-28是否支持Cloud上传图片，1-支持，不支持时不显示 -->
<NotSupportDiskQuota>1</NotSupportDiskQuota>
<!--req, 2012-12-8支持磁盘配额按比例分配，1-支持，不支持时不显示-->
<QuotaRatio>1</QuotaRatio>
<!--req, 2014-4-11支持磁盘配额按时间分配，1-录像和图片配额都支持，2-录像配额支持但图片配额不支持，不支持时不显示-->
<QuotaByTime>1</QuotaByTime>

<LocalVout>
<mainVoutType opt="mainCVBS,HDMI,VGA,auto"/>
<!--req, 本地主口输入类型, mainCVBS-主CVB. 非同源设备：0-Auto 1-主CVBS 2-HDMI 3-VGA 同源设备：0-Auto 1-主CVBS 2-HDMI/VGASnetra2.2以后支持选择,之前版本为auto(能力集解析返回auto)-->
</LocalVout>
<SingleStorageMaxCap>16</SingleStorageMaxCap>
<!--req, 系统支持单个存储设备最大容量，单位:T-->
<IPCPlug>1</IPCPlug>
<!--req, 是否支持IPC即插即用，1-支持，不支持不显示-->
<DrawFrameRecord>1</DrawFrameRecord>
<!--req, 是否支持抽帧录像，1-支持，不支持不显示-->
<DelInvalidDisk>1</DelInvalidDisk>
<!--req, 是否支持删除无效磁盘，1-支持，不支持不显示-->
<MountOrUnmountDisk>1</MountOrUnmountDisk>
<!--req, 是否支持加载或卸载磁盘，1-支持，不支持不显示-->

<MaxDvcsSubDevNumNum>
<!--req, 分布式设备支持的最大设备数，不支持不显示-->
</MaxDvcsSubDevNumNum >

<NotSupportInputOutputConfigFile>1</NotSupportInputOutputConfigFile>
<!--req, 不支持导入导出参数配置，1-不支持-->

<NotSupportLogSearch>1</NotSupportLogSearch>
<!--req, 不支持日志查询，支持时不显示，1-不支持-->

<DateUpLoadAndDownLoad>
<!--req, 数据上传下载功能-->
<audioType opt="wave"/>
<!--req, 支持的语音类型-->
<uploadAndDownLoad opt = "upload,download"/>
<!--req, 支持上传下载-->
<maxNum opt= "8"/>
<!--req, type:支持的最大语音个数-->
</DateUpLoadAndDownLoad>

<DevModuleServerCfg>
<!--req, 设备服务配置能力-->
<!--req, 只允许admin用户设置telent配置-->
<telnetServer opt="disable,enable"/>
<!--req, Telet功能：0-disable(禁用)，1-enable(启用)-->
<irLampServer opt="disable,enable"/>
<!--req, 红外灯设置：0-disable(禁用)，1-enable(启用)-->
<abfServer opt="enable,disable,"/>
<!--req, ABF设置：0-enable(启用)，1-disable(禁用) -->
<LEDStatus opt="disable,enable"/>
<!--req, 状态指示灯控制：0-disable(禁用)，1-enable(启用)-->
<autoDefog opt="disable,enable"/>
<!--req, 自动除雾控制：0-enable(启用)，1-disable(禁用)-->
<sshServer opt="disable,enable"/>
<!--req, SSH设置：0-enable(启用)，1-disable(禁用)-->
<webAuthentication opt="disable,enable"/>
<!--req, WEB认证：0-disable(禁用)，1-enable(启用)-->
<supplementLight opt="disable,enable"/>
<!--req, 补光灯控制: 0-enable(启用)，1-disable(禁用) -->
<deicing opt="disable,enable"/>
<!--opt, 除冰功能: 0-disable(禁用)，1-enable(启用)-->
<isSupportFireLaserLight>
<!--opt, xs:boolen，true表示支持热成像火点检测激光补光灯-->
</isSupportFireLaserLight>
<notSupportDeicingPrompt>
<!--opt, xs:boolen，true表示设备不支持自动除冰提示语-->
</notSupportDeicingPrompt>
<visibleMovementPower opt="disable,enable"/>
<!--opt, 可见光机芯电源开关: 0-disable(禁用), 1-enable(启用) -->
<thermalMovementPower opt="disable,enable"/>
<!--opt, 热成像机芯电源开关: 0-disable(禁用), 1-enable(启用) -->
<ptzPower opt="disable,enable"/>
<!--opt, 云台电源开关: 0-disable(禁用), 1-enable(启用) -->
<powerSavingControl opt="sleepMode,lowConsumptionMode"/>
<!--opt, xs:string "低功耗策略: sleepMode-休眠模式, lowConsumptionMode-低功耗模式-->
</DevModuleServerCfg>

<GBT28181AccessAbilitySupport>1</GBT28181AccessAbilitySupport>
<!--req, 是否支持GB/T28181协议，1-支持，不支持不显示-->
<SearchLogAbilitySupport>1</SearchLogAbilitySupport>
<!--req, 是否支持日志搜索，1-支持，不支持不显示-->
<AlarmTriggerRecordAbilitySupport>1</AlarmTriggerRecordAbilitySupport>
<!--req, 是否支持日志搜索能力，1-支持，不支持不显示-->
<CameraParaDynamicAbilitySupport>1</CameraParaDynamicAbilitySupport>
<!--req, 是否支持前端参数动态能力，1-支持，不支持不显示-->
<IOAbilitySupport>1</IOAbilitySupport>
<!--req, IO输入输出能力，1-支持，不支持不显示-->
<AccessProtocolAbility>1</AccessProtocolAbility>
<!--req, 协议接入能力，1-支持，不支持不显示-->
<CameraMountAbility>1</CameraMountAbility>
<!--req, 摄像机架设能力，1-支持，不支持不显示-->
<VehicleRecogAbility>1</VehicleRecogAbility>
<!--req, 车辆二次检测能力，1-支持，不支持不显示-->
<VcaChanAbility>1</VcaChanAbility>
<!--req, VCA智能通道能力，1-支持，不支持不显示-->
<Language>
<!--req, 支持的语言种类-->
<supportType opt="0-noSupport,1-chinese,2-english"/>
<!--req, 0表示不支持这个功能区分，1表示中文，2表示英文-->
</Language>
<LongLinkConfigurationFile>1</LongLinkConfigurationFile>
<!--req, 是否支持长连接导入导出配置文件(CONFIGURATION_FILE)，1-支持，不支持不显示-->
<IpViewDev>1</IpViewDev>
<!--req, 支持IP可视对讲主机能力集,对应IpViewDevAbility能力集-->

<TransDevice>
<transChannelNum min = "" max = "" />
<!--req, 转码通道最大最小值-->
</TransDevice>

<MultiNetworkCardMode>0,1</MultiNetworkCardMode>
<!--req, 支持的多网卡工作模式,0-普通多网卡模式，1-内外网隔离模式，不支持模式设置不显示-->

<DeviceWorkMode>1,2,3</DeviceWorkMode>
<!--req, 设备支持的工作模式，1-通道模式，2-流ID模式，3-GB28281模式，不支持模式设置不显示-->

<AllBackupLog>
<enabled>true</enabled>
<!--req, 是否支持全部日志导出-->
</AllBackupLog>
<VoiceTalkAsAudioIn>
<enabled>true</enabled>
<!--req, 是否支持语音对讲作为音频输入-->
<supportVoiceChan opt="1,2"/>
<!--opt, 支持的语音对讲通道号-->
</VoiceTalkAsAudioIn>

<Matrix>1</Matrix>
<!--req ,支持矩阵能力集MATRIX_ABILITY，不支持不显示-->
<VCADetection opt="true,false"/>
<!--req, 是否支持智能侦测-->
<TrialHostAbility>1</TrialHostAbility>
<!--req, 支持庭审主机的能力，1-支持，不支持不显示-->
<BinocularSupport>1</BinocularSupport>
<!--req, 支持双目，1-支持，不支持时不显示-->
<isNotSupportSummerTime>true</isNotSupportSummerTime>
<!--opt, 不支持夏令时的时候，返回这个能力"-->
<BrokenNetHttpSupport opt="postMPR,PDC,heatMapDetection"/>
<!--opt, xs:string,支持断网续传的功能，MPR模式下的车辆检测（IPC的车辆检测）、客流量统计、热度图检测；该节点在IPC5.3.5项目中支持，ff车牌5.3.4中不支持该字段"-->
<isSupportSyncIPCPassword>true</isSupportSyncIPCPassword><!--opt, 是否支持同步IPC密码，不支持不返回-->
<isSupportTransferIPC>true</isSupportTransferIPC><!--opt, 是否支持透传IPC协议功能，不支持不返回-->
<supportPreviewHRUDP>true</supportPreviewHRUDP><!--opt, 是否支持HRUDP预览取流方式，不支持不返回-->

<isSupportTimeCorrect>true</isSupportTimeCorrect>
<!--opt, 是否支持NET_DVR_SET_TIMECORRECT校时操作-->
<HRUDP>
<!--,OPT-->
<LinkList>
<!--,req-->
<Link>
<!--,req-->
<previewLink>1</previewLink>
<!--,req-->
<recommendResolution opt="39-1920*1080"></recommendResolution>
<!--,req-->
</Link>
</LinkList>
</HRUDP>
<!--opt, SD卡解锁时间，上传时间值表示-支持，不支持时不显示-->
<SDCardUnlockTime>3</SDCardUnlockTime>

<isSupportOnLineUser>true</isSupportOnLineUser>
<!--opt, "设备支持在线用户获取功能"-->

<NeedReboot>
<!--req, 导入配置文件是否自动重启，1-重启，2-需要提示重启，不需要提示重启和设备不会自动重启时不显示 -->
<ImportConfigurationFileReboot>1</ImportConfigurationFileReboot>
<!--req, ESATA用途修改是否自动重启，1-重启，不重启时不显示 -->
<EsataUseageChange>1</EsataUseageChange>
<!--req, 修改报警输入类型是否自动重启，1-重启，2-需要提示重启，不需要提示重启和设备不会自动重启时不显示 -->
<AlarmInTypeChange>1</AlarmInTypeChange>
<!--req, 模拟通道是否启用修改是否自动重启，1-重启，不重启时不显示 -->
<AnalogChanEnableChange>1</AnalogChanEnableChange>
<!--req, 恢复默认参数是否自动重启，1-重启，2-需要提示重启，不需要提示重启和设备不会自动重启时不显示 -->
<RestoreConfig>1</RestoreConfig>
<!--req, 串口232传输模式更改是否需要重启，1-重启，不重启时不显示 -->
<RS232workModeChange>1</RS232workModeChange>
<!--req, 网络传输端口更改是否需要重启，1-重启，不重启时不显示 -->
<NetPortChange>1</NetPortChange>
<!--req, RTSP端口更改是否需要重启，1-重启，不重启时不显示 -->
<RtspPortChange>1</RtspPortChange>
<!--req, DHCP启用状态更改是否需要重启，1-重启，不重启时不显示 -->
<DhcpEnableChange>1</DhcpEnableChange>
<!--req, HTTP端口更改是否需要重启，1-重启，不重启时不显示 -->
<HttpPortChange>1</HttpPortChange>
<!--req, PPPoE参数更改是否需要重启，1-重启，不重启时不显示 -->
<PPPoEChange>1</PPPoEChange>
<!--req, 网络参数中的多播地址更改是否需要重启，1-重启，不重启时不显示 -->
<NetMultiCastIPChange>1</NetMultiCastIPChange>
<!--req, 硬盘参数更改是否需要重启，1-重启，不重启时不显示 -->
<HardDiskParamChange>1</HardDiskParamChange>
<!--req, 录像计划的时间更改是否需要重启，1-重启，不重启时不显示 -->
<RecordTimeChange>1</RecordTimeChange>
<!--req, 压缩参数的视频编码类型更改是否需要重启，1-重启，不重启时不显示 -->
<VideoEncodeTypeChange>1</VideoEncodeTypeChange>
<!--req, 压缩参数的音频编码类型更改是否需要重启，1-重启，不重启时不显示 -->
<AudioEncodeTypeChange>1</AudioEncodeTypeChange>
<!--req, 制式更改是否需要重启，1-重启，不重启时不显示 -->
<StandardTypeChange>1</StandardTypeChange>
<!--req, 去雾使能状态修改是否需要重启，1-重启，不需要重启不显示 -->
<DehazeEnableChange>1</DehazeEnableChange>
<!--req, 行编码使能状态修改是否需要重启，1-重启，不需要重启不显示 -->
<LineCodingEnableChange>1</LineCodingEnableChange>
<!--req, IPC前端参数本地输出开关状态修改是否需要重启，1-重启，不需要重启不显示 -->
<LocalOutputEnableChange>1</LocalOutputEnableChange>
<!--req, 切换指定主口是否需要重启，1-重启，不需要重启不显示 -->
<LocalMainVoutTypeChange>1</LocalMainVoutTypeChange>
<!--req, NAS认证参数修改是否需要重启，1-重启，不需要重启不显示 -->
<NASIdentificationChange>1</NASIdentificationChange>
<!--req, 工作模式切换是否自动重启，1-重启，不重启不显示 -->
<DevWorkModeChange>1</DevWorkModeChange>
<!--req, SIP本地端口更改是否需要重启，1-重启，不重启时不显示 -->
<LocalPortChange>1</LocalPortChange>
<!--req, SIP服务器注册周期更改是否需要重启，1-重启，不重启时不显示 -->
<LoginCycleChange>1</LoginCycleChange>
<!--req, RTP端口更改是否需要重启，1-重启，不重启时不显示 -->
<RtpPortChange>1</RtpPortChange>
<!--req, 音频编码优先级更改是否需要重启，1-重启，不重启时不显示 -->
<AudioEncodePriorityChange>1</AudioEncodePriorityChange>
<!--req, 延迟预览时间修改是否需要重启，1-重启，不重启时不显示 -->
<PreviewDelayTimeChange>1</PreviewDelayTimeChange>
<!--req, 网卡类型切换是否需要重启，0-不重启，老设备都默认重启，新设备不需要重启，新设备返回这个能力且值为0，需要重启的则不需要的返回这个能力 -->
<NetworkCardTypeChange>0</NetworkCardTypeChange>
<!--req, 设备云存储模式切换是否需要重启，1-重启，不需要重启不显示-->
<CloudStorageModeChangeReboot>1</CloudStorageModeChangeReboot>
<VcaDecModeChange>1</VcaDecModeChange>
<!--req, 开启智能解码模式是否需要重启，1-重启，不需要重启不显示-->
<GBT28181>
<!--req, GB28181传输协议修改是否需要重启，1-重启，不需要重启不显示-->
<TransProtocol>1</TransProtocol>
<!--req, 设备注册时间间隔修改是否需要重启，1-重启，不需要重启不显示-->
<RegisterInterval>1</RegisterInterval>
</GBT28181>
<CompleteRestoreReboot>1</CompleteRestoreReboot>
<!--req, 设备完全恢复出厂值是否需要重启，1-重启，不需要重启不显示-->
<SwitchVehicleDetection>1</SwitchVehicleDetection>
<!--req, 车辆检测切换检测模式是否需要重启，1-重启，不需要重启不显示-->
<SwitchHVTVehicleDetection>1</SwitchHVTVehicleDetection>
<!--req, 混行车辆检测切换检测模式是否需要重启，1-重启，不需要重启不显示-->
<SmartCodec>1</SmartCodec>
<!--req, 高性能编码切换检测模式是否需要重启，1-重启，不需要重启不显示-->
<NUCLEUSToOther>1</NUCLEUSToOther>
<!--opt, 开启从nucleus协议切换到其他协议时是否需要重启，1-重启，不需要重启不显示-->
<ThirdStream>1</ThirdStream>
<!--opt, 开启三码流服务是否需要重启，1-重启，不需要重启不显示-->
<ThirdHostDeviceChange>1</ThirdHostDeviceChange>
<!--req,切换第三方主机主机是否需要重启，1-重启，不需要重启不显示-->
<TerminalModeReboot>1</TerminalModeReboot>
<!--opt,智能身份识别设备切换终端模式是否需要重启，1-重启，不需要重启不显示-->
<ExtensionModuleUpgradeReboot>1</ExtensionModuleUpgradeReboot>
<!--opt,扩展模块升级是否需要重启，1-重启，不需要重启不显示-->
<ChannelControllerUpgradeReboot>1</ChannelControllerUpgradeReboot>
<!--opt,设备语言修改是否需要重启，1-重启，不需要重启不显示-->
<DeviceLanguageChange>1</DeviceLanguageChange>
<!--opt,可视对讲设备VoIP协议修改是否不重启，1-重启，不需要重启不显示-->
<CardReaderFPAlgorithmUpgradeReboot>1</CardReaderFPAlgorithmUpgradeReboot>
<!--opt,读卡器指纹算法程序升级是否需要重启，1-重启，不需要重启不显示-->
<IntercomProtocolTypeChange>1</IntercomProtocolTypeChange>
<SmartLockUpgradeReboot>1</SmartLockUpgradeReboot>
<!--opt,智能锁升级是否需要重启，1-重启，不需要重启不显示-->
<DeviceUpgradeReboot>1</DeviceUpgradeReboot>
<!--opt,设备升级是否自动重启，1-自动重启（升级成功和失败时），不自动重启时不显示-->
<WorkModeReboot>1</WorkModeReboot>
<!--opt,智能身份识别设备切换工作模式是否需要重启，1-重启，不需要重启不显示-->
<MultiFaceRecogizeChange>1</MultiFaceRecogizeChange>
<!--opt,多人脸抓拍切换是否需要重启，1-重启，不需要重启不显示-->
<FaceRecogizeModeChange>1</FaceRecogizeModeChange>
<!--opt,人脸抓拍模式切换是否需要重启，1-重启，，2-设备自动重启不需要重启不显示>

</NeedReboot>
<SupportMainBoardCameraPTZ>true</SupportMainBoardCameraPTZ>
<!--opt, 支持主控控制Camera的PTZ-->
<Support3DPTZ>true</Support3DPTZ>
<!--opt, 是否支持3D64速云台控制-->
<SupportUnifiedIPCProtocol>true</SupportUnifiedIPCProtocol>
<!--opt, 是否支持统一IPC协议，使用NET_DVR_IPC_ENUM_UNIFY类型-->
<SupportRemoveStorage>true</SupportRemoveStorage>
<!--opt, 设备存储功能去除(包括录像,回放,图片,日志) xs:boolean -->
<supportGB28181Service opt="true,false"/>
<!--opt, 是否GB28181服务参数配置-->
<supportChoosePlaybackDrawframe>true</supportChoosePlaybackDrawframe>
<!--opt,是否支持选择性抽帧回放，不支持不返回-->
<CloudSupport>1</CloudSupport>
<isSupportGetFigure/>
<!--opt, xs:boolean 支持获取缩略图 -->
<isSupportGetThumbnails>
<fileIntervalTime min="0" max="24*60*60"/>
<!-- opt 文件间隔时间，单位秒，integer-->
</isSupportGetThumbnails>
<!--opt 支持按时间段获取缩略图 -->
<isSupportStreamID opt="true,false"/><!--opt 是否支持流ID-->
<resultDataType opt="0,1"/>
<!--opt, 查找数据类型 0-I帧，1-图片数据-->
<!--opt, 是否支持第三方云：1-支持，不支持时不显示-->
<isSupportBatchUploadPic>true</isSupportBatchUploadPic>
<!--opt, 是否支持批量上传图片功能(BATCH_UPLOAD_PICTURE_FILE)，不支持不返回这个能力-->
<isSupportDownloadVehicleInfo>true</isSupportDownloadVehicleInfo>
<!--opt, 是否支持车辆信息查询功能(NET_DVR_GET_VEHICLE_INFORMATION)，不支持不返回-->
<isSupportConfirmMechanism>true</isSupportConfirmMechanism>
<!--是否支持布防确认机制，不支持不返回-->
<isSupportDNS>
<!--opt, 是否支持DNS手动设置使能，1-表示支持，不支持不显示-->
</isSupportDNS>
<DNSIndex opt="1,2">
<!--opt,xs:integer, 支持的DNS个数-->
</DNSIndex>
<HRUDP>
<!--opt, HRUDP（可靠传输）能力-->
<LinkList>
<!--req, HRUDP连接列表-->
<Link>
<!--req, HRUDP连接-->
<previewLink>1</previewLink>
<!--req, HRUDP预览连接个数-->
<recommendResolution opt="39-1920*1080"></recommendResolution>
<!--req, 推荐分辨率-->
</Link>
</LinkList>
</HRUDP>
<isSupportCountBinocular>true</isSupportCountBinocular>
<!--opt,"支持表示设备为双目客流相机，不支持不返回"-->
<isSupportRemoveEmailOptions>true</isSupportRemoveEmailOptions>
<!-- opt, 邮件附件功能去除xs:boolean ，true-表示不支持，否则不返回-->
<isSupportUploadCountBinocular>true</isSupportUploadCountBinocular>
<!--opt,"支持 表示双目客流相机矫正表上传，不支持不返回"-->
<supportChoosePlaybackDrawframe>true</supportChoosePlaybackDrawframe>
<!--opt,是否支持选择性抽帧回放，不支持不返回-->
<isSupportMinSAS>true</isSupportMinSAS>
<!--req,是否支持minSAS硬盘类型-->
<isNotSupportSummerTime>true</isNotSupportSummerTime>
<!--opt,"不支持夏令时的时候，返回这个能力"-->
<isSupportPanoramicStitch>true</isSupportPanoramicStitch>
<!--opt,是否支持上传全景自动拼接配置文件功能，不支持不返回-->
<isSupportGetFigure/>
<!--opt,xs:boolean,是否支持按时间点获取缩略图，不支持不返回-->
<isSupportGetThumbnails>
<!--opt,是否支持按时间段获取缩略图，不支持不返回-->
<isSupportStreamID opt="true,false"/>
<!--opt,是否支持流ID-->
<resultDataType opt="0,1"/><!--opt,查找数据类型: 0- I帧，1- 图片数据-->
<StartTime>
<!--opt,查找开始时间-->
<year min="" max=""/>
<month min="" max=""/>
<day min="" max=""/>
<hour min="" max=""/>
<minute min="" max=""/>
<second min="" max=""/>
</StartTime>
<StopTime>
<!--opt,查找结束时间-->
<year min="" max=""/>
<month min="" max=""/>
<day min="" max=""/>
<hour min="" max=""/>
<minute min="" max=""/>
<second min="" max=""/>
</StopTime>
<fileIntervalTime min="0" max="24*60*60"/>
<!--opt,文件间隔时间，单位：秒，integer-->
</isSupportGetThumbnails>
<isSupportPrisonPanorama>true</isSupportPrisonPanorama>
<!--opt,"支持表示设备为监舍全景相机，不支持不返回"-->
<isSupportSystemLogFileExport>true</isSupportSystemLogFileExport>
<!--opt,是否支持系统日志导出，不支持不返回-->
<isSupportLocalCasecadeCfg>true</isSupportLocalCasecadeCfg>
<!--opt,是否支持本地级联配置，不支持不返回-->
<isSupportfibreCascadeCfg>true</isSupportfibreCascadeCfg>
<!--opt,是否支持光纤级联配置，不支持不返回-->
<isSupportMainCtrlSubBoard>true</isSupportMainCtrlSubBoard>
<!--opt,是否支持主控控制子系统信息，不支持不返回-->
<isSupportAnalogSwitchMode>true</isSupportAnalogSwitchMode>
<!--opt,是否支持模拟切换模式配置，不支持不返回-->

<isSupportNewFaceResult>true</isSupportNewFaceResult>
<!--opt,"是否支持新的方式表示年龄段（即年龄+年龄误差），不支持不返回"-->
<isSupportSmoothDragging>
<!--opt,是否支持回放平滑拖动, ,xs:boolean,"true"-->
</isSupportSmoothDragging>
<PlaybackDrawframeCap>
<!--opt 支持选择性抽帧回放 -->
<drawType opt="0,1,2,3,4,5"/>
<!--opt 抽帧方式，0：只传I帧；1：丢1/2 P帧(只有svc码流支持)；2：丢3/4 P帧(只有svc码流支持)；3：传1/2 I帧(只传I帧，且每2个I帧传一个)；4：传1/4 I振(只传I帧，且每4个I帧传一个)；5：传1/8 I帧(只传I帧，且每8个I帧传一个) -->
</PlaybackDrawframeCap>
<isSupportIPCTiming>
<!--opt,xs:boolean,"true,false", 对应IPC接入配置协议中byEnableTiming字段是否支持-->
</isSupportIPCTiming>
<isSupportAlarmJSONBrokenNetHttp>
<!--opt,xs:boolean,"true",是否布防JSON透传报警断网续传功能-->
</isSupportAlarmJSONBrokenNetHttp>
<isSupportClientProxyWEB><!--opt,是否支持客户端代理透传WEB远程配置,xs:boolean,"true"--></isSupportClientProxyWEB>
<WEBLocation>
remote<!--opt,string,WEB页面放置位置：local-设备本地，remote-远程（不返回该节点时，默认WEB页面放置设备本地）-->
</WEBLocation>
<deviceId>
01001<!--opt,string,如果WEBLocation为remote，则需要返回设备唯一的设备ID，用来标示设备唯一对应的web包，这个deviceId有Web配置包统一管理，一款设备多型号返回相同）-->
</deviceId>

</SoftwareCapability>
</BasicCapability>


DEVICE_USER_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备用户管理参数能力集描述 -->
<UserAbility version="2.0">
<userNum>
16<!--req,用户个数-->
</userNum>
<userPriority opt="admin,viewer,operator,none"/>
<!--req,用户优先级-->
<userNameLength min="1" max="32"/>
<!--req,用户名长度-->
<userPasswordLength min="1" max="16"/>
<!--req,用户密码-->
<keypadPassword min="1" max=""/>
<!--opt,xs:string,"键盘密码长度,当不同类型用户的键盘密码长度不一致时,此节点仅表示管理员用户的键盘密码长度,否则表示所有类型用户的键盘密码的统一长度"-->
<installerKeypadPassword min="1" max=""/>
<!--opt,xs:string,"安装员的键盘密码长度"-->
<operatorKeypadPassword min="1" max=""/>
<!--opt,xs:string,"操作员的键盘密码长度"-->
<userOperateType opt="1,2,3">
<!--opt,xs:string,用户操作类型：1-网络用户,2-键盘用户,3-网络用户+键盘用户-->
</userOperateType>
<LocalPermission>
<permissionType type="admin" opt="PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup,preview"/>
<!--req, 本地admin用户权限类型，type没有的时候，默认为拥有所有权限，兼容以前设备的能力集-->
</LocalPermission>
<LocalPermission>
<permissionType type="viewer" opt="PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup,preview"/>
<!--req,本地普通用户权限类型,type没有的时候，默认为拥有所有权限，兼容以前设备的能力集-->
</LocalPermission>
<LocalPermission>
<permissionType type="operator" opt="PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup,preview"/>
<!--req,本地操作员用户权限类型,type没有的时候，默认为拥有所有权限，兼容以前设备的能力集-->
</LocalPermission>

<RemotePermission>
<permissionType type="admin" opt="preview, voiceTalk, alarmOutOrUpload, transParentChannel,
contorlLocalOut,PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup"/>
<!--req,远程admin用户权限类型,type没有的时候，默认为拥有所有权限，兼容以前设备的能力集-->
</RemotePermission>

<RemotePermission>
<permissionType type="viewer" opt="preview, voiceTalk, alarmOutOrUpload, transParentChannel,
contorlLocalOut,PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup"/>
<!--req,远程普通用户权限类型,type没有的时候，默认为拥有所有权限，兼容以前设备的能力集-->
</RemotePermission>

<RemotePermission>
<permissionType type="operator" opt="preview, voiceTalk, alarmOutOrUpload, transParentChannel,
contorlLocalOut,PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup"/>
<!--req,远程操作员用户权限类型,type没有的时候，默认为拥有所有权限，兼容以前设备的能力集-->
</RemotePermission>

<UserNet>
<IPV4Address>true</IPV4Address>
<!--opt,支持用户指定IPV4地址,不支持不显示-->
<IPV6Address>true</IPV6Address>
<!--opt,支持用户指定IPV6地址,不支持不显示-->
<MACAddress>true</MACAddress>
<!--opt,支持用户指定MAC地址,不支持不显示-->
</UserNet>
<AlarmPermission>
<!--opt,网络报警主机设备支持-->
<alarmOn></alarmOn>
<!--opt,报警输入口布防权限-->
<alarmOff></alarmOff>
<!--opt,报警输入口撤防权限-->
<alarmBypass></alarmBypass>
<!--opt,报警输入口旁路权限-->
</AlarmPermission>
<AlarmhostPermission>
<!--opt,网络报警主机设备支持-->
<netUserNo min="" max=""/>
<!--req, 网络用户序号-->
<userPriority opt="admin,manage,operater"/>
<!--req 用户类型（用户优先级），admin,管理员，普通操作员-->
<AdminPermissionType opt="arm,disarm,bypass,preview,record,playback,PTZControl,log,reboot,
setConfig,getConfig,resume,siren,upgrade,alarmout,serialControl,getwayControl,voiceTalk,
controlLocalOut,diskConfig,formatDisk,sensorControl"/>
<!--req,admin用户远程权限类型-->
<ManagerPermissionType opt="arm,disarm,bypass,preview,record,playback,PTZControl,log,reboot,
setConfig,getConfig,resume,siren,upgrade,alarmout,serialControl,getwayControl,voiceTalk,
controlLocalOut,diskConfig,formatDisk,sensorControl"/>
<!--req,管理员用户远程权限类型-->
<OperaterPermissionType opt="arm,disarm,bypass,preview,record,playback,PTZControl,log,reboot,
setConfig,getConfig,resume,siren,upgrade,alarmout,serialControl,getwayControl,voiceTalk,
controlLocalOut,diskConfig,formatDisk,sensorControl"/>
<!--req,操作员远程权限类型-->
</AlarmhostPermission>
<ViewerDefaultPermission>
<LocalPermission>
<permissionType opt="PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup,preview"/>
<!--req,本地权限类型-->
</LocalPermission>
<RemotePermission>
<permissionType opt="preview, voiceTalk, alarmOutOrUpload, transParentChannel, contorlLocalOut,
PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup"/>
<!--req,远程权限类型-->
</RemotePermission>
</ViewerDefaultPermission>
<OperatorDefaultPermission>
<LocalPermission>
<permissionType opt="PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup,preview"/>
<!--req,本地权限类型-->
</LocalPermission>
<RemotePermission>
<permissionType opt="preview, voiceTalk, alarmOutOrUpload, transParentChannel, contorlLocalOut,
PTZControl,record,playback,parameterConfig,logOrStateCheck,restartOrShutdown,upgrade,backup"/>
<!--req,远程权限类型-->
</RemotePermission>
</OperatorDefaultPermission>
<VideoWallPermission>
<!--opt,有电视墙功能的几款设备支持，包括大屏控制器，解码器-->
<RemotePermission>
<!--req,远程权限类型-->
<permissionType opt="baseParameterConfig, screen, window, inputSignal, layout, plan, baseMap,
OSD, pictureView, arm, upgrade, restore, importFileOrExportFile, log, restart, manageScreenArea"/>
</RemotePermission>
</VideoWallPermission>
<loginPassword min="" max="">
<!--opt,"登录密码确认"-->
</loginPassword>
</UserAbility>


DEVICE_USER_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取用户管理参数能力时pInBuf参数描述-->
<UserAbility version="2.0">
</UserAbility>


DEVICE_VIDEOPIC_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备图像参数能力集描述 -->
<VideoPicAbility version="2.0">
<channelNO>1</channelNO>
<OSD>
<ChannelName>
<enabled>true</enabled>
</ChannelName>
<Week>
<enabled>true</enabled>
</Week>
<OSDType opt="xxxx-xx-xxYMD,xx-xx-xxxxMDY,xxxxYxxMxxD,xxMxxDxxxxY,xx-xx-xxxxDMY,xxDxxMxxxxY,xx/xx/xxxxM/D/Y,xxxx/xx/xxY/M/D,xx/xx/xxxxD/M/Y "/>
<!--req,OSD属性(索引值), 1-透明,闪烁,2-透明,不闪烁,3-不透明,闪烁,4-不透明,不闪烁-->
<OSDAttrib opt="1,2,3,4"/>
<OSDHourType opt="24Hour,12Hour"/>
<FontSize opt="16*16,24*24,32*32,48*48,64*64,96*96,adaptive"/>
<!--req,OSD字体大小：0-16*16(中)/8*16(英)，1-32*32(中)/16*32(英)，2-64*64(中)/32*64(英)，
3-48*48(中)/24*48(英)，4-24*24(中)/12*24(英)，5-96*96(中)/48*96(英)，0xff-自适应(adaptive) -->
<OSDColorType opt="0,1"/>
<!--req,0-默认黑白颜色，1-自定义颜色-->
<OSDColorRGB>true</OSDColorRGB><!--req,支持OSD颜色设置-->
<alignment opt="customize,alignRight,alignLeft,GB"/>
<!--req,OSD支持对齐方式：customize-自适应，alignRight-右对齐，alignLeft-左对齐，GB-国标模式-->
<OSDMilliSecond>true</OSDMilliSecond>
<!--req,视频叠加时间支持毫秒-->
<OSDCharactersNum>32</OSDCharactersNum>
<!--opt, xs:integer, OSD字符叠加长度限制-->
<ChannelNumOverlySize min="0" max="30">
<!--opt, xs:integer, 通道名称长度限制-->
</ChannelNumOverlySize>
<boundary min="" max="">
<!--opt,xs:integer, OSD左右对齐时的边界值范围-->
</boundary>
<lowRightTextNumber min="1" max="6"/>
<lowLeftTextNumber min="7" max="8"/>
<boudaryOptionShow opt="no,oneFont,twoFont">
<!--opt,xs:string, 边界值选项显示能力，分别为无、一个字符宽度、二个字符宽度。
该能力只为界面显示使用，具体配置的值依然通过boudary字段进行传输，因此设备必须返回<boudaryOptionShow>以及<boudary>两个能力节点。
界面选择会根据选择的字符大小，动态发送边界值，若字符大小选择的是2-64*64(中)，twoFont就表示偏移两个字符宽度，boudary中应当赋值为128-->
</boudaryOptionShow>
</OSD>
<MotionDetection>
<!--req,移动侦测-->
<regionType opt="grid,area,coordinates"/>
<!--req, 网格模式(普通模式), 区域模式(专家模式), 坐标系区域模式-->
<Grid>
<VideoFormatP>
<!--req,P制式宏块-->
<rowGranularity>18</rowGranularity>
<columnGranularity>22</columnGranularity>
</VideoFormatP>
<VideoFormatN>
<!--req,N制式宏块-->
<rowGranularity>15</rowGranularity>
<columnGranularity>22</columnGranularity>
</VideoFormatN>
</Grid>
<Area>
<areaNo min="1" max="8"/>
<!--req, 区域号-->
<switchDayNightSet opt="off,autoSwitch,scheduleSwitch"/>
<!--req, 日夜控制 0~关闭,1~自动切换,2~定时切换-->
<Off>
<objectAreaProportion min="0" max="100"/>
<!--req, 占比参数(0~100)-->
<sensitivityLevel min="1" max="100"/>
<!--req,灵敏度(1~100)-->
</Off>
<AutoSwitch>
<supportType opt="day,night"/>
<!--req,支持工作模式-->
<dayObjectAreaProportion min="0" max="100"/>
<!--req 占比参数(0~100)-->
<daySensitivityLevel min="1" max="100"/>
<!--req,灵敏度(1~100)-->
<nightObjectAreaProportion min="0" max="100"/>
<!--req 占比参数(0~100)-->
<nightSensitivityLevel min="1" max="100"/>
<!--req,灵敏度(1~100)-->
</AutoSwitch>
<ScheduleSwitch>
<supportType opt="day,night"/>
<!--req,支持工作模式-->
<dayObjectAreaProportion min="0" max="100"/>
<!--req 占比参数(0~100)-->
<daySensitivityLevel min="1" max="100"/>
<!--req,灵敏度(1~100)-->
<nightObjectAreaProportion min="0" max="100"/>
<!--req 占比参数(0~100)-->
<nightSensitivityLevel min="1" max="100"/>
<!--req,灵敏度(1~100)-->
<TimeSchedule>
<beginTime opt="hour,min,sec,millisec"/>
<!--req,开始时间段类型-->
<endTime opt="hour,min,sec,millisec"/>
<!--req 结束时间段类型-->
</TimeSchedule>
</ScheduleSwitch>
</Area>
<sensitivityLevel min="0" max="5"/>
<!--req,灵敏度-->
<Sensitivity>
<!--req,新增灵敏度节点，兼容之前客户端写死加1出现的问题 -->
<notSupportOff>true</notSupportOff>
<!--req,不支持关闭灵敏度，支持关闭时不返回该节点-->
<level min="1" max="5"/>
<!--req,灵敏度级别，客户端不要进行加1处理-->
</Sensitivity>

<NormalSensitivity>
<!--req ipc V5.1.0 增加-->
<level min="0" max="5"/>
<step>20</step>
<!--req, 步进-->
<offStatus>true</offStatus>
<!--req,关闭状态-->
</NormalSensitivity>
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型-->
<displayMotion opt="true,false"/>
<!--req,启用移动侦测高亮显示，0-否，1-是-->
<Coordinates>
<!--opt, 移动侦测坐标系区域模式, 后端3.4.8项目支持-->
<normalizedScreenSize>
<!--req, ro ,"区域参照值"-->
<normalizedScreenWidth>
<!--opt, ro,xs:integer, 归一化值宽度-->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--opt, ro,xs:integer, 归一化值高度-->
</normalizedScreenHeight>
</normalizedScreenSize>
<supportRegionNum size=""/>
<!--req, "支持区域的个数范围"-->
</Coordinates>
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
<isSupportKeyingEnable>true</isSupportKeyingEnable>
<!--opt, 支持的返回该节点，不支持的不返回，"键控移动侦测开启能力"-->
</MotionDetection>
<VILostDetection>
<!--req,视频丢失-->
<alarmTime>8</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</VILostDetection>
<HideDetection>
<!--req,遮挡报警-->
<HideAreaNum>1</HideAreaNum>
<!--req,遮挡区域个数-->
<HideArea>
<id>1</id>
<PAL>
<AreaX min="0" max="704"/>
<AreaY min="0" max="576"/>
</PAL>
<NTSC>
<AreaX min="0" max="704"/>
<AreaY min="0" max="480"/>
</NTSC>
</HideArea>
<sensitivity opt="none,low,middle,high"/>
<!--req,灵敏度-->
<alarmTime>4</alarmTime>
<!--req,布防时间段个数-->
<alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight,uploadftp,uploadcloud"/>
<!--req,处理类型-->
<alarmRelateAct opt="ftp,email"/>
<!--req, 报警联动动作：ftp- 抓图上传FTP, email- Jpeg抓图上传Email-->
</HideDetection>
<PrivacyMask>
<!--req,隐私遮蔽-->
<PrivacyMaskAreaNum>1</PrivacyMaskAreaNum>
<!--req,隐私遮蔽区域个数-->
<PrivacyMaskArea>
<id>1</id>
<PAL>
<AreaX min="0" max="704"/>
<AreaY min="0" max="576"/>
</PAL>
<NTSC>
<AreaX min="0" max="704"/>
<AreaY min="0" max="480"/>
</NTSC>
</PrivacyMaskArea>
</PrivacyMask>
<VideoInputEffect>
<!--req,通道视频输入图像参数,对应SDK配置结构NET_DVR_VIDEO_INPUT_EFFECT-->
<mode opt="standard,mode1,mode2,mode3,selfDefine"/>
<!--req,模式,0-标准，1-预置模式1，2-预置模式2，3-预置模式3，255-自定义-->
<bright min="0" max="255"/>
<!--req,亮度-->
<contrast min="0" max="255" />
<!--req,对比度-->
<saturation min="0" max="255"/>
<!--req,饱和度-->
<hue min="0" max="255"/>
<!--req,色度-->
<sharpness min="0" max="255"/>
<!--req,锐度-->
<denoising min="0" max="255"/>
<!--req,去噪-->
<NotSupport opt="true, false"/>
<!--req, true表示不支持VideoInputEffect，false表示支持VideoInputEffect-->
</VideoInputEffect>
<LogoOverlay>
<!--req,视频LOGO叠加-->
<!--2012-08-29-->
<logoFormat opt="yuv,bmp"/>
<!--req,logo图片格式-->
<logoWidth min="" max=""/>
<!--req,logo图片宽-->
<logoHeight min="" max=""/>
<!--req,logo图片高-->
</LogoOverlay>
<PicAdjust>
<!--req,支持图像调整,不支持不显示-->
<leftAdjustParam min="" max=""/>
<!--req,向左调整参数取值范围-->
<rightAdjustParam min="" max=""/>
<!--req,向右调整参数取值范围-->
<upAdjustParam min="" max=""/>
<!--req,向上调整参数取值范围-->
<downAdjustParam min="" max=""/>
<!--req,向下调整参数取值范围-->
<autoAdjust>enable</autoAdjust>
<!--req,支持自动调整图像-->
<heightAdjustParam min="" max=""/>
<!--req,高度调整参数取值范围-->
<widthAdjustParam min="" max=""/>
<!--req,宽度调整参数取值范围-->
</PicAdjust>
</VideoPicAbility>


DEVICE_VIDEOPIC_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取图像能力时pInBuf参数描述-->
<VideoPicAbility version="2.0">
<channelNO>1</channelNO><!--req,通道号-->
</VideoPicAbility>


FISHEYE_IPC_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 鱼眼IPC能力集描述-->
<FishEyeAbility version="2.0">
<channelNO>1<!--req,通道号-->
</channelNO>
<correctMode opt="chip,software"/><!--req,矫正模式:芯片/软件-->
<mountType opt="ceiling,table,wall"/><!--req,安装类型:吸顶/桌面/墙面-->
<streamOutputMode opt="1,2,3"/> <!--req,码流输出模式(索引值) -->
<realTimeOutput opt="true,false"/><!--req,实时输出-->
<previewMode opt="mode1,mode2,mode3,mode4,mode5,mode6"/>
<!--req, 新的设备返回该节点信息，上传应用解析到该节点就按照模式1～6的方式来解析，上面的节点realTimeOutput不返回；老设备只返回realTimeOutput节点，解析按照老的方式来实现-->

<NeedReboot>
<!--req,1-重启，2-需要提示重启-->
<!--req,修改实时输出方式是否自动重启:1-重启，不重启时不显示-->
<RealTimeOutputChange>1</RealTimeOutputChange>
</NeedReboot>
<MotionDetectTrack>
<trackMode opt="auto"/>
<!--opt,移动跟踪模式:auto-自动跟踪-->
</MotionDetectTrack>

<TrackDevice>
<!--跟踪设备参数-->
<enabled opt="true,false"/>
<!--启用-->
<transMode opt="netsdk,rs485"/>
<!--通讯方式，netsdk-网络SDK,rs485-485串口-->

<TrackDevChan>
<!--跟踪设备通道参数-->
<devAddress opt="ipv4,ipv6,domainName"/>
<!--地址类型,domainName-设备域名-->
<devPort min="8000" max="65535"/>
<!--端口-->
<userNameLength min="0" max="32"/>
<!--用户名长度-->
<passwordLength min="0" max="16"/>
<!--密码长度-->
<channelNumber>true</channelNumber>
<!--通道号-->
</TrackDevChan>

<CalibParam>
<!--跟踪设备标定参数-->
<calibPointNum min="2" max="6"/>
<!--标定点个数-->
<horizonPtzPos>true</horizonPtzPos>
<!--球机水平线ptz坐标-->
</CalibParam>
</TrackDevice>
<manualTrace>true</manualTrace>
<!--手动跟踪定位-->

<PTZTrack>
<!--PTZ跟踪参数-->
<TrackMode>
<trackAlways>true</trackAlways>
<!--一直跟踪-->

<TrackByTime>
<!--跟踪指定时间-->
<trackTime min="1" max="60" default="10"/>
</TrackByTime>

<TrackNext>
<!--跟踪下一目标-->
<trackTime min="1" max="10" default="2"/>
</TrackNext>
</TrackMode>
</PTZTrack>
</FishEyeAbility>


FISHEYE_IPC_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取鱼眼IPC能力时pInBuf参数描述-->
<FishEyeIPCAbility version="2.0">
<channelNO>
1<!--req,通道号-->
</channelNO>
</FishEyeIPCAbility>


IP_VIEW_DEV_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, IP可视对讲主机设备能力集描述 -->
<IpViewDevAbility version="2.0">
<!--req,SIP服务器注册能力-->
<SipServerLogin>
<!--req,支持自动注册-->
<AutoLogin>
<enable>true</enable>
</AutoLogin>
<!--req,注册状态-->
<loginStatus opt= "registered,unregistered"/>
<!--req,注册用户名长度-->
<sipLoginNameLen min="1" max="32"/>
<!--req,注册密码长度-->
<sipLoginPasswordLen min="1" max="16"/>
<!--req,设备显示名称长度-->
<displayNameLen min="1" max="128"/>
<!--req,本机号码长度-->
<localNumber min="1" max="32"/>
<!--req, 注册周期,单位：分钟-->
<loginCycle min="1" max="99"/>
<!--req 服务器SIP端口：1024-65535-->
<serverSipPort min="1024" max="65535"/>
<isNotSupportLocalPort>true</isNotSupportLocalPort >
<!--反向能级，不返回表示支持本地端口，返回值为true表示不支持本地端口-->
<domainNameLen min="", max=""/>
<addressType opt="IP/IPV6, domain”/>
<!--支持的地址类型-->
<mutexAbility opt="gbt28181"/><!--req 互斥能力 gbt28181-->
<isNotSupportSipServerIP>true</isNotSupportSipServerIP>
<!--反向能级，不返回表示支持sip服务器IP（老的设备不返回的，此处增加反向能力，用于识别新设备是否支持），返回值为true表示不支持sip服务器IP-->
<!--opt, sip服务器域名-->
<sipServerDomain min="" max=""/>
<!--opt, STUN服务器IP-->
<stunServerIP min="" max=""/>
<!-- opt, STUN服务器域名-->
<stunServerDomain min="" max=""/>
<!-- opt, STUN服务器端口-->
<stunServerPort min="" max=""/>
<!-- opt, 代理服务器IP -->
<proxyServerIP min="" max=""/>
<!-- opt, 代理服务器域名-->
<proxyServerDomain min="" max=""/>
<!-- opt, 代理服务器端口-->
<proxyServerPort min="" max=""/>

</SipServerLogin>

<!--req,对讲分机基本能力-->
<LocalAbility>
<!--req,本机默认铃音可选范围-->
<defaultRing min="1" max="6"/>
<!--req,本机铃音音量范围-->
<ringVolume min="1" max="9"/>
<!--req, 输入音量可选范围-->
<inputVolume min="0" max="6"/>
<!--req, 输出音量可选范围-->
<outputVolume min="0" max="9"/>
<!--req, 支持的音频编码级数-->
<audioEncPriNum>2</audioEncPriNum>
<!--req,预览延时时延范围，单位：秒-->
<delayPreview min="0" max="30"/>
<!--req, 支持的音频编码类型,同级节点可有多个-->
<AudioEncEntry>
<index>0</index>
<name>OggVorbis</name>
<packetLen opt = "160,320"/>
</AudioEncEntry>

<!--req, 呼叫能力-->
<CallAbility>
<!--req,支持自动应答-->
<AutoResponse>
<!--req,自动应答时间范围，单位：秒-->
<autoResponse min="0" max="30"/>
</AutoResponse>
<!--req,支持的呼叫号码数-->
<callNumber>2</callNumber>
<callNumberLen min="0" max="32"/>
</CallAbility>
</LocalAbility>
<!--req,可视对讲，门口机、管理机、别墅门口机、二次确认机-->
<VideoIntercom>
<monitorChannelNo min="1" max="100"/>
<!--req,管理机的监控通道-->
<DeviceID>
<!--req,设备编号-->
<enabled>true</enabled>
<!--req,支持设备编号配置-->
<supportUnitType opt=""/>
<!--req,支持的对讲机类型-->
<InDoorDevice>
<!--req 室内机-->
<floorNum min="1" max="16"/><!--req 层号-->
<roomNum min="1" max="16"/><!--req 房间号-->
<devIndex min="0" max="10"/><!--req 室内机编号-->
</InDoorDevice>
<OutDoorDevice>
<!--req,门口机-->
<period min="1" max="16"/>
<!--req,期号-->
<buildingNum min="1" max="16"/>
<!--req,楼幢号-->
<unitNum min="0" max="10"/>
<!--req,单元号-->
<floorNum min="1" max="16"/>
<!--req,层号-->
<devIndex min="0" max="10"/>
<!--req,门口机编号-->
</OutDoorDevice>
<ManageUnitDevice>
<!--req,管理机-->
<period min="1" max="16"/>
<!--req,期号-->
<devIndex min="0" max="10"/>
<!--req,管理机编号-->
</ManageUnitDevice>
<OutDoorFenceDevice>
<!--req,围墙机-->
<period min="1" max="16"/>
<!--req,期号-->
<devIndex min="0" max="10"/>
<!--req,围墙机编号-->
</OutDoorFenceDevice>
<VillaOutDoorDevice>
<!--req 别墅门口机-->
<period min="1" max="16"/>
<!--req,期号-->
<buildingNum min="1" max="16"/>
<!--req,楼幢号-->
<unitNum min="0" max="10"/>
<!--req,单元号-->
<floorNum min="1" max="16"/>
<!--req,层号-->
<devIndex min="0" max="10"/>
<!--req,门口机编号-->
</VillaOutDoorDevice>
<AgainDevice>
<!--req,二次确认机-->
<period min="1" max="16"/>
<!--req 期号-->
<buildingNum min="1" max="16"/>
<!--req 楼幢号-->
<unitNum min="0" max="10"/>
<!--req 单元号-->
<floorNum min="1" max="16"/>
<!--req 层号-->
<devIndex min="0" max="10"/>
<!--req 门口机编号-->
</AgainDevice>
</DeviceID>
<!--req,权限密码-->
<PrivilegePwd>
<pwdType opt="engineering,setupAlarm,householderUnlock,antiHijacking,sendCard"/>
<!--req,密码类型，engineering-工程密码,setupAlarm-布撤防密码,householderUnlock-户主开锁密码,antiHijacking-防劫持密码,sendCard-发卡密码-->
<pwdLen min="6" max="16"/>
<!--密码长度-->
</PrivilegePwd>
<!--req,操作时间-->
<OperationTime>
<monitoringTime min="10" max="60"/>
<!--req,最大视频时间，单位：秒-->
<ringTime min="15" max="60"/>
<!--req,最大振铃时间，单位：秒-->
<messageTime min="30" max="60"/>
<!--req,最大留言时间，单位：秒-->
<talkTime min="90" max="120"/>
<!--req,最大通话时间，单位：秒-->
<callForwardingTime min="0" max="20"/>
<!--呼叫转移超时时间，单位：秒-->
</OperationTime>
<RelateDevice>
<outdoorUnitIP opt="ipv4,ipv6"/>
<!--req,(主）门口机IP-->
<manageUnitIP opt="ipv4,ipv6"/>
<!--req,管理机IP-->
<sipServerIP opt="ipv4,ipv6"/>
<!--req,SIP服务器IP-->
<centerIP opt="ipv4,ipv6"/>
<!--req,中心平台IP-->
<centerPort min="0" max="65535"/>
<!--req,中心平台端口-->
<indoorUnitIP opt="ipv4,ipv6"/>
<!--室内主机IP -->
<notSupportAgainUnitIP opt="true,false"/>
<!--req,是否不支持配置二次确认机IP，true-不支持，false-支持-->
<againUnitIP opt="ipv4,ipv6"/>
<!--req,二次确认机IP-->
<notSupportOutDoorType opt="true,false"/>
<!--req,是否不支持配置主门口机类型，true-不支持，false-支持-->
<outDoorType opt="unitOutdoor,villaOutDoor"/>
<!--req,主门口机类型，unitOutdoor-主单元门口机，villaOutDoor-主别墅门口机-->
<manageCenterID min="" max=””/>
<!--使用标准SIP协议时有效，管理中心ID -->
<calledName min="" max=""/>
<!--使用标准SIP协议时有效，被叫用户名-->
<outInConnectMode opt="sameLan,diffLan"/>
<!--门口机与室内分机组网模式：sameLan-门口机与室内分机同一局域网, diffLan-门口机与室内分机不同局域网-->
<indoorConnectMode opt="wireless,wired"/>
<!--室内主机与室内分机组网模式：wireless-通过无线网卡、wired-通过有线网卡；-->

</RelateDevice>
<NoticeData>
<noticeTime>true</noticeTime>
<!--req,公告时间-->
<noticeNumberLen min="0" max="32"/>
<!--req,公告编号-->
<noticeThemeLen min="0" max="64"/>
<!--req,公告主题-->
<noticeDetailLen min="0" max="1024"/>
<!--req,公告详情-->
<noticeLevel opt="advertisement,propertyMgmt,alarm,notification"/>
<!--req,公告等级，advertisement-广告类信息,propertyMgmt-物业信息,alarm-报警信息,notification-通知类信息-->
<maxPicNum>6</maxPicNum>
<!--req,图片数量-->
<maxSinglePicSize>512</maxSinglePicSize>
<!--req,单张图片的最大大小，单位：KB-->
</NoticeData>
<!--req,远程开锁-->
<ControlGateway>
<gatewayIndex min="1"/>
<!--req,门禁序号-->
<command opt="close,open,normalOpen,resume"/>
<!--控制命令（normalOpen-常开（通道状态），resume-恢复（普通状态））-->
<controlSrc>true</controlSrc>
<!--req,操作发起源信息-->
<controlType opt="monitor,calling"/>
<!--req,开锁场景类型，monitor-视频，calling-通话-->
<lockType opt="normal,smartLock"/>
<!--req,锁类型-->
<lockID min="" max=""/>
<!--req,智能锁ID（或者门口机的锁ID）-->
<password min="" max=""/>
<!--req,智能锁密码长度-->
</ControlGateway>

<Zone>
<!--req,通用防区配置，特殊防区配置见节点ZoneList-->
<ZoneConfig>
<enabled>true</enabled>
<!--req,支持防区参数配置（报警输入参数配置）-->
<delayInParam>true</delayInParam>
<!--req,true,表示客户端应该使用NET_DVR_ALARMIN_PARAM中的dwParam来设置延时时间,动环报警主机和自助行报警主机使用这种配置延时方式;
false，表示通过NET_DVR_ALARMSUBSYSTEMPARAM中的wEnterDelay、wExitDelay来设置-->
<detectorType opt="panicButton,magneticContact,smokeDetector,activeInfraredDetector,passiveInfraredDetector,glassBreakDetector,
vibrationDetector,dualTechnologyPirDetector,tripleTechnologyPirDetector,humidityDetector,temperatureDetector,
combustibleGasDetecto,dynamicSwitch,controlSwitch,smartLock,waterDetector,otherDetector"/>
<!--req,设备支持的探测器类型，紧急开关，门磁开关，烟感探测器，主动红外探测器，被动红外探测器，玻璃破碎探测器，震动探测器，
双鉴移动探测器，三技术探测器，温度探测器，温感探测器，可燃气体探测器, 随动开关，控制开关，智能锁，水感探测器，门铃开关，其他探测类型-->
<zoneType opt="instantZone, 24hourAudibleZone,delayZone,interiorWithDelayZone,keyswitchZone,supervisedFireZone,perimeterZone,
24hourSlientZone,disable"/>
<!--req,设备支持的防区类型-->
<LimitedDetectorType>
<!--req,探测器类型限制能力-->
<Detector>
<name>smokeDetector</name>
<zoneType opt="24hourAudibleZone"/>
<!--req,烟感探测器仅支持24小时有声防区-->
</Detector>
<Detector>
<name>glassBreakDetector</name>
<zoneType opt="24hourAudibleZone"/>
<!--req,玻璃破碎探测器仅支持24小时有声防区-->
</Detector>
</LimitedDetectorType>
<uploadAlarmRecoveryReport>true</uploadAlarmRecoveryReport>
<!--req,上传报警恢复报告配置-->
<zoneDelayTime min="30" max="60"/>
<!--req,延时防区延时时间-->
<sensitivity opt="10ms,250ms,500ms,750ms"/>
<!--req,灵敏度-->
<arrayBypass>true</arrayBypass>
<!--req,支持防区组旁路配置></arrayBypass-->
<moduleStatus attri="readonly" opt="offline,online"/>
<!--req,模块状态-->
<moduleAddress min="0" max="0"/>
<!--req,模块地址-->
<moduleChannel>true</moduleChannel>
<!--req,模块通道-->
<moduleType opt="localZone, 1zoneExpander,2zoneExpander,8ZoneExpander,8sensorZoneExpander,1ZoneAndTrigger"/>
<!--支持的防区类型-->
<zoneNo attri="readonly" min="1" max="8"/>
<!--req,防区序号，只能获取-->
<subsystemNo attri="readonly">1</subsystemNo>
<!--req,防区所属的子系统号，只能获取-->
<alarmType opt="open,close" default="open"/>
<!--req,报警器类型，open-常开，close-常闭-->
<InDelayTime min="0" max="255"/>
<!--req,进入延迟时间，单位s-->
<OutDelayTime min="0" max="255"/>
<!--req,退出延迟时间，单位s-->
</ZoneConfig>
<GetZoneList>
<enabled>true</enabled>
<!--req,支持获取防区列表-->
</GetZoneList>
<ZoneArmDisarm>
<enabled>true</enabled>
<!--req,支持防区布撤防-->
</ZoneArmDisarm>
<ZoneGroupBypass>
<enabled>true</enabled>
<!--req,支持防区组旁路-->
</ZoneGroupBypass>
</Zone>
<IOIn>
<IOInNo attri="readonly" min="1" max=""/>
<!--req,IO输入号序号，只能获取-->
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
<!--req,用途：禁用，开门按钮，门状态，自定义-->
<NodeList>
<Node>
<id>1</id>
<name>S1</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>2</id>
<name>S2</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>3</id>
<name>S3</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>4</id>
<name>S4</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>5</id>
<name>AI1</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>6</id>
<name>AI2</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>7</id>
<name>AI3</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
<Node>
<id>8</id>
<name>AI4</name>
<useType opt="disabled,openDoorBtn,magneticStatus,custom"/>
</Node>
</NodeList>
</IOIn>
<IOOut>
<IOOutNo attri="readonly" min="1" max="4"/>
<!--req,IO输出号序号，只能获取-->
<useType opt="disabled,electricLock,custom"/>
<!--req,用途：禁用，电锁，自定义-->
<NodeList>
<Node>
<id>1</id>
<name>COM1</name>
<useType opt="disabled,electricLock,custom"/>
</Node>
<Node>
<id>2</id>
<name>COM2</name>
<useType opt="disabled,electricLock,custom"/>
</Node>
<Node>
<id>3</id>
<name>AO1</name>
<useType opt="disabled,custom"/>
</Node>
<Node>
<id>4</id>
<name>AO2</name>
<useType opt="disabled,custom"/>
</Node>
</NodeList>
</IOOut>
<ElevatorControl>
<elevatorNo attri="readonly" min="1" max="1"/>
<!--ro,电梯号-->
<interfaceType opt="RS485,network"/>
<!--req,接口类型：RS485，网口 -->
<RS485Protocol opt="private,custom"/>
<!--req,RS485协议类型：私有，自定义 -->
<networkProtocol opt="private,custom"/>
<!--req,网口协议类型：私有，自定义 -->
<serverIP opt="ipv4,ipv6"/>
<!--opt,梯控服务器IP-->
<serverPort min="0" max="65535"/>
<!--opt,梯控服务器端口号-->
</ElevatorControl>
<RS485Config>
<!--req,485参数配置，配置结构体中关于485通信的参数能力见"RS232和RS485串口能力节点”,其他参数见下，设备不支持时不返回大节点-->
<deviceNameLength min="0" max="32"/>
<!--req,485名称-->
<deviceType>true</deviceType>
<!--req,支持设备类型配置，具体支持的设备类型通过获取外接设备列表接口获取-->
<deviceProtocol>true</deviceProtocol>
<!--req,支持设备类型配置，具体支持的设备协议通过"获取协议列表接口"获取-->
</RS485Config>
<supportVisRegisterInfo opt="true,false"/>
<!--req,是否支持获取注册信息，不支持不返回，且仅有门口机或管理机才可能返回该节点-->

<CallRoomConfig>
<!--req,别墅机按键呼叫住户配置-->
<keyNo min="1" max="4"/>
<!--req,别墅机按键号-->
<floorNo min="1" max="999"/>
<!--req,别墅层号-->
<roomNo min="1" max="999"/>
<!--req,别墅房间号-->
<callManageCenter opt="true,false"/>
<!--req,是否配置成呼叫管理中心-->
</CallRoomConfig>

<VideoCall>
<!--opt,可视通话通能力-->
<enabled opt="true,false"/>
<!--req,是否支持可视通话-->
<supportCmd opt="Request,Cancel,Answer,Decline,Timeout,Bye"/>
<!--req,设备支持的信令类型: Request-请求呼叫,Cancel-取消本次呼叫,Answer-接听,Decline-拒接,Timeout-超时,Bye-结束通话-->
</VideoCall>
<CallerDevice>
<!--req 主叫设备信息(手机内部测试发布接口)-->
<period min="1" max="16"/>
<!--req 期号-->
<buildingNum min="1" max="16"/>
<!--req 楼幢号-->
<unitNum min="0" max="10">
<!--req 单元号-->
<floorNum min="1" max="16"/>
<!--req 层号-->
<devIndex min="0" max="10">
<!--req 设备编号-->
<devType min="1" max="9">
<!--req 设备类型-->
<lockNum min="0" max="2">
<!--req锁数量-->
</CallerDevice>
<EzvizDeviceInfo>
<!--req 萤石设备信息(手机内部测试发布接口)-->
<deviceNum min="1" max="32"/>
<!--req 设备数-->
<DeviceCfg size="16" >
<deviceNameLen min="1" max="32"/>
<!--req 设备名称-->
<deviceType min="1" max="3">
<!--req 设备类型-->
<deviceID min="0" max="10"/>
<!--req 设备编号-->
<lockNum min="0" max="2">
<!--req锁数量-->
</EzvizDeviceInfo>

<VideoIntercomStream>
<!--opt,视频源-->
<sourceType opt="IPC,DVR/DVS/NVR,OutDoorDevice,OutDoorFenceDevice,AgainDevice"/>
<!--opt,视频源类型-->
<againDeviceNumber min="" max=""/>
<!--opt,二次确认机个数-->
</VideoIntercomStream>
<UploadAlarmCfg>
<!--req,NET_DVR_VIDEO_INTERCOM_ALARM_CFG可视对讲报警事件参数配置-->
<UploadDoorNotCloseAlarm opt="true,false"/>
<!--req,是否上传门未关报警-->
</UploadAlarmCfg>
</VideoIntercom>

<ZoneList size="64">
<!--req,特殊防区配置,根据防区ID区分不同防区的能力-->
<ZoneConfig>
<zoneID>
<!--req,防区ID, min="" max=""-->
</zoneID>
<enabled>true</enabled>
<!--req,支持防区参数配置（报警输入参数配置）-->
<delayInParam>true</delayInParam>
<!--req,true,表示客户端应该使用NET_DVR_ALARMIN_PARAM中的dwParam来设置延时时间,动环报警主机和自助行报警主机使用这种配置延时方式;
false，表示通过NET_DVR_ALARMSUBSYSTEMPARAM中的wEnterDelay、wExitDelay来设置-->
<detectorType opt="panicButton,magneticContact,smokeDetector,activeInfraredDetector,passiveInfraredDetector,glassBreakDetector,vibrationDetector,
dualTechnologyPirDetector,tripleTechnologyPirDetector,humidityDetector,temperatureDetector,combustibleGasDetecto,
dynamicSwitch,controlSwitch,smartLock,waterDetector,otherDetector"/>
<!--设备支持的探测器类型，紧急开关，门磁开关，烟感探测器，主动红外探测器，被动红外探测器，玻璃破碎探测器，震动探测器，双鉴移动探测器，
三技术探测器，温度探测器，温感探测器，可燃气体探测器, 随动开关，控制开关，智能锁，水感控制器，其他探测类型-->
<zoneType opt="instantZone, 24hourAudibleZone,delayZone,interiorWithDelayZone,keyswitchZone,supervisedFireZone,perimeterZone,24hourSlientZone,disable"/>
<!--req,设备支持的防区类型-->
<uploadAlarmRecoveryReport>true</uploadAlarmRecoveryReport>
<!--req,上传报警恢复报告配置-->
<zoneDelayTime min="" max=""/>
<!--req,延时防区延时时间-->
<sensitivity opt="10ms,250ms,500ms,750ms"/>
<!--req,灵敏度-->
<arrayBypass>true</arrayBypass>
<!--req,支持防区组旁路配置></arrayBypass-->
<moduleStatus attri="readonly" opt="offline,online"/><!--req,模块状态-->
<moduleAddress min="" max=""/><!--req,模块地址-->
<moduleChannel>true</moduleChannel><!--req,模块通道-->
<moduleType opt="localZone, 1zoneExpander,2zoneExpander,8ZoneExpander,8sensorZoneExpander,1ZoneAndTrigger"/>;<!--req,支持的防区类型-->
<zoneNo attri="readonly" min="" max=""/><!--req,防区序号，只能获取-->
<subsystemNo attri="readonly">1</subsystemNo><!--req,防区所属的子系统号，只能获取-->
<alarmType opt="open,close" default="open"/><!--req,报警器类型，open-常开，close-常闭-->
<InDelayTime min="0" max="255"/><!--req,进入延迟时间，单位s-->
<OutDelayTime min="0" max="255"/><!--req,退出延迟时间，单位s-->
</ZoneConfig>
<GetZoneList>
<enabled>true</enabled>
<!--支持获取防区列表-->
</GetZoneList>
<ZoneArmDisarm>
<enabled>true</enabled>
<!--支持防区布撤防-->
</ZoneArmDisarm>
<ZoneGroupBypass>
<enabled>true</enabled>
<!--支持防区组旁路-->
</ZoneGroupBypass>
</ZoneList>

<NoNeedReboot>
<videoResolutionChange opt="true,false"/>
<!--opt,视频分辨率修改是否不重启-->
<videoFrameRateChange opt="true,false"/>
<!--opt,视频帧率修改是否不重启-->
</NoNeedReboot>
</IpViewDevAbility>


IPC_FRONT_PARAMETER

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备前端参数能力集描述 -->
<CAMERAPARA>

<PowerLineFrequencyMode>
<!-- req, 0-50HZ; 1-60HZ-->
<Range>0,1</Range>
</PowerLineFrequencyMode>

<WhiteBalance>

<WhiteBalanceMode>
<!-- req, 0 USERSET, 1 AWB1, 2 AWB2; 2 AWB3-->
<Range>0,1</Range>
</WhiteBalanceMode>

<WhiteBalanceModeRGain>
<Min>0</Min> <!-- req, 最小值-->
<Max>255</Max> <!-- req, 最大值-->
</WhiteBalanceModeRGain>

<WhiteBalanceModeBGain>
<Min>0</Min> <!-- req, 最小值-->
<Max>255</Max> <!-- req, 最大值-->
</WhiteBalanceModeBGain>
</WhiteBalance>

<Exposure>
<ExposureMode>
<!-- req, 0 手动曝光 1自动曝光-->
<Range>0,1</Range>
</ExposureMode>

<ExposureSet>
<!-- req, 0-自动*8、1-自动*5、2 -自动*4、3 -自动*2、4 -1/25、5 -1/50、6 -1/100、7 -1/250、8 -1/500、9 -1/750、10-1/1000、11-1/2000、12-1/4000、13-1/10,000、14-1/100,000 -->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14</Range>
</ExposureSet>

<exposureUSERSET>
<!-- req, 自动自定义曝光时间-->
<Min>0</Min> <!-- req, 最小值-->
<Max>2000000</Max> <!-- req, 最大值-->
</exposureUSERSET>

<ExposureTarget>
<!-- req, 手动曝光时间,单位微秒-->
<Min>0</Min> <!-- req, 最小值-->
<Max>2000000</Max> <!-- req, 最大值-->
</ExposureTarget>
</Exposure>

<IrisMode>
<!-- req, 镜头类型: 0- 自动光圈镜头，1-手动光圈镜头-->
<Range>0,1</Range>
</IrisMode>

<FocusMode>
<!-- req, 0手动聚焦;1自动聚焦; 2自动背焦-->
<Range>0,1,2</Range>
</FocusMode>

<GainLevel>
<Min>0</Min>
<Max>100</Max>
</GainLevel>

<BrightnessLevel>
<Min>0</Min>
<Max>100</Max>
</BrightnessLevel>

<ContrastLevel>
<Min>0</Min>
<Max>100</Max>
</ContrastLevel>

<SharpnessLevel>
<Min>0</Min>
<Max>100</Max>
</SharpnessLevel>

<SaturationLevel>
<Min>0</Min>
<Max>100</Max>
</SaturationLevel>

<HueLevel>
<Min>0</Min>
<Max>100</Max>
</HueLevel>

<GammaCorrection>
<GammaCorrectionEnabled>
<!-- req, 0 dsibale 1 enable-->
<Range>0,1</Range>
</GammaCorrectionEnabled>

<GammaCorrectionLevel>
<Min>0</Min>
<Max>100</Max>
</GammaCorrectionLevel>
</GammaCorrection>

<WDR>
<WDREnabled>
<!-- req, 0 dsibale 1 enable 2 Auto-->
<Range>0,1,2</Range>
</WDREnabled>

<WDRLevel1>
<Min>0</Min>
<Max>15</Max>
</WDRLevel1>

<WDRLevel2>
<Min>0</Min>
<Max>15</Max>
</WDRLevel2>

<WDRContrastLevel >
<Min>0</Min>
<Max>15</Max>
</WDRContrastLevel >
</WDR>

<DayNightFilter>
<DayNightFilterType>
<!-- req, 0 day,1 night,2 auto-->
<Range>0,1,2</Range>
</DayNightFilterType>

<SwitchSchedule>
<SwitchScheduleEnabled>
<!-- req, 0 dsibale 1 enable-->
<Range>0,1</Range>
</SwitchScheduleEnabled>

<DayToNightFilterLevel>
<Range>0,1,2,3,4,5,6,7</Range>
</DayToNightFilterLevel>

<NightToDayFilterLevel>
<Range>0,1,2,3,4,5,6,7</Range>
</NightToDayFilterLevel>

<DayNightFilterTime>
<Min>0</Min>
<Max>120</Max>
</DayNightFilterTime>

</SwitchSchedule>
</DayNightFilter>

<Backlight>
<BacklightMode>
<!-- req, 0 USERSET、 1UP、2 DOWN、3 LEFT、4 RIGHT、5 MIDDLE、6 自定义-->
<Range>0,1,2,3,4,5,6</Range>
</BacklightMode>

<BacklightLevel>
<Min>0</Min>
<Max>15</Max>
</BacklightLevel>
</Backlight>

<Mirror>
<!-- req, 0-off,1-leftright,2-updown,3-center-->
<Range>0,1,2,3</Range>
</Mirror>

<EPTZ>
<!-- req, 0-不启用电子云台,1-启用电子云台-->
<Range>0,1</Range>
</EPTZ>

<LOCALOUTPUT>
<!-- req, 0-不支持,1-支持-->
<!-- req, 迷你球,卡片机不支持本地输出-->
<!-- req, BNC- 0,1; HDMI- 0:不支持, 20:HDMI_720P50, 20:HDMI_720P60, 22:HDMI_1080I60,-->
<!-- req, 23:HDMI_1080I50, 24:HDMI_1080P24, 25:HDMI_1080P25,-->
<!-- req, 26:HDMI_1080P30, 27:HDMI_1080P50, 28:HDMI_1080P60-->
<Range>0,1</Range>
</LOCALOUTPUT>

<DigitalNoiseReduction>
<DigitalNoiseReductionEnable>
<!-- req, 0-关闭,1-普通模式,2专家模式-->
<Range>0,1,2</Range>
</DigitalNoiseReductionEnable>

<!-- req, 普通模式下数字降噪级别-->
<DigitalNoiseReductionLevel>
<!-- req, 0-100-->
<Min>0</Min>
<Max>100</Max>
</DigitalNoiseReductionLevel>

<!-- req, 专家模式下空域数字降噪级别-->
<DigitalNoiseSpectralLevel>
<!-- req, 0-100-->
<Min>0</Min>
<Max>100</Max>
</DigitalNoiseSpectralLevel>

<!-- req, 专家模式下时域数字降噪级别-->
<DigitalNoiseTemporalLevel>
<!-- req, 0-100-->
<Min>0</Min>
<Max>100</Max>
</DigitalNoiseTemporalLevel>
</DigitalNoiseReduction>

<!-- req, 色阶范围-->
<ColorRange>
<!-- req, 0:16-235,1:0-255-->
<Range>0,1</Range>
</ColorRange>

<DigitalZoom>
<!-- req, 数字倍率,热成像设备用到 -->
<!-- req, 数字倍率:0-关闭,1-×2,2-×4 -->
<Range>0,1,2</Range>
</DigitalZoom>

<DeadPixelDetect>
<!-- req, 0 dsibale 1 enable-->
<Range>0,1</Range>
</DeadPixelDetect>

<!-- req, 行编码能力项-->
<LINEENCODE>
<!-- req, 0 dsibale 1 enable-->
<Range>0,1</Range>
</LINEENCODE>

<!-- req, 是否支持一键聚焦,1-支持,不支持无该项-->
<OnepushFocus>1</OnepushFocus>

</CAMERAPARA>


IPC_FRONT_PARAMETER_V20

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备前端参数能力集描述 -->
<CAMERAPARA version="2.0">
<ChannelList>
<ChannelEntry>
<ChannelNumber>1</ChannelNumber>
<devType opt="ipc,ipd"/>
<PowerLineFrequencyMode>
<!--req, 制式-->
<!--req, 0-50HZ; 1-60HZ-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</PowerLineFrequencyMode>
<CaptureMode>
<!--req, 对应NET_DVR_CAMERAPARAMCFG_EX中的byCaptureMode -->
<!--req, 设备支持captureModePWithIndex和captureModeNWithIndex, 同时返回原先的captureModeP和captureModeN时，客户端解析能力集，
优先使用captureModePWithIndex和captureModeNWithIndex，不支持这两个能力节点时才使用captureModeP和captureModeN-->
<!--req, 0-关闭、1-640*480@25fps、2-640*480@30ps、3-704*576@25fps、4-704*480@30fps、5-1280*720@25fps、
6-1280*720@30fps、7-1280*720@50fps、8-1280*720@60fps、9-1280*960@15fps、10-1280*960@25fps、
11-1280*960@30fps、12-1280*1024@25fps、13-1280*1024@30fps、14-1600*900@15fps、15-1600*1200@15fps、
16-1920*1080@15fps、17-1920*1080@25fps、18-1920*1080@30fps、19-1920*1080@50fps、20-1920*1080@60fps、
21-2048*1536@15fps、22-2048*1536@20fps、23-2048*1536@24fps、24-2048*1536@25fps、25-2048*1536@30fps、
26-2560*2048@25fps、27-2560*2048@30fps、28-2560*1920@7.5fps、29-3072*2048@25fps、30-3072*2048@30fps、
31-2048*1536@12.5fps、32-2560*1920@6.25fps、33-1600*1200@25fps、34-1600*1200@30fps、35-1600*1200@12.5fps、
36-1600*900@12.5fps、37-1600@900@15fps、38-800*600@25fps、39-800*600@30fps,136-640*960@25fps、
137-640*960@24fps、142-2992*2192@25fps、143-2992*2192@30fps、158-384*288@8.3fps、159-640*512@8.3fps、
160-160*120@8.3fps、161-1024*768@8.3fps、162-640*480@8.3fps-->
<captureModeP opt="close,640*480@25fps,640*480@30ps,704*576@25fps,704*480@30fps,1280*720@25fps,
1280*720@30fps,1280*720@50fps,1280*720@60fps,1280*960@15fps,1280*960@25fps,
1280*960@30fps,1280*1024@25fps,1280*1024@30fps,1600*900@15fps,1600*1200@15fps,
1920*1080@15fps,1920*1080@25fps,1920*1080@30fps,1920*1080@50fps,1920*1080@60fps,
2048*1536@15fps,2048*1536@20fps,2048*1536@24fps,2048*1536@25fps,2048*1536@30fps,
2560*2048@25fps,2560*2048@30fps,2560*1920@7.5fps,3072*2048@25fps,3072*2048@30fps,
2048*1536@12.5fps,2560*1920@6.25fps,1600*1200@25fps,1600*1200@30fps,1600*1200@12.5fps,
1600*900@12.5fps,1600@900@15fps,800*600@25fps,800*600@30fps,640*960@25fps,640*960@24fps"/>
<!--req, P制下的captureMode值-->
<captureModeN opt="close,640*480@25fps,640*480@30ps,704*576@25fps,704*480@30fps,1280*720@25fps,
1280*720@30fps,1280*720@50fps,1280*720@60fps,1280*960@15fps,1280*960@25fps,
1280*960@30fps,1280*1024@25fps,1280*1024@30fps,1600*900@15fps,1600*1200@15fps,
1920*1080@15fps,1920*1080@25fps,1920*1080@30fps,1920*1080@50fps,1920*1080@60fps,
2048*1536@15fps,2048*1536@20fps,2048*1536@24fps,2048*1536@25fps,2048*1536@30fps,
2560*2048@25fps,2560*2048@30fps,2560*1920@7.5fps,3072*2048@25fps,3072*2048@30fps,
2048*1536@12.5fps,2560*1920@6.25fps,1600*1200@25fps,1600*1200@30fps,1600*1200@12.5fps,
1600*900@12.5fps,1600@900@15fps,800*600@25fps,800*600@30fps,640*960@25fps,640*960@24fps"/>
<!--req, N制下的captureMode值-->
<captureModePWithIndex opt="0-close,1-640*480@25fps,2-640*480@30ps,3-704*576@25fps,4-704*480@30fps,5-1280*720@25fps,
6-1280*720@30fps,7-1280*720@50fps,8-1280*720@60fps,9-1280*960@15fps,10-1280*960@25fps,
11-1280*960@30fps,12-1280*1024@25fps,13-1280*1024@30fps,14-1600*900@15fps,15-1600*1200@15fps,
16-1920*1080@15fps,17-1920*1080@25fps,18-1920*1080@30fps,19-1920*1080@50fps,20-1920*1080@60fps,
21-2048*1536@15fps,22-2048*1536@20fps,23-2048*1536@24fps,24-2048*1536@25fps,25-2048*1536@30fps,
26-2560*2048@25fps,27-2560*2048@30fps,28-2560*1920@7.5fps,29-3072*2048@25fps,30-3072*2048@30fps,
31-2048*1536@12.5fps,32-2560*1920@6.25fps,33-1600*1200@25fps,34-1600*1200@30fps,35-1600*1200@12.5fps,
36-1600*900@12.5fps,37-1280*960@12.5fps,38-800*600@25fps,39-800*600@30fps,40-4000*3000@12.5fps,
41-4000*3000@15fps,42-4096*2160@20fps,43-3840*2160@20fps,44-960*576@25fps,45-960*480@30fps,
46-752*582@25fps,47-768*494@30fps,48-2560*1440@25fps,49-2560*1440@30fps,50-720P@100fps,
51-720P@120fps,52-2048*1536@50fps,53-2048*1536@60fps,54-3840*2160@25fps,55-3840*2160@30fps,
56-4096*2160@25fps,57-4096*2160@30fps,58-1280*1024@50fps,59-1280*1024@60fps,60-3072*2048@50fps,
61-3072*2048@60fps,62-3072*1728@25fps,63-3072*1728@30fps,64-3072*1728@50fps,65-3072*1728@60fps,
66-336*256@50fps,67-336*256@60fps,68-384*288@50fps,69-384*288@60fps,70-640*512@50fps,
71-640*512@60fps,72-2592*1944@25fps,73-2592*1944@30fps,74-2688*1536@25fps,75-2688*1536@30fps,
76-2592*1944@20fps,77-2592*1944@15fps,78-2688*1520@20fps,79-2688*1520@15fps,80-2688*1520@25fps,
81-2688*1520@30fps,82-2720*2048@25fps,83-2720*2048@30fps,84- 336*256@25fps,85-384*288@25fps,
86-640*512@25fps,87-1280*960@50fps,88-1280*960@60fps,89-1280*960@100fps,90-1280*960@120fps,
91-4000*3000@20fps,141-2688*1520@12.5fps,158-384*288@8.3fps,159-640*512@8.3fps,160-160*120@8.3fps,
161-1024*768@8.3fps,162-640*480@8.3fps"/>
<!--req, P制下，带索引的captureMode值-->
<captureModeNWithIndex opt="0-close,1-640*480@25fps,2-640*480@30ps,3-704*576@25fps,4-704*480@30fps,5-1280*720@25fps,
6-1280*720@30fps,7-1280*720@50fps,8-1280*720@60fps,9-1280*960@15fps,10-1280*960@25fps,
11-1280*960@30fps,12-1280*1024@25fps,13-1280*1024@30fps,14-1600*900@15fps,15-1600*1200@15fps,
16-1920*1080@15fps,17-1920*1080@25fps,18-1920*1080@30fps,19-1920*1080@50fps,20-1920*1080@60fps,
21-2048*1536@15fps,22-2048*1536@20fps,23-2048*1536@24fps,24-2048*1536@25fps,25-2048*1536@30fps,
26-2560*2048@25fps,27-2560*2048@30fps,28-2560*1920@7.5fps,29-3072*2048@25fps,30-3072*2048@30fps,
31-2048*1536@12.5fps,32-2560*1920@6.25fps,33-1600*1200@25fps,34-1600*1200@30fps,35-1600*1200@12.5fps,
36-1600*900@12.5fps,37-1280*960@12.5fps,38-800*600@25fps,39-800*600@30fps,40-4000*3000@12.5fps,
41-4000*3000@15fps,42-4096*2160@20fps,43-3840*2160@20fps,44-960*576@25fps,45-960*480@30fps,
46-752*582@25fps,47-768*494@30fps,48-2560*1440@25fps,49-2560*1440@30fps,50-720P@100fps,
51-720P@120fps,52-2048*1536@50fps,53-2048*1536@60fps,54-3840*2160@25fps,55-3840*2160@30fps,
56-4096*2160@25fps,57-4096*2160@30fps,58-1280*1024@50fps,59-1280*1024@60fps,60-3072*2048@50fps,
61-3072*2048@60fps,62-3072*1728@25fps,63-3072*1728@30fps,64-3072*1728@50fps,65-3072*1728@60fps,
66-336*256@50fps,67-336*256@60fps,68-384*288@50fps,69-384*288@60fps,70-640*512@50fps,
71-640*512@60fps,72-2592*1944@25fps,73-2592*1944@30fps,74-2688*1536@25fps,75-2688*1536@30fps,
76-2592*1944@20fps,77-2592*1944@15fps,78-2688*1520@20fps,79-2688*1520@15fps,80-2688*1520@25fps,
81-2688*1520@30fps,82-2720*2048@25fps,83-2720*2048@30fps,84- 336*256@25fps,85-384*288@25fps,
86-640*512@25fps,87-1280*960@50fps,88-1280*960@60fps,89-1280*960@100fps,90-1280*960@120fps,
91-4000*3000@20fps,141-2688*1520@12.5fps,158-384*288@8.3fps,159-640*512@8.3fps,160-160*120@8.3fps,
161-1024*768@8.3fps,162-640*480@8.3fps"/>
<!--req, N制下，带索引的captureMode值-->
<!--req, 在1080p50/1080p60下，要开启3D降噪、SMD、旋转或宽动态，需提示“请设置普通帧率的capture mode”-->
<CaptureModeIndex19>
<!--1920*1080@50fps-->
<!--req, 互斥能力 数字降噪 越界侦测 区域入侵侦测 旋转 宽动态接入能力-->
<mutexAbility opt="digitalNoiseReduction,traversingVirtualPlane,fieldDetection,corridorMode,WDR"/>
</CaptureModeIndex19 >

<CaptureModeIndex20>
<!--req, 1920*1080@60fps-->
<!--req, 互斥能力 数字降噪 越界侦测 区域入侵侦测 旋转 宽动态接入能力-->
<mutexAbility opt="digitalNoiseReduction,traversingVirtualPlane,fieldDetection,corridorMode,WDR"/>
</CaptureModeIndex20>

<!--req, 在720p50/720p60下，要开启旋转或宽动态，需提示“请设置普通帧率的capture mode”-->
<CaptureModeIndex7>
<!--1280*720@50fps-->
<!--req 互斥能力 旋转 宽动态接入能力-->
<mutexAbility opt="corridorMode,WDR"/>
</CaptureModeIndex7>

<CaptureModeIndex8>
<!--1280*720@60fps-->
<!--req 互斥能力 旋转 宽动态接入能力-->
<mutexAbility opt="corridorMode,WDR"/>
</CaptureModeIndex8>
</CaptureMode>

<CaptureModeIndex52>
<!--2048*1536@50fps-->
<!--req 互斥能力 旋转 宽动态接入能力-->
<mutexAbility opt="WDR"/>
</CaptureModeIndex52>

<CaptureModeIndex53>
<!--2048*1536@60fps -->
<!--req 互斥能力 旋转 宽动态接入能力-->
<mutexAbility opt="WDR"/>
</CaptureModeIndex53>

<CaptureModeIndex87>
<!--1280*960@50fps -->
<!--req 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</CaptureModeIndex87>

<CaptureModeIndex88>
<!--1280*960@60fps -->
<!--req 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</CaptureModeIndex88>

<CaptureModeIndex89>
<!--1280*960@100fps -->
<!--req 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</CaptureModeIndex89>

<CaptureModeIndex90>
<!--1280*960@120fps -->
<!--req 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</CaptureModeIndex90>

<WhiteBalance>
<!--req, 白平衡-->
<WhiteBalanceMode>
<!--req, 白平衡模式-->
<!--req, 0-手动白平衡（MWB）,1-自动白平衡1（AWB1）,2-自动白平衡2 (AWB2),3-锁定白平衡(Locked WB)，
4-室外(Outdoor)，5-室内(Indoor)6-日光灯(Fluorescent Lamp)，7-钠灯(Sodium Lamp)，8-自动跟踪(Auto-Track)，
9-一次白平衡(One Push)，10-室外自动(Auto-Outdoor)，11-钠灯自动 (Auto-Sodiumlight)，12-水银灯(Mercury Lamp)，
13-自动白平衡(Auto)，14-白炽灯 (IncandescentLamp)，15-暖光灯(Warm Light Lamp)，16-自然光(Natural Light)-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
<Default>1</Default>
<!--req, 默认值-->
</WhiteBalanceMode>
<WhiteBalanceModeRGain>
<!--req, 白平衡R增益-->
<Min>0</Min>
<!--req, 最小值-->
<Max>255</Max>
<!--req, 最大值-->
<Default>100</Default>
<!--req, 默认值-->
</WhiteBalanceModeRGain>
<WhiteBalanceModeBGain>
<!--req, 白平衡B增益-->
<Min>0</Min>
<!--req, 最小值-->
<Max>255</Max>
<!--req, 最大值-->
<Default>100</Default>
<!--req, 默认值-->
</WhiteBalanceModeBGain>
</WhiteBalance>

<!--req, 此项IPC专用-->
<Exposure>
<!--req, 曝光-->
<ExposureMode>
<!--req, 曝光模式，此项已不使用，暂时保留-->
<!--req, 0-手动曝光，1-自动曝光-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</ExposureMode>
<!--req, 曝光时间, 0（索引）-自动*8（客户端的显示）-40000*8 us(实际设下来的值)-->
<ExposureSet>
<!--req, 0-自动*8-40000*8us、1-自动*5-40000*5us、2-自动*4-40000*4us、3-自动*2-40000*2us、4-1/25-40000us、5-1/50-20000us、
6-1/100-10000us、7-1/250-4000us、8-1/500-2000us、9-1/750-1333us、10-1/1000-1000us、11-1/2000-500us、12-1/4000-250us、
13-1/10,000-100us、14-1/100,000-10us、17-1/150、18-1/200、20-1-1000000us、21-1/75、22-1/125、23-1/175、24-1/225、
25-1/300、26-1/400-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,20,21,22,23,24</Range>
<Default>4</Default>
<!--req, 默认值-->
<DynamicAbility>
<!--req, IPC 5.1.0 支持动态能力获取设置-->
<dynamicAbilityLinkTo opt="wdrEnable,irisType"/>
<!--req, 动态关联项，宽动态使能，镜头类型对应结构体字段NET_DVR_CAMERAPARAMCFG_EX参数struWdr.的byWDREnabled和参数byIrisMode -->
</DynamicAbility>
<ExposureSetIndex20>
<!--req, 曝光时间20-->
<!--req, 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</ExposureSetIndex20>
<ExposureSetIndex0>
<!--req, 曝光时间0-->
<!--req 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</ExposureSetIndex0>
<ExposureSetIndex2>
<!--req, 曝光时间2-->
<!--req, 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</ExposureSetIndex2>
<ExposureSetIndex3>
<!--req, 曝光时间3-->
<!--req 互斥能力宽动态接入能力-->
<mutexAbility opt="WDR"/>
</ExposureSetIndex3>
</ExposureSet>
<exposureUSERSET>
<!--req, 用户自定义曝光时间-->
<!--req, 用户自定义曝光时间-->
<Min>1</Min>
<!--req, 最小值-->
<Max>40000</Max>
<!--req, 最大值（按实际能力来填写）-->
<Default>20000</Default>
<!--req, 默认值-->
</exposureUSERSET>-->
<ExposureTarget>
<!--req, 此项已不使用，暂时保留-->
<!--req, 手动曝光时间 范围-->
<!--req, Manumal有效，微秒-->
<Min>0</Min>
<!--req, 最小值-->
<Max>2000000</Max>
<!--req, 最大值-->
<Default>1000000</Default>
<!--req, 默认值-->
</ExposureTarget>
</Exposure>

<IrisMode>
<!--req, 镜头类型-->
<!--req, 0-自动光圈镜头、1-手动光圈镜头、2- Piris1"Tamron 2.8-8mm F1.2（M13VP288-IR）"、3- Union 3-9mm F1.6-2.7 (T5280-PQ1)、
4- Union 2.8-12mm F1.6-2.7(T5289-PQ1)、5- HIK 3.8-16mm F1.5（HV3816P-8MPIR)、6- HIK 11-40mm F1.7(HV1140P-8MPIR)、
7- HIK 2.7-12mm F1.2（TV2712P-MPIR）、8- MZ5721D-12MPIR、9- MZ1555D-12MPIR、10- MZ5721D-12MPIR(RS485)、11- MZ1555D-
、12MPIR(RS485)-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11</Range>
<Default>1</Default>
<!--req, 默认值-->
<Piris>
<!--req 当IrisMode>=2 时生效-->
<Piris1>
<!--req, Tamron 2.8-8mm F1.2（M13VP288-IR）-->
<modeType opt="automatic, manual"/>
<!--req,0-自动, 1-手动-->
<PIrisAperture min="" max=""/>
<!--req,设置的等级范围level,1～100(手动模式下可以配置)-->
</Piris1>
<Piris2>
<!--req, Union 3-9mm F1.6-2.7 (T5280-PQ1)-->
<modeType opt="automatic, manual"/>
<!--req,0-自动,1-手动-->
<PIrisAperture min="" max=""/>
<!--req,设置的等级范围level 1～100(手动模式下可以配置)-->
</Piris2>
<Piris3>
<!--req, Union 2.8-12mm F1.6-2.7 (T5289-PQ1)-->
<modeType opt="automatic, manual"/>
<!--req,0-自动 1-手动-->
<PIrisAperture min="" max=""/>
<!--req,设置的等级范围level 1～100(手动模式下可以配置)-->
</Piris3>
<Piris4>
<!--req, HIK 3.8-16mm F1.5（HV3816P-8MPIR)-->
<modeType opt="automatic, manual"/>
<!--req,0-自动 1-手动-->
<PIrisAperture min="" max=""/>
<!--req,设置的等级范围level 1～100(手动模式下可以配置)-->
</Piris4>
<Piris6>
<!--req,HIK 11-40mm F1.7 (HV1140P-8MPIR)-->
<modeType opt="automatic, manual"/>
<!--req,0-自动, 1-手动-->
<PIrisAperture min="" max=""/>
<!--req,设置的等级范围level 1～100(手动模式下可以配置)-->
</Piris6>
<Piris7>
<!--req, HIK 2.7-12mm F1.2（TV2712P-MPIR）-->
<modeType opt="automatic, manual"/>
<!--req,0-自动 1-手动-->
<PIrisAperture min="" max=""/>
<!--req,设置的等级范围level 1~100(手动模式下可以配置)-->
</Piris7>
</Piris>
</IrisMode>

<AutoApertureLevel>
<!--req, 自动光圈灵敏度-->
<Min>0</Min>
<!--req, 最小值-->
<Max>15</Max>
<!--req, 最大值-->
<Default>7</Default>
<!--req, 默认值-->
</AutoApertureLevel>

<GainLevel>
<!--req, 增益-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</GainLevel>

<BrightnessLevel>
<!--req, 亮度-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</BrightnessLevel>

<ContrastLevel>
<!--req, 对比度-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</ContrastLevel>

<SharpnessType>
<!--req, 锐度类型-->
<!--req, 球机：0-自动，1-手动-->
<!--req, <Range>0,1 </Range>-->
<Default>0</Default>
<!--req, 默认值-->
</SharpnessType>

<SharpnessLevel>
<!--req, 锐度-->
<!--req, IPC(min/max);球机/一体机(Range)-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</SharpnessLevel>

<SaturationLevel>
<!--req, 饱和度-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</SaturationLevel>

<HueLevel>
<!--req, 色度-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</HueLevel>

<GammaCorrection>
<!--req, Gamma校正-->
<GammaCorrectionEnabled>
<!--req, 0 disable 1 enable-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</GammaCorrectionEnabled>

<GammaCorrectionLevel>
<!--req, Gamma校正等级-->
<Min>0</Min>
<Max>100</Max>
<Default>50</Default>
<!--req, 默认值-->
</GammaCorrectionLevel>
</GammaCorrection>

<WDR>
<!--req, 宽动态-->
<WDREnabled>
<!--req, 0 disable, 1 enable, 2 Auto-->
<Range>0,1,2</Range>
<Default>0</Default>
<!--req, 默认值-->
</WDREnabled>
<WDRLevel1>
<!--req, 宽动态等级1-->
<!--req, IPC：0-15，球机：0-3-->
<Min>0</Min>
<!--req, 最小值-->
<Max>15</Max>
<!--req, 最大值-->
<Default>0</Default>
<!--req, 默认值-->
</WDRLevel1>
<WDRLevel2>
<!--req, 宽动态等级2-->
<!--req, 0-15-->
<Min>0</Min>
<!--req, 最小值-->
<Max>15</Max>
<!--req, 最大值-->
<Default>0</Default>
<!--req, 默认值-->
</WDRLevel2>
<WDRContrastLevel>
<!--req, 宽动态对比度-->
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</WDRContrastLevel>
<!--开启了3D降噪、SMD、旋转或宽动态，要开启1080p50/1080p60，需提示“请关闭自适应和定时模式下3D降噪，SMD，旋转和宽动态”-->
<!--开启了旋转或宽动态，要开启720p50/720p60，需提示“请关闭自适应和定时模式下旋转和宽动态”-->
<mutexAbility opt="19-1920*1080@50fps,20-1920*1080@60fps,8-1280*720@60fps,7-1280*720@50fps,dehaze,
lightInhibit,exposureIndex20,exposureIndex0, exposureIndex2, exposureIndex3,
videoFrameRate50,videoFrameRate60,LensDistortionCorrection,52-2048*1536@50fps,
53-2048*1536@60fps,87-1280*960@50fps,88-1280*960@60fps,89-1280*960@100fps,90-1280*960@120fps"/>
<!--req, 互斥于CaptureMode(1920*1080@50fps,1920*1080@60fps,1280*720@60fps,1280*720@50fps)、去雾、强光抑制、
exposure曝光控制（20、0、2、3)，帧率50、帧率60（表示慢快门），镜头畸变校正，任意开启其中一项就提示-->
</WDR>

<DayNightFilter>
<!--req, 日夜切换-->
<DayNightFilterType>
<!--req, 日夜切换模式-->
<!--req, 0 day,1 night, 2 auto，3-定时，4-报警输入触发，5-自动模式2（无光敏）-->
<Range>0,1,2,3,4,5</Range>
<Default>2</Default>
<!--req, 默认值-->
</DayNightFilterType>
<SwitchSchedule>
<SwitchScheduleEnabled>
<!--req, 保留能力-->
<!--req, 0 disable 1 enable-->
<Range>0,1</Range>
<Default>1</Default>
<!--req, 默认值-->
</SwitchScheduleEnabled>
<DayToNightFilterLevel>
<!--req, 白天到夜晚切换灵敏度等级-->
<!--req, 0，1，2，3，4，5，6，7（IPC:0-7，快球1-3）-->
<Range>0,1,2,3,4,5,6,7</Range>
<Default>3</Default>
<!--req, 默认值-->
</DayToNightFilterLevel>
<NightToDayFilterLevel>
<!--req, 夜晚到白天切换灵敏度等级-->
<!--req, 0，1，2，3，4，5，6，7（IPC:0-7，快球1-3）-->
<Range>0,1,2,3,4,5,6,7 </Range>
<Default>3</Default>
<!--req, 默认值-->
</NightToDayFilterLevel>
<DayNightFilterLevel>
<!--req, 日夜切换灵敏度等级-->
<Range>1</Range>
</DayNightFilterLevel>

<DayNightFilterTime>
<!--req, 白天到夜晚切换过滤时间-->
<!--req, IPC(min/max);球机/一体机(Range)-->
<Min>10</Min>
<!--req, 最小值-->
<Max>120</Max>
<!--req, 最大值-->
<!--req, 一体机/球机：直接给出实际取值的列表，单位为秒-->
<Range>2,3,5,10,15,30,45,60</Range>
<Default>55</Default>
<!--req, 默认值-->
</DayNightFilterTime>
<NightDayFilterTime>
<!--req, IPC(min/max);球机/一体机(Range)-->
<Min>0</Min>
<!--req, 最小值-->
<Max>120</Max>
<!--req, 最大值-->
<!--req, 一体机/球机：直接给出实际取值的列表，单位为秒-->
<Range>2,3,5,10,15,30,45,60</Range>
<Default>55</Default>
<!--req, 默认值-->
</NightDayFilterTime>
<TimeSchedule>
<BeginTime>1</BeginTime>
<!--req,开始时间支持-->
<EndTime>1</EndTime>
<!--req,结束时间支持-->
</TimeSchedule>
</SwitchSchedule>
<AlarmInTrigType>
<Range>0,1</Range>
<!--req,报警输入触发状态，0-白天，1-夜晚-->
</AlarmInTrigType>
</DayNightFilter>
<DayNightFilterandGain>
<!--opt,该节点表示日夜切换和增益是否支持同时设置-->
<enabled>true</enabled>
<!--req,若支持同时设置，该节点必须存在-->
</DayNightFilterandGain>

<Backlight>
<!--req, 背光补偿-->
<BacklightMode>
<!--req, 背光补偿选项，关闭或是背补偿区域-->
<!--req, 0 关闭、1UP、2 DOWN、3 LEFT、4 RIGHT、5 MIDDLE、6自定义，10-开，11-自动，12-多区域背光补偿（10-12为球机新增参数选项，当为10-开时，显示补偿等级可调节）-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12</Range>
<Default>0</Default>
<!--req, 默认值-->
</BacklightMode>
<BacklightLevel>
<!--req, 等级-->
<!--req, IPC：0-15，球机：0-3-->
<Min>0</Min>
<!--req, 最小值-->
<Max>15</Max>
<!--req, 最大值-->
<Default>0</Default>
<!--req, 默认值-->
</BacklightLevel>
</Backlight>

<WhiteBalanceandBacklight>
<!--opt,该节点表示宽动态和背光补偿是否支持同时设置-->
<enabled>true</enabled>
<!--req,若支持同时设置，该节点必须存在-->
</WhiteBalanceandBacklight>

<LowLightLimit>
<!--req, 低照度电子快门-->
<!--req, 对应的结构体（NET_DVR_LOW_LIGHT_CFG 内 byLowLightLimt）-->
<LowLightLimitEnabled>
<!--req, 使能，0-关，1-开-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</LowLightLimitEnabled>
<LowLightLimitLevel>
<!--req, 低照度电子快门等级-->
<!--req, 对应的结构体（NET_DVR_LOW_LIGHT_CFG 内 byLowLightLimtLevel）-->
<!--req, 球机0-关，1-慢快门*2，2-慢快门*3，3-慢快门*4，4-慢快门*6，5-慢快门*8，6-慢快门*12，7-慢快门*16，8-慢快门*24，
9-慢快门*32，10-慢快门*48，11-慢快门*64，12-慢快门*96，13-慢快门*128，14-慢快门*256，15-慢快门*512-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15</Range>
<Default>0</Default>
<!--req, 默认值-->
</LowLightLimitLevel>
</LowLightLimit>

<ImageStabilize>
<ImageStabilizeLevel>
<!--req, 防抖等级-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byImageStabilizeLevel）-->
<Min>0</Min>
<!--req, 最小值-->
<Max>3</Max>
<!--req, 最大值-->
<Default>0</Default>
<!--req, 默认值-->
</ImageStabilizeLevel>
</ImageStabilize>

<CameraIRCorrection>
<!--req, 红外校正-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byCameraIrCorrect）-->
<!--req, 球机：0-关，1-开，2-自动-->
<Range>0,1,2</Range>
<Default>0</Default>
<!--req, 默认值-->
</CameraIRCorrection>

<!--req, 高感光度设置，0-关，1-开-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byHighSensitivity）-->
<HighSensitivitySupport>
<Range>0,1</Range>
</HighSensitivitySupport>

<!--req, 初始化镜头，0-关，1-开-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byInitializeLens）-->
<InitializeLensSupport>
<Range>0,1</Range>
</InitializeLensSupport>

<!--req, 支持重启机芯，1-支持，不支持时不显示-->
<CameraResetSupport>
<Range>1</Range>
</CameraResetSupport>

<!--req, 支持机芯恢复出厂设置，1-支持，不支持时不显示-->
<CameraRestoreSupport>
<Range>1</Range>
</CameraRestoreSupport>

<Mirror>
<!--req, 镜像-->
<!--req, 0 off，1- leftright，2- updown，3-center-->
<Range>0,1,2,3</Range>
<Default>0</Default>
<!--req, 默认值-->
<mutexAbility opt="19-1920*1080@50fps,20-1920*1080@60fps"/>
<!--req, 在开启1080p50/60时，要开启镜像功能，需提示“请关闭自适应和定时模式下的镜像”-->
<!--req 互斥于CaptureMode 1920*1080@50fps,1920*1080@60fps,任意开启其中一项就提示-->
</Mirror>

<EPTZ>
<!--req, 电子云台-->
<!--req, 1-支持，不支持时无此项-->
<Range>1</Range>
</EPTZ>

<LOCALOUTPUT>
<!--req, 本地输出-->
<!--req, 0-不支持，1-支持-->
<!--req, BNC—0,1，11-缩放输出，12-裁剪输出（10-12球机）；
HDMI—0:不支持,20:HDMI_720P50, 21:HDMI_720P60, 22:HDMI_1080I60,
23:HDMI_1080I50, 24:HDMI_1080P24, 25:HDMI_1080P25,
26:HDMI_1080P30, 27:HDMI_1080P50, 28:HDMI_1080P60,
40:SDI_720P50, 41:SDI_720P60, 42:SDI_1080I50, 43:SDI_1080I60,
44:SDI_1080P24, 45:SDI_1080P25, 46:SDI_1080P30, 47:SDI_1080P50,
48:SDI_1080P60, 49:SDI_720P25, 50:SDI_720P30-->
<Range>0,1, 11,12,13,20,21,22,23,24,25,26,27,28,40,41,42,43,44,45,46,47,48,49,50</Range>
<Default>1</Default>
<!--req, 默认值-->
</LOCALOUTPUT>

<!--req, 视频去噪-->
<DigitalNoiseReduction>
<DigitalNoiseReductionEnable>
<!--req, 0-关闭,1-普通模式,2专家模式-->
<Range>0,1,2,3,4,5,6,7,8,9,10</Range>
<Default>0</Default>
<!--req, 默认值-->
</DigitalNoiseReductionEnable>
<DigitalNoiseReductionLevel>
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</DigitalNoiseReductionLevel>
<!--req, 专家模式下空域数字降噪级别-->
<DigitalNoiseSpectralLevel>
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</DigitalNoiseSpectralLevel>
<!--req, 专家模式下时域数字降噪级别-->
<DigitalNoiseTemporalLevel>
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</DigitalNoiseTemporalLevel>
<DigitalNoiseRemove2DEnable>
<!--req, 抓拍帧2D降噪，0-不启用，1-启用-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</DigitalNoiseRemove2DEnable>
<DigitalNoiseRemove2DLevel>
<!--req, 0-100-->
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</DigitalNoiseRemove2DLevel>
<!--req, 开启了3D降噪、SMD、旋转或宽动态，要开启1080p50/1080p60，需提示“请关闭自适应和定时模式下3D降噪、SMD、旋转和宽动态”-->
<mutexAbility opt="19-1920*1080@50fps,20-1920*1080@60fps"/>
<!--req, 互斥于CaptureMode（1920*1080@50fps,1920*1080@60fps），任意开启其中一项就提示-->
</DigitalNoiseReduction>

<SceneMode>
<!--req, 场景模式:0- 室外,1- 室内,2- 默认,3- 弱光-->
<!--req, 0-室外，1-室内-->
<Range>0,1,2,3</Range>
<Default>0</Default>
<!--req, 默认值-->
</SceneMode >

<!--req, 色阶范围-->
<ColorRange>
<!--req, 0:16-235，1:0-255-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</ColorRange>

<DigitalZoom>
<!--req, 数字倍率，热成像设备用到-->
<!--req, 数字倍率:0-关闭，1-×2，2-×4，3-×8，4-×16，5-×32-->
<Range>0,1,2,3,4,5</Range>
<Default>0</Default>
<!--req, 默认值-->
</DigitalZoom>

<!--req, 坏点检测-->
<DeadPixelDetect>
<!--req, 1-支持，不支持无该项-->
<Range>1</Range>
</DeadPixelDetect>

<!--req, 是否支持行编码能力项，目前只有6467有这一项-->
<LINEENCODE>
<!--req, 1-支持，不支持无该项-->
<Range>1</Range>
</LINEENCODE>

<!--req, 是否支持一键聚焦，1-支持，不支持无该项-->
<OnepushFocus>1</OnepushFocus>

<!--req, 去雾能力-->
<Dehaze>
<!--req, 去雾模式是否启用，0-否，1-自适应模式-->
<DehazeEnable>0,1</DehazeEnable>
<DehazeLevel>
<Min>0</Min>
<!--req, 最小值-->
<Max>100</Max>
<!--req, 最大值-->
<Default>50</Default>
<!--req, 默认值-->
</DehazeLevel>
<mutexAbility opt="WDR, lightInhibit "/>
<!--互斥能力, 宽动态、强光抑制能力,任意开启其中一项就提示。宽动态或者透雾开启时，要开启强光抑制，需提示“请先关闭自适应和定时模式下的宽动态和透雾功能”-->
</Dehaze>

<!--req, 以下从调光模式到自动快门补偿间隔为热成像设备才用到-->

<!--req, 调光模式-->
<DimmerMode>
<!--req, 调光模式：0-半自动，1-自动-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</DimmerMode>

<!--req, 调色板-->
<PaletteMode>
<!--req, 调色板：0-白热，1-黑热，2-调色板2，…，8-调色板8，9-融合1,10-彩虹,11-融合2,12-铁红1,13-铁红2,14-深褐色,15-色彩1,16-色彩2,17-冰火,18-雨,19-红热,20-绿热, 21-深蓝-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21</Range>
<Default>0</Default>
<!--req, 默认值-->
</PaletteMode>

<!--req, 增强方式-->
<EnhancedMode>
<!--req, 增强方式（探测物体周边）：0-不增强，1-1，2-2，3-3，4-4-->
<Range>0,1,2,3,4</Range>
<Default>0</Default>
<!--req, 默认值-->
</EnhancedMode>

<!--req, 滤波开关-->
<FilterSwitch>
<!--req, 滤波开关：1-支持-->
<Range>1</Range>
</FilterSwitch>

<!--req, 镜头调焦速度-->
<FocusSpeed>
<!--req, 镜头调焦速度：0-10-->
<Min>0</Min>
<!--req, 最小值-->
<Max>10</Max>
<!--req, 最大值-->
<Default>5</Default>
<!--req, 默认值-->
</FocusSpeed>

<!--req, 自动快门补偿间隔-->
<AutoCompensationInterval>
<!--req, 定时自动快门补偿：1-120，单位：分钟-->
<Min>1</Min>
<!--req, 最小值-->
<Max>120</Max>
<!--req, 最大值-->
<Default>60</Default>
<!--req, 默认值-->
</AutoCompensationInterval>

<SmartIR>
<Range>0,1</Range>
<!--req,防过曝,0-关，1-开-->
<modeType opt="automatic, manual"/>
<!--req,0-自动 1-手动-->
<!--req, 在开关打开的时候生效-->
<IRDistance min="" max=""/>
<!--req,设置的等级范围level, 1～100(手动模式下可以配置)-->
<ShortIRDistance min="" max=""/>
<!--req,近光灯设置的等级范围level 1～100(手动模式下可以配置)-->
<LongIRDistance min="" max=""/>
<!--req,远光灯设置的等级范围level 1～100(手动模式下可以配置)-->
</SmartIR>

<Illumination>
<Range>0,1</Range>
<!--req,低照度,0-关，1-开-->
</Illumination>

<LightInhibit>
<LightInhibitEnable opt="true,false"/>
<!--req,强光抑制使能,0-关，1-开-->
<level min="0" max="100"/>
<!--req,强光抑制等级-->
<mutexAbility opt="WDR, dehaze"/>
<!--req, 互斥宽动态、透雾能力,任意开启其中一项就提示。强光抑制开启时，要开启宽动态或者透雾，需提示“请先关闭自适应和定时模式下的强光抑制”-->
</LightInhibit>

<GrayLevel>
<Range>0,1</Range>
<!--req,灰度值域,0-[0-255]，1-[16-235]-->
</GrayLevel>

<!--req, 一体机、球机聚焦模式-->
<FocusMode>
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内byFocusMode）-->
<FocusModeSet>
<!--req, 聚焦模式:0-自动,1-手动,2-半自动-->
<Range>0,1,2</Range>
<Default>0</Default>
<!--req, 默认值-->
</FocusModeSet>
<AFModeChoose>
<!--req, 自动聚焦模式：0-关，1-模式A，2-模式B，3-模式AB，4-模式C-->
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内byAutoFocusMode）-->
<Range>0,1,2,3,4</Range>
<Default>0</Default>
<!--req, 默认值-->
</AFModeChoose>
<MinFocusDistance>
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内wMinFocusDistance）-->
<!--req, 最小聚焦距离：单位为CM, 0-自动，0xffff-无穷远-->
<Range>0,1,2,5,10,30,50,100,150,200,300,500,600,800,1000,2000,0xffff</Range>
<Default>0</Default>
<!--req, 默认值-->
</MinFocusDistance>
<ZoomSpeedLevel>
<!--req, 变倍速度-->
<!--req, 变倍速度：1-3-->
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内byZoomSpeedLevel）-->
<Min>1</Min>
<!--req, 最小值-->
<Max>3</Max>
<!--req, 最大值-->
<Default>0</Default>
<!--req, 默认值-->
</ZoomSpeedLevel>
<FocusSpeedLevel>
<!--req, 聚焦速度：1-3-->
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内byZoomSpeedLevel）-->
<Min>1</Min>
<!--req, 最小值-->
<Max>3</Max>
<!--req, 最大值-->
<Default>0</Default>
<!--req, 默认值-->
</FocusSpeedLevel>
<physicsRatio min="" max=""/>
<!--req, 物理倍率坐标范围（NET_DVR_PHY_RATIO）-->
<assistFocus opt="true"/><!--req—辅助聚焦启动，0~不启动，1~启动 -->

<relativeFocusPos min="0" max="4000" def="">
<!--opt,xs:intger, 相对focus值，其低16位表示聚焦值，0~4000；高16位代表当前聚焦值获取时的温度值，聚焦模式为手动、半自动时生效，对应结构体(NET_DVR_FOCUSMODE_CFG内dwRelativeFocusPos)-->
</relativeFocusPos>
</FocusMode>

<!--req, 一体机、球机曝光和增益控制-->
<AutoExposureMode>
<ExposureSet>
<!--req, 曝光模式：0-手动模式，1-自动曝光，2-光圈优先，3-快门优先，4-增益优先-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byExposureModeSet）-->
<Range>0,1,2,3,4</Range>
<Default>0</Default>
<!--req, 默认值-->
</ExposureSet>
<AutoExposure>
<!--req, 曝光模式为自动曝光模式下，光圈、快门的最大最小限制值生效-->
<MaxIris>
<irisValue min="0" max="100"/>
</MaxIris>
<MinIris>
<irisValue min="0" max="100"/>
</MinIris>
<MaxShutterSet>
<!--req, 快门-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byShutterSet）-->
<!--req, 0-关，1-自动x1，2-自动x2，3-自动x4，4-自动x8，5-自动x16，6-自动x32，7-自动x64，8-自动x128，
9-1/1，10-1/2，11-1/3，12-1/4，13-1/6，14-1/8，15-1/12，16-1/15，17-1/25，18-1/30，19-1/50，20-1/60，
21-1/75，22-1/90，23-1/100，24-1/120，25-1/125，26-1/150，27-1/180，28-1/200，29-1/215，30-1/250，
31-1/300，32-1/350，33-1/425，34-1/500，35-1/600，36-1/725，37-1/1000，38-1/1250，39-1500,40-1/1750，
41-1/2000，42-1/2500，43-3000,44-1/3500，45-1/4000，46-1/6000，47-1/10000，48-1/30000，49-1/100000，
50-1/175，51-1/195，52-1/225，53-1/230-->
<Range>
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
</Range>
<!--req, P制支持的快门值；如果没有下面RangeN节点，表示P制和N制支持的快门一致，都用此节点表示-->
<RangeN>
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
</RangeN>
<!--req, N制支持的快门值；如果没有此节点，表示P制和N制支持的快门值一致，都用Range节点表示-->
<Default>0</Default>
<!--req, 默认值-->
</MaxShutterSet>

<MinShutterSet>
<!--req, 快门-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byShutterSet）-->
<!--req, 0-关，1-自动x1，2-自动x2，3-自动x4，4-自动x8，5-自动x16，6-自动x32，7-自动x64，8-自动x128，
9-1/1，10-1/2，11-1/3，12-1/4，13-1/6，14-1/8，15-1/12，16-1/15，17-1/25，18-1/30，19-1/50，20-1/60，
21-1/75，22-1/90，23-1/100，24-1/120，25-1/125，26-1/150，27-1/180，28-1/200，29-1/215，30-1/250，
31-1/300，32-1/350，33-1/425，34-1/500，35-1/600，36-1/725，37-1/1000，38-1/1250，39-1500,40-1/1750，
41-1/2000，42-1/2500，43-3000,44-1/3500，45-1/4000，46-1/6000，47-1/10000，48-1/30000，49-1/100000，
50-1/175，51-1/195，52-1/225，53-1/230 -->
<Range>
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
</Range>
<!--req, P制支持的快门值；如果没有下面RangeN节点，表示P制和N制支持的快门一致，都用此节点表示-->
<RangeN>
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
</RangeN>
<!--req, N制支持的快门值；如果没有此节点，表示P制和N制支持的快门值一致，都用Range节点表示-->
<Default>0</Default>
<!--req, 默认值-->
</MinShutterSet>

<exposureLevel min="1" max="5" default="4">
<!--opt,xs:integer, 曝光等级-->
</exposureLevel>
</AutoExposure>

<IrisSet>
<!--req, 光圈, range为实际取值的列表，0表示关，配置接口配置能力列出的值，显示时为（能力列出的值% 需要乘的倍数）来显示，并且前面加大写F-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内dwIrisSet）-->
<Multiple>100</Multiple>
<!--req, 需要乘的倍数-->
<IrisValueSet>
<Range>120,140,160,185,286</Range>
<Default>0</Default>
<!--req, 默认值-->
</IrisValueSet>
</IrisSet>

<ShutterSet>
<!--req, 快门-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byShutterSet）-->
<!--req, ：0-关，1-自动x1，2-自动x2，3-自动x4，4-自动x8，5-自动x16，6-自动x32，7-自动x64，8-自动x128，
9-1/1，10-1/2，11-1/3，12-1/4，13-1/6，14-1/8，15-1/12，16-1/15，17-1/25，18-1/30，19-1/50，20-1/60，
21-1/75，22-1/90，23-1/100，24-1/120，25-1/125，26-1/150，27-1/180，28-1/200，29-1/215，30-1/250，
31-1/300，32-1/350，33-1/425，34-1/500，35-1/600，36-1/725，37-1/1000，38-1/1250，39-1500,40-1/1750，
41-1/2000，42-1/2500，43-3000,44-1/3500，45-1/4000，46-1/6000，47-1/10000，48-1/30000，49-1/100000-->
<Range>
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,2/9,30,31,32,33,
34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
</Range>
<Default>0</Default>
<!--req, 默认值-->
</ShutterSet>
<GainSet>
<Multiple>100</Multiple>
<!--req, 需要乘的倍数-->
<GainValueSet>
<!--req, 增益：0-100-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内dwGainSet）-->
<Min>0</Min>
<Max>100</Max>
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19</Range>
<Default>50</Default>
<!--req, 默认值-->
</GainValueSet >
</GainSet>
<GainLimit>
<!--req, 增益限制-->
<Multiple>100</Multiple>
<!--req, 需要乘的倍数-->
<GainValueLimit>
<!--req, 球机-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内dwGainLimit）-->
<Min>0</Min>
<!--req, 最小值-->
<Max>0x0f</Max>
<!--req, 最大值-->
<!--req, Range为实际取值的列表，有可能是负值，配置接口配置能力列出的值，显示时为（能力列出的值% 需要乘的倍数）来显示-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19</Range>
<Default>0</Default>
<!--req, 默认值-->
</GainValueLimit>
</GainLimit>
<ExposureComp>
<Multiple>100</Multiple>
<!--req, 需要乘的倍数-->
<ExposureValueComp>
<!--req, 曝光补偿：0-100-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内dwExposureCompensate）-->
<Min>0</Min>
<Max>100</Max>
<!--req, Range为实际取值的列表，有可能是负值，配置接口配置能力列出的值，显示时为（能力列出的值% 需要乘的倍数）来显示-->
<Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19</Range>
<Default>50</Default>
<!--req, 默认值-->
</ExposureValueComp>
</ExposureComp>
</AutoExposureMode>

<!--req, 一体机/球机倍率参数-->
<ZoomPara>
<ZoomDisplay>
<!--req, 倍率显示：0-关，1-开-->
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</ZoomDisplay>
<OpticalZoom>
<!--req, 光学变倍 0-255-->
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内byOpticalZoom）-->
<Range>10,18,20,22,23,30,36,37,38,39,40</Range>
<Default>10</Default>
<!--req, 默认值-->
</OpticalZoom>
<DigitalZoom>
<!--req, 数字变倍 0-255-->
<!--req, 对应结构体（NET_DVR_FOCUSMODE_CFG内byDigtitalZoom）-->
<Range>0,2,4,8,10,12</Range>
<Default>0</Default>
<!--req, 默认值-->
</DigitalZoom>
</ZoomPara>
<!--req, 红外球机配置，红外灯控制模式为自动下可设置红外灯灵敏度，手动下可设置红外灯亮度-->
<IrDomeCfg>
<!--req, 控制模式：0-自动，1-手动-->
<!--req, 对应结构体（NET_DVR_INFRARE_CFG内byIrControlMode）-->
<IrControlMode>
<Range>0,1</Range>
<Default>0</Default>
<!--req, 默认值-->
</IrControlMode>
<IrBrightness>
<!--req, 红外亮度：0-100-->
<!--req, 对应结构体（NET_DVR_INFRARE_CFG内byIrBrightness）-->
<Min>0</Min>
<Max>100</Max>
<Default>50</Default>
<!--req, 默认值-->
</IrBrightness>
<IrSensitivity>
<!--req, 红外灯灵敏度：0-100-->
<!--req, 对应结构体（NET_DVR_INFRARE_CFG内byIrSensitivity）-->
<Min>0</Min>
<Max>100</Max>
<Default>50</Default>
<!--req, 默认值-->
</IrSensitivity>
</IrDomeCfg>

<LaserConfig>
<controlMode opt="auto,manual"/>
<!--req,控制模式-->
<autoMode>
<sensitivity min="0" max="100"/>
<!--req,激光灯灵敏度-->
<triggerMode opt=" cameraModuleTrigger, photoresistanceTrigger"/>
<!--req 激光灯触发模式-->
<limitBrightness min="0" max="100"/>
<!--req,激光灯亮度限制-->
<angle min="1" max="36"/>
<!--req,激光灯角度-->
</autoMode>

<manualMode>
<sensitivity min="0" max="100"/>
<!--req,激光灯灵敏度-->
<triggerMode opt=" cameraModuleTrigger, photoresistanceTrigger"/>
<!--req 激光灯触发模式-->
<brightness min="0" max="255"/>
<!--req,激光灯亮度-->
<angle min="1" max="36"/>
<!--req,激光灯角度-->
<enable opt="true,false"/>
<!--dep, 手动控制激光灯使能: 0-关闭，1-启动-->
</manualMode>
<illumination min="0" max="100"/>
<!--dep, 激光灯强度限制-->
<lightAngle min="0" max="100"/>
<!--dep, 补光角度-->
</LaserConfig>

<OpticalDehaze>
<enable opt="true,false"/>
<!--dep,光学透雾使能: 0-关闭，1-启动-->
</OpticalDehaze>

<!--req, 色彩抑制: 0-255-->
<!--req, 对应结构体（NET_DVR_CAMERA_AEMODECFG内byChromaSuppress）-->
<ChromaSuppress>
<Min>0</Min>
<Max>255</Max>
<Default>0</Default>
<!--req, 默认值-->
</ChromaSuppress>

<!--req, 普通触发抓拍曝光控制-->
<SnapExposure>
<SnapMode>
<!--req, 抓拍模式：0-抓拍模式1，1-抓拍模式2，2-抓拍模式3-->
<Range>0,1,2</Range>
<Default>0</Default>
<!--req, 默认值-->
</SnapMode>
<SnapGain1>
<!--req, 抓拍增益1：0-100-->
<Min>0</Min>
<Max>100</Max>
<Default>50</Default>
<!--req, 默认值-->
</SnapGain1>
<SnapGain2>
<!--req, 抓拍增益2：0-100-->
<Min>0</Min>
<Max>100</Max>
<Default>50</Default>
<!--req, 默认值-->
</SnapGain2>
</SnapExposure>

<!--req, 抓拍机动态对比度增强-->
<DynamicContrast>
<DynamicContrastLevel>
<Min>0</Min>
<Max>100</Max>
<Default>50</Default>
<!--req, 默认值-->
</DynamicContrastLevel>
</DynamicContrast>

<!--req, 旋转模式-->
<CorridorMode>
<corridorModeFunEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
<!--req,开启了3D降噪，SMD，旋转或宽动态，要开启1080p50/1080p60，需提示“请关闭自适应和定时模式下3D降噪，SMD，旋转和宽动态”-->
<!--req,开启了旋转或宽动态，要开启720p50/720p60，需提示“请关闭自适应和定时模式下旋转和宽动态”-->
<mutexAbility opt="19-1920*1080@50fps,20-1920*1080@60fps,8-1280*720@60fps,7-1280*720@50fps"/>
<!--req 互斥于CaptureMode 1920*1080@50fps,1920*1080@60fps,1280*720@60fps,1280*720@50fps,任意开启其中一项就提示-->
</CorridorMode>
<!--req,ISP是否能力支持返回-->
<ISPAdvanceCfg>
<ISPSupportMode opt="dayMode,nightMode"/>
<!--req ISP支持的模式类型-->
<workMode opt="auto,schedule"/>
<!--req,0-自动Auto,1-定时切换Scheduled-->
<TimeSchedule>
<beginTime opt="hour,min,sec,millisec"/>
<!--req开始时间段类型-->
<endTime opt="hour,min,sec,millisec"/>
<!--req 结束时间段类型-->
</TimeSchedule>
<ISPCfgSupport opt="whiteBalanceMode,whiteBalanceModeRGain,whiteBalanceModeBGain,exposureSet,
exposureUserSet,gainLevel,brightnessLevel,contrastLevel,sharpnessLevel,WDREnabled,
WDRLevel1,WDRLevel2,WDRContrastLevel,backlightMode,backlightLevel,position1,
position2,imageStabilizeEnable,imageStabilizeLevel,digitalNoiseReductionEnable,
digitalNoiseReductionLevel,digitalNoiseSpectralLevel,digitalNoiseTemporalLevel,
dehazeEnable,dehazeLevel,lightInhibitEnable,lightInhibitLevel,grayLevel"/>
</ISPAdvanceCfg>

<supportCCDFunc opt="whiteBalance,exposure,WDR,dayNightFilter,gammaCorrection,digitalNoiseReduction,
backLight,lowLight,focus,infrared,domeAemode,dehaze,parkAction,elecStab,other,ISP,laser"/>
<!--req 支持的前端参数功能项-->

<!--req, 夜晚亮度增强 抓拍机v3.5-->
<BrightCompensate>
<brightCompensate min="0" max="100"/>
</BrightCompensate>

<!--req, 曝光分段控制 抓拍机v3.5-->
<ExposureSegment>
<exposureSegmentEnable opt="true,false"/>
<!--req,是否启用, true-启用，false-不启用-->
</ExposureSegment>

<LensDistortionCorrection>
<enable opt="false,true" default="false"/>
<!--req,镜头畸变校正(0-关闭/1-开启)-->
<mutexAbility opt="WDR"/>
<!--req,互斥于WDR -->
<level opt="level1,level2,level3,custom">
<!--opt, xs:integer, 畸变矫正等级: level1-等级1, level2-等级2, level3-等级3, custom-自定义-->
</level>
<accurateLevel min="0" max="100">
<!--opt, xs:integer, 畸变矫正强度, 取值范围:[0,100]-->
</accurateLevel>
<zoomedInDistantViewLevel min="0" max="100">
<!--opt, xs:integer, 远端放大等级, 取值范围:[0-100], 畸变校正开启时生效-->
</zoomedInDistantViewLevel>
<horizontalFOV min="0" max="100">
<!--opt, xs:integer, 水平视场角[0-100]-->
</horizontalFOV>
<verticalFOV min="0" max="100">
<!--opt, xs:integer, 垂直视场角[0,100]-->
</verticalFOV>
</LensDistortionCorrection>

<DPCParam>
<!--req,坏点校正-->
<ctrltype opt="correct,cancelCorrect,crossDisplayOpen,crossDisplayClose,point,up,down,right,left,allCorrect,save"/>
<!--req,校正,取消校正,坏点检测十字叉显示开启,坏点检测十字叉显示关闭,坏点校正坐标,坏点校正坐标点向上偏移,
坏点校正坐标点向下偏移,坏点校正坐标点向右偏移,坏点校正坐标点向左偏移,所有坏点校正,坏点保存-->
<dpcMode opt="manual,auto" def="auto"/>
<!--req,xs:string,"manual-手动校正, auto-自动校正, 若设备不支持该节点, 则一律当手动校正处理"-->
</DPCParam>

<FFCParam>
<mode opt="schedule,temperature "/>
<!--req,1-定时模式,2-温差模式,3-关闭-->
<ScheduleMode>
<compensateTime opt="10,20,30,40,50,60,120,180,240"/>
<compensateTimeUnit opt="min"/>
<!--req,min分钟-->
</ScheduleMode>
<FFCManualCtrl opt="true"/>
<!--req,FFC手动模式控制-->
<FFCBackCompCtrl opt="true"/>
<!--req,FFC背景补偿控制-->
</FFCParam>

<DDEParam>
<mode opt="off,normal,expert"/>
<!--req,1-关闭,2-普通模式,3-专家模式-->
<normalLevel min="1" max="100"/>
<!--req,普通模式下的等级设置-->
<expertLevel min="1" max="100"/>
<!--req,专家模式下的等级设置-->
</DDEParam>

<AGCParam>
<scene opt="normal,highlight,manual"/>
<!--req,1-普通场景 2-高亮场景 3-手动场景-->
<ManualMode>
<lightLevel min="1" max="100"/>
<!--req,亮度等级-->
<gainLevel min="1" max="100"/>
<!--req,增益等级-->
</ManualMode>
</AGCParam>

</ChannelEntry>
</ChannelList>

</CAMERAPARA>


IPC_FRONT_PARAMETER_V20_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取前端参数能力时pInBuf参数描述-->
<!--req, 输入信息为空时，适用IPC等前端设备，表示获取所有通道的信息；输入信息不为空，按照解析内容返回信息-->
<CAMERAPARA>
<!-- req, oxff-全部; 可以是通道的组合-->
<ChannelNumber>1,3,4</ChannelNumber><!-- req, 通道1,3,4 -->
</CAMERAPARA>


LCD_SCREEN_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 屏幕能力集描述 -->
<ScreenAbility version="2.0">
<SimulateRemoteControl>
<controlType opt="1,2,3,4,5,6,7,8,9,10,11 "/>
<!--req, 控制类型：1-电源开，2-电源关，3-信号源，4-菜单，5-确定，6-上，7-下，8-左，9-右，10-INFO，11-返回上一层-->
</SimulateRemoteControl>
<ScreenSignalCFG>
<signalSourceType opt="1,2,3,4,5,6,7,8,9,10 "/>
<!--req, 信号源类型：1-AV，2-VGA，3-HDMI，4-DVI，5-YpbPr，6-USB，7-IP，8-SDI，9-DP，10-HDBASET-->
</ScreenSignalCFG>
<ScreenBaseCFG>
<noSignalPic opt="1,2,3"/>
<!--req, 无信号画面模式：1-蓝屏，2-黑屏，3-LOGO画面-->
</ScreenBaseCFG>
<ScreenSenceCfg>
<senceNo min="1" max="16"/>
<!--req, 场景号，1~16-->
</ScreenSenceCfg>
<ScreenFanWorkMode>
<workMode opt="1,2"/>
<!--req, 风扇工作模式：1-常开，2-自动-->
<temperatureLimitValue min ="0" max ="100"/>
<!--req, 风扇开启的温度阀值，0~100摄氏度-->
</ScreenFanWorkMode>
<ScreenVGACFG>
<horizontalPosition min="0" max="100"/>
<!--req,水平位置，0~100-->
<verticalPosition min="0" max="100"/>
<!--req,垂直位置，0~100-->
<clock min="0" max="100"/>
<!--req,时钟，0~100-->
<phase min="0" max="100"/>
<!--req,相位，0~100-->
</ScreenVGACFG>
<ScreenMenuCFG>
<menuLanguage opt="1,2"/>
<!--req, 菜单语言，1-中文，2-英文-->
<transparency opt="0,1,2,3"/>
<!--req, 菜单透明度, 0-不透明，1-低，2-中，3-高-->
<durationopt opt="0,1,2,3"/>
<!--req, 持续时间，0-常开，1-5秒，2-15秒，3-30秒-->
</ScreenMenuCFG>
<ScreenDisplayCFG>
<brightnessLevel min="0" max="100"/>
<!--req, 亮度值，0~100-->
<contrastLevel min="0" max="100"/>
<!--req, 对比值，0~100-->
<sharpnessLevel min="0" max="100"/>
<!--req, 锐度，0~100-->
<saturationLevel min="0" max="100"/>
<!--req, 饱和度，0~100-->
<hueLevel min="0" max="100"/>
<!--req, 色调，0~100-->
<displayMode opt="selfdefine,standard,cold,warm,nightmode1,nightmode2,nightmode3,daymode1,daymode2,daymode3"/>
<!--req, 1-标准，2-冷色，3-暖色，4-夜模式1，5-夜模式2，6-夜模式3，7-日照模式1，8-日照模式2，9-日照模式3，0xff-自定义-->
<!--req, 支持的显示模式，不返回此节点默认支持selfdefine,standard,cold,warm-->
</ScreenDisplayCFG>
<ScreenBacklightCFG>
<backLight min="0" max="100"/>
<!--req,背光，0~100-->
</ScreenBacklightCFG>
<ColorTemperatureCFG>
<red min="0" max="100"/>
<!--req, 色温配置，红色值；0~100-->
<green min="0" max="100"/>
<!--req, 色温配置，绿色值；0~100-->
<blue min="0" max="100"/>
<!--req, 色温配置，蓝色值；0~100-->
<redOffset min="0" max="100"/>
<!--req, 色温配置，红色偏移；0~100-->
<greenOffset min="0" max="100"/>
<!--req, 色温配置，绿色偏移；0~100-->
<blueOffset min="0" max="100"/>
<!--req, 色温配置，蓝色偏移；0~100-->
</ColorTemperatureCFG>
<ADCCFG>
<gainR min="0" max="100"/>
<!--req, 增益R；0~100-->
<gainG min="0" max="100"/>
<!--req, 增益G；0~100-->
<gainB min="0" max="100"/>
<!--req, 增益B；0~100-->
<offsetR min="0" max="100"/>
<!--req, 偏移量R；0~100-->
<offsetG min="0" max="100"/>
<!--req, 偏移量G；0~100-->
<offsetB min="0" max="100"/>
<!--req, 偏移量B；0~100-->
</ADCCFG >
<ScreenEdgeCFG>
<enable opt="0,1"/>
<!--req, 是否启用屏幕边缘 0-不启用 1-启用-->
<leftEdge min="0" max="100"/>
<!--req, 左边缘,0-100-->
<rightEdge min="0" max="100"/>
<!--req, 右边缘,0-100-->
<topEdge min="0" max="100"/>
<!--req, 上边缘,0-100-->
<lowerEdge min="0" max="100"/>
<!--req, 下边缘,0-100-->
</ScreenEdgeCFG>
<PIPCFG>
<enable opt="0,1"/>
<!--req, 是否启用画中画0-不启用 1-启用-->
<subWindowSource opt="1,2,3,4,5,6,7"/>
<!--req, 子画面信号源，1-AV，2-VGA，3-HDMI，4-DVI，5-YpbPr，6-USB，7-IP-->
<subWindowBorderColor opt="0,1"/>
<!--req, 子画面边框颜色，1-蓝色，2-黑色-->
<subWindowSize min="0" max="100"/>
<!--req, 子画面大小,0-100-->
<subWindowXCoordinate min="0" max="100"/>
<!--req, 子画面位置，X坐标 0-100-->
<subWindowYCoordinate min="0" max="100"/>
<!--req, 子画面位置，Y坐标 0-100-->
</PIPCFG>
<DefogLCD>
<defogEnable opt="0,1"/>
<!--req, 是否开启去雾开关，0~关闭，1~开启-->
<defogModel opt="0,1"/>
<!--req, 去雾模式，0~自动去雾，1~手动去雾-->
<defogLevel opt="1,2,3,4,5,6,7"/>
<!--req, 去雾强度等级，1-7个等级，默认等级为4。等级1为0.5；等级2为0.55；等级3为0.60；等级4为0.65；
等级5为0.70；等级6为0.75；等级7为0.80。（去雾模式为手动去雾时，可配置去雾强度等级）-->
</DefogLCD>
<ScreenWorkStatus>
<fanStatus opt="off,on"/>
<!--req,风扇状态-->
<fanExceptionStatus>true</fanExceptionStatus><!--req,风扇异常状态-->
<workingHours>true</workingHours><!--req, 累积工作时长-->
<versionLen min="" max=""/><!--req, 软件版本号长度-->
<temperature min="" max=""/><!--req, 板卡温度，单位：摄氏度-->
</ScreenWorkStatus>

<bootLogoCfg opt="on,off"/><!--req, 开机logo是否显示-->
<delayBoot min="" max=""/><!--req, 延时开机时间范围，单位：ms-->
<TimingSwitch><!--req,支持定时开关机-->
<weekTimingSwitch><!--req,周开关机计划-->
<maxPowerOnTimePoint>2</maxPowerOnTimePoint><!--req, 开机时间点个数-->
<maxPowerOffTimePoint>2</maxPowerOffTimePoint><!--req, 关机时间点个数-->
<TimeAccuracy><!--req,时间精度-->
<hour>true</hour>
<minute>true</minute>
<second>true</second>
</TimeAccuracy>
</weekTimingSwitch>
<specialTimingSwitch>
<maxPowerOnTimePoint>8</maxPowerOnTimePoint><!--req, 开机时间点个数-->
<maxPowerOffTimePoint>8</maxPowerOffTimePoint><!--req, 关机时间点个数-->
<TimeAccuracy><!--req,时间精度-->
<hour>true</hour>
<minute>true</minute>
<second>true</second>
</TimeAccuracy>
</specialTimingSwitch>
</TimingSwitch>

<WallCfg>
<wallNo min="1" max="1"/><!--req, 支持的墙号范围-->
<WallScale><!--req, 墙规模大小-->
<length min="" max=""/><!--req,墙宽-->
<length min="" max=""/><!--req,墙高-->
</WallScale>
</WallCfg>

<ExternalMatrix>
<!--req,外接矩阵能力-->
<maxMatrixNum >4</maxMatrixNum><!--req,最大外接矩阵台数-->
<matrixNameLen min="" max=""/><!--req,外接矩阵名称长度-->
<maxMatrixInputNum>256</maxMatrixInputNum>
<!--req,支持外接矩阵最大输入数-->
<maxMatrixOutputNum>256</maxMatrixOutputNum>
<!--req,支持外接矩阵最大输出数-->
<matrixChanType opt="BNC,VGA,RGB,DVI"/>
<!--req,支持的矩阵输出通道类型-->
<matrixProtocol opt="ZT1.0,ZT1.0,Extron,Creator,SelfDefine"/><!--req,支持的矩阵协议-->
<matrixType opt="analogmatrix,digitalmatrix"/>
<!--req,支持的矩阵类型-->
<DigitalMatrix>
<!--req,数字矩阵能力-->
<nicNum min="" max=""/>
<!--req,支持的网口编号-->
</DigitalMatrix>
<AnalogMatrix>
<serPortNum min="" max=""/>
<!--req,控制器串口号范围,串口参数范围根据串口能力集-->
</AnalogMatrix>
</ExternalMatrix>

<serialProtocol opt="LCD-S1,LCD-S2,LCD-L1,LCD-DLP,LCD-S3,LCD-D20,LCD-L2,LCD-Z1,LCD-D20/D,
LCD-D20/S,LCD-D20/P,LCD-D20/T,LCD-D20/F,LCD-D20/DF,LCD-D20/FS,LCD-D20/FP,
LCD-D20/FT,LCD-D5022,LCD-D5032,LCD-D5042+,LCD-D20/Z"/><!--req, 支持的屏幕控制协议-->
<controlType opt="serial,network"/><!--req,支持的控制方式-->
<AudioCfg>
<!--req,音频参数能力-->
<mute>enable</mute>
<!--req,支持静音-->
<volume min="" max=""/>
<!--req,音量大小-->
<balance min="" max=""/>
<!--req,声道平衡-->
</AudioCfg>
<AreaZoom>
<!--req,是否支持屏幕区域放大，不支持不返回-->
<enabled>true</enabled>
</AreaZoom>
<LCDAlarm>
<OnOffLine>true</OnOffLine >
<!--req,支持在线情况上报-->
<FanState>true</FanState>
<!--req,支持风扇状态上报-->
<FanException>true</FanException>
<!--req,支持风扇异常状态上报-->
<Temperature>true</Temperature>
<!--req,支持屏幕板卡温度上报-->
<TemperatureState>true</TemperatureState>
<!--req,支持板卡温度状态上报-->
</LCDAlarm>
</ScreenAbility>


MATRIX_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 矩阵能力集描述 -->
<MatrixAbility version="2.0">
<inputPortNo min="1" max="256"/>
<!--req,输入口最小最大编号-->
<outputPortNo min="1" max="256"/>
<!--req,输出口最小最大编号-->
<ioSwitch>
<!--req,输入输出切换能力-->
<oneToOne>
<!--req,支持输入输出一对一切换-->
<enabled>true</enabled>
</oneToOne>
<oneToMulti><!--req ,支持一个输入切换到指定多个输出-->
<enabled>true</enabled>
</oneToMulti>
<oneToAll>
<!--req ,支持一个输入切换到所有输出-->
<enabled>true</enabled>
</oneToAll>
<cancelRelation>
<oneToOne><!--req,支持取消某一路关联关系-->
<enabled>true</enabled>
</oneToOne>
<allRelation>
<!--req,支持取消所有输入输出关联关系-->
<enabled>true</enabled>
</allRelation>
</cancelRelation>
</ioSwitch>
<Scene>
<!--req,场景能力-->
<sceneNo min="" max=""/><!--req,场景序号-->
<sceneNameLen min="" max=""/><!--req,场景名称长度-->
</Scene>
<Plan>
<!--req,预案能力-->
<planNo min="" max=""/>
<!--req,预案序号-->
<planNameLen min="" max=""/>
<!--req,预案名称长度-->
<planMode opt="manual,auto,loop"/>
<!--req,预案工作模式-->
<maxPlanWorkCount></maxPlanWorkCount><!--req,最大预案执行次数-->
<PlanInfo>
<!--req,预案执行内容-->
<maxActionNum></maxActionNum><!--req,最大预案动作个数-->
<operateType opt="switchlayout,screenpoweroff,screenpoweron"/><!--req,操作类型-->
<screenStyle opt="lowBright,highBright"/>
<!--req,屏幕型号-->
<delayTime min="" max=""/>
<!--req,单项运行时间，单位秒-->
</PlanInfo>
</Plan>
</MatrixAbility>


MATRIX_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取矩阵能力时pInBuf参数描述-->
<MatrixAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</MatrixAbility>


SafetyHelmetDetection

设备网络SDK开发使用手册

<SafetyHelmetDetection version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<normalizedScreenSize>
<!--req,ro,归一化数值-->
<normalizedScreenWidth>
<!-- req, xs:integer，取值范围[0,1]，报警规则框宽度 -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!-- req, xs:integer，取值范围[0,1]，报警规则框高度-->
</normalizedScreenHeight>
</normalizedScreenSize>
<SafetyHelmetDetectionRegionList/>
<!--opt-->
<stackTarget>
<!--req, xs:boolean, "true,false", "报警目标框是否叠加"- -->
</stackTarget>
<stackRule>
<!--req, xs:boolean, "true,false", "报警规则框是否叠加"- -->
</stackRule>
<alarmLinkageDuration>
<!--req, xs:string, opt="5,10,30,60,120,300,600", unit:s, "报警联动持续时间" -->
</alarmLinkageDuration>
<ImageParam>
<Resolution>
<id>
<!--req, xs:string -->
</id>
<name>
<!--req, xs:string,opt="1080p,720p,D1" -->
</name>
<value>
<!--req, xs:string, opt="1920*1080,1280*720,740*576" -->
</value>
</Resolution>
<quality>
<!--req, xs:string, opt="best,good,general",图片质量：最好，不错，一般 -->
</quality>
<alarmUpload>
<!--req, xs:boolean, "true,false", "是否上传报警图片"- -->
</alarmUpload>
<localStorage>
<!--opt, xs:boolean, "true,false", "图片是否在本地存储"- -->
</localStorage>
</ImageParam>
</SafetyHelmetDetection>


SafetyHelmetDetectionCap

设备网络SDK开发使用手册

<SafetyHelmetDetectionCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<SafetyHelmetDetectionRegionList size="8" />
<!--opt-->
<stackTarget opt="true,false">
<!--req, xs:boolean, "报警目标框是否叠加"- -->
</stackTarget>
<stackRule opt="true,false">
<!--req, xs:boolean, "报警规则框是否叠加"- -->
</stackRule>
<alarmLinkageDuration opt="5,10,30,60,120,300,600">
<!--req, xs:string, "报警联动持续时间", unit:s -->
</alarmLinkageDuration>
<ImageParam>
<ResolutionList size="3">
<Resolution>
<id>
<!--req, xs:string -->
</id>
<name>
<!--req, xs:string,opt="1080p,720p,D1" -->
</name>
<value>
<!--req, xs:string, opt="1920*1080,1280*720,740*576" -->
</value>
</Resolution>
</ResolutionList>
<quality opt="best,good,general">
<!--req, xs:string,图片质量：最好，不错，一般 -->
</quality>
<alarmUpload opt="true,false">
<!--req, xs:boolean, "是否上传报警图片"- -->
</alarmUpload>
<localStorage opt="true,false">
<!--opt, xs:boolean, "图片是否在本地存储"- -->
</localStorage>
</ImageParam>
<AdvanceConfiguration>
<headSensitivity min="1" max="5" def="3">
<!--req, xs:integer, "人头检测灵敏度,越大检出越灵敏"- -->
</headSensitivity>
<humanSensitivity min="1" max="5" def="3">
<!--req, xs:integer, "人体检测灵敏度,越大检出越灵敏"- -->
</humanSensitivity>
<alarmAnalysisFrame min="1" max="50" def="12">
<!--req, xs:integer, "告警分析所需帧数,越大则需要判断帧数越多，则越慢报警"- -->
</alarmAnalysisFrame>
</AdvanceConfiguration>
</SafetyHelmetDetectionCap>


STREAM_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备流能力集描述 -->
<StreamAbility version="2.0">
<streamIdNum>10000</streamIdNum><!--req,支持的流ID个数-->

<StreamSource><!--req,取流能力-->
<!--req,支持的取流模式， 0-直接从设备取流，4-通过流媒体由URL去取流，6-通过流媒体到指定监控设备上取流，7-通过标准RTSP接入设备，8-支持URL级联方式到前端取流-->
<getStreamMode opt = "0,4,6,7,8"/>

<!--req,直接取流模式-->
<DirectStreamMode>
<ZeroChannelSupport><!--req,是否支持零通道取流，不支持不返回-->
<enable>true</enable>
</ZeroChannelSupport>
<DomainSupport><!--req,是否支持域名,不支持不返回-->
<enable>true</enable>
</DomainSupport>
<OnlineCheckSupport>
<!--req,是否在线检测能力，不支持不返回-->
<enable>true</enable>
</OnlineCheckSupport>

<streamType opt = "0,1"/><!--req, 码流类型，0-主码流，1-子码流-->
<transProtocol opt = "0,1,2"/>
<!--req,取前端流协议， 0-TCP优先, 1-UDP优先, 3-RTSP方式, 2-多播方式-->
<LocalBackUp>
<!--req,是否支持本地备份，不支持不返回，启用CVR本地备份即录像时的流一份在录像卷，一份在存档卷（本地备份）-->
<enable>true</enable>
</LocalBackUp>
<supportChanNo>true</supportChanNo><!--req，是否支持通道编号的方式添加设备，用于VAG取流-->

<IPCProtocolList><!--req,支持的IPC协议列表-->
<IPCProtocolEntry><!--req,同级节点可有多个-->
<id>1</id><!--req,从0开始的节点序号-->
<index>0</index><!--req,协议索引值-->
<protocolName></protocolName ><!--req,协议名称-->
<!--req,YOULI、LILIN_1016、LILIN_820、PELCO_P 、DM_DynaColor、JC4116、 PELCO_DWX、 VCOM_VC_2000、NETSTREAMER、SAE_YAAN、SAMSUNG、 Kalatel_312、CELOTEX、TLPELCO_P、TL_HHX2000 、BBV、RM110、KC3360S、ACES、 ALSON、INV3609HD、HOWELL、TC_PELCO_P、TC_PELCO_D、AUTO_M、AUTO_H、ANTEN、CHANGLIN、DELTADOME、XYM_12、ADR8060、EVI_D30、Demo_Speed、 DM_PELCO_D、ST_832、LC_D2104、HUNTER、A01 、TECHWIN、WEIHAN、LG、D_MAX、PANASONIC、KTD_348 INFINOVA 、PIH_7625、LCU、DENNARD_DOME、 PHLIPS、SAMPLE、PLD、PARCO、HY、NAIJIE、CAT_KING、YH_06、SP9096X、M_PANEL、M_MV2050、SAE_QUICK、PEARMAIN、NKO8G、DH_CC440、TX_CONTROL_232、VCL_SPEED_DOME、ST_2C160、TDWY、TWHC、USNT、
KLT_NVD2200PS、VIDO_B01、LG_MULTIX、ENKEL、YT_PELCOD、PRIVATE、
PE60、LiAo、NK16、DaLi、HN_4304、VIDEOTEC、HNDCB、Lion_2007、LG_LVC_C372、
Gold_Video、NVD1600PS、TC615P、NANWANG、NANWANG_1602、SieMens、WVCS850、
PHLIPS_2、PHLIPS_3、AD、TYCO_AD、VICON、TKC676、YAAN_NEW、DL_NVS_1Z、I3_Z1200、I3_Z2200、VAG、ONVIF-->
</IPCProtocolEntry>
</IPCProtocolList>
</DirectStreamMode>

<!--req,流媒体取流模式-->
<StreamMediaMode>
<mediaTransProtocol opt = "0,1" /><!--req,流媒体传输协议，0-TCP, 1-UDP-->
<streamType opt = "0,1" /><!--req, 码流类型，0-主码流，1-子码流-->
<transProtocol opt = "0,1,2,3" /><!--req,取前端流协议， 0-TCP, 1-UDP, 2-多播方式, 3-RTP-->

<IPCProtocolList><!--req,支持的IPC协议列表-->
<IPCProtocolEntry><!--req,统计节点可有多个-->
<id>1</id><!--req,从0开始的节点序号-->
<index>0</index><!--req,协议索引值-->
<protocolName></protocolName><!--req,协议名称-->
<!--req,YOULI、LILIN_1016、LILIN_820、PELCO_P 、DM_DynaColor、JC4116、 PELCO_DWX、 VCOM_VC_2000、NETSTREAMER、SAE_YAAN、SAMSUNG、 Kalatel_312、CELOTEX、TLPELCO_P、TL_HHX2000 、BBV、RM110、KC3360S、ACES、 ALSON、INV3609HD、HOWELL、TC_PELCO_P、TC_PELCO_D、AUTO_M、AUTO_H、ANTEN、CHANGLIN、DELTADOME、XYM_12、ADR8060、EVI_D30、Demo_Speed、 DM_PELCO_D、ST_832、LC_D2104、HUNTER、A01 、TECHWIN、WEIHAN、LG、D_MAX、PANASONIC、KTD_348 INFINOVA 、PIH_7625、LCU、DENNARD_DOME、 PHLIPS、SAMPLE、PLD、PARCO、HY、NAIJIE、CAT_KING、YH_06、SP9096X、M_PANEL、M_MV2050、SAE_QUICK、PEARMAIN、NKO8G、DH_CC440、TX_CONTROL_232、VCL_SPEED_DOME、ST_2C160、TDWY、TWHC、USNT、
KLT_NVD2200PS、VIDO_B01、LG_MULTIX、ENKEL、YT_PELCOD、PRIVATE、
PE60、LiAo、NK16、DaLi、HN_4304、VIDEOTEC、HNDCB、Lion_2007、LG_LVC_C372、
Gold_Video、NVD1600PS、TC615P、NANWANG、NANWANG_1602、SieMens、WVCS850、
PHLIPS_2、PHLIPS_3、AD、TYCO_AD、VICON、TKC676、YAAN_NEW、DL_NVS_1Z、I3_Z1200、I3_Z2200、VAG、ONVIF-->
</IPCProtocolEntry>
</IPCProtocolList>
<localBackUp>true</localBackUp>
<!--req, 是否支持本地备份，不支持返回false或不返回-->
</StreamMediaMode>

<!--req,URL取流模式-->
<UrlMode>
<transProtocol opt = "0,1" /><!--req, 前端取流协议， 0-TCP, 1-UDP-->
<channelNo opt = "1,2" /><!--req, 流媒体取流通道号 -->
</UrlMode>

<!--req,RTSP取流模式-->
<RTSPProMode>
<localBackUp>true</localBackUp><!--req 是否支持本地备份，不支持返回false或不返回-->
<IPCProtocolList><!--req,支持的IPC协议列表-->
<IPCProtocolEntry><!--req,统计节点可有多个-->
<id>1</id><!--req,从0开始的节点序号-->
<index>0</index><!--req,协议索引值-->
<protocolName></protocolName ><!--req,协议名称-->
<!--req,YOULI、LILIN_1016、LILIN_820、PELCO_P 、DM_DynaColor、JC4116、 PELCO_DWX、 VCOM_VC_2000、NETSTREAMER、SAE_YAAN、SAMSUNG、 Kalatel_312、CELOTEX、TLPELCO_P、TL_HHX2000 、BBV、RM110、KC3360S、ACES、 ALSON、INV3609HD、HOWELL、TC_PELCO_P、TC_PELCO_D、AUTO_M、AUTO_H、ANTEN、CHANGLIN、DELTADOME、XYM_12、ADR8060、EVI_D30、Demo_Speed、 DM_PELCO_D、ST_832、LC_D2104、HUNTER、A01 、TECHWIN、WEIHAN、LG、D_MAX、PANASONIC、KTD_348 INFINOVA 、PIH_7625、LCU、DENNARD_DOME、 PHLIPS、SAMPLE、PLD、PARCO、HY、NAIJIE、CAT_KING、YH_06、SP9096X、M_PANEL、M_MV2050、SAE_QUICK、PEARMAIN、NKO8G、DH_CC440、TX_CONTROL_232、VCL_SPEED_DOME、ST_2C160、TDWY、TWHC、USNT、
KLT_NVD2200PS、VIDO_B01、LG_MULTIX、ENKEL、YT_PELCOD、PRIVATE、
PE60、LiAo、NK16、DaLi、HN_4304、VIDEOTEC、HNDCB、Lion_2007、LG_LVC_C372、
Gold_Video、NVD1600PS、TC615P、NANWANG、NANWANG_1602、SieMens、WVCS850、
PHLIPS_2、PHLIPS_3、AD、TYCO_AD、VICON、TKC676、YAAN_NEW、DL_NVS_1Z、I3_Z1200、I3_Z2200、VAG、ONVIF-->
</IPCProtocolEntry>
</IPCProtocolList>
</RTSPProMode>

<!--req,URL级联取流模式-->
<URLCascadeMode>
<streamType opt = "0,1" /><!--req, 码流类型，0-主码流，1-子码流-->
<localBackUp>true</localBackUp><!--req 是否支持本地备份，不支持返回false或不返回-->
<IPCProtocolList><!--req,支持的IPC协议列表-->
<IPCProtocolEntry><!--req,统计节点可有多个-->
<id>1</id><!--req,从0开始的节点序号-->
<index>0</index><!--req,协议索引值-->
<protocolName></protocolName ><!--req,协议名称-->
<!--req,YOULI、LILIN_1016、LILIN_820、PELCO_P 、DM_DynaColor、JC4116、 PELCO_DWX、 VCOM_VC_2000、NETSTREAMER、SAE_YAAN、SAMSUNG、 Kalatel_312、CELOTEX、TLPELCO_P、TL_HHX2000 、BBV、RM110、KC3360S、ACES、 ALSON、INV3609HD、HOWELL、TC_PELCO_P、TC_PELCO_D、AUTO_M、AUTO_H、ANTEN、CHANGLIN、DELTADOME、XYM_12、ADR8060、EVI_D30、Demo_Speed、 DM_PELCO_D、ST_832、LC_D2104、HUNTER、A01 、TECHWIN、WEIHAN、LG、D_MAX、PANASONIC、KTD_348 INFINOVA 、PIH_7625、LCU、DENNARD_DOME、 PHLIPS、SAMPLE、PLD、PARCO、HY、NAIJIE、CAT_KING、YH_06、SP9096X、M_PANEL、M_MV2050、SAE_QUICK、PEARMAIN、NKO8G、DH_CC440、TX_CONTROL_232、VCL_SPEED_DOME、ST_2C160、TDWY、TWHC、USNT、
KLT_NVD2200PS、VIDO_B01、LG_MULTIX、ENKEL、YT_PELCOD、PRIVATE、
PE60、LiAo、NK16、DaLi、HN_4304、VIDEOTEC、HNDCB、Lion_2007、LG_LVC_C372、
Gold_Video、NVD1600PS、TC615P、NANWANG、NANWANG_1602、SieMens、WVCS850、
PHLIPS_2、PHLIPS_3、AD、TYCO_AD、VICON、TKC676、YAAN_NEW、DL_NVS_1Z、I3_Z1200、I3_Z2200、VAG、ONVIF-->
</IPCProtocolEntry>
</IPCProtocolList>
<supportChanNo>true</supportChanNo><!--req 是否支持通道编号的方式添加设备，用于VAG取流-->
</URLCascadeMode>

</StreamSource>
</StreamAbility >


STREAM_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取流能力时pInBuf参数描述-->
<StreamAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</StreamAbility>


SYSTEM_MANAGEMENT_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 设备系统管理能力集描述 -->
<SystemManagementAbility version="2.0">
<!-- req,设备自动重启参数配置，不支持不显示，对于解码器，如果此处不支持，还需判断解码器能力SupportAutoReboot节点-->
<AutoReboot>
<!-- req, 支持的重启模式，0-按周重启，1-按月重启-->
<RebootMode opt="0,1" />
</AutoReboot>
</SystemManagementAbility >


SYSTEM_MANAGEMENT_ABILITY_INPUT

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!--req, 获取系统管理能力时pInBuf参数描述 -->
<SystemManagementAbility version="2.0">
<!--opt,可以指定节点返回，指定节点可以是根节点的下一级节点-->
</SystemManagementAbility>


WALL_ABILITY

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<!-- req, 电视墙能力集描述 -->
<WallAbility>
<!-- req, 窗口编号 -->
<winNum min="" max="" />
<!--req, 场景编号-->
<senceNum min="" max="" />
<!--req, 支持的屏幕数-->
<maxScreenNum>1</maxScreenNum>
<!--opt, 级联综合平台编号-->
<platformNum min="" max="" />
<!--opt, 底图编号-->
<basePicNum min="" max="" />
<!--req, 支持的分屏数-->
<windowMode opt="1,4,9,16,25,36">1</windowMode>
<!--req, 每个屏幕大小的基准值-->
<WindowBase>
<windowBaseX>128</windowBaseX>
<windowBaseY>128</windowBaseY>
</WindowBase>

<Transparency>
<!--req, 透明度，不支持不显示-->
<layerNum>16</layerNum>
<!--req, 支持几层透明度-->
<range min="" max=""/>
<!--req, 透明度设置范围-->
</Transparency >

<VoutResource>
<videoOutNum></videoOutNum>
<!--req, xs: inter, 视频输出个数-->
<audioOutNum></audioOutNum>
<!--req, xs: inter, 音频输出个数-->

<AllOutputConfigOnly>
<!--opt, 所有输出口是否只能统一配置-->
<enabled>
<!--req,xs:boolean,"true"-->
</enabled>
</AllOutputConfigOnly>

<SupportLEDOutputConfigAll>
<!--opt, LED输出口参数是否支持全墙配置-->
<enabled>
<!--req, xs:boolean,"true"-->
</enabled>
</SupportLEDOutputConfigAll>

<supportLEDResolutionVoutType opt="hdmi,dvi,sdi"/>
<!--opt, 支持LED分辨率的输出口类型, 没有该节点默认都支持, xs:string-->

<VoutResourceEntry>
<!--req, 同级节点可以有多个-->
<id></id>
<voutType>vga</voutType>
<!--req, xs:string,bnc,vga,hdmi,dvi,sdi,3gsdi,vga/dvi-->
<voutNo min="" max="" />
<!--req, xs:inter,此输出类型的输出序号-->
<videoFormat opt = "NULL,NTSC,PAL"/>
<!--req,支持的制式类型-->
<outputWindowMode opt="1,4,9,16,25,36"/>
<!--req,显示输出口支持的窗口分屏模式-->
<backgroundColor opt="red,green,blue,yellow,purple,cyan,black,white"/>
<!--req,支持的背景色-->
<VideoEffect>
<!--req,显示输出效果参数-->
<brightnessLevel min="" max=""/><!--req,亮度等级-->
<contrastLevel min="" max=""/><!--req,对比度等级-->
<sharpnessLevel min="" max=""/><!--req,锐度等级-->
<saturationLevel min="" max=""/><!--req,饱和度等级-->
<hueLevel min="" max=""/><!--req,色调等级-->
</VideoEffect>
<Audio>
<enabled>true</enabled>
<!--req, 是否支持独立音频-->
</Audio>

<!--req, 输出口是否支持畅显-->
<VoutMotionFluency>
<enabled>true</enabled>
</VoutMotionFluency>

<VoutResolutionEntry>
<!--req, 同级节点可以有多个-->
<resolutionName>
<!--req, xs:string, "1080P_60HZ(1920*1080)"..., 显示输出分辨率名称-->
</resolutionName>
<index></index>
<!--req, xs:inter,该分辨率对应的索引值-->
</VoutResolutionEntry>
</VoutResourceEntry>
</VoutResource>
<layOutNo min="" max=""/>
<!--req,布局序号-->
<baseMapSpan></baseMapSpan>
<!--req, 底图跨度,一张底图最多可覆盖的屏幕数-->
<overlayStringNum>8</overlayStringNum>
<!--req,支持的字符串叠加个数-->
<inputStreamNo min="" max=""/>
<!--req,输入源序号-->
<outputChanNo min="" max=""/>
<!--req,输出通道序号-->
<planNo min="" max=""/>
<!--req,预案序号-->
<maxPictureViewNum>4</maxPictureViewNum>
<!--req,最大回显路数，不支持不显-->
<maxCamGroupNum></maxCamGroupNum>
<!--req,最大分组个数，不支持不显-->
<maxNetSignalNum></maxNetSignalNum>
<!--req,最大网络源个数，不支持不显-->

<ScreenLinkConfig>
<!--req,不支持显示器连接调整不需要此节点-->
<enabled>true</enabled>
<!--req,显示器连接调整 -->
</ScreenLinkConfig>

<StreamMedia>
<!--req,不支持流媒体不需要此节点-->
<enabled>true</enabled>
<!--req,流媒体,-->
</StreamMedia>
<ScreenControl>
<!--req,不支持屏幕控制不需要此节点-->
<enabled>true</enabled>
<!--req,屏幕控制,-->
</ScreenControl>
<maxLocalInputDeviceNum>
<!--req,本地编码输入设备最大个数，不支持不显-->
</maxLocalInputDeviceNum>

<maxLocalOutputDeviceNum>
<!--req,本地显示输出设备最大个数，不支持不显-->
</maxLocalOutputDeviceNum>

<wallNo min="" max=""/>
<!--,电视墙序号?-->

<VirtualScreen>
<!--req,超高清输入子系统能力（虚拟屏能力），不支持不显示-->
<InputChanInitCap>
<!--opt,虚拟屏输入通道初始化能力-->
<inputChanNums>
<!--opt,输入通道最大数量,xs:integer-->
</inputChanNums>
<maxJoinResolution>
<!--opt,最大拼接分辨率（1080P的个数）,xs:integer-->
</maxJoinResolution>
<selfdefinResNums>
<!--opt,单通道支持的自定义分辨率的最大个数,xs:integer-->
</selfdefinResNums>
</InputChanInitCap>
<Resolution>
<!--req,虚拟屏支持的显示分辨率-->
<ResolutionEntry>
<!--req,同级节点可以有多个-->
<resolutionName>
<!--req, xs:string, "1080P_60HZ(1920*1080)"...,显示输出分辨率名称-->
</resolutionName>
<index>
<!--req, xs:inter,该分辨率对应的索引值-->
</index>
</ResolutionEntry>
</Resolution>
</VirtualScreen>

<baseMapWinNo min="" max=""/>
<!--req, 支持的底图窗口编号范围-->
<BaseMapPicSize>
<!--req,支持的底图图片大小,不返回该节点的按最大支持5120*2880,文件最大6MB处理-->
<width min="" max=""/>
<!--req,图片宽-->
<height min="" max=""/>
<!--req,图片高-->
<maxPicFileSize>10</maxPicFileSize>
<!--req,最大底图文件大小，单位：MB-->
</BaseMapPicSize>
<BaseMapWinMove>
<!--req,是否支持底图窗口移动-->
<enabled>true</enabled>
</BaseMapWinMove>
<PlatformPassiveDecode>
<!--req,综合平台是否支持被动解码-->
<enabled>true</enabled>
</PlatformPassiveDecode>

<WallLogo>
<!--req,电视墙logo，支持logo号的设备返回此节点-->
<logoNo min="" max=""/>
<!--req,支持的logo编号范围，不支持logo编号不显示-->
<logoSize min="" max=""/>
<!--req,支持的logo大小，以字节为单位-->
<logoNameLen min="" max=""/>
<!--req,logo名称长度大小-->
<logoStatus opt = "show, hide"/>
<!--req,logo显示状态-->
<logoCorordinateX min="" max=""/>
<!--req,logo显示区域X坐标范围-->
<logoCorordinateY min="" max=""/>
<!--req,logo显示区域Y坐标范围-->
<LogoFlash>
<!--req,支持logo闪烁-->
<enabled>true</enabled>
</LogoFlash>
<LogoTranslucent>
<!--req,logo半透明-->
<enabled>true</enabled>
</LogoTranslucent>
<LogoDelete>
<!--req,支持logo删除-->
<enabled>true</enabled>
</LogoDelete>
</WallLogo>

<WindowLoop>
<!--req,支持窗口轮巡解码-->
<maxLoopNum>12</maxLoopNum>
<!--req,支持的窗口轮巡解码路数-->
<maxMonitorNum>64</maxMonitorNum>
<!--req,每路轮巡支持的最大监控点数-->
</WindowLoop>
<WindowDecResourceAlloc>
<!--req,支持窗口解码资源分配，不支持不显示-->
<WindowDecResourceAllocEntry>
<!--req,支持窗口解码资源分配,同级节点可以有多个-->
<name>D1</name>
<!--req,分配解码资源名称-->
<index>1</index>
<!--req,索引值-->
</WindowDecResourceAllocEntry>
</WindowDecResourceAlloc>
<MotionFluency>
<!--req,是否支持窗口畅显-->
<enabled>true</enabled>
</MotionFluency>

<WinZoomStatus>
<!--req,支持窗口电子放大状态获取,不支持不显示-->
<enabled>true</enabled>
</WinZoomStatus>

<WinTopAndBottom>
<!--req,支持窗口置顶置底-->
<enabled>true</enabled>
</WinTopAndBottom>

<CloseAllWin>
<!--req,支持关闭所有窗口-->
<enabled>true</enabled>
</CloseAllWin>

<windowStaticMode opt="black,lastframe"/>
<!--req,支持停止解码窗口显示模式配置-->
<LowLight opt="off,level1,level2, level3, level4, level5, level6, level7, level8"/>
<!--req,低照度等级-->
<NosieReduction>
<!--req,是否支持3D降噪-->
<enabled>true</enabled>
<autoNosieReduction>enable</autoNosieReduction>
</NosieReduction>

<Defog opt="off,level1,level2, level3, level4, level5, level6, level7"/>
<!--req,透雾等级-->

<VcaDecode>
<!--req,是否支持智能解码-->
<enabled>true</enabled>
<allWinCtrl>true</allWinCtrl>
<!--opt,支持所有窗口一起操作-->
</VcaDecode>

<AllWinDecSwitch>
<!--req,支持所有窗口解码启停-->
<enabled>true</enabled>
</AllWinDecSwitch>

<VirtualLed>
<!--req,虚拟led-->
<dispMode opt="transparent, translucent,cover"/>
<!--req,显示模式-->
<FontColor>
<!--req,字体颜色-->
<colorY min="" max=""/>
<colorU min="" max=""/>
<colorV min="" max=""/>
</FontColor>
<BackgroundColor>
<!--req,背景颜色-->
<colorY min="" max=""/>
<colorU min="" max=""/>
<colorV min="" max=""/>
</BackgroundColor>
<characterNum min="" max=""/>
<!--req,字符个数-->
<moveMode opt="normal, smooth,static"/>
<!--req, 移动模式-->
<moveSpeed opt="speed1,speed2"/>
<!--req,字符移动速度-->
<fontSize opt="1times,2times,4times"/>
<!--req,字体大小-->
<moveDirection opt="lefttoright,righttoleft,toptobottom,bottomtotop"/>
<!--req,字符移动方向-->
</VirtualLed>
<ExternalMatrix>
<!--req,外接矩阵能力-->
<maxMatrixNum >4</maxMatrixNum>
<!--req,最大外接矩阵台数-->
<matrixNameLen min="" max=""/>
<!--req,外接矩阵名称长度-->
<maxMatrixInputNum>256</maxMatrixInputNum>
<!--req,支持外接矩阵最大输入数-->
<maxMatrixOutputNum>256</maxMatrixOutputNum>
<!--req,支持外接矩阵最大输出数-->
<matrixChanType opt="BNC,VGA,RGB,DVI"/>
<!--req,支持的矩阵输出通道类型-->
<matrixProtocol opt="ZT1.0,ZT1.0,Extron,Creator"/>
<!--req,支持的矩阵协议-->
<matrixType opt="analogmatrix,digitalmatrix"/>
<!--req,支持的矩阵类型-->
<DigitalMatrix>
<!--req,数字矩阵能力-->
<nicNum min="" max=""/>
<!--req,支持的网口编号-->
</DigitalMatrix>
<AnalogMatrix>
<serPortNum min="" max=""/>
<!--req,控制器串口号范围,串口参数范围根据串口能力集-->
</AnalogMatrix>
</ExternalMatrix>
<!--req,支持的图片回显参数选择-->
<PicViewParam>
<picResolution opt="QCIF,CIF,D1" />
<!--req,回显支持的图片分辨率-->
<picFrameRate min="" max=""/>
<!--req,回显支持的图片帧率-->
</PicViewParam>

<!--req,支持显示显示通道号在电视墙上-->
<ShowDispChanNo>
<channelType opt="DisplayChanNo,ScreenNo"/>
<!--req,支持显示的通道号类型-->
<SupportDispByWallNo>
<!--req,支持按墙号显示-->
<enabled>true</enabled>
</SupportDispByWallNo>
</ShowDispChanNo>

<AudioMatrix>
<!--req,支持音频矩阵切换-->
<audioChanNameLen min="" max=""/>
<!--req,音频通道名称长度-->
<audioSwitchType opt="switchbyip,switchbywin" />
<!--req,支持的音频切换方式-->
</AudioMatrix>

<baseMapWinNo min="" max="" />
<!--req, 支持的底图窗口编号范围-->

<DownloadLogo>
<!--req, 支持LOGO下载-->
<enabled>true</enabled>
</DownloadLogo>

<JointSignal>
<!--req,支持拼接信号源-->
<enabled>true</enabled>
<JointNo min="" max=""/><!--req,拼接编号-->?
<JointItem>
<!--req,支持拼接的信号源类型，同级节点可以有多个-->
<id>
<!--req, 信号源ID-->
</id>
<SignalType>bnc</SignalType>
<!--req, xs:string,bnc,vga,hdmi,dvi,ip,rgb,matrix, yprpb,usb,sdi,hdi,dp,hdtvi -->
</JointItem>
<JointScale>
<!--opt,拼接规模，综合平台支持此节点返回-->
<X86JointScale>
<!--opt,X86拼接板拼接能力-->
<maxInputNum></maxInputNum>
<!--opt,单个拼接最大输入数-->
<maxHeight></maxHeight>
<!--opt,最大拼接高度-->
<maxWidth></maxWidth>
<!--opt,最大拼接宽度-->
</X86JointScale>
<NormalJointScale>
<!--opt,普通拼接板拼接能力-->
<maxInputNum></maxInputNum>
<!--opt,单个拼接最大输入数-->
<maxHeight></maxHeight>
<!--opt,最大拼接高度-->
<maxWidth></maxWidth>
<!--opt,最大拼接宽度-->
</NormalJointScale>
</JointScale>
<DeleteJoint>
<enabled>true</enabled>
<!--opt,xs:string,支持删除拼接信号源-->
</DeleteJoint>
</JointSignal>

<SupportGetPlayingPlan>
<!--req,支持获取正在执行的预案-->
<enabled>true</enabled>
</SupportGetPlayingPlan>

<InputStreamV40>
<!--req,支持本地源V40扩展配置-->
<ColorMode opt="SelfDefine,Sharp,Ordinary,Soft"/>
<!--req,支持色彩模式-->
</InputStreamV40>

<InputStreamCut>
<!--req,支持信号源裁剪-->
<CutTop min="" max=""/>
<!--req,上方裁剪像素值范围-->
<CutBottom min="" max=""/>
<!--req,下方裁剪像素值范围-->
<CutLeft min="" max=""/>
<!--req,左边裁剪像素值范围-->
<CutRight min="" max=""/>
<!--req,右边裁剪像素值范围-->
</InputStreamCut>

<WindowCap>
<!--opt,窗口能力-->
<isSupportPhysicsResolutionWnd>
<!--opt,xs:boolean,"true",是否支持物理分辨率开窗-->
</isSupportPhysicsResolutionWnd>
<wndWidthAlignUint>
<!--dep,xs:integer,物理分辨率窗口宽度对齐单元-->
</wndWidthAlignUint>
<wndHeightAlignUint>
<!--dep,xs:integer,物理分辨率窗口高度对齐单元-->
</wndHeightAlignUint>
<isSupportDecodeOSD>
<!--opt,xs:boolean,"true",是否支持解码OSD配置-->
</isSupportDecodeOSD>
</WindowCap>

<ResetOutputDisplayPosition>
<!--req,支持电视墙输出通道解绑-->
<enabled>
<!--req,xs:boolean-->
</enabled>
</ResetOutputDisplayPosition>
<InputBoardCfgList>
<!--opt,输入板参数配置能力-->
<InputBoardCfg>
<slotNo>
<!--req,xs:integer, 槽位号-->
</slotNo>
<fullFrameEnable>
<!--req,xs:Boolean, 是否开启全帧率畅显-->
</fullFrameEnable>
</InputBoardCfg>
</InputBoardCfgList>

<isSupportLEDArea>
<!--opt,xs:boolean,"true",是否支持LED区域-->
</isSupportLEDArea>

<SubStreamAutoSwitchCap>
<!--opt,子码流自动切换-->
<subWndWidth min="" max="">
<!--req,xs:integer,子窗口宽度设定值-->
</subWndWidth>
<subWndHeight min="" max="">
<!--req,xs:integer,子窗口高度设定值-->
</subWndHeight>
</SubStreamAutoSwitchCap>

<streamFailedMode opt="noSignal,lastFrame"/>
<!--opt,xs:string,窗口取流失败显示模式: noSignal-显示“无网络视频信号”, lastFrame-显示最后一帧图像-->

<isSupportWallConference>
<!--opt,xs:boolean,"true",是否支持会议电视墙-->
</isSupportWallConference>

<isSupportBaseMapCycleSwitch>
<!--opt,xs:boolean,"true",预案是否支持底图切换(NET_DVR_SWITCH_BASEMAP)-->
</isSupportBaseMapCycleSwitch>

<isSupportEDIDResolution>
<!--opt,xs:boolean,"true",是否支持EDID分辨率-->
</isSupportEDIDResolution>

</WallAbility>


XML_4G_DataTrafficAlert

设备网络SDK开发使用手册

<DataTrafficAlert version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled>
<!-- req, xs:boolean -->
</enabled>
<threshold>
<!--req, xs:integer, 流量提醒阈值-->
</threshold>
<startDay>
<!--req, xs:integer, 流量统计开始日-->
</startDay>
</DataTrafficAlert>


XML_4G_DataTrafficStatistics

设备网络SDK开发使用手册

<DataTrafficStatistics version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<usageValue min="" max="">
<!--req, xs:float, 流量统计值，保留小数点后一位-->
</usageValue>
</DataTrafficStatistics>


XML_4G_HostDevice

设备网络SDK开发使用手册

<HostDevice version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled> <!-- req, xs:boolean --> </enabled>
<devCode opt="CK,VISTA120/128,VISTA20P,DS7400,DS7240,SP,728,HIK,CC408,SP4000"><!--req, xs:string, 拨码代码--></devCode>
<hostType opt="CK236,CK238,CK2316,CK236P,CK238CP, CK2316P,CK236P1,CK238CP2,PA-728,Vista120,Vista20p,CC408/CC880,CK236CP2CK2316CP2,DS7400,Visonic PMX+, PA-E55, AD2000, LT,EL3208,DSC-PC4020,DSC-PowerSeries,Hunter Pro,DS7240/7220">
<!--req, xs:string-->
</hostType>

</HostDevice>


XML_4G_SecurityCPCapabilities

设备网络SDK开发使用手册

<SecurityCPCapabilities version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<partitionNum max="32">
<!--req, xs:integer,子系统数目 -->
</partitionNum>
<zoneNum max="256">
<!--req, xs:integer,防区数目 -->
</zoneNum>
<sirenNum max="4">
<!--req, xs:integer,警号数目 -->
</sirenNum>
<uploadLineNum max="6">
<!--req, xs:integer,上传中心数目 -->
</uploadLineNum>
<telephoneLineNum max="2">
<!--req, xs:integer,电话中心数目 -->
</telephoneLineNum>
<wiredNetLineNum max="2">
<!--req, xs:integer,有限网络中心数目 -->
</wiredNetLineNum>
<wirelessNetLineNum max="2">
<!--req, xs:integer,无线网络中心数目 -->
</wirelessNetLineNum>
<keypadAddr max="32">
<!--req, xs:integer,键盘地址 -->
</keypadAddr>
<operateUser max="32">
<!--req, xs:integer,操作用户 -->
</operateUser>
<allowListPhoneNum max="6">
<!--opt, xs:integer,授权名单个数 -->
</allowListPhoneNum>
<remoteControllerNum max="">
<!--opt, xs:integer，遥控器用户个数 -->
</remoteControllerNum>
<relayNum max="">
<!--opt, xs:integer，触发器个数 -->
</relayNum>
<DataTrafficAlert>
<!--req, xs: boolean, 是否支持流量提醒配置，不支持不返回该节点 -->
</DataTrafficAlert>
<signalIntensity>
<!--opt, xs: boolean, 是否支持无线网络信号强度查询，不支持不返回该节点 -->
</signalIntensity>
<allowListPhoneCfg>
<!--opt, xs: boolean, 是否支持批量配置授权名单，不支持不返回该节点 -->
</allowListPhoneCfg>
<RelayListCfg>
<!--opt, xs: boolean, 是否支持批量触发器配置，不支持不返回该节点 -->
</RelayListCfg>
<RemoteCtrllerListCfg>
<!--opt, xs: boolean, 是否支持批量遥控器配置，不支持不返回该节点 -->
</RemoteCtrllerListCfg>
<WirelessSCPCap>
<zoneAssociatedDetectorCfg>
<!--req, xs: boolean, 是否支持防区关联探测器配置，不支持不返回该节点 -->
</zoneAssociatedDetectorCfg>
<DetectorCfg>
<!--req, xs: boolean, 是否支持探测器配置，不支持不返回该节点 -->
</DetectorCfg>
<faultAlarmCtrl>
<!--req, xs: boolean, 是否支持开启故障提示音控制，不支持不返回该节点 -->
</faultAlarmCtrl>
<functionKeyCfg>
<!--req, xs: boolean, 是否支持功能键配置，不支持不返回该节点 -->
</functionKeyCfg>
<cellPhoneNum max="6">
<!--opt, xs:integer,电话用户个数 -->
</cellPhoneNum>
<repeaterModuleNum max="">
<!--opt, xs:integer，无线中继器模块个数 -->
</repeaterModuleNum>
<outputModuleNum max="">
<!--opt, xs:integer，无线输出模块个数 -->
</outputModuleNum>
<doorTimeReminderCfg>
<!--req, xs: boolean, 是否支持探测器定时提醒配置，不支持不返回该节点 -->
</doorTimeReminderCfg>
<outputModuleCfg>
<!--req, xs: boolean, 是否支持无线输出模块参数配置，不支持不返回该节点 -->
</outputModuleCfg>
<repeaterModuleCfg>
<!--req, xs: boolean, 是否支持无线中继器参数配置，不支持不返回该节点 -->
</repeaterModuleCfg>
<externalDeviceSignal>
<!--req, xs: boolean, 是否支持获取外接设备信号强度，不支持不返回该节点 -->
</externalDeviceSignal>
<phoneParamCfg>
<!--req, xs: boolean, 是否支持获取电话号码配置，不支持不返回该节点 -->
</phoneParamCfg>
<zoneArmDisarm>
<!--opt, xs: boolean, 是否支持单防区布撤防，不支持不返回该节点 -->
</zoneArmDisarm >
<autoDetectorRegister>
<!--opt, xs: boolean, 是否支持自动注册探测器，不支持不返回该节点 -->
</autoDetectorRegister>
<soundVolumCfg>
<!--opt, xs: boolean, 是否支持扬声器音量调节，不支持不返回该节点 -->
</soundVolumCfg>
<wirelessSirenCfg>
<!--req, xs: boolean, 是否支持无线警号参数配置，不支持不返回该节点 -->
</wirelessSirenCfg>
</WirelessSCPCap><!-- opt,无线报警主机 -->
<PMCap>
<HostDeviceConfig>
<!--req, xs: boolean, 是否支持主机型号配置，不支持不返回该节点 -->
</HostDeviceConfig>
</PMCap><!-- opt 4G网络模块报警产品 -->
<EmergencyAlarmProductCap/>
<!-- opt,一键式报警产品 -->
</SecurityCPCapabilities>


XML_ALARM_ABILITY_DetectorCfg

设备网络SDK开发使用手册

<DetectorCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<DetectorParamList>
<DetectorParam>
<enabled>
<!--req, xs: boolean, 是否启用防区关联探测器 -->
</enabled>
<detectorSerialNo min="" max="" opt="0,1,2,3,4,5,6,7,8,9,Q,R,S,T,U,V,W,X,Y,Z">
<!--opt, xs:string, 防区关联的探测器序列号 -->
</detectorSerialNo>
<detectorWorkMode opt="normal,sleep,pacing">
<!--req, xs:string, 探测器工作模式，正常模式，睡眠模式，步测模式 -->
</detectorWorkMode>
<detectorHeartBeatCycle opt="5min,10min,20min,30min,60min,2hour,4hour,6hour,0-none">
<!--req, xs:string, 探测器心跳周期（5分钟，10分钟，20分钟，30分钟，60分钟，2小时，4小时，6小时，无心跳时间) -->
</detectorHeartBeatCycle>
</DetectorParam>
</DetectorParamList>
</DetectorCfg>


XML_ALARM_DetectorCfg

设备网络SDK开发使用手册

<DetectorCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<ZoneCondList/>
<!--opt，获取的时候,这个xml节点作为传入参数，设备可以不用返回这部分-->
<!--最多64个ZoneCond-->
<DetectorParamList>
<!--最多64个-->
<DetectorParam>
<id>
<!--req, xs:string, 防区号-->
</id>
<enabled>
<!--opt, xs: boolean, 是否启用防区关联探测器 -->
</enabled>
<detectorSerialNo>
<!--opt, xs:string, 防区关联的探测器序列号 -->
</detectorSerialNo>
<detectorWorkMode>
<!--req, xs:string, 探测器工作模式，正常模式，睡眠模式，步测模式 -->
</detectorWorkMode>
<detectorHeartBeatCycle>
<!--req, xs:string, 探测器心跳周期（5分钟，10分钟，20分钟，30分钟，60分钟，2小时，4小时，6小时，无心跳时间) -->
</detectorHeartBeatCycle>
</DetectorParam>
</DetectorParamList>
</DetectorCfg>


XML_ALARM_FaultAlarmCtrl

设备网络SDK开发使用手册

<FaultAlarmCtrl version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled>
<!--req, xs: boolean, 是否启用设备故障提示音 -->
</enabled>
</FaultAlarmCtrl>


XML_ALARM_FunctionKeyCfg

设备网络SDK开发使用手册

<FunctionKeyCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled>
<!--req, xs: boolean, 是否启用功能键 -->
</enabled>
</FunctionKeyCfg>


XML_ALARM_ZoneAssociatedDetectorCfg

设备网络SDK开发使用手册

<ZoneAssociatedDetectorCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<ZoneCondList/>
<!--opt，获取的时候,这个xml节点作为传入参数，设备可以不用返回这部分-->
<!--最多64个ZoneCond-->
<DetectorCfgList>
<!--最多64个-->
<DetectorCfg>
<id>
<!--req, xs:string, 防区号-->
</id>
<enabled>
<!--opt, xs: boolean, 是否启用防区关联探测器 -->
</enabled>
<detectorSerialNo>
<!--req, xs:string, 防区关联的探测器序列号 -->
</detectorSerialNo>
</DetectorCfg>
</DetectorCfgList>
</ZoneAssociatedDetectorCfg>


XML_AlarmListCond

设备网络SDK开发使用手册

<AlarmListCond>
<inquireType>
<!--req,xs:integer,0-根据设备查询，1-根据分组查询-->
</inquireType>
<DevChanInfoList>
<!--dep,inquireType,设备通道信息，当inquireType为0时有效-->
<DevChanInfo>
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string,IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string,IPv6地址 -->
</ipv6Address>
<port>
<!--req,xs:integer,服务端口-->
</port>
</Address>
<chanNo>1,2,3</chanNo>
<!--req 查询的通道列表-->
</DevChanInfo>
</DevChanInfoList>
<GroupIDList>
<groupID>
<!--dep,xs:integer, 分组ID，该字段依赖inquireType，当为1时有效-->
</groupID>
</GroupIDList>
<startTime>
<!-- req, xs:time, ISO8601 time -->
</startTime>
<endTime>
<!-- req, xs:time, ISO8601 time -->
</endTime>
<minValue>
<!--req xs:integer,最小值-->
</minValue>
<maxValue>
<!--req xs:integer,最大值-->
</maxValue>
<alarmType>
<!--req xs:integer,报警类型：0-非授权名单报警，1-授权名单报警-->
</alarmType>
<resultType>
<!--req xs:integer,排序方式：0-按相似度排序，1-按时间排序)-->
</resultType>
<startListNo>
<!--req xs:integer,起始列表编号，第一次从0开始-->
</startListNo>
<maxRetListNum>10</maxRetListNum>
<!--req xs:integer,每次返回列表个数-->
<searchNum>
<!--req xs:integer,要查询的条数-->
</searchNum>
</AlarmListCond>


XML_AlarmListRet

设备网络SDK开发使用手册

<AlarmListRet>
<totalNum>
<!--req, xs:integer,总记录数-->
</totalNum>
<AlarmLog>
<id>
<!--req,xs:integer,报警id -->
</id>
<SnapRecord>
<!--opt,抓拍记录-->
<id>
<!--req,xs:integer,记录ID -->
</id>
<snapTime>
<!--req, xs:time,ISO8601 抓拍时间 -->
</snapTime>
<similarity>
<!--req, xs:integer,相似度-->
</similarity>
<picData>
<!--opt,base64加密处理，图片数据-->
</picData>
<Rect>
<!--req,人脸位置信息,归一化值, 相对于背景图的分辨率-->
<x>
<!--req, xs:float, x, 边界框左上角点的X轴坐标-->
</x>
<y>
<!--req, xs:float, y, 边界框左上角点的Y轴坐标-->
</y>
<width>
<!--req, xs:float, x, 区域宽度-->
</width>
<height>
<!--req, xs:float, x, 区域边高度-->
</height>
</Rect>
<HumanAttribute/>
<StorageInfo>
<!--req,存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</StorageInfo>
<SnapDevInfo>
<!--req,抓拍设备信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</SnapDevInfo>
</SnapRecord>
<FaceRecordList>
<!--opt,人脸记录信息-->
<FaceRecord>
<id>
<!--req, xs:integer,记录ID -->
</id>
<faceDBId>
<!--req, xs:integer,人脸库ID-->
</faceDBId>
<similarity>
<!--req, xs:integer,相似度-->
</similarity>
<HumanAttribute>
<!--req, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean,是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<group>
<!--req xs:integer,分组号-->
</group>
<type>
<!--req, xs:integer,类型：0-全部，1-授权名单，2-非授权名单 -->
</type>
<StorageInfo>
<!--req,存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</StorageInfo>
<picData>
<!--opt,base64处理,人脸图片数据-->
</picData>
<note1>
<!--req,xs:string, 备注1-->
</note1>
<note2>
<!--req,xs:string, 备注2-->
</note2>
</FaceRecord>
</FaceRecordList>
</AlarmLog>
</AlarmListRet>


XML_AlarmProcess

设备网络SDK开发使用手册

<AlarmProcess>
<uploadPicMode>
<!--req, xs:string,"uploadPicData,uploadURL", uploadPicData- 上传图片数据, uploadURL- 上传URL -->
</uploadPicMode>
<repeatAlarmEnabled>
<!--req, xs:boolean,是否启用重复报警-->
</repeatAlarmEnabled>
<byThreshold min="" max="">
<!--req, xs:integer,报警触发阈值-->
</byThreshold>
<TimeBlockList size="">
<!--req, 当启用重复报警时有效-->
<TimeBlock>
<dayOfWeek>
<!--opt, xs:integer,ISO8601 weekday number, 1= Monday, … -->
</dayOfWeek>
<TimeRange>
<!--req, 时间范围 -->
<beginTime>
<!--req, xs:time, ISO8601 time -->
</beginTime>
<endTime>
<!--req, xs:time, ISO8601 time -->
</endTime>
</TimeRange>
<repeatTimes>
<!--req, xs:integer,重复报警次数-->
</repeatTimes>
</TimeBlock>
</TimeBlockList>
</AlarmProcess>


XML_AlarmRecord

设备网络SDK开发使用手册

<AlarmRecord>
<snapFaceID>
<!--req, xs:integer, 抓拍人脸ID -->
</snapFaceID>
<alarmType>
<!--ro, req, xs:integer, 报警类型:0-全部，1-授权名单，2-非授权名单-->
</alarmType>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 存储服务端口-->
</port>
</Address>
</StorageInfo>
</AlarmRecord>


XML_AreaMonitor

设备网络SDK开发使用手册

<AreaMonitor version="2.0">
<id>
<!--req, 区域ID，xs:string -->
</id>
<monitorNum>
<!--req, xs:integer,监控点总个数 -->
</monitorNum>
<MonitorList size="10">
<Monitor>
<id>
<!--ro, req, xs:integer,监控点编号（获取有效） -->
</id>
<deviceID>
<!--req, 设备ID，xs:integer-->
</deviceID>
<DeviceIPAddress>
<!--req, 前端设备IP -->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</DeviceIPAddress>
<StoreServerIPAddress>
<!--req, 存储服务器IP -->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</StoreServerIPAddress>
<userName>
<!--req, 用户名，xs:string-->
</userName>
<userPassword>
<!--req, 密码，xs:string, base64加密 -->
</userPassword>
<deviceType>
<!--req, 设备类型，xs:string, "unknown,faceCaptureDevice,captureService" -->
</deviceType>
<RelatedGroupList size="32">
<!--opt, 关联组 -->
<RelatedGroup>
<groupID>
<!--req, 分组ID，xs:integer -->
</groupID>
<isRelated>
<!--req, 是否关联，xs:boolean -->
</isRelated>
<groupType>
<!--req, 分组类型：无、非授权名单分组、授权名单分组，xs:string, "none,blockList,allowList" -->
</groupType>
</RelatedGroup>
</RelatedGroupList>
</Monitor>
</MonitorList>
</AreaMonitor>


XML_AreaMonitorDelCond

设备网络SDK开发使用手册

<AreaMonitorDelCond version="2.0">
<deleteType>
<!--req, xs:string, "delAll,delSingle", delAll-删除指定区域的所有监控点，delSingle-删除指定区域的指定监控点 -->
</deleteType>
<areaID>
<!--ro, req, xs:integer, 区域编号 -->
</areaID>
<monitorID>
<!--dep, xs:integer, 监控点编号（当deleteType为delSingle时有效） -->
</monitorID>
</AreaMonitorDelCond>


XML_CAB_AccessControl

设备网络SDK开发使用手册

<AccessControl version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<isSupportWiegandCfg>
<!-- opt, xs:boolean，韦根配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportWiegandCfg>
<isSupportModuleStatus>
<!-- opt, xs:boolean，获取门控安全模块状态（支持时：返回true，不支持时：不返回该字段）-->
</isSupportModuleStatus>
<isSupportSNAPConfig>
<!-- opt, xs:boolean，获取触发抓拍参数（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSNAPConfig>
<LocalController>
<!--opt-->
<isSupportLocalControllerManage>
<!-- opt, xs:boolean，就地控制器管理（支持时：返回true，不支持时：不返回该字段）-->
</isSupportLocalControllerManage>
<isSupportLocalControllerControl>
<!-- opt, xs:boolean，就地控制器控制（支持时：返回true，不支持时：不返回该字段）-->
</isSupportLocalControllerControl>
</LocalController>
<isSupportUSBManage>
<!-- opt, xs:boolean，门禁设备USB 管理（支持时：返回true，不支持时：不返回该字段）-->
</isSupportUSBManage>
<isSupportLadderControlRelay>
<!-- opt, xs:boolean，梯控继电器配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportLadderControlRelay>
<isSupportIdentityTerminal>
<!-- opt, xs:boolean，智能身份识别终端参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportIdentityTerminal>
<isSupportDepartmentParam>
<!-- opt, xs:boolean，部门参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDepartmentParam>
<isSupportSchedulePlan>
<!-- opt, xs:boolean，排班计划配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSchedulePlan>
<isSupportAttendanceRule>
<!-- opt, xs:boolean，考勤规则配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAttendanceRule>
<isSupportOrdinaryClass>
<!-- opt, xs:boolean，普通班参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportOrdinaryClass>
<isSupportWorkingClass>
<!-- opt, xs:boolean，工时班参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportWorkingClass>
<isSupportAttendanceHolidayGroup>
<!-- opt, xs:boolean，考勤假日组配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAttendanceHolidayGroup>
<isSupportAttendanceHolidayPlan>
<!-- opt, xs:boolean，考勤机日计划配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAttendanceHolidayPlan>
<isSupportLadderControlRelay>
<!-- opt, xs:boolean，梯控继电器配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportLadderControlRelay>
<isSupportWiegandRuleCfg>
<!-- opt, xs:boolean，（自定义输入）韦根规则配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportWiegandRuleCfg>
<isSupportM1CardEncryptCfg>
<!-- opt, xs:boolean，M1 卡加密验证功能配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportM1CardEncryptCfg>
<isSupportDeployInfo>
<!-- opt, xs:boolean，布防信息获取-->
</isSupportDeployInfo>
<isSupportSubmarineBack>
<!-- opt, xs:boolean，反潜回服务器配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSubmarineBack>
<isSupportSubmarineBackHostInfo>
<!-- opt, xs:boolean，加入反潜回主机配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSubmarineBackHostInfo>
<isSupportStartReaderInfo>
<!-- opt, xs:boolean，起始读卡器配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportStartReaderInfo>
<isSupportSubmarineBackReader>
<!-- opt, xs:boolean，反潜回读卡器配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSubmarineBackReader>
<isSupportServerDevice>
<!-- opt, xs:boolean，服务器配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportServerDevice>
<isSupportReaderAcrossHost>
<!-- opt, xs:boolean，读卡器跨主机反潜回配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportReaderAcrossHost>
<isSupportClearCardRecord>
<!-- opt, xs:boolean，服务器跨主机反潜回刷卡记录清除（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearCardRecord>
<isSupportSubmarineBackMode>
<!-- opt, xs:boolean，反潜回模式配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSubmarineBackMode>
<isSupportClearSubmarineBack>
<!-- opt, xs:boolean，跨主机反潜回信息清除（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearSubmarineBack>
<isSupportRemoteControlDoor>
<!-- opt, xs:boolean，远程开门、远程控梯、远程开锁（支持时：返回true，不支持时：不返回该字段）-->
</isSupportRemoteControlDoor>
<isSupportUserInfo>
<!-- opt, xs:boolean，门禁以人为中心人员管理（支持时：返回true，不支持时：不返回该字段）-->
</isSupportUserInfo>
<EmployeeNoInfo>
<!--dep,工号（人员ID）信息：当isSupportUserInfo 返回true 时，该字段才有效-->
<employeeNo min="" max="">
<!--opt,工号（人员ID）-->
</employeeNo>
<characterType opt="any,number">
<!--opt,工号（人员ID）字符类型：any-任意字符，number-数字（0-9）（默认为any，如不返回该字段，则代表可配任意字符；设备返回该能力时，opt 选项只能返回any 或number，不能两者都返回）-->
</characterType>
<isSupportCompress>
<!-- opt, xs:boolean，是否支持工号压缩存储（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCompress>
</EmployeeNoInfo>
<isSupportCardInfo>
<!-- opt, xs:boolean，门禁以人为中心卡管理（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCardInfo>
<isSupportUserInfoDetailDelete>true<!-- opt, xs:boolean，人员信息及权限删除（支持时：返回true，不支持时：不返回该字段）-->
</isSupportUserInfoDetailDelete>
<isSupportAuthCodeInfo>true<!-- opt, xs:boolean，认证码管理（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAuthCodeInfo>
<isSupportFingerPrintCfg>true<!-- opt, xs:boolean，指纹参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportFingerPrintCfg>
<isSupportFingerPrintDelete>true<!-- opt, xs:boolean，指纹删除（支持时：返回true，不支持时：不返回该字段）-->
</isSupportFingerPrintDelete>
<isSupportCaptureFingerPrint>true<!-- opt, xs:boolean，采集指纹信息（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCaptureFingerPrint>
<isSupportDoorStatusWeekPlanCfg>true<!-- opt, xs:boolean，门状态周计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDoorStatusWeekPlanCfg>
<isSupportVerifyWeekPlanCfg>true<!-- opt, xs:boolean，读卡器验证方式周计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportVerifyWeekPlanCfg>
<isSupportCardRightWeekPlanCfg>true<!-- opt, xs:boolean，人员权限周计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCardRightWeekPlanCfg>
<isSupportDoorStatusHolidayPlanCfg>true<!-- opt, xs:boolean，门状态假日计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDoorStatusHolidayPlanCfg>
<isSupportVerifyHolidayPlanCfg>true<!-- opt, xs:boolean，读卡器验证方式假日计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportVerifyHolidayPlanCfg>
<isSupportCardRightHolidayPlanCfg>true<!-- opt, xs:boolean，人员权限假日计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCardRightHolidayPlanCfg>
<isSupportDoorStatusHolidayGroupCfg>true<!-- opt, xs:boolean，门状态假日组参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDoorStatusHolidayGroupCfg>
<isSupportVerifyHolidayGroupCfg>true<!-- opt, xs:boolean，读卡器验证方式假日组参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportVerifyHolidayGroupCfg>
<isSupportUserRightHolidayGroupCfg>
true<!-- opt, xs:boolean，人员权限假日组参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportUserRightHolidayGroupCfg>
<isSupportDoorStatusPlanTemplate>true<!-- opt, xs:boolean，门状态计划模板参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDoorStatusPlanTemplate>
<isSupportVerifyPlanTemplate>true<!-- opt, xs:boolean，读卡器验证方式计划模板参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportVerifyPlanTemplate>
<isSupportUserRightPlanTemplate>true<!-- opt, xs:boolean，人员权限计划模板参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportUserRightPlanTemplate>
<isSupportDoorStatusPlan>true<!-- opt, xs:boolean，门状态计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDoorStatusPlan>
<isSupportCardReaderPlan>true<!-- opt, xs:boolean，读卡器验证计划参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCardReaderPlan>
<isSupportClearPlansCfg>
true<!-- opt, xs:boolean，清空门禁计划参数（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearPlansCfg>
<isSupportRemoteControlBuzzer>true<!-- opt, xs:boolean，远程控制读卡器蜂鸣器（支持时：返回true，不支持时：不返回该字段）-->
</isSupportRemoteControlBuzzer>
<isSupportEventCardLinkageCfg>true<!-- opt, xs:boolean，事件及卡号联动参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportEventCardLinkageCfg>
<isSupportClearEventCardLinkageCfg>true<!-- opt, xs:boolean，清空事件及卡号联动参数（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearEventCardLinkageCfg>
<isSupportAcsEvent>true<!-- opt, xs:boolean，门禁设备事件（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAcsEvent>
<isSupportAcsEventTotalNum>true<!-- opt, xs:boolean，门禁设备事件总条数（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAcsEventTotalNum>
<isSupportDeployInfo>true<!-- opt, xs:boolean，布防信息（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDeployInfo>
<isSupportEventOptimizationCfg>true<!-- opt, xs:boolean，事件优化配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportEventOptimizationCfg>
<isSupportAcsWorkStatus>true<!-- opt, xs:boolean，门禁主机工作状态（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAcsWorkStatus>
<isSupportDoorCfg>true<!-- opt, xs:boolean，门参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportDoorCfg>
<isSupportCardReaderCfg>true<!-- opt, xs:boolean，读卡器参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCardReaderCfg>
<isSupportAcsCfg>true<!-- opt, xs:boolean，门禁主机参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAcsCfg>
<isSupportGroupCfg>true<!-- opt, xs:boolean，群组参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportGroupCfg>
<isSupportClearGroupCfg>true<!-- opt, xs:boolean，清空群组参数（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearGroupCfg>
<isSupportMultiCardCfg>true<!-- opt, xs:boolean，多重认证模式参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportMultiCardCfg>
<isSupportMultiDoorInterLockCfg>true<!-- opt, xs:boolean，多门互锁参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportMultiDoorInterLockCfg>
<isSupportAntiSneakCfg>true<!-- opt, xs:boolean，反潜回参数配置（设备内）（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAntiSneakCfg>
<isSupportCardReaderAntiSneakCfg>true<!-- opt, xs:boolean，读卡器反潜回参数配置（设备内）（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCardReaderAntiSneakCfg>
<isSupportClearAntiSneakCfg>true<!-- opt, xs:boolean，清空反潜回参数（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearAntiSneakCfg>
<isSupportClearAntiSneak>true<!-- opt, xs:boolean，设备内反潜回记录清除（支持时：返回true，不支持时：不返回该字段）-->
</isSupportClearAntiSneak>
<isSupportSmsRelativeParam>true<!-- opt, xs:boolean，短信功能参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportSmsRelativeParam>
<isSupportPhoneDoorRightCfg>true<!-- opt, xs:boolean，手机号关联门权限参数配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportPhoneDoorRightCfg>
<isSupportOSDPStatus>true<!-- opt, xs:boolean，OSDP 读卡器状态查询（支持时：返回true，不支持时：不返回该字段）-->
</isSupportOSDPStatus>
<isSupportOSDPModify>true<!-- opt, xs:boolean，OSDP 读卡器ID 修改（支持时：返回true，不支持时：不返回该字段）-->
</isSupportOSDPModify>
<isSupportLogModeCfg>true<!-- opt, xs:boolean，日志模式配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportLogModeCfg>
<isSupportRFCardCfg>true<!-- opt, xs:boolean，射频卡识别启用配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportRFCardCfg>
<FactoryReset>
<isSupportFactoryReset>
<!-- opt, xs:boolean ， 是否支持按条件恢复默认参数-->
</isSupportFactoryReset>
<mode opt="full,basic, part">
<!-- opt, xs:string，恢复默认参数条件-->
</mode>
</FactoryReset>
<isSupportAttendanceStatusModeCfg>true<!-- opt, xs:boolean，考勤状态模式配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAttendanceStatusModeCfg>
<isSupportAttendanceStatusRuleCfg>true<!-- opt, xs:boolean，考勤状态规则配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportAttendanceStatusRuleCfg>
<isSupportCaptureFace>true<!-- opt, xs:boolean，采集人脸图片（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCaptureFace>
<isSupportCaptureInfraredFace>true<!-- opt, xs:boolean，采集红外人脸图片（支持时：返回true，不支持时：不返回该字段）-->
</isSupportCaptureInfraredFace>
<isSupportFaceRecognizeMode>
true<!-- opt, xs:boolean，人脸抓拍模式配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportFaceRecognizeMode>
<isSupportTTSText>true<!-- opt, xs:boolean，语音播报文本配置（支持时：返回true，不支持时：不返回该字段）-->
</isSupportTTSText>
<isSupportIDBlockListCfg>true<!-- opt, xs:boolean，身份证非授权名单下发（支持时：返回true，不支持时：不返回该字段）--></isSupportIDBlockListCfg>

<isSupportCaptureCardInfo>
<!--opt,xs:boolean,采集卡信息（支持时：返回true,不支持时：不返回该字段）-->
</isSupportCaptureCardInfo>
<isSupportCaptureIDInfo>
<!--opt,xs:boolean,采集身份证信息（支持时：返回true,不支持时：不返回该字段）-->
</isSupportCaptureIDInfo>
<isSupportCaptureRule>
<!--opt,xs:boolean, 在线采集规则配置（支持时：返回true,不支持时：不返回该字段）-->
</isSupportCaptureRule>
<isSupportCapturePresetParam>
<!--opt,xs:boolean, 采集预置参数配置（支持时：返回true,不支持时：不返回该字段）-->
</isSupportCapturePresetParam>
<isSupportOfflineCapture>
<!--opt,xs:boolean,是否支持离线采集功能（支持时：返回true,不支持时：不返回该字段）-->
</isSupportOfflineCapture>
<isSupportCardOperations>
<!--opt,xs:boolean,是否支持卡操作功能（支持时：返回true,不支持时：不返回该字段）-->
</isSupportCardOperations>
</AccessControl>


XML_CAB_ChannelControllerCfg

设备网络SDK开发使用手册

<ChannelControllerCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<gatePassingMode>
<!--req, xs: string,"ByChannelController,ByRightController"，闸机通行模式：ByChannelController-以通道控制器本地拨码为准，ByRightController-以权限控制器配置为准-->
</gatePassingMode>
<freePassAuthEnabled>
<!--req, xs: string，"enable,disable"，自由通行是否需要认证：enable-需要，disable-不需要-->
</freePassAuthEnabled>
<openAndCloseSpeed>
<!--req, xs: integer，开关门速度（1-10，代表10%-100%的十档）-->
</openAndCloseSpeed>
<alarmSoundTime>
<!--req, xs: integer，报警提示音时间（单位：秒，0代表一直输出），min="0" max="599"-->
</alarmSoundTime>
<tempUnit>
<!--req, xs: string，"Centigrade,Fahrenheit"，温度显示单位：Centigrade-摄氏度，Fahrenheit-华氏度-->
</tempUnit>
<alarmAreaNoAuth>
<!--opt, xs: boolean，报警区域是否禁止开门-->
</alarmAreaNoAuth>
<gateWingMaterial>
<!--opt, xs: string,"Acrylic,StellPipe"，门翼材质：Acrylic-亚克力，StellPipe-钢管-->
</gateWingMaterial>
<channelLength>
<!--opt, xs: integer，通道长度（单位：mm）-->
</channelLength>
</ChannelControllerCfg>


XML_CAB_ChannelEventCap

设备网络SDK开发使用手册

<ChannelEventCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<eventType opt="motionDetection,tamperDetection,videoLoss,ROI,faceDetection,intelliTrace,fieldDetection,
defocusDetection,audioDetection,sceneChangeDetection,lineDetection,regionEntrance,regionExiting,
loitering,group,rapidMove,parking,unattendedBaggage,attendedBaggage,peopleDetection,
storageDetection,behavior,faceSnap,vehicleDetection,thermometryDetection,fireDetection,
shipsDetection,PIR,humanRecognition,faceContrast,framesPeopleCounting,hide,audioLoss,
cameraAngleAnormaly,violentMotion,trial,humanEnter,operateOverTime,stickUp,installScanner,faceDetect,PictureCaptureComparision" />
<!--req,xs:string,"设备通道支持的专业事件能力:motionDetection-移动侦测,tamperDetection-遮挡报警,videoLoss-视频丢失,
ROI-感兴趣区域,faceDetection-人脸侦测,fieldDetection-区域入侵侦测,defocusDetection-虚焦侦测,
audioDetection-音频异常侦测,sceneChangeDetection-场景变更侦测,lineDetection-越界侦测,regionEntrance-进入区域侦测,
regionExiting-离开区域侦测,loitering-徘徊侦测,group-人员聚集侦测,rapidMove-快速移动侦测,parking-停车侦测,
unattendedBaggage-物品遗留侦测,attendedBaggage-物品拿取侦测,peopleDetection-人员侦测,storageDetection-存储健康检测,
behavior-异常行为识别,faceSnap-人脸抓拍,vehicleDetection-车辆检测,thermometryDetection-测温检测,fireDetection-火点侦测,
shipsDetection-船只检测,PIR-PIR报警,humanRecognition-人体识别,faceContrast-人脸比对,framesPeopleCounting-单帧人员统计,
hide-遮盖检测,audioLoss-音频丢失,cameraAngleAnormaly-相机画面异常,violentMotion-剧烈运动,trial-尾随,humanEnter-人员进入,
operateOverTime-操作超时,stickUp-异物粘贴,installScanner-安装读卡器,faceDetect-ATM人脸检测,PictureCaptureComparision-图片与监控点图片比对"-->
<shieldEventType opt="behavior,faceSnap,humanRecognition" />
<!--req,xs:string,"设备通道不同事件支持的屏蔽区域能力: behavior-异常行为识别,faceSnap-人脸抓拍,humanRecognition-人体目标识别"-->
</ChannelEventCap>


XML_CAB_DeployInfo

设备网络SDK开发使用手册

<DeployInfo version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<DeployList size="6">
<Content>
<deployNo>
<!--req, xs: integer,布防编号-->
</deployNo>
<deployType>
<!--req, xs: integer,布防类型：0-客户端布防,1-实时布防,2-ISAPI布防 opt="0,1，2"-->
</deployType>
<ipAddr>
<!--req, xs: string,IP地址-->
</ipAddr>
</Content>
</DeployList>
</DeployInfo>


XML_CAB_DeviceCap

设备网络SDK开发使用手册

<DeviceCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<SysCap>
<!--opt, 系统能力集-->
<isSupportDst>
<!--opt, xs:boolean -->
</isSupportDst>
<NetworkCap/>
<!--opt, 网络能力集-->
<IOCap/>
<!--opt, IO能力集-->
<SerialCap/>
<!--opt, 串口能力集-->
<VideoCap/>
<!--opt, 视频能力集-->
<AudioCap/>
<!--opt, 音频能力集-->
<isSupportExternalDevice>
<!--opt,xs:boolean, 是否支持外接设备-->
</isSupportExternalDevice>
<isSupportSoundCfg>
<!--opt, xs:boolean, 是否支持音频参数配置-->
</isSupportSoundCfg>
<isSupportSubscribeEvent>
<!--opt, xs:boolean, 报警订阅能力-->
</isSupportSubscribeEvent>
<isSupportSimpleDevStatus>
<!--opt, xs:boolean, 是否支持/ISAPI/System/workingstatus?format=json等系列接口-->
</isSupportSimpleDevStatus>
<isSupportFlexible>
<!--opt, xs:boolean, 是否支持灵活搭配配置(ISAPI/System/Video/inputs/channels?format=json)-->
</isSupportFlexible>
<isSupportTimeCap>
<!--opt, xs:boolean, 是否支持/ISAPI/System/time/capabilities-->
</isSupportTimeCap>
</SysCap>
<voicetalkNums >
<!--opt, xs:integer, 语音对讲通道数-->
</voicetalkNums >
<isSupportSnapshot>
<!--opt, xs:boolean, 是否支持抓拍-->
</isSupportSnapshot>
<SecurityCap/>
<!--opt, 安全参数能力集-->
<EventCap/>
<!--opt, 事件能力集-->
<ImageCap/>
<!--opt, 图像能力集-->
<RacmCap/>
<!--opt, Racm能力集-->
<SmartCap/>
<!--opt, Smart智能能力集-->
<WLAlarmCap/>
<!--opt, 无线报警能力集-->
<SecurityCPCapabilities/>
<!--opt-->
<isSupportGIS>
<!--opt, xs:boolean, 是否GIS能力-->
</isSupportGIS>
<isSupportCompass>
<!--opt, xs:boolean, 是否支持罗盘能力-->
</isSupportCompass>
<isSupportRoadInfoOverlays>
<!--opt, xs:boolean, 是否支持道路信息叠加-->
</isSupportRoadInfoOverlays>
<isSupportFaceCaptureStatistics>
<!--opt, xs:boolean, 是否支持人脸抓拍人员统计信息-->
</isSupportFaceCaptureStatistics>
<isSupportElectronicsEnlarge>
<!--opt, xs:boolean, 是否支持电子放大-->
<isSupportSecurityCP>
<!-- opt, xs:boolean -->
</isSupportSecurityCP>
<isSupportClientProxyWEB>
<!--opt, xs:boolean-->
</isSupportClientProxyWEB>

</isSupportElectronicsEnlarge>
<isSupportSafetyCabin>
<!--opt, xs:boolean, 防护舱能力-->
</isSupportSafetyCabin>
<isSupportJusticeDev>
<!--opt, xs:boolean, 司法设备能力-->
</isSupportJusticeDev>
<isSupportGetmutexFuncErrMsg>
<!--opt, xs:boolean, 是否支持获取功能互斥信息-->
</isSupportGetmutexFuncErrMsg>
<isSupportEagleEye>
<!--opt, xs:boolean, 是否支持鹰眼（球形鹰眼和碗形鹰眼等）-->
</isSupportEagleEye>
<isSupportFirmwareVersionInfo>
<!--opt, xs:boolean, 是否支持显示主控版本信息-->
</isSupportFirmwareVersionInfo>
<isSupportPEA>
<!--opt, xs:boolean, 一键式报警主机能力-->
</isSupportPEA>
<isSupportIntelligentStructureAnalysis>
<!--opt, xs:boolean, 是否支持智能结构化分析-->
</isSupportIntelligentStructureAnalysis>
<isSupportIntelligentAnalysisEngines>
<!--opt, xs:boolean, 是否支持智能分析引擎配置-->
</isSupportIntelligentAnalysisEngines>
<isSupportPictureCaptureComparision>
<!-- opt, xs:boolen, 是否支持图片与监控点图片1V1比对-->
</isSupportPictureCaptureComparision>
<isSupportPicInfoOverlap>
<!--opt, xs:boolean, 是否支持图片字符叠加-->
</isSupportPicInfoOverlap>
<isSupportDiscoveryMode>
<!--opt,xs:boolen, 是否支持被SADP发现-->
</isSupportDiscoveryMode>
<isSupportTokenAuthenticate>
<!--opt, xs:boolean, 是否支持token认证-->
</isSupportTokenAuthenticate>
<isSupportChannelEventCap>
<!--opt, xs:boolean, 是否支持按通道获取事件能力-->
</isSupportChannelEventCap>
<isSupportSignInstrument>
<!--opt, xs:boolean 体征仪能力-->
</isSupportSignInstrument>
<isSupportCluster>
<!--opt, xs:boolean，是否支持集群-->
</isSupportCluster>
<UHFRFIDReader>
<!--opt, RFID读写器支持能力-->
<isSupportBasicInformation>
<!--opt, xs:boolean, 读写器基本参数支持能力-->
</isSupportBasicInformation>
<isSupportHardDiskStorageTest>
<!--opt, xs:boolean, 读写器盘存测试支持能力备注-->
</isSupportHardDiskStorageTest>
</UHFRFIDReader>
<isSupportChannelEventListCap>
<!--opt, xs:boolen, 表示是否支持获取设备所有通道的事件能力-->
</isSupportChannelEventListCap>
<VCAResourceChannelsCap>
<!--opt, 表示支持智能资源按通道独立切换-->
<ChannelsList>
<channelsID>
<!--req,xs:integer, 设备支持的通道号"-->
</channelsID>
</ChannelsList>
</VCAResourceChannelsCap>
<isSupportMixedTargetDetection>
<!--opt, xs:boolean, 是否支持混合目标检测事件-->
</isSupportMixedTargetDetection>
<AIDEventSupport opt="abandonedObject, pedestrian,congestion,roadBlock,construction,trafficAccident,fogDetection">
<!--opt, xs:string, 支持的AID事件类型：abandonedObject-抛洒物,pedestrian-行人检测,congestion-拥堵,
roadBlock-路障,construction-施工,trafficAccident-交通事故检测,fogDetection-浓雾检测-->
</AIDEventSupport>
<TFSEventSupport opt="illegalParking ,wrongDirection,crossLane,laneChange,vehicleExist,turnRound, parallelParking">
<!--opt, xs:string,支持的TFS违章取证事件类型: illegalParking-违停,wrongDirection-逆行,crossLane-压线,
laneChange-变道,vehicleExist-机占非,turnRound-掉头,parallelParking-侧方位停车-->
</TFSEventSupport>
<isVehicleStatisticsSupport>
<!--opt, xs:boolen,是否支持交通数据采集配置(TPS交通参数统计)-->
</isVehicleStatisticsSupport>
<isSupportCameraAccessConfiguration>
<!--opt, xs:boolen 是否支持相机接入参数配置-->
</isSupportCameraAccessConfiguration>
<IOTCap>
<!--opt, IOT能力-->
<supportChannelNum>
<!--req, xs:integer, 支持的IOT设备通道数目 -->?
</supportChannelNum>
</IOTCap>
<isSupportLCDScreen>
<!--opt, xs:boolean, 是否支持LCD显示屏-->
</isSupportLCDScreen>
<isSupportNetScreen>
<!--opt, xs:boolean, 是否支持网络显示器(诺瓦屏)-->
</isSupportNetScreen>
</DeviceCap>


XML_CAB_FaceContrastCap

设备网络SDK开发使用手册

<FaceContrastCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 人脸比对配置能力集-->
<enable opt="true,false">
<!--opt,xs:boolean, "人脸比对功能使能"-->
</enable>
<faceContrastType opt="faceContrast, allowListFaceContrast">
<!--req,xs: string,"人脸比对类型", faceContrast- 人脸比对, allowListFaceContrast-授权名单人脸比对(陌生人模式)-->
</faceContrastType>
<contrastFailureThresholdValue>
<!--req,xs: string,"人脸比对类型", faceContrast- 人脸比对, allowListFaceContrast-授权名单人脸比对(陌生人模式)-->
</contrastFailureThresholdValue>
<contrastFailureLevel>
<!--req,xs: string,"人脸比对类型", faceContrast- 人脸比对, allowListFaceContrast-授权名单人脸比对(陌生人模式)-->
</contrastFailureLevel>
<thresholdValue min="" max="">
<!--opt,xs:integer, "检测阈值，阈值越大检测准确率越高, 取值范围:[0,100]"-->
</thresholdValue>
<SupportFDLibList>
<!--opt,xs:boolean, "通道关联人脸库列表, 支持返回true, 不支持不返回该节点"-->
</SupportFDLibList>

<faceSnapDataUpload opt="true,false"/>
<!--opt,人脸抓拍上传-->
<brokenNetHttp>true</brokenNetHttp>
<!--opt,是否支持断网续传-->

<contrastFailureAlarmUpload opt="true,false">
<!--opt,xs:boolean, "人脸比对失败报警上传使能(即抓拍图片和人脸库图片比对比不成功也会将比对报警信息上传中心): true-启用, false-不启用(默认), 仅人脸比对支持"-->
</contrastFailureAlarmUpload>
<alarmOutType opt= "off,pluses">
<!--opt,xs:string, "报警输出脉冲使能：off-关,pluses-启用报警输出脉冲"-->
</alarmOutType>
<plusesTime min="100" max="900">
<!--dep, 报警输出持续时间, <alarmOutType>为pluses时有效, integer类型, 单位:ms-->
</plusesTime>
</FaceContrastCap>


XML_CAB_FDLibCap

设备网络SDK开发使用手册

<FDLibCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<CreateFDLibList size="">
<CreateFDLib>
<!--req, 创建人脸比对库-->
<id min="" max="">
<!--req, xs:integer, "表示list中子项个数, 从"1"开始赋值, 依次增加" -->
</id>
<name min="" max="">
<!--opt, xs:string, "face data lib name" -->
</name>
<thresholdValue min="" max="">
<!--opt, xs:integer, "检测阈值,阈值越大检测准确率越高, 范围[0,100]"-->
</thresholdValue>
<customInfo min="" max="">
<!--opt, xs:string, 人脸库附加信息-->
</customInfo>
<faceDataMax min="" max="">
<!--opt, xs:integer, "人脸库支持的最大人脸数据条数"-->
</faceDataMax>
<customFaceLibID min="0" max="64">
<!--opt, xs:string, "自定义人脸库ID"-->
</customFaceLibID>
</CreateFDLib>
</CreateFDLibList>

<FaceAppendData>
<!--req, 人脸比对库图片数据关联信息（有该节点即可支持导入人脸图片数据到人脸库的功能）-->
<bornTime>
<!--opt, xs:ISO8601 time,出生日期-->
</bornTime>
<name>
<!--opt,xs:string,姓名-->
</name>
<sex>
<!--opt,xs:string,"male,female",性别-->
</sex>
<province>
<!--opt,xs:string,省份-->
</province>
<city>
<!--opt,xs:string,城市-->
</city>
<certificateType>
<!--opt,xs:string,"ID,passportID,other",
证件类型: ID-身份证, passportID-护照, other-其他-->
</certificateType>
<certificateNumber>
<!--dep,xs:string,"证件号"-->
</certificateNumber>

<PersonInfoExtendList size="">
<!--req,人员扩展信息列表-->
<PersonInfoExtend>
<id>
<!--req,xs:integer, "人员扩展信息序号, 从"1"开始赋值, 依次增加" -->
</id>
<enable>
<!--req,xs: boolean, "人员扩展信息使能" -->
</enable>
<name>
<!--opt,xs:string, "人员标签信息扩展名称" -->
</name>
<value>
<!--opt,xs:string, "人员标签信息扩展内容" -->
</value>
</PersonInfoExtend>
</PersonInfoExtendList>

<isSupportPhoneNumber>true</isSupportPhoneNumber>
<!--opt,xs:boolen,是否支持电话号码-->

<isSupportImagesURLImport>true</isSupportImagesURLImport>
<!--opt,xs:boolen,是否支持通过图片URL的方式导入图片人脸库-->

<customHumanID min="0" max="64">
<!--opt,xs:string,"自定义人员ID"-->
</customHumanID>
</FaceAppendData>

<FDSearchDescription>
<searchID>
<!--req,xs:string; 搜索记录唯一标识，用来确认上层客户端是否为同一个(倘若是同一个，则设备记录内存，下次搜索加快速度) -->
</searchID>
<searchResultPosition>
<!--req, xs: integer, 查询结果在结果列表中的起始位置-->
<!--req, GET /ISAPI/Intelligent/FDLib/capabilities获取人脸库能力集，其中<isSupportStandardSearch>为true则该字段从0开始，否则从1开始-->
</searchResultPosition>
<maxResults>
<!--req, xs: integer, 本次查询条数-->
</maxResults>
<FDID>
<!--opt,xs:string,"人脸比对库唯一标示ID", 如果有这个节点表示指定人脸库查询，否则查询所有人脸库-->
</FDID>
<startTime>
<!--req,xs:ISO8601 time, 人员的出生的最早时间，时间格式为年月日-->
</startTime>
<endTime>
<!--dep,xs:ISO8601 time, 人员的出生的最晚时间，时间格式为年月日-->
</endTime>
<name>
<!--opt,xs:string, 姓名-->
</name>
<sex>
<!--opt,xs:string,"male,female", 性别: male-男, female-女-->
</sex>
<province>
<!--opt,xs:string, 省份-->
</province>
<city>
<!--opt,xs:string, 城市-->
</city>
<certificateType>
<!--opt,xs:string,"ID", ID- 身份证-->
</certificateType>
<certificateNumber>
<!--dep,xs:string,"证件号"-->
</certificateNumber>
<FaceModeCap>
<!--opt, "人脸模型能力, 用于以图索图"-->
<FaceMode>
<similarity min="0.0" max="100.0">
<!--opt,xs:float, 相似度,取值范围:[0.0,100.0]-->
</similarity>
</FaceMode>
</FaceModeCap>
<customFaceLibID min="0" max="64">
<!--opt,xs:string-->
</customFaceLibID>
<modelingStatus opt="success,failed,none">
<!--opt,xs:sting,建模状态: success-建模成功, failed-建模失败, none-无-->
</modelingStatus>
</FDSearchDescription>

<isSuportAnalysisFace opt="false,true">
<!--opt,string, 是否支持导入图片数据到设备识别图片目标功能(POST /ISAPI/Intelligent/analysisImage/face)-->
</isSuportAnalysisFace>

<isSuportFDLibImpEmp opt="false,true">
<!--opt,string, 是否支持人脸库数据导入导出功能(UPLOAD_FD_DATA)-->
</isSuportFDLibImpEmp>

<isSuportFCSearch opt="false,true">
<!--opt,string, 是否支持人脸比对结果(包括抓拍图片)查询功能(POST /ISAPI/Intelligent/FDLib/FCSearch)-->
</isSuportFCSearch>

<isSupportFDLibEachImport>
<!--opt,xs:boolen, "false,true", 是否支持人脸比对库图片相互导入的功能-->
<!--opt,对应功能: PUT /ISAPI/Intelligent/FDLib/<FDID>/importFrom/FDLibSource-->
</isSupportFDLibEachImport>

<FCSearchDescription>
<!--opt,人脸比对结果查询条件-->
<snapStartTime>
<!--opt,xs:ISO8601 time,开始时间-->
</snapStartTime>
<snapEndTime>
<!--dep,xs:ISO8601 time,结束时间-->
</snapEndTime>
<faceMatchInfoEnable opt="true,false">
<!--opt,xs:boolen, "表示是否需要只上传有匹配信息的数据,对应<FaceMatchInfoList>描述内容"-->
</faceMatchInfoEnable>
<monitorName min="" max="">
<!--opt, xs:string, "监控点名称"-->
</monitorName>
<similarity min="0.0" max="100.0">
<!--opt, xs:float,"相似度"-->
</similarity>
<eventType opt="unlimit,faceContrast,whiteFaceContrast">
<!--opt,xs:string,"事件类型: unlimit-不限,faceContrast-人脸比对,whiteFaceContrast-授权名单人脸比对(即陌生人模式)"-->
</eventType>
<FaceModeCap>
<!--opt, "人脸模型, 用于以图索图"-->
<FaceMode>
<similarity min="0.0" max="100.0">
<!--opt,xs:float, 相似度, 取值范围:[0.0,100.0]-->
</similarity>
</FaceMode>
</FaceModeCap>
<PictureSearchCap>
<!--opt, "支持按图片ID检索能力"-->
<maxSearchPictureNum min="1" max="1">
<!--req,xs:integer,"最大支持检索图片数目"-->
</maxSearchPictureNum>
</PictureSearchCap>
<isSupportMultiChannelSearch>true</isSupportMultiChannelSearch>
<!--opt,xs:boolen,"是否支持多通道检索"-->
<isSupportTotalSearchResult>true</isSupportTotalSearchResult>
<!--opt,xs:boolen,"是否支持设备单次检索条数限制"-->
</FCSearchDescription>

<isSupportFDExecuteControl>true</isSupportFDExecuteControl>
<!--opt,xs:boolen,"是否支持人脸库布防关系"-->

<isSupportFCSearchDataPackage>true</isSupportFCSearchDataPackage>
<!--opt,xs:boolen,"是否支持人脸检索结果打包"-->

<maxFCSearchDataPackageNum>1000</maxFCSearchDataPackageNum>
<!--opt,xs:integer,"最大支持人脸检索结果打包数目"-->

<isSupportManualModeling>true</isSupportManualModeling>
<!--opt,是否支持手动建模-->
<isSupportSingleManualModeling>true</isSupportSingleManualModeling>
<!--opt,是否支持单一图片手动建模-->
<isSupportRangeManualModeling>true</isSupportRangeManualModeling>
<!--opt,是否支持离散性手动建模-->
<isSupportSingleManualModelingSearch>true</isSupportSingleManualModelingSearch>
<!--opt,是否支持单一手动建模任务查询-->
<isSupportRangeManualModelingSearch>true</isSupportRangeManualModelingSearch>
<!--opt,是否支持离散性手动建模任务查询-->
<isSupportModelingStatusSearch>true</isSupportModelingStatusSearch>
<!--opt,是否支持建模状态查询-->

<Reboot>
<!--opt,修改参数后, 需要提示重启设备生效的具体参数内容-->
<thresholdValue>true</thresholdValue>
<!--opt,人脸库阈值修改后, 需要重启设备生效-->
<delFaceLib>true</delFaceLib>
<!--opt,删除人脸库后, 需要重启设备生效-->
</Reboot>

<isSupportCoverImportpictures>true</isSupportCoverImportpictures>
<!--opt,是否支持图片覆盖式导入(NENET_DVR_FACELIB_COND中byCover参数)-->
<isSupportCoverImportFaceLib>true</isSupportCoverImportFaceLib>
<!--opt,是否支持人脸库覆盖式导入(NET_DVR_FD_DATA_COND中byCover参数)-->
<isSupportConcurrentImportpictures>true</isSupportConcurrentImportpictures>
<!--opt,是否支持图片并发式导入(NENET_DVR_FACELIB_COND中byConcurrent参数)-->
<isSupportSurplusCapacity>true</isSupportSurplusCapacity>
<!--opt,是否支持指定人脸库中剩余人脸图片张数查询-->
<isSupportFDCoverInfo>true</isSupportFDCoverInfo>
<!--opt,是否支持 "获取指定人脸库导入会覆盖的人脸图片张数"-->

<isSupportStandardSearch>true</isSupportStandardSearch>
<!--opt,xs:boolen, "false,true", 是否支持标准查找方式(包括人脸库搜索/ISAPI/Intelligent/FDLib/FDSearch、人脸比对搜索/ISAPI/Intelligent/FDLib/FCSearch)：
1)searchResultPosition从0开始,无该节点则searchResultPosition从1开始;
2)responseStatus、matchList、matchElemen首字母都大写, 即ResponseStatus、MatchList、MatchElemen, 和协议保持一致-->

<FDLibType opt="faceContrast,allowListFaceContrast">
<!--rep,xs: string,"人脸比对类型: faceContrast-人脸比对, allowListFaceContrast-授权名单人脸比对(陌生人模式)"-->
</FDLibType>

<isSupportFaceDataExport>true</isSupportFaceDataExport>
<!--rep,表示支持人脸库中数据是否支持导出-->

<isSupportNewlyPictureUpload>true</isSupportNewlyPictureUpload>
<!--opt,xs:boolen,"是否支持导入图片到人脸库,用于设备端兼容大图片导入"-->

<isSupportFCSearchNormal>true</isSupportFCSearchNormal>
<!--opt,xs:boolen,"是否支持人脸数据全部检索,用于4200采用ISAPI协议搜索人脸结果, 如果不支持使用NET_DVR_SmartSearchPicture搜索所有图片"-->

<FDLibEachImportCap>
<!--opt,人脸库相互导入能力, 对应命令:PUT /ISAPI/Intelligent/FDLib/<FDID>/importFrom/FDLibSource-->
<isSupportImportLib>
<!--opt,xs:boolen,"是否支持整个库导入"-->
</isSupportImportLib>
<isSupportImportLibPicture>true</isSupportImportLibPicture>
<!--opt,xs:boolen,"是否支持人脸库指定图片导入,即<Picture>字段"-->
</FDLibEachImportCap>

</FDLibCap>


XML_CAB_GateStatus

设备网络SDK开发使用手册

<GateStatus version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<busSync>
<!--req, xs: string，"Normal,DropArmPoorSyn,BusCommFailed"，总线同步性状态：Normal-正常，DropArmPoorSync-摆臂同步性差，BusCommFailed-总线通信失败-->
</busSync>
<inDoorPassCount>
<!--req, xs: integer，min="0" max="0xffffffff"，进门红外通行计数（到0xFFFFFFFF后从0开始重新计数）-->
</inDoorPassCount>
<inDoorAuthCount>
<!--req, xs: integer，min="0" max="0xffffffff"，进门认证计数（到0xFFFFFFFF后从0开始重新计数）-->
</inDoorAuthCount>
<outDoorPassCount>
<!--req, xs: integer，min="0" max="0xffffffff"，出门红外通行计数（到0xFFFFFFFF后从0开始重新计数）-->
</outDoorPassCount>
<outDoorAuthCount>
<!--req, xs: integer，min="0" max="0xffffffff"，出门认证计数（到0xFFFFFFFF后从0开始重新计数）-->
</outDoorAuthCount>
<remoteControlRecvModule>
<!--req, xs: string，"Normal,Abnormal"，遥控器接收模块状态：Normal-正常，Abnormal-通信失败或未安装-->
</remoteControlRecvModule>
<caseTempUnit>
<!--req, xs: string，"Centigrade,Fahrenheit"，闸机腔体温度显示单位：Centigrade-摄氏度，Fahrenheit-华氏度-->
</caseTempUnit>
<currentInDoorMode>
<!--req, xs: string，"Controlled,Forbid,Free"，当前进门通行模式：Controlled-受控，Forbid-禁止，Free-自由-->
</currentInDoorMode>
<currentOutDoorMode>
<!--req, xs: string，"Controlled,Forbid,Free"，当前出门通行模式：Controlled-受控，Forbid-禁止，Free-自由-->
</currentOutDoorMode>
<powerSupplyMode>
<!--req, xs: string，"ACPower,Battery"，通道供电方式：ACPower-交流电供电，Battery-蓄电池供电-->
</powerSupplyMode>
<gateCurrentStatus>
<!--opt, xs: string，"InDoorOpen,OutDoorOpen,Close"，闸门状态：InDoorOpen-进门开，OutDoorOpen-出门开，Close-关门-->
</gateCurrentStatus>
</GateStatus>


XML_CAB_GetAcsEvent

设备网络SDK开发使用手册

<GetAcsEvent version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<EventCond>
<!--req事件获取查询条件-->
<majorType></majorType>
<!--req主类型-->
<minorType></minorType>
<!--req子类型-->
<startTime></startTime>
<!--req开始时间-->
<endTime></endTime>
<!--req结束时间-->
<localOrUTC></localOrUTC>
<!--opt时间类型：Local-设备本地时间，UTC-UTC时间（不返回该字段时，startTime和endTime默认为本地时间）-->
<cardNo min="" max=""></cardNo>
<!--req卡号-->
<name min="" max=""></name>
<!--req持姓名卡人-->
<picEnable opt="true,false"></picEnable>
<!--req是否带图片-->
<beginSerialNo min="" max=""></beginSerialNo>
<!--req起始流水号-->
<endSerialNo min="" max=""></endSerialNo>
<!--req结束流水号-->
<employeeNo min="" max=""></employeeNo>
<!--opt工号（人员ID）-->
</EventCond>
<EventLog>
<!--req具体见事件上传类型-->
<majorType>0x1</majorType>
<!--req报警-->
<MinorTypeList>
<minorType>0x400</minorType>
<!--req防区短路报警-->
<minorType>0x401</minorType>
<!--req防区断路报警-->
</MinorTypeList>
</EventLog>
<EventLog>
<!--req具体见事件上传类型-->
<majorType>0x2</majorType>
<!--req异常-->
<MinorTypeList>
<minorType>0x27</minorType>
<!--req网络断开-->
<minorType>0x3a</minorType>
<!--req连接状态异常-->
</MinorTypeList>
</EventLog>
<EventLog>
<!--req具体见事件上传类型-->
<majorType>0x3</majorType>
<!--req操作-->
<MinorTypeList>
<minorType>0x400</minorType>
<!--req远程开门-->
<minorType>0x401</minorType>
<!--req远程关门-->
</MinorTypeList>
</EventLog>
<EventLog>
<!--req具体见事件上传类型-->
<majorType>0x5</majorType>
<!--req事件-->
<MinorTypeList>
<minorType>0x01</minorType>
<!--req合法卡认证通过-->
<minorType>0x02</minorType>
<!--req刷卡加密码认证通过-->
</MinorTypeList>
</EventLog>
</GetAcsEvent>


XML_CAB_HFPDSchedule

设备网络SDK开发使用手册

<Schedule version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<id>
<!--req, xs:string; id -->
</id>
<eventType>
<!--opt, xs:string -->
</eventType>
<inputIOPortID>
<!--ro, dep, xs:string; id -->
</inputIOPortID>
<outputIOPortID>
<!-- ro, dep, xs:string; id -->
</outputIOPortID>
<videoInputChannelID>
<!-- ro, dep, xs:string; id -->
</videoInputChannelID>
<TimeBlockList>
<!--req -->
<TimeBlock>
<dayOfWeek>
<!--opt, xs:integer, ISO8601 weekday number, 1=Monday, … -->
</dayOfWeek>
<TimeRange>
<!--req -->
<beginTime>
<!--req, xs:time, ISO8601 time -->
</beginTime>
<endTime>
<!--req, xs:time, ISO8601 time -->
</endTime>
</TimeRange>
</TimeBlock>
</TimeBlockList>
<HolidayBlockList>
<!--opt -->
<TimeBlock>
<!--req -->
<TimeRange>
<!--req -->
<beginTime>
<!--req, xs:time, ISO8601 time -->
</beginTime>
<endTime>
<!--req, xs:time, ISO8601 time -->
</endTime>
</TimeRange>
</TimeBlock>
</HolidayBlockList>
</Schedule>


XML_CAB_HumanRecognition

设备网络SDK开发使用手册

<HumanRecognition version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req, 人体目标识别配置能力集-->
<id>
<!--req, xs:string, "video channel no", 视频通道号-->
</id>
<normalizedScreenSize>
<!--req,ro,归一化数值-->
<normalizedScreenWidth>
<!--req, xs:integer,"1000" -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, xs:integer,"1000" -->
</normalizedScreenHeight>
</normalizedScreenSize>
<HumanRecognitionRegionList size="8">
<!--opt,人体识别区域列表-->
<HumanRecognitionRegion>
<id>
<!--req, xs:string, 区域序号-->
</id>
<regionName min="" max="">
<!--req, xs:string, "区域名称"-->
</regionName>
<enabled opt="true,false">
<!--req, xs:Boolean, "规则开关使能：true-启用, false-关闭"-->
</enabled>
<RegionCoordinatesList>
<!--opt, 区域坐标点列表-->
<RegionCoordinates>
<!--opt, 区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</HumanRecognitionRegion>
</HumanRecognitionRegionList>

<isSupportHumanMisinfoFilter>
<!--req, xs:boolean, "去误报, 支持返回true, 不支持不返回"-->
</isSupportHumanMisinfoFilter>
<isSupportPicRecognition>
<!--req, xs:boolean, "图片二次识别, 支持返回true, 不支持不返回"-->
</isSupportPicRecognition>

<HumanRecognitionModeSearchCap>
<!--req,xs:integer, 人体检索能力集, 对应/ISAPI/Intelligent/humanRecognition/Search/channels功能-->
<searchTargetsNumMax>5</searchTargetsNumMax>
<!--req,xs:integer, 以图搜图导入样图的数量-->
<HumanMode>
<age_group opt="">
<!--opt,xs:string, "年龄段: unknown-未知, child-少年, young-青年, middle-中年, old-老年"-->
</age_group>
<gender opt="">
<!--opt,xs:string, "性别：unknown-未知,male-男,female-女"-->
</gender>
<jacet_color opt="">
<!--opt,xs:string, "上衣颜色: unknown-未知, white-白, silver-银, gray-灰, black-黑,
red-红, deepBlue-深蓝, blue-蓝, yellow-黄, green-绿, brown-棕, pink-粉, purple-紫,
deepGray-深灰, cyan-青, orange-橙, mixture-混色"-->
</jacet_color>
<glass opt="">
<!--opt,xs:string, "是否戴眼镜: unknown-未知, no-不戴眼镜, yes-戴眼镜"-->
</glass>
<bag opt="">
<!--opt,xs:string, "是否背包: unknown-未知, no-不背包, yes-背包"-->
</bag>
<ride opt="">
<!--opt,xs:string, "是否骑车: unknown-未知, no-不骑车, yes-骑"-->
</ride>
<similarity min="0.0" max="100.0">
<!--opt,xs:float[0.0,100.0], 相似度-->
</similarity>
</HumanMode>
<eventType opt = "unlimit,humanRecognition">
<!--opt,xs:string, "事件类型: 不限, 人体报警"-->
</eventType>
</HumanRecognitionModeSearchCap>

</HumanRecognition>


XML_CAB_IntelliCap

设备网络SDK开发使用手册

<IntelliCap version="1.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 智能能力集-->
<isFaceSupport>
<!--opt, xs:boolen, 是否支持人脸功能-->
</isFaceSupport>
<isBehaviorSupport>
<!--opt, xs:boolen, 是否支持异常行为识别功能-->
</isBehaviorSupport>
<isLineDetectionSupport>
<!--opt, xs:boolen, 是否支持越界侦测功能-->
</isLineDetectionSupport>
<isFieldDetectionSupport>
<!--opt, xs:boolen, 是否支持区域入侵功能-->
</isFieldDetectionSupport>
<isRegionEntranceSupport>
<!--opt, xs:boolen, 是否支持进入区域功能-->
</isRegionEntranceSupport>
<isRegionExitingSupport>
<!--opt, xs:boolen, 是否支持离开区域功能-->
</isRegionExitingSupport>
<isLoiteringSupport>
<!--opt, xs:boolen, 是否支持徘徊功能-->
</isLoiteringSupport>
<isGroupSupport>
<!--opt, xs:boolen, 是否支持人员聚集侦测功能-->
</isGroupSupport>
<isRapidMoveSupport>
<!--opt, xs:boolen, 是否支持快速移动侦测功能-->
</isRapidMoveSupport>
<isParkingSupport>
<!--opt, xs:boolen, 是否支持停车侦测功能-->
</isParkingSupport>
<isUnattendedBaggageSupport>
<!--opt, xs:boolen, 是否支持物品遗留侦测功能-->
</isUnattendedBaggageSupport>
<isAttendedBaggageSupport>
<!--opt, xs:boolen, 是否支持物品拿取侦测功能-->
</isAttendedBaggageSupport>
<isTeacherSupport>
<!--opt, xs:boolen, 是否支持教师侦测功能-->
</isTeacherSupport>
<isStudentSupport>
<!--opt, xs:boolen, 是否支持学生侦测功能-->
</isStudentSupport>
<isFaceCaptureStatisticsSupport>
<!--req, xs:string, "true,false", 是否支持人脸抓拍人员统计-->
</isFaceCaptureStatisticsSupport>
<isSupportPersonDensityDetection>
<!--opt, xs:boolen, 是否支持人员密度检测-->
</isSupportPersonDensityDetection>
<isSupportPersonQueueDetection>
<!--opt, xs:boolen, 是否支持人员排队检测-->
</isSupportPersonQueueDetection>

<HumanRecognitionModeSearchCap>
<!--opt,xs:integer, 人体检索能力集-->
<searchTargetsNumMax>
<!--opt,xs:integer, 以图搜图导入样图的数量-->
</searchTargetsNumMax>
<HumanMode>
<searchCond opt="age_group,gender,jacet_color,glass,bag,ride,unlimit"/>
<!--opt,xs:string, "支持搜索的条件:age_group-年龄段,gender-性别,jacet_color-上衣颜色,
glass-是否戴眼镜,bag-是否背包,ride-是否骑车,unlimit-不限制"-->
<similarity min="0.0" max="100.0"/>
<!--opt,xs:float[0.0,100.0],相似度-->
</HumanMode>
<positive opt="true,false"/>
<!--opt,xs:boolen,,"true-启用人体误报" "false-不启用人体误报"-->
<eventType opt="unlimit,humanRecognition">
<!--opt,xs:string, "事件类型: unlimit-不限, humanRecognition-人体报警"-->
</eventType>
<isSupportMultiChannelSearch>true</isSupportMultiChannelSearch>
<!--opt,xs:boolen, "是否支持多通道检索"-->
<isSupportTotalSearchResult>true</isSupportTotalSearchResult>
<!--opt,xs:boolen, "是否支持设备单次检索条数限制"-->
</HumanRecognitionModeSearchCap>

<VehicleRecognitionModeSearchCap>
<!--opt,xs:integer, 车辆检索能力集-->
<searchTargetsNumMax>
<!--opt,xs:integer, 以图搜图导入样图的数量-->
</searchTargetsNumMax>
<eventType opt="unlimit,vehicleBlockList,vehicleAllowList"/>
<!--xs:string,"事件类型:unlimit-不限,vehicleBlockList-车辆非授权名单,vehicleAllowList-车辆授权名单"-->
<VehicleMode>
<searchCond opt="licensePlate,vehicleLogo,vehicleSubLogoRecog,vehicleType,vehicleColor,unlimit"/>
<!--opt,xs:string, "支持搜索的条件:licensePlate-车牌号码,vehicleLogo-主品牌,vehicleSubLogoRecog-子品牌,
vehicleType-车辆类型,vehicleColor-车辆颜色,unlimit-不限制"-->
<similarity min="0.0" max="100.0"/>
<!--opt,xs:float[0.0,100.0],相似度-->
</VehicleMode>
<isSupportMultiChannelSearch>true</isSupportMultiChannelSearch>
<!--opt,xs:boolen, "是否支持多通道检索"-->
<isSupportTotalSearchResult>true</isSupportTotalSearchResult>
<!--opt,xs:boolen, "是否支持设备单次检索条数限制"-->
</VehicleRecognitionModeSearchCap>

<FaceContrastPersonInfoExtend>
<!--opt,人脸比对标签信息扩展能力集-->
<personInfoCap>
<maxPersonInfo min="0" max="4">
<!--opt,xs:integer, "人员标签最大数目"-->
</maxPersonInfo>
</personInfoCap>
<personInfoFDlibCap>
<maxPersonInfo min="0" max="4">
<!--opt,xs:integer, "人员标签最大数目"-->
</maxPersonInfo>
</personInfoFDlibCap>
</FaceContrastPersonInfoExtend>

<isSupportUploadFacePictureByForm>
<!--opt, xs:boolen, /ISAPI/Intelligent/analysisImage/face, 人脸图片上传支持表单方式导入-->
</isSupportUploadFacePictureByForm>
<isSupportUploadHumanPictureByForm>
<!--opt, xs:boolen, /ISAPI/Intelligent/analysisImage/human, 人体图片上传支持表单方式导入-->
</isSupportUploadHumanPictureByForm>

<isSupportMisinfoFilterStatisticalMode>
<!-- opt, xs:boolen,表明/ISAPI/Intelligent/misinfoFilter/statisticalMode?format=json该功能支持 -->
</isSupportMisinfoFilterStatisticalMode>

<FaceContrastAnalyzeCap>
<isSupportTrigger opt="false,true">
<!--opt,boolen, 人脸比对触发,对应命令: GET /ISAPI/Intelligent/channels/<ID>/faceContrast/analyze?customID=-->
</isSupportTrigger>
<SearchCondition>
<!--opt, 某时间段内人脸比对结果查询-->
<startTime/>
<!--req,xs:time, ISO8601 time-->
<endTime/>
<!--req,xs:time, ISO8601 time-->
</SearchCondition>
</FaceContrastAnalyzeCap>
<FramesPeopleCountingCap>
<Statistics>
<!--opt,单帧画面人员统计触发配置-->
<SearchCondition>
<startTime/>
<!--req,xs:time, ISO8601 time-->
<endTime/>
<!--req,xs:time, ISO8601 time-->
</SearchCondition>
</Statistics>
<MaskRegion>
<!--opt,屏蔽区域-->
<maxRegionNum>4</maxRegionNum>
<!--opt,区域个数-->
<Region>
<vertexNum min="3" max="10"/>
<!--opt,区域顶点数量-->
</Region>
</MaskRegion>
</FramesPeopleCountingCap>
<RestoreLib>
<libName opt="studentsStoodUp, peopleCounting">
<!--opt,xs:string, 算法库名称-->
</libName>
</RestoreLib>

<isSupportSafetyHelmetDetection>
<!--opt, xs:boolean, 是否支持安全帽检测-->
</isSupportSafetyHelmetDetection>
<isSupportMixedTargetDetection>
<!--opt, xs:boolean. 是否支持混合目标检测-->
</isSupportMixedTargetDetection>
<RestoreAlgLibParam>
<!--opt,按算法库名称进行算法库参数恢复控制能力-->
<libName opt="faceSnap,HMS">
<!--opt, xs:string, 算法库名称: faceSnap-人脸抓拍, HMS-混合目标检测-->
</libName>
</RestoreAlgLibParam>
</IntelliCap>


XML_CAB_LockCtrl

设备网络SDK开发使用手册

<LockCtrl version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<enabled>
<!--req, xs: boolean, 是否启用锁死防护舱的门锁 -->
</enabled>
<command opt="unlock,lock">
<!--req, xs:string, 锁死防护舱的门锁 -->
</command>
</LockCtrl>


XML_CAB_LockStatus

设备网络SDK开发使用手册

<LockStatus version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<lock opt="unlocked,locked">
<!--req, xs:string, 防护舱的门锁死状态，unlocked-未锁死，locked-锁死-->
</lock>
</LockStatus>


XML_CAB_NetworkCap

设备网络SDK开发使用手册

<NetworkCap version="2.0">
<isSupportWireless>
<!--req, xs:boolean, 是否支持无线-->
</isSupportWireless>
<isSupportPPPoE>
<!--req, xs:boolean, 是否支持PPPoE-->
</isSupportPPPoE>
<isSupportBond>
<!--req, xs:boolean, 是否支持网卡绑定模式-->
</isSupportBond>
<isSupport802_1x>
<!--req, xs:boolean, 是否支持802_1x-->
</isSupport802_1x>
<isSupportNtp>
<!--opt, xs:boolean, 是否支持NTP-->
</isSupportNtp>
<isSupportFtp>
<!--opt, xs:boolen, 是否支持FTP-->
</isSupportFtp>
<isSupportUpnp>
<!--opt, xs:boolean, 是否支持UPNP-->
</isSupportUpnp>
<isSupportPNP>
<!--opt, xs:boolean, 是否支持PNP-->
</isSupportPNP>
<isSupportDdns>
<!--opt, xs:boolean, 是否支持DDNS-->
</isSupportDdns>
<isSupportHttps>
<!--opt, xs:boolea, 是否支持HTTPS-->
</isSupportHttps>
<SnmpCap>
<!--opt, SNMP能力-->
<isSupport>
<!--req, xs:boolean, 是否支持SNMP-->
</isSupport>
</SnmpCap>
<isSupportExtNetCfg>
<!--opt, xs:boolean, 是否支持扩展网卡配置-->
</isSupportExtNetCfg>
<isSupportIPFilter>
<!--opt, xs:boolean, 是否支持IP地址过滤-->
</isSupportIPFilter>
<isSupportEZVIZ>
<!--opt, xs:boolean, 是否支持EZVIZ-->
</isSupportEZVIZ>
<isSupportEhome>
<!--opt, xs:boolean, 是否支持EHOME-->
</isSupportEhome>
<isSupportWirelessServer>
<!--opt, xs:boolean, 是否支持WIFI热点服务-->
</isSupportWirelessServer>
<isSupportWirelessDial/>
<!--opt, req, xs:boolean, 是否支持wireless dial参数配置-->
<GB28181Cap>
<!--opt, GB/T28181能力-->
<isSupportGB28181Service>
<!--opt, xs:boolean, 是否支持GB/T28181-->
</isSupportGB28181Service>
</GB28181Cap>
<isSupportMACFilter>
<!--opt, xs:boolean, 是否支持MAC地址过滤-->
</isSupportMACFilter>
<isSupportIntegrate>
<!--opt, xs:boolean, 是否支持ONVIF\CGI\ISAPI标准协议集成-->
</isSupportIntegrate>
<isSupportplatformAccess>
<!--opt, xs:boolean, 是否支持GB28181或者EHOME协议平台接入地址过滤功能-->
</isSupportplatformAccess>
<isSupportGenetec>
<!-- opt, xs:boolean -->
</isSupportGenetec>
<RoutePolicy>
<!--opt, 策略路由参数配置-->
<isSupportRoutePolicy>
<!--opt, xs:boolean,是否支持策略路由参数配置-->
</isSupportRoutePolicy>
<isRebootHint>
<!--opt, xs:boolean,是否配置后提示重启-->
</isRebootHint>
</RoutePolicy>
</NetworkCap>


XML_CAB_PrivilegePasswordStatus

设备网络SDK开发使用手册

<PrivilegePasswordStatus version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<engineeringConfigured>
<!--req, xs: boolean,"true,false"，工程密码是否已配置：true-已配置，false-未配置-->
</engineeringConfigured>
<setupAlarmConfigured>
<!--req, xs: boolean,"true,false"，布撤防密码是否已配置：true-已配置，false-未配置-->
</setupAlarmConfigured>
<householderUnlockConfigured>
<!--req, xs: boolean,"true,false"，户主开锁密码是否已配置：true-已配置，false-未配置-->
</householderUnlockConfigured>
<antiHijackingConfigured>
<!--req, xs: boolean,"true,false"，防劫持密码是否已配置：true-已配置，false-未配置-->
</antiHijackingConfigured>
<public1Configured>
<!--req, xs: boolean,"true,false"，公共密码1是否已配置：true-已配置，false-未配置-->
</public1Configured>
<public2Configured>
<!--req, xs: boolean,"true,false"，公共密码2是否已配置：true-已配置，false-未配置-->
</public2Configured>
<public3Configured>
<!--req, xs: boolean,"true,false"，公共密码3是否已配置：true-已配置，false-未配置-->
</public3Configured>
<sendCardConfigured>
<!--req, xs: boolean,"true,false"，发卡密码是否已配置：true-已配置，false-未配置-->
</sendCardConfigured>
</PrivilegePasswordStatus>


XML_CAB_RingParam

设备网络SDK开发使用手册

<RingParam version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<ringID min="" max="">
<!--req, xs: integer, 铃音编号-->
</ringID>
<ringName min="" max="">
<!--req, xs: string, 铃音名称-->
</ringName>
<ringSize min="0" max="300*1024">
<!--req, xs:integer, 铃音文件大小，单位：字节-->
</ringSize>
<ringType opt="wav">
<!--req, xs:string, 铃音类型-->
</ringType>
</RingParam>


XML_CAB_SafetyCabinCap

设备网络SDK开发使用手册

<SafetyCabinCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<isSupportLockCtrl>
<!--req, xs: boolean, 是否支持锁死防护舱的门锁，不支持不返回该节点 -->
</isSupportLockCtrl>
<isSupportLockStatus>
<!--req, xs: boolean, 是否支持获取防护舱门锁死状态，不支持不返回该节点 -->
</isSupportLockStatus>
</SafetyCabinCap>


XML_CAB_SecurityCap

设备网络SDK开发使用手册

<SecurityCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<supportUserNums>
<!--opt, xs:integer, 支持用户个数-->
</supportUserNums>
<userBondIpNums>
<!--opt, xs:integer, 支持绑定IP个数 -->
</userBondIpNums>
<userBondMacNums>
<!--opt, xs:integer, 支持绑定MAC个数 -->
</userBondMacNums>
<supportIPCActivatePassword>
<!--opt,xs:boolean, IPC激活密码配置-->
</supportIPCActivatePassword>
<issupIllegalLoginLock>
<!--opt, xs: Boolean,"true, false", 是否支持非法登录锁定-->
</issupIllegalLoginLock>
<isSupportOnlineUser>
<!--opt, xs: Boolean,"true,false", 是否支持获取在线用户-->
</isSupportOnlineUser>
<isSupportAnonymous>
<!--opt, xs: Boolean,"true,false", 是否支持匿名登录 -->
</isSupportAnonymous>

<securityVersion opt="1,2"/>
<!--opt,表示加密能力集，每一个版本包括两个方面：加密算法及加密的节点范围, 目前1表示AES128加密，2表示AES256加密，加密范围在下面各个协议中描述-->

<keyIterateNum>
<!--dep,xs:integer, depend on securityVersion, 取值一般是100~1000-->
</keyIterateNum>

<isSupportUserCheck>
<!--dep,opt,xs:boolean, 表示是否支持用户参数修改(修改/增加/删除)时进行登录密码的校验，此功能只在支持敏感信息加密的版本上有效, depend on securityVersion-->
</isSupportUserCheck>

<isSupportGUIDFileDataExport>
<!--opt,xs: Boolean,"true,false",是否支持导出GUID文件-->
</isSupportGUIDFileDataExport>

<isSupportSecurityQuestionConfig>
<!--opt,xs: Boolean,"true,false",是否支持设备安全问题配置 -->
</isSupportSecurityQuestionConfig>

<isSupportGetOnlineUserListSC>
<!--opt,xs: Boolean,"true,false",是否支持获取在线用户信息-->
</isSupportGetOnlineUserListSC>

<SecurityLimits>
<!--opt,设备安全问题列表-->
<LoginPasswordLenLimit min="1" max="16">
<!--opt,用户登录密码长度-->
</LoginPasswordLenLimit>
<SecurityAnswerLenLimit min="1" max="128">
<!--opt,安全问题答案长度-->
</SecurityAnswerLenLimit>
</SecurityLimits>

<isSupportConfigFileImport>
<!--opt, xs: Boolean,"true", "是否支持安全导入配置文件, 不支持不返回"-->
</isSupportConfigFileImport>
<isSupportConfigFileExport>
<!--opt, xs: Boolean,"true", "是否支持安全导出配置文件, 不支持不返回"-->
</isSupportConfigFileExport>
<cfgFileSecretKeyLenLimit min="1" max="">
<!--opt, 安全导入导出配置文件的校验密钥长度-->
</cfgFileSecretKeyLenLimit>
<isSupportONVIFUserManagement>
<!--opt, xs: Boolean,”true,false”,是否支持ONVIF协议用户管理 -->
</isSupportONVIFUserManagement>
</SecurityCap>


XML_CAB_SnapConfig

设备网络SDK开发使用手册

<SnapConfig version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<snapTimes min="0" max="5">
<!--req, xs:int, 线圈抓拍次数-->
</snapTimes>
<snapWaitTime min="0" max="6000">
<!--req, xs:int, 抓拍等待时间, 目前此字段门禁主机未使用, 单位：ms-->
</snapWaitTime>
<intervalTimeList size="4">
<!--req, 连拍时间间隔列表-->
<intervalTime min="0" max="6000">
<!--req, xs:int,连拍时间间隔，单位：ms-->
</intervalTime>
</intervalTimeList>
<JPEGParam>
<pictureSize>
<!--req, xs:string, 图片分辨率：
0-CIF, 1-QCIF, 2-D1, 3-UXGA(1600x1200), 4-SVGA(800x600), 5-HD720p(1280x720),
6-VGA, 7-XVGA, 8-HD900p, 9-HD1080, 10-2560*1920, 11-1600*304, 12-2048*1536,
13-2448*2048, 14-2448*1200, 15-2448*800, 16-XGA(1024*768), 17-SXGA(1280*1024),
18-WD1(960*576/960*480), 19-1080i, 20-576*576，21-1536*1536, 22-1920*1920,
161-288*320, 162-144*176, 163-480*640,164-240*320, 165-120*160, 166-576*720,
167-720*1280, 0xff-Auto(使用当前码流分辨率)-->
</pictureSize>
<pictureQuality opt="best, better, general">
<!--req, xs:string,图片质量系数-->
</pictureQuality>
</JPEGParam>
</SnapConfig>


XML_CAB_SoundCfg

设备网络SDK开发使用手册

<SoundCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<SpeakerCfg>
<enabled>
<!--req, xs: boolean, 是否启用扬声器-->
</enabled>
<remoteCtrl>
<!--req, xs: boolean, 是否启用远程音量调节-->
</remoteCtrl>
<volume min="" max="">
<!--req, xs:integer, 扬声器音量大小, 取值范围:0~100-->
</volume>
</SpeakerCfg>
<forceSwitchVoice>
<!--req, xs: boolean, 是否启用强制切换语音-->
</forceSwitchVoice>
<audition>
<!--opt, xs:boolean, 是否开启试听, 调节音量的时候生效-->
</audition>
</SoundCfg>


XML_CAB_VideoIntercomCap

设备网络SDK开发使用手册

<VideoIntercomCap version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<isSupportRingManage>
<!--opt, xs:boolean, 铃音管理-->
</isSupportRingManage>
<isSupportPasswordAuthentication>
<!--req, xs:boolean, 可视对讲密码校验 -->
</isSupportPasswordAuthentication>
<isSupportAlarmControlByPhone>
<!--req, xs:boolean, 手机布防控制-->
</isSupportAlarmControlByPhone>
<isSupportSceneManage>
<!--opt, xs:boolean, 场景管理-->
</isSupportSceneManage>
<isSupportZoneCfgByScene>
<!--opt, xs:boolean, 按场景配置防区参数-->
</isSupportZoneCfgByScene>
<isSupportCallElevator>
<!--req, xs:boolean, 呼叫电梯-->
</isSupportCallElevator>
<isSupportGetSmartLockParam>
<!--req, xs:boolean, 获取智能锁信息-->
</isSupportGetSmartLockParam>
<isSupportGetAnnouncementMessage>
<!--req, xs:boolean, 获取公告信息-->
</isSupportGetAnnouncementMessage>
<isSupportAppKeyConfiguration>
<!--req, xs:boolean, APPKey配置-->
</isSupportAppKeyConfiguration>
<isSupportDeviceLanguageCfg>
<!-- req, xs:Boolean,设备多语言切换配置 -->
</isSupportDeviceLanguageCfg>
<isSupportIntercomProtocolChange>
<!-- req, xs:Boolean,设备VoIP协议切换配置，标准SIP和非标准协议-->
</isSupportIntercomProtocolChange>
<isSupportSendCardCfg>
<!-- req, xs:Boolean,门口机是否支持发卡功能配置-->
</isSupportSendCardCfg>
<isSupportGetDeployInfo>
<!-- req, xs:Boolean,是否支持布防信息获取-->
</isSupportGetDeployInfo>
<isSupportPrivilegePasswordStatus>
<!-- req, xs:boolean,设备权限密码状态获取 -->
</isSupportPrivilegePasswordStatus>
<isSupportWorkStatus>
<!-- req, xs:boolean, 是否支持设备状态获取 -->
</isSupportWorkStatus>
<isSupportAppCall>
<!-- opt, xs:boolean, 是否支持主动呼叫，App走萤石通道时使用，兼容设备老的呼叫逻辑，由设备返回该能力（室内机）-->
</isSupportAppCall>
</VideoIntercomCap>


XML_ChannelInfo

设备网络SDK开发使用手册

<ChannelInfo version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<id>
<!--req,xs:integer,"通道号"-->
</id>
<EagleEye>
<!--opt,通道属性为鹰眼(支持鹰眼的相关功能)-->
<StreamFusion>
<!--opt,"大鹰眼的全景码流通道",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</StreamFusion>
<PanoramicMetaData>
<!--opt,"小鹰眼的全景原始码流通道",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</PanoramicMetaData>
</EagleEye>
<FishEye>
<!--opt,通道属性为鱼眼(支持鱼眼的相关功能)-->
<FishEyeStream>
<!--opt,鱼眼码流,用于支持播放库软解功能",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</FishEyeStream>
</FishEye>
<Thermal>
<!--opt,通道属性为热成像(支持热成像的相关功能)-->
<TemperatureMetaData>
<!--opt,"测温原始码流",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</TemperatureMetaData>
<ThermometryDetection>
<!--opt,"测温检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</ThermometryDetection>
<ThermometryDiffDetection>
<!--opt,"温差检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</ThermometryDiffDetection>
<FireDetection>
<!--opt,"火点检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</FireDetection>
<SmokeDetection>
<!--opt,"烟雾检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</SmokeDetection>
<ShipsDetection>
<!--opt,"船只检测,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</ShipsDetection>
<IntelligentRuleDisplay>
<!--opt,"热成像智能规则显示参数,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</IntelligentRuleDisplay>
<IntelligentBehaviorRule>
<!--opt,"智能行为规则配置,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</IntelligentBehaviorRule>
<DPC>
<!--opt,"坏点校正配置,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</DPC>
<Metadata>
<!--opt,"Metadata提取,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</Metadata>
</Thermal>
<PanoramaCamera>
<!--opt,通道属性为全景相机(支持全景相机的相关功能)-->
<PTZCtrl>
<!--opt,云台控制",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</PTZCtrl>
</PanoramaCamera>
</ChannelInfo>


XML_ChannelInfoList

设备网络SDK开发使用手册

<ChannelInfoList version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req,通道属性信息-->
<ChannelInfo>
<id>
<!--req,xs:integer,"通道号"-->
</id>
<EagleEye>
<!--opt,通道属性为鹰眼(支持鹰眼的相关功能)-->
<StreamFusion>
<!--opt,"大鹰眼的全景码流通道",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</StreamFusion>
<PanoramicMetaData>
<!--opt,"小鹰眼的全景原始码流通道",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</PanoramicMetaData>
</EagleEye>
<FishEye>
<!--opt,通道属性为鱼眼(支持鱼眼的相关功能)-->
<FishEyeStream>
<!--opt,鱼眼码流,用于支持播放库软解功能",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</FishEyeStream>
</FishEye>
<Thermal>
<!--opt,通道属性为热成像(支持热成像的相关功能)-->
<TemperatureMetaData>
<!--opt,"测温原始码流",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</TemperatureMetaData>
<ThermometryDetection>
<!--opt,"测温检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</ThermometryDetection>
<ThermometryDiffDetection>
<!--opt,"温差检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</ThermometryDiffDetection>
<FireDetection>
<!--opt,"烟火检测",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</FireDetection>
<ShipsDetection>
<!--opt,"船只检测,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</ShipsDetection>
<IntelligentRuleDisplay>
<!--opt,"热成像智能规则显示参数,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</IntelligentRuleDisplay>
<IntelligentBehaviorRule>
<!--opt,"智能行为规则配置,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</IntelligentBehaviorRule>
<DPC>
<!--opt,"坏点校正配置,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</DPC>
<Metadata>
<!--opt,"Metadata提取,不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</Metadata>
</Thermal>
<PanoramaCamera>
<!--opt,通道属性为全景相机(支持全景相机的相关功能)-->
<PTZCtrl>
<!--opt,云台控制",不支持不返回该节点-->
<InsertChanNo>
<!--opt,xs:integer,"接入通道号"-->
</InsertChanNo>
</PTZCtrl>
</PanoramaCamera>
</ChannelInfo>
</ChannelInfoList>


XML_ChargeRuleInfo

设备网络SDK开发使用手册

<ChargeRuleInfo>
<!--收费规则信息-->
<ruleID min="" max="">
<!--req, integer; 规则ID-->
</ruleID>
<ruleName min="" max="">
<!--req, string; 规则名称-->
</ruleName>
<NoCharge>
<!--opt, 不收费-->
<ruleType opt="noCharge（不收费）">
<!--req, xs:string, -->
</ruleType>
</NoCharge>
<ChargeByTimeRule>
<!--opt, 按时收费信息-->
<ruleType opt="chargeByTime（按时收费）">
<!--req, xs:string, -->
</ruleType>
<firstChargeDuration min="" max="">
<!--req, xs:integer, Minute：首段收费时长-->
</firstChargeDuration>
<firstDurationChargeAmount min="" max="">
<!--req, xs:integer, fen :首段收费金额-->
</firstDurationChargeAmount>
<intervalChargeDuration min="" max="">
<!--req, xs:integer, Minute：间隔收费时长-->
</intervalChargeDuration>
<intervalChargeAmount min="" max="">
<!--req, xs:integer, fen:间隔收费金额-->
</intervalChargeAmount>
<freePackingDuration min="" max="">
<!--req, xs:integer, Minute:免费停车时长-->
</freePackingDuration>
<enableMaxAmount>
<!--req, xs:boolean,是否启用封顶金额-->
</enableMaxAmount>
<dailyMaxAmount min="" max="">
<!--req, xs:integer, fen:每天最高限额-->
</dailyMaxAmount>
</ChargeByTimeRule>
<ChargeByOnceRule>
<!--opt, 按次收费规则信息-->
<ruleType opt="chargeByOnce">
<!--req, xs:string,按次收费类型-->
</ruleType>
<chargeAmount min="" max="">
<!--req, xs:integer,fen;收费金额-->
</chargeAmount>
</ChargeByOnceRule>
<ChargeByTimeSegRule>
<!--opt, 分时段收费规则信息-->
<ruleType opt="chargeByTimeSeg">
<!--req, xs:string,分时段收费规则类型-->
</ruleType>
<freePackingDuration min="" max="">
<!--req, xs:integer,免费停车时长-->
</freePackingDuration>
<timeSegNumber min="" max="">
<!--req, xs:integer,具体时段个数-->
</timeSegNumber>
<timeSegAmountList size="">
<!--req, 时段列表信息-->
<timeSegAmount>
<id>
<!--req, xs:integer;-->
</id>
<startTime min="" max="">
<!--req, xs:integer; 单位：分钟, 开始时间-->
</startTime>
<endTime min="" max="">
<!--req, xs:integer; 单位：分钟, 开始时间-->
</endTime>
<amount min="" max="">
<!--req, xs:integer, fen;金额-->
</amount>
</timeSegAmount>
</timeSegAmountList>
<enableMaxAmount>
<!--req, xs:boolean, 是否启用封顶金额-->
</enableMaxAmount>
<maxAccountPerDay min="" max="">
<!--req, xs:integer, fen;每天最高限额 -->
</maxAccountPerDay>
</ChargeByTimeSegRule>
<ChargeByDataSegRule >
<!--opt, 分时收费规则信息-->
<id>
<!--req, xs:integer;-->
</id>
<ruleType opt="chargeByDateSeg">
<!--req, xs:string,分时收费类型-->
</ruleType>
<freePackingDuration min="" max="">
<!--req, xs:integer, Minute;免费停车时长-->
</freePackingDuration>
<timeSegNumber min="" max="">
<!--req, xs:integer,具体时段个数-->
</timeSegNumber>
<parkingAccountList size="">
<parkingAmount>
<id>
<!--req,xs:integer;-->
</id>
<startTime opt="HH:MM">
<!--req, xs:string; "HH:MM";开始时间-->
</startTime>
<endTime opt="HH:MM">
<!--req, xs:string; "HH:MM";结束时间-->
</endTime>
<account min="" max="">
<!--req, xs:integer, fen;金额-->
</account>
</parkingAmount>
</parkingAccountList>
<enableMaxAmount>
<!--req, xs:boolean, 是否启用封顶金额-->
</enableMaxAmount>
<maxAccountPerDay min="" max="">
<!--req, xs:integer, fen;每天最高限额-->
</maxAccountPerDay>
</ChargeByDataSegRule>
<ChargeByTimeSegUnitRule>
<!--opt, 单位分时 收费规则信息-->
<id>
<!--req, xs:integer;-->
</id>
<ruleType opt="chargeByTimeSegUnit">
<!--req, xs:string,单位分时段收费规则类型-->
</ruleType>
<freePackingDuration min="" max="">
<!--req, xs:integer, Minute;免费停车时长-->
</freePackingDuration>
<timeSegNumber min="" max="">
<!--req, xs:integer,具体时段个数-->
</timeSegNumber>
<parkingAmountList size="">
<parkingAmount>
<id>
<!--req, xs:integer;-->
</id>
<startTime opt="HH:MM">
<!--req, xs:string; "HH:MM";开始时间-->
</startTime>
<endTime opt="HH:MM">
<!--req, xs:string; "HH:MM";结束时间-->
</endTime>
<account min="" max="">
<!--req, xs:integer, fen;金额-->
</account>
<chargeCostUnit opt="minute">
<!--req, xs:string,收费单元-->
</chargeCostUnit>
<minAmount min="" max="">
<!--req, xs:integer, fen;封顶金额 -->
</minAmount>
<minTimePeriod min="" max="">
<!--req, xs:integer, Minute;最小跨段 时间-->
</minTimePeriod>
</parkingAmount>
</parkingAmountList>
<enableMaxAmount>
<!--req, xs:boolean,是否启用封顶-->
</enableMaxAmount>
<dailyMaxAmount min="" max="">
<!--req, xs:integer, fen;每天最高限额-->
</dailyMaxAmount>
<enableFreeParkingDuration>
<!--req, xs:boolean,是否包含免费时长-->
</enableFreeParkingDuration>
</ChargeByTimeSegUnitRule>
<ChargeByDayNightTimeSegRule>
<!--opt, 日夜分时按次收费信息-->
<id>
<!--req, xs:integer;-->
</id>
<ruleType opt="chargeByDayNightTimeSeg">
<!--req, xs:string, 日夜分时按次收费类型-->
</ruleType>
<initialfreeParkingDuration min="" max="">
<!--req, xs:integer, Minute:初始免费停车时长-->
</initialfreeParkingDuration>
<enableFreeTimeExceedingCharge>
<!--req, xs:boolean,超出免费时长是否收费-->
</enableFreeTimeExceedingCharge>
<dayStartTime opt="HH:MM">
<!--req, xs:string, "HH:MM";白天开始时间-->
</dayStartTime>
<firstUnitDuration min="" max="">
<!--req, xs:integer, Minute:首段单位时间-->
</firstUnitDuration>
<firstDurationAmount min="" max="">
<!--req, xs:integer, fen:首段收费-->
</firstDurationAmount>
<unitTime min="" max="">
<!--req, xs:integer, Minute:单位时间-->
</unitTime>
<unitTimeAccount min="" max="">
<!--req, xs:integer, fen:单位时间收费 -->
</unitTimeAccount>
<payByOnceStartTime opt="HH:MM">
<!--req, xs:string, "HH:MM";按次收费时间段开始时间-->
</payByOnceStartTime>
<payByOnce min="" max="">
<!--req, xs:integer, fen;按次收费 -->
</payByOnce>
<dailyMaxAmount min="" max="">
<!--req, xs:integer, fen;24小时内封顶金额 -->
</dailyMaxAmount>
<enableChargeByTime>
<!--req, xs:boolean, 24小时内存在时间收费时段，是否全按时间收费-->
</enableChargeByTime>
<enableChargeByOnce>
<!--req, xs:boolean, 按次收费的情况下一次出入算一次-->
</enableChargeByOnce>
<maxfreeChargeNumber min="" max="">
<!--req, xs:integer, 最大免费次数-->
</maxfreeChargeNumber>
</ChargeByDayNightTimeSegRule>
</ChargeRuleInfo>


XML_DelFaceRecordCond

设备网络SDK开发使用手册

<DelFaceRecordCond>
<recordId>
<!--req, xs:integer, 记录ID-->
</recordId>
<faceDbId>
<!--req, xs:integer, 人脸库id-->
</faceDbId>
<Address>
<!--req, 存储地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</DelFaceRecordCond>


XML_DelSnapRecordCond

设备网络SDK开发使用手册

<DelSnapRecordCond>
<recordId>
<!--req, xs:integer记录ID-->
</recordId>
<Address>
<!--req, 存储服务器IP地址 -->
<ipVersion>
<!-- req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!-- dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!-- dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</DelSnapRecordCond>


XML_EventNotificationAlert

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<EventNotificationAlert version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<ipAddress>
<!--dep,xs:string-->
</ipAddress>
<ipv6Address>
<!--dep,xs:string-->
</ipv6Address>
<portNo>
<!--opt,xs:integer-->
</portNo>
<protocol>
<!--opt,xs:string,"HTTP,HTTPS"-->
</protocol>
<macAddress>
<!--opt,xs:string;MAC-->
</macAddress>
<dynChannelID>
<!--opt,xs:string,数字通道号-->
</dynChannelID>
<channelID>
<!--dep,xs:string-->
</channelID>
<dateTime>
<!--req,xs:datetime ios8601,eg: 2017-04-22T15:39:01+08:00-->
</dateTime>
<activePostCount>
<!--req,xs:integer-->
</activePostCount>
<eventType>
<!--req,xs:string,"ANPR"-->
</eventType>
<eventState>
<!--req,xs:string,"active,inactive"-->
</eventState>
<eventDescription>
<!--req,xs:string-->
</eventDescription>
<channelName>
<!--opt,xs:string,通道名称-->
</channelName>
<deviceID>
<!--opt,xs:string;设备ID-->
</deviceID>
<ANPR>
<!--dep,if <eventType> is "ANPR"-->
<region>
<!--opt,xs:string,地区-->
</region>
<country>
<!--opt,xs:string,国家和地区-->
</country>
<area>
<!--opt,xs:string,区域（省份），各国家和地区内部区域枚举，阿联酋参照字典emi_area-->
</area>
<licensePlate>
<!--req,xs:string,车牌号码,eg.(中文:蓝浙AX2P12 - 需要带车牌颜色);(海外:A283KY77 -不需要带上车牌颜色)-->
</licensePlate>
<line>
<!--req,xs:integer,识别车道号-->
</line>
<direction>
<!--opt,xs:string,牌识方向,"reverse,forward,unknown"-->
</direction>
<confidenceLevel>
<!--req,xs:integer,置信度等级,[0,100]-->
</confidenceLevel>
<plateType>
<!--opt,xs:string,参考车牌类型定义-->
</plateType>
<plateColor>
<!--opt,xs:string,参考车牌颜色定义-->
</plateColor>
<licenseBright>
<!--opt,xs:integer,车牌亮度值[0~255]-->
</licenseBright>
<Rect>
<!--opt,匹配图片车牌子图坐标-->
<!--后端超脑使用,后续不再扩展-->
<height>
<!--req-xs:float,高度-->
</height>
<width>
<!--req-xs:float,宽度-->
</width>
<x>
<!--req-xs:float,左上角原点-->
</x>
<y>
<!--req-xs:float,左上角原点-->
</y>
</Rect>
<pilotsafebelt>
<!--opt,xs:string,"unknown,yes,no",检测主驾驶安全带-->
</pilotsafebelt>
<vicepilotsafebelt>
<!--opt,xs:string,"unknown,yes,no",检测副驾驶安全带-->
</vicepilotsafebelt>
<pilotsunvisor>
<!--opt,xs:string,"unknown,yes,no",主驾驶检测遮阳板-->
</pilotsunvisor>
<vicepilotsunvisor>
<!--opt,xs:string,"unknown,yes,no",副驾驶检测遮阳板-->
</vicepilotsunvisor>
<envprosign>
<!--opt,xs:string,"unknown,yes,no",检测黄标车-->
</envprosign>
<dangmark>
<!--opt,xs:string,"unknown,yes,no",检测危险品车-->
</dangmark>
<uphone>
<!--opt,xs:string,"unknown,yes,no",主驾驶打电话-->
</uphone>
<pendant>
<!--opt,xs:string,"unknown,yes,no",检测车窗悬挂物-->
</pendant>
<tissueBox>
<!--opt,xs:string,"unknown,yes,no",纸巾盒检测-->
</tissueBox>
<frontChild>
<!--opt,xs:string,"unknown,yes,no",副驾驶怀抱婴儿检测-->
</frontChild>
<label>
<!--opt,xs:string,"unknown,yes,no",贴标检测-->
</label>
<decoration>
<!--opt,xs:string,"unknown,yes,no",摆件检测-->
</decoration>
<smoking>
<!--opt,xs:string,"unknown,yes,no",吸烟检测-->
</smoking>
<perfumeBox>
<!--opt,xs:string,"unknown,yes,no",香水盒检测-->
</perfumeBox>
<pdvs>
<!--opt,xs:string,"unknown,yes,no",天窗站人-->
</pdvs>
<helmet>
<!--opt,xs:string,"unknown,yes,no",头盔检测-->
</helmet>
<twoWheelVehicle>
<!--opt,xs:string,"unknown,yes,no",二轮车检测-->
</twoWheelVehicle>
<threeWheelVehicle>
<!--opt,xs:string,"unknown,yes,no",三轮车检测-->
</threeWheelVehicle>
<blackness>
<!--opt,xs:integer,林格曼黑度值,用于冒黑烟检测-->
</blackness>
<plateCharBelieve>
<!--opt,xs:string,各个识别字符的置信度,如检测到车牌"A12345",置信度为10,20,30,40,50,60,70,则表示"浙"字正确的可能性只有10%,"A"字的正确的可能性是20%-->
</plateCharBelieve>
<speedLimit>
<!--opt,xs:integer,限速上限,超速时有效-->
</speedLimit>
<illegalInfo>
<!--opt,违法信息-->
<illegalCode>
<!--req,xs:string,违法代码-->
</illegalCode>
<illegalName>
<!--req,xs:string,违法名称-->
</illegalName>
<illegalDescription>
<!--opt,xs:string,违法描述-->
</illegalDescription>
</illegalInfo>
<vehicleType>
<!--opt,xs:string,"unknown,largeBus,truck,vehicle,van,buggy,pedestrian,twoWheelVehicle,threeWheelVehicle,SUVMPV,mediumBus,motorVehicle,nonmotorVehicle,smallCar,miniCar,pickupTruck",车辆类型,参考车辆类型定义-->
</vehicleType>
<postPicFileName>
<!--opt,xs:string,违章时取哪张图片作为卡口图,none-表示不取-->
</postPicFileName>
<featurePicFileName>
<!--opt,xs:string,闯红灯电警,取哪图作为特写图,none-表示不取-->
</featurePicFileName>
<detectDir>
<!--opt,xs:integer,监测方向,1-上行,2-下行,3-双向,4-由东向西,5-由南向北,6-由西向东,7-由北向南,8-其它-->
</detectDir>
<detectType>
<!--opt,xs:integer,检测方式,0-车辆检测,1-地感触发,2-视频触发,3-多帧识别,4-雷达触发,5-混行检测-->
</detectType>
<barrierGateCtrlType>
<!--opt,xs:integer,历时数据开闸标志 0-已经开启,1-未开启-->
</barrierGateCtrlType>
<alarmDataType>
<!--opt,xs:integer,0-实时数据,1-历史数据-->
</alarmDataType>
<dwIllegalTime>
<!--opt,xs:integer,违法持续时间（ms）=抓拍最后一张图片的时间-抓拍第一张图片的时间-->
</dwIllegalTime>
<vehicleInfo>
<index>
<!--req,xs:integer,车辆序号-->
</index>
<vehicleType>
<!--opt,xs:integer,车辆类型,0 表示其它车型,1 表示小型车,2 表示大型车,3表示行人触发,4表示二轮车触发,5表示三轮车触发 6表示机动车触发,（老车辆类型，支持基本车辆类型返回，本字段和vehicleInfo字段平级的vehicleType字段同时只需要返回一个）-->
</vehicleType>
<colorDepth>
<!--req,xs:integer,车身颜色深浅,0-深色,1-浅色-->
</colorDepth>
<color>
<!--req,xs:string,车身颜色,参考车辆颜色定义-->
</color>
<speed>
<!--opt,xs:integer,车辆速度,单位km/h-->
</speed>
<length>
<!--req,xs:integer,前一辆车的车身长度,单位分米dm-->
</length>
<vehicleLogoRecog>
<!--req,xs:integer,车辆主品牌-->
</vehicleLogoRecog>
<vehileSubLogoRecog>
<!--opt,xs:integer,车辆子品牌-->
</vehileSubLogoRecog>
<vehileModel>
<!--opt,xs:integer,车辆子品牌年款-->
</vehileModel>
<vehicleTypeByWeight>
<!--opt,xs:integer,1-一类车(客车:7座及7座以下、货车:2吨以下),2-二类车(客车:8-19座、货车:载重2吨-5吨(含)),3-三类车(客车:20-39座、货车:载重5吨-10吨(含)),4-四类车(客车:40座以上"货车:10吨-15吨(含),5-五类车(货车载重15吨以上))-->
</vehicleTypeByWeight>
</vehicleInfo>
<EntranceInfo>
<!--opt-->
<parkingID>
<!--opt,xs:string,停车点编号-->
</parkingID>
<gateID>
<!--opt,xs:string,出入口编号-->
</gateID>
<direction>
<!--opt,xs:string,"enter,leave",出入方向-->
</direction>
<cardNo>
<!--opt,xs:string,卡编号-->
</cardNo>
<parkType>
<!--opt,xs:string,"permanent,temporary",停车类型-->
</parkType>
</EntranceInfo>
<pictureInfoList>
<!--req-->
<pictureInfo>
<!--req,xs:list-->
<fileName>
<!--req,xs:string,图片名称,必须和报警消息一起传过来的图片名称对应,参照fileName定义-->
</fileName>
<type>
<!--req,xs:string,"detectionPicture,licensePlatePicture,pilotPicture,copilotPicture,compositePicture,plateBinaryPicture,nonMotorPicture,pedestrianDetectionPicture,pedestrianPicture",参照图片类型定义-->
</type>
<dataType>
<!--req,xs:integer,0,数据上传;1,URL上传-->
</dataType>
<picRecogMode>
<!--opt,xs:integer,0-正向车牌识别,1-背向识别(尾牌识别)-->
</picRecogMode>
<redLightTime>
<!--opt,xs:integer,经过的红灯时间(s)-->
</redLightTime>
<vehicleHead>
<!--opt,xs:integer,"unknown,forward,back",forward-正向车牌识别,back-背向识别(尾牌识别)-->
</vehicleHead>
<absTime>
<!--opt,xs:time,绝对时间点,格式:yyyyMMddHHmmssxxx,e.g.20090810235959999 最后三位为毫秒数-->
</absTime>
<plateRect>
<!--dep,归一化,数值为当前画面的百分比大小*1000,精度为小数点后三位,当type= detectionPicture时生效-->
<X>
<!--req,xs:integer,边界框左上角点的X轴坐标-->
</X>
<Y>
<!--req,xs:integer,边界框左上角点的Y轴坐标-->
</Y>
<width>
<!--req,xs:integer,边界框的宽度-->
</width>
<height>
<!--req,xs:integer,边界框的高度-->
</height>
</plateRect>
<vehicelRect>
<!--dep,归一化,数值为当前画面的百分比大小*1000,精度为小数点后三位,当type=detectionPicture时生效-->
<X>
<!--req,xs:integer,边界框左上角点的X轴坐标-->
</X>
<Y>
<!--req,xs:integer,边界框左上角点的Y轴坐标-->
</Y>
<width>
<!--req,xs:integer,边界框的宽度-->
</width>
<height>
<!--req,xs:integer,边界框的高度-->
</height>
</vehicelRect>
<pictureURL>
<!--dep,xs:string,图片URL, 当<dataType> ==URL时生效-->
</pictureURL>
</pictureInfo>
</pictureInfoList>
<hasMoreData>
<!--opt,xs:boolean,是否还有后续数据,本节点用于先报车牌信息,再报完整的xml+图片数据,第二次完整上传通过UUID与第一次上传的信息关联-->
</hasMoreData>
<originalLicensePlate>
<!--opt,xs:string,原始车牌号码,当为小语种车牌时,返回未转化为英文的原始车牌号码,支持返回类似德语的小语种符号(如?/?、?/?、ü/ü等符号)-->
</originalLicensePlate>
<!--countryIndex和CRIndex兼容逻辑 -->
<!--设备兼容：为了兼容老用户，新老字段都有返回，当值为CRIndex<=255时，countryIndex取值和CRIndex相同，当CRIndex>255时,countryIndex字段取值为253（该字段无效，需要使用CRIndex字段）-->
<!--集成流程：新用户如果能力中有CRIndex字段，优先使用CRIndex，如果能力中没有，则使用countryIndex。 老用户只集成了countryIndex，如果遇到countryIndex为253时，需要增加处理逻辑，使用CRIndex字段-->
<CRIndex>
<!--opt,xs:integer,国家/地区索引,为0则代表通用,不区分具体国家/地区,包含countryIndex，扩展了区域，参考字典CRIndex，优先使用该字段-->
</CRIndex>
<VehicelGPSInfo>
<!--opt,车辆GPS位置信息-->
<longitudeType>
<!--req,xs:string "经度" "E,W"-->
</longitudeType>
<latitudeType>
<!--req,xs:string "纬度" "S,N"-->
</latitudeType>
<Longitude>
<!--req,"经度"-->
<degree>
<!--req,xs:integer-->
</degree>
<minute>
<!--req,xs:integer-->
</minute>
<sec>
<!--req,xs:float,"精确到小数点后6位"-->
</sec>
</Longitude>
<Latitude>
<!--req,"纬度"-->
<degree>
<!--req,xs:integer-->
</degree>
<minute>
<!--req,xs:integer,-->
</minute>
<sec>
<!--req,xs:float,"精确到小数点后6位"-->
</sec>
</Latitude>
</VehicelGPSInfo>
<vehiclePositionControl>
<!--opt,xs:string,vehicleMonitor-车辆智能布防(即通过PUT /ISAPI/Traffic/channels/<ID>/vehicleMonitor/<taskID>/startTask触发),
manualVehicleMonitor-手动车辆布防(即通过PUT /ISAPI/Traffic/channels/<ID>/manualVehicleMonitor触发),
dailyVehicleMonitor-日常车辆布防(复用车辆检测配置)可通过车辆检测能力中区分是否支持日常车辆布防,
(即通过/ISAPI/Traffic/channels/<ID>/vehicleDetect/capabilities中isSupportDailyVehicleMonitor判断,日常车辆布防时,设备不仅会上报ANPR报警还会实时上报vehicleMonitor车辆布防报警)
若不返回该字段则代表为普通车辆检测,-->
</vehiclePositionControl>
<vehicleMonitorTaskID>
<!--opt,xs:string,车辆智能布防任务ID,64位字符串,创建任务时由上层下发给设备,上层确保ID唯一性,vehiclePositionControl=vehicleMonitor时返回-->
</vehicleMonitorTaskID>
</ANPR>
<UUID>
<!--opt,xs:string,通用唯一识别码,用于跨服务器关联同一次抓拍-->
</UUID>
<picNum>
<!--opt,xs:integer,图片数量-->
</picNum>
<monitoringSiteID>
<!--opt,xs:string,监测点编号-->
</monitoringSiteID>
<ePlateUUID>
<!--opt,xs:string,与电子车牌关联ID,如果此节点不为空且有值,表示有关联的电子车牌-->
</ePlateUUID>
<isDataRetransmission>
<!--opt,xs:boolean,重传数据标记（由于网络异常等因素，导致的实时检测的数据上传失败，后设备异常因素恢复后“重新”上传当时的采集分析数据）-->
</isDataRetransmission>
</EventNotificationAlert>


XML_EventNotificationAlert_AID

设备网络SDK开发使用手册

<?xml version="1.0" encoding="utf-8"?>
<EventNotificationAlert version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<ipAddress>
<!--dep,xs:string,172.6.64.7-->
</ipAddress>
<ipv6Address>
<!--dep,xs:string,fe80::4080:c199:f513:3ebf%13-->
</ipv6Address>
<portNo>
<!--opt,xs:integer-->
</portNo>
<protocol>
<!--opt,xs:string,"HTTP,HTTPS"-->
</protocol>
<macAddress>
<!--opt,xs:string;MAC,01:17:24:45:D9:F4-->
</macAddress>
<channelID>
<!--dep,xs:string-->
</channelID>
<dateTime>
<!--req,xs:datetime ios8601,eg: 2017-04-22T15:39:01+08:00-->
</dateTime>
<activePostCount>
<!--req,xs:integer,激活端口次数,代表着设备对同一个目标触发的报警次数-->
</activePostCount>
<eventType>
<!--req,xs:string,"AID"-->
</eventType>
<eventState>
<!--req,xs:string,"active,inactive" ,报警上报时为active ,心跳上报时为inactive-->
</eventState>
<eventDescription>
<!--req,xs:string,automatic incident detection-->
</eventDescription>
<channelName>
<!--opt,xs:string,通道名称-->
</channelName>
<deviceID>
<!--opt,xs:string,即PUID,ehome报警中需返回,例如test0123-->
</deviceID>
<AID>
<!--dep,if <eventType> is AID-->
<illegalTrafficEvent>
<!--req,xs:string,"illegalParking,wrongDirection,crossLane,congestion,pedestrian,objectDroppedDown,smoke,turnRound,laneChange,vehicleExist,edfManual,trafficAccident,construction,roadBlock,abandonedObject,parallelParking,fogDetection,tfsManuaTrigger,unknown",tfsManuaTrigger(手动违章取证，对应事件：/ISAPI/PTZCtrl/channels/1/ManualTraceEvidenceArea)-->
</illegalTrafficEvent>
<VehicleInfo>
<!--opt,车辆信息-->
<vehicleSpeed>
<!--opt,xs:integer,车辆时速[0~255km/h]-->
</vehicleSpeed>
<vehicleEnterState>
<!--opt,xs:string,"vehicleEnter,vehicleExit"-->
</vehicleEnterState>
<vehicleConfidence>
<!--opt,xs:float,车辆置信度[0~100.0]-->
</vehicleConfidence>
<vehicleType>
<!--opt,xs:string,车辆类型-->
</vehicleType>
<vehicleColor>
<!--opt,xs:string,车辆颜色-->
</vehicleColor>
</VehicleInfo>
<PlateInfo>
<!--opt,车牌信息-->
<plate>
<!--req,xs:string,车牌号码,例如:浙A12345-->
</plate>
<plateType>
<!--req,xs:string,"unknown,92TypeCivil,arm,upDownMilitay,92TypeArm,leftRightMilitay,02TypePersonalized,yellowTwoLine,04NewMilitay,embassy,oneLineArm,twoLineArm,yellow1225FarmVehicle,green1325FarmVehicle,yellow1325FarmVehicle,motorola,coach,tempTravl,trailer,consulate,hongKongMacao,tempEntry,civilAviation,newEnergy"-->
</plateType>
<plateColor>
<!--req,xs:string,"white,yellow,blue,black,green,civilAviationBlack,civilAviationGreen"-->
</plateColor>
<licenseBright>
<!--opt,xs:integer,车牌亮度值[0~255]-->
</licenseBright>
<confidence>
<!--opt,xs:float,车牌置信度[0~100.0]-->
</confidence>
</PlateInfo>
<region>
<!--opt,xs:string,地区-->
</region>
<country>
<!--opt,xs:string,国家和地区-->
</country>
<parkingSerialNo>
<!--dep,xs:string,if <illegalTrafficEvent> is <parallelParking>,泊车编号,可由数字与字母组成,目前最大支持16个字符,上层用户需确保唯一性,对应接口配置URL为：/ISAPI/Traffic/channels/<ID>/AID/<SID>/parallelParking-->
</parkingSerialNo>
<relatedLaneNo>
<!--opt,xs:string -->
</relatedLaneNo>
<targetType>
<!--dep,xs:string,if <illegalTrafficEvent> is pedestrian,检测的目标类型,"pedestrian,twoWheelVehicle,threeWheelVehicle"-->
</targetType>
<!--countryIndex和CRIndex兼容逻辑 -->
<!--设备兼容：为了兼容老用户，新老字段都有返回，当值为CRIndex<=255时，countryIndex取值和CRIndex相同，当CRIndex>255时,countryIndex字段取值为253（该字段无效，需要使用CRIndex字段）-->
<!--集成流程：新用户如果能力中有CRIndex字段，优先使用CRIndex，如果能力中没有，则使用countryIndex。 老用户只集成了countryIndex，如果遇到countryIndex为253时，需要增加处理逻辑，使用CRIndex字段-->
<CRIndex>
<!--opt,xs:integer,国家/地区索引,为0则代表通用,不区分具体国家/地区,包含countryIndex，扩展了区域，参考字典CRIndex，优先使用CRIndex-->
</CRIndex>
</AID>
<detectionPictureTransType>
<!--opt,xs:string,图片传输方式,"url,binary"-->
</detectionPictureTransType>
<detectionPicturesNumber>
<!--opt,xs:integer,表示布防接收报警中包含的图片数量,有图片返回,没有图片不返回"-->
</detectionPicturesNumber>
<PictureURLInfoList>
<!--dep,图片URL信息列表,if <detectionPictureTransType> is " url "-->
<PictureURLInfo>
<!--opt,list-->
<pictureName>
<!--req,xs:string,"detectionPicture,licensePlatePicture"(车牌小图图片名称) -->
</pictureName>
<pictureURL>
<!--req,xs:string,图片URL-->
</pictureURL>
</PictureURLInfo>
</PictureURLInfoList>
</EventNotificationAlert>


XML_EventNotificationAlert_TFS

交通取证TFS事件XML数据

<?xml version="1.0" encoding="UTF-8"?>

<EventNotificationAlert xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, opt, object, 事件报警, attr:version{req, string, 协议版本}-->
  <ipAddress>
    <!--ro, req, string, 报警设备IPv4地址-->172.6.64.7
  </ipAddress>
  <ipv6Address>
    <!--ro, opt, string, 报警设备IPv6地址-->1080:0:0:0:8:800:200C:417A
  </ipv6Address>
  <portNo>
    <!--ro, opt, int, 报警设备端口号-->80
  </portNo>
  <protocol>
    <!--ro, opt, enum, 传输通信协议类型, subType:string, [HTTP#HTTP,HTTPS#HTTPS,EHome#EHome], desc:传输通信协议HTTP/HTTPS/EHome（萤石透传ISAPI 的时候赋值HTTP； ISUP透传ISAPI 的时候赋值 EHome）-->HTTP
  </protocol>
  <macAddress>
    <!--ro, opt, string, MAC地址-->01:17:24:45:D9:F4
  </macAddress>
  <dynChannelID>
    <!--ro, opt, string, 数字通道号-->test
  </dynChannelID>
  <channelID>
    <!--ro, opt, int, 触发报警的设备通道号, desc:触发的视频通道号-->1
  </channelID>
  <dateTime>
    <!--ro, req, datetime, 报警触发时间-->2004-05-03T17:30:08+08:00
  </dateTime>
  <activePostCount>
    <!--ro, opt, int, 同一个报警已经上传的次数, desc:事件触发频次-->1
  </activePostCount>
  <eventType>
    <!--ro, req, enum, 事件类型, subType:string, [TFS#TFS], desc:TFS-交通取证-->TFS
  </eventType>
  <eventState>
    <!--ro, req, enum, 事件状态, subType:string, [active#有效事件,inactive#无效事件], desc:针对持续性事件-->active
  </eventState>
  <eventDescription>
    <!--ro, req, string, 事件描述-->test
  </eventDescription>
  <channelName>
    <!--ro, opt, string, 通道名称, range:[1,64]-->test
  </channelName>
  <deviceID>
    <!--ro, opt, string, 设备ID, desc:EHome报警中需返回，例如test0123（EHome2.0、EHome4.0、ISUP5.0）-->12345
  </deviceID>
  <TFS>
    <!--ro, opt, object, 交通取证事件信息-->
    <illegalTrafficEvent>
      <!--ro, req, enum, 交通违法事件, subType:string, [abandonedObject#抛洒物,checkPoint#卡口检测,conflagration#火灾,congestion#拥堵,construction#施工,crossLane#压线,edfManual#手动取证,fogDetection#浓雾检测,gasser#加塞,group#人员聚集,illegalParking#违停,intersectionStranded#车辆滞留,laneChange#变道,objectDroppedDown#物体坠落,occupyOvertakingLane#占用超车道,parallelParking#侧方位停车,pedestrian#行人检测,polyJam#多边形拥堵 鹰眼拥堵,prohibitionMarkViolation#违反禁令,roadBlock#路障,slowMoving#车辆缓行,smoke#烟雾,speed#车辆超速,suddenSpeedDrop#速度骤降,trafficAccident#交通事故检测,trafficConflict#车流冲突,turnRound#掉头,unknown#未知,vehicleexist#机占非,wrongDirection#逆行,blackSmokeVehicle#黑烟车,occupyDedicatedLane#占用专用车道,notDriveInDedicatedLane#未按专用车道行驶,nonZipperMerge#未交替同行,SSharpDriving#蛇形行驶,notKeepDistance#未保持车距,notSlowZebraCrossing#斑马线未减速,overtakeRightSide#右侧超车,lowSpeed#机动车低速行驶,dragRacing#飙车,changeLaneContinuously#连续变道,largeVehicleOccupyLine#大车占道,emergencyLane#占用应急车道,lowVisibility#低环境能见度]-->abandonedObject
    </illegalTrafficEvent>
    <illegalType>
      <!--ro, opt, string, 违章类型, desc:采用国标定义-->1001A
    </illegalType>
    <VehicleInfo>
      <!--ro, opt, object, 车辆信息-->
      <vehicleType>
        <!--ro, req, enum, 车辆类型, subType:string, [SUVMPV#SUV/MPV,buggy#小货车,bus#客车,concreteMixer#混凝土搅拌车,containerTruck#集装箱卡车,coupe#轿跑,crane#吊车,hatchback#两厢轿车,largeBus#大型客车,lightTruck#轻微货车,mediumBus#中型客车,mediumHeavyTruck#中重型货车,miniCar#微型轿车（平台转成：轿车）,minibus#小型客车,minitruck#微卡,motorVehicle#机动车（平台转成：轿车）,nonmotorVehicle#非机动车（平台转成：三轮车）,oilTankTruck#油罐车,pedestrian#行人,pickupTruck#皮卡车（平台转成：小货车）,platformTrailer#平板拖车,saloon#三厢轿车,slagTruck#渣土车,smallCar#小型轿车（平台转成：轿车）,threeWheelVehicle#三轮车,truck#货车,twoWheelVehicle#二轮车,unknown#未知,van#面包车,vehicle#轿车]-->SUVMPV
      </vehicleType>
      <vehicleColor>
        <!--ro, req, enum, 车辆颜色, subType:string, [black#黑,blue#蓝,brown#棕,cyan#青,deepBlue#深蓝,deepGray#深灰,gray#灰,green#绿,orange#橙,pink#粉,purple#紫,red#红,silver#银,unknown#未知,white#白,yellow#黄]-->black
      </vehicleColor>
      <vehicleSpeed>
        <!--ro, opt, int, 车辆时速, range:[0,255], unit:km/h, unitType:速度-->1
      </vehicleSpeed>
      <vehicleEnterState>
        <!--ro, opt, enum, 车辆进入状态, subType:string, [vehicleEnter#车辆进入,vehicleExit#车辆离开]-->vehicleEnter
      </vehicleEnterState>
      <vehicleConfidence>
        <!--ro, opt, float, 车辆置信度, range:[0.0,100.0]-->0.0
      </vehicleConfidence>
      <vehicleLogo>
        <!--ro, opt, int, 车辆主品牌, desc:参考车辆主品牌索引-->1
      </vehicleLogo>
    </VehicleInfo>
    <PlateInfo>
      <!--ro, opt, object, 车牌信息-->
      <plate>
        <!--ro, req, string, 车牌号码, desc:noPlate#识别出无车牌车辆；unknown#未识别出车牌；具体车牌号格式，机动车16字节字符串，中文:蓝浙AX2P12 - 需要带车牌颜色；海外:A283KY77 -不需要带上车牌颜色；非机动车48字节字符串“抚州临时12345”-->蓝浙A12345
      </plate>
      <plateType>
        <!--ro, req, enum, 车牌类型, subType:string, [02TypePersonalized#02式个性化车,04NewMilitay#04式新军车,92FarmVehicle#民用车双行尾牌（补录）,92TypeArm#92式武警车,92TypeCivil#92式民用车,arm#警车,civilAviation#民航车牌,coach#教练车,consulate#领馆汽车,embassy#使馆车,emergency#应急车牌,green1325FarmVehicle#绿色1325农用车,hongKongMacao#港澳入出车,leftRightMilitay#左右军车,motorola#摩托车,newEnergy#新能源车牌,oneLineArm#一行结构的新武警车,oneLineArmHeadquarters#一行结构武警总部车牌,tempEntry#临时入境车,tempTravl#临时行驶车,trailer#挂车,twoLineArm#两行结构的新武警车,twoLineArmHeadquarters#两行结构武警总部车牌,unknown#未知,upDownMilitay#上下军车,yellow1225FarmVehicle#黄色1225农用车,yellow1325FarmVehicle#黄色1325结构农用车,yellowTwoLine#黄色双行尾牌]-->02TypePersonalized
      </plateType>
      <plateColor>
        <!--ro, req, enum, 车牌颜色, subType:string, [black#黑色,blue#蓝色,civilAviationBlack#民航黑色,civilAviationGreen#民航绿色,golden#金色,green#绿色,mixedColor#花底,newEnergyGreen#新能源绿色,newEnergyYellowGreen#新能源黄绿色,orange#橙色,other#其他颜色,red#红色,unknown#未知,white#白色,yellow#黄色]-->black
      </plateColor>
      <licenseBright>
        <!--ro, opt, int, 车牌亮度值, range:[0,255]-->1
      </licenseBright>
      <confidence>
        <!--ro, opt, float, 车牌置信度, range:[0.0,100.0]-->0.0
      </confidence>
    </PlateInfo>
    <SceneInfo>
      <!--ro, opt, object, 场景信息-->
      <scenesID>
        <!--ro, opt, string, 场景ID, range:[1,16]-->test
      </scenesID>
      <sceneName>
        <!--ro, opt, string, 场景名称, range:[1,32]-->test
      </sceneName>
      <PTZPos>
        <!--ro, opt, object, PTZ位置-->
        <elevation>
          <!--ro, opt, int, 仰角, range:[-900,2700]-->1
        </elevation>
        <azimuth>
          <!--ro, opt, int, 方位角, range:[0,3600]-->1
        </azimuth>
        <absoluteZoom>
          <!--ro, opt, int, 变倍倍率, range:[1,1000]-->1
        </absoluteZoom>
      </PTZPos>
      <relatedAreaNo>
        <!--ro, opt, string, 关联区域编号, range:[1,8], desc:由/ISAPI/Traffic/channels/<channelID>/eventRule/<SID>生成(对应<ruleId>),拥堵事件配置对应URL:/ISAPI/Traffic/channels/<channelID>/AID/<SID>/ployCongestion(指定关联区域号relatedAreaNo)-->1
      </relatedAreaNo>
      <RelatedRegionCoordinatesList>
        <!--ro, opt, array, 关联区域坐标点列表, subType:object, range:[3,10], desc:为relatedAreaNo对应的区域坐标-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标点, desc:屏幕左上角为坐标原点-->
          <positionX>
            <!--ro, req, float, x坐标, range:[0.000,1.000]-->0.000
          </positionX>
          <positionY>
            <!--ro, req, float, y坐标, range:[0.000,1.000]-->0.000
          </positionY>
        </RegionCoordinates>
      </RelatedRegionCoordinatesList>
    </SceneInfo>
    <relatedLaneNo>
      <!--ro, opt, int, 关联车道号-->1
    </relatedLaneNo>
    <region>
      <!--ro, opt, enum, 区域（地区）, subType:string, [AFandAM#非美 Africa and America,APAC#亚太区 Asia-Pacific Region,All#所有区域（All Region）,ER#俄语区域（Russian Region）,EU#欧洲（Europe Region）,EUandCIS#欧洲&俄罗斯（EU&CIS）,HKandMO#港澳区 Hong Kong and Macao,ME#中东（Middle East）,THAandLA#泰国老挝区Thailand and Laos,other#其他（other）]-->AFandAM
    </region>
    <country>
      <!--ro, opt, enum, 国家, subType:int, [0#Unsupported算法库不支持牌识国家,1#Czech Republic捷克共和国,10#Moldova摩尔多瓦,100#Reserved保留字段,101#Reserved保留字段,102#Reserved保留字段,103#Reserved保留字段,104#Egypt埃及,105#Libya利比亚,106#Sudan苏丹,107#Tunisia突尼斯,108#Algeria阿尔及利亚,109#Morocco摩洛哥,11#Russia俄罗斯,110#Ethiopia埃塞俄比亚,111#Eritrea厄立特里亚,112#Somalia Democratic索马里,113#Djibouti吉布提,114#Kenya肯尼亚,115#Tanzania坦桑尼亚,116#Uganda乌干达,117#Rwanda卢旺达,118#Burundi布隆迪,119#Seychelles塞舌尔,12#Ukraine乌克兰,120#Chad乍得,121#Central African中非,122#Cameroon喀麦隆,123#Equatorial Guinea赤道几内亚,124#Gabon加蓬,125#Congo刚果共和国（即：刚果（布））,126#Democratic Republic of the Congo刚果民主共和国（即：刚果（金））,127#Sao Tome and Principe圣多美和普林西比,128#Mauritania毛里塔尼亚,129#Western Sahara西撒哈拉（撒拉威）,13#Belgium比利时,130#Senegal塞内加尔,131#Gambia冈比亚,132#Mali马里,133#Burkina Faso布基纳法索,134#Guinea几内亚,135#Guinea-Bissau几内亚比绍,136#Cape Verde佛得角,137#Sierra Leone塞拉利昂,138#Liberia利比里亚,139#Ivory Coast科特迪瓦,14#Bulgaria保加利亚,140#Ghana加纳,141#Togo多哥,142#Benin贝宁,143#Niger尼日尔,144#Zambia赞比亚,145#Angola安哥拉,146#Zimbabwe津巴布韦,147#Malawi马拉维,148#Mozambique莫桑比克,149#Botswana博茨瓦纳,15#Denmark丹麦,150#Namibia纳米比亚,151#South Africa南非,152#Swaziland斯威士兰,153#Lesotho莱索托,154#Madagasca马达加斯加,155#Comoros科摩罗,156#Mauritius毛里求斯,157#Nigeria尼日利亚,158#South Sudan南苏丹,159#Saint Helena圣赫勒拿（英国海外省）,16#Finland芬兰,160#Mayotte马约特（法国海外省）,161#Reunion留尼旺（法国海外省）,162#Canary Islands加那利群岛（西班牙海外领土）,163#AZORES亚速尔群岛（北大西洋非洲西海岸（葡萄牙））,164#Madeira马德拉群岛（北大西洋非洲西海岸（葡萄牙））,165#Reserved保留字段,166#Reserved保留字段,167#Reserved保留字段,168#Reserved保留字段,169#Canada加拿大,17#United Kingdom英国 之前叫Great Britain,170#Greenland Nuuk格陵兰（丹麦王国的海外自治领土）,171#Pierre and Miquelon圣皮埃尔和密克隆（法国海外领土）,172#United State美国,173#Bermuda百慕大（英国海外领土）,174#Mexico墨西哥,175#Guatemala危地马拉,176#Belize伯利兹,177#El Salvador萨尔瓦多,178#Honduras洪都拉斯,179#Nicaragua尼加拉瓜,18#Greece希腊,180#Costa Rica哥斯达黎加,181#Panama巴拿马,182#Bahamas巴哈马,183#Turks and  Caicos Islands特克斯群岛和凯科斯群岛（英国海外领土）,184#Cuba古巴,185#Jamaica牙买加,186#Cayman Islands开曼群岛（英国海外领土）,187#Haiti海地,188#Dominican多米尼加,189#Puerto Rico波多黎各（美国海外领土）,19#Croatia克罗地亚,190#United States Virgin Islands美属维尔京群岛,191#British Virgin Islands英属维尔京群岛,192#Anguilla安圭拉（英国海外领土）,193#Antigua and Barbuda安提瓜和巴布达,194#Collectivité de Saint-Martin法属圣马丁（法国海外领土）,195#Autonomous country荷属圣马丁（荷兰王国的自治国）,196#Saint-Barthélemy圣巴泰勒米岛（法国海外领土）,197#Saint Kitts and Nevis圣基茨和尼维斯,198#Montserrat蒙特塞拉特（英国海外领土）,199#Guadeloupe瓜德罗普（法国海外领土）,2#France法国,20#Hungary匈牙利,200#Dominica多米尼克,201#Martinique马提尼克（法国海外领土）,202#St. Lucia圣卢西亚,203#Saint Vincent and the Grenadines圣文森特和格林纳丁斯,204#Grenada格林纳达,205#Barbados巴巴多斯,206#Trinidad and Tobago特立尼达和多巴哥,207#Cura?ao库拉索（荷兰王国的一个自治国）,208#Aruba阿鲁巴（荷兰王国的一个自治国）,209#Netherlands Antilles荷属安的列斯,21#Israel以色列(亚洲),210#Colombia哥伦比亚,211#Venezuela委内瑞拉,212#Guyana圭亚那,213#Suriname苏里南,214#Guyane Francaise法属圭亚那,215#Ecuador厄瓜多尔,216#Peru秘鲁,217#Bolivia玻利维亚,218#Paraguay巴拉圭,219#Chile智利,22#Luxembourg卢森堡,220#Brazil巴西,221#Uruguay乌拉圭,222#Argentina阿根廷,223#Reserved保留字段,224#Reserved保留字段,225#Reserved保留字段,226#Reserved保留字段,227#Australia澳大利亚,228#New Zealand 新西兰,229#Papua New Guinea巴布亚新几内亚,23#Macedonia马其顿共和国  2018年改为North Macedonia,230#Salomonen所罗门群岛,231#Vanuatu瓦努阿图,232#New Caledonia新喀里多尼亚（法国的海外属地）,233#Palau帕劳,234#Federated States of Micronesia密克罗尼西亚联邦,235#Marshall Island马绍尔群岛,236#Northern Mariana Islands北马里亚纳群岛（美国的海外属地）,237#Guam关岛（美国的海外属地）,238#Nauru瑙鲁,239#Kiribati基里巴斯,24#Norway挪威,240#Fidschi斐济群岛,241#Tonga汤加,242#Tuvalu图瓦卢,243#Wallis et Futuna瓦利斯和富图纳（法国的海外属地）,244#Samoa萨摩亚,245#Eastern Samoa美属萨摩亚,246#Tokelau托克劳（新西兰）,247#Niue纽埃（新西兰）,248#Cook Islands库克群岛（新西兰）,249#French Polynesia法属波利尼西亚,25#Portuga葡萄牙,250#Pitcairn Islands皮特凯恩群岛（英国的海外属地）,251#Hawaii State夏威夷（美国的海外属地）,252#Reserved保留字段,253#invalid （字段无效,254#Unrecognized无法识别,255#ALL全部,26#Romania罗马尼亚,27#Serbia塞尔维亚,28#Azerbaijan阿塞拜疆共和国(亚洲),29#Georgia格鲁吉亚(亚洲),3#Germany德国,30#Kazakhstan哈萨克斯坦(亚洲),31#Lithuania立陶宛共和国,32#Turkmenistan土库曼斯坦(亚洲),33#Uzbekistan乌兹别克斯坦(亚洲),34#Latvia拉脱维亚,35#Estonia爱沙尼亚,36#Albania阿尔巴尼亚,37#Austria奥地利,38#Bosnia and Herzegovina波斯尼亚和黑塞哥维那,39#Ireland爱尔兰,4#Spain西班牙,40#Iceland冰岛,41#Vatican梵蒂冈,42#Malta马耳他,43#Sweden瑞典,44#Switzerland瑞士,45#Cyprus塞浦路斯,46#Turkey土耳其,47#Slovenia斯洛文尼亚,48#Montenegro黑山共和国,49#Kosovo科索沃,5#Italy意大利,50#Andorra安道尔,51#Armenia亚美尼亚(亚洲),52#Monaco摩纳哥,53#Liechtenstein列支敦士登,54#San Marino圣马力诺,55#Reserved保留字段,56#Reserved保留字段,57#Reserved保留字段,58#Reserved保留字段,59#China中国,6#Netherlands荷兰,60#Bahrain巴林,61#South Korea韩国,62#Lebanon黎巴嫩,63#Nepal尼泊尔,64#Thailand泰国,65#Pakistan巴基斯坦,66#United Arab Emirates阿拉伯联合酋长国,67#Bhutan不丹,68#Oman阿曼,69#North Korea朝鲜,7#Poland波兰,70#Philippines菲律宾,71#Cambodia柬埔寨,72#Qatar卡塔尔,73#Kyrgyzstan吉尔吉斯斯坦,74#Maldives马尔代夫,75#Malaysia马来西亚,76#Mongolia蒙古,77#Saudi Arabia沙特阿拉伯,78#Brunei文莱,79#Laos老挝,8#Slovakia斯洛伐克,80#Japan日本,81#Turkey土耳其,82#Palestinian巴勒斯坦国,83#Tajikistan塔吉克斯坦,84#Kuwait科威特,85#Syria叙利亚,86#India印度,87#Indonesia印度尼西亚,88#Afghanistan阿富汗,89#Sri Lanka斯里兰卡,9#Belarus白俄罗斯,90#Iraq伊拉克,91#Vietnam越南,92#Iran伊朗,93#Yemen也门,94#Jordan约旦,95#Burma/Myanmar缅甸,96#Sikkim锡金,97#Bangladesh孟加拉国,98#Singapore新加坡,99#Democratic Republic of Timor-Leste东帝汶（已宣布独立]-->0
    </country>
    <parkingSerialNo>
      <!--ro, opt, string, 泊车编号, range:[1,16]-->1
    </parkingSerialNo>
    <crossLane>
      <!--ro, opt, bool, 是否压线（侧方停车）, desc:当前<illegalTrafficEvent> 为 parallelParking是有效-->true
    </crossLane>
    <crossSpaces>
      <!--ro, opt, bool, 是否跨泊车位停车（侧方停车）, desc:当<illegalTrafficEvent> 为 parallelParking时有效-->true
    </crossSpaces>
    <angledParking>
      <!--ro, opt, bool, 是否倾斜停车（侧方停车）, desc:当<illegalTrafficEvent> 为 parallelParking时有效-->true
    </angledParking>
    <alarmValidity>
      <!--ro, opt, int, 可以输出驶入驶出的置信度, range:[0,100], desc:当<illegalTrafficEvent> 为 parallelParking,时有效-->1
    </alarmValidity>
    <CRIndex>
      <!--ro, opt, enum, 国家/区域, subType:int, [0#Unsupported算法库不支持牌识国家,1#Czech Republic捷克共和国,10#Moldova摩尔多瓦,100#Reserved保留字段,101#Reserved保留字段,102#Reserved保留字段,103#Reserved保留字段,104#Egypt埃及,105#Libya利比亚,106#Sudan苏丹,107#Tunisia突尼斯,108#Algeria阿尔及利亚,109#Morocco摩洛哥,11#Russia俄罗斯,110#Ethiopia埃塞俄比亚,111#Eritrea厄立特里亚,112#Somalia Democratic索马里,113#Djibouti吉布提,114#Kenya肯尼亚,115#Tanzania坦桑尼亚,116#Uganda乌干达,117#Rwanda卢旺达,118#Burundi布隆迪,119#Seychelles塞舌尔,12#Ukraine乌克兰,120#Chad乍得,121#Central African中非,122#Cameroon喀麦隆,123#Equatorial Guinea赤道几内亚,124#Gabon加蓬,125#Congo刚果共和国（即：刚果（布））,126#Democratic Republic of the Congo刚果民主共和国（即：刚果（金））,127#Sao Tome and Principe圣多美和普林西比,128#Mauritania毛里塔尼亚,129#Western Sahara西撒哈拉（撒拉威）,13#Belgium比利时,130#Senegal塞内加尔,131#Gambia冈比亚,132#Mali马里,133#Burkina Faso布基纳法索,134#Guinea几内亚,135#Guinea-Bissau几内亚比绍,136#Cape Verde佛得角,137#Sierra Leone塞拉利昂,138#Liberia利比里亚,139#Ivory Coast科特迪瓦,14#Bulgaria保加利亚,140#Ghana加纳,141#Togo多哥,142#Benin贝宁,143#Niger尼日尔,144#Zambia赞比亚,145#Angola安哥拉,146#Zimbabwe津巴布韦,147#Malawi马拉维,148#Mozambique莫桑比克,149#Botswana博茨瓦纳,15#Denmark丹麦,150#Namibia纳米比亚,151#South Africa南非,152#Swaziland斯威士兰,153#Lesotho莱索托,154#Madagasca马达加斯加,155#Comoros科摩罗,156#Mauritius毛里求斯,157#Nigeria尼日利亚,158#South Sudan南苏丹,159#Saint Helena圣赫勒拿（英国海外省）,16#Finland芬兰,160#Mayotte马约特（法国海外省）,161#Reunion留尼旺（法国海外省）,162#Canary Islands加那利群岛（西班牙海外领土）,163#AZORES亚速尔群岛（北大西洋非洲西海岸（葡萄牙））,164#Madeira马德拉群岛（北大西洋非洲西海岸（葡萄牙））,165#Reserved保留字段,166#Reserved保留字段,167#Reserved保留字段,168#Reserved保留字段,169#Canada加拿大,17#United Kingdom英国 之前叫Great Britain,170#Greenland Nuuk格陵兰（丹麦王国的海外自治领土）,171#Pierre and Miquelon圣皮埃尔和密克隆（法国海外领土）,172#United State美国,173#Bermuda百慕大（英国海外领土）,174#Mexico墨西哥,175#Guatemala危地马拉,176#Belize伯利兹,177#El Salvador萨尔瓦多,178#Honduras洪都拉斯,179#Nicaragua尼加拉瓜,18#Greece希腊,180#Costa Rica哥斯达黎加,181#Panama巴拿马,182#Bahamas巴哈马,183#Turks and  Caicos Islands特克斯群岛和凯科斯群岛（英国海外领土）,184#Cuba古巴,185#Jamaica牙买加,186#Cayman Islands开曼群岛（英国海外领土）,187#Haiti海地,188#Dominican多米尼加,189#Puerto Rico波多黎各（美国海外领土）,19#Croatia克罗地亚,190#United States Virgin Islands美属维尔京群岛,191#British Virgin Islands英属维尔京群岛,192#Anguilla安圭拉（英国海外领土）,193#Antigua and Barbuda安提瓜和巴布达,194#Collectivité de Saint-Martin法属圣马丁（法国海外领土）,195#Autonomous country荷属圣马丁（荷兰王国的自治国）,196#Saint-Barthélemy圣巴泰勒米岛（法国海外领土）,197#Saint Kitts and Nevis圣基茨和尼维斯,198#Montserrat蒙特塞拉特（英国海外领土）,199#Guadeloupe瓜德罗普（法国海外领土）,2#France法国,20#Hungary匈牙利,200#Dominica多米尼克,201#Martinique马提尼克（法国海外领土）,202#St. Lucia圣卢西亚,203#Saint Vincent and the Grenadines圣文森特和格林纳丁斯,204#Grenada格林纳达,205#Barbados巴巴多斯,206#Trinidad and Tobago特立尼达和多巴哥,207#Cura?ao库拉索（荷兰王国的一个自治国）,208#Aruba阿鲁巴（荷兰王国的一个自治国）,209#Netherlands Antilles荷属安的列斯,21#Israel以色列(亚洲),210#Colombia哥伦比亚,211#Venezuela委内瑞拉,212#Guyana圭亚那,213#Suriname苏里南,214#Guyane Francaise法属圭亚那,215#Ecuador厄瓜多尔,216#Peru秘鲁,217#Bolivia玻利维亚,218#Paraguay巴拉圭,219#Chile智利,22#Luxembourg卢森堡,220#Brazil巴西,221#Uruguay乌拉圭,222#Argentina阿根廷,223#Reserved保留字段,224#Reserved保留字段,225#Reserved保留字段,226#Reserved保留字段,227#Australia澳大利亚,228#New Zealand 新西兰,229#Papua New Guinea巴布亚新几内亚,23#Macedonia马其顿共和国  2018年改为North Macedonia,230#Salomonen所罗门群岛,231#Vanuatu瓦努阿图,232#New Caledonia新喀里多尼亚（法国的海外属地）,233#Palau帕劳,234#Federated States of Micronesia密克罗尼西亚联邦,235#Marshall Island马绍尔群岛,236#Northern Mariana Islands北马里亚纳群岛（美国的海外属地）,237#Guam关岛（美国的海外属地）,238#Nauru瑙鲁,239#Kiribati基里巴斯,24#Norway挪威,240#Fidschi斐济群岛,241#Tonga汤加,242#Tuvalu图瓦卢,243#Wallis et Futuna瓦利斯和富图纳（法国的海外属地）,244#Samoa萨摩亚,245#Eastern Samoa美属萨摩亚,246#Tokelau托克劳（新西兰）,247#Niue纽埃（新西兰）,248#Cook Islands库克群岛（新西兰）,249#French Polynesia法属波利尼西亚,25#Portuga葡萄牙,250#Pitcairn Islands皮特凯恩群岛（英国的海外属地）,251#Hawaii State夏威夷（美国的海外属地）,252#Reserved保留字段,253#Reserved保留字段,254#Unrecognized无法识别,255#ALL全部,256#Taiwan (China) 台湾（中国）,257#Hong Kong (China)中国香港,258#Macau (China)中国澳门,26#Romania罗马尼亚,27#Serbia塞尔维亚,28#Azerbaijan阿塞拜疆共和国(亚洲),29#Georgia格鲁吉亚(亚洲),3#Germany德国,30#Kazakhstan哈萨克斯坦(亚洲),31#Lithuania立陶宛共和国,32#Turkmenistan土库曼斯坦(亚洲),33#Uzbekistan乌兹别克斯坦(亚洲),34#Latvia拉脱维亚,35#Estonia爱沙尼亚,36#Albania阿尔巴尼亚,37#Austria奥地利,38#Bosnia and Herzegovina波斯尼亚和黑塞哥维那,39#Ireland爱尔兰,4#Spain西班牙,40#Iceland冰岛,41#Vatican梵蒂冈,42#Malta马耳他,43#Sweden瑞典,44#Switzerland瑞士,45#Cyprus塞浦路斯,46#Turkey土耳其,47#Slovenia斯洛文尼亚,48#Montenegro黑山共和国,49#Kosovo科索沃,5#Italy意大利,50#Andorra安道尔,51#Armenia亚美尼亚(亚洲),52#Monaco摩纳哥,53#Liechtenstein列支敦士登,54#San Marino圣马力诺,55#Reserved保留字段,56#Reserved保留字段,57#Reserved保留字段,58#Reserved保留字段,59#China中国,6#Netherlands荷兰,60#Bahrain巴林,61#South Korea韩国,62#Lebanon黎巴嫩,63#Nepal尼泊尔,64#Thailand泰国,65#Pakistan巴基斯坦,66#United Arab Emirates阿拉伯联合酋长国,67#Bhutan不丹,68#Oman阿曼,69#North Korea朝鲜,7#Poland波兰,70#Philippines菲律宾,71#Cambodia柬埔寨,72#Qatar卡塔尔,73#Kyrgyzstan吉尔吉斯斯坦,74#Maldives马尔代夫,75#Malaysia马来西亚,76#Mongolia蒙古,77#Saudi Arabia沙特阿拉伯,78#Brunei文莱,79#Laos老挝,8#Slovakia斯洛伐克,80#Japan日本,81#Turkey土耳其,82#Palestinian巴勒斯坦国,83#Tajikistan塔吉克斯坦,84#Kuwait科威特,85#Syria叙利亚,86#India印度,87#Indonesia印度尼西亚,88#Afghanistan阿富汗,89#Sri Lanka斯里兰卡,9#Belarus白俄罗斯,90#Iraq伊拉克,91#Vietnam越南,92#Iran伊朗,93#Yemen也门,94#Jordan约旦,95#Burma/Myanmar缅甸,96#Sikkim锡金,97#Bangladesh孟加拉国,98#Singapore新加坡,99#Democratic Republic of Timor-Leste东帝汶（已宣布独立]-->0
    </CRIndex>
    <illegalTrafficSubEvent>
      <!--ro, opt, enum, 车辆违法行为子事件, subType:string, [normal#正常,crossLane#压线,crossBerth#跨位,crossLaneBerth#压线且跨位,illegalParking#非法停车], desc:当前仅在illegalTrafficEvent==parallelParking时返回-->normal
    </illegalTrafficSubEvent>
    <TFSGPSInfo>
      <!--ro, opt, object, TFS事件发生的GPS位置信息-->
      <longitudeType>
        <!--ro, req, enum, 经度, subType:string, [E#东经,W#西经]-->E
      </longitudeType>
      <latitudeType>
        <!--ro, req, enum, 纬度, subType:string, [S#南纬,N#北纬]-->S
      </latitudeType>
      <Longitude>
        <!--ro, req, object, 经度-->
        <degree>
          <!--ro, req, int, 度-->1
        </degree>
        <minute>
          <!--ro, req, int, 分-->1
        </minute>
        <sec>
          <!--ro, req, float, 描述, desc:精确到小数点后6位-->0.000000
        </sec>
      </Longitude>
      <Latitude>
        <!--ro, req, object, 纬度-->
        <degree>
          <!--ro, req, int, 度-->1
        </degree>
        <minute>
          <!--ro, req, int, 分-->1
        </minute>
        <sec>
          <!--ro, req, float, 描述, desc:精确到小数点后6位-->0.000000
        </sec>
      </Latitude>
    </TFSGPSInfo>
  </TFS>
  <detectionPictureTransType>
    <!--ro, opt, enum, 图片传输方式, subType:string, [url#图片url,binary#二进制]-->url
  </detectionPictureTransType>
  <detectionPicturesNumber>
    <!--ro, opt, int, 表示布防接收报警中包含的图片数量-->1
  </detectionPicturesNumber>
  <contentIDSence1>
    <!--ro, opt, string, 车辆场景图片ID（表示图片数据的唯一性）, range:[1,32], desc:生成规则（设备序列号+设备启动时间至今的时间+随机数-->D6A18E41308CE9934DCDDD1111
  </contentIDSence1>
  <contentIDSence2>
    <!--ro, opt, string, 车辆场景图片ID（表示图片数据的唯一性）, range:[1,32], desc:生成规则（设备序列号+设备启动时间至今的时间+随机数-->D6A18E41308CE9934DCDDD1111
  </contentIDSence2>
  <contentIDSence3>
    <!--ro, opt, string, 车辆场景图片ID（表示图片数据的唯一性）, range:[1,32], desc:生成规则（设备序列号+设备启动时间至今的时间+随机数-->D6A18E41308CE9934DCDDD1111
  </contentIDSence3>
  <contentIDVehiclePlate>
    <!--ro, opt, string, 车牌图片ID（表示图片数据的唯一性）, range:[1,32], desc:生成规则（设备序列号+设备启动时间至今的时间+随机数-->D6A18E41308CE9934DCDDD2222
  </contentIDVehiclePlate>
  <contentIDComposite>
    <!--ro, opt, string, 车辆合成图ID（表示图片数据的唯一性）, range:[1,32], desc:生成规则（设备序列号+设备启动时间至今的时间+随机数-->D6A18E41308CE9934DCDDD2222
  </contentIDComposite>
  <PictureURLInfoList>
    <!--ro, opt, array, 图片URL信息列表, subType:object, desc:当<detectionPictureTransType> 为url 时返回-->
    <PictureURLInfo>
      <!--ro, opt, object, 图片URL信息-->
      <pictureName>
        <!--ro, req, enum, 图片名称, subType:string, [detectionPicture#抓拍背景图,licensePlatePicture#车牌小图,compositePicture#车辆合成,vehiclePicture#车辆小图(特写图),custom#custom,contentIDSence1#车辆场景图片,contentIDSence2#车辆场景图片,contentIDSence3#车辆场景图片,farPicture#远景图,middlePicture#中景图,closePicture#近景图]-->detectionPicture
      </pictureName>
      <pictureURL>
        <!--ro, req, string, 图片URL, range:[1,512]-->http://127.0.0.1
      </pictureURL>
    </PictureURLInfo>
  </PictureURLInfoList>
  <UUID>
    <!--ro, opt, string, 通用唯一识别码, desc:车辆唯一标识,多次抓拍相同车辆,UUID值相同-->test
  </UUID>
  <monitoringSiteID>
    <!--ro, opt, string, 监测点编号-->test
  </monitoringSiteID>
  <monitorDescription>
    <!--ro, opt, string, 监控点信息-->test
  </monitorDescription>
  <IllegalInfo>
    <!--ro, opt, object, 违法信息-->
    <illegalCode>
      <!--ro, req, string, 违法代码-->test
    </illegalCode>
    <illegalName>
      <!--ro, req, string, 违法名称-->test
    </illegalName>
    <illegalDescription>
      <!--ro, opt, string, 违法描述-->test
    </illegalDescription>
  </IllegalInfo>
  <isAlert>
    <!--ro, opt, bool, TFS预警事件标识, desc:当isAlert=true时代表着TFS预警事件，该字段不返回时默认代表TFS报警事件。当取证规则配置中开启预警使能（如违停检测中的alertEnabled字段）后，目标车辆刚刚触发违法动作时，则会上报TFS预警信息；直到目标完成违法动作后再次上报TFS报警信息-->true
  </isAlert>
  <PictureBinaryInfoList>
    <!--ro, opt, array, 二进制图片信息列表, subType:object, desc:当<detectionPictureTransType> 为binary时返回-->
    <PictureBinaryInfo>
      <!--ro, opt, object, 二进制图片信息-->
      <pictureName>
        <!--ro, req, enum, 图片名称, subType:string, [detectionPicture#抓拍背景图,licensePlatePicture#车牌小图,compositePicture#车辆合成,vehiclePicture#车辆小图(特写图),custom#custom,contentIDSence1#车辆场景图片,contentIDSence2#车辆场景图片,contentIDSence3#车辆场景图片,farPicture#远景图,middlePicture#中景图,closePicture#近景图]-->detectionPicture
      </pictureName>
      <pId>
        <!--ro, req, string, 图片ID, range:[1,32], desc:建议生成规则（设备序列号+设备启动时间至今的时间+随机数）-->test
      </pId>
    </PictureBinaryInfo>
  </PictureBinaryInfoList>
</EventNotificationAlert>


XML_FaceAppendData

设备网络SDK开发使用手册

<FaceAppendData version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req,人脸比对库图片数据关联信息配置-->
<bornTime>
<!--opt, xs:ISO8601 time,出生日期,例如:2014-12-12T00:00:00Z-->
</bornTime>
<name>
<!--req,xs:string,姓名-->
</name>
<sex>
<!--opt,xs:string,"male,female",性别-->
</sex>
<province>
<!--opt,xs:string,省份,代码索引具体请参考"全国各省份城市列表"-->
</province>
<city>
<!--opt,xs:string,城市,代码索引具体请参考"全国各省份城市列表"-->
</city>
<certificateType>
<!--opt,xs:string,"ID,passportID,other",
证件类型: ID-身份证, passportID-护照, other-其他-->
</certificateType>
<certificateNumber>
<!--dep,xs:string,"证件号"-->
</certificateNumber>

<PersonInfoExtendList size="">
<!--req,人员扩展信息列表-->
<PersonInfoExtend>
<id>
<!--req,xs:integer, "人员扩展信息序号, 从"1"开始赋值, 依次增加" -->
</id>
<enable>
<!--req,xs: boolean, "人员扩展信息使能" -->
</enable>
<name>
<!--opt,xs:string, "人员标签信息扩展名称" -->
</name>
<value>
<!--opt,xs:string, "人员标签信息扩展内容" -->
</value>
</PersonInfoExtend>
</PersonInfoExtendList>
<phoneNumber>
<!--opt,xs:string, 电话号码-->
</phoneNumber>
<customHumanID>
<!--opt,xs:string,"自定义人员ID"-->
</customHumanID>
<RegionCoordinatesList>
<!--opt,导入图片中存在多张人脸时需要框选指定目标,一个识别出来的人脸目标,该坐标可以指导后续检索中的数据建模处理-->
<RegionCoordinates>
<!--req,人脸目标范围矩形框点坐标-->
<positionX>
<!--req, xs:integer, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
<customHumanID>
<!--opt,xs:string,"自定义人员ID"-->
</customHumanID>
</FaceAppendData>


XML_FaceContrast

设备网络SDK开发使用手册

<FaceContrast version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 人脸比对配置-->
<id>
<!--req, xs:integer, "序号,从1开始" -->
</id>
<enable>
<!--opt, xs:boolean, "true,false", "人脸比对功能使能"-->
</enable>
<faceContrastType>
<!--req, xs: string, "faceContrast, allowListFaceContrast",
"人脸比对类型：faceContrast- 人脸比对, allowListFaceContrast- 授权名单人脸比对(陌生人模式)"-->
</faceContrastType>
<thresholdValue>
<!--opt, xs:integer, "检测阈值，阈值越大检测准确率越高, 范围[0,100]"-->
</thresholdValue>
<FDLibList>
<!--opt, "通道关联人脸库列表"-->
<FDLib>
<id>
<!--req,xs:integer, "序号, 从1开始"-->
</id>
<FDID>
<!--req,xs:string, "人脸比对库唯一标示ID"-->
</FDID>
</FDLib>
</FDLibList>
<contrastFailureAlarmUpload>
<!--opt,xs:boolean, "人脸比对失败报警上传使能(即抓拍图片和人脸库图片比对比不成功也会将比对报警信息上传中心): true-启用, false-不启用(默认), 仅人脸比对支持"-->
</contrastFailureAlarmUpload>
<alarmOutType>
<!--opt,xs:string, "报警输出脉冲使能：off-关(默认), pluses-启用报警输出脉冲"-->
</alarmOutType>
<plusesTime>
<!--dep, 报警输出持续时间, <alarmOutType>为pluses时有效, integer类型, 单位:ms-->
</plusesTime>
</FaceContrast>


XML_FaceContrastList

设备网络SDK开发使用手册

<FaceContrastList version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req, 人脸比对配置列表-->
<FaceContrast>
<id>
<!--req, xs:integer, "序号,从1开始" -->
</id>
<enable>
<!--opt, xs:boolean, "true,false", "人脸比对功能使能"-->
</enable>
<faceContrastType>
<!--req, xs: string, "faceContrast, allowListFaceContrast",
"人脸比对类型：faceContrast- 人脸比对, allowListFaceContrast- 授权名单人脸比对(陌生人模式)"-->
</faceContrastType>
<thresholdValue>
<!--opt, xs:integer, "检测阈值，阈值越大检测准确率越高, 范围[0,100]"-->
</thresholdValue>
<FDLibList>
<!--opt, "通道关联人脸库列表"-->
<FDLib>
<id>
<!--req,xs:integer, "序号, 从1开始"-->
</id>
<FDID>
<!--req,xs:string, "人脸比对库唯一标示ID"-->
</FDID>
</FDLib>
</FDLibList>
<contrastFailureAlarmUpload>
<!--opt,xs:boolean, "人脸比对失败报警上传使能(即抓拍图片和人脸库图片比对比不成功也会将比对报警信息上传中心): true-启用, false-不启用(默认), 仅人脸比对支持"-->
</contrastFailureAlarmUpload>
<alarmOutType>
<!--opt,xs:string, "报警输出脉冲使能：off-关(默认), pluses-启用报警输出脉冲"-->
</alarmOutType>
<plusesTime>
<!--dep, 报警输出持续时间, <alarmOutType>为pluses时有效, integer类型, 单位:ms-->
</plusesTime>
</FaceContrast>
</FaceContrastList>


XML_FaceDataBase

设备网络SDK开发使用手册

<FaceDataBase>
<dataBaseID>
<!--opt, xs:integer, 数据库ID, 添加时无效, 修改时有效-->
</dataBaseID>
<name>
<!--req, xs:string, 人脸库名称-->
</name>
<note>
<!--req, xs:string, 人脸库备注-->
</note>
<Address>
<!--req, 存储地址(添加无效) -->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</FaceDataBase>


XML_FaceDBRet

设备网络SDK开发使用手册

<FaceDBRet>
<faceDBNum>
<!--req, xs:integer, 人脸库总数 -->
</faceDBNum>
<FaceDB>
<id>
<!--req, xs:integer, 人脸库ID-->
</id>
<name>
<!--req, xs:string, 人脸库名称-->
</name>
<note>
<!--req, xs:string, 人脸库备注，最大256个字节-->
</note>
<recordsCount>
<!--req, xs:integer, 记录数-->
</recordsCount>
<Address>
<!--req, 服务器地址信息 -->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</FaceDB>
</FaceDBRet>


XML_FaceRecord

设备网络SDK开发使用手册

<FaceRecord>
<id>
<!--req, xs:integer, 记录ID (添加无效)-->
</id>
<faceDBId>
<!--req, xs:integer, 人脸库ID-->
</faceDBId>
<similarity>
<!--req, xs:integer, 相似度（添加无效）-->
</similarity>
<HumanAttribute>
<!--dep, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</StorageInfo>
<picData>
<!--opt, base64处理, 人脸图片数据-->
</picData>
<note1>
<!--req, xs:string 备注1-->
</note1>
<note2>
<!--req, xs:string 备注2-->
</note2>
</FaceRecord>


XML_FaceRecordRet

设备网络SDK开发使用手册

<FaceRecordRet>
<totalNum>
<!--req, xs:integer, 总记录数 -->
</totalNum>
<FaceRecordList>
<!--req人脸记录信息列表-->
<FaceRecord>
<id>
<!--req, xs:integer, 人脸记录id -->
</id>
<faceDBId>
<!--req, xs:integer, 人脸记录id -->
</faceDBId>
<HumanAttribute>
<!--dep, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<picData>
<!--dep, xs:string, Base64, 人脸图片数据-->
</picData>
<similarity>
<!--req, xs:integer, 相似度-->
</similarity>
<Address/>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</StorageInfo>
<note1>
<!--req, xs:string, 备注1-->
</note1>
<note2>
<!--req, xs:string, 备注2-->
</note2>
</FaceRecord>
</FaceRecordList>
</FaceRecordRet>


XML_FCAdditionInfo

设备网络SDK开发使用手册

<FCAdditionInfo>
<AbsoluteHigh>
<!--opt, ro, PTZ位置-->
<elevation>
<!--opt, xs:integer, -900..2700, 仰角-->
</elevation>
<azimuth>
<!--opt, xs:integer, 0..3600, 方位角-->
</azimuth>
<absoluteZoom>
<!--opt, xs:integer,1.. 1000, 变倍倍率-->
</absoluteZoom>
</AbsoluteHigh>
<faceExpression>
<!--opt, xs:string, 表情,取值详见属性参数取值字典-->
</faceExpression>
<faceSnapThermometryEnabled>
<!--opt, xs:boolean, 人脸抓拍测温使能-->
</faceSnapThermometryEnabled>
<currTemperature>
<!--opt, xs:float, 人脸温度（-20.0℃~150.0℃，精确到小数点后1位）-->
</currTemperature>
<isAbnomalTemperature>
<!--opt, xs:boolean, 人脸抓拍测温是否温度异常:true-是,false-否-->
</isAbnomalTemperature>
<thermometryUnit>
<!--req,xs:string 测温单位 "celsius"摄氏度，"fahrenheit"华氏度，"kelvin"开尔文-->
</thermometryUnit>
</FCAdditionInfo>


XML_FCSearchDescription

设备网络SDK开发使用手册

<FCSearchDescription version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,人脸比对数据查询条件-->
<searchID>
<!--req,xs:string;搜索记录唯一标识,用来确认上层客户端是否为同一个(倘若是同一个, 则设备记录内存，下次搜索加快速度)-->
</searchID>
<searchResultPosition>
<!--req, xs: integer, 查询结果在结果列表中的起始位置-->
</searchResultPosition>
<maxResults>
<!--req, xs: integer, 本次查询条数-->
</maxResults>
<snapStartTime>
<!--req,xs:ISO8601 time, 抓拍图片的开始时间, 例如:2014-12-12T00:00:00Z-->
</snapStartTime>
<snapEndTime>
<!--dep,xs:ISO8601 time, 抓拍图片的结束时间, 例如:2014-12-12T00:00:00Z-->
</snapEndTime>
<faceMatchInfoEnable>
<!--opt,"true,false", 表示是否需要只上传有匹配信息的数据-->
</faceMatchInfoEnable>

<monitorName>
<!--opt,xs:string, "监控点名称"-->
</monitorName>
<similarity>
<!--opt,xs:float, 相似度, 取值范围:[1.0,100.0]-->
</similarity>
<FDIDList>
<FDID>
<!--opt,xs:string,关联搜索的人脸库ID-->
</FDID>
</FDIDList>
<sortord>
<!--opt,xs:string,"similarity,time", 排序方法: similarity-按相似度, time-按时间-->
</sortord>
<sex>
<!--opt,xs:string,选项互斥, 不下发该节点表示不限制,"male,female"-->
</sex>
<glass>
<!--opt,xs:string,选项互斥, 不下发该节点表示不限制,"yes,no"-->
</glass>
<smile>
<!--opt,xs:string,选项互斥, 不下发该节点表示不限制,"yes,no"-->
</smile>
<high_risk_group>
<!--opt,xs:string,选项互斥, 不下发该节点表示不限制,"yes,no"-->
</high_risk_group>
<importLib>
<!--opt,xs:string,选项互斥, 不下发该节点表示不限制,"yes,no"-->
</importLib>
<CustomFaceLibIDList>
<!--opt,自定义人脸库ID列表-->
<customFaceLibID>
<!--opt,xs:string,自定义人脸库ID-->
</customFaceLibID>
</CustomFaceLibIDList>

<eventType>
<!--opt,xs:string, "unlimit,faceContrast,whiteFaceContrast",
"事件类型: unlimit-不限, faceContrast-人脸比对, whiteFaceContrast-授权名单人脸比对(即陌生人报警)"-->
</eventType>
<FaceModeList>
<!--opt, "以图索图时添加"-->
<FaceMode>
<ModeInfo>
<!--opt,以图搜图的时候<ModeInfo>是必填项-->
<similarity>
<!--opt,xs:float, 相似度, 取值范围: [0.0,100.0]-->
</similarity>
<modeData>
<!--opt,xs:string,"目标模型数据, 字符串类型, 传输过程中针对二进制非建模数据进行base64的加密处理"-->
</modeData>
</ModeInfo>
</FaceMode>
</FaceModeList>
<PictureInfoList>
<!--opt,"按图片ID检索时添加"-->
<PictureInfo>
<FDID>
<!--req,xs:string,"人脸比对库唯一标示ID"-->
</FDID>
<PID>
<!--req,xs:string,图片数据对应的ID值-->
</PID>
</PictureInfo>
</PictureInfoList>
<ChannelList>
<!--opt, "查询通道列表,仅在查询url不带通道号时,该节点可以存在"-->
<Channel>
<channelID>
<!--req,xs:integer,"通道号"-->
</channelID>
</Channel>
</ChannelList>
<totalSearchResults>
<!--opt, xs: integer,"单次搜索总数"-->
</totalSearchResults>
</FCSearchDescription>


XML_FCSearchResult

设备网络SDK开发使用手册

<FCSearchResult version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,人脸比对数据查询结果-->
<searchID>
<!--req,xs:string; 搜索记录唯一标识, 用来确认上层客户端是否为同一个(倘若是同一个, 则设备记录内存, 下次搜索加快速度)-->
</searchID>
<responseStatus>
<!--req,xs:string,"true,false"-->
</responseStatus>
<responseStatusStrg>
<!--req,xs:string,"OK,NO MATCHES,MORE"-->
</responseStatusStrg>
<numOfMatches>
<!--req, xs: integer -->
</numOfMatches>
<totalMatches>
<!--req, xs: integer -->
</totalMatches>
<MatchList>
<!--opt, 查询到的匹配数据列表-->
<MatchElement>
<!--opt, 单个匹配数据-->
<snapPicURL>
<!--opt,xs:string, 抓拍背景图URL-->
</snapPicURL>
<snapTime>
<!--opt, xs:ISO8601 time, 抓拍时间-->
</snapTime>
<facePicURL>
<!--opt,xs:string, 人脸子图URL-->
</facePicURL>
<FaceMatchInfoList>
<!--opt, 人脸匹配信息列表 -->
<FaceMatchInfo>
<!--opt, 单个人脸匹配信息-->
<FDID>
<!--req,ro,xs:string,"人脸比对库唯一标示ID"-->
</FDID>
<FDname>
<!--opt,ro,xs:string,"face data lib name", 人脸比对库名称 -->
</FDname>
<thresholdValue>
<!--opt,xs:integer, "检测阈值，阈值越大检测准确率越低, 范围[0,100]"-->
</thresholdValue>
<bornTime>
<!--opt, xs:ISO8601 time, 出生日期-->
</bornTime>
<name>
<!--opt,xs:string, 姓名-->
</name>
<sex>
<!--opt,xs:"male,female", 性别: male-男, female-女-->
</sex>
<province>
<!--opt,xs:string, 省份-->
</province>
<city>
<!--opt,xs:string, 城市-->
</city>
<certificateType>
<!--opt,xs:string,"ID,passportID,other", ID-身份证, passportID-护照, other-其他-->
</certificateType>
<certificateNumber>
<!--opt,xs:string,"证件号"-->
</certificateNumber>
<picURL>
<!--req,xs:string, 匹配的人脸图片URL-->
</picURL>
<PID>
<!--req,xs:string, 匹配的人脸ID-->
</PID>
<PersonInfoExtendList>
<!--opt, 人员标签信息扩展-->
<PersonInfoExtend>
<id min="" max="">
<!--req,xs:integer, "人员扩展信息序号, 从"1"开始赋值, 依次增加" -->
</id>
<enable>
<!--req,xs:boolean, "人员扩展信息使能" -->
</enable>
<name min="" max="">
<!--opt,xs:string, "人员标签信息扩展名称" -->
</name>
<value min="" max="">
<!--opt,xs:string, "人员标签信息扩展内容" -->
</value>
</PersonInfoExtend>
</PersonInfoExtendList>
<phoneNumber>
<!--opt,xs: string, 联系电话-->
</phoneNumber>
<similarity>
<!--opt,xs: float类型, 取值范围: [0.0,100.0], "人脸匹配程度"-->
</similarity>
</FaceMatchInfo>
</FaceMatchInfoList>
<monitorName>
<!--opt,xs:string,"监控点信息"-->
</monitorName>
<glass>
<!--opt,xs:string,"unknown,yes,no",是否戴眼镜-->
</glass>
<smile>
<!--opt,xs:string,"unknown,yes,no",是否微笑-->
</smile>
<similarity>
<!--opt,xs:float类型, 取值范围:[0.0,100.0], "以图索图时返回"-->
</similarity>
<Rect>
<!--opt,xs:string,"匹配图片人脸目标子图坐标"-->
<height>
<!--req,xs:float,人脸子图高度-->
</height>
<width>
<!--req,xs:float,人脸子图宽度-->
</width>
<x>
<!--req,xs:float,人脸子图左上角X坐标-->
</x>
<y>
<!--req,xs:float,人脸子图左上角Y坐标-->
</y>
</Rect>
<channelID>
<!--opt,xs:intger,"通道号"-->
</channelID>
<name>
<!--opt,xs:string,"抓拍图片的名称"-->
</name>
<sex>
<!--opt,xs:string,"性别：unknown-未知,male-男,female-女"-->
</sex>
<ageGroup>
<!--opt,xs:string,"年龄段: unknown-未知, child-少年, young-青年, middle-中年, old-老年,
infant-婴幼儿, kid-儿童, teenager-青少年, prime-壮年, middleAged-中老年"-->
</ageGroup>
</MatchElement>
</MatchList>
</FCSearchResult>


XML_FDDescription

设备网络SDK开发使用手册

<FDDescription>
<!--req,人脸库描述数据-->
<name>
<!--req,xs:string,"人脸库名称"-->
</name>
<customFaceLibID>
<!--opt,xs:string,"自定义人脸库ID"-->
</customFaceLibID>
<customHumanID>
<!--opt,xs:string,"自定义人员ID"-->
</customHumanID>
<phoneNumber>
<!--opt,xs:string,"电话号码"-->
</phoneNumber>
<prompt>
<!--opt,xs:string,"人脸库比对提示语"；根据配置URL(/ISAPI/Intelligent/FDLib/faceContrastPrompt?format=json)的内容进行返回-->
</prompt>
<relationId>
<!--opt,xs:string,"布防的关联关系ID，长度最大为64位字符串"-->
</relationId>
</FDDescription>


XML_FDLibInfoList

设备网络SDK开发使用手册

<FDLibInfoList version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req,创建人脸比对库输出参数-->
<FDLibInfo>
<id>
<!--req,ro,xs:integer,"表示list中子项个数,从"1"开始赋值,依次增加,和<CreateFDLibList>中的id一一对应" -->
</id>
<name>
<!--opt,ro,xs:string,"人脸比对库名称" -->
</name>
<FDID>
<!--req,ro,xs:string,"人脸比对库唯一标示ID，批量处理时若有部分创建失败，则返回creatFailed"-->
</FDID>
<statusCode>
<!-- opt, ro,xs:integer, "人脸库创建失败时返回"-->
</statusCode>
<!--0和1-OK, 2-Device Busy, 3-Device Error, 4-Invalid Operation, 5-Invalid XML Format, 6-Invalid XML Content; 7-Reboot Required -->
<subStatusCode>
<!-- opt, ro,xs:string, "人脸库创建失败时返回，具体参考《PJ01M2017051203超脑录播NVS 基线项目_ISAPI概要设计说明书.doc》中4.错误码返回"-->
</subStatusCode>
</FDLibInfo>
</FDLibInfoList>


XML_FDProcImage

设备网络SDK开发使用手册

<FDProcImage>
<picData>
<!--req, xs:string, 图片数据, 采用base64进行加密处理-->
</picData>
</FDProcImage>


XML_FDSearchDescription

设备网络SDK开发使用手册

<FDSearchDescription version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,人脸比对库图片数据查找条件参数-->
<searchID>
<!--req,xs:string; 搜索记录唯一标识，用来确认上层客户端是否为同一个(倘若是同一个，则设备记录内存，下次搜索加快速度) -->
</searchID>
<searchResultPosition>
<!--req, xs: integer, 查询结果在结果列表中的起始位置-->
<!--req, GET /ISAPI/Intelligent/FDLib/capabilities获取人脸库能力集，其中<isSupportStandardSearch>为true则该字段从0开始，否则从1开始-->
</searchResultPosition>
<maxResults>
<!--req, xs: integer, 本次查询条数-->
</maxResults>
<FDID>
<!--opt,xs:string,"人脸比对库唯一标示ID", 如果有这个节点表示指定人脸库查询，否则查询所有人脸库-->
</FDID>
<startTime>
<!--req,xs:ISO8601 time, 人员的出生的最早时间, 例如:2014-12-12T00:00:00Z-->
</startTime>
<endTime>
<!--dep,xs:ISO8601 time, 人员的出生的最晚时间, 例如:2014-12-12T00:00:00Z-->
</endTime>
<name>
<!--opt,xs:string, 姓名-->
</name>
<sex>
<!--opt,xs:string,"male,female", 性别: male-男, female-女-->
</sex>
<province>
<!--opt,xs:string, 省份,代码索引具体请参考"全国各省份城市列表"-->
</province>
<city>
<!--opt,xs:string, 城市,代码索引具体请参考"全国各省份城市列表"-->
</city>
<certificateType>
<!--opt,xs:string, "ID,passportID,other",
证件类型: ID-身份证,passportID-护照,other-其他-->
</certificateType>
<certificateNumber>
<!--dep,xs:string, "证件号"-->
</certificateNumber>
<FaceModeList>
<FaceMode>
<ModeInfo>
<!--opt,以图搜图的时候<ModeInfo>是必填项-->
<similarity>
<!--opt,xs:float,相似度,取值范围:[0.0,100.0]-->
</similarity>
<modeData>
<!--opt,xs:string,"目标模型数据, 字符串类型, 传输过程中针对二进制非建模数据进行base64的加密处理"-->
</modeData>
</ModeInfo>
</FaceMode>
</FaceModeList>
<modelingStatus>
<!--opt,xs:sting,"success,failed,none",建模状态: success-建模成功, failed-建模失败, none-无, 支持复选-->
</modelingStatus>
<customFaceLibID>
<!--opt,xs:string, 自定义人脸库ID-->
</customFaceLibID>
</FDSearchDescription>


XML_GroupRelDevInfo

设备网络SDK开发使用手册

<GroupRelDevInfo>
<RelateInfoList>
<RelateInfo>
<devID>
<!--req, xs:integer, 设备ID-->
</devID>
<groupID>
<!--req, xs:integer, 设备关联的分组ID-->
</groupID>
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</RelateInfo>
</RelateInfoList>
</GroupRelDevInfo>


XML_HumanRecognition

设备网络SDK开发使用手册

<HumanRecognition version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req, 人体目标识别配置-->
<id>
<!--req, xs:string, "video channel no", 视频通道号-->
</id>
<normalizedScreenSize>
<!--req,ro,归一化数值-->
<normalizedScreenWidth>
<!--req, xs:integer, -->
</normalizedScreenWidth>
<normalizedScreenHeight>
<!--req, xs:integer -->
</normalizedScreenHeight>
</normalizedScreenSize>

<HumanRecognitionRegionList>
<!--opt,人体识别区域列表-->
<HumanRecognitionRegion>
<id>
<!--req, xs:string, 区域序号-->
</id>
<regionName>
<!--req, xs:string, "区域名称"-->
</regionName>
<enabled>
<!--req, xs:string, "true,false", "规则开关使能：true-启用, false-关闭"-->
</enabled>
<RegionCoordinatesList size="">
<!--opt, 区域坐标点列表-->
<RegionCoordinates>
<!--opt, 区域坐标点-->
<positionX>
<!--req, xs:integer;coordinate, X坐标-->
</positionX>
<positionY>
<!--req, xs:integer;coordinate, Y坐标-->
</positionY>
</RegionCoordinates>
</RegionCoordinatesList>
</HumanRecognitionRegion>
</HumanRecognitionRegionList>

<humanMisinfoFilterEnabled>
<!--req, xs:boolean,"true,false", "去误报使能：true-启用, false-关闭"-->
</humanMisinfoFilterEnabled>
<picRecognitionEnabled>
<!--req, xs:boolean,"true,false", "图片二次识别使能：true-启用, false-关闭"-->
</picRecognitionEnabled>

</HumanRecognition>


XML_HumanRecognitionSearchDescription

设备网络SDK开发使用手册

<HumanRecognitionSearchDescription version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req, 人体属性检索条件-->
<searchID>
<!--req,xs:string, 搜索记录唯一标识, 用来确认上层客户端是否为同一个(倘若是同一个, 则设备记录内存, 下次搜索加快速度) -->
</searchID>
<searchResultPosition>
<!--req, xs: integer, 查询结果在结果列表中的起始位置-->
</searchResultPosition>
<maxResults>
<!--req, xs: integer, 本次查询条数, 单次最多500条-->
</maxResults>
<timeSpanList>
<timeSpan>
<startTime>
<!--req, xs:datetime, 查询开始时间, ISO8601_time, 使用UTC时间-->
</startTime>
<endTime>
<!--req, xs:datetime, 查询结束时间, ISO8601_time, 使用UTC时间-->
</endTime>
</timeSpan>
</timeSpanList>
<positive>
<!--req,xs:boolen,"true,false","是否启用人体误报: true-人体误报, false-人体识别非误报"-->
</positive>
<HumanModeList>
<HumanMode>
<HumanInfo>
<!--opt,属性搜图的时候<HumanInfo>是必填项, 此时<ModeInfo>不用赋值添加-->
<age_group>
<!--opt,xs:string, 年龄段: unknown-未知, child-少年, young-青年, middle-中年, old-老年,
infant-婴幼儿, kid-儿童, teenager-青少年, prime-壮年, middleAged-中老年-->
</age_group>
<gender>
<!--opt,xs:string, 性别: unknown-未知, male-男, female-女-->
</gender>
<jacet_color>
<!--opt,xs:string, 上衣颜色: unknown-未知, white-白, silver-银, gray-灰, black-黑,
red-红, deepBlue-深蓝, blue-蓝, yellow-黄, green-绿, brown-棕, pink-粉, purple-紫,
deepGray-深灰, cyan-青, orange-橙, mixture-混色-->
</jacet_color>
<glass>
<!--opt,xs:string, 是否戴眼镜: unknown-未知, no-不戴眼镜, yes-戴眼镜-->
</glass>
<bag>
<!--opt,xs:string, 是否背包: unknown-未知, no-不背包, yes-背包-->
</bag>
<ride>
<!--opt,xs:string, 是否骑车: unknown-未知, no-不骑车, yes-骑车-->
</ride>
</HumanInfo>
<ModeInfo>
<!--opt,以图搜图的时候<ModeInfo>是必填项, 此时<HumanInfo>不用赋值添加-->
<similarity>
<!--opt,xs:integer, [0.0,100.0], 相似度-->
</similarity>
<modeData>
<!--opt,xs:string,"目标模型数据，字符串类型，传输过程中针对二进制非建模数据进行base64的加密处理",
"通过POST /ISAPI/Intelligent/analysisImage/human可以上传图片数据到设备分析获取目标模型数据"-->
</modeData>
</ModeInfo>
</HumanMode>
</HumanModeList>
<eventType>
<!--opt,xs:string, "unlimit,humanRecognition", "事件类型: unlimit-不限, humanRecognition-人体报警"-->
</eventType>
<ChannelList>
<!--opt, "查询通道列表, 仅在查询url不带通道号时, 该节点可以存在"-->
<Channel>
<channelID>
<!--req,xs:integer, "通道号"-->
</channelID>
</Channel>
</ChannelList>
<totalSearchResults>
<!--opt, xs:integer,"单次搜索总数" -->
</totalSearchResults>
</HumanRecognitionSearchDescription>


XML_IdentityTerminal

设备网络SDK开发使用手册

<IdentityTerminal version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<terminalMode opt="authMode,registerMode">
<!--req, xs: string,终端模式, authMode-认证模式 registerMode-登记模式-->
</terminalMode>
<idCardReader opt="iDR210,DS-K1F110-I,DS-K1F1110-B，DS-K1F1110-AB, none ">
<!--req, xs: string,身份证阅读器-->
</idCardReader>
<camera opt="C270,DS-2CS5432B-S">
<!--req, xs: string,摄像头-->
</camera>
<fingerPrintModule opt="ALIWARD,HikModule">
<!--req, xs: string,指纹模组-->
</fingerPrintModule>
<videoStorageTime min="0" max="10">
<!--req, xs: integer,视频存储时间（单位：秒）-->
</videoStorageTime>
<faceContrastThreshold min="0" max="100">
<!--req, xs: integer,人脸比对阈值-->
</faceContrastThreshold>
<twoDimensionCode opt="enable,disable">
<!--req, xs: string,二维码识别使能-->
</twoDimensionCode>
<blockListCheck opt="enable,disable">
<!--req, xs: string,非授权名单核验使能-->
</blockListCheck>
<idCardCheckCenter opt="local,server">
<!--req, xs: string,身份证核验中心配置, local-设备本地比对 server-远程服务器比对-->
</idCardCheckCenter>
<faceAlgorithm opt="HIK-Z,HIK-H">
<!--req, xs: string,人脸算法, HIK-Z-研究院算法 HIK-H-第三方算法-->
</faceAlgorithm>
<comNo min="1" max="9">
<!--req, xs: integer,COM号-->
</comNo>
<memoryLearning opt="enable,disable">
<!--req, xs: string,记忆学习功能使能-->
</memoryLearning>
<saveCertifiedImage opt="enable,disable">
<!--req, xs: string,保存认证图片使能-->
</saveCertifiedImage>
<MCUVersion min="" max="">
<!--opt, xs: string,MCU版本-->
</MCUVersion>
<usbOutput opt="enable,disable">
<!--req, xs: string,利旧身份证读卡器USB输出使能,opt="enable,disable"-->
</usbOutput>
<serialOutput opt="enable,disable">
<!--req, xs: string, 利旧身份证读卡器串口输出使能,opt="enable,disable"-->
</serialOutput>
<readInfoOfCard opt="serialNo,file">
<!--opt, xs: string, CPU卡读取内容配置, serialNo-读取序列号，file-读取文件-->
</readInfoOfCard>
<workMode opt="passMode,accessControlMode">
<!--opt, xs: string 认证工作模式， -->
</workMode>
<ecoMode>
<eco opt="enable,disable">
<!--opt, xs: string 环保模式使能，opt="enable,disable" -->
</eco>
<faceMatchThreshold1 min="" max="">
<!--req, xs: integer,环保模式人脸比对阈值1:1,min="0" max="100"-->
</faceMatchThreshold1>
<faceMatchThresholdN min="" max="">
<!--req, xs: integer,环保模式人脸比对阈值1:N,min="0" max="100"-->
</faceMatchThresholdN>
<changeThreshold min="" max="">
<!--opt, xs: string 环保模式切换阈值 “0-8”，--->
</changeThreshold>
</ecoMode>
</IdentityTerminal>


XML_InquireRecordCond

设备网络SDK开发使用手册

<InquireRecordCond>
<searchType>
<!--req, 查询类型：0-批量查询，1-单条查询 -->
</searchType>
<BatchCond>
<!--dep, 0-批量查询-->
<faceDbId>
<!--req, xs:integer, 人脸库id -->
</faceDbId>
<Address>
<!--req, 存储地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
<HumanAttribute>
<!--dep, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<picType>
<!--req, xs:integer, 图片类型: 1-小图, 2-大图 -->
</picType>
<startId>
<!--req, xs:integer, 起始id -->
</startId>
<maxRetNum>
<!--req, xs:integer, 返回的最大条数-->
</maxRetNum>
<searchScopeNum>10</searchScopeNum>
</BatchCond>
<SingleCond>
<recordId>
<!--req, xs:integer, 记录id -->
</recordId>
<faceDbId>
<!--req, xs:integer, 人脸库id -->
</faceDbId>
<picType>
<!--req, xs:integer, 图片类型: 1-小图, 2-大图 -->
</picType>
<Address>
<!--req, 存储地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</SingleCond>
</InquireRecordCond>


XML_ListAlarm

设备网络SDK开发使用手册

<ListAlarm>
<recordNum>
<!-- req, xs:integer，查询到的记录数 -->
</recordNum>
<SnapRecordList>
<SnapRecord>
<id>
<!--req, xs:integer，抓拍记录id -->
</id>
<snapTime>
<!--req, xs:tring，抓拍时间 -->
</snapTime>
<similarity>
<!--opt, xs:integer，相似度-->
</similarity>
<picData>
<!--dep, xs:string, Base64加密，抓拍图片数据 -->
</picData>

<Rect>
<!--req, 人脸位置, 归一化值, 相对于背景图的分辨率 -->
<x>
<!--req, xs:float, x, 边界框左上角点的X轴坐标-->
</x>
<y>
<!--req, xs:float, y, 边界框左上角点的Y轴坐标-->
</y>
<width>
<!--req, xs:float, x, 区域宽度-->
</width>
<height>
<!--req, xs:float, x, 区域边高度-->
</height>
</Rect>

<HumanAttribute>
<!--dep，人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean,是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>

<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</StorageInfo>
<SnapDevInfo>
<!--req, 抓拍设备信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 抓拍设备端口-->
</port>
</Address>
</SnapDevInfo>
</SnapRecord>
</SnapRecordList>
</ListAlarm>


XML_ListAlarmParam

设备网络SDK开发使用手册

<ListAlarmParam>
<listType>
<!-- req, xs:string, "all,allowList,blockList",all-全部，allowList-授权名单,blockList-非授权名单 -->
</listType>
<listID>
<!-- req, xs:integer, 人脸名单ID -->
</listID>
<maxSnapNum>
<!-- req, xs:integer, 最大抓拍张数,0表示不限制 -->
</maxSnapNum>
</ListAlarmParam>


XML_ListGroup

设备网络SDK开发使用手册

<ListGroup>
<groupNum>
<!--req, xs:integer,分组总个数 -->
</groupNum>
<ListGroupInfoList>
<ListGroupInfo>
<id>
<!--ro, req, xs:integer,分组编号（获取有效），URL中的groupID可以从当此返回的最后编号+1开始查询-->
</id>
<groupNo>
<!--req, xs:integer, 分组号 -->
</groupNo>
<groupType>
<!--req, xs:string, "blockList,allowList", 分组类型 -->
</groupType>
<threshold>
<!--req, xs:integer, 报警阈值 -->
</threshold>
<groupNum>
<!--req, xs:integer, 分组名单数 -->
</groupNum>
<groupName>
<!--dep, xs:string, 分组名称 -->
</groupName>
<remark>
<!--dep, xs:string, 备注 -->
</remark>
<Address>
<!--dep, xs:string, 分组存储地址 -->
<ipVersion>
<!-- req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!-- dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!-- dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 服务端口-->
</port>
</Address>
</ListGroupInfo>
</ListGroupInfoList>
</ListGroup>


XML_ListGroupDelParam

设备网络SDK开发使用手册

<ListGroupDelParam>
<Address>
<ipVersion>
<!-- req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!-- dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!-- dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 服务端口-->
</port>
</Address>
<groupID>
<!--req, xs:integer,分组ID -->
</groupID>
</ListGroupDelParam>


XML_ListGroupInfo

设备网络SDK开发使用手册

<ListGroupInfo>
<id>
<!--ro, req, xs:integer,分组编号（获取有效） -->
</id>
<groupNo>
<!--req, xs:integer, 分组号 -->
</groupNo>
<groupType>
<!--req, xs:string, “blockList,allowList”, 分组类型: blockList-非授权名单，allowList-授权名单-->
</groupType>
<threshold>
<!--req, xs:integer, 报警阈值 -->
</threshold>
<groupNum>
<!--req, xs:integer, 分组名单数 -->
</groupNum>
<groupName>
<!--dep, xs:string, 分组名称 -->
</groupName>
<remark>
<!--dep, xs:string, 备注 -->
</remark>
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</ListGroupInfo>


XML_ListGroupRecord

设备网络SDK开发使用手册

<ListGroupRecord>
<totalNum>
<!--req, xs:integer, 总记录数 -->
</totalNum>
<FaceRecordList>
<!--req, 人脸记录信息列表-->
<FaceRecord>
<id>
<!--req, xs:integer, 人脸记录id -->
</id>
<faceDBId>
<!--req, xs:integer, 人脸记录id -->
</faceDBId>
<HumanAttribute>
<!--req, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean,是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<picData>
<!--dep, xs:string, Base64, 人脸图片数据-->
</picData>
<similarity>
<!--req, xs:integer, 相似度-->
</similarity>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</StorageInfo>
<note1>
<!--req, xs:string, 备注1-->
</note1>
<note2>
<!--req, xs:string, 备注2-->
</note2>
</FaceRecord>
</FaceRecordList>
</ListGroupRecord>


XML_PersonInfoExtendList

设备网络SDK开发使用手册

<PersonInfoExtendList version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<!--req,人员扩展信息列表-->
<PersonInfoExtend>
<id>
<!--req,xs:integer, "人员扩展信息序号, 从"1"开始赋值, 依次增加" -->
</id>
<enable>
<!--req,xs: boolean, "人员扩展信息使能" -->
</enable>
<name>
<!--opt,xs:string, "人员标签信息扩展名称" -->
</name>
<value>
<!--opt,xs:string, "人员标签信息扩展内容" -->
</value>
</PersonInfoExtend>
</PersonInfoExtendList>


XML_ProcImageResult

设备网络SDK开发使用手册

<ProcImageResult>
<num>
<!--req, xs:integer,检测到的子图个数-->
</num>
<SubProcList>
<SubProc>
<id>
<!--req, xs:integer-->
</id>
<SubPicRect>
<!--req, 人脸子图区域 -->
<x>
<!--req, xs:float, x, 边界框左上角点的X轴坐标-->
</x>
<y>
<!--req, xs:float, y, 边界框左上角点的Y轴坐标-->
</y>
<width>
<!--req, xs:float, x, 区域宽度-->
</width>
<height>
<!--req, xs:float, x, 区域边高度-->
</height>
</SubPicRect>
<LeftPoint>
<!--req, 左眼位置-->
<x>
<!--req, xs:float, x-->
</x>
<y>
<!--req, xs:float, y-->
</y>
</LeftPoint>
<RightPoint>
<!--req, 右眼位置-->
<x>
<!--req, xs:float, x-->
</x>
<y>
<!--req, xs:float, y-->
</y>
</RightPoint>
<distance>
<!--req, xs:integer, 两眼之间的距离-->
</distance>
<sex>
<!--req, xs:string "man,women,unknown"-->
</sex>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,
youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean,是否带眼镜"true,false" -->
</withGlass>
<PositionRect>
<!--req, 人脸位置区域 -->
<x>
<!--req, xs:float, x, 边界框左上角点的X轴坐标-->
</x>
<y>
<!--req, xs:float, y, 边界框左上角点的Y轴坐标-->
</y>
<width>
<!--req, xs:float, x, 区域宽度-->
</width>
<height>
<!--req, xs:float, x, 区域边高度-->
</height>
</PositionRect>
<picData>
<!--req, 人脸图片数据，采用base64进行加密处理-->
</picData>
</SubProc>
</SubProcList>
</ProcImageResult>


XML_RECORD_ClassDataStatisticCfg

设备网络SDK开发使用手册

<hostParam version="1.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<oneKeyDefaultDelay/>
<!--req, xs:int, unit:seconds-->
<directMode opt="auto, manual,semiAuto"/>
<!--req, xs:string-->
<courseDataStorageEnabled opt="true,false"/>
<!--opt, xs:Boolean-->
<electronicEnlargeMode opt="true,false"/>
<!--opt, xs:Boolean，电子放大导播-->
</hostParam>


XML_RecordInfo

设备网络SDK开发使用手册

<RecordInfo>
<groupID>
<!--req,xs:integer,分组ID -->
</groupID>
<faceDBID>
<!--req, xs:integer,人脸库ID -->
</faceDBID>
<faceRecordID>
<!--req, xs:integer,人脸记录ID -->
</faceRecordID>
<alarmLevel>
<!--dep, xs:string, "high,medium,low" 报警等级：high-高，medium-中，low-低-->
</alarmLevel>
<Address>
<ipVersion>
<!-- req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!-- dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!-- dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 服务端口-->
</port>
</Address>
</RecordInfo>


XML_RetrievalFaceDBCond

设备网络SDK开发使用手册

<RetrievalFaceDBCond>
<startId>
<!--req, xs:integer, 本次查询起始id-->
</startId>
<maxRetNum>
<!--req, xs:integer, 返回的最大条数-->
</maxRetNum>
</RetrievalFaceDBCond>


XML_RetrievalFaceRecord

设备网络SDK开发使用手册

<RetrievalFaceRecord>
<userName>
<!--req, xs.string, 用户ID-->
</userName>
<FaceCond>
<!--req, 检索条件-->
<FaceDbInfoList>
<!--reqm 人脸库列表-->
<FaceDbInfo>
<faceDbId>
<!--req, xs:integerm, 人脸库id-->
</faceDbId>
<Address>
<!--req, 人脸库地址 -->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</FaceDbInfo>
</FaceDbInfoList>
<picType>
<!--req, 图片类型: 1-小图, 2-大图-->
</picType>
<minSimilarity>
<!--req, xs:integer, 最小相似度-->
</minSimilarity>
<maxSimilarity>
<!--req, xs:integer, 最大相似度-->
</maxSimilarity>
<HumanAttribute>
<!--req, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<startId>
<!--req, xs:integer 本次查询起始id-->
</startId>
<maxRetNum>
<!--req, xs:integer 返回的最大条数-->
</maxRetNum>
<searchNum>
<!--req, xs:integer 要查询的条数-->
</searchNum>
<picData>
<!--dep, xs:string, Base64, 检索图片数据 -->
</picData>
</FaceCond>
</RetrievalFaceRecord>


XML_RetrievalFaceRecordRet

设备网络SDK开发使用手册

<RetrievalFaceRecordRet>
<!--req, 检索结果-->
<totalNum>
<!--req, xs:integer, 总记录数 -->
</totalNum>
<FaceRecordList>
<!--req人脸记录信息列表-->
<FaceRecord>
<id>
<!--req, xs:integer, 人脸记录id -->
</id>
<faceDBId>
<!--req, xs:integer, 人脸记录id -->
</faceDBId>
<HumanAttribute>
<!--dep, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<picData>
<!--dep, xs:string, Base64, 人脸图片-->
</picData>
<similarity>
<!--req, xs:integer, 相似度-->
</similarity>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</StorageInfo>
<note1>
<!--req, xs:string, 备注1-->
</note1>
<note2>
<!--req, xs:string, 备注2-->
</note2>
</FaceRecord>
</FaceRecordList>
</RetrievalFaceRecordRet>


XML_RetrievalSnapRecord

设备网络SDK开发使用手册

<RetrievalSnapRecord>
<userName>
<!--req, xs.string,用户ID-->
</userName>
<SnapCond>
<!--req, 检索条件-->
<DevChanInfoList>
<!--req, 抓拍设备通道信息-->
<DevChanInfo>
<Address>
<!--req, 抓拍机地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
<chanNo>1,2,3</chanNo>
<!--req, 查询的通道列表-->
</DevChanInfo>
</DevChanInfoList>
<picType>
<!--req, 图片类型-->
</picType>
<TimeRange>
<!--dep, 时间范围 -->
<startTime>
<!--req, xs:time, 起始时间,ISO8601 time-->
</startTime>
<endTime>
<!--req, xs:time, 结束时间,ISO8601 time -->
</endTime>
</TimeRange>

<minSimilarity>
<!--xs:integer, 最小相似度-->
</minSimilarity>
<maxSimilarity>
<!--xs:integer, 最大相似度-->
</maxSimilarity>
<sex>
<!--req, xs:string, "male,female" -->
</sex>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,
prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
<startId>
<!--xs:integer, 本次查询起始id-->
</startId>
<maxRetNum>
<!--req, xs:integer, 返回的最大条数-->
</maxRetNum>
<searchNum>
<!--req, xs:integer, 要查询的条数-->
</searchNum>
<picData>
<!--dep, xs:string, Base64, 检索图片 -->
</picData>
</SnapCond>
</RetrievalSnapRecord>


XML_RetrievalSnapRecordRet

设备网络SDK开发使用手册

<RetrievalSnapRecordRet>
<!--req, 检索结果-->
<recordNum>
<!--req, xs:integer，查询到的记录数 -->
</recordNum>
<SnapRecordList>
<SnapRecord>
<id>
<!--req, xs:integer，抓拍记录id -->
</id>
<snapTime>
<!--req, xs:tring，抓拍时间 -->
</snapTime>
<similarity>
<!--opt, xs:integer，相似度-->
</similarity>
<picData>
<!--dep, xs:string, Base64, 抓拍图片 -->
</picData>
<Rect>
<!--req, 人脸位置, 归一化值, 相对于背景图的分辨率 -->
<x>
<!--req, xs:float, x, 边界框左上角点的X轴坐标-->
</x>
<y>
<!--req, xs:float, y, 边界框左上角点的Y轴坐标-->
</y>
<width>
<!--req, xs:float, x, 区域宽度-->
</width>
<height>
<!--req, xs:float, x, 区域边高度-->
</height>
</Rect>
<HumanAttribute>
<!--req, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean,是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<picData>
<!--req, xs:string，图片数据，采用base64处理 -->
</picData>
<similarity>
<!--opt, xs:integer，相似度-->
</similarity>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<!--req, 存储服务器地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
</StorageInfo>
<SnapDevInfo>
<!--req, 抓拍设备信息-->
<Address>
<!--req, 抓拍设备地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 抓拍设备端口-->
</port>
</Address>
</SnapDevInfo>
</SnapRecord>
</SnapRecordList>
</RetrievalSnapRecordRet>


XML_SearchRecordCond

设备网络SDK开发使用手册

<SearchRecordCond>
<groupId>
<!--req, xs:integer, 分组id -->
</groupId>
<HumanAttribute>
<!--dep, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<searchScopeNum>
<!--req, xs:integer, 设备搜索范围-->
</searchScopeNum>
<picType>
<!--req, xs:integer, 图片类型: 1-小图, 2-大图-->
</picType>
<startId>
<!--req, xs:integer, 起始id -->
</startId>
<maxRetNum>
<!--req, xs:integer, 本次搜索最大允许的返回条数-->
</maxRetNum>
</SearchRecordCond>


XML_SnapConfig

设备网络SDK开发使用手册

<SnapConfig version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<snapTimes>
<!--req, xs:int, min="0", max="5", 线圈抓拍次数-->
</snapTimes>
<snapWaitTime>
<!--req, xs:int, min="0", max="6000", 抓拍等待时间-->
</snapWaitTime>
<intervalTimeList size="4">
<!--req, 连拍时间间隔列表-->
<intervalTime>
<!--req, xs:int, min="0" max="6000", 连拍时间间隔, 单位：ms-->
</intervalTime>
</intervalTimeList>
<JPEGParam>
<pictureSize>
<!--req, xs:string, 图片分辨率：
0-CIF, 1-QCIF, 2-D1, 3-UXGA(1600x1200), 4-SVGA(800x600), 5-HD720p(1280x720),
6-VGA, 7-XVGA, 8-HD900p, 9-HD1080, 10-2560*1920, 11-1600*304, 12-2048*1536,
13-2448*2048, 14-2448*1200, 15-2448*800, 16-XGA(1024*768), 17-SXGA(1280*1024),
18-WD1(960*576/960*480), 19-1080i, 20-576*576，21-1536*1536, 22-1920*1920,
161-288*320, 162-144*176, 163-480*640,164-240*320, 165-120*160, 166-576*720,
167-720*1280, 168-576*960, 180-180*240, 181-360*480, 182-540*720, 183-720*960,
184-960*1280, 185-1080*1440, 0xff-Auto(使用当前码流分辨率)-->
</pictureSize>
<pictureQuality>
<!-- req, xs:string, opt="best, better, general", 图片质量系数-->
</pictureQuality>
</JPEGParam>
</SnapConfig>


XML_SnapRecordCond

设备网络SDK开发使用手册

<SnapRecordCond>
<searchType>
<!--req, 查询类型: 0-批量查询，1-单条查询 -->
</searchType>
<BatchCond>
<!--dep, 0-批量查询-->
<DevChanInfoList>
<!--req, 抓拍设备通道信息列表-->
<DevChanInfo>
<Address>
<!--req, 抓拍机地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
<chanNo>1,2,3</chanNo>
<!--req, 查询的通道列表-->
</DevChanInfo>
</DevChanInfoList>
<picType>
<!--req, xs:integer, 图片类型: 1-小图, 2-大图 -->
</picType>
<TimeRange>
<!--dep，时间范围 -->
<startTime>
<!--req, xs:time，起始时间, ISO8601 time-->
</startTime>
<endTime>
<!--req, xs:time，结束时间, ISO8601 time-->
</endTime>
</TimeRange>
<sex>
<!--req, xs:string, "male,female" -->
</sex>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,
prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean,是否带眼镜"true,false" -->
</withGlass>
<startId>
<!--xs:integer, 本次查询起始id-->
</startId>
<maxRetNum>
<!--req, xs:integer, 返回的最大条数-->
</maxRetNum>
<searchNum>
<!--req, xs:integer, 要查询的条数-->
</searchNum>
</BatchCond>
<SingleCond>
<!--dep, 1-单条查询 -->
<recordId>
<!--req, xs:integer, 记录id -->
</recordId>
<picType>
<!--req, xs:integer, 图片类型: 1-小图, 2-大图-->
</picType>
<Address>
<!--req, 存储地址-->
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</SingleCond>
</SnapRecordCond>


XML_SnapRecordRet

设备网络SDK开发使用手册

<SnapRecordRet>
<recordNum>
<!--req, xs:integer, 查询到的记录数 -->
</recordNum>
<SnapRecordList>
<SnapRecord>
<id>
<!--req, xs:integer, 抓拍记录id -->
</id>
<snapTime>
<!--req, xs:tring, 抓拍时间 -->
</snapTime>
<similarity>
<!--opt, xs:integer,相似度-->
</similarity>
<picData>
<!--dep, xs:string, 采用base64处理, 抓拍图片数据 -->
</picData>
<Rect>
<!--req,人脸位置信息,归一化值, 相对于背景图的分辨率-->
<x>
<!--req, xs:float, x, 边界框左上角点的X轴坐标-->
</x>
<y>
<!--req, xs:float, y, 边界框左上角点的Y轴坐标-->
</y>
<width>
<!--req, xs:float, x, 区域宽度-->
</width>
<height>
<!--req, xs:float, x, 区域边高度-->
</height>
</Rect>
<!--req, 人脸位置 -->
<HumanAttribute>
<!--dep, 人员信息 -->
<sex>
<!--req, xs:string, "male,female"，性别：male- 男，female- 女-->
</sex>
<certificateType>
<!--req, xs:string, "identityCard,policeID", 证件类型：identityCard-身份证，policeID-警官证 -->
</certificateType>
<certificateNumber>
<!--req, xs:string, 证件号 -->
</certificateNumber>
<birthDate>
<!--req, xs:string, "201106"，生日-->
</birthDate>
<name>
<!--req, xs:string，姓名-->
</name>
<NativePlace>
<nationalityID>
<!--req, xs:integer, 国籍编号 -->
</nationalityID>
<provinceID>
<!--req, xs:integer, 省编号 -->
</provinceID>
<cityID>
<!--req, xs:integer, 市编号 -->
</cityID>
<countyID>
<!--req, xs:integer, 市编号 -->
</countyID>
</NativePlace>
<ageGroup>
<!--req, xs:string, 年龄段 "infant-婴幼儿,child-儿童,youngster-少年,adoleScent-青少年,youth-青年,prime-壮年,midlife-中年,midage-中老年,old-老年" -->
</ageGroup>
<withGlass>
<!--req, xs:boolean, 是否带眼镜"true,false" -->
</withGlass>
</HumanAttribute>
<similarity>
<!--opt, xs:integer, 相似度-->
</similarity>
<StorageInfo>
<!--req, 存储服务信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</StorageInfo>
<SnapDevInfo>
<!--req, 抓拍设备信息-->
<Address>
<ipVersion>
<!--req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!--dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!--dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req, xs:integer, 服务端口-->
</port>
</Address>
</SnapDevInfo>
</SnapRecord>
</SnapRecordList>
</SnapRecordRet>


XML_StorageResource

设备网络SDK开发使用手册

<StorageResource>
<StorageResourceNum>
<!--opt, xs:integer, 存储资源总个数 -->
</StorageResourceNum>
<StorageVolume>
<StorageInfo>
<!--req, 存储信息 -->
<Address>
<!--req, 存储服务器IP地址 -->
<ipVersion>
<!-- req, xs:string,"v4,v6,dual" -->
</ipVersion>
<ipAddress>
<!-- dep, xs:string, IPv4地址-->
</ipAddress>
<ipv6Address>
<!-- dep, xs:string, IPv6地址 -->
</ipv6Address>
<port>
<!--req xs:integer, 存储服务端口-->
</port>
</Address>
<storageDays>
<!--req, xs:integer, 存储天数 -->
</storageDays>
<storageNum>
<!--req, xs:integer, 存储条数 -->
</storageNum>
</StorageInfo>
<ResourceList>
<Resource>
<id>
<!--req, xs:integer, 存储ID -->
</id>
<storageName>
<!--opt, xs:string, 存储名称，最大长度32 -->
</storageName>
<storagePath>
<!--opt, xs:string, 存储路径，最大长度128 -->
</storagePath>
<storageDescription>
<!--opt, xs:string, 存储描述，最大长度32 -->
</storageDescription>
<storageType>
<!--opt, xs:string, 暂不支持，传空字符串""-->
</storageType>
<capacity>
<!--ro, req, xs:float, in MB, 容量-->
</capacity>
<freeSpace>
<!--ro, req, xs:float, in MB, 剩余空间-->
</freeSpace>
<reservedSpace>
<!--ro, req, xs:float, in MB, 预留容量-->
</reservedSpace>
</Resource>
</ResourceList>
</StorageVolume>
</StorageResource>


XML_SubscribeEvent

设备网络SDK开发使用手册

<SubscribeEvent version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<eventMode>
<!--req, xs:string,"all,list", 报警事件模式: all-表示所有报警均需要上报(部分报警可以指定上报url的方式), list-表示只上报订阅的报警类型-->
</eventMode>
<EventList>
<!--opt, 订阅的报警事件列表-->
<Event>
<!--req, 订阅的报警事件-->
<type>
<!--req,xs:string,报警事件类型(设备支持类型通过能力集获取):faceDetection(人脸侦测),faceCapture(人脸抓拍),ANPR(车牌识别),faceContrast(人脸比对),
whiteFaceContrast(授权名单人脸比对即陌生人比对),humanRecognition(人体目标识别),personDensityDetection(人员密度),HFPD(高频人员报警),
fielddetection(区域入侵),linedetection(越界侦测),regionEntrance(进入区域),regionExiting(离开区域),loitering(徘徊侦测),
group(人员聚集),rapidMove(快速运动侦测),parking(停车侦测),unattendedBaggage(物品遗留侦测),attendedBaggage(物品拿取侦测)-->
</type>
<pictureURLType>
<!--opt,xs:string, opt="binary,localURL,cloudStorageURL",
"报警url类型：binary-二进制,localURL-设备本地URL,cloudStorageURL-云存储URL",
如果需要云存储图片URL, 需要首先开启云存储服务器, 否则该字段配置不会生效, 图片以设备默认方式上报-->
</pictureURLType>
</Event>
</EventList>
<changedUploadSub/><!--opt, 变化上报订阅-->
<channels>
<!--opt,xs:string,"1,2,3,4…", 如果布防全部通道则不下发这个节点; 布防部分通道时, 列出通道号,多个通道用逗号隔开-->
</channels>
<identityKey>
<!--opt, xs:string, maxLen=64, 订阅连接交互口令, 例如订阅人脸比对报警事件类型时支持针对指定导入的人脸库(导入中携带identityKey口令)的比对结果进行布防 -->
</identityKey>
</SubscribeEvent>


XML_VehicleRecognitionSearchDescription

设备网络SDK开发使用手册

<VehicleRecognitionSearchDescription version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,车辆属性检索条件-->
<searchID>
<!--req,xs:string, 搜索记录唯一标识, 用来确认上层客户端是否为同一个(倘若是同一个, 则设备记录内存, 下次搜索加快速度) -->
</searchID>
<searchResultPosition>
<!--req, xs: integer, 查询结果在结果列表中的起始位置-->
</searchResultPosition>
<maxResults>
<!--req, xs: integer, 本次查询条数, 单次最多500条-->
</maxResults>
<timeSpanList>
<!--req, 查询时间段列表-->
<timeSpan>
<!--req, 查询时间段-->
<startTime>
<!--req, xs:datetime, 查询开始时间, ISO8601_time, 使用UTC时间-->
</startTime>
<endTime>
<!--req, xs:datetime, 查询结束时间, ISO8601_time, 使用UTC时间-->
</endTime>
</timeSpan>
</timeSpanList>
<eventType>
<!--opt,xs:string, "unlimit,vehicleBlockList,vehicleAllowList",
"事件类型: unlimit-不限, vehicleBlockList-车辆非授权名单, vehicleAllowList-车辆授权名单"-->
</eventType>
<VehicleModeList>
<VehicleMode>
<VehicleInfo>
<!--opt,属性搜图的时候<VehicleInfo>是必填项, <ModeInfo>不用赋值添加-->
<licensePlate>
<!--opt,xs:string, "车牌号"-->
</licensePlate>
<vehicleLogoRecog>
<!--opt,xs:integer, "车辆主品牌"-->
</vehicleLogoRecog>
<vehicleSubLogoRecog>
<!--opt,xs:integer, "车辆子品牌"-->
</vehicleSubLogoRecog>
<vehicleModel>
<!--opt,xs:integer, "车辆子品牌年款"-->
</vehicleModel>
<vehicleColor>
<!--opt,xs:string, "车身颜色, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vehicleColor>
<vehicleType>
<!--opt,xs:string, "车辆类型, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vehicleType>
</VehicleInfo>
<ModeInfo>
<!--opt,以图搜图的时候<ModeInfo>是必填项, <VehicleInfo>不用赋值添加, 目前暂不支持车辆检索以图搜图功能-->
<similarity>
<!--opt,xs:float, 相似度, 取值范围: [0.0,100.0]-->
</similarity>
<modeData>
<!--opt,xs:string,"目标模型数据, 字符串类型, 传输过程中针对二进制非建模数据进行base64的加密处理"-->
</modeData>
</ModeInfo>
</VehicleMode>
</VehicleModeList>
<ChannelList>
<!--opt, "查询通道列表, 仅在查询url不带通道号时, 该节点可以存在"-->
<Channel>
<channelID>
<!--req,xs:integer, "通道号"-->
</channelID>
</Channel>
</ChannelList>
<totalSearchResults>
<!--opt, xs:integer,"单次搜索总数" -->
</totalSearchResults>
</VehicleRecognitionSearchDescription>


XML_VehicleRecognitionSearchResult

设备网络SDK开发使用手册

<VehicleRecognitionSearchResult version="2.0" xmlns="http://www.std-cgi.org/ver20/XMLSchema">
<!--req,车辆属性检索结果-->
<searchID>
<!--req,xs:string; 搜索记录唯一标识，用来确认上层客户端是否为同一个(倘若是同一个，则设备记录内存，下次搜索加快速度) -->
</searchID>
<responseStatus>
<!--req,xs:string,"true,false", 查询状态-->
</responseStatus>
<responseStatusStrg>
<!--req,xs:string,"OK,NO MATCHES,MORE", 响应状态描述: OK-查询结束, NO MATCHES-未查找到匹配数据, MORE-更多结果需要下一次查询-->
</responseStatusStrg>
<numOfMatches>
<!--req, xs: integer, 本次查询的匹配结果个数-->
</numOfMatches>
<totalMatches>
<!--req, xs: integer, 总的匹配个数-->
</totalMatches>
<VehicleModeList>
<!--opt, 匹配数据列表-->
<VehicleMode>
<!--req, 车辆属性-->
<imageURL>
<!--req,xs:string,"匹配图片的URL"-->
</imageURL>
<captureTime>
<!--req,xs:ISO8601_time, 抓拍时间, 使用UTC时间, 例如: 2004-05-03T17:30:08.000Z-->
</captureTime>
<imageName>
<!--req,xs:string, 图片名称-->
</imageName>
<licensePlate>
<!--opt,xs:string, "车牌号"-->
</licensePlate>
<vehicleLogoRecog>
<!--opt,xs:integer, "车辆主品牌"-->
</vehicleLogoRecog>
<vehicleSubLogoRecog>
<!--opt,xs:integer, "车辆子品牌"-->
</vehicleSubLogoRecog>
<vehicleModel>
<!--opt,xs:integer, "车辆子品牌年款"-->
</vehicleModel>
<vehicleColor>
<!--opt,xs:string, "车身颜色, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vehicleColor>
<vehicleType>
<!--opt,xs:string, "车辆类型, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vehicleType>
<similarity>
<!--opt,xs:float, 相似度, 取值范围: [0.0,100.0]-->
</similarity>
<Rect>
<!--req,xs:string,"匹配图片车辆目标子图坐标, 归一化值, 0~1"-->
<height>
<!--req-xs:float, 车辆目标高度-->
</height>
<width>
<!--req-xs:float, 车辆目标宽度-->
</width>
<x>
<!--req-xs:float, 车辆目标左上角X坐标-->
</x>
<y>
<!--req-xs:float, 车辆目标左上角Y坐标-->
</y>
</Rect>
<vehicle_direction>
<!--opt,xs:string, "车辆行驶方向, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vehicle_direction>
<host_safe_belt>
<!--opt,xs:string, "主驾驶员安全带, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</host_safe_belt>
<host_sun_board>
<!--opt,xs:string, "主驾驶遮阳板, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</host_sun_board>
<user_phone>
<!--opt,xs:string, "打电话, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</user_phone>
<vice_safe_belt>
<!--opt,xs:string, "副驾驶员安全带, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vice_safe_belt>
<vice_sun_board>
<!--opt,xs:string, "副驾驶遮阳板, 取值请参考"<a href="../XML文件/车辆检索数据字典.html"><strong>车辆检索数据字典</strong></a>""-->
</vice_sun_board>
<channelID>
<!--opt,xs:intger, "通道号, 多通道检索时返回"-->
</channelID>
</VehicleMode>
</VehicleModeList>
</VehicleRecognitionSearchResult>


XML_WiegandCfg

设备网络SDK开发使用手册

<WiegandCfg version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
<communicateDirection>
<!--req, xs:string, opt="receive,send", 通信方向: receive- 接收, send- 发送-->
</communicateDirection>
<wiegandMode>
<!--dep, xs:string, opt="wiegand26,wiegand34", 韦根模式：wiegand26- 韦根26, wiegand34- 韦根34-->
</wiegandMode>
<!--dep,该节点的存在依赖于节点communicateDirection取值为send-->
<enable>
<!--opt, xs:boolean opt="true,false"，韦根参数使能，是否启用-->
</enable>
</WiegandCfg>


NET_DVR_AddBlockList

添加授权和非授权名单信息。

BOOL NET_DVR_AddBlockList(
  LONG                       lUserID,
  LONG                       lChannel,
  LPNET_VCA_BLOCKLIST_PARA   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpInter
[in] 授权和非授权名单信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_AddDataBase

添加数据库。

BOOL NET_DVR_AddDataBase(
  LONG                       lUserID,
  LPNET_VCA_DATABASE_PARAM   lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 数据库参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

目前仅针对第三方库添加，抓拍库不支持手动添加。

See Also

NET_DVR_Login_V40


NET_DVR_AddDVR

添加设备到可以接收PC机声音的广播组。

BOOL NET_DVR_AddDVR(
  LONG    lUserID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

Remarks

实现语音广播功能需先调用NET_DVR_ClientAudioStart或者NET_DVR_ClientAudioStart_V30接口采集本地PC的音频数据，再调用NET_DVR_AddDVR或者NET_DVR_AddDVR_V30逐个添加设备同时将采集到的数据发送给设备。

SDK最大支持添加512个设备。

See Also

NET_DVR_DelDVR

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_AddDVR_V30


NET_DVR_AddFaceDBRecord

添加人脸数据库记录信息。

BOOL NET_DVR_AddFaceDBRecord(
  LONG                        lUserID,
  DWORD                       dwDataBaseID,
  LPNET_VCA_DATARECORD_INFO   lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDataBaseID
[in] 数据库ID
lpInBuf
[in] 添加的数据记录信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

针对第三方数据库（人脸数据库）添加。

See Also

NET_DVR_Login_V40


NET_DVR_AddNetSignal

添加网络信号源。

BOOL NET_DVR_AddNetSignal(
  LONG                         lUserID,
  LPNET_DVR_NETSIGNAL_INFO     lpStruSignal,
  void                         *lpOutBuf,
  DWORD                        dwBufLen
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStruSignal
[in] 网络信号源信息
lpOutBuf
[out] 输出缓冲区，指向结构体NET_DVR_DEVICEID_INFO
dwBufLen
[in] 缓冲区长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口在客户端添加一个网络信号源，设备返回分配的deviceID。同一个设备的不同通道当做不同的网络信号源，添加时传入传输模式和码流类型。

See Also

NET_DVR_DEVICEID_INFO


NET_DVR_AdvanceFindSnapPicture

按通道、时间、阈值、图片ID等查询人脸图片（从抓拍数据库中查找）。

LONG NET_DVR_AdvanceFindSnapPicture(
  LONG                                 lUserID,
  LPNET_VCA_FIND_PICTURECOND_ADVANCE   lpFindParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFindParam
[in] 查找条件参数

Return Values

-1表示失败，其他值作为NET_DVR_FindNextSnapPic等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的图片信息，调用成功后，就可以调用NET_DVR_FindNextSnapPic接口来获取人脸图片信息。

See Also

NET_DVR_Login_V40
NET_DVR_FindNextSnapPic NET_DVR_FindSnapPicClose


NET_DVR_ClearHistoricData

清除历史数据信息。

BOOL NET_DVR_ClearHistoricData(
  LONG   lUserID,
  LONG   lChannel
);

Parameters

lUserID
[in]NET_DVR_Login_V40等登录接口的返回值
lChannel
[in]通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_ClientAudioStart

启动语音广播的PC端声音捕获。

BOOL NET_DVR_ClientAudioStart(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。

Remarks

Windows 7操作系统下，如果不外接音频设备，该接口将返回失败。
实现语音广播功能需先调用NET_DVR_ClientAudioStart或者NET_DVR_ClientAudioStart_V30接口采集本地PC的音频数据，再调用NET_DVR_AddDVR或者NET_DVR_AddDVR_V30逐个添加设备同时将采集到的数据发送给设备。

See Also

NET_DVR_ClientAudioStop

Reference Interface

扩展接口可见

NET_DVR_ClientAudioStart_V30


NET_DVR_CloseAlarmChan

撤销报警上传通道。

BOOL NET_DVR_CloseAlarmChan(
  LONG   lAlarmHandle
);

Parameters

lAlarmHandle
[in] NET_DVR_SetupAlarmChan的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_SetupAlarmChan

Reference Interface

扩展接口可见

NET_DVR_CloseAlarmChan_V30


NET_DVR_DecCtrlDec

解码设备运行状态控制。

BOOL NET_DVR_DecCtrlDec(
  LONG    lUserID,
  LONG    lChannel,
  DWORD   dwControlCode
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwControlCode
[in] 控制状态：1－启动解码；2－停止解码；3－停止当前轮巡；4－继续轮巡

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_DecCtrlScreen

解码设备解码窗口放大还原。

BOOL NET_DVR_DecCtrlScreen(
  LONG    lUserID,
  LONG    lChannel,
  DWORD   dwControl
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwControl
[in] 1－全屏；2－还原

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_DecPlayBackCtrl

解码设备远程回放文件控制。

BOOL NET_DVR_DecPlayBackCtrl(
  LONG                       lUserID,
  LONG                       lChannel,
  DWORD                      dwControlCode,
  DWORD                      dwInValue,
  DWORD                      *lpOutValue,
  LPNET_DVR_PLAYREMOTEFILE   lpRemoteFileInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwControlCode
[in] 控制命令，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_PLAYSTART | 1 | 开始播放
NET_DVR_PLAYSTOP | 2 | 停止播放
NET_DVR_PLAYPAUSE | 3 | 暂停播放
NET_DVR_PLAYRESTART | 4 | 恢复播放
NET_DVR_PLAYFAST | 5 | 快放
NET_DVR_PLAYSLOW | 6 | 慢放
dwInValue
[in] 设置参数
lpOutValue
[out] 获取到的参数指针
lpRemoteFileInfo
[in] 回放文件的参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_DelDVR

从可接收PC机声音的广播组里删除设备。

BOOL NET_DVR_DelDVR(
  LONG   lUserID
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_AddDVR

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_DelDVR_V30


NET_DVR_DeleteDataBase

删除数据库。

BOOL NET_DVR_DeleteDataBase(
  LONG                             lUserID,
  LPNET_VCA_DELETE_DATABASE_COND   lpCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpCond
[in] 数据库删除条件参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

删除操作只添加删除标志，而不真正删除。当硬盘空间小于10G时，才会真正删除检索数据库，包括图片。

See Also

NET_DVR_Login_V40


NET_DVR_DeleteFaceDBRecord

删除人脸数据库记录。

BOOL NET_DVR_DeleteFaceDBRecord(
  LONG                            lUserID,
  DWORD                           dwDataBaseID,
  LPNET_VCA_DELETE_RECORD_COND    lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDataBaseID
[in] 数据库ID
lpInBuf
[in] 人脸数据库记录删除条件参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_DeleteSnapDBRecord

删除抓拍数据库记录。

BOOL NET_DVR_DeleteSnapDBRecord(
  LONG                               lUserID,
  DWORD                              dwDataBaseID,
  LPNET_VCA_DELETE_SNAPRECORD_COND   lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDataBaseID
[in] 数据库ID
lpInBuf
[in] 抓拍数据库记录删除条件参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_DetectImage

单张图片检测。

BOOL NET_DVR_DetectImage(
  LONG                          lUserID,
  LPNET_VCA_FD_PROCIMG_CFG      lpFDProcImg,
  LPNET_VCA_FD_PROCIMG_RESULT   lpOutBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFDProcImg
[in] 图片信息参数
lpOutBuf
[out] 检测结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

不需要建模，只是记录大图信息，将大图上传给设备。

See Also

NET_DVR_Login_V40


NET_DVR_DownloadControl

下载控制。

BOOL NET_DVR_DownloadControl(
  LONG     lDownloadHandle,
  DWORD    enumDownloadType,
  void     *lpInBuffer,
  DWORD    dwInBufferLen,
  void     *lpOutBuffer,
  DWORD    dwOutBufferLen
);

Parameters

lDownloadHandle
[in] 文件下载接口，NET_DVR_StartDownload的返回值
enumDownloadType
[in] 控制类型，取值如下所示：
enum _NET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM_{
  ENUM_DOWNLOAD_CONTROL_ERR  = -1,
  ENUM_DOWNLOAD_CONTROL_QOS  = 1
}NET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM
ENUM_DOWNLOAD_CONTROL_ERR
错误类型
ENUM_DOWNLOAD_CONTROL_QOS
流控
lpInBuffer
[in] 输入参数，不同的控制类型对应不同的内容，详见“Remarks”说明
dwInBufferLen
[in] 输入参数指针指向内存大小
lpInBuffer
[out] 输出参数，不同的控制类型对应不同的内容，详见“Remarks”说明
lpInBuffer
[in] 输出参数指针指向内存大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

enumDownloadType | 含义 | lpInBuffer对应结构体 | lpCondBuffer对应结构体
ENUM_DOWNLOAD_CONTROL_QOS | 流控 | NET_DVR_DOWNLOAD_QOS | NULL

See Also

NET_DVR_StartDownload


NET_DVR_DrawAreaInit

初始化窗口，该接口为Linux下专有接口。

BOOL NET_DVR_DrawAreaInit(
  INITINFO    InitInfo,
  DWORD       iUseSDL
);

Parameters

InitInfo
[in] 初始化信息
iUseSDL
[in] 启用SDL，默认设为1

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PLAYERFAILED | 51 | 调用播放库中某个函数失败。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。

Remarks

当在Linux下预览前需要先调用此接口进行STL窗口的初始化。

See Also

INITINFO NET_DVR_DrawAreaRelease


NET_DVR_DrawAreaRelease

释放窗口资源，该接口为Linux下专用接口。

BOOL NET_DVR_DrawAreaRelease(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PLAYERFAILED | 51 | 调用播放库中某个函数失败。

See Also

NET_DVR_DrawAreaInit


NET_DVR_EmailTest

测试EMAIL配置参数能否收发。

BOOL NET_DVR_EmailTest(
  LONG   lUserID
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_FastAddBlockList

快速注册授权和非授权名单信息。

BOOL NET_DVR_FastAddBlockList(
  LONG                                    lUserID,
  LONG                                    lChannel,
  LPNET_VCA_BLOCKLIST_FASTREGISTER_PARA   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpInter
[in] 授权和非授权名单快速注册参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

该接口用于直接导入包含人脸的图片快速注册非授权名单，输出为单张单人脸图片，若图片包含多个人脸，则以评分最高的人脸为非授权名单对应的注册图片。

See Also

NET_DVR_Login_V40


NET_DVR_FastAddFaceDBRecord

快速添加人脸数据库记录信息。

BOOL NET_DVR_FastAddFaceDBRecord(
  LONG                             lUserID,
  DWORD                            dwDataBaseID,
  LPNET_VCA_FAST_DATARECORD_INFO   lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDataBaseID
[in] 数据库ID
lpInBuf
[in] 添加的数据记录信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

针对第三方数据库（人脸数据库）添加。如果人脸图无法检测等原因返回失败，不添加记录，图片检测错误时返回智能错误类型，其他参数返回参数错误。

See Also

NET_DVR_Login_V40


NET_DVR_FindBackgroundPic

根据人脸子图的ID查找背景图。

BOOL NET_DVR_FindBackgroundPic(
  LONG     lUserID,
  DWORD    dwPicID,
  BYTE     *pPicBuffer,
  DWORD    *dwPicLen
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwPicID
[in] 人脸子图的ID号
pPicBuffer
[out] 背景图数据指针(需要申请大于等于图片大小的缓冲区用于保存图片数据，一般2M左右)
dwPicLen
[out] 背景图数据长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

分析仪触发人脸抓拍，抓拍结果在NET_DVR_SetDVRMessageCallBack_V30设置的报警信息回调中获取（对应消息类型：COMM_UPLOAD_FACESNAP_RESULT，结构体：NET_VCA_FACESNAP_RESULT），上传内容包括人脸子图ID、人脸图片等，而背景图则需要根据上传的人脸图ID通过该接口获取。

See Also

NET_DVR_Login_V40


NET_DVR_FindBlockList

授权和非授权名单信息查询。

LONG NET_DVR_FindBlockList(
  LONG                       lUserID,
  LPNET_VCA_BLOCKLIST_COND   lpBlockListCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpBlockListCond
[in] 查找条件参数

Return Values

-1表示失败，其他值作为NET_DVR_FindNextBlockList等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的授权和非授权名单的信息，调用成功后，就可以调用NET_DVR_FindNextBlockList接口来获取授权和非授权名单信息。

See Also

NET_DVR_FindNextBlockList NET_DVR_FindBlockListClose


NET_DVR_FindBlockListClose

关闭授权和非授权名单信息查询。

BOOL NET_DVR_FindBlockListClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindBlockList的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindBlockList


NET_DVR_FindClose

关闭文件查找，释放资源。

BOOL NET_DVR_FindClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 文件查找句柄NET_DVR_FindFile的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_FindFile


NET_DVR_FindDataBase

查询数据库信息。

LONG NET_DVR_FindDataBase(
  LONG                            lUserID,
  LPNET_VCA_FIND_DATABASE_COND    lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 数据库查找条件参数

Return Values

-1表示失败，其他值作为NET_DVR_FindNextDataBase等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的数据库信息，调用成功后，需要调用NET_DVR_FindNextDataBase接口来获取查找到的数据库信息。

See Also

NET_DVR_FindNextDataBase NET_DVR_FindDataBaseClose


NET_DVR_FindDataBaseClose

关闭数据库信息查找，释放资源。

BOOL NET_DVR_FindDataBaseClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindDataBase的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindDataBase


NET_DVR_FindDVRLog

查找设备的日志信息。

LONG NET_DVR_FindDVRLog(
  LONG              lUserID,
  LONG              lSelectMode,
  DWORD             dwMajorType,
  DWORD             dwMinorType,
  LPNET_DVR_TIME    lpStartTime,
  LPNET_DVR_TIME    lpStopTime
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lSelectMode
[in] 查询方式：0－全部；1－按类型；2－按时间；3－按时间和类型
dwMajorType
[in] 日志主类型（S.M.A.R.T搜索时无效），0表示全部类型，其他类型定义如下：
宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_INFORMATION | 0x4 | 日志附加信息
dwMinorType
[in] 日志次类型（S.M.A.R.T搜索时无效），0表示全部类型，根据不同的主类型的次类型定义如下：
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARM_IN | 0x1 | 报警输入
MINOR_ALARM_OUT | 0x2 | 报警输出
MINOR_MOTDET_START | 0x3 | 移动侦测报警开始
MINOR_MOTDET_STOP | 0x4 | 移动侦测报警结束
MINOR_HIDE_ALARM_START | 0x5 | 遮挡报警开始
MINOR_HIDE_ALARM_STOP | 0x6 | 遮挡报警结束
MINOR_VCA_ALARM_START | 0x7 | 智能报警开始
MINOR_VCA_ALARM_STOP | 0x8 | 智能报警结束

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_VI_LOST | 0x21 | 视频信号丢失
MINOR_ILLEGAL_ACCESS | 0x22 | 非法访问
MINOR_HD_FULL | 0x23 | 硬盘满
MINOR_HD_ERROR | 0x24 | 硬盘错误
MINOR_DCD_LOST | 0x25 | MODEM 掉线(保留)
MINOR_IP_CONFLICT | 0x26 | IP地址冲突
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_REC_ERROR | 0x28 | 录像出错
MINOR_IPC_NO_LINK | 0x29 | IPC连接异常
MINOR_VI_EXCEPTION | 0x2a | 视频输入异常(只针对模拟通道)
MINOR_IPC_IP_CONFLICT | 0x2b | IPC的IP地址冲突

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_START_DVR | 0x41 | 开机
MINOR_STOP_DVR | 0x42 | 关机
MINOR_STOP_ABNORMAL | 0x43 | 异常关机
MINOR_REBOOT_DVR | 0x44 | 本地重启设备
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_LOGOUT | 0x51 | 本地注销登陆
MINOR_LOCAL_CFG_PARM | 0x52 | 本地配置参数
MINOR_LOCAL_PLAYBYFILE | 0x53 | 本地按文件回放或下载
MINOR_LOCAL_PLAYBYTIME | 0x54 | 本地按时间回放或下载
MINOR_LOCAL_START_REC | 0x55 | 本地开始录像
MINOR_LOCAL_STOP_REC | 0x56 | 本地停止录像
MINOR_LOCAL_PTZCTRL | 0x57 | 本地云台控制
MINOR_LOCAL_PREVIEW | 0x58 | 本地预览(保留不使用)
MINOR_LOCAL_MODIFY_TIME | 0x59 | 本地修改时间(保留不使用)
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_LOCAL_RECFILE_OUTPUT | 0x5b | 本地备份录象文件
MINOR_LOCAL_FORMAT_HDD | 0x5c | 本地初始化硬盘
MINOR_LOCAL_CFGFILE_OUTPUT | 0x5d | 导出本地配置文件
MINOR_LOCAL_CFGFILE_INPUT | 0x5e | 导入本地配置文件
MINOR_LOCAL_COPYFILE | 0x5f | 本地备份文件
MINOR_LOCAL_LOCKFILE | 0x60 | 本地锁定录像文件
MINOR_LOCAL_UNLOCKFILE | 0x61 | 本地解锁录像文件
MINOR_LOCAL_DVR_ALARM | 0x62 | 本地手动清除和触发报警
MINOR_IPC_ADD | 0x63 | 本地添加IPC
MINOR_IPC_DEL | 0x64 | 本地删除IPC
MINOR_IPC_SET | 0x65 | 本地设置IPC
MINOR_LOCAL_START_BACKUP | 0x66 | 本地开始备份
MINOR_LOCAL_STOP_BACKUP | 0x67 | 本地停止备份
MINOR_LOCAL_COPYFILE_START_TIME | 0x68 | 本地备份开始时间
MINOR_LOCAL_COPYFILE_END_TIME | 0x69 | 本地备份结束时间
MINOR_LOCAL_ADD_NAS | 0x6a | 本地添加网络硬盘
MINOR_LOCAL_DEL_NAS | 0x6b | 本地删除NAS盘
MINOR_LOCAL_SET_NAS | 0x6c | 本地设置NAS盘
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_START_REC | 0x72 | 远程开始录像
MINOR_REMOTE_STOP_REC | 0x73 | 远程停止录像
MINOR_START_TRANS_CHAN | 0x74 | 开始透明传输
MINOR_STOP_TRANS_CHAN | 0x75 | 停止透明传输
MINOR_REMOTE_GET_PARM | 0x76 | 远程获取参数
MINOR_REMOTE_CFG_PARM | 0x77 | 远程配置参数
MINOR_REMOTE_GET_STATUS | 0x78 | 远程获取状态
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_START_VT | 0x7c | 开始语音对讲
MINOR_STOP_VT | 0x7d | 停止语音对讲
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_PLAYBYFILE | 0x7f | 远程按文件回放
MINOR_REMOTE_PLAYBYTIME | 0x80 | 远程按时间回放
MINOR_REMOTE_PTZCTRL | 0x81 | 远程云台控制
MINOR_REMOTE_FORMAT_HDD | 0x82 | 远程格式化硬盘
MINOR_REMOTE_STOP | 0x83 | 远程关机
MINOR_REMOTE_LOCKFILE | 0x84 | 远程锁定文件
MINOR_REMOTE_UNLOCKFILE | 0x85 | 远程解锁文件
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_RECFILE_OUTPUT | 0x88 | 远程导出录象文件
MINOR_REMOTE_DVR_ALARM | 0x89 | 远程手动清除和触发报警
MINOR_REMOTE_IPC_ADD | 0x8a | 远程添加IPC
MINOR_REMOTE_IPC_DEL | 0x8b | 远程删除IPC
MINOR_REMOTE_IPC_SET | 0x8c | 远程设置IPC
MINOR_REBOOT_VCA_LIB | 0x8d | 重启智能库
MINOR_REMOTE_ADD_NAS | 0x8e | 远程添加NAS盘
MINOR_REMOTE_DEL_NAS | 0x8f | 远程删除NAS盘
MINOR_REMOTE_SET_NAS | 0x90 | 远程设置NAS盘

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_INFORMATION | 0x4 | 附加信息
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_HDD_INFO | 0xa1 | 硬盘信息
MINOR_SMART_INFO | 0xa2 | S.M.A.R.T信息
MINOR_REC_START | 0xa3 | 开始录像
MINOR_REC_STOP | 0xa4 | 停止录像
MINOR_REC_OVERDUE | 0xa5 | 过期录像删除
MINOR_LINK_START | 0xa6 | 连接前端设备
MINOR_LINK_STOP | 0xa7 | 断开前端设备
MINOR_NET_DISK_INFO | 0xa8 | 网络硬盘信息
lpStartTime
[in] 文件的开始时间
lpStopTime
[in] 文件结束时间

Return Values

-1表示失败，其他值作为NET_DVR_FindNextLog等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口用于搜索普通日志信息支持2000条。

See Also

NET_DVR_FindNextLog

NET_DVR_FindLogClose

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_FindDVRLog_V30


NET_DVR_FindFaceMatchAlarm

非授权名单比对报警结果查询。

LONG NET_DVR_FindFaceMatchAlarm(
  LONG                         lUserID,
  LPNET_VCA_FIND_PICTURECOND   lpFindParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindCond
[in] 查找条件参数

Return Values

-1表示失败，其他值作为NET_DVR_FindNextFaceMatchAlarm等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的录像文件的信息，调用成功后，就可以调用NET_DVR_FindNextFaceMatchAlarm接口来获取非授权名单比对报警结果信息。

See Also

NET_DVR_Login_V40
NET_DVR_FindNextFaceMatchAlarm NET_DVR_FindFaceMatchAlarmClose


NET_DVR_FindFaceMatchAlarmClose

关闭非授权名单比对报警结果查询。

BOOL NET_DVR_FindFaceMatchAlarmClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindFaceMatchAlarm的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindFaceMatchAlarm


NET_DVR_FindFile

根据文件类型、时间查找设备录像文件。

LONG NET_DVR_FindFile(
  LONG               lUserID,
  LONG               lChannel,
  DWORD              dwFileType,
  LPNET_DVR_TIME     lpStartTime,
  LPNET_DVR_TIME     lpStopTime
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
dwFileType
[in] 要查找的文件类型：0xff-全部；0-定时录像；1-移动侦测；2-报警触发；3-报警或动测；4-报警和动测；5-命令触发；6-手动录像；7-智能录像
lpStartTime
[in] 文件的开始时间
lpStopTime
[in] 文件的结束时间

Return Values

-1表示失败，其他值作为NET_DVR_FindClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件的类型和查找时间范围，调用成功后，就可以调用NET_DVR_FindNextFile接口来获取文件信息；
ISAPI只支持定时录像文件查找。

See Also

NET_DVR_FindNextFile NET_DVR_FindClose

Reference Interface

扩展接口可见
NET_DVR_FindFile_V30


NET_DVR_FindFile_V30

根据文件类型、时间查找设备录像文件。

LONG NET_DVR_FindFile_V30(
  LONG                  lUserID,
  LPNET_DVR_FILECOND    pFindCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindCond
[in] 欲查找的文件信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件的信息，调用成功后，就可以调用NET_DVR_FindNextFile接口来获取文件信息。

See Also

NET_DVR_FindNextFile_V30 NET_DVR_FindClose_V30

Reference Interface

扩展接口可见
NET_DVR_FindFile_V40

该接口扩展源于
NET_DVR_FindFile


NET_DVR_FindFile_V40

根据文件类型、时间查找设备录像文件。

LONG NET_DVR_FindFile_V40(
  LONG                      lUserID,
  LPNET_DVR_FILECOND_V40    pFindCond
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pFindCond
[in] 欲查找的文件信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件的信息，调用成功后，就可以调用NET_DVR_FindNextFile_V40接口来获取文件信息。

See Also

NET_DVR_FindNextFile_V40 NET_DVR_FindClose_V30

Reference Interface

该接口扩展源于
NET_DVR_FindFile_V30


NET_DVR_FindFileByEvent

根据事件查找录像文件。

LONG NET_DVR_FindFileByEvent(
  LONG                            lUserID,
  LPNET_DVR_SEARCH_EVENT_PARAM    lpSearchEventParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSearchEventParam
[in] 欲查找的文件信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindNextEvent等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件(按事件)的信息，调用成功后，就可以调用NET_DVR_FindNextEvent接口来获取文件信息。按事件查找出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_FindNextEvent NET_DVR_FindClose_V30

Reference Interface

扩展接口可见

NET_DVR_FindFileByEvent_V40


NET_DVR_FindFileByEvent_V40

根据事件查找录像文件。

LONG NET_DVR_FindFileByEvent_V40(
  LONG                                lUserID,
  LPNET_DVR_SEARCH_EVENT_PARAM_V40    lpSearchEventParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSearchEventParam
[in] 欲查找的文件信息结构

Return Values

-1表示失败，其他值作为NET_DVR_FindNextEvent_V40等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要查找的录像文件(按事件)的信息，调用成功后，就可以调用NET_DVR_FindNextEvent_V40接口来获取文件信息。按事件查找出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_FindNextEvent_V40 NET_DVR_FindClose_V30

Reference Interface

该接口扩展源于
NET_DVR_FindFileByEvent


NET_DVR_FindLogClose

释放查找日志的资源。

BOOL NET_DVR_FindLogClose(
  LONG   lLogHandle
);

Parameters

lLogHandle
[in] 日志查找句柄，NET_DVR_FindDVRLog的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindDVRLog

Reference Interface

扩展接口可见

NET_DVR_FindLogClose_V30


NET_DVR_FindMatchPicture

按条件查找背景图。

BOOL NET_DVR_FindMatchPicture(
  LONG                              lUserID,
  LPNET_VCA_FIND_MATCHPIC_COND      lpFindCond,
  LPNET_VCA_FIND_MATCHPIC_RESULT    lpFindResult
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFindCond
[in] 背景图查找条件参数
lpFindResult
[out] 背景图查找结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_FindNextBlockList

逐个查找非授权名单信息。

LONG NET_DVR_FindNextBlockList(
  LONG                       lFindHandle,
  LPNET_VCA_BLOCKLIST_INFO   lpFindData
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindBlockList的返回值
lpFindData
[out] 保存查找结果信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找信息之前，必须先调用NET_DVR_FindBlockList得到当前的查找句柄。此接口用于获取一条已查找到的授权和非授权名单信息，若要获取全部的已查找到的授权和非授权名单信息，需要循环调用此接口。

每次可查询非授权名单数目最大为2000。

See Also

NET_DVR_FindBlockList


NET_DVR_FindNextDataBase

逐个获取查找到的数据库信息。

LONG NET_DVR_FindNextDataBase(
  LONG                        lFindHandle,
  LPNET_VCA_DATABASE_PARAM    lpOutBuf
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindDataBase的返回值
lpOutBuf
[out] 查找到的数据库信息

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取客流量统计信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到客流量统计信息
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的信息，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找信息时异常

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindDataBase得到当前的查找句柄。

See Also

NET_DVR_FindDataBase


NET_DVR_FindNextEvent

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextEvent(
  LONG                          lFindHandle,
  LPNET_DVR_SEARCH_EVENT_RET    lpSearchEventRet
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFileByEvent的返回值
lpSearchEventRet
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFileByEvent得到当前的查找句柄。按事件查找出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_FindFileByEvent

Reference Interface

扩展接口可见

NET_DVR_FindNextEvent_V40


NET_DVR_FindNextEvent_V40

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextEvent_V40(
  LONG                              lFindHandle,
  LPNET_DVR_SEARCH_EVENT_RET_V40    lpSearchEventRet
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFileByEvent_V40的返回值
lpSearchEventRet
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFileByEvent_V40得到当前的查找句柄。按事件查找出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_FindFileByEvent_V40

Reference Interface

该接口扩展源于
NET_DVR_FindNextEvent


NET_DVR_FindNextFaceMatchAlarm

逐个查找非授权名单信息。

LONG NET_DVR_FindNextFaceMatchAlarm(
  LONG                                 lFindHandle,
  LPNET_VCA_FACESNAP_MATCH_ALARM_LOG   lpFaceMatchAlarmLog
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindFaceMatchAlarm的返回值
lpFindData
[out] 保存查找结果信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFaceMatchAlarm得到当前的查找句柄。此接口用于获取一条已查找到的授权和非授权名单信息，若要获取全部的已查找到的授权和非授权名单信息，需要循环调用此接口。

每次可查询非授权名单数目最大为2000。

See Also

NET_DVR_FindFaceMatchAlarm


NET_DVR_FindNextFile

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextFile(
  LONG                   lFindHandle,
  LPNET_DVR_FIND_DATA    lpFindData
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFile的返回值
lpFindData
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFile得到当前的查找句柄。此接口用于获取一条已查找到的文件信息，若要获取全部的已查找到的文件信息，需要循环调用此接口。

See Also

NET_DVR_FindFile

Reference Interface

扩展接口可见
NET_DVR_FindNextFile_V30


NET_DVR_FindNextFile_V30

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextFile_V30(
  LONG                      lFindHandle,
  LPNET_DVR_FINDDATA_V30    lpFindData
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFile_V40或者NET_DVR_FindFile_V30的返回值
lpFindData
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFile_V40得到当前的查找句柄。此接口用于获取一条已查找到的文件信息，若要获取全部的已查找到的文件信息，需要循环调用此接口。通过此接口可以同时获取到与当前录像文件相关的卡号信息和文件是否被锁定的信息。

每次可查询文件最大个数为4000。

See Also

NET_DVR_FindFile_V40 NET_DVR_FindFile_V30

Reference Interface

该接口扩展源于
NET_DVR_FindNextFile


NET_DVR_FindNextFile_V40

逐个获取查找到的文件信息。

LONG NET_DVR_FindNextFile_V40(
  LONG                      lFindHandle,
  LPNET_DVR_FINDDATA_V40    lpFindData
);

Parameters

lFindHandle
[in] 文件查找句柄，NET_DVR_FindFile_V40或者NET_DVR_FindFile_V30的返回值
lpFindData
[out] 保存文件信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常
NET_DVR_FIND _TIMEOUT | 1005 | 查找文件超时

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindFile_V40得到当前的查找句柄。此接口用于获取一条已查找到的文件信息，若要获取全部的已查找到的文件信息，需要循环调用此接口。通过此接口可以同时获取到与当前录像文件相关的卡号信息和文件是否被锁定的信息。

每次可查询文件最大个数为4000。

See Also

NET_DVR_FindFile_V40

Reference Interface

该接口扩展源于
NET_DVR_FindNextFile_V30


NET_DVR_FindNextLog

逐条获取查找到的日志信息。

LONG NET_DVR_FindNextLog(
  LONG             lLogHandle,
  LPNET_DVR_LOG    lpLogData
);

Parameters

lLogHandle
[in] 日志查找句柄，NET_DVR_FindDVRLog的返回值
lpLogData
[out] 保存日志信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取日志信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到日志
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的日志，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找日志时异常

Remarks

在调用该接口获取查找日志之前，必须先调用NET_DVR_FindDVRLog得到当前的查找句柄。

See Also

NET_DVR_FindDVRLog

Reference Interface

扩展接口可见

NET_DVR_FindNextLog_V30


NET_DVR_FindNextPDCInfo

逐个获取查找到的客流量信息。

LONG NET_DVR_FindNextPDCInfo(
  LONG                      lFindHandle,
  LPNET_DVR_PDC_QUERY       lpFindData
);

Parameters

lFindHandle
[in] 客流量统计信息查找句柄，NET_DVR_FindPDCInfo的返回值
lpFindData
[out] 保存客流量统计信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取客流量统计信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到客流量统计信息
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的信息，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找信息时异常

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_FindPDCInfo得到当前的查找句柄。

See Also

NET_DVR_FindPDCInfo


NET_DVR_FindNextPicture

逐个获取查找到的图片信息。

LONG NET_DVR_FindNextPicture(
  LONG                      lFindHandle,
  LPNET_DVR_FIND_PICTURE    lpFindData
);

Parameters

lFindHandle
[in] 图片查找句柄，NET_DVR_FindPicture的返回值
lpFindData
[out] 保存图片信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找图片之前，必须先调用NET_DVR_FindPicture得到当前的查找句柄。此接口用于获取一条已查找到的图片信息，若要获取全部的已查找到的图片信息，需要循环调用此接口。

See Also

NET_DVR_FindPicture

Reference Interface

扩展接口可见

NET_DVR_FindNextPicture_V40


NET_DVR_FindNextPicture_V40

逐个获取查找到的图片信息。

LONG NET_DVR_FindNextPicture_V40(
  LONG                          lFindHandle,
  LPNET_DVR_FIND_PICTURE_V40    lpFindData
);

Parameters

lFindHandle
[in] 图片查找句柄，NET_DVR_FindPicture的返回值
lpFindData
[out] 保存图片信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找图片之前，必须先调用NET_DVR_FindPicture得到当前的查找句柄。此接口用于获取一条已查找到的图片信息，若要获取全部的已查找到的图片信息，需要循环调用此接口。

See Also

NET_DVR_FindPicture

Reference Interface

该接口扩展源于
NET_DVR_FindNextPicture


NET_DVR_FindNextSnapPic

逐个查找人脸图片信息。

LONG NET_DVR_FindNextSnapPic(
  LONG                         lFindHandle,
  LPNET_VCA_SUB_SNAPPIC_DATA   lpFindData
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindSnapPicture或NET_DVR_AdvanceFindSnapPicture的返回值
lpFindData
[out] 保存查找结果信息的指针

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_DVR_FILE_SUCCESS | 1000 | 获取文件信息成功
NET_DVR_FILE_NOFIND | 1001 | 未查找到文件
NET_DVR_ISFINDING | 1002 | 正在查找请等待
NET_DVR_NOMOREFILE | 1003 | 没有更多的文件，查找结束
NET_DVR_FILE_EXCEPTION | 1004 | 查找文件时异常

Remarks

在调用该接口获取查找图片之前，必须先调用NET_DVR_FindSnapPicture或者NET_DVR_AdvanceFindSnapPicture得到当前的查找句柄。此接口用于获取一条已查找到的图片信息，若要获取全部的已查找到的图片信息，需要循环调用此接口。

每次可查询图片数目最大为2000。

See Also

NET_DVR_FindSnapPicture NET_DVR_AdvanceFindSnapPicture


NET_DVR_FindPDCClose

关闭客流量信息查找，释放资源。

BOOL NET_DVR_FindPDCClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 客流量信息查找句柄NET_DVR_FindPDCInfo的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindPDCInfo


NET_DVR_FindPDCInfo

客流量信息查询。

LONG NET_DVR_FindPDCInfo(
  LONG               lUserID,
  LONG               lChannel,
  LPNET_DVR_TIME     lpStartTime,
  LPNET_DVR_TIME     lpStopTime
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpStartTime
[in] 统计的开始时间
lpStopTime
[in] 统计的结束时间

Return Values

-1表示失败，其他值作为NET_DVR_FindNextPDCInfo等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口调用成功后，就可以调用NET_DVR_FindNextPDCInfo接口来获取人数统计信息。

See Also

NET_DVR_FindNextPDCInfo NET_DVR_FindPDCClose


NET_DVR_FindSnapPicClose

关闭事后查询。

BOOL NET_DVR_FindSnapPicClose(
  LONG   lFindHandle
);

Parameters

lFindHandle
[in] 查找句柄，NET_DVR_FindSnapPicture或NET_DVR_AdvanceFindSnapPicture的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_FindSnapPicture NET_DVR_AdvanceFindSnapPicture


NET_DVR_FindSnapPicture

事后查找抓拍人脸图片。

LONG NET_DVR_FindSnapPicture(
  LONG                         lUserID,
  LPNET_VCA_FIND_PICTURECOND   lpFindParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFindParam
[in] 查找条件参数

Return Values

-1表示失败，其他值作为NET_DVR_FindNextSnapPic等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找的图片信息，调用成功后，就可以调用NET_DVR_FindNextSnapPic接口来获取人脸图片信息。

See Also

NET_DVR_Login_V40
NET_DVR_FindNextSnapPic NET_DVR_FindSnapPicClose


NET_DVR_FormatDisk_V50

远程格式化设备硬盘。

LONG NET_DVR_FormatDisk_V50(
  LONG    lUserID,
  NET_DVR_FORMAT_HDD      lpFormatHdd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpFormatHdd
[in] 保存图片信息的指针

Return Values

-1表示失败，其他值作为NET_DVR_CloseFormatHandle等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

格式化过程中如果网络断了，设备上的格式化操作依然会继续，但是客户端无法收到状态。

See Also

NET_DVR_CloseFormatHandle NET_DVR_GetFormatProgress
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetAlarmOut

获取设备报警输出。

BOOL NET_DVR_GetAlarmOut(
  LONG                         lUserID,
  LPNET_DVR_ALARMOUTSTATUS     lpAlarmOutState
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpAlarmOutState
[out] 报警输出状态

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetAlarmOut


NET_DVR_GetAllValidWinInfo

获取所有有效窗口信息。

BOOL NET_DVR_GetAllValidWinInfo(
  LONG                lUserID,
  LPNET_DVR_WINLIST   lpWinListInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpWinListInfo
[out] 窗口列表结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_ScreenWinCtrl


NET_DVR_GetAudioProgress

获取语音上传或者下载的进度。

BOOL NET_DVR_GetAudioProgress(
  LONG    lAudioHandle
);

Parameters

lAudioHandle
[in] 上传或下载句柄，NET_DVR_StartUploadAudio或者NET_DVR_StartDownloadAudio的返回值

Return Values

-1失败，0～100表示语音上传或者下载的进度。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartUploadAudio NET_DVR_StartDownloadAudio


NET_DVR_GetConfigFile_EX

导出配置文件。

BOOL NET_DVR_GetConfigFile_EX(
  LONG    lUserID,
  char    *sOutBuffer,
  DWORD   dwOutSize
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sOutBuffer
[out] 存放配置参数的缓冲区
dwOutSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_GetConfigFile_V30


NET_DVR_GetDDrawDeviceTotalNums

获取系统的显示设备的数量。

LONG NET_DVR_GetDDrawDeviceTotalNums(
);

Return Values

-1表示失败，如果返回0，则表示系统中只有主显示设备。如果返回1，则表示系统中安装了多块显卡，但只有一块显卡与Windows桌面绑定。返回其他值，则表示系统中与桌面绑定的显卡数目。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当播放库PlayCtrl.dll的版本为6.1以上时该接口失效。


NET_DVR_GetDecCurLinkStatus

获取解码设备当前连接状态。

BOOL NET_DVR_GetDecCurLinkStatus(
  LONG                  lUserID,
  LONG                  lChannel,
  LPNET_DVR_DECSTATUS   lpDecStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpDecStatus
[out] 解码设备状态参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetDecInfo

获取解码设备参数。

BOOL NET_DVR_GetDecInfo(
  LONG               lUserID,
  LONG               lChannel,
  LPNET_DVR_DECCFG   lpDecoderinfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpDecoderinfo
[out] 解码设备参数指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetDecInfo


NET_DVR_GetDecTransPort

设置解码设备透明通道参数。

BOOL NET_DVR_GetDecTransPort(
  LONG                lUserID,
  LPNET_DVR_PORTCFG   lpTransPort
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpTransPort
[out] 解码设备透明通道参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetDecTransPort


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
IP_VIEW_DEV_ABILITY | 0x014 | IP可视对讲主机能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了按照不同的能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
IP_VIEW_DEV_ABILITY | 获取IP可视对讲主机能力 | 无 | IP可视对讲主机能力XML描述(IpViewDevAbility)

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
DEVICE_SOFTHARDWARE_ABILITY | 0x001 | 设备软硬件能力
DEVICE_NETWORK_ABILITY | 0x002 | 设备无线网络能力
DEVICE_ENCODE_ALL_ABILITY | 0x003 | 设备所有编码能力
DEVICE_ENCODE_CURRENT | 0x004 | 设备当前编码能力
IPC_FRONT_PARAMETER | 0x005 | 设备前端参数
DEVICE_RAID_ABILITY | 0x007 | 设备RAID能力
DEVICE_ALARM_ABILITY | 0x00a | 设备报警能力
VCA_DEV_ABILITY | 0x100 | 智能设备的能力
VCA_CHAN_ABILITY | 0x110 | 智能通道的能力
MATRIXDECODER_ABILITY | 0x200 | 多路解码器显示、解码能力
SNAPCAMERA_ABILITY | 0x300 | 智能交通摄像机能力集
COMPRESSIONCFG_ABILITY | 0x400 | 压缩参数能力
COMPRESSION_LIMIT | 0x401 | 主子码流压缩参数能力限制
PIC_CAPTURE_ABILITY | 0x402 | 抓图图片分辨率能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。前7种能力描述都是以XML格式给出，下表列出了能力获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_SOFTHARDWARE_ABILITY | 获取设备软硬件能力 | 无 | 设备软硬件能力XML描述
DEVICE_NETWORK_ABILITY | 获取无线设备网络能力 | 无 | 设备无线网络能力XML描述
DEVICE_ENCODE_ALL_ABILITY | 获取设备所有编码能力 | 无 | 设备所有编码能力XML描述
DEVICE_ENCODE_CURRENT | 获取设备当前编码能力 | 当前编码能力输入描述 | 设备当前编码能力XML描述
IPC_FRONT_PARAMETER | 获取设备前端参数 | 无 | 设备前端参数XML描述
DEVICE_RAID_ABILITY | 获取设备RAID能力 | 无 | 设备RAID能力XML描述
DEVICE_ALARM_ABILITY | 获取设备报警能力 | 报警能力获取输入描述 | 设备报警能力XML描述
VCA_DEV_ABILITY | 获取智能设备的能力 | 无 | NET_VCA_DEV_ABILITY
VCA_CHAN_ABILITY | 获取智能通道能力 | NET_VCA_CHAN_IN_PARAM | NET_VCA_BEHAVIOR_ABILITY
MATRIXDECODER_ABILITY | 获取多路解码器显示、解码能力 | 无 | NET_DVR_MATRIX_ABILITY
SNAPCAMERA_ABILITY | 获取智能交通摄像机的能力 | 无 | NET_DVR_SNAP_ABILITY
COMPRESSIONCFG_ABILITY | 获取压缩参数能力 | 通道号（4个字节） | NET_DVR_COMPRESSIONCFG_ABILITY
COMPRESSION_LIMIT | 获取主子码流压缩参数能力限制 | NET_DVR_COMPRESSION_LIMIT | NET_DVR_COMPRESSIONCFG_ABILITY
PIC_CAPTURE_ABILITY | 获取图片能力 | 通道号（4个字节） | NET_DVR_COMPRESSIONCFG_ABILITY

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

设备能力集在4.2版本中已经做了扩展，扩展后V2.0版本的能力集请参见NET_DVR_GetDeviceAbility。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDeviceAbility

获取设备能力集。

BOOL NET_DVR_GetDeviceAbility(
  LONG     lUserID,
  DWORD    dwAbilityType,
  char     *pInBuf,
  DWORD    dwInLength,
  char     *pOutBuf,
  DWORD    dwOutLength
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
SCREENCONTROL_ABILITY | 0x600 | 多屏控制器能力集
WALL_ABILITY | 0x212 | 电视墙能力集
pInBuf
[in] 输入缓冲区指针（按照设备规定的能力参数的描述方式组合，可以是XML文本或结构体形式）
dwInLength
[in] 输入缓冲区的长度
pOutBuf
[out] 输出缓冲区指针（按照设备规定的能力集的描述方式，可以是XML文本或结构体形式）
dwOutLength
[in] 接收数据的缓冲区的长度

接口中pInBuf参数的具体定义格式按照不同的设备规定有所不同，可以是以结构体的形式或者XML描述方式。同样地，参数pOutBuf的输出表达格式也按不同的设备规定可以是以结构体的形式或者XML描述方式。下表列出了按照不同的能力类型获取时，需要输入参数和输出参数的格式定义。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
SCREENCONTROL_ABILITY | 获取多屏控制器能力 | 无 | NET_DVR_SCREENCONTROL_ABILITY
WALL_ABILITY | 获取电视墙能力 | 无 | 电视墙能力XML描述

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要获取的配置个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] dwCount个返回结果的总大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量获取监控点配置信息的通用接口。lpInBuffer指定需要获取的dwCount个配置信息，lpOutBuffer保存获取得到的dwCount个配置信息。

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_VCA_CTRLINFO_CFG | 获取智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5022
NET_DVR_GET_ROI_DETECT_NUM | 获取ROI检测区域编号数目 | dwCount个NET_DVR_MUL_STREAM_CHANNEL_GROUP | dwCount个NET_DVR_ROI_DETECT_NUM | 3349
NET_DVR_GET_ROI_DETECT | 获取ROI检测区域配置 | dwCount个NET_DVR_ROI_DETECT_COND | dwCount个NET_DVR_ROI_DETECT_CFG | 3350
NET_DVR_GET_FACE_DETECT | 获取人脸侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_DETECT_FACE | 3352
NET_DVR_GET_SCENECHANGE_DETECTIONCFG | 获取场景变更报警配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_SCENECHANGE_DETECTION | 3356
NET_DVR_GET_TRAVERSE_PLANE_DETECTION | 获取越界侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_TRAVERSE_PLANE_DETECTION | 3360
NET_DVR_GET_FIELD_DETECTION | 获取区域入侵侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_FIELDDETECION | 3362
NET_DVR_GET_DEFOCUSPARAM | 获取虚焦侦测参数配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_DEFOCUSPARAM | 3364
NET_DVR_GET_AUDIOEXCEPTIONPARAM | 获取音频异常配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_AUDIO_EXCEPTION | 3366
NET_DVR_GET_HEATMAP_CFG | 获取热度图参数配置 | dwCount个NET_DVR_HEATMAP_COND | dwCount个NET_DVR_HEATMAP_CFG | 3407

See Also

NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_GetDeviceConfig

批量获取设备配置信息（带发送数据）。

BOOL NET_DVR_GetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 要设置的设备个数，设为1
lpInBuffer
[in] 配置条件缓冲区
dwInBufferSize
[in] 缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpOutBuffer
[out] 设备返回的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，对应lpOutBuffer的内容就是无效的
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口是带有发送数据的批量获取配置信息的通用接口。lpInBuffer指定需要获取的dwCount个监控点信息，lpOutBuffer保存获取得到的dwCount个监控点的配置信息。
  • 不同的获取功能对应不同的结构体和命令号，如下表所示：
    • dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_EXTERNAL_MATRIX_CFG | 获取矩阵信息 | dwCount个矩阵ID，每个ID为4个字节。 | dwCount个NET_DVR_EXTERNAL_MATRIX_CFG | 1619
NET_DVR_GET_OUTPUT_SCREEN_RELATION | 获取显示墙连接配置 | dwCount个显示屏序号，每个序号为4个字节 | dwCount个NET_DVR_DISP_SCREEN | 1621
NET_DVR_GET_DEV_BASEINFO | 获取单个设备信息 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_DEV_BASE_INFO | 1650
NET_DVR_GET_DEV_NETINFO | 获取设备的网络信息 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_NETPARAM | 1652
NET_DVR_GET_SIGNAL_SOURCE_INFO | 获取信号源信息 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_CHAN_INFO | 1654
NET_DVR_GET_WALL_WINDOW_V41 | 获取电视墙中的窗口 | dwCount个NET_DVR_WALL_INDEX | dwCount个NET_DVR_WALLWINCFG | 9020
NET_DVR_GET_WALL_SCENE_PARAM_V41 | 获取场景参数 | dwCount个NET_DVR_WALL_INDEX | dwCount个NET_DVR_WALLSCENECFG | 9023
  • 对于命令NET_DVR_GET_WALL_WINDOW_V41，dwCount为0xffffffff时，lpInBuffer为1个结构体NET_DVR_WALL_INDEX的大小且结构体中的bySceneNo参数无效；lpOutBuffer的前4个字节为场景个数n，后面是n个场景结构体信息。
  • 对于其他命令，dwCount为0xffffffff时，lpInBuffer为NULL，dwInBufferSize为0，表示获取所有的相关信息，并且此时lpOutBuffer的前4个字节为返回的实际信息个数，4字节后才是返回的具体信息，因此，lpOutBuffer缓冲区的大小需要比列表所述大小多4个字节。

    • See Also

    NET_DVR_SetDeviceConfig NET_DVR_GetLastError


NET_DVR_GetDevList

获取分布式子设备信息列表。

BOOL NET_DVR_GetDevList(
  LONG                lUserID,
  LPNET_DVR_DEVLIST   lpDevListInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDevListInfo
[out] 分布式子设备信息列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

将NET_DVR_DEVLIST中的pBuffer置为空且dwBufLen为0，此时只返回分布式子设备数量。

然后上层客户端根据返回的数量分配pBuffer的大小，然后再次调用该接口，获取设备列表。


NET_DVR_GetDialParam

获取拨号参数。

BOOL NET_DVR_GetDialParam(
  LONG                     lUserID,
  LPNET_DVR_DIALREQUEST    lpDialRequest,
  LPNET_DVR_DIALPARAM      lpDialParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDialRequest
[in] 拨号参数请求结构
lpDialParam
[out] 拨号参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDialParam


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ACS_WORK_STATUS | 获取门禁主机工作状态 | 无效 | NET_DVR_ACS_WORK_STATUS | 2123
NET_DVR_GET_CARD_RIGHT_WEEK_PLAN | 获取卡权限周计划参数 | 周计划编号，从1开始 | NET_DVR_WEEK_PLAN_CFG | 2126
NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN | 获取卡权限假日计划参数 | 假日计划编号，从1开始 | NET_DVR_HOLIDAY_PLAN_CFG | 2130
NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP | 获取卡权限假日组参数 | 假日组编号，从1开始 | NET_DVR_HOLIDAY_GROUP_CFG | 2134
NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE | 获取卡权限计划模板参数 | 计划模板编号，从1开始 | NET_DVR_PLAN_TEMPLATE | 2138
NET_DVR_GET_CARD_READER_CFG | 获取读卡器参数 | 读卡器编号 | NET_DVR_CARD_READER_CFG | 2140
NET_DVR_GET_EVENT_CARD_LINKAGE_CFG | 获取事件/卡号联动配置参数 | 联动事件编号，从1开始 | NET_DVR_EVENT_CARD_LINKAGE_CFG | 2153

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | 通道号 | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_RULECFG | 获取异常行为识别参数 | 通道号 | NET_VCA_RULECFG | 153
NET_DVR_GET_FACEDETECT_RULECFG | 获取人脸检测规则 | 通道号 | NET_DVR_FACEDETECT_RULECFG | 421

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号或者组号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示。

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MIX_AUDIOIN_CFG | 获取混音输入口参数配置 | 音频输入口号，从1开始 | NET_DVR_MIX_AUDIOIN_CFG | 6351
NET_DVR_GET_MIX_AUDIOOUT_CFG | 获取混音输出口参数配置 | 音频输出口号，从1开始 | NET_DVR_MIX_AUDIOOUT_CFG | 6353
NET_DVR_GET_AUDIOIN_VOLUME_CFG | 获取音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6355
NET_DVR_GET_AUDIOOUT_VOLUME_CFG | 获取音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6369

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ALARMCENTER_NETCFG | 获取报警中心网络参数 | 无效 | NET_DVR_ALARMCENTER_NETCFG | 2715

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_SATELLITETIME | 获取卫星定位参数配置 | 无效 | NET_DVR_SATELLITETIME_CFG | 3709

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_SIP_CFG | 获取IP可视对讲主机SIP服务器参数 | 无效 | NET_DVR_SIP_CFG | 11001
NET_DVR_GET_IP_VIEW_DEVCFG | 获取IP可视对讲主机配置参数 | 无效 | NET_DVR_IP_VIEW_DEVCFG | 11003
NET_DVR_GET_IP_VIEW_AUDIO_CFG | 获取IP可视对讲主机音频参数 | 无效 | NET_DVR_IP_VIEW_AUDIO_CFG | 11005
NET_DVR_GET_IP_VIEW_CALL_CFG | 获取IP可视对讲主机呼叫参数 | 无效 | NET_DVR_IP_VIEW_CALL_CFG | 11007
NET_DVR_GET_AUDIO_LIMIT_ALARM_CFG | 获取声音超限配置参数 | 无效 | NET_IPC_AUDIO_LIMIT_ALARM_CFG | 11009
NET_DVR_GET_BUTTON_DOWN_ALARM_CFG | 获取按钮按下报警配置参数 | 无效 | NET_IPC_BUTTON_DOWN_ALARM_CFG | 11011

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_IVMS_STREAMCFG | 获取智能分析仪(iDS-52xx)前端取流参数 | 通道号 | NET_IVMS_STREAMCFG | 163
NET_DVR_GET_IVMS_BEHAVIORCFG | 获取智能分析仪(iDS-52xx)行为规则参数 | 通道号 | NET_IVMS_BEHAVIORCFG | 177
NET_DVR_GET_IVMS_MASK_REGION | 获取智能分析仪(iDS-52xx)屏蔽区域参数 | 通道号 | NET_IVMS_MASK_REGION_LIST | 173
NET_DVR_GET_IVMS_ENTER_REGION | 获取智能分析仪(iDS-52xx)ATM进入区域参数 | 通道号 | NET_IVMS_ENTER_REGION | 175

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PU_STREAMCFG | 获取iVMS前端取流参数 | 通道号 | NET_DVR_PU_STREAM_CFG | 187

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
lChannel
[in] 通道号，如果命令不需要通道号，该参数无效，置为0xFFFFFFFF即可
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_DEVICECFG | 获取设备参数 | 无效 | NET_DVR_DEVICECFG | 100
NET_DVR_GET_NETCFG | 获取网络参数 | 无效 | NET_DVR_NETCFG | 102
NET_DVR_GET_PICCFG | 获取图像参数 | 有效 | NET_DVR_PICCFG | 104
NET_DVR_GET_COMPRESSCFG | 获取压缩参数 | 有效 | NET_DVR_COMPRESSIONCFG | 106
NET_DVR_GET_RECORDCFG | 获取录像参数 | 有效 | NET_DVR_RECORD | 108
NET_DVR_GET_DECODERCFG | 获取（云台）解码器参数 | 有效 | NET_DVR_DECODERCFG | 110
NET_DVR_GET_RS232CFG | 获取232串口参数 | 无效 | NET_DVR_RS232CFG | 112
NET_DVR_GET_ALARMINCFG | 获取报警输入参数 | 有效 | NET_DVR_ALARMINCFG | 114
NET_DVR_GET_ALARMOUTCFG | 获取报警输出参数 | 有效 | NET_DVR_ALARMOUTCFG | 116
NET_DVR_GET_TIMECFG | 获取时间参数 | 无效 | NET_DVR_TIME | 118
NET_DVR_GET_PREVIEWCFG | 获取本地预览参数 | 无效 | NET_DVR_PREVIEWCFG | 120
NET_DVR_GET_VIDEOOUTCFG | 获取视频输出参数 | 无效 | NET_DVR_VIDEOOUT | 122
NET_DVR_GET_USERCFG | 获取用户参数 | 无效 | NET_DVR_USER | 124
NET_DVR_GET_EXCEPTIONCFG | 获取异常参数 | 无效 | NET_DVR_EXCEPTION | 126
NET_DVR_GET_ZONEANDDST | 获取时区和夏时制参数 | 无效 | NET_DVR_ZONEANDDST | 128
NET_DVR_GET_SHOWSTRING | 获取叠加字符参数 | 有效 | NET_DVR_SHOWSTRING | 130
NET_DVR_GET_EVENTCOMPCFG | 获取事件触发录像参数 | 有效 | NET_DVR_COMPRESSIONCFG | 132
NET_DVR_GET_AUXOUTCFG | 获取报警触发辅助输出参数 | 无效 | NET_DVR_AUXOUTCFG | 140
NET_DVR_GET_PREVIEWCFG_AUX | 获取辅助预览参数 | 无效 | NET_DVR_PREVIEWCFG | 142
NET_DVR_GET_PICCFG_EX | 获取图像参数（扩展） | 有效 | NET_DVR_PICCFG_EX | 200
NET_DVR_GET_USERCFG_EX | 获取用户参数 | 无效 | NET_DVR_USER_EX | 202
NET_DVR_GET_COMPRESSCFG_EX | 获取压缩参数（扩展） | 有效 | NET_DVR_COMPRESSIONCFG_EX | 204
NET_DVR_GET_NETAPPCFG | 获取网络应用参数(NTP/DDNS) | 无效 | NET_DVR_NETAPPCFG | 222
NET_DVR_GET_NTPCFG | 获取网络应用参数(NTP) | 无效 | NET_DVR_NTPPARA | 224
NET_DVR_GET_DDNSCFG | 获取网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA | 226
NET_DVR_GET_NFSCFG | 获取NFS（网络文件系统）参数 | 无效 | NET_DVR_NFSCFG | 230
NET_DVR_GET_SHOWSTRING_EX | 获取叠加字符参数 | 有效 | NET_DVR_SHOWSTRING_EX | 238
NET_DVR_GET_EMAILPARACFG | 获取网络应用参数(EMAIL) | 无效 | NET_DVR_EMAILCFG | 250
NET_DVR_GET_DDNSCFG_EX | 获取网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA_EX | 274
NET_DVR_GET_PTZPOS | 获取IP快球PTZ参数 | 有效 | NET_DVR_PTZPOS | 293
NET_DVR_GET_PTZSCOPE | 获取IP快球PTZ范围参数 | 有效 | NET_DVR_PTZSCOPE | 294
NET_DVR_GET_AP_INFO_LIST | 获取无线网络资源参数 | 无效 | NET_DVR_AP_INFO_LIST | 305
NET_DVR_GET_WIFI_CFG | 获取IP监控设备无线参数 | 无效 | NET_DVR_WIFI_CFG | 307
NET_DVR_GET_WIFI_WORKMODE | 获取IP监控设备网口参数 | 无效 | NET_DVR_WIFI_WORKMODE | 309
NET_DVR_GET_AID_RULECFG | 获取交通事件规则参数 | 无效 | NET_DVR_AID_RULECFG | 405
NET_DVR_GET_TPS_RULECFG | 获取交通统计规则参数 | 无效 | NET_DVR_TPS_RULECFG | 407
NET_DVR_GET_NETCFG_V30 | 获取网络参数 | 无效 | NET_DVR_NETCFG_V30 | 1000
NET_DVR_GET_PICCFG_V30 | 获取图像参数 | 有效 | NET_DVR_PICCFG_V30 | 1002
NET_DVR_GET_RECORDCFG_V30 | 获取录像参数 | 有效 | NET_DVR_RECORD_V30 | 1004
NET_DVR_GET_USERCFG_V30 | 获取用户参数 | 无效 | NET_DVR_USER_V30 | 1006
NET_DVR_GET_CRUISE | 获取巡航参数 | 有效 | NET_DVR_CRUISE_PARA | 1020
NET_DVR_GET_ALARMINCFG_V30 | 获取报警输入参数 | 有效 | NET_DVR_ALARMINCFG_V30 | 1024
NET_DVR_GET_EXCEPTIONCFG_V30 | 获取异常参数 | 无效 | NET_DVR_EXCEPTION_V30 | 1034
NET_DVR_GET_NET_DISKCFG | 获取网络硬盘接入参数 | 无效 | NET_DVR_NET_DISKCFG | 1038
NET_DVR_GET_DECODERCFG_V30 | 获取（RS485)云台解码器参数 | 通道号 | NET_DVR_DECODERCFG_V30 | 1042
NET_DVR_GET_IPPARACFG | 获取IP接入配置参数 | 无效 | NET_DVR_IPPARACFG | 1048
NET_DVR_GET_IPALARMINCFG | 获取IP报警输入接入配置参数 | 无效 | NET_DVR_IPALARMINCFG | 1050
NET_DVR_GET_IPALARMOUTCFG | 获取IP报警输出接入配置参数 | 无效 | NET_DVR_IPALARMOUTCFG | 1052
NET_DVR_GET_HDCFG | 获取硬盘管理参数 | 无效 | NET_DVR_HDCFG | 1054
NET_DVR_GET_HDGROUP_CFG | 获取盘组管理参数 | 无效 | NET_DVR_HDGROUP_CFG | 1056
NET_DVR_GET_COMPRESSCFG_AUD | 获取语音对讲音频参数 | 无效 | NET_DVR_COMPRESSION_AUDIO | 1058
NET_DVR_GET_CCDPARAMCFG | 获取前端参数 | 无效 | NET_DVR_CAMERAPARAMCFG | 1067
NET_DVR_GET_ZEROCHANCFG | 获取零通道压缩参数 | 有效 | NET_DVR_ZEROCHANCFG | 1102
NET_DVR_GET_ZERO_ZOOM | 获取零通道缩放参数 | 有效 | NET_DVR_ZERO_ZOOMCFG | 1107
NET_DVR_GET_NETCFG_MULTI | 获取多网卡配置参数 | 无效 | NET_DVR_NETCFG_MULTI | 1161
NET_DVR_GET_ALARMHOST_MAIN_STATUS | 获取报警主机主要状态 | 无效 | NET_DVR_ALARMHOST_MAIN_STATUS | 1190
NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG | 获取时控输出参数 | 无效 | NET_DVR_OUTPUT_SCHEDULE_RULECFG | 2068
NET_VCA_GET_RULECFG_V41 | 获取异常行为识别参数(扩展) | 通道号 | NET_VCA_RULECFG_V41 | 5011
NET_DVR_GET_ALARMHOST_NETCFG | 获取网络参数配置 | 无效 | NET_DVR_ALARMHOST_NETCFG | 2007

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PDC_RULECFG | 获取客流量规则配置参数 | 通道号 | NET_DVR_PDC_RULE_CFG | 185
NET_DVR_GET_PDC_RULECFG_V41 | 获取客流量规则配置参数（扩展） | 通道号 | NET_DVR_PDC_RULE_CFG_V41 | 5019

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_PIC_MODEL_CFG | 获取图片建模配置参数 | 无效 | NET_DVR_PIC_MODEL_CFG | 6196

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_Login_V40


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 多屏控制器，用户参数配置只支持NET_DVR_USER_INFO_V30中的sUserName和sPassword，其他参数都为无效参数。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_USERCFG_V30 | 获取用户参数 | 无效 | NET_DVR_USER_V30 | 1006
NET_DVR_GET_SCREEN_WINCFG | 获取单个窗口参数 | 窗口号 | NET_DVR_SCREEN_WINCFG | 1603
NET_DVR_LAYOUTLIST_GET | 获取场景列表 | 4字节保留 | NET_DVR_LAYOUT_LIST | 1605
NET_DVR_INPUTLIST_GET | 获取输入信号源列表 | 4字节保留 | NET_DVR_INPUTSTREAM_LIST | 1608
NET_DVR_OUTPUT_GET | 获取输出参数 | 集中式多屏控制器4字节保留；分布式多屏控制器表示墙号 | NET_DVR_OUTPUTCFG | 1611
NET_DVR_GET_OSDCFG | 获取虚拟LED参数 | 虚拟LED序号：集中式多屏控制器4字节表示序号；分布式多屏控制器高2字节表示墙号，低2字节表示序号 | NET_DVR_OSDCFG | 1613
NET_DVR_BIGSCREEN_GETSERIAL | 获取大屏串口信息 | 无效 | NET_DVR_SERIAL_CONTROL | 1614
NET_DVR_GET_VCS_USER_CFG | 获取用户信息 | 用户号，从1开始 | NET_DVR_VCS_USER_INFO | 1623
NET_DVR_GET_CURRENT_SCENE_V41 | 获取当前电视墙中正在使用的场景 | 电视墙墙号，从1开始 | NET_DVR_WALLSCENECFG | 9022

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    以下是该接口可能返回的错误值

    错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_MOTION_TRACK_CFG | 获取自动跟踪参数 | 通道号 | NET_DVR_MOTION_TRACK_CFG | 3228
NET_DVR_GET_PTZ_TRACK_PARAM | 获取PTZ跟踪参数 | 通道号 | NET_DVR_PTZ_TRACK_PARAM | 3263

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_ALARMHOST_FAULT_CFG | 获取故障处理配置参数 | 无效 | NET_DVR_GET_ALARMHOST_FAULT_CFG | 2039
NET_DVR_GET_NETAPPCFG | 获取网络应用参数(NTP/DDNS) | 无效 | NET_DVR_NETAPPCFG | 222
NET_DVR_GET_NTPCFG | 获取网络应用参数(NTP) | 无效 | NET_DVR_NTPPARA | 224
NET_DVR_GET_DDNSCFG_V30 | 获取网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA_V30 | 1010
NET_DVR_GET_EMAILCFG_V30 | 获取网络应用参数(EMAIL) | 无效 | NET_DVR_EMAILCFG_V30 | 1012
NET_DVR_GET_NETCFG_MULTI_V50 | 获取多网卡配置参数 | 组号，从1开始，每组4个网卡 | NET_DVR_NETCFG_MULTI | 1163
NET_DVR_GET_NETWORK_BONDING | 获取BONDING网卡参数 | 无效 | NET_DVR_NETWORK_BONDING | 1254
NET_DVR_GET_FTPCFG | 获取首选FTP参数 | 无效 | NET_DVR_FTPCFG | 134
NET_DVR_GET_FTPCFG_SECOND | 获取备用FTP参数 | 无效 | NET_DVR_FTPCFG | 6103
NET_DVR_GET_SNMPCFG_V30 | 获取SNMP参数 | 无效 | NET_DVR_SNMPCFG_V30 | 1114
NET_DVR_GET_AP_INFO_LIST | 获取无线网络资源参数 | 无效 | NET_DVR_AP_INFO_LIST | 305
NET_DVR_GET_WIFI_CFG | 获取IP监控设备无线参数 | 无效 | NET_DVR_WIFI_CFG | 307
NET_DVR_GET_WIFI_WORKMODE | 获取WIFI网口工作模式 | 无效 | NET_DVR_WIFI_WORKMODE | 309
NET_DVR_GET_WIFI_STATUS | 获取设备当前wifi连接状态 | 无效 | NET_DVR_WIFI_CONNECT_STATUS | 310
NET_DVR_GET_NAT_CFG | 获取NAT映射参数 | 无效 | NET_DVR_NAT_CFG | 6111
NET_DVR_GET_POE_CFG | 获取POE参数 | 无效 | NET_DVR_POE_CFG | 6114
NET_DVR_GET_BONJOUR_CFG | 获取Bonjour信息 | 无效 | NET_DVR_BONJOUR_CFG | 6127
NET_DVR_GET_SOCKS_CFG | 获取SOCKS信息 | 无效 | NET_DVR_SOCKS_CFG | 6130
NET_DVR_GET_QOS_CFG | 获取QoS信息 | 无效 | NET_DVR_QOS_CFG | 6132
NET_DVR_GET_HTTPS_CFG | 获取HTTPS信息 | 无效 | NET_DVR_HTTPS_CFG | 6134
NET_DVR_GET_WPSCFG | 获取无线WPS参数 | 无效 | NET_DVR_WPS_PARAM | 3218
NET_DVR_GET_DEVICE_PIN | 获取设备PIN码 | 无效 | NET_DVR_PIN_PARAM | 3221
NET_DVR_GET_GBT28181_ACCESS_CFG | 获取GBT28181协议接入配置 | 无效 | NET_DVR_GBT28181_ACCESS_CFG | 3249
NET_DVR_GET_CMS_CFG | 获取平台参数 | 无效 | NET_DVR_CMS_PARAM | 2070
NET_DVR_GET_EZVIZ_ACCESS_CFG | 获取EZVIZ接入参数 | 无效 | NET_DVR_EZVIZ_ACCESS_CFG | 3398
NET_DVR_GET_SMSRELATIVEPARA | 获取短信相关参数 | 无效 | NET_DVR_SMSRELATIVEPARAM | 1173
NET_DVR_GET_DEVICE_NET_USING_INFO | 获取当前设备网络资源使用情况 | 无效 | NET_DVR_DEVICE_NET_USING_INFO | 6009

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRConfig

获取设备的配置信息。

BOOL NET_DVR_GetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpOutBuffer,
  DWORD    dwOutBufferSize,
  LPDWORD  lpBytesReturned
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpOutBuffer
[out] 接收数据的缓冲指针
dwOutBufferSize
[in] 接收数据的缓冲长度(以字节为单位)，不能为0
lpBytesReturned
[out] 实际收到的数据长度指针，不能为NULL

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpOutBuffer对应结构体 | 宏定义值
NET_DVR_GET_FACESNAPCFG | 获取人脸抓拍参数 | 通道号 | NET_VCA_FACESNAPCFG | 5001

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetDVRConfig NET_DVR_GetLastError


NET_DVR_GetDVRIPByResolveSvr

通过解析服务器，获取设备的动态IP地址。

BOOL NET_DVR_GetDVRIPByResolveSvr(
  char     *sServerIP,
  WORD     wServerPort,
  BYTE     *sDVRName,
  WORD     wDVRNameLen,
  BYTE     *sDVRSerialNumber,
  WORD     wDVRSerialLen,
  char     *sGetIP
);

Parameters

sServerIP
[in] 解析服务器的IP地址
wServerPort
[in] 解析服务器的端口号，我们提供的解析服务器端口号为7071
sDVRName
[in] 设备名称
wDVRNameLen
[in] 设备名称的长度
sDVRSerialNumber
[in] 设备的序列号
wDVRSerialLen
[in] 设备序列号的长度
sGetIP
[out] 获取到的设备IP地址指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口中的设备名称和设备序列号不能同时为空。
IPServer是我公司提供的一款域名解析服务器软件。

Reference Interface

扩展接口可见 NET_DVR_GetDVRIPByResolveSvr_EX


NET_DVR_GetDVRIPByResolveSvr_EX

通过解析服务器，获取设备的动态IP地址和端口号。

BOOL NET_DVR_GetDVRIPByResolveSvr_EX(
  char     *sServerIP,
  WORD     wServerPort,
  BYTE     *sDVRName,
  WORD     wDVRNameLen,
  BYTE     *sDVRSerialNumber,
  WORD     wDVRSerialLen,
  char     *sGetIP,
  DWORD    *dwPort
);

Parameters

sServerIP
[in] 解析服务器(IPServer或者hiDDNS)的IP地址或者域名
wServerPort
[in] 解析服务器的端口号。IP Server端口号为7071，hiDDNS服务器的端口号为80。
sDVRName
[in] 设备名称
wDVRNameLen
[in] 设备名称的长度
sDVRSerialNumber
[in] 设备的序列号
wDVRSerialLen
[in] 设备序列号的长度
sGetIP
[out] 获取到的设备IP地址指针
dwPort
[out] 获取到的设备端口号指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口中的设备名称和设备序列号不能同时为空。通过设备域名或者序列号解析出设备当前IP地址和端口，然后调用NET_DVR_Login_V40登录设备。
支持的解析服务器有IPServer和hiDDNS。

Reference Interface

该接口扩展源于

NET_DVR_GetDVRIPByResolveSvr


NET_DVR_GetDVRWorkState

获取设备的工作状态。

BOOL NET_DVR_GetDVRWorkState(
  LONG                   lUserID,
  LPNET_DVR_WORKSTATE    lpWorkState
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lpWorkState
[out] 获取的设备工作状态结构体参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_GetDVRWorkState_V30


NET_DVR_GetDVRWorkState_V30

获取设备的工作状态。

BOOL NET_DVR_GetDVRWorkState_V30(
  LONG                       lUserID,
  LPNET_DVR_WORKSTATE_V30    lpWorkState
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lpWorkState
[out] 获取的设备工作状态结构体参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

建议通过调用NET_DVR_GetDeviceConfig(命令：NET_DVR_GET_WORK_STATUS)获取设备工作状态（NET_DVR_WORKSTATE_V40），支持获取大于64路的设备通道状态，且兼容该接口。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_GetDVRWorkState


NET_DVR_GetFaceMatchPic

根据抓拍人脸子图的ID、非授权名单ID、非授权名单比对人脸子图ID查找相应的图片。

BOOL NET_DVR_GetFaceMatchPic(
  LONG                          lUserID,
  LPNET_VCA_FACEMATCH_PICCOND   lpMatchCond,
  LPNET_VCA_FACEMATCH_PICTURE   lpMatchPic
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpMatchCond
[in] 查找条件参数
lpMatchPic
[out] 查找图片结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetFileByName_V50

按文件名下载集群录像文件。

LONG NET_DVR_GetFileByName_V50(
  LONG    lUserID,
  LPNET_DVR_DOWNLOAD_BY_NAME_COND    pParam
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
pParam
[in] 回放参数

Return Values

-1表示失败，其他值作为NET_DVR_StopGetFile等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_CREATEFILE_ERROR | 34 | 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

在使用该接口下载录像文件前，可以先调用录像文件查找的接口获取文件名。该接口指定了当前要下载的录像文件，调用成功后，还需要调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现下载。

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopGetFile
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetFileByTime

按时间下载录像文件。

LONG NET_DVR_GetFileByTime(
  LONG              lUserID,
  LONG              lChannel,
  LPNET_DVR_TIME    lpStartTime,
  LPNET_DVR_TIME    lpStopTime,
  char              *sSavedFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40的返回值
lChannel
[in] 通道号
lpStartTime
[in] 开始时间
lpStopTime
[in] 结束时间
sSavedFileName
[in] 下载后保存到PC机的文件路径，需为绝对路径

Return Values

-1表示失败，其他值作为NET_DVR_StopGetFile等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_CREATEFILE_ERROR | 34 | 创建文件出错。本地录像、保存图片、获取配置文件和远程下载录像时创建文件失败。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

  • 该接口指定了当前要下载的录像文件，调用成功后，还需要调用NET_DVR_PlayBackControl接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现下载。
  • V5.0.3.2或以后版本，通过该接口保存录像，保存的录像文件数据超过文件最大限制字节数（默认为1024MB），SDK会自动切片，即新建文件进行保存，文件名命名规则为“在接口传入的文件名基础上增加数字标识(例如：*_1.mp4、*_2.mp4)”。可以调用NET_DVR_GetSDKLocalCfg、NET_DVR_SetSDKLocalCfg(配置类型：NET_DVR_LOCAL_CFG_TYPE_GENERAL)获取和设置切片模式和文件最大限制字节数。

See Also

NET_DVR_PlayBackControl NET_DVR_StopGetFile
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_GetFileByTime_V40


NET_DVR_GetHistoricData

获取单条历史数据。

BOOL NET_DVR_GetHistoricData(
  LONG                      lUserID,
  LONG                      lChannel,
  LPNET_DVR_PLATE_RESULT    lpOuter
);

Parameters

lUserID
[in]NET_DVR_Login_V40等登录接口的返回值
lChannel
[in]通道号
lpOuter
[out]历史数据信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetHistoricDataInfo

获取历史数据信息。

BOOL NET_DVR_GetHistoricDataInfo(
  LONG                         lUserID
  LONG                         lChannel
  LPNET_DVR_HISTORICDATACFG    lpHisData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpHisData
[out] 历史数据信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetInputSignalList

获取信号源列表。

BOOL NET_DVR_GetInputSignalList(
  LONG                           lUserID,
  DWORD                          dwDevNum,
  LPNET_DVR_INPUT_SIGNAL_LIST    lpInputSignalList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDevNum
[in] 保留，设为0
lpInputSignalList
[out] 信号源列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 1.调用该接口，将NET_DVR_INPUT_SIGNAL_LIST中的pBuffer置为空且dwBufLen为0，此时获取输入信号源个数（dwInputSignalNums）；
    2.根据第一次调用接口返回的数量分配pBuffer的大小，然后再次调用该接口，此时获取输入信号源列表（pBuffer）。
  • 该接口获取的信号源列表，包括本地输入子板信号、解码板、网络信号源、模拟矩阵通道。


NET_DVR_GetIPCProtoList

获取设备支持的IPC协议表。

BOOL NET_DVR_GetIPCProtoList(
  LONG                       lUserID,
  LPNET_DVR_IPC_PROTO_LIST   lpProtoList
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpProtoList
[out] IPC协议列表结构

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口用于获取当前设备所支持的外接IPC的协议。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_GetIPCProtoList_V41


NET_DVR_GetKeyboardUser

获取报警主机键盘用户配置。

BOOL NET_DVR_GetKeyboardUser(
  LONG                      lUserID,
  LONG                      lUserIndex,
  NET_DVR_KEYBOARD_USER     *lpKeyboardUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lUserIndex
[in] 键盘用户索引
lpKeyboardUser
[out] 键盘用户配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetKeyboardUser
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_GetNextRemoteConfig

逐个获取查找到的结果信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见“Remarks”说明
dwOutBuffSize
[in] 缓冲区长度

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpOutBuff对应结构体
NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM | 2034 | 获取指定子系统内的所有防区 | NET_DVR_ALARMIN_PARAM
NET_DVR_GET_ALARMHOST_TRIGGER_LIST | 2035 | 获取所有触发器 | NET_DVR_ALARMOUT_PARAM

在调用该接口获取查找结果之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

逐个获取查找到的信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，与NET_DVR_StartRemoteConfig的命令（dwCommand）有关，详见列表
dwOutBuffSize
[in] 缓冲区长度

调用NET_DVR_StartRemoteConfig时传入不同的命令号(dwCommand)，lpOutBuff对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpOutBuff对应结构体
NET_DVR_INQUEST_GET_CDW_STATUS | 6350 | 获取审讯机刻录状态 | NET_DVR_INQUEST_CDRW_STATUS

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口获取查找文件之前，必须先调用NET_DVR_StartRemoteConfig得到当前的查找句柄。此接口用于获取一条已查找到的信息，若要获取全部的已查找到的信息，需要循环调用此接口。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetNextRemoteConfig

获取下一条信息。

LONG NET_DVR_GetNextRemoteConfig(
  LONG     lHandle,
  void     *lpOutBuff,
  DWORD    dwOutBuffSize
);

Parameters

lHandle
[in] 查找句柄，NET_DVR_StartRemoteConfig的返回值
lpOutBuff
[out] 输出数据缓冲区，存放结构体NET_DVR_ALARMHOST_DETECTOR_INFO信息。
dwOutBuffSize
[in] 缓冲区长度

Return Values

-1表示失败，其他值表示当前的获取状态等信息，详见下表。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

宏定义 | 宏定义值 | 含义
NET_SDK_GET_NEXT_STATUS_SUCCESS | 1000 | 成功读取到数据，处理完本次数据后需要再次调用NET_DVR_GetNextRemoteConfig获取下一条数据
NET_SDK_GET_NETX_STATUS_NEED_WAIT | 1001 | 需等待设备发送数据，继续调用NET_DVR_GetNextRemoteConfig
NET_SDK_GET_NEXT_STATUS_FINISH | 1002 | 数据全部取完，可调用NET_DVR_StopRemoteConfig结束长连接
NET_SDK_GET_NEXT_STATUS_FAILED | 1003 | 出现异常，可调用NET_DVR_StopRemoteConfig结束长连接

Remarks

在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig开始注册。调用函数NET_DVR_GetNextRemoteConfig获取注册器信息，每次调用返回一个结构信息，调用的返回值及具体的处理见口说明。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_GetPicture_V30

获取图片数据并存放在指定的内存空间中。

BOOL NET_DVR_GetPicture_V30(
  LONG    lUserID,
  char    *sDVRFileName,
  char    *sSavedFileBuf,
  DWORD   dwBufLen,
  DWORD   *lpdwRetLen
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值
sDVRFileName
[in] 图片名称
sSavedFileBuf
[in] 保存图片的缓冲区
dwBufLen
[in] 缓冲区大小
lpdwRetLen
[out] 实际收到的数据长度指针，不能为NULL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

图片为JPEG格式，数据保存在缓冲区sSavedFileBuf中，回放显示需要应用层实现。

See Also

NET_DVR_Login_V40


NET_DVR_GetPictureModel

获取单张图片模型。

BOOL NET_DVR_GetPictureModel(
  LONG                          lUserID,
  LPNET_VCA_REGISTER_PIC        lpInBuf,
  LPNET_VCA_PICMODEL_RESULT     lpOutBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 图片信息参数
lpOutBuf
[out] 单张图片的模型结果

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

需要建模，返回单张图片的模型结果。

See Also

NET_DVR_Login_V40


NET_DVR_GetPicUploadState

获取远程上传的状态。

LONG NET_DVR_GetPicUploadState(
  LONG   lUploadHandle
);

Parameters

lUploadHandle
[in] NET_DVR_PicUpload的返回值

Return Values

-1表示失败，其他值定义如下：
1- 完成
2- 正在上传
3- 上传失败
4- 未知错误
接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_PicUpload


NET_DVR_GetPositionRule

获取场景位置规则信息参数。

BOOL NET_DVR_GetPositionRule(
  LONG                          lUserID,
  LONG                          lChannel,
  LONG                          lPositionIndex,
  LPNET_DVR_POSITION_RULE_CFG   lpPositionRule
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionIndex
[in] 场景索引
lpPositionRule
[out] 场景位置行为规则

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_SetPositionRule


NET_DVR_GetPTZProtocol_Ex

按通道获取设备支持的云台协议。

BOOL NET_DVR_GetPTZProtocol_Ex(
  LONG               lUserID,
  LONG               lChannel,
  NET_DVR_PTZCFG     *pPtzcfg
);

Parameters

lUserID
[in] 登录编码子系统的返回值
lChannel
[in] 子系统编码通道号
pPtzcfg
[out] 云台协议参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_GetRemoteConfigState

获取长连接配置的状态。

BOOL NET_DVR_GetRemoteConfigState(
  LONG    lHandle,
  void    *pState
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值
pState
[out] 返回的4字节长连接状态值，具体见下表
pState状态宏定义 | 宏定义值 | 含义
NET_SDK_CALLBACK_STATUS_SUCCESS | 1000 | 成功
NET_SDK_CALLBACK_STATUS_PROCESSING | 1001 | 处理中
NET_SDK_CALLBACK_STATUS_FAILED | 1002 | 失败
NET_SDK_CALLBACK_STATUS_EXCEPTION | 1003 | 异常
NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH | 1004 | （IPC配置文件导入）语言不匹配
NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH | 1005 | （IPC配置文件导入）设备类型不匹配
NET_DVR_CALLBACK_STATUS_SEND_WAIT | 1006 | 发送等待

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

  • 当发送接口NET_DVR_SendRemoteConfig返回失败时，可调用该接口获取长连接状态，状态值为NET_DVR_CALLBACK_STATUS_SEND_WAIT则需等待一段时间发送，当状态值为NET_SDK_CALLBACK_STATUS_PROCESSING时，可以再次调用发送接口发送数据。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_GetScaleCFG

获取视频输出缩放信息。

BOOL NET_DVR_GetScaleCFG(
  LONG      lUserID,
  DWORD     *lpOutScale
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lpOutScale
[out] 缩放参数：0-否，1-是

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetScaleCFG

Reference Interface

扩展接口可见

NET_DVR_GetScaleCFG_V30


NET_DVR_GetScreenList

获取显示屏映射关系列表。

BOOL NET_DVR_GetScreenList(
  LONG                    lUserID,
  LPNET_DVR_SCREENLIST    lpScreenListInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpScreenListInfo
[out] 显示屏映射关系列表

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetScreenRelation


NET_DVR_GetSDKLocalConfig

获取SDK本地参数。

BOOL NET_DVR_GetSDKLocalConfig(
  LPNET_DVR_SDKLOCAL_CFG    lpSdkLocalCfg
);

Parameters

lpSdkLocalCfg
[out] SDK本地参数，包括模拟能力集、音频对讲库等启用/禁用状态

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_SetSDKLocalConfig


NET_DVR_GetSearchFaceDBProgress

获取人脸库记录查询或检索的进度。

BOOL NET_DVR_GetSearchFaceDBProgress(
  LONG     lSearchHandle,
  DWORD    *pState
);

Parameters

lSearchHandle
[in] 查询句柄，NET_DVR_InquireFaceDBRecord或NET_DVR_SearchFaceDB的返回值
pState
[out] 当前进度，进度值的取值范围为(0,100)，其他值的定义见下表
宏定义 | 宏定义值 | 含义
PROCESS_SUCCESS | 100 | 过程完成
PROCESS_EXCEPTION | 400 | 过程异常
PROCESS_FAILED | 500 | 过程失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquireFaceDBRecord NET_DVR_SearchFaceDB


NET_DVR_GetSearchSnapDBProgress

获取抓拍库记录查询或检索的进度。

BOOL NET_DVR_GetSearchSnapDBProgress(
  LONG     lSearchHandle,
  DWORD    *pState
);

Parameters

lSearchHandle
[in] 查询句柄，NET_DVR_InquireSnapDBRecord或NET_DVR_SearchSnapDB的返回值
pState
[out] 当前进度，进度值的取值范围为(0,100)，其他值的定义见下表
宏定义 | 宏定义值 | 含义
PROCESS_SUCCESS | 100 | 过程完成
PROCESS_EXCEPTION | 400 | 过程异常
PROCESS_FAILED | 500 | 过程失败

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquireSnapDBRecord NET_DVR_SearchSnapDB


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数），不同的能力集对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
Smart智能相关能力集 |  |  |  |
NET_DVR_GET_SMART_CAPABILITIES | 3500 | 获取Smart能力集 | NULL | SmartCap
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES | 3502 | 获取进入区域侦测能力集 | 4个字节（DWORD）通道号 | RegionEntrance
NET_DVR_GET_REGION_ENTRANCE_SCHEDULE_CAPABILITIES | 3584 | 获取进入区域侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_REGION_EXITINT_CAPABILITIES | 3511 | 获取离开区域侦测能力集 | 4个字节（DWORD）通道号 | RegionExiting
NET_DVR_GET_REGION_EXITING_SCHEDULE_CAPABILITIES | 3585 | 获取离开区域侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_LOITERING_CAPABILITIES | 3520 | 获取徘徊侦测能力集 | 4个字节（DWORD）通道号 | Loitering
NET_DVR_GET_LOITERING_SCHEDULE_CAPABILITIES | 3586 | 获取徘徊侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_GROUPDETECTION_CAPABILITIES | 3529 | 获取人员聚集侦测能力集 | 4个字节（DWORD）通道号 | Group
NET_DVR_GET_GROUP_SCHEDULE_CAPABILITIES | 3587 | 获取人员聚集侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_RAPIDMOVE_CAPABILITIES | 3538 | 获取快速运动侦测能力集 | 4个字节（DWORD）通道号 | RapidMove
NET_DVR_GET_RAPIDMOVE_SCHEDULE_CAPABILITIES | 3588 | 获取快速运动侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_PATKING_CAPABILITIES | 3547 | 获取停车侦测能力集 | 4个字节（DWORD）网卡号 | Parking
NET_DVR_GET_PARKING_SCHEDULE_CAPABILITIES | 3589 | 获取停车侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_UNATTENDED_BAGGAGE_CAPABILITIES | 3556 | 获取物品遗留侦测能力集 | 4个字节（DWORD）通道号 | UnattendedBaggage
NET_DVR_GET_UNATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES | 3590 | 获取物品遗留侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_ATTENDEDBAGGAGE_CAPABILITIES | 3565 | 获取物品拿取侦测能力集 | 4个字节（DWORD）通道号 | AttendedBaggageCap
NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES | 3591 | 获取物品拿取侦测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_REGIONCLIP_CAPABILITIES | 3574 | 获取区域裁剪能力集 | NET_DVR_REGION_CLIP_COND | RegionClip
NET_DVR_GET_LITESTORAGE_CAPABILITIES | 3596 | 获取轻存储能力集 | 4个字节（DWORD）通道号 | LiteStorage
NET_DVR_GET_VEHICLE_CAPABILITIES | 3597 | 获取车俩检测标定能力集 | 4个字节（DWORD）通道号 | Calibration
NET_DVR_GET_TRAFFIC_CAP | 6630 | 获取抓拍相关能力集 | NULL | TrafficCap
NET_DVR_GET_VEHICLLE_RESULT_CAPABILITIES | 3951 | 获取车辆信息查询结果能力集 | NULL | VehicleInfoResultCap
NET_DVR_GET_COUNTING_CAPABILITIES | 3757 | 获取客流量统计能力集 | 4个字节（DWORD）通道号 | CountingCap
NET_DVR_GET_SMARTCALIBRATION_CAPABILITIES | 3900 | 获取Smart行为标定过滤尺寸能力集 | 4个字节（DWORD）通道号 | SmartCalibrationCap
网络相关能力集 |  |  |  |
NET_DVR_GET_NETWORK_CAPABILITIES | 3577 | 获取网络能力集 | NULL | NetworkCap
NET_DVR_GET_WIRELESSDIAL_CAPABILITIES | 3580 | 获取无线拨号参数能力集 | 4个字节（DWORD）网卡号 | Dial
NET_DVR_GET_WIRELESSDIAL_SCHEDULE_CAPABILITIES | 3592 | 获取拨号计划能力集 | 4个字节（DWORD）网卡号 | Schedule
NET_DVR_GET_GBT28181_SERVICE_CAPABILITIES | 6505 | 获取GB28181服务器能力集 | NULL | GB28181ServiceCap
NET_DVR_GET_FTP_CAPABILITIES | 3782 | 获取FTP上传能力集 | NULL | FTPNotificationList
NET_DVR_GET_WIRELESSSERVER_CAPABILITIES | 3716 | 获取Wifi热点配置能力集 | 4个字节（DWORD）无线网卡号 | WirelessServer
NET_DVR_GET_CONNECT_LIST_CAPABILITIES | 3719 | 获取热点连接设备列表信息能力集 | 4个字节（DWORD）无线网卡号 | accessDeviceList
NET_DVR_GET_DDNS_COUNTRY_ABILITY | 3800 | 获取设备支持的DDNS国家和地区能力列表 | NULL | DDNSCountry
NET_DVR_GET_MACFILTER_CAPABILITIES | 3643 | 获取MAC地址过滤配置能力集 | NULL | MACFilter
NET_DVR_GET_ACTIVATE_IPC_ABILITY | 13003 | 获取NVR激活前端设备能力集 | NULL | VideoSourceActivationCapability
存储相关能力集 |  |  |  |
NET_DVR_GET_STORAGEDETECTION_SCHEDULE_CAPABILITIES | 6637 | 获取存储健康检测布防时间能力集 | 4个字节（DWORD）硬盘号 | Schedule
NET_DVR_GET_STORAGEDETECTION_RWLOCK_CAPABILITIES | 6647 | 获取存储侦测读写锁配置能力集 | NULL | RWLock
NET_DVR_GET_STORAGEDETECTION_UNLOCK_CAPABILITIES | 6654 | 获取存储侦测解锁配置能力集 | NULL | UnLock
NET_DVR_GET_RACM_CAP | 6252 | 获取存储总能力集（RACM能力） | NULL | RacmCap
外设相关能力集 |  |  |  |
NET_DVR_GET_SENSOR_PORT_CAPABILITIES | 5067 | 获取传感器能力集 | 4个字节（DWORD）通道号 | SensorPortList
NET_DVR_GET_THSCREEN_CAPABILITIES | 3720 | 获取温湿度配置能力集 | 4个字节（DWORD）通道号 | THScreen
NET_DVR_GET_EXTERNALDEVICE_CAPABILITIES | 3722 | 获取外设配置能力集 | 4个字节（DWORD）通道号 | ExternalDevice
NET_DVR_GET_SUPPLEMENTLIGHT_CAPABILITIES | 3727 | 获取内置补光灯配置能力集 | 4个字节（DWORD）通道号 | SupplementLight
NET_DVR_GET_ACCESSORY_CARD_INFO_CAPABILITIES | 6709 | 获取配件板信息能力集 | NULL | AccessoryCardInfo
其他设备能力集 |  |  |  |
NET_DVR_GET_STREAMING_CAPABILITIES | 3712 | 获取视频流能力集 | 4个字节（DWORD）通道号 | StreamingChannel
NET_DVR_GET_REFRESHFRAME_CAPABILITIES | 3713 | 获取刷新帧能力集 | 4个字节（DWORD）通道号 | RefreshFrame
NET_DVR_GET_OSD_BATTERY_POWER_CFG_CAPABILITIES | 3743 | 获取OSD电池电量显示参数能力集 | 4个字节（DWORD）通道号 | BatteryPowerOverlay
NET_DVR_GET_OIS_CAPABILITIES | 3640 | 获取光学防抖参数配置能力集 | 4个字节（DWORD）通道号 | OIS
NET_DVR_GET_REVISE_GPS_CAPABILITIES | 3752 | 获取校准GPS经纬度能力集 | 4个字节（DWORD）通道号 | ReviseGPS
NET_DVR_GET_ONLINEUPGRADE_ABILITY | 9309 | 获取在线升级能力集 | NULL | OnlineUpgradeCap
NET_DVR_GET_PTZ_CAPABILITIES | 3619 | 球机PTZ控制能力集 | 4个字节(DWORD)通道号 | PTZChanelCap
NET_DVR_GET_EAGLEFOCUS_CALCFG_CAPABILITIES | 3646 | 鹰视聚焦标定配置能力集 | 4个字节(DWORD)通道号 | EagleFocusing
NET_DVR_GET_EAGLEFOCUSING_CFG_CAPABILITIES | 3649 | 鹰视聚焦配置能力集 | 4个字节(DWORD)通道号 | Control
NET_DVR_GET_SOFTWARE_SERVICE_CAPABILITIES | 3980 | 获取软件服务能力集 | 4个字节(DWORD)通道号 | SoftwareService
NET_DVR_GET_SYSTEM_CAPABILITIES | 8100 | 设备系统能力集 | NULL | DeviceCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EMERGENCE_ALARM_PRODUCT_CAP | 2212 | 获取紧急求助报警产品能力集 | NULL | EmergencyAlarmProductCap
NET_DVR_GET_CALL_WAITTING_CFG_CAP | 2213 | 获取呼叫等待参数配置能力集 | NULL | CallWaittingCfg
NET_DVR_GET_ALARM_LAMP_CFG_CAP | 2216 | 获取警灯参数配置能力集 | NULL | AlarmLampConfig
NET_DVR_GET_VOICE_PROMPTION_CFG_CAP | 2219 | 获取语音提示配置能力集 | NULL | VoicePromptionCfg
NET_DVR_GET_EMERGENCE_ALARM_RESPONSE_CAP | 2222 | 获取紧急报警处理能力集 | NULL | EmergencyAlarmResponseCtrl
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE_CAPABILITIES | 4378 | 获取人体目标识别布防时间能力集 | 4个字节（DWORD）通道号 | Schedule

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_CLOUD_URL_CAP | 6507 | 获取云存储URL能力集 | NULL | CloudURL
NET_DVR_GET_CLOUD_CFG_CAP | 6510 | 获取云存储配置能力集 | NULL | Cloud
NET_DVR_GET_CLOUDSTORAGE_UPLOADSTRATEGY_CAP | 6513 | 获取云存储上传策略配置能力集 | NULL | UploadStrategy

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_TERMINAL_INPUT_CFG_CAP | 9137 | 获取终端输入参数能力集 | NULL | InputConfig
NET_DVR_GET_CONFERENCE_REGION_CAP | 9140 | 获取终端会议区域能力集 | NULL | ConferenceRegion
NET_DVR_GET_TERMINAL_CALL_CFG_CAP | 9143 | 获取终端呼叫配置能力集 | NULL | CallConfiguration
NET_DVR_GET_TERMINAL_CTRL_CAP | 9146 | 获取终端呼叫控制能力集 | NULL | ControlParam
NET_DVR_GET_CALL_QUERY_CAP | 9148 | 获取会议查找能力集 | 4字节(DWORD)会议编号 | CallQueryProfile
NET_DVR_GET_VCS_CAP | 9152 | 获取终端MCU能力集 | NULL | VCSCap
NET_DVR_GET_TERMINAL_GK_CFG_CAP | 9153 | 获取终端注册GK能力集 | NULL | GkConfig

NET_DVR_GET_TERMINAL_INPUT_CFG_CAP对应ISAPI命令行URL：GET /ISAPI/VCS/terminals/inputConfig/capabilities

NET_DVR_GET_TERMINAL_CALL_CFG_CAP对应ISAPI中的URL：GET /ISAPI/VCS/terminals/callConfiguration/capabilities

NET_DVR_GET_TERMINAL_CTRL_CAP接口对应ISAPI中的URL：GET /ISAPI/VCS/terminals/control/capabilities

NET_DVR_GET_VCS_CAP接口对应ISAPI中的URL：GET /ISAPI/VCS/capabilities

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_SYSTEM_CAPABILITIES | 8100 | 设备系统能力集 | NULL | DeviceCap
NET_DVR_GET_EAGLEEYE_CAPABILITIES | 8101 | 设备鹰眼能力集 | NULL | EagleEyeCap
NET_DVR_GET_PTZ_CAPABILITIES | 3619 | 球机PTZ控制能力集 | 4字节(DWORD)通道号 | PTZChanelCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EAGLEFOCUS_CALCFG_CAPABILITIES | 3646 | 鹰视聚焦标定配置能力集 | 4个字节(DWORD)通道号 | EagleFocusing
NET_DVR_GET_EAGLEFOCUSING_CFG_CAPABILITIES | 3649 | 鹰视聚焦配置能力集 | 4个字节(DWORD)通道号 | Control

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_RESOLUTION_SWITCH_CAPABILITIES | 3917 | 分辨率模式切换能力集 | 4字节(DWORD)通道号 | ResolutionSwitch

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES | 3759 | Sensor调节参数配置能力集 | NULL | SensorCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_MASTERSLAVETRACKING_CAPABILITIES | 3608 | 主从跟踪能力集 | NULL | MasterSlaveTrackingCap
NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES | 3603 | 从摄像机标定配置能力集 | 4字节(DWORD)通道号 | SlaveCameraCalibrating
NET_DVR_GET_TRACKING_CAPABILITIES | 3613 | 从摄像机标定配置能力集 | 4字节(DWORD)通道号 | Tracking

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES | 6718 | 获取火点区域屏蔽能力 | NULL | FireShieldMask

对应/ISAPI/Thermal/channels/<ID>/fireShieldMask/capabilities，其中<ID>表示的内容是：视频通道号。例如：第一通道的火点区域屏蔽能力：/ISAPI/Thermal/channels/1/fireShieldMask/capabilities。

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集（区域人数统计对应其中的<framespeoplecountingtriggercap>） | NULL | EventTriggersCap
NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE_CAPABILITIES | 4388 | 获取区域人数统计布防时间能力集 | NULL | Schedule

对应/ISAPI/Event/schedules/framesPeopleCounting/<ID>，其中<ID>表示的内容是：视频通道号。例如：第一通道的区域人数统计功能的时间段配置：/ISAPI/Event/schedules/framesPeopleCounting/1。

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_CENTRALIZEDCTRL_CAPABILITIES | 3700 | 获取集中布防能力集 | 4个字节（DWORD）通道号 | CentralizedControl
NET_DVR_GET_COMPASS_CAPABILITIES | 3703 | 获取电子罗盘能力集 | 4个字节（DWORD）通道号 | CompassCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG_CAP | 6248 | 获取回传功能基础配置能力集 | NULL | RecordPassBackBasicCfg
NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG_CAP | 6255 | 获取回传历史录像计划能力集 | NULL | RecordPassBackHistoryPlanCfg

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_PERSONDENSITY_SCHEDULE_CAPABILITIES | 4395 | 获取人员密度检测的布防时间能力 | NULL | Schedule

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_PERSONQUEUE_SCHEDULE_CAPABILITIES | 4408 | 获取人员排队检测的布防时间能力 | NULL | Schedule

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_FILM_MODE_CFG_CAP | 6389 | 获取电影模式配置能力集 | NULL | FilmModeCfg
NET_DVR_GET_DIRECTED_STRATEGY_CFG_CAP | 6392 | 获取导播策略配置能力集 | NULL | DirectedStrategyCfg
NET_DVR_GET_FRAME_CFG_CAP | 6395 | 获取画面边框配置能力集 | NULL | FrameCfg
NET_DVR_GET_AUDIO_EFFECTIVE_CFG_CAP | 6398 | 获取音频效果优化配置能力集 | 4个字节（DWORD）通道号 | AudioEffectiveCfg
NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP | 6422 | 获取文件发布能力集 | 4个字节（DWORD）通道号 | PublishFile
NET_DVR_GET_RECORD_VIDEO_CFG_CAP | 6424 | 获取录制视频配置能力集 | NULL | RecordingVideoCfg
NET_DVR_GET_RTMP_CFG_CAP | 6427 | 获取RTMP配置能力集 | NET_DVR_RTMP_COND | RTMPCfg
NET_DVR_GET_BACKGROUND_PIC_INFO_CAP | 6432 | 获取背景图片配置能力集 | NULL | BackPicInfo
NET_DVR_GET_RECORD_HOST_CAP | 6433 | 获取录播主机总能力集 | NULL | RecordHostCap
NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG_CAP | 6439 | 获取图像差分检测配置能力集 | NULL | ImageDiffDetectionCfg
NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO_CAP | 6442 | 获取发布文件信息配置能力集 | NULL | PublishFileCfg
NET_DVR_MANUAL_CURRICULUM_CONTROL_CAP | 6443 | 获取手动课程录像的能力集 | NULL | ManualCurriculumCap
NET_DVR_GET_STREAMENCRYPTION_CAPABILITIES | 3751 | 获取Security能力 | NULL | SecurityCap

See Also

NET_DVR_GetLastError


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_SAFETY_HELMET_SCHEDULE_CAPABILITIES | 3988 | 获取安全帽检测布防时间能力 | NULL | Schedule

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES | 6725 | 获取烟雾区域屏蔽能力 | NULL | SmokeShieldMask

对应/ISAPI/Thermal/channels/<ID>/smokeShieldMask/capabilities，其中<ID>表示的内容是：视频通道号。例如：第一通道的烟雾区域屏蔽能力：/ISAPI/Thermal/channels/1/smokeShieldMask/capabilities。

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见下表：
宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_ALARMCTRL_CAPABILITIES | 3146 | 获取报警控制能力集 | 4个字节(DWORD)通道号 | AlarmCtrlParam
NET_DVR_GET_PXOFFLINE_CAPABILITIES | 3652 | 停车场票箱脱机参数配置能力集 | 4个字节(DWORD)通道号 | TMEOfflineConfiguration
NET_DVR_GET_PAPERCHARGEINFO_CAPABILITIES | 3655 | 停车场出入口纸票信息下发能力集 | 4个字节(DWORD)通道号 | PaperChargeInfo
NET_DVR_GET_PARKINGSAPCE_CAPABILITIES | 3657 | 停车场出入口停车位信息下发能力集 | 4个字节(DWORD)通道号 | ParkingSpaceInfo
NET_DVR_GET_PXMULTICTRL_CAPABILITIES | 3659 | 停车场票箱从属设备多角度参数配置能力集 | 4个字节(DWORD)通道号 | TMEMultiCtrlConfiguration
NET_DVR_GET_CHARGEACCOUNT_CAPABILITIES | 3661 | 停车场出入口停车费用下发能力集 | 4个字节(DWORD)通道号 | ChargeAmount
NET_DVR_GET_TME_CHARGERULE_CAPABILITIES | 3667 | 停车场出入口车卡收费信息配置能力集 | 4个字节(DWORD)通道号 | ChargeRuleInfoList
NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES | 3668 | 停车场票箱参数配置能力集 | 4个字节(DWORD)通道号 | TMEConfiguration
NET_DVR_GET_TME_CAPABILITIES | 3684 | 停车场出入口设备能力集 | 4个字节(DWORD)通道号 | TMECap
NET_DVR_GET_LEDDISPLAY_CAPABILITIES | 3671 | LED屏幕显示参数配置能力集 | 4个字节(DWORD)通道号 | LEDConfiguration
NET_DVR_GET_VOICEBROADCAST_CAPABILITIES | 3674 | 语音播报控制参数配置能力集 | 4个字节(DWORD)通道号 | VoiceBroadcastInfo
NET_DVR_GET_PAPERPRINTFORMAT_CAPABILITIES | 3676 | 纸票打印格式配置能力集 | 4个字节(DWORD)通道号 | PaperPrintFormatInfo
NET_DVR_GET_LOCkGATE_CAPABILITIES | 3679 | 智能锁闸配置能力集 | 4个字节(DWORD)通道号 | LockGateConfigList
NET_DVR_GET_TMEVOICE_CAPABILITIES | 3686 | 获取语音配置信息能力集 | 4个字节(DWORD)通道号 | TMEVoiceConfiguration
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_SOFTIO_SCHEDULE_CAPABILITIES | 4185 | 获取SoftIO布防时间能力 | NULL | EventTriggersCap

NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIESISAPI对应ISAPI中的URL：GET /ISAPI/Event/capabilities。

NET_DVR_GET_SOFTIO_SCHEDULE_CAPABILITIES 对应ISAPI中的URL：GET /ISAPI/Event/schedules/softIO/<ID>，协议中将通道号1转换成ID，如：softIO-1。

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

能力集类型（dwAbilityType） | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_SMART_CAPABILITIES | 3500 | 获取Smart能力集 | NULL | SmartCap
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_THERMAL_CAPABILITIES | 3634 | 获取热成像能力 | NULL | ThermalCap
NET_DVR_GET_FIREDETECTION_CAPABILITIES | 3635 | 获取火点检测配置能力集 | 4个字节（DWORD）通道号 | FireDetection
NET_DVR_GET_LOWPOWER_CAPABILITIES | 3731 | 获取低功耗配置能力集 | 4个字节（DWORD）通道号 | LowPower
NET_DVR_GET_ZOOMLINKAGE_CAPABILITIES | 3734 | 获取变倍联动配置能力集 | 4个字节（DWORD）通道号 | ZoomLinkage
NET_DVR_GET_MANUALRANGING_CAPABILITIES | 6675 | 获取手动测距配置能力集 | 4个字节（DWORD）通道号 | ManualRanging
NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES | 3620 | 获取测温配置能力集 | 4个字节（DWORD）通道号 | ThermometryBasicParam
NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES | 3623 | 获取测温预置点关联配置能力集 | 4个字节（DWORD）通道号 | ThermometryScene
NET_DVR_GET_THERMOMETRY_ALARMRULE_CAPABILITIES | 3626 | 获取测温报警方式配置能力集 | 4个字节（DWORD）通道号 | ThermometryAlarmRule
NET_DVR_GET_SHIPSDETECTION_SCHEDULE_CAPABILITIES | 6667 | 获取船只检测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_SHIPSDETECTION_CAPABILITIES | 6657 | 获取船只检测参数配置能力集 | 4个字节（DWORD）通道号 | ShipsDetectionCap
NET_DVR_GET_BAREDATAOVERLAY_CAPABILITIES | 6660 | 获取热成像裸数据叠加能力集 | NULL | BareDataOverlay
NET_DVR_GET_THERMINTELL_CAPABILITIES | 6711 | 获取热成像智能互斥能力集 | 4个字节（DWORD）通道号 | ThermIntell
NET_DVR_GET_MANUALDEICING_CAPABILITIES | 6678 | 获取手动除冰配置能力集 | 4个字节（DWORD）通道号 | ManualDeicing
NET_DVR_GET_FIREDETECTION_SCHEDULE_CAPABILITIES | 6671 | 获取烟火检测布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_THERMALPOWER_CAPABILITIES | 6689 | 获取相机电源配置能力集 | NULL | Power
NET_DVR_GET_PTZ_CAPABILITIES | 3619 | 获取PTZ通道控制能力集 | 4个字节（DWORD）通道号 | PTZChanelCap
NET_DVR_GET_PTZABSOLUTEEX_CAPABILITIES | 6695 | 获取高精度PTZ绝对位置配置能力集 | 4个字节（DWORD）通道号 | PTZAbsoluteEx
NET_DVR_GET_TEMP_HUMI_CAPABILITIES | 6700 | 设备实时温湿度获取能力集 | 4个字节（DWORD）通道号 | TempHumi
NET_DVR_GET_MANUALTHERM_CAPABILITIES | 6707 | 获取手动测温实时数据能力集 | 4个字节（DWORD）通道号 | ManualThermometry
NET_DVR_GET_MANUALTHERM_BASIC_CAPABILITIES | 6715 | 获取手动测温基本参数配置能力集 | 4个字节（DWORD）通道号 | ManualThermBasic
NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES | 6718 | 获取火点区域屏蔽能力集 | 4个字节（DWORD）通道号 | FireShieldMask
NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES | 6725 | 获取烟雾区域屏蔽能力集 | 4个字节（DWORD）通道号 | SmokeShieldMask
NET_DVR_GET_AREASCAN_CAPABILITIES | 6728 | 获取区域扫描能力集 | 4个字节（DWORD）通道号 | AreaScan
NET_DVR_GET_THERMOMETRY_MODE_CAPABILITIES | 6764 | 获取测温模式能力集 | 4个字节（DWORD）通道号 | ThermometryMode
NET_DVR_GET_THERMAL_PIP_CAPABILITIES | 6767 | 获取热成像画中画配置能力集 | 4个字节（DWORD）通道号 | ThermalPip
NET_DVR_GET_THERMAL_INTELRULEDISPLAY_CAPABILITIES | 6770 | 获取热成像智能规则显示能力集 | 4个字节（DWORD）通道号 | IntelRuleDisplay
NET_DVR_GET_CURRENT_LOCK_CAPABILITIES | 6774 | 获取电流锁定配置能力集 | 4个字节（DWORD）通道号 | CurrentLock

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_MASTERSLAVETRACKING_CAPABILITIES | 3608 | 获取主从跟踪能力集 | NULL | MasterSlaveTrackingCap
NET_DVR_GET_SLAVECAMERA_CAPABILITIES | 3599 | 获取从摄像机IP信息配置能力集 | 4字节(DWORD)通道号 | SlaveCamera
NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES | 3603 | 从摄像机标定配置能力集 | 4字节(DWORD)通道号 | SlaveCameraCalibrating

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_CALIB_CAPABILITIES | 3952 | 获取架设标定能力集 | NULL | SetupCalibrationCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_POSINFO_OVERLAY_CAPABILITIES | 3953 | 获取POS叠加能力集 | NULL | PosOverlayCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_VIDEO_IMAGE_DB_CFG_CAP | 6603 | 获取视图库相关能力集 | NULL | VideoImgDBCfgCap
NET_DVR_QUERY_FILE_INFO_CAP | 6605 | 获取按文件ID查询文件信息能力集 | NULL | FileInfoCap
NET_DVR_GET_VIDEO_IMAGE_DB_CAP | 6607 | 获取视图库总能力集 | NULL | VideoImgDBCap

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDAbility

获取设备能力集。

BOOL NET_DVR_GetSTDAbility(
  LONG                     lUserID,
  DWORD                    dwAbilityType,
  LPNET_DVR_STD_ABILITY    lpAbilityParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAbilityType
[in] 能力类型，具体定义见“Remarks”列表说明
lpAbilityParam
[in&out] 设备能力集参数（包括输入和输出参数）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

通过该接口获取能力集需要设备支持，如果设备不支持ISAPI协议获取能力集，则可以通过NET_DVR_GetDeviceAbility获取相关能力集。

对于不同的能力集类型（dwAbilityType），lpAbilityParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

宏定义 | 宏定义值 | 含义 | lpCondBuffer | lpOutBuffer
NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES | 3501 | 获取事件触发能力集 | NULL | EventTriggersCap
NET_DVR_GET_FACELIB_SCHEDULE_CAPABILITIES | 3970 | 获取人脸比对库布防时间能力集 | NET_DVR_FACELIB_GUARD_COND | Schedule
NET_DVR_GET_FACECONTRAST_SCHEDULE_CAPABILITIES | 3967 | 获取人脸比对布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE_CAPABILITIES | 4372 | 获取非授权名单人脸比对布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE_CAPABILITIES | 4375 | 获取授权名单人脸比对布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_FACESNAP_SCHEDULE_CAPABILITIES | 4163 | 获取人脸抓拍布防时间能力集 | 4个字节（DWORD）通道号 | Schedule
NET_DVR_GET_HFPD_SCHEDULE_CAPABILITIES | 4190 | 获取高频人员侦测布防时间能力(对应ISAPI协议中/ISAPI/Event/schedules/HFPD) | 4个字节（DWORD）通道号 | HFPDSchedule

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体里面的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_CALL_WAITTING_CFG | 获取呼叫等待参数配置 | NULL | NET_DVR_CALL_WAITTING_CFG | 2214
NET_DVR_GET_ALARM_LAMP_CFG | 获取警灯参数配置 | NULL | NET_DVR_ALARM_LAMP_CFG | 2217
NET_DVR_GET_VOICE_PROMPTION_CFG | 获取语音提示配置 | NULL | NET_DVR_VOICE_PROMPTION_CFG | 2220
NET_DVR_GET_ALARMIN_TRIGGER | 获取报警主机防区联动配置 | NET_DVR_ALARMIN_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 2230
NET_DVR_GET_EMERGENCY_CALL_HELP_TRIGGER | 获取报警主机紧急求助联动配置 | NET_DVR_ALARMIN_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 2232
NET_DVR_GET_CONSULT_TRIGGER | 获取报警主机业务咨询联动配置 | NET_DVR_ALARMIN_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 2234

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FIRMWARE_VERSION | 获取主控版本信息 | NULL | NET_DVR_FIRMWARE_VERSION_IFNO | 3776

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE | 获取人体目标识别布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4379
NET_DVR_GET_HUMAN_RECOGNITION_TRIGGER | 获取人体目标识别联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4381

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_OSD_BATTERY_POWER_CFG | 获取OSD电池电量显示参数 | 4字节(DWORD)通道号 | NET_DVR_OSD_BATTERY_POWER_CFG | 3741
NET_DVR_GET_OIS_CFG | 获取光学防抖配置 | 4字节(DWORD)通道号 | NET_DVR_OIS_CFG | 3641
NET_DVR_GET_SOFTWARE_SERVICE | 获取软件服务配置 | 4字节(DWORD)通道号 | NET_DVR_SOFTWARE_SERVICE_CFG | 3981

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_CLOUD_URL | 获取云存储URL | NET_DVR_CLOUD_URL_COND | NET_DVR_CLOUD_URL | 6506
NET_DVR_GET_CLOUD_CFG | 获取云存储配置参数 | NULL | NET_DVR_CLOUD_CFG | 6508
NET_DVR_GET_CLOUD_UPLOADSTRATEGY | 获取云存储上传策略 | NET_DVR_CLOUD_UPLOADSTRATEGY_COND | NET_DVR_CLOUD_UPLOADSTRATEGY | 6511

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_TERMINAL_CONFERENCE_STATUS | 获取终端会议状态 | NULL | NET_DVR_TERMINAL_CONFERENCE_STATUS | 9136
NET_DVR_GET_TERMINAL_INPUT_CFG | 获取终端视频会议输入参数 | NULL | NET_DVR_TERMINAL_INPUT_CFG | 9138
NET_DVR_GET_CONFERENCE_REGION | 获取终端会议区域参数 | NULL | NET_DVR_CONFERENCE_REGION | 9141
NET_DVR_GET_TERMINAL_CALL_CFG | 获取终端呼叫参数 | NULL | NET_DVR_TERMINAL_CALL_CFG | 9144
NET_DVR_GET_CALLINFO_BY_COND | 按条件查询呼叫记录 | NET_DVR_CALL_QUERY_COND | NET_DVR_CALL_QUERY_RESULT | 9149
NET_DVR_GET_TERMINAL_GK_CFG | 获取终端注册GK参数 | NULL | NET_DVR_TERMINAL_GK_CFG | 9154

NET_DVR_GET_TERMINAL_INPUT_CFG对应ISAPI中的URL：GET /ISAPI/VCS/terminals/inputConfig

NET_DVR_GET_TERMINAL_CALL_CFG对应ISAPI中的URL：GET /ISAPI/VCS/terminals/callConfiguration

NET_DVR_GET_TERMINAL_CONFERENCE_STATUS对应ISAPI中的URL：GET /ISAPI/VCS/terminals/conferenceStatus

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_EAGLEFOCUSING_CALCFG | 获取鹰视聚焦标定配置 | 4字节(DWORD)通道号 | NET_DVR_EAGLEFOCUSING_CALCFG | 3647
NET_DVR_GET_EAGLEFOCUSING_CTRL | 获取鹰视聚焦配置 | 4字节(DWORD)通道号 | NET_DVR_EAGLEFOCUSING_CTRL | 3650

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_RESOLUTION_SWITCH | 获取分辨率模式切换配置 | 4字节(DWORD)通道号 | NET_DVR_RESOLUTION_SWITCH | 3918

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SENSOR_ADJUSTMENT_INFO | 获取sensor调节参数 | 4字节(DWORD)Sensor号 | NET_DVR_SENSOR_ADJUSTMENT_INFO | 3763

See Also

NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SLAVECAMERA_CALIB_V51 | 获取从摄像机标定配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_V51 | 8102
NET_DVR_GET_TRACKING | 获取主从跟踪功能相机跟踪配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_TRACKING | 3611
NET_DVR_GET_TRACKINGRATIO_MANUAL | 获取从摄像机手动跟踪倍率 | NET_DVR_SLAVECAMERA_COND | NET_DVR_MANUAL_TRACKRATIO | 3617

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

，
dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_THSCREEN | 获取温湿度配置参数 | 4字节(DWORD)通道号 | NET_DVR_THSCREEN | 3721
NET_DVR_GET_EXTERNALDEVICE | 获取外设（补光灯等）配置参数 | NULL | NET_DVR_EXTERNALDEVICE | 3723
NET_DVR_GET_SUPPLEMENTLIGHT | 获取内置补光灯配置 | 4字节(DWORD)通道号（补光灯编号） | NET_DVR_BUILTIN_SUPPLEMENTLIGHT | 3728
NET_DVR_GET_REVISE_GPS | 获取校准的GPS经纬度 | 4字节(DWORD)通道号 | NET_DVR_REVISE_GPS_CFG | 3753
NET_DVR_GET_ACCESSORY_CARD_INFO | 获取配件板信息 | NULL | NET_DVR_ACCESSORY_CARD_INFO | 6710

Remarks

    NET_DVR_GET_SUPPLEMENTLIGHT命令时，ISAPI 中的 /ISAPI/Image/channels/<ID>/SupplementLight（新增） <ID>为通道号,补光灯编号2 为红外补光，能力参考门禁能力<supplementlightno>

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer、lpXmlBuffer分别对应不同的内容。目前以下命令只支持XML方式（byDataType为1），因此lpOutBuffer为NULL，lpXmlBuffer根据不同的命令对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpXmlBuffer | 宏定义值
NET_DVR_GET_ALARM_PROCESS_CFG | 获取报警处理参数 | NULL | AlarmProcess | 5220
NET_DVR_GET_BLOCKLIST_ALARM_INFO | 获取授权和非授权名单报警路径 | ListAlarmParam | ListAlarm | 5222
NET_DVR_GET_STORAGE_RESOURCE_CFG | 获取存储资源参数 | NET_DVR_STORAGE_RESOURCE_COND | StorageResource | 5225
NET_DVR_GET_BLOCKLIST_GROUP_INFO | 远程获取全部分组列表 | NET_DVR_BLOCKLIST_GROUP_COND | ListGroup | 5231
NET_DVR_GET_BLOCKLIST_GROUP_RECORD_CFG | 远程获取分组记录参数 | SearchRecordCond | ListGroupRecord | 5234
NET_DVR_GET_AREA_MONITOR_CFG | 获取区域监控点参数 | NET_DVR_AREA_MONITOR_COND | AreaMonitor | 5236
NET_DVR_RETRIEVAL_SNAP_RECORD | 抓拍库检索 | RetrievalSnapRecord | RetrievalSnapRecordRet | 5240
NET_DVR_GET_ALARMLIST | 获取名单报警列表 | AlarmListCond | AlarmListRet | 5241
NET_DVR_DETECT_IMAGE | 单张图片检测 | FDProcImage | ProcImageResult | 5242
NET_DVR_GET_SNAP_RECORD | 获取抓拍记录 | SnapRecordCond | SnapRecordRet | 5243
NET_DVR_GET_FACE_RECORD | 获取人脸记录列表 | InquireRecordCond | FaceRecordRet | 5245
NET_DVR_GET_FACE_DATABASE | 获取人脸库配置参数 | RetrievalFaceDBCond | FaceDBRet | 5248
NET_DVR_RETRIEVAL_FACE_DATABASE | 人脸库检索 | RetrievalFaceRecord | RetrievalFaceRecordRet | 5251
  • NET_DVR_GET_AREA_MONITOR_CFG获取监控点时，一次最多能获取10个监控点信息，要获取所有监控点可以分多次调用接口，获取时可以指定条件参数NET_DVR_AREA_MONITOR_COND中的dwMonitorID，该值可以指定为上次获取最大的监控点编号+1。

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体里面的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE | 获取区域人数统计布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4389
NET_DVR_GET_FRAMES_PEOPLE_COUNTING_TRIGGER | 获取区域人数统计联动方式配置 | NULL | NET_DVR_EVENT_TRIGGER | 4391

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_CENTRALIZEDCTRL | 获取集中布防参数配置 | 4字节(DWORD)通道号 | NET_DVR_CENTRALIZEDCTRL_CFG | 3701
NET_DVR_GET_VANDALPROOFALARM | 获取防破坏报警参数配置 | 4字节(DWORD)通道号 | NET_DVR_VANDALPROOFALARM_CFG | 3704
NET_DVR_GET_GISINFO | 获取当前球机的GIS信息数据 | 4字节(DWORD)通道号 | NET_DVR_GIS_INFO | 3711

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_STORAGEDETECTION_EVENT_TRIGGER | 获取存储健康检测联动配置 | 4字节(DWORD)硬盘号 | NET_DVR_EVENT_TRIGGER | 6635
NET_DVR_GET_STORAGEDETECTION_SCHEDULE | 获取存储健康检测布防时间配置 | 4字节(DWORD)硬盘号 | NET_DVR_EVENT_SCHEDULE | 6638
NET_DVR_GET_STORAGEDETECTION_STATE | 获取存储健康状态 | NULL | NET_DVR_STORAGE_DETECTION | 6640
NET_DVR_GET_STORAGEDETECTION_RWLOCK | 获取存储侦测读写锁配置 | NULL | NET_DVR_STORAGE_RWLOCK | 6646

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_ALARMIN_PARAM_LIST | 批量获取防区参数 | NET_DVR_MULTI_ALARMIN_COND | NET_DVR_ALARMIN_PARAM_LIST | 2227

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

dwCommand为NET_DVR_GET_WIRELESSDIAL_STATUS对应ISAPI中的/ISAPI/System/Network/WirelessDial/Interfaces/ID/dialstatus的ID为无线网卡号，1、2、3……

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_WIRELESS_DIAL | 获取无线参数配置 | 4字节(DWORD)网卡号 | NET_DVR_WIRELESSDIAL_CFG | 3578
NET_DVR_GET_WIRELESSDIAL_SCHEDULE | 获取拨号计划配置 | 4字节(DWORD)网卡号 | NET_DVR_WIRELESSDIAL_SCHEDULE | 3581
NET_DVR_GET_WIRELESSDIAL_STATUS | 获取拨号状态 | 4字节(DWORD)网卡号 | NET_DVR_WIRELESSDIAL_STATUS | 3583
NET_DVR_GET_GBT28181_SERVICE_CFG | 获取GB28181服务器参数 | NULL | NET_DVR_GB28181_SERVICE_CFG | 6503
NET_DVR_GET_WIRELESSSERVER | 获取WIFI热点参数配置 | 4字节(DWORD)无线网卡号 | NET_DVR_WIRELESSSERVER | 3717
NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG | 获取WIFI热点参数配置(完整版) | 4字节(DWORD)无线网卡号 | NET_DVR_WIRELESSSERVER_FULLVERSION_CFG | 3760
NET_DVR_GET_FTPUPLOAD_CFG | 获取FTP上传信息规整参数 | NULL | NET_DVR_FTPUPLOADCFG | 3783
NET_DVR_GET_ANR_ARMING_HOST | 获取断网续传的主机信息 | NULL | NET_DVR_ANR_ARMING_HOST | 3773
NET_DVR_GET_MACFILTER_CFG | 获取MAC地址过滤配置 | NULL | NET_DVR_MACFILTER_CFG | 3644

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG | 获取回传功能基础配置 | NULL | NET_DVR_REC_PASSBACK_BASIC_CFG | 6249
NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG | 获取回传历史录像计划配置 | NET_DVR_STREAM_INFO | NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG | 6256

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体里面的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_PERSONDENSITY_TRIGGER | 获取人员密度检测的联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4393
NET_DVR_GET_PERSONDENSITY_SCHEDULE | 获取人员密度检测的布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4396

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_PERSONQUEUE_TRIGGER | 获取人员排队检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4406
NET_DVR_GET_PERSONQUEUE_SCHEDULE | 获取人员排队检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4409

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FILM_MODE_CFG | 获取电影模式 | NULL | NET_DVR_FILM_MODE_CFG | 6387
NET_DVR_GET_DIRECTED_STRATEGY_CFG | 获取导播策略类型 | NULL | NET_DVR_DIRECTED_STRATEGY_CFG | 6390
NET_DVR_GET_FRAME_CFG | 获取画面边框 | NET_DVR_FRAME_COND | NET_DVR_FRAME_CFG | 6393
NET_DVR_GET_AUDIO_EFFECTIVE_CFG | 获取音频优化参数 | 4字节(DWORD)通道号 | NET_DVR_AUDIO_EFFECTIVE_CFG | 6396
NET_DVR_GET_RECORD_VIDEO_CFG | 获取录制视频参数 | NULL | NET_DVR_RECORD_VIDEO_CFG | 6399
NET_DVR_GET_PUBLISH_PROGRESS | 获取发布进度 | NET_DVR_PUBLISH_PROGRESS_COND | NET_DVR_PUBLISH_PROGRESS_CFG | 6423
NET_DVR_GET_RTMP_CFG | 获取RTMP参数 | NET_DVR_RTMP_COND | NET_DVR_RTMP_CFG | 6425
NET_DVR_GET_BACKGROUND_PIC_CFG | 查询背景图片文件 | NET_DVR_BACKGROUND_PIC_COND | NET_DVR_BACKGROUND_PIC_CFG | 6429
NET_DVR_GET_BACKGROUND_PIC_INFO | 获取哪张图片作为背景图片 | NULL | NET_DVR_BACKGROUND_PIC_INFO | 6430
NET_DVR_GET_RECORD_STATUS | 查询录播主机当前状态 | NULL | NET_DVR_RECORD_STATUS | 6435
NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG | 获取图像差分检测参数 | 通道号 | NET_DVR_IMAGE_DIFF_DETECTION_CFG | 6437
NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO | 获取发布文件信息参数 | NET_DVR_RECORDING_PUBLISH_FILE_COND | NET_DVR_RECORDING_PUBLISH_FILE_INFO | 6440
NET_DVR_GET_HUMAN_CALIB | 获取人体坐标标定配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_HUMAN_CALIB_CFG | 4163

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SAFETY_HELMET_TRIGGER | 获取安全帽检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 3986
NET_DVR_GET_SAFETY_HELMET_SCHEDULE | 获取安全帽检测布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 3989

对应ISAPI中的URL： /ISAPI/Event/schedules/safetyHelmetDetection/，协议中将通道号1转换成ID，如：safetyHelmetDetection-1。

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SHIPSDETECTION_EVENT_TRIGGER | 获取船只检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6665
NET_DVR_GET_SHIPSDETECTION_SCHEDULE | 获取船只检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 6663
NET_DVR_GET_SHIPSDETECTION_CFG | 获取船只检测配置 | 4字节(DWORD)通道号 | NET_DVR_SHIPSDETECTION_CFG | 6656

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SIGN_ABNORMAL_TRIGGER | 获取体征异常联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4150

NET_DVR_GET_SIGN_ABNORMAL_TRIGGER 对应ISAPI中的URL：GET /ISAPI/Event/triggers/，协议中将体征仪编号1转换成ID，如：signAbnormal-1。

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
进入区域侦测配置 |  |  |  |
NET_DVR_GET_REGION_ENTR_DETECTION | 获取进入区域配置 | 4字节(DWORD)通道号 | NET_DVR_REGION_ENTRANCE_DETECTION | 3503
NET_DVR_GET_REGION_ENTR_REGION | 获取进入区域的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_REGIONENTRANCE_REGION | 3505
NET_DVR_GET_REGION_ENTR_TRIGGER | 获取进入区域联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3507
NET_DVR_GET_REGION_ENTR_SCHEDULE | 获取进入区域布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3509
离开区域侦测配置 |  |  |  |
NET_DVR_GET_REGION_EXITING_DETECTION | 获取离开区域配置 | 4字节(DWORD)通道号 | NET_DVR_REGION_EXITING_DETECTION | 3512
NET_DVR_GET_REGION_EXITING_REGION | 获取离开区域的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_REGIONEXITING_REGION | 3514
NET_DVR_GET_REGION_EXIT_TRIGGER | 获取离开区域联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3516
NET_DVR_GET_REGION_EXIT_SCHEDULE | 获取离开区域布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3518
徘徊侦测配置 |  |  |  |
NET_DVR_GET_LOITERING_DETECTION | 获取徘徊侦测配置 | 4字节(DWORD)通道号 | NET_DVR_LOITERING_DETECTION | 3521
NET_DVR_GET_LOITERING_REGION | 获取徘徊的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_LOITERING_REGION | 3523
NET_DVR_GET_LOITERING_TRIGGER | 获取徘徊联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3525
NET_DVR_GET_LOITERING_SCHEDULE | 获取徘徊布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3527
人员聚集侦测配置 |  |  |  |
NET_DVR_GET_GROUP_DETECTION | 获取人员聚集侦测配置 | 4字节(DWORD)通道号 | NET_DVR_GROUP_DETECTION | 3530
NET_DVR_GET_GROUPDETECTION_REGION | 获取人员聚集的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_GROUPDETECTION_REGION | 3532
NET_DVR_GET_GROUPDETECTION_TRIGGER | 获取人员聚集联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3534
NET_DVR_GET_GROUPDETECTION_SCHEDULE | 获取人员聚集布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3536
快速运动侦测配置 |  |  |  |
NET_DVR_GET_RAPIDMOVE_DETECTION | 获取快速运动侦测配置 | 4字节(DWORD)通道号 | NET_DVR_RAPIDMOVE_DETECTION | 3539
NET_DVR_GET_RAPIDMOVE_REGION | 获取快速运动的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_RAPIDMOVE_REGION | 3541
NET_DVR_GET_RAPIDMOVE_TRIGGER | 获取快速运动联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3543
NET_DVR_GET_RAPIDMOVE_SCHEDULE | 获取快速运动的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3545
停车侦测配置 |  |  |  |
NET_DVR_GET_PARKING_DETECTION | 获取停车侦测配置 | 4字节(DWORD)通道号 | NET_DVR_PARKING_DETECTION | 3548
NET_DVR_GET_PARKING_REGION | 获取停车侦测的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_PARKING_REGION | 3550
NET_DVR_GET_PARKING_TRIGGER | 获取停车侦测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3552
NET_DVR_GET_PARKING_SCHEDULE | 获取停车侦测的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3554
物品遗留侦测配置 |  |  |  |
NET_DVR_GET_UNATTENDED_BAGGAGE_DETECTION | 获取物品遗留侦测配置 | 4字节(DWORD)通道号 | NET_DVR_UNATTENDED_BAGGAGE_DETECTION | 3557
NET_DVR_GET_UNATTENDED_BAGGAGE_REGION | 获取物品遗留侦测的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_UNATTENDED_BAGGAGE_REGION | 3559
NET_DVR_GET_UNATTENDED_BAGGAGE_TRIGGER | 获取物品遗留侦测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3561
NET_DVR_GET_UNATTENDED_BAGGAGE_SCHEDULE | 获取物品遗留侦测的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3563
物品拿取侦测配置 |  |  |  |
NET_DVR_GET_ATTENDEDBAGGAGE_DETECTION | 获取物品拿取侦测配置 | 4字节(DWORD)通道号 | NET_DVR_ATTENDED_BAGGAGE_DETECTION | 3566
NET_DVR_GET_ATTENDEDBAGGAGE_REGION | 获取物品拿取侦测的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_ATTENDED_BAGGAGE_REGION | 3568
NET_DVR_GET_ATTENDEDBAGGAGE_TRIGGER | 获取物品拿取侦测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3570
NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE | 获取物品拿取侦测的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3572
NET_DVR_GET_ATTENDEDBAGGAGE_TRIGGER | 区域人数统计布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3570
NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE | 区域人数统计联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3572
授权和非授权名单参数配置 |  |  |  |
NET_DVR_GET_VEHICLE_BLOCKLIST_SCHEDULE | 获取非授权名单布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 6622
NET_DVR_GET_VEHICLE_BLOCKLIST_EVENT_TRIGGER | 获取非授权名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6626
NET_DVR_GET_VEHICLE_ALLOWLIST_SCHEDULE | 获取授权名单布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 6624
NET_DVR_GET_VEHICLE_ALLOWLIST_EVENT_TRIGGER | 获取授权名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6628
NET_DVR_GET_VEHICLE_ALLLIST_EVENT_TRIGGER | 获取全部车辆检测名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6631
NET_DVR_GET_VEHICLE_OTHERLIST_EVENT_TRIGGER | 获取其他车辆检测名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6633
其他参数配置 |  |  |  |
NET_DVR_GET_PTZ_NOTIFICATION | 获取事件联动PTZ配置 | NET_DVR_PTZ_NOTIFICATION_COND | NET_DVR_PTZ_NOTIFICATION_CFG | 8201
NET_DVR_GET_REGION_CLIP | 获取区域裁剪配置 | NET_DVR_REGION_CLIP_COND | NET_DVR_REGION_CLIP_CFG | 3575
NET_DVR_GET_LITESTORAGE | 获取轻存储配置 | 4字节(DWORD)通道号 | NET_DVR_LITESTORAGE | 3594
NET_DVR_GET_VEHICLE_CALIBRATION | 获取车辆检测标定 | 4字节(DWORD)通道号 | NET_DVR_CALIBRATION | 3598
NET_DVR_GET_PDC_RECOMMEND | 获取客流统计表示推荐值 | 4字节(DWORD)通道号 | NET_DVR_PDC_RECOMMEND | 3755
NET_DVR_GET_SMARTCALIBRATION_CFG | 获取Smart行为标定过滤尺寸功能 | NET_DVR_SMARTCALIBRATION_COND | NET_DVR_SMARTCALIBRATION_CFG | 3910
 | XXXXXXXXXXXXXXXXXX |  |  |

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_ALARMCTRL_CFG | 获取报警控制 | 4字节(DWORD)通道号 | NET_DVR_ALARMCTRL_CFG | 3148
NET_DVR_GET_PXOFFLINE_CFG | 获取停车场票箱脱机参数配置 | 4字节(DWORD)通道号 | NET_DVR_PXOFFLINE_CFG | 3654
NET_DVR_GET_PXMULTICTRL_CFG | 获取停车场票箱从属设备多角度参数 | 4字节(DWORD)通道号 | NET_DVR_PXMULTICTRL_CFG | 3664
NET_DVR_GET_TME_CHARGERULE | 获取停车场出入口车卡收费规则参数 | NET_DVR_TME_CHARGERULE_COND | ChargeRuleInfo | 3665
NET_DVR_GET_ILLEGALCARDFILTERING_CFG | 获取停车场票箱参数配置 | 4字节(DWORD)通道号 | NET_DVR_ILLEGALCARDFILTERING_CFG | 3669
NET_DVR_GET_LEDDISPLAY_CFG | 获取LED屏幕显示参数 | 4字节(DWORD)通道号 | NET_DVR_LEDDISPLAY_CFG | 3673
NET_DVR_GET_PAPERPRINTFORMAT_CFG | 获取纸票打印格式参数 | 4字节(DWORD)通道号 | NET_DVR_PAPERPRINTFORMAT_CFG | 3677
NET_DVR_GET_LOCKGATE_CFG | 获取智能锁闸参数配置 | 4字节(DWORD)通道号 | NET_DVR_LOCKGATE_CFG | 3680
NET_DVR_GET_TMEVOICE_CFG | 获取语音参数配置 | 4字节(DWORD)通道号 | NET_DVR_TMEVOICE_CFG | 3688

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SOFTIO_TRIGGER | 获取SoftIO联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4183
NET_DVR_GET_SOFTIO_SCHEDULE | 获取SoftIO布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4186

NET_DVR_GET_SOFTIO_SCHEDULE 对应ISAPI中的URL：GET /ISAPI/Event/schedules/softIO/<ID>，协议中将通道号1转换成ID，如：softIO-1。

NET_DVR_GET_SOFTIO_TRIGGER 对应ISAPI中的URL：GET /ISAPI/Event/triggers/<ID>，协议中将通道号1转换成ID，如：softIO-1。

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SOFTIO_SCHEDULE | 获取SoftIO布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4186

NET_DVR_GET_SOFTIO_SCHEDULE 对应ISAPI中的URL：GET /ISAPI/Event/schedules/softIO/<ID>，协议中将通道号1转换成ID，如：softIO-1。

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FIREDETECTION | 获取火点检测参数 | 4字节(DWORD)通道号 | NET_DVR_FIREDETECTION_CFG | 3636
NET_DVR_GET_FIREDETECTION_TRIGGER | 获取火点检测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3638
NET_DVR_GET_LOWPOWER | 获取低功耗配置 | 4字节(DWORD)通道号 | NET_DVR_LOWPOWER | 3732
NET_DVR_GET_ZOOMLINKAGE | 获取变倍联动配置 | 4字节(DWORD)通道号 | NET_DVR_ZOOMLINKAGE | 3735
NET_DVR_GET_THERMOMETRY_BASICPARAM | 获取测温基本参数配置 | 4字节(DWORD)通道号 | NET_DVR_THERMOMETRY_BASICPARAM | 3621
NET_DVR_GET_THERMOMETRY_PRESETINFO | 获取预置点关联测温信息配置 | NET_DVR_THERMOMETRY_COND | NET_DVR_THERMOMETRY_PRESETINFO | 3624
NET_DVR_GET_THERMOMETRY_ALARMRULE | 获取预置点测温报警规则配置 | NET_DVR_THERMOMETRY_COND | NET_DVR_THERMOMETRY_ALARMRULE | 3627
NET_DVR_GET_THERMOMETRY_DIFFCOMPARISON | 获取预置点温差报警规则配置 | NET_DVR_THERMOMETRY_COND | NET_DVR_THERMOMETRY_DIFFCOMPARISON | 3630
NET_DVR_GET_THERMOMETRY_TRIGGER | 获取测温联动配置 | NET_DVR_THERMOMETRY_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 3632
NET_DVR_GET_BAREDATAOVERLAY_CFG | 获取热成像裸数据叠加 | 4字节(DWORD)通道号 | NET_DVR_BAREDATAOVERLAY_CFG | 6662
NET_DVR_GET_THERMINTELL | 获取热成像智能互斥配置参数 | 4字节(DWORD)通道号 | NET_DVR_THERMINTELL_PARAM | 6712
NET_DVR_GET_MANUALDEICING | 获取手动除冰配置 | 4字节(DWORD)通道号 | NET_DVR_MANUALDEICING_CFG | 6680
NET_DVR_GET_FIREDETECTION_SCHEDULE | 获取烟雾检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 6672
NET_DVR_GET_THERMALPOWER | 获取相机电源配置参数 | NULL | NET_DVR_THERMALPOWER_PARAM | 6690
NET_DVR_GET_PTZABSOLUTEEX | 获取高精度PTZ绝对位置配置 | 4字节(DWORD)通道号 | NET_DVR_PTZABSOLUTEEX_CFG | 6696
NET_DVR_GET_CRUISE_INFO | 获取设备巡航模式 | 4字节(DWORD)通道号 | NET_DVR_CRUISE_PARAM | 6699
NET_DVR_GET_TEMP_HUMI_INFO | 温湿度实时获取 | 4字节(DWORD)通道号 | NET_DVR_TEMP_HUMI_INFO | 6701
NET_DVR_GET_MANUALTHERM_BASICPARAM | 获取手动测温基本参数 | 4字节(DWORD)通道号 | NET_SDK_MANUALTHERM_BASICPARAM | 6717
NET_DVR_GET_FIRESHIELDMASK_CFG | 获取火点区域屏蔽参数 | 4字节(DWORD)通道号 | NET_SDK_FIRESHIELDMASK_CFG | 6724
NET_DVR_GET_SMOKESHIELDMASK_CFG | 获取烟雾区域屏蔽参数 | 4字节(DWORD)通道号 | NET_SDK_SMOKESHIELDMASK_CFG | 6727
NET_DVR_GET_AREASCAN_CFG | 获取区域扫描状态 | 4字节(DWORD)通道号 | NET_SDK_AREASCAN_CFG | 6730
NET_DVR_GET_THERMOMETRY_MODE | 获取测温模式参数 | 4字节(DWORD)通道号 | NET_DVR_THERMOMETRY_MODE | 6765
NET_DVR_GET_THERMAL_PIP | 获取热成像画中画配置参数 | 4字节(DWORD)通道号 | NET_DVR_THERMAL_PIP | 6768
NET_DVR_GET_THERMAL_INTELRULE_DISPLAY | 获取热成像智能规则显示参数 | 4字节(DWORD)通道号 | NET_DVR_THERMAL_INTELRULE_DISPLAY | 6771
NET_DVR_GET_THERMAL_ALGVERSION | 获取热成像相关算法库版本 | NULL | NET_DVR_THERMAL_ALGINFO | 6773
NET_DVR_GET_CURRENT_LOCK | 获取电流锁定配置参数 | NULL | NET_DVR_CURRENT_LOCK | 6775

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SLAVECAMERA | 获取从摄像机IP信息配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CFG | 3600
NET_DVR_GET_SLAVECAMERA_STATUS | 获取从摄像机连接状态 | 4字节(DWORD)通道号 | NET_DVR_SLAVECAMERA_STATUS | 3602
NET_DVR_GET_SLAVECAMERA_CALIB | 获取从摄像机标定配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_CFG | 3604
NET_DVR_GET_SLAVECAMERA_CALIB_V50 | 获取从摄像机标定配置(扩展) | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_V50 | 3614
NET_DVR_GET_TRACKING | 获取主从跟踪功能相机跟踪配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_TRACKING | 3611
NET_DVR_GET_TRACKINGRATIO_MANUAL | 获取从摄像机手动跟踪倍率 | NET_DVR_SLAVECAMERA_COND | NET_DVR_MANUAL_TRACKRATIO | 3617

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_ONLINEUPGRADE_PROGRESS | 获取在线升级状态和进度 | NULL | NET_DVR_ONLINEUPGRADE_STATUS | 9302
NET_DVR_GET_FIRMWARECODE | 获取识别码 | NET_DVR_FIRMWARECODE_COND | NET_DVR_FIRMWARECODE_LIST | 9303
NET_DVR_GET_ONLINEUPGRADE_SERVER | 获取升级服务器状态 | NULL | NET_DVR_ONLINEUPGRADE_SERVER | 9304
NET_DVR_GET_ONLINEUPGRADE_VERSION | 获取新版本信息 | NET_DVR_ONLINEUPGRADE_VERSION_COND | NET_DVR_ONLINEUPGRADE_VERSION_RET | 9305
NET_DVR_GET_RECOMMEN_VERSION | 检测是否推荐升级到此版本 | NET_DVR_RECOMMEN_VERSION_COND | NET_DVR_RECOMMEN_VERSION_RET | 9306

See Also

NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_SECURITY_QUESTION_CFG | 获取设备安全问题 | NULL | NET_DVR_SECURITY_QUESTION_CFG | 4365

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_POST_SETUP_CALIB | 架设标定检验 | NET_DVR_SETUP_CALIB_COND | NET_DVR_SETUP_CALIB_RESULT | 3912

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_POSINFO_OVERLAY | 获取POS叠加参数 | 4字节(DWORD)通道号 | NET_DVR_POSINFO_OVERLAY | 3961

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_VCA_VERSION_LIST | 获取算法库版本 | NULL | NET_DVR_VCA_VERSION_LIST | 3973

See Also

NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_VIDEO_IMAGE_DB_CFG | 获取视图库信息 | NULL | NET_DVR_VIDEO_IMG_DB_CFG | 6601
NET_DVR_GET_FILE_INFO_BY_ID | 根据文件ID获取视图库中文件信息 | NET_DVR_FILE_INFO_IN | NET_DVR_FILE_QUERY_INFO | 6604

See Also

NET_DVR_SetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FACECONTRAST_TRIGGER | 获取人脸比对联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3965
NET_DVR_GET_FACECONTRAST_SCHEDULE | 获取人脸比对布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3968
NET_DVR_GET_BLOCKLIST_FACECONTRAST_TRIGGER | 获取非授权名单人脸比对联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4368
NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE | 获取非授权名单人脸比对布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4373
NET_DVR_GET_ALLOWLIST_FACECONTRAST_TRIGGER | 获取授权名单人脸比对联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4370
NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE | 获取授权名单人脸比对布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4376
NET_DVR_GET_HFPD_TRIGGER | 获取高频人员侦测联动配置 | 无效 | NET_DVR_EVENT_TRIGGER | 4188
NET_DVR_GET_HFPD_SCHEDULE | 获取高频人员侦测布防时间配置（对应ISAPI协议中/ISAPI/Event/schedules/HFPD） | 无效 | NET_DVR_EVENT_SCHEDULE | 4191

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FACELIB_TRIGGER | 获取人脸比对库联动方式配置 | NET_DVR_FACELIB_GUARD_COND | NET_DVR_EVENT_TRIGGER | 3962
NET_DVR_GET_FACELIB_SCHEDULE | 获取人脸比对库布防时间配置 | NET_DVR_FACELIB_GUARD_COND | NET_DVR_EVENT_SCHEDULE | 3977

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体中的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_GET_FACESNAP_TRIGGER | 获取人脸抓拍联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4161
NET_DVR_GET_FACESNAP_SCHEDULE | 获取人脸抓拍布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4164

See Also

NET_DVR_SetSTDConfig NET_DVR_Login_V40


NET_DVR_GetUploadResult

获取当前数据上传结果信息。

BOOL NET_DVR_GetUploadResult(
  LONG      lUploadHandle,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
lpOutBuffer
[out] 结果信息缓冲区，不同的上传类型（NET_DVR_UploadFile_V40接口里面传入的dwUploadType）对应不同的结构体信息，如下表所示：
dwUploadType | 功能描述 | lpOutBuffer
UPLOAD_PICTURE_TO_CLOUD | 开始上传图片到云存储池 | NET_DVR_UPLOAD_FILE_RET
dwOutBufferSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 上传时调用NET_DVR_GetUploadState获取进度和状态，上传完成之后调用该接口获取当前结果信息，然后再上传下一个。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadSend_Cloud


NET_DVR_GetUploadResult

获取当前上传的结果信息。

BOOL NET_DVR_GetUploadResult(
  LONG      lUploadHandle,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
lpOutBuffer
[out] 结果信息缓冲区，不同的下载类型（NET_DVR_UploadFile_V40接口里面传入的dwUploadType参数）对应不同的结构体信息，如下表所示：
dwUploadType | 功能描述 | lpOutBuffer
UPLOAD_FACE_ANALYSIS_DATA | 导入图片数据到设备进行人脸抓拍 | NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT
dwOutBufferSize
[in] 缓冲区大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 上传时调用NET_DVR_GetUploadState获取进度和状态，上传完成之后调用该接口获取当前结果信息，然后再上传下一个。

See Also

NET_DVR_UploadFile_V40


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
19 | 文件格式不正确 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
47 | 语言不匹配 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
48 | 列名不匹配 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
49 | 数据重复错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
50 | 数据长度错误 | 不会断开连接，可以继续重新上传正确的文件
51 | 数据类型错误 | 不会断开连接，可以继续重新上传正确的文件
52 | 其他错误 | 不会断开连接，可以继续重新上传正确的文件

Remarks

  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_GetUploadState

获取文件上传的进度和状态。

LONG NET_DVR_GetUploadState(
  LONG       lUploadHandle,
  LPDWORD    pProgress
);

Parameters

lUploadHandle
[in] 文件上传的句柄，NET_DVR_UploadFile_V40的返回值
pProgress
[out] 返回的进度值，0~100

Return Values

-1表示函数调用失败，其他为上传的状态值见下表说明。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

返回值 | 描述 | 处理方式
1 | 上传成功 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
2 | 正在上传 | 不需要处理
3 | 上传失败 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
4 | 网络断开，状态未知 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
6 | 硬盘错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
7 | 无审讯文件存放盘 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
8 | 容量不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
9 | 设备资源不足 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
10 | 文件个数超过最大值 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
11 | 文件过大 | 不会断开连接，可以继续重新上传正确的文件
12 | 文件类型错误 | 不会断开连接，可以继续重新上传正确的文件
19 | 文件格式不正确 | 不会断开连接，可以继续重新上传正确的文件
20 | 文件内容不正确 | 不会断开连接，可以继续重新上传正确的文件
21 | 上传音频采样率不支持 | 不会断开连接，可以继续重新上传正确的文件
26 | 名称错误 | 不会断开连接，可以继续重新上传正确的文件
27 | 图片分辨率无效错误 | 不会断开连接，可以继续重新上传正确的文件
28 | 图片目标个数超过上限 | 不会断开连接，可以继续重新上传正确的文件
29 | 图片未识别到目标 | 不会断开连接，可以继续重新上传正确的文件
30 | 图片数据识别失败 | 不会断开连接，可以继续重新上传正确的文件
31 | 分析引擎异常 | 关闭连接，需要调用NET_DVR_UploadClose释放资源
32 | 解析图片数据出错 | 不会断开连接，可以继续重新上传正确的文件
34 | 安全校验密钥错误 | 关闭连接，需要调用NET_DVR_UploadClose释放资源

Remarks

  • 上传完成之后需要调用NET_DVR_GetUploadResult获取当前上传的图片ID、识别出来的人脸目标等结果信息（由设备生成并返回），然后再上传下一张图片。
  • 获取状态为“4- 网络断开，状态未知”时，需要调用NET_DVR_UploadClose停止上传，释放资源，然后网络恢复后再调用NET_DVR_UploadFile_V40重新启动上传。

See Also

NET_DVR_UploadFile_V40 NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_InitDDrawDevice

初始化系统中的显示设备。

BOOL NET_DVR_InitDDrawDevice(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当播放库PlayCtrl.dll的版本为6.1以上时该接口失效。

See Also

NET_DVR_ReleaseDDrawDevice


NET_DVR_InquestCDWByTime

按时间刻录文件。

BOOL NET_DVR_InquestCDWByTime(
  LONG              lUserID,
  LPNET_DVR_TIME    lpStartTime,
  LPNET_DVR_TIME    lpStopTime
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpBeginTime
[in] 文件的开始时间
lpEndTime
[in] 文件结束时间

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_InquestDeleteFile

删除审讯文件。

BOOL NET_DVR_InquestDeleteFile(
  LONG                      lUserID,
  LPNET_DVR_INQUEST_FILES   lpDeleteFile
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDeleteFile
[in] 要删除的审讯文件信息指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

刻录文件的信息可以通过接口NET_DVR_InquestFindFile和NET_DVR_InquestFindNextFile获取。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_InquestDeleteFile_V30


NET_DVR_InquestFindFile

搜索审讯文件。

LONG NET_DVR_InquestFindFile(
  LONG   lUserID
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值

Return Values

-1表示失败，其他值作为NET_DVR_InquestFindNextFile等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口调用成功后，可以调用NET_DVR_FindNextFile接口来获取文件信息。

See Also

NET_DVR_InquestFindNextFile NET_DVR_InquestFindClose
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_InquestFindFile_V30


NET_DVR_InquestGetCDRWScheme

获取设备刻录参数。

BOOL NET_DVR_InquestGetCDRWScheme(
  LONG                         lUserID,
  LPNET_DVR_INQUEST_CDRW_CFG   lpCDRWCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpCDRWCfg
[out] 刻录参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestSetCDRWScheme
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_InquestGetCDWState

获取刻录状态。

BOOL NET_DVR_InquestGetCDWState(
  LONG                            lUserID,
  LPNET_DVR_INQUEST_CDRW_STATUS   pStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pStatus
[out] 刻录状态信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestGetCDWState_V30


NET_DVR_InquestGetPIPStatus

获取画中画状态。

BOOL NET_DVR_InquestGetPIPStatus(
  LONG                           lUserID,
  LPNET_DVR_INQUEST_PIP_STATUS   pStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pStatus
[out] 画中画状态结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestSetPIPStatus
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestGetPIPStatus_V30


NET_DVR_InquestGetPIPStatus_V30

获取画中画状态。

BOOL NET_DVR_InquestGetPIPStatus_V30(
  LONG                           lUserID,
  LPNET_DVR_INQUEST_ROOM         lpInquestRoom,
  LPNET_DVR_INQUEST_PIP_STATUS   pStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
pStatus
[out] 画中画状态结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestSetPIPStatus_V30
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestGetPIPStatus_V40

该接口扩展源于
NET_DVR_InquestGetPIPStatus


NET_DVR_InquestSetCDRWScheme

设置设备刻录参数。

BOOL NET_DVR_InquestSetCDRWScheme(
  LONG                         lUserID,
  LPNET_DVR_INQUEST_CDRW_CFG   lpCDRWCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpCDRWCfg
[in] 刻录参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetCDRWScheme
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_InquestSetPIPStatus

设置画中画状态。

BOOL NET_DVR_InquestSetPIPStatus(
  LONG                           lUserID,
  LPNET_DVR_INQUEST_PIP_STATUS   pStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pStatus
[in] 画中画状态结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetPIPStatus
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestSetPIPStatus_V30


NET_DVR_InquestSetPIPStatus_V30

设置画中画状态。

BOOL NET_DVR_InquestSetPIPStatus_V30(
  LONG                           lUserID,
  LPNET_DVR_INQUEST_ROOM         lpInquestRoom,
  LPNET_DVR_INQUEST_PIP_STATUS   pStatus
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInquestRoom
[in] 审讯室信息
pStatus
[in] 画中画状态结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestGetPIPStatus_V30
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestSetPIPStatus_V40

该接口扩展源于
NET_DVR_InquestSetPIPStatus


NET_DVR_InquestStartCDW

审讯中开始刻录。

BOOL NET_DVR_InquestStartCDW(
  LONG   lUserID,
  BOOL   bPause
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
bPause
[in] 是否暂停(暂未使用, 保留)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestStopCDW
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestStartCDW_V30


NET_DVR_InquestStopCDW

审讯中停止刻录。

BOOL NET_DVR_InquestStopCDW(
  LONG   lUserID,
  BOOL   bCancelWrite
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
bCancelWrite
[in] TRUE-不封盘；FALSE-封盘

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestStartCDW
NET_DVR_Login NET_DVR_Login_V30

Reference Interface

扩展接口可见
NET_DVR_InquestStopCDW_V30


NET_DVR_InquestUploadFile

向设备上传审讯文件。

LONG NET_DVR_InquestUploadFile(
  LONG   lUserID,
  char   *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sFileName
[in] 要上传的文件名（全路径格式），最多128字节

Return Values

-1表示失败，其他值作为NET_DVR_InquestUploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquestUploadClose
NET_DVR_InquestGetUploadState
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_InquestUploadFile_V30


NET_DVR_InquireFaceDBRecord

查询人脸数据库记录。

LONG NET_DVR_InquireFaceDBRecord(
  LONG                         lUserID,
  LPNET_VCA_DATARECORD_COND    lpInBuf,
  fSearchDBCallBack            cbSearchDBCallBack,
  void                         *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 数据库记录查询条件
cbSearchDBCallBack
[in] 回调函数，查询结果在回调中返回
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fSearchDBCallBack)(
  LONG     lHandle,
  DWORD    dwType,
  DWORD    dwResultNum,
  BYTE     *pBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

lHandle
[out] 句柄，NET_DVR_InquireFaceDBRecord的返回值
dwType
[out] 数据库类型，保留
dwResultNum
[out] 查询结果个数，保留
pBuffer
[out] 存放数据的缓冲区指针，对应结构体NET_VCA_INQUIRE_DATARECORD_RESULT
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopSearchDB等接口的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetSearchSnapDBProgress NET_DVR_StopSearchDB


NET_DVR_InquireSnapDBRecord

查询抓拍数据库记录。

LONG NET_DVR_InquireSnapDBRecord(
  LONG                             lUserID,
  DWORD                            dwDataBaseID,
  LPNET_VCA_INQUIRE_SNAPDB_COND    lpInBuf,
  fSearchDBCallBack                cbSearchDBCallBack,
  void                             *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDataBaseID
[in] 数据库ID
lpInBuf
[in] 数据库记录查询条件
cbSearchDBCallBack
[in] 回调函数，查询结果在回调中返回
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fSearchDBCallBack)(
  LONG     lHandle,
  DWORD    dwType,
  DWORD    dwResultNum,
  BYTE     *pBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

lHandle
[out] 句柄，NET_DVR_InquireSnapDBRecord的返回值
dwType
[out] 数据库类型，保留
dwResultNum
[out] 查询结果个数，保留
pBuffer
[out] 存放数据的缓冲区指针，对应结构体NET_VCA_INQUIRE_SNAPRECORD_RESULT
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopSearchDB等接口的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetSearchSnapDBProgress NET_DVR_StopSearchDB


NET_DVR_IsSupport

判断运行客户端的PC配置是否符合要求，该接口保留。

int NET_DVR_IsSupport(
);

Return Values

失败返回-1，成功返回>0，1～9位分别表示以下信息（位与是TRUE，表示支持）：
宏定义 | 宏定义值 | 含义
NET_DVR_SUPPORT_DDRAW | 0x01 | 支持DIRECTDRAW，如果不支持，则播放器不能工作
NET_DVR_SUPPORT_BLT | 0x02 | 显卡支持BLT操作，如果不支持，则播放器不能工作
NET_DVR_SUPPORT_BLTFOURCC | 0x04 | 显卡BLT支持颜色转换，如果不支持，播放器会用软件方法作RGB转换
NET_DVR_SUPPORT_BLTSHRINKX | 0x08 | 显卡BLT支持X轴缩小；如果不支持，系统会用软件方法转换
NET_DVR_SUPPORT_BLTSHRINKY | 0x10 | 显卡BLT支持Y轴缩小；如果不支持，系统会用软件方法转换
NET_DVR_SUPPORT_BLTSTRETCHX | 0x20 | 显卡BLT支持X轴放大；如果不支持，系统会用软件方法转换
NET_DVR_SUPPORT_BLTSTRETCHY | 0x40 | 显卡BLT支持Y轴放大；如果不支持，系统会用软件方法转换
NET_DVR_SUPPORT_SSE | 0x80 | CPU支持SSE指令，Intel Pentium3以上支持SSE指令
NET_DVR_SUPPORT_MMX | 0x100 | CPU支持MMX指令集，Intel Pentium3以上支持SSE指令


NET_DVR_Login

用户注册设备。

LONG NET_DVR_Login(
  char                   *sDVRIP,
  WORD                   wDVRPort,
  char                   *sUserName,
  char                   *sPassword,
  LPNET_DVR_DEVICEINFO   lpDeviceInfo
);

Parameters

sDVRIP
[in] 设备IP地址
wDVRPort
[in] 设备端口号
sUserName
[in] 登录的用户名
sPassword
[in] 用户密码
lpDeviceInfo
[out] 设备信息

Return Values

-1表示失败，其他值表示返回的用户ID值。该用户ID具有唯一性，后续对设备的操作都需要通过此ID实现。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_MAX_USERNUM | 52 | 登录设备的用户数达到最大。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

如DS-7116、DS-81xx、DS-90xx、DS-91xx等系列设备允许有32个注册用户名，且同时最多允许128个用户注册；如DS-80xx等设备允许有16个注册用户名，且同时最多允许128个用户注册。

客户端发生异常离线时，设备端保留用户ID的有效时间是5分钟。

See Also

NET_DVR_Logout

Reference Interface

扩展接口可见
NET_DVR_Login_V30


NET_DVR_Login_V30

用户注册设备。

LONG NET_DVR_Login_V30(
  char                       *sDVRIP,
  WORD                       wDVRPort,
  char                       *sUserName,
  char                       *sPassword,
  LPNET_DVR_DEVICEINFO_V30   lpDeviceInfo
);

Parameters

sDVRIP
[in] 设备IP地址或是静态域名，字符数不大于128个
wServerPort
[in] 设备端口号
sUserName
[in] 登录的用户名
sPassword
[in] 用户密码
lpDeviceInfo
[out] 设备信息

Return Values

-1表示失败，其他值表示返回的用户ID值。该用户ID具有唯一性，后续对设备的操作都需要通过此ID实现。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_MAX_USERNUM | 52 | 登录设备的用户数达到最大。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

SDK注册设备新增支持静态域名的方式，即可设置sDVRIP="test.vicp.net"。

如DS-7116、DS-81xx、DS-90xx、DS-91xx等系列设备允许有32个注册用户名，且同时最多允许128个用户注册；如DS-80xx等设备允许有16个注册用户名，且同时最多允许128个用户注册。

SDK支持2048个注册，返回UserID的取值范围为0~2047。

See Also

NET_DVR_Logout

Reference Interface

扩展接口可见
NET_DVR_Login_V40

该接口扩展源于
NET_DVR_Login


NET_DVR_Logout_V30

用户注销。

BOOL NET_DVR_Logout_V30(
  LONG    lUserID
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口强制停止该用户的所有操作和释放所有的资源，确保该ID对应的线程都安全退出，资源得到释放。建议使用NET_DVR_Logout接口实现注销功能。

See Also

NET_DVR_Login_V40

Reference Interface

该接口扩展源于
NET_DVR_Logout


NET_DVR_MatrixGetCodeSplitter

获取码分器配置参数。

BOOL NET_DVR_MatrixGetCodeSplitter(
  LONG                           lUserID,
  DWORD                          dwCodeChan,
  LPNET_DVR_CODESPLITTERINFO     lpInter
);

Parameters

lUserID
[in] 登录编码子系统的返回值
dwCodeChan
[in] 子系统编码通道号
lpInter
[out] 码分器配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixSetCodeSplitter NET_DVR_Login NET_DVR_Login_V30


NET_DVR_MatrixGetDecChanInfo

获取当前解码通道信息。

BOOL NET_DVR_MatrixGetDecChanInfo(
  LONG                             lUserID,
  DWORD                            dwDecChanNum,
  LPNET_DVR_MATRIX_DEC_CHAN_INFO   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[out] 解码通道信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40


NET_DVR_MatrixGetDecChanInfo_V30

获取当前解码通道信息。

BOOL NET_DVR_MatrixGetDecChanInfo_V30(
  LONG                                 lUserID,
  DWORD                                dwDecChanNum,
  LPNET_DVR_MATRIX_DEC_CHAN_INFO_V30   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[out] 解码通道信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_MatrixGetDecChanInfo_V41


NET_DVR_MatrixGetDeviceStatus

多路解码器获取设备状态。

BOOL NET_DVR_MatrixGetDeviceStatus(
  LONG                             lUserID,
  LPNET_DVR_DECODER_WORK_STATUS    lpDecoderCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDecoderCfg
[out] 设备状态参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见
NET_DVR_MatrixGetDeviceStatus_V41


NET_DVR_MatrixGetDisplayCfg

多路解码器获取显示通道配置。

BOOL NET_DVR_MatrixGetDisplayCfg(
  LONG                           lUserID,
  LONG                           dwDispChanNum,
  LPNET_DVR_VGA_DISP_CHAN_CFG    lpDisplayCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDispChanNum
[in] 显示通道，1-8：VGA输出；9-24：BNC输出；25-28：HDMI输出；29-32：DVI输出
lpDisplayCfg
[out] 显示通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixSetDisplayCfg

Reference Interface

扩展接口可见
NET_DVR_MatrixGetDisplayCfg_V41


NET_DVR_MatrixGetLoopDecChanInfo

获取轮巡解码通道参数。

BOOL NET_DVR_MatrixGetLoopDecChanInfo(
  LONG                            lUserID,
  DWORD                           dwDecChanNum,
  LPNET_DVR_MATRIX_LOOP_DECINFO   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[out] 轮巡的解码通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置多路解码器某一解码通道的轮巡解码参数，每个解码通道最多可连接16路前端设备通道进行循环解码，循环周期可以设置，参数设置成功后，若连接信息中的启用标志置为启用，则该通道即进入轮巡状态，开始循环解码，若全部置为不启用，则不进行循环解码。 对循环解码的控制可以配合使用解码轮巡开关来实现，详细参看设置获取解码轮巡开关部分。

See Also

NET_DVR_MatrixSetLoopDecChanInfo


NET_DVR_MatrixGetLoopDecChanInfo_V30

获取轮巡解码通道参数。

BOOL NET_DVR_MatrixGetLoopDecChanInfo_V30(
  LONG                                lUserID,
  DWORD                               dwDecChanNum,
  LPNET_DVR_MATRIX_LOOP_DECINFO_V30   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[out] 轮巡的解码通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置多路解码器某一解码通道的轮巡解码参数，每个解码通道最多可连接64路前端设备通道进行循环解码，循环周期可以设置，参数设置成功后，若连接信息中的启用标志置为启用，则该通道即进入轮巡状态，开始循环解码，若全部置为不启用，则不进行循环解码。 对循环解码的控制可以配合使用解码轮巡开关来实现，详细参看设置获取解码轮巡开关部分。

See Also

NET_DVR_MatrixSetLoopDecChanInfo_V30

Reference Interface

扩展接口可见
NET_DVR_MatrixGetLoopDecChanInfo_V41


NET_DVR_MatrixGetTranInfo

获取透明通道信息。

BOOL NET_DVR_MatrixGetTranInfo(
  LONG                                 lUserID,
  LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG    lpTranInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpTranInfo
[out] 透明通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

此处透明通道配置是配置解码器与前端设备之间建立网络透明通道，而不是客户端与解码器之间建立透明通道，多路解码器本身不支持与客户端建立232透明通道和485透明通道，多路解码器本地串口只能作为串口控制台接入（通过RS232）或是控制键盘等输入性设备接入（通过RS232/RS485）。
提示： 目前多路解码器支持最多建立64条透明通道，包括232透明通道和485透明通道，但其中只有最多一条232全双工透明通道和最多一条485全双工透明通道，可以不设置全双工透明通道。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixSetTranInfo

Reference Interface

扩展接口可见
NET_DVR_MatrixGetTranInfo_V30


NET_DVR_MatrixGetVideoStandard

获取多路解码器的视频制式。

BOOL NET_DVR_MatrixGetVideoStandard(
  LONG      lUserID,
  LONG      dwDecChanNum,
  LPDWORD   lpdwVideoStandard
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道号
lpdwVideoStandard
[out] 解码器视频制式指针: 0-PAL，1-NTSC

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixSetVideoStandard NET_DVR_Login NET_DVR_Login_V30


NET_DVR_MatrixPicAdjust

显示通道图像位置微调。

BOOL NET_DVR_MatrixPicAdjust(
  LONG    lUserID,
  DWORD   dwDispChan,
  DWORD   dwPicAdjust,
  DWORD   dwCmdParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDispChan
[in] 信号源序号
dwPicAdjust
[in] 微调命令
宏定义 | 宏定义值 | 含义
DECODEPIC_LEFTADJUST | 1 | 图像左移
DECODEPIC_RIGHTADJUST | 2 | 图像右移
DECODEPIC_UPADJUST | 3 | 图像上移
DECODEPIC_DOWNADJUST | 4 | 图像下移
dwCmdParam
[in] 图像微调参数，大于0的整型值，表示移动距离，单位为：个（像素）。例如，dwPicAdjust = DECODEPIC_LEFTADJUST，dwCmdParam = 1，表示图片向左移动一个像素点。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口用于集中式多屏控制器图像微调。
  • dwCmdParam取值范围如下：
    当信号源是VGA时，水平左右最大都为50，上最大4，下最大20；
    当信号源时BNC时，BNC左右最大都为8，上下最大都为8；
    其他信号源不支持微调。
  • 对于集中式多屏控制器V1.1、V2.0，微调参数超过最大值时设备端当最大值来处理。对于V2.1，微调参数超过最大值时设备端返回数据错误。
  • 分布式多屏控制器的图像微调通过接口NET_DVR_SetDeviceConfig（配置命令：NET_DVR_ADJUST_PIC_V40）实现。

    • See Also

    NET_DVR_Login_V40


NET_DVR_MatrixSetCodeSplitter

设置码分器参数。

BOOL NET_DVR_MatrixSetCodeSplitter(
  LONG                           lUserID,
  DWORD                          dwDecChanNum,
  LPNET_DVR_CODESPLITTERINFO     lpInter
);

Parameters

lUserID
[in] 登录编码子系统的返回值
dwCodeChan
[in] 子系统编码通道号
lpInter
[in] 码分器配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixGetCodeSplitter NET_DVR_Login NET_DVR_Login_V30


NET_DVR_MatrixSetDisplayCfg

多路解码器设置显示通道配置。

BOOL NET_DVR_MatrixSetDisplayCfg(
  LONG                           lUserID,
  LONG                           dwDispChanNum,
  LPNET_DVR_VGA_DISP_CHAN_CFG    lpDisplayCfg
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDispChanNum
[in] 显示通道，1-8：VGA输出；9-24：BNC输出；25-28：HDMI输出；29-32：DVI输出
lpDisplayCfg
[in] 显示通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于DS6401HD，VGA、BNC、HDMI、DVI四个显示通道同时只能在一个通道上显示图像，即最后配置的显示通道有效

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixGetDisplayCfg

Reference Interface

扩展接口可见
NET_DVR_MatrixSetDisplayCfg_V41


NET_DVR_MatrixSetLoopDecChanInfo

设置轮巡解码通道参数。

BOOL NET_DVR_MatrixSetLoopDecChanInfo(
  LONG                            lUserID,
  DWORD                           dwDecChanNum,
  LPNET_DVR_MATRIX_LOOP_DECINFO   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[in] 轮巡的解码通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置多路解码器某一解码通道的轮巡解码参数，每个解码通道最多可连接16路前端设备通道进行循环解码，循环周期可以设置，参数设置成功后，若连接信息中的启用标志置为启用，则该通道即进入轮巡状态，开始循环解码，若全部置为不启用，则不进行循环解码。 对循环解码的控制可以配合使用解码轮巡开关来实现，详细参看设置获取解码轮巡开关部分。

See Also

NET_DVR_MatrixGetLoopDecChanInfo


NET_DVR_MatrixSetLoopDecChanInfo_V30

设置轮巡解码通道参数。

BOOL NET_DVR_MatrixSetLoopDecChanInfo_V30(
  LONG                                lUserID,
  DWORD                               dwDecChanNum,
  LPNET_DVR_MATRIX_LOOP_DECINFO_V30   lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpInter
[in] 轮巡的解码通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置多路解码器某一解码通道的轮巡解码参数，每个解码通道最多可连接64路前端设备通道进行循环解码，循环周期可以设置，参数设置成功后，若连接信息中的启用标志置为启用，则该通道即进入轮巡状态，开始循环解码，若全部置为不启用，则不进行循环解码。 对循环解码的控制可以配合使用解码轮巡开关来实现，详细参看设置获取解码轮巡开关部分。

See Also

NET_DVR_MatrixGetLoopDecChanInfo_V30

Reference Interface

扩展接口可见
NET_DVR_MatrixSetLoopDecChanInfo_V41


NET_DVR_MatrixSetTranInfo

设置透明通道信息。

BOOL NET_DVR_MatrixSetTranInfo(
  LONG                                 lUserID,
  LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG    lpTranInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpTranInfo
[in] 透明通道参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

此处透明通道配置是配置解码器与前端设备之间建立网络透明通道，而不是客户端与解码器之间建立透明通道，多路解码器本身不支持与客户端建立232透明通道和485透明通道，多路解码器本地串口只能作为串口控制台接入（通过RS232）或是控制键盘等输入性设备接入（通过RS232/RS485）。
提示： 目前多路解码器支持最多建立64条透明通道，包括232透明通道和485透明通道，但其中只有最多一条232全双工透明通道和最多一条485全双工透明通道，可以不设置全双工透明通道。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_MatrixGetTranInfo


NET_DVR_MatrixSetVideoStandard

设置多路解码器的视频制式。

BOOL NET_DVR_MatrixSetVideoStandard(
  LONG    lUserID,
  DWORD   dwDecChanNum,
  DWORD   dwVideoStandard
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道号
dwVideoStandard
[in] 视频制式: 0-PAL，1-NTSC

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_MatrixGetVideoStandard NET_DVR_Login NET_DVR_Login_V30


NET_DVR_MatrixStartDynamic

启动动态解码。

BOOL NET_DVR_MatrixStartDynamic(
  LONG                            lUserID,
  DWORD                           dwDecChanNum,
  LPNET_DVR_MATRIX_DYNAMIC_DEC    lpDynamicInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道
lpDynamicInfo
[in] 动态解码参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

配置多路解码器某一解码通道连接前端设备的某一通道，持续进行解码，直到调用停止动态解码接口或者关闭解码通道解码开关。解码过程中若因出现网络中断等原因造成解码中断的情况，多路解码器将自动向前端设备发起重连，直到连接成功或者停止解码接口被调用，其间该解码通道处于黑屏状态。

See Also

NET_DVR_MatrixStopDynamic


NET_DVR_MatrixStartDynamic_V30

启动动态解码。

BOOL NET_DVR_MatrixStartDynamic_V30(
  LONG                      lUserID,
  DWORD                     dwDecChanNum,
  LPNET_DVR_PU_STREAM_CFG   lpDynamicInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDecChanNum
[in] 解码通道。对于DS-6400HD-S，该参数为窗口号。
lpDynamicInfo
[in] 动态解码参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

配置多路解码器某一解码通道连接前端设备的某一通道，持续进行解码，直到调用停止动态解码接口或者关闭解码通道解码开关。解码过程中若因出现网络中断等原因造成解码中断的情况，多路解码器将自动向前端设备发起重连，直到连接成功或者停止解码接口被调用，其间该解码通道处于黑屏状态。

See Also

NET_DVR_MatrixStopDynamic

Reference Interface

扩展接口可见
NET_DVR_MatrixStartDynamic_V41


NET_DVR_PicControl

图片控制。

BOOL NET_DVR_PicControl(
  LONG    lUserID,
  BYTE    byUseType,
  BYTE    byPicIndex,
  BYTE    byCtrlCmd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
byUseType
[in] 图片用途：1- 虚拟LED，2- 底图，3- GIF
byPicIndex
[in] 图片序号
byCtrlCmd
[in] 控制命令：1- 显示，2- 不显示，3- 全部删除（针对GIF图片）

Remarks

C10H系列，虚拟LED控制是通过虚拟LED设置(NET_DVR_SET_OSDCFG)中将虚拟LED设置为无效来实现，并不是用此接口实现虚拟LED的显示与关闭显示，该接口只对底图控制有效， 而且只支持1张底图，所以图片序号byPicIndex参数无效。

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_PlayBackByName_V50

按文件名回放集群录像文件。

LONG NET_DVR_PlayBackByName_V50(
  LONG    lUserID,
  LPNET_DVR_PLAY_BY_NAME_PARA    pParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pParam
[in] 回放参数

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。
在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。

ISAPI协议登录不支持该接口。

Linux下

对于4.1或者以上的版本的SDK，HWND表示播放窗口的句柄，定义为：
typedef unsigned int HWND;

如果使用Qt进行界面开发，示例如下：

NET_DVR_CLIENTINFO tmpclientinfo;
tmpclientinfo.hPlayWnd = (HWND)m_framePlayWnd->GetPlayWndId();

对于4.1以前的版本的SDK，HWND定义如下：

typedef struct __PLAYRECT
{
int x; //显示框左上角横坐标
int y; //显示框左上角纵坐标
int uWidth; //显示框宽度
int uHeight; //显示框高度
}PLAYRECT;
typedef PLAYRECT HWND;

NET_DVR_CLIENTINFO结构中的hPlayWnd = {0}则SDK仍取流，不进行解码显示，所以仍可以录像，但是不能设置hPlayWnd = 0(即NULL)，否则非法结构地址会导致调用hPlayWnd.x等去判断的时候崩溃。

Linux版本SDK开发，回放接口直接传入有效窗口句柄，在回放过程中，改变窗口大小时，需要调用NET_DVR_PlayBackControl_V40(命令:NET_DVR_CHANGEWNDRESOLUTION)通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_PlayBackByTime

按时间回放录像文件。

LONG NET_DVR_PlayBackByTime(
  LONG              lUserID,
  LONG              lChannel,
  LPNET_DVR_TIME    lpStartTime,
  LPNET_DVR_TIME    lpStopTime,
  HWND              hWnd
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpStartTime
[in] 文件的开始时间
lpStopTime
[in] 文件结束时间
hWnd
[in] 回放的窗口句柄，若置为空，SDK仍能收到码流数据，但不解码显示

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。
当回放的是按事件搜索出的录像文件时，由于每个文件都会有预录和延迟的部分，因此在设置本接口的开始和结束时间参数时可以适当提前开始时间和延长结束时间。 建议值：最多10分钟，最少5秒。
在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack注册回调函数，捕获录像的码流数据并自行处理。

Linux下

对于4.1或者以上的版本的SDK，HWND表示播放窗口的句柄，定义为：
typedef unsigned int HWND;

如果使用Qt进行界面开发，示例如下：

NET_DVR_CLIENTINFO tmpclientinfo;
tmpclientinfo.hPlayWnd = (HWND)m_framePlayWnd->GetPlayWndId();

对于4.1以前的版本的SDK，HWND定义如下：

typedef struct __PLAYRECT
{
int x; //显示框左上角横坐标
int y; //显示框左上角纵坐标
int uWidth; //显示框宽度
int uHeight; //显示框高度
}PLAYRECT;
typedef PLAYRECT HWND;

NET_DVR_CLIENTINFO结构中的hPlayWnd = {0}则SDK仍取流，不进行解码显示，所以仍可以录像，但是不能设置hPlayWnd = 0(即NULL)，否则非法结构地址会导致调用hPlayWnd.x等去判断的时候崩溃。

See Also

NET_DVR_PlayBackControl NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_PlayBackByTime_V40


NET_DVR_PlayBackByTime_V40

按流ID和时间回放录像文件。

LONG NET_DVR_PlayBackByTime_V40(
  LONG                  lUserID,
  LPNET_DVR_VOD_PARA    pVodPara
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pVodPara
[in] 查找条件

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。
    当回放的是按事件搜索出的录像文件时，由于每个文件都会有预录和延迟的部分，因此在设置本接口的开始和结束时间参数时可以适当提前开始时间和延长结束时间。 建议值：最多10分钟，最少5秒。
    在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。
  • 该接口如果传入了播放句柄而加载播放库失败，实际上失败的，但是接口会返回成功。错误会通过异常方式进行回调(NET_DVR_SetExceptionCallBack_V30)，异常消息类型为：EXCEPTION_PLAYBACK，具体错误需要在异常消息回调函数中调用NET_DVR_GetLastError获取。
  • Linux版本SDK开发，回放接口直接传入有效窗口句柄，在回放过程中，改变窗口大小时，需要调用NET_DVR_PlayBackControl_V40(命令:NET_DVR_CHANGEWNDRESOLUTION)通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。
  • ISAPI协议下，并不完全支持私有协议的相关功能，目前ISAPI协议下，该接口支持的回放控制命令如下：开始播放（NET_DVR_PLAYSTART）、暂停播放（NET_DVR_PLAYPAUSE）、恢复播放（NET_DVR_PLAYRESTART）、快放（NET_DVR_PLAYFAST）、慢放（NET_DVR_PLAYSLOW）、正常速度播放（NET_DVR_PLAYNORMAL）。其他不支持

See Also

NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

该接口扩展源于

NET_DVR_PlayBackByTime


NET_DVR_PlayBackControl

控制录像回放的状态。

BOOL NET_DVR_PlayBackControl(
  LONG     lPlayHandle,
  DWORD    dwControlCode,
  DWORD    dwInValue,
  DWORD    *lpOutValue
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime的返回值
dwControlCode
[in] 控制录像回放状态命令，见下表
宏定义 | 宏定义值 | 含义
NET_DVR_PLAYSTART | 1 | 开始播放
NET_DVR_PLAYPAUSE | 3 | 暂停播放
NET_DVR_PLAYRESTART | 4 | 恢复播放（在暂停后调用将恢复暂停前的速度播放）
NET_DVR_PLAYFAST | 5 | 快放
NET_DVR_PLAYSLOW | 6 | 慢放
NET_DVR_PLAYNORMAL | 7 | 正常速度播放
NET_DVR_PLAYFRAME | 8 | 单帧放（恢复正常回放使用NET_DVR_PLAYNORMAL命令）
NET_DVR_PLAYSTARTAUDIO | 9 | 打开声音
NET_DVR_PLAYSTOPAUDIO | 10 | 关闭声音
NET_DVR_PLAYAUDIOVOLUME | 11 | 调节音量，取值范围[0,0xffff]
NET_DVR_PLAYSETPOS | 12 | 改变文件回放的进度
NET_DVR_PLAYGETPOS | 13 | 获取文件回放的进度
NET_DVR_PLAYGETTIME | 14 | 获取当前已经播放的时间(按文件回放的时候有效)
NET_DVR_PLAYGETFRAME | 15 | 获取当前已经播放的帧数(按文件回放的时候有效)
NET_DVR_GETTOTALFRAMES | 16 | 获取当前播放文件总的帧数(按文件回放的时候有效)
NET_DVR_GETTOTALTIME | 17 | 获取当前播放文件总的时间(按文件回放的时候有效)
NET_DVR_THROWBFRAME | 20 | 丢B帧
dwInValue
[in] 设置的参数，如设置文件回放的进度(命令值NET_DVR_PLAYSETPOS)时，此参数表示进度值；如开始播放(命令值NET_DVR_PLAYSTART)时，此参数表示断点续传的文件位置（Byte）
lpOutValue
[out] 获取的参数，如获取当前播放文件总的时间（命令值NET_DVR_GETTOTALTIME ），此参数就是得到的总时间

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_NOSPECFILE | 33 | 回放时设备没有指定的文件。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口中的第三个参数是否需要输入数值与控制命令有关，详见下表所示。特别指出，当控制命令是开始播放（即NET_DVR_PLAYSTART）时，第三个参数的值表示播放当前文件的偏移量，若该值为0表示从文件的起始位置播放，若该值不为0则表示断点续传的文件位置（Byte）。
该接口中的第四个参数表示当前控制命令操作所获取到的相应的参数，控制命令中的NET_DVR_PLAYGETPOS、NET_DVR_PLAYGETTIME、NET_DVR_PLAYGETFRAME、NET_DVR_GETTOTALFRAMES和NET_DVR_GETTOTALTIME都能通过该参数得到对应的值，详见下表所示。其中当命令值为NET_DVR_PLAYGETPOS时，获取文件回放或者下载进度时，0-100表示正常的进度值，大于100的值表示回放或者下载异常。
状态命令宏定义 | 状态命令说明 | dwInValue | lpOutValue
NET_DVR_PLAYSTART | 开始播放 | 一个4字节整型的偏移量 | 无
NET_DVR_PLAYSETPOS | 改变回放的进度 | 一个4字节整型的进度值（0-100） | 无
NET_DVR_PLAYGETPOS | 获取回放的进度 | 无 | 一个4字节整型的进度值（0-100）
NET_DVR_PLAYGETTIME | 获取当前已播放的时间（按文件回放有效） | 无 | 一个4字节整型值
NET_DVR_PLAYGETFRAME | 获取当前已播放的帧数（按文件回放有效） | 无 | 一个4字节整型值
NET_DVR_GETTOTALFRAMES | 获取当前播放文件总的帧数（按文件回放有效） | 无 | 一个4字节整型值
NET_DVR_GETTOTALTIME | 获取当前播放文件总的时间（按文件回放有效） | 无 | 一个4字节整型值

Remarks

  • ISAPI协议下，并不完全支持私有协议的相关功能，目前ISAPI协议下，该接口支持的回放控制命令如下：开始播放（NET_DVR_PLAYSTART）、暂停播放（NET_DVR_PLAYPAUSE）、恢复播放（NET_DVR_PLAYRESTART）、快放（NET_DVR_PLAYFAST）、慢放（NET_DVR_PLAYSLOW）、正常速度播放（NET_DVR_PLAYNORMAL）。其他不支持

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime

Reference Interface

扩展接口可见

NET_DVR_PlayBackControl_V40


NET_DVR_PlayBackControl

控制录像下载的状态。

BOOL NET_DVR_PlayBackControl(
  LONG     lPlayHandle,
  DWORD    dwControlCode,
  DWORD    dwInValue,
  DWORD    *lpOutValue
);

Parameters

lPlayHandle
[in] 下载句柄，NET_DVR_GetFileByName或NET_DVR_GetFileByTime的返回值
dwControlCode
[in] 控制录像下载状态命令，见下表
宏定义 | 宏定义值 | 含义
NET_DVR_PLAYSTART | 1 | 开始下载
NET_DVR_PLAYPAUSE | 3 | 暂停下载
NET_DVR_PLAYRESTART | 4 | 恢复下载
NET_DVR_PLAYSETPOS | 12 | 改变文件下载的进度（按文件下载时有效）
NET_DVR_PLAYGETPOS | 13 | 获取文件下载的进度（按文件下载时有效）
NET_DVR_GETTOTALFRAMES | 16 | 获取当前下载文件总的帧数(按文件下载时有效)
NET_DVR_GETTOTALTIME | 17 | 获取当前下载文件总的时间(按文件下载时有效)
NET_DVR_SETSPEED | 24 | 设置下载速度，流控范围：0~32Mbps
dwInValue
[in] 设置的参数，如设置文件下载的进度(命令值NET_DVR_PLAYSETPOS)时，此参数表示进度值；如开始下载(命令值NET_DVR_PLAYSTART)时，此参数表示断点续传的文件位置（Byte）
lpOutValue
[out] 获取的参数，如获取当前下载文件总的时间（命令值NET_DVR_GETTOTALTIME ），此参数就是得到的总时间

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口中的第三个参数是否需要输入数值与控制命令有关，NET_DVR_PLAYSETPOS命令下此参数表示下载的进度；当控制命令是开始下载（即NET_DVR_PLAYSTART）时，第三个参数的值表示下载当前文件的偏移量，若该值为0表示从文件的起始位置下载，若该值不为0则表示断点续传的文件位置（Byte）(目前只有DS-90xx和DS-81xx硬盘录像机支持断点续传功能)。
该接口中的第四个参数表示当前控制命令操作所获取到的相应的参数，控制命令中的NET_DVR_PLAYGETPOS、NET_DVR_GETTOTALFRAMES和NET_DVR_GETTOTALTIME都能通过该参数得到对应的值。
进度值的取值范围为0-100，获取文件下载进度时，0-100表示正常的进度值，大于100的值表示回放或者下载异常。

See Also

NET_DVR_GetFileByName NET_DVR_GetFileByTime

Reference Interface

扩展接口可见

NET_DVR_PlayBackControl_V40


NET_DVR_PlayBackReverseByName_V50

按文件名倒放集群录像文件。

LONG NET_DVR_PlayBackReverseByName_V50(
  LONG    lUserID,
  LPNET_DVR_PLAY_BY_NAME_PARA    pParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
pParam
[in] 回放参数

Return Values

-1表示失败，其他值作为NET_DVR_StopPlayBack等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了当前要播放的录像文件，调用成功后，还必须调用NET_DVR_PlayBackControl_V40接口的开始播放控制命令（NET_DVR_PLAYSTART）才能实现回放。在调用该接口成功后，可以通过接口NET_DVR_SetPlayDataCallBack_V40注册回调函数，捕获录像的码流数据并自行处理。
  • Linux 32/64位系统均不支持倒放软解码功能，因此需要将窗口句柄传空，设置回调函数，只取流不解码显示。

    • See Also

    NET_DVR_PlayBackControl_V40 NET_DVR_StopPlayBack NET_DVR_SetPlayDataCallBack_V40
    NET_DVR_Login NET_DVR_Login_V40


NET_DVR_PTZControl_EX

云台控制操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZControl好，RTSP预览时不支持此功能）。

BOOL NET_DVR_PTZControl_EX(
  LONG     lRealHandle,
  DWORD    dwPTZCommand,
  DWORD    dwStop
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZCommand
[in] 云台控制命令，见下表：
宏定义 | 宏定义值 | 含义
LIGHT_PWRON | 2 | 接通灯光电源
WIPER_PWRON | 3 | 接通雨刷开关
FAN_PWRON | 4 | 接通风扇开关
HEATER_PWRON | 5 | 接通加热器开关
AUX_PWRON1 | 6 | 接通辅助设备开关
AUX_PWRON2 | 7 | 接通辅助设备开关
ZOOM_IN | 11 | 焦距变大(倍率变大)
ZOOM_OUT | 12 | 焦距变小(倍率变小)
FOCUS_NEAR | 13 | 焦点前调
FOCUS_FAR | 14 | 焦点后调
IRIS_OPEN | 15 | 光圈扩大
IRIS_CLOSE | 16 | 光圈缩小
TILT_UP | 21 | 云台上仰
TILT_DOWN | 22 | 云台下俯
PAN_LEFT | 23 | 云台左转
PAN_RIGHT | 24 | 云台右转
UP_LEFT | 25 | 云台上仰和左转
UP_RIGHT | 26 | 云台上仰和右转
DOWN_LEFT | 27 | 云台下俯和左转
DOWN_RIGHT | 28 | 云台下俯和右转
PAN_AUTO | 29 | 云台左右自动扫描
dwStop
[in] 云台停止动作或开始动作：0－开始；1－停止

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对云台实施的每一个动作都需要调用该接口两次，分别是开始和停止控制，由接口中的最后一个参数（dwStop）决定。在调用此接口之前需要先开启预览。与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

云台默认以最大速度动作。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZCruise_EX

云台巡航操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZCruise好，RTSP预览时不支持此功能）。

BOOL NET_DVR_PTZCruise_EX(
  LONG     lRealHandle,
  DWORD    dwPTZCruiseCmd,
  BYTE     byCruiseRoute,
  BYTE     byCruisePoint,
  WORD     wInput
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZCruiseCmd
[in] 操作云台巡航命令，见下表：
宏定义 | 宏定义值 | 含义
FILL_PRE_SEQ | 30 | 将预置点加入巡航序列
SET_SEQ_DWELL | 31 | 设置巡航点停顿时间
SET_SEQ_SPEED | 32 | 设置巡航速度
CLE_PRE_SEQ | 33 | 将预置点从巡航序列中删除
RUN_SEQ | 37 | 开始巡航
STOP_SEQ | 38 | 停止巡航
byCruiseRoute
[in] 巡航路径，最多支持32条路径（序号从1开始）
byCruisePoint
[in] 巡航点，最多支持32个点（序号从1开始）
wInput
[in] 不同巡航命令时的值不同，预置点(最大255)、时间(最大255)、速度(最大40)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZPreset_EX

云台预置点操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZPreset好，RTSP预览时不支持此功能）。

BOOL NET_DVR_PTZPreset_EX(
  LONG     lRealHandle,
  DWORD    dwPTZPresetCmd,
  DWORD    dwPresetIndex
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZPresetCmd
[in] 操作云台预置点命令，见下表：
宏定义 | 宏定义值 | 含义
SET_PRESET | 8 | 设置预置点
CLE_PRESET | 9 | 清除预置点
GOTO_PRESET | 39 | 转到预置点
dwPresetIndex
[in] 预置点的序号（从1开始），最多支持300个预置点

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_PTZTrack_EX

云台花样扫描操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_PTZTrack好，RTSP预览时不支持此功能）。

BOOL NET_DVR_PTZTrack_EX(
  LONG     lRealHandle,
  DWORD    dwPTZTrackCmd
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwPTZTrackCmd
[in] 花样扫描操作命令，见下表：
宏定义 | 宏定义值 | 含义
STA_MEM_CRUISE | 34 | 开始记录花样扫描路径
STO_MEM_CRUISE | 35 | 停止记录花样扫描路径
RUN_CRUISE | 36 | 开始执行花样扫描路径

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

与设备之间的云台各项操作的命令都对应于设备与云台之间的控制码，设备会根据目前设置的解码器种类和解码器地址向云台发送控制码。如果目前设备上设置的解码器与云台设备的不匹配，需要重新配置设备的解码器。如果云台设备所需的解码器设备不支持，则无法用该接口控制。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_RealPlay

实时预览。

LONG NET_DVR_RealPlay(
  LONG                   lUserID,
  LPNET_DVR_CLIENTINFO   lpClientInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpClientInfo
[in] 预览参数

Return Values

-1表示失败，其他值作为NET_DVR_StopRealPlay等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在调用此接口成功后，若需要捕获实时码流数据，可以调用接口NET_DVR_SetRealDataCallBack或NET_DVR_SetStandardDataCallBack注册捕获码流数据的回调函数，并在回调函数中自行处理回调上来的码流数据。

客户端异常离线时，设备端对取流连接的保持时间为10秒。

See Also

NET_DVR_StopRealPlay NET_DVR_GetRealPlayerIndex NET_DVR_ClientSetVideoEffect
NET_DVR_ClientGetVideoEffect NET_DVR_RigisterDrawFun NET_DVR_OpenSound NET_DVR_OpenSoundShare
NET_DVR_CloseSoundShare NET_DVR_Volume NET_DVR_SetRealDataCallBack
NET_DVR_SetStandardDataCallBack NET_DVR_SaveRealData NET_DVR_StopSaveRealData

Reference Interface

扩展接口可见
NET_DVR_RealPlay_V30


NET_DVR_RealPlay_V30

实时预览。

LONG NET_DVR_RealPlay_V30(
  LONG                     lUserID,
  LPNET_DVR_CLIENTINFO     lpClientInfo,
  fRealDataCallBack_V30    cbRealDataCallBack,
  void                     *pUser,
  BOOL                     bBlocked
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpClientInfo
[in] 预览参数
cbRealDataCallBack
[in] 码流数据回调函数
pUser
[in] 用户数据
bBlocked
[in] 请求码流过程是否阻塞：0－否；1－是

Callback Function

typedef void(CALLBACK *fRealDataCallBack_V30)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_AUDIOSTREAMDATA | 3 | 音频数据
NET_DVR_PRIVATE_DATA | 112 | 私有数据,包括智能信息
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRealPlay等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_PASSWORD_ERROR | 1 | 用户名密码错误。注册时输入的用户名或者密码错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_OVER_MAXLINK | 5 | 连接到设备的用户个数超过最大。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_COMMANDTIMEOUT | 14 | 设备命令执行超时。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_LOADPLAYERSDKFAILED | 64 | 载入当前目录下Player Sdk出错。
NET_DVR_LOADPLAYERSDKPROC_ERROR | 65 | 找不到Player Sdk中某个函数入口。
NET_DVR_LOADDSSDKFAILED | 66 | 载入当前目录下DSsdk出错。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_IPCHAN_NOTALIVE | 83 | 预览时外接IP通道不在线。
NET_DVR_RTSP_SDK_ERROR | 84 | 加载标准协议通讯库StreamTransClient失败。
NET_DVR_CONVERT_SDK_ERROR | 85 | 加载转封装库失败。

Remarks

该接口中可以设置当前预览操作是否阻塞（通过bBlocked参数设置）。若设为不阻塞，表示发起与设备的连接就认为连接成功，如果发生码流接收失败、播放失败等情况以预览异常的方式通知上层。在循环播放的时候可以减短停顿的时间，与NET_DVR_RealPlay处理一致。 若设为阻塞，表示直到播放操作完成才返回成功与否。
该接口中的回调函数可以置为空，这样该函数将不回调码流数据给用户，不过用户仍可以通过接口NET_DVR_SetRealDataCallBack或NET_DVR_SetStandardDataCallBack注册捕获码流数据的回调函数以捕获码流数据。

客户端异常离线时，设备端对取流连接的保持时间为10秒。

See Also

NET_DVR_StopRealPlay NET_DVR_GetRealPlayerIndex NET_DVR_ClientSetVideoEffect
NET_DVR_ClientGetVideoEffect NET_DVR_RigisterDrawFun NET_DVR_OpenSound NET_DVR_OpenSoundShare
NET_DVR_CloseSoundShare NET_DVR_Volume NET_DVR_SetRealDataCallBack
NET_DVR_SetStandardDataCallBack NET_DVR_SaveRealData NET_DVR_StopSaveRealData

Reference Interface

该接口扩展源于
NET_DVR_RealPlay

扩展接口可见
NET_DVR_RealPlay_V40


NET_DVR_RealPlaySpecial

实时预览（用于兼容数据中心设备直接通过URL取流的方式）。

LONG NET_DVR_RealPlaySpecial(
  LONG                             lUserID,
  LPNET_DVR_PREVIEWINFO_SPECIAL    lpPreviewInfo,
  REALDATACALLBACK                 fRealDataCallBack_V30,
  void                             *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpPreviewInfo
[in] 预览参数
fRealDataCallBack_V30
[in] 码流数据回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *REALDATACALLBACK)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄，NET_DVR_RealPlaySpecial的返回值
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_AUDIOSTREAMDATA | 3 | 音频数据
NET_DVR_PRIVATE_DATA | 112 | 私有数据,包括智能信息
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRealPlay等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • fRealDataCallBack_V30回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 客户端异常离线时，设备端对取流连接的保持时间为10秒。
  • Linux版本SDK开发，预览接口直接传入有效窗口句柄，在预览过程中，改变窗口大小时，需要调用NET_DVR_ChangeWndResolution通知底层播放库去获取窗口大小。Windows系统下开发不需要调用相关接口，可以自适应。

See Also

NET_DVR_StopRealPlay


NET_DVR_ReleaseDDrawDevice

释放显示设备占用的资源。

BOOL NET_DVR_ReleaseDDrawDevice(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当播放库PlayCtrl.dll的版本为6.1以上时该接口失效。

See Also

NET_DVR_InitDDrawDevice


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_DEL_FINGERPRINT_CFG | 2152 | 删除指纹参数 | NET_DVR_FINGER_PRINT_INFO_CTRL

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的控制功能对应不同的命令号，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CTRL_PLAN | 1617 | 控制预案 | NET_DVR_CONTROL_PARAM
NET_DVR_CONTROL_SCREEN | 1625 | 屏幕控制 | NET_DVR_SCREEN_CONTROL_V41
NET_DVR_CONTROL_PICTURE_V41 | 1660 | 图片控制 | NET_DVR_PICTURE_PARAM
NET_DVR_CLOSE_ALL_WND_V41 | 9019 | 电视墙关闭所有窗口（有多个电视墙） | NET_DVR_WALL_INDEX

See Also

NET_DVR_Login_V40


NET_DVR_RemoteControl

远程控制。

BOOL NET_DVR_RemoteControl(
  LONG      lUserID,
  DWORD     dwCommand,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，详见列表
lpInBuffer
[in] 输入参数，具体内容跟控制命令相关，详见列表
dwInBufferSize
[in] 输入参数长度

不同的控制功能对应不同的命令号(dwCommand)，同时lpInBuffer对应不同的结构体，如下表所示：

dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体
NET_DVR_CONTROL_PTZ_MANUALTRACE | 3316 | 手动跟踪定位 | NET_DVR_PTZ_MANUALTRACE

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_ResetCounter

客流量统计重置。

BOOL NET_DVR_ResetCounter(
  LONG    lUserID,
  LONG    lChannel
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V30


NET_DVR_ResetDSP_Card

重置解码卡DSP。

BOOL NET_DVR_ResetDSP_Card(
  long   lChannelNum
);

Parameters

lChannelNum
[in] 解码卡的通道号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当用户调用NET_DVR_SetDspErrMsg_Card收到DSP死掉的消息后，可以调用这个接口来重置DSP。


NET_DVR_ScreenCtrl

屏幕控制。

BOOL NET_DVR_ScreenCtrl(
  LONG                        lUserID,
  DWORD                       dwDeviceNum,
  LPNET_DVR_SCREEN_CONTROL    lpStruScreenCtrl
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDeviceNum
[in] 分布式多屏控制器中，高的2个字节表示串口号，低2字节表示屏幕序号（0xffff表示所有屏幕）；集中式控制器中高2字节无效，低2字节屏幕序号从0开始
lpStruScreenCtrl
[in] 屏幕控制结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_ScreenWinCtrl

窗口控制。

BOOL NET_DVR_ScreenWinCtrl(
  LONG                     lUserID,
  DWORD                    dwWinIndex,
  DWORD                    dwCommand,
  LPNET_DVR_SCREEN_WINCFG  lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwWinIndex
[in] 窗口序号，对于多屏控制器，表示窗口号，需要跟结构体NET_DVR_SCREEN_WINCFG中的“输入源索引”（wInputIdx）保持一致。
dwCommand
[in] 命令值：1-open，2-close（窗口号0xffff表示对所有窗口的操作）3-top(窗口置顶)
lpInter
[in] NET_DVR_SCREEN_WINCFG结构指针，命令值为open时传入的参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

窗口限制：
C10H: 输入分辨率的1/8~8，且最大水平跨度8个显示屏，垂直跨度8个显示屏。单个屏幕上最多可显示4层画面（最多只能开4个窗口）。
C10S: 输入分辨率的1/8~16，且最大水平跨度16个显示屏，垂直跨度8个显示屏。单个屏幕上最多可显示4层画面（最多只能开4个窗口）。


NET_DVR_SearchFaceDB

设备网络SDK开发使用手册

NET_DVR_SearchSnapDB

人脸数据库检索。

LONG NET_DVR_SearchFaceDB(
  LONG                            lUserID,
  LPNET_VCA_SEARCH_FACEDB_COND    lpInBuf,
  fSearchDBCallBack               cbSearchDBCallBack,
  void                            *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 数据库检索条件
cbSearchDBCallBack
[in] 回调函数，查询结果在回调中返回
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fSearchDBCallBack)(
  LONG     lHandle,
  DWORD    dwType,
  DWORD    dwResultNum,
  BYTE     *pBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

lHandle
[out] 句柄，NET_DVR_SearchFaceDB的返回值
dwType
[out] 数据库类型，保留
dwResultNum
[out] 查询结果个数，保留
pBuffer
[out] 存放数据的缓冲区指针，对应结构体NET_VCA_SEARCH_DATARECORD_RESULT
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopSearchDB等接口的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetSearchFaceDBProgress NET_DVR_StopSearchDB


NET_DVR_SearchSnapDB

抓拍数据库检索。

LONG NET_DVR_SearchSnapDB(
  LONG                            lUserID,
  LPNET_VCA_SEARCH_SNAPDB_COND    lpInBuf,
  fSearchDBCallBack               cbSearchDBCallBack,
  void                            *pUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 数据库检索条件
cbSearchDBCallBack
[in] 回调函数，查询结果在回调中返回
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fSearchDBCallBack)(
  LONG     lHandle,
  DWORD    dwType,
  DWORD    dwResultNum,
  BYTE     *pBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

lHandle
[out] 句柄，NET_DVR_SearchSnapDB的返回值
dwType
[out] 数据库类型，保留
dwResultNum
[out] 查询结果个数，保留
pBuffer
[out] 存放数据的缓冲区指针，对应结构体NET_VCA_SEARCH_SNAPRECORD_RESULT
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopSearchDB等接口的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetSearchSnapDBProgress NET_DVR_StopSearchDB


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_GET_CARD_CFG_V50 | 2178 | 获取卡参数(V50扩展，兼容老命令)
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_SEND_DATA

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_CARD_CFG_V50 | 2179 | 设置卡参数(V50扩展，兼容老命令)
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_V50

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_GET_CARD_CFG | 2116 | 获取卡参数(老命令，建议使用V50扩展命令)
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_SEND_DATA

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_CARD_CFG | 2117 | 设置卡参数(老命令，建议使用V50扩展命令)
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_FINGERPRINT_CFG | 2151 | 设置指纹参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_FINGER_PRINT_CFG

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_FINGERPRINT_CFG_V50 | 2184 | 设置指纹参数V50
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_FINGER_PRINT_CFG_V50

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_GET_CARD_PASSWD_CFG | 2161 | 获取卡密码开门使能参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_SEND_DATA

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_CARD_PASSWD_CFG | 2162 | 设置卡密码开门使能参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_PASSWD_CFG
  • 在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。
  • NET_DVR_GET_CARD_CFG获取卡参数或者NET_DVR_GET_CARD_PASSWD_CFG获取卡密码开门使能参数时，pSendBuf为查找条件，查找到的卡参数信息或者卡密码开门使能信息在NET_DVR_StartRemoteConfig设置的回调函数中返回。
  • NET_DVR_SET_CARD_CFG设置卡参数时，pSendBuf为下发的卡参数信息，必须保证卡号是从小到大递增的（可以不连续）而且卡号的整型值不能重复（比如不能同时含有1和01两种卡号），否则将返回失败。
  • 当发送接口失败时，可通过NET_DVR_GetRemoteConfigState获取长连接状态，状态值为NET_DVR_CALLBACK_STATUS_SEND_WAIT则需等待一段时间发送，当状态值为NET_SDK_CALLBACK_STATUS_PROCESSING时，可以再次调用发送接口发送数据。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

NET_DVR_GetRemoteConfigState


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_GET_CARD_CFG | 2116 | 获取卡参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_SEND_DATA

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_CARD_CFG | 2117 | 设置卡参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_GET_CARD_CFG_V50 | 2178 | 获取卡参数（新）
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_SEND_DATA

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_CARD_CFG_V50 | 2179 | 设置卡参数（新）
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_V50

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_FINGERPRINT_CFG | 2151 | 设置指纹参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_FINGER_PRINT_CFG

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_GET_CARD_PASSWD_CFG | 2161 | 获取卡密码开门使能参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_CFG_SEND_DATA

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_SET_CARD_PASSWD_CFG | 2162 | 设置卡密码开门使能参数
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_ACS_SEND_DATA | 0x3 | 门禁主机数据类型 | NET_DVR_CARD_PASSWD_CFG
  • 在调用该接口之前，必须先调用NET_DVR_StartRemoteConfig获取长连接句柄。
  • NET_DVR_GET_CARD_CFG获取卡参数或者NET_DVR_GET_CARD_PASSWD_CFG获取卡密码开门使能参数时，pSendBuf为查找条件，查找到的卡参数信息或者卡密码开门使能信息在NET_DVR_StartRemoteConfig设置的回调函数中返回。
  • NET_DVR_SET_CARD_CFG设置卡参数时，pSendBuf为下发的卡参数信息，必须保证卡号是从小到大递增的（可以不连续）而且卡号的整型值不能重复（比如不能同时含有1和01两种卡号），否则将返回失败。
  • 当发送接口失败时，可通过NET_DVR_GetRemoteConfigState获取长连接状态，状态值为NET_DVR_CALLBACK_STATUS_SEND_WAIT则需等待一段时间发送，当状态值为NET_SDK_CALLBACK_STATUS_PROCESSING时，可以再次调用发送接口发送数据。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

NET_DVR_GetRemoteConfigState


NET_DVR_SendRemoteConfig

发送长连接数据。

BOOL NET_DVR_SendRemoteConfig(
  LONG     lHandle,
  DWORD    dwDataType,
  char     *pSendBuf,
  DWORD    dwBufSize
);

Parameters

lHandle
[in] 长连接句柄，NET_DVR_StartRemoteConfig的返回值
dwDataType
[in] 数据类型，跟长连接接口NET_DVR_StartRemoteConfig的命令参数（dwCommand）有关，详见“Remarks”说明
pSendBuf
[in] 保存发送数据的缓冲区，与dwDataType有关，详见“Remarks”说明
dwBufSize
[in] 发送数据的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

长连接接口NET_DVR_StartRemoteConfig中不同的命令(dwCommand)，对应不同的数据类型(dwDataType)和发送数据内容(pSendBuf对应不同的结构体)，如下表所示：

dwCommand宏定义 | 宏定义值 | 含义
NET_DVR_CAPTURE_DATA_SEARCH | 2554 | 查询离线采集数据集中数据
dwDataType宏定义 | 宏定义值 | 含义 | pSendBuf对应结构体
ENUM_SEND_JSON_DATA | 0x3 | 查询离线采集数据集中数据 | Inbound Data（JSON）报文
ENUM_ACS_INTELLIGENT_IDENTITY_DATA | 0x9 | 下发人脸图片数据 | NET_DVR_FACE_PARAM_CFG
  • 人脸参数下发，使用的是模板还是图片方式，通过能力集可以获取，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FaceParam>中<faceDataType>。如果设备两种方式都支持，可以选择其中一种。
  • Inbound Data（JSON）报文，设备在返回报文的同时，也返回图片，则searchResultPosition 配置为0~totalMatches，maxResults 只能配置为1）。
  • Return（JSON）报文，设备在返回报文的同时，也返回图片，则MatchList 列表只能返回一个采集信息。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_SerialStart

建立透明通道。

LONG NET_DVR_SerialStart(
  LONG                   lUserID,
  LONG                   lSerialPort,
  fSerialDataCallBack    cbSerialDataCallBack,
  DWORD                  dwUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lSerialPort
[in] 串口号：1－232串口；2－485串口
fSerialDataCallBack
[in] 回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fSerialDataCallBack)(
  LONG     lSerialHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  DWORD    dwUser
);

Callback Function Parameters

lSerialHandle
[out] NET_DVR_SerialStart的返回值
pRecvDataBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 数据大小
dwUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SerialSend等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

如果串口接的外设不支持双工（全双工或者半双工），设备不会有数据返回给SDK。

See Also

NET_DVR_SerialStop NET_DVR_SerialSend
NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_SerialStart_V40


NET_DVR_SetAirCondition

控制空调遥控器。

BOOL NET_DVR_SetAirCondition(
  LONG                          lUserID,
  LONG                          l485Index,
  NET_DVR_AIR_CONDITION_PARAM   *lpAirConditionParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
l485Index
[in] 高2字节表示485通道号，低2字节表示槽位号，都从1开始
lpAirConditionParam
[in] 空调遥控器参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_SetAlarmSetupResponseCallBack

设置设备端布防请求回调函数。

BOOL NET_DVR_SetAlarmSetupResponseCallBack(
  ALARMSETUPRESPONSECallBack  fAlarmSetupResponseCallBack,
  void                        *pUser
);

Parameters

fAlarmSetupResponseCallBack
[in] 布防请求回调函数
pUser
[in] 用户数据

Callback Function

typedef LONG(CALLBACK *ALARMSETUPRESPONSECallBack)(
  LONG              lUserID,
  LONG              lAlarmHandle,
  void              *pUser
);

Callback Function Parameters

lUserID
[out] 用户ID
lAlarmHandle
[out] 布防句柄
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

回调函数返回0表示上层通过布防请求验证。

See Also

NET_DVR_CloseAlarmChan_V30


NET_DVR_SetDDrawDevice

设置播放窗口所使用的显卡。

BOOL NET_DVR_SetDDrawDevice(
  LONG     lPlayPort,
  DWORD    nDeviceNum
);

Parameters

lPlayPort
[in] 播放库的句柄，该值由NET_DVR_GetRealPlayerIndex或NET_DVR_GetPlayBackPlayerIndex函数获得
nDeviceNum
[in] 显示设备的序号，从0开始（0表示主屏）

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

当播放库PlayCtrl.dll的版本为6.1以上时该接口失效。

See Also

NET_DVR_GetRealPlayerIndex NET_DVR_GetPlayBackPlayerIndex


NET_DVR_SetDecInfo

配置解码设备参数。

BOOL NET_DVR_SetDecInfo(
  LONG               lUserID,
  LONG               lChannel,
  LPNET_DVR_DECCFG   lpDecoderinfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpDecoderinfo
[in] 解码设备参数指针

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetDecInfo


NET_DVR_SetDecTransPort

设置解码设备透明通道参数。

BOOL NET_DVR_SetDecTransPort(
  LONG                lUserID,
  LPNET_DVR_PORTCFG   lpTransPort
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpTransPort
[in] 解码设备透明通道参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetDecTransPort


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInBuffer
[in] 配置条件缓冲区指针，如流id等
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0- 成功，大于0- 失败
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_VCA_CTRLINFO_CFG | 设置智能控制参数 | dwCount个NET_DVR_VCA_CTRLINFO_COND | dwCount个NET_DVR_VCA_CTRLINFO_CFG | 5023
NET_DVR_SET_ROI_DETECT | 设置ROI检测区域配置 | dwCount个NET_DVR_ROI_DETECT_COND | dwCount个NET_DVR_ROI_DETECT_CFG | 3351
NET_DVR_SET_FACE_DETECT | 设置人脸侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_DETECT_FACE | 3353
NET_DVR_SET_SCENECHANGE_DETECTIONCFG | 设置场景变更报警配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_SCENECHANGE_DETECTION | 3357
NET_DVR_SET_TRAVERSE_PLANE_DETECTION | 设置越界侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_TRAVERSE_PLANE_DETECTION | 3361
NET_DVR_SET_FIELD_DETECTION | 设置区域入侵侦测配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_FIELDDETECION | 3363
NET_DVR_SET_DEFOCUSPARAM | 设置虚焦侦测参数配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_VCA_DEFOCUSPARAM | 3365
NET_DVR_SET_AUDIOEXCEPTIONPARAM | 设置音频异常配置 | dwCount个NET_DVR_CHANNEL_GROUP | dwCount个NET_DVR_AUDIO_EXCEPTION | 3367
NET_DVR_SET_HEATMAP_CFG | 设置热度图参数配置 | dwCount个NET_DVR_HEATMAP_COND | dwCount个NET_DVR_HEATMAP_CFG | 3408

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfig

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfig(
  LONG      lUserID,
  DWORD     dwCommand,
  DWORD     dwCount,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  LPVOID    lpStatusList,
  LPVOID    lpInParamBuffer,
  DWORD     dwInParamBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，参见配置命令
dwCount
[in] 一次要设置的子设备个数
lpInBuffer
[in] 配置条件缓冲区
dwInBufferSize
[in] 配置条件缓冲区长度
lpStatusList
[out] 错误信息列表，和要查询的监控点一一对应，例如lpStatusList[2]就对应lpInBuffer[2]，由用户分配内存， 每个错误信息为4个字节(1个32位无符号整数值)，参数值：0或者1表示成功，其他值为失败对应的错误号
lpInParamBuffer
[in] 需要设置给设备的参数内容，和要查询的监控点一一对应。如果某个监控点对应的lpStatusList信息为大于1的值，表示对应的lpInBuffer设置失败，为0或1则表示设置成功
dwInParamBufferSize
[in] 设置内容缓冲区大小

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpStatusList[n]值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口是带有发送数据的批量设置配置信息的通用接口。lpInBuffer指定需要设置的dwCount个监控点信息，lpOutBuffer保存将要设置的dwCount个监控点的配置信息。

    • 不同的设置功能对应不同的结构体和命令号，如下表所示：

    dwCommand宏定义 | dwCommand含义 | lpInBuffer对应结构体 | lpInParamBuffer对应结构体 | 宏定义值
NET_DVR_SET_EXTERNAL_MATRIX_CFG | 设置矩阵信息 | dwCount个矩阵ID，每个ID为4个字节 | dwCount个NET_DVR_EXTERNAL_MATRIX_CFG | 1620
NET_DVR_SET_OUTPUT_SCREEN_RELATION | 设置显示墙连接配置 | dwCount个显示屏序号，每个序号为4个字节 | dwCount个NET_DVR_DISP_SCREEN | 1622
NET_DVR_SET_DEV_BASEINFO | 设置单个设备信息 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_DEV_BASE_INFO | 1651
NET_DVR_SET_DEV_NETINFO | 设置设备的网络信息 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_NETPARAM | 1653
NET_DVR_SET_SIGNAL_SOURCE_INFO | 设置信号源信息 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_CHAN_INFO | 1655
NET_DVR_ADJUST_PIC_V40 | 图像微调 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_PIC_ADJUST | 1656
NET_DVR_RESTORE_V40 | 恢复默认参数 | dwCount个NET_DVR_DEVICEID_INFO | NULL | 1657
NET_DVR_SET_NET_SIGNAL | 设置网络信号源 | dwCount个NET_DVR_DEVICEID_INFO | dwCount个NET_DVR_NETSIGNAL_INFO | 1658
NET_DVR_REBOOT_V40 | 重启 | dwCount个NET_DVR_DEVICEID_INFO | NULL | 1659
NET_DVR_SET_WALL_WINDOW_V41 | 设置电视墙中的窗口 | dwCount个NET_DVR_WALL_INDEX | dwCount个NET_DVR_WALLWINCFG | 9021
NET_DVR_SET_WALL_SCENE_PARAM_V41 | 设置场景参数 | dwCount个NET_DVR_WALL_INDEX | dwCount个NET_DVR_WALLSCENECFG | 9024

    See Also

    NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDeviceConfigEx

批量设置设备配置信息（带发送数据）。

BOOL NET_DVR_SetDeviceConfigEx(
  LONG                 lUserID,
  DWORD                dwCommand,
  DWORD                dwCount,
  NET_DVR_IN_PARAM     *lpInParam,
  NET_DVR_OUT_PARAM    *lpOutParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
dwCount
[in] 一次要设置的监控点个数，0和1都表示1个监控点信息，2表示2个监控点信息，以此递增，最大64个
lpInParam
[in] 输入参数缓冲区，其中参数取值根据不同的dwCommand而不同，详见“Remarks”说明
lpOutParam
[in] 输出参数缓冲区，其中参数取值根据不同的dwCommand而不同，详见“Remarks”说明

Return Values

TRUE表示成功，但不代表每一个配置都成功，哪一个成功，对应查看lpOutParam->lpStatusList值；FALSE表示全部失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口是带有发送数据的批量设置监控点配置信息的通用接口扩展接口，支持设置接收数据超时时间。

不同的设置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | 宏定义值
NET_DVR_SET_VIDEOWALLWINDOWPOSITION | 设置电视墙窗口参数 | 1736
输入输出缓冲区参数 | 参数取值
lpInParam->struCondBuf.pBuf | 输入条件缓冲区，dwCount 个墙号(组合)，窗口号由设备分配
lpInParam->struCondBuf.nLen | 输入条件缓冲区长度
lpInParam->struInParamBuf.pBuf | 输入参数缓冲区，dwCount个NET_DVR_VIDEOWALLWINDOWPOSITION
lpInParam->struInParamBuf.nLen | 输入参数缓冲区长度
lpInParam->dwRecvTimeout | 数据接收超时时间，填 0 采用接口默认超时
lpOutParam->struOutBuf.pBuf | 输出参数缓冲区，dwCount个窗口号(组合)
lpOutParam->struOutBuf.nLen | 输出参数缓冲区长度
lpOutParam->lpStatusList | 状态缓冲区，对应 dwCount 个参数配置的结果，例如 lpStatusList[2]就对应lpInParam->struInParamBuf.pBuf[2]，由用户分配内存，每个错误信息为4个字节，参数值：0或者1表示成功，其他值为失败对应的错误号

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError


NET_DVR_SetDialParam

设置拨号参数。

BOOL NET_DVR_SetDialParam(
  LONG                     lUserID,
  LPNET_DVR_DIALREQUEST    lpDialRequest,
  LPNET_DVR_DIALPARAM      lpDialParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpDialRequest
[in] 拨号参数请求结构
lpDialParam
[in] 拨号参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDialParam


NET_DVR_SetDspErrMsg_Card

设置解码卡DSP死掉后向主机发送的消息。

BOOL NET_DVR_SetDspErrMsg_Card(
  UINT   nMessage,
  HWND   hWnd
);

Parameters

nMessage
[in] DSP死掉向主机发送的消息
hWnd
[in] 发送消息的窗口

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

用户在调用此接口的流程：我们可以通过 #define WM_MYCOMMAND WM_USER+1 定义一个用户自定义的消息， 这个消息对应的消息处理函数为void OnMyCommand(WPARAM wParam, LPARAM lParam)，其中wParam返回的是解码卡的通道号， 它们之间的映射关系由ON_MESSAGE(WM_MYCOMMAND,OnMyCommand)来实现，此时，我们可以这样调用该函数， NET_DVR_SetDspErrMsg_Card (WM_MYCOMMAND,hWnd)。


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_CARD_RIGHT_WEEK_PLAN | 设置卡权限周计划参数 | 周计划编号，从1开始 | NET_DVR_WEEK_PLAN_CFG | 2127
NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN | 设置卡权限假日计划参数 | 假日计划编号，从1开始 | NET_DVR_HOLIDAY_PLAN_CFG | 2131
NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP | 设置卡权限假日组参数 | 假日组编号，从1开始 | NET_DVR_HOLIDAY_GROUP_CFG | 2135
NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE | 设置卡权限计划模板参数 | 计划模板编号，从1开始 | NET_DVR_PLAN_TEMPLATE | 2139
NET_DVR_SET_CARD_READER_CFG | 设置读卡器参数 | 读卡器编号 | NET_DVR_CARD_READER_CFG | 2141
NET_DVR_SET_EVENT_CARD_LINKAGE_CFG | 设置事件/卡号联动配置参数 | 联动事件编号，从1开始 | NET_DVR_EVENT_CARD_LINKAGE_CFG | 2154

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_Login_V40


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_RULECFG | 设置异常行为识别参数 | 通道号 | NET_VCA_RULECFG | 152
NET_DVR_SET_FACEDETECT_RULECFG | 设置人脸检测规则 | 通道号 | NET_DVR_FACEDETECT_RULECFG | 420
  • 如果获取设备上传的人脸检测结果信息，需要设置报警回调（NET_DVR_SetDVRMessageCallBack_V30）和报警布防（NET_DVR_SetupAlarmChan_V30），在设置的回调中相应的消息类型为COMM_ALARM_FACE。

    • Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_GetDVRConfig


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的配置功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_MIX_AUDIOIN_CFG | 设置混音输入口参数配置 | 通道号 | NET_DVR_MIX_AUDIOIN_CFG | 6352
NET_DVR_SET_MIX_AUDIOOUT_CFG | 设置混音输出口参数配置 | 音频输出口号，从1开始 | NET_DVR_MIX_AUDIOOUT_CFG | 6354
NET_DVR_SET_AUDIOIN_VOLUME_CFG | 设置音频输入口音量调节参数 | 音频输入口号，从1开始 | NET_DVR_VOLUME_CFG | 6356
NET_DVR_SET_AUDIOOUT_VOLUME_CFG | 设置音频输出口音量调节参数 | 音频输出口号，从1开始 | NET_DVR_VOLUME_CFG | 6370

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_ALARMCENTER_NETCFG | 设置报警中心网络参数 | 无效 | NET_DVR_ALARMCENTER_NETCFG | 2716

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_SATELLITETIME | 设置卫星定位参数配置 | 无效 | NET_DVR_SATELLITETIME_CFG | 3710

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_SIP_CFG | 设置IP可视对讲主机SIP服务器参数 | 无效 | NET_DVR_SIP_CFG | 11002
NET_DVR_SET_IP_VIEW_DEVCFG | 设置IP可视对讲主机配置参数 | 无效 | NET_DVR_IP_VIEW_DEVCFG | 11004
NET_DVR_SET_IP_VIEW_AUDIO_CFG | 设置IP可视对讲主机音频参数 | 无效 | NET_DVR_IP_VIEW_AUDIO_CFG | 11006
NET_DVR_SET_IP_VIEW_CALL_CFG | 设置IP可视对讲主机呼叫参数 | 无效 | NET_DVR_IP_VIEW_CALL_CFG | 11008
NET_DVR_SET_AUDIO_LIMIT_ALARM_CFG | 设置声音超限配置参数 | 无效 | NET_IPC_AUDIO_LIMIT_ALARM_CFG | 11010
NET_DVR_SET_BUTTON_DOWN_ALARM_CFG | 设置按钮按下报警配置参数 | 无效 | NET_IPC_BUTTON_DOWN_ALARM_CFG | 11012

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_IVMS_STREAMCFG | 设置智能分析仪(iDS-52xx)前端取流参数 | 通道号 | NET_IVMS_STREAMCFG | 162
NET_DVR_SET_IVMS_BEHAVIORCFG | 设置智能分析仪(iDS-52xx)行为规则参数 | 通道号 | NET_IVMS_BEHAVIORCFG | 176
NET_DVR_SET_IVMS_MASK_REGION | 设置智能分析仪(iDS-52xx)屏蔽区域参数 | 通道号 | NET_IVMS_MASK_REGION_LIST | 172
NET_DVR_SET_IVMS_ENTER_REGION | 设置智能分析仪(iDS-52xx)ATM进入区域参数 | 通道号 | NET_IVMS_ENTER_REGION | 174

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PU_STREAMCFG | 设置iVMS前端取流参数 | 通道号 | NET_DVR_PU_STREAM_CFG | 186

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_DEVICECFG | 设置设备参数 | 无效 | NET_DVR_DEVICECFG | 101
NET_DVR_SET_NETCFG | 设置网络参数 | 无效 | NET_DVR_NETCFG | 103
NET_DVR_SET_PICCFG | 设置图像参数 | 有效 | NET_DVR_PICCFG | 105
NET_DVR_SET_COMPRESSCFG | 设置压缩参数 | 有效 | NET_DVR_COMPRESSIONCFG | 107
NET_DVR_SET_RECORDCFG | 设置录像参数 | 有效 | NET_DVR_RECORD | 109
NET_DVR_SET_DECODERCFG | 设置（云台）解码器参数 | 有效 | NET_DVR_DECODERCFG | 111
NET_DVR_SET_RS232CFG | 设置232串口参数 | 无效 | NET_DVR_RS232CFG | 113
NET_DVR_SET_ALARMINCFG | 设置报警输入参数 | 有效 | NET_DVR_ALARMINCFG | 115
NET_DVR_SET_ALARMOUTCFG | 设置报警输出参数 | 有效 | NET_DVR_ALARMOUTCFG | 117
NET_DVR_SET_TIMECFG | 设置时间参数 | 无效 | NET_DVR_TIME | 119
NET_DVR_SET_PREVIEWCFG | 设置本地预览参数 | 无效 | NET_DVR_PREVIEWCFG | 121
NET_DVR_SET_VIDEOOUTCFG | 设置视频输出参数 | 无效 | NET_DVR_VIDEOOUT | 123
NET_DVR_SET_USERCFG | 设置用户参数 | 无效 | NET_DVR_USER | 125
NET_DVR_SET_EXCEPTIONCFG | 设置异常参数 | 无效 | NET_DVR_EXCEPTION | 127
NET_DVR_SET_ZONEANDDST | 设置时区和夏时制参数 | 无效 | NET_DVR_ZONEANDDST | 129
NET_DVR_SET_SHOWSTRING | 设置叠加字符参数 | 有效 | NET_DVR_SHOWSTRING | 131
NET_DVR_SET_EVENTCOMPCFG | 设置事件触发录像参数 | 有效 | NET_DVR_COMPRESSIONCFG | 133
NET_DVR_SET_AUXOUTCFG | 设置报警触发辅助输出参数 | 无效 | NET_DVR_AUXOUTCFG | 141
NET_DVR_SET_PREVIEWCFG_AUX | 设置辅助预览参数 | 无效 | NET_DVR_PREVIEWCFG | 143
NET_DVR_SET_PICCFG_EX | 设置图像参数（扩展） | 有效 | NET_DVR_PICCFG_EX | 201
NET_DVR_SET_USERCFG_EX | 设置用户参数 | 无效 | NET_DVR_USER_EX | 203
NET_DVR_SET_COMPRESSCFG_EX | 设置压缩参数（扩展） | 有效 | NET_DVR_COMPRESSIONCFG_EX | 205
NET_DVR_SET_NETAPPCFG | 设置网络应用参数(NTP/DDNS) | 无效 | NET_DVR_NETAPPCFG | 223
NET_DVR_SET_NTPCFG | 设置网络应用参数(NTP) | 无效 | NET_DVR_NTPPARA | 225
NET_DVR_SET_DDNSCFG | 设置网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA | 227
NET_DVR_SET_NFSCFG | 设置NFS（网络文件系统）参数 | 无效 | NET_DVR_NFSCFG | 231
NET_DVR_SET_SHOWSTRING_EX | 设置叠加字符参数 | 有效 | NET_DVR_SHOWSTRING_EX | 239
NET_DVR_SET_EMAILPARACFG | 设置网络应用参数(EMAIL) | 无效 | NET_DVR_EMAILCFG | 251
NET_DVR_SET_DDNSCFG_EX | 设置网络应用参数(DDNS) | 无效 | NET_DVR_DDNSPARA_EX | 275
NET_DVR_SET_PTZPOS | 设置IP快球PTZ参数 | 有效 | NET_DVR_PTZPOS | 292
NET_DVR_SET_WIFI_CFG | 设置IP监控设备无线参数 | 无效 | NET_DVR_WIFI_CFG | 306
NET_DVR_SET_WIFI_WORKMODE | 设置IP监控设备网口参数 | 无效 | NET_DVR_WIFI_WORKMODE | 308
NET_DVR_SET_AID_RULECFG | 设置交通事件规则参数 | 无效 | NET_DVR_AID_RULECFG | 404
NET_DVR_SET_TPS_RULECFG | 设置交通统计规则参数 | 无效 | NET_DVR_TPS_RULECFG | 406
NET_DVR_SET_NETCFG_V30 | 设置网络参数 | 无效 | NET_DVR_NETCFG_V30 | 1001
NET_DVR_SET_PICCFG_V30 | 设置图像参数 | 有效 | NET_DVR_PICCFG_V30 | 1003
NET_DVR_SET_RECORDCFG_V30 | 设置录像参数 | 有效 | NET_DVR_RECORD_V30 | 1005
NET_DVR_SET_USERCFG_V30 | 设置用户参数 | 无效 | NET_DVR_USER_V30 | 1007
NET_DVR_SET_CRUISE | 设置巡航参数 | 有效 | NET_DVR_CRUISE_PARA | 1021
NET_DVR_SET_ALARMINCFG_V30 | 设置报警输入参数 | 有效 | NET_DVR_ALARMINCFG_V30 | 1025
NET_DVR_SET_EXCEPTIONCFG_V30 | 设置异常参数 | 无效 | NET_DVR_EXCEPTION_V30 | 1035
NET_DVR_SET_NET_DISKCFG | 设置网络硬盘接入参数 | 无效 | NET_DVR_NET_DISKCFG | 1039
NET_DVR_SET_DECODERCFG_V30 | 设置（RS485)云台解码器参数 | 通道号 | NET_DVR_DECODERCFG_V30 | 1043
NET_DVR_SET_IPPARACFG | 设置IP接入配置参数 | 无效 | NET_DVR_IPPARACFG | 1049
NET_DVR_SET_HDCFG | 设置硬盘管理参数 | 无效 | NET_DVR_HDCFG | 1055
NET_DVR_SET_HDGROUP_CFG | 设置盘组管理参数 | 无效 | NET_DVR_HDGROUP_CFG | 1057
NET_DVR_SET_COMPRESSCFG_AUD | 设置语音对讲音频参数 | 无效 | NET_DVR_COMPRESSION_AUDIO | 1059
NET_DVR_SET_NETCFG_MULTI | 设置多网卡配置参数 | 无效 | NET_DVR_NETCFG_MULTI | 1162
NET_DVR_SET_CCDPARAMCFG | 设置前端参数 | 无效 | NET_DVR_CAMERAPARAMCFG | 1068
NET_DVR_SET_ZEROCHANCFG | 设置零通道压缩参数 | 有效 | NET_DVR_ZEROCHANCFG | 1103
NET_DVR_SET_ZERO_ZOOM | 设置零通道缩放参数 | 有效 | NET_DVR_ZERO_ZOOMCFG | 1106
NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG | 设置时控输出参数 | 无效 | NET_DVR_OUTPUT_SCHEDULE_RULECFG | 2069
NET_VCA_SET_RULECFG_V41 | 设置异常行为识别参数(扩展) | 通道号 | NET_VCA_RULECFG_V41 | 5012
NET_DVR_SET_ALARMHOST_NETCFG | 设置网络参数配置 | 无效 | NET_DVR_ALARMHOST_NETCFG | 2008

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PDC_RULECFG | 设置客流量规则参数 | 通道号 | NET_DVR_PDC_RULE_CFG | 184
NET_DVR_SET_PDC_RULECFG_V41 | 设置客流量规则配置参数（扩展） | 通道号 | NET_DVR_PDC_RULE_CFG_V41 | 5020

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。
NET_DVR_PROGRAM_EXCEPTION | 76 | 程序异常。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_PIC_MODEL_CFG | 设置图片建模配置参数 | 无效 | NET_DVR_PIC_MODEL_CFG | 6197

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_Login_V40


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同命令号（dwCommand）和结构体（lpInBuffer），如下表所示：

、
dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_USERCFG_V30 | 设置用户参数 | 无效 | NET_DVR_USER_V30 | 1007
NET_DVR_SET_LAYOUTCFG | 场景设置 | 4字节表示场景号，场景最多为16个，场景号0~15 | NET_DVR_LAYOUTCFG | 1606
NET_DVR_LAYOUTCTRL | 场景控制 | 4字节表示场景号，场景最多为16个，场景号0~15 | 4字节的变量，为1时表示open，2表示close | 1607
NET_DVR_SET_INPUTSTREAMCFG | 设置输入信号源 | 4字节表示信号源序号，信号源序号范围1~224 | NET_DVR_INPUTSTREAMCFG | 1609
NET_DVR_OUTPUT_SET | 设置输出参数 | 集中式多屏控制器4字节保留；分布式多屏控制器表示墙号 | NET_DVR_OUTPUTCFG | 1610
NET_DVR_SET_OSDCFG | 设置虚拟LED参数 | 虚拟LED序号：集中式多屏控制器4字节表示序号；分布式多屏控制器高2字节表示墙号，低2字节表示序号 | NET_DVR_OSDCFG | 1612
NET_DVR_SET_PLAN | 设置预案 | 预案号， 从1开始。分布式多屏控制器，高2字节表示电视墙号，低2字节表示预案号 | NET_DVR_PLAN_CFG | 1616
NET_DVR_SET_VCS_USER_CFG | 设置用户信息配置 | 用户号，从1开始 | NET_DVR_VCS_USER_INFO | 1624

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

多屏控制器，用户参数配置只支持NET_DVR_USER_INFO_V30中的sUserName和sPassword，其他参数都为无效参数。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的设置功能对应不同的结构体和命令号，如下表所示：

  • 通道号是指设备视频通道号，通过注册设备（NET_DVR_Login_V30）返回的设备信息（NET_DVR_DEVICEINFO_V30）获取模拟通道个数（byChanNum）、模拟通道起始通道号（byStartChan）和设备支持的最大IP通道数（byIPChanNum+ byHighDChanNum*256）、数字通道起始通道号（byStartDChan）。
    • dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_MOTION_TRACK_CFG | 设置自动跟踪参数 | 通道号 | NET_DVR_MOTION_TRACK_CFG | 3229
NET_DVR_SET_PTZ_TRACK_PARAM | 设置PTZ跟踪参数 | 通道号 | NET_DVR_PTZ_TRACK_PARAM | 3264

    Return Values

    TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

    See Also

    NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRConfig

设置设备的配置信息。

BOOL NET_DVR_SetDVRConfig(
  LONG     lUserID,
  DWORD    dwCommand,
  LONG     lChannel,
  LPVOID   lpInBuffer,
  DWORD    dwInBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，详见“Remarks”说明
lChannel
[in] 通道号，不同的命令对应不同的取值，如果该参数无效则置为0xFFFFFFFF即可，详见“Remarks”说明
lpInBuffer
[in] 输入数据的缓冲指针
dwInBufferSize
[in] 输入数据的缓冲长度(以字节为单位)

Remarks

不同的获取功能对应不同的结构体和命令号，如下表所示：

dwCommand宏定义 | dwCommand含义 | lChannel | lpInBuffer对应结构体 | 宏定义值
NET_DVR_SET_FACESNAPCFG | 设置人脸抓拍参数 | 通道号 | NET_VCA_FACESNAPCFG | 5002

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetDVRConfig NET_DVR_GetLastError


NET_DVR_SetDVRMessage

注册接收异常、重连等消息的窗口句柄，Linux下无此接口。

BOOL NET_DVR_SetDVRMessage(
  UINT     nMessage,
  HWND     hWnd
);

Parameters

nMessage
[in] 消息
hWnd
[in] 接收异常信息消息的窗口句柄

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

SDK中检测到异常信息通过消息的方式上传，以下是异常消息的定义。
宏定义 | 宏定义值 | 含义
EXCEPTION_EXCHANGE | 0x8000 | 用户交互时异常（注册心跳超时，心跳间隔为2分钟）
EXCEPTION_AUDIOEXCHANGE | 0x8001 | 语音对讲异常
EXCEPTION_ALARM | 0x8002 | 报警异常
EXCEPTION_PREVIEW | 0x8003 | 网络预览异常
EXCEPTION_SERIAL | 0x8004 | 透明通道异常
EXCEPTION_RECONNECT | 0x8005 | 预览时重连
EXCEPTION_ALARMRECONNECT | 0x8006 | 报警时重连
EXCEPTION_SERIALRECONNECT | 0x8007 | 透明通道重连
SERIAL_RECONNECTSUCCESS | 0x8008 | 透明通道重连成功
EXCEPTION_PLAYBACK | 0x8010 | 回放异常
EXCEPTION_DISKFMT | 0x8011 | 硬盘格式化
EXCEPTION_PASSIVEDECODE | 0x8012 | 被动解码异常
EXCEPTION_EMAILTEST | 0x8013 | 邮件测试异常
EXCEPTION_BACKUP | 0x8014 | 备份异常
PREVIEW_RECONNECTSUCCESS | 0x8015 | 预览时重连成功
ALARM_RECONNECTSUCCESS | 0x8016 | 报警时重连成功
RESUME_EXCHANGE | 0x8017 | 用户交互恢复
NETWORK_FLOWTEST_EXCEPTION | 0x8018 | 网络流量检测异常
EXCEPTION_PICPREVIEWRECONNECT | 0x8019 | 图片预览重连
PICPREVIEW_RECONNECTSUCCESS | 0x8020 | 图片预览重连成功
EXCEPTION_PICPREVIEW | 0x8021 | 图片预览异常
EXCEPTION_MAX_ALARM_INFO | 0x8022 | 报警信息缓存已达上限
EXCEPTION_LOST_ALARM | 0x8023 | 报警丢失
EXCEPTION_PASSIVETRANSRECONNECT | 0x8024 | 被动转码重连
PASSIVETRANS_RECONNECTSUCCESS | 0x8025 | 被动转码重连成功
EXCEPTION_PASSIVETRANS | 0x8026 | 被动转码异常
EXCEPTION_RELOGIN | 0x8040 | 用户重登陆
RELOGIN_SUCCESS | 0x8041 | 用户重登陆成功
EXCEPTION_PASSIVEDECODE_RECONNNECT | 0x8042 | 被动解码重连
EXCEPTION_RELOGIN_FAILED | 0x8044 | 重登陆失败，停止重登陆
EXCEPTION_PREVIEW_RECONNECT_CLOSED | 0x8045 | 关闭预览重连功能
EXCEPTION_ALARM_RECONNECT_CLOSED | 0x8046 | 关闭报警重连功能
EXCEPTION_SERIAL_RECONNECT_CLOSED | 0x8047 | 关闭透明通道重连功能
EXCEPTION_PIC_RECONNECT_CLOSED | 0x8048 | 关闭回显重连功能
EXCEPTION_PASSIVE_DECODE_RECONNECT_CLOSED | 0x8049 | 关闭被动解码重连功能
EXCEPTION_PASSIVE_TRANS_RECONNECT_CLOSED | 0x804a | 关闭被动转码重连功能

应用程序中的消息处理函数实现如下，该函数中的参数wParam表示异常消息类型；lParam表示发生异常的相关索引值。

    void OnMyCommand(WPARAM wParam, LPARAM lParam)
    {
    char tempbuf[256];
    DWORD dwType = wParam;	    //异常消息
    LONG lIndex = lParam;		//出现异常消息的当前操作句柄
    ZeroMemory(tempbuf,256);
    switch(dwType)
    {
    case EXCEPTION_AUDIOEXCHANGE:		//语音对讲时网络异常
      sprintf(tempbuf,"语音对讲时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭语音对讲
        break;
    case EXCEPTION_ALARM:			//报警上传时网络异常
        sprintf(tempbuf,"报警上传时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭报警上传
        break;
    case EXCEPTION_PREVIEW:			//网络预览时异常
        sprintf(tempbuf,"网络预览时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭网络预览
        break;
    case EXCEPTION_SERIAL:			//透明通道传输时异常
        sprintf(tempbuf,"透明通道传输时网络异常!!!");
        TRACE("%s",tempbuf);
        //TODO: 关闭透明通道
        break;
    case EXCEPTION_RECONNECT:			//预览时重连
        break;
    default:
        break;
    }
    };


NET_DVR_SetDVRMessageCallBack

注册回调函数，接收设备报警消息等（同时回调设备IP地址和用户数据，用以区分不同设备）。

BOOL NET_DVR_SetDVRMessageCallBack(
  fMessageCallBack    cbMessageCallBack
  DWORD               dwUser
);

Parameters

cbMessCallBack
[in] 回调函数
dwUser
[in] 用户数据

Callback Function

BOOL(CALLBACK *fMessageCallBack)(
  LONG     lCommand,
  char     *sDVRIP,
  char     *pBuf,
  DWORD    dwBufLen,
  DWORD    dwUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，见下表
宏定义 | 宏定义值 | 含义
COMM_ALARM | 0x1100 | V3.0以下版本支持的设备的报警信息上传
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息上传
COMM_ALARM_PDC | 0x1103 | 客流量统计报警上传
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息上传
COMM_UPLOAD_PLATE_RESULT | 0x2800 | 智能交通摄像机报警上传
COMM_ALARM_V30 | 0x4000 | V3.0以上版本支持的设备的报警信息上传
COMM_IPCCFG | 0x4001 | 混合型DVR在IPC接入配置改变时的报警信息上传
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR在IPC接入配置改变时的报警信息上传（扩展）
sDVRIP
[out] 设备IP地址
pBuf
[out] 报警信息
dwBufLen
[out] 报警信息缓存大小
dwUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口中回调函数的第一个参数（lCommand）和第三个参数（pBuf）是密切关联的，其关系见下表：
消息类型（lCommand） | 上传内容 | pAlarmInfo对应的结构体
COMM_ALARM | V3.0以下版本支持的设备的报警信息 | NET_DVR_ALARMINFO
COMM_ALARM_RULE | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 客流量统计报警上传 | NET_DVR_PDC_ALRAM_INFO
COMM_TRADEINFO | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_UPLOAD_PLATE_RESULT | 智能交通摄像机报警上传 | NET_DVR_PLATE_RESULT
COMM_ALARM_V30 | V3.0以上版本支持的设备的报警信息 | NET_DVR_ALARMINFO_V30
COMM_IPCCFG | 混合型DVR在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 混合型DVR在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31

See Also

NET_DVR_SetupAlarmChan_V30

NET_DVR_SetupAlarmChan

NET_DVR_StartListen

Reference Interface

其他设置报警回调函数的接口可见

NET_DVR_SetDVRMessageCallBack_V30

NET_DVR_SetDVRMessCallBack

NET_DVR_SetDVRMessCallBack_EX

NET_DVR_SetDVRMessCallBack_NEW


NET_DVR_SetDVRMessageCallBack_V30

注册回调函数，接收设备报警消息等。

BOOL NET_DVR_SetDVRMessageCallBack_V30(
  MSGCallBack    fMessageCallBack,
  void           *pUser
);

Parameters

fMessageCallBack
[in] 回调函数
pUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *MSGCallBack)(
  LONG               lCommand,
  NET_DVR_ALARMER    *pAlarmer,
  char               *pAlarmInfo,
  DWORD              dwBufLen,
  void               *pUser
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，不同的报警信息对应不同的类型，通过类型区分是什么报警信息，详见“Remarks”中列表
pAlarmer
[out] 报警设备信息，包括设备序列号、IP地址、登录IUserID句柄等
pAlarmInfo
[out] 报警信息，通过lCommand值判断pAlarmer对应的结构体，详见“Remarks”中列表
dwBufLen
[out] 报警信息缓存大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 通过该接口设置的报警回调函数是全局唯一的，注册多次会覆盖之前的，只有最后设置的回调函数有效，所有设备报警信息都是在同一个回调函数中返回的，通过报警设备信息（pAlarmInfo）区分是哪台设备。
  • 该接口中回调函数的第一个参数（lCommand）和第三个参数（pAlarmInfo）是密切关联的，其关系见下表：
    消息类型（lCommand） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
    智能报警
    COMM_ALARM_RULE | 0x1102 | 异常行为识别信息 | NET_VCA_RULE_ALARM
    COMM_ALARM_PDC | 0x1103 | 客流量统计报警信息 | NET_DVR_PDC_ALRAM_INFO
    COMM_RULE_INFO_UPLOAD | 0x1107 | 事件数据信息 | NET_DVR_RULE_INFO_ALARM
    COMM_ALARM_FACE | 0x1106 | 人脸检测识别报警信息 | NET_DVR_FACEDETECT_ALARM
    COMM_UPLOAD_FACESNAP_RESULT | 0x1112 | 人脸抓拍结果信息 | NET_VCA_FACESNAP_RESULT
    COMM_FACECAPTURE_STATISTICS_RESULT | 0x112a | 人脸抓拍人员统计信息 | NET_DVR_FACECAPTURE_STATISTICS_RESULT
    COMM_SNAP_MATCH_ALARM | 0x2902 | 人脸比对结果信息 | NET_VCA_FACESNAP_MATCH_ALARM
    COMM_ALARM_FACE_DETECTION | 0x4010 | 人脸侦测报警信息 | NET_DVR_FACE_DETECTION
    COMM_ALARM_TARGET_LEFT_REGION | 0x4011 | 教师离开讲台报警 | NET_DVR_TARGET_LEFT_REGION_ALARM
    COMM_PEOPLE_DETECTION_UPLOAD | 0x4014 | 人员侦测信息 | NET_DVR_PEOPLE_DETECTION_RESULT
    COMM_FACE_THERMOMETRY_ALARM | 0x4994 | 人脸测温报警信息 | NET_DVR_FACE_THERMOMETRY_ALARM
    COMM_SIGN_ABNORMAL_ALARM | 0x6120 | 体征异常报警(Json数据结构) | EVENT_JSON
    COMM_ALARM_VQD_EX | 0x1116 | VQD报警信息 | NET_DVR_VQD_ALARM
    COMM_ALARM_VQD | 0x6000 | VQD诊断报警信息 | NET_DVR_VQD_DIAGNOSE_INFO
    COMM_SCENECHANGE_DETECTION_UPLOAD | 0x1130 | 场景变更报警信息 | NET_DVR_SCENECHANGE_DETECTION_RESULT
    COMM_CROSSLINE_ALARM | 0x1131 | 压线报警信息 | NET_DVR_CROSSLINE_ALARM
    COMM_ALARM_AUDIOEXCEPTION | 0x1150 | 声音报警信息 | NET_DVR_AUDIOEXCEPTION_ALARM
    COMM_ALARM_DEFOCUS | 0x1151 | 虚焦报警信息 | NET_DVR_DEFOCUS_ALARM
    COMM_SWITCH_LAMP_ALARM | 0x6002 | 开关灯检测报警信息 | NET_DVR_SWITCH_LAMP_ALARM
    COMM_UPLOAD_HEATMAP_RESULT | 0x4008 | 热度图报警信息 | NET_DVR_HEATMAP_RESULT
    COMM_FIREDETECTION_ALARM | 0x4991 | 火点检测报警信息 | NET_DVR_FIREDETECTION_ALARM
    COMM_THERMOMETRY_DIFF_ALARM | 0x5211 | 温差报警信息 | NET_DVR_THERMOMETRY_DIFF_ALARM
    COMM_THERMOMETRY_ALARM | 0x5212 | 温度报警信息 | NET_DVR_THERMOMETRY_ALARM
    COMM_ALARM_SHIPSDETECTION | 0x4521 | 船只检测报警信息 | NET_DVR_SHIPSDETECTION_ALARM
    智能交通
    COMM_ALARM_AID | 0x1110 | 交通事件报警信息 | NET_DVR_AID_ALARM
    COMM_ALARM_TPS | 0x1111 | 交通参数统计报警信息 | NET_DVR_TPS_ALARM
    COMM_ALARM_TFS | 0x1113 | 交通取证报警信息 | NET_DVR_TFS_ALARM
    COMM_ALARM_TPS_V41 | 0x1114 | 交通参数统计报警信息(扩展) | NET_DVR_TPS_ALARM_V41
    COMM_ALARM_AID_V41 | 0x1115 | 交通事件报警信息扩展 | NET_DVR_AID_ALARM_V41
    COMM_UPLOAD_PLATE_RESULT | 0x2800 | 交通抓拍结果 | NET_DVR_PLATE_RESULT
    COMM_ITS_PLATE_RESULT | 0x3050 | 交通抓拍结果(新报警信息) | NET_ITS_PLATE_RESULT
    COMM_ITS_TRAFFIC_COLLECT | 0x3051 | 交通统计数据上传 | NET_ITS_TRAFFIC_COLLECT
    COMM_ITS_BLOCKLIST_ALARM | 0x3057 | 车辆非授权名单报警上传 | NET_ITS_ECT_BLOCKLIST
    COMM_VEHICLE_CONTROL_LIST_DSALARM | 0x3058 | 车辆授权和非授权名单数据需要同步报警上传 | NET_DVR_VEHICLE_CONTROL_LIST_DSALARM
    COMM_VEHICLE_CONTROL_ALARM | 0x3059 | 授权和非授权名单车辆报警上传 | NET_DVR_VEHICLE_CONTROL_ALARM
    COMM_FIRE_ALARM | 0x3060 | 消防报警上传 | NET_DVR_FIRE_ALARM
    COMM_VEHICLE_RECOG_RESULT | 0x3062 | 车辆二次识别结果上传 | NET_DVR_VEHICLE_RECOG_RESULT
    COMM_ALARM_SENSORINFO_UPLOAD | 0x3077 | 传感器上传信息 | NET_DVR_SENSOR_INFO_UPLOAD
    COMM_ALARM_CAPTURE_UPLOAD | 0x3078 | 抓拍图片上传 | NET_DVR_CAPTURE_UPLOAD
    COMM_SIGNAL_LAMP_ABNORMAL | 0x3080 | 信号灯异常检测上传 | NET_DVR_SIGNALLAMP_DETCFG
    COMM_ALARM_TPS_REAL_TIME | 0x3081 | TPS实时过车数据上传 | NET_DVR_TPS_REAL_TIME_INFO
    COMM_ALARM_TPS_STATISTICS | 0x3082 | TPS统计过车数据上传 | NET_DVR_TPS_STATISTICS_INFO
    COMM_ITS_ROAD_EXCEPTION | 0x4500 | 路口设备异常报警信息 | NET_ITS_ROADINFO
    COMM_ITS_EXTERNAL_CONTROL_ALARM | 0x4520 | 指示灯外控报警信息 | NET_DVR_EXTERNAL_CONTROL_ALARM
    COMM_ITS_GATE_FACE | 0x3053 | 出入口人脸抓拍数据 | NET_ITS_GATE_FACE
    COMM_ITS_GATE_ALARMINFO | 0x3061 | 出入口控制机数据 | NET_DVR_GATE_ALARMINFO
    COMM_GATE_CHARGEINFO_UPLOAD | 0x3064 | 出入口付费信息 | NET_DVR_GATE_CHARGEINFO
    COMM_TME_VEHICLE_INDENTIFICATION | 0x3065 | 出入口控制器TME车辆抓拍信息 | NET_DVR_TME_VEHICLE_RESULT
    COMM_GATE_CARDINFO_UPLOAD | 0x3066 | 出入口卡片信息 | NET_DVR_GATE_CARDINFO
    报警主机
    COMM_ALARM_ALARMHOST | 0x1105 | 网络报警主机报警信息 | NET_DVR_ALARMHOST_ALARMINFO
    COMM_SENSOR_VALUE_UPLOAD | 0x1120 | 模拟量数据实时信息 | NET_DVR_SENSOR_ALARM
    COMM_SENSOR_ALARM | 0x1121 | 模拟量报警信息 | NET_DVR_SENSOR_ALARM
    COMM_SWITCH_ALARM | 0x1122 | 开关量报警信息 | NET_DVR_SWITCH_ALARM
    COMM_ALARMHOST_EXCEPTION | 0x1123 | 故障报警信息 | NET_DVR_ALARMHOST_EXCEPTION_ALARM
    COMM_ALARMHOST_SAFETYCABINSTATE | 0x1125 | 防护舱状态信息 | NET_DVR_ALARMHOST_SAFETYCABINSTATE
    COMM_ALARMHOST_ALARMOUTSTATUS | 0x1126 | 报警输出口或警号状态信息 | NET_DVR_ALARMHOST_ALARMOUTSTATUS
    COMM_ALARMHOST_CID_ALARM | 0x1127 | 报警主机CID报告报警上传 | NET_DVR_CID_ALARM
    COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM | 0x1128 | 报警主机外接设备报警信息 | NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO
    COMM_ALARMHOST_DATA_UPLOAD | 0x1129 | 报警数据信息 | NET_DVR_ALARMHOST_DATA_UPLOAD
    COMM_ALARM_WIRELESS_INFO | 0x122b | 无线网络信息上传 | NET_DVR_ALARMWIRELESSINFO
    其他设备报警
    COMM_ALARM | 0x1100 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以下版本支持的设备) | NET_DVR_ALARMINFO
    COMM_ALARM_V30 | 0x4000 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息(V3.0以上版本支持的设备) | NET_DVR_ALARMINFO_V30
    COMM_ALARM_V40 | 0x4007 | 移动侦测、视频丢失、遮挡、IO信号量等报警信息，报警数据为可变长 | NET_DVR_ALARMINFO_V40
    COMM_IPCCFG | 0x4001 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
    COMM_IPCCFG_V31 | 0x4002 | 混合型DVR、NVR等在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31
    COMM_IPC_AUXALARM_RESULT | 0x2820 | PIR报警、无线报警、呼救报警信息 | NET_IPC_AUXALARM_RESULT
    COMM_ALARM_DEVICE | 0x4004 | CVR设备报警信息，由于通道值大于256而扩展 | NET_DVR_ALARMINFO_DEV
    COMM_ALARM_DEVICE_V40 | 0x4009 | CVR设备报警信息扩展(增加报警信息子结构) | NET_DVR_ALARMINFO_DEV_V40
    COMM_ALARM_CVR | 0x4005 | CVR外部报警信息 | NET_DVR_CVR_ALARM
    COMM_TRADEINFO | 0x1500 | ATM DVR交易信息 | NET_DVR_TRADEINFO
    COMM_ALARM_HOT_SPARE | 0x4006 | 热备异常报警（N+1模式异常报警）信息 | NET_DVR_ALARM_HOT_SPARE
    COMM_ALARM_BUTTON_DOWN_EXCEPTION | 0x1152 | 按钮按下报警信息(IP可视对讲主机) | NET_BUTTON_DOWN_EXCEPTION_ALARM
    COMM_ALARM_ACS | 0x5002 | 门禁主机报警信息 | NET_DVR_ACS_ALARM_INFO
    COMM_SCREEN_ALARM | 0x5000 | 多屏控制器上传的报警信息 | NET_DVR_SCREENALARMCFG
    COMM_ALARM_LCD | 0x5011 | LCD屏幕报警信息 | NET_DVR_LCD_ALARM
    COMM_UPLOAD_VIDEO_INTERCOM_EVENT | 0x1132 | 可视对讲事件记录信息 | NET_DVR_VIDEO_INTERCOM_EVENT
    COMM_ALARM_VIDEO_INTERCOM | 0x1133 | 可视对讲报警信息 | NET_DVR_VIDEO_INTERCOM_ALARM
    COMM_ALARM_DEC_VCA | 0x5010 | 解码器智能解码报警信息 | NET_DVR_DEC_VCA_ALARM
    COMM_GISINFO_UPLOAD | 0x4012 | GIS信息 | NET_DVR_GIS_UPLOADINFO
    COMM_VANDALPROOF_ALARM | 0x4013 | 防破坏报警信息 | NET_DVR_VANDALPROOF_ALARM
    COMM_ALARM_STORAGE_DETECTION | 0x4015 | 存储智能检测报警信息 | NET_DVR_STORAGE_DETECTION_ALARM
    COMM_ALARM_ALARMGPS | 0x1202 | GPS报警信息 | NET_DVR_GPSALARMINFO
    COMM_ALARM_SWITCH_CONVERT | 0x5004 | 交换机报警信息 | NET_DVR_SWITCH_CONVERT_ALARM
    COMM_INQUEST_ALARM | 0x6005 | 审讯主机报警信息 | NET_DVR_INQUEST_ALARM
    COMM_PANORAMIC_LINKAGE_ALARM | 0x5213 | 鹰眼全景联动到位事件信息 | NET_DVR_PANORAMIC_LINKAGE
    COMM_TAG_INFO_ALARM | 0x5215 | 标签信息上传 | NET_DVR_TAG_INFO_ALARM
    COMM_ALARM_EXCEPTION | 0x7fff | 报警异常类型 | NET_ALARM_EXCEPTION

Example

以布防方式设置回调接收报警信息为例

void CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
  int i;
  switch(lCommand)
  {
  case COMM_ALARM:
      {
          NET_DVR_ALARMINFO struAlarmInfo;
          memcpy(&struAlarmInfo, pAlarmInfo, sizeof(NET_DVR_ALARMINFO));
          switch (struAlarmInfo.dwAlarmType)
          {
          case 3: //移动侦测报警
               for (i=0; i<16; i++)   //#define MAX_CHANNUM   16  //最大通道数
               {
                   if (struAlarmInfo.dwChannel[i] == 1)
                   {
                       printf("发生移动侦测报警的通道号 %d\n", i+1);
                   }
               }
          break;
          default:
          break;
          }
       }
  break;
  default:
  break;
  }
}

void main() {

  //---------------------------------------
  // 初始化
  NET_DVR_Init();
  //设置连接时间与重连时间
  NET_DVR_SetConnectTime(2000, 1);
  NET_DVR_SetReconnect(10000, true);

  //---------------------------------------
  // 注册设备
  LONG lUserID;
  NET_DVR_DEVICEINFO_V30 struDeviceInfo;
  lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo);
  if (lUserID < 0)
  {
       printf("Login error, %d\n", NET_DVR_GetLastError());
       NET_DVR_Cleanup();
       return;
  }

  //设置报警回调函数
  NET_DVR_SetDVRMessageCallBack_V30(MessageCallback, NULL);

  //启用布防
  LONG lHandle;
  lHandle = NET_DVR_SetupAlarmChan_V30(lUserID);
  if (lHandle < 0)
  {
      printf("NET_DVR_SetupAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  Sleep(5000);
  //撤销布防上传通道
  if (!NET_DVR_CloseAlarmChan_V30(lHandle))
  {
      printf("NET_DVR_CloseAlarmChan_V30 error, %d\n", NET_DVR_GetLastError());
      NET_DVR_Logout(lUserID);
      NET_DVR_Cleanup();
      return;
  }

  //注销用户
  NET_DVR_Logout(lUserID);
  //释放SDK资源
  NET_DVR_Cleanup();
  return;
}

See Also

NET_DVR_SetupAlarmChan_V41

NET_DVR_StartListen_V30

Reference Interface

扩展接口可见

NET_DVR_SetDVRMessageCallBack_V31

NET_DVR_SetDVRMessageCallBack_V50


NET_DVR_SetDVRMessCallBack

注册回调函数，接收设备报警消息等（同时回调IP地址，用以区分不同设备）。

BOOL NET_DVR_SetDVRMessCallBack(
  fMessCallBack    cbMessCallBack
);

Parameters

cbMessCallBack
[in] 回调函数

Callback Function

BOOL(CALLBACK *fMessCallBack)(
  LONG     lCommand,
  char     *sDVRIP,
  char     *pBuf,
  DWORD    dwBufLen
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，见下表
宏定义 | 宏定义值 | 含义
COMM_ALARM | 0x1100 | V3.0以下版本支持的设备的报警信息上传
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息上传
COMM_ALARM_PDC | 0x1103 | 客流量统计报警上传
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息上传
COMM_UPLOAD_PLATE_RESULT | 0x2800 | 智能交通摄像机报警上传
COMM_ALARM_V30 | 0x4000 | V3.0以上版本支持的设备的报警信息上传
COMM_IPCCFG | 0x4001 | 混合型DVR在IPC接入配置改变时的报警信息上传
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR在IPC接入配置改变时的报警信息上传（扩展）
sDVRIP
[out] 设备的IP地址
pBuf
[out] 报警信息
dwBufLen
[out] 报警信息缓存大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

该接口中回调函数的第一个参数（lCommand）和第三个参数（pBuf）是密切关联的，其关系见下表：
消息类型（lCommand） | 上传内容 | pAlarmInfo对应的结构体
COMM_ALARM | V3.0以下版本支持的设备的报警信息 | NET_DVR_ALARMINFO
COMM_ALARM_RULE | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 客流量统计报警上传 | NET_DVR_PDC_ALRAM_INFO
COMM_TRADEINFO | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_UPLOAD_PLATE_RESULT | 智能交通摄像机报警上传 | NET_DVR_PLATE_RESULT
COMM_ALARM_V30 | V3.0以上版本支持的设备的报警信息 | NET_DVR_ALARMINFO_V30
COMM_IPCCFG | 混合型DVR在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 混合型DVR在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31

See Also

NET_DVR_SetupAlarmChan_V30

NET_DVR_SetupAlarmChan

NET_DVR_StartListen

Reference Interface

其他设置报警回调函数的接口可见

NET_DVR_SetDVRMessageCallBack_V30

NET_DVR_SetDVRMessCallBack_EX

NET_DVR_SetDVRMessCallBack_NEW

NET_DVR_SetDVRMessageCallBack


NET_DVR_SetDVRMessCallBack_EX

注册回调函数，接收设备报警消息等（同时回调登录ID，用以区分不同设备）。

BOOL NET_DVR_SetDVRMessCallBack_EX(
  fMessCallBack_EX    cbMessCallBack
);

Parameters

cbMessCallBack
[in] 回调函数

Callback Function

BOOL(CALLBACK *fMessCallBack_EX)(
  LONG     lCommand,
  LONG     lUserID,
  char     *pBuf,
  DWORD    dwBufLen
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，见下表
宏定义 | 宏定义值 | 含义
COMM_ALARM | 0x1100 | V3.0以下版本支持的设备的报警信息上传
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息上传
COMM_ALARM_PDC | 0x1103 | 客流量统计报警上传
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息上传
COMM_UPLOAD_PLATE_RESULT | 0x2800 | 智能交通摄像机报警上传
COMM_ALARM_V30 | 0x4000 | V3.0以上版本支持的设备的报警信息上传
COMM_IPCCFG | 0x4001 | 混合型DVR在IPC接入配置改变时的报警信息上传
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR在IPC接入配置改变时的报警信息上传（扩展）
lUserID
[out] 用户登录ID，NET_DVR_Login_V40等登录接口的返回值
pBuf
[out] 报警信息
dwBufLen
[out]报警信息缓存大小

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

该接口中回调函数的第一个参数（lCommand）和第三个参数（pBuf）是密切关联的，其关系见下表：
消息类型（lCommand） | 上传内容 | pAlarmInfo对应的结构体
COMM_ALARM | V3.0以下版本支持的设备的报警信息 | NET_DVR_ALARMINFO
COMM_ALARM_RULE | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 客流量统计报警上传 | NET_DVR_PDC_ALRAM_INFO
COMM_TRADEINFO | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_UPLOAD_PLATE_RESULT | 智能交通摄像机报警上传 | NET_DVR_PLATE_RESULT
COMM_ALARM_V30 | V3.0以上版本支持的设备的报警信息 | NET_DVR_ALARMINFO_V30
COMM_IPCCFG | 混合型DVR在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 混合型DVR在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31

See Also

NET_DVR_SetupAlarmChan_V30

NET_DVR_SetupAlarmChan

NET_DVR_StartListen

Reference Interface

其他设置报警回调函数的接口可见

NET_DVR_SetDVRMessageCallBack_V30

NET_DVR_SetDVRMessCallBack

NET_DVR_SetDVRMessCallBack_NEW

NET_DVR_SetDVRMessageCallBack


NET_DVR_SetDVRMessCallBack_NEW

注册回调函数，接收设备报警消息等（同时回调设备IP地址和与设备间连接的设备端口号，用以区分不同设备）。

BOOL NET_DVR_SetDVRMessCallBack_NEW(
  fMessCallBack_NEW    cbMessCallBack
);

Parameters

cbMessCallBack
[in] 回调函数

Callback Function

BOOL(CALLBACK *fMessCallBack_NEW)(
  LONG     lCommand,
  char     *sDVRIP,
  char     *pBuf,
  DWORD    dwBufLen,
  WORD     dwLinkDVRPort
);

Callback Function Parameters

lCommand
[out] 上传的消息类型，见下表
宏定义 | 宏定义值 | 含义
COMM_ALARM | 0x1100 | V3.0以下版本支持的设备的报警信息上传
COMM_ALARM_RULE | 0x1102 | 异常行为识别信息上传
COMM_ALARM_PDC | 0x1103 | 客流量统计报警上传
COMM_TRADEINFO | 0x1500 | ATM DVR交易信息上传
COMM_UPLOAD_PLATE_RESULT | 0x2800 | 智能交通摄像机报警上传
COMM_ALARM_V30 | 0x4000 | V3.0以上版本支持的设备的报警信息上传
COMM_IPCCFG | 0x4001 | 混合型DVR在IPC接入配置改变时的报警信息上传
COMM_IPCCFG_V31 | 0x4002 | 混合型DVR在IPC接入配置改变时的报警信息上传（扩展）
sDVRIP
[out] 设备IP地址
pBuf
[out] 报警信息
dwBufLen
[out] 报警信息缓存大小
dwLinkDVRPort
[out] 与设备间连接的设备端口号

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

Remarks

该接口中回调函数的第一个参数（lCommand）和第三个参数（pBuf）是密切关联的，其关系见下表：
消息类型（lCommand） | 上传内容 | pAlarmInfo对应的结构体
COMM_ALARM | V3.0以下版本支持的设备的报警信息 | NET_DVR_ALARMINFO
COMM_ALARM_RULE | 异常行为识别信息 | NET_VCA_RULE_ALARM
COMM_ALARM_PDC | 客流量统计报警上传 | NET_DVR_PDC_ALRAM_INFO
COMM_TRADEINFO | ATM DVR交易信息 | NET_DVR_TRADEINFO
COMM_UPLOAD_PLATE_RESULT | 智能交通摄像机机报警上传 | NET_DVR_PLATE_RESULT
COMM_ALARM_V30 | V3.0以上版本支持的设备的报警信息 | NET_DVR_ALARMINFO_V30
COMM_IPCCFG | 混合型DVR在IPC接入配置改变时的报警信息 | NET_DVR_IPALARMINFO
COMM_IPCCFG_V31 | 混合型DVR在IPC接入配置改变时的报警信息（扩展） | NET_DVR_IPALARMINFO_V31

See Also

NET_DVR_SetupAlarmChan_V30

NET_DVR_SetupAlarmChan

NET_DVR_StartListen

Reference Interface

其他设置报警回调函数的接口可见

NET_DVR_SetDVRMessageCallBack_V30

NET_DVR_SetDVRMessCallBack

NET_DVR_SetDVRMessCallBack_EX

NET_DVR_SetDVRMessageCallBack


NET_DVR_SetKeyboardUser

设置报警主机键盘用户参数。

BOOL NET_DVR_SetKeyboardUser(
  LONG                      lUserID,
  LONG                      lUserIndex,
  NET_DVR_KEYBOARD_USER     *lpKeyboardUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lUserIndex
[in] 键盘用户索引
lpKeyboardUser
[in] 键盘用户配置参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetKeyboardUser
NET_DVR_Login NET_DVR_Login_V40


NET_DVR_SetPicViewDataCallBack

设置图片回显回调函数。

BOOL NET_DVR_SetPicViewDataCallBack(
  LONG               lPicViewHandle,
  SCREENPICDATACB    fPicDataCallback,
  void               *pUserData
);

Parameters

lPicViewHandle
[in] 图片回显注册消息回调返回的NET_DVR_PICVIEW_CALLBACKPARAM中回显句柄
fPicDataCallback
[in] 数据回调函数
pUserData
[in] 用户数据

Callback Function

typedef LONG(CALLBACK *SCREENPICDATACB)(
  LONG     nScreenPicHandle,
  DWORD    dwDataType,
  BYTE     *pBuffer,
  DWORD    dwBufSize,
  void     *pUser
);

Callback Function Parameters

nScreenPicHandle
[out] 回显句柄
dwDataType
[out] 数据类型
enum _PIC_PREVIEW_DATATYPE_{
  NET_DVR_DATA_BMP  = 0,
  NET_DVR_START_CALLBACK,
  NET_DVR_STREAM_SYSHEAD,
  NET_DVR_STREAM_DATA
}TRAFFIC_SCENE_MODE
NET_DVR_DATA_BMP
BMP图片数据
NET_DVR_START_CALLBACK
起始回调
NET_DVR_STREAM_SYSHEAD
系统头数据
NET_DVR_STREAM_DATA
流数据（包括复合流或音视频分开的视频流数据）
pBuffer
[out] 数据缓冲区
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_PICVIEW_CALLBACKPARAM


NET_DVR_SetPicViewResponseCallBack

设置图片回显消息回调函数。

BOOL NET_DVR_SetPicViewResponseCallBack(
  PicViewCallBack    fPicViewResponseCallBack,
  void               *pUser
);

Parameters

fPicViewResponseCallBack
[in] 图片回显消息回调函数
pUser
[in] 用户数据

Callback Function

typedef LONG(CALLBACK *PicViewCallBack)(
  LPNET_DVR_PICVIEW_CALLBACKPARAM    pStruPicViewParam,
  void                               *pUser
);

Callback Function Parameters

pStruPicViewParam
[out] 图片回显注册消息
pUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_SetPlayDataCallBack

注册回调函数，捕获录像数据。

BOOL NET_DVR_SetPlayDataCallBack(
  LONG                 lPlayHandle,
  fPlayDataCallBack    cbPlayDataCallBack,
  DWORD                dwUser
);

Parameters

lPlayHandle
[in] 播放句柄，NET_DVR_PlayBackByName或NET_DVR_PlayBackByTime的返回值
fPlayDataCallBack
[in] 录像数据回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fPlayDataCallBack)(
  LONG      lPlayHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  DWORD     dwUser
);

Callback Function Parameters

lPlayHandle
[out] 当前的录像播放句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 流数据（包括复合流或音视频分开的视频流数据）
NET_DVR_CHANGE_FORWARD | 10 | 码流改变为正放
NET_DVR_CHANGE_REVERSE | 11 | 码流改变为倒放
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
dwUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。

Remarks

此函数包括开始和停止用户处理SDK捕获的数据，当回调函数cbPlayDataCallBack设为非NULL值时，表示回调和处理数据；当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头，供后续解码使用，之后回调的是压缩的码流。

See Also

NET_DVR_PlayBackByName NET_DVR_PlayBackByTime

NET_DVR_SetPlaybackResponseCallBack

Reference Interface

扩展接口可见
NET_DVR_SetPlayDataCallBack_V40


NET_DVR_SetPositionRule

设置场景位置规则信息参数。

BOOL NET_DVR_SetPositionRule(
  LONG                          lUserID,
  LONG                          lChannel,
  LONG                          lPositionIndex,
  LPNET_DVR_POSITION_RULE_CFG   lpPositionRule
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
lChannel
[in] 通道号
lPositionIndex
[in] 场景索引
lpPositionRule
[in] 场景位置行为规则

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_GetPositionRule


NET_DVR_SetScaleCFG

设置视频输出缩放参数。

BOOL NET_DVR_SetScaleCFG(
  LONG      lUserID,
  DWORD     dwScale
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值
dwScale
[in] 缩放参数：0－否，1－是

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetScaleCFG

Reference Interface

扩展接口可见

NET_DVR_SetScaleCFG_V30


NET_DVR_SetScreenRelation

设置显示屏映射关系。

BOOL NET_DVR_SetScreenRelation(
  LONG                     lUserID,
  LPNET_DVR_DISP_SCREEN    lpScreenInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpScreenInfo
[in] 显示屏映射关系

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetScreenList


NET_DVR_SetSDKLocalConfig

设置SDK本地参数。

BOOL NET_DVR_SetSDKLocalConfig(
  LPNET_DVR_SDKLOCAL_CFG    lpSdkLocalCfg
);

Parameters

lpSdkLocalCfg
[in] SDK本地参数，包括模拟能力集、音频对讲库等启用/禁用

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

模拟能力集默认禁用，调用该接口可以启用模拟能力集，支持获取设备各种能力。如果需要获取能力集（NET_DVR_GetDeviceAbility），建议先调用此接口来启用模拟能力集，并且需要加载LocalXml.zip（要求和SDK库文件放在同一个目录下）。

See Also

NET_DVR_GetSDKLocalConfig


NET_DVR_SetShowMode

设置播放显示模式。

BOOL NET_DVR_SetShowMode(
  DWORD        dwShowType,
  COLORREF     colorKey
);

Parameters

dwShowType
[in] 显示模式（Linux下只支持NORMALMODE模式）
enum{
  NORMALMODE = 0,
  OVERLAYMODE
}
colorKey
[in] 用户设置的透明色，在OVERLAY模式下需要设置，colorKey是一个32位的值0x00bbggrr，最高字节为0，后三个字节分别表示b、g、r的值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 设置播放器显示模式，需在预览之前设置。NORMALMODE模式可以同时显示多窗口，但是对显卡有一定的要求；OVERLAYMODE模式只能同时显示一个窗口，但是对显卡基本没有要求。
  • 透明色相当于一层透视膜，显示的画面只能穿过这种颜色，而其他的颜色将挡住显示的画面，用户应该在显示窗口中涂上这种颜色才能看到显示画面，一般应该使用一种不常用的颜色作为透明色，colorKey是一个32位的值0x00bbggrr，最高字节为0，后三个字节分别表示b、g、r的值。
    播放器有两种显示模式：普通模式和OVERLAY方式，使用OVERLAY模式的优点是：大部分显卡都支持OVERLAY，在一些不支持BLT硬件缩放和颜色转换的显卡上(如SIS系列显卡)使用OVERLAY模式，可以大大降低CPU利用率并提高画面质量(相对于软件实现缩放、颜色转换)。缺点是：同时只能播放一路图象，不能实现大规模集中监控。
    在一块显卡中同一时刻只能有一个OVERLAY表面处于活动状态，如果此时系统中已经有程序使用了OVERLAY，那么播放器就不能再创建OVERLAY表面，它将自动改成普通的模式，并不返回FALSE，一些常用的播放器，例如我们卡的预览都可能使用了OVERLAY表面，同样，如果我们的SDK中使用了OVERALY表面，那么其他的程序将不能再使用OVERLAY表面。
  • V7.x版本的播放库默认采用d3d的显示方式，V6.x版本的播放库采用ddraw的显示方式。Overlay模式只有在ddraw模式下才有，因此现在播放库不支持overlay模式，调用NET_DVR_SetShowMode设置overlay无效。


NET_DVR_SetStandardDataCallBack

注册回调函数，捕获实时码流数据（标准码流）。

BOOL NET_DVR_SetStandardDataCallBack(
  LONG                 lRealHandle,
  fStdDataCallBack     cbStdDataCallBack,
  DWORD                dwUser
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
cbStdDataCallBack
[in] 标准码流回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fStdDataCallBack)(
  LONG      lRealHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  DWORD     dwUser
);

Callback Function Parameters

lRealHandle
[out] 当前的预览句柄
dwDataType
[out] 数据类型
宏定义 | 宏定义值 | 含义
NET_DVR_SYSHEAD | 1 | 系统头数据
NET_DVR_STREAMDATA | 2 | 音视频复合流数据
NET_DVR_STD_VIDEODATA | 4 | 标准视频流数据(标准264、MPEG4)
NET_DVR_STD_AUDIODATA | 5 | 标准音频流数据(G722音频数据)
NET_DVR_PRIVATE_DATA | 112 | 私有数据，包括智能信息叠加等
其他 | 0x00-G711U音频，0x04-G723音频，0x08-G711A音频，0x0b-PCM16音频，0x0e-Mpeg(MP2L2)音频，0x12-G729音频，0x1A-MJPEG视频，0x68-AAC音频，等 | 标准RTP的pyload类型，不做转换，码流解码显示时所有类型对应的数据都需要送入播放库
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
dwUser
[out] 用户数据

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • cbStdDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作，不建议调用该SDK（HCNetSDK.dll）本身的接口。
  • 此函数包括开始和停止用户处理SDK捕获的数据，当回调函数cbStdDataCallBack设为非NULL值时，表示回调和处理数据；当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头，供后续解码使用，之后回调的是标准码流（含12字节的RTP头）。
  • 标准码流回调需要设备支持。

    • See Also

    NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_CALL_WAITTING_CFG | 设置呼叫等待参数配置 | NULL | NET_DVR_CALL_WAITTING_CFG | 2215
NET_DVR_SET_ALARM_LAMP_CFG | 设置警灯参数配置 | NULL | NET_DVR_ALARM_LAMP_CFG | 2218
NET_DVR_SET_VOICE_PROMPTION_CFG | 设置语音提示配置 | NULL | NET_DVR_VOICE_PROMPTION_CFG | 2221
NET_DVR_REGISTER_ALARM_RS485 | RS485重新注册 | NULL | NET_DVR_REGISTER_RS485CFG | 2226
NET_DVR_SET_ALARMIN_TRIGGER | 设置报警主机防区联动配置 | NET_DVR_ALARMIN_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 2231
NET_DVR_SET_EMERGENCY_CALL_HELP_TRIGGER | 设置报警主机紧急求助联动配置 | NET_DVR_ALARMIN_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 2233
NET_DVR_SET_CONSULT_TRIGGER | 设置报警主机业务咨询联动配置 | NET_DVR_ALARMIN_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 2235

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_HUMAN_RECOGNITION_SCHEDULE | 设置人体目标识别布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4380
NET_DVR_SET_HUMAN_RECOGNITION_TRIGGER | 设置人体目标识别联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4382

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_OSD_BATTERY_POWER_CFG | 设置OSD电池电量显示参数 | 4字节(DWORD)通道号 | NET_DVR_OSD_BATTERY_POWER_CFG | 3742
NET_DVR_SET_OIS_CFG | 设置光学防抖配置 | 4字节(DWORD)通道号 | NET_DVR_OIS_CFG | 3642
NET_DVR_SET_SOFTWARE_SERVICE | 设置软件服务配置 | 4字节(DWORD)通道号 | NET_DVR_SOFTWARE_SERVICE_CFG | 3982

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_CLOUD_CFG | 设置云存储配置参数 | NULL | NET_DVR_CLOUD_CFG | 6509
NET_DVR_SET_CLOUD_UPLOADSTRATEGY | 设置云存储上传策略 | NET_DVR_CLOUD_UPLOADSTRATEGY_COND | NET_DVR_CLOUD_UPLOADSTRATEGY | 6512

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_TERMINAL_INPUT_CFG | 设置终端视频会议输入参数 | NULL | NET_DVR_TERMINAL_INPUT_CFG | 9139
NET_DVR_SET_CONFERENCE_REGION | 设置终端会议区域参数 | NULL | NET_DVR_CONFERENCE_REGION | 9142
NET_DVR_SET_TERMINAL_CALL_CFG | 设置终端呼叫参数 | NULL | NET_DVR_TERMINAL_CALL_CFG | 9145
NET_DVR_SET_TERMINAL_GK_CFG | 设置终端注册GK参数 | NULL | NET_DVR_TERMINAL_GK_CFG | 9155

NET_DVR_SET_TERMINAL_INPUT_CFG对应ISAPI中的URL：PUT /ISAPI/VCS/terminals/inputConfig

NET_DVR_SET_TERMINAL_CALL_CFG对应ISAPI中的URL：PUT /ISAPI/VCS/terminals/callConfiguration

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_EAGLEFOCUSING_CALCFG | 设置鹰视聚焦标定配置 | 4字节(DWORD)通道号 | NET_DVR_EAGLEFOCUSING_CALCFG | 3648
NET_DVR_SET_EAGLEFOCUSING_CTRL | 设置鹰视聚焦配置 | 4字节(DWORD)通道号 | NET_DVR_EAGLEFOCUSING_CTRL | 3651

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_RESOLUTION_SWITCH | 设置分辨率模式切换配置 | 4字节(DWORD)通道号 | NET_DVR_RESOLUTION_SWITCH | 3919

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_SLAVECAMERA_CALIB_V51 | 设置从摄像机标定配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_V51 | 8103
NET_DVR_SET_TRACKING | 设置主从跟踪功能相机跟踪配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_TRACKING | 3612
NET_DVR_SET_TRACKINGRATIO_MANUAL | 设置从摄像机手动跟踪倍率 | NET_DVR_SLAVECAMERA_COND | NET_DVR_MANUAL_TRACKRATIO | 3616

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_THSCREEN | 设置温湿度配置参数 | 4字节(DWORD)通道号 | NET_DVR_THSCREEN | 3730
NET_DVR_SET_EXTERNALDEVICE | 设置外设（补光灯等）配置参数 | NULL | NET_DVR_EXTERNALDEVICE | 3724
NET_DVR_SET_SUPPLEMENTLIGHT | 设置内置补光灯配置 | 4字节(DWORD)通道号（补光灯编号） | NET_DVR_BUILTIN_SUPPLEMENTLIGHT | 3729
NET_DVR_SET_REVISE_GPS | 设置校准的GPS经纬度 | 4字节(DWORD)通道号 | NET_DVR_REVISE_GPS_CFG | 3754

Remarks

    NET_DVR_GET_SUPPLEMENTLIGHT命令时，ISAPI 中的 /ISAPI/Image/channels/<ID>/SupplementLight（新增） <ID>为通道号,补光灯编号2 为红外补光，能力参考门禁能力<supplementlightno>

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer、lpXmlBuffer分别对应不同的内容。目前以下命令只支持XML方式（byDataType为1），因此lpInBuffer为NULL，lpXmlBuffer根据不同的命令对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpXmlBuffer | 宏定义值
NET_DVR_SET_ALARM_PROCESS_CFG | 设置报警处理参数 | NULL | AlarmProcess | 5221
NET_DVR_SET_STORAGE_RESOURCE_CFG | 设置存储资源参数 | NULL | StorageResource | 5226
NET_DVR_SET_BLOCKLIST_GROUP_INFO | 设置远程分组列表参数 | NULL | ListGroupInfo | 5229
NET_DVR_SET_BLOCKLIST_GROUP_RECORD_CFG | 设置分组记录参数 | NULL | RecordInfo | 5232
NET_DVR_SET_AREA_MONITOR_CFG | 设置区域监控点参数 | 4个字节(DWORD)区域编号 | AreaMonitor | 5237
NET_DVR_SET_FACE_RECORD | 添加人脸记录 | NULL | FaceRecord | 5246
NET_DVR_SET_FACE_DATABASE | 设置人脸库配置参数 | NULL | FaceDataBase | 5249
NET_DVR_SET_BLOCKLIST_REL_DEV_CFG | 设备关联名单分组关联 | NULL | GroupRelDevInfo | 5252
  • 设备关联名单分组信息通过NET_DVR_GetSTDConfig(命令:NET_DVR_GET_AREA_MONITOR_CFG)获取区域监控点信息时可以获取。
  • 添加人脸记录之前，可以先调用NET_DVR_GetSTDConfig(命令:NET_DVR_DETECT_IMAGE)上传大图检测出里面的人脸子图数据。

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE | 设置区域人数统计布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4390
NET_DVR_SET_FRAMES_PEOPLE_COUNTING_TRIGGER | 设置区域人数统计联动方式配置 | NULL | NET_DVR_EVENT_TRIGGER | 4392

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_CENTRALIZEDCTRL | 设置集中布防参数配置 | 4字节(DWORD)通道号 | NET_DVR_CENTRALIZEDCTRL_CFG | 3702
NET_DVR_SET_VANDALPROOFALARM | 设置防破坏报警参数配置 | 4字节(DWORD)通道号 | NET_DVR_VANDALPROOFALARM_CFG | 3705

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_STORAGEDETECTION_EVENT_TRIGGER | 设置存储健康检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6636
NET_DVR_SET_STORAGEDETECTION_SCHEDULE | 设置存储健康检测布防时间配置 | 4字节(DWORD)硬盘号 | NET_DVR_EVENT_SCHEDULE | 6639
NET_DVR_SET_STORAGEDETECTION_RWLOCK | 设置存储侦测读写锁配置 | NULL | NET_DVR_STORAGE_RWLOCK | 6648
NET_DVR_SET_STORAGEDETECTION_UNLOCK | 设置存储侦测解锁配置 | NULL | NET_DVR_STORAGE_UNLOCK | 6653

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_IPDEVICE_ACTIVATED | 通过NVR激活前端设备 | NULL | NET_DVR_IPDEVICE_ACTIVATE_CFG | 13000


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_WIRELESS_DIAL | 设置无线参数配置 | 4字节(DWORD)网卡号 | NET_DVR_WIRELESSDIAL_CFG | 3579
NET_DVR_SET_WIRELESSDIAL_SCHEDULE | 设置拨号计划配置 | 4字节(DWORD)网卡号 | NET_DVR_WIRELESSDIAL_SCHEDULE | 3582
NET_DVR_SET_GBT28181_SERVICE_CFG | 设置GB28181服务器参数 | NULL | NET_DVR_GB28181_SERVICE_CFG | 6504
NET_DVR_SET_WIRELESSSERVER | 设置WIFI热点参数配置 | 4字节(DWORD)无线网卡号 | NET_DVR_WIRELESSSERVER | 3718
NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG | 设置WIFI热点参数配置(完整版) | 4字节(DWORD)无线网卡号 | NET_DVR_WIRELESSSERVER_FULLVERSION_CFG | 3761
NET_DVR_SET_FTPUPLOAD_CFG | 设置FTP上传信息规整参数 | NULL | NET_DVR_FTPUPLOADCFG | 3784
NET_DVR_SET_MACFILTER_CFG | 设置MAC地址过滤配置 | NULL | NET_DVR_MACFILTER_CFG | 3645

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_RECORD_PASSBACK_BASIC_CFG | 设置回传功能基础配置 | NULL | NET_DVR_REC_PASSBACK_BASIC_CFG | 6250
NET_DVR_SET_RECORD_PASSBACK_HISTORY_PLAN_CFG | 设置回传历史录像计划配置 | NET_DVR_STREAM_INFO | NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG | 6257

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_PERSONDENSITY_TRIGGER | 设置人员密度检测的联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4394
NET_DVR_SET_PERSONDENSITY_SCHEDULE | 设置人员密度检测的布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4397

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_PERSONQUEUE_TRIGGER | 设置人员排队检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4407
NET_DVR_SET_PERSONQUEUE_SCHEDULE | 设置人员排队检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4410

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_FILM_MODE_CFG | 设置电影模式 | NULL | NET_DVR_FILM_MODE_CFG | 6388
NET_DVR_SET_DIRECTED_STRATEGY_CFG | 设置导播策略类型 | NULL | NET_DVR_DIRECTED_STRATEGY_CFG | 6391
NET_DVR_SET_FRAME_CFG | 设置画面边框 | NET_DVR_FRAME_COND | NET_DVR_FRAME_CFG | 6394
NET_DVR_SET_AUDIO_EFFECTIVE_CFG | 设置音频优化参数 | 4字节(DWORD)通道号 | NET_DVR_AUDIO_EFFECTIVE_CFG | 6397
NET_DVR_SET_RECORD_VIDEO_CFG | 设置录制视频参数 | NULL | NET_DVR_RECORD_VIDEO_CFG | 6400
NET_DVR_RECORDING_PUBLISH_FILE | 文件发布 | 4字节(DWORD)通道号 | NET_DVR_RECORDING_PUBLISH_FILE_CFG | 6421
NET_DVR_SET_RTMP_CFG | 设置RTMP参数 | NET_DVR_RTMP_COND | NET_DVR_RTMP_CFG | 6426
NET_DVR_SET_BACKGROUND_PIC_INFO | 设置哪张图片作为背景图片 | NULL | NET_DVR_BACKGROUND_PIC_INFO | 6431
NET_DVR_SET_IMAGE_DIFF_DETECTION_CFG | 设置图像差分检测参数 | 通道号 | NET_DVR_IMAGE_DIFF_DETECTION_CFG | 6438
NET_DVR_SET_RECORDING_PUBLISH_FILE_INFO | 设置发布文件信息参数 | NET_DVR_RECORDING_PUBLISH_FILE_COND | NET_DVR_RECORDING_PUBLISH_FILE_INFO | 6441
NET_DVR_ADJUST_BV_CALIB | 设置双目标定微调参数 | NET_PTZ_INFO | NET_DVR_BV_CALIB_POSITION | 4162
NET_DVR_SET_HUMAN_CALIB | 设置人体坐标标定配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_CFG | 4164

NET_DVR_ADJUST_BV_CALIB，对应ISAPI中的/ISAPI/masterSlaveTracking/channels//adjustBinocularCalib

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_SAFETY_HELMET_TRIGGER | 设置安全帽检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 3987
NET_DVR_SET_SAFETY_HELMET_SCHEDULE | 设置安全帽检测布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 3990

对应ISAPI中的URL： /ISAPI/Event/schedules/safetyHelmetDetection/，协议中将通道号1转换成ID，如：safetyHelmetDetection-1。

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_SHIPSDETECTION_EVENT_TRIGGER | 设置船只检测联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6666
NET_DVR_SET_SHIPSDETECTION_SCHEDULE | 设置船只检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 6664
NET_DVR_SET_SHIPSDETECTION_CFG | 设置船只检测配置 | 4字节(DWORD)通道号 | NET_DVR_SHIPSDETECTION_CFG | 6655

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_SIGN_ABNORMAL_TRIGGER | 设置体征异常联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4151

NET_DVR_SET_SIGN_ABNORMAL_TRIGGER 对应ISAPI中的URL：PUT /ISAPI/Event/triggers/，协议中将体征仪编号1转换成ID，如：signAbnormal-1。

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
进入区域侦测配置 |  |  |  |
NET_DVR_SET_REGION_ENTR_DETECTION | 设置进入区域配置 | 4字节(DWORD)通道号 | NET_DVR_REGION_ENTRANCE_DETECTION | 3504
NET_DVR_SET_REGION_ENTR_REGION | 设置进入区域的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_REGIONENTRANCE_REGION | 3506
NET_DVR_SET_REGION_ENTR_TRIGGER | 设置进入区域联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3508
NET_DVR_SET_REGION_ENTR_SCHEDULE | 设置进入区域布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3510
离开区域侦测配置 |  |  |  |
NET_DVR_SET_REGION_EXITING_DETECTION | 设置离开区域配置 | 4字节(DWORD)通道号 | NET_DVR_REGION_EXITING_DETECTION | 3513
NET_DVR_SET_REGION_EXITING_REGION | 设置离开区域的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_REGIONEXITING_REGION | 3515
NET_DVR_SET_REGION_EXIT_TRIGGER | 设置离开区域联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3517
NET_DVR_SET_REGION_EXIT_SCHEDULE | 设置离开区域布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3519
徘徊侦测配置 |  |  |  |
NET_DVR_SET_LOITERING_DETECTION | 设置徘徊侦测配置 | 4字节(DWORD)通道号 | NET_DVR_LOITERING_DETECTION | 3522
NET_DVR_SET_LOITERING_REGION | 设置徘徊的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_LOITERING_REGION | 3524
NET_DVR_SET_LOITERING_TRIGGER | 设置徘徊联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3526
NET_DVR_SET_LOITERING_SCHEDULE | 设置徘徊布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3528
人员聚集侦测配置 |  |  |  |
NET_DVR_SET_GROUP_DETECTION | 设置人员聚集侦测配置 | 4字节(DWORD)通道号 | NET_DVR_GROUP_DETECTION | 3531
NET_DVR_SET_GROUPDETECTION_REGION | 设置人员聚集的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_GROUPDETECTION_REGION | 3533
NET_DVR_SET_GROUPDETECTION_TRIGGER | 设置人员聚集联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3535
NET_DVR_SET_GROUPDETECTION_SCHEDULE | 设置人员聚集布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3537
快速运动侦测配置 |  |  |  |
NET_DVR_SET_RAPIDMOVE_DETECTION | 设置快速运动侦测配置 | 4字节(DWORD)通道号 | NET_DVR_RAPIDMOVE_DETECTION | 3540
NET_DVR_SET_RAPIDMOVE_REGION | 设置快速运动的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_RAPIDMOVE_REGION | 3542
NET_DVR_SET_RAPIDMOVE_TRIGGER | 设置快速运动联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3544
NET_DVR_SET_RAPIDMOVE_SCHEDULE | 设置快速运动的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3546
停车侦测配置 |  |  |  |
NET_DVR_SET_PARKING_DETECTION | 设置停车侦测配置 | 4字节(DWORD)通道号 | NET_DVR_PARKING_DETECTION | 3549
NET_DVR_SET_PARKING_REGION | 设置停车侦测的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_PARKING_REGION | 3551
NET_DVR_SET_PARKING_TRIGGER | 设置停车侦测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3553
NET_DVR_SET_PARKING_SCHEDULE | 设置停车侦测的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3555
进入物品遗留侦测配置 |  |  |  |
NET_DVR_SET_UNATTENDED_BAGGAGE_DETECTION | 设置物品遗留侦测配置 | 4字节(DWORD)通道号 | NET_DVR_UNATTENDED_BAGGAGE_DETECTION | 3558
NET_DVR_SET_UNATTENDED_BAGGAGE_REGION | 设置物品遗留侦测的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_UNATTENDED_BAGGAGE_REGION | 3560
NET_DVR_SET_UNATTENDED_BAGGAGE_TRIGGER | 设置物品遗留侦测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3562
NET_DVR_SET_UNATTENDED_BAGGAGE_SCHEDULE | 设置物品遗留侦测的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3564
物品拿取侦测配置 |  |  |  |
NET_DVR_SET_ATTENDEDBAGGAGE_DETECTION | 设置物品拿取侦测配置 | 4字节(DWORD)通道号 | NET_DVR_ATTENDED_BAGGAGE_DETECTION | 3567
NET_DVR_SET_ATTENDEDBAGGAGE_REGION | 设置物品拿取侦测的单个区域配置 | NET_DVR_SMART_REGION_COND | NET_DVR_ATTENDED_BAGGAGE_REGION | 3569
NET_DVR_SET_ATTENDEDBAGGAGE_TRIGGER | 设置物品拿取侦测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3571
NET_DVR_SET_ATTENDEDBAGGAGE_SCHEDULE | 设置物品拿取侦测的布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3573
授权和非授权名单参数配置 |  |  |  |
NET_DVR_SET_VEHICLE_BLOCKLIST_SCHEDULE | 设置非授权名单布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 6623
NET_DVR_SET_VEHICLE_BLOCKLIST_EVENT_TRIGGER | 设置非授权名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6627
NET_DVR_SET_VEHICLE_ALLOWLIST_SCHEDULE | 设置授权名单布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 6625
NET_DVR_SET_VEHICLE_ALLOWLIST_EVENT_TRIGGER | 设置授权名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6629
NET_DVR_SET_VEHICLE_ALLLIST_EVENT_TRIGGER | 设置全部车辆检测名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6632
NET_DVR_SET_VEHICLE_OTHERLIST_EVENT_TRIGGER | 设置其他车辆检测名单布防联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 6634
区域人数统计配置 |  |  |  |
NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE | 设置区域人数统计布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4391
NET_DVR_SET_ATTENDEDBAGGAGE_SCHEDULE | 设置区域人数统计联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4392
学生起立检测配置 |  |  |  |
NET_DVR_SET_STUDENTS_STOODUP_SCHEDULE_CAPABILITIES | 设置学生起立检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4400
NET_DVR_SET_STUDENTS_STOODUP_TRIGGER | 设置学生起立检测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4387
其他参数配置 |  |  |  |
NET_DVR_SET_PTZ_NOTIFICATION | 设置事件联动PTZ配置 | NET_DVR_PTZ_NOTIFICATION_COND | NET_DVR_PTZ_NOTIFICATION_CFG | 8202
NET_DVR_SET_REGION_CLIP | 设置区域裁剪配置 | NET_DVR_REGION_CLIP_COND | NET_DVR_REGION_CLIP_CFG | 3576
NET_DVR_SET_LITESTORAGE | 设置轻存储配置 | 4字节(DWORD)通道号 | NET_DVR_LITESTORAGE | 3595
NET_DVR_SET_SMARTCALIBRATION_CFG | 设置Smart行为标定过滤尺寸功能 | NET_DVR_SMARTCALIBRATION_COND | NET_DVR_SMARTCALIBRATION_CFG | 3911
 | XXXXXXXXXXXXXXXXXX |  |  |

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_ALARMCTRL_CFG | 设置报警控制 | 4字节(DWORD)通道号 | NET_DVR_ALARMCTRL_CFG | 3147
NET_DVR_SET_PXOFFLINE_CFG | 设置停车场票箱脱机参数配置 | 4字节(DWORD)通道号 | NET_DVR_PXOFFLINE_CFG | 3653
NET_DVR_SET_PAPERCHARGEINFO | 设置停车场出入口纸票信息下发 | 4字节(DWORD)通道号 | NET_DVR_PAPERCHARGEINFO_CFG | 3656
NET_DVR_SET_PARKINGSAPCE_INFO | 设置停车场出入口停车位信息下发 | 4字节(DWORD)通道号 | NET_DVR_PARKINGSAPCE_CFG | 3658
NET_DVR_SET_CHARGE_ACCOUNTINFO | 停车场出入口停车费用下发播报 | 4字节(DWORD)通道号 | NET_DVR_CHARGEACCOUNT_CFG | 3662
NET_DVR_SET_PXMULTICTRL_CFG | 设置停车场票箱从属设备多角度参数 | 4字节(DWORD)通道号 | NET_DVR_PXMULTICTRL_CFG | 3663
NET_DVR_SET_TME_CHARGERULE | 设置停车场出入口车卡收费规则参数 | NET_DVR_ENTRANCE_CHARGE_COND | ChargeRuleInfo | 3666
NET_DVR_SET_ILLEGALCARDFILTERING_CFG | 设置停车场票箱参数配置 | 4字节(DWORD)通道号 | NET_DVR_ILLEGALCARDFILTERING_CFG | 3670
NET_DVR_SET_LEDDISPLAY_CFG | 设置LED屏幕显示参数 | 4字节(DWORD)通道号 | NET_DVR_LEDDISPLAY_CFG | 3672
NET_DVR_SET_VOICEBROADCAST_CFG | 设置语音播报控制参数 | 4字节(DWORD)通道号 | NET_DVR_VOICEBROADCAST_CFG | 3675
NET_DVR_SET_PAPERPRINTFORMAT_CFG | 设置纸票打印格式参数 | 4字节(DWORD)通道号 | NET_DVR_PAPERPRINTFORMAT_CFG | 3678
NET_DVR_SET_LOCKGATE_CFG | 设置智能锁闸参数配置 | 4字节(DWORD)通道号 | NET_DVR_LOCKGATE_CFG | 3681
NET_DVR_SET_TMEVOICE_CFG | 设置语音参数配置 | 4字节(DWORD)通道号 | NET_DVR_TMEVOICE_CFG | 3687

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer、lpXmlBuffer分别对应不同的内容。目前以下命令只支持XML方式（byDataType为1），因此lpInBuffer为NULL，lpXmlBuffer根据不同的命令对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpXmlBuffer | 宏定义值
NET_DVR_SET_SOFTIO_TRIGGER | 设置SoftIO联动配置 | NULL | NET_DVR_EVENT_TRIGGER | 4184
NET_DVR_SET_SOFTIO_SCHEDULE | 设置SoftIO布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4187

NET_DVR_SET_SOFTIO_SCHEDULE 对应ISAPI中的URL：PUT /ISAPI/Event/schedules/softIO/<ID>，协议中将通道号1转换成ID，如：softIO-1。

NET_DVR_SET_SOFTIO_TRIGGER 对应ISAPI中的URL：PUT /ISAPI/Event/triggers/<ID>，协议中将通道号1转换成ID，如：softIO-1。

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer、lpXmlBuffer分别对应不同的内容。目前以下命令只支持XML方式（byDataType为1），因此lpInBuffer为NULL，lpXmlBuffer根据不同的命令对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpXmlBuffer | 宏定义值
NET_DVR_SET_SOFTIO_SCHEDULE | 设置SoftIO布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4187

NET_DVR_GET_SOFTIO_SCHEDULE 对应ISAPI中的URL：GET /ISAPI/Event/schedules/softIO/，协议中将通道号1转换成ID，如：softIO-1。

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_GetSTDConfig

获取设备的配置信息。

BOOL NET_DVR_GetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

获取配置参数时，lpConfigParam结构体里面的lpInBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpOutBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpOutBuffer | 宏定义值
NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE | 获取学生起立布防时间配置 | NULL | NET_DVR_EVENT_SCHEDULE | 4400
NET_DVR_SET_FRAMES_PEOPLE_COUNTING_TRIGGER | 获取学生起立联动方式配置 | NULL | NET_DVR_EVENT_TRIGGER | 4387

对应/ISAPI/Event/triggers/<ID>，其中<ID>表示的内容是:视频通道号。例如：第一通道的区域人数统计布防时间配置：/ISAPI/Event/triggers/1。

对应/ISAPI/Event/schedules/studentsStoodUp/<ID>，其中<ID>表示的内容是:视频通道号。例如：第一通道的区域人数统计联动触发配置：/ISAPI/Event/schedules/studentsStoodUp/1。


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_FIREDETECTION | 设置火点检测参数 | 4字节(DWORD)通道号 | NET_DVR_FIREDETECTION_CFG | 3637
NET_DVR_SET_FIREDETECTION_TRIGGER | 设置火点检测联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3639
NET_DVR_SET_LOWPOWER | 设置低功耗配置 | 4字节(DWORD)通道号 | NET_DVR_LOWPOWER | 3733
NET_DVR_SET_ZOOMLINKAGE | 设置变倍联动配置 | 4字节(DWORD)通道号 | NET_DVR_ZOOMLINKAGE | 3736
NET_DVR_SET_MANUALRANGING | 设置手动测距参数 | 4字节(DWORD)通道号 | NET_DVR_MANUALRANGING_CFG | 6677
NET_DVR_SET_THERMOMETRY_BASICPARAM | 设置测温基本参数配置 | 4字节(DWORD)通道号 | NET_DVR_THERMOMETRY_BASICPARAM | 3622
NET_DVR_SET_THERMOMETRY_PRESETINFO | 设置预置点关联测温信息配置 | NET_DVR_THERMOMETRY_COND | NET_DVR_THERMOMETRY_PRESETINFO | 3625
NET_DVR_SET_THERMOMETRY_ALARMRULE | 设置预置点测温报警规则配置 | NET_DVR_THERMOMETRY_COND | NET_DVR_THERMOMETRY_ALARMRULE | 3628
NET_DVR_SET_THERMOMETRY_DIFFCOMPARISON | 设置预置点温差报警规则配置 | NET_DVR_THERMOMETRY_COND | NET_DVR_THERMOMETRY_DIFFCOMPARISON | 3631
NET_DVR_SET_THERMOMETRY_TRIGGER | 设置测温联动配置 | NET_DVR_THERMOMETRY_TRIGGER_COND | NET_DVR_EVENT_TRIGGER | 3633
NET_DVR_SET_BAREDATAOVERLAY_CFG | 设置热成像裸数据叠加 | 4字节(DWORD)通道号 | NET_DVR_BAREDATAOVERLAY_CFG | 6661
NET_DVR_SET_THERMINTELL | 设置热成像智能互斥配置参数 | 4字节(DWORD)通道号 | NET_DVR_THERMINTELL_PARAM | 6713
NET_DVR_SET_MANUALDEICING | 设置手动除冰 | 4字节(DWORD)通道号 | NET_DVR_MANUALDEICING_CFG | 6679
NET_DVR_SET_FIREDETECTION_SCHEDULE | 设置烟雾检测布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 6673
NET_DVR_SET_THERMALPOWER | 设置相机电源配置参数 | NULL | NET_DVR_THERMALPOWER_PARAM | 6691
NET_DVR_SET_PTZABSOLUTEEX | 设置高精度PTZ绝对位置配置 | 4字节(DWORD)通道号 | NET_DVR_PTZABSOLUTEEX_CFG | 6697
NET_DVR_SET_MANUALTHERM | 设置手动测温数据设置 | 4字节(DWORD)通道号 | NET_SDK_MANUAL_THERMOMETRY | 6708
NET_DVR_SET_MANUALTHERM_BASICPARAM | 设置手动测温基本参数 | 4字节(DWORD)通道号 | NET_SDK_MANUALTHERM_BASICPARAM | 6716
NET_DVR_SET_FIRESHIELDMASK_CFG | 设置火点区域屏蔽参数 | 4字节(DWORD)通道号 | NET_SDK_FIRESHIELDMASK_CFG | 6723
NET_DVR_SET_SMOKESHIELDMASK_CFG | 设置烟雾区域屏蔽参数 | 4字节(DWORD)通道号 | NET_SDK_SMOKESHIELDMASK_CFG | 6726
NET_DVR_SET_THERMOMETRY_MODE | 设置测温模式参数 | 4字节(DWORD)通道号 | NET_DVR_THERMOMETRY_MODE | 6766
NET_DVR_SET_THERMAL_PIP | 设置热成像画中画配置参数 | 4字节(DWORD)通道号 | NET_DVR_THERMAL_PIP | 6769
NET_DVR_SET_THERMAL_INTELRULE_DISPLAY | 设置热成像智能规则显示参数 | 4字节(DWORD)通道号 | NET_DVR_THERMAL_INTELRULE_DISPLAY | 6772
NET_DVR_SET_CURRENT_LOCK | 设置电流锁定配置参数 | NULL | NET_DVR_CURRENT_LOCK | 6776

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_SLAVECAMERA | 设置从摄像机IP信息配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CFG | 3601
NET_DVR_SET_SLAVECAMERA_CALIB | 设置从摄像机标定配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_CFG | 3605
NET_DVR_SET_SLAVECAMERA_CALIB_V50 | 设置从摄像机标定配置(扩展) | NET_DVR_SLAVECAMERA_COND | NET_DVR_SLAVECAMERA_CALIB_V50 | 3615
NET_DVR_SET_TRACKING | 设置主从跟踪功能相机跟踪配置 | NET_DVR_SLAVECAMERA_COND | NET_DVR_TRACKING | 3612
NET_DVR_SET_TRACKINGRATIO_MANUAL | 设置从摄像机手动跟踪倍率 | NET_DVR_SLAVECAMERA_COND | NET_DVR_MANUAL_TRACKRATIO | 3616

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_SECURITY_QUESTION_CFG | 设置设备安全问题 | NULL | NET_DVR_SECURITY_QUESTION_CFG | 4366

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

  • 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_POSINFO_OVERLAY | 设置POS叠加参数 | 4字节(DWORD)通道号 | NET_DVR_POSINFO_OVERLAY | 3960

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_VIDEO_IMAGE_DB_CFG | 设置视图库信息 | NULL | NET_DVR_VIDEO_IMG_DB_CFG | 6602

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_FACECONTRAST_TRIGGER | 设置人脸比对联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 3966
NET_DVR_SET_FACECONTRAST_SCHEDULE | 设置人脸比对布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 3969
NET_DVR_SET_BLOCKLIST_FACECONTRAST_TRIGGER | 设置非授权名单人脸比对联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4369
NET_DVR_SET_BLOCKLIST_FACECONTRAST_SCHEDULE | 设置非授权名单人脸比对布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4374
NET_DVR_SET_ALLOWLIST_FACECONTRAST_TRIGGER | 设置授权名单人脸比对联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4371
NET_DVR_SET_ALLOWLIST_FACECONTRAST_SCHEDULE | 设置授权名单人脸比对布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4377
NET_DVR_SET_HFPD_TRIGGER | 设置高频人员侦测联动配置 | 无效 | NET_DVR_EVENT_TRIGGER | 4189
NET_DVR_SET_HFPD_SCHEDULE | 设置高频人员侦测布防时间配置（对应ISAPI协议中/ISAPI/Event/schedules/HFPD） | 无效 | NET_DVR_EVENT_SCHEDULE | 4192

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_FACELIB_TRIGGER | 设置人脸比对库联动方式配置 | NET_DVR_FACELIB_GUARD_COND | NET_DVR_EVENT_TRIGGER | 3963
NET_DVR_SET_FACELIB_SCHEDULE | 设置人脸比对库布防时间配置 | NET_DVR_FACELIB_GUARD_COND | NET_DVR_EVENT_SCHEDULE | 3978

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetSTDConfig

设置设备的配置信息。

BOOL NET_DVR_SetSTDConfig(
  LONG                    lUserID,
  DWORD                   dwCommand,
  LPNET_DVR_STD_CONFIG    lpConfigParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 设备配置命令，具体定义见“Remarks”说明
lpConfigParam
[in&out] 配置输入输出参数，不同的配置功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设置配置参数时，lpConfigParam结构体里面的lpOutBuffer无效，设为NULL。对于不同的配置功能（dwCommand），lpConfigParam中的lpCondBuffer、lpInBuffer分别对应不同的内容，具体如下表所示：

dwCommand宏定义 | 含义 | lpCondBuffer | lpInBuffer | 宏定义值
NET_DVR_SET_FACESNAP_TRIGGER | 设置人脸抓拍联动配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_TRIGGER | 4162
NET_DVR_SET_FACESNAP_SCHEDULE | 设置人脸抓拍布防时间配置 | 4字节(DWORD)通道号 | NET_DVR_EVENT_SCHEDULE | 4165

See Also

NET_DVR_GetSTDConfig NET_DVR_Login_V40


NET_DVR_SetupAlarmChan

建立报警上传通道，获取报警等信息。

LONG NET_DVR_SetupAlarmChan(
  LONG   lUserID
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_30的返回值

Return Values

-1表示失败，其他值作为NET_DVR_CloseAlarmChan函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_DVRNORESOURCE | 28 | 设备资源不足。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

启动布防前，需要调用注册回调函数的接口（仅需按需求调用NET_DVR_SetDVRMessageCallBack_V30、NET_DVR_SetDVRMessCallBack、NET_DVR_SetDVRMessCallBack_EX、NET_DVR_SetDVRMessCallBack_NEW和NET_DVR_SetDVRMessageCallBack其中的一个）才能获取到上传的报警等信息。

See Also

NET_DVR_CloseAlarmChan

NET_DVR_Login NET_DVR_Login_V40

NET_DVR_SetDVRMessageCallBack_V30

NET_DVR_SetDVRMessCallBack

NET_DVR_SetDVRMessCallBack_EX

NET_DVR_SetDVRMessCallBack_NEW

NET_DVR_SetDVRMessageCallBack

Reference Interface

扩展接口可见

NET_DVR_SetupAlarmChan_V30


NET_DVR_SetupAlarmChan_V30

建立报警上传通道，获取报警等信息。

LONG NET_DVR_SetupAlarmChan_V30(
  LONG   lUserID
);

Parameters

lUserID
[in] NET_DVR_Login或者NET_DVR_Login_V30的返回值

Return Values

-1表示失败，其他值作为NET_DVR_CloseAlarmChan_V30函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_DVRNORESOURCE | 28 | 设备资源不足。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_MAX_NUM | 46 | 个数达到最大。分配的注册连接数、预览连接数超过SDK支持的最大数。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

使用该接口支持上传V3.0以上版本支持的设备的报警结构。启动布防前，需要调用注册回调函数的接口（仅需按需求调用NET_DVR_SetDVRMessageCallBack_V30、NET_DVR_SetDVRMessCallBack、NET_DVR_SetDVRMessCallBack_EX、NET_DVR_SetDVRMessCallBack_NEW和NET_DVR_SetDVRMessageCallBack其中的一个）才能获取到上传的报警等信息。

See Also

NET_DVR_CloseAlarmChan_V30
NET_DVR_Login NET_DVR_Login_V40
NET_DVR_SetDVRMessageCallBack_V30
NET_DVR_SetDVRMessCallBack
NET_DVR_SetDVRMessCallBack_EX
NET_DVR_SetDVRMessCallBack_NEW
NET_DVR_SetDVRMessageCallBack

Reference Interface

该接口扩展源于

NET_DVR_SetupAlarmChan


NET_DVR_ShutDownDVR

关闭设备。

BOOL NET_DVR_ShutDownDVR(
  LONG   lUserID
);

Parameters

lUserID
[in] 用户ID号，NET_DVR_Login_V40等登录接口的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_SmartSearch

开始智能搜索。

LONG NET_DVR_SmartSearch(
  LONG                            lUserID,
  LPNET_DVR_SMART_SEARCH_PARAM    lpSmartSearchParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpSmartSearchParam
[in] 智能搜索参数结构

Return Values

-1表示失败，其他值作为NET_DVR_SearchNextInfo、NET_DVR_StopSearch等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOENOUGHPRI | 2 | 权限不足。该注册用户没有权限执行当前对设备的操作，可以与远程用户参数配置做对比。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_CHANNEL_ERROR | 4 | 通道号错误。设备没有对应的通道号。
NET_DVR_NETWORK_FAIL_CONNECT | 7 | 连接设备失败。设备不在线或网络原因引起的连接超时等。
NET_DVR_NETWORK_SEND_ERROR | 8 | 向设备发送失败。
NET_DVR_NETWORK_RECV_ERROR | 9 | 从设备接收数据失败。
NET_DVR_NETWORK_RECV_TIMEOUT | 10 | 从设备接收数据超时。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_NODISK | 19 | 设备无硬盘。当设备无硬盘时，对设备的录像文件、硬盘配置等操作失败。
NET_DVR_NOSUPPORT | 23 | 设备不支持。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_NOENOUGH_BUF | 43 | 缓冲区太小。接收设备数据的缓冲区或存放图片缓冲区不足。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETCLOSE_ERROR | 73 | socket连接中断，此错误通常是由于连接中断或目的地不可达。

Remarks

该接口指定了要搜索条件信息，调用成功后，就可以调用NET_DVR_SearchNextInfo接口来获取搜索结果。搜索出的录像文件针对开始时间和停止时间，因此只支持按时间回放NET_DVR_PlayBackByTime()。

See Also

NET_DVR_SearchNextInfo NET_DVR_StopSearch
NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_SmartSearch_V40


NET_DVR_StartDecSpecialCon

启动解码设备动态控制解码连接。

BOOL NET_DVR_StartDecSpecialCon(
  LONG                    lUserID,
  LONG                    lChannel,
  LPNET_DVR_DECCHANINFO   lpDecChanInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpDecChanInfo
[in] 解码设备通道参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_StopDecSpecialCon


NET_DVR_StartDownload

下载文件。

LONG NET_DVR_StartDownload(
  LONG          lUserID,
  DWORD         dwDownloadType,
  LPVOID        lpInBuffer,
  DWORD         dwInBufferSize,
  char const    *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDownloadType
[in] 下载文件类型，具体定义请参见“Remarks”说明
lpInBuffer
[in] 输入参数。不同的dwDownloadType，输入参数不同，具体请参见“Remarks”说明
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 下载文件的保存路径（绝对路径，包括文件名）

Return Values

-1表示失败，其他值作为NET_DVR_StopDownload和NET_DVR_GetDownloadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

不同的dwDownloadType，输入参数lpInBuffer对应内容不同：

dwDownloadType宏定义 | 取值 | 含义 | lpInBuffer对应结构体
NET_SDK_DOWNLOAD_OFFLINE_CAPTURE_INFO_TEMPLATE | 40 | 下载采集用户列表模板 | NULL
NET_SDK_DOWNLOAD_CAPTURE_DATA | 41 | 下载离线采集数据 | NULL
  • 设备是否支持下载身份证非授权名单模板能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportDownloadCertificateBlockListTemplet>。

See Also

NET_DVR_GetDownloadState NET_DVR_StopDownload


NET_DVR_StartDownloadAudio

从设备下载语音。

LONG NET_DVR_StartDownloadAudio(
  LONG       lUserID,
  DWORD      dwAudioNum,
  char       *sAudioFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAudioNum
[in] 语音号：1- 进门欢迎提示音，2- 出门离开提示音，3- 有人提示音，4- ATM暂停使用，5- 门未关提示音， 6- （保留）
sAudioFileName
[in] 保存语音文件的绝对路径，包括文件名

Return Values

-1表示失败，其他值作为NET_DVR_GetAudioProgress、NET_DVR_StopAudioOperate等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_StartListen

启动监听，接收设备主动上传的报警等信息。

BOOL NET_DVR_StartListen(
  char    *sLocalIP,
  WORD    wLocalPort
);

Parameters

sLocalIP
[in] PC机本地IP地址,可以置为NULL
wLocalPort
[in] PC本地监听端口号。由用户设置，必须和设备端设置的一致

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_VERSIONNOMATCH | 6 | 版本不匹配。SDK和设备的版本不匹配。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。
NET_DVR_ALLOC_RESOURCE_ERROR | 41 | SDK资源分配错误。
NET_DVR_CREATESOCKET_ERROR | 44 | 创建SOCKET出错。
NET_DVR_USERNOTEXIST | 47 | 用户不存在。注册的用户ID已注销或不可用。
NET_DVR_BINDSOCKET_ERROR | 72 | 绑定套接字失败。
NET_DVR_SOCKETLISTEN_ERROR | 75 | 监听失败。

Remarks

要使PC能够收到设备主动发过来的报警等信息，必须将设备的网络配置中的“远程管理主机地址”或者“远程报警主机地址”设置成PC机的IP地址（与接口中的sLocalIP参数一致），“远程管理主机端口号”或者“远程报警主机端口号”设置成PC机的监听端口号（与接口中的wLocalPort参数一致）。启动监听后，需要调用注册回调函数的接口（仅需按需求调用NET_DVR_SetDVRMessageCallBack_V30、NET_DVR_SetDVRMessCallBack、NET_DVR_SetDVRMessCallBack_EX、NET_DVR_SetDVRMessCallBack_NEW和NET_DVR_SetDVRMessageCallBack其中的一个）才能获取到上传的报警等信息。

See Also

NET_DVR_StopListen

NET_DVR_SetDVRMessageCallBack_V30

NET_DVR_SetDVRMessCallBack

NET_DVR_SetDVRMessCallBack_EX

NET_DVR_SetDVRMessCallBack_NEW

NET_DVR_SetDVRMessageCallBack

Reference Interface

扩展接口可见

NET_DVR_StartListen_V30


NET_DVR_StartPicPreview

开始图片回显。

LONG NET_DVR_StartPicPreview(
  LONG                             lUserID,
  LPNET_DVR_START_PIC_VIEW_INFO    lpStruStartPicView,
  SCREENPICDATACB                  PicDataCallback,
  void                             *pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStruStartPicView
[in] 回显参数
PicDataCallback
[in] 图片回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *SCREENPICDATACB)(
  LONG      nScreenPicHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

nScreenPicHandle
[out] 图片回显句柄
dwDataType
[out] 数据类型
enum _PIC_PREVIEW_DATATYPE_{
  NET_DVR_DATA_BMP  = 0,
  NET_DVR_START_CALLBACK,
  NET_DVR_STREAM_SYSHEAD,
  NET_DVR_STREAM_DATA
}PIC_PREVIEW_DATATYPE
NET_DVR_DATA_BMP
BMP图片数据，集中式控制器回显功能的数据格式
NET_DVR_START_CALLBACK
开始回调回显数据，分布式大屏控制器
NET_DVR_STREAM_SYSHEAD
系统头数据，分布式大屏控制器
NET_DVR_STREAM_DATA
流数据（包括复合流或音视频分开的视频流数据），分布式大屏控制器
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopScreenPic等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopScreenPic


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_CARD_CFG_V50 | 2178 | 获取卡参数(V50扩展，兼容老命令) | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
NET_DVR_SET_CARD_CFG_V50 | 2179 | 设置卡参数(V50扩展，兼容老命令) | NET_DVR_CARD_CFG_COND | 返回状态
NET_DVR_GET_CARD_CFG | 2116 | 获取卡参数(老命令，建议使用V50扩展命令) | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
NET_DVR_SET_CARD_CFG | 2117 | 设置卡参数(老命令，建议使用V50扩展命令) | NET_DVR_CARD_CFG_COND | 返回状态
NET_DVR_GET_FINGERPRINT_CFG | 2150 | 获取指纹参数 | NET_DVR_FINGER_PRINT_INFO_COND | 返回状态、信息数据
NET_DVR_SET_FINGERPRINT_CFG | 2151 | 设置指纹参数 | NET_DVR_FINGER_PRINT_INFO_COND | 返回状态、信息数据
NET_DVR_GET_FINGERPRINT_CFG_V50 | 2183 | 获取指纹参数V50 | NET_DVR_FINGER_PRINT_INFO_COND_V50 | 返回状态、信息数据
NET_DVR_SET_FINGERPRINT_CFG_V50 | 2184 | 设置指纹参数V50 | NET_DVR_FINGER_PRINT_CFG_V50 | 返回状态
NET_DVR_GET_CARD_PASSWD_CFG | 2161 | 获取卡密码开门使能参数 | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
NET_DVR_SET_CARD_PASSWD_CFG | 2162 | 设置卡密码开门使能参数 | NET_DVR_CARD_CFG_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： dwStatus为NET_SDK_CALLBACK_STATUS_SUCCESS，表示获取和配置成功并且结束； dwStatus为NET_SDK_CALLBACK_STATUS_PROCESSING，lpBuffer：4字节状态 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_FAILED，lpBuffer：4字节状态 + 4字节错误码 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_EXCEPTION，表示长连接配置异常 dwStatus为NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH,表示（IPC配置文件导入）语言不匹配 dwStatus为NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH,表示（IPC配置文件导入）设备类型不匹配 dwStatus为NET_DVR_CALLBACK_STATUS_SEND_WAIT，表示需要等待一段时间再发送
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_CARD_CFG时，对应结构体：NET_DVR_CARD_CFG NET_DVR_GET_CARD_CFG_V50时，对应结构体：NET_DVR_CARD_CFG_V50 NET_DVR_GET_FINGERPRINT_CFG时，对应结构体：NET_DVR_FINGER_PRINT_CFG NET_DVR_SET_FINGERPRINT_CFG时，对应结构体：NET_DVR_FINGER_PRINT_STATUS NET_DVR_GET_FINGERPRINT_CFG_V50,对应结构体：NET_DVR_FINGER_PRINT_CFG_V50 NET_DVR_SET_FINGERPRINT_CFG_V50时，对应结构体：NET_DVR_FINGER_PRINT_STATUS_V50 NET_DVR_GET_CARD_PASSWD_CFG时，对应结构体：NET_DVR_CARD_PASSWD_CFG NET_DVR_SET_CARD_PASSWD_CFG时，对应结构体：NET_DVR_CARD_PASSWD_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_GET_CARD_CFG获取卡参数时，在调用该接口启动长连接远程配置后，还需要调用NET_DVR_SendRemoteConfig发送查找条件数据(获取所有卡参数时不需要调用该发送接口)，查找结果在NET_DVR_StartRemoteConfig设置的回调函数中返回。NET_DVR_SET_CARD_CFG设置卡参数时，在调用该接口启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发卡参数信息。
  • NET_DVR_GET_FINGERPRINT_CFG获取指纹参数时，调用该接口启动查询，查找结果在NET_DVR_StartRemoteConfig设置的回调函数中返回。NET_DVR_SET_FINGERPRINT_CFG设置指纹参数时，在调用该接口启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发指纹参数信息，在NET_DVR_StartRemoteConfig设置的回调函数中返回状态信息。
  • NET_DVR_GET_CARD_PASSWD_CFG获取卡密码开门使能参数时，在调用该接口启动长连接远程配置后，还需要调用NET_DVR_SendRemoteConfig发送查找条件数据(获取所有卡信息时不需要调用该发送接口)，查找结果在NET_DVR_StartRemoteConfig设置的回调函数中返回。NET_DVR_SET_CARD_PASSWD_CFG设置卡密码开门使能参数时，在调用该接口启动长连接远程配置后，通过调用NET_DVR_SendRemoteConfig向设备下发卡密码开门使能信息，在NET_DVR_StartRemoteConfig设置的回调函数中返回状态信息。
  • 发送接口支持单个NET_DVR_CARD_CFG_SEND_DATA和NET_DVR_CARD_CFG结构体发送，获取所有卡参数时不需要调用发送接口。当发送接口返回失败时，调用NET_DVR_GetRemoteConfigState获取长连接状态，状态值为NET_DVR_CALLBACK_STATUS_SEND_WAIT则需等待一段时间发送，当状态值为NET_SDK_CALLBACK_STATUS_PROCESSING时，可以再次调用发送接口发送数据。
  • 下发卡参数时，如果将byCheckCardNo置为0，那么设备将不校验应用层下发的卡号信息，直接写入本地存储，需要上层应用保证卡号信息不重复，可以一定程度提高卡号下发的速度。
  • 当状态值为 NET_SDK_CALLBACK_STATUS_SUCCESS 和NET_SDK_CALLBACK_STATUS_PROCESSING，没有错误码返回，返回当前处理到的卡号。当状态值为 NET_SDK_CALLBACK_STATUS_FAILED ，返回相应的错误码信息、卡号信息，错误码数据量和发送结构体数量一致对应。
  • 指纹参数对应的能力集中若返回工号（人员ID）字段，说明设备支持以人为中心下发指纹参数，结构体中的卡号信息可不添加，指纹参数会直接绑定到对应的工号（人员ID）上面。
  • 指纹下发流程：
  • （1）阻塞方式：NET_DVR_FINGER_PRINT_INFO_COND_V50中byCallbackMode为0；平台/客户端通过NET_DVR_FINGER_PRINT_CFG_V50下发一枚指纹；平台/客户端等待回调，设备返回NET_DVR_FINGER_PRINT_STATUS_V50； 平台/客户端判断NET_DVR_FINGER_PRINT_STATUS_V50（每下发一枚指纹，设备仅会返回一次该结构体）中byRecvStatus字段若为非0，则代表该枚指纹下发失败，byRecvStatus字段若为0，仅代表指纹下发给主机成功， 则要再对byCardReaderRecvStatus进行判断，该枚指纹下发到读卡器是否成功。
  • （2）非阻塞方式：NET_DVR_FINGER_PRINT_INFO_COND_V50中byCallbackMode为1；平台/客户端通过NET_DVR_FINGER_PRINT_CFG_V50下发一枚指纹；平台/客户端等待回调，设备返回NET_DVR_FINGER_PRINT_STATUS_V50； 平台/客户端判断NET_DVR_FINGER_PRINT_STATUS_V50（每下发一枚指纹，设备会多次返回该结构体）中byRecvStatus字段若为非0（byRecvStatus非0时，byTotalStatus也会赋值为1），则代表该枚指纹下发失败， byRecvStatus字段若为0，仅代表指纹下发给主机成功，则要再对byCardReaderRecvStatus进行判断，该枚指纹下发到读卡器是否成功。并且只有byTotalStatus为1时，才说明该枚指纹已经针对所有读卡器下发完成。这时才能下发下一枚指纹。
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_CARD_CFG_V50 | 获取卡参数(V50扩展，兼容老命令) | NET_DVR_SendRemoteConfig
NET_DVR_SET_CARD_CFG_V50 | 设置卡参数(V50扩展，兼容老命令) | NET_DVR_SendRemoteConfig
NET_DVR_GET_CARD_CFG | 获取卡参数(老命令，建议使用V50扩展命令) | NET_DVR_SendRemoteConfig
NET_DVR_SET_CARD_CFG | 设置卡参数(老命令，建议使用V50扩展命令) | NET_DVR_SendRemoteConfig
NET_DVR_GET_FINGERPRINT_CFG | 获取指纹参数 | NULL
NET_DVR_SET_FINGERPRINT_CFG | 设置指纹参数 | NET_DVR_SendRemoteConfig
NET_DVR_GET_FINGERPRINT_CFG_V50 | 获取指纹参数 | NULL
NET_DVR_SET_FINGERPRINT_CFG_V50 | 设置指纹参数 | NET_DVR_SendRemoteConfig
NET_DVR_GET_CARD_PASSWD_CFG | 获取卡密码开门使能参数 | NET_DVR_SendRemoteConfig
NET_DVR_SET_CARD_PASSWD_CFG | 设置卡密码开门使能参数 | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_FACE_PARAM_CFG | 2507 | 获取人脸参数 | NET_DVR_FACE_PARAM_COND | 返回状态、进度、信息数据
NET_DVR_SET_FACE_PARAM_CFG | 2508 | 设置人脸参数 | NET_DVR_FACE_PARAM_COND | 返回状态、进度、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： dwStatus为NET_SDK_CALLBACK_STATUS_SUCCESS，表示获取和配置成功并且结束； dwStatus为NET_SDK_CALLBACK_STATUS_PROCESSING，lpBuffer：4字节状态 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_FAILED，lpBuffer：4字节状态 + 4字节错误码 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_EXCEPTION，表示长连接配置异常 dwStatus为NET_DVR_CALLBACK_STATUS_SEND_WAIT，表示需要等待一段时间再发送
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_FACE_PARAM_CFG时，对应结构体：NET_DVR_FACE_PARAM_CFG NET_DVR_SET_FACE_PARAM_CFG时，对应结构体：NET_DVR_FACE_PARAM_STATUS
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_GET_FACE_PARAM_CFG获取人脸参数时，在调用该接口启动长连接远程配置后，查找结果直接在NET_DVR_StartRemoteConfig设置的回调函数中返回。NET_DVR_SET_FACE_PARAM_CFG设置人脸参数时，在调用该接口启动长连接远程配置后，还需要调用NET_DVR_SendRemoteConfig向设备下发人脸参数信息。
dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_FACE_PARAM_CFG | 获取人脸参数 | NULL
NET_DVR_SET_FACE_PARAM_CFG | 设置人脸参数 | NET_DVR_SendRemoteConfig

See Also

NET_DVR_SendRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_DEL_FINGERPRINT_CFG_V50 | 2517 | 删除指纹参数V50 | NET_DVR_FINGER_PRINT_INFO_CTRL_V50 | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_CAPTURE_FINGERPRINT_INFO时，对应结构体：NET_DVR_FINGER_PRINT_INFO_STATUS_V50
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。
  • 该接口兼容NET_DVR_RemoteControl接口的NET_DVR_DEL_FINGERPRINT_CFG命令。
  • 调用该接口时，要判断能力集(AcsAbility)， 相关接口：NET_DVR_GetDeviceAbility，是否包含节点， 如果包含，需要等待长连接回调函数中的NET_DVR_FINGER_PRINT_INFO_STATUS_V50结构体的byStatus状态返回3-成功， 才完全删除了。如果能力集AcsAbility中不包含节点，则调用此接口后，接口返回的值即代表是否删除成功，无需等待回调函数。
  • 对应的能力集：为(AcsAbility)能力集的节点。
  • 该接口在调用时要注意先获取门禁主机能力中节点，如果获取不到，则调用创建长连接接口NET_DVR_StartRemoteConfig 完成后，该接口的返回值即代表删除指纹是否成功。如果设备端的门禁主机能力返回了节点，该NET_DVR_StartRemoteConfig 接口的返回值不代表实际删除是否成功，还要根据回调的NET_DVR_FINGER_PRINT_INFO_STATUS_V50来判断删除指纹是否成功。
  • 删除指纹对应的能力集中若返回工号（人员ID）字段，说明设备支持以人为中心删除指纹，结构体中的卡号信息可不添加，删除指纹会直接删除对应工号（人员ID）上面的指纹。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_LOCAL_CONTROLLER_STATUS | 2176 | 获取就地控制器状态 | NET_DVR_LOCAL_CONTROLLER_STATUS_COND | 返回状态、信息数据
NET_DVR_GET_ONLINE_LOCAL_CONTROLLER | 2177 | 搜索在线就地控制器 | NULL | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000,//成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_GET_LOCAL_CONTROLLER_STATUS时，对应结构体：NET_DVR_LOCAL_CONTROLLER_STATUS NET_DVR_GET_ONLINE_LOCAL_CONTROLLER时，对应结构体：NET_DVR_ONLINE_LOCAL_CONTROLLER_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 获取就地控制器状态和搜索在线控制器，调用该接口启动查询，查找结果在该长连接接口设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动长连接远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM | 2034 | 获取指定子系统内的所有防区 | NET_DVR_LIST_INFO | NULL
NET_DVR_GET_ALARMHOST_TRIGGER_LIST | 2035 | 获取所有触发器 | NULL | NULL
NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE | 2041 | 自动搜索外接模块 | NULL | 返回进度和状态
NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE | 2042 | 自动注册外接模块 | NULL | 返回进度和状态
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数，
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 4字节状态值 typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

调用该接口启动长连接远程配置后，还需要调用其他接口获取相关参数，如下表所示：

dwCommand宏定义 | 含义 | 后续接口调用
NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM | 获取指定子系统内的所有防区 | NET_DVR_GetNextRemoteConfig
NET_DVR_GET_ALARMHOST_TRIGGER_LIST | 获取所有触发器 | NET_DVR_GetNextRemoteConfig
NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE | 自动搜索外接模块 | NET_DVR_StopRemoteConfig
NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE | 自动注册外接模块 | NET_DVR_StopRemoteConfig
  • 当命令dwCommand为NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE或NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE时，调用该接口启动自动搜索或者自动注册，通过回调函数 fRemoteConfigCallback获取进度和状态。自动搜索或者自动注册完成后调用NET_DVR_StopRemoteConfig释放资源。然后再调用该接口，使用命令NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM和NET_DVR_GET_ALARMHOST_TRIGGER_LIST分别获取“子系统内所有防区”和“所有触发器”信息。
  • 自动搜索：搜索出当前可以通信的外接模块，自动注册：自动注册后原有的模块信息（包括外接触发器和外接防区）的地址信息都会改变。设备会根据自身的一套规则给模块重新分配地址。。

    • See Also

    NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_CAPTURE_DATA_SEARCH | 2554 | 查询离线采集数据集中数据 | 命令：POST /ISAPI/AccessControl/OfflineCapture/DataCollections/searchTask?format=json | 返回状态、进度、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000,//成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_CAPTURE_DATA_SEARCH时，对应结构体：NET_DVR_JSON_DATA_CFG
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_StartRemoteConfig 接口返回成功后，通过NET_DVR_SendRemoteConfig 每下发一个查询条件Inbound Data（JSON）报文，都要等待设备的回调返回NET_DVR_JSON_DATA_CFG；返回后，才能查询下一条采集数据。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_GET_ALARM_INFO | 4193 | 获取报警事件数据 | NET_DVR_ALARM_SEARCH_COND | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据，对应结构体：NET_DVR_ALARM_SEARCH_RESULT
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 该接口指定了要查找的信息，调用成功后，查找的结果在设置的回调函数中返回。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_JSON_CONFIG | 2550 | JSON透传数据 | GET /ISAPI/AccessControl/UserInfoDetail/DeleteProcess?format=json | sizeof(lpInBuffer)
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | 前4个字节为状态值(dwStatus)： dwStatus为NET_SDK_CALLBACK_STATUS_SUCCESS，表示获取和配置成功并且结束； dwStatus为NET_SDK_CALLBACK_STATUS_PROCESSING，lpBuffer：4字节状态 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_FAILED，lpBuffer：4字节状态 + 4字节错误码 + 32字节卡号； dwStatus为NET_SDK_CALLBACK_STATUS_EXCEPTION，表示长连接配置异常 dwStatus为NET_DVR_CALLBACK_STATUS_SEND_WAIT，表示需要等待一段时间再发送
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据 NET_DVR_JSON_CONFIG，对应结构体：JSON_ResponseStatus报文
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_SendRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • NET_DVR_StartRemoteConfig接口返回成功后，等待设备的回调返回>UserInfoDetailDeleteProcess（JSON）报文来确认实际的删除进度。

    • See Also

    NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 控制功能 | lpInBuffer对应结构体 | cbStateCallback
NET_DVR_INQUEST_GET_CDW_STATUS | 6350 | 获取审讯机刻录状态 | NET_DVR_INQUEST_ROOM | NULL
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数，置为NULL
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD     dwType,
  void      *lpBuffer,
  DWORD     dwBufLen,
  void      *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_GetNextRemoteConfig、NET_DVR_StopRemoteConfig的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口指定了要查找信息，调用成功后，就可以调用NET_DVR_GetNextRemoteConfig接口来逐个获取到的具体信息。

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_GET_PHY_DISK_INFO | 6306 | 获取物理磁盘信息 | NULL | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 配置状态，具体定义如下所示：
enum _NET_SDK_CALLBACK_TYPE_{
  NET_SDK_CALLBACK_TYPE_STATUS   = 0,
  NET_SDK_CALLBACK_TYPE_PROGRESS,
  NET_SDK_CALLBACK_TYPE_DATA
}NET_SDK_CALLBACK_TYPE
NET_SDK_CALLBACK_TYPE_STATUS
回调状态值
NET_SDK_CALLBACK_TYPE_PROGRESS
回调进度值(暂不支持)
NET_SDK_CALLBACK_TYPE_DATA
回调数据内容
lpBuffer
[out] 存放数据的缓冲区指针，具体内容跟dwType相关，详见列表
dwType | 含义 | lpBuffer对应内容
NET_SDK_CALLBACK_TYPE_STATUS | 状态值 | typedef enum { NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, //成功 NET_SDK_CALLBACK_STATUS_PROCESSING, //处理中 NET_SDK_CALLBACK_STATUS_FAILED //失败 }NET_SDK_CALLBACK_STATUS_NORMAL;
NET_SDK_CALLBACK_TYPE_PROGRESS | 进度值 | lpBuffer的值表示进度(DWORD)
NET_SDK_CALLBACK_TYPE_DATA | 信息数据 | lpBuffer的值表示信息数据，获取时有效，对应结构体：NET_DVR_PHY_DISK_INFO
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig等接口的句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartRemoteConfig

启动远程配置。

LONG NET_DVR_StartRemoteConfig(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPVOID                   lpInBuffer,
  DWORD                    dwInBufferLen,
  fRemoteConfigCallback    cbStateCallback,
  LPVOID                   pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 配置命令，不同的功能对应不同的命令号(dwCommand)，lpInBuffer等参数也对应不同的内容，如下表所示：
dwCommand宏定义 | 宏定义值 | 含义 | lpInBuffer | cbStateCallback
NET_DVR_ALARMHOST_REGISTER_DETECTOR | 10302 | 开始注册 | NULL | 返回状态、信息数据
lpInBuffer
[in] 输入参数，具体内容跟配置命令相关
dwInBufferLen
[in] 输入缓冲的大小
cbStateCallback
[in] 状态回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *fRemoteConfigCallback)(
  DWORD    dwType,
  void     *lpBuffer,
  DWORD    dwBufLen,
  void     *pUserData
);

Callback Function Parameters

dwType
[out] 状态
lpBuffer
[out] 存放数据的缓冲区指针，获取音量时dwType状态无效，lpBuffer对应4字节声音强度
dwBufLen
[out] 缓冲区大小
pUserData
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopRemoteConfig函数的输入句柄。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopRemoteConfig


NET_DVR_StartScreenPic

开始图片回显。

LONG NET_DVR_StartScreenPic(
  LONG               lUserID,
  DWORD              nInputNum,
  SCREENPICDATACB    PicDataCallback,
  LPVOID             pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
nInputNum
[in] 输入源索引
PicDataCallback
[in] 图片回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *SCREENPICDATACB)(
  LONG      nScreenPicHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

nScreenPicHandle
[out] 图片回显句柄
dwDataType
[out] 数据类型
enum _PIC_PREVIEW_DATATYPE_{
  NET_DVR_DATA_BMP  = 0,
  NET_DVR_START_CALLBACK,
  NET_DVR_STREAM_SYSHEAD,
  NET_DVR_STREAM_DATA
}TRAFFIC_SCENE_MODE
NET_DVR_DATA_BMP
BMP图片数据
NET_DVR_START_CALLBACK
起始回调
NET_DVR_STREAM_SYSHEAD
系统头数据
NET_DVR_STREAM_DATA
流数据（包括复合流或音视频分开的视频流数据）
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopScreenPic等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopScreenPic


NET_DVR_StartUpgrade

开始升级。

LONG NET_DVR_StartUpgrade(
  LONG                        lUserID,
  LPNET_DVR_OPERATE_DEVICE    lpStruOperate,
  DVCS_UPGRADESTATE_CB        UpgradeStateCallback,
  void                        *pUserData
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStruOperate
[in] 设备升级操作参数
UpgradeStateCallback
[in] 设备升级回调函数
pUserData
[in] 用户数据

Callback Function

typedef void(CALLBACK *DVCS_UPGRADESTATE_CB)(
  LONG      nUpgradeHandle,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUser
);

Callback Function Parameters

nUpgradeHandle
[out] 当前的升级句柄，NET_DVR_StartUpgrade的返回值
pBuffer
[out] 存放数据的缓冲区指针，对应结构体NET_DVR_UPGRADE_STATE
dwBufSize
[out] 缓冲区大小
pUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopUpgrade等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StopUpgrade


NET_DVR_StartUploadAudio

将语音上传给设备。

LONG NET_DVR_StartUploadAudio(
  LONG       lUserID,
  DWORD      dwAudioNum,
  DWORD      dwAudioType,
  char       *sAudioFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwAudioNum
[in] 语音号：1- 进门欢迎提示音，2- 出门离开提示音，3- 有人提示音，4- ATM暂停使用，5- 门未关提示音， 6- （保留）
dwAudioType
[in] 语音格式：0- wave
sAudioFileName
[in] 语音文件的绝对路径，包括文件名

Return Values

-1表示失败，其他值作为NET_DVR_GetAudioProgress、NET_DVR_StopAudioOperate等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_StartVoiceCom

启动语音对讲。

LONG NET_DVR_StartVoiceCom(
  LONG                  lUserID,
  fVoiceDataCallBack    cbVoiceDataCallBack,
  DWORD                 dwUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
cbVoiceDataCallBack
[in] 音频数据回调函数
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fVoiceDataCallBack)(
  LONG     lVoiceComHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  BYTE     byAudioFlag,
  DWORD    dwUser
);

Callback Function Parameters

lVoiceComHandle
[out] NET_DVR_StartVoiceCom的返回值
pRecvDataBuffer
[out] 存放音频数据的缓冲区指针
dwBufSize
[out] 音频数据大小
byAudioFlag
[out] 音频数据类型：0－本地采集的数据（编码后）；1－设备发送过来的语音数据（编码后）
dwUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_StopVoiceCom等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

Windows 7操作系统下，如果不外接音频设备，该接口将返回失败。
在调用开始语音对讲之前可先配置设备的语音对讲音频编码类型，即可先调用参数配置中的NET_DVR_COMPRESSION_AUDIO
结构配置。
当前音频为G722编码时，音频数据的采样频率为16000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND = 16000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign = CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND*m_wavFormatEx.nBlockAlign

当前音频为G711编码时，音频数据的采样频率为8000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND_G711_MU = 8000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign =	CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND_G711_MU;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND_G711_MU*
m_wavFormatEx.nBlockAlign;

See Also

NET_DVR_StopVoiceCom

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_StartVoiceCom_V30


NET_DVR_StartVoiceCom_MR

启动语音转发，获取编码后的音频数据。

LONG NET_DVR_StartVoiceCom_MR(
  LONG                  lUserID,
  fVoiceDataCallBack    cbVoiceDataCallBack,
  DWORD                 dwUser
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
cbVoiceDataCallBack
[in] 音频数据回调函数，得到的数据是编码以后的音频数据，需调用我们提供的音频解码函数（详见音频编解码章节的说明）后可得到PCM数据
dwUser
[in] 用户数据

Callback Function

typedef void(CALLBACK *fVoiceDataCallBack)(
  LONG     lVoiceComHandle,
  char     *pRecvDataBuffer,
  DWORD    dwBufSize,
  BYTE     byAudioFlag,
  DWORD    dwUser
);

Callback Function Parameters

lVoiceComHandle
[out] NET_DVR_StartVoiceCom_MR的返回值
pRecvDataBuffer
[out] 存放音频数据的缓冲区指针
dwBufSize
[out] 音频数据大小
byAudioFlag
[out] 音频数据类型：1－设备发送过来的音频数据
dwUser
[out] 用户数据

Return Values

-1表示失败，其他值作为NET_DVR_VoiceComSendData、NET_DVR_StopVoiceCom等函数的句柄参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在调用开始语音转发之前可先配置设备的音频编码类型，即可先调用参数配置中的NET_DVR_COMPRESSION_AUDIO
结构配置。
当前音频为G722编码时，音频数据的采样频率为16000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND = 16000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign = CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND*m_wavFormatEx.nBlockAlign

当前音频为G711编码时，音频数据的采样频率为8000，16位采样且是单通道的。因此，音频播放格式应如下定义：
const int SAMPLES_PER_SECOND_G711_MU = 8000;
const int CHANNEL = 1;
const int BITS_PER_SAMPLE = 16;
WAVEFORMATEX m_wavFormatEx;
m_wavFormatEx.cbSize = sizeof(m_wavFormatEx);
m_wavFormatEx.nBlockAlign =	CHANNEL * BITS_PER_SAMPLE / 8;
m_wavFormatEx.nChannels = CHANNEL;
m_wavFormatEx.nSamplesPerSec = SAMPLES_PER_SECOND_G711_MU;
m_wavFormatEx.wBitsPerSample = BITS_PER_SAMPLE;
m_wavFormatEx.nAvgBytesPerSec = SAMPLES_PER_SECOND_G711_MU*
m_wavFormatEx.nBlockAlign;

See Also

NET_DVR_StopVoiceCom

NET_DVR_VoiceComSendData

NET_DVR_Login NET_DVR_Login_V40

Reference Interface

扩展接口可见

NET_DVR_StartVoiceCom_MR_V30


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL | 2223 | 紧急报警处理控制 | NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_TERMINAL_CTRL | 9147 | 终端呼叫控制 | NET_DVR_TERMINAL_CTRL_PARAM

NET_DVR_TERMINAL_CTRL对应ISAPI中的URL：PUT /ISAPI/VCS/terminals/control

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_SET_SENSOR_ADJUSTMENT | 3758 | Sensor调节参数控制 | NET_DVR_SENSOR_ADJUSTMENT
NET_DVR_SENSOR_RESET_CTRL | 3764 | Sensor调节复位 | NET_DVR_SENSOR_RESET

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_SET_TRACK_INITPOSTION | 3618 | 设置从摄像机初始跟踪位置 | NET_DVR_TRACK_INITPOSTION
NET_DVR_SET_GOTOSCENE | 8105 | 设置主摄像机转向指定的场景ID | NET_DVR_GOTOSCENE_COND

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_THSCREEN_TIMING | 3737 | 温湿度屏幕校时 | NULL
  • 设备是否支持温湿度能力，可以通过设备能力集进行判断，对应温湿度配置能力集(THScreen)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THSCREEN_CAPABILITIES。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer、lpXmlBuffer对应不同的内容，目前以下命令只支持XML方式（byDataType为1），因此lpCondBuffer为NULL，lpXmlBuffer根据不同的命令对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpXmlBuffer对应结构体
NET_DVR_DEL_BLOCKLIST_ALARM_RECORD | 5227 | 远程删除名单报警记录 | AlarmRecord
NET_DVR_DEL_BLOCKLIST_GROUP_INFO | 5230 | 远程删除分组列表 | ListGroupDelParam
NET_DVR_DEL_BLOCKLIST_GROUP_RECORD_CFG | 5235 | 远程删除分组记录参数 | RecordInfo
NET_DVR_DEL_AREA_MONITOR_CFG | 5238 | 删除区域监控点 | AreaMonitorDelCond
NET_DVR_DEL_SNAP_RECORD | 5244 | 删除抓拍记录 | DelSnapRecordCond
NET_DVR_DEL_FACE_RECORD | 5247 | 删除人脸记录 | DelFaceRecordCond
NET_DVR_DEL_FACE_DATABASE | 5250 | 删除人脸库 | FaceDataBase
NET_DVR_DEL_BLOCKLIST_REL_DEV | 5253 | 删除设备关联名单分组信息 | GroupRelDevInfo

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_STREAMING_REFRESH_FRAME | 3714 | 强制刷新帧 | NET_DVR_STREAMING_COND
  • 该功能针对启用Smart264或者Smart265高性能编码后的码流预览，通过该命令强制设备生成一个深P帧。
  • 设备是否支持Smart264或者Smart265高性能编码功能，通过能力集(StreamingChannel)中节点<isSupportRefreshFrame>进行判断，相关接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_STREAMING_CAPABILITIES)。
  • 设备支持刷新帧的码流类型，通过能力集(RefreshFrame)获取，相关接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_REFRESHFRAME_CAPABILITIES)。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_COMPASS_CALIBRATE_CTRL | 3706 | 电子罗盘矫正控制 | NET_DVR_COMPASS_COND
NET_DVR_COMPASS_NORTH_CTRL | 3707 | 电子罗盘指向正北控制 | NET_DVR_COMPASS_COND
  • 设备是否支持电子罗盘矫正控制功能，对应电子罗盘能力集(CompassCap)中节点<isSupportCalibrate>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_COMPASS_CAPABILITIES)。
  • 设备是否支持电子罗盘指向正北控制功能，对应电子罗盘能力集(CompassCap)中节点<isSupportPointToNorth>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_COMPASS_CAPABILITIES)。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_SYNC_IPC_PASSWD | 6621 | 同步NVR所有通道接入的IPC密码 | NULL
  • 设备是否支持同步IPC密码功能，对应设备软硬件能力集(BasicCapability)中节点<isSupportSyncIPCPassword>，接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_SOFTHARDWARE_ABILITY)。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_WIRELESSDIAL_CONNECT | 3593 | 控制无线网络连网断网 | NET_DVR_WIRELESSDIAL_CONNECT_PARAM

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_REMOVE_FLASHSTORAGE | 3756 | 清除设备FLASH中存储的客流数据(针对flash存储客流数据的设备) | NET_DVR_FLASHSTORAGE_REMOVE

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_DEL_BACKGROUND_PIC | 6428 | 删除背景图片文件 | NET_DVR_BACKGROUND_PIC_COND
NET_DVR_MANUAL_CURRICULUM_CONTROL | 6436 | 手动课表录像控制 | NET_DVR_MANUAL_CURRICULUM_CFG

See Also

NET_DVR_GetSTDConfig NET_DVR_GetLastError


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_SHIPSCOUNT_DELETE_CTRL | 6659 | 清空船只计数信息 | 4字节(DWORD)通道号
  • 设备是否支持船只计数功能，可以通过设备能力集进行判断，对应船只检测参数配置能力集(ShipsDetectionCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SHIPSDETECTION_CAPABILITIES，节点：<isSupportShipsDetectionCount>。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_PARKING_CARD_CTRL | 3145 | 停车场停车卡远程控制 | NET_DVR_PARKING_CARD_CTRL_PARAM
NET_DVR_SET_SENSOR_SWITCH | 5062 | 传感器远程控制 | NET_DVR_SENSOR_SWITCH_COND

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

  • 该功能只支持在热成像通道上设置。热成像重载云台和热成像中载云台设备，有两个通道，第一个通道为可见光通道，第二个通道为热成像通道；热成像单目筒机只有一个通道，为热成像通道。
dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_FIRE_FOCUSZOOM_CTRL | 6670 | 根据火点对可见光镜头进行聚焦变倍 | 4字节(DWORD)通道号
NET_DVR_DEL_AREASCAN_CFG | 6731 | 扫描区域删除 | 4字节(DWORD)通道号
NET_DVR_AREASCAN_INIT_CTRL | 6732 | 进入区域扫描设置 | 4字节(DWORD)通道号
NET_DVR_AREASCAN_CONFIRM_CTRL | 6733 | 确认执行区域扫描 | 4字节(DWORD)通道号
NET_DVR_AREASCAN_STOP_CTRL | 6734 | 停止区域扫描 | 4字节(DWORD)通道号
NET_DVR_SAVE_SCANZOOM_CTRL | 6735 | 设置扫描倍率（保存当前光学倍率为扫描倍率） | 4字节(DWORD)通道号
NET_DVR_GET_SCANZOOM_CTRL | 6736 | 获取扫描倍率（将预览界面中的光学倍率返回到当前扫描倍率） | 4字节(DWORD)通道号
NET_DVR_DEL_FIRESHIELDMASK_CTRL | 6737 | 删除火点屏蔽区域 | NET_SDK_FIRESHIELDMASK_COND
NET_DVR_DEL_SMOKESHIELDMASK_CTRL | 6738 | 删除烟雾屏蔽区域 | NET_SDK_SMOKESHIELDMASK_COND
  • 设备是否支持火点可见光镜头聚焦变倍能力，可以通过设备能力集进行判断，对应热成像能力集(ThermalCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES，节点：<isFireFocusZoomSupport>。
  • 设备是否支持扫描区域删除能力、进入区域扫描设置能力、确认执行区域扫描设置能力、停止区域扫描设置能力、设置扫描倍率能力、获取扫描倍率能力，可以通过设备能力集进行判断，对应热成像能力集(AreaScan)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_AREASCAN_CAPABILITIES，节点：<isSupportDelAreaScan>、<isSupportInitialization>、<isSupportConfirm>、<isSupportStop>、<isSupportSavaZoom>、<isSupportGetZoom>。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_SET_TRACKINGRATIO | 3610 | 设置从摄像机跟踪倍率 | NET_DVR_SLAVECAMERA_COND
NET_DVR_SET_TRACK_INITPOSTION | 3618 | 设置从摄像机初始跟踪位置 | NET_DVR_TRACK_INITPOSTION
  • 在相机标定完成后（准确的标定需要球机在1倍率下完成)才能设置从摄像机跟踪倍率，实现过程：1）相机标定；2）PTZ操作调整IPD倍率；3）设置联动跟踪倍率（配置信息到IPC，IPC根据跟踪倍率，计算IPD联动跟踪时的倍率，通过SDK协议交互实现IPC控制IPD联动跟踪）。
  • 联动跟踪：在设置联动跟踪倍率的时候，目标在画面中所占的比例是30%；当目标移动的时候，保持目标在画面中显示所占比例为30%。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_SET_ONLINE_UPGRADE | 9301 | 允许在线升级 | NULL
  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。
  • 在线升级过程：
    1）设备注册到服务器，从服务器上获取新版本信息。
    2）客户端登录设备后在通过接口NET_DVR_GetSTDConfig获取可以升级的服务器、版本等信息，然后调用该接口下发命令允许在线升级，升级过程中可以定时获取升级进度。
    3）设备收到可在线升级命令后从服务器下载升级包自行升级。

See Also

NET_DVR_Login_V40


NET_DVR_STDControl

远程控制。

BOOL NET_DVR_STDControl(
  LONG                     lUserID,
  DWORD                    dwCommand,
  LPNET_DVR_STD_CONTROL    lpControlParam
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwCommand
[in] 控制命令，具体定义见“Remarks”说明
lpControlParam
[in&out] 远程控制输入输出参数，不同的控制功能对应不同的输入输出参数，详见“Remarks”说明

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

对于不同的配置功能（dwCommand），lpControlParam中的lpCondBuffer对应不同的内容，具体如下表所示：

dwCommand宏定义 | 宏定义值 | 含义 | lpCondBuffer对应结构体
NET_DVR_DEL_FILE_FROM_DB | 6606 | 从视图库中删除文件 | NET_DVR_FILE_INFO_IN
  • 设备是否支持文件删除功能对应视图库总能力集(VideoImgDBCap)中节点<isSupportDelete>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CAP)。

See Also

NET_DVR_Login_V40


NET_DVR_StopAudioOperate

停止语音上传或者下载。

BOOL NET_DVR_StopAudioOperate(
  LONG   lAudioHandle
);

Parameters

lAudioHandle
[in] 上传或下载句柄，NET_DVR_StartUploadAudio或者NET_DVR_StartDownloadAudio的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartUploadAudio NET_DVR_StartDownloadAudio


NET_DVR_StopDecSpecialCon

停止解码设备动态控制解码连接。

BOOL NET_DVR_StopDecSpecialCon(
  LONG                    lUserID,
  LONG                    lChannel,
  LPNET_DVR_DECCHANINFO   lpDecChanInfo
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号，0xffffffff表示所有的解码通道
lpDecChanInfo
[in] 解码设备通道参数结构体

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V40 NET_DVR_StartDecSpecialCon


NET_DVR_StopGetDevState

停止设备状态巡检。

BOOL NET_DVR_StopGetDevState(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartGetDevState


NET_DVR_StopListen

停止监听。

BOOL NET_DVR_StopListen(
);

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

以下是该接口可能返回的错误值

错误类型 | 错误值 | 错误信息
NET_DVR_NOERROR | 0 | 没有错误。
NET_DVR_NOINIT | 3 | SDK未初始化。
NET_DVR_ORDER_ERROR | 12 | 调用次序错误。
NET_DVR_PARAMETER_ERROR | 17 | 参数错误。SDK接口中给入的输入或输出参数为空。

See Also

NET_DVR_StartListen

Reference Interface

扩展接口可见
NET_DVR_StopListen_V30


NET_DVR_StopRemoteConfig

停止注册。关闭长连接配置接口所创建的句柄，释放资源。

BOOL NET_DVR_StopRemoteConfig(
  LONG    lHandle
);

Parameters

lHandle
[in] 句柄，NET_DVR_StartRemoteConfig的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

所有主机范围内探测器完成注册后调用接口NET_DVR_StopRemoteConfig释放资源。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_StopScreenPic

停止图片回显。

BOOL NET_DVR_StopScreenPic(
  LONG    nScreenPicHandle
);

Parameters

nScreenPicHandle
[in] 图片回显句柄，NET_DVR_StartScreenPic或者NET_DVR_StartPicPreview的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartPicPreview NET_DVR_StartScreenPic


NET_DVR_StopSearchDB

关闭抓拍或人脸数据库的查询或检索，释放资源。

BOOL NET_DVR_StopSearchDB(
  LONG   lHandle
);

Parameters

lHandle
[in] NET_DVR_InquireSnapDBRecord、NET_DVR_SearchSnapDB或NET_DVR_InquireFaceDBRecord、NET_DVR_SearchFaceDB的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_InquireSnapDBRecord NET_DVR_SearchSnapDB

NET_DVR_InquireFaceDBRecord NET_DVR_SearchFaceDB


NET_DVR_StopUpgrade

停止升级。

BOOL NET_DVR_StopUpgrade(
  LONG                        lUserID,
  LPNET_DVR_OPERATE_DEVICE    lpStruOperate,
  LONG                        lUpgradeHandle
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpStruOperate
[in] 设备升级操作参数，dwSubCommand赋值为2
lUpgradeHandle
[in] 设备升级句柄，NET_DVR_StartUpgrade的返回值

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_StartUpgrade


NET_DVR_TextShowCtrl

分布式显示屏显示控制。

BOOL NET_DVR_TextShowCtrl(
  LONG                  lUserID,
  DWORD                 dwDeviceIndex,
  LPNET_DVR_TEXTSHOW    lpText
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDeviceIndex
[in] 分布式子设备ID，不超过16字节
lpText
[in] 显示控制

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


NET_DVR_ThrowBFrame

设置解码时丢弃B帧的个数。

BOOL NET_DVR_ThrowBFrame(
  LONG      lRealHandle,
  DWORD     dwNum
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
dwNum
[in] 丢弃B帧的个数：0－不丢；1－丢1个B帧；2－丢2个B帧

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

在多路播放时，丢B帧可以降低CPU的利用率。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_TransPTZ_EX

透明云台操作，需先启动预览，通过预览连接发送命令（性能比NET_DVR_TransPTZ好，RTSP预览时不支持此功能）。

BOOL NET_DVR_TransPTZ_EX(
  LONG     lRealHandle,
  char     *pPTZCodeBuf,
  DWORD    dwBufSize
);

Parameters

lRealHandle
[in] NET_DVR_RealPlay或NET_DVR_RealPlay_V30的返回值
pPTZCodeBuf
[in] 存放云台控制码缓冲区的指针
dwBufSize
[in] 云台控制码的长度

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

使用该接口能直接通过设备将云台控制码信息直接传输给云台设备，而无需配置解码器。

See Also

NET_DVR_RealPlay NET_DVR_RealPlay_V30


NET_DVR_UpdateBlackList

修改授权和非授权名单信息。

BOOL NET_DVR_UpdateBlackList(
  LONG                         lUserID,
  LONG                         lChannel,
  LPNET_VCA_BLACKLIST_PARA     lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpInter
[in] 授权和非授权名单修改参数信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

dwRegisterID是由接口NET_DVR_FindNextBlackList获得的结果中的ID。

See Also

NET_DVR_Login_V40
NET_DVR_FindNextBlackList


NET_DVR_UpdateBlockList

修改授权和非授权名单信息。

BOOL NET_DVR_UpdateBlockList(
  LONG                         lUserID,
  LONG                         lChannel,
  LPNET_VCA_BLOCKLIST_PARA     lpInter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpInter
[in] 授权和非授权名单修改参数信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

dwRegisterID是由接口NET_DVR_FindNextBlockList获得的结果中的ID。

See Also

NET_DVR_Login_V40
NET_DVR_FindNextBlockList


NET_DVR_UpdateDataBase

修改数据库参数。

BOOL NET_DVR_UpdateDataBase(
  LONG                       lUserID,
  LPNET_VCA_DATABASE_PARAM   lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lpInBuf
[in] 数据库参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remark

目前仅针对第三方库（仅修改数据库名称和属性），抓拍库不支持手动修改。

See Also

NET_DVR_Login_V40


NET_DVR_UpdateFaceDBRecord

修改人脸数据库记录信息。

BOOL NET_DVR_UpdateFaceDBRecord(
  LONG                        lUserID,
  DWORD                       dwDataBaseID,
  LPNET_VCA_DATARECORD_INFO   lpInBuf
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwDataBaseID
[in] 数据库ID
lpInBuf
[in] 数据记录信息

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login_V40


NET_DVR_Upgrade

远程升级设备固件。

LONG NET_DVR_Upgrade(
  LONG   lUserID,
  char   *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
sFileName
[in] 升级的文件路径（包括文件名）。路径长度和操作系统有关，sdk不做限制，windows默认路径长度小于等于256字节（包括文件名在内）。

Return Values

-1表示失败，其他值作为NET_DVR_GetUpgradeState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_Login NET_DVR_Login_V30 NET_DVR_CloseUpgradeHandle
NET_DVR_GetUpgradeState NET_DVR_GetUpgradeProgress

Reference Interface

扩展接口可见

NET_DVR_Upgrade_V40


NET_DVR_Upgrade_V40

远程升级设备固件。

LONG NET_DVR_Upgrade_V40(
  LONG          lUserID,
  DWORD         dwUpgradeType,
  char const    *sFileName,
  void          *pInbuffer,
  DWORD         dwBufferLen
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUpgradeType
[in] 升级类型，具体定义如下：
enum _ENUM_UPGRADE_TYPE{
  ENUM_UPGRADE_DVR           = 0, //普通设备升级
  ENUM_UPGRADE_ADAPTER       = 1, //DVR适配器升级
  ENUM_UPGRADE_VCALIB        = 2, //智能库升级
  ENUM_UPGRADE_OPTICAL       = 3, //光端机升级
  ENUM_UPGRADE_ACS           = 4, //门禁系统升级
  ENUM_UPGRADE_AUXILIARY_DEV = 5  //辅助设备升级
  ENUM_UPGRADE_LED           = 6, //LED发送卡和接收卡升级
  ENUM_UPGRADE_INTELLIGENT   = 7  //中心智能设备升级（ISAPI协议登录下有效）
}ENUM_UPGRADE_TYPE
sFileName
[in] 升级的文件路径（包括文件名）。路径长度和操作系统有关，sdk不做限制，windows默认路径长度小于等于256字节（包括文件名在内）。
pInbuffer
[in] 升级条件缓冲区，不同的升级类型对应不同的升级条件，具体如下表所示
dwUpgradeType | 类型值 | pInbuffer
ENUM_UPGRADE_DVR | 0 | NULL
ENUM_UPGRADE_ADAPTER | 1 | NULL
ENUM_UPGRADE_VCALIB | 2 | 4字节通道号
ENUM_UPGRADE_OPTICAL | 3 | NULL
ENUM_UPGRADE_ACS | 4 | 对应4字节设备编号（0为升级主机，1~8为升级设备下挂的对应485地址的读卡器，10001开始为就地控制器（10001表示就地控制器编号1），20001为主通道控制器，20002为从通道控制器，20003-为升级扩展模块）,30001开始为升级读卡器指纹算法程序
ENUM_UPGRADE_AUXILIARY_DEV | 5 | NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM
ENUM_UPGRADE_LED | 6 | 对应4字节设备类型（1为升级LED发送卡，2为升级LED接收卡）
dwBufferLen
[in] 缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_GetUpgradeState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

设备本身固件升级，对应升级类型：ENUM_UPGRADE_DVR；设备的其他组件或者配件升级，选择其他升级类型，比如便携主机的路由器升级即采用辅助设备升级，对应升级类型：ENUM_UPGRADE_AUXILIARY_DEV。

是否支持门禁功能对应AcsAbility能力集的<ExtensionModuleUpgradeReboot>节点； 扩展模块升级是否需要重启为设备软硬件能力集(BasicCapability能力集的<ExtensionModuleUpgradeReboot>节点。

是否支持门禁功能对应AcsAbility能力集的<channelControllerUpgrade>节点； 升级后是否需要重启为设备软硬件能力集(BasicCapability能力集的<ChannelControllerUpgradeReboot>节点。

对应的能力集：是否支持为AcsAbility能力集<cardReaderFPAlgorithmUpgrade>节点；升级后是否需要重启为设备软硬件能力集(BasicCapability，对应接口：NET_DVR_GetDeviceAbility) 能力集的<CardReaderFPAlgorithmUpgradeReboot>节点。

See Also

NET_DVR_CloseUpgradeHandle NET_DVR_GetUpgradeState NET_DVR_GetUpgradeProgress

Reference Interface

该接口扩展源于

NET_DVR_Upgrade


NET_DVR_UploadFile

上传文件。

LONG NET_DVR_UploadFile(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体
UPLOAD_CERTIFICATE | 1 | 上传证书（WIFI） | NET_DVR_CERT_PARAM
UPLOAD_VIOLATION_FILE | 7 | 上传违法字典文件 | NULL
UPLOAD_AUDIO_FILE | 29 | 上传语音文件 | NULL
UPLOAD_LENS_PARAM_FILE | 63 | 导入镜头参数文件 | NULL

Return Values

-1表示失败，其他值作为NET_DVR_UploadClose和NET_DVR_GetUploadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose

Reference Interface

扩展接口可见
NET_DVR_UploadFile_V40


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（给入绝对路径+文件名，最多128 字节，文件名最多32 字节,含最后的’\0’）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_OFFLINE_CAPTURE_INFO | 56 | 离线采集用户列表导入 | NET_DVR_DOOR_FILE_UPLOAD_PARAM | NULL
  • 设备是否支持上传身份证非授权名单能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportUploadCertificateBlockList>。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_PICTURE_TO_CLOUD | 1 | 上传证书（WIFI等） | NET_DVR_CERT_PARAM | NULL
UPLOAD_PICTURE_TO_CLOUD | 4 | 上传录像文件(云存储模式) | NET_DVR_START_FILE_TO_CLOUD_COND | NET_DVR_UPLOAD_FILE_RET
UPLOAD_VEHICLE_BLOCKALLOWLIST_FILE | 13 | 上传授权和非授权名单配置文件功能 | NULL | NULL
UPLOAD_PICTURE_TO_CLOUD | 15 | 开始上传图片到云存储池 | NET_DVR_START_FILE_TO_CLOUD_COND | NULL

Return Values

-1表示失败，其他值作为NET_DVR_UploadClose和NET_DVR_GetUploadState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

  • 对于上传文件类型UPLOAD_RECORD_FILE，上传录像文件后设备会返回录像文件URL，然后调用NET_DVR_PlayBackByName（接口中sPlayBackFileName直接传返回的URL地址）可实现录像文件回放。
  • 设备是否支持导入授权和非授权名单配置文件能力，对应抓拍相关能力集(TrafficCap)中节点<isSupportPlateList>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_TRAFFIC_CAP)。

See Also

NET_DVR_GetUploadState NET_DVR_UploadClose

Reference Interface

该接口扩展源于
NET_DVR_UploadFile


NET_DVR_UploadFile_V40

上传文件。

LONG NET_DVR_UploadFile_V40(
  LONG      lUserID,
  DWORD     dwUploadType,
  LPVOID    lpInBuffer,
  DWORD     dwInBufferSize,
  char      *sFileName,
  LPVOID    lpOutBuffer,
  DWORD     dwOutBufferSize
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
dwUploadType
[in] 上传文件类型，详细参见下文列表
lpInBuffer
[in] 输入参数。不同的dwUploadType，输入参数不同，具体参见下文列表
dwInBufferSize
[in] 输入缓冲区大小
sFileName
[in] 上传文件的路径（包括文件名）
lpOutBuffer
[out] 输出参数。不同的dwUploadType，输出参数不同，具体参见下文列表
dwOutBufferSize
[in] 输出缓冲区大小

Return Values

-1表示失败，其他值作为NET_DVR_UploadSend、NET_DVR_UploadClose等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

上传文件类型不同，对应不同的命令号（dwUploadType），输入参数也对应不同的结构体，如下表所示：

dwUploadType宏定义 | 宏定义值 | dwUploadType含义 | lpInBuffer对应结构体 | lpOutBuffer对应结构体
UPLOAD_FACE_ANALYSIS_DATA | 37 | 导入图片数据到设备进行人脸抓拍 | NULL | NULL
  • 上传接口调用流程：
    1) 调用NET_DVR_UploadFile_V40开始上传数据。
    2) 上传过程中调用NET_DVR_GetUploadState获取上传状态和进度。
    3) 上传成功之后调用NET_DVR_GetUploadResult获取结果信息（图片ID、识别出来的人脸目标等）。
    4) 调用NET_DVR_UploadClose停止上传，释放资源。
  • 设备是否支持导入图片数据到设备进行人脸抓拍能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<isSuportAnalysisFace>。

See Also

NET_DVR_GetUploadState NET_DVR_GetUploadResult NET_DVR_UploadClose


NET_DVR_VcalibUpgrade

智能库升级。

LONG NET_DVR_VcalibUpgrade(
  LONG         lUserID,
  LONG         lChannel,
  char const   *sFileName
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
sFileName
[in] 升级文件的文件名，文件名长度不能超过100字节

Return Values

-1表示失败，其他值作为NET_DVR_GetUpgradeState等函数的参数。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。

Remarks

该接口主要针对像IPC这类没有DSP的设备。

See Also

NET_DVR_Login NET_DVR_Login_V30 NET_DVR_CloseUpgradeHandle
NET_DVR_GetUpgradeState NET_DVR_GetUpgradeProgres


NET_VPD_SetShutter

设置快门参数。

BOOL NET_VPD_SetShutter(
  LONG                         lUserID
  LONG                         lChannel
  LPNET_VPD_SHUTTER            lpShutter
);

Parameters

lUserID
[in] NET_DVR_Login_V40等登录接口的返回值
lChannel
[in] 通道号
lpShutter
[in] 快门参数

Return Values

TRUE表示成功，FALSE表示失败。接口返回失败请调用NET_DVR_GetLastError获取错误码，通过错误码判断出错原因。


ALARM_EXCEPTION_ERROR_ENUM

报警异常类型。

enum tagALARM_EXCEPTION_ERROR_ENUM{
  ENUM_AEE_PARAM_ERROR = 1, //参数为空
  ENUM_AEE_LENS_ERROR = 2,  //长度不匹配内部结构体
  ENUM_AEE_PIC_LENS_ERROR = 3,   //图片长度不匹配
  ENUM_AEE_TIME_ERROR = 4,   //时间转换错误
  ENUM_AEE_DEVID_LENS_ERROR = 5,   //DeviceID长度不匹配
  ENUM_AEE_NEW_ALLOC_ERROR = 6,   //申请内存失败
  ENUM_AEE_JSON_FORMAT_ERROR = 7,   //JOSN格式错误
  ENUM_AEE_XML_FORMAT_ERROR = 8,   //XML格式错误
  ENUM_AEE_BINARY_PIC_ERROR = 9,   //二进制图片数据处理异常
  ENUM_AEE_GET_BOUNDARY_ERROR = 10,   //提取boundary数据异常
}ALARM_EXCEPTION_ERROR_ENUM


ATM_PROTO_TYPE

ATM协议类型。

enum _ATM_PROTO_TYPE_{
  ATM_PROTO_DIEBOLD         = 1,  //DIEBOLD
  ATM_PROTO_WINCOR_NIXDORF  = 2,  //WINCOR-NIXDORF
  ATM_PROTO_SIEMENS         = 4,  //SIEMENS
  ATM_PROTO_OLIVETTI        = 5,  //OLIVETTI
  ATM_PROTO_FUJITSU         = 6,  //FUJITSU
  ATM_PROTO_HITACHI         = 7,  //HITACHI
  ATM_PROTO_SMI             = 8,  //SMI
  ATM_PROTO_BULL            = 9,  //BULL
  ATM_PROTO_YIHUA           = 10,  //怡化
  ATM_PROTO_LIDE            = 11,  //立德
  ATM_PROTO_GDYT            = 12,  //广电运通
  ATM_PROTO_MINI_BANL       = 13,  //Mini-Banl
  ATM_PROTO_GUANGLI         = 14,  //广利
  ATM_PROTO_DONGXIN         = 15,  //东信
  ATM_PROTO_CHENTONG        = 16,  //辰通
  ATM_PROTO_NANTIAN         = 17,  //南天
  ATM_PROTO_XIAOXING        = 18,  //晓星
  ATM_PROTO_GZYY            = 19,  //广州御银
  ATM_PROTO_QHTLT           = 20,  //青湖泰利特
  ATM_PROTO_DRS918          = 21,  //DRS918
  ATM_PROTO_KALATEL         = 22,  //KALATEL
  ATM_PROTO_NCR_2           = 23,  //NCR_2
  ATM_PROTO_NXS             = 24,  //NXS
  ATM_PROTO_ICBC            = 25,  //工商银行
  ATM_PROTO_PSBC            = 26,  //中国邮政储蓄银行
  ATM_PROTO_CUSTOM          = 1025 //自定义
}ATM_PROTO_TYPE

See Also

NET_DVR_ATM_PROTO_TYPE


BITRATE_ENCODE_INDEX

音频编码码率。

enum _BITRATE_ENCODE_INDEX_{
  BITRATE_ENCODE_def    = 0,  //默认
  BITRATE_ENCODE_8kps   = 1,  //8kbs
  BITRATE_ENCODE_16kps  = 2,  //16kps
  BITRATE_ENCODE_32kps  = 3,  //32kps
  BITRATE_ENCODE_64kps  = 4,  //64kps
  BITRATE_ENCODE_128kps = 5,  //128kps
  BITRATE_ENCODE_192kps = 6,  //192kps
  BITRATE_ENCODE_40kps  = 7,  //40kps
  BITRATE_ENCODE_48kps  = 8,  //48kps
  BITRATE_ENCODE_56kps  = 9,  //56kps
  BITRATE_ENCODE_80kps  = 10, //80kps
  BITRATE_ENCODE_96kps  = 11, //96kps
  BITRATE_ENCODE_112kps = 12, //112kps
  BITRATE_ENCODE_144kps = 13, //144kps
  BITRATE_ENCODE_160kps = 14, //160kps
  BITRATE_ENCODE_224kps = 15, //224kps
  BITRATE_ENCODE_256kps = 16, //256kps
  BITRATE_ENCODE_320kps = 17  //320kps
}BITRATE_ENCODE_INDEX

See Also

NET_DVR_COMPRESSION_AUDIO


BV_CALIBRATION_TYPE_ENUM

双目标定类型枚举。

enum _BV_CALIBRATION_TYPE_ENUM_{
  ENUM_BV_CALIBRATION_NONE    = 0,
  ENUM_BV_CALIBRATION_DIRECT  = 1,
  ENUM_BV_CALIBRATION_SAMPLE  = 2
}BV_CALIBRATION_TYPE_ENUM
ENUM_BV_CALIBRATION_NONE
未标定
ENUM_BV_CALIBRATION_DIRECT
双目直接标定
ENUM_BV_CALIBRATION_SAMPLE
双目样本标定

Remarks

  • 当标定类型为ENUM_BV_CALIBRATION_DIRECT时，标定信息配置相关接口：NET_DVR_GetDVRConfig(命令：NET_DVR_GET_CALIBRATION)、NET_DVR_SetDVRConfig(命令：NET_DVR_SET_CALIBRATION)。
  • 当标定类型为ENUM_BV_CALIBRATION_SAMPLE时，标定信息配置相关接口：NET_DVR_RemoteControl(命令：NET_DVR_CONTROL_BV_SAMPLE_CALIB)。

    • See Also

    NET_DVR_GetDVRConfig


COUNTRY_INDEX

国家和地区索引值。

enum _COUNTRY_INDEX_{
  COUNTRY_NONSUPPORT   = 0,    //算法库不支持牌识国家和地区
  /*欧洲，48个国家和地区，其中塞浦路斯(Cyprus)属于亚欧两洲交界国家*/
  COUNTRY_CZE          = 1,    //Czech Republic 捷克共和国
  COUNTRY_FRA          = 2,    //France 法国
  COUNTRY_DEU          = 3,    //Germany 德国
  COUNTRY_ESP          = 4,    //Spain  西班牙
  COUNTRY_ITA          = 5,    //Italy  意大利
  COUNTRY_NLD          = 6,    ///Netherlands 荷兰
  COUNTRY_POL          = 7,    //Poland  波兰
  COUNTRY_SVK          = 8,    //Slovakia  斯洛伐克
  COUNTRY_BLR          = 9,    //Belorussia  白俄罗斯
  COUNTRY_MDA          = 10,   //Moldova  摩尔多瓦
  COUNTRY_RUS          = 11,   //Russia  俄罗斯
  COUNTRY_UKR          = 12,   //Ukraine  乌克兰
  COUNTRY_BEL          = 13,   //Belgium  比利时
  COUNTRY_BGR          = 14,   //Bulgaria  保加利亚
  COUNTRY_DNK          = 15,   //Denmark  丹麦
  COUNTRY_FIN          = 16,   //Finland  芬兰
  COUNTRY_GBR          = 17,   //Great Britain  英国
  COUNTRY_GRC          = 18,   //Greece  希腊
  COUNTRY_HRV          = 19,   //Croatia  克罗地亚
  COUNTRY_HUN          = 20,   //Hungary  匈牙利
  COUNTRY_ISR          = 21,   //Israel  以色列
  COUNTRY_LUX          = 22,   //Luxembourg  卢森堡
  COUNTRY_MKD          = 23,   //Macedonia  马其顿共和国
  COUNTRY_NOR          = 24,   //Norway  挪威
  COUNTRY_PRT          = 25,   //Portugal  葡萄牙
  COUNTRY_ROU          = 26,   //Romania  多马尼亚
  COUNTRY_SRB          = 27,   //Serbia  塞尔维亚
  COUNTRY_AZE          = 28,   //Azerbaijan 阿塞邦疆共和国
  COUNTRY_GEO          = 29,   //Georgia  即格鲁吉亚
  COUNTRY_KAZ          = 30,   //Kazakhstan 哈萨克斯坦
  COUNTRY_LTU          = 31,   //Lithuania 立陶宛共和国
  COUNTRY_TKM          = 32,   //Turkmenistan 土库曼斯坦
  COUNTRY_UZB          = 33,   //Uzbekistan 乌兹别克斯坦
  COUNTRY_LVA          = 34,   //Latvia 拉脱维亚
  COUNTRY_EST          = 35,   //Estonia 爱沙尼亚
  COUNTRY_ALB          = 36,   //Albania 阿尔巴尼亚
  COUNTRY_AUT          = 37,   //Austria 奥地利
  COUNTRY_BIH          = 38,   //Bosnia and Herzegovina 波斯尼亚和黑塞哥维那
  COUNTRY_IRL          = 39,   //Ireland 爱尔兰
  COUNTRY_ISL          = 40,   //Iceland 冰岛
  COUNTRY_VAT          = 41,   //Vatican 梵蒂冈
  COUNTRY_MLT          = 42,   //Malta 马耳他
  COUNTRY_SWE          = 43,   //Sweden 瑞典
  COUNTRY_CHE          = 44,   //Switzerland 瑞士
  COUNTRY_CYP          = 45,   //Cyprus 塞浦路斯
  COUNTRY_TUR          = 46,   //Turkey 土耳其
  COUNTRY_SVN          = 47,   //Slovenia 斯洛文尼亚
  COUNTRY_MTG          = 48,   //Montenegro 黑山共和国
  COUNTRY_KOV          = 49,   //Kosovo 科索沃
  COUNTRY_ADR          = 50,   //Andorra 安道尔
  COUNTRY_ARM          = 51,   //Armenia 亚美尼亚(亚洲)
  COUNTRY_MON          = 52,   //Monaco 摩纳哥
  COUNTRY_LIE          = 53,   //Liechtenstein 列支敦士登
  COUNTRY_SMO          = 54,   //San Marino 圣马力诺
  COUNTRY_RES1         = 55,   //保留字段
  COUNTRY_RES2         = 56,   //保留字段
  COUNTRY_RES3         = 57,   //保留字段
  COUNTRY_RES4         = 58,   //保留字段
  /*亚洲 48个国家和地区 其中 塞浦路斯(Cyprus)属于亚欧两洲交界国家*/
  COUNTRY_CHI          = 59,   //China 中国
  COUNTRY_IBN          = 60,   //In bahrain 巴林
  COUNTRY_SKR          = 61,   //South Korea 韩国
  COUNTRY_LEB          = 62,   //Lebanon 黎巴嫩
  COUNTRY_NEP          = 63,   //Nepal 尼泊尔
  COUNTRY_THA          = 64,   //Thailand 泰国
  COUNTRY_PAK          = 65,   //Pakistan 巴基斯坦
  COUNTRY_EMI          = 66,   //The united Arab emirates 阿拉伯联合酋长国
  COUNTRY_BHU          = 67,   //Bhutan 不丹
  COUNTRY_OMA          = 68,   //Oman 阿曼
  COUNTRY_KOR          = 69,   //North Korea 朝鲜
  COUNTRY_PHI          = 70,   //The Philippines 菲律宾
  COUNTRY_CAM          = 71,   //Cambodia 柬埔寨
  COUNTRY_QAT          = 72,   //Qatar 卡塔尔
  COUNTRY_KYR          = 73,   //Kyrgyzstan 吉尔吉斯斯坦
  COUNTRY_MAL          = 74,   //The maldives 马尔代夫
  COUNTRY_MLY          = 75,   //Malaysia 马来西亚
  COUNTRY_MOG          = 76,   //Mongolia 蒙古
  COUNTRY_ARA          = 77,   //Saudi Arabia 沙特阿拉伯
  COUNTRY_BRU          = 78,   //brunei 文莱
  COUNTRY_LAO          = 79,   //Laos 老挝
  COUNTRY_JAP          = 80,   //Japan 日本
  COUNTRY_RES19        = 81,   //保留字段
  COUNTRY_PAS          = 82,   //Palestinian state 巴勒斯坦国
  COUNTRY_TAJ          = 83,   //Tajikistan 塔吉克斯坦
  COUNTRY_KUW          = 84,   //Kuwait 科威特
  COUNTRY_SYR          = 85,   //Syria 叙利亚
  COUNTRY_IND          = 86,   //India 印度
  COUNTRY_ISA          = 87,   //Indonesia 印度尼西亚
  COUNTRY_AFG          = 88,   //Afghanistan 阿富汗
  COUNTRY_LAN          = 89,   //Sri Lanka 斯里兰卡
  COUNTRY_IRQ          = 90,   //Iraq 伊拉克
  COUNTRY_VIE          = 91,   //Vietnam 越南
  COUNTRY_IRA          = 92,   //Iran 伊朗
  COUNTRY_YEM          = 93,   //yemen 也门
  COUNTRY_JOR          = 94,   //Jordan 约旦
  COUNTRY_BUR          = 95,   //Burma 缅甸
  COUNTRY_SIK          = 96,   //Sikkim 锡金
  COUNTRY_BAN          = 97,   //Bangladesh 孟加拉国
  COUNTRY_SGA          = 98,   //Singapore 新加坡
  COUNTRY_EAT          = 99,   //East timor 东帝汶（已宣布独立，但世界上许多国家不承认）
  COUNTRY_RES5         = 100,  //保留字段
  COUNTRY_RES6         = 101,  //保留字段
  COUNTRY_RES7         = 102,  //保留字段
  COUNTRY_RES8         = 103,  //保留字段
  /*非洲 60个国家和地区*/
  COUNTRY_EGT          = 104,  //Egypt 埃及
  COUNTRY_LIY          = 105,  //Libya 利比亚
  COUNTRY_SUA          = 106,  //Sudan 苏丹
  COUNTRY_TUN          = 107,  //Tunisia 突尼斯
  COUNTRY_ALG          = 108,  //Algeria 阿尔及利亚
  COUNTRY_MCC          = 109,  //Morocco 摩洛哥
  COUNTRY_ETH          = 110,  //Ethiopia 埃塞俄比亚
  COUNTRY_ERI          = 111,  //Eritrea 厄立特里亚
  COUNTRY_SDE          = 112,  //Somalia Democratic 索马里
  COUNTRY_DJI          = 113,  //Djibouti 吉布提
  COUNTRY_KEN          = 114,  //Kenya 肯尼亚
  COUNTRY_TAI          = 115,  //Tanzania 坦桑尼亚
  COUNTRY_UGA          = 116,  //Uganda 乌干达
  COUNTRY_RWA          = 117,  //Rwanda 卢旺达
  COUNTRY_BUD          = 118,  //Burundi 布隆迪
  COUNTRY_SEY          = 119,  //Seychelles 塞舌尔
  COUNTRY_CHA          = 120,  //Chad 乍得
  COUNTRY_CEA          = 121,  //Central African 中非
  COUNTRY_CON          = 122,  //Cameroon 喀麦隆
  COUNTRY_EQG          = 123,  //Equatorial Guinea赤道几内亚
  COUNTRY_GAB          = 124,  //Gabon 加蓬
  COUNTRY_TCO          = 125,  //the Congo 刚果共和国（即：刚果（布））
  COUNTRY_DRC          = 126,  //Democratic Republic of the Congo 刚果民主共和国（即：刚果（金））
  COUNTRY_STP          = 127,  //Sao Tome and Principe 圣多美和普林西比
  COUNTRY_MAN          = 128,  //Mauritania 毛里塔尼亚
  COUNTRY_WSA          = 129,  //Western Sahara 西撒哈拉（撒拉威）
  COUNTRY_SEL          = 130,  //Senegal 塞内加尔
  COUNTRY_TGA          = 131,  //the Gambia 冈比亚
  COUNTRY_MAI          = 132,  //Mali 马里
  COUNTRY_BUF          = 133,  //Burkina Faso 布基纳法索
  COUNTRY_GUI          = 134,  //Guinea 几内亚
  COUNTRY_GUB          = 135,  //Guinea-Bissau 几内亚比绍
  COUNTRY_CAV          = 136,  //Cape Verde 佛得角
  COUNTRY_SLE          = 137,  //Sierra Leone 塞拉利昂
  COUNTRY_LIR          = 138,  //Liberia 利比里亚
  COUNTRY_IVC          = 139,  //Ivory Coast 科特迪瓦
  COUNTRY_GHA          = 140,  //Ghana 加纳
  COUNTRY_TGO          = 141,  //Togo 多哥
  COUNTRY_BEN          = 142,  //Benin 贝宁
  COUNTRY_NIG          = 143,  //Niger 尼日尔
  COUNTRY_ZAB          = 144,  //Zambia 赞比亚
  COUNTRY_ANG          = 145,  //Angola 安哥拉
  COUNTRY_ZBE          = 146,  //Zimbabwe 津巴布韦
  COUNTRY_MAW          = 147,  //Malawi 马拉维
  COUNTRY_MOQ          = 148,  //Mozambique 莫桑比克
  COUNTRY_BOT          = 149,  //Botswana 博茨瓦纳
  COUNTRY_NAM          = 150,  //Namibia 纳米比亚
  COUNTRY_SAF          = 151,  //South Africa 南非
  COUNTRY_SWD          = 152,  //Swaziland 斯威士兰
  COUNTRY_LES          = 153,  //Lesotho 莱索托
  COUNTRY_MAG          = 154,  //Madagasca 马达加斯加
  COUNTRY_UOC          = 155,  //Union of Comoros 科摩罗
  COUNTRY_MAT          = 156,  //Mauritius 毛里求斯
  COUNTRY_NGE          = 157,  //Nigeria 尼日利亚
  COUNTRY_SSD          = 158,  //South Sudan 南苏丹
  COUNTRY_SAH          = 159,  //Saint Helena 圣赫勒拿（英国海外省）
  COUNTRY_MYT          = 160,  //Mayotte 马约特（法国海外省）
  COUNTRY_REN          = 161,  //Reunion 留尼旺（法国海外省）
  COUNTRY_CAI          = 162,  //Canary Islands 加那利群岛（西班牙海外领土）
  COUNTRY_AZO          = 163,  //AZORES 亚速尔群岛（北大西洋非洲西海岸（葡萄牙））
  COUNTRY_MAD          = 164,  //Madeira 马德拉群岛（北大西洋非洲西海岸（葡萄牙））
  COUNTRY_RES9         = 165,  //保留字段
  COUNTRY_RES10        = 166,  //保留字段
  COUNTRY_RES11        = 167,  //保留字段
  COUNTRY_RES12        = 168,  //保留字段
  /*美洲 55个国家和地区*/
  COUNTRY_CAD          = 169,  //Canada 加拿大
  COUNTRY_GRE          = 170,  //Greenland Nuuk 格陵兰（丹麦王国的海外自治领土）
  COUNTRY_PIE          = 171,  //Pierre and Miquelon 圣皮埃尔和密克隆（法国海外领土）
  COUNTRY_USA          = 172,  //United States 美国
  COUNTRY_BER          = 173,  //Bermuda 百慕大（英国海外领土）
  COUNTRY_MEX          = 174,  //Mexico 墨西哥
  COUNTRY_GUA          = 175,  //Guatemala 危地马拉
  COUNTRY_BLI          = 176,  //Belize 伯利兹
  COUNTRY_SAR          = 177,  //El Salvador 萨尔瓦多
  COUNTRY_HOR          = 178,  //Honduras 洪都拉斯
  COUNTRY_NIC          = 179,  //Nicaragua 尼加拉瓜
  COUNTRY_COR          = 180,  //Costa Rica 哥斯达黎加
  COUNTRY_PAN          = 181,  //Panama 巴拿马
  COUNTRY_TBM          = 182,  //The Bahamas 巴哈马
  COUNTRY_TCI          = 183,  //The Turks and Caicos Islands 特克斯群岛和凯科斯群岛（英国海外领土）
  COUNTRY_CUB          = 184,  //Cuba 古巴
  COUNTRY_JAM          = 185,  //Jamaica 牙买加
  COUNTRY_CAY          = 186,  //Cayman Islands 开曼群岛（英国海外领土）
  COUNTRY_HAT          = 187,  //Haiti 海地
  COUNTRY_TDO          = 188,  //The Dominican 多米尼加
  COUNTRY_PUR          = 189,  //Puerto Rico 波多黎各（美国海外领土）
  COUNTRY_VIL          = 190,  //The United States Virgin Islands美属维尔京群岛
  COUNTRY_BVI          = 191,  //The British Virgin Islands 英属维尔京群岛
  COUNTRY_ATV          = 192,  //Anguilla The Valley 安圭拉（英国海外领土）
  COUNTRY_ANB          = 193,  //Antigua and Barbuda 安提瓜和巴布达
  COUNTRY_CSM          = 194,  //Collectivité de Saint-Martin 法属圣马丁（法国海外领土）
  COUNTRY_ACY          = 195,  //Autonomous country 荷属圣马丁（荷兰王国的自治国 ）
  COUNTRY_SBY          = 196,  //Saint-Barthélemy 圣巴泰勒米岛（法国海外领土）
  COUNTRY_SKN          = 197,  //Saint Kitts and Nevis 圣基茨和尼维斯
  COUNTRY_MOT          = 198,  //Montserrat 蒙特塞拉特（英国海外领土）
  COUNTRY_GLP          = 199,  //Guadeloupe 瓜德罗普（法国海外领土）
  COUNTRY_DOM          = 200,  //Dominica 多米尼克
  COUNTRY_MTE          = 201,  //Martinique 马提尼克（法国海外领土）
  COUNTRY_LUC          = 202,  //St. Lucia 圣卢西亚
  COUNTRY_SVG          = 203,  //Saint Vincent and the Grenadines 圣文森特和格林纳丁斯
  COUNTRY_GRD          = 204,  //Grenada 格林纳达
  COUNTRY_BAR          = 205,  //Barbados 巴巴多斯
  COUNTRY_TRT          = 206,  //Trinidad and Tobago 特立尼达和多巴哥
  COUNTRY_CUR          = 207,  //Cura?ao 库拉索（荷兰王国的一个自治国）
  COUNTRY_ARB          = 208,  //Aruba 阿鲁巴（荷兰王国的一个自治国）
  COUNTRY_NEA          = 209,  //Netherlands Antilles 荷属安的列斯
  COUNTRY_COL          = 210,  //Colombia 哥伦比亚
  COUNTRY_VEN          = 211,  //Venezuela 委内瑞拉
  COUNTRY_GUY          = 212,  //Guyana 圭亚那
  COUNTRY_SUR          = 213,  //Suriname 苏里南
  COUNTRY_FRN          = 214,  //Guyane Francaise 法属圭亚那
  COUNTRY_ECU          = 215,  //Ecuador 厄瓜多尔
  COUNTRY_PER          = 216,  //Peru 秘鲁
  COUNTRY_BOL          = 217,  //Bolivia 玻利维亚
  COUNTRY_PAR          = 218,  //Paraguay 巴拉圭
  COUNTRY_CLE          = 219,  //Chile 智利
  COUNTRY_BRA          = 220,  //Brazil 巴西
  COUNTRY_UGY          = 221,  //Uruguay 乌拉圭
  COUNTRY_ARG          = 222,  //Argentina 阿根廷
  COUNTRY_RES13        = 223,  //保留字段
  COUNTRY_RES14        = 224,  //保留字段
  COUNTRY_RES15        = 225,  //保留字段
  COUNTRY_RES16        = 226,  //保留字段
  /*大洋洲 25个国家和地区 */
  COUNTRY_ATN          = 227,  //Australien 澳大利亚
  COUNTRY_NED          = 228,  //Neuseeland 新西兰
  COUNTRY_PNG          = 229,  //Papua New Guinea 巴布亚新几内亚
  COUNTRY_SAN          = 230,  //Salomonen 所罗门群岛
  COUNTRY_VAU          = 231,  //Vanuatu 瓦努阿图
  COUNTRY_NCN          = 232,  //New Caledonia 新喀里多尼亚（法国的海外属地）
  COUNTRY_PAU          = 233,  //Palau 帕劳
  COUNTRY_FSM          = 234,  //Federated States of Micronesia 密克罗尼西亚联邦
  COUNTRY_MRI          = 235,  //Marshall Island  马绍尔群岛
  COUNTRY_CNM          = 236,  //Commonwealth of the Northern Mariana Islands 北马里亚纳群岛（美国的海外属地）
  COUNTRY_TEG          = 237,  //The Territory of Guahan 关岛（美国的海外属地）
  COUNTRY_NUR          = 238,  //Nauru 瑙鲁
  COUNTRY_KIB          = 239,  //Kiribati 基里巴斯
  COUNTRY_FID          = 240,  //Fidschi 斐济群岛
  COUNTRY_TNG          = 241,  //Tonga 汤加
  COUNTRY_TUV          = 242,  //Tuvalu 图瓦卢
  COUNTRY_WEF          = 243,  //Wallis et Futuna  瓦利斯和富图纳（法国的海外属地）
  COUNTRY_TIS          = 244,  //The Independent State of Samoa 萨摩亚
  COUNTRY_EAS          = 245,  //Eastern Samoa 美属萨摩亚
  COUNTRY_TOE          = 246,  //Tokelau 托克劳（新西兰）
  COUNTRY_NUE          = 247,  //Niue 纽埃（新西兰）
  COUNTRY_TCD          = 248,  //The Cook Islands 库克群岛（新西兰）
  COUNTRY_PFP          = 249,  //Polynésie fran?aiseFrench Polynesia 法属波利尼西亚
  COUNTRY_PID          = 250,  //Pitcairn Islands 皮特凯恩群岛（英国的海外属地）
  COUNTRY_HAW          = 251,  //Hawaii State 夏威夷（美国的海外属地）
  COUNTRY_RES17        = 252,  //保留字段
  COUNTRY_INVALID = 0xfd, //字段无效，需要使用扩展字段CR_INDEX
  COUNTRY_UNRECOGNIZED = 0xfe, //Unrecognized 无法识别
  COUNTRY_ALL          = 0xff  //ALL 全部
}COUNTRY_INDEX

See Also

NET_DVR_FIND_PICTURE_PARAM


CR_INDEX

国家/区域索引值。

typedef enum _CR_INDEX_{
  CR_NONSUPPORT   = 0,    //算法库不支持牌识国家和地区
  /*五大洲 一共有235国家和地区 */
  /*欧洲，48个国家和地区，其中塞浦路斯(Cyprus)属于亚欧两洲交界国家*/
  CR_CZE          = 1,    //Czech Republic 捷克共和国
  CR_FRA          = 2,    //France 法国
  CR_DEU          = 3,    //Germany 德国
  CR_ESP          = 4,    //Spain  西班牙
  CR_ITA          = 5,    //Italy  意大利
  CR_NLD          = 6,    ///Netherlands 荷兰
  CR_POL          = 7,    //Poland  波兰
  CR_SVK          = 8,    //Slovakia  斯洛伐克
  CR_BLR          = 9,    //Belorussia  白俄罗斯
  CR_MDA          = 10,   //Moldova  摩尔多瓦
  CR_RUS          = 11,   //Russia  俄罗斯
  CR_UKR          = 12,   //Ukraine  乌克兰
  CR_BEL          = 13,   //Belgium  比利时
  CR_BGR          = 14,   //Bulgaria  保加利亚
  CR_DNK          = 15,   //Denmark  丹麦
  CR_FIN          = 16,   //Finland  芬兰
  CR_GBR          = 17,   //Great Britain  英国
  CR_GRC          = 18,   //Greece  希腊
  CR_HRV          = 19,   //Croatia  克罗地亚
  CR_HUN          = 20,   //Hungary  匈牙利
  CR_ISR          = 21,   //Israel  以色列
  CR_LUX          = 22,   //Luxembourg  卢森堡
  CR_MKD          = 23,   //Macedonia  马其顿共和国
  CR_NOR          = 24,   //Norway  挪威
  CR_PRT          = 25,   //Portugal  葡萄牙
  CR_ROU          = 26,   //Romania  多马尼亚
  CR_SRB          = 27,   //Serbia  塞尔维亚
  CR_AZE          = 28,   //Azerbaijan 阿塞邦疆共和国
  CR_GEO          = 29,   //Georgia  即格鲁吉亚
  CR_KAZ          = 30,   //Kazakhstan 哈萨克斯坦
  CR_LTU          = 31,   //Lithuania 立陶宛共和国
  CR_TKM          = 32,   //Turkmenistan 土库曼斯坦
  CR_UZB          = 33,   //Uzbekistan 乌兹别克斯坦
  CR_LVA          = 34,   //Latvia 拉脱维亚
  CR_EST          = 35,   //Estonia 爱沙尼亚
  CR_ALB          = 36,   //Albania 阿尔巴尼亚
  CR_AUT          = 37,   //Austria 奥地利
  CR_BIH          = 38,   //Bosnia and Herzegovina 波斯尼亚和黑塞哥维那
  CR_IRL          = 39,   //Ireland 爱尔兰
  CR_ISL          = 40,   //Iceland 冰岛
  CR_VAT          = 41,   //Vatican 梵蒂冈
  CR_MLT          = 42,   //Malta 马耳他
  CR_SWE          = 43,   //Sweden 瑞典
  CR_CHE          = 44,   //Switzerland 瑞士
  CR_CYP          = 45,   //Cyprus 塞浦路斯
  CR_TUR          = 46,   //Turkey 土耳其
  CR_SVN          = 47,   //Slovenia 斯洛文尼亚
  CR_MTG          = 48,   //Montenegro 黑山共和国
  CR_KOV          = 49,   //Kosovo 科索沃
  CR_ADR          = 50,   //Andorra 安道尔
  CR_ARM          = 51,   //Armenia 亚美尼亚(亚洲)
  CR_MON          = 52,   //Monaco 摩纳哥
  CR_LIE          = 53,   //Liechtenstein 列支敦士登
  CR_SMO          = 54,   //San Marino 圣马力诺
  CR_RES1         = 55,   //保留字段
  CR_RES2         = 56,   //保留字段
  CR_RES3         = 57,   //保留字段
  CR_RES4         = 58,   //保留字段
  /*亚洲 48个国家和地区 其中 塞浦路斯(Cyprus)属于亚欧两洲交界国家*/
  CR_CHI          = 59,   //China 中国
  CR_IBN          = 60,   //In bahrain 巴林
  CR_SKR          = 61,   //South Korea 韩国
  CR_LEB          = 62,   //Lebanon 黎巴嫩
  CR_NEP          = 63,   //Nepal 尼泊尔
  CR_THA          = 64,   //Thailand 泰国
  CR_PAK          = 65,   //Pakistan 巴基斯坦
  CR_EMI          = 66,   //The united Arab emirates 阿拉伯联合酋长国
  CR_BHU          = 67,   //Bhutan 不丹
  CR_OMA          = 68,   //Oman 阿曼
  CR_KOR          = 69,   //North Korea 朝鲜
  CR_PHI          = 70,   //The Philippines 菲律宾
  CR_CAM          = 71,   //Cambodia 柬埔寨
  CR_QAT          = 72,   //Qatar 卡塔尔
  CR_KYR          = 73,   //Kyrgyzstan 吉尔吉斯斯坦
  CR_MAL          = 74,   //The maldives 马尔代夫
  CR_MLY          = 75,   //Malaysia 马来西亚
  CR_MOG          = 76,   //Mongolia 蒙古
  CR_ARA          = 77,   //Saudi Arabia 沙特阿拉伯
  CR_BRU          = 78,   //brunei 文莱
  CR_LAO          = 79,   //Laos 老挝
  CR_JAP          = 80,   //Japan 日本
  CR_RES19        = 81,   //保留字段
  CR_PAS          = 82,   //Palestinian state 巴勒斯坦国
  CR_TAJ          = 83,   //Tajikistan 塔吉克斯坦
  CR_KUW          = 84,   //Kuwait 科威特
  CR_SYR          = 85,   //Syria 叙利亚
  CR_IND          = 86,   //India 印度
  CR_ISA          = 87,   //Indonesia 印度尼西亚
  CR_AFG          = 88,   //Afghanistan 阿富汗
  CR_LAN          = 89,   //Sri Lanka 斯里兰卡
  CR_IRQ          = 90,   //Iraq 伊拉克
  CR_VIE          = 91,   //Vietnam 越南
  CR_IRA          = 92,   //Iran 伊朗
  CR_YEM          = 93,   //yemen 也门
  CR_JOR          = 94,   //Jordan 约旦
  CR_BUR          = 95,   //Burma 缅甸
  CR_SIK          = 96,   //Sikkim 锡金
  CR_BAN          = 97,   //Bangladesh 孟加拉国
  CR_SGA          = 98,   //Singapore 新加坡
  CR_EAT          = 99,   //East timor 东帝汶（已宣布独立，但世界上许多国家不承认）
  CR_RES5         = 100,  //保留字段
  CR_RES6         = 101,  //保留字段
  CR_RES7         = 102,  //保留字段
  CR_RES8         = 103,  //保留字段
  /*非洲 60个国家和地区*/
  CR_EGT          = 104,  //Egypt 埃及
  CR_LIY          = 105,  //Libya 利比亚
  CR_SUA          = 106,  //Sudan 苏丹
  CR_TUN          = 107,  //Tunisia 突尼斯
  CR_ALG          = 108,  //Algeria 阿尔及利亚
  CR_MCC          = 109,  //Morocco 摩洛哥
  CR_ETH          = 110,  //Ethiopia 埃塞俄比亚
  CR_ERI          = 111,  //Eritrea 厄立特里亚
  CR_SDE          = 112,  //Somalia Democratic 索马里
  CR_DJI          = 113,  //Djibouti 吉布提
  CR_KEN          = 114,  //Kenya 肯尼亚
  CR_TAI          = 115,  //Tanzania 坦桑尼亚
  CR_UGA          = 116,  //Uganda 乌干达
  CR_RWA          = 117,  //Rwanda 卢旺达
  CR_BUD          = 118,  //Burundi 布隆迪
  CR_SEY          = 119,  //Seychelles 塞舌尔
  CR_CHA          = 120,  //Chad 乍得
  CR_CEA          = 121,  //Central African 中非
  CR_CON          = 122,  //Cameroon 喀麦隆
  CR_EQG          = 123,  //Equatorial Guinea赤道几内亚
  CR_GAB          = 124,  //Gabon 加蓬
  CR_TCO          = 125,  //the Congo 刚果共和国（即：刚果（布））
  CR_DRC          = 126,  //Democratic Republic of the Congo 刚果民主共和国（即：刚果（金））
  CR_STP          = 127,  //Sao Tome and Principe 圣多美和普林西比
  CR_MAN          = 128,  //Mauritania 毛里塔尼亚
  CR_WSA          = 129,  //Western Sahara 西撒哈拉（撒拉威）
  CR_SEL          = 130,  //Senegal 塞内加尔
  CR_TGA          = 131,  //the Gambia 冈比亚
  CR_MAI          = 132,  //Mali 马里
  CR_BUF          = 133,  //Burkina Faso 布基纳法索
  CR_GUI          = 134,  //Guinea 几内亚
  CR_GUB          = 135,  //Guinea-Bissau 几内亚比绍
  CR_CAV          = 136,  //Cape Verde 佛得角
  CR_SLE          = 137,  //Sierra Leone 塞拉利昂
  CR_LIR          = 138,  //Liberia 利比里亚
  CR_IVC          = 139,  //Ivory Coast 科特迪瓦
  CR_GHA          = 140,  //Ghana 加纳
  CR_TGO          = 141,  //Togo 多哥
  CR_BEN          = 142,  //Benin 贝宁
  CR_NIG          = 143,  //Niger 尼日尔
  CR_ZAB          = 144,  //Zambia 赞比亚
  CR_ANG          = 145,  //Angola 安哥拉
  CR_ZBE          = 146,  //Zimbabwe 津巴布韦
  CR_MAW          = 147,  //Malawi 马拉维
  CR_MOQ          = 148,  //Mozambique 莫桑比克
  CR_BOT          = 149,  //Botswana 博茨瓦纳
  CR_NAM          = 150,  //Namibia 纳米比亚
  CR_SAF          = 151,  //South Africa 南非
  CR_SWD          = 152,  //Swaziland 斯威士兰
  CR_LES          = 153,  //Lesotho 莱索托
  CR_MAG          = 154,  //Madagasca 马达加斯加
  CR_UOC          = 155,  //Union of Comoros 科摩罗
  CR_MAT          = 156,  //Mauritius 毛里求斯
  CR_NGE          = 157,  //Nigeria 尼日利亚
  CR_SSD          = 158,  //South Sudan 南苏丹
  CR_SAH          = 159,  //Saint Helena 圣赫勒拿（英国海外省）
  CR_MYT          = 160,  //Mayotte 马约特（法国海外省）
  CR_REN          = 161,  //Reunion 留尼旺（法国海外省）
  CR_CAI          = 162,  //Canary Islands 加那利群岛（西班牙海外领土）
  CR_AZO          = 163,  //AZORES 亚速尔群岛（北大西洋非洲西海岸（葡萄牙））
  CR_MAD          = 164,  //Madeira 马德拉群岛（北大西洋非洲西海岸（葡萄牙））
  CR_RES9         = 165,  //保留字段
  CR_RES10        = 166,  //保留字段
  CR_RES11        = 167,  //保留字段
  CR_RES12        = 168,  //保留字段
  /*美洲 55个国家和地区*/
  CR_CAD          = 169,  //Canada 加拿大
  CR_GRE          = 170,  //Greenland Nuuk 格陵兰（丹麦王国的海外自治领土）
  CR_PIE          = 171,  //Pierre and Miquelon 圣皮埃尔和密克隆（法国海外领土）
  CR_USA          = 172,  //United States 美国
  CR_BER          = 173,  //Bermuda 百慕大（英国海外领土）
  CR_MEX          = 174,  //Mexico 墨西哥
  CR_GUA          = 175,  //Guatemala 危地马拉
  CR_BLI          = 176,  //Belize 伯利兹
  CR_SAR          = 177,  //El Salvador 萨尔瓦多
  CR_HOR          = 178,  //Honduras 洪都拉斯
  CR_NIC          = 179,  //Nicaragua 尼加拉瓜
  CR_COR          = 180,  //Costa Rica 哥斯达黎加
  CR_PAN          = 181,  //Panama 巴拿马
  CR_TBM          = 182,  //The Bahamas 巴哈马
  CR_TCI          = 183,  //The Turks and Caicos Islands 特克斯群岛和凯科斯群岛（英国海外领土）
  CR_CUB          = 184,  //Cuba 古巴
  CR_JAM          = 185,  //Jamaica 牙买加
  CR_CAY          = 186,  //Cayman Islands 开曼群岛（英国海外领土）
  CR_HAT          = 187,  //Haiti 海地
  CR_TDO          = 188,  //The Dominican 多米尼加
  CR_PUR          = 189,  //Puerto Rico 波多黎各（美国海外领土）
  CR_VIL          = 190,  //The United States Virgin Islands美属维尔京群岛
  CR_BVI          = 191,  //The British Virgin Islands 英属维尔京群岛
  CR_ATV          = 192,  //Anguilla The Valley 安圭拉（英国海外领土）
  CR_ANB          = 193,  //Antigua and Barbuda 安提瓜和巴布达
  CR_CSM          = 194,  //Collectivité de Saint-Martin 法属圣马丁（法国海外领土）
  CR_ACY          = 195,  //Autonomous CR 荷属圣马丁（荷兰王国的自治国 ）
  CR_SBY          = 196,  //Saint-Barthélemy 圣巴泰勒米岛（法国海外领土）
  CR_SKN          = 197,  //Saint Kitts and Nevis 圣基茨和尼维斯
  CR_MOT          = 198,  //Montserrat 蒙特塞拉特（英国海外领土）
  CR_GLP          = 199,  //Guadeloupe 瓜德罗普（法国海外领土）
  CR_DOM          = 200,  //Dominica 多米尼克
  CR_MTE          = 201,  //Martinique 马提尼克（法国海外领土）
  CR_LUC          = 202,  //St. Lucia 圣卢西亚
  CR_SVG          = 203,  //Saint Vincent and the Grenadines 圣文森特和格林纳丁斯
  CR_GRD          = 204,  //Grenada 格林纳达
  CR_BAR          = 205,  //Barbados 巴巴多斯
  CR_TRT          = 206,  //Trinidad and Tobago 特立尼达和多巴哥
  CR_CUR          = 207,  //Cura?ao 库拉索（荷兰王国的一个自治国）
  CR_ARB          = 208,  //Aruba 阿鲁巴（荷兰王国的一个自治国）
  CR_NEA          = 209,  //Netherlands Antilles 荷属安的列斯
  CR_COL          = 210,  //Colombia 哥伦比亚
  CR_VEN          = 211,  //Venezuela 委内瑞拉
  CR_GUY          = 212,  //Guyana 圭亚那
  CR_SUR          = 213,  //Suriname 苏里南
  CR_FRN          = 214,  //Guyane Francaise 法属圭亚那
  CR_ECU          = 215,  //Ecuador 厄瓜多尔
  CR_PER          = 216,  //Peru 秘鲁
  CR_BOL          = 217,  //Bolivia 玻利维亚
  CR_PAR          = 218,  //Paraguay 巴拉圭
  CR_CLE          = 219,  //Chile 智利
  CR_BRA          = 220,  //Brazil 巴西
  CR_UGY          = 221,  //Uruguay 乌拉圭
  CR_ARG          = 222,  //Argentina 阿根廷
  CR_RES13        = 223,  //保留字段
  CR_RES14        = 224,  //保留字段
  CR_RES15        = 225,  //保留字段
  CR_RES16        = 226,  //保留字段
  /*大洋洲 25个国家和地区 */
  CR_ATN          = 227,  //Australien 澳大利亚
  CR_NED          = 228,  //Neuseeland 新西兰
  CR_PNG          = 229,  //Papua New Guinea 巴布亚新几内亚
  CR_SAN          = 230,  //Salomonen 所罗门群岛
  CR_VAU          = 231,  //Vanuatu 瓦努阿图
  CR_NCN          = 232,  //New Caledonia 新喀里多尼亚（法国的海外属地）
  CR_PAU          = 233,  //Palau 帕劳
  CR_FSM          = 234,  //Federated States of Micronesia 密克罗尼西亚联邦
  CR_MRI          = 235,  //Marshall Island  马绍尔群岛
  CR_CNM          = 236,  //Commonwealth of the Northern Mariana Islands 北马里亚纳群岛（美国的海外属地）
  CR_TEG          = 237,  //The Territory of Guahan 关岛（美国的海外属地）
  CR_NUR          = 238,  //Nauru 瑙鲁
  CR_KIB          = 239,  //Kiribati 基里巴斯
  CR_FID          = 240,  //Fidschi 斐济群岛
  CR_TNG          = 241,  //Tonga 汤加
  CR_TUV          = 242,  //Tuvalu 图瓦卢
  CR_WEF          = 243,  //Wallis et Futuna  瓦利斯和富图纳（法国的海外属地）
  CR_TIS          = 244,  //The Independent State of Samoa 萨摩亚
  CR_EAS          = 245,  //Eastern Samoa 美属萨摩亚
  CR_TOE          = 246,  //Tokelau 托克劳（新西兰）
  CR_NUE          = 247,  //Niue 纽埃（新西兰）
  CR_TCD          = 248,  //The Cook Islands 库克群岛（新西兰）
  CR_PFP          = 249,  //Polynésie fran?aiseFrench Polynesia 法属波利尼西亚
  CR_PID          = 250,  //Pitcairn Islands 皮特凯恩群岛（英国的海外属地）
  CR_HAW          = 251,  //Hawaii State 夏威夷（美国的海外属地）
  CR_RES17        = 252,  //保留字段
  CR_RES18        = 253,  //保留字段 （设备不可能返回该字段，该字段在国家和地区索引中对应的是扩展区域）
  CR_UNRECOGNIZED = 0xfe, //Unrecognized 无法识别
  CR_ALL          = 0xff  //ALL 全部

    //下面是新增的区域概念
  CR_TAIWAN       = 256,  //Taiwan(China) 台湾（中国）
}CR_INDEX

See Also

NET_DVR_PLATE_INFO


DETECTOR_TYPE

防区探测器类型。

typedef enum tagDETECTOR_TYPE{
  PANIC_BUTTON = 0,
  MAGNETIC_CONTACT,
  SMOKE_DETECTOR,
  ACTIVE_INFRARED_DETECTOR,
  PASSIVE_INFRARED_DETECTOR,
  GLASS_BREAK_DETECTOR,
  VIBRATION_DETECTOR,
  DUAL_TECHNOLOGY_PIR_DETECTOR,
  TRIPLE_TECHNOLOGY_PIR_DETECTOR,
  HUMIDITY_DETECTOR,
  TEMPERATURE_DETECTOR,
  COMBUSTIBLE_GAS_DETECTOR,
  DYNAMIC_SWITCH,
  CONTROL_SWITCH,
  SMART_LOCK,
  WATER_DETECTOR,
  DISPLACEMENT_DETECTOR,
  SINGLE_INFRARED_DETECTOR,
  SINGLE_ZONE_MODULE,
  CURTAIN_INFRARED_DETECTOR,
  DOORBELL_SWITCH,
  OTHER_DETECTOR = 0xffff
}DETECTOR_TYPE
PANIC_BUTTON
紧急开关
MAGNETIC_CONTACT
门磁开关
SMOKE_DETECTOR
烟感探测器
ACTIVE_INFRARED_DETECTOR
主动红外探测器
PASSIVE_INFRARED_DETECTOR
被动红外探测器
GLASS_BREAK_DETECTOR
玻璃破碎探测器
VIBRATION_DETECTOR
震动探测器
DUAL_TECHNOLOGY_PIR_DETECTOR
双鉴移动探测器
TRIPLE_TECHNOLOGY_PIR_DETECTOR
三技术探测器
HUMIDITY_DETECTOR
湿度探测器
TEMPERATURE_DETECTOR
温感探测器
SMOKE_DETECTOR
烟感探测器
COMBUSTIBLE_GAS_DETECTOR
可燃气体探测器
DYNAMIC_SWITCH
随动开关
CONTROL_SWITCH
控制开关
SMART_LOCK
智能锁
WATER_DETECTOR
水感探测器
DISPLACEMENT_DETECTOR
位移探测器
SINGLE_INFRARED_DETECTOR
单体门磁探测器
SINGLE_ZONE_MODULE
无线单防区模块
CURTAIN_INFRARED_DETECTOR
幕帘红外人体探测器
DOORBELL_SWITCH
门铃开关
MEDICAL_HELP_BUTTON
医疗求助按钮
OUTDOOR_DUAL_TECH
室外双鉴传感器
OTHER_DETECTOR
其他探测器

See Also

NET_DVR_ALARMIN_PARAM NET_DVR_ALARMIN_PARAM_V50


EMI_AREA

阿拉伯联合酋长国区域索引值。

typedef enum _EMI_AREA_{
  EMI_AREA_UNKNOWN     = 0,   //不支持区域识别
  EMI_AREA_AD          = 1,    //阿布扎比
  EMI_AREA_FJR         = 2,    //富查伊哈
  EMI_AREA_DB          = 3,    //迪拜
  EMI_AREA_RAK         = 4,    //哈伊马角
  EMI_AREA_AM          = 5,     //阿治曼
  EMI_AREA_SJ          = 6,    //沙迦
  EMI_AREA_UMW         = 7,    //乌姆盖万
  EMI_AREA_OTHER       = 0xff,   //未识别（但是设备支持该算法，由于环境等原因导致未识别）
}EMI_AREA

See Also

NET_DVR_PLATE_INFO


ENUM_AUDIO_ENC_MODE

AMR编码方式枚举。

enum _ENUM_AUDIO_ENC_MODE{
  AMR_MR475_ = 0, //4.75 kb/s
  AMR_MR515_,     //5.15 kb/s
  AMR_MR59_       //5.90 kb/s
  AMR_MR67_,      //6.70 kb/s
  AMR_MR74_,      //7.40 kb/s
  AMR_MR795_,     //7.95 kb/s
  AMR_MR102_,     //10.2 kb/s
  AMR_MR122_,     //12.2 kb/s
  AMR_MRDTX_,     //静音帧
}ENUM_AUDIO_ENC_MODE

See Also

NET_DVR_AUDIOENC_PROCESS_PARAM


EXTERNAL_DEVICES_STATUS

外接设备状态。

enum _EXTERNAL_DEVICES_STATUS_{
  DEVICES_STATUS_NORMAL               = 0,
  DEVICES_STATUS_ABNORMAL             = 1,
  DEVICES_STATUS_TOO_LESS_CARD        = 20,
  DEVICES_STATUS_NO_CARD              = 21,
  DEVICES_STATUS_SENDCARD_ERROR       = 22,
  DEVICES_STATUS_CARD_BLOCKED         = 23,
  DEVICES_STATUS_CARD_FULL            = 24,
  DEVICES_STATUS_OPENING              = 40,
  DEVICES_STATUS_CLOSING              = 41,
  DEVICES_STATUS_OPENED               = 42,
  DEVICES_STATUS_CLOSED               = 43,
  DEVICES_STATUS_NOSIGNAL             = 44,
  DEVICES_STATUS_LOCK                 = 45,
  PP_STATUS_OFFLINE                   = 61,
  PP_STATUS_PRINT_HEADER_UP,
  PP_STATUS_FEED_BUTTON_FEEDING,
  PP_STATUS_ONLINE_WAITING,
  PP_STATUS_FEED_BUTTON_ENABLE,
  PP_STATUS_JAMR_PAPER_ERROR,
  PP_STATUS_CUT_PAPER_ERROR,
  PP_STATUS_AUTO_FEED_ERROR,
  PP_STATUS_EXIT_RECOVERY_ERROR,
  PP_STATUS_EXIT_AUTO_RECOVERY_ERROR,
  PP_STATUS_PULL_PAPER_ERROR,
  PP_STATUS_LESS_PAPER ,
  PP_STATUS_NO_PAPER,
  PP_STATUS_PRINT_FAIL,
  PP_STATUS_PRINTING,
}EXTERNAL_DEVICES_STATUS
通用设备状态码：0~19
DEVICES_STATUS_NORMAL
0- 状态正常
DEVICES_STATUS_ABNORMAL
1- 状态异常
发卡机设备状态码：20~39
DEVICES_STATUS_TOO_LESS_CARD
20- 发卡机少卡
DEVICES_STATUS_NO_CARD
21- 发卡机无卡
DEVICES_STATUS_SENDCARD_ERROR
22- 预发卡错误
DEVICES_STATUS_CARD_BLOCKED
23- 堵卡
DEVICES_STATUS_CARD_FULL
24- 回收仓卡满
道闸设备状态码：40~60
DEVICES_STATUS_OPENING
40- 道闸正在开
DEVICES_STATUS_CLOSING
41- 道闸正在关
DEVICES_STATUS_OPENED
42- 道闸开到位
DEVICES_STATUS_CLOSED
43- 道闸关到位
DEVICES_STATUS_NOSIGNAL
44- 道闸无信号
DEVICES_STATUS_LOCK
45- 锁闸
纸票打印机状态：61~90
PP_STATUS_OFFLINE
61- 脱机
PP_STATUS_PRINT_HEADER_UP
62- 打印头抬起
PP_STATUS_FEED_BUTTON_FEEDING
63- 正在用进纸键进纸
PP_STATUS_ONLINE_WAITING
64- 联机等待
PP_STATUS_FEED_BUTTON_ENABLE
65- 按键进纸使能为开
PP_STATUS_JAMR_PAPER_ERROR
66- 卡纸错误
PP_STATUS_CUT_PAPER_ERROR
67- 切刀错误
PP_STATUS_AUTO_FEED_ERROR
68- 自动上纸错误
PP_STATUS_EXIT_RECOVERY_ERROR
69- 有可恢复错误
PP_STATUS_EXIT_AUTO_RECOVERY_ERROR
70- 有可自动恢复错误
PP_STATUS_PULL_PAPER_ERROR
71- 拉纸错误
PP_STATUS_LESS_PAPER
72- 纸将尽
PP_STATUS_NO_PAPER
73- 无纸
PP_STATUS_PRINT_FAIL
74- 打印失败
PP_STATUS_PRINTING
75- 正在打印

See Also

NET_DVR_GATE_ALARMINFO


EXTERNAL_DEVICES_TYPE

外接设备类型。

enum _EXTERNAL_DEVICES_TYPE_{
  DEVICES_TYPE_RES1             = 0,
  DEVICES_TYPE_FAR_SCR          = 1,
  DEVICES_TYPE_ENTRANCE_CONTROL = 2,
  DEVICES_TYPE_WJ_LED_DEV       = 3,
  DEVICES_TYPE_NJ_LED_DEV       = 4,
  DEVICES_TYPE_VEH_DETECT_DEV   = 5,
  DEVICES_TYPE_DZ_DEV           = 6,
  DEVICES_TYPE_PX_SCR_DEV       = 7,
  DEVICES_TYPE_KJ_SCR_DEV       = 8,
  DEVICES_TYPE_FKJ_DEV          = 9,
  DEVICES_TYPE_SKJ_DEV          = 10,
  DEVICES_TYPE_HDD_DEV          = 11,
  DEVICES_TYPE_DZ_LOCK          = 12,
  DEVICES_TYPE_PAPER_PRINTER    = 13,
  DEVICES_TYPE_PAPER_SCANNERS   = 14,
  DEVICES_TYPE_IPC_ALARM        = 15
}EXTERNAL_DEVICES_TYPE
DEVICES_TYPE_RES1
0- 保留1
DEVICES_TYPE_FAR_SCR
1- 远距离读卡器
DEVICES_TYPE_ENTRANCE_CONTROL
2- 出入口控制机
DEVICES_TYPE_WJ_LED_DEV
3- 外接LED
DEVICES_TYPE_NJ_LED_DEV
4- 内接LED
DEVICES_TYPE_VEH_DETECT_DEV
5- 车检器设备
DEVICES_TYPE_DZ_DEV
6- 道闸
DEVICES_TYPE_PX_SCR_DEV
7- 票箱读卡器
DEVICES_TYPE_KJ_SCR_DEV
8- 卡机读卡器
DEVICES_TYPE_FKJ_DEV
9- 发卡机
DEVICES_TYPE_SKJ_DEV
10- 收卡机
DEVICES_TYPE_HDD_DEV
11- 硬盘(裸盘 1G)
DEVICES_TYPE_DZ_LOCK
12- 道闸锁闸
DEVICES_TYPE_PAPER_PRINTER
13- 纸票打印机
DEVICES_TYPE_PAPER_SCANNERS
14- 纸票扫描仪
DEVICES_TYPE_IPC_ALARM
15- IPC布防状态

See Also

NET_DVR_GATE_ALARMINFO


HUMAN_AGE_GROUP_ENUM

年龄段枚举类型。

typedef enum tagHUMAN_AGE_GROUP_ENUM{
  ENUM_AGE_GROUP_INFANT      = 1,
  ENUM_AGE_GROUP_CHILD       = 2,
  ENUM_AGE_GROUP_YOUNGSTER   = 3,
  ENUM_AGE_GROUP_ADOLESCENT  = 4,
  ENUM_AGE_GROUP_YOUTH       = 5,
  ENUM_AGE_GROUP_PRIME       = 6,
  ENUM_AGE_GROUP_MIDLIFE     = 7,
  ENUM_AGE_GROUP_MIDAGE      = 8,
  ENUM_AGE_GROUP_OLD         = 9
}HUMAN_AGE_GROUP_ENUM
ENUM_AGE_GROUP_INFANT
婴幼儿
ENUM_AGE_GROUP_CHILD
儿童
ENUM_AGE_GROUP_YOUNGSTER
少年
ENUM_AGE_GROUP_ADOLESCENT
青少年
ENUM_AGE_GROUP_YOUTH
青年
ENUM_AGE_GROUP_PRIME
壮年
ENUM_AGE_GROUP_MIDLIFE
中年
ENUM_AGE_GROUP_MIDAGE
中老年
ENUM_AGE_GROUP_OLD
老年

See Also

NET_VCA_HUMAN_ATTRIBUTE NET_VCA_FACESNAP_INFO_ALARM NET_VCA_HUMAN_FEATURE


INITINFO

窗口参数。

struct{
  int      uWidth;
  int      uHeight;
}INITINFO;

Members

uWidth
窗口宽度
uHeight
窗口高度

See Also

NET_DVR_DrawAreaInit


ITC_LANE_DIRECTION_TYPE

车道方向类型。

enum _ITC_LANE_DIRECTION_TYPE_{
  ITC_LANE_DIRECTION_UNKNOW    = 0,
  ITC_LANE_LEFT                = 1,
  ITC_LANE_STRAIGHT            = 2,
  ITC_LANE_LEFT_STRAIGHT       = 3,
  ITC_LANE_RIGHT               = 4,
  ITC_LANE_LEFT_RIGHT          = 5,
  ITC_LANE_RIGHT_STRAIGHT      = 6,
  ITC_LANE_LEFT_RIGHT_STRAIGHT = 7,
  ITC_LANE_LEFT_WAIT           = 9,
  ITC_LANE_STRAIGHT_WAIT       = 10,
  ITC_LANE_FORWARD             = 11,
  ITC_LANE_BACKWARD            = 12,
  ITC_LANE_BOTHWAY             = 13,
  ITC_LANE_STRAIGHT_WAIT_RIGHT = 14
}ITC_LANE_DIRECTION_TYPE
ITC_LANE_DIRECTION_UNKNOW
未知
ITC_LANE_LEFT
左转
ITC_LANE_STRAIGHT
直行
ITC_LANE_LEFT_STRAIGHT
左转+直行
ITC_LANE_RIGHT
右转
ITC_LANE_LEFT_RIGHT
左转+右转
ITC_LANE_RIGHT_STRAIGHT
右转+直行
ITC_LANE_LEFT_RIGHT_STRAIGHT
左转+右转+直行
ITC_LANE_LEFT_WAIT
左转待行
ITC_LANE_STRAIGHT_WAIT
直行待行
ITC_LANE_FORWARD
正向行驶
ITC_LANE_BACKWARD
背向行驶
ITC_LANE_BOTHWAY
双向行驶
ITC_LANE_STRAIGHT_WAIT_RIGHT
直行待行 + 右转


ITC_LANE_USEAGE_TYPE

车道用途类型枚举。

enum _ITC_LANE_USEAGE_TYPE_{
  ITC_LANE_USEAGE_UNKNOW = 0,
  ITC_LANE_CARRIAGEWAY   = 1,
  ITC_LANE_BUS           = 2,
  ITC_LANE_FAST          = 3,
  ITC_LANE_SLOW          = 4,
  ITC_LANE_MOTOR         = 5,
  ITC_LANE_NONMOTOR      = 6,
  ITC_LANE_REVERSE_LANE  = 7,
  ITC_LANE_BAN_TRUCKS    = 8,
  ITC_LANE_MIX           = 9,
  ITC_LANE_EMERGENCY     = 10,
  ITC_LANE_BAN_LEFT      = 11,
  ITC_LANE_BAN_RIGHT     = 12
}ITC_LANE_USEAGE_TYPE
ITC_LANE_USEAGE_UNKNOW
未知
ITC_LANE_CARRIAGEWAY
普通车道
ITC_LANE_BUS
公交车专用道
ITC_LANE_FAST
快车道
ITC_LANE_SLOW
慢车道
ITC_LANE_MOTOR
摩托车道
ITC_LANE_NONMOTOR
非机动车道
ITC_LANE_REVERSE_LANE
反向车道
ITC_LANE_BAN_TRUCKS
禁止货车车道
ITC_LANE_MIX
混合车道
ITC_LANE_EMERGENCY
应急车道
ITC_LANE_BAN_LEFT
禁左车道
ITC_LANE_BAN_RIGHT
禁右车道


ITC_MAINMODE_ABILITY

触发模式能力。

enum _ITC_MAINMODE_ABILITY_{
  ITC_MODE_UNKNOW      = 0x0,
  ITC_POST_MODE        = 0x1,
  ITC_EPOLICE_MODE     = 0x2,
  ITC_POSTEPOLICE_MODE = 0x4
}ITC_MAINMODE_ABILITY
ITC_MODE_UNKNOW
无
ITC_POST_MODE
卡口模式
ITC_EPOLICE_MODE
电警模式
ITC_POSTEPOLICE_MODE
卡式电警模式

See Also

NET_DVR_GetDeviceAbility


ITC_RELA_LANE_DIRECTION_TYPE

关联车道方向类型枚举。

enum _ITC_RELA_LANE_DIRECTION_TYPE_{
  ITC_RELA_LANE_DIRECTION_UNKNOW     = 0,
  ITC_RELA_LANE_EAST_WEST            = 1,
  ITC_RELA_LANE_WEST_EAST            = 2,
  ITC_RELA_LANE_SOUTH_NORTH          = 3,
  ITC_RELA_LANE_NORTH_SOUTH          = 4,
  ITC_RELA_LANE_EASTSOUTH_WESTNORTH  = 5,
  ITC_RELA_LANE_WESTNORTH_EASTSOUTH  = 6,
  ITC_RELA_LANE_EASTNORTH_WESTSOUTH  = 7,
  ITC_RELA_LANE_WESTSOUTH_EASTNORTH  = 8
}ITC_RELA_LANE_DIRECTION_TYPE
ITC_RELA_LANE_DIRECTION_UNKNOW
其它
ITC_RELA_LANE_EAST_WEST
从东向西
ITC_RELA_LANE_WEST_EAST
从西向东
ITC_RELA_LANE_SOUTH_NORTH
从南向北
ITC_RELA_LANE_NORTH_SOUTH
从北向南
ITC_RELA_LANE_EASTSOUTH_WESTNORTH
从东南向西北
ITC_RELA_LANE_WESTNORTH_EASTSOUTH
从西北向东南
ITC_RELA_LANE_EASTNORTH_WESTSOUTH
从东北向西南
ITC_RELA_LANE_WESTSOUTH_EASTNORTH
从西南向东北


ITC_TRIGGERMODE_TYPE

触发模式。

enum _ITC_TRIGGERMODE_TYPE_{
  ITC_POST_IOSPEED_TYPE             = 0x1,
  ITC_POST_SINGLEIO_TYPE            = 0x2,
  ITC_POST_RS485_TYPE               = 0x4,
  ITC_POST_RS485_RADAR_TYPE         = 0x8,
  ITC_POST_VIRTUALCOIL_TYPE         = 0x10,
  ITC_POST_HVT_TYPE_V50             = 0x20,
  ITC_POST_MPR_TYPE                 = 0x40,
  ITC_POST_PRS_TYPE                 = 0x80,
  ITC_EPOLICE_IO_TRAFFICLIGHTS_TYPE = 0x100,
  ITC_EPOLICE_RS485_TYPE            = 0x200,
  ITC_PE_RS485_TYPE                 = 0x10000,
  ITC_VIDEO_EPOLICE_TYPE            = 0x20000,
  ITC_VIA_VIRTUALCOIL_TYPE          = 0x40000,
  ITC_POST_IMT_TYPE                 = 0x80000,
  IPC_POST_HVT_TYPE                 = 0x100000,
  ITC_POST_MOBILE_TYPE              = 0x200000,
  ITC_REDLIGHT_PEDESTRIAN_TYPE      = 0x400000,
  ITC_NOCOMITY_PEDESTRIAN_TYPE      = 0x800000
}ITC_TRIGGERMODE_TYPE
ITC_POST_IOSPEED_TYPE
IO测速（卡口）
ITC_POST_SINGLEIO_TYPE
单IO触发（卡口）
ITC_POST_RS485_TYPE
RS485车检器触发（卡口）
ITC_POST_RS485_RADAR_TYPE
RS485雷达触发（卡口）
ITC_POST_VIRTUALCOIL_TYPE
虚拟线圈触发（卡口）
ITC_POST_HVT_TYPE_V50
混行卡口视频触发V50（卡口）
ITC_POST_MPR_TYPE
多帧识别（卡口）
ITC_POST_PRS_TYPE
视频检测触发配置
ITC_EPOLICE_IO_TRAFFICLIGHTS_TYPE
IO红绿灯（电警）
ITC_EPOLICE_RS485_TYPE
RS485车检器电警触发（电警）
ITC_PE_RS485_TYPE
RS485车检器卡式电警触发（卡式电警）
ITC_VIDEO_EPOLICE_TYPE
视频电警触发（卡式电警）
ITC_VIA_VIRTUALCOIL_TYPE
VIA触发配置
ITC_POST_IMT_TYPE
智慧监控配置
IPC_POST_HVT_TYPE
（IPC）混行卡口模式
ITC_POST_MOBILE_TYPE
移动交通触发模式
ITC_REDLIGHT_PEDESTRIAN_TYPE
行人闯红灯触发
ITC_NOCOMITY_PEDESTRIAN_TYPE
不礼让行人触发

See Also

触发类型为ITC_VIDEO_EPOLICE_TYPE(卡式电警-视频电警触发)时，触发参数通过接口NET_DVR_GetDeviceConfig(命令：NET_ITC_GET_VIDEO_TRIGGERCFG)、NET_DVR_SetDeviceConfig(命令：NET_ITC_SET_VIDEO_TRIGGERCFG)进行配置。

触发类型为其他类型时，相关触发参数通过NET_DVR_GetDVRConfig(命令：NET_ITC_GET_TRIGGERCFG)、NET_DVR_SetDVRConfig(命令：NET_ITC_SET_TRIGGERCFG)进行配置。


ITC_VIOLATION_DETECT_TYPE

违规检测类型枚举。

enum _ITC_VIOLATION_DETECT_TYPE_{
  ITC_VIOLATION_POST                 = 0x01,
  ITC_VIOLATION_DRIVELINE            = 0x02,
  ITC_VIOLATION_REVERSE              = 0x04,
  ITC_VIOLATION_REDLIGHT             = 0x08,
  ITC_VIOLATION_DIRECTION            = 0x10,
  ITC_VIOLATION_INTERSECTION_CONGEST = 0x20,
  ITC_VIOLATION_NONDRIVEWAY          = 0x40,
  ITC_VIOLATION_CHANGELANE           = 0x80,
  ITC_VIOLATION_BAN                  = 0x100,
  ITC_VIOLATION_INTERSECTION_PARK    = 0x200,
  ITC_VIOLATION_GREEN_PARK           = 0x400,
  ITC_VIOLATION_HIGH_SPEED           = 0x800,
  ITC_VIOLATION_LOW_SPEED            = 0x1000,
  ITC_VIOLATION_EMERGENCY            = 0x2000,
  ITC_VIOLATION_TURN_AROUND          = 0x8000,
  ITC_VIOLATION_CONGESTION           = 0x10000
}ITC_VIOLATION_DETECT_TYPE
ITC_VIOLATION_POST
卡口抓拍
ITC_VIOLATION_DRIVELINE
压车道线抓拍
ITC_VIOLATION_REVERSE
逆行抓拍
ITC_VIOLATION_REDLIGHT
闯红灯抓拍
ITC_VIOLATION_DIRECTION
不按导向行驶抓拍
ITC_VIOLATION_INTERSECTION_CONGEST
路口滞留抓拍
ITC_VIOLATION_NONDRIVEWAY
机动车占非机动车车道抓拍
ITC_VIOLATION_CHANGELANE
违法变道
ITC_VIOLATION_BAN
违法禁令
ITC_VIOLATION_INTERSECTION_PARK
红灯越线
ITC_VIOLATION_GREEN_PARK
绿灯停车
ITC_VIOLATION_HIGH_SPEED
超速（卡口专用）
ITC_VIOLATION_LOW_SPEED
低速（卡口专用）
ITC_VIOLATION_EMERGENCY
占用应急车道
ITC_VIOLATION_TURN_AROUND
违法掉头
ITC_VIOLATION_CONGESTION
拥堵

Remarks

跨越黄线与违法变道区别：跨越黄线是针对相机架设在路边（不调杆），抓拍车辆变道或调头的情况；违法变道与电警中的概念是一样的。
禁行和违法禁令区别：禁行是指定区域的车牌都需要抓拍，违法禁令是针对车道抓拍某一类车牌。


ITS_OVERLAP_ITEM_TYPE

字符叠加类型。

enum _ITS_OVERLAP_ITEM_TYPE_{
  OVERLAP_ITEM_NULL  = 0,
  OVERLAP_ITEM_SITE  = 1,
  OVERLAP_ITEM_ROADNUM,
  OVERLAP_ITEM_INSTRUMENTNUM,
  OVERLAP_ITEM_DIRECTION,
  OVERLAP_ITEM_DIRECTIONDESC,
  OVERLAP_ITEM_DIRECTIONDESC,
  OVERLAP_ITEM_LANEDES,
  OVERLAP_ITEM_CAPTIME,
  OVERLAP_ITEM_CAPTIME_MILLSECOND,
  OVERLAP_ITEM_PLATENUM,
  OVERLAP_ITEM_CARCOLOR,
  OVERLAP_ITEM_CARTYPE,
  OVERLAP_ITEM_CARBRAND,
  OVERLAP_ITEM_CARSPEED,
  OVERLAP_ITEM_SPEEDLIMIT,
  OVERLAP_ITEM_CARLENGTH,
  OVERLAP_ITEM_ILLEGALNUM,
  OVERLAP_ITEM_MONITOR_INFO,
  OVERLAP_ITEM_ILLEGALDES,
  OVERLAP_ITEM_OVERSPEED_PERCENT,
  OVERLAP_ITEM_RED_STARTTIME,
  OVERLAP_ITEM_RED_STOPTIME,
  OVERLAP_ITEM_RED_DURATION,
  OVERLAP_ITEM_SECUNITY_CODE,
  OVERLAP_ITEM_CAP_CODE,
  OVERLAP_ITEM_SEATBELT,
  OVERLAP_ITEM_MONITOR_ID,
  OVERLAP_ITEM_SUN_VISOR,
  OVERLAP_ITEM_LANE_DIRECTION,
  OVERLAP_ITEM_LICENSE_PLATE_COLOR,
  OVERLAP_ITEM_SCENE_NUMBER,
  OVERLAP_ITEM_SCENE_NAME,
  OVERLAP_ITEM_YELLOW_SIGN_CAR,
  OVERLAP_ITEM_DANGEROUS_CAR,
  OVERLAP_ITEM_CAR_SUBBRAND,
  OVERLAP_ITEM_CAR_DIRECTION,
  OVERLAP_ITEM_PENDANT,
  OVERLAP_ITEM_CALL,
  OVERLAP_ITEM_CAR_VALIDITY
}ITS_OVERLAP_ITEM_TYPE
OVERLAP_ITEM_NULL
0-未知
OVERLAP_ITEM_SITE
1-地点
OVERLAP_ITEM_ROADNUM
2-路口编号
OVERLAP_ITEM_INSTRUMENTNUM
3-设备编号
OVERLAP_ITEM_DIRECTION
4-方向编号
OVERLAP_ITEM_DIRECTIONDESC
5-方向
OVERLAP_ITEM_LANENUM
6-车道号
OVERLAP_ITEM_LANEDES
7-车道
OVERLAP_ITEM_CAPTIME
8-抓拍时间(不带毫秒)
OVERLAP_ITEM_CAPTIME_MILLSECOND
9-抓拍时间(带毫秒)
OVERLAP_ITEM_PLATENUM
10-车牌号
OVERLAP_ITEM_CARCOLOR
11-车身颜色
OVERLAP_ITEM_CARTYPE
12-车辆类型
OVERLAP_ITEM_CARBRAND
13-车辆品牌
OVERLAP_ITEM_CARSPEED
14-车辆速度
OVERLAP_ITEM_SPEEDLIMIT
15-限速标志
OVERLAP_ITEM_CARLENGTH
16-车辆长度，1~99m
OVERLAP_ITEM_ILLEGALNUM
17-违法代码(违法代码叠加应该没用的，应该直接叠加违法信息，比如正常、低速、超速、逆行、闯红灯、占道、压黄线等)
OVERLAP_ITEM_MONITOR_INFO
18-监测点信息
OVERLAP_ITEM_ILLEGALDES
19-违法行为
OVERLAP_ITEM_OVERSPEED_PERCENT
20-超速比
OVERLAP_ITEM_RED_STARTTIME
21-红灯开始时间
OVERLAP_ITEM_RED_STOPTIME
22-红灯结束时间
OVERLAP_ITEM_RED_DURATION
23-红灯已亮时间
OVERLAP_ITEM_SECUNITY_CODE
24-防伪码
OVERLAP_ITEM_CAP_CODE
25-抓拍编号
OVERLAP_ITEM_SEATBELT
26-有无系安全带
OVERLAP_ITEM_MONITOR_ID
27- 监测点编号
OVERLAP_ITEM_SUN_VISOR
28- 遮阳板
OVERLAP_ITEM_LANE_DIRECTION
29- 车道行驶方向
OVERLAP_ITEM_LICENSE_PLATE_COLOR
30- 车牌颜色
OVERLAP_ITEM_SCENE_NUMBER
31- 场景编号
OVERLAP_ITEM_SCENE_NAME
32- 场景名称
OVERLAP_ITEM_YELLOW_SIGN_CAR
33- 黄标车
OVERLAP_ITEM_DANGEROUS_CAR
34- 危险品车
OVERLAP_ITEM_CAR_SUBBRAND
35- 车辆子品牌
OVERLAP_ITEM_CAR_DIRECTION
36- 车辆方向
OVERLAP_ITEM_PENDANT
37- 车窗悬挂物
OVERLAP_ITEM_CALL
38- 打电话
OVERLAP_ITEM_CAR_VALIDITY
39- 置信度

See Also

NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 NET_ITS_OVERLAP_SINGLE_ITEM_PARAM


LONG_CFG_SEND_DATA_TYPE_ENUM

长连接发送数据类型。

enum _LONG_CFG_SEND_DATA_TYPE_ENUM_{
  ENUM_DVR_VEHICLE_CHECK = 1,
  ENUM_MSC_SEND_DATA        = 2,
  ENUM_ACS_SEND_DATA         = 3
}LONG_CFG_SEND_DATA_TYPE_ENUM
ENUM_DVR_VEHICLE_CHECK
1- 非授权名单车辆数据稽查类型
ENUM_MSC_SEND_DATA
2- 屏幕控制器数据类型
ENUM_ACS_SEND_DATA
3- 门禁主机数据类型
ENUM_TME_CARD_SEND_DATA
4- 停车场(出入口控制机)卡片数据类型
ENUM_TME_VEHICLE_SEND_DATA
5- 停车场(出入口控制机)车辆数据类型
ENUM_DVR_DEBUG_CMD
6- 调试命令信息
ENUM_DVR_SCREEN_CTRL_CMD
7- 屏幕互动命令类型
ENUM_CVR_PASSBACK_SEND_DATA
8- CVR获取监控点回传任务可执行性
ENUM_ACS_INTELLIGENT_IDENTITY_DATA
9- 智能身份识别终端数据类型

See Also

NET_DVR_SendRemoteConfig


NET_AIOP_PICTURE_HEAD

AI开放平台接入图片检测报警结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_SYSTEM_TIME      struTime;
  char                     szPID[64];
  DWORD                    dwAIOPDataSize;
  BYTE                     byStatus;
  BYTE                     byRes1[3];
  char                     szMPID[64];
  BYTE                     *pBufferAIOPData;
  BYTE                     byRes[184];
}NET_AIOP_PICTURE_HEAD,*LPNET_AIOP_PICTURE_HEAD;

Members

dwSize
结构体大小
struTime
时间
szPID
透传下发的图片ID，来自于图片任务派发
dwAIOPDataSize
AIOPData的数据长度
byStatus
状态值：0-成功，1-图片大小错误
byRes1
保留，置为0
szMPID
检测模型包ID，用于匹配AIOP的检测数据解析；可以通过URI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)获取当前设备加载的模型包的label description信息
pBufferAIOPData
AIOPData数据，算法库透传，对应Json数据格式示例：AIOPData示例Json数据
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V50


NET_AIOP_POLLING_SNAP_HEAD

AI开放平台接入轮询抓图检测报警结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwChannel;
  NET_DVR_SYSTEM_TIME      struTime;
  char                     szTaskID[64];
  DWORD                    dwAIOPDataSize;
  DWORD                    dwPictureSize;
  char                     szMPID[64];
  BYTE                     *pBufferAIOPData;
  BYTE                     *pBufferPictureSize;
  BYTE                     byRes[184];
}NET_AIOP_POLLING_SNAP_HEAD,*LPNET_AIOP_POLLING_SNAP_HEAD;

Members

dwSize
结构体大小
dwChannel
通道号
struTime
时间
szTaskID
轮询抓图任务ID，来自于轮询抓图任务派发
dwAIOPDataSize
AIOPData的数据长度
dwPictureSize
对应分析图片长度
szMPID
检测模型包ID，用于匹配AIOP的检测数据解析；可以通过URI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)获取当前设备加载的模型包的label description信息
pBufferAIOPData
AIOPData数据，算法库透传，对应Json数据格式示例：AIOPData示例Json数据
pBufferPictureSize
对应分析图片数据
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V50


NET_AIOP_POLLING_VIDEO_HEAD

AI开放平台接入轮询视频检测报警结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwChannel;
  NET_DVR_SYSTEM_TIME      struTime;
  char                     szTaskID[64];
  DWORD                    dwAIOPDataSize;
  DWORD                    dwPictureSize;
  char                     szMPID[64];
  BYTE                     *pBufferAIOPData;
  BYTE                     *pBufferPictureSize;
  BYTE                     byRes[184];
}NET_AIOP_POLLING_VIDEO_HEAD,*LPNET_AIOP_POLLING_VIDEO_HEAD;

Members

dwSize
结构体大小
dwChannel
通道号
struTime
时间
szTaskID
轮询视频任务ID，来自于轮询视频任务派发
dwAIOPDataSize
AIOPData的数据长度
dwPictureSize
对应分析图片长度
szMPID
检测模型包ID，用于匹配AIOP的检测数据解析；可以通过URI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)获取当前设备加载的模型包的label description信息
pBufferAIOPData
AIOPData数据，算法库透传，对应Json数据格式示例：AIOPData示例Json数据
pBufferPictureSize
对应分析图片数据
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V50


NET_AIOP_VIDEO_HEAD

AI开放平台接入视频检测报警结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwChannel;
  NET_DVR_SYSTEM_TIME      struTime;
  char                     szTaskID[64];
  DWORD                    dwAIOPDataSize;
  DWORD                    dwPictureSize;
  char                     szMPID[64];
  BYTE                     *pBufferAIOPData;
  BYTE                     *pBufferPictureSize;
  BYTE                     byPictureMode;
  BYTE                     byRes2[3];
  DWORD                    dwPresetIndex;
  DWORD                    dwAddInfoPictureSize;
  BYTE                     *pAddInfoPictureBuffer;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  char                     *pFacePicBuff;
  #else
  char                     *pFacePicBuff;
  BYTE                     byRes3[4];
  #endif
  DWORD                    dwFacePicBuffLen;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  char                     *pComparisonPicBuff;
  #else
  char                     *pComparisonPicBuff;
  BYTE                     byRes4[4];
  #endif
  DWORD                    dwComparisonPicBuffLen;
  BYTE                     byRes[144];
}NET_AIOP_VIDEO_HEAD,*LPNET_AIOP_VIDEO_HEAD;

Members

dwSize
结构体大小
dwChannel
通道号
struTime
时间
szTaskID
视频任务ID，来自于视频任务派发
dwAIOPDataSize
AIOPData的数据长度
dwPictureSize
对应分析图片长度
szMPID
检测模型包ID，用于匹配AIOP的检测数据解析；可以通过URI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)获取当前设备加载的模型包的label description信息
pBufferAIOPData
AIOPData数据，算法库透传，对应Json数据格式示例：AIOPData示例Json数据
pBufferPictureSize
对应分析图片数据
byPictureMode
图片数据传输模式 0-二进制，1-武汉云云存储，当byPictureMode为0时pBufferPicture为二进制数据，当byPictureMode为1时pBufferPicture为武汉云URL
byRes2
保留，置为0
dwPresetIndex
预置点序号
dwAddInfoPictureSize
对应分析的附加图片长度
pAddInfoPictureBuffer
对应分析的附加图片数据(对于热成像双通道设备，该节点表示非报警通道的图片)
pFacePicBuff
人脸小图图片指针
byRes3
保留字节。Win64及Linux64下指针为8字节，无此参数
dwFacePicBuffLen
人脸小图数据长度，对应pFacePicBuff数据长度
pComparisonPicBuff
底库比对图图片指针
byRes4
保留字节。Win64及Linux64下指针为8字节，无此参数
dwComparisonPicBuffLen
底库比对图数据长度，对应pComparisonPicBuff数据长度
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V50


NET_ALARM_CVR_SUBINFO_UNION

CVR设备报警信息联合体。

union{
  BYTE                          byLen[492];
  NET_ALARM_RECORDFILE_LOSS     struRecordLost;
  NET_ALARM_STREAM_EXCEPTION    struStreamException;
  NET_ALARM_RESOURCE_USAGE      struResourceUsage;
  NET_ALARM_RECORD_EXCEPTION    struRecordException;
}NET_ALARM_CVR_SUBINFO_UNION,*LPNET_ALARM_CVR_SUBINFO_UNION;

Members

byLen
联合体大小，492字节
struRecordLost
录像丢失报警信息，对应dwAlarmType为8
struStreamException
取流异常报警信息，对应dwAlarmType为9
struResourceUsage
资源使用报警信息，对应dwAlarmType为10
struRecordException
录像异常报警信息，对应dwAlarmType为12

See Also

NET_DVR_ALARMINFO_DEV_V40


NET_ALARM_EXCEPTION

报警异常结构体。

struct{
  DWORD                    dwAlarmType;
  BYTE                    byExceptionType;
  BYTE                     byRes[3];
  char                     szErrMsg[256];
  BYTE                     byRes1[248];
}NET_ALARM_EXCEPTION,*LPNET_ALARM_EXCEPTION;

Members

dwAlarmType
报警类型
byExceptionType
报警异常类型,参见：ALARM_EXCEPTION_ERROR_ENUM
byRes
保留，置为0
szErrMsg
错误信息描述
byRes1
保留，置为0


NET_ALARM_RECORD_EXCEPTION

录像异常报警信息结构体。

struct{
  BYTE     byReason;
  BYTE     byRes1[3];
  BYTE     sVolumeName[MAX_VOLUMENAME_LEN];
  DWORD    dwVolumeID;
  BYTE     byRes[452];
}NET_ALARM_RECORD_EXCEPTION,*LPNET_ALARM_RECORD_EXCEPTION;

Members

byReason
异常原因：0- 录像卷满，1- 录像卷异常，2- 无可用lun卷
byRes1
保留，置为0
sVolumeName
录像卷名称
dwVolumeID
录像卷ID（硬盘号）
byRes
保留，置为0

See Also

NET_ALARM_CVR_SUBINFO_UNION


NET_ALARM_RECORDFILE_LOSS

录像丢失报警信息结构体。

struct{
  NET_DVR_TIME_EX    struInspectStart;
  NET_DVR_TIME_EX    struInspectEnd;
  NET_DVR_IPADDR     struIP;
  DWORD              dwChanNo;
  DWORD              dwIDIndex;
  BYTE               sName[STREAM_ID_LEN];
  NET_DVR_TIME_EX    struLossStartTime;
  NET_DVR_TIME_EX    struLossEndTime;
  DWORD              dwLostNum;
  BYTE               byRes[240];
}NET_ALARM_RECORDFILE_LOSS,*LPNET_ALARM_RECORDFILE_LOSS;

Members

struInspectStart
巡检开始时间
struInspectEnd
巡检结束时间
struIP
录像丢失对应通道的IP地址
dwChanNo
通道号
dwIDIndex
编码器ID
sName
编码器名称
struLossStartTime
录像丢失开始时间
struLossEndTime
录像丢失结束时间
dwLostNum
录像丢失个数，0xffffffff表示全部丢失
byRes
保留，置为0

See Also

NET_ALARM_CVR_SUBINFO_UNION


NET_ALARM_RESOURCE_USAGE

资源使用报警信息结构体。

struct{
  BYTE    byLevel;
  BYTE    byRes[491];
}NET_ALARM_RESOURCE_USAGE,*LPNET_ALARM_RESOURCE_USAGE;

Members

byLevel
使用情况，严重程度递增：0- 正常，1- 一级告警上限，2- 二级告警上限，3- 三级告警上限
byRes
保留，置为0

See Also

NET_ALARM_CVR_SUBINFO_UNION


NET_ALARM_STREAM_EXCEPTION

视频异常报警信息结构体。

struct{
  NET_DVR_IPADDR    struIP;
  DWORD             dwChanNo;
  DWORD             dwIDIndex;
  BYTE              sName[STREAM_ID_LEN];
  BYTE              byExceptionCase;
  BYTE              byRes[307];
}NET_ALARM_STREAM_EXCEPTION,*LPNET_ALARM_STREAM_EXCEPTION;

Members

struIP
录像丢失对应通道的IP地址
dwChanNo
通道号
dwIDIndex
编码器ID
sName
编码器名称
byExceptionCase
异常原因：0- 数据写入异常，1- 网络接收异常
byRes
保留，置为0

See Also

NET_ALARM_CVR_SUBINFO_UNION


NET_BUTTON_DOWN_EXCEPTION_ALARM

按钮按下报警信息结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  BYTE                byRes[64];
}NET_BUTTON_DOWN_EXCEPTION_ALARM,*LPNET_BUTTON_DOWN_EXCEPTION_ALARM;

Members

dwSize
结构体大小
struDevInfo
报警设备信息
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DOWNLOAD_CB_INFO

下载回调数据信息结构体。

struct{
  DWORD    dwType;
  BYTE     *pData;
  DWORD    dwDataLen;
  void     *pFileInfo;
  DWORD    dwFileInfoLen;
  BYTE     byRes[120];
 }NET_DOWNLOAD_CB_INFO,*LPNET_DOWNLOAD_CB_INFO;

Members

dwType
类型：0-数据信息,1-单个图片信息(云存储批量下载),2-图片总体信息(云存储批量下载)
pData
数据指针，指针指向的内存存放下载后的数据信息
dwDataLen
数据长度
pFileInfo
文件信息结构体(云存储批量下载时有效)
dwFileInfoLen
文件信息结构体长度(云存储批量下载时有效)
byRes
保留，置为0

See Also

NET_DVR_DOWNLOAD_CB_PARAM


NET_DVR_485_DEVICE_ALARM_UNION

RS485外接设备报警信息联合体。

union {
  NET_DVR_ALARMHOST_UPS_ALARMINFO                     struUPSAlarm;
  NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO     struSwitchPowerAlarm; ;
  NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO          struGasDetectSystemAlarm;
  NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO    struTempHumiditySensorAlarm;
  BYTE                                                byRes[72];
}NET_DVR_485_DEVICE_ALARM_UNION, *LPNET_DVR_485_DEVICE_ALARM_UNION;

Members

struUPSAlarm
UPS报警信息
struSwitchPowerAlarm
开关电源报警信息
struGasDetectSystemAlarm
气体检测系统报警信息
struTempHumiditySensorAlarm
温湿度传感器报警信息
byRes
保留

See Also

NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO


NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO

RS485外接设备报警信息结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byAlarmType;
  BYTE                              byRes1[3];
  NET_DVR_485_DEVICE_ALARM_UNION    struAlarmInfo;
  BYTE                              byRes2[16];
}NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO,*LPNET_DVR_485_EXTERNAL_DEVICE_ALARMINFO;

Members

dwSize
结构体大小
byAlarmType
报警类型：1- UPS报警，2- 开关电源报警，3- 气体检测系统报警，4- 温湿度传感器报警
byRes1
保留
struAlarmInfo
报警信息
byRes2
保留

Remarks

动环监控主机中DS-19D00-0402BN不支持该参数配置。

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_485_SLOT_LIST_INFO

报警主机RS485槽位参数查找条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byAll;
  BYTE     byres[3];
  BYTE     byIndex[MAX_485SLOT];
  BYTE     byRes[64];
}NET_DVR_485_SLOT_LIST_INFO, *LPNET_DVR_485_SLOT_LIST_INFO;

Members

dwSize
结构体大小
byAll
0- 不是全部获取，1- 全部获取
byres
保留
byIndex
查询的RS485槽位号，下标表示槽位号，byAll为0时有效，数组值：0- 表示不使用，1- 表示使用
byRes
保留

See Also

NET_DVR_StartRemoteConfig


NET_DVR_485LIST_INFO

报警主机RS485参数查找条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byAll;
  BYTE     byres[3];
  BYTE     byIndex[MAX_485CHAN];
  BYTE     byRes[64];
}NET_DVR_485LIST_INFO, *LPNET_DVR_485LIST_INFO;

Members

dwSize
结构体大小
byAll
0- 不是全部获取，1- 全部获取
byres
保留
byIndex
RS485通道号，下标表示通道号，byAll为0时有效，数组值：0- 表示不使用，1- 表示使用
byRes
保留

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ABILITY_LIST

单个能力的参数结构体。

struct{
  DWORD               dwAbilityType;
  BYTE                byRes[32];
  DWORD               dwNodeNum;
  NET_DVR_DESC_NODE   struDescNode[MAX_NODE_NUM];
}NET_DVR_ABILITY_LIST,*LPNET_DVR_ABILITY_LIST;

Members

dwAbilityType
能力类型，定义详见下表
enum _COMPRESSION_ABILITY_TYPE_{
  COMPRESSION_STREAM_ABILITY   = 0,
  MAIN_RESOLUTION_ABILITY      = 1,
  SUB_RESOLUTION_ABILITY       = 2,
  EVENT_RESOLUTION_ABILITY     = 3,
  FRAME_ABILITY                = 4,
  BITRATE_TYPE_ABILITY         = 5,
  BITRATE_ABILITY              = 6,
  THIRD_RESOLUTION_ABILITY     = 7,
  STREAM_TYPE_ABILITY          = 8,
  PIC_QUALITY_ABILITY          = 9,
  INTERVAL_BPFRAME_ABILITY     = 10,
  VIDEO_ENC_ABILITY            = 11,
  AUDIO_ENC_ABILITY            = 12,
  VIDEO_ENC_COMPLEXITY_ABILITY = 13,
  FORMAT_ABILITY               = 14
}COMPRESSION_ABILITY_TYPE
COMPRESSION_STREAM_ABILITY
码流压缩类型
MAIN_RESOLUTION_ABILITY
主码流压缩分辨率
SUB_RESOLUTION_ABILITY
子码流压缩分辨率
EVENT_RESOLUTION_ABILITY
事件压缩参数分辨率
FRAME_ABILITY
帧率能力
BITRATE_TYPE_ABILITY
位率类型能力
BITRATE_ABILITY
位率上限
THIRD_RESOLUTION_ABILITY
三码流压缩分辨率
STREAM_TYPE_ABILITY
码流类型
PIC_QUALITY_ABILITY
图像质量
INTERVAL_BPFRAME_ABILITY
BP帧间隔
VIDEO_ENC_ABILITY
视频编码能力
AUDIO_ENC_ABILITY
音频编码能力
VIDEO_ENC_COMPLEXITY_ABILITY
视频编码复杂度能力
FORMAT_ABILITY
封装格式能力
byRes
保留，置为0
dwNodeNum
能力节点个数
struDescNode
节点能力参数结构

Remarks

我们举例说明各个能力类型与节点参数的关系：
能力类型（dwAbilityType） | 节点个数（dwNodeNum） | 节点参数（struDescNode->iValue） | 节点参数（struDescNode->byDescribe）
COMPRESSION_STREAM_ABILITY | 3 | 0 | “Main Stream”
COMPRESSION_STREAM_ABILITY | 3 | 1 | “Sub Stream”
COMPRESSION_STREAM_ABILITY | 3 | 2 | “Event Stream”
BITRATE_ABILITY | 23 | 0 | “16Kbps”
BITRATE_ABILITY | 23 | 1 | “32Kbps”
… | … | … | …
BITRATE_ABILITY | 23 | -1 | “Self-Define(0-65535kbps)”

See Also

NET_DVR_COMPRESSIONCFG_ABILITY


NET_DVR_ACCELERATIONCFG

加速配置结构体。

struct{
  DWORD    dwMaxXAcc;
  DWORD    dwMaxYAcc;
  DWORD    dwMaxZAcc;
  BYTE     byRes[4];
}NET_DVR_ACCELERATIONCFG, *LPNET_DVR_ACCELERATIONCFG;

Members

dwMaxXAcc
X轴加速度报警值，该取值为实际数值乘以10，最小为0
dwMaxYAcc
Y轴加速度报警值，该取值为实际数值乘以10，最小为0
dwMaxZAcc
Z轴加速度报警值，该取值为实际数值乘以10，最小为0
byRes
保留

See Also

NET_DVR_GSENSORPARA


NET_DVR_ACCESS_CAMERA_INFO

前端相机信息结构体。

struct{
  DWORD    dwSize;
  char     sCameraInfo[32];
  BYTE     byInterfaceType;
  BYTE     byRes1[3];
  DWORD    dwChannel;
  BYTE     byRes[24];
}NET_DVR_ACCESS_CAMERA_INFO,*LPNET_DVR_ACCESS_CAMERA_INFO;

Members

dwSize
结构体大小
sCameraInfo
前端相机信息
byInterfaceType
前端接入接口类型：1- VGA，2- HDMI，3- YPbPr，4- SDI，5- FC，6- 自动
byRes1
保留，置为0
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 前端相机信息通过接口NET_DVR_SetAccessCameraInfo进行设置，该接口为长连接。
  • 前端相机信息设置能力，对应通道输入能力集(ChannelInputAbility)中节点<CameraInterface>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_SetAccessCameraInfo


NET_DVR_ACCESS_DEVICE_CHANNEL_INFO

待接入设备通道信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTotalChannelNum[32];
  BYTE     byChannel[64];
  BYTE     byRes[32];
}NET_DVR_ACCESS_DEVICE_CHANNEL_INFO, *LPNET_DVR_ACCESS_DEVICE_CHANNEL_INFO;

Members

dwSize
结构体大小
dwTotalChannelNum
设备总通道个数，设备不在线时返回0，byChannel无效
byChannel
通道信息，byChannel[i]为0表示第（byGroup+1）*（i-1）通道未接入到NVR，为1表示该通道已接入到NVR。 byGroup请参见结构体NET_DVR_ACCESS_DEVICE_INFO。
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_ACCESS_DEVICE_INFO

待接入设备参数结构体。

struct{
  DWORD             dwSize;
  BYTE              byGroup;
  BYTE              byProType;
  BYTE              byAccessMode;
  BYTE              byRes1;
  char              szUserName[NAME_LEN];
  char              szPassword[PASSWD_LEN];
  char              szDomain[MAX_DOMAIN_NAME];
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byRes2[34];
}NET_DVR_ACCESS_DEVICE_INFO, *LPNET_DVR_ACCESS_DEVICE_INFO;

Members

dwSize
结构体大小
byGroup
组号，每组可获取64个通道，从0开始，0表示第1组，以此类推
byProType
协议类型：0- 私有协议，1- 松下协议，2- 索尼
byAccessMode
接入模式：0- IP地址，1- 域名
byRes1
保留，置为0
szUserName
用户名
szPassword
密码
szDomain
设备域名
struIP
IP地址
wPort
端口号
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_ACCESSORY_CARD_INFO

配件板信息结构体。

struct{
  DWORD    dwSize;
  BYTE     szAccessoryCardInfo[MAX_ACCESSORY_CARD];
  BYTE     byRes[512];
}NET_DVR_ACCESSORY_CARD_INFO,*LPNET_DVR_ACCESSORY_CARD_INFO;

Members

dwSize
结构体大小
szAccessoryCardInfo
配件板型号信息
byRes
保留，置为0

Remarks

  • 设备是否支持获取配件板信息或者支持的参数能力，可以通过设备能力集进行判断，对应获取配件板信息能力集(AccessoryCardInfo)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ACCESSORY_CARD_INFO_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig


NET_DVR_ACS_ALARM_INFO

门禁主机报警信息结构体。

struct{
  DWORD                     dwSize;
  DWORD                     dwMajor;
  DWORD                     dwMinor;
  NET_DVR_TIME              struTime;
  BYTE                      sNetUser[MAX_NAMELEN];
  NET_DVR_IPADDR            struRemoteHostAddr ;
  NET_DVR_ACS_EVENT_INFO    struAcsEventInfo;
  DWORD                     dwPicDataLen;
  char                      *pPicData;
  WORD                      wInductiveEventType;
  BYTE                      byPicTransType;
  BYTE                      byRes1;
  DWORD                     dwIOTChannelNo;
  char                      *pAcsEventInfoExtend;
  BYTE                      byAcsEventInfoExtend;
  BYTE                      byTimeType;
  BYTE                      byRes2;
  BYTE                      byAcsEventInfoExtendV20;
  char                      *pAcsEventInfoExtendV20;
  BYTE                      byRes[4];
}NET_DVR_ACS_ALARM_INFO,*LPNET_DVR_ACS_ALARM_INFO;

Members

dwSize
结构体大小
dwMajor
报警主类型，具体定义见“Remarks”说明
dwMinor
报警次类型，次类型含义根据主类型不同而不同，具体定义见“Remarks”说明
struTime
报警时间
sNetUser
网络操作的用户名
struRemoteHostAddr
远程主机地址
struAcsEventInfo
报警信息详细参数
dwPicDataLen
图片数据大小，不为0是表示后面带数据
pPicData
图片数据缓冲区
wInductiveEventType
归纳事件类型，0-无效，客户端判断该值为非0值后，报警类型通过归纳事件类型区分，否则通过原有报警主次类型（dwMajor、dwMinor）区分
byPicTransType
图片数据传输方式: 0-二进制；1-url
byRes1
保留，置为0
dwIOTChannelNo
IOT通道号
pAcsEventInfoExtend
byAcsEventInfoExtend为1时，表示指向一个NET_DVR_ACS_EVENT_INFO_EXTEND结构体
byAcsEventInfoExtend
pAcsEventInfoExtend是否有效：0-无效，1-有效
byTimeType
时间类型：0-设备本地时间，1-UTC时间（struTime的时间）
byRes2
保留，置为0
byAcsEventInfoExtendV20
pAcsEventInfoExtendV20是否有效：0-无效，1-有效
pAcsEventInfoExtendV20
byAcsEventInfoExtendV20为1时，表示指向一个NET_DVR_ACS_EVENT_INFO_EXTEND_V20结构体
byRes
保留，置为0

Remarks

门禁主机报警信息获取只能通过NET_DVR_SetDVRMessageCallBack_V31设置报警回调函数，回调函数有返回值，需要返回TRUE告知设备已经接收数据，设备才会上传下一条信息。

报警主类型定义如下所示：

宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_EVENT | 0x5 | 事件

根据不同的主类型的次类型定义如下所示：

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARMIN_SHORT_CIRCUIT | 0x400 | 防区短路报警
MINOR_ALARMIN_BROKEN_CIRCUIT | 0x401 | 防区断路报警
MINOR_ALARMIN_EXCEPTION | 0x402 | 防区异常报警
MINOR_ALARMIN_RESUME | 0x403 | 防区报警恢复
MINOR_HOST_DESMANTLE_ALARM | 0x404 | 设备防拆报警
MINOR_HOST_DESMANTLE_RESUME | 0x405 | 设备防拆恢复
MINOR_CARD_READER_DESMANTLE_ALARM | 0x406 | 读卡器防拆报警
MINOR_CARD_READER_DESMANTLE_RESUME | 0x407 | 读卡器防拆恢复
MINOR_CASE_SENSOR_ALARM | 0x408 | 事件输入报警
MINOR_CASE_SENSOR_RESUME | 0x409 | 事件输入恢复
MINOR_STRESS_ALARM | 0x40a | 胁迫报警
MINOR_OFFLINE_ECENT_NEARLY_FULL | 0x40b | 离线事件满90%报警
MINOR_CARD_MAX_AUTHENTICATE_FAIL | 0x40c | 卡号认证失败超次报警
MINOR_SD_CARD_FULL | 0x40d | SD卡存储满报警
MINOR_LINKAGE_CAPTURE_PIC | 0x40e | 联动抓拍事件报警
MINOR_SECURITY_MODULE_DESMANTLE_ALARM | 0x40f | 门控安全模块防拆报警
MINOR_SECURITY_MODULE_DESMANTLE_RESUME | 0x410 | 门控安全模块防拆恢复
MINOR_POS_START_ALARM | 0x411 | POS开启
MINOR_POS_END_ALARM | 0x412 | POS结束
MINOR_FACE_IMAGE_QUALITY_LOW | 0x413 | 人脸图像画质低
MINOR_FINGE_RPRINT_QUALITY_LOW | 0x414 | 指纹图像画质低
MINOR_FIRE_IMPORT_SHORT_CIRCUIT | 0x415 | 消防输入短路报警
MINOR_FIRE_IMPORT_BROKEN_CIRCUIT | 0x416 | 消防输入断路报警
MINOR_FIRE_IMPORT_RESUME | 0x417 | 消防输入恢复
MINOR_FIRE_BUTTON_TRIGGER | 0x418 | 消防按钮触发
MINOR_FIRE_BUTTON_RESUME | 0x419 | 消防按钮恢复
MINOR_MAINTENANCE_BUTTON_TRIGGER | 0x41a | 维护按钮触发
MINOR_MAINTENANCE_BUTTON_RESUME | 0x41b | 维护按钮恢复
MINOR_EMERGENCY_BUTTON_TRIGGER | 0x41c | 紧急按钮触发
MINOR_EMERGENCY_BUTTON_RESUME | 0x41d | 紧急按钮恢复
MINOR_DISTRACT_CONTROLLER_ALARM | 0x41e | 分控器防拆报警
MINOR_DISTRACT_CONTROLLER_RESUME | 0x41f | 分控器防拆报警恢复
MINOR_CHANNEL_CONTROLLER_DESMANTLE_ALARM | 0x422 | 通道控制器防拆报警
MINOR_CHANNEL_CONTROLLER_DESMANTLE_RESUME | 0x423 | 通道控制器防拆报警恢复
MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM | 0x424 | 通道控制器消防输入报警
MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME | 0x425 | 通道控制器消防输入报警恢复
MINOR_LEGAL_EVENT_NEARLY_FULL | 0x442 | 合法事件满90%报警
MINOR_ALARM_CUSTOM1 | 0x900 | 门禁自定义报警1
MINOR_ALARM_CUSTOM2 | 0x901 | 门禁自定义报警2
MINOR_ALARM_CUSTOM3 | 0x902 | 门禁自定义报警3
MINOR_ALARM_CUSTOM4 | 0x903 | 门禁自定义报警4
MINOR_ALARM_CUSTOM5 | 0x904 | 门禁自定义报警5
MINOR_ALARM_CUSTOM6 | 0x905 | 门禁自定义报警6
MINOR_ALARM_CUSTOM7 | 0x906 | 门禁自定义报警7
MINOR_ALARM_CUSTOM8 | 0x907 | 门禁自定义报警8
MINOR_ALARM_CUSTOM9 | 0x908 | 门禁自定义报警9
MINOR_ALARM_CUSTOM10 | 0x909 | 门禁自定义报警10
MINOR_ALARM_CUSTOM11 | 0x90a | 门禁自定义报警11
MINOR_ALARM_CUSTOM12 | 0x90b | 门禁自定义报警12
MINOR_ALARM_CUSTOM13 | 0x90c | 门禁自定义报警13
MINOR_ALARM_CUSTOM14 | 0x90d | 门禁自定义报警14
MINOR_ALARM_CUSTOM15 | 0x90e | 门禁自定义报警15
MINOR_ALARM_CUSTOM16 | 0x90f | 门禁自定义报警16
MINOR_ALARM_CUSTOM17 | 0x910 | 门禁自定义报警17
MINOR_ALARM_CUSTOM18 | 0x911 | 门禁自定义报警18
MINOR_ALARM_CUSTOM19 | 0x912 | 门禁自定义报警19
MINOR_ALARM_CUSTOM20 | 0x913 | 门禁自定义报警20
MINOR_ALARM_CUSTOM21 | 0x914 | 门禁自定义报警21
MINOR_ALARM_CUSTOM22 | 0x915 | 门禁自定义报警22
MINOR_ALARM_CUSTOM23 | 0x916 | 门禁自定义报警23
MINOR_ALARM_CUSTOM24 | 0x917 | 门禁自定义报警24
MINOR_ALARM_CUSTOM25 | 0x918 | 门禁自定义报警25
MINOR_ALARM_CUSTOM26 | 0x919 | 门禁自定义报警26
MINOR_ALARM_CUSTOM27 | 0x91a | 门禁自定义报警27
MINOR_ALARM_CUSTOM28 | 0x91b | 门禁自定义报警28
MINOR_ALARM_CUSTOM29 | 0x91c | 门禁自定义报警29
MINOR_ALARM_CUSTOM30 | 0x91d | 门禁自定义报警30
MINOR_ALARM_CUSTOM31 | 0x91e | 门禁自定义报警31
MINOR_ALARM_CUSTOM32 | 0x91f | 门禁自定义报警32
MINOR_ALARM_CUSTOM33 | 0x920 | 门禁自定义报警33
MINOR_ALARM_CUSTOM34 | 0x921 | 门禁自定义报警34
MINOR_ALARM_CUSTOM35 | 0x922 | 门禁自定义报警35
MINOR_ALARM_CUSTOM36 | 0x923 | 门禁自定义报警36
MINOR_ALARM_CUSTOM37 | 0x924 | 门禁自定义报警37
MINOR_ALARM_CUSTOM38 | 0x925 | 门禁自定义报警38
MINOR_ALARM_CUSTOM39 | 0x926 | 门禁自定义报警39
MINOR_ALARM_CUSTOM40 | 0x927 | 门禁自定义报警40
MINOR_ALARM_CUSTOM41 | 0x928 | 门禁自定义报警41
MINOR_ALARM_CUSTOM42 | 0x929 | 门禁自定义报警42
MINOR_ALARM_CUSTOM43 | 0x92a | 门禁自定义报警43
MINOR_ALARM_CUSTOM44 | 0x92b | 门禁自定义报警44
MINOR_ALARM_CUSTOM45 | 0x92c | 门禁自定义报警45
MINOR_ALARM_CUSTOM46 | 0x92d | 门禁自定义报警46
MINOR_ALARM_CUSTOM47 | 0x92e | 门禁自定义报警47
MINOR_ALARM_CUSTOM48 | 0x92f | 门禁自定义报警48
MINOR_ALARM_CUSTOM49 | 0x930 | 门禁自定义报警49
MINOR_ALARM_CUSTOM50 | 0x931 | 门禁自定义报警50
MINOR_ALARM_CUSTOM51 | 0x932 | 门禁自定义报警51
MINOR_ALARM_CUSTOM52 | 0x933 | 门禁自定义报警52
MINOR_ALARM_CUSTOM53 | 0x934 | 门禁自定义报警53
MINOR_ALARM_CUSTOM54 | 0x935 | 门禁自定义报警54
MINOR_ALARM_CUSTOM55 | 0x936 | 门禁自定义报警55
MINOR_ALARM_CUSTOM56 | 0x937 | 门禁自定义报警56
MINOR_ALARM_CUSTOM57 | 0x938 | 门禁自定义报警57
MINOR_ALARM_CUSTOM58 | 0x939 | 门禁自定义报警58
MINOR_ALARM_CUSTOM59 | 0x93a | 门禁自定义报警59
MINOR_ALARM_CUSTOM60 | 0x93b | 门禁自定义报警60
MINOR_ALARM_CUSTOM61 | 0x93c | 门禁自定义报警61
MINOR_ALARM_CUSTOM62 | 0x93d | 门禁自定义报警62
MINOR_ALARM_CUSTOM63 | 0x93e | 门禁自定义报警63
MINOR_ALARM_CUSTOM64 | 0x93f | 门禁自定义报警64
MINOR_LOCK_HIJIACK_ALARM | 0x95d | 智能锁防劫持报警

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_RS485_DEVICE_ABNORMAL | 0x3a | RS485连接状态异常
MINOR_RS485_DEVICE_REVERT | 0x3b | RS485连接状态异常恢复
MINOR_DEV_POWER_ON | 0x400 | 设备上电启动
MINOR_DEV_POWER_OFF | 0x401 | 设备掉电关闭
MINOR_WATCH_DOG_RESET | 0x402 | 看门狗复位
MINOR_LOW_BATTERY | 0x403 | 蓄电池电压低
MINOR_BATTERY_RESUME | 0x404 | 蓄电池电压恢复正常
MINOR_AC_OFF | 0x405 | 交流电断电
MINOR_AC_RESUME | 0x406 | 交流电恢复
MINOR_NET_RESUME | 0x407 | 网络恢复
MINOR_FLASH_ABNORMAL | 0x408 | FLASH读写异常
MINOR_CARD_READER_OFFLINE | 0x409 | 读卡器掉线
MINOR_CARD_READER_RESUME | 0x40a | 读卡器掉线恢复
MINOR_INDICATOR_LIGHT_OFF | 0x40b | 指示灯关闭
MINOR_INDICATOR_LIGHT_RESUME | 0x40c | 指示灯恢复
MINOR_CHANNEL_CONTROLLER_OFF | 0x40d | 通道控制器掉线
MINOR_CHANNEL_CONTROLLER_RESUME | 0x40e | 通道控制器恢复
MINOR_SECURITY_MODULE_OFF | 0x40f | 门控安全模块掉线
MINOR_SECURITY_MODULE_RESUME | 0x410 | 门控安全模块掉线恢复
MINOR_LOCAL_CONTROL_NET_BROKEN | 0x413 | 就地控制器网络断开
MINOR_LOCAL_CONTROL_NET_RSUME | 0x414 | 就地控制器网络恢复
MINOR_MASTER_RS485_LOOPNODE_BROKEN | 0x415 | 主控RS485环路节点断开
MINOR_MASTER_RS485_LOOPNODE_RESUME | 0x416 | 主控RS485环路节点恢复
MINOR_LOCAL_CONTROL_OFFLINE | 0x417 | 就地控制器掉线
MINOR_LOCAL_CONTROL_RESUME | 0x418 | 就地控制器掉线恢复
MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN | 0x419 | 就地下行RS485环路断开
MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME | 0x41a | 就地下行RS485环路恢复
MINOR_DISTRACT_CONTROLLER_ONLINE | 0x41b | 分控器在线
MINOR_DISTRACT_CONTROLLER_OFFLINE | 0x41c | 分控器离线
MINOR_ID_CARD_READER_NOT_CONNECT | 0x41d | 身份证阅读器未连接（智能专用）
MINOR_ID_CARD_READER_RESUME | 0x41e | 身份证阅读器连接恢复（智能专用）
MINOR_FINGER_PRINT_MODULE_NOT_CONNECT | 0x41f | 指纹模组未连接（智能专用）
MINOR_FINGER_PRINT_MODULE_RESUME | 0x420 | 指纹模组连接恢复（智能专用）
MINOR_CAMERA_NOT_CONNECT | 0x421 | 摄像头未连接
MINOR_CAMERA_RESUME | 0x422 | 摄像头连接恢复
MINOR_COM_NOT_CONNECT | 0x423 | COM口未连接
MINOR_COM_RESUME | 0x424 | COM口连接恢复
MINOR_DEVICE_NOT_AUTHORIZE | 0x425 | 设备未授权
MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE | 0x426 | 人证设备在线
MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE | 0x427 | 人证设备离线
MINOR_LOCAL_LOGIN_LOCK | 0x428 | 本地登录锁定
MINOR_LOCAL_LOGIN_UNLOCK | 0x428 | 本地登录解锁
MINOR_BATTERY_ELECTRIC_LOW | 0x411 | 电池电压低（仅人脸设备使用）
MINOR_BATTERY_ELECTRIC_RESUME | 0x412 | 电池电压恢复正常（仅人脸设备使用）
MINOR_LOCAL_LOGIN_LOCK | 0x428 | 本地登录锁定
MINOR_LOCAL_LOGIN_UNLOCK | 0x429 | 本地登录解锁
MINOR_SUBMARINEBACK_COMM_BREAK | 0x42a | 与反潜回服务器通信断开
MINOR_SUBMARINEBACK_COMM_RESUME | 0x42b | 与反潜回服务器通信恢复
MINOR_MOTOR_SENSOR_EXCEPTION | 0x42c | 电机或传感器异常
MINOR_CAN_BUS_EXCEPTION | 0x42d | CAN总线异常
MINOR_CAN_BUS_RESUME | 0x42e | CAN总线恢复
MINOR_GATE_TEMPERATURE_OVERRUN | 0x42f | 闸机腔体温度超限
MINOR_IR_EMITTER_EXCEPTION | 0x430 | 红外对射异常
MINOR_IR_EMITTER_RESUME | 0x431 | 红外对射恢复
MINOR_LAMP_BOARD_COMM_EXCEPTION | 0x432 | 灯板通信异常
MINOR_LAMP_BOARD_COMM_RESUME | 0x433 | 灯板通信恢复
MINOR_IR_ADAPTOR_COMM_EXCEPTION | 0x434 | 红外转接板通信异常
MINOR_IR_ADAPTOR_COMM_RESUME | 0x435 | 红外转接板通信恢复
MINOR_EXCEPTION_CUSTOM1 | 0x900 | 门禁自定义异常1
MINOR_EXCEPTION_CUSTOM2 | 0x901 | 门禁自定义异常2
MINOR_EXCEPTION_CUSTOM3 | 0x902 | 门禁自定义异常3
MINOR_EXCEPTION_CUSTOM4 | 0x903 | 门禁自定义异常4
MINOR_EXCEPTION_CUSTOM5 | 0x904 | 门禁自定义异常5
MINOR_EXCEPTION_CUSTOM6 | 0x905 | 门禁自定义异常6
MINOR_EXCEPTION_CUSTOM7 | 0x906 | 门禁自定义异常7
MINOR_EXCEPTION_CUSTOM8 | 0x907 | 门禁自定义异常8
MINOR_EXCEPTION_CUSTOM9 | 0x908 | 门禁自定义异常9
MINOR_EXCEPTION_CUSTOM10 | 0x909 | 门禁自定义异常10
MINOR_EXCEPTION_CUSTOM11 | 0x90a | 门禁自定义异常11
MINOR_EXCEPTION_CUSTOM12 | 0x90b | 门禁自定义异常12
MINOR_EXCEPTION_CUSTOM13 | 0x90c | 门禁自定义异常13
MINOR_EXCEPTION_CUSTOM14 | 0x90d | 门禁自定义异常14
MINOR_EXCEPTION_CUSTOM15 | 0x90e | 门禁自定义异常15
MINOR_EXCEPTION_CUSTOM16 | 0x90f | 门禁自定义异常16
MINOR_EXCEPTION_CUSTOM17 | 0x910 | 门禁自定义异常17
MINOR_EXCEPTION_CUSTOM18 | 0x911 | 门禁自定义异常18
MINOR_EXCEPTION_CUSTOM19 | 0x912 | 门禁自定义异常19
MINOR_EXCEPTION_CUSTOM20 | 0x913 | 门禁自定义异常20
MINOR_EXCEPTION_CUSTOM21 | 0x914 | 门禁自定义异常21
MINOR_EXCEPTION_CUSTOM22 | 0x915 | 门禁自定义异常22
MINOR_EXCEPTION_CUSTOM23 | 0x916 | 门禁自定义异常23
MINOR_EXCEPTION_CUSTOM24 | 0x917 | 门禁自定义异常24
MINOR_EXCEPTION_CUSTOM25 | 0x918 | 门禁自定义异常25
MINOR_EXCEPTION_CUSTOM26 | 0x919 | 门禁自定义异常26
MINOR_EXCEPTION_CUSTOM27 | 0x91a | 门禁自定义异常27
MINOR_EXCEPTION_CUSTOM28 | 0x91b | 门禁自定义异常28
MINOR_EXCEPTION_CUSTOM29 | 0x91c | 门禁自定义异常29
MINOR_EXCEPTION_CUSTOM30 | 0x91d | 门禁自定义异常30
MINOR_EXCEPTION_CUSTOM31 | 0x91e | 门禁自定义异常31
MINOR_EXCEPTION_CUSTOM32 | 0x91f | 门禁自定义异常32
MINOR_EXCEPTION_CUSTOM33 | 0x920 | 门禁自定义异常33
MINOR_EXCEPTION_CUSTOM34 | 0x921 | 门禁自定义异常34
MINOR_EXCEPTION_CUSTOM35 | 0x922 | 门禁自定义异常35
MINOR_EXCEPTION_CUSTOM36 | 0x923 | 门禁自定义异常36
MINOR_EXCEPTION_CUSTOM37 | 0x924 | 门禁自定义异常37
MINOR_EXCEPTION_CUSTOM38 | 0x925 | 门禁自定义异常38
MINOR_EXCEPTION_CUSTOM39 | 0x926 | 门禁自定义异常39
MINOR_EXCEPTION_CUSTOM40 | 0x927 | 门禁自定义异常40
MINOR_EXCEPTION_CUSTOM41 | 0x928 | 门禁自定义异常41
MINOR_EXCEPTION_CUSTOM42 | 0x929 | 门禁自定义异常42
MINOR_EXCEPTION_CUSTOM43 | 0x92a | 门禁自定义异常43
MINOR_EXCEPTION_CUSTOM44 | 0x92b | 门禁自定义异常44
MINOR_EXCEPTION_CUSTOM45 | 0x92c | 门禁自定义异常45
MINOR_EXCEPTION_CUSTOM46 | 0x92d | 门禁自定义异常46
MINOR_EXCEPTION_CUSTOM47 | 0x92e | 门禁自定义异常47
MINOR_EXCEPTION_CUSTOM48 | 0x92f | 门禁自定义异常48
MINOR_EXCEPTION_CUSTOM49 | 0x930 | 门禁自定义异常49
MINOR_EXCEPTION_CUSTOM50 | 0x931 | 门禁自定义异常50
MINOR_EXCEPTION_CUSTOM51 | 0x932 | 门禁自定义异常51
MINOR_EXCEPTION_CUSTOM52 | 0x933 | 门禁自定义异常52
MINOR_EXCEPTION_CUSTOM53 | 0x934 | 门禁自定义异常53
MINOR_EXCEPTION_CUSTOM54 | 0x935 | 门禁自定义异常54
MINOR_EXCEPTION_CUSTOM55 | 0x936 | 门禁自定义异常55
MINOR_EXCEPTION_CUSTOM56 | 0x937 | 门禁自定义异常56
MINOR_EXCEPTION_CUSTOM57 | 0x938 | 门禁自定义异常57
MINOR_EXCEPTION_CUSTOM58 | 0x939 | 门禁自定义异常58
MINOR_EXCEPTION_CUSTOM59 | 0x93a | 门禁自定义异常59
MINOR_EXCEPTION_CUSTOM60 | 0x93b | 门禁自定义异常60
MINOR_EXCEPTION_CUSTOM61 | 0x93c | 门禁自定义异常61
MINOR_EXCEPTION_CUSTOM62 | 0x93d | 门禁自定义异常62
MINOR_EXCEPTION_CUSTOM63 | 0x93e | 门禁自定义异常63
MINOR_EXCEPTION_CUSTOM64 | 0x93f | 门禁自定义异常64

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_LOGOUT | 0x51 | 本地注销登陆
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_ALARMOUT_OPEN_MAN | 0xd6 | 远程手动开启报警输出
MINOR_REMOTE_ALARMOUT_CLOSE_MAN | 0xd7 | 远程手动关闭报警输出
MINOR_REMOTE_OPEN_DOOR | 0x400 | 远程开门
MINOR_REMOTE_CLOSE_DOOR | 0x401 | 远程关门（对于梯控，表示受控）
MINOR_REMOTE_ALWAYS_OPEN | 0x402 | 远程常开（对于梯控，表示自由）
MINOR_REMOTE_ALWAYS_CLOSE | 0x403 | 远程常关（对于梯控，表示禁用）
MINOR_REMOTE_CHECK_TIME | 0x404 | 远程手动校时
MINOR_NTP_CHECK_TIME | 0x405 | NTP自动校时
MINOR_REMOTE_CLEAR_CARD | 0x406 | 远程清空卡号
MINOR_REMOTE_RESTORE_CFG | 0x407 | 远程恢复默认参数
MINOR_ALARMIN_ARM | 0x408 | 防区布防
MINOR_ALARMIN_DISARM | 0x409 | 防区撤防
MINOR_LOCAL_RESTORE_CFG | 0x40a | 本地恢复默认参数
MINOR_REMOTE_CAPTURE_PIC | 0x40b | 远程抓拍
MINOR_MOD_NET_REPORT_CFG | 0x40c | 修改网络中心参数配置
MINOR_MOD_GPRS_REPORT_PARAM | 0x40d | 修改GPRS中心参数配置
MINOR_MOD_REPORT_GROUP_PARAM | 0x40e | 修改中心组参数配置
MINOR_UNLOCK_PASSWORD_OPEN_DOOR | 0x40f | 解除码输入
MINOR_AUTO_RENUMBER | 0x410 | 自动重新编号
MINOR_AUTO_COMPLEMENT_NUMBER | 0x411 | 自动补充编号
MINOR_NORMAL_CFGFILE_INPUT | 0x412 | 导入普通配置文件
MINOR_NORMAL_CFGFILE_OUTTPUT | 0x413 | 导出普通配置文件
MINOR_CARD_RIGHT_INPUT | 0x414 | 导入卡权限参数
MINOR_CARD_RIGHT_OUTTPUT | 0x415 | 导出卡权限参数
MINOR_LOCAL_USB_UPGRADE | 0x416 | 本地U盘升级
MINOR_REMOTE_VISITOR_CALL_LADDER | 0x417 | 访客呼梯
MINOR_REMOTE_HOUSEHOLD_CALL_LADDER | 0x418 | 住户呼梯
MINOR_REMOTE_ACTUAL_GUARD | 0x419 | 远程实时布防
MINOR_REMOTE_ACTUAL_UNGUARD | 0x41a | 远程实时撤防
MINOR_REMOTE_CONTROL_NOT_CODE_OPER_FAILED | 0x41b | 遥控器未对码操作失败
MINOR_REMOTE_CONTROL_CLOSE_DOOR | 0x41c | 遥控器关门
MINOR_REMOTE_CONTROL_OPEN_DOOR | 0x41d | 遥控器开门
MINOR_REMOTE_CONTROL_ALWAYS_OPEN_DOOR | 0x41e | 遥控器常开门
MINOR_OPERATION_CUSTOM1 | 0x900 | 门禁自定义操作1
MINOR_OPERATION_CUSTOM2 | 0x901 | 门禁自定义操作2
MINOR_OPERATION_CUSTOM3 | 0x902 | 门禁自定义操作3
MINOR_OPERATION_CUSTOM4 | 0x903 | 门禁自定义操作4
MINOR_OPERATION_CUSTOM5 | 0x904 | 门禁自定义操作5
MINOR_OPERATION_CUSTOM6 | 0x905 | 门禁自定义操作6
MINOR_OPERATION_CUSTOM7 | 0x906 | 门禁自定义操作7
MINOR_OPERATION_CUSTOM8 | 0x907 | 门禁自定义操作8
MINOR_OPERATION_CUSTOM9 | 0x908 | 门禁自定义操作9
MINOR_OPERATION_CUSTOM10 | 0x909 | 门禁自定义操作10
MINOR_OPERATION_CUSTOM11 | 0x90a | 门禁自定义操作11
MINOR_OPERATION_CUSTOM12 | 0x90b | 门禁自定义异常12
MINOR_OPERATION_CUSTOM13 | 0x90c | 门禁自定义操作13
MINOR_OPERATION_CUSTOM14 | 0x90d | 门禁自定义操作14
MINOR_OPERATION_CUSTOM15 | 0x90e | 门禁自定义操作15
MINOR_OPERATION_CUSTOM16 | 0x90f | 门禁自定义操作16
MINOR_OPERATION_CUSTOM17 | 0x910 | 门禁自定义操作17
MINOR_OPERATION_CUSTOM18 | 0x911 | 门禁自定义操作18
MINOR_OPERATION_CUSTOM19 | 0x912 | 门禁自定义操作19
MINOR_OPERATION_CUSTOM20 | 0x913 | 门禁自定义操作20
MINOR_OPERATION_CUSTOM21 | 0x914 | 门禁自定义异常21
MINOR_OPERATION_CUSTOM22 | 0x915 | 门禁自定义操作22
MINOR_OPERATION_CUSTOM23 | 0x916 | 门禁自定义操作23
MINOR_OPERATION_CUSTOM24 | 0x917 | 门禁自定义操作24
MINOR_OPERATION_CUSTOM25 | 0x918 | 门禁自定义操作25
MINOR_OPERATION_CUSTOM26 | 0x919 | 门禁自定义操作26
MINOR_OPERATION_CUSTOM27 | 0x91a | 门禁自定义操作27
MINOR_OPERATION_CUSTOM28 | 0x91b | 门禁自定义操作28
MINOR_OPERATION_CUSTOM29 | 0x91c | 门禁自定义操作29
MINOR_OPERATION_CUSTOM30 | 0x91d | 门禁自定义操作30
MINOR_OPERATION_CUSTOM31 | 0x91e | 门禁自定义操作31
MINOR_OPERATION_CUSTOM32 | 0x91f | 门禁自定义操作32
MINOR_OPERATION_CUSTOM33 | 0x920 | 门禁自定义操作33
MINOR_OPERATION_CUSTOM34 | 0x921 | 门禁自定义操作34
MINOR_OPERATION_CUSTOM35 | 0x922 | 门禁自定义操作35
MINOR_OPERATION_CUSTOM36 | 0x923 | 门禁自定义操作36
MINOR_OPERATION_CUSTOM37 | 0x924 | 门禁自定义操作37
MINOR_OPERATION_CUSTOM38 | 0x925 | 门禁自定义操作38
MINOR_OPERATION_CUSTOM39 | 0x926 | 门禁自定义操作39
MINOR_OPERATION_CUSTOM40 | 0x927 | 门禁自定义操作40
MINOR_OPERATION_CUSTOM41 | 0x928 | 门禁自定义操作41
MINOR_OPERATION_CUSTOM42 | 0x929 | 门禁自定义操作42
MINOR_OPERATION_CUSTOM43 | 0x92a | 门禁自定义操作43
MINOR_OPERATION_CUSTOM44 | 0x92b | 门禁自定义操作44
MINOR_OPERATION_CUSTOM45 | 0x92c | 门禁自定义操作45
MINOR_OPERATION_CUSTOM46 | 0x92d | 门禁自定义操作46
MINOR_OPERATION_CUSTOM47 | 0x92e | 门禁自定义操作47
MINOR_OPERATION_CUSTOM48 | 0x92f | 门禁自定义操作48
MINOR_OPERATION_CUSTOM49 | 0x930 | 门禁自定义操作49
MINOR_OPERATION_CUSTOM50 | 0x931 | 门禁自定义操作50
MINOR_OPERATION_CUSTOM51 | 0x932 | 门禁自定义操作51
MINOR_OPERATION_CUSTOM52 | 0x933 | 门禁自定义操作52
MINOR_OPERATION_CUSTOM53 | 0x934 | 门禁自定义操作53
MINOR_OPERATION_CUSTOM54 | 0x935 | 门禁自定义操作54
MINOR_OPERATION_CUSTOM55 | 0x936 | 门禁自定义操作55
MINOR_OPERATION_CUSTOM56 | 0x937 | 门禁自定义操作56
MINOR_OPERATION_CUSTOM57 | 0x938 | 门禁自定义操作57
MINOR_OPERATION_CUSTOM58 | 0x939 | 门禁自定义操作58
MINOR_OPERATION_CUSTOM59 | 0x93a | 门禁自定义操作59
MINOR_OPERATION_CUSTOM60 | 0x93b | 门禁自定义操作60
MINOR_OPERATION_CUSTOM61 | 0x93c | 门禁自定义操作61
MINOR_OPERATION_CUSTOM62 | 0x93d | 门禁自定义操作62
MINOR_OPERATION_CUSTOM63 | 0x93e | 门禁自定义操作63
MINOR_OPERATION_CUSTOM64 | 0x93f | 门禁自定义操作64

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EVENT | 0x5 | 事件
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LEGAL_CARD_PASS | 0x01 | 合法卡认证通过
MINOR_CARD_AND_PSW_PASS | 0x02 | 刷卡加密码认证通过
MINOR_CARD_AND_PSW_FAIL | 0x03 | 刷卡加密码认证失败
MINOR_CARD_AND_PSW_TIMEOUT | 0x04 | 数卡加密码认证超时
MINOR_CARD_AND_PSW_OVER_TIME | 0x05 | 刷卡加密码超次
MINOR_CARD_NO_RIGHT | 0x06 | 未分配权限
MINOR_CARD_INVALID_PERIOD | 0x07 | 无效时段
MINOR_CARD_OUT_OF_DATE | 0x08 | 卡号过期
MINOR_INVALID_CARD | 0x09 | 无此卡号
MINOR_ANTI_SNEAK_FAIL | 0x0a | 反潜回认证失败
MINOR_INTERLOCK_DOOR_NOT_CLOSE | 0x0b | 互锁门未关闭
MINOR_NOT_BELONG_MULTI_GROUP | 0x0c | 卡不属于多重认证群组
MINOR_INVALID_MULTI_VERIFY_PERIOD | 0x0d | 卡不在多重认证时间段内
MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL | 0x0e | 多重认证模式超级权限认证失败
MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL | 0x0f | 多重认证模式远程认证失败
MINOR_MULTI_VERIFY_SUCCESS | 0x10 | 多重认证成功
MINOR_LEADER_CARD_OPEN_BEGIN | 0x11 | 首卡开门开始
MINOR_LEADER_CARD_OPEN_END | 0x12 | 首卡开门结束
MINOR_ALWAYS_OPEN_BEGIN | 0x13 | 常开状态开始
MINOR_ALWAYS_OPEN_END | 0x14 | 常开状态结束
MINOR_LOCK_OPEN | 0x15 | 门锁打开
MINOR_LOCK_CLOSE | 0x16 | 门锁关闭
MINOR_DOOR_BUTTON_PRESS | 0x17 | 开门按钮打开
MINOR_DOOR_BUTTON_RELEASE | 0x18 | 开门按钮放开
MINOR_DOOR_OPEN_NORMAL | 0x19 | 正常开门（门磁）
MINOR_DOOR_CLOSE_NORMAL | 0x1a | 正常关门（门磁）
MINOR_DOOR_OPEN_ABNORMAL | 0x1b | 门异常打开（门磁）
MINOR_DOOR_OPEN_TIMEOUT | 0x1c | 门打开超时（门磁）
MINOR_ALARMOUT_ON | 0x1d | 报警输出打开
MINOR_ALARMOUT_OFF | 0x1e | 报警输出关闭
MINOR_ALWAYS_CLOSE_BEGIN | 0x1f | 常关状态开始
MINOR_ALWAYS_CLOSE_END | 0x20 | 常关状态结束
MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN | 0x21 | 多重多重认证需要远程开门
MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS | 0x22 | 多重认证超级密码认证成功事件
MINOR_MULTI_VERIFY_REPEAT_VERIFY | 0x23 | 多重认证重复认证事件
MINOR_MULTI_VERIFY_TIMEOUT | 0x24 | 多重认证超时
MINOR_DOORBELL_RINGING | 0x25 | 门铃响
MINOR_FINGERPRINT_COMPARE_PASS | 0x26 | 指纹比对通过
MINOR_FINGERPRINT_COMPARE_FAIL | 0x27 | 指纹比对失败
MINOR_CARD_FINGERPRINT_VERIFY_PASS | 0x28 | 刷卡加指纹认证通过
MINOR_CARD_FINGERPRINT_VERIFY_FAIL | 0x29 | 刷卡加指纹认证失败
MINOR_CARD_FINGERPRINT_VERIFY_TIMEOUT | 0x2a | 刷卡加指纹认证超时
MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_PASS | 0x2b | 刷卡加指纹加密码认证通过
MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL | 0x2c | 刷卡加指纹加密码认证失败
MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT | 0x2d | 刷卡加指纹加密码认证超时
MINOR_FINGERPRINT_PASSWD_VERIFY_PASS | 0x2e | 指纹加密码认证通过
MINOR_FINGERPRINT_PASSWD_VERIFY_FAIL | 0x2f | 指纹加密码认证失败
MINOR_FINGERPRINT_PASSWD_VERIFY_TIMEOUT | 0x30 | 指纹加密码认证超时
MINOR_FINGERPRINT_INEXISTENCE | 0x31 | 指纹不存在
MINOR_CARD_PLATFORM_VERIFY | 0x32 | 刷卡平台认证
MINOR_CALL_CENTER | 0x33 | 呼叫中心事件
MINOR_FIRE_RELAY_TURN_ON_DOOR_ALWAYS_OPEN | 0x34 | 消防继电器导通触发门常开
MINOR_FIRE_RELAY_RECOVER_DOOR_RECOVER_NORMAL | 0x35 | 消防继电器恢复门恢复正常
MINOR_FACE_AND_FP_VERIFY_PASS | 0x36 | 人脸加指纹认证通过
MINOR_FACE_AND_FP_VERIFY_FAIL | 0x37 | 人脸加指纹认证失败
MINOR_FACE_AND_FP_VERIFY_TIMEOUT | 0x38 | 人脸加指纹认证超时
MINOR_FACE_AND_PW_VERIFY_PASS | 0x39 | 人脸加密码认证通过
MINOR_FACE_AND_PW_VERIFY_FAIL | 0x3a | 人脸加密码认证失败
MINOR_FACE_AND_PW_VERIFY_TIMEOUT | 0x3b | 人脸加密码认证超时
MINOR_FACE_AND_CARD_VERIFY_PASS | 0x3c | 人脸加刷卡认证通过
MINOR_FACE_AND_CARD_VERIFY_FAIL | 0x3d | 人脸加刷卡认证失败
MINOR_FACE_AND_CARD_VERIFY_TIMEOUT | 0x3e | 人脸加刷卡认证超时
MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS | 0x3f | 人脸加密码加指纹认证通过
MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL | 0x40 | 人脸加密码加指纹认证失败
MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT | 0x41 | 人脸加密码加指纹认证超时
MINOR_FACE_CARD_AND_FP_VERIFY_PASS | 0x42 | 人脸加刷卡加指纹认证通过
MINOR_FACE_CARD_AND_FP_VERIFY_FAIL | 0x43 | 人脸加刷卡加指纹认证失败
MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT | 0x44 | 人脸加刷卡加指纹认证超时
MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS | 0x45 | 工号加指纹认证通过
MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL | 0x46 | 工号加指纹认证失败
MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT | 0x47 | 工号加指纹认证超时
MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS | 0x48 | 工号加指纹加密码认证通过
MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL | 0x49 | 工号加指纹加密码认证失败
MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT | 0x4a | 工号加指纹加密码认证超时
MINOR_FACE_VERIFY_PASS | 0x4b | 人脸认证通过
MINOR_FACE_VERIFY_FAIL | 0x4c | 人脸认证失败
MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS | 0x4d | 工号加人脸认证通过
MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL | 0x4e | 工号加人脸认证失败
MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT | 0x4f | 工号加人脸认证超时
MINOR_FACE_RECOGNIZE_FAIL | 0x50 | 人脸抓拍失败
MINOR_FIRSTCARD_AUTHORIZE_BEGIN | 0x51 | 首卡授权开始
MINOR_FIRSTCARD_AUTHORIZE_END | 0x52 | 首卡授权结束
MINOR_DOORLOCK_INPUT_SHORT_CIRCUIT | 0x53 | 门锁输入短路报警
MINOR_DOORLOCK_INPUT_BROKEN_CIRCUIT | 0x54 | 门锁输入断路报警
MINOR_DOORLOCK_INPUT_EXCEPTION | 0x55 | 门锁输入异常报警
MINOR_DOORCONTACT_INPUT_SHORT_CIRCUIT | 0x56 | 门磁输入短路报警
MINOR_DOORCONTACT_INPUT_BROKEN_CIRCUIT | 0x57 | 门磁输入断路报警
MINOR_DOORCONTACT_INPUT_EXCEPTION | 0x58 | 门磁输入异常报警
MINOR_OPENBUTTON_INPUT_SHORT_CIRCUIT | 0x59 | 开门按钮输入短路报警
MINOR_OPENBUTTON_INPUT_BROKEN_CIRCUIT | 0x5a | 开门按钮输入断路报警
MINOR_OPENBUTTON_INPUT_EXCEPTION | 0x5b | 开门按钮输入异常报警
MINOR_DOORLOCK_OPEN_EXCEPTION | 0x5c | 门锁异常打开
MINOR_DOORLOCK_OPEN_TIMEOUT | 0x5d | 门锁打开超时
MINOR_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE | 0x5e | 首卡未授权开门失败
MINOR_CALL_LADDER_RELAY_BREAK | 0x5f | 呼梯继电器断开
MINOR_CALL_LADDER_RELAY_CLOSE | 0x60 | 呼梯继电器闭合
MINOR_AUTO_KEY_RELAY_BREAK | 0x61 | 自动按键继电器断开
MINOR_AUTO_KEY_RELAY_CLOSE | 0x62 | 自动按键继电器闭合
MINOR_KEY_CONTROL_RELAY_BREAK | 0x63 | 按键梯控继电器断开
MINOR_KEY_CONTROL_RELAY_CLOSE | 0x64 | 按键梯控继电器闭合
MINOR_EMPLOYEENO_AND_PW_PASS | 0x65 | 工号加密码认证通过
MINOR_EMPLOYEENO_AND_PW_FAIL | 0x66 | 工号加密码认证失败
MINOR_EMPLOYEENO_AND_PW_TIMEOUT | 0x67 | 工号加密码认证超时
MINOR_HUMAN_DETECT_FAIL | 0x68 | 真人检测失败
MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS | 0x69 | 人证比对通过
MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL | 0x70 | 人证比对失败
MINOR_CERTIFICATE_BLOCKLIST | 0x71 | 非授权名单事件
MINOR_LEGAL_MESSAGE | 0x72 | 合法短信
MINOR_ILLEGAL_MESSAGE | 0x73 | 非法短信
MINOR_MAC_DETECT | 0x74 | MAC侦测
MINOR_DOOR_OPEN_OR_DORMANT_FAIL | 0x75 | 门状态常闭或休眠状态认证失败
MINOR_AUTH_PLAN_DORMANT_FAIL | 0x76 | 认证计划休眠模式认证失败
MINOR_AUTH_PLAN_DORMANT_FAIL | 0x76 | 认证计划休眠模式认证失败
MINOR_CARD_ENCRYPT_VERIFY_FAIL | 0x77 | 卡加密校验失败
MINOR_SUBMARINEBACK_REPLY_FAIL | 0x78 | 反潜回服务器应答失败
MINOR_TRAILING | 0x85 | 尾随通行
MINOR_REVERSE_ACCESS | 0x86 | 反向闯入
MINOR_FORCE_ACCESS | 0x87 | 外力冲撞
MINOR_CLIMBING_OVER_GATE | 0x88 | 翻越
MINOR_PASSING_TIMEOUT | 0x89 | 通行超时
MINOR_INTRUSION_ALARM | 0x8a | 误闯报警
MINOR_FREE_GATE_PASS_NOT_AUTH | 0x8b | 闸机自由通行时未认证通过
MINOR_DROP_ARM_BLOCK | 0x8c | 摆臂被阻挡
MINOR_DROP_ARM_BLOCK_RESUME | 0x8d | 摆臂阻挡消除
MINOR_LOCAL_FACE_MODELING_FAIL | 0x8e | 设备升级本地人脸建模失败
MINOR_STAY_EVENT | 0x8f | 逗留事件
MINOR_PASSWORD_MISMATCH | 0x97 | 密码不匹配
MINOR_EMPLOYEE_NO_NOT_EXIST | 0x98 | 工号不存在
MINOR_COMBINED_VERIFY_PASS | 0x99 | 组合认证通过
MINOR_COMBINED_VERIFY_TIMEOUT | 0x9a | 组合认证超时
MINOR_VERIFY_MODE_MISMATCH | 0x9b | 认证方式不匹配
MINOR_EVENT_CUSTOM1 | 0x500 | 门禁自定义事件1
MINOR_EVENT_CUSTOM2 | 0x501 | 门禁自定义事件2
MINOR_EVENT_CUSTOM3 | 0x502 | 门禁自定义事件3
MINOR_EVENT_CUSTOM4 | 0x503 | 门禁自定义事件4
MINOR_EVENT_CUSTOM5 | 0x504 | 门禁自定义事件5
MINOR_EVENT_CUSTOM6 | 0x505 | 门禁自定义事件6
MINOR_EVENT_CUSTOM7 | 0x506 | 门禁自定义事件7
MINOR_EVENT_CUSTOM8 | 0x507 | 门禁自定义事件8
MINOR_EVENT_CUSTOM9 | 0x508 | 门禁自定义事件9
MINOR_EVENT_CUSTOM10 | 0x509 | 门禁自定义事件10
MINOR_EVENT_CUSTOM11 | 0x50a | 门禁自定义事件11
MINOR_EVENT_CUSTOM12 | 0x50b | 门禁自定义事件12
MINOR_LOCK_MULTI_OPEN_DOOR | 0x609 | 智能锁多重开门
MINOR_EVENT_CUSTOM13 | 0x50c | 门禁自定义事件13
MINOR_EVENT_CUSTOM14 | 0x50d | 门禁自定义事件14
MINOR_EVENT_CUSTOM15 | 0x50e | 门禁自定义事件15
MINOR_EVENT_CUSTOM16 | 0x50f | 门禁自定义事件16
MINOR_EVENT_CUSTOM17 | 0x510 | 门禁自定义事件17
MINOR_EVENT_CUSTOM18 | 0x511 | 门禁自定义事件18
MINOR_EVENT_CUSTOM19 | 0x512 | 门禁自定义事件19
MINOR_EVENT_CUSTOM20 | 0x513 | 门禁自定义事件20
MINOR_EVENT_CUSTOM21 | 0x514 | 门禁自定义事件21
MINOR_EVENT_CUSTOM22 | 0x515 | 门禁自定义事件22
MINOR_EVENT_CUSTOM23 | 0x516 | 门禁自定义事件23
MINOR_EVENT_CUSTOM24 | 0x517 | 门禁自定义事件24
MINOR_EVENT_CUSTOM25 | 0x518 | 门禁自定义事件25
MINOR_EVENT_CUSTOM26 | 0x519 | 门禁自定义事件26
MINOR_EVENT_CUSTOM27 | 0x51a | 门禁自定义事件27
MINOR_EVENT_CUSTOM28 | 0x51b | 门禁自定义事件28
MINOR_EVENT_CUSTOM29 | 0x51c | 门禁自定义事件29
MINOR_EVENT_CUSTOM30 | 0x51d | 门禁自定义事件30
MINOR_EVENT_CUSTOM31 | 0x51e | 门禁自定义事件31
MINOR_EVENT_CUSTOM32 | 0x51f | 门禁自定义事件32
MINOR_EVENT_CUSTOM33 | 0x520 | 门禁自定义事件33
MINOR_EVENT_CUSTOM34 | 0x521 | 门禁自定义事件34
MINOR_EVENT_CUSTOM35 | 0x522 | 门禁自定义事件35
MINOR_EVENT_CUSTOM36 | 0x523 | 门禁自定义事件36
MINOR_EVENT_CUSTOM37 | 0x524 | 门禁自定义事件37
MINOR_EVENT_CUSTOM38 | 0x525 | 门禁自定义事件38
MINOR_EVENT_CUSTOM39 | 0x526 | 门禁自定义事件39
MINOR_EVENT_CUSTOM40 | 0x527 | 门禁自定义事件40
MINOR_EVENT_CUSTOM41 | 0x528 | 门禁自定义事件41
MINOR_EVENT_CUSTOM42 | 0x529 | 门禁自定义事件42
MINOR_EVENT_CUSTOM43 | 0x52a | 门禁自定义事件43
MINOR_EVENT_CUSTOM44 | 0x52b | 门禁自定义事件44
MINOR_EVENT_CUSTOM45 | 0x52c | 门禁自定义事件45
MINOR_EVENT_CUSTOM46 | 0x52d | 门禁自定义事件46
MINOR_EVENT_CUSTOM47 | 0x52e | 门禁自定义事件47
MINOR_EVENT_CUSTOM48 | 0x52f | 门禁自定义事件48
MINOR_EVENT_CUSTOM49 | 0x530 | 门禁自定义事件49
MINOR_EVENT_CUSTOM50 | 0x531 | 门禁自定义事件50
MINOR_EVENT_CUSTOM51 | 0x532 | 门禁自定义事件51
MINOR_EVENT_CUSTOM52 | 0x533 | 门禁自定义事件52
MINOR_EVENT_CUSTOM53 | 0x534 | 门禁自定义事件53
MINOR_EVENT_CUSTOM54 | 0x535 | 门禁自定义事件54
MINOR_EVENT_CUSTOM55 | 0x536 | 门禁自定义事件55
MINOR_EVENT_CUSTOM56 | 0x537 | 门禁自定义事件56
MINOR_EVENT_CUSTOM57 | 0x538 | 门禁自定义事件57
MINOR_EVENT_CUSTOM58 | 0x539 | 门禁自定义事件58
MINOR_EVENT_CUSTOM59 | 0x53a | 门禁自定义事件59
MINOR_EVENT_CUSTOM60 | 0x53b | 门禁自定义事件60
MINOR_EVENT_CUSTOM61 | 0x53c | 门禁自定义事件61
MINOR_EVENT_CUSTOM62 | 0x53d | 门禁自定义事件62
MINOR_EVENT_CUSTOM63 | 0x53e | 门禁自定义事件63
MINOR_EVENT_CUSTOM64 | 0x53f | 门禁自定义事件64

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_ACS_CFG

门禁主机参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byRS485Backup;
  BYTE     byShowCapPic;
  BYTE     byShowCardNo;
  BYTE     byShowUserInfo;
  BYTE     byOverlayUserInfo;
  BYTE     byVoicePrompt;
  BYTE     byUploadCapPic;
  BYTE     bySaveCapPic;
  BYTE     byInputCardNo;
  BYTE     byEnableWifiDetect;
  BYTE     byEnable3G4G;
  BYTE     byProtocol;
  BYTE     byRes[500];
}NET_DVR_ACS_CFG, *LPNET_DVR_ACS_CFG;

Members

dwSize
结构体大小
byRS485Backup
是否启用下行RS485通信备份功能：0- 不启用，1- 启用
byShowCapPic
是否显示抓拍图片：0- 不显示，1- 显示
byShowCardNo
是否显示卡号：0- 不显示，1- 显示
byShowUserInfo
是否显示用户信息：0- 不显示，1- 显示
byOverlayUserInfo
是否叠加用户信息：0- 不叠加，1- 叠加
byVoicePrompt
是否启用语音提示：0- 不启用，1- 启用
byUploadCapPic
联动抓拍是否上传图片：0- 不上传，1- 上传
bySaveCapPic
是否保存抓拍图片：0- 不保存，1- 保存
byInputCardNo
是否是否允许按键输入卡号：0- 不允许，1- 允许
byEnableWifiDetect
保留
byEnable3G4G
3G4G使能：0- 不使能，1- 使能
byProtocol
读卡器通信协议类型，0-私有协议（默认），1-OSDP协议
;
byRes
保留，置为0

Remarks

  • 设备是否支持门禁主机参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<AcsHostCfg>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ACS_EVENT_CFG

门禁主机报警事件配置结构体。

struct{
  DWORD                     dwSize;
  DWORD                     dwMajor;
  DWORD                     dwMinor;
  NET_DVR_TIME              struTime;
  BYTE                      sNetUser[MAX_NAMELEN];
  NET_DVR_IPADDR            struRemoteHostAddr;
  NET_DVR_ACS_EVENT_DETAIL  struAcsEventInfo;
  DWORD                     dwPicDataLen;
  char                     *pPicData;
  WORD                      wInductiveEventType;
  BYTE                      byTimeType;
  BYTE                      byRes[61];
}NET_DVR_ACS_EVENT_DETAIL,*LPNET_DVR_ACS_EVENT_DETAIL;

Members

dwSize
结构体大小
dwMajor
报警主类型，参考宏定义
dwMinor
报警次类型，参考宏定义
struTime
时间
sNetUser
网络用户名称
struRemoteHostAddr
远程主机地址
struAcsEventInfo
详细参数
dwPicDataLen
图片数据大小，不为0是表示后面带数据
pPicData
图片数据
wInductiveEventType
归纳事件类型，0-无效，其他值参见Remarks说明，客户端判断该值为非0值后，报警类型通过归纳事件类型区分，否则通过原有报警主次类型（dwMajor、dwMinor）区分
byTimeType
时间类型：0-设备本地时间（默认），1-UTC时间（struTime的时间）
byRes
保留，置为0

Remarks

  • 归纳事件类型：
    1) 门禁主机：1-认证通过，2-认证失败，3-开门动作，4-关门动作，5-"门异常"，6-远程操作，7-校时事件，8-设备异常事件，9-设备恢复正常事件，10-报警事件，11-报警恢复事件，12-呼叫中心
    2）可视对讲：1-防拆报警，2-劫持报警，3-多次密码开锁失败报警，4-门没开报警，5-门没关报警，6-通话对讲报警，7-密码开锁，8-劫持开锁，9-刷卡开锁，10-户主开锁，11-中心平台开锁，12-设备对讲
    3) 报警主机：1-防区事件，2-主机事件
    4) 第三方GJD报警主机：1-对象侦测报警，2-人为防拆报警，3-弱光检测报警，4-定时报警（周期性），5-温度检测报警
    5) 第三方Luminite报警主机：1-传感器检查到探测区域有人移动，2-检测到传感器被人干扰，3-光、 红外传感器信号被遮挡，4-传感器检查到震动，5-发现传感器出现问题，6-传感器位置移动了，7-设备电池不足，8-设备手动冲突的数据，9-（无线接收机，接收各传感器信号）收到很多无用干扰信息，10-设备的防拆弹簧松弛
    6) 第三方OPTEX报警主机：1-远&近发生事件，2-远距离发生事件，3-近距离发生事件，4-检测到某区域有物体缓慢移动，5-有干扰，6-防遮挡报警，7-防旋转报警，8-异常电路激活，9-污物覆盖（自检异常），10-传感器异常，11-设备故障，12-设备不在线，13-设备已连接，14-区域A1发生事件，15-区域A2发生事件，
    16-区域B1发生事件，17-区域B2发生事件，18-区域A11发生事件，19-区域A12发生事件，20-区域A21发生事件，21-区域A22发生事件，22-区域B11发生事件，23-区域B12发生事件，24-区域B21发生事件，25-区域B22发生事件
  • 门禁主机报警信息，通过NET_DVR_SetDVRMessageCallBack_V31设置报警回调函数获取，回调函数有返回值，需要返回TRUE告知设备已经接收数据，设备才会上传下一条信息。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ACS_EVENT_COND

门禁主机报警事件信息结构体。

struct{
  DWORD                     dwSize;
  DWORD                     dwMajor;
  DWORD                     dwMinor;
  NET_DVR_TIME              struStartTime;
  NET_DVR_TIME              struEndTime;
  BYTE                      byCardNo[ACS_CARD_NO_LEN];
  BYTE                      byName[NAME_LEN];
  BYTE                      byPicEnable;
  BYTE                      byTimeType;
  BYTE                      byRes2[2];
  DWORD                     dwBeginSerialNo;
  DWORD                     dwEndSerialNo;
  DWORD                     dwIOTChannelNo;
  WORD                      wInductiveEventType;
  BYTE                      bySearchType;
  BYTE                      byRes1;
  char                      szMonitorID[NET_SDK_MONITOR_ID_LEN];
  BYTE                      byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE                      byRes[140];
}NET_DVR_ACS_EVENT_COND,*LPNET_DVR_ACS_EVENT_COND;

Members

dwSize
结构体大小
dwMajor
报警主类型，参考事件上传宏定义，0-全部
dwMinor
报警次类型，参考事件上传宏定义，0-全部
struStartTime
开始时间
struEndTime
结束时间
byCardNo
卡号（为空时默认全部）
byName
持卡人姓名（为空时默认全部）
byPicEnable
是否带图片，0-不带图片，1-带图片
byTimeType
时间类型：0-设备本地时间（默认），1-UTC时间（struStartTime和struEndTime的时间）
byRes2
保留，置为0
dwBeginSerialNo
起始流水号（起始流水号与结束流水号都为0默认全部）
dwEndSerialNo
结束流水号（起始流水号与结束流水号都为0默认全部）
dwIOTChannelNo
IOT通道号，0-无效
wInductiveEventType
归纳事件类型，0-无效，其他值参见Remarks说明，客户端判断该值为非0值后，报警类型通过归纳事件类型区分，否则通过原有报警主次类型（dwMajor、dwMinor）区分
bySearchType
搜索方式：0-保留，1-按事件源搜索（此时通道号为非视频通道号），2-按监控点ID搜索
byRes1
保留
szMonitorID
监控点ID（由设备序列号、通道类型、编号组成，例如门禁点：设备序列号+“DOOR”+门编号）
byEmployeeNo
工号（人员ID）
byRes
保留，置为0

Remarks

  • 归纳事件类型：
    1) HIKVISION门禁主机：1-认证通过，2-认证失败，3-开门动作，4-关门动作，5-"门异常"，6-远程操作，7-校时事件，8-设备异常事件，9-设备恢复正常事件，10-报警事件，11-报警恢复事件，12-呼叫中心
    2）HIKVISION可视对讲：1-防拆报警，2-劫持报警，3-多次密码开锁失败报警，4-门没开报警，5-门没关报警，6-通话对讲报警，7-密码开锁，8-劫持开锁，9-刷卡开锁，10-户主开锁，11-中心平台开锁，12-设备对讲
    3) HIKVISION报警主机：1-防区事件，2-主机事件
    4) 第三方GJD报警主机：1-对象侦测报警，2-人为防拆报警，3-弱光检测报警，4-定时报警（周期性），5-温度检测报警
    5) 第三方Luminite报警主机：1-传感器检查到探测区域有人移动，2-检测到传感器被人干扰，3-光、 红外传感器信号被遮挡，4-传感器检查到震动，5-发现传感器出现问题，6-传感器位置移动了，7-设备电池不足，8-设备手动冲突的数据，9-（无线接收机，接收各传感器信号）收到很多无用干扰信息，10-设备的防拆弹簧松弛
    6) 第三方OPTEX报警主机：1-远&近发生事件，2-远距离发生事件，3-近距离发生事件，4-检测到某区域有物体缓慢移动，5-有干扰，6-防遮挡报警，7-防旋转报警，8-异常电路激活，9-污物覆盖（自检异常），10-传感器异常，11-设备故障，12-设备不在线，13-设备已连接，14-区域A1发生事件，15-区域A2发生事件，
    16-区域B1发生事件，17-区域B2发生事件，18-区域A11发生事件，19-区域A12发生事件，20-区域A21发生事件，21-区域A22发生事件，22-区域B11发生事件，23-区域B12发生事件，24-区域B21发生事件，25-区域B22发生事件
  • 门禁主机报警信息获取只能通过NET_DVR_SetDVRMessageCallBack_V31设置报警回调函数，回调函数有返回值，需要返回TRUE告知设备已经接收数据，设备才会上传下一条信息。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ACS_EVENT_DETAIL

门禁主机报警事件细节结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byCardNo[ACS_CARD_NO_LEN];
  BYTE                      byCardType;
  BYTE                      byAllowListNo;
  BYTE                      byReportChannel;
  BYTE                      byCardReaderKind;
  DWORD                     dwCardReaderNo;
  DWORD                     dwDoorNo;
  DWORD                     dwVerifyNo;
  DWORD                     dwAlarmInNo;
  DWORD                     dwAlarmOutNo;
  DWORD                     dwCaseSensorNo;
  DWORD                     dwRs485No;
  DWORD                     dwMultiCardGroupNo;
  WORD                      wAccessChannel;
  BYTE                      byDeviceNo;
  BYTE                      byDistractControlNo;
  DWORD                     dwEmployeeNo;
  WORD                      wLocalControllerID;
  BYTE                      byInternetAccess;
  BYTE                      byType;
  BYTE                      byMACAddr[MACADDR_LEN];
  BYTE                      bySwipeCardType;
  BYTE                      byRes2;
  DWORD                     dwSerialNo;
  BYTE                      byChannelControllerID;
  BYTE                      byChannelControllerLampID;
  BYTE                      byChannelControllerIRAdaptorID;
  BYTE                      byChannelControllerIREmitterID;
  DWORD                     dwRecordChannelNum;
  char                     *pRecordChannelData;
  BYTE                      byUserType;
  BYTE                      byCurrentVerifyMode;
  BYTE                      byRe2[2];
  BYTE                      byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE                      byRes[64];
}NET_DVR_ACS_EVENT_DETAIL,*LPNET_DVR_ACS_EVENT_DETAIL;

Members

dwSize
结构体大小
byCardNo
卡号（mac地址），为0无效
byCardType
卡类型，1-普通卡，2-残障人士卡，3-非授权名单卡，4-巡更卡，5-胁迫卡，6-超级卡，7-来宾卡，8-解除卡，为0无效
byAllowListNo
授权名单单号,1-8，为0无效
byReportChannel
报告上传通道，1-布防上传，2-中心组1上传，3-中心组2上传，为0无效
byCardReaderKind
读卡器属于哪一类，0-无效，1-IC读卡器，2-身份证读卡器，3-二维码读卡器,4-指纹头
dwCardReaderNo
读卡器编号，为0无效
dwDoorNo
门编号（楼层编号），为0无效
dwVerifyNo
多重卡认证序号，为0无效
dwAlarmInNo
报警输入号，为0无效
dwAlarmOutNo
报警输出号，为0无效
dwCaseSensorNo
事件触发器编号
dwRs485No
RS485通道号，为0无效
dwMultiCardGroupNo
群组编号
wAccessChannel
人员通道号
byDeviceNo
设备编号
byDistractControlNo
分控器编号，为0无效
dwEmployeeNo
工号，为0无效
wLocalControllerID
就地控制器编号，0-门禁主机，1-64代表就地控制器
byInternetAccess
网口ID：（1-上行网口1,2-上行网口2,3-下行网口1）
byType
防区类型，0:即时防区,1-24小时防区,2-延时防区 ,3-内部防区，4-钥匙防区 5-火警防区 6-周界防区 7-24小时无声防区 8-24小时辅助防区，9-24小时震动防区,10-门禁紧急开门防区，11-门禁紧急关门防区 0xff-无
byMACAddr
物理地址，为0无效
bySwipeCardType
刷卡类型，0-无效，1-二维码
byRes
保留，置为0
dwSerialNo
事件流水号，为0无效
byChannelControllerID
通道控制器ID，为0无效，1-主通道控制器，2-从通道控制器
byChannelControllerLampID
通道控制器灯板ID，为0无效（有效范围1-255）
byChannelControllerIRAdaptorID
通道控制器红外转接板ID，为0无效（有效范围1-255）
byChannelControllerIREmitterID
通道控制器红外对射ID，为0无效（有效范围1-255）
dwRecordChannelNum
录像通道数目
pRecordChannelData
录像通道，大小为sizeof(DWORD)* dwRecordChannelNum
byUserType
人员类型：0-无效，1-普通人（主人），2-来宾（访客），3-非授权名单人，4-管理员
byCurrentVerifyMode
读卡器当前验证方式：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-刷卡或人脸或密码
byRe2
保留，置为0
byEmployeeNo
工号（人员ID）（对于设备来说，如果使用了工号（人员ID）字段，byEmployeeNo一定要传递，如果byEmployeeNo可转换为dwEmployeeNo，那么该字段也要传递；对于上层平台或客户端来说，优先解析byEmployeeNo字段，如该字段为空，再考虑解析dwEmployeeNo字段）
byRes
保留，置为0

Remarks

对应的能力集：为ACS_ABILITY能力集的<isSupportGetDeviceEvent>节点；详细信息为GET /ISAPI/AccessControl/GetAcsEvent/capabilities。

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig


NET_DVR_ACS_EVENT_INFO

门禁主机事件信息。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byCardType;
  BYTE     byAllowListNo;
  BYTE     byReportChannel;
  BYTE     byCardReaderKind;
  DWORD    dwCardReaderNo;
  DWORD    dwDoorNo;
  DWORD    dwVerifyNo;
  DWORD    dwAlarmInNo;
  DWORD    dwAlarmOutNo;
  DWORD    dwCaseSensorNo;
  DWORD    dwRs485No;
  DWORD    dwMultiCardGroupNo;
  WORD     wAccessChannel;
  BYTE     byDeviceNo;
  BYTE     byDistractControlNo;
  DWORD    dwEmployeeNo;
  WORD     wLocalControllerID;
  BYTE     byInternetAccess;
  BYTE     byType;
  BYTE     byMACAddr[MACADDR_LEN];
  BYTE     bySwipeCardType;
  BYTE     byMask;
  DWORD    dwSerialNo;
  BYTE     byChannelControllerID;
  BYTE     byChannelControllerLampID;
  BYTE     byChannelControllerIRAdaptorID;
  BYTE     byChannelControllerIREmitterID;
  BYTE     byRes[4];
}NET_DVR_ACS_EVENT_INFO,*LPNET_DVR_ACS_EVENT_INFO;

Members

dwSize
结构体大小
byCardNo
卡号
byCardType
卡类型：1- 普通卡，2- 残障人士卡，3- 非授权名单卡，4- 巡更卡，5- 胁迫卡，6- 超级卡，7- 来宾卡，8- 解除卡，为0表示无效
byAllowListNo
授权名单单号，取值范围：1~8，0表示无效
byReportChannel
报告上传通道：1- 布防上传，2- 中心组1上传，3- 中心组2上传，0表示无效
byCardReaderKind
读卡器类型：0- 无效，1- IC读卡器，2- 身份证读卡器，3- 二维码读卡器，4- 指纹头
dwCardReaderNo
读卡器编号，为0表示无效
dwDoorNo
门编号（或者梯控的楼层编号），为0表示无效（当接的设备为人员通道设备时，门1为进方向，门2为出方向）
dwVerifyNo
多重卡认证序号，为0表示无效
dwAlarmInNo
报警输入号，为0表示无效
dwAlarmOutNo
报警输出号，为0表示无效
dwCaseSensorNo
事件触发器编号
dwRs485No
RS485通道号，为0表示无效
dwMultiCardGroupNo
群组编号
wAccessChannel
人员通道号
byDeviceNo
设备编号，为0表示无效
byDistractControlNo
分控器编号，为0表示无效
dwEmployeeNo
工号，为0无效
wLocalControllerID
就地控制器编号，0-门禁主机，1-255代表就地控制器
byInternetAccess
网口ID：（1-上行网口1,2-上行网口2,3-下行网口1）
byType
防区类型，0:即时防区,1-24小时防区,2-延时防区,3-内部防区,4-钥匙防区,5-火警防区,6-周界防区,7-24小时无声防区,8-24小时辅助防区,9-24小时震动防区,10-门禁紧急开门防区,11-门禁紧急关门防区，0xff-无
byMACAddr
物理地址，为0无效
bySwipeCardType
刷卡类型，0-无效，1-二维码
byMask
是否带口罩：0-保留，1-未知，2-不戴口罩，3-戴口罩
dwSerialNo
事件流水号，为0无效
byChannelControllerID
通道控制器ID，为0无效，1-主通道控制器，2-从通道控制器
byChannelControllerLampID
通道控制器灯板ID，为0无效（有效范围1-255）
byChannelControllerIRAdaptorID
通道控制器红外转接板ID，为0无效（有效范围1-255）
byChannelControllerIREmitterID
通道控制器红外对射ID，为0无效（有效范围1-255）
byRes
保留，置为0

Remarks

建议使用NET_DVR_SetDVRMessageCallBack_V31，设备断开链接后，回调函数返回异常状态，获取错误码为7。

See Also

NET_DVR_ACS_ALARM_INFO


NET_DVR_ACS_EVENT_INFO_EXTEND

门禁主机扩展事件信息。

struct{
  DWORD    dwFrontSerialNo;
  BYTE     byUserType;
  BYTE     byCurrentVerifyMode;
  BYTE     byCurrentEvent;
  BYTE     byPurePwdVerifyEnable;
  BYTE     byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byAttendanceStatus;
  BYTE     byStatusValue;
  BYTE     byRes2[2];
  BYTE     byUUID[NET_SDK_UUID_LEN];
  BYTE     byDeviceName[NET_DEV_NAME_LEN];
  BYTE     byRes[128];
}NET_DVR_ACS_EVENT_INFO,*LPNET_DVR_ACS_EVENT_INFO;

Members

dwFrontSerialNo
事件流水号，为0无效（若该字段为0，平台根据dwSerialNo判断是否丢失事件；若该字段不为0，平台根据该字段和dwSerialNo字段共同判断是否丢失事件）（主要用于解决报警订阅后导致dwSerialNo不连续的情况）
byUserType
人员类型：0-无效，1-普通人（主人），2-来宾（访客），3-非授权名单人，4-管理员
byCurrentVerifyMode
读卡器当前验证方式：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-刷卡或人脸或密码
byCurrentEvent
是否为实时事件：0-无效，1-是（实时事件），2-否（离线事件）
byPurePwdVerifyEnable
设备是否支持纯密码认证：0-不支持，1-支持
byEmployeeNo
工号（人员ID）（对于设备来说，如果使用了工号（人员ID）字段，byEmployeeNo一定要传递，如果byEmployeeNo可转换为dwEmployeeNo，那么该字段也要传递；对于上层平台或客户端来说，优先解析byEmployeeNo字段，如该字段为空，再考虑解析dwEmployeeNo字段）
byAttendanceStatus
考勤状态：0-未定义,1-上班，2-下班，3-开始休息，4-结束休息，5-开始加班，6-结束加班
byStatusValue
考勤状态值
byRes2
保留，置为0
byUUID
UUID（该字段仅在对接萤石平台过程中才会使用）
byDeviceName
设备序列号
byRes
保留，置为0

See Also

NET_DVR_ACS_ALARM_INFO


NET_DVR_ACS_EVENT_INFO_EXTEND_V20

门禁主机扩展事件信息。

struct{
  BYTE             byRemoteCheck;
  BYTE             byThermometryUnit;
  BYTE             byIsAbnomalTemperature;
  BYTE             byRes2;
  float            fCurrTemperature;
  NET_VCA_POINT    struRegionCoordinates;
  DWORD            dwQRCodeInfoLen;
  DWORD            dwVisibleLightDataLen;
  DWORD            dwThermalDataLen;
  char             *pQRCodeInfo;
  char             *pVisibleLightData;
  char             *pThermalData;
  BYTE             byRes[1024];
}NET_DVR_ACS_EVENT_INFO_EXTEND_V20,*LPNET_DVR_ACS_EVENT_INFO_EXTEND_V20;

Members

byRemoteCheck
是否需要远程核验：0-无效，1-不需要（默认），2-需要
byThermometryUnit
测温单位：0-摄氏度（默认），1-华氏度，2-开尔文
byIsAbnomalTemperature
人脸抓拍测温是否温度异常：1-是，0-否
byRes2
保留，置为0
fCurrTemperature
人脸温度（精确到小数点后一位）
struRegionCoordinates
人脸温度坐标
dwQRCodeInfoLen
二维码信息长度，不为0是表示后面带数据
dwVisibleLightDataLen
热成像相机可见光图片长度，不为0是表示后面带数据
dwThermalDataLen
热成像图片长度，不为0是表示后面带数据
pQRCodeInfo
二维码信息指针
pVisibleLightData
热成像相机可见光图片指针
pThermalData
热成像图片指针
byRes
保留，置为0

See Also

NET_DVR_ACS_ALARM_INFO


NET_DVR_ACS_EXTERNAL_DEV_CFG

门禁主机串口外设参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byIDCardUpMode;
  BYTE     byRes1;
  BYTE     byCardVerifyMode;
  BYTE     byACSDevType;
  BYTE     byDoorMode;
  BYTE     byRes2;
  WORD     wDevDetailType;
  BYTE     byRes[300];
}NET_DVR_ACS_EXTERNAL_DEV_CFG,*LPNET_DVR_ACS_EXTERNAL_DEV_CFG;

Members

dwSize
结构体大小
byIDCardUpMode
身份证信息上报模式：0- 上传18位身份证号，1- 上传全部信息
byRes1
保留，置为0
byCardVerifyMode
刷卡认证模式：0- 远程中心认证，1- 客户端平台认证
byACSDevType
设备型号：1- 身份证读卡器，2- IC读卡器，3- 二维码读卡器，4- 指纹读卡器，5- 字符屏+二维码读卡器，6- 收卡器，7- 字符屏，8- 指纹头，9- 语音模块，10：人证设备
byDoorMode
门出入类型：0- 进门，1- 出门
byRes2
保留，置为0
wDevDetailType
外设详细设备型号
当byACSDevType为1时：0-iDR210，1-IDM10，2-海康身份证阅读器
当byACSDevType为7时：0- DC48270RS043_01T，1- DC80480B070_03T
byRes
保留，置为0

Remarks

  • 设备是否支持串口外设参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<ExternalDevCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ACS_PARAM_TYPE

门禁主机参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwParamType;
  WORD    wLocalControllerID;
  BYTE     byRes[30];
}NET_DVR_ACS_PARAM_TYPE,*LPNET_DVR_ACS_PARAM_TYPE;

Members

dwSize
结构体大小
dwParamType
参数类型，按位表示，每位代表一种参数，值：0- 不处理，1- 处理
宏定义 | 宏定义值 | 含义
ACS_PARAM_DOOR_STATUS_WEEK_PLAN | 0x00000001 | 门状态周计划参数
ACS_PARAM_VERIFY_WEEK_PALN | 0x00000002 | 读卡器周计划参数
ACS_PARAM_CARD_RIGHT_WEEK_PLAN | 0x00000004 | 卡权限周计划参数
ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN | 0x00000008 | 门状态假日计划参数
ACS_PARAM_VERIFY_HOLIDAY_PALN | 0x00000010 | 读卡器假日计划参数
ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN | 0x00000020 | 卡权限假日计划参数
ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP | 0x00000040 | 门状态假日组参数
ACS_PARAM_VERIFY_HOLIDAY_GROUP | 0x00000080 | 读卡器验证方式假日组参数
ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP | 0x00000100 | 卡权限假日组参数
ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE | 0x00000200 | 门状态计划模板参数
ACS_PARAM_VERIFY_PALN_TEMPLATE | 0x00000400 | 读卡器验证方式计划模板参数
ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE | 0x00000800 | 卡权限计划模板参数
ACS_PARAM_CARD | 0x00001000 | 卡参数
ACS_PARAM_GROUP | 0x00002000 | 群组参数
ACS_PARAM_ANTI_SNEAK_CFG | 0x00004000 | 反潜回参数
ACS_PAPAM_EVENT_CARD_LINKAGE | 0x00008000 | 事件及卡号联动参数
ACS_PAPAM_CARD_PASSWD_CFG | 0x00010000 | 密码开门使能参数
ACS_PARAM_PERSON_STATISTICS_CFG | 0x00020000 | 人数统计参数
ACS_PARAM_BLOCKLIST_PICTURE | 0x00040000 | 非授权名单图片参数
ACS_PARAM_ID_BLOCKLIST | 0x00080000 | 身份证非授权名单参数
ACS_PARAM_EXAM_INFO | 0x00100000 | 考试信息参数
ACS_PARAM_EXAMINEE_INFO | 0x00200000 | 考生信息参数
ACS_PARAM_FAILED_FACE_INFO | 0x00400000 | 升级设备人脸建模失败记录
wLocalControllerID
就地控制器序号[1,255],0代表门禁主机
byRes
保留，置为0

Remarks

清空门禁主机参数控制能力，对应门禁主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY）中节点<clearAcsParam>。

See Also

NET_DVR_RemoteControl


NET_DVR_ACS_SCREEN_DISPLAY_CFG

屏幕字符串显示参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwFontSize;
  DWORD    dwRowSpacing;
  DWORD    dwColumnSpacing;
  DWORD    dwFirstRowPosition;
  BYTE     byDegree;
  BYTE     byScreenType;
  BYTE     byRes[306];
}NET_DVR_ACS_SCREEN_DISPLAY_CFG, *LPNET_DVR_ACS_SCREEN_DISPLAY_CFG;

Members

dwSize
结构体大小
dwFontSize
字体大小，取值范围：[1,10]
dwRowSpacing
行间距，单位：像素点
dwColumnSpacing
列间距，单位：像素点
dwFirstRowPosition
起始行位置在屏幕哪一个分块：0- 0，1- 1/8， 2- 2/8，3- 3/8，4- 4/8，5- 5/8，6- 6/8，7- 7/8
byDegree
字符显示方向角度：0- 0度（正常），1- 90度（侧着）
byScreenType
屏幕类型：0- DC48270RS043_01T，1- DC80480B070_03T
byRes
保留，置为0

Remarks

  • 设备是否支持屏幕字符串显示配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<ScreenDisplayCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ACS_WORK_STATUS

门禁主机工作状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byDoorLockStatus[MAX_DOOR_NUM];
  BYTE     byDoorStatus[MAX_DOOR_NUM];
  BYTE     byMagneticStatus[MAX_DOOR_NUM];
  BYTE     byCaseStatus[MAX_CASE_SENSOR_NUM];
  WORD     wBatteryVoltage;
  BYTE     byBatteryLowVoltage;
  BYTE     byPowerSupplyStatus;
  BYTE     byMultiDoorInterlockStatus;
  BYTE     byAntiSneakStatus;
  BYTE     byHostAntiDismantleStatus;
  BYTE     byIndicatorLightStatus;
  BYTE     byCardReaderOnlineStatus[MAX_CARD_READER_NUM];
  BYTE     byCardReaderAntiDismantleStatus[MAX_CARD_READER_NUM];
  BYTE     byCardReaderVerifyMode[MAX_CARD_READER_NUM];
  BYTE     bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM];
  DWORD    dwCardNum;
  BYTE     byRes2[32];
}NET_DVR_ACS_WORK_STATUS,*LPNET_DVR_ACS_WORK_STATUS;

Members

dwSize
结构体大小
byDoorLockStatus
门锁状态：0- 关，1- 开
byDoorStatus
门状态：1- 休眠，2- 常开状态，3- 常闭状态，4- 普通状态
byMagneticStatus
门磁状态：0- 闭合，1- 开启
byCaseStatus
事件报警输入状态：0- 无输入，1- 有输入
wBatteryVoltage
蓄电池电压值，实际值乘10，单位：伏特
byBatteryLowVoltage
蓄电池是否处于低压状态：0- 否，1- 是
byPowerSupplyStatus
设备供电状态：1- 交流电供电，2- 蓄电池供电
byMultiDoorInterlockStatus
多门互锁状态：0- 关闭，1- 开启
byAntiSneakStatus
反潜回状态：0-关闭，1-开启
byHostAntiDismantleStatus
主机防拆状态：0- 关闭，1- 开启
byIndicatorLightStatus
指示灯状态
byCardReaderOnlineStatus
读卡器在线状态：0- 不在线，1- 在线
byCardReaderAntiDismantleStatus
读卡器防拆状态：0- 关闭，1- 开启
byCardReaderVerifyMode
读卡器当前验证方式：0- 无效，1- 休眠，2- 刷卡+密码，3- 刷卡，4- 刷卡或密码，5- 指纹，6- 指纹加密码，7- 指纹或刷卡，8- 指纹加刷卡，9- 指纹加刷卡加密码
bySetupAlarmStatus
报警输入口布防状态：0- 对应报警输入口处于撤防状态，1- 对应报警输入口处于布防状态
byAlarmInStatus
报警输入口报警状态：0- 对应报警输入口当前无报警，1- 对应报警输入口当前有报警
byAlarmOutStatus
报警输出口状态：0- 对应报警输出口无报警，1- 对应报警输出口有报警
dwCardNum
已添加的卡数量
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ACS_WORK_STATUS_V50

门禁主机工作状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byDoorLockStatus[MAX_DOOR_NUM_256];
  BYTE     byDoorStatus[MAX_DOOR_NUM_256];
  BYTE     byMagneticStatus[MAX_DOOR_NUM_256];
  BYTE     byCaseStatus[MAX_CASE_SENSOR_NUM];
  WORD     wBatteryVoltage;
  BYTE     byBatteryLowVoltage;
  BYTE     byPowerSupplyStatus;
  BYTE     byMultiDoorInterlockStatus;
  BYTE     byAntiSneakStatus;
  BYTE     byHostAntiDismantleStatus;
  BYTE     byIndicatorLightStatus;
  BYTE     byCardReaderOnlineStatus[MAX_CARD_READER_NUM_512];
  BYTE     byCardReaderAntiDismantleStatus[MAX_CARD_READER_NUM_512];
  BYTE     byCardReaderVerifyMode[MAX_CARD_READER_NUM_512];
  BYTE     bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM];
  DWORD    dwCardNum;
  BYTE     byFireAlarmStatus;
  BYTE     byBatteryChargeStatus;
  BYTE     byMasterChannelControllerStatus;
  BYTE     bySlaveChannelControllerStatus;
  BYTE     byAntiSneakServerStatus;
  BYTE     byRes3[3];
  DWORD    dwAllowFaceNum;
  DWORD    dwBlockFaceNum;
  BYTE     byRes2[108];
}NET_DVR_ACS_WORK_STATUS_V50,*LPNET_DVR_ACS_WORK_STATUS_V50;

Members

dwSize
结构体大小
byDoorLockStatus
门锁状态（或者梯控的继电器开合状态）：0- 正常关，1- 正常开，2- 短路报警，3- 断路报警，4- 异常报警
byDoorStatus
门状态（或者梯控的楼层状态）：1- 休眠，2- 常开状态（对于梯控，表示自由状态），3- 常闭状态（对于梯控，表示禁用状态），4- 普通状态（对于梯控，表示受控状态）
byMagneticStatus
门磁状态，0-正常关，1-正常开，2-短路报警，3-断路报警，4-异常报警
byCaseStatus
事件报警输入状态：0- 无输入，1- 有输入
wBatteryVoltage
蓄电池电压值，实际值乘10，单位：伏特
byBatteryLowVoltage
蓄电池是否处于低压状态：0- 否，1- 是
byPowerSupplyStatus
设备供电状态：1- 交流电供电，2- 蓄电池供电
byMultiDoorInterlockStatus
多门互锁状态：0- 关闭，1- 开启
byAntiSneakStatus
反潜回状态：0-关闭，1-开启
byHostAntiDismantleStatus
主机防拆状态：0- 关闭，1- 开启
byIndicatorLightStatus
指示灯状态，0-掉线，1-在线
byCardReaderOnlineStatus
读卡器在线状态：0- 不在线，1- 在线
byCardReaderAntiDismantleStatus
读卡器防拆状态：0- 关闭，1- 开启
byCardReaderVerifyMode
读卡器当前验证方式：0- 无效，1- 休眠，2- 刷卡+密码，3- 刷卡，4- 刷卡或密码，5- 指纹，6- 指纹加密码，7- 指纹或刷卡，8- 指纹加刷卡，9- 指纹加刷卡加密码（无先后顺序），10- 人脸或指纹或刷卡或密码，11- 人脸+指纹，12- 人脸+密码，13- 人脸+刷卡，14- 人脸，15- 工号+密码，16- 指纹或密码，17- 工号+指纹，18- 工号+指纹+密码，19- 人脸+指纹+刷卡，20- 人脸+密码+指纹，21- 工号+人脸
bySetupAlarmStatus
报警输入口布防状态：0- 对应报警输入口处于撤防状态，1- 对应报警输入口处于布防状态
byAlarmInStatus
按字节表示报警输入口状态：0- 对应报警输入口当前无报警，1- 对应报警输入口当前有报警
byAlarmOutStatus
按字节表示报警输出口状态：0- 对应报警输出口无报警，1- 对应报警输出口有报警
dwCardNum
已添加的卡数量
byFireAlarmStatus
消防报警状态显示：0-正常、1-短路报警、2-断开报警
byBatteryChargeStatus
电池充电状态：0-无效；1-充电中；2-未充电
byMasterChannelControllerStatus
主通道控制器在线状态：0-无效；1-不在线；2-在线
bySlaveChannelControllerStatus
从通道控制器在线状态：0-无效；1-不在线；2-在线
byAntiSneakServerStatus
反潜回服务器状态：0-无效，1-未启用，2-正常，3-断开
byRes3
保留参数
dwAllowFaceNum
已添加的授权名单人脸数量（通过能力集判断）
dwBlockFaceNum
已添加的非授权名单人脸数量（通过能力集判断）
byRes2
保留，置为0

Remarks

对应的能力集：为ACS_ABILITY能力集的<AcsWorkStatus>节点。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ACTIVATECFG

设备激活参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sPassword[PASSWD_LEN];
  BYTE     byRes[108];
 }NET_DVR_ACTIVATECFG,*LPNET_DVR_ACTIVATECFG;

Members

dwSize
结构体大小
sPassword
初始密码，密码等级弱或者以上
byRes
保留，置为0

Remarks

  • 出厂设备需要先激活，然后再使用激活使用的初始密码登录设备。
  • 将密码输入分为数字(0~9)、小写字母(a~z)、大写字母(A~Z)、特殊符号（:\"除外）4类，等级分为4个等级，如下所示：
    等级0（风险密码）：密码长度小于8位，或者只包含4类字符中的任意一类，或者密码与用户名一样，或者密码是用户名的倒写。例如：12345、abcdef。
    等级1（弱密码）：包含两类字符，且组合为（数字+小写字母）或（数字+大写字母），且长度大于等于8位。例如：abc12345、123ABCDEF
    等级2（中密码）：包含两类字符，且组合不能为（数字+小写字母）和（数字+大写字母），且长度大于等于8位。例如：12345***++、ABCDabcd。
    等级3（强密码）：包含三类字符及以上，且长度大于等于8位。例如：Abc12345、abc12345++。

See Also

NET_DVR_ActivateDevice


NET_DVR_ADAPTER_VERSION

适配器版本参数结构体。

struct{
  WORD   wMajorVersion;
  WORD   wMinorVersion;
  WORD   wRevisionNumber;
  WORD   wBuildNumber;
}NET_DVR_ADAPTER_VERSION, *LPNET_DVR_ADAPTER_VERSION;

Members

wMajorVersion
主版本号
wMinorVersion
次版本号
wRevisionNumber
修订版本号
wBuildNumber
编译日期

See Also

NET_DVR_RAID_ADAPTER_INFO


NET_DVR_ADC_CFG

ADC参数结构体。

struct{
  BYTE    byGainR;
  BYTE    byGainG;
  BYTE    byGainB;
  BYTE    byOffsetR;
  BYTE    byOffsetG;
  BYTE    byOffsetB;
  BYTE    byRes[6];
}NET_DVR_ADC_CFG,*LPNET_DVR_ADC_CFG;

Members

byGainR
增益R，取值范围：0~100
byGainG
增益G，取值范围：0~100
byGainB
增益B，取值范围：0~100
byOffsetR
偏移量R，取值范围：0~100
byOffsetG
偏移量G，取值范围：0~100
byOffsetB
偏移量B，取值范围：0~100
byRes
保留，置为0

See Also

NET_DVR_SCREEN_DISPLAY_CFG NET_DVR_MSC_SCREEN_PARAM


NET_DVR_ADD_PARAM

N+1模式设备添加参数结构体。

struct{
  NET_DVR_IPADDR    struIP;
  char              szPassword[PASSWD_LEN];
  BYTE              byAddType;
  BYTE              byDisableBackup;
}NET_DVR_ADD_PARAM, *LPNET_DVR_ADD_PARAM;

Members

struIP
设备IP地址
szPassword
备机密码，需简易加密
byAddType
0-（工作机上）添加备机，1-（备机上）添加工作机
byDisableBackup
备份功能使能开关：0- 开启，1- 关闭，CVR默认开启

See Also

NET_DVR_NPO_PARAM_UNION


NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG

手动添加录像回传任务参数结构体。

struct{
  DWORD              dwSize;
  NET_DVR_TIME_EX    struBeginTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byRes[128];
}NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG;

Members

dwSize
结构体大小
struBeginTime
回传的录像开始时间
struEndTime
回传的录像结束时间
byRes
保留，置为0

Remarks

  • 设备是否支持手动添加录像回传任务或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<AddRecordPassBackManul>。

See Also

NET_DVR_SetDeviceConfig NET_DVR_SetDeviceConfigEx


NET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND

手动添加录像回传任务条件参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  BYTE                   byRes[128];
}NET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND;

Members

dwSize
结构体大小
struStreamInfo
流信息（仅流ID有效）
byRes
保留，置为0

Remarks

  • 设备是否支持手动添加录像回传任务或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<AddRecordPassBackManul>。

See Also

NET_DVR_SetDeviceConfig NET_DVR_SetDeviceConfigEx


NET_DVR_ADDR_DOMAIN_INFO

报警中心网络参数结构体。

struct{
  BYTE    szDomainAddr[MAX_DOMAIN_NAME];
  WORD    wPort;
  BYTE    byRes[2];
}NET_DVR_ADDR_DOMAIN_INFO,*LPNET_DVR_ADDR_DOMAIN_INFO;

Members

szDomainAddr
报警中心地址，IP或者域名
wPort
报警中心端口
byRes
保留，置为0

See Also

NET_DVR_ALARMCENTER_NETCFG


NET_DVR_ADDRESS

IP地址和端口参数结构体。

struct{
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byRes[2];
}NET_DVR_ADDRESS,*LPNET_DVR_ADDRESS;

Members

struIP
IP地址
wNetPort
端口号
byRes
保留，置为0

See Also

NET_DVR_POS_CONNECTMODE_UNION NET_DVR_ANTI_SNEAK_HOST_INFO


NET_DVR_ADVANCE_COND_UNION

组合搜索条件联合体。

union{
  BYTE                      byLen[36];
  NET_VCA_HUMAN_FEATURE     struHumanFeature;
  NET_DVR_OBJECT_FEATURE    struObjectFeature;
}NET_DVR_ADVANCE_COND_UNION,*LPNET_DVR_ADVANCE_COND_UNION;

Members

byLen
联合体长度，36字节
struHumanFeature
人体属性
struObjectFeature
物体属性

See Also

NET_DVR_TRAVERSE_PLANE_SEARCHCOND NET_DVR_INTRUSION_SEARCHCOND


NET_DVR_AEMODECFG

曝光、快门等其他参数配置结构体。

struct{
  DWORD    dwSize;
  int      iIrisSet;
  int      iGainSet;
  int      iGainLimit;
  int      iExposureCompensate;
  BYTE     byExposureModeSet;
  BYTE     byShutterSet;
  BYTE     byImageStabilizeLevel;
  BYTE     byCameraIrCorrect;
  BYTE     byHighSensitivity;
  BYTE     byInitializeLens;
  BYTE     byChromaSuppress;
  BYTE     byMaxShutterSet;
  BYTE     byMinShutterSet;
  BYTE     byMaxIrisSet;
  BYTE     byMinIrisSet;
  BYTE     byExposureLevel;
  BYTE     byRes2[60];
}NET_DVR_AEMODECFG, *LPNET_DVR_AEMODECFG;

Members

dwSize
结构体大小
iIrisSet
光圈，为实际取值*100的值，0表示关闭光圈
iGainSet
快球增益（曝光补偿，用于手动曝光模式下调节增益），为实际取值*100的值，有可能是负值
iGainLimit
增益限制（曝光补偿，用于手动曝光模式下调节增益限制），为实际取值*100的值，有可能是负值
iExposureCompensate
曝光补偿，为实际取值*100的值，比如1050代表10.5dB, -750代表-7.5dB
byExposureModeSet
球机的曝光模式：0-手动模式，1-自动曝光，2-光圈优先，3-快门优先，4-增益优先
byShutterSet
快门等级：0-关，1-自动x1，2-自动x2，3-自动x4，4-自动x8，5-自动x16，6-自动x32，7-自动x64，8-自动x128，9-1/1，10-1/2，11-1/3，12-1/4，13-1/6，14-1/8，15-1/12，16-1/15，17-1/25，18-1/30，19-1/50，20-1/60，21-1/75，22-1/90，23-1/100，24-1/120，25-1/125，26-1/150，27-1/180，28-1/200，29-1/215，30-1/250，31-1/300，32-1/350，33-1/425，34-1/500，35-1/600，36-1/725，37-1/1000，38-1/1250，39-1500,40-1/1750，41-1/2000，42-1/2500，43-3000,44-1/3500，45-1/4000，46-1/6000，47-1/10000，48-1/30000，49-1/100000，50-1/175，51-1/195，52-1/225，53-1/230
byImageStabilizeLevel
防抖动等级，取值范围: 0~3
byCameraIrCorrect
红外校正: 0-关，1-开，2-自动
byHighSensitivity
高灵敏度设置: 0-关，1-开
byInitializeLens
初始化镜头: 0-关，1-开
byChromaSuppress
色彩抑制，取值范围: 0~255
byMaxShutterSet
最大快门值，索引值与byShutterSet相同(在自动曝光模式下生效)
byMinShutterSet
最小快门值，索引值与byShutterSet相同(在自动曝光模式下生效)
byMaxIrisSet
最大光圈限制值(在自动曝光模式下生效)，取值范围：[0,100]
byMinIrisSet
最小光圈限制值(在自动曝光模式下生效)，取值范围：[0,100]
byExposureLevel
曝光等级（曝光模式为自动、光圈优先、快门优先情况有效），取值范围：等级1~5，默认为4（为了兼容老版本，该字节为0时默认为曝光等级1）
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AES_KEY_INFO

AES加密密钥结构体。

struct{
  BYTE    sAESKey[16];
  BYTE    byRes[64];
}NET_DVR_AES_KEY_INFO, *LPNET_DVR_AES_KEY_INFO;

Members

sAESKey
码流加密密钥
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_AGAIN_RELATEDEV

二次确认机关联网络设备参数结构体。

struct{
  NET_DVR_IPADDR    struSIPServer;
  NET_DVR_IPADDR    struCenterAddr;
  WORD              wCenterPort;
  BYTE              byRes1[2];
  NET_DVR_IPADDR    struIndoorUnit;
  NET_DVR_IPADDR    struAgainAddr;
  BYTE              byRes[444];
 }NET_DVR_AGAIN_RELATEDEV,*LPNET_DVR_AGAIN_RELATEDEV;

Members

struSIPServer
SIP服务器IP地址
struCenterAddr
中心平台IP地址
wCenterPort
中心平台端口
byRes
保留，置为0
struIndoorUnit
室内主机IP地址
struAgainAddr
主二次确认机IP（副二次确认机配置该字段）
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION


NET_DVR_AGC_PARAM

AGC参数结构体。

struct{
  BYTE    bySceneType;
  BYTE    byLightLevel;
  BYTE    byGainLevel;
  BYTE    byRes[5];
}NET_DVR_AGC_PARAM,*LPNET_DVR_AGC_PARAM;

Members

bySceneType
1- 普通场景，2- 强光场景，3- 手动模式
byLightLevel
亮度等级，取值范围：[1,100]，手动模式下生效
byGainLevel
增益等级，取值范围：[1,100]，手动模式下生效
byRes
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_AGEGROUP_PARAM

年龄段人数统计参数结构体。

struct{
  DWORD    dwTeenage;
  DWORD    dwYouth;
  DWORD    dwMidLife;
  DWORD    dwElderly;
  DWORD    dwChild;
  DWORD    dwAdolescent;
  DWORD    dwPrime;
  DWORD    dwMidage;
  BYTE     byRes[18];
 }NET_DVR_AGEGROUP_PARAM,*LPNET_DVR_AGEGROUP_PARAM;

Members

dwTeenage
少年人数
dwYouth
青年人数
dwMidLife
中年人数
dwElderly
老年人数
dwChild
儿童人数
dwAdolescent
青少年人数
dwPrime
壮年人数
dwMidage
中老年人数
byRes
保留，置为0

See Also

NET_DVR_FACECAPTURE_STATISTICS_RESULT


NET_DVR_AI_ALGORITHM_MODEL

算法模型包结构体。

struct{
  DWORD    dwDescribeLength;
  char*    pDescribeBuffer;
  BYTE     byRes1[3];
  DWORD    dwLicenseKeyLength;
  char*    pLicenseKeyBuffer;
  BYTE     byRes[120];
}NET_DVR_AI_ALGORITHM_MODEL, *LPNET_DVR_AI_ALGORITHM_MODEL;

Members

dwSize
结构体大小
dwDescribeLength
AlgorithmModel文件长度。
pDescribeBuffer
AlgorithmModel文件
byRes1
保留
dwLicenseKeyLength
licenseKey文件长度
pLicenseKeyBuffer
licenseKey文件， 如果是授权模型的话需要传入
byRes
保留

See Also

NET_DVR_UploadFile_V40


NET_DVR_AI_PICTUR_UPLOAD

AI图片上传结构体。

struct{
  DWORD    dwSize;
  char     szTaskID[64];
  char     szPID[64];
  BYTE     byRes[128];
}NET_DVR_AI_PICTUR_UPLOAD,*LPNET_DVR_AI_PICTUR_UPLOAD;

Members

dwSize
结构体大小
szTaskID
任务id，业务平台统一维护管理
szPID
图片id，业务平台统一维护管理
byRes
保留

See Also

NET_DVR_UploadFile_V40


NET_DVR_AID_ALARM

交通事件报警信息结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwRelativeTime;
  DWORD                 dwAbsTime;
  NET_VCA_DEV_INFO      struDevInfo;
  NET_DVR_AID_INFO      struAIDInfo;
  DWORD                 dwPicDataLen;
  BYTE                  *pImage;
  BYTE                  byRes[40];
}NET_DVR_AID_ALARM, *LPNET_DVR_AID_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
struAIDInfo
交通事件信息
dwPicDataLen
图片长度
pImage
图片长度指向图片的指针
byRes
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_AID_ALARM_V41

交通事件报警信息结构体。

struct{
  DWORD                   dwSize;
  DWORD                   dwRelativeTime;
  DWORD                   dwAbsTime;
  NET_VCA_DEV_INFO        struDevInfo;
  NET_DVR_AID_INFO        struAIDInfo;
  NET_DVR_SCENE_INFO      struSceneInfo;
  DWORD                   dwPicDataLen;
  BYTE                    *pImage;
  BYTE                    byDataType;
  BYTE                    byLaneNo;
  WORD                    wMilliSecond;
  BYTE                    byMonitoringSiteID[MONITORSITE_ID_LEN];
  BYTE                    byDeviceID[DEVICE_ID_LEN];
  DWORD                   dwXmlLen;
  char                    *pXmlBuf;
  BYTE                    byTargetType;
  BYTE                    byRuleID;
  WORD                    wDevInfoIvmsChannelEx;
  BYTE                    byBrokenNetHttp;
  BYTE                    byRes[3];
  DWORD                    dwPlateSmallPicDataLen;
  #if (defined(OS_WINDOWS64)|| defined(OS_POSIX64))
  char                     *pPlateSmallImage;
  #else
  char                     *pPlateSmallImage;
  BYTE                     byRes1[4];
  #endif
}NET_DVR_AID_ALARM_V41, *LPNET_DVR_AID_ALARM_V41;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
struAIDInfo
交通事件信息
struSceneInfo
场景信息
dwPicDataLen
图片长度
pImage
图片长度指向图片的指针
byDataType
数据上传方式：0-数据直接上传；1-云存储服务器URL（原先的图片数据变成URL数据，图片长度变成URL长度）
byLaneNo
关联车道号
wMilliSecond
时标毫秒
byMonitoringSiteID
监测点编号（路口编号、内部编号）
byDeviceID
设备编号
dwXmlLen
XML报警信息长度
pXmlBuf
XML报警信息指针，其对应到<EventNotificationAlert>
byTargetType
检测的目标类型：0-未知，1-行人，2-二轮车，3-三轮车(行人检测中返回)
byRuleID
规则ID,1-4,当congestion事件配置了规则区域时返回
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
byBrokenNetHttp
断网续传标志位，0-不重传数据，1-重传数据
byRes
保留字节
dwPlateSmallPicDataLen
车牌小图图片长度
pPlateSmallImage
指向车牌小图的指针
byRes1
保留字节

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Alsoo

NET_DVR_StartListen_V30


NET_DVR_AID_INFO

交通事件信息结构体。

struct{
  BYTE                  byRuleID;
  BYTE                  byVisibilityLevel;
  BYTE                  byRes1[2];
  BYTE                  byRuleName[NAME_LEN];
  DWORD                 dwAIDType;
  NET_DVR_DIRECTION     struDirect;
  BYTE                  bySpeedLimit;
  BYTE                  byCurrentSpeed;
  BYTE                  byVehicleEnterState;
  BYTE                  byState;
  BYTE                  byParkingID[16];
  DWORD                 dwAIDTypeEx;
  BYTE                  byRes2[16];
}NET_DVR_AID_INFO, *LPNET_DVR_AID_INFO;

Members

byRuleID
规则序号，为规则配置结构的下标0~7（对于ITS终端服务器，取值范围为1~8）
byVisibilityLevel
能见度等级：0-保留；1-无雾~薄雾；2-薄雾~中雾；3-大雾~浓雾；4-浓雾及以上
byRes1
保留
byRuleName
规则名称
dwAIDType
交通事件类型（dwAIDTypeEx为0时取该参数，dwAIDTypeEx不为0时直接解析dwAIDTypeEx），详见枚举类型：TRAFFIC_AID_TYPE
struDirect
报警指向区域
bySpeedLimit
限速值，单位：km/h，取值范围：[0,255]
byCurrentSpeed
当前速度值，单位：km/h，取值范围：[0,255]
byVehicleEnterState
车辆出入状态：0- 无效，1- 驶入，2- 驶出
byState
0-变化上传，1-轮巡上传
byParkingID
停车位编号
dwAIDTypeEx
报警事件类型扩展（兼容dwAIDType参数），详见枚举类型：TRAFFIC_AID_TYPE_EX
byRes2
保留

See Also

NET_DVR_AID_ALARM NET_DVR_AID_ALARM_V41 NET_DVR_TFS_ALARM


NET_DVR_AID_PARAM

交通事件参数。

struct{
  WORD    wParkingDuration;
  WORD    wPedestrianDuration;
  WORD    wDebrisDuration;
  WORD    wCongestionLength;
  WORD    wCongestionDuration;
  WORD    wInverseDuration;
  WORD    wInverseDistance;
  WORD    wInverseAngleTolerance;
  WORD    wIllegalParkingTime;
  WORD    wIllegalParkingPicNum;
  BYTE    byMergePic;
  BYTE    byRes1[23];
}NET_DVR_AID_PARAM, *LPNET_DVR_AID_PARAM;

Members

wParkingDuration
停车持续时间，范围：10~120s
wPedestrianDuration
行人持续时间，范围：1~120s
wDebrisDuration
抛洒物持续时间，范围：10~120s
wCongestionLength
拥堵长度阈值，范围：5~200米
wCongestionDuration
拥堵持续时间，范围：10~120s
wInverseDuration
逆行持续时间，范围：1~10s
wInverseDistance
逆行距离阈值，范围：2~100米，默认为10米
wInverseAngleTolerance
允许角度偏差，范围：90~180度。车流与逆行允许的夹角
wIllegalParkingTime
违停时间，取值范围：[4,60]，单位：分钟，TFS（交通违章取证）城市模式下有效
wIllegalParkingPicNum
违停图片数量，取值范围：[1,6]，TFS（交通违章取证）城市模式下有效
byMergePic
图片拼接：0- 不拼接，1- 拼接，TFS（交通违章取证）城市模式下有效
byRes1
保留

Remarks

  • wParkingDuration是算法库灵敏度，指停车多少秒后算法库给出停车报警，接着分析仪根据这个停车报警作为起始报警点对该目标进行持续性的处理，超过违停时间后就整个取证报警事件结束。wIllegalParkingTime是指违停时间限制，比如城市违章停车需要持续停车20分钟或几分钟后才能上报违停报警，在规定时间以内是允许停车的。
  • 对于不同设备，以上参数的取值范围可能不同。比如，ITS终端服务器设备，停车持续时间(wParkingDuration)、抛洒物持续时间(wDebrisDuration)、拥堵持续时间(wCongestionDuration)取值范围均为5~120s，逆行持续时间(wInverseDuration)取值范围为1~120s。可以调用NET_DVR_GetDeviceAbility获取智能通道分析能力集（VcaChanAbility，能力集类型：DEVICE_ABILITY_INFO）而得到实际取值范围（节点：<AidParam>）。

    • See Also

    NET_DVR_ONE_AID_RULE_V41 NET_DVR_ONE_AID_RULE


NET_DVR_AID_RULECFG

交通事件规则结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byPicProType;
  BYTE                          byRes1[3];
  NET_DVR_JPEGPARA              struPictureParam;
  NET_DVR_ONE_AID_RULE          struAIDRule[MAX_AID_RULE];
  BYTE                          byRes2[32];
}NET_DVR_AID_RULECFG,*LPNET_DVR_AID_RULECFG;

Members

dwSize
结构体大小
byPicProType
报警时图片处理方式：0-不处理，非0-上传
byRes1
保留，置为0
struPictureParam
图片规格结构
struAIDRule
单条交通事件规则参数
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AID_RULECFG_V41

交通事件规则结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byPicProType;
  BYTE                        byRes1[3];
  NET_DVR_JPEGPARA            struPictureParam;
  NET_DVR_ONE_AID_RULE_V41    struAIDRule[MAX_AID_RULE];
  BYTE                        byRes2[128];
}NET_DVR_AID_RULECFG_V41,*LPNET_DVR_AID_RULECFG_V41;

Members

dwSize
结构体大小
byPicProType
报警时图片处理方式：0-不处理，非0-上传
byRes1
保留，置为0
struPictureParam
图片规格结构
struAIDRule
单条交通事件规则参数
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_AIR_CONDITION_PARAM

空调遥控器参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byMode;
  BYTE     byTemperature;
  BYTE     byRes[9];
}NET_DVR_AIR_CONDITION_PARAM,*LPNET_DVR_AIR_CONDITION_PARAM;

Members

dwSize
结构体大小
byEnable
0- 关机，1- 开机
byMode
空调模式，具体定义如下：
enum _AIR_CONDITON_MODE_{
  REFRIGERATION  = 0,
  HEARTING,
  DEHUMIDIFIER,
  AUTO
}AIR_CONDITON_MODE
REFRIGERATION
制冷
HEARTING
制热
DEHUMIDIFIER
抽湿
AUTO
自动
byTemperature
温度，具体值表示。通常为16-30度
byRes
保留

See Also

NET_DVR_SetAirCondition NET_DVR_GetDVRConfig


NET_DVR_ALARM_CAPTRUE_CFG

报警抓图参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byBeforeAlarmPic;
  BYTE     byAfterAlarmPic;
  WORD     wInterval;
  BYTE     byResolution;
  BYTE     byRes[63];
}NET_DVR_ALARM_CAPTRUE_CFG,*LPNET_DVR_ALARM_CAPTRUE_CFG;

Members

dwSize
结构体大小
byBeforeAlarmPic
对应分辨率下可设置报警前图片最大数（4CIF：10张，2CIF：20张，CIF：40张，QCIF：80张，WD1: 10张，VGA：10张，XVGA: 10张，720P: 10张，1080P: 10张）
byAfterAlarmPic
对应分辨率下可设置报警后图片最大数（4CIF：10张，2CIF：20张，CIF：40张，QCIF：80张，WD1: 10张，VGA：10张，XVGA: 10张，720P: 10张，1080P: 10张）
wInterval
间隔时间，单位：s
byResolution
图片分辨率：1- CIF，2- QCIF，3- 4CIF，4- 2CIF，5- WD1，6- VGA，7- XVGA，8- 720P，9- 1080P
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARM_CHAN_ABLITITY

报警相关通道参数能力结构体。

struct{
  DWORD    dwSize;
  BYTE     bySensorChan[64];
  BYTE     byAlarmInChan[64];
  BYTE     byAlarmOutChan[64]];
  BYTE     by485Chan[64];
  BYTE     byRes[128];
}NET_DVR_ALARM_CHAN_ABLITITY,*LPNET_DVR_ALARM_CHAN_ABLITITY;

Members

dwSize
结构体大小
bySensorChan
模拟量通道，数组下标表示通道号，数组：0- 不支持，1- 支持
byAlarmInChan
报警输入通道，数组下标表示通道号，数组：0- 不支持，1- 支持
byAlarmOutChan
报警输出通道，数组下标表示通道号，数组：0- 不支持，1- 支持
by485Chan
RS485串口通道，数组下标表示通道号，数组：0- 不支持，1- 支持
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_ALARM_DEVICE_USER

报警主机设备用户配置结构体。

struct{
  DWORD              dwSize;
  BYTE               sUserName[NAME_LEN];
  BYTE               sPassword[PASSWD_LEN];
  NET_DVR_IPADDR     struUserIP;
  BYTE               byMACAddr[MACADDR_LEN];
  BYTE               byUserType;
  BYTE               byAlarmOnRight;
  BYTE               byAlarmOffRight;
  BYTE               byBypassRight;
  BYTE               byOtherRight[MAX_RIGHT];
  BYTE               byNetPreviewRight[MAX_ALARMHOST_VIDEO_CHAN];
  BYTE               byNetRecordRight[MAX_ALARMHOST_VIDEO_CHAN];
  BYTE               byNetPlaybackRight[MAX_ALARMHOST_VIDEO_CHAN];
  BYTE               byNetPTZRight[MAX_ALARMHOST_VIDEO_CHAN];
  BYTE  		  sOriginalPassword[PASSWD_LEN];
  BYTE   	           byRes2[152];
}NET_DVR_ALARM_DEVICE_USER,*LPNET_DVR_ALARM_DEVICE_USER;

Members

dwSize
结构体大小
sUserName
用户名
sPassword
密码
struUserIP
用户IP地址(为0时表示允许任何地址)
byMACAddr
物理地址
byUserType
用户类型：0- 普通用户，1- 管理员用户
byAlarmOnRight
布防权限
byAlarmOffRight
撤防权限
byBypassRight
旁路权限
byOtherRight
其他权限，参数取值为1表示使能：
byOtherRight[0]：日志权限
byOtherRight[1]：重启关机
byOtherRight[2]：参数设置权限
byOtherRight[3]：参数获取权限
byOtherRight[4]：恢复默认参数权限
byOtherRight[5]：警号输出权限
byOtherRight[6]：PTZ 控制权限
byOtherRight[7]：远程升级权限
byOtherRight[8]：报警输出控制
byOtherRight[9]：串口控制
byOtherRight[10]：门禁控制
byOtherRight[11]：语音对讲
byOtherRight[12]：远程控制本地输出
byOtherRight[13]：硬盘配置
byOtherRight[14]：格式化硬盘
byOtherRight[15]：模拟量控制
byNetPreviewRight
远程可以预览的通道，按位表示各通道（bit0：通道1，bit1：通道2，依次类推）：1- 有权限，0- 无权限
byNetRecordRight
远程可以录像的通道，按位表示各通道（bit0：通道1，bit1：通道2，依次类推）：1- 有权限，0- 无权限
byNetPlaybackRight
远程可以回放的通道，按位表示各通道（bit0：通道1，bit1：通道2，依次类推）：1- 有权限，0- 无权限
byNetPTZRight
远程可以PTZ的通道，按位表示各通道（bit0：通道1，bit1：通道2，依次类推）：1- 有权限，0- 无权限
sOriginalPassword
原始密码
byRes2
保留

Remarks

  • admin用户：
    默认的第一个用户为admin用户，admin用户也属于管理员，但权限要高于其他普通管理员。一个设备只有一个admin用户，admin用户可以设置并修改普通用户的权限，可以查看所有用户的信息，admin用户的权限不可修改。
  • 管理员用户:
    对视频报警主机，拥有除了恢复默认参数、格式化硬盘、升级系统程序、重启外的所有admin用户的权限。其他报警主机的管理员用户可以拥有所有权限。管理员权限不能被修改，admin用户也不能修改管理员权限。
    • 管理员用户可以查看普通用户和自己的信息，不能查看admin用户及其他管理员用户信息，可以设置和修改普通用户的权限，不能修改自己的权限。
  • 普通用户:
    默认拥有获取参数权限，其他权限均需设置。设置的最大化权限为管理员用户所拥有的权限。 普通用户只能查看自己的信息，不能查看admin用户、管理员用户及其他普通用户的信息，不能修改自己的权限。

    • See Also

    NET_DVR_GetAlarmDeviceUser NET_DVR_SetAlarmDeviceUser


NET_DVR_ALARM_HOT_SPARE

热备（N+1模式）异常报警信息结构体。

struct{
  DWORD             dwSize;
  DWORD             dwExceptionCase;
  NET_DVR_IPADDR    struDeviceIP;
  BYTE              byRes[256];
}NET_DVR_ALARM_HOT_SPARE, *LPNET_DVR_ALARM_HOT_SPARE;

Members

dwSize
结构体大小
dwExceptionCase
报警原因：0- 网络异常
struDeviceIP
产生异常的设备IP地址
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARM_ISAPI_INFO

ISAPI协议报警信息结构体

typedef struct tagNET_DVR_ALARM_ISAPI_INFO{
  char     *pAlarmData;
  DWORD    dwAlarmDataLen;
  BYTE     byDataType;
  BYTE     byPicturesNumber;
  BYTE     byRes[2];
  void     *pPicPackData;
  BYTE     byRes[32];
}NET_DVR_ALARM_ISAPI_INFO, *LPNET_DVR_ALARM_ISAPI_INFO;

Members

pAlarmData
ISAPI报警信息（XML/JSON报文，不包含后续的二进制数据）
具体报警类型需要解析该报文eventType字段获取。
dwAlarmDataLen
pAlarmData返回的XML/JSON报文长度
byDataType
报警数据类型：0- invalid，1- xml，2- json
byPicturesNumber
图片数量（返回的pPicPackData数量）
当byPicturesNumber =1时，pPicPackData返回一个NET_DVR_ALARM_ISAPI_PICDATA结构体； byPicturesNumber >1时，pPicPackData返回多个NET_DVR_ALARM_ISAPI_PICDATA结构体。
byRes
保留字节
pPicPackData
报警图片数据：NET_DVR_ALARM_ISAPI_PICDATA
byRes2
保留字节

Remarks

  • 设备上传的报警信息是COMM_VCA_ALARM(0x4993)类型，在SDK初始化之后增加调用NET_DVR_SetSDKLocalCfg(enumType为NET_DVR_LOCAL_CFG_TYPE_GENERAL)设置通用参数NET_DVR_LOCAL_GENERAL_CFG的byAlarmJsonPictureSeparate为1，将Json数据和图片数据分离上传，这样设置之后，报警布防回调函数里面接收到的报警信息类型为COMM_ISAPI_ALARM(0x6009)，报警信息结构体为NET_DVR_ALARM_ISAPI_INFO（与设备无关，SDK封装的数据结构），更便于解析。
  • 开启监听的功能时，设备报警主机地址需要使用ISAPI的网络参数配置接口设置。
    即根据ISAPI和私有协议登录接口中说明的，采用相应的接口和通道来配置报警主机的地址。
  • 如上传证件抓拍比对事件，则pAlarmData对应上传证件抓拍比对事件Json报文。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V50


NET_DVR_ALARM_ISAPI_PICDATA

ISAPI协议报警图片结构体

typedef struct tagNET_DVR_ALARM_ISAPI_PICDATA{
  DWORD    dwPicLen;
  BYTE     byRes[4];
  char     szFilename[MAX_FILE_PATH_LEN];
  BYTE     *pPicData;
}NET_DVR_ALARM_ISAPI_PICDATA,*LPNET_DVR_ALARM_ISAPI_PICDATA;

Members

dwPicLen
报警图片长度
byRes
保留字节
szFilename
保存图象的文件路径（包括文件名），对应JSON报文中的ContentId字段。
*pPicData
报警上传的图片数据指针

See Also

NET_DVR_ALARM_ISAPI_INFO


NET_DVR_ALARM_LAMP_CFG

警灯参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1;
  WORD     wFlashDuration;
  WORD     wFlashIntervalTime;
  BYTE     byRes[510];
}NET_DVR_ALARM_LAMP_CFG,*LPNET_DVR_ALARM_LAMP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用警灯定时闪烁：0- 不启用，1- 启用
byRes1
保留，置为0
wWaitTime
警灯定时闪烁持续时间，单位：秒
wWaitTime
警灯闪烁间隔时间，单位：秒
byRes
保留，置为0

Remarks

  • 设备是否支持警灯参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应警灯参数配置能力集(AlarmLampConfig)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ALARM_LAMP_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ALARM_PHONECFG

报告上传授权名单配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  BYTE     byPhoneNumber[MAX_PHONE_NUM];
  DWORD    dwArmRight;
  DWORD    dwDisArmRight;
  DWORD    dwClearAlarmRight;
  BYTE     byZoneReport[MAX_ALARMHOST_ALARMIN_NUM];
  DWORD    dwNonZoneReport;
  BYTE     byIntervalTime;
  BYTE     byRes2;
  WORD     wDefineIntervalTime;
  BYTE     byRes3[128];
}NET_DVR_ALARM_PHONECFG,*LPNET_DVR_ALARM_PHONECFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byRes1
保留，置为0
byPhoneNumber
授权名单号码
dwArmRight
布防权限，按位表示，bit0为1表示对子系统1有布防权限，依此类推
dwDisArmRight
撤防权限，按位表示，bit0为1表示对子系统1有撤防权限，依此类推
dwClearAlarmRight
消警权限，按位表示，bit0为1表示对子系统1有消警权限，依此类推
byZoneReport
防区报告类型：0- 不上传，1- 上传
dwNonZoneReport
非防区报警报告：bit0-软防区报告，bit1-系统状态报告，bit2-取消报告，bit3-测试报告，bit4-布防报告，bit5-撤防报告，bit6-挟持报告，bit7-报警恢复报告，bit8-旁路报告，bit9-旁路恢复报告，bit10-探测器连接状态报告（上线、离线），bit11-探测器电量状态报告（电压正常、欠压）,bit12-视频报警报告
byIntervalTime
时间间隔：0- 0s，1- 10s，2- 30s，3- 1min，4-5min，5-10min，6-自定义（1~5999s）
byRes2
保留，置为0
wDefineIntervalTime
自定义时间（1~5999s），当byIntervalTime为6时有效
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARM_POINT_CFG

点号信息配置结构体。

struct{
  DWORD                              dwSize;
  DWORD                              dwPointNo;
  BYTE                               sPointDescribe[NAME_LEN];
  NET_DVR_ALARM_POINT_PARAM_UNION    struPointParam;
  BYTE                               byPointType;
  BYTE                               byChanType;
  BYTE                               byRes1[2];
  DWORD                              dwChanNo;
  DWORD                              dwSubChanNo;
  DWORD                              dwVariableNo;
  BYTE                               byRes[16];
}NET_DVR_ALARM_POINT_CFG, *LPNET_DVR_ALARM_POINT_CFG;

Members

dwSize
结构体大小
dwPointNo
点号
sPointDescribe
点号描述
struPointParam
点号信息联合体：当变量类型为模拟量或485遥测信号时，使用结构体struSensor；当变量类型为开关量或485遥信信号时，使用结构体struSwitch
byPointType
点号类型：1-模拟量，2-开关量
byChanType
接入类型：1- 本地模拟量通道，2- 本地开关量通道，3- 485通道，4- 网络通道
byRes
保留，置为0
dwChanNo
通道号
dwSubChanNo
槽位号
dwVariableNo
变量编号，当byChanType为开关量时(1-输入信号，2-输出信号)
byRes
保留，置为0

Remarks

先用NET_DVR_GET_ALL_VARIABLE_INFO（对应接口：NET_DVR_StartRemoteConfig）获取某个通道（本地模拟量、本地开关量、485槽位）上的所有元素列表，然后通过点号配置对每个变量元素配置点号。设置成功以后，在“报警方式配置”中设置报警模式为“自定义模式”。此时设备使用104协议上传点号报警。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig NET_DVR_GetNextRemoteConfig


NET_DVR_ALARM_POINT_PARAM_UNION

点号信息联合体。

union{
  BYTE                              byLength[64];
  NET_DVR_ALARM_SENSOR_POINT_CFG    struSensor;
  NET_DVR_ALARM_SWITCH_POINT_CFG    struSwitch;
}NET_DVR_ALARM_POINT_PARAM_UNION, *LPNET_DVR_ALARM_POINT_PARAM_UNION;

Members

byLength
联合体大小，64字节
struSensor
模拟量相关参数(或485遥测信号)
struSwitch
开关量相关参数(或485遥测信号)

See Also

NET_DVR_ALARM_POINT_CFG


NET_DVR_ALARM_RADARINFO

雷达报警报警信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRadarTriggerTimeSecond;
  DWORD    dwRadarTriggerTimeMSecond;
  DWORD    dwVedioTriggerTimeSecond;
  DWORD    dwVedioTriggerTimeMSecond;
  DWORD    dwVedioRadarDiffTimeMSecond;
  DWORD    dwRadarSpeed;
  BYTE     byRes[16];
}NET_DVR_ALARM_RADARINFO,*LPNET_DVR_ALARM_RADARINFO;

Members

dwSize
结构体大小
dwRadarTriggerTimeSecond
雷达触发时间：秒
dwRadarTriggerTimeMSecond
雷达触发时间：毫秒
dwVedioTriggerTimeSecond
视频触发时间：秒
dwVedioTriggerTimeMSecond
视频触发时间：毫秒
dwVedioRadarDiffTimeMSecond
雷达视频触发时间差：毫秒
dwRadarSpeed
雷达速度
byRes
保留

Remarks

该报警在三级布防下才会产生，布防等级在布防（NET_DVR_SetupAlarmChan_V41）时选择。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_ALARM_RELATE_CFG

报警联动通道配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwMaxRelateChanNum;
  DWORD    dwRelateChan[MAX_CHANNUM_V40];
  BYTE     byRes1[256];
}NET_DVR_ALARM_RELATE_CFG, *LPNET_DVR_ALARM_RELATE_CFG;

Members

dwSize
结构体大小
dwMaxRelateChanNum
触发的报警关联通道数（只读）最大支持数量
dwRelateChan
触发的报警关联通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效
byRes1
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ALARM_RELATE_COND

报警联动通道配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byAlarmType;
  BYTE     byRelateActType;
  BYTE     byRes[2];
  DWORD    dwChannel;
  BYTE     byRes1[64];
}NET_DVR_ALARM_RELATE_COND, *LPNET_DVR_ALARM_RELATE_COND;

Members

dwSize
结构体大小
byAlarmType
报警类型：0- 移动侦测，1- 视频遮挡，2- 视频丢失，3- PIR报警，4- 无线报警，5- 呼救报警，6- 智能抓图，7- 人脸侦测，8- 越界侦测侦测，9- 区域入侵侦测，10- 场景变更侦测，11- 硬盘满异常侦测， 12- 硬盘错误异常侦测，13- 网络断开异常侦测，14- IP冲突异常侦测，15- 非法访问异常侦测，0xff- 报警输入
byRelateActType
联动动作：0- 无效，1- 抓图上传FTP，2- Jpeg抓图上传Email
byRes
保留，置为0
dwChannel
报警输入号或者通道号或者无线编号：
当byAlarmType==0、1、2、3、5、6、7、8、9或10时，dwChannel表示视频通道号
当byAlarmType==4时，dwChannel表示无线编号
当byAlarmType==11或者12时，dwChannel表示硬盘号
当byAlarmType==0xff时，dwChannel表示报警输入号
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ALARM_RS485CFG

报警主机RS485参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sDeviceName[NAME_LEN];
  WORD     wDeviceType;
  WORD     wDeviceProtocol;
  DWORD    dwBaudRate;
  BYTE     byDataBit;
  BYTE     byStopBit;
  BYTE     byParity;
  BYTE     byFlowcontrol;
  BYTE     byDuplex;
  BYTE     byWorkMode;
  BYTE     byChannel;
  BYTE     bySerialType;
  BYTE     byMode;
  BYTE     byRes[35];
}NET_DVR_ALARM_RS485CFG, *LPNET_DVR_ALARM_RS485CFG;

Members

dwSize
结构体大小
sDeviceName
前端设备名称
wDeviceType
前端设备类型
wDeviceProtocol
前端设备协议，通过获取协议列表NET_DVR_GetDeviceProtoList获取
dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控,2-硬流控
byDuplex
0- 半双工，1- 全双工
byWorkMode
工作模式：0- 控制台，1- 透明通道，2- 梯控，3- 读卡器，4-门禁安全模块，0xfe- 自定义(保留)，0xff- 禁用
byChannel
RS485通道号
bySerialType
串口类型: 0- 485，1- 232
byMode
（该字段门禁考勤一体机专用，这里不使用）连接模式：0- 连接读卡器，1- 连接客户端，2- 连接扩展模块，3-连接门禁主机，0xff-禁用
byRes
保留

Remarks

  • 对于动环监控主机V2.0，RS485参数配置中的sDeviceName、wDeviceType、wDeviceProtocol三个字段不能设置（不生效），该配置仅配置485串口通信相关参数： 波特率（1200~57600）、数据位（8位或者7位加校验位）、停止位（1、2）、检验位（无、奇校验、偶校验）、流控（无）、通信模式（全双工、半双工）、工作模式（控制台、透明通道）。
  • RS485参数能力，对应RS232和RS485串口能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SERIAL_ABILITY）中节点<RS485>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig
NET_DVR_GetNextRemoteConfig NET_DVR_GetDeviceProtoList


NET_DVR_ALARM_SEARCH_COND

报警信息查询条件结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_TIME_SEARCH_COND    strStartTime;
  NET_DVR_TIME_SEARCH_COND    strStopTime;
  DWORD                       dwAlarmComm;
  char                        sAlarmUID[64];
  WORD                        wEventType;
  WORD                        wSubEventType;
  BYTE                        bySupport;
  BYTE                        byNoBoundary;
  BYTE                        byRes[122];

}NET_DVR_ALARM_SEARCH_COND,*LPNET_DVR_ALARM_SEARCH_COND;

Members

dwSize
结构体大小
strStartTime
开始时间，时间为空则代表不通过时间筛选
strStopTime
结束时间，时间为空则代表不通过时间筛选
dwAlarmComm
报警类型：0x4993-智能检测报警(雷视目标检测报警)，0x1112-人脸抓拍结果，0x2902-人脸比对结果，若该命令为0这代表不进行报警命令过滤。
sAlarmUID
UID标识（上传报警时设备返回的UID标识，64字节的长度，可以使用时间（精确到毫秒）加上随即数的方式组成），为空则代表不区分UID
wEventType
事件类型，仅dwAlarmComm为COMM_VCA_ALARM 0x4993 智能检测报警有效，0-表示所有事件,1-混合目标检测（mixedTargetDetection）,2-雷视目标检测（radarVideoDetection）
wSubEventType
子事件类型，0-表示所有子事件，其余值根据wEventType的取值变化而变化，具体参见能力集。
bySupport
Bit0- 表示混合目标检测报警(eventType: radarVideoDetection)是否开启上传用于功能演示；0-不开启，1-开启（部分雷视设备默认不支持雷视目标检测报警上传，需要将本字段置为1才能开启上报，用于进行功能演示；其他设备无需解析本节点，若设备支持雷视目标检测报警上传则直接上传即可）
byNoBoundary
是否不带boundary，0-否，1-是，仅dwAlarmComm为智能检测报警时有效
byRes
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_ALARM_SEARCH_RESULT

报警信息查询结果。

struct{
  DWORD              dwSize;
  DWORD              dwAlarmComm;
  DWORD              dwAlarmLen;
  char               *pAlarmInfo;
  NET_DVR_ALARMER    struAlarmer;
  BYTE               byRes[128];
}NET_DVR_ALARM_SEARCH_RESULT,*LPNET_DVR_ALARM_SEARCH_RESULT;

Members

dwSize
结构体大小
dwAlarmComm
报警类型：0x4993-智能检测报警(混合目标检测报警)，0x1112-人脸抓拍结果，0x2902-人脸比对结果，若该命令为0这代表不进行报警命令过滤。
dwAlarmLen
报警信息长度，即pAlarmInfo指针指向的数据长度
pAlarmInfo
报警信息数据，不同的dwAlarmComm，对应数据内容不同
struAlarmer
报警设备信息
byRes
保留，置为0

Remarks

不同的dwAlarmComm，pAlarmInfo对应不同的数据内容，详见下表：

消息类型（dwAlarmComm） | 宏定义值 | 上传内容 | pAlarmInfo对应的结构体
COMM_UPLOAD_FACESNAP_RESULT | 0x1112 | 人脸抓拍结果信息 | NET_VCA_FACESNAP_RESULT
COMM_SNAP_MATCH_ALARM | 0x2902 | 人脸非授权名单比对结果信息 | NET_VCA_FACESNAP_MATCH_ALARM
COMM_VCA_ALARM | 0x4993 | 智能检测通用报警(Json或者XML数据结构) | 雷视目标检测报警JSON数据

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ALARM_SENSOR_POINT_CFG

模拟量点号信息结构体。

struct{
  int      nMeasureHigh;
  int      nMeasureLow;
  BYTE     byAlarmMode;
  BYTE     byRes1[3];
  int      nAlarmValue[4];
  DWORD    dwOsdCfg;
  DWORD    dwSensitive;
  DWORD    dwIPChanOsd;
  CHAR     szOSDUint[MAX_OSD_UNIT_LEN];
  BYTE     byRes[16];
}NET_DVR_ALARM_SENSOR_POINT_CFG, *LPNET_DVR_ALARM_SENSOR_POINT_CFG;

Members

nMeasureHigh
量程上限，外部值*1000，可以为负数
nMeasureLow
量程下限，外部值*1000
byAlarmMode
报警模式，共五种模式: 15-HHHH、14-HHHL、12-HHLL、8HLLL、0-LLLL，即：
1111- 上上上上
1110- 上上上下
1100- 上上下下
1000- 上下下下
0000- 下下下下
byRes1
保留
nAlarmValue
报警限
dwOsdCfg
模拟量字符叠加，按位表示，0~15对应视频通道1~16
dwSensitive
灵敏度，取值范围，10~1000。外部值float*1000。当实时值的变化超过灵敏度的范围时，则表示实时值发生了变化，否则认为没有发生变化。如：灵敏度为0.1，则表示前后检测的两个值之差大于0.1时，则认为数据发生变化，需要上传；如果为1，则表示变化超过1时上报。
dwIPChanOsd
数字通道叠加模拟量字符，按位表示，0~31对应数字通道1-32。
szOSDUint
OSD叠加单位。
byRes
保留

See Also

NET_DVR_ALARM_POINT_PARAM_UNION


NET_DVR_ALARM_SWITCH_POINT_CFG

开关量点号信息结构体。

struct{
  DWORD   dwIPCChanOsd;
  BYTE    byRes[64];
}NET_DVR_ALARM_SWITCH_POINT_CFG, *LPNET_DVR_ALARM_SWITCH_POINT_CFG;

Members

dwIPCChanOsd
支持osd开关量叠加的IPC通道信息，按位表示，0~31对应数字通道1-32
byRes
保留

See Also

NET_DVR_ALARM_POINT_PARAM_UNION


NET_DVR_ALARM_VARIABLE_CFG

变量元素信息结构体。

struct{
  DWORD    dwSize;
  WORD     wVariableIndex;
  WORD     wVariableType;
  BYTE     sDescribe[NAME_LEN];
  BYTE     byLimitLineType;
  BYTE     byRes[31];
}NET_DVR_ALARM_VARIABLE_CFG, *LPNET_DVR_ALARM_VARIABLE_CFG;

fMembers

dwSize
结构体大小
wVariableIndex
变量编号，只能获取
wVariableType
变量类型：1- 模拟量，2- 开关量，只能获取
sDescribe
变量描述
byLimitLineType
报警限值配置类型：0- 不支持报警限值配置，1- 两限值配置（即上限、下限），2- 四限值配置
byRes
保留

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_ALARMCENTER_NETCFG

报警中心网络配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byAuxiliaryAlarmAddr[MAX_DOMAIN_NAME];
  WORD                        wAuxiliaryAlarmPort;
  NET_DVR_ADDR_DOMAIN_INFO    struHostAddr[MAX_CENTERNUM_V40];
  BYTE                        byRes[172];
}NET_DVR_ALARMCENTER_NETCFG,*LPNET_DVR_ALARMCENTER_NETCFG;

Members

dwSize
结构体大小
byAuxiliaryAlarmAddr
辅报警主机IP地址或者域名，需要设备解析，解析方式为有字母存在且有"."则认为是域名，否则为IP地址
wAuxiliaryAlarmPort
辅报警主机端口号
struHostAddr
报警中心地址信息，每位数组表示一个报警中心
byRes
保留，置为0

See Also

报警主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

人脸服务器：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMCTRL_CFG

报警控制配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byListenPicUploadEnabled;
  BYTE     byRes[259];
}NET_DVR_ALARMCTRL_CFG, *LPNET_DVR_ALARMCTRL_CFG;

Members

dwSize
结构体大小
byListenPicUploadEnabled
监听图片上传使能：0- 禁用，1- 启用
byRes
保留，置为0

Remarks

  • 设备是否支持报警控制配置或者支持的参数能力，可以通过设备能力集进行判断，对应报警控制能力集(AlarmCtrlParam)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ALARMCTRL_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ALARMER

报警设备信息结构体。

struct{
  BYTE     byUserIDValid;
  BYTE     bySerialValid;
  BYTE     byVersionValid;
  BYTE     byDeviceNameValid;
  BYTE     byMacAddrValid;
  BYTE     byLinkPortValid;
  BYTE     byDeviceIPValid;
  BYTE     bySocketIPValid;
  LONG     lUserID;
  BYTE     sSerialNumber[SERIALNO_LEN];
  DWORD    dwDeviceVersion;
  char     sDeviceName[NAME_LEN];
  BYTE     byMacAddr[MACADDR_LEN];
  WORD     wLinkPort;
  char     sDeviceIP[128];
  char     sSocketIP[128];
  BYTE     byIpProtocol;
  BYTE     byRes1[2];
  BYTE     bJSONBroken;
  WORD     wSocketPort;
  BYTE     byRes2[6];
}NET_DVR_ALARMER,*LPNET_DVR_ALARMER;

Members

byUserIDValid
userid是否有效：0－无效；1－有效
bySerialValid
序列号是否有效：0－无效；1－有效
byVersionValid
版本号是否有效：0－无效；1－有效
byDeviceNameValid
设备名字是否有效：0－无效；1－有效
byMacAddrValid
MAC地址是否有效：0－无效；1－有效
byLinkPortValid
Login端口是否有效：0－无效；1－有效
byDeviceIPValid
设备IP是否有效：0－无效；1－有效
bySocketIPValid
Socket IP是否有效：0-无效；1-有效
lUserID
NET_DVR_Login或NET_DVR_Login_V30返回值, 布防时有效
sSerialNumber
序列号
dwDeviceVersion
版本信息：V3.0以上版本支持的设备最高8位为主版本号，次高8位为次版本号，低16位为修复版本号；V3.0以下版本支持的设备高16位表示主版本，低16位表示次版本
sDeviceName
设备名称
byMacAddr
MAC地址
wLinkPort
设备通讯端口
sDeviceIP
设备IP地址
sSocketIP
报警主动上传时的Socket IP地址
byIpProtocol
IP协议：0－IPV4；1－IPV6
byRes1
保留，置为0
bJSONBroken
JSON断网续传标志。0：不续传；1：续传
byRes2
保留，置为0


NET_DVR_ALARMHOST_ABILITY

报警主机能力集结构体。

struct{
  DWORD    dwSize;
  WORD     wTotalAlarmInNum;
  WORD     wLocalAlarmInNum;
  WORD     wExpandAlarmInNum;
  WORD     wTotalAlarmOutNum;
  WORD     wLocalAlarmOutNum;
  WORD     wExpandAlarmOutNum;
  WORD     wTotalRs485Num;
  WORD     wLocalRs485Num;
  WORD     wExpandRs485Num;
  WORD     wFullDuplexRs485Num;
  WORD     wTotalSensorNum;
  WORD     wLocalSensorNum;
  WORD     wExpandSensorNum;
  WORD     wAudioOutNum;
  WORD     wGatewayNum;
  WORD     wElectroLockNum;
  WORD     wSirenNum;
  WORD     wSubSystemNum;
  WORD     wNetUserNum;
  WORD     wKeyboardUserNum;
  WORD     wOperatorUserNum;
  BYTE     bySupportDetector;
  BYTE     bySupportSensitivity;
  BYTE     bySupportArrayBypass;
  BYTE     bySupportAlarmInDelay;
  BYTE     bySupportAlarmInType[16];
  BYTE     byTelNum;
  BYTE     byCenterGroupNum;
  BYTE     byGPRSNum;
  BYTE     byNetNum;
  BYTE     byAudioNum;
  BYTE     by3GNum;
  BYTE     byAnalogVideoChanNum;
  BYTE     byDigitalVideoChanNum;
  BYTE     bySubSystemArmType;
  BYTE     byPublicSubSystemNum;
  DWORD    dwSupport1;
  DWORD    dwSubSystemEvent;
  DWORD    dwOverallEvent;
  DWORD    dwFaultType;
  BYTE     byPublicSubsystemAssociateSubsystemNum;
  BYTE     byOverallKeyboard;
  WORD     wSafetyCabinSupport;
  BYTE     by485SlotNum;
  BYTE     bySubSystemAttributeAbility;
  WORD     wKeyboardAddrNum;
  BYTE     byAlarmLampNum;
  BYTE     byRes[117];
}NET_DVR_ALARMHOST_ABILITY, *LPNET_DVR_ALARMHOST_ABILITY;

Members

dwSize
结构体大小
wTotalAlarmInNum
报警输入口(防区)总数,包括级联
wLocalAlarmInNum
本地报警输入口(防区)数
wExpandAlarmInNum
可扩展的报警输入口(防区)数。该值大于0表示支持防区编号功能，此时NET_DVR_ALARMIN_PARAM中的byJointSubSystem、byModuleStatus、wModuleAddress、byModuleChan、byModuleType和wZoomZoneIndex有效，支持“获取子系统内防区”、“自动搜索外接模块”和“自动注册外接模块”的功能。
wTotalAlarmOutNum
触发器总数（设备支持的总数）
wLocalAlarmOutNum
本地触发器个数
wExpandAlarmOutNum
可扩展的触发器个数。该值大于0表示支持触发器编号功能，此时NET_DVR_ALARMOUT_PARAM中的wTriggerIndex、byModuleType、byModuleStatus、wModuleAddress和byModuleChan字段有效，支持“获取所有触发器”、“自动搜索外接模块”和“自动注册外接模块”的功能。
wTotalRs485Num
最大通道485数目（设备支持的总数）
wLocalRs485Num
本地485口数
wExpandRs485Num
可扩展的485口数
wFullDuplexRs485Num
全双工的485口数
wTotalSensorNum
模拟量最大个数 (设备支持的总数)
wLocalSensorNum
本地模拟量个数
wExpandSensorNum
可扩展的模拟量个数
wAudioOutNum
语音输出个数
wGatewayNum
门禁个数
wElectroLockNum
电锁个数
wSirenNum
主机警号数目
wSubSystemNum
可划分子系统数目
wNetUserNum
网络用户数
wKeyboardUserNum
键盘数
wOperatorUserNum
操作用户数
bySupportDetector
是否支持常开、常闭探测器：1- 支持，0- 不支持
bySupportSensitivity
是否支持防区灵敏度：1- 支持，0- 不支持
bySupportArrayBypass
是否支持组旁路：1- 支持，0- 不支持
bySupportAlarmInDelay
bySupportAlarmInDelay为1时，表示客户端应该使用NET_DVR_ALARMIN_PARAM中的dwParam来设置延时时间，动环监控主机和自助行报警主机使用这种配置延时方式;
如果bySupportAlarmInDelay为0时，表示通过NET_DVR_ALARMSUBSYSTEMPARAM中的wEnterDelay、wExitDelay来设置
bySupportAlarmInType
支持的防区类型：数组0- 即时防区，数组1- 24小时有声防区，数组2- 延时防区，数组3- 内部防区，数组4- 钥匙防区，数组5- 火警防区， 数组6- 周界防区，数组7- 24小时无声防区，数组8-24小时辅助防区，数组9-24小时震动防区，数组10-门禁紧急开门防区，数组11-门禁紧急关门防区，数组15- 无
byTelNum
支持电话个数
byCenterGroupNum
中心组个数
byGPRSNum
GPRS中心数，最多4个
byNetNum
网络中心数，最多4个
byAudioNum
音频个数
by3GNum
3G模块个数，最多4个
byAnalogVideoChanNum
模拟视频通道个数
byDigitalVideoChanNum
数字视频通道个数
bySubSystemArmType
子系统布防类型（当子系统个数大于0时有效），0-表示不支持，1-表示支持，按位表示：bit0- 外出布防，bit1- 即时布防，bit2- 留守布防。（注：网络小主机只支持普通布防）
byPublicSubSystemNum
公共子系统个数
dwSupport1
按位表示，值为非0表示支持，0表示不支持： bit0：是否支持子系统内配置警号输出时间，如果支持则警号输出时间在每个子系统内配置，如果不支持，警号时间在警号参数配置里面设置 bit1：是否支持事件触发报警输出开启 bit2：是否支持事件触发报警输出关闭 bit3：是否支持子系统使能 bit4：是否支持防区布防 bit5：是否支持子系统自动布撤防 bit6：是否支持具体故障关联声音输出 bit7：是否支持故障状态查询 bit8：是否支持子系统扩展配置 bit9：是否支持钥匙防区操作子系统 bit10：是否支持“键盘提示成功发送报告”配置 bit11：是否支持导入导出参数配置 bit12：是否支持LED屏幕参数配置 bit13：是否支持故障关联本地故障灯输出
dwSubSystemEvent
子系统事件，按位表示，0表示不支持，非0表示支持：bit0-进入延时，bit1-退出延时，bit2-布防，bit3-撤防，bit4-报警，bit5-消除报警记忆
dwOverallEvent
系统事件，按位表示，0表示不支持，非0表示支持：bit0-交流电掉电，bit1-电池电压低，bit2-电话线掉线，bit3-有线网络异常，bit4-无线网络异常，bit5-硬盘故障,bit6-3G/4G信号异常, bit7-（模块链接）第三方主机掉线，bit8-WIFI通信故障，bit9-RF信号干扰故障
dwFaultType
设备支持的故障类型，按位表示：bit0-交流电断电，bit1-蓄电池欠压，bit2-主机防拆开，bit3-电话线掉线，bit4-主键盘掉线，bit5-网络故障，bit6-GPRS异常，bit7-MBUS异常，bit8-硬盘异常，bit9-FPGA故障，bit10-模拟量故障
byPublicSubsystemAssociateSubsystemNum
公共子系统可关联的子系统个数
byOverallKeyboard
全局键盘个数
wSafetyCabinSupport
防护舱控制器能力，按位表示，值非0表示支持，0表示不支持：
bit0: 是否支持防护舱控制器工作模式配置
bit1: 是否支持人信号传感器类型配置
bit2: 是否支持幕帘传感器参数配置（探测延迟时间、人状态变化响应时间）
bit3: 是否支持红外对射传感器参数配置（滤波）
bit4: 是否支持防护舱使用超时时间配置
by485SlotNum
RS485虚拟槽位号
bySubSystemAttributeAbility
值恒为1，禁止1号子系统关闭使能
wKeyboardAddrNum
键盘地址数
byAlarmLampNum
警灯数目
byRes
保留

Remarks

  • wExpandAlarmInNum大于0表示支持防区编号功能，此时NET_DVR_ALARMIN_PARAM中的byJointSubSystem，byModuleStatus，wModuleAddress，byModuleChan，byModuleType，wZoneIndex有效。支持“获取子系统内防区”，“自动搜索”，“自动注册”功能。
  • wExpandAlarmOutNum大于0表示支持触发器编号功能，此时NET_DVR_ALARMOUT_PARAM中的wTriggerIndex，byModuleType，byModuleStatus，wModuleAddress，byModuleChan字段有效。支持“获取所有触发器”，“自动搜索”，“自动注册”功能。

See Also

NET_DVR_GetDeviceAbility


NET_DVR_ALARMHOST_AIRCONDITION_STATE

空调状态信息结构体。

struct{
  int     iTemperature;
  int     iHumidity;
  BYTE    byRunState;
  BYTE    byRes[503];
}NET_DVR_ALARMHOST_AIRCONDITION_STATE,*LPNET_DVR_ALARMHOST_AIRCONDITION_STATE;

Members

iTemperature
温度，单位：摄氏度（°C）
iHumidity
湿度，单位：%
byRunState
运行状态：1- 正常，2- 停机
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_ALARMINFO

报警主机报警上传结构体。

struct{
  DWORD    dwAlarmType;
  BYTE     byAlarmInputNumber[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byRes[160];
}NET_DVR_ALARMHOST_ALARMINFO, *LPNET_DVR_ALARMHOST_ALARMINFO;

Members

dwAlarmType
保留，目前报警主机的报警没有类型(布防网络序，监听主机序)
byAlarmInputNumber
发生报警的防区，数组0对应第1个输入端口
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_ALARMHOST_ALARMOUTSTATUS

触发器或者警号状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byName[32];
  BYTE     byAlarmType;
  WORD     wChan;
  BYTE     byAlarmStatus;
  BYTE     byRes[32];
}NET_DVR_ALARMHOST_ALARMOUTSTATUS, *LPNET_DVR_ALARMHOST_ALARMOUTSTATUS;

Members

dwSize
结构体大小
byName
触发器或警号名称
byAlarmType
1- 触发器状态，2- 警号状态
wChan
如果是触发器状态，该值的范围为0~511；如果是警号状态，范围为1~8（防护舱只有1个警号输出）
byAlarmStatus
报警状态：0- 无报警，1- 有报警
byRes
保留

Remarks

有报警或报警取消时会有状态信息上传。如果是有报警状态，则每隔4s钟，设备上传一次状态信息。

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM

音频跟随报警事件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnterDoor[8];
  BYTE     byExitDoor[8];
  BYTE     byAlarmIn[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byRes[128];
}NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM,*LPNET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM;

Members

dwSize
结构体大小
byEnterDoor
下标表示门禁号，元素数值表示关联信息，0表示不关联， 1~8表示关联的音频号
byExitDoor
下标表示门禁号，元素数值表示关联信息，0表示不关联， 1~8表示关联的音频号
byAlarmIn
关联防区，下标表示防区号，元素数值表示关联信息，0表示不关联，1~8表示关联的音频号
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE

CID报警全部次类型枚举。

enum tagNET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE{
  CID_TYPE_ALARM                           = 1103,  //即时报警
  CID_TYPE_ALARM_RESET                     = 3103,  //即时报警恢复
  CID_TYPE_FIRE_ALARM                      = 1110,  //火警报警
  CID_TYPE_FIRE_ALARM_RESET                = 3110,  //火警报警恢复
  CID_TYPE_ABDUCT_REPORT                   = 1121,  //挟持报告
  CID_TYPE_SILENT_24                       = 1122,  //24小时无声报警
  CID_TYPE_SILENT_24_RESET                 = 3122,  //24小时无声报警恢复
  CID_TYPE_AUDIO_24                        = 1123,  //24小时有声报警
  CID_TYPE_AUDIO_24_RESET                  = 3123,  //24小时有声报警恢复
  CID_TYPE_AUXILIARY_24                    = 1124,  //24小时辅助报警
  CID_TYPE_AUXILIARY_24_RESET              = 3124,  //24小时辅助报警恢复
  CID_TYPE_SHOCK_24                        = 1125,  //24小时震动报警
  CID_TYPE_SHOCK_24_RESET                  = 3125,  //24小时震动报警恢复
  CID_TYPE_TIMEOUT                         = 1126,  //超时报警
  CID_TYPE_TIMEOUT_RESET                   = 3126,  //超时报警恢复
  CID_TYPE_EMERGENCE_CALL_HELP             = 1129,  //紧急求助报警
  CID_TYPE_EMERGENCE_CALL_HELP_RESET       = 3129,  //紧急求助报警恢复
  CID_TYPE_PERIMETER_ALARM                 = 1131,  //周界报警
  CID_TYPE_PERIMETER_ALARM_RESET           = 3131,  //周界报警恢复
  CID_TYPE_INNET_ALARM                     = 1132,  //内部延时报警
  CID_TYPE_INNET_ALARM_RESET               = 3132,  //内部延时报警恢复
  CID_TYPE_ENTER_EXIT                      = 1134,  //延时报警
  CID_TYPE_ENTER_EXIT_RESET                = 3134,  //延时报警恢复
  CID_TYPE_DEVICE_OPEN                     = 1137,  //设备防拆报警
  CID_TYPE_DEVICE_OPEN_RESET               = 3137,  //设备防拆报警恢复
  CID_TYPE_ZONE_BUS_BREAK                  = 1141,  //总线开路报警
  CID_TYPE_ZONE_BUS_BREAK_RESET            = 3141,  //总线开路报警恢复
  CID_TYPE_ZONE_BUS_SHORT                  = 1142,  //总线短路报警
  CID_TYPE_ZONE_BUS_SHORT_RESET            = 3142,  //总线短路报警恢复
  CID_TYPE_AC_LOSS                         = 1301,  //交流电掉电
  CID_TYPE_AC_LOSS_RESET                   = 3301,  //交流电恢复
  CID_TYPE_LOW_BATT_VOL                    = 1302,  //蓄电池电压低
  CID_TYPE_LOW_BATT_VOL_NORMAL             = 3302,  //蓄电池电压正常
  CID_TYPE_DEV_RESET                       = 1305,  //主机复位
  CID_TYPE_MBUS_MODEL_FAULT                = 1333,  //扩展模块故障
  CID_TYPE_MBUS_MODEL_RESET                = 3333,  //扩展模块恢复
  CID_TYPE_PRINTER_OFF                     = 1336,  //打印机掉线
  CID_TYPE_PRINTER_ON                      = 3336,  //打印机恢复
  CID_TYPE_EXTEND_MODULE_VOL_LOW           = 1338,  //扩展模块电压低
  CID_TYPE_EXTEND_MODULE_VOL_NORMAL        = 3338,  //扩展模块电压正常
  CID_TYPE_EXTEND_MODULE_REMOVE            = 1341,  //扩展模块防拆触发
  CID_TYPE_EXTEND_MODULE_RECOVER           = 3341,  //扩展模块防拆恢复
  CID_TYPE_EXTEND_MODULE_AC_LOSS           = 1342,  //扩展模块交流电掉电
  CID_TYPE_EXTEND_MODULE_AC_LOSS_RESET     = 3342,  //扩展模块交流电恢复
  CID_TYPE_LINE_LOSS_RESET                 = 3354,  //电话线连接
  CID_TYPE_BUS_LOSS                        = 1382,  //扩展总线模块掉线
  CID_TYPE_BUS_LOSS_RESET                  = 3382,  //扩展总线模块掉线恢复
  CID_TYPE_SENSOR_TAMPER                   = 1383,  //防区感应器防拆
  CID_TYPE_SENSOR_TAMPER_RESET             = 3383,  //防区感应器防拆恢复
  CID_TYPE_DISARM                          = 1401,  //撤防
  CID_TYPE_ARM                             = 3401,  //外出布防
  CID_TYPE_DISARM_AUTO                     = 1403,  //自动撤防
  CID_TYPE_ARM_AUTO                        = 3341,  //自动布防
  CID_TYPE_CANCEL_ARM                      = 1406,  //消警
  CID_TYPE_ARM_IMME                        = 3408,  //即时布防
  CID_TYPE_KEY_ZONE_ARM                    = 1409,  //钥匙防区布防
  CID_TYPE_KEY_ZONE_DISARM                 = 3409,  //钥匙防区撤防
  CID_TYPE_GUARD_STAY                      = 3441,  //留守布防
  CID_TYPE_FORCED_ARM                      = 3442,  //强制布防
  CID_TYPE_AUTOCTRL_TRIG_ON                = 1443,  //定时开触发器
  CID_TYPE_AUTOCTRL_TRIG_OFF               = 3443,  //定时关触发器
  CID_TYPE_AUTOGUARD_FAIL                  = 1455,  //自动布撤防失败
  CID_TYPE_AOPEN_TRIG_FAIL                 = 1460,  //定时开启触发器失败
  CID_TYPE_ACLOSE_TRIG_FAIL                = 1461,  //定时关闭触发器失败
  CID_TYPE_AUTOUNGUARD_FAIL                = 1462,  //自动撤防失败
  CID_TYPE_BYPASS                          = 1570,  //旁路
  CID_TYPE_BYPASS_RESET                    = 3570,  //旁路恢复
  CID_TYPE_GROUP_BYPASS                    = 1574,  //子系统组旁路
  CID_TYPE_GROUP_BYPASS_RESET              = 3574,  //子系统组旁路恢复
   CID_TYPE_MANUAL_TEST_RPT                = 1601,  //手动测试报告
  CID_TYPE_AUTO_TEST_RPT                   = 1602,  //定时测试报告
  CID_TYPE_LINE_TEST                       = 1617,  //电话链路测试
   CID_TYPE_ENTER_PROG                     = 1627,  //进入编程
  CID_TYPE_EXIT_PROG                       = 1628,  //退出编程
  CID_TYPE_SOFT_INSTAND                    = 1810,  //软防区紧急报警
  CID_TYPE_SOFT_FIRE                       = 1811,  //软防区火警
  CID_TYPE_SOFT_MOBS                       = 1812,  //软防区匪警
  CID_TYPE_KEYPAD_LOCK                     = 1862,  //键盘锁定
  CID_TYPE_KEYPAD_UNLOCK                   = 3862,  //键盘解锁
  CID_TYPE_KEY_FAIL                        = 1910,  //键盘掉线
  CID_TYPE_KEY_RESET                       = 3910,  //键盘恢复
  CID_TYPE_TRIGGER_FAIL                    = 1911,  //键盘总线上触发器掉线
  CID_TYPE_TRIGGER_RESET                   = 3911,  //键盘总线上触发器恢复
  CID_TYPE_GPK_FAIL                        = 1912,  //键盘总线上GP/K掉线
  CID_TYPE_GPK_RESET                       = 3912,  //键盘总线上GP/K恢复
  CID_TYPE_MODULE_FAIL                     = 1913,  //键盘总线上MN/K掉线
  CID_TYPE_MODULE_RESET                    = 3913,  //键盘总线上MN/K恢复
  CID_TYPE_WIRELESS_DETECTOR_FAIL          = 1914,  //无线探测器掉线
  CID_TYPE_WIRELESS_DETECTOR_RESET         = 3914,  //无线探测器掉线恢复
  CID_TYPE_WIRELESS_DETECTOR_BATTERY_LOW   = 1915,  //无线探测器电压低
  CID_TYPE_WIRELESS_DETECTOR_BATTERY_NORML = 3915,  //无线探测器电压正常
  CID_TYPE_EXTEND_MODULE_LOSS              = 1916,  //扩展模块掉线
  CID_TYPE_EXTEND_MODULE_LOSS_RESET        = 3916,  //扩展模块掉线恢复
  CID_TYPE_WRIELESS_NET_FAULT              = 1920,  //无线网络故障
  CID_TYPE_WRIELESS_NET_RESET              = 3920,  //无线网络故障恢复
  CID_TYPE_SIM_FAULT                       = 1921,  //SIM卡异常
  CID_TYPE_SIM_RESET                       = 3921,  //SIM卡异常恢复
  CID_TYPE_WIFI_ABNORMAL                   = 1922,  //WIFI通信异常
  CID_TYPE_WIFI_NORMAL                     = 3922,  //WIFI通信恢复正常
  CID_TYPE_RF_ABNORMAL                     = 1923,  //RF信号异常
  CID_TYPE_RF_NORMAL                       = 3923,  //RF信号正常
  CID_TYPE_DATE_TRAFFIC_OVERFLOW           = 1924,  //流量超额
  CID_TYPE_IPADDR_CONFLICT                 = 1930,  //IP冲突
  CID_TYPE_IPADDR_NORMAL                   = 3930,  //IP正常
  CID_TYPE_ETHERNET_BROKEN                 = 1931,  //有线网络故障
  CID_TYPE_ETHERNET_NORMAL                 = 3931,  //有线网络故障恢复
  CID_TYPE_MOTION_DECTECT_START            = 1940,  //移动侦测报警开始
  CID_TYPE_MOTION_DECTECT_STOP             = 3940,  //移动侦测报警结束
  CID_TYPE_MASK_ALARM_START                = 1941,  //遮挡报警开始
  CID_TYPE_MASK_ALARM_STOP                 = 3941,  //遮挡报警结束
  CID_TYPE_VI_LOST_START                   = 1942,  //视频信号丢失
  CID_TYPE_VI_LOST_STOP                    = 3942,  //视频信号恢复
  CID_TYPE_VS_MISMATCH                     = 1943,  //输入/输出视频制式不匹配
  CID_TYPE_VS_MATCH                        = 3943,  //输入/输出视频制式恢复正常
  CID_TYPE_VI_EXCEPTION                    = 1944,  //视频输入异常
  CID_TYPE_VI_NORMAL                       = 3944,  //视频输入恢复正常
  CID_TYPE_HD_FULL                         = 1945,  //硬盘满
  CID_TYPE_HD_FREE                         = 3945,  //硬盘空闲
  CID_TYPE_HD_ERROR                        = 1946,  //硬盘异常
  CID_TYPE_HD_RESET                        = 3946,  //硬盘恢复正常
  CID_TYPE_PIC_SEND_FAILED                 = 1947,  //图片上传失败
  CID_TYPE_ZONE_BUS_SEARCH                 = 1970,  //总线搜索
  CID_TYPE_ZONE_BUS_REGIST                 = 1971,  //总线注册
  CID_TYPE_GUARD_SINGLE_ARM                = 1973,  //单防区撤防
  CID_TYPE_GUARD_SINGLE_DISARM             = 3973,  //单防区布防
  CID_TYPE_ZONE_ASSOCIATED_DETECTOR_ADD    = 1975,  //添加探测器
  CID_TYPE_ZONE_ASSOCIATED_DETECTOR_DEL    = 3975,  //删除探测器
  CID_TYPE_ZONE_CONSULT                    = 1976,  //业务咨询
  CID_TYPE_ZONE_CONSULT_STOP               = 3976,  //业务咨询结束
}NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE

See Also

NET_DVR_CID_ALARM


NET_DVR_ALARMHOST_CID_MINOR_TYPE

CID报警次类型枚举。

enum NET_DVR_ALARMHOST_CID_MINOR_TYPE{
  CID_ALARM                          = 103,    //报警
  CID_FIRE_ALARM                     = 110,  //火警
  CID_ABDUCT_REPORT                  = 121,  //挟持报告
  CID_SILENT_24                      = 122,  //24小时无声
  CID_AUDIO_24                       = 123,  //24小时有声
  CID_AUXILIARY_24                   = 124,  //24小时辅助
  CID_SHOCK_24 = 125                 = 125,  //24小时震动
  CID_EMERGENCE_CALL_HELP            = 129,  //紧急报警求助
  CID_PERIMETER_ALARM                = 131,  //周界
  CID_INNET_ALARM                    = 132,  //内部防区
  CID_ENTER_EXIT                     = 134,  //出入
  CID_DEVICE_OPEN                    = 137,  //设备防拆
  CID_ZONE_BUS_BREAK                 = 141,  //总线开路
  CID_ZONE_BUS_SHORT                 = 142,  //总线短路
  CID_AC_LOSS                        = 301,  //交流掉电
  CID_LOW_BATT_VOL                   = 302,  //蓄电池电压低
  CID_DEV_RESET                      = 305,  //主机复位
  CID_MBUS_MODEL_FAULT               = 333,  //扩展模块故障
  CID_PRINTER_FAIL                   = 336,  //打印机掉线
  CID_LINE_LOSS                      = 354,  //电话线通讯失败
  CID_BUS_LOSS                       = 382,  //扩展总线模块掉线
  CID_DETECTOR_OPEN                  = 383,  //防区感应器被拆
  CID_GUARD                          = 401,  //布防撤防
  CID_GUARD_AUTO                     = 403,  //自动布撤防
  CID_CANCEL_ARM                     = 406,  //消警
  CID_GUARD_IMME                     = 408,  //即时布撤防
  CID_KEY_ZONE_GUARD                 = 409,  //钥匙防区布撤防
  CID_GUARD_STAY                     = 441,  //留守布撤防
  CID_FORCED_ARM                     = 442,  //强制布防
  CID_AUTOCTRL_TRIG                  = 443,  //定时开/关触发器
  CID_AUTOGUARD_FAIL                 = 455,  //自动布防失败
  CID_AOPEN_TRIG_FAIL                = 460,  //定时开启触发器失败
  CID_ACLOSE_TRIG_FAIL               = 461,  //定时关闭触发器失败
  CID_AUTOUNGUARD_FAIL               = 462,  //自动撤防失败
  CID_BYPASS                         = 570,  //旁路事件
  CID_GROUP_BYPASS                   = 574,  //组旁路
  CID_MANUAL_TEST_RPT                = 601,  //手动测试报告
  CID_AUTO_TEST_RPT                  = 602,  //定时测试报告
  CID_ENTER_PROG                     = 627,  //进入编程
  CID_EXIT_PROG                      = 628,  //退出编程
  CID_SOFT_INSTAND                   = 810,  //软防区紧急报警
  CID_SOFT_FIRE                      = 811,  //软防区火警
  CID_SOFT_MOBS                      = 812,  //软防区匪警mobster
  CID_KEY_FAIL                       = 910,  //键盘掉线
  CID_TRIGGER_FAIL                   = 911,  //键盘总线上触发器掉线
  CID_GPK_FAIL                       = 912,  //键盘总线上GP/K掉线
  CID_MODULE_FAIL                    = 913,  //键盘总线上MN/K掉线
  CID_WIRELESS_DETECTOR_FAIL         = 914,  //无线探测器掉线
  CID_WIRELESS_DETECTOR_BATTERY_LOW  = 915,  //无线探测器欠压/电量恢复正常
  CID_WRIE_LESS_NET                  = 920,  //无线网络故障
  CID_WIFI_ABNORMAL                  = 922,  //WIFI通信异常/恢复正常
  CID_RF_ABNORMAL                    = 923,  //RF信号异常/恢复正常
  CID_DATE_TRAFFIC_OVERFLOW          = 924,  //流量超额
  CID_IPADDR_CONFLICT                = 930,  //IP冲突
  CID_ETHERNET_BROKEN                = 931,  //网线断
  CID_GROUP_OUT_RP                   = 932,  //组间通讯失败
  CID_GROUP_IN_RP                    = 933,  //通道通讯失败
  CID_MOTION_DECTECT                 = 940,  //移动侦测报警开始/结束
  CID_MASK_ALARM                     = 941,  //遮挡报警开始/结束
  CID_VS_MISMATCH                    = 943,  //输入/输出视频制式不匹配
  CID_VI_EXCEPTION                   = 944,  //视频输入异常/恢复正常
  CID_HD_FULL                        = 945,  //硬盘满/恢复正常
  CID_HD_ERROR                       = 946,  //硬盘错/恢复正常
  CID_PIC_SEND_FAILED                = 947,  //图片上传失败
  CID_ZONE_BUS_SEARCH                = 970,  //总线搜索
  CID_ZONE_BUS_REGIST                = 971,  //总线注册
  CID_GUARD_DELAY_OP                 = 972,  //自动布撤防延时操作
  CID_GUARD_SINGLE                   = 973,  //单防区布撤防
  CID_ZONE_ASSOCIATED_DETECTOR       = 975,  //防区添加/删除探测器
  CID_ZONE_CONSULTING                = 976,  //业务咨询
}NET_DVR_ALARMHOST_CID_MINOR_TYPE

See Also

NET_DVR_CID_ALARM


NET_DVR_ALARMHOST_DATA_UNION

报警数据联合体。

union{
  BYTE                             byLength[40];
  NET_DVR_ALARMHOST_POINT_VALUE    struPointValue;
}NET_DVR_ALARMHOST_DATA_UNION, *LPNET_DVR_ALARMHOST_DATA_UNION;

Members

byLength
联合体大小，40字节
struPointValue
监测点实时数据

See Also

NET_DVR_ALARMHOST_DATA_UPLOAD


NET_DVR_ALARMHOST_DATA_UPLOAD

报警数据上传信息结构体。

struct{
  DWORD                           dwSize;
  BYTE                            byDataType;
  BYTE                            byRes1[3];
  NET_DVR_ALARMHOST_DATA_UNION    struAlarmData;
  BYTE                            byRes2[32];
}NET_DVR_ALARMHOST_DATA_UPLOAD, *LPNET_DVR_ALARMHOST_DATA_UPLOAD;

Members

dwSize
结构体大小
byDataType
数据类型，1- 监测点实际数据上传
byRes1
保留，置为0
struAlarmData
报警数据
byRes2
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMHOST_DETECTOR_INFO

探测器信息结构体。

typedef struct tagNET_DVR_ALARMHOST_DETECTOR_INFO{
  DWORD    dwSize;
  BYTE     bydetectorSerialNo[16];
  DWORD    dwAlarmIn;
  WORD     wDetectorType;
  BYTE     byRes[126];
}NET_DVR_ALARMHOST_DETECTOR_INFO，*LPNET_DVR_ALARMHOST_DETECTOR_INFO;

Members

dwSize
结构体大小
bydetectorSerialNo
探测器序列号
dwAlarmIn
防区号
wDetectorType
防区探测器类型，取值详见枚举类型DETECTOR_TYPE
byRes
保留

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

NET_DVR_GetNextRemoteConfig_RegisterDetector


NET_DVR_ALARMHOST_DOWNLOAD_PARAM

数据下载参数结构体。

struct{
  DWORD           dwSize;
  BYTE            byDownType;
  BYTE            byDataType;
  BYTE            byDataNum;
  BYTE            byRes1;
  char            sFileName[260];
  DATADOWNLOAD    lpDataCallBack;
  void*           pUserData;
  BYTE            byRes2[128];
}NET_DVR_ALARMHOST_DOWNLOAD_PARAM,*LPNET_DVR_ALARMHOST_DOWNLOAD_PARAM;

Members

dwSize
结构体大小
byDownType
下载的数据保存方式：1- 根据文件名绝对地址保存数据，2- 通过回调函数获取数据
byDataType
数据类型：1- 音频数据
byDataNum
数据编号，如：上传语音，则该参数表示语音号：1- 进门欢迎提示音，2- 出门离开提示音，3- 有人提示音，4- ATM暂停使用，5- 门未关提示音，6- （保留），7- 超时提示音，8- 多人进入提示音，9- 人脸遮挡提示音，10- 晕倒提示音
byRes1
保留，置为0
sFileName
数据文件的全路径（包括文件名）
lpDataCallBack
下载数据回调函数
pUserData
用户数据，将在回调函数中传回
byRes2
保留，置为0

Callback Function

typedef void(CALLBACK *DATADOWNLOAD)(
  LONG      nDownloadHandle,
  DWORD     dwDataType,
  BYTE      *pBuffer,
  DWORD     dwBufSize,
  void      *pUserData
);

Callback Function Parameters

lRealHandle
[out] 下载句柄，NET_DVR_StartDownloadFile的返回值
dwDataType
[out] 数据类型
pBuffer
[out] 存放数据的缓冲区指针
dwBufSize
[out] 缓冲区大小
pUserData
[out] 用户数据

Remarks

报警主机能力集(AlarmHostAbility)的子节点<VoiceUpload>对应是否支持语音上传；子节点<VoiceDownload>对应是否支持语音下载。
报警主机能力集(AlarmHostAbility)的子节点<voiceNo>对应语音编号的范围，从1开始，语音编号减一就是语音的数组下标。
相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

See Also

NET_DVR_StartDownloadFile


NET_DVR_ALARMHOST_DUSTNOISE_SENSOR

扬尘噪声传感器参数结构体。

struct{
  LONG    iDust;
  LONG    iNoise;
  LONG    iPM25;
  BYTE    byRes[504];
}NET_DVR_ALARMHOST_DUSTNOISE_SENSOR,*LPNET_DVR_ALARMHOST_DUSTNOISE_SENSOR;

Members

iDust
扬尘，单位：微克每立方米（ug/m3）
iNoise
噪声，单位：分贝（dB）
iPM25
PM2.5，单位：微克每立方米（ug/m3）
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_ELECTRICITY_STATE

电量表状态信息结构体。

struct{
  int                     iDCVoltage;
  int                     iDCCurrent;
  NET_DVR_VOLTAGE         struPhaseVoltage;
  NET_DVR_LINE_VOLTAGE    struLineVoltage;
  NET_DVR_CURRENT         struCurrent[4];
  int                     iAverageCurrent;
  int                     iNeutralCurrent;
  NET_DVR_POWER           struActivePower[4];
  NET_DVR_POWER           struReactivePower[4];
  NET_DVR_POWER           struApparentPower[4];
  NET_DVR_POWER_FACTOR    struPowerFactor[4];
  NET_DVR_FREQUENCY       struFrequency;
  BYTE                    byRes[128];
}NET_DVR_ALARMHOST_ELECTRICITY_STATE,*LPNET_DVR_ALARMHOST_ELECTRICITY_STATE;

Members

iDCVoltage
直流电压，单位：V
iDCCurrent
直流电流，单位：A
struPhaseVoltage
相电压，单位：V
struLineVoltage
线电压，单位：V
struCurrent
电流，struCurrent[0]表示第1路, 以此类推
iAverageCurrent
平均电流，单位：A
iNeutralCurrent
中线电流，单位：A
struActivePower
有功功率，struActivePower[0]表示第1路有功功率，以此类推
struReactivePower
无功功率，struReactivePower[0]表示第1路无功功率，以此类推
struApprentPower
视在功率，struApprentPower[0]表示第1路视在功率，以此类推
struPowerFactor
功率因数，struPowerFactor[0]表示第1路功率因数，以此类推
struFrequency
频率
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_ENABLECFG

使能状态配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byAudioOutEnable[ALARMHOST_MAX_AUDIOOUT_NUM];
  BYTE     byElectroLockEnable[ALARMHOST_MAX_ELECTROLOCK_NUM];
  BYTE     byMobileGateEnable[ALARMHOST_MAX_MOBILEGATE_NUM];
  BYTE     bySirenEnable[ALARMHOST_MAX_SIREN_NUM];
  BYTE     bySerialPurpose;
  BYTE     byRes[63];
}NET_DVR_ALARMHOST_ENABLECFG, *LPNET_DVR_ALARMHOST_ENABLECFG;

Members

dwSize
结构体大小
byAudioOutEnable
语音输出使能，数组下标0对应语音输出口1，数组下标1对应语音输出口2，依次类推，数组的值：0- 禁用，1- 使能
byElectroLockEnable
电锁使能，数组下标0对应电锁1，数组下标1对应电锁2，依次类推，数组的值：0- 禁用，1-使能
byMobileGateEnable
移动门使能，数组下标0对应移动门1，数组下标1对应移动门2，依次类推，数组的值：0- 禁用，1-使能
bySirenEnable
警号使能，数组下标0对应警号1，数组下标1对应警号2，依次类推，数组的值：0- 禁用，1-使能
bySerialPurpose
串口用途：0- 用于级联报警主机，1- 用于PTZ控制
byRes
保留

Remarks

  • DS-19Axx、DS-19Sxx系列设备在下列情况下使能配置不能被修改：
    防区处于布防状态，或者防区所在子系统处于布防状态下，或者主机处于编程模式，或者主机处于步测模式。
  • 警号使能，表示防区联动警号配置后，防区有报警时可以触发警号输出，而不使能的情况下，警号不会输出。这个使能所起的作用其实跟防区配置里的联动功能是一样的。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER

环境采集仪参数结构体。

struct{
  LONG    iAmmoniaNitrogen;
  LONG    iCOD;
  LONG    iPH;
  LONG    iOxygen;
  LONG    iSulfurDioxide;
  LONG    iSoot;
  LONG    iFluoride;
  LONG    iPollutedWater;
  LONG    iTotalPhosphorus;
  LONG    iExhaust;
  LONG    iNitrogenOxides;
  LONG    iFlueGasTemperature;
  LONG    iFlueGasPressure;
  LONG    iDustThickness;
  LONG    iAirCleanLevel;
  LONG    iPm10Thickness;
  BYTE    byRes[460];
}NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER,*LPNET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER;

Members

iAmmoniaNitrogen
氨氮，单位：毫克每升（mg/L）
iCOD
COD，单位：毫克每升（mg/L）
iPH
PH
iOxygen
氧气，百分比
iSulfurDioxide
二氧化硫，单位：毫克每立方米（mg/m3）
iSoot
烟尘，单位：毫克每立方米（mg/m3）
iFluoride
氟化物，单位：毫克每立方米（mg/m3）
iPollutedWater
污水
iTotalPhosphorus
总磷，单位：毫克每升（mg/L）
iExhaust
废气
iNitrogenOxides
氮氧化物，单位：毫克每立方米（mg/m3）
iFlueGasTemperature
烟气温度，单位：摄氏度
iFlueGasPressure
烟气压力，单位：兆帕（MPa）
iNitrogenOxides
粉尘浓度，单位：毫克每立方米（mg/m3）
iFlueGasTemperature
空气洁净度等级
iPm10Thickness
PM10浓度，单位：毫克每立方米（mg/m3）
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_EXCEPTION_ALARM

故障报警上传结构体。

struct{
  DWORD    dwSize;
  DWORD    dwExceptionType;
  BYTE     byRes[36];
}NET_DVR_ALARMHOST_EXCEPTION_ALARM, *LPNET_DVR_ALARMHOST_EXCEPTION_ALARM;

Members

dwSize
结构体大小
dwExceptionType
故障类型：1-设备防拆报警，2-设备防拆后后恢复正常，3-主电源掉电报警，4-主电源掉电后恢复正常，5-内部通信故障报警，6-内部通信故障后恢复正常，7-电话线断线，8-电话线断线恢复，9-自检失败报警，10-自检失败后恢复正常，11-蓄电池欠压，12-蓄电池电压恢复正常，13-蓄电池故障，14-MBUS模块掉线，15-MBUS模块掉线恢复，16-键盘掉线，17-键盘掉线恢复，18-设备被移动，19-设备被移动复位，20-485外设线路断报警，21-外设线路断后恢复正常，22-硬盘满，23-硬盘未格式化，24-硬盘读写出错，25-UBS通信故障，26-USB通信故障恢复
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMHOST_EXCEPTION_PARAM

报警主机异常参数结构体。

struct{
  DWORD    dwUnionSize[20];
}NET_DVR_ALARMHOST_EXCEPTION_PARAM,*LPNET_DVR_ALARMHOST_EXCEPTION_PARAM;

Members

dwSize
联合体大小

See Also

NET_DVR_ALARMHOST_EXCEPTION_ALARM


NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE

外接设备报警限值信息结构体。

struct{
  DWORD                                        dwSize;
  BYTE                                         byDevType;
  BYTE                                         byRes1[3];
  NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION    struAlarmValue;
  BYTE                                         byRes2[32];
}NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE,*LPNET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE;

Members

dwSize
结构体大小
byDevType
外设类型：1- UPS，2- 温湿度传感器
byRes1
保留，置为0
struAlarmValue
报警限值信息
byRes2
保留，置为0

Remarks

  • 电压、电流、频率、温度、湿度，设备均乘以10后传输，实际值需要除以10，例如设备上传电压为200，实际为20V。
  • 功率因数、负载率，设备均乘以100后传输，实际值需要除以100，例如设备上传功率因数为7000，实际为70.00%。
  • 动环监控主机中DS-19D00-0402BN不支持该参数配置。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE

外接设备状态信息。

struct{
  DWORD                                  dwSize;
  BYTE                                   byDevType;
  BYTE                                   byRes1[3];
  NET_DVR_EXTERNAL_DEVICE_STATE_UNION    struDevState;
  BYTE                                   byRes2[32];
}NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE,*LPNET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE;

Members

dwSize
结构体大小
byDevType
外接设备类型：1- UPS，2- 开关电源，3- 气体检测系统，4- 温湿度传感器，5- 空调，6- 电量表，7- 变电器温显表状态，8- 水位传感器，9- 扬尘噪声传感器，10- 环境采集仪，11-风速传感器状态，12-通用扩展输出模块状态，13-浸水传感器状态，14-太阳能控制器状态，15-SF6报警主机状态，16-称重仪状态，17-气象采集系统状态，18-水质检测仪状态，19-燃气监测系统状态
byRes1
保留，置为0
struDevState
外接设备状态信息联合体
byRes2
保留，置为0

Remarks

  • 电压、电流、频率、温度、氧气含量、湿度、温度值，设备均乘以10后传输，实际值需要除以10，例如设备上传电压为200，实际为20V。
  • 功率因数、负载率，设备均乘以100后传输，实际值需要除以100，例如设备上传功率因数为7000，实际为70.00%。
  • 时间、功率、SF6气体含量、流量，设备上传的是实际值。
  • 水位、扬尘噪声、环境参数都有参数，扩大10倍上传，实际值需要除以10，例如设备上传的水位是100，实际为10。

    • See Also

    NET_DVR_GetDeviceStatus


NET_DVR_ALARMHOST_FAULT_CFG

故障处理配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwCheckFault;
  DWORD    dwOverallFaultJointLED;
  DWORD    dwOverallFaultJointSound;
  DWORD    dwSubSystemFaultJointLED[MAX_ALARMHOST_SUBSYSTEM];
  DWORD    dwSubSystemFaultJointSound[MAX_ALARMHOST_SUBSYSTEM];
  DWORD    dwFaultJointFaultLight;
  BYTE     byRes[60];
}NET_DVR_ALARMHOST_FAULT_CFG,*LPNET_DVR_ALARMHOST_FAULT_CFG;

Members

dwSize
结构体大小
dwCheckFault
是否检测故障，参数值按位表示不同的故障类型，0- 否，1- 是：
bit0- 交流电断电，bit1- 蓄电池欠压，bit2- 主机防拆开，bit3- 电话线掉线，bit4- 主键盘掉线，bit5- 网络故障，bit6- GPRS异常，bit7- MBUS异常，bit8- 硬盘异常，bit9- FPGA故障，bit10- 模拟量故障，bit11-防区扩展板异常，bit12-WIFI通信故障，bit13-RF信号干扰故障
dwOverallFaultJointLED
故障关联全局键盘指示灯输出，参数值按位表示不同的故障类型，0- 不关联，1- 关联：bit0- 交流电断电，bit1- 蓄电池欠压，bit2- 主机防拆开，bit3- 电话线掉线，bit4- 主键盘掉线，bit5- 网络故障，bit6- GPRS异常，bit7- MBUS异常，bit8- 硬盘异常，bit9- FPGA故障，bit10- 模拟量故障，bit11-防区扩展板异常，bit12-WIFI通信故障，bit13-RF信号干扰故障
dwOverallFaultJointSound
故障关联全局键盘声音输出，参数值按位表示不同的故障类型，0- 不关联，1- 关联：bit0- 交流电断电，bit1- 蓄电池欠压，bit2- 主机防拆开，bit3- 电话线掉线，bit4- 主键盘掉线，bit5- 网络故障，bit6- GPRS异常，bit7- MBUS异常，bit8- 硬盘异常，bit9- FPGA故障，bit10- 模拟量故障，bit11-防区扩展板异常，bit12-WIFI通信故障，bit13-RF信号干扰故障
dwSubSystemFaultJointLED
故障关联子系统键盘指示灯输出，dwSubSystemFaultJointLED[0]表示子系统1的关联信息，dwSubSystemFaultJointLED[1]表示子系统2，依次类推，数组的值按位表示不同的故障类型：bit0- 交流电断电，bit1- 蓄电池欠压，bit2- 主机防拆开，bit3- 电话线掉线，bit4- 主键盘掉线，bit5- 网络故障，bit6- GPRS异常，bit7- MBUS异常，bit8- 硬盘异常，bit9- FPGA故障，bit10- 模拟量故障，bit11-防区扩展板异常，bit12-WIFI通信故障，bit13-RF信号干扰故障
dwSubSystemFaultJointSound
故障关联子系统键盘声音输出（声音在子系统键盘上输出），dwSubSystemFaultJointLED[0]表示子系统1的关联信息，dwSubSystemFaultJointSound [1]表示子系统2，依次类推，数组的值按位表示不同的故障类型：bit0- 交流电断电，bit1- 蓄电池欠压，bit2- 主机防拆开，bit3- 电话线掉线，bit4- 主键盘掉线，bit5- 网络故障，bit6- GPRS异常，bit7- MBUS异常，bit8- 硬盘异常，bit9- FPGA故障，bit10- 模拟量故障，bit11-防区扩展板异常，bit12-WIFI通信故障，bit13-RF信号干扰故障
dwFaultJointFaultLight
故障关联故障灯输出，参数值按位表示不同的故障类型，0- 不关联，1- 关联：bit0- 交流电断电，bit1- 蓄电池欠压，bit2- 主机防拆开，bit3- 电话线掉线，bit4- 主键盘掉线，bit5- 网络故障，bit6- GPRS异常，bit7- MBUS异常，bit8- 硬盘异常，bit9- FPGA故障，bit10- 模拟量故障，bit11-防区扩展板异常，bit12-WIFI通信故障，bit13-RF信号干扰故障
byRes
保留，置为0

Remarks

  • 设备具体支持的故障类型可以从能力集（NET_DVR_ALARMHOST_ABILITY）获取(dwFaultType）。
  • 动环2.0中，dwCheckFault、dwOverallFaultJointLED、dwOverallFaultJointSound、dwSubSystemFaultJointLED、dwSubSystemFaultJointSound都无效，dwFaultJointFaultLight有效。
  • 全局故障发生时在全局键盘上会有报警提示音，调用NET_DVR_RemoteControl（控制命令：NET_DVR_CLOSE_ALARMHOST_OVERALL_FAULT_ALARM）可以停止键盘上的报警提示。如果调用接口NET_DVR_SetDVRConfig配置该故障提示参数，将里面的检测故障配置(dwCheckFault)或者全局故障配置(dwOverallFaultJointSound)改变，2s后也会停止报警提示音。
  • DS19-AXX和DS19-SXX系列，主机处于编程模式下不能设置。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO

气体检测系统报警信息结构体。

struct{
  BYTE    byAlarmType;
  BYTE    byChanNo;
  BYTE    bySlotNo;
  BYTE    byRes1;
  int     iAlarmValue;
  BYTE    byRes2[64];
}NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO,*LPNET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO;

Members

byAlarmType
报警类型：1- SF6气体含量异常，2- 氧气含量异常，3- 温度值异常，4- 湿度值异常，5- 流量
byChanNo
RS485通道号，从1开始
bySlotNo
RS485虚拟槽位号
byRes1
保留，置为0
iAlarmValue
报警值
byRes2
保留，置为0

Remarks

  • 报警类型为“SF6气体含量异常”时，iAlarmValue为气体含量值，设备上传实际值，单位：ppm。
  • 报警类型为“氧气含量异常”或者“湿度异常”时，iAlarmValue为含量百分比，单位：%。设备扩大10倍上传，实际值需要除以10，例如设备上传320，实际为32.0%。
  • 设备类型为“温度值异常”，iAlarmValue为温度值，单位摄氏度，设备端扩大10倍上传，实际值需要除以10，例如设备上传200，实际为20.0摄氏度。
  • 报警类型为“流量异常”时，iAlarmValue为流量值，设备上传实际值，单位ml/min。

    • See Also

    NET_DVR_485_DEVICE_ALARM_UNION


NET_DVR_ALARMHOST_GAS_DETECTOR_STATE

气体探测器状态信息结构体。

struct{
  int     iSF6;
  int     iFlow;
  int     iTemperature;
  int     iO2;
  int     iHumidity;
  BYTE    byRes[492];
}NET_DVR_ALARMHOST_GAS_DETECTOR_STATE,*LPNET_DVR_ALARMHOST_GAS_DETECTOR_STATE;

Members

iSF6
SF6(六氟化硫)，单位：ppm(parts permillion)，表示百万分之（几），或称百万分率。如1 ppm即一百万千克的溶液中含有1千克溶质。
iFlow
流量，ml/min(毫升/分钟)
iTemperature
温度，单位：摄氏度（°C）
iO2
氧气，单位：%
iHumidity
湿度，单位：%
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_LOG_RET

报警主机日志查找结构体。

struct{
  NET_DVR_TIME    struLogTime;
  BYTE            sUserName[NAME_LEN];
  NET_DVR_IPADDR  struIPAddr;
  WORD            wMajorType;
  WORD            wMinorType;
  WORD            wParam;
  BYTE            byRes[10];
  DWORD           dwInfoLen;
  char            sInfo[LOG_INFO_LEN];
}NET_DVR_ALARMHOST_LOG_RET, *LPNET_DVR_ALARMHOST_LOG_RET;

Members

struLogTime
日志时间
sUserName
操作用户
struIPAddr
操作IP地址
wMajorType
主类型，定义如下：
宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_ALARM | 1 | 报警
ALARMHOST_MAJOR_EXCEPTION | 2 | 异常
ALARMHOST_MAJOR_OPERATE | 3 | 操作
ALARMHOST_MAJOR_EVENT | 4 | 事件
wMinorType
次类型，根据不同的主类型的次类型定义说明如下：
主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_ALARM | 1 | 报警
次类型的宏定义 | 宏定义值 | 含义
MINOR_SHORT_CIRCUIT | 0x01 | 短路报警
MINOR_BROKEN_CIRCUIT | 0x02 | 断路报警
MINOR_ALARM_RESET | 0x03 | 报警复位
MINOR_ALARM_NORMAL | 0x04 | 报警恢复正常
MINOR_PASSWORD_ERROR | 0x05 | 密码错误（连续次输入密码错误）
MINOR_ID_CARD_ILLEGALLY | 0x06 | 非法感应卡ID
MINOR_KEYPAD_REMOVE | 0x07 | 键盘防拆
MINOR_KEYPAD_REMOVE_RESTORE | 0x08 | 键盘防拆复位
MINOR_DEV_REMOVE | 0x09 | 设备防拆
MINOR_DEV_REMOVE_RESTORE | 0x0a | 设备防拆复位
MINOR_BELOW_ALARM_LIMIT1 | 0x0b | 模拟量低于报警限1
MINOR_BELOW_ALARM_LIMIT2 | 0x0c | 模拟量低于报警限2
MINOR_BELOW_ALARM_LIMIT3 | 0x0d | 模拟量低于报警限3
MINOR_BELOW_ALARM_LIMIT4 | 0x0e | 模拟量低于报警限4
MINOR_ABOVE_ALARM_LIMIT1 | 0x0f | 模拟量高于报警限1
MINOR_ABOVE_ALARM_LIMIT2 | 0x10 | 模拟量高于报警限2
MINOR_ABOVE_ALARM_LIMIT3 | 0x11 | 模拟量高于报警限3
MINOR_ABOVE_ALARM_LIMIT4 | 0x12 | 模拟量高于报警限4
MINOR_URGENCYBTN_ON | 0x13 | 紧急按钮按下
MINOR_URGENCYBTN_OFF | 0x14 | 紧急按钮复位
MINOR_VIRTUAL_DEFENCE_BANDIT | 0x15 | 软防区匪警
MINOR_VIRTUAL_DEFENCE_FIRE | 0x16 | 软防区火警
MINOR_VIRTUAL_DEFENCE_URGENT | 0x17 | 软防区紧急
MINOR_ALARMHOST_MOTDET_START | 0x18 | 移动侦测报警开始
MINOR_ALARMHOST_MOTDET_STOP | 0x19 | 移动侦测报警结束
MINOR_ALARMHOST_HIDE_ALARM_START | 0x1a | 遮挡报警开始
MINOR_ALARMHOST_HIDE_ALARM_STOP | 0x1b | 遮挡报警结束
MINOR_ALARMHOST_UPS_ALARM | 0x1c | UPS报警
MINOR_ALARMHOST_ELECTRICITY_METER_ALARM | 0x1d | 电量表报警
MINOR_ALARMHOST_SWITCH_POWER_ALARM | 0x1e | 开关电源报警
MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM | 0x1f | 气体检测系统报警
MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM | 0x20 | 变电器温显表报警
MINOR_ALARMHOST_TEMP_HUMI_ALARM | 0x21 | 温湿度传感器报警
MINOR_ALARMHOST_UPS_ALARM_RESTORE | 0x22 | UPS报警恢复
MINOR_ALARMHOST_ELECTRICITY_METER_ALARM_RESTORE | 0x23 | 电量表报警恢复
MINOR_ALARMHOST_SWITCH_POWER_ALARM_RESTORE | 0x24 | 开关电源报警恢复
MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM_RESTORE | 0x25 | 气体检测系统报警恢复
MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM_RESTORE | 0x26 | 变电器温显表报警恢复
MINOR_ALARMHOST_TEMP_HUMI_ALARM_RESTORE | 0x27 | 温湿度传感器报警恢复
MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM | 0x28 | 水位传感器报警
MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM_RESTORE | 0x29 | 水位传感器报警恢复
MINOR_ALARMHOST_DUST_NOISE_ALARM | 0x2a | 扬尘噪声传感器报警
MINOR_ALARMHOST_DUST_NOISE_ALARM_RESTORE | 0x2b | 扬尘噪声传感器报警恢复
MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM | 0x2c | 环境采集仪报警
MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM_RESTORE | 0x2d | 环境采集仪报警恢复
MINOR_ALARMHOST_TRIGGER_TAMPER | 0x2e | 探测器防拆
MINOR_ALARMHOST_TRIGGER_TAMPER_RESTORE | 0x2f | 探测器防拆复位
MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM | 0x30 | 紧急呼叫求助报警
MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM_RESTORE | 0x31 | 紧急呼叫求助报警恢复

主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_EXCEPTION | 2 | 异常
次类型的宏定义 | 宏定义值 | 含义
MINOR_POWER_ON | 0x01 | 上电
MINOR_POWER_OFF | 0x02 | 掉电
MINOR_WDT_RESET | 0x03 | WDT 复位
MINOR_LOW_BATTERY_VOLTAGE | 0x04 | 蓄电池电压低
MINOR_AC_LOSS | 0x05 | 交流电断电
MINOR_AC_RESTORE | 0x06 | 交流电恢复
MINOR_RTC_EXCEPTION | 0x07 | RTC实时时钟异常
MINOR_NETWORK_CONNECT_FAILURE | 0x08 | 网络连接断开
MINOR_NETWORK_CONNECT_RESTORE | 0x09 | 网络连接恢复
MINOR_TEL_LINE_CONNECT_FAILURE | 0x0a | 电话线连接断开
MINOR_TEL_LINE_CONNECT_RESTORE | 0x0b | 电话线连接恢复
MINOR_EXPANDER_BUS_LOSS | 0x0c | 扩展总线模块掉线
MINOR_EXPANDER_BUS_RESTORE | 0x0d | 扩展总线模块掉线恢复
MINOR_KEYPAD_BUS_LOSS | 0x0e | 键盘总线模块掉线
MINOR_KEYPAD_BUS_RESTORE | 0x0f | 键盘总线模块掉线恢复
MINOR_SENSOR_FAILURE | 0x10 | 模拟量传感器故障
MINOR_SENSOR_RESTORE | 0x11 | 模拟量传感器恢复
MINOR_RS485_CONNECT_FAILURE | 0x12 | RS485通道连接断开
MINOR_RS485_CONNECT_RESTORE | 0x13 | RS485通道连接断恢复
MINOR_BATTERT_VOLTAGE_RESTORE | 0x14 | 蓄电池电压恢复正常
MINOR_WIRED_NETWORK_ABNORMAL | 0x15 | 有线网络异常
MINOR_WIRED_NETWORK_RESTORE | 0x16 | 有线网络恢复正常
MINOR_GPRS_ABNORMAL | 0x17 | GPRS通信异常
MINOR_GPRS_RESTORE | 0x18 | GPRS恢复正常
MINOR_3G_ABNORMAL | 0x19 | 3G通信异常
MINOR_3G_RESTORE | 0x1a | 3G恢复正常
MINOR_SIM_CARD_ABNORMAL | 0x1b | SIM卡异常
MINOR_SIM_CARD_RESTORE | 0x1c | SIM卡恢复正常
MINOR_ALARMHOST_VI_LOST, | 0x1d | 视频信号丢失
MINOR_ALARMHOST_ILLEGAL_ACCESS | 0x1e | 非法访问
MINOR_ALARMHOST_HD_FULL | 0x1f | 硬盘满
MINOR_ALARMHOST_HD_ERROR | 0x20 | 硬盘错误
MINOR_ALARMHOST_DCD_LOST | 0x21 | MODEM 掉线(保留不使用)
MINOR_ALARMHOST_IP_CONFLICT | 0x22 | IP地址冲突
MINOR_ALARMHOST_NET_BROKEN | 0x23 | 网络断开
MINOR_ALARMHOST_REC_ERROR | 0x24 | 录像出错
MINOR_ALARMHOST_VI_EXCEPTION | 0x25 | 视频输入异常(只针对模拟通道)
MINOR_ALARMHOST_FORMAT_HDD_ERROR | 0x26 | 远程格式化硬盘失败
MINOR_ALARMHOST_USB_ERROR | 0x27 | USB通信故障
MINOR_ALARMHOST_USB_RESTORE | 0x28 | USB通信故障恢复
MINOR_ALARMHOST_PRINT_ERROR | 0x29 | 打印机故障
MINOR_ALARMHOST_PRINT_RESTORE | 0x2a | 打印机故障恢复
MINOR_SUBSYSTEM_COMMUNICATION_ERROR | 0x2b | 子板通讯错误
MINOR_ALARMHOST_IPC_NO_LINK | 0x2c | IPC连接断开
MINOR_ALARMHOST_IPC_IP_CONFLICT | 0x2d | IPC IP地址冲突
MINOR_ALARMHOST_VI_MISMATCH | 0x2e | 视频制式不匹配
MINOR_ALARMHOST_MCU_RESTART | 0x2f | MCU重启
MINOR_ALARMHOST_GPRS_MODULE_FAULT | 0x30 | GPRS模块故障
MINOR_ALARMHOST_TELEPHONE_MODULE_FAULT | 0x31 | 电话模块故障
MINOR_ALARMHOST_WIFI_ABNORMAL | 0x32 | WIFI通信异常
MINOR_ALARMHOST_WIFI_RESTORE | 0x33 | WIFI恢复正常
MINOR_ALARMHOST_RF_ABNORMAL | 0x34 | RF信号异常
MINOR_ALARMHOST_RF_RESTORE | 0x35 | RF信号恢复正常
MINOR_ALARMHOST_DETECTOR_ONLINE | 0x36 | 探测器在线
MINOR_ALARMHOST_DETECTOR_OFFLINE | 0x37 | 探测器离线
MINOR_ALARMHOST_DETECTOR_BATTERY_NORMAL | 0x38 | 探测器电量正常
MINOR_ALARMHOST_DETECTOR_BATTERY_LOW | 0x39 | 探测器电量欠压
MINOR_ALARMHOST_DATA_TRAFFIC_OVERFLOW | 0x3a | 流量超额
MINOR_ZONE_MODULE_LOSS | 0x3b | 防区模块掉线
MINOR_ZONE_MODULE_RESTORE | 0x3c | 防区模块掉线恢复
MINOR_ALARMHOST_WIRELESS_OUTPUT_LOSS | 0x3d | 无线输出模块离线
MINOR_ALARMHOST_WIRELESS_OUTPUT_RESTORE | 0x3e | 无线输出模块恢复在线
MINOR_ALARMHOST_WIRELESS_REPEATER_LOSS | 0x3f | 无线中继器离线
MINOR_ALARMHOST_WIRELESS_ REPEATER _RESTORE | 0x40 | 无线中继器恢复在线
MINOR_TRIGGER_MODULE_LOSS | 0x41 | 触发器模块掉线
MINOR_TRIGGER_MODULE_RESTORE | 0x42 | 触发器模块掉线恢复
MINOR_WIRELESS_SIREN_LOSS | 0x43 | 无线警号离线
MINOR_WIRELESS_SIREN_RESTORE | 0x44 | 无线警号恢复在线

主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_OPERATE | 3 | 操作
次类型的宏定义 | 宏定义值 | 含义
MINOR_GUARD | 0x01 | 普通布防
MINOR_UNGUARD | 0x02 | 普通撤防
MINOR_BYPASS | 0x03 | 旁路
MINOR_DURESS_ACCESS | 0x04 | 挟持
MINOR_ALARMHOST_LOCAL_REBOOT | 0x05 | 本地重启
MINOR_ALARMHOST_REMOTE_REBOOT | 0x06 | 远程重启
MINOR_ALARMHOST_LOCAL_UPGRADE | 0x07 | 本地升级
MINOR_ALARMHOST_REMOTE_UPGRADE | 0x08 | 远程升级
MINOR_RECOVERY_DEFAULT_PARAM | 0x09 | 恢复默认参数
MINOR_ALARM_OUTPUT | 0x0a | 控制触发器
MINOR_ACCESS_OPEN | 0x0b | 控制门禁开
MINOR_ACCESS_CLOSE | 0x0c | 控制门禁关
MINOR_SIREN_OPEN | 0x0d | 控制警号开
MINOR_SIREN_CLOSE | 0x0e | 控制警号关
MINOR_MOD_ZONE_CONFIG | 0x0f | 修改防区设置
MINOR_MOD_ALARMOUT_CONIFG | 0x10 | 控制触发器配置
MINOR_MOD_ANALOG_CONFIG | 0x11 | 修改模拟量配置
MINOR_RS485_CONFIG | 0x12 | 修改RS485通道配置
MINOR_PHONE_CONFIG | 0x13 | 修改拨号配置
MINOR_ADD_ADMIN | 0x14 | 增加管理员
MINOR_MOD_ADMIN_PW | 0x15 | 修改管理员密码
MINOR_DEL_ADMIN | 0x16 | 删除管理员
MINOR_ADD_NETUSER | 0x17 | 增加后端操作员
MINOR_MOD_NETUSER_PW | 0x18 | 修改后端操作员密码
MINOR_DEL_NETUSER | 0x19 | 删除后端操作员
MINOR_ADD_OPERATORUSER | 0x1a | 增加前端操作员
MINOR_MOD_OPERATORUSER_PW | 0x1b | 修改前端操作员密码
MINOR_DEL_OPERATORUSER | 0x1c | 删除前端操作员
MINOR_ADD_KEYPADUSER | 0x1d | 增加键盘/读卡器用户
MINOR_DEL_KEYPADUSER | 0x1e | 删除键盘/读卡器用户
MINOR_REMOTEUSER_LOGIN | 0x1f | 远程用户登陆
MINOR_REMOTEUSER_LOGOUT | 0x20 | 远程用户注销
MINOR_REMOTE_GUARD | 0x21 | 远程布防
MINOR_REMOTE_UNGUARD | 0x22 | 远程撤防
MINOR_MOD_HOST_CONFIG | 0x23 | 修改主机配置
MINOR_RESTORE_BYPASS | 0x24 | 旁路恢复
MINOR_ALARMOUT_OPEN | 0x25 | 触发器开启
MINOR_ALARMOUT_CLOSE | 0x26 | 触发器关闭
MINOR_MOD_SUBSYSTEM_PARAM | 0x27 | 修改子系统参数配置
MINOR_GROUP_BYPASS | 0x28 | 组旁路
MINOR_RESTORE_GROUP_BYPASS | 0x29 | 组旁路恢复
MINOR_MOD_GRPS_PARAM | 0x2a | 修改GPRS参数
MINOR_MOD_NET_REPORT_PARAM | 0x2b | 修改网络上报参数配置
MINOR_MOD_REPORT_MOD | 0x2c | 修改上传方式配置
MINOR_MOD_GATEWAY_PARAM | 0x2d | 修改门禁参数配置
MINOR_ALARMHOST_REMOTE_START_REC | 0x2e | 远程开始录像
MINOR_ALARMHOST_REMOTE_STOP_REC | 0x2f | 远程停止录像
MINOR_ALARMHOST_START_TRANS_CHAN | 0x30 | 开始透明传输
MINOR_ALARMHOST_STOP_TRANS_CHAN | 0x31 | 停止透明传输
MINOR_ALARMHOST_START_VT | 0x32 | 开始语音对讲
MINOR_ALARMHOST_STOP_VTM | 0x33 | 停止语音对讲
MINOR_ALARMHOST_REMOTE_PLAYBYFILE | 0x34 | 远程按文件回放
MINOR_ALARMHOST_REMOTE_PLAYBYTIME | 0x35 | 远程按时间回放
MINOR_ALARMHOST_REMOTE_PTZCTRL | 0x36 | 远程云台控制
MINOR_ALARMHOST_REMOTE_FORMAT_HDD | 0x37 | 远程格式化硬盘
MINOR_ALARMHOST_REMOTE_LOCKFILE | 0x38 | 远程锁定文件
MINOR_ALARMHOST_REMOTE_UNLOCKFILE | 0x39 | 远程解锁文件
MINOR_ALARMHOST_REMOTE_CFGFILE_OUTPUT | 0x3a | 远程导出配置文件
MINOR_ALARMHOST_REMOTE_CFGFILE_INTPUT | 0x3b | 远程导入配置文件
MINOR_ALARMHOST_REMOTE_RECFILE_OUTPUT | 0x3c | 远程导出录象文件
MINOR_ALARMHOST_STAY_ARM | 0x3d | 留守布防
MINOR_ALARMHOST_QUICK_ARM | 0x3e | 即时布防
MINOR_ALARMHOST_AUTOMATIC_ARM | 0x3f | 自动布防
MINOR_ALARMHOST_AUTOMATIC_DISARM | 0x40 | 自动撤防
MINOR_ALARMHOST_KEYSWITCH_ARM | 0x41 | 钥匙布撤防防区布防
MINOR_ALARMHOST_KEYSWITCH_DISARM | 0x42 | 钥匙布撤防防区撤防
MINOR_ALARMHOST_CLEAR_ALARM | 0x43 | 消警
MINOR_ALARMHOST_MOD_FAULT_CFG | 0x44 | 修改系统故障配置
MINOR_ALARMHOST_MOD_EVENT_TRIGGER_ALARMOUT_CFG | 0x45 | 修改事件触发触发器配置
MINOR_ALARMHOST_SEARCH_EXTERNAL_MODULE | 0x46 | 搜索外接模块
MINOR_ALARMHOST_REGISTER_EXTERNAL_MODULE | 0x47 | 重新注册外接模块
MINOR_ALARMHOST_CLOSE_KEYBOARD_ALARM | 0x48 | 关闭键盘报警提示音
MINOR_ALARMHOST_MOD_3G_PARAM | 0x49 | 修改3G参数
MINOR_ALARMHOST_MOD_PRINT_PARAM | 0x4a | 修改打印机参数
MINOR_SD_CARD_FORMAT | 0x4b | SD卡格式化
MINOR_SUBSYSTEM_UPGRADE | 0x4c | 子板固件升级
MINOR_ALARMHOST_PLAN_ARM_CFG | 0x4d | 计划布撤防参数配置
MINOR_ALARMHOST_PHONE_ARM | 0x4e | 手机布防
MINOR_ALARMHOST_PHONE_STAY_ARM | 0x4f | 手机留守布防
MINOR_ALARMHOST_PHONE_QUICK_ARM | 0x50 | 手机即时布防
MINOR_ALARMHOST_PHONE_DISARM | 0x51 | 手机撤防
MINOR_ALARMHOST_PHONE_CLEAR_ALARM | 0x52 | 手机消警
MINOR_ALARMHOST_ALLOWLIST_CFG | 0x53 | 授权名单配置
MINOR_ALARMHOST_TIME_TRIGGER_CFG | 0x54 | 定时开关触发器配置
MINOR_ALARMHOST_CAPTRUE_CFG | 0x55 | 抓图参数配置
MINOR_ALARMHOST_TAMPER_CFG | 0x56 | 防区防拆参数配置
MINOR_ALARMHOST_REMOTE_OPEN_ELECTRIC_LOCK | 0x57 | 远程打开电锁
MINOR_ALARMHOST_REMOTE_CLOSE_ELECTRIC_LOCK | 0x58 | 远程关闭电锁
MINOR_ALARMHOST_LOCAL_OPEN_ELECTRIC_LOCK | 0x59 | 本地打开电锁
MINOR_ALARMHOST_LOCAL_CLOSE_ELECTRIC_LOCK | 0x5a | 本地关闭电锁
MINOR_ALARMHOST_OPEN_ALARM_LAMP | 0x5b | 打开警灯(远程)
MINOR_ALARMHOST_CLOSE_ALARM_LAMP | 0x5c | 关闭警灯(远程)
MINOR_ALARMHOST_LOCAL_SET_DEVICE_ACTIVE | 0xf0 | 本地激活设备
MINOR_ALARMHOST_REMOTE_SET_DEVICE_ACTIVE | 0xf1 | 远程激活设备
MINOR_ALARMHOST_LOCAL_PARA_FACTORY_DEFAULT | 0xf2 | 本地回复出厂设置
MINOR_ALARMHOST_REMOTE_PARA_FACTORY_DEFAULT | 0xf3 | 远程恢复出厂设置

主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_EVENT | 4 | 事件
次类型的宏定义 | 宏定义值 | 含义
MINOR_SCHOOLTIME_IRGI_B | 0x01 | B码校时
MINOR_SCHOOLTIME_SDK | 0x02 | SDK校时
MINOR_SCHOOLTIME_SELFTEST | 0x03 | 定时自检校时
MINOR_SUBSYSTEM_ABNORMALINSERT | 0x04 | 子板插入
MINOR_SUBSYSTEM_ABNORMALPULLOUT | 0x05 | 子板拔出
MINOR_AUTO_ARM | 0x06 | 自动布防
MINOR_AUTO_DISARM | 0x07 | 自动撤防
MINOR_TIME_TIGGER_ON | 0x08 | 定时开启触发器
MINOR_TIME_TIGGER_OFF | 0x09 | 定时关闭触发器
MINOR_AUTO_ARM_FAILD | 0x0a | 自动布防失败
MINOR_AUTO_DISARM_FAILD | 0x0b | 自动撤防失败
MINOR_TIME_TIGGER_ON_FAILD | 0x0c | 定时开启触发器失败
MINOR_TIME_TIGGER_OFF_FAILD | 0x0d | 定时关闭触发器失败
MINOR_MANDATORY_ALARM | 0x0e | 强制布防
wParam
操作参数
byRes
保留
dwInfoLen
描述信息长度
sInfo
描述信息

See Also

NET_DVR_FindNextAlarmHostLog


NET_DVR_ALARMHOST_MAIN_STATUS

报警主机主要状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE     byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM];
  BYTE     byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byRes[56];
}NET_DVR_ALARMHOST_MAIN_STATUS, *LPNET_DVR_ALARMHOST_MAIN_STATUS;

Members

dwSize
结构体大小
bySetupAlarmStatus
防区布防状态(最大支持512个防区查询)。数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0- 对应防区处于撤防状态，1- 对应防区处于布防状态。
byAlarmInStatus
防区报警状态(最大支持512个防区查询)。数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0- 对应防区当前无报警，1- 对应防区当前有报警。
byAlarmOutStatus
触发器状态(最大支持512个触发器查询)。数组下标0对应触发器1，数组下标1对应触发器2，依次类推，数组的值：0- 对应触发器无报警，1- 对应触发器有报警
byBypassStatus
旁路状态，数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0- 表示防区没有旁路，1- 表示防区旁路
bySubSystemGuardStatus
子系统布防状态，数组下标0对应子系统1，数组下标1对应子系统2，依次类推，数组的值：0 -对应子系统处于撤防状态，1- 对应子系统处于布防状态
byAlarmInFaultStatus
防区故障状态，数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0-对应防区处于正常状态，1-对应防区处于故障状态
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_ALARMHOST_MAIN_STATUS_V40

报警主机主要状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE     byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM];
  BYTE     byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmInMemoryStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byAlarmInTamperStatus[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byEnableSubSystem[MAX_ALARMHOST_SUBSYSTEM];
  BYTE     bySubSystemGuardType[MAX_ALARMHOST_SUBSYSTEM];
  BYTE     byRes[448];
}NET_DVR_ALARMHOST_MAIN_STATUS_V40, *LPNET_DVR_ALARMHOST_MAIN_STATUS_V40;

Members

dwSize
结构体大小
bySetupAlarmStatus
防区布防状态(最大支持512个防区查询)。数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0- 对应防区处于撤防状态，1- 对应防区处于布防状态。
byAlarmInStatus
防区报警状态(最大支持512个防区查询)。数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0- 对应防区当前无报警，1- 对应防区当前有报警。
byAlarmOutStatus
触发器状态(最大支持512个触发器查询)。数组下标0对应触发器1，数组下标1对应触发器2，依次类推，数组的值：0- 对应触发器无报警，1- 对应触发器有报警
byBypassStatus
旁路状态，数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0- 表示防区没有旁路，1- 表示防区旁路
bySubSystemGuardStatus
子系统布防状态（byEnableSubSystem为启用状态下有效），数组下标0对应子系统1，数组下标1对应子系统2，依次类推，数组的值：0 -对应子系统处于撤防状态，1- 对应子系统处于布防状态
byAlarmInFaultStatus
防区故障状态，数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0-对应防区处于正常状态，1-对应防区处于故障状态
byAlarmInMemoryStatus
防区报警记忆状态，数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0-对应防区当前无报警，1-对应防区当前有报警
byAlarmInTamperStatus
防区防拆状态，数组下标0对应防区1，数组下标1对应防区2，依次类推，数组的值：0-对应防区当前无报警，1-对应防区当前有报警
byEnableSubSystem
子系统启用状态，数组下标0对应子系统1，数组下标1对应子系统2，依次类推，数组的值：0- 无意义，1- 对应子系统未启用，2- 对应子系统启用
byRes
子系统布防类型（dwSubSystemGuardStatus状态为布防时有效），数组下标0对应子系统1，数组下标1对应子系统2，依次类推，数组的值：0- 无效，1- 外出布防，2- 即时布防，3- 留守布防
byRes
保留

Remarks

  • byAlarmInStatus表示防区的实时报警状态，表示在获取的时候防区是否处于报警状态。
  • byAlarmInMemoryStatus表示防区报警记忆状态，防区发生报警以后，该状态值只有在用户对防区进行消警以后，该参数才会被置为非报警状态。在用户消警之前，不管报警输入口的实时状态是否有变化，该参数一直都是报警状态。
  • 主要状态是关于防区、触发器、子系统等设备主要功能模块的状态，而在“查询其他状态”中的其他状态表示警号等一些辅助功能模块的状态。
  • 设备是否支持查询相关状态或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机XML能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<SearchMainStatus>。

See Also

NET_DVR_GetDVRConfig


NET_DVR_ALARMHOST_MODULE_CFG

模块信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byModuleType;
  BYTE     byZoneType;
  BYTE     byTriggerType;
  BYTE     byRes1;
  char     sModelInfo[MODULE_INFO_LEN];
  char     sDeviceVersionInfo[VERSION_INFO_LEN];
  BYTE     byRes[188];
}NET_DVR_ALARMHOST_MODULE_CFG,*LPNET_DVR_ALARMHOST_MODULE_CFG;

Members

dwSize
结构体大小
byModuleType
模块类型：1- 防区，2- 触发器，3- 防区触发器
byZoneType
防区类型：1-本地防区，2-单防区，3-双防区，4-8防区，5-8路模拟量防区，6-单防区触发器，0xff表示该参数无效
byTriggerType
触发器类型：1-本地触发器，2-4路触发器，3-8路触发器，4-单防区触发器，0xff表示该参数无效
byRes1
保留
sModelInfo
模块信息
sDeviceVersionInfo
版本信息
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_ALARMHOST_NETCFG

报警主机中心网络参数结构体。

struct{
  DWORD                         dwSize;
  NET_DVR_ALARMHOST_NETPARAM    struNetCenter[MAX_CENTERNUM];
  BYTE                          byRes1[32];
}NET_DVR_ALARMHOST_NETCFG, *LPNET_DVR_ALARMHOST_NETCFG;

Members

dwSize
结构体大小
struNetCenter
报警中心参数，报警主机最多4个报警中心，门禁主机只有1个报警中心
byRes1
保留

Remarks

设备是否支持报警中心网络参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<netModuleNo>和<NetworkConfig>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_NETCFG_V50

报警主机中心网络参数结构体。

struct{
  DWORD                             dwSize;
  NET_DVR_ALARMHOST_NETPARAM_V50    struNetCenter[MAX_CENTERNUM];
  BYTE                              byRes1[128];
}NET_DVR_ALARMHOST_NETCFG_V50, *LPNET_DVR_ALARMHOST_NETCFG_V50;

Members

dwSize
结构体大小
struNetCenter
报警中心参数，报警主机最多4个报警中心，门禁主机只有1个报警中心
byRes1
保留

Remarks

设备是否支持报警中心网络参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<netModuleNo>和<NetworkConfig>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_NETPARAM

上传中心网络参数配置结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byAddressType;
  BYTE              byRes1;
  BYTE              byDomainName[MAX_DOMAIN_NAME];
  BYTE              byReportProtocol;
  BYTE              byDevID[ACCOUNTNUM_LEN_32];
  BYTE              byRes2[7];
}NET_DVR_ALARMHOST_NETPARAM, *LPNET_DVR_ALARMHOST_NETPARAM;

Members

dwSize
结构体大小
struIP
上传中心的IP地址，byAddressType为0或者1时有效
wPort
上传中心的端口号
byAddressType
地址类型：0- 无意义，1- ipv4/ipv6地址，2- 域名
byRes1
保留
byDomainName
域名，byAddressType为2时有效
byReportProtocol
报告协议: 1- private，2- NAL2300，3- ehome(门禁主机只支持ehome)
byDevID
设备ID，对于报警主机，协议为NAL2300时有效，有效长度为9；对于门禁主机，有效长度为32
有效字符：0~9、a~f、A~F
byRes2
保留

See Also

NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG NET_DVR_ALARMHOST_NETCFG


NET_DVR_ALARMHOST_NETPARAM_V50

上传中心网络参数配置结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byAddressType;
  BYTE              byEnable;
  BYTE              byDomainName[MAX_DOMAIN_NAME];
  BYTE              byReportProtocol;
  BYTE              byDevID[ACCOUNTNUM_LEN_32];
  BYTE              byProtocolVersion;
  BYTE              byRes1[3];
  BYTE              byEHomeKey[NET_SDK_EHOME_KEY_LEN];
  BYTE              byRes2[28];
}NET_DVR_ALARMHOST_NETPARAM_V50, *LPNET_DVR_ALARMHOST_NETPARAM_V50;

Members

dwSize
结构体大小
struIP
上传中心的IP地址，byAddressType为0或者1时有效
wPort
上传中心的端口号
byAddressType
地址类型：0- 无意义，1- ipv4/ipv6地址，2- 域名
byEnable
使能该上传中心：0- 不启用，1- 启用
byDomainName
域名，byAddressType为2时有效
byReportProtocol
报告协议: 1- private，2- NAL2300，3- ehome(门禁主机只支持ehome)
byDevID
设备ID，对于报警主机，协议为NAL2300时有效，有效长度为9；对于门禁主机，有效长度为32
有效字符：0~9、a~f、A~F
byProtocolVersion
EHome协议版本，0-无意义,1–v2.0，2–v4.0，3-v5.0
byRes1
保留
byEHomeKey
EHome Key（用于EHome 5.0版本，只能配置，不能获取）
byRes2
GPRS的域名解析是在固定的服务器上进行的，所以不需要给解析服务器的信息预留一些字段

Remarks

网络报警主机能力<WirelessNetworkConfig>和<NetworkConfig>和<NetParameter>字段。

See Also

NET_DVR_ALARMHOST_NETCFG_V50


NET_DVR_ALARMHOST_OTHER_STATUS

其他状态结构体。

struct{
  DWORD    dwSize;
  BYTE     bySirenStatus[ALARMHOST_MAX_SIREN_NUM];
  BYTE     byRes[92];
}NET_DVR_ALARMHOST_OTHER_STATUS,*LPNET_DVR_ALARMHOST_OTHER_STATUS;

Members

dwSize
结构体大小
bySirenStatus
警号输出状态，数组下标0对应警号1，数组下标1对应警号2，依次类推，数组的值：0- 警号处于无报警状态，1- 警号处于有报警状态
对于DS-PEA系列一键式紧急报警产品，数组下标0对应电锁状态，数组下标1对应警灯状态
byRes
保留

Remarks

  • 设备是否支持查询相关状态或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机XML能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<SearchOtherStatus>。

See Also

NET_DVR_GetDVRConfig


NET_DVR_ALARMHOST_OTHER_STATUS_V50

报警主机其他状态结构体。

struct{
  DWORD    dwSize;
  BYTE     bySirenStatus[ALARMHOST_MAX_SIREN_NUM];
  BYTE     byDetetorPower[MAX_DETECTOR_NUM];
  BYTE     byDetetorConnection[MAX_DETECTOR_NUM];
  BYTE     bySirenPower[ALARMHOST_MAX_SIREN_NUM];
  BYTE     bySirenTamperStatus[ALARMHOST_MAX_SIREN_NUM];
  BYTE     byPowerStausEnabled[MAX_DETECTOR_NUM/8];
  BYTE     byDetetorPowerStatus[MAX_DETECTOR_NUM/8];
  BYTE     byDetetorPowerType;
  BYTE     byRes[975];
}NET_DVR_ALARMHOST_OTHER_STATUS_V50,*LPNET_DVR_ALARMHOST_OTHER_STATUS_V50;

Members

dwSize
结构体大小
bySirenStatus
警号输出状态，数组下标0对应警号1，数组下标1对应警号2，依次类推，数组的值：0- 警号处于无报警状态，1- 警号处于有报警状态
对于DS-PEA系列一键式紧急报警产品，数组下标0对应警灯状态，数组下标1对应电锁状态，数组下标2开始对应警号输出状态。
byDetetorPower
探测器电量状态,电量值为0-100,默认电量小于20为欠压状态（此字段在探测器连接状态为在线时有效,否则返回0）
byDetetorConnection
探测器连接状态：0-未注册，1-不在线，2-在线
bySirenPower
警号电量状态，0-无效，1-正常，2-欠压
bySirenTamperStatus
警号防拆状态，0-无效，1-防拆，2-无防拆
byPowerStausEnabled
探测器电量状态是否有效，按位表示，0-无效，1-有效
byDetetorPowerStatus
探测器电量状态，按位表示，0-正常，1-电量低
byDetetorPowerType
探测器电量的表示类型，0-按照电量值表示，使用byDetetorPower 字段，1-按照电量状态表示，使用byPowerStausEnabled和byDetetorPowerStatus字段
byRes
保留

Remarks

  • 设备是否支持查询相关状态或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机XML能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<SearchOtherStatus>。

See Also

NET_DVR_GetDVRConfig


NET_DVR_ALARMHOST_POINT_VALUE

点数据信息结构体。

struct{
  BYTE     byChanType;
  BYTE     byPointType;
  BYTE     byRes1[2];
  DWORD    dwChanNo;
  DWORD    dwSubChanNo;
  DWORD    dwVariableNo;
  DWORD    dwPointNo;
  int      iValue;
  BYTE     byRes[16];
}NET_DVR_ALARMHOST_POINT_VALUE, *LPNET_DVR_ALARMHOST_POINT_VALUE;

Members

byChanType
接入类型：1-本地模拟量通道，2-本地开关量通道，3-485通道，4-网络通道
byPointType
点类型：1-遥测（模拟量），2-遥信（开关量）
byRes1
保留，置为0
dwChanNo
通道号，0xffffffff表示无效，通道类型为1时表示本地模拟量通道号，通道类型为2时表示本地开关量通道号，通道类型为3时表示485通道号
dwSubChanNo
槽位号，从1开始，0xffffffff表示无效，通道类型为3时使用
dwVariableNo
变量号，从1开始，0xffffffff表示无效
dwPointNo
点号，0xffffffff表示无效
iValue
点的值，比如点号为电压，则电压实际值为iData/1000
byRes
保留，置为0

Remarks

设备支持的每一个模拟量类型或者开关量类型都算是一个点。例如：一个设备有电流、电压等参数，那么电流是一个点，电压也是一个点。设备点号信息通过接口NET_DVR_GetDeviceConfig（命令：NET_DVR_GET_ALARM_POINT_CFG）获取。

See Also

NET_DVR_ALARMHOST_DATA_UNION


NET_DVR_ALARMHOST_PRINTER_CFG

打印机配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byPrinterEnable;
  BYTE     byPrintTime;
  BYTE     byFaultDetect;
  BYTE     byRes1;
  DWORD    dwAlarmInfo;
  DWORD    dwDeviceInfo;
  DWORD    dwOperateInfo;
  BYTE     byRes2[256];
}NET_DVR_ALARMHOST_PRINTER_CFG, *LPNET_DVR_ALARMHOST_PRINTER_CFG;

Members

dwSize
结构体大小
byPrinterEnable
是否启用打印机：0- 禁用，1- 启用
byPrintTime
是否打印时间：0- 否，1- 是
byFaultDetect
是否检测打印机故障：0- 否，1- 是
byRes1
保留
dwAlarmInfo
报警信息，按位表示：bit0-防区报警，bit1-防区报警恢复，bit2-紧急报警，bit3-挟持报警
dwDeviceInfo
设备信息，按位表示：bit0-交流电断电，bit1-交流电断电恢复，bit2-蓄电池欠压，bit3-蓄电池欠压恢复，bit4-电话线断线，bit5-电话线断线恢复，bit6-测试报告，bit7-防拆，bit8-防拆恢复，bit9-485设备掉线，bit10-485设备掉线恢复，bit11-无线网络异常，bit12-无线网络恢复正常，bit13-有线网络异常，bit14-有线网络恢复正常，bit15-扩展总线异常，bit16-扩展总线恢复正常，bit17-硬盘故障，bit18-硬盘故障恢复，bit19-键盘锁定
dwOperateInfo
操作信息，按位表示：bit0-布防，bit1-撤防，bit2-消警，bit3-旁路，bit4-旁路恢复，bit5-进入编程，bit6-退出编程，bit7-主机复位
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40

报告上传参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byValid;
  BYTE     byDataType;
  BYTE     byRes[2];
  BYTE     byChanAlarmMode[MAX_CHAN_NUM];
  BYTE     byDealFailCenter[MAX_CENTERGROUP_NUM];
  BYTE     byZoneReport[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byNonZoneReport[MAX_EVENT_NUM];
  BYTE     byAlarmNetCard[MAX_REPORTCHAN_NUM];
  BYTE     byRes2[252];
}NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40, *LPNET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40;

Members

dwSize
结构体大小
byValid
是否启用：0- 禁用，1- 启用
byDataType
上传数据类型：1-所有报警数据，2-所有非报警数据，3-所有数据，4-防区报警报告，5-非防区报警报告
byRes
保留
byChanAlarmMode
中心组报警通道：1- T1，2- T2，3- N1，4-N2，5-G1，6-G2，7-N3， 8-N4。(如果设备支持3G，G1、G2表示3G模块，如果不支持，表示GPRS模块，一款设备中3G模块和GPRS模块只会出现一种)。
byDealFailCenter
向指定中心组发送失败报告，用数组下标表示是哪个中心组：0-不选择，1-选择。byDealFailCenter[0]==1表示数据上传到中心组1，byDealFailCenter[1]==1表示数据上传到中心组2，依次类推
byZoneReport
防区报警报告：0-不上传，1-上传。byZoneReport[0]==1表示上传防区1报警报告，byZoneReport[1]==1表示上传防区2报警报告，依次类推
byNonZoneReport
非防区报警报告，0-不上传，1-上传。每一个数组表示一种事件类型，如下所示：
byNonZoneReport[0]- 软防区报告
byNonZoneReport[1]- 系统状态报告
byNonZoneReport[2]- 取消报告
byNonZoneReport[3]- 测试报告
byNonZoneReport[4]- 布防报告
byNonZoneReport[5]- 撤防报告
byNonZoneReport[6]- 挟持报告
byNonZoneReport[7]- 报警恢复报告
byNonZoneReport[8]- 旁路报告
byNonZoneReport[9]- 旁路恢复报告
byNonZoneReport[10]- 探测器连接状态报告（上线、离线）
byNonZoneReport[11]- 探测器电量状态报告（电压正常、欠压）
byNonZoneReport[12]- 视频报警报告
byAlarmNetCard
中心组报警网卡中心，0-主网卡中心1，1-主网卡中心2，2-扩展网卡中心1,3-扩展网卡中心2（报警通道为N1、N2、N3、N4时有效）
byRes2
保留

Remarks

对于门禁主机，byDealFailCenter、byZoneReport、dwNonZoneReport这些参数无效。

设备是否支持报告上传参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<ReportModeConfig>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ALARMHOST_REPORTCENTER_CFG

报警上传方式结构体。

struct{
  DWORD    dwSize;
  BYTE     byValid;
  BYTE     byRes[3];
  BYTE     byChanAlarmMode[MAX_REPORTCHAN_NUM];
  BYTE     byDealFailCenter[MAX_CENTER_NUM];
  BYTE     byDataType;
  BYTE     byRes2[15];
}NET_DVR_ALARMHOST_REPORTCENTER_CFG, *LPNET_DVR_ALARMHOST_REPORTCENTER_CFG;

Members

dwSize
结构体大小
byValid
是否启用，0-不启用，1-启用
byRes
保留
byChanAlarmMode
中心组报警通道：1-T1，2-T2，3-N1，4-N2，5-G1，6-G2。如果设备支持3G，G1、G2表示3G模块，如果不支持3G则表示GPRS模块，一款设备中3G模块和GPRS模块只会出现一种。
byDealFailCenter
向指定中心组发送失败报告，用数组下标表示是哪个中心组，0-不选择，1-选择
byDataType
1-报警数据，2-非报警数据，3-所有数据
byRes2
保留

See Also

NET_DVR_AlarmHostSetReportMode

NET_DVR_AlarmHostGetReportMode


NET_DVR_ALARMHOST_RS485_SLOT_CFG

报警主机RS485槽位参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sDeviceName[NAME_LEN];
  WORD     wDeviceType;
  WORD     wDeviceProtocol;
  WORD     wAddress;
  BYTE     byChannel;
  BYTE     bySlotChan;
  BYTE     byRes[60];
}NET_DVR_ALARMHOST_RS485_SLOT_CFG,*LPNET_DVR_ALARMHOST_RS485_SLOT_CFG;

Members

dwSize
结构体大小
sDeviceName
前端设备名称
wDeviceType
前端设备类型，通过NET_DVR_GetDeviceTypeList获取设备列表
wDeviceProtocol
前端设备协议，通过NET_DVR_GetDeviceProtoList获取协议列表
wAddress
485外接设备地址
byChannel
485通道号
bySlotChan
槽位号
byRes
保留，置为0

Remarks

  • 每个485串口下可以接多个同一类型的设备，各个设备的所支持的协议可以不相同。例如，串口1下接了4个温度传感器，这4个温度传感器可以是不同厂商的传感器（协议不同），但是串口1下不能同时接UPS(不间断电源系统)和温度传感器。
  • 同一个485下支持的点位（参数）总个数不能超过128个。例如：电量表状态结构体的变量个数是100个，那么同一个485下最多只能接两个电量表。
  • 动环监控报警主机中，每个槽位的通信参数（波特率，停止位，流控等）都是一样的。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

    NET_DVR_GetDeviceTypeList NET_DVR_GetDeviceProtoList

    NET_DVR_GetNextRemoteConfig


NET_DVR_ALARMHOST_SAFETYCABINSTATE

防护舱状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnterButton;
  BYTE     byExitButton;
  BYTE     byDoorState;
  BYTE     byLockState;
  BYTE     byUrgencyButton;
  BYTE     byManState;
  BYTE     byAbnormal;
  BYTE     byLightState;
  BYTE     byFanState;
  BYTE     byFollow;
  BYTE     byFighting;
  BYTE     byFaint;
  BYTE     byManyPerson;
  BYTE     byRes[59];
}NET_DVR_ALARMHOST_SAFETYCABINSTATE, *LPNET_DVR_ALARMHOST_SAFETYCABINSTATE;

Members

dwSize
结构体大小
byEnterButton
进门按钮状态：0- 不按下，1- 按钮按下
byExitButton
出门按钮状态：0- 不按下，1- 按钮按下
byDoorState
门状态：0- 门关闭，1- 门打开
byLockState
锁状态：0- 锁关，1- 锁开
byUrgencyButton
紧急按钮状态：0- 不按下，1- 按钮按下
byManState
人状态：0- 没人，1- 有人
byAbnormal
异常状态：0- 正常，1- 异常(防护舱使用超时时上传异常)
byLightState
灯光状态：0- 关，1- 开
byFanState
风扇状态：0- 关，1- 开
byFollow
尾随进入状态：0-无尾随，1-有尾随
byFighting
打斗状态：0-无打斗，1-有人打斗
byFaint
晕倒状态：0-无晕倒，1-有人晕倒
byManyPerson
多人状态：0-无多人进舱，1-多人进舱
byRes
保留

Remarks

  • 支持布防和监听两种模式，防护舱只要有一种状态被触发时（如进门按钮按下），每4秒钟上传一次状态。
  • 设备是否支持配置方式获取防护舱状态，对应报警主机能力集(AlarmHostAbility)的子节点<SafetyCabinStatus>，相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

    • See Also

    NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOST_SEARCH_LOG_PARAM

报警主机日志查找结构体。

struct{
  WORD            wMajorType;
  WORD            wMinorType;
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
  BYTE            byRes[8];
}NET_DVR_ALARMHOST_SEARCH_LOG_PARAM, *LPNET_DVR_ALARMHOST_SEARCH_LOG_PARAM;

Members

wMajorType
主类型，定义如下：
宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_ALARM | 1 | 报警
ALARMHOST_MAJOR_EXCEPTION | 2 | 异常
ALARMHOST_MAJOR_OPERATE | 3 | 操作
ALARMHOST_MAJOR_EVENT | 4 | 事件
wMinorType
次类型，根据不同的主类型的次类型定义说明如下：
主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_ALARM | 1 | 报警
次类型的宏定义 | 宏定义值 | 含义
MINOR_SHORT_CIRCUIT | 0x01 | 短路报警
MINOR_BROKEN_CIRCUIT | 0x02 | 断路报警
MINOR_ALARM_RESET | 0x03 | 报警复位
MINOR_ALARM_NORMAL | 0x04 | 报警恢复正常
MINOR_PASSWORD_ERROR | 0x05 | 密码错误（连续次输入密码错误）
MINOR_ID_CARD_ILLEGALLY | 0x06 | 非法感应卡ID
MINOR_KEYPAD_REMOVE | 0x07 | 键盘防拆
MINOR_KEYPAD_REMOVE_RESTORE | 0x08 | 键盘防拆复位
MINOR_DEV_REMOVE | 0x09 | 设备防拆
MINOR_DEV_REMOVE_RESTORE | 0x0a | 设备防拆复位
MINOR_BELOW_ALARM_LIMIT1 | 0x0b | 模拟量低于报警限1
MINOR_BELOW_ALARM_LIMIT2 | 0x0c | 模拟量低于报警限2
MINOR_BELOW_ALARM_LIMIT3 | 0x0d | 模拟量低于报警限3
MINOR_BELOW_ALARM_LIMIT4 | 0x0e | 模拟量低于报警限4
MINOR_ABOVE_ALARM_LIMIT1 | 0x0f | 模拟量高于报警限1
MINOR_ABOVE_ALARM_LIMIT2 | 0x10 | 模拟量高于报警限2
MINOR_ABOVE_ALARM_LIMIT3 | 0x11 | 模拟量高于报警限3
MINOR_ABOVE_ALARM_LIMIT4 | 0x12 | 模拟量高于报警限4
MINOR_URGENCYBTN_ON | 0x13 | 紧急按钮按下
MINOR_URGENCYBTN_OFF | 0x14 | 紧急按钮复位
MINOR_VIRTUAL_DEFENCE_BANDIT | 0x15 | 软防区匪警
MINOR_VIRTUAL_DEFENCE_FIRE | 0x16 | 软防区火警
MINOR_VIRTUAL_DEFENCE_URGENT | 0x17 | 软防区紧急
MINOR_ALARMHOST_MOTDET_START | 0x18 | 移动侦测报警开始
MINOR_ALARMHOST_MOTDET_STOP | 0x19 | 移动侦测报警结束
MINOR_ALARMHOST_HIDE_ALARM_START | 0x1a | 遮挡报警开始
MINOR_ALARMHOST_HIDE_ALARM_STOP | 0x1b | 遮挡报警结束
MINOR_ALARMHOST_UPS_ALARM | 0x1c | UPS报警
MINOR_ALARMHOST_ELECTRICITY_METER_ALARM | 0x1d | 电量表报警
MINOR_ALARMHOST_SWITCH_POWER_ALARM | 0x1e | 开关电源报警
MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM | 0x1f | 气体检测系统报警
MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM | 0x20 | 变电器温显表报警
MINOR_ALARMHOST_TEMP_HUMI_ALARM | 0x21 | 温湿度传感器报警
MINOR_ALARMHOST_UPS_ALARM_RESTORE | 0x22 | UPS报警恢复
MINOR_ALARMHOST_ELECTRICITY_METER_ALARM_RESTORE | 0x23 | 电量表报警恢复
MINOR_ALARMHOST_SWITCH_POWER_ALARM_RESTORE | 0x24 | 开关电源报警恢复
MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM_RESTORE | 0x25 | 气体检测系统报警恢复
MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM_RESTORE | 0x26 | 变电器温显表报警恢复
MINOR_ALARMHOST_TEMP_HUMI_ALARM_RESTORE | 0x27 | 温湿度传感器报警恢复
MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM | 0x28 | 水位传感器报警
MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM_RESTORE | 0x29 | 水位传感器报警恢复
MINOR_ALARMHOST_DUST_NOISE_ALARM | 0x2a | 扬尘噪声传感器报警
MINOR_ALARMHOST_DUST_NOISE_ALARM_RESTORE | 0x2b | 扬尘噪声传感器报警恢复
MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM | 0x2c | 环境采集仪报警
MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM_RESTORE | 0x2d | 环境采集仪报警恢复
MINOR_ALARMHOST_TRIGGER_TAMPER | 0x2e | 探测器防拆
MINOR_ALARMHOST_TRIGGER_TAMPER_RESTORE | 0x2f | 探测器防拆复位
MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM | 0x30 | 紧急呼叫求助报警
MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM_RESTORE | 0x31 | 紧急呼叫求助报警恢复
MINOR_ALARMHOST_CONSULTING_ALARM | 0x32 | 业务咨询报警
MINOR_ALARMHOST_CONSULTING_ALARM_RESTORE | 0x33 | 业务咨询报警恢复
MINOR_ZONE_MODULE_REMOVE | 0x34 | 防区模块防拆
MINOR_ZONE_MODULE_RESET | 0x35 | 防区模块防拆复位
MINOR_WIRELESS_OUTPUT_MODULE_REMOVE | 0x48 | 无线输出模块防拆
MINOR_ WIRELESS_OUTPUT _MODULE_RESET | 0x49 | 无线输出模块防拆复位
MINOR_WIRELESS_REPEATER _MODULE_REMOVE | 0x4a | 无线中继器防拆
MINOR_WIRELESS_REPEATER_MODULE_RESET | 0x4b | 无线中继器防拆复位
MINOR_WIRELESS_SIREN _MODULE_REMOVE | 0x4c | 无线警号防拆
MINOR_WIRELESS_SIREN_MODULE_RESET | 0x4d | 无线警号防拆复位

主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_EXCEPTION | 2 | 异常
次类型的宏定义 | 宏定义值 | 含义
MINOR_POWER_ON | 0x01 | 上电
MINOR_POWER_OFF | 0x02 | 掉电
MINOR_WDT_RESET | 0x03 | WDT 复位
MINOR_LOW_BATTERY_VOLTAGE | 0x04 | 蓄电池电压低
MINOR_AC_LOSS | 0x05 | 交流电断电
MINOR_AC_RESTORE | 0x06 | 交流电恢复
MINOR_RTC_EXCEPTION | 0x07 | RTC实时时钟异常
MINOR_NETWORK_CONNECT_FAILURE | 0x08 | 网络连接断开
MINOR_NETWORK_CONNECT_RESTORE | 0x09 | 网络连接恢复
MINOR_TEL_LINE_CONNECT_FAILURE | 0x0a | 电话线连接断开
MINOR_TEL_LINE_CONNECT_RESTORE | 0x0b | 电话线连接恢复
MINOR_EXPANDER_BUS_LOSS | 0x0c | 扩展总线模块掉线
MINOR_EXPANDER_BUS_RESTORE | 0x0d | 扩展总线模块掉线恢复
MINOR_KEYPAD_BUS_LOSS | 0x0e | 键盘总线模块掉线
MINOR_KEYPAD_BUS_RESTORE | 0x0f | 键盘总线模块掉线恢复
MINOR_SENSOR_FAILURE | 0x10 | 模拟量传感器故障
MINOR_SENSOR_RESTORE | 0x11 | 模拟量传感器恢复
MINOR_RS485_CONNECT_FAILURE | 0x12 | RS485通道连接断开
MINOR_RS485_CONNECT_RESTORE | 0x13 | RS485通道连接断恢复
MINOR_BATTERT_VOLTAGE_RESTORE | 0x14 | 蓄电池电压恢复正常
MINOR_WIRED_NETWORK_ABNORMAL | 0x15 | 有线网络异常
MINOR_WIRED_NETWORK_RESTORE | 0x16 | 有线网络恢复正常
MINOR_GPRS_ABNORMAL | 0x17 | GPRS通信异常
MINOR_GPRS_RESTORE | 0x18 | GPRS恢复正常
MINOR_3G_ABNORMAL | 0x19 | 3G通信异常
MINOR_3G_RESTORE | 0x1a | 3G恢复正常
MINOR_SIM_CARD_ABNORMAL | 0x1b | SIM卡异常
MINOR_SIM_CARD_RESTORE | 0x1c | SIM卡恢复正常
MINOR_ALARMHOST_VI_LOST, | 0x1d | 视频信号丢失
MINOR_ALARMHOST_ILLEGAL_ACCESS | 0x1e | 非法访问
MINOR_ALARMHOST_HD_FULL | 0x1f | 硬盘满
MINOR_ALARMHOST_HD_ERROR | 0x20 | 硬盘错误
MINOR_ALARMHOST_DCD_LOST | 0x21 | MODEM掉线(保留不使用)
MINOR_ALARMHOST_IP_CONFLICT | 0x22 | IP地址冲突
MINOR_ALARMHOST_NET_BROKEN | 0x23 | 网络断开
MINOR_ALARMHOST_REC_ERROR | 0x24 | 录像出错
MINOR_ALARMHOST_VI_EXCEPTION | 0x25 | 视频输入异常(只针对模拟通道)
MINOR_ALARMHOST_FORMAT_HDD_ERROR | 0x26 | 远程格式化硬盘失败
MINOR_ALARMHOST_USB_ERROR | 0x27 | USB通信故障
MINOR_ALARMHOST_USB_RESTORE | 0x28 | USB通信故障恢复
MINOR_ALARMHOST_PRINT_ERROR | 0x29 | 打印机故障
MINOR_ALARMHOST_PRINT_RESTORE | 0x2a | 打印机故障恢复
MINOR_SUBSYSTEM_COMMUNICATION_ERROR | 0x2b | 子板通讯错误
MINOR_ALARMHOST_IPC_NO_LINK | 0x2c | IPC连接断开
MINOR_ALARMHOST_IPC_IP_CONFLICT | 0x2d | IPC IP地址冲突
MINOR_ALARMHOST_VI_MISMATCH | 0x2e | 视频制式不匹配
MINOR_ALARMHOST_MCU_RESTART | 0x2f | MCU重启
MINOR_ALARMHOST_GPRS_MODULE_FAULT | 0x30 | GPRS模块故障
MINOR_ALARMHOST_TELEPHONE_MODULE_FAULT | 0x31 | 电话模块故障
MINOR_ALARMHOST_WIFI_ABNORMAL | 0x32 | WIFI通信异常
MINOR_ALARMHOST_WIFI_RESTORE | 0x33 | WIFI恢复正常
MINOR_ALARMHOST_RF_ABNORMAL | 0x34 | RF信号异常
MINOR_ALARMHOST_RF_RESTORE | 0x35 | RF信号恢复正常
MINOR_ALARMHOST_DETECTOR_ONLINE | 0x36 | 探测器在线
MINOR_ALARMHOST_DETECTOR_OFFLINE | 0x37 | 探测器离线
MINOR_ALARMHOST_DETECTOR_BATTERY_NORMAL | 0x38 | 探测器电量正常
MINOR_ALARMHOST_DETECTOR_BATTERY_LOW | 0x39 | 探测器电量欠压
MINOR_ALARMHOST_DATA_TRAFFIC_OVERFLOW | 0x3a | 流量超额
MINOR_ZONE_MODULE_LOSS | 0x3b | 防区模块掉线
MINOR_ZONE_MODULE_RESTORE | 0x3c | 防区模块掉线恢复
MINOR_ALARMHOST_WIRELESS_OUTPUT_LOSS | 0x3d | 无线输出模块离线
MINOR_ALARMHOST_WIRELESS_OUTPUT_RESTORE | 0x3e | 无线输出模块恢复在线
MINOR_ALARMHOST_WIRELESS_REPEATER_LOSS | 0x3f | 无线中继器离线
MINOR_ALARMHOST_WIRELESS_ REPEATER _RESTORE | 0x40 | 无线中继器恢复在线
MINOR_TRIGGER_MODULE_LOSS | 0x41 | 触发器模块掉线
MINOR_TRIGGER_MODULE_RESTORE | 0x42 | 触发器模块掉线恢复
MINOR_WIRELESS_SIREN_LOSS | 0x43 | 无线警号离线
MINOR_WIRELESS_SIREN_RESTORE | 0x44 | 无线警号恢复在线

主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_OPERATE | 3 | 操作
次类型的宏定义 | 宏定义值 | 含义
MINOR_GUARD | 0x01 | 普通布防
MINOR_UNGUARD | 0x02 | 普通撤防
MINOR_BYPASS | 0x03 | 旁路
MINOR_DURESS_ACCESS | 0x04 | 挟持
MINOR_ALARMHOST_LOCAL_REBOOT | 0x05 | 本地重启
MINOR_ALARMHOST_REMOTE_REBOOT | 0x06 | 远程重启
MINOR_ALARMHOST_LOCAL_UPGRADE | 0x07 | 本地升级
MINOR_ALARMHOST_REMOTE_UPGRADE | 0x08 | 远程升级
MINOR_RECOVERY_DEFAULT_PARAM | 0x09 | 恢复默认参数
MINOR_ALARM_OUTPUT | 0x0a | 控制触发器
MINOR_ACCESS_OPEN | 0x0b | 控制门禁开
MINOR_ACCESS_CLOSE | 0x0c | 控制门禁关
MINOR_SIREN_OPEN | 0x0d | 控制警号开
MINOR_SIREN_CLOSE | 0x0e | 控制警号关
MINOR_MOD_ZONE_CONFIG | 0x0f | 修改防区设置
MINOR_MOD_ALARMOUT_CONIFG | 0x10 | 控制触发器配置
MINOR_MOD_ANALOG_CONFIG | 0x11 | 修改模拟量配置
MINOR_RS485_CONFIG | 0x12 | 修改RS485通道配置
MINOR_PHONE_CONFIG | 0x13 | 修改拨号配置
MINOR_ADD_ADMIN | 0x14 | 增加管理员
MINOR_MOD_ADMIN_PW | 0x15 | 修改管理员密码
MINOR_DEL_ADMIN | 0x16 | 删除管理员
MINOR_ADD_NETUSER | 0x17 | 增加后端操作员
MINOR_MOD_NETUSER_PW | 0x18 | 修改后端操作员密码
MINOR_DEL_NETUSER | 0x19 | 删除后端操作员
MINOR_ADD_OPERATORUSER | 0x1a | 增加前端操作员
MINOR_MOD_OPERATORUSER_PW | 0x1b | 修改前端操作员密码
MINOR_DEL_OPERATORUSER | 0x1c | 删除前端操作员
MINOR_ADD_KEYPADUSER | 0x1d | 增加键盘/读卡器用户
MINOR_DEL_KEYPADUSER | 0x1e | 删除键盘/读卡器用户
MINOR_REMOTEUSER_LOGIN | 0x1f | 远程用户登陆
MINOR_REMOTEUSER_LOGOUT | 0x20 | 远程用户注销
MINOR_REMOTE_GUARD | 0x21 | 远程布防
MINOR_REMOTE_UNGUARD | 0x22 | 远程撤防
MINOR_MOD_HOST_CONFIG | 0x23 | 修改主机配置
MINOR_RESTORE_BYPASS | 0x24 | 旁路恢复
MINOR_ALARMOUT_OPEN | 0x25 | 触发器开启
MINOR_ALARMOUT_CLOSE | 0x26 | 触发器关闭
MINOR_MOD_SUBSYSTEM_PARAM | 0x27 | 修改子系统参数配置
MINOR_GROUP_BYPASS | 0x28 | 组旁路
MINOR_RESTORE_GROUP_BYPASS | 0x29 | 组旁路恢复
MINOR_MOD_GRPS_PARAM | 0x2a | 修改GPRS参数
MINOR_MOD_NET_REPORT_PARAM | 0x2b | 修改网络上报参数配置
MINOR_MOD_REPORT_MOD | 0x2c | 修改上传方式配置
MINOR_MOD_GATEWAY_PARAM | 0x2d | 修改门禁参数配置
MINOR_ALARMHOST_REMOTE_START_REC | 0x2e | 远程开始录像
MINOR_ALARMHOST_REMOTE_STOP_REC | 0x2f | 远程停止录像
MINOR_ALARMHOST_START_TRANS_CHAN | 0x30 | 开始透明传输
MINOR_ALARMHOST_STOP_TRANS_CHAN | 0x31 | 停止透明传输
MINOR_ALARMHOST_START_VT | 0x32 | 开始语音对讲
MINOR_ALARMHOST_STOP_VTM | 0x33 | 停止语音对讲
MINOR_ALARMHOST_REMOTE_PLAYBYFILE | 0x34 | 远程按文件回放
MINOR_ALARMHOST_REMOTE_PLAYBYTIME | 0x35 | 远程按时间回放
MINOR_ALARMHOST_REMOTE_PTZCTRL | 0x36 | 远程云台控制
MINOR_ALARMHOST_REMOTE_FORMAT_HDD | 0x37 | 远程格式化硬盘
MINOR_ALARMHOST_REMOTE_LOCKFILE | 0x38 | 远程锁定文件
MINOR_ALARMHOST_REMOTE_UNLOCKFILE | 0x39 | 远程解锁文件
MINOR_ALARMHOST_REMOTE_CFGFILE_OUTPUT | 0x3a | 远程导出配置文件
MINOR_ALARMHOST_REMOTE_CFGFILE_INTPUT | 0x3b | 远程导入配置文件
MINOR_ALARMHOST_REMOTE_RECFILE_OUTPUT | 0x3c | 远程导出录象文件
MINOR_ALARMHOST_STAY_ARM | 0x3d | 留守布防
MINOR_ALARMHOST_QUICK_ARM | 0x3e | 即时布防
MINOR_ALARMHOST_AUTOMATIC_ARM | 0x3f | 自动布防
MINOR_ALARMHOST_AUTOMATIC_DISARM | 0x40 | 自动撤防
MINOR_ALARMHOST_KEYSWITCH_ARM | 0x41 | 钥匙布撤防防区布防
MINOR_ALARMHOST_KEYSWITCH_DISARM | 0x42 | 钥匙布撤防防区撤防
MINOR_ALARMHOST_CLEAR_ALARM | 0x43 | 消警
MINOR_ALARMHOST_MOD_FAULT_CFG | 0x44 | 修改系统故障配置
MINOR_ALARMHOST_MOD_EVENT_TRIGGER_ALARMOUT_CFG | 0x45 | 修改事件触发触发器配置
MINOR_ALARMHOST_SEARCH_EXTERNAL_MODULE | 0x46 | 搜索外接模块
MINOR_ALARMHOST_REGISTER_EXTERNAL_MODULE | 0x47 | 重新注册外接模块
MINOR_ALARMHOST_CLOSE_KEYBOARD_ALARM | 0x48 | 关闭键盘报警提示音
MINOR_ALARMHOST_MOD_3G_PARAM | 0x49 | 修改3G参数
MINOR_ALARMHOST_MOD_PRINT_PARAM | 0x4a | 修改打印机参数
MINOR_SD_CARD_FORMAT | 0x4b | SD卡格式化
MINOR_SUBSYSTEM_UPGRADE | 0x4c | 子板固件升级
MINOR_ALARMHOST_PLAN_ARM_CFG | 0x4d | 计划布撤防参数配置
MINOR_ALARMHOST_PHONE_ARM | 0x4e | 手机布防
MINOR_ALARMHOST_PHONE_STAY_ARM | 0x4f | 手机留守布防
MINOR_ALARMHOST_PHONE_QUICK_ARM | 0x50 | 手机即时布防
MINOR_ALARMHOST_PHONE_DISARM | 0x51 | 手机撤防
MINOR_ALARMHOST_PHONE_CLEAR_ALARM | 0x52 | 手机消警
MINOR_ALARMHOST_ALLOWLIST_CFG | 0x53 | 授权名单配置
MINOR_ALARMHOST_TIME_TRIGGER_CFG | 0x54 | 定时开关触发器配置
MINOR_ALARMHOST_CAPTRUE_CFG | 0x55 | 抓图参数配置
MINOR_ALARMHOST_TAMPER_CFG | 0x56 | 防区防拆参数配置
MINOR_ALARMHOST_REMOTE_KEYPAD_UPGRADE | 0x57 | 远程升级键盘
MINOR_ALARMHOST_ONETOUCH_AWAY_ARMING | 0x58 | 一键外出布防
MINOR_ALARMHOST_ONETOUCH_STAY_ARMING | 0x59 | 一键留守布防
MINOR_ALARMHOST_SINGLE_PARTITION_ARMING_OR_DISARMING | 0x5a | 单防区布撤防
MINOR_ALARMHOST_CARD_CONFIGURATION | 0x5b | 卡参数配置
MINOR_ALARMHOST_CARD_ARMING_OR_DISARMING | 0x5c | 刷卡布撤防
MINOR_ALARMHOST_EXPENDING_NETCENTER_CONFIGURATION | 0x5d | 扩展网络中心配置
MINOR_ALARMHOST_NETCARD_CONFIGURATION | 0x5e | 网卡配置
MINOR_ALARMHOST_DDNS_CONFIGURATION | 0x5f | DDNS配置
MINOR_ALARMHOST_RS485BUS_CONFIGURATION | 0x60 | 485总线参数配置
MINOR_ALARMHOST_RS485BUS_RE_REGISTRATION | 0x61 | 485总线重新注册
MINOR_ALARMHOST_REMOTE_OPEN_ELECTRIC_LOCK | 0x62 | 远程打开电锁
MINOR_ALARMHOST_REMOTE_CLOSE_ELECTRIC_LOCK | 0x63 | 远程关闭电锁
MINOR_ALARMHOST_LOCAL_OPEN_ELECTRIC_LOCK | 0x64 | 本地打开电锁
MINOR_ALARMHOST_LOCAL_CLOSE_ELECTRIC_LOCK | 0x65 | 本地关闭电锁
MINOR_ALARMHOST_OPEN_ALARM_LAMP | 0x66 | 打开警灯(远程)
MINOR_ALARMHOST_CLOSE_ALARM_LAMP | 0x67 | 关闭警灯(远程)
MINOR_ALARMHOST_TEMPORARY_PASSWORD | 0x68 | 临时密码操作记录
MINOR_ALARMHOST_ONEKEY_AWAY_ARM | 0x69 | 一键外出布防
MINOR_ALARMHOST_ONEKEY_STAY_ARM | 0x6a | 一键留守布防
MINOR_ALARMHOST_SINGLE_ZONE_ARM | 0x6b | 单防区布防
MINOR_ALARMHOST_SINGLE_ZONE_DISARM | 0x6c | 单防区撤防
MINOR_ALARMHOST_HIDDNS_CONFIG | 0x6d | HIDDNS配置
MINOR_ALARMHOST_REMOTE_KEYBOARD_UPDATA | 0x6e | 远程键盘升级日志
MINOR_ALARMHOST_ZONE_ADD_DETECTOR | 0x6f | 防区添加探测器
MINOR_ALARMHOST_ZONE_DELETE_DETECTOR | 0x70 | 防区删除探测器
MINOR_ALARMHOST_QUERY_DETECTOR_SIGNAL | 0x71 | 主机查询探测器信号强度
MINOR_ALARMHOST_QUERY_DETECTOR_BATTERY | 0x72 | 主机查询探测器电量
MINOR_ALARMHOST_SET_DETECTOR_GUARD | 0x73 | 探测器布防
MINOR_ALARMHOST_SET_DETECTOR_UNGUARD | 0x74 | 探测器撤防
MINOR_ALARMHOST_SET_WIFI_PARAMETER | 0x75 | 设置WIFI配置参数
MINOR_ALARMHOST_OPEN_VOICE | 0x76 | 打开语音
MINOR_ALARMHOST_CLOSE_VOICE | 0x77 | 关闭语音
MINOR_ALARMHOST_ENABLE_FUNCTION_KEY | 0x78 | 启用功能键
MINOR_ALARMHOST_DISABLE_FUNCTION_KEY | 0x79 | 关闭功能键
MINOR_ALARMHOST_READ_CARD | 0x7a | 巡更刷卡
MINOR_ALARMHOST_START_BROADCAST | 0x7b | 打开语音广播
MINOR_ALARMHOST_STOP_BROADCAST | 0x7c | 关闭语音广播
MINOR_ALARMHOST_REMOTE_ZONE_MODULE_UPGRADE | 0x7d | 远程升级防区模块
MINOR_ALARMHOST_NETWORK_MODULE_EXTEND | 0x7e | 网络模块参数配置
MINOR_ALARMHOST_ADD_CONTROLLER | 0x7f | 添加遥控器用户
MINOR_ALARMHOST_DELETE_CONTORLLER | 0x80 | 删除遥控器用户
MINOR_ALARMHOST_REMOTE_NETWORKMODULE_UPGRADE | 0x81 | 远程升级网络模块
MINOR_ALARMHOST_WIRELESS_OUTPUT_ADD | 0x82 | 注册无线输出模块
MINOR_ALARMHOST_WIRELESS_OUTPUT_DEL | 0x83 | 删除无线输出模块
MINOR_ALARMHOST_WIRELESS_REPEATER_ADD | 0x84 | 注册无线中继器
MINOR_ALARMHOST_WIRELESS_ REPEATER _DEL | 0x85 | 删除无线中继器
MINOR_ALARMHOST_PHONELIST_CFG | 0x86 | 电话名单参数配置
MINOR_ALARMHOST_RF_SIGNAL_CHECK | 0x87 | RF信号查询
MINOR_ALARMHOST_USB_UPGRADE | 0x88 | USB升级
MINOR_ALARMHOST_DOOR_TIME_REMINDER_CFG | 0x89 | 门磁定时提醒参数配置
MINOR_ALARMHOST_WIRELESS_SIREN_ADD | 0x8a | 注册无线警号
MINOR_ALARMHOST_WIRELESS_SIREN_DEL | 0x8b | 删除无线警号
MINOR_ALARMHOST_LOCAL_SET_DEVICE_ACTIVE | 0xf0 | 本地激活设备
MINOR_ALARMHOST_REMOTE_SET_DEVICE_ACTIVE | 0xf1 | 远程激活设备
MINOR_ALARMHOST_LOCAL_PARA_FACTORY_DEFAULT | 0xf2 | 本地恢复出厂设置
MINOR_ALARMHOST_REMOTE_PARA_FACTORY_DEFAULT | 0xf3 | 远程恢复出厂设置

主类型的宏定义 | 宏定义值 | 含义
ALARMHOST_MAJOR_EVENT | 4 | 事件
次类型的宏定义 | 宏定义值 | 含义
MINOR_SCHOOLTIME_IRGI_B | 0x01 | B码校时
MINOR_SCHOOLTIME_SDK | 0x02 | SDK校时
MINOR_SCHOOLTIME_SELFTEST | 0x03 | 定时自检校时
MINOR_SUBSYSTEM_ABNORMALINSERT | 0x04 | 子板插入
MINOR_SUBSYSTEM_ABNORMALPULLOUT | 0x05 | 子板拔出
MINOR_AUTO_ARM | 0x06 | 自动布防
MINOR_AUTO_DISARM | 0x07 | 自动撤防
MINOR_TIME_TIGGER_ON | 0x08 | 定时开启触发器
MINOR_TIME_TIGGER_OFF | 0x09 | 定时关闭触发器
MINOR_AUTO_ARM_FAILD | 0x0a | 自动布防失败
MINOR_AUTO_DISARM_FAILD | 0x0b | 自动撤防失败
MINOR_TIME_TIGGER_ON_FAILD | 0x0c | 定时开启触发器失败
MINOR_TIME_TIGGER_OFF_FAILD | 0x0d | 定时关闭触发器失败
MINOR_MANDATORY_ALARM | 0x0e | 强制布防
MINOR_KEYPAD_LOCKED | 0x0f | 键盘锁定
MINOR_USB_INSERT | 0x10 | USB插入
MINOR_USB_PULLOUT | 0x11 | USB拔出
struStartTime
开始时间
struEndTime
结束时间
byRes
保留

See Also

NET_DVR_FindAlarmHostLog


NET_DVR_ALARMHOST_SENSOR_JOINT_CFG

模拟量关联配置结构体。

struct{
  DWORD    dwSize;
  BYTE     bySensorJointAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE     bySensorJointSiren[ALARMHOST_MAX_SIREN_NUM];
  BYTE     bySensorAlarmTypeJointAlarmOut[ALARMHOST_ALARMOUT_NUM];
  BYTE     bySesorAlarmTypeJointSiren[ALARMHOST_MAX_SIREN_NUM];
  BYTE     byChan;
  BYTE     byRes[55];
}NET_DVR_ALARMHOST_SENSOR_JOINT_CFG,*LPNET_DVR_ALARMHOST_SENSOR_JOINT_CFG;

Members

dwSize
结构体大小
bySensorJointAlarmOut
模拟量关联触发器，bySensorJointAlarmOut[0]==1表示关联触发器1，bySensorJointAlarmOut[1]==1表示关联触发器2，以此类推
bySensorJointSiren
模拟量关联警号，bySensorJointSiren[0]==1表示关联警号1，bySensorJointSiren[1]==1表示关联警号2，以此类推
bySensorAlarmTypeJointAlarmOut
模拟量按类型联动触发器，该字段是bySensorJointAlarmOut的扩展，数组下标表示触发器号，数组元素的值按位表示报警类型，各个类型是"或"的关系。类型值定义：bit0- 限1，bit1- 限2，bit2- 限3，bit3- 限4，bit4- 故障。例如：bySensorAlarmTypeJointAlarmOut[0]==3表示限1或者限2报警联动第一个触发器。
bySesorAlarmTypeJointSiren
模拟量按类型联动警号，该字段是bySensorJointSiren的扩展，数组下标表示警号序号，数组元素的值按位表示报警类型，各个类型间是"或"的关系。类型值定义：bit0- 限1，bit1- 限2，bit2- 限3，bit3- 限4，bit4- 故障。例如：bySesorAlarmTypeJointSiren[0]==3表示限1或者限2报警联动第一个警号。
byChan
模拟量通道号
byRes
保留，置为0

Remarks

设备实际支持的触发器（触发器）个数和警号个数从能力集获取。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig NET_DVR_GetNextRemoteConfig


NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO

开关电源报警信息结构体。

struct{
  BYTE    byAlarmType;
  BYTE    byChanNo;
  BYTE    bySlotNo;
  BYTE    byRes1;
  int     iAlarmValue;
  BYTE    byRes2[64];
}NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO,*LPNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO;

Members

byAlarmType
报警类型：1- 电池测试失败，2- AC-DC转换器故障，3- 输入线/相电压AB/A越限，4- 输入线/相电压BC/B越限，5- 输入线/相电压CA/C越限， 6- 输出电流A越限，7- 输出电流B越限，8- 输出电流C越限，9- 整流模块故障，10- 风扇故障，11- 直流电压越限
byChanNo
RS485通道号，从1开始
bySlotNo
RS485虚拟槽位号
byRes1
保留，置为0
iAlarmValue
报警值
byRes2
保留，置为0

Remarks

  • 报警类型为电压时，iAlarmValue表示电压值，单位：伏特，设备扩大10倍上传，实际值需要除以10，例如iAlarmValue的数值为320，实际为32.0V。
  • 报警类型为电流时，iAlarmValue表示电流值，单位：安倍，设备扩大10倍上传，实际值需要除以10，例如iAlarmValue的数值为320，实际为32.0A。
  • 其他报警类型，iAlarmValue无效。

    • See Also

    NET_DVR_485_DEVICE_ALARM_UNION


NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE

开关电源状态信息结构体。

struct{
  NET_DVR_VOLTAGE    struACVoltage;
  int                iDCConvertVoltage;
  NET_DVR_CURRENT    struACCurrent;
  int                iTotalCurrent;
  int                iBattery1Temperature;
  int                iBattery2Temperature;
  int                iBattery1Current;
  int                iBattery2Current;
  int                iBattery3Current;
  int                iBattery4Current;
  BYTE               iBatteryTestVoltage;
  BYTE               iRectifierOutputVoltage;
  BYTE               iRectifierOutputCurrent;
  BYTE               iDCOutputVoltage;
  BYTE               byRes[432];
}NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE,*LPNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE;

Members

struACVoltage
交流电压
iDCConvertVoltage
DC转换器电压，单位：V
struACCurrent
交流电流
iTotalCurrent
负载总电流，单位：A
iBattery1Temperature
电池1温度，单位：°C
iBattery2Temperature
电池2温度，单位：°C
iBattery1Current
电池1电流，单位：A
iBattery2Current
电池2电流，单位：A
iBattery3Current
电池3电流，单位：A
iBattery4Current
电池4电流，单位：A
iBatteryTestVoltage
电池测试电压，单位：V
iRectifierOutputVoltage
整流模块输出电压，单位：V
iRectifierOutputCurrent
整流模块输出电流，单位：A
iDCOutputVoltage
直流输出电压，单位：V
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE

温湿度传感器状态信息结构体。

struct{
  int     iTemperature;
  int     iHumidity;
  BYTE    byRes[504];
}NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE,*LPNET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE;

Members

iTemperature
温度，单位：摄氏度（°C）
iHumidity
湿度，单位：%
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO

温湿度传感器报警信息结构体。

struct{
  BYTE    byAlarmType;
  BYTE    byChanNo;
  BYTE    bySlotNo;
  BYTE    byRes1;
  int     iAlarmValue;
  BYTE    byRes2[64];
}NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO,*LPNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO;

Members

byAlarmType
报警类型：1- 温度异常，2- 湿度异常
byChanNo
RS485通道号，从1开始
bySlotNo
RS485虚拟槽位号
byRes1
保留，置为0
iAlarmValue
报警值
byRes2
保留，置为0

Remarks

  • 报警类型为“湿度异常”时，iAlarmValue为含量百分比，单位% 。设备扩大10倍上传，实际值需要除以10，例如设备上传320，实际为32.0%。
  • 设备类型为“温度值异常”，iAlarmValue为温度值，单位摄氏度，设备端扩大10倍上传，实际值需要除以10，例如设备上传200，实际为20.0摄氏度。

    • See Also

    NET_DVR_485_DEVICE_ALARM_UNION


NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE

温湿度传感器限值参数结构体。

struct{
  int     iTemperatureHighLimit;
  int     iTemperatureLowLimit;
  int     iHumidityHighLimit;
  int     iHumidityLowLimit;
  BYTE    byRes[84];
}NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE,*LPNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE;

Members

iTemperatureHighLimit
温度高限值，单位：摄氏度
iTemperatureLowLimit
温度低限值，单位：摄氏度
iHumidityHighLimit
湿度高限值，单位：%
iHumidityLowLimit
湿度低限值，单位：%
byRes
保留

See Also

NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION


NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE

变电器温显表信息结构体。

struct{
  int    iPhaseATemperature;
  int    iPhaseBTemperature;
  int    iPhaseCTemperature;
  int    iPhaseDTemperature;
  BYTE   byRes[496];
}NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE, *LPNET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE;

Members

iPhaseATemperature
A相温度
iPhaseBTemperature
B相温度
iPhaseCTemperature
C相温度
iPhaseDTemperature
D相温度
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_UPLOAD_PARAM

数据上传参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byUploadType;
  BYTE     byDataType;
  BYTE     byDataNum;
  BYTE     byAudioType;
  char     sFileName[260];
  char     *lpBuffer;
  DWORD    dwBufferSize;
  BYTE     byRes2[128];
}NET_DVR_ALARMHOST_UPLOAD_PARAM,*LPNET_DVR_ALARMHOST_UPLOAD_PARAM;

Members

dwSize
结构体大小
byUploadType
上传方式：1- 根据文件名绝对地址读取数据文件上传，2- 从缓冲区读取数据上传
byDataType
数据类型：1- 音频数据
byDataNum
数据编号，如：上传语音，则该参数表示语音号：1- 进门欢迎提示音，2- 出门离开提示音，3- 有人提示音，4- ATM暂停使用，5- 门未关提示音，6- （保留），7- 超时提示音，8- 多人进入提示音，9- 人脸遮挡提示音，10- 晕倒提示音
byAudioType
语音格式，目前只支持WAVE格式：0-wave
sFileName
数据文件的全路径（包括文件名）
lpBuffer
数据缓冲区
dwBufferSize
缓冲区大小
byRes2
保留，置为0

Remarks

数据上传支持读取文件（sFileName）数据上传设备，也支持从缓冲区（lpBuffer）读取数据上传设备。上传的数据大小不超过1M，数据格式2~16位，单通道，采样率22K。

报警主机能力集(AlarmHostAbility)的子节点<VoiceUpload>对应是否支持语音上传；子节点<VoiceDownload>对应是否支持语音下载。
报警主机能力集(AlarmHostAbility)的子节点<voiceNo>对应语音编号的范围，从1开始，语音编号减一就是语音的数组下标。
相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

See Also

NET_DVR_StartUploadFile


NET_DVR_ALARMHOST_UPS_ALARMINFO

UPS报警信息结构体。

struct{
  BYTE    byAlarmType;
  BYTE    byChanNo;
  BYTE    bySlotNo;
  BYTE    byRes1;
  int     iAlarmValue;
  BYTE    byRes2[64];
}NET_DVR_ALARMHOST_UPS_ALARMINFO,*LPNET_DVR_ALARMHOST_UPS_ALARMINFO;

Members

byAlarmType
报警类型：1- A相输入电压越限，2- B相输入电压越限，3- C相输入电压越限，4- A相输出电压越限，5- B相输出电压越限， 6- C相输出电压越限，7- A相输入频率越限，8- B相输入频率越限，9- C相输入频率越限，10- 整流器电压越限报警，11- 过载报警， 12- 电池电压低报警，13- 电池后备时间超低报警，14- 电池温度超高报警，15- 逆变器关闭报警，16- 自动旁路开报警，17- 整流器故障报警， 18- 逆变器故障报警，19- 充电器故障报警，20- 电池故障报警，21- 自动旁路故障报警
byChanNo
RS485通道号，从1开始
bySlotNo
RS485虚拟槽位号
byRes1
保留，置为0
iAlarmValue
报警值
byRes2
保留，置为0

Remarks

  • 报警类型为电压时，iAlarmValue表示电压值，单位：伏特，设备扩大10倍上传，实际值需要除以10，例如iAlarmValue的数值为320，实际为32.0V。
  • 报警类型为频率是，iAlarmValue表示频率，单位：赫兹，设备扩大10倍上传，实际值需要除以10，例如iAlarmValue的数值为320，实际为32.0HZ。
  • 报警类型为“电池温度超高报警”时，iAlarmValue表示温度，单位：摄氏度，设备扩大10倍上传，实际值需要除以10，例如设备上传200，实际为20.0摄氏度。
  • 报警类型为“电池后备时间”时，iAlarmValue表示时间，单位：秒，设备上传实际值。
  • 其他报警类型时，iAlarmValue值无效。

    • See Also

    NET_DVR_485_DEVICE_ALARM_UNION


NET_DVR_ALARMHOST_UPS_LIMIT_VALUE

UPS报警限值参数结构体。

struct{
  int     iInputVolHigh;
  int     iInputVolLow;
  int     iInputFreHigh;
  int     iInputFreLow;
  int     iOutputVolHigh;
  int     iOutputVolLow;
  int     iBatteryVoltageLow;
  int     iBatterySurply;
  int     iBatteryTempratureHigh;
  BYTE    byRes[64];
}NET_DVR_ALARMHOST_UPS_LIMIT_VALUE,*LPNET_DVR_ALARMHOST_UPS_LIMIT_VALUE;

Members

iInputVolHigh
越限输入电压值(高值)
iInputVolLow
越限输入电压值(低值)
iInputFreHigh
越限输入频率值(高值)
iInputFreLow
越限输入频率值(低值)
iOutputVolHigh
越界输出电压值(高值)
iOutputVolLow
越界输出电压值(低值)
iBatteryVoltageLow
电池低电压限值
iBatterySurply
电池后备时间低限值
iBatteryTempratureHigh
电池温度高限值
byRes
保留

See Also

NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION


NET_DVR_ALARMHOST_UPS_STATE

UPS状态信息结构体。

struct{
  NET_DVR_VOLTAGE        struInputVoltage;
  NET_DVR_VOLTAGE        struBypassVoltage;
  NET_DVR_VOLTAGE        struOutputVoltage;
  int                    iRectifierVol;
  int                    iInverterVol;
  NET_DVR_CURRENT        struInputCurrent;
  NET_DVR_CURRENT        struBypassCurrent;
  NET_DVR_CURRENT        struOutputCurrent;
  int                    iInverterCurrent;
  NET_DVR_FREQUENCY      struInputFrequency;
  NET_DVR_FREQUENCY      struBypassFrequency;
  NET_DVR_FREQUENCY      struOutputFrequency;
  int                    iInverterFre;
  NET_DVR_POWER          struInputPower;
  NET_DVR_POWER          struBypassPower;
  NET_DVR_POWER          struOutputPower;
  NET_DVR_POWER          struComplexPower;
  int                    iNormalPower;
  int                    iPowerFacter;
  NET_DVR_LOAD_FACTOR    struBatteryLoadFactor;
  int                    iBatteryEstimated;
  int                    iBatteryTemperature;
  int                    iBatteryVoltage;
  BYTE                   byRectifierState;
  BYTE                   byInverterState;
  BYTE                   byChargeState;
  BYTE                   byBatteryState;
  BYTE                   byAutoBypassState;
  BYTE                   byRes2[247];
}NET_DVR_ALARMHOST_UPS_STATE,*LPNET_DVR_ALARMHOST_UPS_STATE;

Members

struInputVoltage
输入电压
struBypassVoltage
旁路电压
struOutputVoltage
输出电压
iRectifierVol
整流器电压，单位：V
iInverterVol
逆变器电压，单位：V
struInputCurrent
输入电流
struBypassCurrent
旁路电流
struOutputCurrent
输出电流
iInverterCurrent
逆变器电流，单位：A
struInputFrequency
输入频率
struBypassFrequency
旁路频率
struOutputFrequency
输出频率
iInverterFre
逆变器频率，单位：Hz
struInputPower
输入功率
struBypassPower
旁路功率
struOutputPower
输出功率
struComplexPower
复功率
iNormalPower
标称功率，单位：W
iPowerFacter
功率因数
struBatteryLoadFactor
电池负载率
iBatteryEstimated
电池备份时间，单位：min（分钟）
iBatteryTemperature
电池温度，单位：°C（摄氏度）
iBatteryVoltage
电池电压，单位：V
byRectifierState
整流器运行状态：1- 正常，2- 异常
byInverterState
逆变器运行状态：1- 正常，2- 异常
byChargeState
充电器运行状态：1- 正常，2- 异常
byBatteryState
电池运行状态：1- 正常，2- 异常
byAutoBypassState
自动旁路状态：1- 正常，2- 异常
byRes2
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_WATERLEVEL_SENSOR

水位传感器参数结构体。

struct{
  LONG    iWaterLevel;
  BYTE    byRes[508];
}NET_DVR_ALARMHOST_WATERLEVEL_SENSOR,*LPNET_DVR_ALARMHOST_WATERLEVEL_SENSOR;

Members

iWaterLevel
水位，单位：厘米（cm）
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND

无线业务查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byCommOperatorNum[NAME_LEN];
  BYTE     byQueryCode[16];
  BYTE     byBusinessType;
  BYTE     byRes[35];
}NET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND,*LPNET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND;

Members

dwSize
结构体大小
byCommOperatorNum
通信运营商号码
byQueryCode
业务查询代码
byBusinessType
业务类型：0- 话费，1- 流量
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO

无线业务查询结果结构体。

struct{
  DWORD    dwSize;
  BYTE     by3GBusiness[1024];
  BYTE     byRes[32];
}NET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO,*LPNET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO;

Members

dwSize
结构体大小
by3GBusiness
3G业务，通过短信查询
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG

无线网络模块参数配置结构体。

struct{
  DWORD                         dwSize;
  NET_DVR_ALARMHOST_NETPARAM    struNetCenter[MAX_CENTERNUM];
  BYTE                          byAPNName[APN_NAME_LEN];
  BYTE                          byAPNUserName[APN_USERNAME_LEN];
  BYTE                          byAPNPassWord[APN_USERPASSWORD_LEN];
  BYTE                          byReconnTime;
  BYTE                          byOverTime;
  BYTE                          byDetectLinkTime;
  BYTE                          byRes1;
  BYTE                          bySIMNum[NAME_LEN];
  NET_DVR_IPADDR                struSIMIP;
  BYTE                          byRes2[64];
}NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG, *LPNET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG;

Members

dwSize
结构体大小
struNetCenter
中心GPRS网络相关参数的配置，每位数组表示一个中心（门禁主机目前只支持1个中心）
byAPNName
APN名称，GPRS参数配置时有效，3G配置时无效
byAPNUserName
APN账号，GPRS参数配置时有效，3G配置时无效
byAPNPassWord
APN密码，GPRS参数配置时有效，3G配置时无效
byReconnTime
重连时间，连接失效后启用重连的时间，10秒为单位，取值范围：1~30，GPRS参数配置时有效，3G配置时无效
byOverTime
超时时间，超过OverTime时间没有收到有效数据则重连，取值范围：1~254，单位：30秒，GPRS参数配置时有效，3G配置时无效
byDetectLinkTime
探测链路是否还保持，取值范围：1~30，单位：10s，GPRS参数配置时有效，3G配置时无效
byRes1
保留
bySIMNum
SIM卡号（手机号）
struSIMIP
登陆网络后网络给分配的IP地址，只能获取
byRes2
保留

Remarks

对于门禁主机，byAPNUserName、byAPNPassWord、byReconnTime、byOverTime、byDetectLinkTime这些参数无效。

设备是否支持无线网络模块参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应报警主机能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<WirelessNetworkConfig>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOSTDIALCFG

拨号参数配置结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_PHONECENTERDIALCFG   struPhoneCenterParam[MAX_CENTERNUM];
  WORD                         wReportPeriod;
  WORD                         wFirstReportTime;
  BYTE                         byReportValid;
  BYTE                         byRes[19];
}NET_DVR_ALARMHOSTDIALCFG, *LPNET_DVR_ALARMHOSTDIALCFG;

Members

dwSize
结构体大小
struPhoneCenterParam
中心参数
wReportPeriod
测试报告上传周期，单位：小时，取值范围：1~168小时（即7天）
wFirstReportTime
从设备启动到第一条测试报告上传时间，取值范围：1~3600分钟
byReportValid
0- 不启用测试报告上传，1- 启用测试报告上传
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMHOSTDIALSETUPMODE

拨号启用方式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableMode;
  BYTE     byCallType;
  BYTE     byRes1[14];
}NET_DVR_ALARMHOSTDIALSETUPMODE, *LPNET_DVR_ALARMHOSTDIALSETUPMODE;

Members

dwSize
结构体大小
byEnableMode
启用方式：0- 不启用，1- 一直启用，2- 网线断启用，正常时关闭
byCallType
上传中心方式：1- 单中心，2- 双中心，3- 一报一备
byRes1
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMIN_INFO

BT28181协议的报警输入通道配置条件结构体。

struct{
  NET_DVR_STREAM_INFO    struStreamInfo;
  DWORD                  dwAlarmInChannel;
  BYTE                   byRes[32];
}NET_DVR_ALARMIN_INFO,*LPNET_DVR_ALARMIN_INFO;

Members

struStreamInfo
流信息
dwAlarmInChannel
报警输入通道号
byRes
保留，置为0

See Also

GB28181包括编码ID规定，详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》（即GB28181协议文档）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ALARMIN_PARAM

防区参数结构体。

struct{
  DWORD                dwSize;
  BYTE                 byName[NAME_LEN];
  WORD                 wDetectorType;
  BYTE                 byType;
  BYTE                 byUploadAlarmRecoveryReport;
  DWORD                dwParam;
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];
  BYTE                 byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                 byAssociateSirenOut[8];
  BYTE                 bySensitivityParam;
  BYTE                 byArrayBypass;
  BYTE                 byJointSubSystem;
  BYTE                 byModuleStatus;
  WORD                 wModuleAddress;
  BYTE                 byModuleChan;
  BYTE                 byModuleType;
  WORD                 wZoneIndex;
  WORD                 wInDelay;
  WORD                 wOutDelay;
  BYTE                 byAlarmType;
  BYTE                 byZoneResistor;
  float                fZoneResistorManual;
  BYTE                 byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN];
  BYTE                 byZoneSignalType;
  BYTE                 byDisableDetectorTypeCfg;
  BYTE                 byTimeOutRange;
  BYTE                 byAssociateLampOut[8];
  WORD                 wTimeOut;
  BYTE                 byDetectorSignalIntensity;
  BYTE                 byTimeOutMethod;
  BYTE                 byRes3[8];
}NET_DVR_ALARMIN_PARAM, *LPNET_DVR_ALARMIN_PARAM;

Members

dwSize
结构体大小
byName
防区名称
wDetectorType
防区探测器类型，取值详见枚举类型DETECTOR_TYPE
byType
防区报警类型，0- 即时防区，1- 24小时有声防区，2- 延时防区，3- 内部防区，4- 钥匙布撤防防区，5- 火警防区，6- 周界防区，7- 24小时无声防区，8- 24小时辅助防区，9- 24小时震动防区，10-门禁紧急开门防区，11-门禁紧急关门防区，12-超时防区，13-紧急防区，0xff- 无
byUploadAlarmRecoveryReport
是否上传防区报警恢复报告：0-不上传，1-上传
dwParam
防区参数，延时防区延时多长时间。动环报警主机和自助行报警主机的延时时间通过这个参数来设置。
具体可通过能力集NET_DVR_ALARMHOST_ABILITY中的bySupportAlarmInDelay字段来判断是否通过该参数，还是通过NET_DVR_ALARMSUBSYSTEMPARAM中的wEnterDelay和wExitDelay，来设置延时时间。
struAlarmTime
布防时间时间段
byAssociateAlarmOut
防区关联报警输出
byAssociateSirenOut
关联警号输出，数组0表示警号1，数组1表示警号2，以此类推。值为1表示输出，0表示不输出
bySensitivityParam
防区灵敏度参数：0- 10ms，1- 250ms，2- 500ms，3- 750ms
byArrayBypass
是否加入旁路组：0- 不支持组旁路，1- 支持组旁路
byJointSubSystem
防区所属的子系统号，该参数只能获取
byModuleStatus
外接防区模块状态：1- 在线，2- 离线，该参数只能获取
wModuleAddress
模块地址，扩展模块从1~253，0xFFFF表示无效，该参数只能获取
byModuleChan
模块通道号，从1开始，最大值根据模块类型来决定，0xFF表示无效，该参数只能获取
byModuleType
模块类型：1- 本地防区，2- 单防区，3- 双防区，4- 8防区，5- 8路模拟量防区，6- 单防区触发器，7-1门就地控制器，8-2门就地控制器，9-4门就地控制器, 10-8防区无线。
wZoneIndex
防区号，该参数只能获取
wInDelay
进入延时，取值范围：0~255秒
wOutDelay
退出延时，取值范围：0~255秒
byAlarmType
报警器类型：0- 无效，1- 常开，2- 常闭
byZoneResistor
防区电阻，单位：千欧，取值：0- 无效，1- 2.2，2- 3.3，3- 4.7，4- 5.6，5- 8.2，0xff- 自定义
fZoneResistorManual
防区手动电阻，取值范围：1.0~10.0，精确到小数点后一位，单位：千欧，byZoneResistor为0xff时有效
byDetectorSerialNo
（只读，不可修改）探测器序列号
byZoneSignalType
防区信号传输类型：0-有线防区，1-无线防区
byDisableDetectorTypeCfg
探测器类型是否不可配：0-可配，1-不可配
byTimeOutRange
超时时间范围，0:1~599s,1:1~65535s
byAssociateLampOut
警灯输出 数组0 表示警灯1 值为1表示输出 0 表示不输出
wTimeOut
超时时间，单位：秒，在byTimeOutRange选择的范围内
byDetectorSignalIntensity
探测器信号强度（只读）：0~100
byTimeOutMethod
超时防区计时方式：0-触发计时，1-恢复计时
byRes3
保留

Remarks

  • 如果能力集NET_DVR_ALARMHOST_ABILITY中的wExpandAlarmInNum大于0，则表示支持防区编号功能，此时，该结构体的参数byJointSubSystem、byModuleStatus、wModuleAddress、byModuleChan、byModuleType以及wZoomZoneIndex有效，支持“获取子系统内防区”、“自动搜索外接模块”和“自动注册外接模块”功能。
  • 下列情况下防区参数不能被修改：(1)防区处于布防状态，(2)防区所在子系统处于布防状态下，(3)主机处于编程模式，(4)主机处于步测模式。
  • DS-19AXX、DS-19SXX系列主机，修改防区类型时，如果该防区处于旁路状态，则会自动旁路恢复。其他系列主机旁路状态下不允许修改防区参数，此时修改参数则返回错误29（设备操作失败）。
  • 防区类型是24小时类的防区，则不允许设置byArrayBypass为1（支持组旁路）。
  • 本地防区的byJointSubSystem，byModuleStatus，wModuleAddress，byModuleChan，byModuleType，wZoneIndex参数不可修改。
  • 超时防区应用场景：①例如某公共区域允许通行但不允许长时间逗留，红外感应探测器持续触发30S才会报警提示。 ②例如只能家居中的应用，某探测器或者自制短接线按钮持续触发多少时间后可以联动XX触发器进行联动输出，比如厕所浴室中，比如门磁长时间未关闭。 ③例如保安亭值班区域，持续10分钟以上不在执勤区域就会后台上报管理中心等等。 场景①②都属于触发计时方式，一旦触发，探测器不会立即恢复状态，超时防区开始计时，超过超时时间，产生报警；场景③属于恢复计时，触发后探测器立即恢复状态，超时防区开发计时，超过超时时间，产生报警。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

    NET_DVR_GetNextRemoteConfig


NET_DVR_ALARMIN_PARAM_LIST

防区参数列表信息结构体。

struct{
  DWORD                           dwSize;
  NET_DVR_SINGLE_ALARMIN_PARAM    struSingleAlarmInParam[MAX_MAX_ALARMIN_NUM];
  BYTE                            byRes[128];
}NET_DVR_ALARMIN_PARAM_LIST,*LPNET_DVR_ALARMIN_PARAM_LIST;

Members

dwSize
结构体大小
struSingleAlarmInParam
单个防区参数，每位数组表示一个防区
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_ALARMIN_PARAM_V50

防区参数结构体。

struct{
  DWORD                dwSize;
  BYTE                 byName[NAME_LEN];
  WORD                 wDetectorType;
  BYTE                 byType;
  BYTE                 byUploadAlarmRecoveryReport;
  DWORD                dwParam;
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];
  BYTE                 byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                 byAssociateSirenOut[8];
  BYTE                 bySensitivityParam;
  BYTE                 byArrayBypass;
  BYTE                 byJointSubSystem;
  BYTE                 byModuleStatus;
  WORD                 wModuleAddress;
  BYTE                 byModuleChan;
  BYTE                 byModuleType;
  WORD                 wZoneIndex;
  WORD                 wInDelay;
  WORD                 wOutDelay;
  BYTE                 byAlarmType;
  BYTE                 byZoneResistor;
  float                fZoneResistorManual;
  BYTE                 byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN_V50];
  BYTE                 byZoneSignalType;
  BYTE                 byDisableDetectorTypeCfg;
  WORD                 wTimeOut;
  BYTE                 byAssociateLampOut[8];
  BYTE                 byVoiceFileName[32];
  BYTE                 byTimeOutRange;
  BYTE                 byDetectorSignalIntensity;
  BYTE                 byTimeOutMethod;
  BYTE                 byDetectorVersion[VERSION_INFO_LEN];
  BYTE                 byDetectorMAC[MACADDR_LEN];
   BYTE                 byLinkageAlarmType;
  BYTE                 byRes3[465];
}NET_DVR_ALARMIN_PARAM_V50, *LPNET_DVR_ALARMIN_PARAM_V50;

Members

dwSize
结构体大小
byName
防区名称
wDetectorType
防区探测器类型，取值详见枚举类型DETECTOR_TYPE
byType
防区报警类型，0- 即时防区，1- 24小时有声防区，2- 延时防区，3- 内部防区，4- 钥匙布撤防防区，5- 火警防区，6- 周界防区，7- 24小时无声防区，8- 24小时辅助防区，9- 24小时震动防区，10-门禁紧急开门防区，11-门禁紧急关门防区，12-超时防区，13-紧急防区，0xff- 无
byUploadAlarmRecoveryReport
是否上传防区报警恢复报告：0-不上传，1-上传
dwParam
防区参数，延时防区延时多长时间。动环报警主机和自助行报警主机的延时时间通过这个参数来设置。
具体可通过能力集NET_DVR_ALARMHOST_ABILITY中的bySupportAlarmInDelay字段来判断是否通过该参数，还是通过NET_DVR_ALARMSUBSYSTEMPARAM中的wEnterDelay和wExitDelay，来设置延时时间。
struAlarmTime
布防时间时间段
byAssociateAlarmOut
防区关联报警输出
byAssociateSirenOut
关联警号输出，数组0表示警号1，数组1表示警号2，以此类推。值为1表示输出，0表示不输出
bySensitivityParam
防区灵敏度参数：0- 10ms，1- 250ms，2- 500ms，3- 750ms
byArrayBypass
是否加入旁路组：0- 不支持组旁路，1- 支持组旁路
byJointSubSystem
防区所属的子系统号，该参数只能获取
byModuleStatus
外接防区模块状态：1- 在线，2- 离线，该参数只能获取
wModuleAddress
模块地址，扩展模块从1~253，0xFFFF表示无效，该参数只能获取
byModuleChan
模块通道号，从1开始，最大值根据模块类型来决定，0xFF表示无效，该参数只能获取
byModuleType
模块类型：1- 本地防区，2- 单防区，3- 双防区，4- 8防区，5- 8路模拟量防区，6- 单防区触发器，7-1门就地控制器，8-2门就地控制器，9-4门就地控制器, 10-8防区无线。
wZoneIndex
防区号，该参数只能获取
wInDelay
进入延时，取值范围：0~255秒
wOutDelay
退出延时，取值范围：0~255秒
byAlarmType
报警器类型：0- 无效，1- 常开，2- 常闭
byZoneResistor
防区电阻，单位：千欧，取值：0- 无效，1- 2.2，2- 3.3，3- 4.7，4- 5.6，5- 8.2，0xff- 自定义
fZoneResistorManual
防区手动电阻，取值范围：1.0~10.0，精确到小数点后一位，单位：千欧，byZoneResistor为0xff时有效
byDetectorSerialNo
探测器序列号（只读）
byZoneSignalType
防区信号传输类型（只读），0-有线防区，1-无线防区
byDisableDetectorTypeCfg
探测器类型是否不可配：0-可配，1-不可配
wTimeOut
超时时间，秒
byRes2
保留
byAssociateLampOut
警灯输出，数组下标0表示警灯1，依次类推。值为1-输出，0-不输出。
byVoiceFileName
语音文件名
byTimeOutRange
超时时间范围，0:0~599s,1:0~65535s
byDetectorSignalIntensity
探测器信号强度：0~100
byTimeOutRange
超时防区计时方式：0-触发计时，1-恢复计时
byDetectorVersion
探测器版本，只读
byDetectorMAC
探测器MAC地址，只读
byLinkageAlarmType
关联报警类型：1-火警，2-监管，3-联动，4-屏蔽，5-故障
byRes3
保留

Remarks

  • 如果能力集NET_DVR_ALARMHOST_ABILITY中的wExpandAlarmInNum大于0，则表示支持防区编号功能，此时，该结构体的参数byJointSubSystem、byModuleStatus、wModuleAddress、byModuleChan、byModuleType以及wZoomZoneIndex有效，支持“获取子系统内防区”、“自动搜索外接模块”和“自动注册外接模块”功能。
  • 下列情况下防区参数不能被修改：(1)防区处于布防状态，(2)防区所在子系统处于布防状态下，(3)主机处于编程模式，(4)主机处于步测模式。
  • DS-19AXX、DS-19SXX系列主机，修改防区类型时，如果该防区处于旁路状态，则会自动旁路恢复。其他系列主机旁路状态下不允许修改防区参数，此时修改参数则返回错误29（设备操作失败）。
  • 防区类型是24小时类的防区，则不允许设置byArrayBypass为1（支持组旁路）。
  • 本地防区的byJointSubSystem，byModuleStatus，wModuleAddress，byModuleChan，byModuleType，wZoneIndex参数不可修改。
  • 超时防区应用场景：①例如某公共区域允许通行但不允许长时间逗留，红外感应探测器持续触发30S才会报警提示。 ②例如只能家居中的应用，某探测器或者自制短接线按钮持续触发多少时间后可以联动XX触发器进行联动输出，比如厕所浴室中，比如门磁长时间未关闭。 ③例如保安亭值班区域，持续10分钟以上不在执勤区域就会后台上报管理中心等等。 场景①②都属于触发计时方式，一旦触发，探测器不会立即恢复状态，超时防区开始计时，超过超时时间，产生报警；场景③属于恢复计时，触发后探测器立即恢复状态，超时防区开发计时，超过超时时间，产生报警。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

    NET_DVR_GetNextRemoteConfig


NET_DVR_ALARMIN_SETUP

防区参数结构体。

struct{
  BYTE    byAssiciateAlarmIn[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE    byRes[100];
}NET_DVR_ALARMIN_SETUP, *LPNET_DVR_ALARMIN_SETUP;

Members

byAssiciateAlarmIn
防区通道，数组下标0对应防区1，依次类推，例如：byAssiciateAlarmIn[i]=1表示对防区i+1进行布防
byRes
保留

See Also

NET_DVR_AlarmHostSetupAlarmChan
NET_DVR_AlarmHostCloseAlarmChan
NET_DVR_BypassAlarmChan
NET_DVR_UnBypassAlarmChan


NET_DVR_ALARMIN_TRIGGER_COND

防区报警联动配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwAlarmInNo;
  BYTE     byRes[256];
}NET_DVR_ALARMIN_TRIGGER_COND,*LPNET_DVR_ALARMIN_TRIGGER_COND;

Members

dwSize
结构体大小
dwChannel
通道号，从1开始
dwRegion
防区号，从0开始
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ALARMINCFG

报警输入参数结构体。

struct{
  DWORD                         dwSize;
  BYTE                          sAlarmInName[NAME_LEN];
  BYTE                          byAlarmType;
  BYTE                          byAlarmInHandle;
  BYTE                          byChannel;
  BYTE                          byRes1;
  NET_DVR_HANDLEEXCEPTION       struAlarmHandleType;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];
  BYTE                          byRelRecordChan[MAX_CHANNUM];
  BYTE                          byEnablePreset[MAX_CHANNUM];
  BYTE                          byPresetNo[MAX_CHANNUM];
  BYTE                          byEnableCruise[MAX_CHANNUM];
  BYTE                          byCruiseNo[MAX_CHANNUM];
  BYTE                          byEnablePtzTrack[MAX_CHANNUM];
  BYTE                          byPTZTrack[MAX_CHANNUM];
}NET_DVR_ALARMINCFG,*LPNET_DVR_ALARMINCFG;

Members

dwSize
结构体大小
sAlarmInName
名称
byAlarmType
报警器类型：0-常开，1-常闭
byAlarmInHandle
是否处理：0-不处理，1-处理
byChannel
报警输入触发智能识别通道
byRes1
保留
struAlarmHandleType
处理方式
struAlarmTime
布防时间参数
byRelRecordChan
报警触发的录象通道,为1表示触发该通道
byEnablePreset
是否调用预置点：0-否，1-是
byPresetNo
调用的云台预置点序号，一个报警输入可以调用多个通道的云台预置点
byEnableCruise
是否调用巡航：0-否，1-是
byCruiseNo
巡航路径序号
byEnablePtzTrack
是否调用花样扫描路径：0-否，1-是
byPTZTrack
调用的云台的花样扫描路径序号

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_ALARMINCFG_V30


NET_DVR_ALARMINCFG_V30

报警输入参数结构体。

struct{
  DWORD                            dwSize;
  BYTE                             sAlarmInName[NAME_LEN];
  BYTE                             byAlarmType;
  BYTE                             byAlarmInHandle;
  BYTE                             byChannel;
  BYTE                             byInputType;
  NET_DVR_HANDLEEXCEPTION_V30      struAlarmHandleType;
  NET_DVR_SCHEDTIME                struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                             byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                             byEnablePreset[MAX_CHANNUM_V30];
  BYTE                             byPresetNo[MAX_CHANNUM_V30];
  BYTE                             byRes2[192];
  BYTE                             byEnableCruise[MAX_CHANNUM_V30];
  BYTE                             byCruiseNo[MAX_CHANNUM_V30];
  BYTE                             byEnablePtzTrack[MAX_CHANNUM_V30];
  BYTE                             byPTZTrack[MAX_CHANNUM_V30];
  BYTE                             byRes3[16];
}NET_DVR_ALARMINCFG_V30,*LPNET_DVR_ALARMINCFG_V30;

Members

dwSize
结构体大小
sAlarmInName
名称
byAlarmType
报警器类型：0-常开，1-常闭
byAlarmInHandle
是否处理：0-不处理，1-处理
byChannel
报警输入触发智能识别通道
byInputType
输入类型：0-开关量方式(对应“信号量报警”类型)，1-脉冲模式(对应“脉冲报警”类型)
struAlarmHandleType
处理方式
struAlarmTime
布防时间参数
byRelRecordChan
报警触发的录象通道，为1表示触发该通道
byEnablePreset
通道是否启动调用预置点（每个数组对应一个通道）：0-否，1-是
byPresetNo
通道调用的云台预置点序号，一个报警输入可以调用多个通道的云台预置点（每个通道仅限一个预置点）
byRes2
保留，置为0
byEnableCruise
是否调用巡航：0-否，1-是
byCruiseNo
巡航路径
byEnablePtzTrack
是否调用花样扫描路径：0-否，1-是
byPTZTrack
调用的云台的花样扫描路径序号
byRes3
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_ALARMINCFG_V40

该结构扩展源于

NET_DVR_ALARMINCFG


NET_DVR_ALARMINCFG_V40

报警输入参数（扩展）结构体。

struct{
  DWORD                        dwSize;
  BYTE                         sAlarmInName[NAME_LEN];
  BYTE                         byAlarmType;
  BYTE                         byAlarmInHandle;
  BYTE                         byChannel;
  BYTE                         byInputType;
  DWORD                        dwHandleType;
  DWORD                        dwMaxRelAlarmOutChanNum;
  DWORD                        dwRelAlarmOutChanNum;
  DWORD                        dwRelAlarmOut[MAX_ALARMOUT_V40];
  NET_DVR_SCHEDTIME            struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  DWORD                        dwMaxRecordChanNum;
  DWORD                        dwCurRecordChanNum;
  DWORD                        dwRelRecordChan[MAX_CHANNUM_V40];
  DWORD                        dwMaxEnablePtzCtrlNun;
  DWORD                        dwEnablePresetChanNum;
  NET_DVR_PRESETCHAN_INFO      struPresetChanInfo[MAX_CHANNUM_V40];
  BYTE                         byPresetDurationTime[MAX_CHANNUM_V40];
  BYTE                         byRes2[4];
  DWORD                        dwEnableCruiseChanNum;
  NET_DVR_CRUISECHAN_INFO      struCruiseChanInfo[MAX_CHANNUM_V40];
  DWORD                        dwEnablePtzTrackChanNum;
  NET_DVR_PTZTRACKCHAN_INFO    struPtzTrackInfo[MAX_CHANNUM_V40];
  BYTE                         byRes[256];
}NET_DVR_ALARMINCFG_V40,*LPNET_DVR_ALARMINCFG_V40;

Members

dwSize
结构体大小
sAlarmInName
报警输入名称
byAlarmType
报警器类型：0-常开，1- 常闭
byAlarmInHandle
是否处理：0- 不处理，1- 处理
byChannel
报警输入触发智能识别通道
byInputType
输入类型：0-开关量方式(对应“信号量报警”类型)，1-脉冲模式(对应“脉冲报警”类型)
dwHandleType
异常处理，异常处理方式的"或"结果：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: 触发JPRG抓图并上传Email
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前只有PCNVR支持)
0x200: 抓图并上传FTP
0x1000: 抓图上传到云存储
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心
dwMaxRelAlarmOutChanNum
设备最大支持的触发报警输出通道数（只读）
dwRelAlarmOutChanNum
已配置的触发的报警输出通道个数
dwRelAlarmOut
触发报警输出号，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效
例如：dwRelAlarmOut[8]=0xffffffff，则配置触发报警输出通道dwRelAlarmOut[0]~dwRelAlarmOut[7]
struAlarmTime
布防时间，一周7天，每天可以设置8个时间段
dwMaxRecordChanNum
设备支持的最大关联录像通道数（只读）
dwCurRecordChanNum
报警触发的录像通道数实际支持数，即当前包含的通道个数
dwRelRecordChan
实际触发录像通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效
例如：dwRelRecordChan[8]=0xffffffff，则报警联动录像通道为dwRelRecordChan[0]~dwRelRecordChan[7]
dwMaxEnablePtzCtrlNun
最大可启用的云台控制总数(只读)
dwEnablePresetChanNum
当前已启用预置点的数目
struPresetChanInfo
启用的预置点信息：当dwEnablePresetChanNum不为0时，struPresetChanInfo[0]~struPresetChanInfo[dwEnablePresetChanNum-1]有效；为0表示未启用预置点
byPresetDurationTime
预置点停留时间，取值范围：0~20，单位：s，默认：10s
byRes2
保留，置为0
dwEnableCruiseChanNum
当前已启用巡航的通道数目
struCruiseChanInfo
启用巡航功能通道的信息：当dwEnableCruiseChanNum不为0时，struCruiseChanInfo[0]~struCruiseChanInfo[dwEnableCruiseChanNum-1]有效；为0表示未启用巡航
dwEnablePtzTrackChanNum
当前已启云台花样扫描路径通道数目
struPtzTrackInfo
调用云台花样扫描路径的通道信息：当dwEnablePtzTrackChanNum不为0时，struPtzTrackInfo[0]~struPtzTrackInfo[dwEnablePresetChanNum-1]有效；为0表示未启用花样扫描
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_ALARMINCFG_V30


NET_DVR_ALARMINFO

上传的报警信息结构体。

struct{
  DWORD     dwAlarmType;
  DWORD     dwAlarmInputNumber;
  DWORD     dwAlarmOutputNumber[MAX_ALARMOUT];
  DWORD     dwAlarmRelateChannel[MAX_CHANNUM];
  DWORD     dwChannel[MAX_CHANNUM];
  DWORD     dwDiskNumber[MAX_DISKNUM];
}NET_DVR_ALARMINFO,*LPNET_DVR_ALARMINFO;

Members

dwAlarmType
报警类型： 0－信号量报警； 1－硬盘满； 2－信号丢失； 3－移动侦测； 4－硬盘未格式化； 5－读写硬盘出错； 6－遮挡报警； 7－制式不匹配； 8－非法访问；
dwAlarmInputNumber
报警输入端口。当报警类型为9时该变量表示串口状态：0表示正常，0xffffffff表示异常
dwAlarmOutputNumber
触发的报警输出端口。当报警类型为信号量报警时，值为1表示该报警端口输出
dwAlarmRelateChannel
触发的录像通道。当报警类型为信号量报警时，值为1表示该通道录像，如dwAlarmRelateChannel[0]表示触发第1个通道录像
dwChannel
发生报警的通道。当报警类型为2，3，6时有效，如dwChannel[0]值为1表示第1个通道报警
dwDiskNumber
发生报警的硬盘。当报警类型为1，4，5时有效，dwDiskNumber[0]值为1表示1号硬盘异常

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMINFO_DEV

设备报警信息结构体。

struct{
  DWORD            dwAlarmType;
  NET_DVR_TIME     struTime;
  BYTE             byRes[32];
  DWORD            dwNumber;
  WORD             *pNO;
}NET_DVR_ALARMINFO_DEV, *LPNET_DVR_ALARMINFO_DEV;

Members

dwAlarmType
报警信息类型：0- 编码器(通道)信号量报警，1- 私有卷二损坏，2- NVR服务退出，3- 编码器状态异常，4- 系统时钟异常，5-录像卷剩余容量过低， 6- 编码器(通道)移动侦测报警，7-编码器(通道)遮挡报警
struTime
报警时间
byRes
保留，置为0
dwNumber
发生报警的通道数目
pNO
dwNumber个WORD; 每个WORD表示一个通道号，或者磁盘号

Remarks

当类型为0、3、6、7时，可能会有通道号；当类型为5时，可能会有磁盘号。可表示的值范围为0~65535。

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMINFO_DEV_V40

CVR设备报警信息结构体。

struct{
  DWORD                          dwAlarmType;
  NET_DVR_TIME                   struTime;
  NET_ALARM_CVR_SUBINFO_UNION    uSubAlarmInfo;
  BYTE                           byRes[256];
  DWORD                          dwNumber;
  WORD                           *pNO;
}NET_DVR_ALARMINFO_DEV_V40, *LPNET_DVR_ALARMINFO_DEV_V40;

Members

dwAlarmType
报警信息类型：0-编码器(通道)信号量报警，1-私有卷二损坏，2- NVR服务退出，3-编码器状态异常，4-系统时钟异常，5-录像卷剩余容量过低，6-编码器(通道)移动侦测报警，7-编码器(通道)遮挡报警，8-录像丢失报警，9-视频实时监测报警，10-资源使用率告警，11- CVR自动修复异常，12-录像异常
struTime
报警时间
uSubAlarmInfo
报警信息子结构，报警类型为8、9、10、12时该联合体有效
byRes
保留，置为0
dwNumber
发生报警的通道数目
pNO
dwNumber个WORD，每个WORD表示一个通道号或者磁盘号。
当类型为0、3、6、7时，可能会有通道号；当类型为5时，可能会有磁盘号。可表示的值范围为0~65535。

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMINFO_V30

上传的报警信息结构体。

struct{
  DWORD     dwAlarmType;
  DWORD     dwAlarmInputNumber;
  BYTE      byAlarmOutputNumber[MAX_ALARMOUT_V30];
  BYTE      byAlarmRelateChannel[MAX_CHANNUM_V30];
  BYTE      byChannel[MAX_CHANNUM_V30];
  BYTE      byDiskNumber[MAX_DISKNUM_V30];
}NET_DVR_ALARMINFO_V30,*LPNET_DVR_ALARMINFO_V30;

Members

dwAlarmType
报警类型：0-信号量报警，1-硬盘满，2-信号丢失，3-移动侦测，4-硬盘未格式化，5-读写硬盘出错，6-遮挡报警，7-制式不匹配，8-非法访问，9-视频信号异常，10-录像/抓图异常，11-智能场景变化，12-阵列异常，13-前端/录像分辨率不匹配，15-智能侦测，16-POE供电异常，17-闪光灯异常，18-磁盘满负荷异常报警，19-音频丢失，23-脉冲报警，24-人脸库硬盘异常，25-人脸库变更，26-人脸库图片变更
dwAlarmInputNumber
报警输入端口，当报警类型为0、23时有效
byAlarmOutputNumber
触发的报警输出端口，值为1表示该报警端口输出，如byAlarmOutputNumber[0]=1表示触发第1个报警输出口输出，byAlarmOutputNumber[1]=1表示触发第2个报警输出口，依次类推。
byAlarmRelateChannel
触发的录像通道，值为1表示该通道录像，如byAlarmRelateChannel[0]=1表示触发第1个通道录像
byChannel
发生报警的通道。当报警类型为2、3、6、9、10、11、13、15、16时有效，如byChannel[0]=1表示第1个通道报警
byDiskNumber
发生报警的硬盘。当报警类型为1，4，5时有效，byDiskNumber[0]=1表示1号硬盘异常

Remarks

“人脸库图片变更”报警信息上传时间间隔为1小时；其他类型都是实时上传，有报警的时候每秒上传一次。目前不支持修改上传时间间隔。

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMINFO_V40

上传的报警信息结构体。

struct{
  NET_DVR_ALRAM_FIXED_HEADER    struAlarmFixedHeader;
  DWORD                         *pAlarmData;
}NET_DVR_ALARMINFO_V40, *LPNET_DVR_ALARMINFO_V40;

Members

struAlarmFixedHeader
报警固定部分
pAlarmData
报警可变部分内容

Remarks

struAlarmFixedHeader中dwAlarmType取值 | 含义 | pAlarmData对应内容
0、23 | 信号量报警、脉冲报警 | dwTrigerAlarmOutNum*(DWORD)报警输出口号+dwTrigerRecordChanNum*(DWORD)通道号
2、3、6、9、10、11、13、15、16、19 | 信号丢失、移动侦测、遮挡报警、视频信号异常、录像异常、智能场景变化、前端/录像分辨率不匹配、智能侦测、POE供电异常、音频丢失 | dwAlarmChanNum*(DWORD)通道号
1、4、5 | 硬盘满、硬盘未格式化、写硬盘出错 | dwAlarmHardDiskNum*(DWORD)硬盘号
7、8、12、17、18、24、25、26 | 制式不匹配、非法访问、阵列异常、录播主机报警、TME语音对讲请求报警、人脸库硬盘异常、人脸库变更、人脸库图片变更 | 无

Remarks

“人脸库图片变更”报警信息上传时间间隔为1小时；其他类型都是实时上传，有报警的时候每秒上传一次。目前不支持修改上传时间间隔。

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_ALARMOUT_PARAM

触发器参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byName[NAME_LEN];
  WORD     wDelay;
  WORD     wTriggerIndex;
  BYTE     byAssociateAlarmIn[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byModuleType;
  BYTE     byModuleStatus;
  WORD     wModuleAddress;
  BYTE     byModuleChan;
  BYTE     byWorkMode;
  BYTE     byAlarmOutMode;
  BYTE     byTimeOn;
  BYTE     byTimeOff;
  BYTE     byRes2[51];
}NET_DVR_ALARMOUT_PARAM, *LPNET_DVR_ALARMOUT_PARAM;

Members

dwSize
结构体大小
byName
触发器名称
wDelay
输出延迟，单位：秒。其取值范围如下：
网络报警主机、总线式网络报警主机、视频报警主机：0~5999，0表示有报警时候输出而无报警时候关闭
动环报警主机V1.0：0~65535， 0表示一直输出
自助行报警主机、动环报警主机V2.0：0~5999，0表示一直输出
wTriggerIndex
触发器号
byAssociateAlarmIn
触发器跟随的防区通道（多个防区同时触发一个警号输出），byAssociateAlarmIn[0]表示防区1，byAssociateAlarmIn[1]表示防区2，依次类推，值：0- 不跟随，1- 跟随
byModuleType
外接触发器模块类型：1- 本地触发器，2- 4路触发器，3- 8路触发器，4- 单防区触发器，5- 32路触发器，6-1门就地控制器，7-2门就地控制器，8-4门就地控制器，9-2路触发器
byModuleStatus
外接触发器模块状态：1- 在线，2- 离线
wModuleAddress
外接触发器模块地址，扩展模块从1~253，0xFFFF表示无效
byModuleChan
外接触发器模块通道号，从1开始，最大值根据模块类型来决定，0xFF表示无效
byWorkMode
工作模式：1- 联动，2- 随动
byAlarmOutMode
输出模式：1- 非脉冲模式，2- 脉冲模式
byTimeOn
开时间，取值范围：1~60，单位：s
byTimeOff
关时间，取值范围：1~60，单位：s
byRes2
保留

Remarks

  • 本地触发器的wTriggerIndex、byModuleType、byModuleStatus、wModuleAddress和byModuleChan参数不支持修改，只能获取。
  • 如果能力集NET_DVR_ALARMHOST_ABILITY中的wExpandAlarmOutNum大于0，则表示支持触发器编号功能，此时，该结构体的参数wTriggerIndex、byModuleType、byModuleStatus、wModuleAddress和byModuleChan有效，支持“获取所有触发器”、“自动搜索外接模块”和“自动注册外接模块”功能。
  • 下列情况下触发器参数不能被修改：主机处于编程模式，或者主机处于步测模式。
  • 单防区触发器的防区通道号为1，触发器通道号为2。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetNextRemoteConfig


NET_DVR_ALARMOUTCFG

报警输出参数结构体。

struct{
  DWORD                   dwSize;
  BYTE                    sAlarmOutName[NAME_LEN];
  DWORD                   dwAlarmOutDelay;
  NET_DVR_SCHEDTIME       struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT];
}NET_DVR_ALARMOUTCFG,*LPNET_DVR_ALARMOUTCFG;

Members

dwSize
结构体大小
sAlarmOutName
名称
dwAlarmOutDelay
输出信号状态维持时间，0-5秒，1-10秒，2-30秒，3-1分钟，4-2分钟，5-5分钟，6-10分钟，7-手动（需手动关闭），传入其他不正确的值设备默认为5分钟
struAlarmOutTime
报警输出激活时间段

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_ALARMOUTCFG_V30


NET_DVR_ALARMOUTCFG_V30

报警输出参数结构体。

struct{
  DWORD                   dwSize;
  BYTE                    sAlarmOutName[NAME_LEN];
  DWORD                   dwAlarmOutDelay;
  NET_DVR_SCHEDTIME       struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                    byAlarmOutHandle;
  BYTE                    byNormalSatus;
  BYTE                    byRes[14];
}NET_DVR_ALARMOUTCFG_V30,*LPNET_DVR_ALARMOUTCFG_V30;

Members

dwSize
结构体大小
sAlarmOutName
名称
dwAlarmOutDelay
输出信号状态维持时间，0-5秒，1-10秒，2-30秒，3-1分钟，4-2分钟，5-5分钟，6-10分钟，7-手动（需手动关闭），传入其他不正确的值设备默认为5分钟
struAlarmOutTime
报警输出激活时间段
byAlarmOutHandle
是否处理：0- 处理，1- 不处理
byNormalSatus
报警输出类型：0- 常开，1- 常闭
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_ALARMOUTCFG


NET_DVR_ALARMOUTSTATUS

报警输出状态结构体。

struct{
  BYTE      Output[MAX_ALARMOUT];
}NET_DVR_ALARMOUTSTATUS,*LPNET_DVR_ALARMOUTSTATUS;

Members

Output
报警输出口的状态：0-无效，1-有效

See Also

NET_DVR_GetAlarmOut


NET_DVR_ALARMOUTSTATUS_V30

报警输出状态结构体。

struct{
  BYTE      Output[MAX_ALARMOUT_V30];
}NET_DVR_ALARMOUTSTATUS_V30,*LPNET_DVR_ALARMOUTSTATUS_V30;

Members

Output
报警输出口的状态：0-无输出，1-有输出

See Also

NET_DVR_GetAlarmOut_V30


NET_DVR_ALARMSTRATEGY_PARAM

报警策略参数结构体。

struct{
  BYTE     byStrategyType;
  BYTE     byRes[15];
}NET_DVR_ALARMSTRATEGY_PARAM, *LPNET_DVR_ALARMSTRATEGY_PARAM;

Members

byStrategyType
策略类型：0~任意报警，1~协同报警，2~多系统报警, 3~指定火点报警，4~指定烟雾报警
byRes
保留

Remarks

  • 设备是否支持火点检测配置能力或者支持的参数能力，可以通过设备能力集进行判断，对应火点检测配置能力集(FireDetection)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FIREDETECTION_CAPABILITIES。

See Also

NET_DVR_FIREDETECTION_CFG


NET_DVR_ALARMSUBSYSTEMPARAM

划分子系统结构体。

struct{
  DWORD                       dwSize;
  WORD                        wEnterDelay;
  WORD                        wExitDealy;
  BYTE                        byHostageReport;
  BYTE                        bySubsystemEnable;
  BYTE                        byKeyToneOfArmOrDisarm;
  BYTE                        byKeyToneOfManualTestReport;
  WORD                        wDelayTime;
  BYTE                        byRes1;
  BYTE                        byPublicAttributeEnable;
  NET_DVR_JOINT_SUB_SYSTEM    struJointSubSystem;
  BYTE                        byKeyZoneArm;
  BYTE                        byKeyZoneArmReport;
  BYTE                        byKeyZoneDisarm;
  BYTE                        byKeyZoneDisarmReport;
  BYTE                        bySubSystemID[MAX_SUBSYSTEM_ID_LEN];
  BYTE                        byKeyZoneArmReportEnable;
  BYTE                        byKeyZoneArmEnable;
  BYTE                        byOneKeySetupAlarmEnable;
  BYTE                        bySingleZoneSetupAlarmEnable;
  BYTE                        byCenterType;
  BYTE                        sCenterAccount[ACCOUNTNUM_LEN];
  BYTE                        sCenterAccountV40[ACCOUNTNUM_LEN_32];
  BYTE                        byRes2[565];
}NET_DVR_ALARMSUBSYSTEMPARAM, *LPNET_DVR_ALARMSUBSYSTEMPARAM;

Members

dwSize
结构体大小
wEnterDelay
进入延时，单位：秒，取值范围：10~150。动环监控主机和自助行报警主机的延时时间在NET_DVR_ALARMIN_PARAM中的dwParam来设置延时时间。具体用哪种设置方式进行设置，请通过能力集NET_DVR_ALARMHOST_ABILITY中的bySupportAlarmInDelay字段来判断。
wExitDealy
退出延时，单位：秒，取值范围：10~300
byHostageReport
挟持报告：0- 不启用，1- 启用
bySubsystemEnable
子系统使能：0- 不启用，1- 启用
byKeyToneOfArmOrDisarm
键盘提示成功发送布撤防报告：0- 键盘不提示，1- 键盘输出提示音
byKeyToneOfManualTestReport
键盘提示成功发送测试报告：0- 键盘不提示，1- 键盘输出提示音
wDelayTime
警号输出延时，单位：秒。当能力集中dwSupport1中的bit0位为1时，使用该参数设置警号输出时间；bit0为0时，使用NET_DVR_SIREN_PARAM中的wDelay参数设置警号输出时间。
其取值范围如下：
网络报警主机：1~65535
总线式网络报警主机：1~5999
视频报警主机：1~65535
动环报警主机：0~65535， 0表示一直输出
防护舱控制器：1~65535
自助行报警主机：0~5999，0表示一直输出
byRes1
保留
byPublicAttributeEnable
是否为公共子系统：0- 否，1- 是
struJointSubSystem
关联的子系统信息。公共子系统不能关联自己，关联最大的个数从能力集获取。
byKeyZoneArm
是否支持钥匙布撤防防区对子系统进行布防操作：0- 不支持，1- 支持
byKeyZoneArmReport
是否支持钥匙布撤防防区对子系统布防时发送布防报告：0- 不支持，1- 支持
byKeyZoneDisarm
是否支持钥匙布撤防防区对子系统进行撤防操作：0- 不支持，1- 支持
byKeyZoneDisarmReport
是否支持钥匙布撤防防区对子系统进行撤防操作时发送撤防报告：0- 不支持，1- 支持
bySubSystemID
子系统ID
byKeyZoneArmReportEnable
钥匙防区上传布防报告使能：0-禁能，1-使能
byKeyZoneArmEnable
钥匙防区使能：0-禁能，1-使能
byOneKeySetupAlarmEnable
一键布防使能：0-禁能，1-使能
bySingleZoneSetupAlarmEnable
单防区布撤防使能：0-禁能，1-使能
byCenterType
0-无效, 1-中心账号(长度6)，2-扩展的中心账号(长度32)
sCenterAccount
中心帐号
sCenterAccountV40
扩展的中心帐号，使用此字段时sCenterAccount无效
byRes2
保留

Remarks

  • 是否支持“公共子系统”功能，通过能力集NET_DVR_ALARMHOST_ABILITY参数byPublicSubSystemNum进行判断：大于0表示支持，byPublicAttributeEnable、struJointSubSystem这两个参数有效；等于0时，这2个参数无效。
  • 是否支持“键盘提示成功发送报告”配置，通过能力集NET_DVR_ALARMHOST_ABILITY参数dwSupport1的bit10进行判断：bit10==1时，byKeyToneOfArmOrDisarm、byKeyToneOfManualTestReport这两个参数有效；bit10==0时，这2个参数无效。
  • 是否支持“钥匙布撤防防区”操作子系统，通过能力集NET_DVR_ALARMHOST_ABILITY参数dwSupport1的bit9进行判断：bit9==1时，byKeyZoomZoneArm、byKeyZoomZoneArmReport、byKeyZoomZoneDisarm、byKeyZoomZoneDisarmReport这4个参数有效；bit9==0时，这4个参数无效。
  • “挟持报告”，举例说明：银行被歹徒挟持，歹徒需要你输入密码来关闭银行监控，此时可以输入“挟持密码”，挟持密码输入后，监控设备会按正常流程关闭。但是报警主机会向报警中心发送一条挟持报告，报警中心就可以知道事发地点发生了挟持事件。
  • 设置或获取子系统参数(子系统的数量从能力集NET_DVR_ALARMHOST_ABILITY获取， wSubSystemNum)。
  • 参数wDelayTime，当能力集NET_DVR_ALARMHOST_ABILITY中dwSupport1中的bit0位为1时，使用该参数设置警号输出时间。bit0为0时，使用NET_DVR_SIREN_PARAM中的wDelay设置警号输出时间。
  • DS-19AXX, DS-19SXX系列下列情况下子系统配置不能被设置：防区处于布防状态，防区所在子系统处于布防状态，主机处于编程模式，主机处于步测模式。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ALARMWIRELESSINFO

无线网络信息上传。

struct{
  BYTE                        byDeviceID[NAME_LEN];
  float                       fDataTraffic;
  BYTE                        bySignalIntensity;
  BYTE                        byRes[127];
}NET_DVR_ALARMWIRELESSINFO, *LPNET_DVR_ALARMWIRELESSINFO;

Members

byDeviceID
设备ID
fDataTraffic
已用流量,单位：MB,小数点后两位
bySignalIntensity
信号强度，0~100
byRes
保留，置为0

See Also

NET_DVR_StartListen_V30 NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_ALRAM_FIXED_HEADER

报警信息固定部分参数结构体。

struct{
  DWORD                       dwAlarmType;
  NET_DVR_TIME_EX             struAlarmTime;
  union{
         BYTE                 byUnionLen[128];
         struct{
           DWORD              dwAlarmInputNo;
           DWORD              dwTrigerAlarmOutNum;
           DWORD              dwTrigerRecordChanNum;
         }struIOAlarm;
         struct{
           DWORD              dwAlarmChanNum;
         }struAlarmChannel;
         struct{
           DWORD              dwAlarmHardDiskNum;
         }struAlarmHardDisk;
         struct{
           BYTE               bySubAlarmType;
           BYTE               byRes1[3];
           NET_DVR_TIME_EX    struRecordEndTime;
           BYTE               byRes[116];
         }struRecordingHost;
  }uStruAlarm;
      BYTE                                   byTimeDiffFlag;
  signed char                       cTimeDifferenceH;
  signed char                      cTimeDifferenceM;
  BYTE                byRes[5];
}NET_DVR_ALRAM_FIXED_HEADER,*LPNET_DVR_ALRAM_FIXED_HEADER;

Members

dwAlarmType
报警信息类型：0-信号量报警，1-硬盘满，2-信号丢失，3-移动侦测，4-硬盘未格式化，5-写硬盘出错，6-遮挡报警，7-制式不匹配，8-非法访问，9-视频信号异常，10-录像异常，11-智能场景变化，12-阵列异常，13-前端/录像分辨率不匹配，15-智能侦测，16-POE供电异常，17-录播主机报警，18-语音对讲请求报警(TME)，23-脉冲报警，24-人脸库硬盘异常，25-人脸库变更，26-人脸库图片变更
dwAlarmType为0、23对应联合体中结构struIOAlarm，dwAlarmType为2、3、6、9、10、11、13、15、16对应联合体中结构struAlarmChannel，dwAlarmType为1、4、5对应联合体中结构struAlarmHardDisk，dwAlarmType为17对应联合体中结构struRecordingHost，其他取值时联合体参数无效
struAlarmTime
报警时间
uStruAlarm为报警信息联合体
byUnionLen
联合体大小，128字节
struIOAlarm结构为报警输入参数
dwAlarmInputNo
发生报警的报警输入通道号，一次只有一个
dwTrigerAlarmOutNum
触发的报警输出个数，用于从NET_DVR_ALARMINFO_V40的pAlarmData(变长数据部分)计算出所有触发的报警输出通道号，四字节表示一个报警输出
dwTrigerRecordChanNum
触发的录像通道个数，用于从NET_DVR_ALARMINFO_V40的pAlarmData(变长数据部分)计算出所有触发的录像通道号，四字节表示一个通道
struAlarmChannel结构为报警通道参数
dwAlarmChanNum
发生报警通道数据个数，用于从NET_DVR_ALARMINFO_V40的pAlarmData(变长数据部分)计算出所有发生的报警通道号，四字节表示一个报警通道
struAlarmHardDisk结构为报警硬盘参数
dwAlarmHardDiskNum
发生报警的硬盘个数，用于从NET_DVR_ALARMINFO_V40的pAlarmData(变长数据部分)计算出所有发生报警的硬盘号，四节表示一个硬盘
struRecordingHost结构为录播主机专用报警参数
bySubAlarmType
报警子类型：1- 一键延迟录像
byRes1
保留，置为0
struRecordEndTime
录播结束时间
byRes
保留，置为0
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

See Also

NET_DVR_ALARMINFO_V40


NET_DVR_ANALOGINPUTSTATUS

模拟输入状态结构体。

struct{
  DWORD    dwLostFrame;
  BYTE     byHaveSignal;
  BYTE     byVideoFormat;
  BYTE     byRes[46];
}NET_DVR_ANALOGINPUTSTATUS,*LPNET_DVR_ANALOGINPUTSTATUS;

Members

dwLostFrame
视频输入丢帧数
byHaveSignal
是否有视频信号输入：0- 否，1- 是
byVideoFormat
视频制式：1- NTSC，2- PAL，0- 无
byRes
保留

See Also

NET_DVR_INPUTSTATUS_UNION


NET_DVR_ANALOGSCREEN

模拟屏幕信息结构体。

struct{
  BYTE                   byDevSerPortNum;
  BYTE                   byScreenSerialPort;
  BYTE                   byRes[130];
  NET_DVR_MATRIX_CFG     struMatrixCfg;
}NET_DVR_ANALOGSCREEN, *LPNET_DVR_ANALOGSCREEN;

Members

byDevSerPortNum
设备连接的串口号
byScreenSerialPort
大屏连接的串口号
byRes
保留，置为0
struMatrixCfg
模拟矩阵配置，目前不支持，保留

See Also

NET_DVR_SCREEN_UNION


NET_DVR_ANR_ARMING_HOST

断网续传主机信息结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struANRArmingHostIpAddr;
  WORD              wANRAlarmHostPort;
  BYTE              byANRAlarmType;
  BYTE              byConfirmMechanismEnabled;
  BYTE              byRes[512];
}NET_DVR_ANR_ARMING_HOST, *LPNET_DVR_ANR_ARMING_HOST;

Members

dwSize
结构体大小
struANRArmingHostIpAddr
断网续传的主机IP地址
wANRAlarmHostPort
断网续传的主机端口号
byANRAlarmType
断网续传连接类型：0- SDK私有断网续传连接，1- ehome断网续传连接
byConfirmMechanismEnabled
是否开启确认机制方式布防连接：0- 保留（设备不支持），1- 没有开启，2- 开启
byRes
保留，置为0

Remarks

  • 此处断网续传针对的是报警布防，获取对该设备进行布防并且使能断网续传功能（NET_DVR_SETUPALARM_PARAM中的参数byBrokenNetHttp）的主机信息。
  • 断网续传数据确认机制，通过调用NET_DVR_SetupAlarmChan_V41布防时启用，对应NET_DVR_SETUPALARM_PARAM结构体里面的bySupport的bit1赋值为1。

See Also

NET_DVR_GetSTDConfig


NET_DVR_ANTI_SNEAK_CFG

反潜回配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwStartCardReaderNo;
  BYTE     byRes2[64];
}NET_DVR_ANTI_SNEAK_CFG,*LPNET_DVR_ANTI_SNEAK_CFG;

Members

dwSize
结构体大小
byEnable
使能反潜回功能：0- 不使能，1- 使能
byRes1
保留，置为0
dwStartCardReaderNo
反潜回起始读卡器编号
byRes2
保留，置为0

Remarks

互锁和反潜回功能不能同时生效。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ANTI_SNEAK_HOST_INFO

反潜回主机地址信息结构体。

struct{
  NET_DVR_ADDRESS    struDVRIP;
  BYTE               byIsStartAddr;
  BYTE               byHostNo;
  BYTE               byRes[34];
}NET_DVR_ANTI_SNEAK_HOST_INFO,*LPNET_DVR_ANTI_SNEAK_HOST_INFO;

Members

struDVRIP
主机IP地址
byIsStartAddr
是否为开始地址：0- 否，1- 是
byHostNo
主机编号，取值范围：1~8，主要用于读卡器顺序设置
byRes
保留，置为0

See Also

NET_DVR_ANTI_SNEAK_MULTI_HOST_CFG


NET_DVR_ANTI_SNEAK_HOST_READER_INFO

反潜回读卡器信息结构体。

struct{
  BYTE    byAntiSnealHostNo;
  BYTE    byRes[5];
  WORD    wFollowUpCardReader;
}NET_DVR_ANTI_SNEAK_HOST_READER_INFO,*LPNET_DVR_ANTI_SNEAK_HOST_READER_INFO;

Members

byAntiSnealHostNo
反潜回主机编号
byRes
保留，置为0
wFollowUpCardReader
该反潜回主机下的读卡器编号

See Also

NET_DVR_ANTI_SNEAK_MULTI_HOST_CFG NET_DVR_ANTI_SNEAK_READER_CFG


NET_DVR_ANTI_SNEAK_MULTI_HOST_CFG

跨主机反潜回参数配置结构体。

struct{
  DWORD                                  dwSize;
  BYTE                                   byEnable;
  BYTE                                   byRes1[3];
  NET_DVR_ANTI_SNEAK_HOST_INFO           struSneakHost[MAX_SNEAK_PATH_NODE];
  NET_DVR_ANTI_SNEAK_HOST_READER_INFO    struStartReader;
  BYTE                                   byRes2[128];
}NET_DVR_ANTI_SNEAK_MULTI_HOST_CFG, *LPNET_DVR_ANTI_SNEAK_MULTI_HOST_CFG;

Members

dwSize
结构体大小
byEnable
是否加入反潜回路径：1- 加入，0- 不加入
byRes1
保留，置为0
struSneakHost
后续主机地址信息
struStartReader
起始读卡器编号，当该内容全为0时，表示不关注从哪个读卡器开始
byRes2
保留，置为0

Remarks

  • 设备是否支持跨主机反潜回配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<MultiHostAntiSneak>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG

跨主机反潜回读卡器参数配置结构体。

struct{
  DWORD                            dwSize;
  NET_DVR_ANTI_SNEAK_READER_CFG    struReaderCfg[MAX_READER_ROUTE_NUM];
  BYTE                             byRes[128];
}NET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG, *LPNET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG;

Members

dwSize
结构体大小
struReaderCfg
读卡器参数，每位数组表示一条路径，最大支持8条路径
byRes
保留，置为0

Remarks

  • 设备是否支持跨主机反潜回读卡器参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<ReadersCfg>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ANTI_SNEAK_READER_CFG

反潜回读卡器信息结构体。

struct{
  BYTE                                   byEnable;
  BYTE                                   byAntiSnealHostNo;
  WORD                                   wReaderID;
  NET_DVR_ANTI_SNEAK_HOST_READER_INFO    struSneakReaderInfo[MAX_SNEAK_PATH_NODE];
  BYTE                                    byRes2[8];
}NET_DVR_ANTI_SNEAK_READER_CFG, *LPNET_DVR_ANTI_SNEAK_READER_CFG;

Members

byEnable
是否加入反潜回路径：1- 加入，0- 不加入
byAntiSnealHostNo
反潜回主机编号
wReaderID
读卡器ID
struSneakReaderInfo
后续主机读卡器编号，每个数组表示一个后续读卡器
byRes2
保留，置为0

See Also

NET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG


NET_DVR_AP_INFO

无线网络资源参数子结构体。

struct{
  char    sSsid[IW_ESSID_MAX_SIZE];
  DWORD   dwMode;
  DWORD   dwSecurity;
  DWORD   dwChannel;
  DWORD   dwSignalStrength;
  DWORD   dwSpeed;
}NET_DVR_AP_INFO,*LPNET_DVR_AP_INFO;

Members

sSsid
SSID
dwMode
工作模式：0-mange 模式，1-ad-hoc模式
dwSecurity
安全模式：0 不加密，1 wep加密，2 wpa-psk，3 wpa-Enterprise
dwChannel
通道号
dwSignalStrength
0-100信号由最弱变为最强
dwSpeed
速率，单位是0.01mbps

See Also

NET_DVR_AP_INFO_LIST


NET_DVR_AP_INFO_LIST

无线网络资源参数结构体。

struct{
  DWORD             dwSize;
  DWORD             dwCount;
  NET_DVR_AP_INFO   struApInfo[WIFI_MAX_AP_COUNT];
}NET_DVR_AP_INFO_LIST,*LPNET_DVR_AP_INFO_LIST;

Members

dwSize
结构体大小
dwCount
无线AP数量，不超过20
struApInfo
AP参数结构体

See Also

NET_DVR_GetDVRConfig


NET_DVR_AREA_MASK_CFG

区域马赛克配置结构体。

struct{
  DWORD           dwSize;
  BYTE            byEnable;
  BYTE            byMaskThick;
  BYTE            byAutoMask;
  BYTE            byRes1;
  NET_VCA_RECT    struRegion[MAX_MASK_AREA_NUM];
  BYTE            byRes[64];
 }NET_DVR_AREA_MASK_CFG,*LPNET_DVR_AREA_MASK_CFG;

Members

dwSize
结构体大小
byEnable
是否启用马赛克：0- 否，1- 是
byMaskThick
马赛克厚度：0- 薄码，1- 中码(默认)，2- 厚码，薄码的区块大小为8*8，中码为16*16，厚码为32*32
byAutoMask
是否启用自动马赛克：0-否，1-是
byRes1
保留，置为0
struRegion
马赛克区域范围，最大支持8个区域
byRes
保留，置为0

See Also

  • 区域马赛克能力，对应通道输入能力集(ChannelInputAbility)中节点<AreaMask>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • 目前庭审主机设备仅3个IP编码通道支持设置马赛克区域。每个通道只支持配置一个区域，区域限制最大为宽高的一半，即总的最大可配置区域为四分之一。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AREA_MONITOR_COND

区域监控点查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAreaID;
  DWORD    dwMonitorID;
  BYTE     byIsNeedGroup;
  BYTE     byRes[127];
}NET_DVR_AREA_MONITOR_COND,*LPNET_DVR_AREA_MONITOR_COND;

Members

dwSize
结构体大小
dwAreaID
区域ID
dwMonitorID
当前开始获取的监控点编号，从1开始
byIsNeedGroup
是否查询关联分组信息
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_AREA_SMARTSEARCH_COND_UNION

智能查找条件联合体。

union{
  BYTE                                 byLen[6144];
  BYTE                                 byMotionScope[64][96];
  NET_DVR_TRAVERSE_PLANE_SEARCHCOND    struTraversPlaneCond;
  NET_DVR_INTRUSION_SEARCHCOND         struIntrusionCond;
  NET_DVR_FACEDETECTION_SEARCHCOND     struFaceSnapCond;
}NET_DVR_AREA_SMARTSEARCH_COND_UNION,*LPNET_DVR_AREA_SMARTSEARCH_COND_UNION;

Members

byLen
联合体大小，6144字节
byMotionScope
移动侦测区域，96×64的数组中，P制只有22×18有效，N制只有22×15有效，取值为1表示该宏块设定为移动侦测区域，0表示不设定为移动侦测区域；其他保留，置为0
struTraversPlaneCond
越界侦测录像查找条件
struIntrusionCond
区域入侵录像查找条件
struFaceSnapCond
人脸侦测录像查找条件

Remarks

对于byMotionScope：整个图像的区域大小P制为704×576，N制为704×480，即将704×576（或者704×480）的画面分割成22×18（或者22×15）个小宏块，然后可分别设置每个宏块是否为移动侦测区域。如果P制情况下，设备的图像大小不为704*576，比如高清设备1280*720，设置移动侦测时需要将画面缩小成704*576，然后设置移动侦测区域。

See Also

NET_DVR_SMART_SEARCH_PARAM_V40 NET_DVR_SMART_SEARCH_PARAM


NET_DVR_AREA_ZOOM_CFG

区域放大还原参数结构体。

struct{
  BYTE              byCmd;
  BYTE              byRes[3];
  NET_DVR_RECTCFG   struArea;
}NET_DVR_AREA_ZOOM_CFG,*LPNET_DVR_AREA_ZOOM_CFG;

Members

byCmd
区域放大还原指令：1- 放大，2- 还原
byRes
保留，置为0
struArea
需要放大的区域，以1920*1920作为屏幕总大小，还原时此参数无效

See Also

NET_DVR_SCREEN_CONTROL_PARAM


NET_DVR_AREAINFOCFG

籍贯参数结构体。

struct{
  WORD     wNationalityID;
  WORD     wProvinceID;
  WORD     wCityID;
  WORD     wCountyID;
  DWORD    dwCode;
}NET_DVR_AREAINFOCFG, *LPNET_DVR_AREAINFOCFG;

Members

wNationalityID
国籍
wProvinceID
省，dwCode为0时取值详见枚举类型：PROVINCE_CITY_IDX
wCityID
市
wCountyID
县
dwCode
国家和地区标准的省份、城市、县级代码，为0表示设备不支持，不为0时wNationalityID、wProvinceID、wCityID、wCountyID取值详见全国各省份城市列表

See Also

NET_VCA_HUMAN_ATTRIBUTE NET_VCA_HUMANATTRIBUTE_COND


NET_DVR_ARRAY_INFO

单个阵列参数结构体。

struct{
  WORD                wArrayID;
  BYTE                byRaidMode;
  BYTE                byStatus;
  DWORD               dwHCapacity;
  DWORD               dwLCapacity;
  DWORD               dwHFreeSpace;
  DWORD               dwLFreeSpace;
  BYTE                byArrayName[MAX_NAMELEN];
  BYTE                byPDCount;
  BYTE                bySpareCount;
  BYTE                byRes1[2];
  WORD                wPDSlots[SUPPORT_PD_NUM];
  WORD                wSparePDSlots[SUPPORT_PD_NUM];
  NET_DVR_BGA_INFO    struBgaInfo;
  WORD                wPDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO];
  WORD                wSparePDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO];
  BYTE                byRes2[48];
}NET_DVR_ARRAY_INFO, *LPNET_DVR_ARRAY_INFO;

Members

wArrayID
阵列ID
byRaidMode
RAID类型，具体定义如下：
enum _RAID_MODE_{
  RAID0 = 1,
  RAID1,
  RAID10,
  RAID1E,
  RAID5,
  RAID6,
  RAID50,
  JBOD,
  RAID60
}RAID_MODE
RAID0
RAID0
RAID1
RAID1类型
RAID10
RAID10类型
RAID1E
RAID1E类型
RAID5
RAID5类型
RAID6
RAID6类型
RAID50
RAID50类型
JBOD
JBOD类型
RAID60
RAID60类型
byStatus
阵列状态：0-在线，1-磁盘丢失，2-下线，3-降级，4-异常，5-次正常，6-外来盘，0xff-不存在
dwHCapacity
阵列容量高32位(单位kb)
dwLCapacity
磁盘容量低32位
dwHFreeSpace
阵列剩余空间高32位
dwLFreeSpace
阵列剩余空间低32位
byArrayName
阵列名称
byPDCount
物理磁盘数目
bySpareCount
热备数目
byRes1
保留
wPDSlots
物理磁盘索引
wSparePDSlots
热备磁盘索引
struBgaInfo
后台任务运行状态
wPDSlots
物理磁盘索引扩展，0表示无效
wSparePDSlots
热备磁盘索引扩展，0表示无效
byRes2
保留，置为0

See Also

NET_DVR_ARRAY_LIST


NET_DVR_ARRAY_LIST

阵列参数结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwCount;
  NET_DVR_ARRAY_INFO    struArrayInfo[SUPPORT_ARRAY_NUM];
}NET_DVR_ARRAY_LIST, *LPNET_DVR_ARRAY_LIST;

Members

dwSize
结构体大小
dwCount
阵列个数
struArrayInfo
单个阵列信息

See Also

NET_DVR_GetArrayList


NET_DVR_ARRAY_SPACE_ALLOC_INFO

虚拟磁盘分配参数结构体。

struct{
  BYTE               byVDSlotCount;
  BYTE               byRes1[3];
  NET_DVR_VD_SLOT    struVDSlots[SUPPORT_VD_NUM];
}NET_DVR_ARRAY_SPACE_ALLOC_INFO, *LPNET_DVR_ARRAY_SPACE_ALLOC_INFO;

Members

byVDSlotCount
所属阵列的虚拟磁盘个数
byRes1
保留
struVDSlots
单个虚拟磁盘阵列分配信息

See Also

NET_DVR_GetArraySpaceAlloc


NET_DVR_ASSOCIATE_INPUT_PARAM

关联的输入设备信息结构体。

struct{
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwDeviceIndex;
  WORD     wInputIndex;
  BYTE     byRes2[18];
}NET_DVR_ASSOCIATE_INPUT_PARAM,*LPNET_DVR_ASSOCIATE_INPUT_PARAM;

Members

byEnable
是否启用：0- 否，1- 是
byRes1
保留
dwDeviceIndex
设备序号
wInputIndex
输入信号源
byRes2
保留

Remarks

对于LCD拼接屏、SDI矩阵切换器，dwDeviceIndex、wInputIndex均无效，设为0。

See Also

NET_DVR_VCS_USER_INFO


NET_DVR_ASSOCIATE_OUTPUT_PARAM

关联的输出显示屏信息结构体。

struct{
  BYTE     byEnable;
  BYTE     byWallNo;
  BYTE     byRes1[2];
  DWORD    dwOutputIndex;
  BYTE     byRes2[20];
}NET_DVR_ASSOCIATE_OUTPUT_PARAM,*LPNET_DVR_ASSOCIATE_OUTPUT_PARAM;

Members

byEnable
是否启用：0- 否，1- 是
byWallNo
电视墙墙号
byRes1
保留
dwOutputIndex
输出显示屏的序号
byRes2
保留

See Also

NET_DVR_VCS_USER_INFO


NET_DVR_ATM_FRAMEFORMAT_V30

ATM协议配置参数结构体。

struct{
  DWORD                                  dwSize;
  BYTE                                   byEnable;
  BYTE                                   byInputMode;
  BYTE                                   byRes1[34];
  NET_DVR_IPADDR                         struAtmIp;
  WORD                                   wAtmPort;
  BYTE                                   byRes2[2];
  DWORD                                  dwAtmType;
  NET_DVR_ATM_USER_DEFINE_PROTOCOL       struAtmUserDefineProtocol;
  BYTE                                   byRes3[8];
}NET_DVR_ATM_FRAMEFORMAT_V30, *LPNET_DVR_ATM_FRAMEFORMAT_V30;

Members

dwSize
结构体大小
byEnable
ATM功能是否启用：0- 不启用，1- 启用
byInputMode
输入方式：0- 网络监听，1- 网络协议，2- 串口监听，3- 串口协议
byRes1
保留
struAtmIp
ATM 机IP地址，输入方式为网络监听时使用
wAtmPort
端口号，输入方式为网络协议时使用
byRes2
保留
dwAtmType
ATM协议类型，通过NET_DVR_GetAtmProtocol获取支持的协议类型
struAtmUserDefineProtocol
用户自定义协议，当ATM协议类型为自定义时需要使用该参数
byRes3
保留

See Also

NET_DVR_GetAtmFrameFormat_V30 NET_DVR_SetAtmFrameFormat_V30


NET_DVR_ATM_PACKAGE_ACTION

ATM报文交易行为信息结构体。

struct{
  NET_DVR_PACKAGE_LOCATION      struPackageLocation;
  NET_DVR_OSD_POSITION          struOsdPosition;
  NET_DVR_FRAMETYPECODE         struActionCode;
  NET_DVR_FRAMETYPECODE         struPreCode;
  BYTE                          byActionCodeMode;
  BYTE                          byRes[7];
}NET_DVR_ATM_PACKAGE_ACTION, *LPNET_DVR_ATM_PACKAGE_ACTION;

Members

struPackageLocation
报文位置信息
struOsdPosition
OSD叠加位置信息
struActionCode
交易类型行为码
struPreCode
叠加字符前的字符
byActionCodeMode
交易类型行为码模式，0-ASCII；1-HEX
byRes
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_ATM_PACKAGE_DATE

ATM报文日期信息结构体。

struct{
  NET_DVR_PACKAGE_LOCATION      struPackageLocation;
  NET_DVR_DATE_FORMAT           struDateForm;
  NET_DVR_OSD_POSITION          struOsdPosition;
  BYTE                          res[8];
}NET_DVR_ATM_PACKAGE_DATE, *LPNET_DVR_ATM_PACKAGE_DATE;

Members

struPackageLocation
日期在报文中的位置
struDateForm
日期显示格式
struOsdPosition
OSD叠加位置信息
res
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_ATM_PACKAGE_OTHERS

ATM其他报文信息结构体（包括卡号、交易金额和交易序号信息）。

struct{
  NET_DVR_PACKAGE_LOCATION      struPackageLocation;
  NET_DVR_PACKAGE_LENGTH        struPackageLength;
  NET_DVR_OSD_POSITION          struOsdPosition;
  NET_DVR_FRAMETYPECODE         struPreCode;
  BYTE                          res[8];
}NET_DVR_ATM_PACKAGE_OTHERS, *LPNET_DVR_ATM_PACKAGE_OTHERS;

Members

struPackageLocation
报文位置信息
struPackageLength
报文长度信息
struOsdPosition
OSD叠加位置信息
struPreCode
叠加字符前的字符信息
res
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_ATM_PACKAGE_TIME

ATM报文时间信息结构体。

struct{
  NET_DVR_PACKAGE_LOCATION      location;
  NET_DVR_TIME_FORMAT           struTimeForm;
  NET_DVR_OSD_POSITION          struOsdPosition;
  BYTE                          byRes[8];
}NET_DVR_ATM_PACKAGE_TIME, *LPNET_DVR_ATM_PACKAGE_TIME;

Members

location
时间在报文中的位置信息
struTimeForm
时间显示格式
struOsdPosition
OSD 叠加位置信息
byRes
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_ATM_PROTO_LIST

ATM协议信息列表结构体。

struct{
  DWORD                      dwAtmProtoNum;
  NET_DVR_ATM_PROTO_TYPE     struAtmProtoType[MAX_ATM_PROTOCOL_NUM];
}NET_DVR_ATM_PROTO_LIST,*LPNET_DVR_ATM_PROTO_LIST;

Members

dwAtmProtoNum
协议列表的协议个数
struAtmProtoType
协议信息列表

See Also

NET_DVR_ATM_PROTOCOL


NET_DVR_ATM_PROTO_TYPE

协议信息结构体。

struct{
  DWORD    dwAtmType;
  char     chDesc[ATM_DESC_LEN];
}NET_DVR_ATM_PROTO_TYPE, *LPNET_DVR_ATM_PROTO_TYPE;

Members

dwAtmType
ATM协议类型，同时作为索引序号，自定义协议时该值为1025，取值定义详见枚举类型：ATM_PROTO_TYPE
chDesc
ATM协议的简单描述

See Also

NET_DVR_ATM_PROTOCOL NET_DVR_ATM_PROTO_LIST


NET_DVR_ATM_PROTOCOL

ATM协议信息结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_ATM_PROTO_LIST         struNetListenList;
  NET_DVR_ATM_PROTO_LIST         struSerialListenList;
  NET_DVR_ATM_PROTO_LIST         struNetProtoList;
  NET_DVR_ATM_PROTO_LIST         struSerialProtoList;
  NET_DVR_ATM_PROTO_TYPE         struCustomProto;
}NET_DVR_ATM_PROTOCOL, *LPNET_DVR_ATM_PROTOCOL;

Members

dwSize
结构体大小
struNetListenList
输入方式为网络监听时的协议描述
struSerialListenList
输入方式为串口监听时的协议描述
struNetProtoList
输入方式为网络协议时的协议描述
struSerialProtoList
输入方式为串口协议时的串口协议描述
struCustomProto
自定义协议描述

See Also

NET_DVR_GetAtmProtocol


NET_DVR_ATM_USER_DEFINE_PROTOCOL

ATM用户自定义协议信息结构体。

struct{
  NET_DVR_IDENTIFICAT           struIdentification;
  NET_DVR_FILTER                struFilter;
  NET_DVR_ATM_PACKAGE_OTHERS    struCardNoPara;
  NET_DVR_ATM_PACKAGE_ACTION    struTradeActionPara[MAX_ACTION_TYPE];
  NET_DVR_ATM_PACKAGE_OTHERS    struAmountPara;
  NET_DVR_ATM_PACKAGE_OTHERS    struSerialNoPara;
  NET_DVR_OVERLAY_CHANNEL       struOverlayChan;
  NET_DVR_ATM_PACKAGE_DATE      struRes1;
  NET_DVR_ATM_PACKAGE_TIME      struRes2;
  BYTE                          byRes3[124];
}NET_DVR_ATM_USER_DEFINE_PROTOCOL, *LPNET_DVR_ATM_USER_DEFINE_PROTOCOL;

Members

struIdentification
报文标志信息
struFilter
数据包过滤设置
struCardNoPara
叠加卡号设置
struTradeActionPara
叠加交易行为设置，数组下标0-7依次对应插卡、退卡、通道触发、查询、取款、存款、改密码和转账的参数配置
struAmountPara
叠加交易金额设置
struSerialNoPara
叠加交易序号设置
struOverlayChan
叠加通道设置
struRes1
保留
struRes2
保留
byRes3
保留

See Also

NET_DVR_ATM_FRAMEFORMAT_V30


NET_DVR_ATMFINDINFO

ATM文件查找条件结构体。

struct{
  BYTE     byTransactionType;
  BYTE     byRes[3];
  DWORD    dwTransationAmount;
}NET_DVR_ATMFINDINFO, *LPNET_DVR_ATMFINDINFO;

Members

byFormatType
交易类型：0- 全部，1- 查询，2- 取款，3- 存款，4- 修改密码，5- 转账，6- 无卡查询，7- 无卡存款，8- 吞钞，9- 吞卡，10- 自定义
byRes
保留，置为0
dwTransationAmount
交易金额，-1表示查找时不带金额

See Also

NET_DVR_SPECIAL_FINDINFO_UNION


NET_DVR_ATTENDED_BAGGAGE_DETECTION

物品拿取侦测配置结构体。

struct{
  DWORD                              dwSize;
  BYTE                               byEnabled;
  BYTE                               byRes1[3];
  NET_DVR_ATTENDED_BAGGAGE_REGION    struRegion[MAX_REGION_NUM];
  BYTE                               byRes2[128];
}NET_DVR_ATTENDED_BAGGAGE_DETECTION,*LPNET_DVR_ATTENDED_BAGGAGE_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留，置为0
struRegion
物品拿取侦测区域
byRes2
保留，置为0

Remarks

  • 该配置功能对应物品拿取侦测能力集(AttendedBaggageCap)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_ATTENDEDBAGGAGE_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。物品拿取侦测的区域参数通过NET_DVR_SET_ATTENDEDBAGGAGE_REGION命令进行配置，每一个区域单独设置。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ATTENDED_BAGGAGE_REGION

物品拿取区域配置结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byTimeThreshold;
  WORD               wTimeThreshold;
  BYTE               byTimeThresholdMode;
  BYTE               byRes[59];
}NET_DVR_ATTENDED_BAGGAGE_REGION,*LPNET_DVR_ATTENDED_BAGGAGE_REGION;

Members

struRegion
区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byTimeThreshold
时间阈值，取值范围：[0,10]，单位：s
wTimeThreshold
时间阈值（byTimeThresholdMode为1时有效），取值范围：[5-3600]，单位：s
byTimeThresholdMode
使用的时间阈值字段类型(只写字段，用于兼容区域)：0- 字段byTimeThreshold生效，1- 字段wTimeThreshold生效
byRes
保留

Remarks

  • 设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

  • 物品拿取侦测能力集(AttendedBaggageCap)中<timeThreshold >字段表示时间阈值范围，在范围“min="5" max="3600"”的情况下，赋值wTimeThreshold，其他情况赋值byTimeThreshold。

See Also

NET_DVR_ATTENDED_BAGGAGE_DETECTION


NET_DVR_AUDIO_ACTIVATION_CFG

语音激励配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwChanNo;
  BYTE     bySensitivity;
  BYTE     byPriority;
  WORD     wDelayTime;
  BYTE     byRes2;
  BYTE     byEnablePreset;
  WORD     wPreset;
  WORD     wBase;
  BYTE     byRes3[2];
  BYTE     byVoChanNo[JUDGE_MAX_VIDEOOUT_NUM];
  BYTE     byRes[255];
}NET_DVR_AUDIO_ACTIVATION_CFG,*LPNET_DVR_AUDIO_ACTIVATION_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 否，1- 是
byRes1
保留，置为0
dwChanNo
语音激励的视频输入通道号，0xffffffff表示无效（该路语音输入不产生激励）
bySensitivity
灵敏度：1- 低，2- 中，3- 高。灵敏度越高，表示较低的音量就能使能该音频输入激励功能；灵敏度越低，表示需要较高的音量才能使能该音频输入的激励功能
byPriority
优先级：0-优先级0，1-优先级1，依次类推，值越大级别越高，取值范围：0~4
wDelayTime
语音激励结束画面切换延迟时间，单位：s，取值范围：1~30，超时后自动回到基准点对应的画面
byRes2
保留，置为0
byEnablePreset
是否启用预置点（仅在触发的视频输入通道对应的前端摄像机支持云台控制功能时支持）：0- 否，1- 是
wPreset
预置点号(激励点号)
wBase
基准点号
byRes3
保留，置为0
byVoChanNo
语音激励是否输出到视频输出口，值：0表示不输出，1-表示输出，下标表示通道顺序如下：0- VGA1，1- VGA2，2- VGA3，3- VGA4，4- VGA5~10，5- HDMI1，6- HDMI2。
例如：byVoChanNo[0]==1表示语音激励指定的视频输入切换输出到VGA1输出口
byRes
保留，置为0

Remarks

  • 语音激励功能，即配置语音输入触发指定的视频输入(dwChanNo)切换到庭审通道的大画面显示或输出到指定的视频输出接口单画面显示(byVoChanNo)。
  • “基准点”指语音激励未触发时，关联的视频画面需要对准的方位；“激励点”指语音激励触发后关联的视频画面需要转动到的方位。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUDIO_DIACRITICAL_CFG

音频变音配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  char     byBassValue;
  BYTE     byRes[62];
 }NET_DVR_AUDIO_DIACRITICAL_CFG,*LPNET_DVR_AUDIO_DIACRITICAL_CFG;

Members

dwSize
结构体大小
byEnable
是否启用变音：0- 否，1- 是
byBassValue
高低音值，取值范围：[-12,12]。正值越接近12，声音频率越大，越接近女声；负值越接近-12，声音频率越小，越接近男声
byRes
保留，置为0

See Also

  • 目前庭审主机设备仅3个IP编码通道支持音频变音。
  • 音频变音能力，对应通道输入能力集(ChannelInputAbility)中节点<AudioDiacritical>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUDIO_EFFECTIVE_CFG

音频效果参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwCheckDelay;
  BYTE     byThreshold;
  BYTE     byVolumePercent;
  BYTE     byPriority;
  BYTE     byRes[301];
 }NET_DVR_AUDIO_EFFECTIVE_CFG,*LPNET_DVR_AUDIO_EFFECTIVE_CFG;

Members

dwSize
结构体大小
dwCheckDelay
检测时延，单位：s，全F表示不自动优化
byThreshold
阈值，取值范围：[0,100]
byVolumePercent
音量，取值范围：[0,100]
byPriority
等级，取值范围：[0,100]
byRes
保留，置为0

Remarks

  • 设备是否支持音频效果配置能力或者支持的参数，可以通过设备能力集进行判断，对应音频效果配置能力集(AudioEffectiveCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_AUDIO_EFFECTIVE_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_AUDIO_EXCEPTION

音频异常配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnableAudioInException;
  BYTE                           byRes1[3];
  NET_VCA_AUDIO_ABNORMAL         struAudioAbnormal;
  NET_DVR_SCHEDTIME              struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          byRelRecordChan[MAX_CHANNUM_V30];
  NET_DVR_AUDIO_STEEP_DROP       struAudioSteepDrop;
  BYTE                           byRes2[24];
}NET_DVR_AUDIO_EXCEPTION,*LPNET_DVR_AUDIO_EXCEPTION;

Members

dwSize
结构体大小
byEnable
使能“音频丢失侦测”报警功能：0- 否，1- 是
byRes1
保留，置为0
struAudioAbnormal
声强陡升侦测参数配置
struAlarmSched
布防时间
struHandleException
异常处理方式
dwMaxRelRecordChanNum
触发的录像通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
byRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]。
struAudioSteepDrop
声强陡降侦测参数配置
byRes2
保留，置为0

Remarks

  • 音频异常报警包括音频丢失侦测、声强陡升侦测、声强陡降侦测三种类型，其中声强陡升和声强陡降的灵敏度等参数分别通过struAudioAbnormal、struAudioSteepDrop进行配置。
  • 当dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_AUDIO_INPUT_PARAM

音频输入参数结构体。

struct{
  BYTE    byAudioInputType;
  BYTE    byVolume;
  BYTE    byEnableNoiseFilter;
  BYTE    byres[5];
}NET_DVR_AUDIO_INPUT_PARAM, *LPNET_DVR_AUDIO_INPUT_PARAM;

Members

byAudioInputType
音频输入类型：0- mic in，1- line in
byVolume
音量，取值范围：[0,100]
byEnableNoiseFilter
是否开启声音过滤：0- 关，1- 开
byres
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUDIO_NAME

语音名称配置结构体。

struct{
  DWORD    dwSize;
  char     cName[NAME_LEN];
  BYTE     byRes[64];
}NET_DVR_AUDIO_NAME, *LPNET_DVR_AUDIO_NAME;

Members

dwSize
结构体大小
cName
语音名称
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_AUDIO_STATUS

音频相关状态信息结构体。

struct{
  BYTE    byMute;
  BYTE    byVolume;
  BYTE    byAudioInputDisabled;
  BYTE    byAudioInputVolume;
  BYTE    byRes[32];
}NET_DVR_AUDIO_STATUS, *LPNET_DVR_AUDIO_STATUS;

Members

byMute
是否静音：0- 否，1- 是
byVolume
会议音量，取值范围：1~100，非静音时有效
byAudioInputDisabled
禁用音频输入：0- 否，1- 是
byAudioInputVolume
音频输入音量，取值范围：1~100，允许音频输入时有效
byRes
保留，置为0

See Also

NET_DVR_TERMINAL_CONFERENCE_STATUS


NET_DVR_AUDIO_STEEP_DROP

声强陡降侦测参数结构体。

struct{
  BYTE    bySensitivity;
  BYTE    byEnable;
  BYTE    byRes[6];
}NET_DVR_AUDIO_STEEP_DROP,*LPNET_DVR_AUDIO_STEEP_DROP;

Members

bySensitivity
灵敏度参数，取值范围：[1,100]
byEnable
是否开启声强陡降侦测功能：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 声强陡降侦测功能的参数取值范围具体可以通过能力集获取：NET_DVR_GetDeviceAbility（报警事件处理能力EventAbility）。

    • See Also

    NET_DVR_AUDIO_EXCEPTION


NET_DVR_AUDIODEC_INFO

音频解码信息结构体(Linux版本使用)。

struct{
  int    nchans;
  int    sample_rate;
  int    aacdec_profile;
  int    reserved[16];
}NET_DVR_AUDIODEC_INFO,*LPNET_DVR_AUDIODEC_INFO;

Members

nchans
声道数
sample_rate
采样率
aacdec_profile
编码用的框架(保留)
reserved
保留，置为0

See Also

NET_DVR_AUDIODEC_PROCESS_PARAM


NET_DVR_AUDIODEC_PROCESS_PARAM

音频解码数据结构体(Linux版本使用)。

struct{
  unsigned char            *in_buf;
  unsigned char            *out_buf;
  DWORD                    in_data_size;
  DWORD                    proc_data_size;
  DWORD                    out_frame_size;
  NET_DVR_AUDIODEC_INFO    dec_info;
  int                      g726dec_reset;
  int                      g711_type;
  int                      reserved[16];
}NET_DVR_AUDIODEC_PROCESS_PARAM,*LPNET_DVR_AUDIODEC_PROCESS_PARAM;

Members

in_buf
[in] 输入数据缓冲区，存放解码前音频数据
out_buf
[out] 输出数据缓冲区，存放编码后音频数据
in_data_size
[in] 输入数据缓冲区大小，in_buf存储的数据字节数
proc_data_size
[out] in_buf缓冲区里面已被解码的数据大小(单位为字节)
out_frame_size
[out] 解码后一帧音频数据的大小：如果是G711编码，输入数据的大小为320字节；如果是G722编码，输入数据的大小为1280字节
dec_info
[out] 解码信息
g726enc_reset
[in] G726重置开关(保留)
g711_type
[in] G711编码类型：0- U law，1- A law
reserved
[in] 保留，置为0

See Also

NET_DVR_DecodeG711Frame NET_DVR_DecodeG722Frame


NET_DVR_AUDIOENC_INFO

音频编码信息结构体(Linux版本使用)。

struct{
  DWORD    in_frame_size;
  int      reserved[16];
}NET_DVR_AUDIOENC_INFO,*LPNET_DVR_AUDIOENC_INFO;

Members

in_frame_size
输入一帧音频数据的大小(BYTES)：如果是G711编码，输入数据的大小为320字节；如果是G722编码，输入数据的大小为1280字节
reserved
保留字节，置为0

See Also

NET_DVR_InitG711Encoder NET_DVR_InitG722Encoder


NET_DVR_AUDIOENC_PROCESS_PARAM

音频编码数据结构体(Linux版本使用)。

struct{
  unsigned char          *in_buf;
  unsigned char          *out_buf;
  DWORD                  out_frame_size;
  int                    g726enc_reset;
  int                    g711_type;
  ENUM_AUDIO_ENC_MODE    enc_mode;
  int                    reserved[16];
}NET_DVR_AUDIOENC_PROCESS_PARAM,*LPNET_DVR_AUDIOENC_PROCESS_PARAM;

Members

in_buf
[in] 输入数据缓冲区，存放编码前PCM原始音频数据
out_buf
[out] 输出数据缓冲区，存放编码后音频数据
out_frame_size
[out] 编码后一帧音频数据的大小(单位为字节)：如果是G711编码，输入数据的大小为160字节；如果是G722编码，输入数据的大小为80字节
g726enc_reset
[in] G726重置开关(保留)
g711_type
[in] G711编码类型：0- U law，1- A law
enc_mode
[in] AMR音频编码模式配置(保留)
reserved
[in] 保留，置为0

See Also

NET_DVR_EncodeG711Frame NET_DVR_EncodeG722Frame


NET_DVR_AUDIOEXCEPTION_ALARM

声音报警信息结构体。

struct{
  DWORD               dwSize;
  BYTE                byAlarmType;
  BYTE                byRes1;
  WORD                wAudioDecibel;
  NET_VCA_DEV_INFO    struDevInfo;
  WORD                wDevInfoIvmsChannelEx;
  BYTE                byRes[62];
}NET_DVR_AUDIOEXCEPTION_ALARM,*LPNET_DVR_AUDIOEXCEPTION_ALARM;

Members

dwSize
结构体大小
byAlarmType
报警类型：1- 音频丢失侦测，2- 声强陡升侦测，3- 声强陡降侦测
byRes1
保留，置为0
wAudioDecibel
声音强度（byAlarmType为2、3时有效），取值范围：0~100
struDevInfo
报警设备信息
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_AUDIOOUT_VOLUME

输出音量信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byAudioOutVolume;
  BYTE     byRes[63];
}NET_DVR_AUDIOOUT_VOLUME, *LPNET_DVR_AUDIOOUT_VOLUME;

Members

dwSize
结构体大小
byAudioOutVolume
输出音量等级：0~100
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUTH_INFO

认证记录信息结构体

struct{
  BYTE    byAuthResult;
  BYTE    byAuthType;
  BYTE    byRes1[2];
  BYTE    byCardNo[ACS_CARD_NO_LEN];
  DWORD   dwPicDataLen;
  BYTE    *pImage;
  BYTE    byRes[212];
}NET_DVR_AUTH_INFO, *LPNET_DVR_AUTH_INFO;

Members

byAuthResult
认证结果：0-无效，1-认证成功，2-认证失败
byAuthType
认证方式：0-无效，1-指纹，2-人脸
byRes1
保留, 置为0
byCardNo
卡号
dwPicDataLen
图片数据长度（当认证方式byAuthType为人脸时有效）
pImage
图片指针（当认证方式byAuthType为人脸时有效）
byRes
保留, 置为0

See Also

NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON


NET_DVR_AUTO_LIMIT_WAVE_CFG

自动限波控制参数结构体。

struct{
  BYTE    byFBCEnable;
  BYTE    byMode;
  BYTE    byFilterQValue;
  BYTE    byStaticFilterNum;
  BYTE    byRes[16];
 }NET_DVR_AUTO_LIMIT_WAVE_CFG,*LPNET_DVR_AUTO_LIMIT_WAVE_CFG;

Members

byFBCEnable
FBC开关：0- 不开启，1- 开启
byMode
模式：0- 快速，1- 普通，2- 慢速
byFilterQValue
自适应滤波器Q值：0- 1/40（默认），1- 1/10，单位：Oct
byStaticFilterNum
静态滤波器数量，取值范围：0~12
byRes
保留，置为0

See Also

NET_DVR_MIX_AUDIOIN_CFG


NET_DVR_AUTO_REBOOT_CFG

自动重启参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_REBOOT_TIME    struRebootTime;
}NET_DVR_AUTO_REBOOT_CFG,*LPNET_DVR_AUTO_REBOOT_CFG;

Members

dwSize
结构体大小
struRebootTime
自动重启时间

See Also

解码器：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

转码器：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUTO_TRACK_CFG

SDI自动跟踪配置结构体。

struct{
  DWORD                               dwSize;
  NET_DVR_DIRECT_CONNECT_CHAN_INFO    struSDIInfo[MAX_CHANNUM_V30];
  BYTE                                byCameraType[MAX_CHANNUM_V30];
  BYTE                                byRes[64];
 }NET_DVR_AUTO_TRACK_CFG,*LPNET_DVR_AUTO_TRACK_CFG;

Members

dwSize
结构体大小
struSDIInfo
SDI通道信息
byCameraType
通道接入的相机类型，数组下标与通道号一一对应，取值：0- 无意义，1- 老师跟踪，2- 学生跟踪，3- 老师全景，4- 学生全景，5- 多媒体，6–教师定位，7-学生定位，8-板书定位，9-板书相机，0xff- 未接入，例如：byCameraType[i]=5 表示通道(i+1)为多媒体接入
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUXAREA

辅助区域参数结构体。

struct{
  DWORD              dwAreaType;
  BYTE               byEnable;
  BYTE               byRes1[3];
  NET_VCA_POLYGON    struPolygon;
  BYTE               byRes2[16];
}NET_DVR_AUXAREA,*LPNET_DVR_AUXAREA;

Members

dwAreaType
区域类型，具体定义如下：
enum _AREA_TYPE_ENUM_{
  ENUM_OVERLAP_REGION   = 1,
  ENUM_BED_LOCATION     = 2
}AREA_TYPE_ENUM
ENUM_OVERLAP_REGION
共同区域
ENUM_BED_LOCATION
床铺位置
byEnable
是否启用该辅助区域：0-不启用，1-启用
byRes1
保留，置为0
struPolygon
区域坐标
byRes2
保留，置为0

See Also

NET_DVR_AUXAREA_LIST


NET_DVR_AUXAREA_LIST

辅助区域列表信息结构体。

struct{
  DWORD              dwSize;
  NET_DVR_AUXAREA    struArea[MAX_AUXAREA_NUM];
  BYTE               byRes2[64];
}NET_DVR_AUXAREA_LIST,*LPNET_DVR_AUXAREA_LIST;

Members

dwSize
结构体大小
struArea
辅助区域
byRes2
保留，置为0

Remarks

辅助区域描述用户场景中不同类型的物件及其区域，用于辅助智能算法更准确的检测。目前主要用于监舍，涉及事件包括：起身，离岗。

每一种行为规则支持对应一个辅助区域，即struArea[MAX_AUXAREA_NUM]和异常行为识别规则配置（NET_VCA_RULECFG_V42）中的struRule[MAX_RULE_NUM_V42]，按数组下标一一对应，例如：struArea[0]对应为struRule[0]这个规则的辅助区域、struArea[1]对应为struRule[1]这个规则的辅助区域。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM

辅助设备升级条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDevNo;
  BYTE     byDevType;
  BYTE     byRes[131];
}NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM,*LPNET_DVR_AUXILIARY_DEV_UPGRADE_PARAM;

Members

dwSize
结构体大小
dwDevNo
设备号
byDevType
升级设备类型：0- 键盘，1- 机芯，2- 网络模块，3- 路由器，4- 防区, 5-RS485无线扩展模块
byRes
保留，置为0

Remarks

  • 设备是否支持辅助设备升级功能，可以通过设备能力集进行判断，对应网络应用参数能力集(NetAppAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY，节点：<AuxiliaryDevUpgrade>。

See Also

NET_DVR_Upgrade_V40


NET_DVR_AUXOUTCFG

报警辅助输出参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAlarmOutChan;
  DWORD    dwAlarmChanSwitchTime;
  DWORD    dwAuxSwitchTime[MAX_AUXOUT];
  BYTE     byAuxOrder[MAX_AUXOUT][MAX_WINDOW];
}NET_DVR_AUXOUTCFG,*LPNET_DVR_AUXOUTCFG;

Members

dwSize
结构体大小
dwAlarmOutChan
选择报警弹出画面的输出通道：0-主输出，1-辅1，2-辅2，3-辅3，4-辅4，5-HDMI，6-VGA，7- 辅助HDMI1，8-扩展HDMI1，9-扩展HDMI2，10-扩展HDMI3，11-扩展HDMI4
dwAlarmChanSwitchTime
报警通道切换时间，取值范围1s～10s
dwAuxSwitchTime
辅助输出轮巡切换时间：0－不切换，1－5秒，2－10秒，3－20秒，4－30秒，5－60秒，6－120秒，7-300秒
byAuxOrder
辅助输出预览顺序，0xff表示相应的窗口不预览

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_BACKGROUND_PIC_CFG

背景图片文件信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPicSize;
  DWORD    dwPicType;
  WORD     wPicWidth;
  WORD     wPicHeight;
  BYTE     byPicName[MAX_PIC_NAME_LEN];
  BYTE     byRes[128];
 }NET_DVR_BACKGROUND_PIC_CFG,*LPNET_DVR_BACKGROUND_PIC_CFG;

Members

dwSize
结构体大小
dwPicSize
背景图片大小
dwPicType
图片类型：0- YUV，1- JPEG
wPicWidth
图片宽
wPicHeight
图片高
byPicName
图片名称
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_BACKGROUND_PIC_COND

背景图片文件查询/删除条件结构体。

struct{
  DWORD    dwSize;
  char     szFileID[MAX_ID_LEN_128];
  BYTE     byRes[256];
 }NET_DVR_BACKGROUND_PIC_COND,*LPNET_DVR_BACKGROUND_PIC_COND;

Members

dwSize
结构体大小
szFileID
上传之后设备分配的文件ID
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig NET_DVR_STDControl


NET_DVR_BACKGROUND_PIC_INFO

当前背景图片文件信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  char     byPicID[MAX_ID_LEN_128];
  BYTE     byRes[300];
 }NET_DVR_BACKGROUND_PIC_INFO,*LPNET_DVR_BACKGROUND_PIC_INFO;

Members

dwSize
结构体大小
byEnable
是否启用背景图片叠加：0- 否，1- 是
byRes1
保留，置为0
byPicID
上传之后设备分配的文件ID
byRes
保留，置为0

Remarks

  • 设备是否支持背景图片配置能力或者支持的参数能力，可以通过设备能力集进行判断，对应背景图片配置能力集(BackPicInfo)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_BACKGROUND_PIC_INFO_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_BACKGROUND_PIC_PRARAM

背景图片文件上传条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwPicSize;
  WORD     wPicWidth;
  WORD     wPicHeight;
  char     szPicName[MAX_PIC_NAME_LEN];
  BYTE     byPicType;
  BYTE     byRes[303];
 }NET_DVR_BACKGROUND_PIC_PRARAM,*LPNET_DVR_BACKGROUND_PIC_PRARAM;

Members

dwSize
结构体大小
dwChannel
导播通道
dwPicSize
背景图片大小
wPicWidth
图片宽
wPicHeight
图片高
szPicName
图片名称，包含图片名称的绝对路径，比如："C:\test.jpg"
byPicType
图片类型：0- YUV，1- JPEG
byRes
保留，置为0

Remarks

目前设备最多支持存放8张图片，支持背景图片类型为yuv420(格式YYYYY...UVUV...)。背景图片支持最大分辨率为1080P，最小分辨率为CIF。

See Also

NET_DVR_UploadFile_V40


NET_DVR_BACKLIGHT

智能交通摄像机背光补偿参数结构体。

struct{
  BYTE       byBacklightMode;
  BYTE       byBacklightLevel;
  BYTE       byRes1[2];
  DWORD      dwPositionX1;
  DWORD      dwPositionY1;
  DWORD      dwPositionX2;
  DWORD      dwPositionY2;
  BYTE       byRes2[4];
}NET_DVR_BACKLIGHT, *LPNET_DVR_BACKLIGHT;

Members

byBacklightMode
背光补偿：0-off，1-UP，2-DOWN，3-LEFT，4-RIGHT，5-MIDDLE，6-自定义，10-开，11-自动，12-多区域背光补偿
byBacklightLevel
背光补偿等级：0x0~0xF
byRes1
保留
dwPositionX1
X坐标1
dwPositionY1
Y坐标1
dwPositionX2
X坐标2
dwPositionY2
Y坐标2
byRes2
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_BACKUP_LOG_PARAM

日志备份结构体。

struct{
  DWORD    dwSize;
  BYTE     byDiskDesc[DESC_LEN];
  BYTE     byHardDisk[MAX_DISK_NUM];
  BYTE     byBackupHardDiskNum;
  BYTE     byContinue;
  BYTE     byAllLogBackUp ;
  BYTE     byRes[29];
}NET_DVR_BACKUP_LOG_PARAM, *LPNET_DVR_BACKUP_LOG_PARAM;

Members

dwSize
结构体大小
byDiskDesc
备份磁盘描述
byHardDisk
需备份的硬盘号，备份几个取前几个
byBackupHardDiskNum
需备份的硬盘个数
byContinue
是否继续备份，0-不继续，1-继续
byAllLogBackUp
是否全部备份：0-按磁盘号备份，1-备份所有日志。当为1时，需备份的磁盘号(byHardDisk)和硬盘个数(byBackupHardDiskNum)无效
byRes
保留，置为0

Remarks

远程启动设备本地U盘或者移动硬盘备份功能。如果设置byContinue为1，备份过程中如果备份设备空间满了，可以换上新的U盘或者移动硬盘继续备份。

See Also

NET_DVR_Backup


NET_DVR_BACKUP_NAME_PARAM

备份文件的参数结构体。

struct{
  DWORD                   dwFileNum;
  NET_DVR_FINDDATA_V30    struFileList[MAX_RECORD_FILE_NUM];
  BYTE                    byDiskDes[DESC_LEN_32];
  BYTE                    byWithPlayer;
  BYTE                    byContinue;
  BYTE                    byRes[34];
}NET_DVR_BACKUP_NAME_PARAM,*LPNET_DVR_BACKUP_NAME_PARAM;

Members

dwFileNum
文件个数
struFileList
录像文件的参数
byDiskDes
备份磁盘的描述
byWithPlayer
是否备份播放器，0-不备份，1-备份
byContinue
是否继续备份，0- 不继续，1- 继续
byRes
保留，置为0

Remarks

其中参数byDiskDes是由接口NET_DVR_GetDiskList获取的参数得到。

远程启动设备本地U盘或者移动硬盘备份功能。如果设置byContinue为1，备份过程中如果备份设备空间满了，可以换上新的U盘或者移动硬盘继续备份。

See Also

NET_DVR_BackupByName


NET_DVR_BACKUP_PICTURE_PARAM

图片备份参数结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwPicNum;
  NET_DVR_FIND_PICTURE        struPicture[MAX_RECORD_PICTURE_NUM];
  BYTE                        byDiskDes[DESC_LEN_32];
  BYTE                        byRes1;
  BYTE                        byContinue;
  BYTE                        byRes[34];
}NET_DVR_BACKUP_PICTURE_PARAM, *LPNET_DVR_BACKUP_PICTURE_PARAM;

Members

dwSize
结构体大小
dwPicNum
图片序号
struPicture
图片信息
byDiskDes
备份磁盘的描述
byRes1
保留
byContinue
是否继续备份：0- 不继续，1- 继续
byRes
保留

Remarks

远程启动设备本地U盘或者移动硬盘备份功能。如果设置byContinue为1，备份过程中如果备份设备空间满了，可以换上新的U盘或者移动硬盘继续备份。

See Also

NET_DVR_BackupPicture


NET_DVR_BACKUP_RECORD_INFO

通道录像备份信息结构体。

struct{
  BYTE     byEnable;
  BYTE     byRes[11];
  DWORD    dwStreamType;
}NET_DVR_BACKUP_RECORD_INFO,*LPNET_DVR_BACKUP_RECORD_INFO;

Members

byPublish
是否备份：0- 否，1- 是
byRes
保留，置为0
dwStreamType
备份码流类型，按位表示，值：0- 不发布，1- 发布
dwStreamType&0x1- 主码流
dwStreamType&0x2- 子码流
dwStreamType&0x4- 码流三

See Also

NET_DVR_BACKUP_RECORD_PARAM


NET_DVR_BACKUP_RECORD_PARAM

一键备份配置结构体。

struct{
  DWORD                         dwSize;
  NET_DVR_BACKUP_RECORD_INFO    struChanBackUp[MAX_CHANNUM_V30];
  NET_DVR_BACKUP_RECORD_INFO    struDirectedChanBackUp;
  BYTE                          byRes[256];
 }NET_DVR_BACKUP_RECORD_PARAM,*LPNET_DVR_BACKUP_RECORD_PARAM;

Members

dwSize
结构体大小
struChanBackUp
通道备份信息，数组下标跟通道一一对应，例如：struChanBackUp[0]表示通道1的备份信息
struDirectedChanBackUp
导播通道备份信息
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_BACKUP_TIME_PARAM

备份文件的参数结构体。

struct{
  LONG           lChannel;
  NET_DVR_TIME   struStartTime;
  NET_DVR_TIME   struStopTime;
  BYTE           byDiskDes[DESC_LEN_32];
  BYTE           byWithPlayer;
  BYTE           byContinue;
  BYTE           byDrawFrame;
  BYTE           byUseBackCfgParam;
  DWORD          dwStreamType;
  BYTE           byRes[28];
}NET_DVR_BACKUP_TIME_PARAM,*LPNET_DVR_BACKUP_TIME_PARAM;

Members

lChannel
通道号
struStartTime
备份的起始时间
struStopTime
备份的结束时间
byDiskDes
备份磁盘的描述
byWithPlayer
是否备份播放器，0-不备份，1-备份
byContinue
是否继续备份，0- 不继续，1- 继续
byDrawFrame
0- 不抽帧，1- 抽帧
byUseBackCfgParam
使用备份配置中的参数：0- 无效，1- 启用，2- 不启用。启用之后，该结构体中的通道号无效，使用NET_DVR_BACKUP_RECORD_PARAM中设置的参数
dwStreamType
备份码流类型，按位表示，取值：0- 不备份，1- 备份
dwStreamType&0x1- 表示主码流
dwStreamType&0x2- 表示子码流
dwStreamType&0x4- 表示码流三
byRes
保留，置为0

Remarks

对于审讯机设备byDiskDes和byWithPlayer参数无效，其他设备参数byDiskDes是由接口NET_DVR_GetDiskList获取。

远程启动设备本地U盘或者移动硬盘备份功能。如果设置byContinue为1，备份过程中如果备份设备空间满了，可以换上新的U盘或者移动硬盘继续备份。

See Also

NET_DVR_BackupByTime


NET_DVR_BAREDATAOVERLAY_CFG

裸数据叠加配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byIntervalTime;
  BYTE     byRes[258];
}NET_DVR_BAREDATAOVERLAY_CFG,*LPNET_DVR_BAREDATAOVERLAY_CFG;

Members

dwSize
结构体大小
byEnable
使能：0- 不启用，1- 启用
byIntervalTime
上传的时间间隔，可配置：1、2、3、4、5，单位为秒，默认为3秒
byRes
保留，置为0

Remarks

  • 裸数据叠加功能开启后，热成像的原始数据由设备打包进私有码流中，协同预览流一并输出，其中上传时的使能开关以及上传的时间间隔可以配置。
  • 设备是否支持裸数据叠加配置或者支持的参数能力，可以通过设备能力集进行判断，对应裸数据叠加配置能力集(BareDataOverlay)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_BAREDATAOVERLAY_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_BARRIERGATE_CFG

道闸控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byLaneNo;
  BYTE     byBarrierGateCtrl;
  BYTE     byEntranceNo;
  BYTE     byUnlock;
  BYTE     byRes[12];
}NET_DVR_BARRIERGATE_CFG,*LPNET_DVR_BARRIERGATE_CFG;

Members

dwSize
结构体大小
dwChannel
通道号
byLaneNo
道闸号：0- 表示无效值(设备需要做有效值判断)，1- 道闸1
byBarrierGateCtrl
控制参数：0- 关闭道闸，1- 开启道闸，2- 停止道闸，3- 锁定道闸，4- 解锁道闸
byEntranceNo
出入口编号，取值范围：[1,8]
byUnlock
启用解锁使能：0- 不启用，1- 启用
如果设备不支持byUnlock字段，该参数赋值为0，byBarrierGateCtrl控制参数取值“0-关闭道闸、1-开启道闸、2-停止道闸”中任何一种操作皆可进行解锁；
如果设备支持byUnlock字段，解锁时需要将参数赋值为1，并结合byBarrierGateCtrl赋值为“4-解锁道闸”来进行解锁，byUnlock为1时其他操作均不能解锁
byRes
保留，置为0

Remarks

  • 设备是否支持道闸控制或者支持的参数能力，可以通过设备能力集进行判断，对应抓拍机和智能终端能力集(ITDeviceAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，对应节点：<ITCGateNum>、<GateCtrlCfg>。

See Also

NET_DVR_RemoteControl


NET_DVR_BARRIERGATE_COND

出入口控制条件结构体。

struct{
  BYTE    byLaneNo;
  BYTE    byRes[3];
}NET_DVR_BARRIERGATE_COND,*LPNET_DVR_BARRIERGATE_COND;

Members

byLaneNo
车道号：0- 表示无效值(设备需要做有效值判断)，1- 车道1
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_BASELINE_SCENE

基准场景参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[63];
}NET_DVR_BASELINE_SCENE,*LPNET_DVR_BASELINE_SCENE;

Members

dwSize
结构体大小
byEnable
是否启用基准场景：0-不启用，1-启用
byRes
保留，置为0

Remarks

启用设备的基准场景时，设备保存一张基准场景图片，提取特征值然后在特定的时间间隔内与当前的视频场景比较，如果变化程度符合一定的阈值，则报警。如当前端摄像机的位置挪动或视频被遮挡时，设备会上传场景突变报警事件。

基准场景用于VQD视频质量诊断。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_BASEMAP_CFG

原图参数结构体。

struct{
  BYTE    byScreenIndex;
  BYTE    byMapNum;
  BYTE    res[2];
  WORD    wSourWidth;
  WORD    wSourHeight;
}NET_DVR_BASEMAP_CFG,*LPNET_DVR_BASEMAP_CFG;

Members

byScreenIndex
屏幕的序号
byMapNum
被分割成了多少块
res
保留
wSourWidth
原图片的宽度
wSourHeight
原图片的高度

See Also

NET_DVR_PICTURECFG


NET_DVR_BEHAVIOR_IN_CALIBRATION

行为室内场景标定参数结构体。

struct{
  DWORD                   dwCalSampleNum;
  NET_DVR_IN_CAL_SAMPLE   struCalSample[MAX_SAMPLE_NUM];
  NET_DVR_CAMERA_PARAM    struCameraParam;
  BYTE                    byRes[16];
}NET_DVR_BEHAVIOR_IN_CALIBRATION, *LPNET_DVR_BEHAVIOR_IN_CALIBRATION;

Members

dwCalSampleNum
标定样本个数
struCalSample
样本参数
struCameraParam
摄像机参数
byRes
保留

Remarks

标定样本需要3-5个。

See Also

NET_DVR_CALIBRATION_PRARM_UNION


NET_DVR_BEHAVIOR_INFO

异常行为识别子图信息结构体。

struct{
  NET_VCA_RECT    struVcaRect;
  BYTE            byRes2[240];
}NET_DVR_BEHAVIOR_INFO, *LPNET_DVR_BEHAVIOR_INFO;

Members

struVcaRect
子图区域，归一化坐标
byRes2
保留，置为0

See Also

NET_DVR_PIC_FEATURE_UNION


NET_DVR_BEHAVIOR_OUT_CALIBRATION

行为室外场景标定参数结构体。

struct{
  DWORD                  dwLineSegNum;
  NET_DVR_LINE_SEGMENT   struLineSegment[MAX_LINE_SEG_NUM];
  NET_DVR_CAMERA_PARAM   struCameraParam;
  BYTE                   byRes[20];
}NET_DVR_BEHAVIOR_OUT_CALIBRATION, *LPNET_DVR_BEHAVIOR_OUT_CALIBRATION;

Members

dwLineSegNum
样本线个数
struLineSegment
样本线参数
struCameraParam
摄像机参数
byRes
保留

Remarks

标定样本线需要4-8条线，用于获取摄像机相关参数。

See Also

NET_DVR_CALIBRATION_PRARM_UNION


NET_DVR_BEHAVIOUR_COND

异常行为识别搜索条件结构体。

struct{
  DWORD    dwSearchType;
  BYTE     byHumanMisinfo;
  BYTE     byRes[251];
}NET_DVR_BEHAVIOUR_COND, *LPNET_DVR_BEHAVIOUR_COND;

Members

dwSearchType
搜索类型，按位表示，值：0- 否，1- 是
dwSearchType&0x1 - 穿越警戒线(越界侦测)
dwSearchType&0x2 - 区域入侵
dwSearchType&0x4 - 物品遗留
dwSearchType&0x8 - 物品拿取
dwSearchType&0x10 - 进入区域
dwSearchType&0x20 - 离开区域
dwSearchType&0x40 - 非法停车
dwSearchType&0x80 - 徘徊
dwSearchType&0x100 - 人员聚集
dwSearchType&0x200 - 快速移动
&0x20000 – 玩手机
byHumanMisinfo
是否只获取人体误报信息：0- 否，1- 是
byRes
保留

Remarks

  • 区域入侵侦测、越界侦测、进入区域侦测、离开区域侦测等功能，如果开启人体去误报过滤功能，则设备将会把认为是误报的报警过滤掉，不进行实时上传，但会在本地存储以供查询。调用NET_DVR_SmartSearchPicture查询的时候可以选择是否只查询误报信息，即该结构体里面byHumanMisinfo参数设置为1。

See Also

NET_DVR_SMARTSEARCH_PIC_UNION


NET_DVR_BGA_INFO

后台任务运行状态参数结构体。

struct{
  BYTE   byBga;
  BYTE   byBgaState;
  WORD   wBgaPercentage;
  BYTE   byRes[4];
}NET_DVR_BGA_INFO, *LPNET_DVR_BGA_INFO;

Members

byBga
后台任务及类型，具体定义如下：
enum _BGA_TYPE_{
  BGA_REBUILD           = 0x01,
  BGA_CONSISTENCY_FIX   = 0x02,
  BGA_CONSISTENCY_CHECK = 0x04,
  BGA_INIT_QUICK        = 0x08,
  BGA_INIT_BACK         = 0x10,
  BGA_MIGRATION         = 0x20,
  BGA_INIT_FORE         = 0x40,
  BGA_COPYBACK          = 0x80
}BGA_TYPE
BGA_REBUILD
重建
BGA_CONSISTENCY_FIX
一致性检查并修复
BGA_CONSISTENCY_CHECK
一致性检查
BGA_INIT_QUICK
初始化(快)
BGA_INIT_BACK
初始化(完全)
BGA_MIGRATION
迁移
BGA_INIT_FORE
初始化
BGA_COPYBACK
回迁
byBgaState
后台任务状态，具体定义如下：
enum _BGA_STATE_{
  BGA_STATE_NONE = 0,
  BGA_STATE_RUNNING,
  BGA_STATE_ABORTED,
  BGA_STATE_PAUSED
}BGA_STATE
BGA_STATE_NONE
无后台任务
BGA_STATE_RUNNING
后台任务正在运行
BGA_STATE_ABORTED
后台任务取消
BGA_STATE_PAUSED
后台任务暂停
wBgaPercentage
后台任务执行百分比， 若为65535，则不再显示进度
byRes2
保留，置为0

See Also

NET_DVR_ARRAY_INFO NET_DVR_VD_INFO


NET_DVR_BIGSCREENCFG

大屏拼接参数结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byEnable;
  BYTE                      byModeX;
  BYTE                      byModeY;
  BYTE                      byMainDecodeSystem;
  BYTE                      byMainDecoderDispChan;
  BYTE                      byVideoStandard;
  BYTE                      byRes1[2];
  DWORD                     dwResolution;
  NET_DVR_SINGLESCREENCFG   struFollowSingleScreen[MAX_BIGSCREENNUM];
  WORD                      wBigScreenX;
  WORD                      wBigScreenY;
  BYTE                      byRes2[12];
}NET_DVR_BIGSCREENCFG, *LPNET_DVR_BIGSCREENCFG;

Members

dwSize
结构体大小
byEnable
大屏拼接使能：0- 不使能，1- 使能
byModeX
大屏拼接模式（byModeX*byModeY）：水平方向屏幕个数
byModeY
大屏拼接模式（byModeX*byModeY）：垂直方向屏幕个数
byMainDecodeSystem
主屏槽位号
byMainDecoderDispChan
主屏所用显示通道号
byVideoStandard
视频制式（大屏每个子屏制式相同）：1- NTSC，2- PAL
byRes1
保留
dwResolution
屏幕分辨率，大屏每个子屏分辨率相同，一个大屏可能有几个显示通道共同输出，这时就会把相关显示通道都设为该分辨率
struFollowSingleScreen
大屏拼接单个子屏幕信息结构体
wBigScreenX
大屏在电视墙中起始X坐标，对于解码器该参数无效
wBigScreenY
大屏在电视墙中起始Y坐标，对于解码器该参数无效
byRes2
保留

Remarks

64T大屏拼接不需要主屏，直接设置4个子屏，该结构体中的主屏槽位号直接设置关联的解码通道，主屏显示通道号字段无效。大屏拼接后直接使用关联的解码通道启动解码，不支持设置画面分割模式。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_BINOC_RECTIFY_PARAM

双目图像校正参数结构体。

struct{
  float    fCamInternalMatrix[3][3];
  float    fDistCoeffs[8];
  float    fRotateMatrix[3][3];
  float    fProjectMatrix[3][4];
  BYTE     byRes[64];
}NET_DVR_BINOC_RECTIFY_PARAM, *LPNET_DVR_BINOC_RECTIFY_PARAM;

Members

fCamInternalMatrix
相机内参矩阵，包括焦距及主点坐标
fDistCoeffs
镜头畸变系数
fRotateMatrix
校正后的旋转矩阵
fProjectMatrix
校正后的投影矩阵
byRes
保留

See Also

NET_DVR_BV_CORRECT_PARAM


NET_DVR_BLOCKLIST_GROUP_COND

分组列表查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwGroupID;
  BYTE     byRes[64];
}NET_DVR_BLOCKLIST_GROUP_COND,*LPNET_DVR_BLOCKLIST_GROUP_COND;

Members

dwSize
结构体大小
dwGroupID
从当前编号开始获取，从1开始
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_BLOCKLIST_PICTURE_CFG

非授权名单报警路径查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byName[NAME_LEN];
  BYTE     bySex;
  BYTE     byPictureValid;
  BYTE     byRes[2];
  DWORD    dwPictureLen;
  char    *pPictureBuffer;
  BYTE     byRes[128];
}NET_DVR_BLOCKLIST_PICTURE_CFG,*LPNET_DVR_BLOCKLIST_PICTURE_CFG;

Members

dwSize
结构体大小
byCardNo
卡号（必填）
byName
姓名（必填）
bySex
性别：0-无效，1-男，2-女（选填）
byPictureValid
非授权名单图片是否有效：0-无效，1-有效（用于按卡号删除非授权名单图片，该字段为0时代表删除，删除时不传递非授权名单图片）
byRes
保留，置为0
dwPictureLen
非授权名单图片长度（图片大小不超过1M）
pPictureBuffer
非授权名单图片指针
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_BLOCKLIST_PICTURE_COND

非授权名单图片条件参数结构体。

struct{
  DWORD          dwSize;
  DWORD          dwPictureNum;
  BYTE           byRes[128];
}NET_DVR_BLOCKLIST_PICTURE_COND, *LPNET_DVR_BLOCKLIST_PICTURE_COND;

Members

dwSize
结构体大小
dwPictureNum
图片数量
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_BLOCKLIST_PICTURE_STATUS

非授权名单图片状态。

struct{
  DWORD          dwSize;
  BYTE           byCardNo[ACS_CARD_NO_LEN];
  BYTE           byStatus;
  BYTE           byRes[63];
}NET_DVR_BLOCKLIST_PICTURE_STATUS, *LPNET_DVR_BLOCKLIST_PICTURE_STATUS;

Members

Members

dwSize
结构体大小
byCardNo
卡号
byStatus
状态：0-无效，，1-处理中，2-上传失败，3-成功
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_BOARDALARMCFG

热插拔报警参数结构体。

struct{
  BYTE                           byEnablePullAlarm;
  BYTE                           byRes1[3];
  NET_DVR_HANDLEEXCEPTION_V30    struTempHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRes2[32];
}NET_DVR_BOARDALARMCFG, *LPNET_DVR_BOARDALARMCFG;

Members

byEnablePullAlarm
热插拔报警使能：0-报警，1-不报警
byRes1
保留
struTempHandleType
处理方式
struAlarmTime
布防时间
byRes2
保留

See Also

NET_DVR_VIDEOPLATFORMALARMCFG


NET_DVR_BONJOUR_CFG

Bonjour信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableBonjour;
  BYTE     byRes1[3];
  BYTE     byFriendlyName[MAX_DOMAIN_NAME];
  BYTE     byRes2[128];
}NET_DVR_BONJOUR_CFG,*LPNET_DVR_BONJOUR_CFG;

Members

dwSize
结构体大小
byEnableBonjour
Bonjour使能：0- 开启，1- 关闭
byRes1
保留，置为0
byFriendlyName
服务名
byRes2
保留，置为0

Remarks

服务名建议默认名称格式，例如：
DS-6716-123456789

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_BOOT_LOGO_CFG

开机LOGO参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[31];
}NET_DVR_BOOT_LOGO_CFG,*LPNET_DVR_BOOT_LOGO_CFG;

Members

dwSize
结构体大小
byEnable
开机是否显示LOGO：0- 不显示，1- 显示
byRes
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_BUF_INFO

缓冲区信息结构体。

struct{
  void*    pBuf;
  DWORD    nLen;
}NET_DVR_BUF_INFO,*LPNET_DVR_BUF_INFO;

Members

pBuf
缓冲区指针
nLen
缓冲区长度

See Also

NET_DVR_IN_PARAM NET_DVR_OUT_PARAM


NET_DVR_BUILTIN_SUPPLEMENTLIGHT

补光灯配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byMode;
  BYTE                        byBrightnessLimit;
  BYTE                        byRes[6];
  NET_DVR_SCHEDULE_DAYTIME    struSchedTime;
  BYTE                        byRes1[256];
}NET_DVR_BUILTIN_SUPPLEMENTLIGHT, *LPNET_DVR_BUILTIN_SUPPLEMENTLIGHT;

Members

dwSize
结构体大小
byMode
补光灯模式：0- 定时，1- 开启，2- 关闭，3- 自动（非光敏，算法画面识别）
byBrightnessLimit
亮度限制，取值范围：[0,100]
byRes
保留，置为0
struSchedTime
定时时间段，byMode为1时有效，在时间段内自动开启补光灯，在时间段外自动关闭补光灯
byRes1
保留，置为0

Remarks

  • 设备是否支持补光灯配置或者支持的参数能力，可以通过设备能力集进行判断，对应内置补光灯配置能力集(SupplementLight)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SUPPLEMENTLIGHT_CAPABILITIES。
  • 对应/ISAPI/Image/channels/<ID>/SupplementLight/capabilities，其中<ID>为通道号。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_BV_CALIB_COND

设备抓取图片和附加信息结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwChannels;
  BYTE                             byRes[300];
}NET_DVR_BV_CALIB_COND, *LPNET_DVR_BV_CALIB_COND;

Members

dwSize
结构体大小
dwChannels
通道号
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_BV_CALIB_INFO

双目外参标定结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwBVCalibNumber;
  NET_DVR_BV_CALIB_PARAM           struBVCalibParam[12];
  DWORD                            dwHumanHeight;
  DWORD                            dwChannel;
  BYTE                             byRes[300];
}NET_DVR_BV_CALIB_INFO, *LPNET_DVR_BV_CALIB_INFO;

Members

dwSize
结构体大小
dwBVCalibNumber
样本个数
struBVCalibParam
标定参数
dwHumanHeight
人体真实身高，单位cm
dwChannel
通道号
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_BV_CALIB_PARAM

双目标定参数结构体。

struct{
  DWORD                  dwPicID;
  NET_VCA_POINT          struPoint;
  BYTE                   byRes[32];
}NET_DVR_BV_CALIB_PARAM, *LPNET_DVR_BV_CALIB_PARAM;

Members

dwPicID
图片ID
struPoint
眉心坐标
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_BV_SAMPLE_CALIB_CFG

设备网络SDK开发使用手册

NET_DVR_BV_CALIB_PIC

设备抓取图片结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwPicID;
  DWORD                            dwPicLen1;
  DWORD                            dwPicLen2;
  char                             *pPicBuffer1;
  char                             *pPicBuffer2;
  BYTE                             byRes[600];
}NET_DVR_BV_CALIB_PIC, *LPNET_DVR_BV_CALIB_PIC;

Members

dwSize
结构体大小
dwPicID
图片ID
dwPicLen1
图片1长度
dwPicLen2
图片2长度
pPicBuffer1
图片1地址
pPicBuffer2
图片2地址
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_PPT_DETECT_CFG

设备网络SDK开发使用手册

NET_DVR_BV_CALIB_POSITION

双目标定位置结构体。

struct{
  DWORD    dwSize;
NET_PTZ_INFO  struInitialPos;
NET_PTZ_INFO  struAdjustPos;
  BYTE     byRes[300];
 }NET_DVR_BV_CALIB_POSITION,*LPNET_DVR_BV_CALIB_POSITION;

Members

dwSize
结构体大小
struInitialPos
初始坐标
struAdjustPos
调整坐标
byRes
保留，置为0

Remarks

PPT检测参数取值范围可以通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，录播主机能力RecordingHostAbility)获取，对应节点<PPTDetection>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_BV_SAMPLE_CALIB_CFG

设备网络SDK开发使用手册

NET_DVR_BV_CALIB_RESULT

双目外参标定结果。

struct{
  DWORD                            dwSize;
  DWORD                            dwCameraHeight;
  float                            fPitchAngle;
  float                            fInclineAngle;
  BYTE                             byRes[300];
}NET_DVR_BV_CALIB_INFO, *LPNET_DVR_BV_CALIB_INFO;

Members

dwSize
结构体大小
dwCameraHeight
摄像机高度，单位cm
fPitchAngle
摄像机俯视角度[0°, 60°], （浮点数 + 360）* 1000
摄像机斜角度
人摄像机斜角度[-20°,20°]，（浮点数 + 360） * 1000
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_BV_CORRECT_PARAM

左右相机校正参数结构体。

struct{
  DWORD                          dwSize;
  float                          fReprojectMatrix[4][4];
  NET_DVR_BINOC_RECTIFY_PARAM    struLCamParam;
  NET_DVR_BINOC_RECTIFY_PARAM    struRCamParam;
  BYTE                           byLensType;
  BYTE                           byRes[255];
}NET_DVR_BV_CORRECT_PARAM, *LPNET_DVR_BV_CORRECT_PARAM;

Members

dwSize
结构体大小
fReprojectMatrix
重投影矩阵
struLCamParam
左相机校正参数
struRCamParam
右相机校正参数
byLensType
镜头焦距类型：0- 未知，1- 8mm，2- 12mm，3- 16mm，4- 25mm，5- 35mm，6- 50mm，7- 4mm，8- 6mm
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_BV_DIRECT_CALIBRATION

双目直接标定参数结构体。

struct{
  DWORD    dwCameraHeight;
  float    fPitchAngle;
  float    fInclineAngle;
  BYTE     byRes1[228];
}NET_DVR_BV_DIRECT_CALIBRATION, *LPNET_DVR_BV_DIRECT_CALIBRATION;

Members

dwCameraHeight
摄像机高度，单位：cm
fPitchAngle
摄像机俯视角度，取值范围：[0°, 60°]
fInclineAngle
摄像机倾斜角度，取值范围：[-20°,20°]
byRes1
保留

See Also

NET_DVR_CALIBRATION_PRARM_UNION


NET_DVR_BV_HCORRECTION_CFG

矫正配置。

struct{
  DWORD                            dwSize;
  DWORD                            dwHumanHeight;
  BYTE                             byRes[300];
}NET_DVR_BV_HCORRECTION_CFG, *LPNET_DVR_BV_HCORRECTION_CFG;

Members

dwSize
结构体大小
dwHumanHeight
人体真实身高，单位cm
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_BV_SAMPLE_CALIB_CFG

设备网络SDK开发使用手册

NET_DVR_BV_HCORRECTION_COND

样本图片。

struct{
  DWORD                            dwSize;
  DWORD                            dwChannel;
  DWORD                            dwPicID;
  BYTE                             byRes[300];
}NET_DVR_BV_HCORRECTION_COND, *LPNET_DVR_BV_HCORRECTION_COND;

Members

dwSize
结构体大小
dwChannel
/通道号
dwPicID
图片ID。当为0时，表示删除所有
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM

开始样本标定输入参数结构体。

struct{
  DWORD    dwCameraHeight;
  DWORD    dwHumanHeight;
  BYTE     byRes[248];
}NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM, *LPNET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM;

Members

dwCameraHeight
摄像机高度，单位：cm
dwHumanHeight
人体身高，单位：cm
byRes
保留，置为0

See Also

NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION


NET_DVR_BV_SAMPLE_CALIB_CFG

双目标定参数结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwCameraHeight;
  float                            fPitchAngle;
  float                            fInclineAngle;
  NET_DVR_BV_SAMPLE_CALIB_POINT    struCalibPoint[MAX_SAMPLE_NUM];
  NET_DVR_BV_SAMPLE_CALIB_POINT    struCalibPointEx[MAX_SAMPLE_NUM_EX];
  BYTE                             byRes[60];
}NET_DVR_BV_SAMPLE_CALIB_CFG, *LPNET_DVR_BV_SAMPLE_CALIB_CFG;

Members

dwSize
结构体大小
dwCameraHeight
摄像机高度，单位：cm
fPitchAngle
摄像机俯视角度，取值范围：[0°, 60°]
fInclineAngle
摄像机倾斜角度，取值范围：[-20°,20°]
struCalibPoint
标定点信息
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_BV_SAMPLE_CALIB_END_PARAM

结束样本标定输入参数结构体。

struct{
  BYTE    byRes[256];
}NET_DVR_BV_SAMPLE_CALIB_END_PARAM, *LPNET_DVR_BV_SAMPLE_CALIB_END_PARAM;

Members

byRes
保留

See Also

NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION


NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION

双目样本标定输入参数联合体。

union{
  BYTE                                   byRes[256];
  NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM    struCalibBegin;
  NET_DVR_BV_SAMPLE_CALIB_SET_PARAM      struCalibSet;
  NET_DVR_BV_SAMPLE_CALIB_END_PARAM      struCalibEnd;
}NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION,*LPNET_DVR_BV_SAMPLE_CALIB_PARAM_UNION;

Members

byRes
联合体长度，256字节
struCalibBegin
开始标定输入参数
struCalibSet
设置标定输入参数
struCalibEnd
结束标定输入参数

See Also

NET_DVR_BV_SAMPLE_CALIBRATION


NET_DVR_BV_SAMPLE_CALIB_POINT

双目样本标定点参数结构体。

struct{
  BYTE             byCalibPtID;
  BYTE             byRes1[3];
  NET_VCA_POINT    struPoint;
  BYTE             byRes2[16];
}NET_DVR_BV_SAMPLE_CALIB_POINT, *LPNET_DVR_BV_SAMPLE_CALIB_POINT;

Members

byCalibPtID
标定点ID，取值范围：[1,12]，表示此点在双目标定过程中的序号
byRes1
保留，置为0
struPoint
标定点坐标
byRes2
保留，置为0

See Also

NET_DVR_BV_SAMPLE_CALIB_SET_PARAM NET_DVR_BV_SAMPLE_CALIB_CFG


NET_DVR_BV_SAMPLE_CALIB_SET_PARAM

设置样本标定输入参数结构体。

struct{
  NET_DVR_BV_SAMPLE_CALIB_POINT    struCalibPoint;
  BYTE                             byRes[228];
}NET_DVR_BV_SAMPLE_CALIB_SET_PARAM, *LPNET_DVR_BV_SAMPLE_CALIB_SET_PARAM;

Members

struCalibPoint
标定点（当人员保持直立行走，人脸出现在特定画面区域中时，此点表示对象两眼连线的中点）
byRes
保留，置为0

See Also

NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION


NET_DVR_BV_SAMPLE_CALIBRATION

双目样本标定配置结构体

struct{
 DWORD                                  dwSize;
 DWORD                                  dwChannel;
 BYTE                                   byCommand;
 BYTE                                   byRes1[3];
 NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION    uCalibParam;
 BYTE                                   byRes2[256];
}NET_DVR_BV_SAMPLE_CALIBRATION,*LPNET_DVR_BV_SAMPLE_CALIBRATION;

Members

dwSize
结构体大小
dwChannel
通道号
byCommand
标定命令，具体定义如下：
enum _BV_SAMPLE_CALIB_CMD_ENUM_{
  ENUM_BV_SAMPLE_CALIB_BEGIN    = 1,
  ENUM_BV_SAMPLE_CALIB_SETTING  = 2,
  ENUM_BV_SAMPLE_CALIB_END      = 3
}BV_SAMPLE_CALIB_CMD_ENUM
ENUM_BV_SAMPLE_CALIB_BEGIN
开始标定
ENUM_BV_SAMPLE_CALIB_SETTING
设置参数
ENUM_BV_SAMPLE_CALIB_END
结束标定
byRes1
保留，置为0
uCalibParam
标定输入参数，取值依赖于字段byCommand
byRes2
保留，置为0

Remarks

双目样本标定是一个持续过程：
首先，对设备发送开始标定命令(ENUM_ BV_SAMPLE_CALIB_BEGIN)，开启标定过程。
然后，持续发送设置标定点命令（ENUM_ BV_SAMPLE_CALIB_SETTING），告诉设备标定点的位置，设备保存此标定点并进行相关的计算，此命令的调用次数依据完成单次标定实际所需标定点的个数，目前是5个。
最后，发送结束标定命令（ENUM_ BV_SAMPLE_CALIB_END），结束此次标定。

See Also

NET_DVR_RemoteControl


NET_DVR_CABINET_AlARM_PARAMCFG

机柜报警参数结构体。

struct{
  char    sCabinetName[NAME_LEN];
  BYTE    byAssociateIO;
  BYTE    byCabinetState;
  BYTE    byAlarmIntervalTime;
  BYTE    byRes1[25];
}NET_DVR_CABINET_AlARM_PARAMCFG,*LPNET_DVR_CABINET_AlARM_PARAMCFG;

Members

sCabinetName
机柜名称
byAssociateIO
关联的IO口号，取值范围：1~4表示具体的IO通道号，0xff表示不启用
byCabinetState
机柜触发报警状态：0- 低电平，1- 高电平
byAlarmIntervalTime
报警上传时间间隔，取值范围：1~60，单位：秒
byRes1
保留

See Also

NET_DVR_CABINET_CFG


NET_DVR_CABINET_CFG

机柜配置参数结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byEnable;
  BYTE                              byRes[3];
  NET_DVR_CABINET_AlARM_PARAMCFG    struCabinetCfg[MAX_CABINET_COUNT];
  BYTE                              byRes1[84];
}NET_DVR_CABINET_CFG,*LPNET_DVR_CABINET_CFG;

Members

dwSize
结构体大小
byEnable
使能：0- 禁用，1- 启用
byRes
保留，置为0
struCabinetCfg
机柜报警参数配置
byRes1
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CALIB_PARAM

从摄像机标定参数结构体。

struct{
  NET_PTZ_INFO     struPtzInfo;
  NET_VCA_POINT    struCalibCoordinates;
  BYTE             byRes[16];
}NET_DVR_CALIB_PARAM, *LPNET_DVR_CALIB_PARAM;

Members

struPtzInfo
PTZ坐标参数
struCalibCoordinates
标定点坐标
byRes
保留

See Also

NET_DVR_SLAVECAMERA_CALIB_CFG


NET_DVR_CALIBRATE_TIME

时间校时参数结构体。

struct{
  DWORD           dwSize;
  NET_DVR_TIME    struTime;
  WORD            wMilliSec;
  BYTE            byRes[14];
}NET_DVR_CALIBRATE_TIME,*LPNET_DVR_CALIBRATE_TIME;

Members

dwSize
结构体大小
struTime
时间参数，年月日时分秒
wMilliSec
毫秒
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CALIBRATION

车辆检测标定参数结构体。

struct{
  DWORD              dwSize;
  NET_VCA_POLYGON    struRegion;
  BYTE               byRes[64];
}NET_DVR_CALIBRATION,*LPNET_DVR_CALIBRATION;

Members

dwSize
结构体大小
struRegion
标定区域
byRes
保留，置为0

Remarks

  • 该配置功能对应获取车俩检测标定能力集(Calibration)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VEHICLE_CAPABILITIES)。

See Also

NET_DVR_GetSTDConfig


NET_DVR_CALIBRATION_CFG

标定配置结构体。

struct{
  DWORD                              dwSize;
  BYTE                               byEnable;
  BYTE                               byCalibrationType;
  BYTE                               byRes1[2];
  NET_DVR_CALIBRATION_PRARM_UNION    uCalibrateParam;
  BYTE                               byRes2[12];
}NET_DVR_CALIBRATION_CFG, *LPNET_DVR_CALIBRATION_CFG;

Members

dwSize
结构体大小
byEnable
是否启用标定，0-不启用，1-启用
byCalibrationType
标定类型，具体定义如下：
enum tagCALIBRATE_TYPE{
  PDC_CALIBRATE          = 0x01,
  BEHAVIOR_OUT_CALIBRATE = 0x02,
  BEHAVIOR_IN_CALIBRATE  = 0x03,
  ITS_CALBIRETE          = 0x04,
  BV_DIRECT_CALIBRATE    = 0x05,
  PDC_LINE_CALIBRATE     = 0x06
}CALIBRATE_TYPE
PDC_CALIBRATE
客流量统计标定
BEHAVIOR_OUT_CALIBRATE
行为室外场景标定
BEHAVIOR_IN_CALIBRATE
行为室内场景标定
ITS_CALBIRETE
交通事件标定
BV_DIRECT_CALIBRATE
双目直接标定
PDC_LINE_CALIBRATE
PDC线标定
byRes1
保留
uCalibrateParam
标定参数联合体
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CALIBRATION_PRARM_UNION

标定参数联合体。

union{
  BYTE                               byRes[240];
  NET_DVR_PDC_CALIBRATION            struPDCCalibration;
  NET_DVR_BEHAVIOR_OUT_CALIBRATION   struBehaviorOutCalibration;
  NET_DVR_BEHAVIOR_IN_CALIBRATION    struBehaviorInCalibration;
  NET_DVR_ITS_CALIBRATION            struITSCalibration;
  NET_DVR_BV_DIRECT_CALIBRATION      struBvDirectCalibration;
  NET_DVR_PDC_LINE_CALIBRATION       struPDCLineCalibration;
}NET_DVR_CALIBRATION_PRARM_UNION, *LPNET_DVR_CALIBRATION_PRARM_UNION;

Members

byRes
联合体大小，240字节
struPDCCalibration
客流量统计标定参数
struBehaviorOutCalibration
行为室外场景标定(主要应用于IVS等)
struBehaviorInCalibration
行为室内场景标定(主要应用IAS等)
struITSCalibration
ITS标定
struBvDirectCalibration
双目直接标定
struPDCLineCalibration
PDC线标定参数

See Also

NET_DVR_CALIBRATION_CFG


NET_DVR_CALL_INFO

会议信息联合体。

union{
  BYTE                            byRes[640];
  NET_DVR_TERMINAL_CALL_INFO      struTerminalCallInfo;
  NET_DVR_CONFERENCE_CALL_INFO    struConferenceCallInfo;
}NET_DVR_CALL_INFO,*LPNET_DVR_CALL_INFO;

Members

byRes
联合体大小，640字节
struTerminalCallInfo
终端点对点呼叫信息，呼叫类型为终端点对点呼叫时有效
struConferenceCallInfo
会议呼叫信息，呼叫类型为会议呼叫时有效

See Also

NET_DVR_TERMINAL_CONFERENCE_STATUS NET_DVR_CONFERENCE_CALL_ALARM


NET_DVR_CALL_QUERY_COND

终端会议呼叫查询条件结构体。

struct{
  DWORD           dwSize;
  BYTE            bySearchID[MAX_SEARCH_ID_LEN];
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
  BYTE            byCallType;
  BYTE            byRes1[3];
  DWORD           dwMaxResults;
  BYTE            dwSearchPos;
  BYTE            byRes2[32];
}NET_DVR_CALL_QUERY_COND, *LPNET_DVR_CALL_QUERY_COND;

Members

dwSize
结构体大小
bySearchID
搜索标识符，uuid串，应用层自己生成，表示同一组搜索
struStartTime
搜索起始时间
struEndTime
搜索结束时间
byCallType
呼叫类型：1- 已接，2- 未接，3- 已拨，4- 所有类型
byRes1
保留，置为0
dwMaxResults
本次查找最多返回个数
dwSearchPos
查找起始索引
byRes2
保留，置为0

Remarks

  • 设备是否支持终端会议呼叫查询功能或者支持的参数能力，可以通过设备能力集进行判断，对应会议呼叫查询能力集(CallQueryProfile)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CALL_QUERY_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_CALL_QUERY_RESULT

终端会议呼叫查询结果结构体。

struct{
  DWORD    dwSize;
  BYTE     bySearchID[MAX_SEARCH_ID_LEN];
  BYTE     byStatus;
  BYTE     byRes[3];
  DWORD    dwCount;
  BYTE     *pResults;
  BYTE     byRes2[32];
}NET_DVR_CALL_QUERY_RESULT, *LPNET_DVR_CALL_QUERY_RESULT;

Members

dwSize
结构体大小
bySearchID
搜索标识符，uuid串，表示同一组搜索
byStatus
查询状态，具体定义如下所示：
enum _CALL_QUERY_RESULT_STATUS_{
  CALL_QUERY_RESULT_OK = 0,
  CALL_QUERY_RESULT_FAIL,
  CALL_QUERY_RESULT_MORE,
  CALL_QUERY_RESULT_NOMATCH,
  CALL_QUERY_RESULT_PARAMERROR,
  CALL_QUERY_RESULT_INVALIDTIME,
  CALL_QUERY_RESULT_TIMEOUT
}CALL_QUERY_RESULT_STATUS
CALL_QUERY_RESULT_OK
成功查询所有
CALL_QUERY_RESULT_FAIL
查询失败，未知错误
CALL_QUERY_RESULT_MORE
成功查询 还有更多没有返回
CALL_QUERY_RESULT_NOMATCH
没有查询到匹配的
CALL_QUERY_RESULT_PARAMERROR
查询条件参数错误
CALL_QUERY_RESULT_INVALIDTIME
查询条件时间无效
CALL_QUERY_RESULT_TIMEOUT
查询超时
byRes
保留，置为0
dwCount
实际查询到的结果个数
pResults
结果内容，dwCount个NET_DVR_CALL_QUERY_SINGLE，需要应用层自己预先分屏好足够的内存
byRes2
保留，置为0

Remarks

  • 设备是否支持终端会议呼叫查询功能或者支持的参数能力，可以通过设备能力集进行判断，对应会议呼叫查询能力集(CallQueryProfile)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CALL_QUERY_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_CALL_QUERY_SINGLE

终端会议呼叫查询单个结果信息结构体。

struct{
  DWORD           dwSize;
  BYTE            byCallType;
  BYTE            byRes1[3];
  BYTE            byTerminalName[TERMINAL_NAME_LEN];
  BYTE            byAddressURL[MAX_URL_LEN];
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
  BYTE            byRes2[32];
}NET_DVR_CALL_QUERY_SINGLE, *LPNET_DVR_CALL_QUERY_SINGLE;

Members

dwSize
结构体大小
byCallType
呼叫类型：1- 已接，2- 未接，3- 已拨
byRes1
保留，置为0
byTerminalName
终端名
byAddressURL
对端URL地址
struStartTime
呼叫开始时间
struEndTime
呼叫结束时间
byRes2
保留，置为0

See Also

NET_DVR_CALL_QUERY_RESULT


NET_DVR_CALL_ROOM_CFG

按键呼叫住户配置结构体。

struct{
  DWORD    dwSize;
  SHORT    nFloorNumber;
  WORD     wRoomNumber;
  BYTE     byManageCenter;
  BYTE     byRes1[3];
  BYTE     byCalledName[64];
  BYTE     byRes[60];
 }NET_DVR_CALL_ROOM_CFG,*LPNET_DVR_CALL_ROOM_CFG;

Members

dwSize
结构体大小
nFloorNumber
层号
wRoomNumber
房间号
byManageCenter
是否配置成呼叫管理中心：0- 否，1- 是
byRes1
保留，置为0
byCalledName
标准sip模式下有效，被叫用户名, 支持数字，字母，@和.
byRes
保留，置为0

See Also

  • 按键呼叫住户配置参数能力，对应可视对讲主机能力集(接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<CallRoomConfig>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CALL_WAITTING_CFG

呼叫等待参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1;
  WORD     wWaitTime;
  BYTE     byRes[512];
}NET_DVR_CALL_WAITTING_CFG,*LPNET_DVR_CALL_WAITTING_CFG;

Members

dwSize
结构体大小
byEnable
是否启用呼叫等待：0- 不启用，1- 启用
byRes1
保留，置为0
wWaitTime
呼叫等待时间，单位：秒
byRes
保留，置为0

Remarks

  • 设备是否支持呼叫等待参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应呼叫等待参数配置能力集(CallWaittingCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CALL_WAITTING_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CALLBACK_TYPE_DATA

长连接回调数据结构体。

struct{
  DOWRD   dwChannel;
  DOWRD   dwDataType;
  DOWRD   dwDataLen;
  BYTE    *pData;
  BYTE    byRes[64];
}NET_DVR_CALLBACK_TYPE_DATA,*LPNET_DVR_CALLBACK_TYPE_DATA;

Members

dwChannel
设备通道号
dwDataType
数据类型，详见下文“Remarks”说明
dwDataLen
数据缓冲区大小
pData
缓冲区，保存回调数据，不同的dwDataType对应不同的数据，详见下文“Remarks”说明
byRes
保留，置为0

Remarks

通过接口NET_DVR_StartRemoteConfig设置长连接回调函数获取设备上传的信息数据，不同的类型(dwDataType)对应不同的数据结构(pData)，如下表所示。

dwDataType宏定义 | 取值 | 含义 | pData对应结构体
ENUM_FISHEYE_STREAM_STATUS | 1 | 鱼眼码流输出状态 | NET_DVR_FISHEYE_STREAM_STATUS
ENUM_FISHEYE_PTZPOS | 2 | PTZ通道当前所处鱼眼模式下的坐标 | NET_VCA_POINT
ENUM_FISHEYE_REALTIME_OUTPUT | 3 | 实时输出模式 | (DWORD) 实时输出状态：0- 关闭 ，1- 开启

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CAM_MODE

信号输入源类型。

enum _NET_DVR_CAM_MODE_{
  NET_DVR_UNKNOW       = 0,
  NET_DVR_CAM_BNC      = 1,
  NET_DVR_CAM_VGA      = 2,
  NET_DVR_CAM_DVI      = 3,
  NET_DVR_CAM_HDMI     = 4,
  NET_DVR_CAM_IP       = 5,
  NET_DVR_CAM_RGB      = 6,
  NET_DVR_CAM_DECODER  = 7,
  NET_DVR_CAM_MATRIX   = 8,
  NET_DVR_CAM_YPBPR    = 9,
  NET_DVR_CAM_USB      = 10,
  NET_DVR_CAM_SDI      = 11,
  NET_DVR_CAM_HDI      = 12,
  NET_DVR_CAM_DP       = 13,
  NET_DVR_CAM_HDTVI    = 14,
  NET_DVR_CAM_JOINT    = 15,
  NET_DVR_CAM_HDBASET  = 16
}NET_DVR_CAM_MODE
NET_DVR_UNKNOW
无效
NET_DVR_CAM_BNC
BNC输入
NET_DVR_CAM_VGA
VGA输入
NET_DVR_CAM_DVI
DVI输入
NET_DVR_CAM_HDMI
HDMI输入
NET_DVR_CAM_IP
IP输入
NET_DVR_CAM_RGB
RGB输入
NET_DVR_CAM_DECODER
解码板输入
NET_DVR_CAM_MATRIX
矩阵信号源
NET_DVR_CAM_YPBPR
YPbPr输入
NET_DVR_CAM_USB
USB输入
NET_DVR_CAM_SDI
SDI输入
NET_DVR_CAM_HDI
HDI输入
NET_DVR_CAM_DP
DP输入
NET_DVR_CAM_HDTVI
HDTVI输入
NET_DVR_CAM_JOINT
拼接信号源输入
NET_DVR_CAM_HDBASET
HDBASET输入


NET_DVR_CAMERA_DEHAZE_CFG

去雾参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDehazeMode;
  BYTE     byRes[7];
}NET_DVR_CAMERA_DEHAZE_CFG,*LPNET_DVR_CAMERA_DEHAZE_CFG;

Members

dwSize
结构体大小
byDehazeMode
去雾模式：0- 不启用，1- 自适应模式
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CAMERA_PARAM

摄像机参数结构体。

struct{
  BYTE     byEnableHeight;
  BYTE     byEnableAngle;
  BYTE     byEnableHorizon;
  BYTE     byRes[5];
  float    fCameraHeight;
  float    fCameraAngle;
  float    fHorizon;
}NET_DVR_CAMERA_PARAM, *LPNET_DVR_CAMERA_PARAM;

Members

byEnableHeight
是否使能设置摄像机高度线，0-不使能，1-使能
byEnableAngle
是否使能设置摄像机俯仰角度，0-不使能，1-使能
byEnableHorizon
是否使能设置摄像机地平线，0-不使能，1-使能
byRes
保留
fCameraHeight
摄像机高度（单位：米），范围[2,50]
fCameraAngle
摄像机俯仰角度（单位：度），范围[1,89]
fHorizon
场景中的地平线，范围[0,100](标定获取的地平线值就表示地平线与图像下边缘的图像距离。比如，fHorizon为0.5表示在图像中心，fHorizon为1表示是在图像上边缘，fHorizon大于1表示在图像以上)

See Also

NET_DVR_BEHAVIOR_IN_CALIBRATION
NET_DVR_BEHAVIOR_OUT_CALIBRATION


NET_DVR_CAMERA_SETUPCFG

相机架设参数结构体。

struct{
  DWORD    dwSize;
  WORD     wSetupHeight;
  BYTE     byLensType;
  BYTE     bySetupHeightUnit;
  DWORD    dwSceneDis;
  float    fPitchAngle;
  float    fInclineAngle;
  float    fRotateAngle;
  WORD     wVideoDetCoefficient;
  BYTE     byErectMethod;
  BYTE     byCameraViewAngle;
  DWORD    dwHorizontalDistance;
  BYTE     byDetailLensType;
  BYTE     byRes[3];
  float    fHorFieldAngle;
  float    fVerFieldAngle;
  BYTE     byRes1[24];
}NET_DVR_CAMERA_SETUPCFG,*LPNET_DVR_CAMERA_SETUPCFG;

Members

dwSize
结构体大小
wSetupHeight
架设高度，取值范围：[0,20]
byLensType
镜头焦距类型：0- 未知，1- 8mm，2- 12mm，3- 16mm，4- 25mm，5- 35mm，6- 50mm
bySetupHeightUnit
架设高度单位：0- 米(m)，1- 厘米(cm)
dwSceneDis
图像下边缘位置与相机之间的水平距离，单位：厘米
fPitchAngle
相机俯仰角度，取值范围：[-180, 180]，单位：度
fInclineAngle
相机倾斜角度，取值范围：[-180, 180]，单位：度
fRotateAngle
相机旋转角度，取值范围：[-180, 180]，单位：度
wVideoDetCoefficient
视频测试系数，取值范围：[0,300]
byErectMethod
架设方式：0-正装，1-侧装
byCameraViewAngle
摄像机安装视野角度：0- 垂直（默认），1- 倾斜
dwHorizontalDistance
摄像机与出入口水平距离，取值范围：1~1000，默认：30，单位：cm，摄像机角度为倾斜时有效
byDetailLensType
镜头类型，取值范围：1~100，默认：28，单位：0.1mm
byRes
保留
fHorFieldAngle
摄像机水平视场角角度，取值范围：[0,360]，单位：度
fVerFieldAngle
摄像机垂直视场角角度，取值范围：[0,360]，单位：度
byRes1
保留

Remarks

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CAMERAPARAMCFG

前端参数配置结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_VIDEOEFFECT     struVideoEffect;
  NET_DVR_GAIN            struGain;
  NET_DVR_WHITEBALANCE    struWhiteBalance;
  NET_DVR_EXPOSURE        struExposure;
  NET_DVR_GAMMACORRECT    struGammaCorrect;
  NET_DVR_WDR             struWdr;
  NET_DVR_DAYNIGHT        struDayNight;
  NET_DVR_BACKLIGHT       struBackLight;
  NET_DVR_NOISEREMOVE     struNoiseRemove;
  BYTE                    byPowerLineFrequencyMode;
  BYTE                    byIrisMode;
  BYTE                    byMirror;
  BYTE                    byDigitalZoom;
  BYTE                    byDeadPixelDetect;
  BYTE                    byBlackPwl;
  BYTE                    byEptzGate;
  BYTE                    byLocalOutputGate;
  BYTE                    byCoderOutputMode;
  BYTE                    byLineCoding;
  BYTE                    byDimmerMode;
  BYTE                    byPaletteMode;
  BYTE                    byEnhancedMode;
  BYTE                    byDynamicContrastEN;
  BYTE                    byDynamicContrast;
  BYTE                    byJPEGQuality;
  NET_DVR_CMOSMODECFG     struCmosModeCfg;
  BYTE                    byFilterSwitch;
  BYTE                    byFocusSpeed;
  BYTE                    byAutoCompensationInterval;
  BYTE                    bySceneMode;
}NET_DVR_CAMERAPARAMCFG, *LPNET_DVR_CAMERAPARAMCFG;

Members

dwSize
结构体大小
struVideoEffect
视频效果参数
struGain
增益参数
struWhiteBalance
白平衡参数
struExposure
曝光参数
struGammaCorrect
Gamma校正参数
struWdr
宽动态参数
struDayNight
日夜转换功能参数
struBackLight
背光补偿参数
struNoiseRemove
数字降噪参数
byPowerLineFrequencyMode
0-50HZ; 1-60HZ
byIrisMode
0 自动光圈;1 手动光圈
byMirror
镜像：0 关闭;1 左右;2 上下;3 中间
byDigitalZoom
数字缩放：0- 不启用，1- 启用。对于热成像仪，表示数字倍率：0- 关闭，1-×2，2-×4
byDeadPixelDetect
坏点检测是否启用，0-不启用，1-启用
byBlackPwl
黑电平补偿，0-255
byEptzGate
EPTZ开关变量：0-关闭电子云台；1-开启电子云台
byLocalOutputGate
本地输出开关变量：
0-本地输出关闭
1-本地BNC输出打开
2-HDMI输出关闭
11-缩放输出
12-裁剪输出
13-裁剪缩放输出
20-HDMI_720P50输出开
21-HDMI_720P60输出开
22-HDMI_1080I60输出开
23-HDMI_1080I50输出开
24-HDMI_1080P24输出开
25-HDMI_1080P25输出开
26-HDMI_1080P30输出开
27-HDMI_1080P50输出开
28-HDMI_1080P60输出开
byCoderOutputMode
编码器fpga输出模式：0-直通；3-像素搬家
byLineCoding
是否开启行编码：0- 否，1- 是
byDimmerMode
调光模式：0- 半自动，1- 自动，适用于热成像仪
byPaletteMode
调色板：0- 白热，1- 黑热，2- 调色板2，…，8- 调色板8，适用于热成像仪
byEnhancedMode
增强方式（探测物体周边）：0- 不增强，1- 1，2- 2，3- 3，4- 4，适用于热成像仪
byDynamicContrastEN
动态对比度增强：0-不增强；1-增强
byDynamicContrast
动态对比度：0~100
byJPEGQuality
JPEG图像质量：0~100。对于V3.5或以上版本的智能交通摄像机，该参数无效，相关功能通过使能参数（NET_DVR_SNAPENABLECFG）的wJpegPicSize实现。
struCmosModeCfg
CMOS模式下前端参数配置，镜头模式从能力集获取
byFilterSwitch
滤波开关：0- 不启用，1- 启用，适用于热成像仪
byFocusSpeed
镜头调焦速度，取值范围0~10，适用于热成像仪
byAutoCompensationInterval
定时自动快门补偿，取值范围1~120，单位：分钟，适用于热成像仪
bySceneMode
场景模式：0- 室外，1- 室内

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CAMERAPARAMCFG_EX

前端参数配置结构体。

struct{
  DWORD                              dwSize;
  NET_DVR_VIDEOEFFECT                struVideoEffect;
  NET_DVR_GAIN                       struGain;
  NET_DVR_WHITEBALANCE               struWhiteBalance;
  NET_DVR_EXPOSURE                   struExposure;
  NET_DVR_GAMMACORRECT               struGammaCorrect;
  NET_DVR_WDR                        struWdr;
  NET_DVR_DAYNIGHT                   struDayNight;
  NET_DVR_BACKLIGHT                  struBackLight;
  NET_DVR_NOISEREMOVE                struNoiseRemove;
  BYTE                               byPowerLineFrequencyMode;
  BYTE                               byIrisMode;
  BYTE                               byMirror;
  BYTE                               byDigitalZoom;
  BYTE                               byDeadPixelDetect;
  BYTE                               byBlackPwl;
  BYTE                               byEptzGate;
  BYTE                               byLocalOutputGate;
  BYTE                               byCoderOutputMode;
  BYTE                               byLineCoding;
  BYTE                               byDimmerMode;
  BYTE                               byPaletteMode;
  BYTE                               byEnhancedMode;
  BYTE                               byDynamicContrastEN;
  BYTE                               byDynamicContrast;
  BYTE                               byJPEGQuality;
  NET_DVR_CMOSMODECFG                struCmosModeCfg;
  BYTE                               byFilterSwitch;
  BYTE                               byFocusSpeed;
  BYTE                               byAutoCompensationInterval;
  BYTE                               bySceneMode;
  NET_DVR_DEFOGCFG                   struDefogCfg;
  NET_DVR_ELECTRONICSTABILIZATION    struElectronicStabilization;
  NET_DVR_CORRIDOR_MODE_CCD          struCorridorMode;
  BYTE                               byExposureSegmentEnable;
  BYTE                               byBrightCompensate;
  BYTE                               byCaptureModeN;
  BYTE                               byCaptureModeP;
  NET_DVR_SMARTIR_PARAM              struSmartIRParam;
  NET_DVR_PIRIS_PARAM                struPIrisParam;
  NET_DVR_LASER_PARAM_CFG            struLaserParam;
  NET_DVR_FFC_PARAM                  struFFCParam;
  NET_DVR_DDE_PARAM                  struDDEParam;
  NET_DVR_AGC_PARAM                  struAGCParam;
  BYTE                               byLensDistortionCorrection;
  BYTE                               byDistortionCorrectionLevel;
  BYTE                               byCalibrationAccurateLevel;
  BYTE                               byZoomedInDistantViewLevel;
  NET_DVR_SNAP_CAMERAPARAMCFG        struSnapCCD;
  NET_DVR_OPTICAL_DEHAZE             struOpticalDehaze;
  NET_DVR_THERMOMETRY_AGC            struThermAGC;
  BYTE                               byFusionMode;
  BYTE                               byHorizontalFOV;
  BYTE                               byVerticalFOV;
  BYTE                               byBrightnessSuddenChangeSuppression;
  BYTE                               byRes2[156];
}NET_DVR_CAMERAPARAMCFG_EX, *LPNET_DVR_CAMERAPARAMCFG_EX;

Members

dwSize
结构体大小
struVideoEffect
视频效果参数
struGain
增益参数
struWhiteBalance
白平衡参数
struExposure
曝光参数
struGammaCorrect
Gamma校正参数
struWdr
宽动态参数
struDayNight
日夜转换功能参数
struBackLight
背光补偿参数
struNoiseRemove
数字降噪参数
byPowerLineFrequencyMode
0-50HZ; 1-60HZ
byIrisMode
光圈模式：
0- 自动光圈
1- 手动光圈
2- P-Iris1
3- Union 3-9mm F1.6-2.7 (T5280-PQ1)
4- Union 2.8-12mm F1.6-2.7 (T5289-PQ1)
5- HIK 3.8-16mm F1.5（HV3816P-8MPIR）
6- HIK 11-40mm F1.7 (HV1140P-8MPIR)
7- HIK 2.7-12mm F1.2（TV2712P-MPIR）
8- MZ5721D-12MPIR
9- MZ1555D-12MPIR
10- MZ5721D-12MPIR(RS485)
11- MZ1555D-12MPIR(RS485)
当byIrisMode==2时，可以配置红外光圈大小等级，即参数struPIrisParam有效。
byMirror
镜像：0 关闭;1 左右;2 上下;3 中间
byDigitalZoom
数字缩放：0- 不启用，1- 启用。对于热成像仪，表示数字变倍倍率：0- 关闭，1-×2，2-×4，3-×8，4-×16，5-×32
byDeadPixelDetect
坏点检测是否启用，0-不启用，1-启用
byBlackPwl
黑电平补偿，0-255
byEptzGate
EPTZ开关变量：0-关闭电子云台；1-开启电子云台
byLocalOutputGate
本地输出开关变量：
0- 本地输出关闭
1- 本地BNC输出打开
2- HDMI输出关闭
11- 缩放输出
12- 裁剪输出
13- 裁剪缩放输出
20- HDMI_720P50输出开
21- HDMI_720P60输出开
22- HDMI_1080I60输出开
23- HDMI_1080I50输出开
24- HDMI_1080P24输出开
25- HDMI_1080P25输出开
26- HDMI_1080P30输出开
27- HDMI_1080P50输出开
28- HDMI_1080P60输出开
40- SDI_720P50
41- SDI_720P60
42- SDI_1080I50
43- SDI_1080I60
44- SDI_1080P24
45- SDI_1080P25
46- SDI_1080P30
47- SDI_1080P50
48- SDI_1080P60
49- SDI_720P25
50- SDI_720P30
byCoderOutputMode
编码器fpga输出模式：0-直通；3-像素搬家
byLineCoding
是否开启行编码：0- 否，1- 是
byDimmerMode
调光模式：0- 半自动，1- 自动，适用于热成像仪
byPaletteMode
调色板：0- 白热，1- 黑热，2- 调色板2，…，8- 调色板8，9-融合1，10-彩虹，11-融合2，12-铁红1，13-铁红2，14-深褐色，15-色彩1，16-色彩2，17-冰火，18-雨，19-红热，20-绿热，21-深蓝，适用于热成像仪
byEnhancedMode
增强方式（探测物体周边）：0- 不增强，1- 1，2- 2，3- 3，4- 4，适用于热成像仪
byDynamicContrastEN
动态对比度增强：0-不增强；1-增强
byDynamicContrast
动态对比度：0~100
byJPEGQuality
JPEG图像质量：0~100。对于V3.5或以上版本的智能交通摄像机，该参数无效，相关功能通过使能参数（NET_DVR_SNAPENABLECFG）的wJpegPicSize实现。
struCmosModeCfg
CMOS模式下前端参数配置，镜头模式从能力集获取
byFilterSwitch
滤波开关：0- 不启用，1- 启用，适用于热成像仪
byFocusSpeed
镜头调焦速度，取值范围0~10，适用于热成像仪
byAutoCompensationInterval
定时自动快门补偿，取值范围1~120，单位：分钟，适用于热成像仪
bySceneMode
场景模式：0- 室外，1- 室内，2- 默认，3- 弱光
struDefogCfg
透雾参数
struElectronicStabilization
电子防抖
struCorridorMode
旋转功能
byExposureSegmentEnable
曝光时间和增益呈阶梯状调整：0- 不启用，1- 启用，比如曝光往上调整时，先提高曝光时间到中间值，然后提高增益到中间值，再提高曝光到最大值，最后提高增益到最大值
byBrightCompensate
夜晚亮度增强，取值范围：[0,100]
byCaptureModeN
视频输入模式（N制）:
0-关闭，1-640*480@25fps，2-640*480@30ps，3-704*576@25fps，4-704*480@30fps，5-1280*720@25fps，
6-1280*720@30fps，7-1280*720@50fps，8-1280*720@60fps，9-1280*960@15fps，10-1280*960@25fps，
11-1280*960@30fps，12-1280*1024@25fps，13-1280*1024@30fps，14-1600*900@15fps，15-1600*1200@15fps，
16-1920*1080@15fps，17-1920*1080@25fps，18-1920*1080@30fps，19-1920*1080@50fps，20-1920*1080@60fps，
21-2048*1536@15fps，22-2048*1536@20fps，23-2048*1536@24fps，24-2048*1536@25fps，25-2048*1536@30fps，
26-2560*2048@25fps，27-2560*2048@30fps，28-2560*1920@7.5fps，29-3072*2048@25fps，30-3072*2048@30fps，
31-2048*1536@12.5fps，32-2560*1920@6.25fps，33-1600*1200@25fps，34-1600*1200@30fps，35-1600*1200@12.5fps，
36-1600*900@12.5fps，37-1600@900@15fps，38-800*600@25fps，39-800*600@30fps，40-4000*3000@12.5fps，
41-4000*3000@15fps，42-4096*2160@20fps，43-3840*2160@20fps，44-960*576@25fps，45-960*480@30fps，
46-752*582@25fps，47-768*494@30fps，48-2560*1440@25fps，49-2560*1440@30fps ，50-720P@100fps，
51-720P@120fps，52-2048*1536@50fps，53-2048*1536@60fps，54-3840*2160@25fps，55-3840*2160@30fps，
56-4096*2160@25fps，57-4096*2160@30fps ，58-1280*1024@50fps，59-1280*1024@60fps，60-3072*2048@50fps，
61-3072*2048@60fps，62-3072*1728@25fps，63-3072*1728@30fps，64-3072*1728@50fps，65-3072*1728@60fps，
66-336*256@50fps，67-336*256@60fps，68-384*288@50fps，69-384*288@60fps，70-640*512@50fps，
71-640*512@60fps，72-2592*1944@25fps，73-2592*1944@30fps，74-2688*1536@25fps，75-2688*1536@30fps，
76-2592*1944@20fps，77-2592*1944@15fps，78-2688*1520@20fps，79-2688*1520@15fps，80-2688*1520@25fps，
81-2688*1520@30fps，82-2720*2048@25fps，83-2720*2048@30fps，84-336*256@25fps，85-384*288@25fps，
86-640*512@25fps，87-1280*960@50fps，88-1280*960@60fps，89-1280*960@100fps，90-1280*960@120fps，
91-4000*3000@20fps，92-1920*1200@25fps，93-1920*1200@30fps，94-2560*1920@25fps，95-2560*1920@20fps，
96-2560*1920@30fps，97-1280*1920@25fps，98-1280*1920@30fps，99-4000*3000@24fps，100-4000*3000@25fps，
101-4000*3000@10fps，102- 384*288@30fps，103-2560*1920@15fps，104-2400*3840@25fps，105-1200*1920@25fps，
106-4096*1800@30fps，107-3840*1680@30fps，108-2560*1120@30fps，109-704*320@30fps，110-1280*560@30fps，
111-4096*1800@25fps，112-3840*1680@25fps，113-2560*1120@25fps，114-704*320@25fps，115-1280*560@25fps，
116-2400*3840@24fps，117-3840*2400@24fps，118-3840*2400@25fps，119-2560*1920@12.5fps，120-2560*2048@12fps，
121-2560*2048@15fps，122-2560*1536@25fps，123-2560*1536@30fps，124-2256*2048@25fps，125-2256*2048@30fps，
126-2592*2592@12.5fps，127-2592*2592@15fps，128 - 640*512@30fps，129-2048*1520@30fps，130-2048*1520@25fps，
131-3840*2160@24fps，132-2592*1520@25fps，133-2592*1520@30fps，134-2592*1536@25fps，135-2592*1536@30fps，
136-640*960@25fps，137-640*960@24fps，139-3840*1080@25fps，140-3840*1080@30fps，141-2688*1520@12.5fps，
142-2992*2192@25fps，143-2992*2192@30fps，144-3008*2160@25fps，145-3008*2160@30fps，146-3072*1728@20fps，
147-2560*1440@20fps，148-2160*3840@25fps，149-2160*3840@30fps，150-7008*1080@25fps，151-7008*1080@30fps，
152-3072*2048@20fps，153-1536*864@25fps，154-2560*1920@24fps，155-2400*3840@30fps，156-3840*2400@30fps，
157-3840*2160@15fps，158-384*288@8.3fps，159-640*512@8.3fps，160-160*120@8.3fps，161-1024*768@8.3fps，
162-640*480@8.3fps，163-3840*2160@12.5fps，164-2304*1296@30fps，165-2304*1296@25fps，166-2560*1440@24fps，
167-2688*1512@25fps，168-2688*1512@30fps，169-2688*1512@50fps，170-2688*1512@60fps，171-1536*864@30fps，
172-2560*1440@50fps，173-2560*1440@60fps，174-2048*2048@25fps，175-2048*2048@30fps，176-4000*3060@20fps，
177-3060*3060@25fps，178-3060*3060@30fps，179-3000*3000@25fps，180-3000*3000@30fps，181-8160*3616@30fps，
182-8160*3616@25fps，183-3000*3000@20fps，184-3000*3000@15fps，185-3000*3000@12.5fps，186-5472*3648@25fps，
187-5472*3648@30fps，188-7680*4320@25fps，189-7680*4320@30fps，190-8160*2400@25fps，191-8160*2400@30fps，
192-5520*2400@25fps，193-5520*2400@30fps，194-2560*1440@15fps，195-1944*1212@24fps，196-1944*1212@25fps，
197-3456*1920@30fps，198-4800*2688@25fps，199-4800*2688@30fps，200-6480*1080@25fps，201-6480*1080@30fps，
202-8640*1440@25fps，203-8640*1440@30fps，204-3456*1920@25fps，205-2688*1520@50fps，206-2688*1520@60fps，
207-4976*1452@25fps，208-4976*1452@30fps， 209-3200*1800@25fps，210-3200*1800@30fps，211-5472*3648@24fps，
212-1920*1080@12.5fps，213-2944*1656@20fps，214-1920*1080@24fps，215-4800*1600@25fps，216-4800*1600@30fps，
217-2560*1440@12.5fps，218-6560*3690@1fps，219-5120*1400@20fps，220-7680*4320@1fps，221-1920*1080@20fps，
222-5120*1440@20fps，223-4080*1808@25fps，224-4080*1808@30fps，225-4080*1152@25fps，226-4080*1152@30fps，
227-2688*1944@20fps，228-2592*1944@24fps，229-3200*1800@15fps，230-4416*1696@20fps，231-3456*1080@25fps，
232-3200*1800@12.5fps，233-2688*1532@25fps，234-2688*1532@30fps，235-4416*1696@12.5fps，236-3840*2048P12.5fps，
237-3840*4096P12.5fps，238-5120*1440@12.5fps，239-3840*1080@24fps
byCaptureModeP
视频输入模式（P制），取值同byCaptureModeN
struSmartIRParam
红外过爆配置信息
struPIrisParam
P-Iris红外光圈大小等级配置信息
struLaserParam
激光参数
struFFCParam
FFC参数
struDDEParam
DDE参数
struAGCParam
AGC参数
byLensDistortionCorrection
镜头畸变校正：0- 关闭，1- 开启
byDistortionCorrectionLevel
畸变校正等级：0- 保留，1- 等级一，2- 等级二，3- 等级三，255-自定义
byCalibrationAccurateLevel
畸变校正强度，取值范围：[0,100]
byZoomedInDistantViewLevel
远端放大等级（畸变校正等级关闭的时候不能配置远端放大），取值范围：[0,100]
struSnapCCD
抓拍机CCD参数，只用于智能交通摄像机(抓拍机)
struOpticalDehaze
光学透雾参数
struThermAGC
测温AGC配置
byFusionMode
双光谱视频融合模式：0- 热成像模式，1- 融合模式，2- 画中画模式
byHorizontalFOV
水平视场角，取值范围：[0,100]
byVerticalFOV
垂直视场角，取值范围：[0,100]
byBrightnessSuddenChangeSuppression
亮度突变抑制：0- 关闭，1- 开启
byRes2
保留，置为0

Remarks

该结构体向下兼容NET_DVR_CAMERAPARAMCFG。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_ISP_CAMERAPARAMCFG


NET_DVR_CAPTURE_DAY

全天抓图计划结构体。

struct{
  BYTE    byAllDayCapture;
  BYTE    byCaptureType;
  BYTE    byRes[2];
}NET_DVR_CAPTURE_DAY, *LPNET_DVR_CAPTURE_DAY;

Members

byAllDayCapture
是否全天抓图
byCaptureType
抓图类型：0-定时抓图，1-移动侦测抓图，2-报警抓图，3-移动侦测或报警抓图，4-移动侦测和报警抓图，6-智能报警抓图，7-智能侦测抓图，8-全部事件，39-离线测温抓图
byRes
保留

Remarks

智能侦测：越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测，即这些报警类型的“或”。

See Also

NET_DVR_SCHED_CAPTURECFG


NET_DVR_CAPTURE_FACE_CFG

人脸信息采集结果结构体。

struct{
  DWORD    dwSize;
  DWORD    dwFaceTemplate1Size;
  char     *pFaceTemplate1Buffer;
  DWORD    dwFaceTemplate2Size;
  char     *pFaceTemplate2Buffer;
  DWORD    dwFacePicSize;
  char     *pFacePicBuffer;
  BYTE     byFaceQuality1;
  BYTE     byFaceQuality2;
  BYTE     byCaptureProgress;
  BYTE     byFacePicQuality;
  DWORD    dwInfraredFacePicSize;
  char     *pInfraredFacePicBuffer;
  BYTE     byInfraredFacePicQuality;
  BYTE     byRes1[3];
  NET_DVR_FACE_FEATURE    struFeature;
  BYTE     byRes[56];
}NET_DVR_CAPTURE_FACE_CFG, *LPNET_DVR_CAPTURE_FACE_CFG;

Members

dwSize
结构体大小
dwFaceTemplate1Size
人脸模板1数据大小，等于0时表示无人脸模板1数据
pFaceTemplate1Buffer
人脸模板1数据缓存（不大于2.5k）
dwFaceTemplate2Size
人脸模板2数据大小，等于0时表示无人脸模板2数据
pFaceTemplate2Buffer
人脸模板2数据缓存（不大于2.5K）
dwFacePicSize
人脸图片数据大小，等于0时表示无人脸图片数据
pFacePicBuffer
人脸图片数据缓存
byFaceQuality1
模板1对应的人脸质量，取值范围：1~100
byFaceQuality2
模板2对应的人脸质量，取值范围：1~100
byCaptureProgress
采集进度，目前只有两种进度值：0- 未采集到人脸，100- 采集到人脸（只有在进度为100时，才解析人脸信息）
byFacePicQuality
人脸图片中人脸质量
dwInfraredFacePicSize
红外人脸图片数据大小，等于0 时，代表无人脸图片数据
pInfraredFacePicBuffer
红外人脸图片数据缓存
byInfraredFacePicQuality
红外人脸图片中人脸质量
byRes1
保留，置为0
struFeature
人脸抠图特征信息
byRes
保留，置为0

Remarks

  • 设备是否支持采集人脸信息或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<CaptureFace>。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_CAPTURE_FACE_COND

采集人脸信息条件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byRes[128];
}NET_DVR_CAPTURE_FACE_COND, *LPNET_DVR_CAPTURE_FACE_COND;

Members

dwSize
结构体大小
byRes
保留，置为0

Remarks

  • 设备是否支持采集人脸信息或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<CaptureFace>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CAPTURE_FINGERPRINT_CFG

指纹信息采集结果结构体。

struct{
  DWORD    dwSize;
  DWORD    dwFingerPrintDataSize;
  BYTE     byFingerData[MAX_FINGER_PRINT_LEN];
  DWORD    dwFingerPrintPicSize;
  char     *pFingerPrintPicBuffer;
  BYTE     byFingerNo;
  BYTE     byFingerPrintQuality;
  BYTE     byRes[62];
}NET_DVR_CAPTURE_FINGERPRINT_CFG, *LPNET_DVR_CAPTURE_FINGERPRINT_CFG;

Members

dwSize
结构体大小
dwFingerPrintDataSize
指纹数据大小
byFingerData
指纹数据内容
dwFingerPrintPicSize
指纹图片大小，等于0时表示无指纹图片数据
pFingerPrintPicBuffer
指纹图片缓冲区
byFingerNo
手指编号，取值范围：1~10
byFingerPrintQuality
指纹质量，取值范围：1~100
byRes
保留，置为0

Remarks

  • 设备是否支持采集指纹信息或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<CaptureFingerPrint>。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_CAPTURE_FINGERPRINT_COND

采集指纹信息条件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byFingerPrintPicType;
  BYTE     byFingerNo;
  BYTE     byRes[126];
}NET_DVR_CAPTURE_FINGERPRINT_COND, *LPNET_DVR_CAPTURE_FINGERPRINT_COND;

Members

dwSize
结构体大小
byFingerPrintPicType
图片类型：0- 无意义
byFingerNo
手指编号，取值范围：1~10
byRes
保留，置为0

Remarks

  • 设备是否支持采集指纹信息或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<CaptureFingerPrint>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CAPTURE_SCHED

时间段抓图布防计划结构体。

struct{
  NET_DVR_SCHEDTIME    struCaptureTime;
  BYTE                 byCaptureType;
  BYTE                 byRes[3];
}NET_DVR_CAPTURE_SCHED, *LPNET_DVR_CAPTURE_SCHED;

Members

struCaptureTime
抓图时间段
byCaptureType
抓图类型：0-定时抓图，1-移动侦测抓图，2-报警抓图，3-移动侦测或报警抓图，4-移动侦测和报警抓图，6-智能报警抓图，7-智能侦测抓图，8-全部事件，39-离线测温抓图
byRes
保留

Remarks

智能侦测：越界侦测|区域入侵|进入区域侦测|离开区域侦测|人脸侦测，即这些报警类型的“或”。

See Also

NET_DVR_SCHED_CAPTURECFG


NET_DVR_CAPTURE_UPLOAD

抓拍图片上传信息结构体。

struct{
  DWORD               dwSize;
  NET_DVR_TIME_V30    struTime;
  DWORD               dwChannel;
  char                szDevName[MAX_DEVNAME_LEN_EX];
  BYTE                dwPicLen;
  BYTE                *pBuffer;
  BYTE                byRes[124];
}NET_DVR_CAPTURE_UPLOAD,*LPNET_DVR_CAPTURE_UPLOAD;

Members

dwSize
结构体大小
strustruTime
上传时间
dwChannel
通道号
szDevName
设备名称
dwPicLen
图片数据长度
pBuffer
存放图片数据的缓冲区
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_CARD_CFG

卡参数配置结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwModifyParamType;
  BYTE                        byCardNo[ACS_CARD_NO_LEN];
  BYTE                        byCardValid;
  BYTE                        byCardType;
  BYTE                        byLeaderCard;
  BYTE                        byRes1;
  DWORD                       dwDoorRight;
  NET_DVR_VALID_PERIOD_CFG    struValid;
  DWORD                       dwBelongGroup;
  BYTE                        byCardPassword[CARD_PASSWORD_LEN];
  BYTE                        byCardRightPlan[MAX_DOOR_NUM][MAX_CARD_RIGHT_PLAN_NUM];
  DWORD                       dwMaxSwipeTime;
  DWORD                       dwSwipeTime;
  WORD                        wRoomNumber;
  WORD                        wFloorNumber;
  BYTE                        byRes2[20];
}NET_DVR_CARD_CFG,*LPNET_DVR_CARD_CFG;

Members

dwSize
结构体大小
dwModifyParamType
需要修改的卡参数（设置卡参数时有效），按位表示，每位代表一种参数，值：0- 不修改，1- 需要修改
宏定义 | 宏定义值 | 含义
CARD_PARAM_CARD_VALID | 0x00000001 | 卡是否有效参数
CARD_PARAM_VALID | 0x00000002 | 有效期参数
CARD_PARAM_CARD_TYPE | 0x00000004 | 卡类型参数
CARD_PARAM_DOOR_RIGHT | 0x00000008 | 门权限参数
CARD_PARAM_LEADER_CARD | 0x00000010 | 首卡参数
CARD_PARAM_SWIPE_NUM | 0x00000020 | 最大刷卡次数参数
CARD_PARAM_GROUP | 0x00000040 | 所属群组参数
CARD_PARAM_PASSWORD | 0x00000080 | 卡密码参数
CARD_PARAM_RIGHT_PLAN | 0x00000100 | 卡权限计划参数
CARD_PARAM_SWIPED_NUM | 0x00000200 | 已刷卡次数
byCardNo
卡号，特殊卡号定义如下：
0xFFFFFFFFFFFFFFFF：非法卡号
0xFFFFFFFFFFFFFFFE：胁迫码
0xFFFFFFFFFFFFFFFD：超级码
0xFFFFFFFFFFFFFFFC~0xFFFFFFFFFFFFFFF1：预留的特殊卡
0xFFFFFFFFFFFFFFF0：最大合法卡号
byCardValid
卡是否有效：0- 无效，1- 有效（用于删除卡，设置时置为0进行删除，获取时此字段始终为1）
byCardType
卡类型：1- 普通卡（默认），2- 残障人士卡，3- 非授权名单卡，4- 巡更卡，5- 胁迫卡，6- 超级卡，7- 来宾卡，8- 解除卡
byLeaderCard
是否为首卡：1- 是，0- 否
byRes1
保留，置为0
dwDoorRight
门权限，按位表示，从低位到高位表示对门1~N是否有权限，值：0- 无权限，1- 有权限
struValid
有效期参数
dwBelongGroup
所属群组，按位表示，从低位到高位表示是否从属群组1~N，值：0- 不属于，1- 属于
byCardPassword
卡密码
byCardRightPlan
卡权限计划，取值为计划模板编号，同个门不同计划模板采用权限或的方式处理
dwMaxSwipeTime
最大刷卡次数，0为无次数限制
dwSwipeTime
已刷卡次数
wRoomNumber
房间号
wFloorNumber
层号
byRes2
保留，置为0

Remarks

卡参数能力，对应门禁主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY）中节点<Card>。

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_CARD_CFG_COND

卡参数配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwCardNum;
  BYTE    byCheckCardNo;
  BYTE    byRes1[3];
  WORD    wLocalControllerID;
  BYTE    byRes2[2];
  DWORD   dwLockID;
  BYTE    byRes3[20];
}NET_DVR_CARD_CFG_COND,*LPNET_DVR_CARD_CFG_COND;

Members

dwSize
结构体大小
dwCardNum
设置或获取卡数量，获取时置为0xffffffff表示获取所有卡信息
byCheckCardNo
设备是否进行卡号校验：0- 不校验，1- 校验
byRes1
保留，置为0
wLocalControllerID
就地控制器序号，表示往就地控制器下发离线卡参数，0代表是门禁主机
byRes2
保留，置为0
dwLockID
锁ID
byRes3
保留，置为0

Remarks

设置卡参数（下发卡参数）时，如果将byCheckCardNo置为0，那么设备将不校验应用层下发的卡号信息，直接写入本地存储，可以一定程度提高卡号下发的速度，但是需要上层应用自己保证卡号信息不重复（整型值不能重复，比如，不能同时含有1和01这两种卡号）。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CARD_CFG_SEND_DATA

获取卡参数的发送数据。

struct{
  DWORD   dwSize;
  BYTE    byCardNo[ACS_CARD_NO_LEN];
  DWORD   dwCardUserId;
  BYTE    byRes[12];
}NET_DVR_CARD_CFG_SEND_DATA,*LPNET_DVR_CARD_CFG_SEND_DATA;

Members

dwSize
结构体大小
byCardNo
卡号
dwCardUserId
持卡人ID
byRes
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_CARD_CFG_V50

卡参数配置结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwModifyParamType;
  BYTE                        byCardNo[ACS_CARD_NO_LEN];
  BYTE                        byCardValid;
  BYTE                        byCardType;
  BYTE                        byLeaderCard;
  BYTE                        byUserType;;
  BYTE                        byDoorRight[MAX_DOOR_NUM_256];
  NET_DVR_VALID_PERIOD_CFG    struValid;
  BYTE                        byBelongGroup[MAX_GROUP_NUM_128];
  BYTE                        byCardPassword[CARD_PASSWORD_LEN];
  WORD                        wCardRightPlan[MAX_DOOR_NUM_256][MAX_CARD_RIGHT_PLAN_NUM];
  DWORD                       dwMaxSwipeTime;
  DWORD                       dwSwipeTime;
  WORD                        wRoomNumber;
  SHORT                       wFloorNumber;
  DWORD                       dwEmployeeNo;
  BYTE                        byName[NAME_LEN];
  WORD                        wDepartmentNo;
  WORD                        wSchedulePlanNo;
  BYTE                        bySchedulePlanType;
  BYTE                        byRes2[3];
  DWORD                       dwLockID;
  BYTE                        byLockCode[MAX_LOCK_CODE_LEN];
  BYTE                        byRoomCode[MAX_DOOR_CODE_LEN];
  DWORD                       dwCardRight;
  DWORD                       dwPlanTemplate;
  DWORD                       dwCardUserId;
  BYTE                        byCardModelType;
  BYTE                        byRes3[83];
}NET_DVR_CARD_CFG_V50,*LPNET_DVR_CARD_CFG_V50;

Members

dwSize
结构体大小
dwModifyParamType
需要修改的卡参数（设置卡参数时有效），按位表示，每位代表一种参数，值：0- 不修改，1- 需要修改
宏定义 | 宏定义值 | 含义
CARD_PARAM_CARD_VALID | 0x00000001 | 卡是否有效参数
CARD_PARAM_VALID | 0x00000002 | 有效期参数
CARD_PARAM_CARD_TYPE | 0x00000004 | 卡类型参数
CARD_PARAM_DOOR_RIGHT | 0x00000008 | 门权限参数
CARD_PARAM_LEADER_CARD | 0x00000010 | 首卡参数
CARD_PARAM_SWIPE_NUM | 0x00000020 | 最大刷卡次数参数
CARD_PARAM_GROUP | 0x00000040 | 所属群组参数
CARD_PARAM_PASSWORD | 0x00000080 | 卡密码参数
CARD_PARAM_RIGHT_PLAN | 0x00000100 | 卡权限计划参数
CARD_PARAM_SWIPED_NUM | 0x00000200 | 已刷卡次数
CARD_PARAM_EMPLOYEE_NO | 0x00000400 | 工号
CARD_PARAM_NAME | 0x00000800 | 姓名
CARD_PARAM_DEPARTMENT_NO | 0x00001000 | 部门编号
CARD_SCHEDULE_PLAN_NO | 0x00002000 | 排班计划编号
CARD_SCHEDULE_PLAN_TYPE | 0x00004000 | 排班计划类型
CARD_ROOM_NUMBER | 0x00008000 | 房间号
CARD_SIM_NO | 0x00010000 | SIM卡号（手机号）
CARD_FLOOR_NUMBER | 0x00020000 | 楼层号
CARD_USER_TYPE | 0x00040000 | 用户类型
byCardNo
卡号，特殊卡号定义如下：
0xFFFFFFFFFFFFFFFF：非法卡号
0xFFFFFFFFFFFFFFFE：胁迫码
0xFFFFFFFFFFFFFFFD：超级码
0xFFFFFFFFFFFFFFFC~0xFFFFFFFFFFFFFFF1：预留的特殊卡
0xFFFFFFFFFFFFFFF0：最大合法卡号
byCardValid
卡是否有效：0- 无效，1- 有效（用于删除卡，设置时置为0进行删除，获取时此字段始终为1）
byCardType
卡类型：1- 普通卡（默认），2- 残障人士卡，3- 非授权名单卡，4- 巡更卡，5- 胁迫卡，6- 超级卡，7- 来宾卡，8- 解除卡，9- 员工卡，10- 应急卡，11- 应急管理卡（用于授权临时卡权限，本身不能开门），默认普通卡
byLeaderCard
是否为首卡：1- 是，0- 否
byUserType
用户类型：0 – 普通用户1- 管理员用户
byDoorRight
门权限（梯控的楼层权限、锁权限），按字节表示，1-为有权限，0-为无权限，从低位到高位依次表示对门（或者梯控楼层、锁）1-N是否有权限
struValid
有效期参数（有效时间跨度为1970年1月1日0点0分0秒~2037年12月31日23点59分59秒）
byBelongGroup
所属群组，按字节表示，1-属于，0-不属于，从低位到高位表示是否从属群组1~N
byCardPassword
卡密码
wCardRightPlan
卡权限计划，取值为计划模板编号，同个门（锁）不同计划模板采用权限或的方式处理
dwMaxSwipeTime
最大刷卡次数，0为无次数限制
dwSwipeTime
已刷卡次数
wRoomNumber
房间号
wFloorNumber
层号
dwEmployeeNo
工号（用户ID），1~99999999，不能以0开头且不能重复
byName
姓名
wDepartmentNo
部门编号
wSchedulePlanNo
排班计划编号
bySchedulePlanType
排班计划类型：0- 无意义，1- 个人，2- 部门
byRes2
保留，置为0
dwLockID
锁ID
byLockCode
锁代码
byRoomCode
房间代码
dwCardRight
卡权限
按位表示，0-无权限，1-有权限
第0位表示：弱电报警
第1位表示：开门提示音
第2位表示：限制客卡
第3位表示：通道
第4位表示：反锁开门
第5位表示：巡更功能
dwPlanTemplate
计划模板(每天)各时间段是否启用，按位表示，0--不启用，1-启用
dwCardUserId
持卡人ID
byCardModelType
0-空，1- MIFARE S50，2- MIFARE S70，3- FM1208 CPU卡，4- FM1216 CPU卡，5-国密CPU卡，6-身份证，7- NFC
byRes2
保留，置为0

Remarks

结构体里面的工号、姓名、部门编号、排班计划编号、排班计划类型，对于考勤一体机（DS-K1T803F、DS-K1A801F）为必填项，对于其他门禁设备不是必须项。

卡参数能力，对应门禁主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY）中节点<Card>。

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_CARD_COND

卡参数查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwCardNum;
  BYTE     byRes[64];
}NET_DVR_CARD_COND,*LPNET_DVR_CARD_COND;

Members

dwSize
结构体大小
dwCardNum
设置或获取卡数量，获取时置为0xffffffff表示获取所有卡信息
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CARD_PASSWD_CFG

卡密码开门使能配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byCardPassword[CARD_PASSWORD_LEN];
  DWORD    dwErrorCode;
  BYTE     byCardValid;
  BYTE     byRes2[23];
}NET_DVR_CARD_PASSWD_CFG, *LPNET_DVR_CARD_PASSWD_CFG;

Members

dwSize
结构体大小
byCardNo
卡号
byCardPassword
卡密码
dwErrorCode
获取卡密码开门使能配置返回的错误码，0表示配置成功，其他值表示失败的错误码
byCardValid
卡是否有效（用于删除卡，设置时置为0进行删除，获取时此字段始终为1）：0- 无效，1- 有效
byRes2
保留，置为0

Remarks

  • 设备是否支持卡密码开门使能配置，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<Card>中的<onlyPasswdOpen>。

    • See Also

    NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_CARD_PASSWD_STATUS

卡密码开门使能配置状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwErrorCode;
  BYTE     byRes2[24];
}NET_DVR_CARD_PASSWD_STATUS, *LPNET_DVR_CARD_PASSWD_STATUS;

Members

dwSize
结构体大小
byCardNo
卡号
dwErrorCode
发送卡密码开门使能配置返回的错误码，0表示配置成功，其他值表示失败的错误码
byRes2
保留，置为0

Remarks

  • 设备是否支持卡密码开门使能配置，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<Card>中的<onlyPasswdOpen>。

    • See Also

    NET_DVR_StartRemoteConfig


NET_DVR_CARD_READER_ANTI_SNEAK_CFG

读卡器反潜回配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwFollowUpCardReader[MAX_SNEAK_PATH_NODE];
  BYTE     byRes2[32];
}NET_DVR_CARD_READER_ANTI_SNEAK_CFG,*LPNET_DVR_CARD_READER_ANTI_SNEAK_CFG;

Members

dwSize
结构体大小
byEnable
是否加入反潜回路径：0- 不加入，1- 加入
byRes1
保留，置为0
dwLeaderCardOpenDuration
后续读卡器编号
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CARD_READER_CFG

读卡器参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byCardReaderType;
  BYTE     byOkLedPolarity;
  BYTE     byErrorLedPolarity;
  BYTE     byBuzzerPolarity;
  BYTE     bySwipeInterval;
  BYTE     byPressTimeout;
  BYTE     byEnableFailAlarm;
  BYTE     byMaxReadCardFailNum;
  BYTE     byEnableTamperCheck;
  BYTE     byOfflineCheckTime;
  BYTE     byFingerPrintCheckLevel;
  BYTE     byUseLocalController;
  BYTE     byRes1;
  WORD     wLocalControllerID;
  WORD     wLocalControllerReaderID;
  WORD     wCardReaderChannel;
  BYTE     byRes[16];
}NET_DVR_CARD_READER_CFG,*LPNET_DVR_CARD_READER_CFG;

Members

dwSize
结构体大小
byEnable
是否使能：0- 不启用，1- 启用
byCardReaderType
读卡器类型：1- DS-K110XM/MK/C/CK，2- DS-K192AM/AMP，3- DS-K192BM/BMP，4- DS-K182AM/AMP，5- DS-K182BM/BMP，6- DS-K182AMF/ACF，7- 韦根或485不在线，8- DS-K1101M/MK，9- DS-K1101C/CK，10- DS-K1102M/MK/M-A，11- DS-K1102C/CK，12- DS-K1103M/MK，13- DS-K1103C/CK，14- DS-K1104M/MK，15- DS-K1104C/CK，16- DS-K1102S/SK/S-A，17- DS-K1102G/GK，18- DS-K1100S-B，19- DS-K1102EM/EMK，20- DS-K1102E/EK，21- DS-K1200EF，22- DS-K1200MF，23- DS-K1200CF，24- DS-K1300EF，25- DS-K1300MF，26- DS-K1300CF，27- DS-K1105E，28- DS-K1105M，29- DS-K1105C，30- DS-K182AMF，31- DS-K196AMF，32- DS-K194AMP，33- DS-K1T200EF/EF-C/MF-MF-C/CF/CF-C，34- DS-K1T300EF/EF-C/MF-MF-C/CF/CF-C，35-DS-K1T105E/E-C/M/M-C/C/C-C, 36-DS-K1T803F/MF/SF/EF,37-DS-K1A801F/MF/SF/EF
byOkLedPolarity
OK LED极性：0- 阴极，1- 阳极
byErrorLedPolarity
Error LED极性：0- 阴极，1- 阳极
byBuzzerPolarity
蜂鸣器极性：0- 阴极，1- 阳极
bySwipeInterval
重复刷卡间隔时间，单位：秒
byPressTimeout
按键超时时间，单位：秒，取值范围：1~255
byEnableFailAlarm
是否启用读卡失败超次报警：0- 不启用，1- 启用
byMaxReadCardFailNum
最大读卡失败次数，取值范围：1~10
byEnableTamperCheck
是否启用防拆检测：0- 不启用，1- 启用
byOfflineCheckTime
掉线检测时间，单位：秒，取值范围：0~255
byFingerPrintCheckLevel
指纹识别等级：1- 1/10误认率，2- 1/100误认率，3- 1/1000误认率，4- 1/10000误认率，5- 1/100000误认率，6- 1/1000000误认率，7- 1/10000000误认率，8- 1/100000000误认率，9- 3/100误认率，10- 3/1000误认率，11- 3/10000误认率，12- 3/100000误认率，13- 3/1000000误认率，14- 3/10000000误认率，15- 3/100000000误认率，16- Automatic Normal，17- Automatic Secure，18- Automatic More Secure
byUseLocalController
只读，是否连接在就地控制器上，0-否，1-是
byRes1
保留，置为0
wLocalControllerID
只读，就地控制器序号, byUseLocalController=1时有效，1-255,0代表未注册
wLocalControllerReaderID
只读，就地控制器的读卡器ID，byUseLocalController=1时有效，0代表未注册
wCardReaderChannel
只读，读卡器通信通道号，byUseLocalController=1时有效，0韦根或离线，1-RS485A,2-RS485B
byRes
保留，置为0

Remarks

  • 设备是否支持读卡器参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<CardReaderCfg>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CARD_READER_CFG_V50

读卡器参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byCardReaderType;
  BYTE     byOkLedPolarity;
  BYTE     byErrorLedPolarity;
  BYTE     byBuzzerPolarity;
  BYTE     bySwipeInterval;
  BYTE     byPressTimeout;
  BYTE     byEnableFailAlarm;
  BYTE     byMaxReadCardFailNum;
  BYTE     byEnableTamperCheck;
  BYTE     byOfflineCheckTime;
  BYTE     byFingerPrintCheckLevel;
  BYTE     byUseLocalController;
  BYTE     byRes1;
  WORD     wLocalControllerID;
  WORD     wLocalControllerReaderID;
  WORD     wCardReaderChannel;
  BYTE     byFingerPrintImageQuality;
  BYTE     byFingerPrintContrastTimeOut;
  BYTE     byFingerPrintRecogizeInterval;
  BYTE     byFingerPrintMatchFastMode;
  BYTE     byFingerPrintModuleSensitive;
  BYTE     byFingerPrintModuleLightCondition;
  BYTE     byFaceMatchThresholdN;
  BYTE     byFaceQuality;
  BYTE     byFaceRecogizeTimeOut;
  BYTE     byFaceRecogizeInterval;
  WORD     wCardReaderFunction;
  BYTE     byCardReaderDescription[CARD_READER_DESCRIPTION];
  WORD     wFaceImageSensitometry;
  BYTE     byLivingBodyDetect;
  BYTE     byFaceMatchThreshold1;
  WORD     wBuzzerTime;
  BYTE     byFaceMatch1SecurityLevel;
  BYTE     byFaceMatchNSecurityLevel;
  BYTE     byEnvirMode;
  BYTE     byLiveDetLevelSet;
  BYTE     byLiveDetAntiAttackCntLimit;
  BYTE     byEnableLiveDetAntiAttack;
  BYTE     bySupportDelFPByID;
  BYTE     byFaceContrastMotionDetLevel;
  BYTE     byDayFaceMatchThresholdN;
  BYTE     byNightFaceMatchThresholdN;
  BYTE     byFaceRecogizeEnable;
  BYTE     byBlockListMatchThreshold;
  BYTE     byRes3;
  BYTE     byDefaultVerifyMode;
  DWORD    dwFingerPrintCapacity;
  DWORD    dwFingerPrintNum;
  BYTE     byEnableFingerPrintNum;
  BYTE     byEnableReverseCardNo;
  BYTE     byRes2[2];
  DWORD    dwIndependSwipeIntervals;
  BYTE     byRes[224];
}NET_DVR_CARD_READER_CFG_V50,*LPNET_DVR_CARD_READER_CFG_V50;

Members

dwSize
结构体大小
byEnable
是否使能：0- 不启用，1- 启用
byCardReaderType
读卡器类型：1- DS-K110XM/MK/C/CK，2- DS-K192AM/AMP，3- DS-K192BM/BMP，4- DS-K182AM/AMP，5- DS-K182BM/BMP，6- DS-K182AMF/ACF，7- 韦根或485不在线，8- DS-K1101M/MK，9- DS-K1101C/CK，10- DS-K1102M/MK/M-A，11- DS-K1102C/CK，12- DS-K1103M/MK，13- DS-K1103C/CK，14- DS-K1104M/MK，15- DS-K1104C/CK，16- DS-K1102S/SK/S-A，17- DS-K1102G/GK，18- DS-K1100S-B，19- DS-K1102EM/EMK，20- DS-K1102E/EK，21- DS-K1200EF，22- DS-K1200MF，23- DS-K1200CF，24- DS-K1300EF，25- DS-K1300MF，26- DS-K1300CF，27- DS-K1105E，28- DS-K1105M，29- DS-K1105C，30- DS-K182AMF，31- DS-K196AMF，32- DS-K194AMP，33- DS-K1T200EF/EF-C/MF-MF-C/CF/CF-C，34- DS-K1T300EF/EF-C/MF-MF-C/CF/CF-C
byOkLedPolarity
OK LED极性：0- 阴极，1- 阳极
byErrorLedPolarity
Error LED极性：0- 阴极，1- 阳极
byBuzzerPolarity
蜂鸣器极性：0- 阴极，1- 阳极
bySwipeInterval
重复认证间隔时间（指纹、卡、人脸等认证都生效），单位：秒
byPressTimeout
按键超时时间，单位：秒，取值范围：1~255
byEnableFailAlarm
是否启用认证失败超次报警：0- 不启用，1- 启用
byMaxReadCardFailNum
最大认证失败次数，取值范围：1~10
byEnableTamperCheck
是否启用防拆检测：0- 不启用，1- 启用
byOfflineCheckTime
掉线检测时间，单位：秒，取值范围：0~255
byFingerPrintCheckLevel
指纹识别等级：1- 1/10误认率，2- 1/100误认率，3- 1/1000误认率，4- 1/10000误认率，5- 1/100000误认率，6- 1/1000000误认率，7- 1/10000000误认率，8- 1/100000000误认率，9- 3/100误认率，10- 3/1000误认率，11- 3/10000误认率，12- 3/100000误认率，13- 3/1000000误认率，14- 3/10000000误认率，15- 3/100000000误认率，16- Automatic Normal，17- Automatic Secure，18- Automatic More Secure
byUseLocalController
只读，是否连接在就地控制器上，0-否，1-是
byRes1
保留，置为0
wLocalControllerID
只读，就地控制器序号，byUseLocalController=1时有效，0代表未注册，序号取值范围：1~255
wLocalControllerReaderID
只读，就地控制器的读卡器ID，byUseLocalController=1时有效，0代表未注册
wCardReaderChannel
只读，读卡器通信通道号，byUseLocalController=1时有效，取值：0- 韦根或离线，1- RS485A，2- RS485B
byFingerPrintImageQuality
指纹图像质量：0- 无效，1- 低质量(V1)，2- 中等质量(V1)，3- 高质量(V1)，4- 最高质量(V1)，5- 低质量(V2)，6- 中等质量(V2)，7- 高质量(V2)，8- 最高质量(V2)
byFingerPrintContrastTimeOut
指纹对比超时时间，0表示无效，1~20分别表示1s~20s，0xff表示无限大
byFingerPrintRecogizeInterval
指纹连续识别间隔，0表示无效，1~10分别表示1s~10s，0xff表示无延迟
byFingerPrintMatchFastMode
指纹匹配快速模式，0表示无效，1~5分别表示快速模式1~快速模式5，0xff表示自动
byFingerPrintModuleSensitive
指纹模组灵敏度，0表示无效，1~8分别表示灵敏度级别1~灵敏度级别8
byFingerPrintModuleLightCondition
指纹模组光线条件：0- 无效，1- 室外，2- 室内
byFaceMatchThresholdN
人脸比对阀值，取值范围：0~100
byFaceQuality
人脸质量，取值范围：0~100
byFaceRecogizeTimeOut
人脸抓拍超时时间，1~20分别表示1s~20s，0xff表示无限大
byFaceRecogizeInterval
人脸连续识别间隔，0表示无效，1~10分别表示1s~10s，0xff表示无延迟
wCardReaderFunction
只读，读卡器种类，按位表示：第1位- 指纹，第二位- 人脸，第三位- 指静脉
值：0- 不是，1- 是
byCardReaderDescription
读卡器描述
wFaceImageSensitometry
只读，人脸图像曝光度，取值范围：0~65535
byLivingBodyDetect
真人检测：0- 无效，1- 不启用，2- 启用
byFaceMatchThreshold1
人脸1:1匹配阀值，取值范围：0~100
wBuzzerTime
蜂鸣时间，范围0s-5999s（0-代表长鸣）
byFaceMatch1SecurityLevel
人脸1:1识别安全等级，0-无效，1-一般，2-较强，3-极强
byFaceMatchNSecurityLevel
人脸1:N识别安全等级，0-无效，1-一般，2-较强，3-极强
byEnvirMode
人脸抓拍环境模式，0-无效，1-室内，2-其他
byLiveDetLevelSet
活体检测阈值等级设置，0-无效，1-低，2-中，3-高
byLiveDetAntiAttackCntLimit
活体检测防攻击次数， 0-无效，1-255次（客户端、设备统一次数限制，根据能力级限制）
byEnableLiveDetAntiAttack
活体检测防攻击使能，0-无效，1-不启用，2-启用
bySupportDelFPByID
只读，读卡器是否支持按手指ID删除指纹，0-无效，1-不支持，2-支持
byFaceContrastMotionDetLevel
人脸比对时移动侦测级别，0-无效，1-低，2-中，3-高
byDayFaceMatchThresholdN
白天人脸1:N匹配阀值，范围0-100
byNightFaceMatchThresholdN
夜晚人脸1:N匹配阀值，范围0-100
byFaceRecogizeEnable
人脸抓拍使能：0-无效，1-开启，2-关闭，3-使能多人脸抓拍
byBlockListMatchThreshold
禁止名单匹配阀值，取值范围：0~100
byRes3
保留，置为0
byDefaultVerifyMode
只读，读卡器默认验证方式（出厂默认），1-休眠，2-刷卡+密码，3-刷卡，4-刷卡或密码，5-指纹，6-指纹+密码，7-指纹或刷卡，8-指纹+刷卡，9-指纹+刷卡+密码，10-人脸或指纹或刷卡或密码，11-人脸+指纹，12-人脸+密码，13-人脸+刷卡，14-人脸，15-工号+密码，16-指纹或密码，17-工号+指纹，18-工号+指纹+密码，19-人脸+指纹+刷卡，20-人脸+密码+指纹，21-工号+人脸，22-人脸或人脸+刷卡，23-指纹或人脸，24-刷卡或人脸或密码
dwFingerPrintCapacity
只读，指纹容量
dwFingerPrintNum
只读，已存在指纹数量
byEnableFingerPrintNum
只读，指纹容量使能：0-不使能，1-使能（只有当该字段为1-使能时，dwFingerPrintCapacity和dwFingerPrintNum才有效）
byEnableReverseCardNo
卡号翻转使能：0-不使能，1-使能
byRes2
保留，置为0
dwIndependSwipeIntervals
人员认证间隔（每个人单独计算间隔，区别于重复认证间隔），单位：秒
byRes
保留，置为0

Remarks

  • 设备是否支持读卡器参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<CardReaderCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CARD_READER_PLAN

读卡器验证计划配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTemplateNo;
  BYTE     byRes[64];
}NET_DVR_CARD_READER_PLAN,*LPNET_DVR_CARD_READER_PLAN;

Members

dwSize
结构体大小
dwTemplateNo
计划模板编号，为0表示取消关联、恢复默认状态（刷卡开门）。非0回复关联（读卡器序号，与相同序号的读卡器认证方式计划模板关联）
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CARD_RECORD

卡参数结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byCardNo[ACS_CARD_NO_LEN];
  BYTE                        byCardType;
  BYTE                        byLeaderCard;
  BYTE                        byUserType;
  BYTE                        byRes1;
  BYTE                        byDoorRight[MAX_DOOR_NUM_256];
  NET_DVR_VALID_PERIOD_CFG    struValid;
  BYTE                        byBelongGroup[MAX_GROUP_NUM_128];
  BYTE                        byCardPassword[CARD_PASSWORD_LEN];
  WORD                        wCardRightPlan[MAX_DOOR_NUM_256];
  DWORD                       dwMaxSwipeTimes;
  DWORD                       dwSwipeTimes;
  DWORD                       dwEmployeeNo;
  BYTE                        byName[NAME_LEN];
  DWORD                       dwCardRight;
  BYTE                        byRes[256];
}NET_DVR_CARD_RECORD,*LPNET_DVR_CARD_RECORD;

Members

dwSize
结构体大小
byCardNo
卡号
byLeaderCard
是否为首卡：1- 是，0- 否
byUserType
用户类型：0– 普通用户，1- 管理员用户
byRes1
保留，置为0
byDoorRight
门权限（梯控的楼层权限、锁权限），数组下标对应门编号-1，值为1表示有权限，0表示无权限
struValid
有效期参数（有效时间跨度为1970年1月1日0点0分0秒~2037年12月31日23点59分59秒）
byBelongGroup
所属群组，按字节表示，1-属于，0-不属于，从低位到高位表示是否从属群组1~N
byCardPassword
卡密码
wCardRightPlan
卡权限计划，取值为计划模板编号，数组下标对应门编号-1
dwMaxSwipeTimes
最大刷卡次数（针对来宾卡），0为无次数限制
dwSwipeTimes
已刷卡次数
dwEmployeeNo
工号
byName
姓名
dwCardRight
卡权限，按位表示，值：0-无权限，1-有权限
第0位表示：弱电报警
第1位表示：开门提示音
第2位表示：限制客卡
第3位表示：通道
第4位表示：反锁开门
第5位表示：巡更功能
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_SendWithRecvRemoteConfig


NET_DVR_CARD_SEND_DATA

卡号下发参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byRes[16];
}NET_DVR_CARD_SEND_DATA,*LPNET_DVR_CARD_SEND_DATA;

Members

dwSize
结构体大小
byCardNo
卡号
byRes
保留，置为0

See Also

NET_DVR_SendWithRecvRemoteConfig


NET_DVR_CARD_STATUS

卡参数状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwErrorCode;
  BYTE     byStatus;
  BYTE     byRes[23];
}NET_DVR_CARD_STATUS,*LPNET_DVR_CARD_STATUS;

Members

dwSize
结构体大小
byCardNo
卡号
dwErrorCode
错误码
byStatus
状态：0-失败，1-成功
byRes
保留，置为0

See Also

NET_DVR_SendWithRecvRemoteConfig


NET_DVR_CARD_USER_INFO_CFG

卡号关联用户信息配置结构体。

struct{
  DWORD    dwSize;
  BYTE     sUsername[NAME_LEN];
  BYTE     byRes2[256];
}NET_DVR_CARD_USER_INFO_CFG,*LPNET_DVR_CARD_USER_INFO_CFG;

Members

dwSize
结构体大小
sUsername
用户名
byRes2
保留，置为0

Remarks

  • 设备是否支持卡号关联用户配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<RealteUserInfo>。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CASE_INFO

案件信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byCaseNo[CASE_NO_LEN];
  BYTE     byCaseName[CASE_NAME_LEN];
  BYTE     byLitigant1[LITIGANT_LEN];
  BYTE     byLitigant2[LITIGANT_LEN];
  BYTE     byChiefJudge[CHIEF_JUDGE_LEN];
  BYTE     byCaseType;
  BYTE     byShowCaseInfoTime;
  BYTE     byRes1[2];
  char     sCaseTypeCustom[NET_SDK_CASETYPE_LEN];
  BYTE     byRes[220];
}NET_DVR_CASE_INFO,*LPNET_DVR_CASE_INFO;

Members

dwSize
结构体大小
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byCaseType
案件类型：1- 刑事案件，2- 民事案件，3-自定义案件类型
byShowCaseInfoTime
案件信息显示时间，单位：秒，取值范围：1~30
byRes1
保留，置为0
sCaseTypeCustom
自定义案件类型描述，byCaseType为3时有效
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CASE_INFO_CTRL_PARAM

案件信息显示控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byShowCaseInfoTime;
  BYTE     byRes[131];
}NET_DVR_CASE_INFO_CTRL_PARAM,*LPNET_DVR_CASE_INFO_CTRL_PARAM;

Members

dwSize
结构体大小
dwChannel
审讯通道号
byShowCaseInfoTime
显示持续时间，单位：s（秒）
byRes
保留，置为0

Remarks

  • 设备是否支持案件信息显示控制功能或者支持的参数能力，可以通过设备能力集进行判断，对应审讯机能力集(InquestAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<CaseInfoDisplay>。

See Also

NET_DVR_RemoteControl


NET_DVR_CASE_SENSOR_CFG

事件报警输入参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byHostBuzzer;
  BYTE     byRes1[3];
  BYTE     byCardReaderBuzzer[MAX_CARD_READER_NUM];
  BYTE     byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE     byDoorOpen[MAX_DOOR_NUM];
  BYTE     byDoorClose[MAX_DOOR_NUM];
  BYTE     byRes2[64];
}NET_DVR_CASE_SENSOR_CFG,*LPNET_DVR_CASE_SENSOR_CFG;

Members

dwSize
结构体大小
byHostBuzzer
是否触发主机蜂鸣器：0- 不触发，1- 触发
byRes1
保留，置为0
byCardReaderBuzzer
触发读卡器蜂鸣器，下标表示读卡器编号，取值：1- 触发，0- 不触发，例如：byCardReaderBuzzer[i]=1表示触发第(i+1)个读卡器蜂鸣器
byAssociateAlarmOut
关联触发的报警输出，下标表示报警输出编号，取值：1-关联，0-不关联，例如：byAssociateAlarmOut[i]=1表示关联触发第(i+1)个报警输出口
byDoorOpen
关联门打开，下标表示门编号，取值：0-不关联，1-关联（即打开），例如：byDoorOpen[i]=1表示对门(i+1)关联门打开
byDoorClose
关联门关闭，下标表示门编号，取值：0-不关联，1-关联（即关闭），例如：byDoorOpen[i]=1表示对门(i+1)关联门关闭
byRes2
保留，置为0

Remarks

一个事件报警输入不能同时关联一扇门的开启和关闭。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CB_POINT

标定点子结构体。

struct{
  NET_VCA_POINT     struPoint;
  NET_DVR_PTZPOS    struPtzPos;
  BYTE              byRes[8];
}NET_DVR_CB_POINT, LPNET_DVR_CB_POINT;

Members

struPoint
标定点，主摄像机（枪机），其值归一化到0-1
struPtzPos
球机输入的PTZ坐标
byRes
保留

See Also

NET_DVR_TRACK_CALIBRATION_PARAM NET_DVR_TRACK_CALIBRATION_PARAM_V41


NET_DVR_CENTER_SERVER_CFG

报警中心服务器配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byAddressType;
  BYTE     byRes1;
  WORD     wServerPort;
  union{
           struct{
           BYTE              szDomain[MAX_DOMAIN_NAME];
           BYTE              byRes2[80];
           }struDomain;
           struct{
           NET_DVR_IPADDR    struIp;
           }struAddrIP;
  }unionServer;
  WORD     wInterval;
  BYTE     byRes3[514];
}NET_DVR_CENTER_SERVER_CFG,*LPNET_DVR_CENTER_SERVER_CFG;

Members

dwSize
结构体大小
byAddressType
地址类型：0- ipv4/ipv6地址，1- 域名
byRes1
保留，置为0
wServerPort
服务器端口
unionServer为服务器地址联合体
szDomain
服务器地址，域名，byAddressType为1时有效
byRes2
保留，置为0
struIp
IPv4或者IPv6地址(144字节)，byAddressType为0时有效
wInterval
报警间隔时间，单位：s
byRes3
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CENTRALIZEDCTRL_CFG

集中布防参数结构体。

struct{
  DWORD                dwSize;
  BYTE                 byEnable;
  BYTE                 byLatitudeType;
  BYTE                 byLongitudeType;
  BYTE                 byRes1;
  NET_DVR_LLI_PARAM    struLatitude;
  NET_DVR_LLI_PARAM    struLongitude;
  DWORD                dwTimeOut;
  BYTE                 byControlType;
  BYTE                 byRes[127];
}NET_DVR_CENTRALIZEDCTRL_CFG, *LPNET_DVR_CENTRALIZEDCTRL_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 结束，1- 开始
byLatitudeType
纬度类型：0- 北纬，1- 南纬
byLongitudeType
经度类型：0- 东经，1- 西经
byRes1
保留
struLatitude
纬度信息
struLongitude
经度信息
dwTimeOut
超时时间，取值范围：[60, 6*60*60]，单位：s
byControlType
集中布防方式：0- 强制布防，1- 非强制布防
byRes
保留

Remarks

  • 集中布防功能：平台实现在GIS地图上对一批可视域相机进行集中控制，可以操作50台设备朝一个方面监控，平台会给每台设备下发需要到位的经纬度，设备根据经纬度信息转到相应角度。集中布防分为强制布防和非强制布防，强制布防：只要平台给球机发送布防经纬度，球机就无条件转到该经纬度；非强制布防：平台给球机发送布防信息，球机需要判断布防点是否在球机可视域范围内，在球机范围内则转，不在范围内不转。
  • 设备是否支持集中布防能力或者支持的参数能力，可以通过设备能力集进行判断，对应集中布防能力集(CentralizedControl)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CENTRALIZEDCTRL_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CERT_INFO

证书信息结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_CERT_PARAM     struCertParam;
  DWORD                  dwValidDays;
  BYTE                   byPasswd[NAME_LEN];
  NET_DVR_CERT_NAME      struCertName;
  NET_DVR_CERT_NAME      struIssuerName;
  NET_DVR_TIME_EX        struBeginTime;
  NET_DVR_TIME_EX        struEndTime;
  BYTE                   serialNumber[NAME_LEN];
  BYTE                   byVersion;
  BYTE                   byKeyAlgorithm;
  BYTE                   byKeyLen;
  BYTE                   bySignatureAlgorithm;
  BYTE                   byRes[128];
}NET_DVR_CERT_INFO,*LPNET_DVR_CERT_INFO;

Members

dwSize
结构体大小
struCertParam
证书参数
dwValidDays
有效天数，类型为自签名时有效
byPasswd
私钥密码
struCertName
证书名称
struIssuerName
证书发行者名称（自签名证书信息获取时有效）
struBeginTime
证书创建时间（自签名证书信息获取时有效）
struEndTime
证书截止时间（自签名证书信息获取时有效）
serialNumber
证书标识码（自签名证书信息获取时有效）
byVersion
证书版本
byKeyAlgorithm
加密类型：0- RSA，1- DSA
byKeyLen
加密长度：0- 512，1- 1024，2- 2048
bySignatureAlgorithm
签名算法类型（自签名证书信息获取时有效）
byRes
保留，置为0

See Also

NET_DVR_RemoteControl NET_DVR_GetDeviceConfig


NET_DVR_CERT_NAME

证书名称信息结构体。

struct{
  BYTE    byCountry[MAX_COUNTRY_NAME_LEN];
  BYTE    byState[MAX_DOMAIN_NAME];
  BYTE    byLocality[MAX_DOMAIN_NAME];
  BYTE    byOrganization[MAX_DOMAIN_NAME];
  BYTE    byUnit[MAX_DOMAIN_NAME];
  BYTE    byCommonName[MAX_DOMAIN_NAME];
  BYTE    byEmail[MAX_DOMAIN_NAME];
  BYTE    byRes[128];
}NET_DVR_CERT_NAME,*LPNET_DVR_CERT_NAME;

Members

byCountry
国家和地区简写，如：CN
byState
洲或省
byLocality
地区
byOrganization
组织
byUnit
单位
byCommonName
域名或者IP地址
byEmail
Email地址
byRes
保留，置为0

See Also

NET_DVR_CERT_INFO


NET_DVR_CERT_PARAM

证书参数结构体。

struct{
  DWORD    dwSize;
  WORD     wCertFunc;
  WORD     wCertType;
  BYTE     byFileType;
  BYTE     byRes[35];
}NET_DVR_CERT_PARAM, *LPNET_DVR_CERT_PARAM;

Members

dwSize
结构体大小
wCertFunc
证书种类：0- 802.1x，1- HTTPS，2- EAP-TLS，3-ieee802.1x(应用于有线LAN接入认证)，4-ssh
wCertType
证书类型：0- CA，1- Certificate，2- 私钥文件
byFileType
证书文件类型：0- PEM，1- PFX
byRes
保留，置为0

See Also

NET_DVR_CERT_INFO


NET_DVR_CETTIFICATE_INFO

证书校验结构体。

struct{
  DWORD            dwSize;
  char                       szIssuer[MAX_CERTIFICATE_ISSUER_LEN];
  char                       szSubject[MAX_CERTIFICATE_SUBJECT_LEN];
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  BYTE      byRes[1024];
}NET_DVR_CETTIFICATE_INFO, *LPNET_DVR_CETTIFICATE_INFO;

Members

dwSize
结构体大小
szIssuer
证书颁发者
szSubject
证书持有者
struStartTime
证书有效期的开始时间
struStopTime
证书有效期的结束时间
byRes
保留

See Also

NET_DVR_LOCAL_CERTIFICATION


NET_DVR_CHAN_FILTER_CFG

POS规则与通道关联信息结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byFilterID;
  BYTE                           byFontSize;
  BYTE                           byShowPosInfo;
  BYTE                           byOverlayMode;
  DWORD                          dwDelayTime;
  NET_DVR_POS_OSD_REGION         struOsdPosInfo;
  NET_DVR_RGB_COLOR              struOsdColor;
  NET_DVR_SCHEDTIME              struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V30];
  DWORD                          dwTimeOut;
  BYTE                           byRes[60];
}NET_DVR_CHAN_FILTER_CFG,*LPNET_DVR_CHAN_FILTER_CFG;

Members

dwSize
结构体大小
byFilterID
POS过滤规则ID
byFontSize
字号大小：0- 8*16，1- 16*32，2- 32*64
byShowPosInfo
码流中是否叠加POS信息：0- 否，1- 是
byOverlayMode
叠加方式：0- 滚屏，1- 翻页
dwDelayTime
延时时间，取值范围：5~3600，单位：s
struOsdPosInfo
POS信息叠加区域
struOsdColor
POS信息叠加字体颜色
struAlarmSched
布防时间，每周7天，每天最多设置8个时间段
struHandleException
异常处理方式
dwMaxRelRecordChanNum
触发的录像通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
dwRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]。
dwTimeOut
超时时间，取值范围：5~3600，单位：秒，数据超时指在多长时间接收不到POS数据即判定一次数据包的结束
byRes
保留，置为0

Remarks

  • dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。
  • 设备是否支持POS规则与通道关联配置或者支持的参数能力，可以通过设备能力集进行判断，对应POS能力集(POSAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<ChanAssociationRule>和<ExceptionHandle>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CHAN_GROUP_RECORD_STATUS

一组通道录像状态信息结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_CHANS_RECORD_STATUS    struChanStatus[64];
}NET_DVR_CHAN_GROUP_RECORD_STATUS,*LPNET_DVR_CHAN_GROUP_RECORD_STATUS;

Members

dwSize
结构体大小
struChanStatus
通道录像状态信息，一组64个通道

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CHAN_INFO

设备通道信息结构体。

struct{
  DWORD            dwSize;
  BYTE             byValid;
  BYTE             byRes1[3];
  BYTE             sChanName[NAME_LEN];
  NET_DVR_COLOR    struVideoColor;
  WORD             wResolutionX;
  WORD             wResolutionY;
  BYTE             byRes2[40];
}NET_DVR_CHAN_INFO,*LPNET_DVR_CHAN_INFO;

Members

dwSize
结构体大小
byValid
是否有效：0- 无效，1- 有效
byRes1
保留
sChanName
通道名称
struVideoColor
信号源颜色
wResolutionX
当前分辨率的宽度
wResolutionY
当前分辨率的高度
byRes2
保留

See Also

NET_DVR_CODEDEV_INFO


NET_DVR_CHANNEL

设备通道参数结构体。

struct{
  BYTE     byAddress[MAX_DOMAIN_NAME];
  WORD     wDVRPort;
  BYTE     byRes1[2];
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  DWORD    dwChannel;
  BYTE     byRes2[32];
}NET_DVR_CHANNEL,*LPNET_DVR_CHANNEL;

Members

byAddress
设备IP或域名
wDVRPort
设备端口号（默认：8000）
byRes1
保留，置为0
sUserName
设备用户名
sPassword
设备密码
dwChannel
通道号，从1开始
byRes2
保留，置为0

See Also

NET_DVR_SLAVE_CHANNEL_UNION NET_DVR_TRACK_DEV_PARAM


NET_DVR_CHANNEL_GROUP

通道号和组号信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwGroup;
  BYTE     byID;
  BYTE     byRes1[3];
  DWORD    dwPositionNo;
  BYTE     byRes[56];
}NET_DVR_CHANNEL_GROUP,*LPNET_DVR_CHANNEL_GROUP;

Members

dwSize
结构体大小
dwChannel
通道号
dwGroup
组号，从0开始，即0表示第1组，1表示第2组，依次类推
byID
设备区域设置ID
byRes1
保留，置为0
dwPositionNo
场景位置索引号，IPC为0，IPD从1开始
byRes
保留，置为0


NET_DVR_CHANNEL_INDEX

通道号和索引信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwIndex;
  BYTE     byRes[64];
}NET_DVR_CHANNEL_INDEX,*LPNET_DVR_CHANNEL_INDEX;

Members

dwSize
结构体大小
dwChannel
通道号
dwIndex
索引号
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CHANNEL_WORKMODE

通道工作模式参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode;
  BYTE     byRes[63];
}NET_DVR_CHANNEL_WORKMODE,*LPNET_DVR_CHANNEL_WORKMODE;

Members

dwSize
结构体大小
byWorkMode
工作模式，具体定义如下：
enum _CHAN_WORKMODE_ENUM_{
  ENUM_CHAN_WORKMODE_INDEPENDENT = 1,
  ENUM_CHAN_WORKMODE_MASTER      = 2,
  ENUM_CHAN_WORKMODE_SLAVE       = 3
}CHAN_WORKMODE_ENUM
ENUM_CHAN_WORKMODE_INDEPENDENT
独立模式
ENUM_CHAN_WORKMODE_MASTER
主模式
ENUM_CHAN_WORKMODE_SLAVE
从模式
byRes
保留，置为0

Remarks

用于监舍，实现双人值岗检测功能，可支持双摄像机联动。目前单通道方式判断离岗事件，无法满足值岗区域内大于单个摄像机的视野情形，而监舍室内一般具有前后两个摄像头对室内场景全覆盖，采用两个摄像机信息共享，可较好完成值岗人员离岗事件检测。

双通道模式中仅主通道可产生事件报警，从通道模式信息流向主通道，信息流向为单向，为主通道报警提供参考依据。

用户需要对双通道进行配置，其中主通道中设置为主通道模式，从通道设置为从通道模式，以便确定是否为开启双通道模式，否则按照独立通道模式进行检测。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CHANNELSTATE

通道信息结构体。

struct{
  BYTE    byRecordStatic;
  BYTE    bySignalStatic;
  BYTE    byHardwareStatic;
  char    reservedData;
  DWORD   dwBitRate;
  DWORD   dwLinkNum;
  DWORD   dwClientIP[MAX_LINK];
}NET_DVR_CHANNELSTATE,*LPNET_DVR_CHANNELSTATE;

Members

byRecordStatic
通道是否在录像：0－不录像；1－录像
bySignalStatic
连接的信号状态：0－正常，1－信号丢失
byHardwareStatic
通道硬件状态：0－正常，1－异常（例如DSP异常）
reservedData
保留，置为0
dwBitRate
实际码率
dwLinkNum
连接的客户端个数
dwClientIP
连接的客户端IP地址(这里为网络字节序)

See Also

NET_DVR_WORKSTATE


NET_DVR_CHANNELSTATE_V30

通道状态信息结构体。

struct{
  BYTE             byRecordStatic;
  BYTE             bySignalStatic;
  BYTE             byHardwareStatic;
  BYTE             byRes1;
  DWORD            dwBitRate;
  DWORD            dwLinkNum;
  NET_DVR_IPADDR   struClientIP[MAX_LINK];
  DWORD            dwIPLinkNum;
  BYTE             byExceedMaxLink;
  BYTE             byRes[3];
  DWORD            dwAllBitRate;
  DWORD            dwChannelNo;
}NET_DVR_CHANNELSTATE_V30,*LPNET_DVR_CHANNELSTATE_V30;

Members

byRecordStatic
通道是否在录像：0－不录像；1－录像
bySignalStatic
连接的信号状态：0－正常，1－信号丢失
byHardwareStatic
通道硬件状态：0－正常，1－异常（例如DSP异常）
byRes1
保留，置为0
dwBitRate
实际码率
dwLinkNum
连接该通道的客户端个数
struClientIP
连接该通道的客户端IP地址
dwIPLinkNum
如果该通道为IP接入，表示该IP接入当前的连接数
byExceedMaxLink
是否超出了单路6路连接数 0 - 未超出, 1-超出
byRes
保留，置为0
dwAllBitRate
所有客户端和该通道连接的实际码率之和
dwChannelNo
当前的通道号，0xffffffff表示当前及后续通道信息无效

Remarks

设备是否支持dwAllBitRate参数能力(网络球机V5.3.0新增)，对应设备网络应用能力集(NetAppAbility)中节点<allBitRate>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY。

See Also

NET_DVR_WORKSTATE_V40 NET_DVR_WORKSTATE_V30 NET_ITS_WORKSTATE


NET_DVR_CHANS_RECORD_STATUS

通道录像状态信息结构体。

struct{
  BYTE     byValid;
  BYTE     byRecord;
  WORD     wChannelNum;
  DWORD    dwRelatedHD;
  BYTE     byOffLineRecord;
  BYTE     byRes[7];
}NET_DVR_CHANS_RECORD_STATUS,*LPNET_DVR_CHANS_RECORD_STATUS;

Members

byValid
是否有效：0- 无效，1- 有效
byRecord
录像状态(只读)：0- 不在录像，1- 在录像，2- 空闲，3- 无连接，4- 无输入视频，5- 未加载，6- 存档中，7- 回传中，8- 用户名或密码错，9- 未验证，10- 存档中和录像中，11- 录像回传中和录像中，12-token认证失败
wChannelNum
通道号，0xffff表示无效
dwRelatedHD
关联磁盘
byOffLineRecord
断网录像功能：0- 关闭，1- 开启
byRes
保留，置为0

See Also

NET_DVR_CHAN_GROUP_RECORD_STATUS


NET_DVR_CHARGEACCOUNT_CFG

停车场出入口停车费用下发参数结构体。

struct{
  DWORD    dwSize;
  float    fAccount;
  BYTE     byRes[128];
}NET_DVR_CHARGEACCOUNT_CFG,*LPNET_DVR_CHARGEACCOUNT_CFG;

Members

dwSize
结构体大小
fAccount
实际收费金额
byRes
保留，置为0

Remarks

  • 设备是否支持停车场出入口停车费用下发或者支持的参数能力，可以通过设备能力集进行判断，对应停车场出入口停车费用下发能力集(ChargeAmount)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CHARGEACCOUNT_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig


NET_DVR_CHARSET_ENUM

编码方式类型枚举。

enum _NET_DVR_CHARSET_ENUM_{
  ENUM_UTF8 =0,
  ENUM_GB2312,
  ENUM_LATIN1,
  ENUM_LATIN2,
  ENUM_LATIN3,
  ENUM_LATIN4,
  ENUM_CYRILLIC,
  ENUM_ARABIC,
  ENUM_GREEK,
  ENUM_HEBREW,
  ENUM_TURKISH,
  ENUM_NORDIC,
  ENUM_THAI,
  ENUM_LATIN7,
  ENUM_LATIN8,
  ENUM_LATIN9,
  ENUM_LATIN10,
  ENUM_CENTRAL_EUROPEAN,
  ENUM_CYRILLIC_SCRIPT,
  ENUM_HEBREW_DOS862
}NET_DVR_CHARSET_ENUM
ENUM_UTF8
0- UTF8
ENUM_GB2312
1- GB2312
ENUM_LATIN1
2- LATIN1（IOS-8859-1）
ENUM_LATIN2
3- LATIN2（IOS-8859-2）
ENUM_LATIN3
4- LATIN3（IOS-8859-3）
ENUM_LATIN4
5- LATIN4（IOS-8859-4）
ENUM_CYRILLIC
6- CYRILLIC（IOS-8859-5）
ENUM_ARABIC
7- ARABIC（IOS-8859-6）
ENUM_GREEK
8- GREEK（IOS-8859-7）
ENUM_HEBREW
9- HEBREW（IOS-8859-8）
ENUM_TURKISH
10- TURKISH（IOS-8859-9）
ENUM_NORDIC
11- NORDIC（IOS-8859-10）
ENUM_THAI
12- THAI（IOS-8859-11）
ENUM_LATIN7
13- LATIN7（IOS-8859-13）
ENUM_LATIN8
14- LATIN8（IOS-8859-14）
ENUM_LATIN9
15- LATIN9（IOS-8859-15）
ENUM_LATIN10
16- LATIN10（IOS-8859-16）
ENUM_CENTRAL_EUROPEAN
17- CENTRAL EUROPEAN（windows-1250）
ENUM_CYRILLIC_SCRIPT
18- CYRILLIC SCRIPT（windows-1251）
ENUM_HEBREW_DOS862
19- HEBREW DOS862（dos-862）

See Also

NET_DVR_POS_FILTER_CFG


NET_DVR_CHECK_DEV_STATE

工作状态巡检参数结构体。

struct{
  DWORD                dwTimeout;
  DEV_WORK_STATE_CB    fnStateCB;
  void                 *pUserData;
  BYTE                 byRes[60];
}NET_DVR_CHECK_DEV_STATE,*LPNET_DVR_CHECK_DEV_STATE;

Members

dwTimeout
定时检测设备工作状态，单位：ms，0表示使用默认值(30000)，最小值为1000
fnStateCB
设备状态信息回调函数
pUserData
用户数据
byRes
保留，置为0

Callback Function

typedef BOOL (CALLBACK *DEV_WORK_STATE_CB)(
  void                       *pUserdata,
  LONG                       lUserID,
  LPNET_DVR_WORKSTATE_V40    lpWorkState
);

Callback Function Parameters

pUserdata
[out] 用户数据
lUserID
[out] 用户ID，NET_DVR_Login_V40的返回值
lpWorkState
[out] 设备状态信息。当获取失败时，lpWorkState为NULL，用户可以直接在回调函数中调用NET_DVR_GetLastError获取错误号

See Also

NET_DVR_StartGetDevState NET_DVR_Login_V40


NET_DVR_CHECK_FACE_PICTURE_CFG

校验人脸图片参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPictureNo;
  DWORD    dwPictureLen;
  char*    pPictureBuffer;
  DWORD    dwFaceTemplateLen;
  char*    pFaceTemplateBuffer;
  BYTE     byRes[248];
}NET_DVR_CHECK_FACE_PICTURE_CFG, *LPNET_DVR_CHECK_FACE_PICTURE_CFG;

Members

dwSize
结构体大小
dwPictureNo
图片编号
dwPictureLen
图片长度（图片大小不超过200k）
pPictureBuffer
图片指针
dwFaceTemplateLen
人脸建模数据长度
pFaceTemplateBuffer
人脸建模数据指针
byRes
保留

See Also

NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

NET_DVR_SendRemoteConfig


NET_DVR_CHECK_FACE_PICTURE_COND

人脸图片参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPictureNum;
  BYTE     byCheckTemplate;
  BYTE     byRes[127];
}NET_DVR_CHECK_FACE_PICTURE_COND, *LPNET_DVR_CHECK_FACE_PICTURE_COND;

Members

dwSize
结构体大小
dwPictureNum
图片数量
byCheckTemplate
0-校验图片是否合法（默认），1-校验图片和建模数据是否匹配
byRes
保留

See Also

/NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

/NET_DVR_SendRemoteConfig


NET_DVR_CHECK_FACE_PICTURE_STATUS

校验人脸图片状态结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPictureNo;
  BYTE     byCheckStatus;
  BYTE     byRes[127];
}NET_DVR_CHECK_FACE_PICTURE_STATUS, *LPNET_DVR_CHECK_FACE_PICTURE_STATUS;

Members

dwSize
结构体大小
dwPictureNo
图片编号
byCheckStatus
校验结果：0-无效，1-建模成功，2-建模失败，3-人脸模块通讯异常，4-图像无人脸，5-人脸朝上，6-人脸朝下，7-人脸偏左，8-人脸偏右，9-人脸顺时旋转，10-人脸逆时旋转，11-人眼间距小，12-人脸和模板匹配，13-人脸和模板不匹配
byRes
保留

See Also

/NET_DVR_StartRemoteConfig NET_DVR_StopRemoteConfig

/NET_DVR_SendRemoteConfig


NET_DVR_CID_ALARM

CID报警信息结构体。

struct{
  DWORD              dwSize;
  BYTE               sCIDCode[CID_CODE_LEN];
  BYTE               sCIDDescribe[NAME_LEN];
  NET_DVR_TIME_EX    struTriggerTime;
  NET_DVR_TIME_EX    struUploadTime;
  BYTE               sCenterAccount[ACCOUNTNUM_LEN];
  BYTE               byReportType;
  BYTE               byUserType;
  BYTE               sUserName[NAME_LEN];
  WORD               wKeyUserNo;
  BYTE               byKeypadNo;
  BYTE               bySubSysNo;
  WORD               wDefenceNo;
  BYTE               byVideoChanNo;
  BYTE               byDiskNo;
  WORD               wModuleAddr;
  BYTE               byCenterType;
  BYTE               byRes1;
  BYTE               sCenterAccountV40[ACCOUNTNUM_LEN_32];
  BYTE               byRes2[28];
}NET_DVR_CID_ALARM,*LPNET_DVR_CID_ALARM;

Members

dwSize
结构体大小
sCIDCode
CID事件号，参照NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE
sCIDDescribe
CID事件名
struTriggerTime
触发报警的时间点
struUploadTime
上传报警的时间点
sCenterAccount
中心帐号，byCenterType为0或1时有效
byReportType
报告类型，具体定义如下：
enum _NET_DVR_ALARMHOST_REPORT_TYPE_{
  NET_DVR_DEFENCE_ALARM = 1,
  NET_DVR_VIDEO_ALARM,
  NET_DVR_VIRTUAL_DEFENCE_ALARM,
  NET_DVR_HOSTAGE_ALARM,
  NET_DVR_KNOCK_DOWN_ALARM,
  NET_DVR_OPERATE_ALARM,
  NET_DVR_OHTER_ABNORMAL_ALARM
}NET_DVR_ALARMHOST_REPORT_TYPE
NET_DVR_DEFENCE_ALARM
防区报警
NET_DVR_VIDEO_ALARM
视频报警
NET_DVR_VIRTUAL_DEFENCE_ALARM
软防区报警
NET_DVR_HOSTAGE_ALARM
挟持报警
NET_DVR_KNOCK_DOWN_ALARM
防拆报警
NET_DVR_OPERATE_ALARM
操作报告
NET_DVR_OHTER_ABNORMAL_ALARM
异常报告
byUserType
用户类型：0-网络用户，1-键盘用户
sUserName
网络用户用户名
wKeyUserNo
键盘用户号，0xFFFF表示无效
byKeypadNo
键盘号，0xFF表示无效
bySubSysNo
子系统号，0xFF表示无效
wDefenceNo
防区号，0xFFFF表示无效
byVideoChanNo
视频通道号，0xFF表示无效
byDiskNo
硬盘号，0xFF表示无效
wModuleAddr
模块地址，0xFFFF表示无效
byCenterType
中心账号类型：0- 无效，1- 中心账号(长度6)，2- 扩展的中心账号(长度32)
byRes1
保留
sCenterAccountV40
中心账号扩展，byCenterType为2时有效
byRes2
保留

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_CLEARCTRL

配置信息清除控制结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byAllPreset;
  BYTE     byAllPatrols;
  BYTE     byAllPatterms;
  BYTE     byAllPrivacyMasks;
  BYTE     byAllPTZLimited;
  BYTE     byAllScheduledTasks;
  BYTE     byAllParkAction;
  BYTE     byRes[125];
}NET_DVR_CLEARCTRL, *LPNET_DVR_CLEARCTRL;

Members

dwSize
结构体大小
dwChan
设备通道号
byAllPreset
清除所有的预置点：0- 否，1- 是
byAllPatrols
清除所有的巡航路径：0- 否，1- 是
byAllPatterms
清除所有的花样扫描：0- 否，1- 是
byAllPrivacyMasks
清除所有的隐私块：0- 否，1- 是
byAllPTZLimited
清除所有的限位设置：0- 否，1- 是
byAllScheduledTasks
清除所有的定时任务：0- 否，1- 是
byAllParkAction
清除所有的守望：0- 否，1- 是
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_CLIENTINFO

预览参数结构体。

struct{
  LONG    lChannel;
  LONG    lLinkMode;
  HWND    hPlayWnd;
  char    *sMultiCastIP;
}NET_DVR_CLIENTINFO, *LPNET_DVR_CLIENTINFO;

Members

lChannel
通道号，1~32表示模拟通道1~32，9000系列混合型DVR和NVR等设备的IP通道从33开始。
lLinkMode
最高位(31)为0表示主码流，为1表示子码流；0～30位表示连接方式：0－TCP方式，1－UDP方式，2－多播方式
例如子码流TCP连接，则lLinkMode=0x80000000
hPlayWnd
播放窗口的句柄，为NULL表示不显示图像
sMultiCastIP
多播组地址

Remarks

该结构中的hPlayWnd参数若设置为NULL，则SDK仍取流，但不进行解码显示，所以仍可以录像。
通过登录接口返回byMainProto和bySubProto可以判断设备支持的应用层取流协议：值为2，默认使用私有协议传输RTP码流；值为1，默认使用RTSP协议；值为0，使用私有协议传输PS码流。

Linux下

对于4.1或者以上的版本的SDK，HWND表示播放窗口的句柄，定义为：
typedef unsigned int HWND;

如果使用Qt进行界面开发，示例如下：

NET_DVR_CLIENTINFO tmpclientinfo;
tmpclientinfo.hPlayWnd = (HWND)m_framePlayWnd->GetPlayWndId();

对于4.1以前的版本的SDK，HWND定义如下：

typedef struct __PLAYRECT
{
int x; //显示框左上角横坐标
int y; //显示框左上角纵坐标
int uWidth; //显示框宽度
int uHeight; //显示框高度
}PLAYRECT;
typedef PLAYRECT HWND;

NET_DVR_CLIENTINFO结构中的hPlayWnd = {0}则SDK仍取流，不进行解码显示，所以仍可以录像，但是不能设置hPlayWnd = 0(即NULL)，否则非法结构地址会导致调用hPlayWnd.x等去判断的时候崩溃。

See Also

NET_DVR_RealPlay_V30


NET_DVR_CLOUD_CFG

云存储配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byType;
  BYTE     byStatus;
  BYTE     byRes1;
  char     szAuthCode[CODE_LEN];
  char     szAlias[ALIAS_LEN];
  INT64    i64TotalCapability;
  INT64    i64UsedSpace;
  BYTE     byRes2[256];
}NET_DVR_CLOUD_CFG,*LPNET_DVR_CLOUD_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不开启，1- 开启
byType
云类型：0- 保留，1- OneDrive 2- GoogleDrive 3- DropBox
byStatus
状态（只读）：0- 保留，1- 在线，2- 不在线
byRes1
保留，置为0
szAuthCode
授权码，获取时无效
szAlias
别名（只读）
i64TotalCapability
总容量（只读），单位：MB
i64UsedSpace
已用容量（只读），单位：MB
byRes2
保留，置为0

Remarks

  • 此处云存储是指百度、谷歌、DropBox这些公有云。先登录设备获取公有云的URL，然后应用使用获取到的URL自己登录云存储获取授权码，再将授权码设置给设备，设备就可以连接云存储上传相关数据。
  • 设备是否支持云存储配置或者支持的参数能力，可以通过设备能力集进行判断，对应云存储配置能力集(Cloud)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CLOUD_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CLOUD_STORAGE_CFG

云存储配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableCS;
  BYTE     byRes[511];
}NET_DVR_CLOUD_STORAGE_CFG,*LPNET_DVR_CLOUD_STORAGE_CFG;

Members

dwSize
结构体大小
byEnableCS
开启云存储服务：0- 关闭，1- 开启
byRes
保留

Remarks

  • 启动云存储服务后，该设备可以作为其他设备的云存储服务器。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CLOUD_UPLOADSTRATEGY

云存储上传策略配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byStrategyType;
  BYTE     byRes1[3];
  DWORD    dwRecordType;
  BYTE     byRes[256];
}NET_DVR_CLOUD_UPLOADSTRATEGY,*LPNET_DVR_CLOUD_UPLOADSTRATEGY;

Members

dwSize
结构体大小
byStrategyType
策略类型：0- 无意义，1- 录像，2- 图片
byRes1
保留，置为0
dwRecordType
录像类型（策略类型byStrategyType为1时有效），按位表示： 0x00: 无意义
0x01: 全部事件
0x02: 移动侦测
0x04: 信号量报警类型
0x08: 智能类型
byRes
保留，置为0

Remarks

  • 此处云存储是指百度、谷歌、DropBox这些公有云。先登录设备获取公有云的URL，然后应用使用获取到的URL自己登录云存储获取授权码，再将授权码设置给设备，设备就可以连接云存储上传相关数据。
  • 设备是否支持云存储上传策略配置能力，可以通过设备能力集进行判断，对应云存储上传策略配置能力集(UploadStrategy)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CLOUDSTORAGE_UPLOADSTRATEGY_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CLOUD_UPLOADSTRATEGY_COND

云存储上传策略配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[254];
}NET_DVR_CLOUD_UPLOADSTRATEGY_COND,*LPNET_DVR_CLOUD_UPLOADSTRATEGY_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 设备是否支持云存储上传策略配置能力，可以通过设备能力集进行判断，对应云存储上传策略配置能力集(UploadStrategy)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CLOUDSTORAGE_UPLOADSTRATEGY_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CLOUD_URL

云存储URL信息结构体。

struct{
  DWORD    dwSize;
  char     szURL[256];
  BYTE     byRes[256];
}NET_DVR_CLOUD_URL,*LPNET_DVR_CLOUD_URL;

Members

dwSize
结构体大小
szURL
云存储URL
byRes
保留，置为0

Remarks

  • 此处云存储是指百度、谷歌、DropBox这些公有云。先登录设备获取公有云的URL，然后应用使用获取到的URL自己登录云存储获取授权码，再将授权码设置给设备，设备就可以连接云存储上传相关数据。
  • 设备是否支持云存储URL查询或者支持的参数能力，可以通过设备能力集进行判断，对应云存储URL能力集(CloudURL)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CLOUD_URL_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_CLOUD_URL_COND

云存储URL查询条件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byType;
  BYTE     byRes[63];
}NET_DVR_CLOUD_URL_COND,*LPNET_DVR_CLOUD_URL_COND;

Members

dwSize
结构体大小
byType
云类型：0- 保留，1- OneDrive（百度云）， 2- GoogleDrive（谷歌云存储），3- DropBox
byRes
保留，置为0

Remarks

  • 此处云存储是指百度、谷歌、DropBox这些公有云。先登录设备获取公有云的URL，然后应用使用获取到的URL自己登录云存储获取授权码，再将授权码设置给设备，设备就可以连接云存储上传相关数据。
  • 设备是否支持云存储URL查询能力，可以通过设备能力集进行判断，对应云存储URL能力集(CloudURL)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CLOUD_URL_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_CLOUDSTORAGE_CFG

云存储配置结构体。

struct{
  DWORD                dwSize;
  BYTE                 byEnable;
  BYTE                 byRes[3];
  NET_DVR_IPADDR       struIP;
  WORD                 wPort;
  BYTE                 byRes1[2];
  char                 szUser[CLOUD_NAME_LEN];
  char                 szPassword[CLOUD_PASSWD_LEN];
  NET_DVR_POOLPARAM    struPoolInfo[16];
  BYTE                 byRes2[128];
}NET_DVR_CLOUDSTORAGE_CFG,*LPNET_DVR_CLOUDSTORAGE_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byRes
保留，置为0
struIP
云存储服务器IP地址
wPort
云存储服务器端口号
byRes1
保留，置为0
szUser
服务器用户名
szPassword
服务器密码
struPoolInfo
云存储数据池参数，数组0表示卡口图片数据池，数组1表示违章图片数据池，数组2表示车辆侦测数据池(IPC/IPD)
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CLOUDSTORAGE_COND

云存储配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes1[64];
}NET_DVR_CLOUDSTORAGE_COND,*LPNET_DVR_CLOUDSTORAGE_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes1
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA

外部命令触发录像参数结构体。

struct{
  NET_DVR_STREAM_INFO    struStreamInfo;
  DWORD                  dwCmdType;
  DWORD                  dwRecordTimeLen;
  BYTE                   byEventID[MAX_EVENTID_LEN];
  DWORD                  dwLockDuration;
  BYTE                   byBackUp;
  BYTE                   byPreRecord;
  BYTE                   byRes[122];
}NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA,*LPNET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA;

Members

struStreamInfo
流信息
dwCmdType
外部触发类型，作为唯一的命令码标识，赋值和对应含义由应用层自己定义
dwRecordTimeLen
录像持续时间，0表示停止，单位：秒
byEventID
事件ID，作为附加信息
dwLockDuration
锁定持续时间，单位：秒，0xffffffff- 永久锁定，0- 不锁
byBackUp
是否存档，0-不存档，1-存档
byPreRecord
是否预录，0-不预录，1-预录
byRes
保留，置为0

Remarks

  • 本功能对应能力参见[修改]录像相关能力（V2.0）中的<CmdTriggerRecord>和<CMDRecordParameter>节点。

See Also

NET_DVR_RemoteControl


NET_DVR_CMOSMODECFG

CMOS模式下前端镜头配置。

struct{
  BYTE    byCaptureMod;
  BYTE    byBrightnessGate;
  BYTE    byCaptureGain1;
  BYTE    byCaptureGain2;
  DWORD   dwCaptureShutterSpeed1;
  DWORD   dwCaptureShutterSpeed2;
  BYTE    byRes[4];
}NET_DVR_CMOSMODECFG, *LPNET_DVR_CMOSMODECFG;

Members

byCaptureMod
抓拍模式：0-抓拍模式1；1-抓拍模式2
byBrightnessGate
亮度阈值
byCaptureGain1
抓拍增益1，0-100
byCaptureGain2
抓拍增益2，0-100
dwCaptureShutterSpeed1
抓拍快门速度1
dwCaptureShutterSpeed2
抓拍快门速度2
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_CMS_PARAM

平台参数结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struAddr;
  WORD              wServerPort;
  BYTE              bySeverProtocolType;
  BYTE              byStatus;
  BYTE              sDeviceId[NAME_LEN];
  char              sPassWord[PASSWD_LEN];
  BYTE              sPlatformEhomeVersion[NAME_LEN];
  BYTE              byNetWork;
  BYTE              byAddressType;
  BYTE              byProtocolVersion;
  BYTE              byRes1;
  BYTE              sDomainName[MAX_DOMAIN_NAME];
  BYTE              byEnable;
  BYTE              byRes[139];
}NET_DVR_CMS_PARAM,*LPNET_DVR_CMS_PARAM;

Members

dwSize
结构体大小
struAddr
平台服务器IP地址，byAddressType为0或1时有效
wServerPort
平台服务器监听端口，Ehome平台默认监听端口为7660
bySeverProtocolType
平台协议类型：1-私有，2-Ehome
byStatus
设备注册到该平台的状态：1-未注册，2-已注册
sDeviceId
设备ID，由平台提供
sPassWord
密码，由平台提供
sPlatformEhomeVersion
平台EHOME协议版本（只读），例如：“EhomeV2.1-3.0,PU V2.0.0”
byNetWork
网络类型：0- 无意义，1- 自动，2- 有线网络优先，3- 有线网络，4- 移动网络(3G网络)
byAddressType
服务器地址类型：0- 无意义，1- ipv4/ipv6地址，2- 域名
byProtocolVersion
EHOME协议版本（只读）：0- 无意义，1- v2.0，2- v4.0
byRes1
保留，置为0
sDomainName
平台服务器域名，byAddressType为2时有效
byEnable
0-关闭，1-开启
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CMSPARAM

CMS平台参数结构体。

struct{
  DWORD              dwSize;
  NET_DVR_IPADDR     struCmsAddr;
  WORD               wCmsPort;
  BYTE               byRes1[2];
  BYTE               sDeviceID[NAME_LEN];
  BYTE               byPassword[PASSWD_LEN];
  NET_DVR_IPADDR     struPicServerAddr;
  WORD               wPicServerPort;
  WORD               wCmsUdpPort;
  BYTE               byRes2[12];
}NET_DVR_CMSPARAM,*LPNET_DVR_CMSPARAM;

Members

dwSize
结构体大小
struCmsAddr
注册服务器IP地址
wCmsPort
注册服务器端口
byRes1
保留
sDeviceID
设备ID
byPassword
设备密码
struPicServerAddr
图片服务器地址
wPicServerPort
图片服务器端口
wCmsUdpPort
CMS用于UDP外网查询的端口
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CODEDEV_INFO

编码子设备信息结构体。

struct{
  NET_DVR_CHAN_INFO    struChanInfo[MAX_CHANNUM];
}NET_DVR_CODEDEV_INFO,*LPNET_DVR_CODEDEV_INFO;

Members

struChanInfo
设备通道信息

See Also

NET_DVR_DIFFDEV_INFO


NET_DVR_CODESPLITTERINFO

码分器参数结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byRes1[6];
  BYTE              sUserName[NAME_LEN];
  BYTE              sPassword[PASSWD_LEN];
  BYTE              byChan;
  BYTE              by485Port;
  BYTE              byRes2[14];
}NET_DVR_CODESPLITTERINFO, *LPNET_DVR_CODESPLITTERINFO;

Members

dwSize
结构体大小
struIP
码分器IP地址
wPort
码分器端口号
byRes1
保留
sUserName
码分器用户名
sPassword
码分器密码
byChan
码分器485通道号
by485Port
码分器485地址
byRes2
保留

See Also

NET_DVR_MatrixGetCodeSplitter NET_DVR_MatrixSetCodeSplitter


NET_DVR_COLOR

图像参数结构体。

struct{
  BYTE    byBrightness;
  BYTE    byContrast;
  BYTE    bySaturation;
  BYTE    byHue;
}NET_DVR_COLOR, *LPNET_DVR_COLOR;

Members

byBrightness
亮度，取值范围[0,255]
byContrast
对比度，取值范围[0,255]
bySaturation
饱和度，取值范围[0,255]
byHue
色调，取值范围[0,255]


NET_DVR_COLOR_TEMPERATURE_CFG

色温参数结构体。

struct{
  BYTE    byRed;
  BYTE    byGreen;
  BYTE    byBlue;
  BYTE    byRedOffset;
  BYTE    byGreenOffset;
  BYTE    byBlueOffset;
  BYTE    byRes[6];
}NET_DVR_COLOR_TEMPERATURE_CFG,*LPNET_DVR_COLOR_TEMPERATURE_CFG;

Members

byGainR
红色，取值范围：0~100
byGainG
绿色，取值范围：0~100
byGainB
蓝色，取值范围：0~100
byOffsetR
红色偏移，取值范围：0~100
byOffsetG
绿色偏移，取值范围：0~100
byOffsetB
蓝色偏移，取值范围：0~100
byRes
保留，置为0

See Also

NET_DVR_SCREEN_DISPLAY_CFG NET_DVR_MSC_SCREEN_PARAM


NET_DVR_COMPASS_COND

电子罗盘矫正控制/指向正北控制条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[128];
}NET_DVR_COMPASS_COND,*LPNET_DVR_COMPASS_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 设备是否支持电子罗盘矫正控制、指向正北控制能力，可以通过设备能力集进行判断，对应电子罗盘能力集(CompassCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_COMPASS_CAPABILITIES，节点：<isSupportCalibrate>和<isSupportPointToNorth>。

See Also

NET_DVR_STDControl


NET_DVR_COMPEL_CAPTURE

车位强制抓图参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byParkIndex;
  BYTE     byRes[63];
}NET_DVR_COMPEL_CAPTURE, *LPNET_DVR_COMPEL_CAPTURE;

Members

dwSize
结构体大小
byParkIndex
车位序号，从左到右：1、2、3、4
byRes
保留，置为0

Remarks

强制进行抓图，图片通过监听方式设置报警回调函数获取，对应报警信息类型：COMM_ITS_PARK_VEHICLE，一次回调获取一张图片，多张图片分多次获取。

See Also

NET_DVR_SetDVRConfig


NET_DVR_COMPLETE_RESTORE_INFO

完全恢复出厂值控制参数。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[64];
}NET_DVR_COMPLETE_RESTORE_INFO,*LPNET_DVR_COMPLETE_RESTORE_INFO;

Members

dwSize
结构体大小
dwChannel
设备通道号，目前该参数无效，默认赋值为1
byRes
保留，置为0

Remarks

  • 远程控制设备完全恢复出厂默认值，包括设备IP地址会恢复成192.0.0.64。只有admin管理员账号才支持该功能。
  • 完全恢复之后设备会恢复为未激活状态，调用NET_DVR_ActivateDevice可以激活设备。

See Also

NET_DVR_RemoteControl


NET_DVR_COMPRESSION_AUDIO

语音对讲音频参数结构体。

struct{
  BYTE    byAudioEncType;
  BYTE    byAudioSamplingRate;
  BYTE    byAudioBitRate;
  BYTE    byres[4];
  BYTE    bySupport;
}NET_DVR_COMPRESSION_AUDIO, *LPNET_DVR_COMPRESSION_AUDIO;

Members

byAudioEncType
音频编码类型：0- G722，1- G711_U，2- G711_A，5- MP2L2，6- G726，7- AAC，8- PCM，9-G722，10-G723，11-G729，12-AAC_LC，13-AAC_LD，14-Opus，15-MP3，16-ADPCM
byAudioEncType
音频采样率：0- 默认，1- 16kHZ，2- 32kHZ，3- 48kHZ，4- 44.1kHZ，5- 8kHZ
byAudioEncType
音频码率，枚举类型，详见BITRATE_ENCODE_INDEX
byres
保留，置为0
byAudioEncType
Mp2l2前4个字节的含义表示后面内容音频数据长度

Remarks

配置设备的语音对讲音频参数后需要重启设备才生效。如果NET_DVR_GetDVRConfig返回失败，获取错误号为23（设备不支持），则表示设备音频编码类型为G722。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetCurrentAudioCompress


NET_DVR_COMPRESSION_INFO

码流压缩参数结构体。

struct{
  BYTE     byStreamType;
  BYTE     byResolution;
  BYTE     byBitrateType;
  BYTE     byPicQuality;
  DWORD    dwVideoBitrate;
  DWORD    dwVideoFrameRate;
}NET_DVR_COMPRESSION_INFO, *LPNET_DVR_COMPRESSION_INFO;

Members

byStreamType
码流类型：0-视频流，1-复合流。
如果是事件压缩参数（struEventRecordPara），最高位（byStreamType & 0x80）表示是否启用事件压缩参数
byResolution
分辨率：0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF
byBitrateType
码率类型：0-变码率，1-定码率
byPicQuality
图象质量：0-最好，1-次好，2-较好，3-一般，4-较差，5-差
dwVideoBitrate
码率：0-保留，1-16K(保留)，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K。
最高位(31位)置成1表示是自定义码流，0～30位表示码流值，最小值16k，最大值8192k
dwVideoFrameRate
帧率：0-全部，1-1/16，2-1/8，3-1/4，4-1/2，5-1，6-2，7-4，8-6，9-8，10-10，11-12，12-16，13-20

See Also

NET_DVR_COMPRESSIONCFG


NET_DVR_COMPRESSION_INFO_EX

码流压缩参数结构体。

struct{
  BYTE     byStreamType;
  BYTE     byResolution;
  BYTE     byBitrateType;
  BYTE     byPicQuality;
  DWORD    dwVideoBitrate;
  DWORD    dwVideoFrameRate;
  WORD     wIntervalFrameI;
  BYTE     byIntervalBPFrame;
  BYTE     byRes;
}NET_DVR_COMPRESSION_INFO_EX, *LPNET_DVR_COMPRESSION_INFO_EX;

Members

byStreamType
码流类型：0-视频流，1-复合流
如果是事件压缩参数（struEventRecordPara），最高位（byStreamType & 0x80）表示是否启用事件压缩参数
byResolution
分辨率：0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF，16-VGA，17-UXGA，18-SVGA，19-HD720p
byBitrateType
码率类型：0-变码率，1-定码率
byPicQuality
图象质量：0-最好，1-次好，2-较好，3-一般，4-较差，5-差
dwVideoBitrate
码率：0-保留，1-16K(保留)，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K。
最高位(31位)置成1表示是自定义码流，0～30位表示码流值，最小值16k，最大值8192k
dwVideoFrameRate
帧率：0-全部，1-1/16，2-1/8，3-1/4，4-1/2，5-1，6-2，7-4，8-6，9-8，10-10，11-12，12-16，13-20，14-15，15-18，16－22
wIntervalFrameI
I帧间隔，0xffff-无效
byIntervalBPFrame
帧格式：0-BBP帧，1-BP帧，2-单P帧，0xff-无效
byRes
保留，置为0

See Also

NET_DVR_COMPRESSIONCFG_EX


NET_DVR_COMPRESSION_INFO_V30

码流压缩参数结构体。

struct{
  BYTE     byStreamType;
  BYTE     byResolution;
  BYTE     byBitrateType;
  BYTE     byPicQuality;
  DWORD    dwVideoBitrate;
  DWORD    dwVideoFrameRate;
  WORD     wIntervalFrameI;
  BYTE     byIntervalBPFrame;
  BYTE     byres1;
  BYTE     byVideoEncType;
  BYTE     byAudioEncType;
  BYTE     byVideoEncComplexity;
  BYTE     byEnableSvc;
  BYTE     byFormatType;
  BYTE     byAudioBitRate;
  BYTE     bySteamSmooth;
  BYTE     byAudioSamplingRate;
  BYTE     bySmartCodec;
  BYTE     byDepthMapEnable;
  WORD     wAverageVideoBitrate;
}NET_DVR_COMPRESSION_INFO_V30, *LPNET_DVR_COMPRESSION_INFO_V30;

Members

byStreamType
码流类型：0-视频流，1-复合流，0xfe- 自动（和源一致）
如果是事件压缩参数(struEventRecordPara，需要设备支持)，最高位(byStreamType & 0x80)表示是否启用事件压缩参数，即配置struEventRecordPara时：
byStreamType&0x80 == 0 表示禁用事件压缩参数；
(byStreamType&0x80 == 1)&&(byStreamType&0x7f == 0) 表示启用事件压缩参数并且码流类型设置为视频流；
(byStreamType&0x80 == 1)&&(byStreamType&0x7f == 1) 表示启用事件压缩参数并且码流类型设置为复合流；
byStreamType==0xfe表示启用事件压缩参数并且码流类型设置为和源一致。
byResolution
设备当前分辨率索引超过254时：
1）获取时，该字段值为254（无具体含义，用于表示实际分辨率索引值超过255），实际分辨率值由NET_DVR_MULTI_STREAM_COMPRESSIONCFG中的dwResolution表示；
2）设置时，该值仍需要设置为254，实际分辨率值由dwResolution表示。
设备当前分辨率索引小于254时：
1）获取时，该字段值为实际分辨率值，dwResolution值无需处理(为0（不支持大于254设备）或者实际分辨率值（支持配置254的设备）)；
2）设置时该字段为实际分辨率值，dwResolution值保持不变。
分辨率索引值：
0-DCIF(528*384/528*320)，1-CIF(352*288/352*240)，2-QCIF(176*144/176*120)，3-4CIF(704*576/704*480)或D1(720*576/720*486)，4-2CIF(704*288/704*240)，
5-保留，6-QVGA(320*240)，7-QQVGA(160*120)，12-384*288，13-576*576，16-VGA(640*480)，
17-UXGA(1600*1200)，18-SVGA(800*600)，19-HD720P(1280*720)，20-XVGA(1280*960)，21-HD900P(1600*900)，
22-1360*1024，23-1536*1536，24-1920*1920，27-1920*1080p，28-2560*1920，
29-1600*304，30-2048*1536，31-2448*2048，32-2448*1200，33-2448*800，
34-XGA(1024*768)，35-SXGA(1280*1024)，36-WD1(960*576/960*480)，37-1080i(1920*1080)，38-WXGA(1440*900)，
39-HD_F(1920*1080/1280*720)，40-HD_H(1920*540/1280*360)，41-HD_Q(960*540/630*360)，42-2336*1744，43-1920*1456，44-2592*2048，
45-3296*2472，46-1376*768，47-1366*768，48-1360*768，49-WSXGA+，
50-720*720，51-1280*1280，52-2048*768，53-2048*2048，54-2560*2048，
55-3072*2048，56-2304*1296，57-WXGA(1280*800)，58-1600*600，59-1600*900，
60-2752*2208，61-384*288，62-4000*3000，63-4096*2160，64-3840*2160，
65-4000*2250，66-3072*1728，67-2592*1944，68-2464*1520，69-1280*1920，
70-2560*1440，71-1024*1024，72-160*128，73-324*240，74-324*256，
75-336*256，76-640*512，77-2720*2048，78-384*256，79-384*216，
80-320*256，81-320*180，82-320*192，83-512*384，84-325*256，
85-256*192，86- 640*360，87-1776x1340，88-1936x1092，89-2080x784，
90-2144x604，91-1920*1200，92-4064*3040，93-3040*3040，94-3072*2304，
95-3072*1152，96-2560*2560，97-2688*1536，98-2688*1520，99-3072*3072，
100-3392*2008，101-4000*3080，102-960*720，103-1024*1536，104-704*1056，
105-352*528，106-2048*1530，107-2560*1600，108-2800*2100，109-4088*4088，
110-4000*3072，111-960*1080(1080p Lite)，112-640*720(half 720p)，113-640*960，114-320*480，
115-3840*2400，116-3840*1680，117-2560*1120，118-704*320，119-1200*1920，
120-480*768，121-768*480，122-320*512，123-512*320，124-4096*1800，
125-1280*560，126-2400*3840，127-480*272，128-512*272，129-2592*2592，
130-1792*2880，131-1600*2560，132-2720*1192，133-3MP(1920*1536/2048*1536)，134-5MP(2560*1944)，
137-4096*1200，138-3840*1080，139-2720*800，140-512*232，141-704*200，
142-512*152，143-2048*896，144-2048*600，145-1280*376，150-8208*3072，
151-4096*1536，152-6912*2800，153-3456*1400，167-720*1280, 168-576*960，
169-2944*1656，170-432*240，171-2160*3840，172-1080*1920，173-7008*1080，
174-3504*540，175-1752*270，176-876*135，177-4096*1440，178-4096*1080，
179-1536*864，180-180*240，181-360*480，182-540*720，183-720*960，184-960*1280，
185-1080*1440，186-3200*1800，187-1752*272，188-872*136，189-1280*1440，
190-3520*544，191-1728*256，192-864*128，193-5470*3684，194-2560*750，
195-1600*480，196-1024*300，197-848*480，198-8160*3616，199-8160*2304，
200-4064*2560，201-1400*1050，202-2688*1512，203-704*288，204-1560*656，
205-3072*1280，206-4320*1808，207-6120*2560，208-1280*960，209-3000*3000，
210-2032*3616，211-7680*4320，212-5760*3240，213-3264*1836，214-2712*1536，
215-1080*720，216-360x640，217-1440*812，218-8160*2416，219-5760*1712，
220-4080*1200，221-6144*2560，222-1568*656，223-4096*1808，224-2720*1200，
225-2896*848，226-2048*608，227-3840*1120，228-2720*784，229-1920*560，
230-1360*400，231-704*208，232-496*144，233-352*128，234-512*240，
235-512*160，236-368*128，237-256*128，238-2048*592，239-1456*416，
240-1024*304，241-1280*368，242-912*256，243-640*192，244-252*112(未使用)，
245-(576*704[P制]/480*704[N制])，254-表示超出该字段范围(使用NET_DVR_MULTI_STREAM_COMPRESSIONCFG中的dwResolution)， 0xff-Auto(使用当前码流分辨率)
byBitrateType
码率类型：0-变码率，1-定码率
byPicQuality
图象质量：0-最好，1-次好，2-较好，3-一般，4-较差，5-差，0xfe- 自动（和源一致）
dwVideoBitrate
视频码率：0-保留，1-16K(保留)，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K，24-3072K，25-4096K，26-8192K，27-16384K，0xfffffffe- 自动（和源一致）。
最高位(31位)置成1表示是自定义码流，0～30位表示码流值，最小值16k
dwVideoFrameRate
视频帧率：0-全部，1-1/16，2-1/8，3-1/4，4-1/2，5-1，6-2，7-4，8-6，9-8，10-10，11-12，12-16，13-20，14-15，15-18，16－22，17-25，18-30，19-35，20-40，21-45，22-50，23-55，24-60，25-3，26-5，27-7，28-9，29-100，30-120，31-24，32-48，33-8.3，0xfffffffe-自动（和源一致）
wIntervalFrameI
I帧间隔，0xfffe- 自动（和源一致），0xffff-无效
byIntervalBPFrame
视频帧格式：0-BBP帧，1-BP帧，2-单P帧，0xff-无效
byres1
保留，置为0
byVideoEncType
视频编码类型：0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2，9-SVAC，10-标准h265，0xfe- 自动（和源一致），0xff-无效
byAudioEncType
音频编码类型：0-G722，1-G711_U，2-G711_A，5-MP2L2，6-G726，7-AAC，8-PCM，0xfe- 自动（和源一致），0xff-无效
byVideoEncComplexity
视频编码复杂度：0- 低，1- 中，2- 高，0xfe- 自动（和源一致），
byEnableSvc
0- 不启用SVC功能，1- 启用SVC功能，2- 自动启用SVC功能。SVC: Scalable Video Coding，可分级视频编码
byFormatType
封装类型：1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181），0xff-无效
byAudioBitRate
音频码率：0- 默认，1- 8Kbps，2- 16Kbps，3- 32Kbps，4- 64Kbps，5- 128Kbps，6- 192Kbps，7- 40Kbps，8- 48Kbps，9- 56Kbps，10- 80Kbps，11- 96Kbps，12- 112Kbps，13- 144Kbps，14- 160Kbps
IPC V5.1.0默认：4- 64Kbps，支持3、4、5
bySteamSmooth
码流平滑，取值范围：1～100，1等级表示清晰(Clear)，100表示平滑(Smooth)
byAudioSamplingRate
音频采样率：0- 默认，1- 16kHZ，2- 32kHZ，3- 48kHZ, 4- 44.1kHZ，5- 8kHZ
bySmartCodec
是否启用Smart编码（byVideoEncType为1时开启Smart编码表示Smart264；byVideoEncType为10时开启Smart编码表示Smart265）：0- 关闭，1- 打开，启用该功能后，视频编码类型（byVideoEncType）为1（标准h264），变码率时可以配置码率上限（dwVideoBitrate）和平均码率（wAverageVideoBitrate），定码率时可以配置码率上限（dwVideoBitrate）而平均码率（wAverageVideoBitrate）无效
byDepthMapEnable
深度图使能开关，0-关闭，1-打开；如果开启后，第二通道的子码流（双目）的视频参数都不能配置，默认输出 960*540 的深度图
wAverageVideoBitrate
视频平均码率（在SmartCodec使能开启下生效）：0-0K，1-16K，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K，24-2560K，25-3072K，26-4096K，27-5120K，28-6144K，29-7168K，30-8192K。最高位(15位)置成1表示是自定义码流，此时0~14位表示码流值

Remarks

  • 视频分辨率帧率、视音频编码格式、封装类型等参数值并非都能支持配置，设备支持情况可以通过设备能力集获取，对应设备所有编码能力集(AudioVideoCompressInfo)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ENCODE_ALL_ABILITY_V20。
  • 当修改设备视频编码类型时，需要重启设备生效。
  • “平均码率”字段主要用于控制录像存储量，在使用的时候有推荐值，不同的设备在不同的“码率上限”值下的“平均码率”推荐值都是不一样的。推荐值可以通过能力集获取，对应前端参数动态能力集(CameraParaDynamicAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<vbrAverageCap>。
  • 开启Smart264或者Smart265后，部分功能当前不可用，如ROI、SVC、主码流码流平滑、高帧率、分辨率2048*1536、车辆检测、混行检测、违章取证、热度图等。

See Also

NET_DVR_COMPRESSIONCFG_V30 NET_DVR_MULTI_STREAM_COMPRESSIONCFG


NET_DVR_COMPRESSION_LIMIT

主子码流压缩参数能力限制结构体。

struct{
  DWORD                        dwSize;
  DWORD                        dwChannel;
  BYTE                         byCompressType;
  BYTE                         byRes[15];
  NET_DVR_COMPRESSIONCFG_V30   struCurrentCfg;
}NET_DVR_COMPRESSION_LIMIT,*LPNET_DVR_COMPRESSION_LIMIT;

Members

dwSize
结构体大小
dwChannel
通道号
byCompressType
待获取的压缩参数类型：1- 主码流，2- 子码流，3- 事件
byRes
保留
struCurrentCfg
当前压缩参数配置

See Also

NET_DVR_GetDeviceAbility


NET_DVR_COMPRESSIONCFG

通道压缩参数结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_COMPRESSION_INFO    struRecordPara;
  NET_DVR_COMPRESSION_INFO    struNetPara;
}NET_DVR_COMPRESSIONCFG, *LPNET_DVR_COMPRESSIONCFG;

Members

dwSize
结构体大小
struRecordPara
录像/事件触发录像的码流压缩参数
struNetPara
网传的码流压缩参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_COMPRESSIONCFG_V30


NET_DVR_COMPRESSIONCFG_ABILITY

压缩能力的参数结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwAbilityNum;
  NET_DVR_ABILITY_LIST   struAbilityNode[MAX_ABILITYTYPE_NUM];
}NET_DVR_COMPRESSIONCFG_ABILITY,*LPNET_DVR_COMPRESSIONCFG_ABILITY;

Members

dwSize
结构体大小
dwAbilityNum
能力类型个数
struAbilityNode
单个能力的参数结构

See Also

NET_DVR_GetDeviceAbility


NET_DVR_COMPRESSIONCFG_EX

通道压缩参数结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_COMPRESSION_INFO_EX    struRecordPara;
  NET_DVR_COMPRESSION_INFO_EX    struNetPara;
}NET_DVR_COMPRESSIONCFG_EX, *LPNET_DVR_COMPRESSIONCFG_EX;

Members

dwSize
结构体大小
struRecordPara
录像的码流压缩参数
struNetPara
网传的码流压缩参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_COMPRESSIONCFG_V30


NET_DVR_COMPRESSIONCFG_V30

通道压缩参数结构体。

struct{
  DWORD                           dwSize;
  NET_DVR_COMPRESSION_INFO_V30    struNormHighRecordPara;
  NET_DVR_COMPRESSION_INFO_V30    struRes;
  NET_DVR_COMPRESSION_INFO_V30    struEventRecordPara;
  NET_DVR_COMPRESSION_INFO_V30    struNetPara;
}NET_DVR_COMPRESSIONCFG_V30, *LPNET_DVR_COMPRESSIONCFG_V30;

Members

dwSize
结构体大小
struNormHighRecordPara
录像的码流压缩参数（即主码流的压缩参数）
struRes
保留，置为0
struEventRecordPara
事件触发压缩参数，报警事件触发后，主码流切换成事件压缩参数配置
struNetPara
网传的码流压缩参数（即子码流的压缩参数）

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_StartPassiveTransCode

Reference Structure

该结构扩展源于

NET_DVR_COMPRESSIONCFG_EX


NET_DVR_CONFERENCE_CALL_ALARM

会议呼叫报警信息上传结构体。

struct{
  DWORD                dwSize;
  BYTE                 byAlarmType;
  BYTE                 byCallType;
  BYTE                 byAutoAnswer;
  BYTE                 byCallStatusSwitch;
  NET_DVR_CALL_INFO    struCallInfo;
  BYTE                 byRes2[32];
}NET_DVR_CONFERENCE_CALL_ALARM, *LPNET_DVR_CONFERENCE_CALL_ALARM;

Members

dwSize
结构体大小
byAlarmType
报警类型：1- 会议呼叫，2- 呼叫状态切换
byCallType
呼叫类型，报警类型为1时有效：1- 终端点对点呼叫，2- 会议呼叫
byAutoAnswer
是否已自动接听：0- 否，1- 是
byCallStatusSwitch
呼叫状态切换类型，当报警类型为2时有效：1- 开始呼叫，2- 呼叫成功，3- 呼叫结束，4- 对端挂断
struCallInfo
呼叫信息，不同的呼叫类型对应不同的信息结构
byRes2
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_CONFERENCE_CALL_INFO

会议呼叫信息结构体。

struct{
  BYTE            byConferenceID[MAX_ID_LEN];
  BYTE            byConferenceName[NAME_LEN];
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
  BYTE            byRes[512];
}NET_DVR_CONFERENCE_CALL_INFO,*LPNET_DVR_CONFERENCE_CALL_INFO;

Members

byConferenceID
会议ID
byConferenceName
会议名称
struStartTime
会议开始时间
struEndTime
会议结束时间
byRes
保留，置为0

See Also

NET_DVR_CALL_INFO


NET_DVR_CONFERENCE_REGION

终端会议区域参数配置结构体。

struct{
  DWORD            dwSize;
  BYTE             byEnabled;
  BYTE             byRes1[3];
  NET_DVR_POINT    struRegion[RECT_POINT_NUM];
  DWORD            dwOutputWidth;
  DWORD            dwOutputHeight;
  BYTE             byRes2[32];
}NET_DVR_CONFERENCE_REGION,*LPNET_DVR_CONFERENCE_REGION;

Members

dwSize
结构体大小
byEnabled
是否启用会议区域：0- 否，1- 是
byRes1
保留，置为0
struRegion
会议区域，矩形，起始点为左下角，顺时针方向
dwOutputWidth
单输出口基准宽，只能获取
dwOutputHeight
单输出口基准高，只能获取
byRes2
保留，置为0

Remarks

  • 设备是否支持终端会议区域参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应终端会议区域参数能力集(ConferenceRegion)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CONFERENCE_REGION_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CONNECT_POS_CFG

POS连接方式配置结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byConnectMode;
  BYTE                             byRes1[3];
  NET_DVR_POS_CONNECTMODE_UNION    struPosConnMode;
  BYTE                             byRes[64];
}NET_DVR_CONNECT_POS_CFG,*LPNET_DVR_CONNECT_POS_CFG;

Members

dwSize
结构体大小
byConnectMode
连接模式：0- 网络监听(TCP)，1- 网络接受，2- 串口接收3-网络监听（UDP），4- 网络侦听（sniff），5- 多播，6- USB_232串口方式
byRes1
保留，置为0
struPosConnMode
连接模式配置
byRes
保留，置为0

Remarks

  • 设备是否支持POS连接方式配置或者支持的参数能力，可以通过设备能力集进行判断，对应POS能力集(POSAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<ConnectMode>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CONNECTDEV_CFG

连接设备列表信息结构体。

struct{
  DWORD             dwSize;
  BYTE              byID;
  BYTE              byRes;
  char              byMACAddr[MACADDR_LEN];
  NET_DVR_IPADDR    struDVRIP;
  NET_DVR_TIME      struConnectTime;
  BYTE              byRes1[256];
 }NET_DVR_CONNECTDEV_CFG,*LPNET_DVR_CONNECTDEV_CFG;

Members

dwSize
结构体大小
byID
序列号
byRes
保留，置为0
byMACAddr
MAC物理地址
struDVRIP
设备IP地址
struConnectTime
接入时间
byRes1
保留，置为0

Remarks

  • 设备是否支持获取连接设备列表信息或者支持的参数能力，可以通过设备能力集进行判断，对应获取连接设备列表信息能力集(accessDeviceList)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CONNECT_LIST_CAPABILITIES。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CONNECTDEV_COND

连接设备列表信息查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[128];
 }NET_DVR_CONNECTDEV_COND,*LPNET_DVR_CONNECTDEV_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 设备是否支持获取连接设备列表信息或者支持的参数能力，可以通过设备能力集进行判断，对应获取连接设备列表信息能力集(accessDeviceList)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CONNECT_LIST_CAPABILITIES。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_CONTROL_BASELINE_SCENE_PARAM

基准场景操作参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byCommand;
  BYTE     byRes[127];
}NET_DVR_CONTROL_BASELINE_SCENE_PARAM,*LPNET_DVR_CONTROL_BASELINE_SCENE_PARAM;

Members

dwSize
结构体大小
dwChannel
设备通道号
byCommand
操作类型：1- (保留，暂不使用)，2- 更新基准场景
byRes
保留，置为0

Remarks

启用基准场景后，可对基准场景进行一些操作，如摄像机位置发生变化时，需要更新基准场景图片，防止设备将当前场景与以前的基准场景进行比较而产生误报。

基准场景主要用于VQD的场景变更和视频遮挡功能。

See Also

NET_DVR_RemoteControl


NET_DVR_CONTROL_DELAY_CFG

一键延长录像控制信息结构体。

struct{
  BYTE    byUseDefine;
  BYTE    byRes1;
  WORD    wDelayTime;
  BYTE    byRes[128];
}NET_DVR_CONTROL_DELAY_CFG,*LPNET_DVR_CONTROL_DELAY_CFG;

Members

byUseDefine
是否使用自定义：0- 使用默认，1- 使用自定义
byRes1
保留，置为0
wDelayTime
录像延长时间，单位：秒(s)
byRes
保留，置为0

See Also

NET_DVR_CONTROL_INFO_UNION


NET_DVR_CONTROL_GATEWAY

远程开锁控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwGatewayIndex;
  BYTE     byCommand;
  BYTE     byLockType;
  WORD     wLockID;
  BYTE     byControlSrc[NAME_LEN];
  BYTE     byControlType;
  BYTE     byRes3[3];
  BYTE     byPassword[PASSWD_LEN];
  BYTE     byRes2[108];
}NET_DVR_CONTROL_GATEWAY, *LPNET_DVR_CONTROL_GATEWAY;

Members

dwSize
结构体大小
dwGatewayIndex
门禁序号，从1开始
byCommand
操作命令：0- 关闭，1- 打开，2-常开（通道状态），3-恢复（普通状态）
byLockType
锁类型：0- 普通（不支持则默认为0），1- 智能锁
wLockID
锁ID，从1开始（远程开门口机锁时，0-表示门口机本机控制器上接的锁、1-表示外接控制器上接的锁）
byControlSrc
操作发起源信息
byControlType
开锁场景类型：1- 视频，2- 通话
byRes3
保留，置为0
byPassword
锁密码，当byLockType为“1-智能锁”时有效
byRes2
保留，置为0

Remarks

  • 如果设置了开锁操作发起源信息，那么当开锁事件记录上传时，会同时包含此信息，用于上层应用做识别使用。
  • 远程开锁控制能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<ControlGateway>。

See Also

NET_DVR_RemoteControl


NET_DVR_CONTROL_INFO_UNION

录播主机控制信息联合体。

union{
  BYTE                         byLen[132];
  NET_DVR_CONTROL_START_CFG    struStartCfg;
  NET_DVR_CONTROL_DELAY_CFG    struDelayCfg;
}NET_DVR_CONTROL_INFO_UNION, *LPNET_DVR_CONTROL_INFO_UNION;

Members

byLen
联合体大小，132字节
struStartCfg
一键开始控制信息，控制命令类型为一键开始时有效
struDelayCfg
一键延迟控制信息，控制命令类型为一键延长时有效

See Also

NET_DVR_RECORDING_CONTROL_CFG


NET_DVR_CONTROL_PARAM

控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sDeviceID[NAME_LEN];
  WORD     wChan;
  BYTE     byIndex;
  BYTE     byRes1;
  DWORD    dwControlParam;
  BYTE     byMandatoryAlarm;
  BYTE     byRes2;
  WORD     wZoneIndex;
  BYTE     byOperatorCode[16];
  DWORD    dwPlanNo;
  BYTE     byRes3[8];
}NET_DVR_CONTROL_PARAM,*LPNET_DVR_CONTROL_PARAM;

Members

dwSize
结构体大小
sDeviceID
被控设备的设备ID，设为NULL
wChan
无效，置为0
byIndex
控制索引，不同的控制命令对应不同的索引：
dwCommand控制命令 | 控制功能描述 | byIndex索引
NET_DVR_OPEN_PLAN | SDI矩阵切换器，控制预案 | 预案号
NET_DVR_TURNON_LED | 报警设备，打开LED屏 | 无效
NET_DVR_TURNOFF_LED | 报警设备，关闭LED屏 | 无效
NET_DVR_SET_LED_BRIGHTNESS | 报警设备，手动设置LED屏亮度 | 串口号，0~N，N从能力集获取
NET_DVR_CLOSE_SUBSYSTEM_FAULT_ALARM | 报警设备，关闭子系统故障提示音 | 子系统号，从1开始，0xff表示所有子系统
NET_DVR_SET_SUBSYSTEM_BYPASS | 报警设备，子系统旁路 | 子系统号，从1开始，0xff表示所有子系统
NET_DVR_CANCEL_SUBSYSTEM_BYPASS | 报警设备，子系统旁路恢复 | 子系统号，从1开始，0xff表示所有子系统
NET_DVR_ARM_ALARMHOST_SUBSYSTEM | 报警设备，按布防类型对子系统布防 | 子系统号，从1开始，0xff表示所有子系统
byRes1
保留，置为0
dwControlParam
控制参数，不同的控制命令对应不同的参数：
dwCommand控制命令 | 控制功能描述 | dwControlParam参数
NET_DVR_OPEN_PLAN | SDI矩阵切换器，控制预案 | 1- 预案开始，2- 预案停止
NET_DVR_TURNON_LED | 报警设备，打开LED屏 | 无效，设为0
NET_DVR_TURNOFF_LED | 报警设备，关闭LED屏 | 无效，设为0
NET_DVR_SET_LED_BRIGHTNESS | 报警设备，手动设置LED屏亮度 | 亮度值，取值范围：0~15
NET_DVR_CLOSE_SUBSYSTEM_FAULT_ALARM | 报警设备，关闭子系统故障提示音 | 无效，设为0
NET_DVR_SET_SUBSYSTEM_BYPASS | 报警设备，子系统旁路 | 无效，设为0
NET_DVR_CANCEL_SUBSYSTEM_BYPASS | 报警设备，子系统旁路恢复 | 无效，设为0
NET_DVR_ARM_ALARMHOST_SUBSYSTEM | 报警设备，按布防类型对子系统布防 | 1- 普通布防，2- 即时布防，3- 留守布防
byMandatoryAlarm
0-不强制布防，1-强制布防
byRes2
保留，置为0
wZoneIndex
防区号
byOperatorCode
回控码
dwPlanNo
4字节预案号，客户端统一使用4字节的预案号，单字节的预案号不再使用
byRes3
保留，置为0

Remarks

普通布防（外出布防）：当有子系统中有延时防区时，该防区会延时指定的时间再生效；即时布防：延时防区也会马上生效。如果子系统没有延时防区时，普通布防和即时布防是一样的。

See Also

报警主机：NET_DVR_RemoteControl

SDI矩阵切换器：NET_DVR_RemoteControl


NET_DVR_CONTROL_START_CFG

一键开始控制信息结构体。

struct{
  BYTE    byUseDefine;
  BYTE    byRes1;
  WORD    wCourseIndex;
  BYTE    byRes[128];
}NET_DVR_CONTROL_START_CFG,*LPNET_DVR_CONTROL_START_CFG;

Members

byUseDefine
是否使用自定义：0- 使用默认，1- 使用自定义
byRes1
保留，置为0
wCourseIndex
课程索引
byRes
保留，置为0

See Also

NET_DVR_CONTROL_INFO_UNION


NET_DVR_CORRECT_DEADPIXEL_PARAM

坏点校正参数结构体。

struct{
  DWORD      dwSize;
  DWORD      dwCommand;
  DWORD      dwDeadPixelX;
  DWORD      dwDeadPixelY;
  BYTE       byRes[12];
}NET_DVR_CORRECT_DEADPIXEL_PARAM, *LPNET_DVR_CORRECT_DEADPIXEL_PARAM;

Members

dwSize
结构体大小
dwCommand
命令：0- 进入坏点模式，1- 添加坏点，2- 保存坏点，3- 退出坏点模式
dwDeadPixelX
坏点X坐标
dwDeadPixelY
坏点Y坐标
byRes2
保留

See Also

NET_DVR_CorrectDeadPixel


NET_DVR_CORRIDOR_MODE

旋转功能配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableCorridorMode;
  BYTE     byMirrorMode;
  BYTE     byRes[126];
}NET_DVR_CORRIDOR_MODE,*LPNET_DVR_CORRIDOR_MODE;

Members

dwSize
结构体大小
byEnableCorridorMode
是否启用旋转功能：0- 不启用，1- 启用
byMirrorMode
镜像方式：0- 关闭，1- 左右，2- 上下，3- 中间
byRes
保留

Remarks

开启旋转功能后，视频编码将逆时针旋转90°，例如1280*720旋转为720*1280。摄像机旋转安装时，启用该功能，可以提高垂直方向的监控有效范围，适用于走廊、道路等场所。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CORRIDOR_MODE_CCD

旋转功能参数结构体。

struct{
  BYTE    byEnableCorridorMode;
  BYTE    byRes[11];
}NET_DVR_CORRIDOR_MODE_CCD, *LPNET_DVR_CORRIDOR_MODE_CCD;

Members

byEnableCorridorMode
是否启用旋转功能：0- 不启用，1- 启用
byRes
保留

Remarks

开启旋转功能后，视频编码将逆时针旋转90°，例如1280*720旋转为720*1280。摄像机旋转安装时，启用该功能，可以提高垂直方向的监控有效范围，适用于走廊、道路等场所。

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_COURSE_CFG

课程配置结构体。

struct{
  DWORD          dwSize;
  NET_DVR_TIME   struStartTime;
  NET_DVR_TIME   struEndTime;
  BYTE           byCourseName[COURSE_NAME_LEN_128];
  BYTE           byInstructorName[INSTRUCTOR_NAME_LEN_64];
  BYTE           byCourseDescription[COURSE_DESCRIPTION_LEN];
  BYTE           byRecUUID[MAX_UUID_LEN];
  BYTE           byCourseType;
  BYTE           byRes[303];
 }NET_DVR_COURSE_LIST_COND,*LPNET_DVR_COURSE_LIST_COND;

Members

dwSize
结构体大小
struStartTime
课程开始时间
struEndTime
课程结束时间
byCourseName
课程名称
byInstructorName
授课老师
byCourseDescription
课程描述
byRecUUID
手动课表UUID
byCourseType
课表类型。0-全部，1-手动课表
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_COURSE_LIST_COND

课程列表条件结构体。

struct{
  DWORD          dwSize;
  NET_DVR_TIME   struStartTime;
  NET_DVR_TIME   struEndTime;
  BYTE           byCourseName[COURSE_NAME_LEN_128];
  BYTE           byInstructorName[INSTRUCTOR_NAME_LEN_64];
  BYTE           byCourseType;
  BYTE           byRes[603];
 }NET_DVR_COURSE_LIST_COND,*LPNET_DVR_COURSE_LIST_COND;

Members

dwSize
结构体大小
struStartTime
课程开始时间
struEndTime
课程结束时间
byCourseName
课程名称
byInstructorName
授课老师
byCourseType
课表类型。0-全部，1-手动
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_COURSE_RECORDING_INFO

课程信息索引配置结构体。

struct{
  DWORD    dwSize;
  char     sCourseName[COURSE_NAME_LEN];
  char     sInstructorName[INSTRUCTOR_NAME_LEN];
  char     sCourseDescription[COURSE_DESCRIPTION_LEN];
  BYTE     byRes[16];
 }NET_DVR_COURSE_RECORDING_INFO,*LPNET_DVR_COURSE_RECORDING_INFO;

Members

dwSize
结构体大小
sCourseName
课程名称
sInstructorName
授课老师
sCourseDescription
课程简介
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CROSSLINE_ALARM

压线报警信息结构体。

struct{
  DWORD                dwSize;
  NET_VCA_DEV_INFO     struDevInfo;
  NET_DVR_TIME_EX      struTriggerTime;
  NET_DVR_PARK_INFO    struParkInfo;
  BYTE                 byRes1[128];
}NET_DVR_CROSSLINE_ALARM,*LPNET_DVR_CROSSLINE_ALARM;

Members

dwSize
结构体大小
struDevInfo
报警设备信息，包括IP、端口、通道等
struTriggerTime
触发报警时间
struParkInfo
车位信息
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_CRUISE_PARA

巡航配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byPresetNo[CRUISE_MAX_PRESET_NUMS];
  BYTE     byCruiseSpeed[CRUISE_MAX_PRESET_NUMS];
  WORD     wDwellTime[CRUISE_MAX_PRESET_NUMS];
  BYTE     byEnableThisCruise;
  BYTE     res[15];
}NET_DVR_CRUISE_PARA,*LPNET_DVR_CRUISE_PARA;

Members

dwSize
结构体大小
byPresetNo
预置点号
byCruiseSpeed
巡航速度
wDwellTime
停留时间
byEnableThisCruise
是否启用：0-不启用，1-启用
res
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CRUISE_PARAM

巡航模式结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byCruiseMode;
  BYTE                    byRes[123];
}NET_DVR_CRUISE_PARAM, *LPNET_DVR_CRUISE_PARAM;

Members

dwSize
结构体大小
byCruiseMode
巡航模式：0~非预置点巡航，1~预置点巡航
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_CRUISE_POINT

巡航点参数结构体。

struct{
  BYTE    PresetNum;
  BYTE    Dwell;
  BYTE    Speed;
  BYTE    Reserve;
}NET_DVR_CRUISE_POINT, *LPNET_DVR_CRUISE_POINT;

Members

PresetNum
预置点号
Dwell
停留时间
Speed
速度
Reserve
保留，置为0

See Also

NET_DVR_CRUISE_RET


NET_DVR_CRUISE_RET

巡航路径结构体。

struct{
  NET_DVR_CRUISE_POINT      struCruisePoint[32];
}NET_DVR_CRUISE_RET,*LPNET_DVR_CRUISE_RET;

Members

struCruisePoint
巡航点信息

See Also

NET_DVR_GetPTZCruise


NET_DVR_CRUISECHAN_INFO

巡航通道信息结构体。

struct{
  DWORD   dwEnableCruiseChan;
  DWORD   dwCruiseNo;
}NET_DVR_CRUISECHAN_INFO,*LPNET_DVR_CRUISECHAN_INFO;

Members

dwEnableCruiseChan
启用巡航的通道
dwCruiseNo
巡航通道对应的巡航序号，0xfffffff表示无效

See Also

NET_DVR_ALARMINCFG_V40 NET_DVR_VCA_DETECTION_CFG_V40 NET_DVR_EVENT_TRIGGER NET_DVR_PTZ_NOTIFICATION


NET_DVR_CRUISEPOINT_COND

巡航路径配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  WORD     wRouteNo;
  BYTE     byRes[30];
}NET_DVR_CRUISEPOINT_COND, *LPNET_DVR_CRUISEPOINT_COND;

Members

dwSize
结构体大小
dwChan
设备通道号
wRouteNo
巡航路径号
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_CRUISEPOINT_PARAM

巡航点参数结构体。

struct{
  WORD    wPresetNo;
  WORD    wDwell;
  BYTE    bySpeed;
  BYTE    bySupport256PresetNo;
  BYTE    byRes[6];
}NET_DVR_CRUISEPOINT_PARAM, *LPNET_DVR_CRUISEPOINT_PARAM;

Members

wPresetNo
预置点号
wDwell
停留时间
bySpeed
速度
bySupport256PresetNo
第256号预置点是否生效(兼容之前的设备)
byRes
保留，置为0

See Also

NET_DVR_CRUISEPOINT_V40


NET_DVR_CRUISEPOINT_V40

巡航路径配置结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_CRUISEPOINT_PARAM    struCruisePoint[MAX_CRUISE_POINT_NUM];
  BYTE                         byRes[64];
}NET_DVR_CRUISEPOINT_V40, *LPNET_DVR_CRUISEPOINT_V40;

Members

dwSize
结构体大小
struCruisePoint
巡航路径参数，最大支持128个巡航点
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_CRUISEPOINT_V50

巡航路径配置扩展结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_CRUISEPOINT_PARAM    struCruisePoint[MAX_CRUISEPOINT_NUM_V50];
  BYTE                         Res[64];
}NET_DVR_CRUISEPOINT_V50, *LPNET_DVR_CRUISEPOINT_V50;

Members

dwSize
结构体大小
struCruisePoint
巡航路径参数，最大支持256个巡航点
Res
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_CURRENT

相电流参数结构体。

struct{
  int    iPhaseCurrentA;
  int    iPhaseCurrentB;
  int    iPhaseCurrentC;
  int    byRes[4];
}NET_DVR_CURRENT,*LPNET_DVR_CURRENT;

Members

iPhaseCurrentA
A相电流，单位：A
iPhaseCurrentB
B相电流，单位：A
iPhaseCurrentC
C相电流，单位：A
byRes
保留

See Also

NET_DVR_ALARMHOST_UPS_STATE NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE

NET_DVR_ALARMHOST_ELECTRICITY_STATE


NET_DVR_CURRENT_LOCK

电流锁定配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCurrentLock;
  BYTE     byRes[255];
}NET_DVR_CURRENT_LOCK,*LPNET_DVR_CURRENT_LOCK;

Members

dwSize
结构体大小
byCurrentLock
云台垂直电机锁定电流类型：0- 不锁定，1- 全流锁定，2- 3/4流锁定，3- 半流锁定
byRes
保留，置为0

Remarks

  • 设备是否支持电流锁定配置或者支持的参数能力，可以通过设备能力集进行判断，对应电流锁定配置能力集(CurrentLock)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_CURRENT_LOCK_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_CURRICULUM_CFG

课表配置结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_EACH_LESSON_INFO    struLessonInfo[MAX_TIMESEGMENT_V40];
  BYTE                        byRes[256];
 }NET_DVR_CURRICULUM_CFG,*LPNET_DVR_CURRICULUM_CFG;

Members

dwSize
结构体大小
struLessonInfo
每节课信息，每天最多16节课
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_CURTRIGGERMODE

当前触发模式结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTriggerType;
  BYTE     byRes[24];
}NET_DVR_CURTRIGGERMODE,*LPNET_DVR_CURTRIGGERMODE;

Members

dwSize
结构体大小
dwTriggerType
触发类型，详见ITC_TRIGGERMODE_TYPE
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_CUSTOM_PROTOCAL

自定义协议配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwEnabled;
  char     sProtocalName[DESC_LEN];
  BYTE     byRes1[64];
  DWORD    dwEnableSubStream;
  BYTE     byMainProType;
  BYTE     byMainTransType;
  WORD     wMainPort;
  char     sMainPath[MAX_PRO_PATH];
  BYTE     bySubProType;
  BYTE     bySubTransType;
  WORD     wSubPort;
  char     sSubPath[MAX_PRO_PATH];
  BYTE     byRes2[200];
}NET_DVR_CUSTOM_PROTOCAL,*LPNET_DVR_CUSTOM_PROTOCAL;

Members

dwSize
结构体大小
dwENabled
是否启用该协议0 不启用 1 启用
sProtocalName
协议名称
byRes1
保留,用于协议名称扩展
dwEnableSubStream
子码流是否启用0 不启用 1 启用
byMainProType
主码流协议类型 1 RTSP
byMainTransType
主码流传输类型 0：Auto 1：udp 2：rtp over rtsp
wMainPort
主码流端口
sMainPath
主码流路径
bySubProType
子码流协议类型 1 RTSP
bySubTransType
子码流传输类型 0：Auto 1：udp 2：rtp over rtsp
wSubPort
子码流端口
sSubPath
子码流路径
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_CVR_ALARM

CVR外部报警信息结构体。

struct{
  char            szFirstType[NAME_LEN];
  char            szFirstIndex[NAME_LEN];
  char            szSecondType[NAME_LEN];
  NET_DVR_TIME    struTime;
  BYTE            byStatus;
  BYTE            byAlarmLevel;
  BYTE            byRes1[2];
  char            szSecondIndex[NAME_LEN];
  char            szThirdType[NAME_LEN];
  char            szThirdIndex[NAME_LEN];
  char            szFourthType[NAME_LEN];
  char            szFourthIndex[NAME_LEN];
  BYTE            byRes2[92];
}NET_DVR_CVR_ALARM,*LPNET_DVR_CVR_ALARM;

Members

dwSize
结构体大小
szFirstType
主类型，不能为空
szFirstIndex
主类型编号
szSecondType
次类型，可以为空
struTime
报警时间
byStatus
状态（最后一个不为空的报警类型的报警状态）：0- 正常，非0- 不正常，不同类型值表示意义不同
byAlarmLevel
报警级别
byRes1
保留
szSecondIndex
次类型编号，可以为空
szThirdType
第三类型，可以为空
szThirdIndex
第三类型编号
szFourthType
第四类型，可以为空
szFourthIndex
第四类型编号
byRes2
保留

Remarks

  • 以下报警类型一般不作为最后一个为空的类型，没有对应的状态值：
    enclosure、cpu、system、chassis、IC、environment、board、nas
  • 以下报警类型可以作为最后一个不为空的类型，不同的类型对应状态值含义不同(详见下表)：
    power、temp、fan、hda、disk、raid、cifs、ftp、http、rsync、afp、nfs、iscsi、fc、network、pv、storage、memory
    • 报警类型 描述 状态值(byStatus) 报警字符串举例（为空的字段在这里没有出来）
    power 电源报警
    (优3)     		0：标识正常
    2：标识电源异常     		机箱电源报警：
    AlarmLevel[1]Status[2]FirstType[chassis] SecondType[power]
    扩展柜电源报警：
    AlarmLevel[1]Status[2]FirstType[enclosure]FirstIndex[1/1] SecondType[power]
    temp 温度报警
    (优3)     		0：标识正常
    1：标识温度偏高
    2：过高
    3：过低     		一．主机头温度报警：
    CPU温度报警：
    AlarmLevel[1]Status[1]FirstType[cpu] FirstIndex[1]SecondType[temp]
    IC的温度：
    AlarmLevel[1]Status[1] FirstType [IC] FirstIndex [1] ThirdType[temp]
    系统温度报警：
    AlarmLevel[1]Status[1]FirstType[system] SecondType[temp]
    内存温度报警：
    AlarmLevel[1]Status[1]FirstType[memory] FirstIndex[1]SecondType[temp]
    环境温度报警：
    AlarmLevel[1]Status[1]FirstType[environment] FirstIndex[1] SecondType[temp]
    板载温度报警：
    AlarmLevel[1]Status[1]FirstType[board] FirstIndex[1]SecondType[temp]

    二．扩展柜温度报警：
    IC的温度：
    AlarmLevel[1]Status[1]FirstType[enclosure] FirstIndex[1/1] SecondType[IC] SecondIndex[1] ThirdType[temp]
    system的温度：
    AlarmLevel[1]Status[1]FirstType[enclosure] FirstIndex[1/1] SecondType[system] ThirdType[temp] ThirdIndex[1]
    内存温度：
    AlarmLevel[1]Status[1]FirstType[enclosure] FirstIndex[1/1] SecondType[memory] SecondIndex[1] ThirdType[temp]
    扩展柜环境温度：
    AlarmLevel[1]Status[1]FirstType[enclosure] FirstIndex[1/1] SecondType[environment] SecondIndex[1] ThirdType[temp] ThirdIndex[1]
    扩展柜板载温度：
    AlarmLevel[1]Status[1]FirstType[enclosure] FirstIndex[1/1] SecondType[board] SecondIndex[1] ThirdType[temp] ThirdIndex[1]

    三．磁盘温度报警：
    AlarmLevel[1]Status[1]FirstType[disk] FirstIndex[0/0-1] SecondType[temp]
    fan 风扇转速报警
    (优3)     		0：标识正常
    1：标识风扇电源接触不良或已坏
    2：标识风扇转速偏低
    3：转速异常     		CPU风扇报警：
    AlarmLevel[1]Status[1]FirstType[cpu] FirstIndex[1] SecondType[fan]
    机箱风扇报警：
    AlarmLevel[1]Status[2]FirstType[chassis] SecondType[fan] SecondIndex[1]
    扩展柜机箱风扇报警：
    AlarmLevel[1]Status[3]FirstType[enclosure] FirstIndex[1/1] SecondType[chassis] SecondIndex[1] ThirdType[fan] ThirdIndex[3]
    系统风扇报警：
    AlarmLevel[1]Status[1]FirstType[system] FirstIndex[1] SecondType[fan]
    hda DOM卡报警
    (优1)     		0：标识正常
    2：检测DOM卡失败
    （无法得到hda的最大使用容量）
    3：DOM容量不足     		DOM卡报警：
    AlarmLevel[1]Status[1]FirstType[hda]
    disk 磁盘报警
    (优1)     		0：标识正常
    1：标识磁盘丢失
    2：标识磁盘警告
    3：标识磁盘坏盘
    4：标识磁盘断开     		磁盘报警：
    AlarmLevel[1]Status[1]FirstType[disk] FirstIndex[0/0-3]
    raid 磁盘阵列报警(优1) 0：标识正常
    2：标识阵列初始化
    3：标识阵列重构
    4：标识阵列扩展
    5：标识阵列降级
    6：标识阵列检测
    7：标识阵列修复
    8：标识阵列不可用
    3/5/8才会产生报警，其它都是正常情况不报警     		阵列报警：
    AlarmLevel[1]Status[3]FirstType[raid] FirstIndex[阵列名称如：raid5_01]
    cifs NAS报警
    (优2)     		0：标识服务正常；
    1：标识服务异常；
    注释：其中nas为1级类型；
    六种协议为2级类型；
             NAS报警：
    AlarmLevel[1]Status[1]FirstType[nas] SecondType[协议名称]
    协议名称包括：cifs,ftp,http,rsync,afp,nfs
    ftp
    http
    rsync
    afp
    nfs
    iscsi ISCSI报警
    (优2)     		0：标识正常
    1：标识ISCSI异常
    2：标识当前开启的ISCSI服务与配置不一致     		ISCSI报警：
    AlarmLevel[1]Status[1]FirstType[iscsi]
    fc FC报警
    (优2)     		0：标识正常
    1：标识FC异常
    2：标识当前开启的FC服务与配置不一致     		FC报警：
    AlarmLevel[1]Status[1]FirstType[fc]
    network 网络报警
    (优1)     		0：标识正常
    1：标识网口网速为百兆
    2：标识网口未连接
    （绑定网口的子网口断开）
    3：标识网口未连接
    （未绑定为子网口断开，即普通网口）     		网络报警：
    AlarmLevel[1]Status[1]FirstType[network] FirstIndex[网口名称,如：eth0]
    pv 物理卷报警
    (优1)     		0：标识正常
    1：标识物理卷丢失     		物理卷报警：
    AlarmLevel[1]Status[1]FirstType[pv] FirstIndex[物理卷名称,如：tt_01]
    storage 存储池报警
    (优1)     		0：标识正常
    2：标识存储池未挂载
    255：存储池全部丢失     		存储池报警：
    AlarmLevel[1]Status[2]FirstType[storage]
    memory 内存报警
    (优1)     		0：标识正常
    1：标识内存不足     		内存报警：
    AlarmLevel[1]Status[1]FirstType[memory]

    See Also

    NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_CYCLE_TIME

预案循环时间结构体。

struct{
  BYTE               byValid;
  BYTE               byRes[3];
  NET_DVR_TIME_EX    struTime;
}NET_DVR_CYCLE_TIME,*LPNET_DVR_CYCLE_TIME;

Members

byValid
是否有效
byRes
保留，置为0
struTime
时间

See Also

NET_DVR_PLAN_CFG


NET_DVR_DATA_CALLBACK_CFG

数据回迁状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byDelData;
  BYTE     byRes[30];
}NET_DVR_DATA_CALLBACK_CFG,*LPNET_DVR_DATA_CALLBACK_CFG;

Members

dwSize
结构体大小
byEnable
0- 不启用数据回迁，1- 启用数据回迁
byDelData
当byEnable为1是有效：0- 不删除备机录像数据，1- 删除备机录像数据
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DATE

日期信息结构体。

struct{
  WORD    wYear;
  BYTE    byMonth;
  BYTE    byDay;
}NET_DVR_DATE,*LPNET_DVR_DATE;

Members

wYear
年
byMonth
月
byDay
日

See Also

NET_DVR_HOLIDAY_PLAN_CFG NET_DVR_ID_CARD_INFO

NET_DVR_GetDeviceConfig NET_DVR_GetDeviceConfig


NET_DVR_DATE_FORMAT

ATM日期显示格式结构体。

struct{
  BYTE    byMonth;
  BYTE    byDay;
  BYTE    byYear;
  BYTE    byDateForm;
  BYTE    byRes[20];
  char    chSeprator[4];
  char    chDisplaySeprator[4];
  BYTE    byDisplayForm;
  BYTE    res[27];
}NET_DVR_DATE_FORMAT, *LPNET_DVR_DATE_FORMAT;

Members

byMonth
月的格式,0-mm；1-mmm；2-mmmm
byDay
日的格式,0-dd
byYear
年的格式,0-yy；1-yyyy
byDateForm
0~5，3个item的排列组合
byRes
保留
chSeprator
分隔符
chDisplaySeprator
显示分隔符
byDisplayForm
0~5，3个item的排列组合
res
保留

See Also

NET_DVR_ATM_PACKAGE_DATE


NET_DVR_DAY_SCHEDULE

时间段定时计划参数结构体。

struct{
  BYTE                  byWorkMode;
  BYTE                  byRes1[3];
  NET_DVR_SCHEDTIME    struTime[MAX_TIMESEGMENT_V30];
  BYTE                  byRes2[8];
}NET_DVR_DAY_SCHEDULE,*LPNET_DVR_DAY_SCHEDULE;

Members

byWorkMode
工作模式：0- 全天开，1- 全天关，2- 定时
byRes1
保留，置为0
struTime
定时智能跟踪时间段，每天可设8个时间段，byWorkMode为2时有效，在时间范围内定时智能跟踪开启
byRes2
保留，置为0

See Also

NET_DVR_SCHEDULE_AUTO_TRACK_CFG


NET_DVR_DAYNIGHT

日夜转换功能参数结构体。

struct{
  BYTE       byDayNightFilterType;
  BYTE       bySwitchScheduleEnabled;
  BYTE       byBeginTime;
  BYTE       byEndTime;
  BYTE       byDayToNightFilterLevel;
  BYTE       byNightToDayFilterLevel;
  BYTE       byDayNightFilterTime;
  BYTE       byBeginTimeMin;
  BYTE       byBeginTimeSec;
  BYTE       byEndTimeMin;
  BYTE       byEndTimeSec;
  BYTE       byAlarmTrigState;
}NET_DVR_DAYNIGHT, *LPNET_DVR_DAYNIGHT;

Members

byDayNightFilterType
日夜切换：0-白天，1-夜晚，2-自动（光敏电阻模式），3-定时，4-报警输入触发，5-自动模式2（无光敏，即通过视频亮度来判断日夜模式而不是光敏电阻）
bySwitchScheduleEnabled
0- 启动， 1- 禁用。（保留）
byBeginTime
定时模式开始时间（小时），取值范围：0~23
byEndTime
定时模式结束时间（小时），取值范围：0~23
byDayToNightFilterLevel
网络摄像机取值范围：0~7，球机取值范围：1~3
byNightToDayFilterLevel
网络摄像机取值范围：0~7，球机取值范围：1~3
byDayNightFilterTime
60秒
byBeginTimeMin
定时模式开始时间（分），取值范围：0~59
byBeginTimeSec
定时模式开始时间（秒），取值范围：0~59
byEndTimeMin
定时模式结束时间（分），取值范围：0~59
byEndTimeSec
定时模式结束时间（秒），取值范围：0~59
byAlarmTrigState
报警输入触发状态：0-白天，1-夜晚

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_DAYTIME

时间参数结构体。

struct{
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  BYTE    byRes;
  WORD    wMilliSecond;
  BYTE    byRes1[2];
}NET_DVR_DAYTIME, *LPNET_DVR_DAYTIME;

Members

byHour
时，取值范围：0~24
byMinute
分，取值范围：0~60
bySecond
秒，取值范围：0~60
byRes
保留，置为0
wMilliSecond
毫秒，取值范围：0~1000
byRes1
保留，置为0

See Also

NET_DVR_SCHEDULE_DAYTIME NET_DVR_SWITCH_DAY_TIME


NET_DVR_DDE_PARAM

DDE参数结构体。

struct{
  BYTE    byMode;
  BYTE    byNormalLevel;
  BYTE    byExpertLevel;
  BYTE    byRes[5];
}NET_DVR_DDE_PARAM,*LPNET_DVR_DDE_PARAM;

Members

byMode
1- 关闭，2- 普通模式，3- 专家模式
byNormalLevel
普通模式等级，取值范围：[1,100]，普通模式下生效
byExpertLevel
专家模式等级，取值范围：[1,100]，专家模式下生效
byRes
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_DDNS_ADDRESS

设备DDNS域名信息结构体。

struct{
  BYTE    byDevAddress[MAX_DOMAIN_NAME];
  BYTE    byDevDdns[MAX_DOMAIN_NAME];
  BYTE    byDdnsType;
  BYTE    byRes1[3];
  WORD    wDevPort;
  WORD    wDdnsPort;
  BYTE    byres[64];
}NET_DVR_DDNS_ADDRESS, *LPNET_DVR_DDNS_ADDRESS;

Members

byDevAddress
设备域名
byDevDdns
DDNS服务器地址
byDdnsType
域名服务器类型：0- IPServer，1- Dyndns，2- PeanutHull(花生壳)，3- NO-IP，4- hiDDNS
byRes1
保留
wDevPort
设备端口号
wDdnsPort
DDNS服务器端口
byres
保留

See Also

NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX


NET_DVR_DDNS_STREAM_CFG

IP Server+流媒体模式配置结构体。

struct{
  BYTE               byEnable;
  BYTE               byRes1[3];
  NET_DVR_IPADDR     struStreamServer;
  WORD               wStreamServerPort;
  BYTE               byStreamServerTransmitType;
  BYTE               byRes2;
  NET_DVR_IPADDR     struIPServer;
  WORD               wIPServerPort;
  BYTE               byRes3[2];
  BYTE               sDVRName[NAME_LEN];
  WORD               wDVRNameLen;
  WORD               wDVRSerialLen;
  BYTE               sDVRSerialNumber[SERIALNO_LEN];
  BYTE               sUserName[NAME_LEN];
  BYTE               sPassWord[PASSWD_LEN];
  WORD               wDVRPort;
  BYTE               byRes4[2];
  BYTE               byChannel;
  BYTE               byTransProtocol;
  BYTE               byTransMode;
  BYTE               byFactoryType;
}NET_DVR_DDNS_STREAM_CFG, *LPNET_DVR_DDNS_STREAM_CFG;

Members

byEnable
是否启用
byRes1
保留，置为0
struStreamServer
流媒体服务器地址
wStreamServerPort
流媒体服务器端口
byStreamServerTransmitType
流媒体传输协议类型：0- TCP，1- UDP
byRes2
保留，置为0
struIPServer
IPServer 地址
wIPServerPort
IPServer 端口
byRes3
保留，置为0
sDVRName
设备名称
wDVRNameLen
设备名称长度
wDVRSerialLen
序列号长度
sDVRSerialNumber
设备序列号
sUserName
设备登陆用户名
sPassWord
设备登陆密码
wDVRPort
设备端口号
byRes4
保留，置为0
byChannel
设备通道，参数值为通道号，例如byChannel=1表示通道1
byTransProtocol
传输协议类型：0- TCP，1- UDP
byTransMode
传输码流模式：0- 主码流，1- 子码流
byFactoryType
前端设备厂家类型，通过接口NET_DVR_GetIPCProtoList获取

See Also

NET_DVR_GET_STREAM_UNION

NET_DVR_GetIPCProtoList


NET_DVR_DDNSPARA

网络应用参数（DDNS）结构体。

struct{
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  BYTE     sDomainName[64];
  BYTE     byEnableDDNS;
  BYTE     res[15];
}NET_DVR_DDNSPARA,*LPNET_DVR_DDNSPARA;

Members

sUserName
DDNS账号用户名
sPassword
DDNS账号密码
sDomainName
域名
byEnableDDNS
是否使能：0－否，1－是
res
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_DDNSPARA_V30


NET_DVR_DDNSPARA_EX

网络应用参数（DDNS）结构体。

struct{
  BYTE     byHostIndex;
  BYTE     byEnableDDNS;
  WORD     wDDNSPort;
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  BYTE     sDomainName[MAX_DOMAIN_NAME];
  BYTE     sServerName[MAX_DOMAIN_NAME];
  BYTE     byRes[16];
}NET_DVR_DDNSPARA_EX,*LPNET_DVR_DDNSPARA_EX;

Members

byHostIndex
0-Private DNS，1－Dyndns，2－PeanutHull(花生壳)
byEnableDDNS
是否使能：0－否，1－是
wDDNSPort
DDNS端口
sUsername
DDNS账号用户名
sPassword
DDNS账号密码
sDomainName
域名
sServerName
DDNS对应的服务器地址，可以是IP地址或域名
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_DDNSPARA_V30


NET_DVR_DDNSPARA_V30

网络应用参数（DDNS）结构体。

struct{
  BYTE     byEnableDDNS;
  BYTE     byHostIndex;
  BYTE     byRes1[2];
  struct{
      BYTE    sUserName[NAME_LEN];
      BYTE    sPassword[PASSWD_LEN];
      BYTE    sDomainName[MAX_DOMAIN_NAME];
      BYTE    sServerName[MAX_DOMAIN_NAME];
      WORD    wDDNSPort;
      WORD    wCountryID;
      BYTE    byStatus;
      BYTE    byRes[7];
    }struDDNS[MAX_DDNS_NUMS];
  BYTE     byRes2[16];
}NET_DVR_DDNSPARA_V30,*LPNET_DVR_DDNSPARA_V30;

Members

byEnableDDNS
是否使能：0- 否，1- 是
byHostIndex
0- Private DNS，1- Dyndns，2- PeanutHull(花生壳)，3- NO-IP，4- hiDDNS
byRes1
保留，置为0
sUsername
DDNS账号用户名
sPassword
DDNS账号密码
sDomainName
域名
sServerName
DDNS对应的服务器地址，可以是IP地址或域名
wDDNSPort
DDNS端口
wCountryID
国家和地区编号，仅在byHostIndex = 4时有效，0表示默认，具体取值详见“国家和地区编号”
byStatus
DDNS运行状态（只读）：
0- 无意义
1- 连接服务器失败(connServerfail)
2- 解析服务器消息失败(solveServerMesFail)
3- 连接心跳服务器失败(connHeartSrvfail)
4- 解析心跳服务器消息失败(solveHeartSrvMesFail)
5- 连接域名服务器失败(connHostSrvfail)
6- 解析域名服务器消息失败(solveHostSrvMesFail)
7- DDNS状态正常(updateSuccess)
8- 未启用(disable)
9- 注册域名成功(registHostSuccess)
10- DNS服务器配置错误(DNSSrvError)
11- 域名被占用(DomainConflict)
12- 别名(域名)不合法(invalidAlias)
13- 鉴权失败(authenticationFail)
14- 注册服务器错误(registServerError)
15- 注册失败(registFail)
byRes
保留，置为0
byRes2
保留，置为0

Remarks

  • 设备支持的DDNS国家和地区列表，可以通过设备能力集获取，对应设备支持DDNS国家和地区能力集(DDNSCountry)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_DDNS_COUNTRY_ABILITY。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_DDNSPARA_EX


NET_DVR_DEC_DDNS_DEV

动态域名取流配置结构体。

struct{
  NET_DVR_DEV_DDNS_INFO          struDdnsInfo;
  NET_DVR_STREAM_MEDIA_SERVER    struMediaServer;
}NET_DVR_DEC_DDNS_DEV,*LPNET_DVR_DEC_DDNS_DEV;

Members

struDdnsInfo
动态域名参数配置
struMediaServer
流媒体服务器配置参数

See Also

NET_DVR_DEC_STREAM_MODE


NET_DVR_DEC_STREAM_DEV

设备取流配置结构体。

struct{
  NET_DVR_STREAM_MEDIA_SERVER_CFG_V41    struStreamMediaSvrCfg;
  NET_DVR_DEV_CHAN_INFO_V41              struDevChanInfo;
}NET_DVR_DEC_STREAM_DEV,*LPNET_DVR_DEC_STREAM_DEV;

Members

struStreamMediaSvrCfg
流媒体服务器配置参数
struDevChanInfo
设备通道配置参数

See Also

NET_DVR_DEC_STREAM_MODE


NET_DVR_DEC_STREAM_DEV_EX

设备取流配置结构体。

struct{
  NET_DVR_STREAM_MEDIA_SERVER    struStreamMediaSvrCfg;
  NET_DVR_DEV_CHAN_INFO_EX       struDevChanInfo;
}NET_DVR_DEC_STREAM_DEV_EX,*LPNET_DVR_DEC_STREAM_DEV_EX;

Members

struStreamMediaSvrCfg
流媒体服务器配置参数
struDevChanInfo
设备通道配置参数

See Also

NET_DVR_DEC_STREAM_MODE


NET_DVR_DEC_STREAM_MODE

取流模式配置联合体。

union{
  NET_DVR_DEC_STREAM_DEV_EX    struDecStreamDev;
  NET_DVR_PU_STREAM_URL        struUrlInfo;
  NET_DVR_DEC_DDNS_DEV         struDdnsDecInfo;
  BYTE                         byRes[300];
}NET_DVR_DEC_STREAM_MODE,*LPNET_DVR_DEC_STREAM_MODE;

Members

struDecStreamDev
通过IP地址或者域名从设备或者流媒体服务器取流
struUrlInfo
通过URL从设备或者流媒体服务器取流
struDdnsDecInfo
通过动态域名解析向设备取流
byRes
保留，置为0

See Also

NET_DVR_PU_STREAM_CFG_V41 NET_DVR_MATRIX_CHAN_INFO_V41 NET_DVR_MATRIX_DEC_CHAN_INFO_V41


NET_DVR_DEC_VCA_ALARM

智能解码报警信息结构体。

struct{
  DWORD                        dwSize;
  DWORD                        dwDisplayNo;
  BYTE                         bySubWinNo;
  BYTE                         byRes1[3];
  NET_DVR_TIME_V30             struTime;
  NET_DVR_PU_STREAM_CFG_V41    struSourceInfo;
  BYTE                         *byAlarmPic;
  DWORD                        dwAlarmPicSize;
  BYTE                         byRes2[64];
}NET_DVR_DEC_VCA_ALARM,*LPNET_DVR_DEC_VCA_ALARM;

Members

dwSize
结构体大小
dwDisplayNo
产生智能报警的显示通道号
bySubWinNo
产生智能报警的子窗口号
byRes1
保留，置为0
struTime
产生报警时间
struSourceInfo
码流源信息
byAlarmPic
报警图片缓冲区
dwAlarmPicSize
报警图片大小，单位：字节
byRes2
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_DEC_VCA_ALARM_LOGO

智能报警LOGO叠加参数结构体。

struct{
  BYTE     byEnableLogo;
  BYTE     byFlash;
  WORD     wFlashTime;
  DWORD    dwLogoX;
  DWORD    dwLogoY;
  BYTE     byRes[32];
}NET_DVR_DEC_VCA_ALARM_LOGO,*LPNET_DVR_DEC_VCA_ALARM_LOGO;

Members

byEnableLogo
是否叠加智能报警LOGO：0- 不叠加，非0- 叠加
byFlash
是否闪烁：0- 不闪烁，非0- 闪烁
wFlashTime
闪烁时间，单位：秒，取值范围从解码器能力集获取
dwLogoX
LOGO叠加的X坐标，相对于窗口的坐标值，解码窗口总大小为1920*1920
dwLogoY
LOGO叠加的Y坐标，相对于窗口的坐标值，解码窗口总大小为1920*1920
byRes
保留，置为0

See Also

NET_DVR_VCA_ALARM_CFG


NET_DVR_DEC_VCA_ALARM_PIC

智能报警图片参数结构体。

struct{
  BYTE    byUploadPic;
  BYTE    byOverlayTargetInfo;
  BYTE    byOverlayRuleInfo;
  BYTE    byPicQuality;
  BYTE    byPicSize;
  BYTE    byRes[27];
}NET_DVR_DEC_VCA_ALARM_PIC,*LPNET_DVR_DEC_VCA_ALARM_PIC;

Members

byUploadPic
智能报警时是否上传报警图片：0- 不上传，非0- 上传
byOverlayTargetInfo
报警图片是否叠加目标信息：0- 不叠加，非0- 叠加
byOverlayRuleInfo
报警图片是否叠加智能规则信息：0- 不叠加，非0- 叠加
byPicQuality
图片质量系数：0- 最好，1- 较好，2- 一般
byPicSize
图片大小，设备支持的分辨率可以通过能力集获取
0- CIF，1- QCIF，2- D1，3- UXGA(1600x1200)，4- SVGA(800x600)，5- HD720p(1280x720)，6- VGA，7- XVGA，8- HD900p，9- HD1080，10- 2560*1920，11- 1600*304，12- 2048*1536，13- 2448*2048，14- 2448*1200，15- 2448*800，16- XGA(1024*768)，17- SXGA(1280*1024)，18- WD1(960*576/960*480)，19- 1080i，20- 576*576，21- 1536*1536，22- 1920*1920，23- 320*240，24- 720*720，25- 1024*768，26- 1280*1280，27- 1600*600，28- 2048*768，0xff- Auto(使用当前码流分辨率)
byRes
保留，置为0

See Also

NET_DVR_VCA_ALARM_CFG


NET_DVR_DECCFG

解码设备参数结构体。

struct{
  DWORD             dwSize;
  DWORD             dwDecChanNum;
  NET_DVR_DECINFO   struDecInfo[MAX_DECNUM];
}NET_DVR_DECCFG,*LPNET_DVR_DECCFG;

Members

dwSize
结构体大小
dwDecChanNum
解码通道的数量
struDecInfo
解码通道配置参数结构体

See Also

NET_DVR_GetDecInfo NET_DVR_SetDecInfo


NET_DVR_DECCHANINFO

解码通道参数子结构体。

struct{
  char   sDVRIP[16];
  WORD   wDVRPort;
  BYTE   sUserName[NAME_LEN];
  BYTE   sPassword[PASSWD_LEN];
  BYTE   byChannel;
  BYTE   byLinkMode;
  BYTE   byLinkType;
}NET_DVR_DECCHANINFO,*LPNET_DVR_DECCHANINFO;

Members

sDVRIP
设备IP地址
wDVRPort
设备端口号
sUserName
用户名
sPassword
密码
byChannel
通道号
byLinkMode
链接模式
byLinkType
连接类型：0－主码流；1－子码流

See Also

NET_DVR_DECINFO


NET_DVR_DECCHANSTATUS

解码设备连接状态参数子结构体。

struct{
  DWORD   dwWorkType;
  char    sDVRIP[16];
  WORD    wDVRPort;
  BYTE    byChannel;
  BYTE    byLinkMode;
  DWORD   dwLinkType;
  union{
           struct{
           BYTE           sUserName[NAME_LEN];
           BYTE           sPassword[PASSWD_LEN];
           char           cReserve[52];
           }userInfo;
           struct{
           BYTE           fileName[100];
           }fileInfo;
           struct{
           DWORD          dwChannel;
           BYTE           sUserName[NAME_LEN];
           BYTE           sPassword[PASSWD_LEN];
           NET_DVR_TIME   struStartTime;
           NET_DVR_TIME   struStopTime;
           }timeInfo;
  }objectInfo;
}NET_DVR_DECCHANSTATUS,*LPNET_DVR_DECCHANSTATUS;

Members

dwWorkType
工作方式：1-轮巡；2-动态连接解码；3-文件回放下载；4-按时间回放下载
sDVRIP
连接的设备IP地址
wDVRPort
连接端口号
byChannel
通道号
byLinkMode
链接模式
dwLinkType
连接类型 0－主码流 1－子码流
sUserName
请求视频用户名
sPassword
密码
cReserve
保留，置为0
fileName
文件名
dwChannel
通道
sUserName
请求视频用户名
sPassword
密码
struStartTime
按时间回放的开始时间
struStopTime
按时间回放的结束时间

See Also

NET_DVR_DECSTATUS


NET_DVR_DECINFO

解码通道配置的参数结构体。

struct{
  BYTE                  byPoolChans;
  NET_DVR_DECCHANINFO   struchanConInfo[MAX_DECPOOLNUM];
  BYTE                  byEnablePoll;
  BYTE                  byPoolTime;
}NET_DVR_DECINFO,*LPNET_DVR_DECINFO;

Members

byPoolChans
每路解码通道上的循环通道数量，最多4通道，0表示没有解码
struchanConInfo
解码通道的数量
byEnablePoll
是否轮巡：0-否；1-是
byPoolTime
轮巡时间：0-保留；1-10秒；2-15秒；3-20秒；4-30秒；5-45秒；6-1分钟；7-2分钟；8-5分钟

See Also

NET_DVR_DECCFG


NET_DVR_DECODE_CHANNEL_OSD

解码通道OSD信息结构体。

struct{
  DWORD                     dwSize;
  NET_DVR_OSD_INFO          struOSDInfo[MAX_NUM_OSD];
  BYTE                      byRes[32];
}NET_DVR_DECODE_CHANNEL_OSD, *LPNET_DVR_DECODE_CHANNEL_OSD;

Members

dwSize
结构体大小
struOSDInfo
OSD信息列表
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DECODEDEV_INFO

解码子设备信息结构体。

struct{
  BYTE    byRes[1408];
}NET_DVR_DECODEDEV_INFO,*LPNET_DVR_DECODEDEV_INFO;

Members

byRes
保留

See Also

NET_DVR_DIFFDEV_INFO


NET_DVR_DECODER_WORK_STATUS

解码设备状态参数结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_MATRIX_CHAN_STATUS   struDecChanStatus[MAX_DECODECHANNUM];
  NET_DVR_DISP_CHAN_STATUS     struDispChanStatus[MAX_DISPCHANNUM];
  BYTE                         byAlarmInStatus[MAX_ANALOG_ALARMIN];
  BYTE                         byAalarmOutStatus[MAX_ANALOG_ALARMOUT];
  BYTE                         byAudioInChanStatus;
  BYTE                         byRes[127];
}NET_DVR_DECODER_WORK_STATUS,*LPNET_DVR_DECODER_WORK_STATUS;

Members

dwSize
结构体大小
struDecChanStatus
解码通道状态
struDispChanStatus
显示通道状态
byAlarmInStatus
报警输入状态
byAalarmOutStatus
报警输出状态
byAudioInChanStatus
语音对讲状态
byRes
保留，置为0

See Also

NET_DVR_MatrixGetDeviceStatus


NET_DVR_DECODER_WORK_STATUS_V41

解码设备状态参数结构体。

struct{
  DWORD                         dwSize;
  NET_DVR_MATRIX_CHAN_STATUS    struDecChanStatus[MAX_DECODECHANNUM];
  NET_DVR_DISP_CHAN_STATUS_V41  struDispChanStatus[MAX_DISPNUM_V41];
  BYTE                          byAlarmInStatus[MAX_ANALOG_ALARMIN];
  BYTE                          byAalarmOutStatus[MAX_ANALOG_ALARMOUT];
  BYTE                          byAudioInChanStatus;
  BYTE                          byRes[127];
}NET_DVR_DECODER_WORK_STATUS_V41,*LPNET_DVR_DECODER_WORK_STATUS_V41;

Members

dwSize
结构体大小
struDecChanStatus
解码通道状态
struDispChanStatus
显示通道状态
byAlarmInStatus
报警输入状态
byAalarmOutStatus
报警输出状态
byAudioInChanStatus
语音对讲状态
byRes
保留，置为0

See Also

NET_DVR_MatrixGetDeviceStatus_V41


NET_DVR_DECODERCFG

通道解码器（云台）参数结构体。

struct{
  DWORD     dwSize;
  DWORD     dwBaudRate;
  BYTE      byDataBit;
  BYTE      byStopBit;
  BYTE      byParity;
  BYTE      byFlowcontrol;
  WORD      wDecoderType;
  WORD      wDecoderAddress;
  BYTE      bySetPreset[MAX_PRESET];
  BYTE      bySetCruise[MAX_CRUISE];
  BYTE      bySetTrack[MAX_TRACK];
}NET_DVR_DECODERCFG, *LPNET_DVR_DECODERCFG;

Members

dwSize
结构体大小
dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控,2-硬流控
wDecoderType
（抓拍机应用中保留）解码器类型，通过NET_DVR_GetPTZProtocol获取，该值对应于结构NET_DVR_PTZ_PROTOCOL中的dwType。
wDecoderAddress
（抓拍机应用中保留）解码器地址：[0,255]
bySetPreset
（抓拍机应用中保留）预置点是否设置：0-没有设置，1-设置
bySetCruise
（抓拍机应用中保留）巡航是否设置：0-没有设置，1-设置
bySetTrack
（抓拍机应用中保留）花样扫描是否设置：0-没有设置，1-设置

Remarks

在早前的设备中规定了一系列云台协议，但在后期的设备（如DS-90xx、DS-91xx、DS-81xx等）仅保留一部分常用的协议，所以在配置解码器类型时必须调用NET_DVR_GetPTZProtocol获取当前设备支持的云台协议。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetPTZProtocol

NET_DVR_PTZ_PROTOCOL

Reference Structure

扩展结构可见

NET_DVR_DECODERCFG_V30


NET_DVR_DECODERCFG_V30

通道解码器（云台）参数结构体。

struct{
  DWORD     dwSize;
  DWORD     dwBaudRate;
  BYTE      byDataBit;
  BYTE      byStopBit;
  BYTE      byParity;
  BYTE      byFlowcontrol;
  WORD      wDecoderType;
  WORD      wDecoderAddress;
  BYTE      bySetPreset[MAX_PRESET_V30];
  BYTE      bySetCruise[MAX_CRUISE_V30];
  BYTE      bySetTrack[MAX_TRACK_V30];
}NET_DVR_DECODERCFG_V30, *LPNET_DVR_DECODERCFG_V30;

Members

dwSize
结构体大小
dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控,2-硬流控
wDecoderType
解码器类型，通过NET_DVR_GetPTZProtocol获取，该值对应于结构NET_DVR_PTZ_PROTOCOL中的dwType。
wDecoderAddress
解码器地址：[0,255]
bySetPreset
预置点是否设置：0-没有设置，1-设置
bySetCruise
巡航是否设置：0-没有设置，1-设置
bySetTrack
花样扫描是否设置：0-没有设置，1-设置

Remarks

在早前的设备中规定了一系列云台协议，但在后期的设备（如DS-90xx、DS-91xx、DS-81xx等）仅保留一部分常用的协议，所以在配置解码器类型时必须调用NET_DVR_GetPTZProtocol获取当前设备支持的云台协议。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetPTZProtocol

Reference Structure

该结构扩展源于

NET_DVR_DECODERCFG

扩展结构可见

NET_DVR_DECODERCFG_V40


NET_DVR_DECODERCFG_V40

RS485(云台解码器)参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwBaudRate;
  BYTE     byDataBit;
  BYTE     byStopBit;
  BYTE     byParity;
  BYTE     byFlowcontrol;
  WORD     wDecoderType;
  WORD     wDecoderAddress;
  BYTE     bySetPreset[MAX_PRESET_V30];
  BYTE     bySetCruise[MAX_CRUISE_V30];
  BYTE     bySetTrack[MAX_TRACK_V30];
  BYTE     bySerialNO;
  BYTE     byWorkMode;
  BYTE     byRes[254];
}NET_DVR_DECODERCFG_V40, *LPNET_DVR_DECODERCFG_V40;

Members

dwSize
结构体大小
dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控,2-硬流控
wDecoderType
解码器类型，通过NET_DVR_GetPTZProtocol获取，该值对应于结构NET_DVR_PTZ_PROTOCOL中的dwType。
wDecoderAddress
解码器地址：[0,255]
bySetPreset
预置点是否设置：0-没有设置，1-设置
bySetCruise
巡航是否设置：0-没有设置，1-设置
bySetTrack
花样扫描是否设置：0-没有设置，1-设置
bySerialNO
串口编号，从1开始
byWorkMode
工作模式：1- 矩阵串口控制，2- 屏幕控制，3- 透明通道模式，4- PPP模式，5- 控制台模式，6- 串口直连，7- 键盘控制，8- 监控板管理，9- 控制云台，12- LED显示，13- 触发抓拍数据传输
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_DECODERCFG_V30


NET_DVR_DECSTATUS

解码设备连接状态的参数结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_DECCHANSTATUS   struDecState[MAX_DECNUM];
}NET_DVR_DECSTATUS,*LPNET_DVR_DECSTATUS;

Members

dwSize
结构体大小
struDecState
解码通道配置参数结构体

See Also

NET_DVR_GetDecCurLinkStatus


NET_DVR_DEFAULT_VIDEO_COND

图像效果参数默认查询条件结构体。

struct{
  DWORD     dwSize;
  DWORD     dwChannel;
  DWORD     dwVideoMode;
  BYTE      byRes[32];
}NET_DVR_DEFAULT_VIDEO_COND,*LPNET_DVR_DEFAULT_VIDEO_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwVideoMode
模式：0- 标准，1- 室内，2- 室外，3- 弱光，255- 自定义
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_DEFOCUS_ALARM

虚焦报警信息结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  WORD                wDevInfoIvmsChannelEx;
  BYTE                byRes1[2];
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  BYTE                                   byTimeDiffFlag;
  signed char                       cTimeDifferenceH;
  signed char                      cTimeDifferenceM;
  BYTE               byRes[49];
}NET_DVR_DEFOCUS_ALARM,*LPNET_DVR_DEFOCUS_ALARM;

Members

dwSize
结构体大小
struDevInfo
报警设备信息
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byRes1
保留字节
dwRelativeTime
相对时标
dwAbsTime
绝对时标
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留字节

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_DEFOG_LCD

去雾参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDefogEnable;
  BYTE     byDefogModel;
  BYTE     byDefogLevel;
  BYTE     byRes[33];
}NET_DVR_DEFOG_LCD,*LPNET_DVR_DEFOG_LCD;

Members

dwSize
结构体大小
byDefogEnable
开启去雾开关：0-关闭，1-开启
byDefogModel
去雾模式：0-自动去雾，1-手动去雾
byDefogLevel
去雾强度等级，1~7个等级，默认等级为4。等级1为0.5，等级2为0.55，等级3为0.60，等级4为0.65，等级5为0.70，等级6为0.75，等级7为0.80（去雾模式为手动去雾时，可配置去雾强度等级）
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_DEFOGCFG

透雾参数结构体。

struct{
  BYTE    byMode;
  BYTE    byLevel;
  BYTE    byRes[6];
}NET_DVR_DEFOGCFG, *LPNET_DVR_DEFOGCFG;

Members

byMode
透雾模式：0-不启用，1-自动模式，2-常开模式
byLevel
透雾等级，取值范围：0~100
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_DEL_FACE_PARAM_MODE

人脸参数删除条件参数联合体。

union{
  BYTE                           uLen[588];
  NET_DVR_FACE_PARAM_BYCARD      struByCard;
  NET_DVR_FACE_PARAM_BYREADER    struByReader;
}NET_DVR_DEL_FACE_PARAM_MODE,*LPNET_DVR_DEL_FACE_PARAM_MODE;

Members

uLen
联合体长度，588字节
struByCard
按卡号删除方式对应的条件参数
struByReader
按读卡器删除方式对应的条件参数

See Also

NET_DVR_FACE_PARAM_CTRL


NET_DVR_DEL_FINGER_PRINT_MODE

指纹删除处理方式联合体。

union{
  BYTE                             uLen[588];
  NET_DVR_FINGER_PRINT_BYCARD      struByCard;
  NET_DVR_FINGER_PRINT_BYREADER    struByReader;
}NET_DVR_DEL_FINGER_PRINT_MODE,*LPNET_DVR_DEL_FINGER_PRINT_MODE;

Members

uLen
联合体大小，588字节
struByCard
按卡号方式删除的处理方式
struByReader
按读卡器删除时的处理方式

See Also

NET_DVR_FINGER_PRINT_INFO_CTRL


NET_DVR_DEL_FINGER_PRINT_MODE_V50

删除指纹模式联合体。

 union{
  BYTE                              uLen[588];
  NET_DVR_FINGER_PRINT_BYCARD_V50   struByCard;
  NET_DVR_FINGER_PRINT_BYREADER_V50 struByReader;
}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG;

Members

uLen
联合体长度
struByCard
按卡号(人员ID)的方式删除
struByReader
按读卡器的方式删除

See Also

NET_DVR_FINGER_PRINT_INFO_CTRL_V50


NET_DVR_DEL_LABEL_PARAM

要删除的标签信息结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byMode;
  BYTE                        byRes1;
  WORD                        wLabelNum;
  NET_DVR_LABEL_IDENTIFY      struIndentify[MAX_DEL_LABEL_IDENTIFY];
  BYTE                        byRes2[160];
}NET_DVR_DEL_LABEL_PARAM,*LPNET_DVR_DEL_LABEL_PARAM;

Members

dwSize
结构体大小
byMode
按位表示，0x01表示按标识删除
byRes1
保留
wLabelNum
标签数目
struIndentify
标签标识
byRes2
保留

See Also

NET_DVR_DelRecordLabel


NET_DVR_DEL_MONITOR_COND

区域监控点删除条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byDelType;
  DWORD    dwAreaID;
  DWORD    dwMonitorID;
  BYTE     byRes[64];
}NET_DVR_DEL_MONITOR_COND,*LPNET_DVR_DEL_MONITOR_COND;

Members

dwSize
结构体大小
byDelType
删除类型：0- 删除指定区域的所有监控点，1- 删除指定区域的指定监控点
dwAreaID
区域ID
dwMonitorID
监控点ID（当byDelType为0时无效，当byDelType为1时有效），从1开始
byRes
保留，置为0

See Also

NET_DVR_STDControl


NET_DVR_DEL_PARAM

N+1模式设备删除参数结构体。

struct{
  NET_DVR_IPADDR    struIP;
  BYTE              byDelType;
}NET_DVR_DEL_PARAM, *LPNET_DVR_DEL_PARAM;

Members

struIP
设备IP地址
byDelType
0- 删除指定的机器（备机或工作机），1- 全删

See Also

NET_DVR_NPO_PARAM_UNION


NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG

删除手动录像回传任务参数结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwTaskID;
  NET_DVR_STREAM_INFO    struStreamInfo;
  BYTE                   byRes[131];
}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG;

Members

dwSize
结构体大小
dwTaskID
手动回传任务ID，NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND(删除条件)中byDelType(删除方式)为“1- 根据流ID删除任务”时有效
struStreamInfo
流ID信息（72字节），NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND(删除条件)中byDelType(删除方式)为“1- 根据流ID删除任务”时有效
byRes
保留，置为0

Remarks

  • 设备是否支持删除手动录像回传任务或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<RecordPassBackManulTaskDel>。

See Also

NET_DVR_SetDeviceConfig


NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND

删除手动录像回传任务条件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDelType;
  BYTE     byRes[131];
}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND;

Members

dwSize
结构体大小
byDelType
删除方式：0- 根据任务ID删除，1- 根据流ID删除任务，2- 删除全部任务
byRes
保留，置为0

Remarks

  • 设备是否支持删除手动录像回传任务或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<RecordPassBackManulTaskDel>。

See Also

NET_DVR_SetDeviceConfig


NET_DVR_DELAY_TIME

延时开机参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDelayTime;
  BYTE     byRes[32];
}NET_DVR_DELAY_TIME,*LPNET_DVR_DELAY_TIME;

Members

dwSize
结构体大小
dwDelayTime
延时时间，取值范围：0~3000，单位：ms
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DESC_NODE

能力节点描述参数结构体。

struct{
  int      iValue;
  BYTE     byDescribe[DESC_LEN_32];
  DWORD    dwFreeSpace;
  BYTE     byRes[12];
}NET_DVR_DESC_NODE,*LPNET_DVR_DESC_NODE;

Members

iValue
-1表示能力可以是一项可以变范围的自定义值
byDescribe
描述字段
dwFreeSpace
磁盘剩余空间，单位兆（磁盘列表专用）
byRes
保留，置为0

Remarks

NET_DVR_DESC_NODE结构中的参数iValue表示磁盘的索引值，参数byDescribe表示磁盘的描述字，参数dwFreeSpace表示磁盘的剩余空间。

 如：dwNodeNum = 5

        DISK1
        {
        iValue = 0,
        byDescribe = “硬盘1”,
        }
        DISK2
        {
        iValue = 1,
        byDescribe = “硬盘2”,
        }
        DISK3
        {
        iValue = 2,
        byDescribe = “ESATA”,
        }
        DISK4
        {
        iValue = 3,
        byDescribe = “USB1”,
        }
        DISK5
        {
        iValue = 4,
        byDescribe = “DoubleDisk”,
        }
        DISK6
        {
        iValue = 5,
        byDescribe = “SataDisk1”,
        }
        DISK7
        {
        iValue = 6,
        byDescribe = “SataDisk2”,
        }

See Also

NET_DVR_ABILITY_LIST NET_DVR_DISKABILITY_LIST


NET_DVR_DETECT_FACE

人脸侦测配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnableDetectFace;
  BYTE                           byDetectSensitive;
  BYTE                           byEnableDisplay;
  BYTE                           byRes;
  NET_DVR_HANDLEEXCEPTION_V40    struAlarmHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V30];
  BYTE                           byRes1[64];
}NET_DVR_DETECT_FACE,*LPNET_DVR_DETECT_FACE;

Members

dwSize
结构体大小
byEnableDetectFace
是否启用人脸侦测：0- 不启用，1- 启用
byDetectSensitive
灵敏度，取值范围：1~10 或 1~5
byEnableDisplay
是否启用移动侦测高亮显示：0- 否，1- 是
byRes
保留
struAlarmHandleType
人脸侦测报警处理方式
struAlarmTime
布防时间
dwMaxRelRecordChanNum
触发的录像通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
dwRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]。
byRes
保留

Remarks

  • 人脸侦测功能的参数取值范围具体可以通过能力集获取：NET_DVR_GetDeviceAbility（能力集类型：DEVICE_ABILITY_INFO，报警事件处理能力EventAbility，节点：<FaceDetection>）。
  • 当dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_DEV_ACCESS_CFG

设备通道信息结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struIP;
  WORD              wDevicePort;
  BYTE              byEnable;
  BYTE              byRes1;
  BYTE              sUserName[NAME_LEN];
  BYTE              sPassword[PASSWD_LEN];
  BYTE              byRes2[60];
}NET_DVR_DEV_ACCESS_CFG, *LPNET_DVR_DEV_ACCESS_CFG;

Members

dwSize
结构体大小
struIP
接入设备的IP地址
wDevicePort
端口号
byEnable
是否启用：0- 否，1- 是
byRes1
保留
sUserName
接入设备的登录帐号
sPassword
接入设备的登录密码
byRes2
保留

Remarks

首先登录人脸抓拍服务器，通过该配置将抓拍服务器接入检索服务器(接入设备即是人脸检索服务器)，之后再登录检索服务器，通过接口NET_DVR_SetDVRConfig（命令：NET_DVR_SET_IPPARACFG_V40）将抓拍服务器的通道添加到检索分析服务器。这样，抓拍服务器抓拍结果将上传到检索服务器的抓拍数据库里。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DEV_BASE_INFO

注册设备信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byDeviceType;
  BYTE     byRes1[2];
  BYTE     sDevName[NAME_LEN];
  BYTE     byRes2[24];
}NET_DVR_DEV_BASE_INFO,*LPNET_DVR_DEV_BASE_INFO;

Members

dwSize
结构体大小
byEnable
是否在系统中使用：0- 否，1- 是
byDeviceType
设备类型（只能获取）
byRes1
保留
sDevName
设备名称
byRes2
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_DEV_CHAN_INFO

前端设备信息结构体。

struct{
  NET_DVR_IPADDR   struIP;
  WORD             wDVRPort;
  BYTE             byChannel;
  BYTE             byTransProtocol;
  BYTE             byTransMode;
  BYTE             byFactoryType;
  BYTE             byDeviceType;
  BYTE             byDispChan;
  BYTE             bySubDispChan;
  BYTE             byResolution;
  BYTE             byRes[2];
  BYTE             byDomain[MAX_DOMAIN_NAME];
  BYTE             sUserName[NAME_LEN];
  BYTE             sPassword[PASSWD_LEN];
}NET_DVR_DEV_CHAN_INFO,*LPNET_DVR_DEV_CHAN_INFO;

Members

struIP
设备IP地址
wDVRPort
设备端口号
byChannel
通道号,目前设备的模拟通道号是从1开始的，对于9000等设备的IPC接入，数字通道号从33开始
byTransProtocol
传输协议类型：0-TCP，1-UDP，2-多播方式，3-RTP
byTransMode
传输码流模式：0－主码流，1－子码流
byFactoryType
前端设备厂家类型， 通过接口NET_DVR_GetIPCProtoList获取
byDeviceType
设备类型(视频综合平台使用)：1- IPC，2- ENCODER
byDispChan
显示通道号（智能配置使用），根据能力集决定使用解码通道还是显示通道
bySubDispChan
显示通道子通道号（智能配置时使用）
byResolution
分辨率：1- CIF，2- 4CIF，3- 720P，4- 1080P，5- 500W
byRes
保留，置为0
byDomain
设备域名
sUserName
设备登陆帐号
sPassword
设备密码

See Also

NET_DVR_MATRIX_CHAN_INFO_V30 NET_DVR_MATRIX_DEC_CHAN_INFO_V30

NET_DVR_PU_STREAM_CFG

NET_DVR_GetIPCProtoList


NET_DVR_DEV_CHAN_INFO_EX

前端设备信息结构体。

struct{
  BYTE     byChanType;
  BYTE     byStreamId[STREAM_ID_LEN];
  BYTE     byRes1[3];
  DWORD    dwChannel;
  BYTE     byRes2[24];
  BYTE     byAddress[MAX_DOMAIN_NAME];
  WORD     wDVRPort;
  BYTE     byChannel;
  BYTE     byTransProtocol;
  BYTE     byTransMode;
  BYTE     byFactoryType;
  BYTE     byDeviceType;
  BYTE     byDispChan;
  BYTE     bySubDispChan;
  BYTE     byResolution;
  BYTE     byRes[2];
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
}NET_DVR_DEV_CHAN_INFO_EX,*LPNET_DVR_DEV_CHAN_INFO_EX;

Members

byChanType
通道类型：0-普通通道，1-零通道，2-流ID，3-本地输入源
byStreamId
流ID，通道类型 byChanType 为 2 时有效
byRes1
保留
dwChannel
通道号，通道类型 byChanType为 0、1、3 时有效（如果通道类型为本地输入源，该参数值表示本地输入源索引）
byRes2
保留
byAddress
设备IP地址或者域名
wDVRPort
设备端口号
byChannel
该参数无效，通道号见dwChannel
byTransProtocol
传输协议类型：0-TCP，1-UDP
byTransMode
传输码流模式：0－主码流，1－子码流
byFactoryType
前端设备厂家类型， 通过接口NET_DVR_GetIPCProtoList获取
byDeviceType
设备类型(视频综合平台使用)：1- IPC，2- ENCODER
byDispChan
显示通道号（智能配置使用），根据能力集决定使用解码通道还是显示通道
bySubDispChan
显示通道子通道号（智能配置时使用）
byResolution
分辨率：1- CIF，2- 4CIF，3- 720P，4- 1080P，5- 500W
byRes
保留，置为0
sUserName
设备登陆帐号
sPassword
设备密码

See Also

NET_DVR_DEC_STREAM_DEV_EX


NET_DVR_DEV_CHAN_INFO_V41

前端设备信息结构体。

struct{
  BYTE    byAddress[MAX_DOMAIN_NAME];
  WORD    wDVRPort;
  BYTE    byChannel;
  BYTE    byTransProtocol;
  BYTE    byTransMode;
  BYTE    byFactoryType;
  BYTE    byDeviceType;
  BYTE    byDispChan;
  BYTE    bySubDispChan;
  BYTE    byResolution;
  BYTE    byRes[2];
  BYTE    sUserName[NAME_LEN];
  BYTE    sPassword[PASSWD_LEN];
}NET_DVR_DEV_CHAN_INFO_V41,*LPNET_DVR_DEV_CHAN_INFO_V41;

Members

byAddress
设备IP地址或者域名
wDVRPort
设备端口号
byChannel
通道号,目前设备的模拟通道号是从1开始的，对于9000等设备的IPC接入，数字通道号从33开始
byTransProtocol
传输协议类型：0-TCP，1-UDP
byTransMode
传输码流模式：0－主码流，1－子码流
byFactoryType
前端设备厂家类型， 通过接口NET_DVR_GetIPCProtoList获取
byDeviceType
设备类型(视频综合平台使用)：1- IPC，2- ENCODER
byDispChan
显示通道号（智能配置使用），根据能力集决定使用解码通道还是显示通道
bySubDispChan
显示通道子通道号（智能配置时使用）
byResolution
分辨率：1- CIF，2- 4CIF，3- 720P，4- 1080P，5- 500W
byRes
保留，置为0
sUserName
设备登陆帐号
sPassword
设备密码

See Also

NET_DVR_DEC_STREAM_DEV


NET_DVR_DEV_DDNS_INFO

动态域名参数配置结构体。

struct{
  BYTE     byDevAddress[MAX_DOMAIN_NAME];
  BYTE     byTransProtocol;
  BYTE     byTransMode;
  BYTE     byDdnsType;
  BYTE     byRes1;
  BYTE     byDdnsAddress[MAX_DOMAIN_NAME];
  WORD     wDdnsPort;
  BYTE     byChanType;
  BYTE     byFactoryType;
  DWORD    dwChannel;
  BYTE     byStreamId[STREAM_ID_LEN];
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  WORD     wDevPort;
  BYTE     byRes2[2];
}NET_DVR_DEV_DDNS_INFO,*LPNET_DVR_DEV_DDNS_INFO;

Members

byDevAddress
设备域名(IPServer或hiDDNS时可填设备序列号或者别名)
byTransProtocol
传输协议类型：0- TCP，1- UDP，2- 多播
byTransMode
传输码流模式：0- 主码流，1- 子码流
byDdnsType
域名服务器类型：0- IPServer，1- Dyndns，2- PeanutHull(花生壳)，3- NO-IP，4- hiDDNS
byRes1
保留
byDdnsAddress
DDNS服务器地址
wDdnsPort
DDNS服务器端口号
byChanType
通道类型：0-普通通道，1-零通道，2-流ID
byFactoryType
前端设备厂家类型， 通过接口NET_DVR_GetIPCProtoList获取
dwChannel
设备通道号
byStreamId
流ID
sUserName
设备登陆帐号
sPassword
设备密码
wDevPort
设备端口号
byRes2
保留

See Also

NET_DVR_DEC_DDNS_DEV


NET_DVR_DEV_IP_INFO

屏幕IP信息结构体。

union{
  BYTE              byUserName[NAME_LEN];
  BYTE              byPassWord[PASSWD_LEN];
  NET_DVR_IPADDR    struIPAddr;
  WORD              wPort;
  BYTE              byRes[100];
}NET_DVR_DEV_IP_INFO,*LPNET_DVR_DEV_IP_INFO;

Members

byUserName
用户名
byPassWord
密码
struIPAddr
IP地址
wPort
设备端口号
byRes
保留，置为0

See Also

NET_DVR_SCREEN_BASE_INFO


NET_DVR_DEV_STORAGE_CFG

设备存储信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwCapacityTotal;
  DWORD    dwFreeSpaceTotal;
  DWORD    dwLockedRecordSpace;
  DWORD    dwUnLockedSpace;
  BYTE     byRes[512];
}NET_DVR_DEV_STORAGE_CFG, *LPNET_DVR_DEV_STORAGE_CFG;

Members

dwSize
结构体大小
dwCapacityTotal
设备存储(CVR表示录像卷)总容量(只读)，单位：MB
dwFreeSpaceTotal
设备存储(CVR表示录像卷)剩余总空间(只读)，单位：MB
dwLockedRecordSpace
设备已加锁录像存储(CVR表示录像卷)总容量(只读)，单位：MB
dwUnLockedSpace
设备未加锁存储(CVR表示录像卷)总容量(只读),包含未加锁录像和剩余存储空间，单位：MB
byRes
保留，置为0

Remarks

  • 设备是否支持设备存储信息查询或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<DeviceStorageStatus>。

See Also

NET_DVR_GetDVRConfig


NET_DVR_DEV_WORK_MODE

设备工作模式结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode;
  BYTE     byDisplayMode;
  BYTE     byEnableVcaDec;
  BYTE     byRes[61];
}NET_DVR_DEV_WORK_MODE,*LPNET_DVR_DEV_WORK_MODE;

Members

dwSize
结构体大小
byWorkMode
工作模式：1- 通道模式，2- 流ID模式，3- GB28281模式
byDisplayMode
是否启用畅显功能：0- 普通，1- 畅显
byEnableVcaDec
是否启用智能解码：0- 不启用，非0- 启用
byRes
保留，置为0

Remarks

  • 设备支持三种工作模式：1- 通道模式、2- 流ID模式、3- GB28281模式，切换需要重启设备，设备默认为流ID模式。

  • 当设备工作在通道模式时，只能通过通道方式配置相关参数和取流。其应用如下图所示：

  • 当设备工作在流ID模式时，只能通过流ID方式配置相关参数和取流。如果使用通道模式，前端个数过多，每次预览不同的前端都需要重新进行配置，而使用流ID模式可以很好的解决这个问题，其应用如下图所示：

  • GB28181模式即设备支持GB/T28181协议接入，详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》。当设备工作在GB28181模式时，前端设备接入和GB28181相关参数配置通过IE界面实现。其应用如下图所示：
  • 设备是否支持设备工作模式能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<DeviceWorkMode>。
  • 设备是否支持畅显功能或智能解码能力，可以通过设备能力集进行判断，对应解码器能力集(DecoderAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DECODER_ABILITY，节点：<DeviceDisplayMode>、<VcaDec>。

See Also

转码设备：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

解码器：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DEVICE_NET_USING_INFO

设备网络状态结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPreview;
  DWORD    dwPlayback;
  DWORD    dwIPCModule;
  DWORD    dwNetDiskRW;
  BYTE     byRes[32];
}NET_DVR_DEVICE_NET_USING_INFO,*LPNET_DVR_DEVICE_NET_USING_INFO;

Members

dwSize
结构体大小
dwPreview
预览，单位：kbitps
dwPlayback
回放，单位：kbitps
dwIPCModule
IPC接入，单位：kbitps
dwNetDiskRW
网盘读写，单位：kbitps
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_DEVICE_PROTO_LIST

485前端设备支持协议列表。

struct{
  DWORD                 dwSize;
  DWORD                 dwProtoNum;
  NET_DVR_PROTO_TYPE    struProtoType[MAX_DEVICE_PROTO_NUM];
  BYTE                  byRes[12];
}NET_DVR_DEVICE_PROTO_LIST,*LPNET_DVR_DEVICE_PROTO_LIST;

Members

dwSize
结构体大小
dwTypeNum
协议个数
struDeviceType
协议类型
byRes
保留

See Also

NET_DVR_GetDeviceProtoList


NET_DVR_DEVICE_RUN_STATUS

设备运行状态信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwMemoryTotal;
  DWORD    dwMemoryUsage;
  BYTE     byCPUUsage;
  BYTE     byMainFrameTemp;
  BYTE     byBackPanelTemp;
  BYTE     byRes1;
  BYTE     byLeftDecResource[32];
  float    fNetworkFlow;
  BYTE     byRes[88];
}NET_DVR_DEVICE_RUN_STATUS,*LPNET_DVR_DEVICE_RUN_STATUS;

Members

dwSize
结构体大小
dwMemoryTotal
内存总量，单位：Kbyte
dwMemoryUsage
内存使用量，单位：Kbyte
byCPUUsage
CPU使用率：0~100
byMainFrameTemp
机箱温度，单位：摄氏度
byBackPanelTemp
背板温度，单位：摄氏度
byRes1
保留
byLeftDecResource
各解码板剩余解码资源，以解D1分辨率资源为单位，byLeftDecResource[i]表示槽位号i解码板剩余资源，0xff表示无效（非解码板或没插板子）
fNetworkFlow
网络流量，单位：KB/s，保留小数点后两位
byRes
保留

See Also

NET_DVR_GetDeviceStatus


NET_DVR_DEVICE_SELF_CHECK_STATE

报警主机设备自检状态结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRS485Chan[MAX_CHECK_485CHAN];
  DWORD    dwSensorChan[4];
  BYTE     byRes[32];
}NET_DVR_DEVICE_SELF_CHECK_STATE, *LPNET_DVR_DEVICE_SELF_CHECK_STATE;

Members

dwSize
结构体大小
dwRS485Chan
RS485通断情况有问题的通道号，数组值表示RS485通道号，位表示槽位号，例如：
(dwRS485Chan[0]>>0)&0x01，值为1表示RS485通道01中槽位01异常，值为0表示正常；
(dwRS485Chan[0]>>1)&0x01，值为1表示RS485通道01中槽位02异常，值为0表示正常；
……
(dwRS485Chan[i]>>j)&0x01，值为1表示RS485通道(i+1)中槽位(j+1)异常，值为0表示正常；
……
dwSensorChan
模拟量无效的通道号，按位表示，每个数组表示32个通道，例如：
(dwSensorChan[0]>>0)&0x01表示模拟量通道01无效，
(dwSensorChan[0]>>1)&0x01表示模拟量通道02无效，
……
(dwSensorChan[1]>>0)&0x01表示模拟量通道33无效，
(dwSensorChan[1]>>1)&0x01表示模拟量通道34无效，
……
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_DEVICE_TYPE

485设备类型结构体。

struct{
  DWORD    dwType;
  BYTE     byDescribe[DESC_LEN];
}NET_DVR_DEVICE_TYPE,*LPNET_DVR_DEVICE_TYPE;

Members

dwType
485设备类型值
byDescribe
485设备类型描述

See Also

NET_DVR_DEVICE_TYPE_LIST


NET_DVR_DEVICE_TYPE_LIST

485前端设备类型列表结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwTypeNum;
  NET_DVR_DEVICE_TYPE    struDeviceType[MAX_DEVICE_TYPE_NUM];
  BYTE                   byRes[12];
}NET_DVR_DEVICE_TYPE_LIST,*LPNET_DVR_DEVICE_TYPE_LIST;

Members

dwSize
结构体大小
dwTypeNum
类型个数
struDeviceType
设备类型
byRes
保留

See Also

NET_DVR_GetDeviceTypeList


NET_DVR_DEVICECFG

设备参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sDVRName[NAME_LEN];
  DWORD    dwDVRID;
  DWORD    dwRecycleRecord;
  BYTE     sSerialNumber[SERIALNO_LEN];
  DWORD    dwSoftwareVersion;
  DWORD    dwSoftwareBuildDate;
  DWORD    dwDSPSoftwareVersion;
  DWORD    dwDSPSoftwareBuildDate;
  DWORD    dwPanelVersion;
  DWORD    dwHardwareVersion;
  BYTE     byAlarmInPortNum;
  BYTE     byAlarmOutPortNum;
  BYTE     byRS232Num;
  BYTE     byRS485Num;
  BYTE     byNetworkPortNum;
  BYTE     byDiskCtrlNum;
  BYTE     byDiskNum;
  BYTE     byDVRType;
  BYTE     byChanNum;
  BYTE     byStartChan;
  BYTE     byDecordChans;
  BYTE     byVGANum;
  BYTE     byUSBNum;
  BYTE     byAuxoutNum;
  BYTE     byAudioNum;
  BYTE     byIPChanNum;
}NET_DVR_DEVICECFG,*LPNET_DVR_DEVICECFG;

Members

dwSize
结构体大小
sDVRName
设备名称
dwDVRID
设备ID号
dwRecycleRecord
是否循环录像：0－不是；1－是

以下参数不可更改

sSerialNumber
设备序列号
dwSoftwareVersion
软件版本号，V3.0以上版本支持的设备最高8位为主版本号，次高8位为次版本号，低16位为修复版本号；V3.0以下版本支持的设备高16位表示主版本，低16位表示次版本
dwSoftwareBuildDate
软件生成日期，0xYYYYMMDD
dwDSPSoftwareVersion
DSP软件版本，高16位是主版本，低16位是次版本
dwDSPSoftwareBuildDate
DSP软件生成日期，0xYYYYMMDD
dwPanelVersion
前面板版本，高16位是主版本，低16位是次版本
dwHardwareVersion
硬件版本，高16位是主版本，低16位是次版本
byAlarmInPortNum
设备报警输入个数
byAlarmOutPortNum
设备报警输出个数
byRS232Num
设备232串口个数
byRS485Num
设备485串口个数
byNetworkPortNum
网络口个数
byDiskCtrlNum
硬盘控制器个数
byDiskNum
硬盘个数
byDVRType
设备类型，详见下表
宏定义 | 宏定义值 | 设备类型
DVR | 1 | 尚未定义的DVR类型
ATMDVR | 2 | ATM DVR
DVS | 3 | DVS
DEC | 4 | 6001D
ENC_DEC | 5 | 6001F
DVR_HC | 6 | 8000HC
DVR_HT | 7 | 8000HT
DVR_HF | 8 | 8000HF
DVR_HS | 9 | 8000HS DVR(no audio)
DVR_HTS | 10 | 8016HTS DVR(no audio)
DVR_HB | 11 | HB DVR(SATA HD)
DVR_HCS | 12 | 8000HCS DVR
DVS_A | 13 | 带ATA硬盘的DVS
DVR_HC_S | 14 | 8000HC-S
DVR_HT_S | 15 | 8000HT-S
DVR_HF_S | 16 | 8000HF-S
DVR_HS_S | 17 | 8000HS-S
ATMDVR_S | 18 | ATM-S
DVR_7000H | 19 | 7000H系列
DEC_MAT | 20 | 多路解码器
DVR_MOBILE | 21 | mobile DVR
DVR_HD_S | 22 | 8000HD-S
DVR_HD_SL | 23 | 8000HD-SL
DVR_HC_SL | 24 | 8000HC-SL
DVR_HS_ST | 25 | 8000HS_ST
DVS_HW | 26 | 6000HW
DS630X_D | 27 | 多路解码器
IPCAM | 30 | IP 摄像机
MEGA_IPCAM | 31 | X52MF系列摄像机
IPCAM_X62MF | 32 | X62MF系列摄像机
ITCCAM | 35 | 智能交通摄像机
IPDOME | 40 | IP标清快球
IPDOME_MEGA200 | 41 | IP 200万高清快球
IPDOME_MEGA130 | 42 | IP 130万高清快球
IPMOD | 50 | IP 模块
IDS6101_HF_A | 61 | 智能ATM
IDS6002_HF_B | 62 | 双摄像机跟踪：DS6002-HF/B
IDS6101_HF_B | 63 | 异常行为识别：DS6101-HF/B
IDS52XX | 64 | 智能分析仪
IDS90XX | 65 | 9000智能
IDS8104_AHL_S_HX | 66 | 海鑫人脸抓拍 ATM
IDS91XX | 68 | 9100智能
IIP_CAM_B | 69 | 智能行为IP摄像机
DS71XX_H | 71 | DS71XXH_S
DS72XX_H_S | 72 | DS72XXH_S
DS73XX_H_S | 73 | DS73XXH_S
DS76XX_H_S | 76 | DS76XX_H_S
DS76XX_N_S | 77 | DS76XX_N_S
DS81XX_HS_S | 81 | DS81XX_HS_S
DS81XX_HL_S | 82 | DS81XX_HL_S
DS81XX_HC_S | 83 | DS81XX_HC_S
DS81XX_HD_S | 84 | DS81XX_HD_S
DS81XX_HE_S | 85 | DS81XX_HE_S
DS81XX_HF_S | 86 | DS81XX_HF_S
DS81XX_AH_S | 87 | DS81XX_AH_S
DS81XX_AHF_S | 88 | DS81XX_AHF_S
DS90XX_HF_S | 90 | DS90XX_HF_S
DS91XX_HF_S | 91 | DS91XX_HF_S
DS91XX_HD_S | 92 | 91XXHD-S(MD)
DS95XX_N_S | 95 | DS95XXN-S NVR
DS96XX_N_SH | 96 | DS96XXN-SH NVR
DS_65XXHC | 105 | 65XXHC DVS
DS_65XXHC_S | 106 | 65XXHC-SATA DVS
DS_65XXHF | 107 | 65XXHF DVS
DS_65XXHF_S | 108 | 65XXHF-SATA DVS
IVMS-6400 | 110 | 客流量统计设备
DS_66XXDVS | 120 | DS_66XXDVS
byChanNum
设备模拟通道个数
byStartChan
起始通道号
byDecordChans
设备解码路数
byVGANum
VGA口的个数
byUSBNum
USB口的个数
byAuxoutNum
辅口的个数
byAudioNum
语音口的个数
byIPChanNum
最大数字通道

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_DEVICECFG_V40


NET_DVR_DEVICECFG_V40

设备参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sDVRName[NAME_LEN];
  DWORD    dwDVRID;
  DWORD    dwRecycleRecord;
  BYTE     sSerialNumber[SERIALNO_LEN];
  DWORD    dwSoftwareVersion;
  DWORD    dwSoftwareBuildDate;
  DWORD    dwDSPSoftwareVersion;
  DWORD    dwDSPSoftwareBuildDate;
  DWORD    dwPanelVersion;
  DWORD    dwHardwareVersion;
  BYTE     byAlarmInPortNum;
  BYTE     byAlarmOutPortNum;
  BYTE     byRS232Num;
  BYTE     byRS485Num;
  BYTE     byNetworkPortNum;
  BYTE     byDiskCtrlNum;
  BYTE     byDiskNum;
  BYTE     byDVRType;
  BYTE     byChanNum;
  BYTE     byStartChan;
  BYTE     byDecordChans;
  BYTE     byVGANum;
  BYTE     byUSBNum;
  BYTE     byAuxoutNum;
  BYTE     byAudioNum;
  BYTE     byIPChanNum;
  BYTE     byZeroChanNum;
  BYTE     bySupport;
  BYTE     byEsataUseage;
  BYTE     byIPCPlug;
  BYTE     byStorageMode;
  BYTE     bySupport1;
  WORD     wDevType;
  BYTE     byDevTypeName[DEV_TYPE_NAME_LEN];
  BYTE     bySupport2;
  BYTE     byAnalogAlarmInPortNum;
  BYTE     byStartAlarmInNo;
  BYTE     byStartAlarmOutNo;
  BYTE     byStartIPAlarmInNo;
  BYTE     byStartIPAlarmOutNo;
  BYTE     byHighIPChanNum;
  BYTE     byEnableRemotePowerOn;
  WORD     wDevClass;
  BYTE     byRes2[6];
}NET_DVR_DEVICECFG_V40,*LPNET_DVR_DEVICECFG_V40;

Members

dwSize
结构体大小
sDVRName
设备名称
dwDVRID
设备ID号，用于遥控器，v1.4的设备号范围为(0~99), v1.5及以上版本的设备号为(1~255)
dwRecycleRecord
是否循环录像：0－不是，1－是
sSerialNumber
（只读，不可修改）设备序列号
dwSoftwareVersion
（只读，不可修改）软件版本号：
V3.0以上版本支持的设备最高8位为主版本号，次高8位为次版本号，低16位为修复版本号，例如：0x05050000表示V5.5.0；
V3.0以下版本支持的设备高16位表示主版本，低16位表示次版本
dwSoftwareBuildDate
（只读，不可修改）软件生成日期，高16位表示年份（需要加2000），次8位表示月份，最后8位表示日期，例如：0x0011090e表示build20170914
dwDSPSoftwareVersion
（只读，不可修改）DSP软件版本，高16位是主版本，低16位是次版本
dwDSPSoftwareBuildDate
（只读，不可修改）DSP软件生成日期，高16位表示年份（需要加2000），次8位表示月份，最后8位表示日期
dwPanelVersion
（只读，不可修改）前面板版本，高16位是主版本，低16位是次版本
dwHardwareVersion
（只读，不可修改）硬件版本，高16位是主版本，低16位是次版本
byAlarmInPortNum
（只读，不可修改）设备模拟报警输入个数
byAlarmOutPortNum
（只读，不可修改）设备模拟报警输出个数
byRS232Num
（只读，不可修改）设备232串口个数
byRS485Num
（只读，不可修改）设备485串口个数
byNetworkPortNum
（只读，不可修改）网络口个数
byDiskCtrlNum
（只读，不可修改）硬盘控制器个数
byDiskNum
（只读，不可修改）硬盘个数
byDVRType
（只读，不可修改）设备类型，详见下文列表
byChanNum
（只读，不可修改）设备模拟通道个数
byStartChan
（只读，不可修改）模拟通道的起始通道号
byDecordChans
（只读，不可修改）设备解码路数
byVGANum
（只读，不可修改）VGA口的个数
byUSBNum
（只读，不可修改）USB口的个数
byAuxoutNum
（只读，不可修改）辅口的个数
byAudioNum
（只读，不可修改）语音口的个数
byIPChanNum
（只读，不可修改）最大数字通道低8位，高8位见byHighIPChanNum
byZeroChanNum
（只读，不可修改）零通道编码个数
bySupport
（只读，不可修改）能力，位与结果为0表示不支持，1表示支持
bySupport & 0x1，表示是否支持智能搜索
bySupport & 0x2，表示是否支持备份
bySupport & 0x4，表示是否支持压缩参数能力获取
bySupport & 0x8，表示是否支持双网卡
bySupport & 0x10，表示支持远程SADP
bySupport & 0x20，表示支持Raid卡功能
bySupport & 0x40，表示支持IPSAN搜索
bySupport & 0x80，表示支持rtp over rtsp
byEsataUseage
Esata的默认用途，0-默认备份，1-默认录像
byIPCPlug
0-关闭即插即用，1-打开即插即用
byStorageMode
存储模式：0-盘组模式，1-磁盘配额，2-抽帧模式， 3-自动
bySupport1
（只读，不可修改）能力集扩充，位与结果：0表示不支持，1表示支持
bySupport1 & 0x1, 表示是否支持snmp v30
bySupport1 & 0x2, 支持区分回放和下载
wDevType
（只读，不可修改）设备型号，见下文列表
byDevTypeName
（只读，不可修改）设备型号名称
bySupport2
（只读，不可修改）能力集扩充，位与结果：0表示不支持，1表示支持
bySupport2 & 0x1, 表示是否支持是否支持扩展的OSD字符叠加(终端和抓拍机扩展区分)
byAnalogAlarmInPortNum
（只读，不可修改）模拟报警输入个数
byStartAlarmInNo
（只读，不可修改）模拟报警输入起始号
byStartAlarmOutNo
（只读，不可修改）模拟报警输出起始号
byStartIPAlarmInNo
（只读，不可修改）IP报警输入起始号，0表示参数无效
byStartIPAlarmOutNo
（只读，不可修改）IP报警输出起始号，0表示参数无效
byHighIPChanNum
（只读，不可修改）最大数字通道高8位，低8位见byIPChanNum
byEnableRemotePowerOn
是否启用在设备休眠的状态下远程开机功能：0- 不启用，1- 启用
wDevClass
设备大类，判断设备是属于哪个产品线：0-保留，1~50表示DVR，51~100表示DVS，101~150表示NVR，151~200表示IPC，65534表示其他类型
byRes2
保留，置为0

Remarks

  • byStorageMode的三种存储模式互斥，三者选一：如果设置了盘组模式，可以进行盘组配置（NET_DVR_HDGROUP_CFG）； 如果设置了配额模式，可以进行磁盘配额配置（NET_DVR_DISK_QUOTA_CFG）；如果设置了抽帧模式，可以进行抽帧通道磁盘配额配置（NET_DVR_DRAWFRAME_DISK_QUOTA_CFG）。
  • 如果byDVRType是0，则接口中解析wDevType作为设备型号，设备端同时将设备型号的名称传过来。 如果byDVRType不是0，则接口中将不解析wDevType及byDevTypeName，使用已有的设备型号及名称对byDVRType、wDevType、byDevTypeName进行填充，其中byDVRType=wDevType。 建议开发时使用wDevType、byDevTypeName，而不要使用byDVRType，sdk内部兼容。

    • byDVRType和wDevType取值定义如下所示：

    宏定义 | 宏定义值 | 设备类型
DVR | 1 | 尚未定义的DVR类型
ATMDVR | 2 | ATM DVR
DVS | 3 | DVS
DEC | 4 | 6001D
ENC_DEC | 5 | 6001F
DVR_HC | 6 | 8000HC
DVR_HT | 7 | 8000HT
DVR_HF | 8 | 8000HF
DVR_HS | 9 | 8000HS DVR(no audio)
DVR_HTS | 10 | 8016HTS DVR(no audio)
DVR_HB | 11 | HB DVR(SATA HD)
DVR_HCS | 12 | 8000HCS DVR
DVS_A | 13 | 带ATA硬盘的DVS
DVR_HC_S | 14 | 8000HC-S
DVR_HT_S | 15 | 8000HT-S
DVR_HF_S | 16 | 8000HF-S
DVR_HS_S | 17 | 8000HS-S
ATMDVR_S | 18 | ATM-S
DVR_7000H | 19 | 7000H系列
DEC_MAT | 20 | 多路解码器
DVR_MOBILE | 21 | mobile DVR
DVR_HD_S | 22 | 8000HD-S
DVR_HD_SL | 23 | 8000HD-SL
DVR_HC_SL | 24 | 8000HC-SL
DVR_HS_ST | 25 | 8000HS_ST
DVS_HW | 26 | 6000HW
DS630X_D | 27 | 多路解码器
DS640X_HD | 28 | 640X高清解码器
DS610X_D | 29 | 610X解码器
IPCAM | 30 | 网络摄像机
MEGA_IPCAM | 31 | 高清网络摄像机
IPCAM_X62MF | 32 | X62MF系列摄像机
ITCCAM | 35 | 智能交通摄像机
IVS_IPCAM | 36 | 智能分析高清网络摄像机(人脸抓拍机)
ZOOMCAM | 38 | 一体机
IPDOME | 40 | IP标清快球
IPDOME_MEGA200 | 41 | IP 200万高清快球
IPDOME_MEGA130 | 42 | IP 130万高清快球
TII_IPCAM | 44 | 红外热成像摄像机
IPMOD | 50 | IP 模块
TRAFFIC_YTDOME | 51 | 交通智能云台（不带雷达测速）
TRAFFIC_RDDOME | 52 | 交通智能云台（带雷达测速）
IDS6501_HF_P | 60 | 6501 车牌识别
IDS6101_HF_A | 61 | 智能ATM
IDS6002_HF_B | 62 | 双摄像机跟踪：DS6002-HF/B
IDS6101_HF_B | 63 | 异常行为识别：DS6101-HF/B
IDS52XX | 64 | 智能分析仪
IDS90XX | 65 | 9000智能
IDS8104_AHL_S_HX | 66 | 海鑫人脸抓拍 ATM
IDS8104_AHL_S_H | 67 | 私有人脸抓拍 ATM
IDS91XX | 68 | 9100智能
IIP_CAM_B | 69 | 智能行为IP摄像机
IIP_CAM_F | 70 | 智能人脸IP摄像机
DS71XX_H | 71 | DS71XXH_S
DS72XX_H_S | 72 | DS72XXH_S
DS73XX_H_S | 73 | DS73XXH_S
DS72XX_HF_S | 74 | DS72XX_HF_S
DS73XX_HFI_S | 75 | DS73XX_HFI_S
DS76XX_H_S | 76 | DS76XX_H_S
DS76XX_N_S | 77 | DS76XX_N_S
DS_TP3200_EC | 78 | 机柜智能检测仪
DS81XX_HS_S | 81 | DS81XX_HS_S
DS81XX_HL_S | 82 | DS81XX_HL_S
DS81XX_HC_S | 83 | DS81XX_HC_S
DS81XX_HD_S | 84 | DS81XX_HD_S
DS81XX_HE_S | 85 | DS81XX_HE_S
DS81XX_HF_S | 86 | DS81XX_HF_S
DS81XX_AH_S | 87 | DS81XX_AH_S
DS81XX_AHF_S | 88 | DS81XX_AHF_S
DS90XX_HF_S | 90 | DS90XX_HF_S
DS91XX_HF_S | 91 | DS91XX_HF_S
DS91XX_HD_S | 92 | 91XXHD-S(MD)
IDS90XX_A | 93 | 9000智能 ATM
IDS91XX_A | 94 | 9100智能 ATM
DS95XX_N_S | 95 | DS95XXN-S NVR
DS96XX_N_SH | 96 | DS96XXN-SH NVR
DS90XX_HF_SH | 97 | DS90XX_HF_SH
DS91XX_HF_SH | 98 | DS91XX_HF_SH
DS_65XXHC | 105 | 65XXHC DVS
DS_65XXHC_S | 106 | 65XXHC-SATA DVS
DS_65XXHF | 107 | 65XXHF DVS
DS_65XXHF_S | 108 | 65XXHF-SATA DVS
DS_6500HF_B | 109 | 65 rack DVS
IVMS_6200_C | 110 | iVMS-6200(/C) 客流量统计
IVMS_6200_B | 111 | IVMS_6200_B 异常行为识别
DS_72XXHV_ST15 | 112 | 72XXHV_ST15 DVR
DS_72XXHV_ST20 | 113 | 72XXHV_ST20 DVR
IVMS_6200_T | 114 | IVMS-6200(/T)
IVMS_6200_BP | 115 | IVMS-6200(/BP)
DS_81XXHC_ST | 116 | DS_81XXHC_ST
DS_81XXHS_ST | 117 | DS_81XXHS_ST
DS_81XXAH_ST | 118 | DS_81XXAH_ST
DS_81XXAHF_ST | 119 | DS_81XXAHF_ST
DS_66XXDVS | 120 | DS_66XXDVS
DS_19AXX | 142 | 通用报警主机类产品
DS_19CXX | 144 | 自助银行报警主机
DS_19DXX | 145 | 动环监控报警主机
DS_19XX | 146 | 1900系列报警主机
DS_19SXX | 147 | 视频报警主机
DS_1HXX | 148 | ATM防护舱控制器
DS_PEAXX | 149 | 紧急求助报警产品
DS_19DXX_S | 152 | 视频动环监控主机
DS_C10H | 161 | 多屏控制器
DS_C10N_BI | 162 | BNC处理器
DS_C10N_DI | 163 | RGB处理器
DS_C10N_SI | 164 | 码流处理器
DS_C10N_DO | 165 | 显示处理器
DS_C10N_SERVER | 166 | 分布式服务器
IDS_8104_AHFL_S_H | 171 | 8104ATM
IDS_65XX_HF_A | 172 | 65 ATM
IDS90XX_HF_RH | 173 | 9000 智能RH
IDS91XX_HF_RH | 174 | 9100 智能RH设备
IDS_65XX_HF_B | 175 | 65 异常行为识别
IDS_65XX_HF_P | 176 | 65 车牌识别
IVMS_6200_F | 177 | IVMS-6200(/F)人脸分析仪
IVMS_6200_F_S | 179 | IVMS-6200(/F_S)人脸后检索分析仪
DS90XX_HF_RH | 181 | DS90XX_HF_RH
DS91XX_HF_RH | 182 | 9100 RH设备
DS78XX_S | 183 | 78系列设备
DS81XXHW_S | 185 | DVR_81XXHW_S
DS81XXHW_ST | 186 | DVR_81XXHW_ST
DS91XXHW_ST | 187 | DVR_91XXHW_ST
DS91XX_ST | 188 | DVR_91XX_ST
DS81XX_ST | 189 | DVR_81XX_ST
DS81XXH_ST | 190 | DS81XXHDI_ST,DS81XXHE_ST
DS73XXH_ST | 191 | DS73XXHI_ST
DS81XX_SH | 192 | 审讯81SH，81SHF
DS81XX_SN | 193 | 审讯81SNL
DS96XXN_ST | 194 | NVR：DS96xxN_ST
DS86XXN_ST | 195 | NVR：DS86xxN_ST
DS80XXHF_ST | 196 | DS80xxHF_ST
DS90XXHF_ST | 197 | DS90xxHF_ST
DS76XXN_ST | 198 | NVR：DS76xxN_ST
DS_9664N_RX | 199 | NVR：DS-9664N-RH、DS-9664N-RT
ENCODER_SERVER | 200 | 编码卡服务器
DECODER_SERVER | 201 | 解码卡服务器
PCNVR_SERVER | 202 | PCNVR存储服务器
CVR_SERVER | 203 | CVR
DS_91XXHFH_ST | 204 | 高清DVR：DS_91xxHFH_ST
DS_66XXHFH | 205 | 66高清编码器
TRAFFIC_TS_SERVER | 210 | 终端服务器
TRAFFIC_VAR | 211 | 视频分析记录仪
IPCALL | 212 | IP可视对讲主机
DS64XXHD_T | 701 | 64-T高清解码器
DS_65XXD | 703 | 65万能解码器
DS63XXD_T | 704 | 63-T标清解码器
DS_64XXHD_S | 706 | DS-64xxHD-S高清解码器
DS_68XXT | 707 | 多功能视音频转码器
DS_65XXD_T | 708 | 65D-T万能解码器
DS_D20XX | 750 | LCD屏幕解码卡
DS_C50S | 751 | SDI矩阵
DS_D50XX | 752 | LCD屏幕解码卡
DS_65VMXX | 770 | 视频会议服务器
DS_65VTXX | 771 | 视频会议终端
DS_65VTA | 772 | 视频会议一体式终端
DS_K260X | 850 | 门禁主机
DS_K1T201X | 851 | 指纹一体机
DS_K280X | 852 | 经济型门禁主机
DS_K1T80X | 854 | 经济型门禁一体机
RAC_6X00 | 856 | 汉军指纹门禁一体机
DS_K2602_AX | 857 | 人员通道主机
DS_K1T803F | 858 | 经济型指纹门禁产品
DS_K2700 | 859 | 分布式三层架构门禁主机
DS_K270X | 860 | 分布式三层架构就地控制器
DS_K1T500S | 861 | 视屏门禁一体机
DS_K1A801F | 862 | 经济型指纹门禁产品
DS_K1T600X | 863 | 人脸抓拍门禁一体机
DS_K22X | 864 | 梯控主控制器
DS_K2M0016AX | 865 | 梯控分控制器
DS_K1201X | 866 | 项目型指纹读卡器
DS_K560XX | 870 | 立式/台式智能身份识别终端
DS_6800M | 900 | 68M合码器
DS_68NTH | 901 | 信息发布主机
DS_D60S | 902 | 信息发布服务器
DS_D10 | 931 | 背投显示设备
DS_3K0X_NM | 951 | 光纤收发器
DS_3E2328 | 952 | 百兆交换机
SCREEN_LINK_SERVER | 971 | 屏幕服务器
DS_D51OPSXX | 972 | OPS电脑盒
IP_PTSYS_MEGA200 | 1001 | IP 200万一体化云台
IPCAM_FISHEYE | 1002 | 鱼眼摄像机
IPCAM_BINOCULAR | 1004 | 双目摄像机
TRAFFIC_ECT | 1400 | 出入口终端服务器
TRAFFIC_PARKING_SERVER | 1401 | 停车场服务器
TRAFFIC_TME | 1402 | TME出入口控制机
DS90XXHW_ST | 2001 | 混合DVR：DS90XXHW_ST
DS72XXHX_SH | 2002 | DS-72xxHV-SH，DS-72xxHF-SH
DS_92XX_HF_ST | 2003 | DS-92XXHF-ST
DS_91XX_HF_XT | 2004 | Netra DVR: DS-91xxHF-XT
DS_90XX_HF_XT | 2005 | Netra 混合DVR: DS-90xxHF-XT
DS_73XXHX_SH | 2006 | Netra DVR: DS-73xxHX-SH
DS_72XXHFH_ST | 2007 | Netra DVR: DS-72xxHFH-ST
DS_67XXHF_SATA | 2008 | DVS: DS-67xxHF-SATA
DS_67XXHW | 2009 | DVS: DS-67xxHW
DS_67XXHW_SATA | 2010 | DVS: DS-67xxHW-SATA
DS_67XXHF | 2011 | DVS: DS-67xxHF
DS_72XXHF_SV | 2012 | DVR: DS-72xxHF-SV
DS_72XXHW_SV | 2013 | DVR: DS-72xxHW-SV
DS_81XXHX_SH | 2014 | DVR: DS-81xxHX-SH
DS_71XXHX_SL | 2015 | DVR: DS-71xxHX-SL
DS_76XXH_ST | 2016 | DVR: DS-76xxH-ST
DS_73XXHFH_ST | 2017 | DVR: DS-73xxHFH-ST
DS_81XXHFH_ST | 2018 | DVR: DS-81xxHFH-ST
DS_72XXHFH_SL | 2019 | DVR: DS-72xxHFH-SL
DS_FDXXCGA_FLT | 2020 | 2盘位ATM
IDS_91XX_HF_ST_A | 2100 | iDS-9100HF-ST/A
IDS_91XX_HF_ST_B | 2101 | iDS-9100HF-ST/B
IDS_90XX_HF_ST_A | 2102 | iDS-9000HF-ST/A
IDS_90XX_HF_ST_B | 2103 | iDS-9000HF-ST/B
IDS_81XX_HF_ST_A | 2104 | iDS-8100HF-ST/A
IDS_81XX_HF_ST_B | 2105 | iDS-8100HF-ST/B
IDS_80XX_HF_ST_A | 2106 | iDS-8000HF-ST/A
IDS_80XX_HF_ST_B | 2107 | iDS-8000HF-ST/B
IDS_8104_AHFL_ST | 2108 | 智能混合ATM机
IDS_2CD6812F_C | 2109 | 垂直双目相机
DS_77XXN_ST | 2201 | Netra NVR: DS-77xxN-ST
DS_95XX_N_ST | 2202 | Netra NVR: DS-95xxN-ST
DS_85XX_N_ST | 2203 | Netra NVR: DS-85xxN-ST
DS_96XX_N_XT | 2204 | Netra NVR: DS-96xxN-XT
DS_76XX_N_SE | 2205 | Netra NVR: DS-76xxN-SE、DS-78xxN-SH
DS_86XXSN_SX | 2206 | Netra 审讯NVR，包括4种类型：DS-8608SNL-SP、DS-8608SNL-ST、DS-8608SN-SP、DS-8608SN-ST，L表示带LCD，P表POE
DS_96XX_N_RX | 2207 | Netra NVR: DS-96xxN-RX
DS_96XXX_N_E | 2213 | 高新性能NVR(256路)
DS_76XXN_EX | 2214 | 76/78N-EX(/N/P)系列NVR，包括4/8/16路的E1一盘位设备和8/16/32路的E2两盘位设备
DS_77XXN_E4 | 2215 | 77N-E4(/N/P)系列NVR，包括8/16/32路设备
DS_86XXN_E8 | 2216 | 86N-E8(/N/P)系列NVR，包括8/16/32路设备
DS_81XXTHFH_E | 2217 | DS-8116THFH-E4庭审主机
DS_72XXHXH_SH_21 | 2220 | XVR: 72HGH-SH系列4路
DS_72XXHXH_SH_31 | 2221 | XVR: 72HGH-SH系列8路16路、72HQH-SH系列
DS_73XXHXH_SH_31 | 2222 | XVR: 73HGH-SH系列、73HQH-SH系列
DS_81XXHXH_SH_31 | 2223 | XVR: 81HGH-SH系列、81HQH-SH系列
DS_NBXX_N_E1_X | 2226 | 便携式主机
DS_96XXN_FX | 2230 | 96N-Fx系列NVR，包括8/16/32路设备
DS_86XXN_FX | 2231 | 86N-Fx系列NVR，包括8/16/32路设备
DS_96XXXN_HX | 2232 | 96xxxN-Hx系列NVR
DS_96XXXN_IX | 2237 | DS-96xxxN-I系列NVR（DS-96128N-I16、DS-96128N-I24、DS-96256N-I16、DS-96256N-I24）
PCNVR_IVMS_4200 | 2301 | iVMS-4200的存储服务器
IVMS_6200_TP | 2401 | IVMS-6200 交通诱导分析仪
IVMS_6200_TF | 2402 | IVMS-6200 交通取证分析仪
IVMS_6200_D | 2403 | iVMS-6200(/D)
IDS_81XXAHW_ST | 2405 | iDS-81xxAHW-ST
IDS_81XXAHW_SP | 2406 | iDS-81xxAHW-SP
IDS_81XXAHWL_ST | 2407 | iDS-81xxAHWL-ST
IDS_81XXAHWL_SP | 2408 | iDS-81xxAHWL-SP
IDS_9616N_H8 | 2409 | iDS_9616N_H8
IVMS_6200_SMD | 2500 | IVMS_6200_SMD
DS_81XXAHW_ST | 2501 | 81HW-ST混合ATM DVR
DS_81XXAHW_SP | 2502 | 81HW-SP混合ATM DVR
DS_81XXAHWL_ST | 2503 | 81AHWL-ST混合ATM DVR
DS_81XXAHWL_SP | 2504 | 81AHWL-SP混合ATM DVR
DS_81XXAHGH_E4 | 2601 | TVI ATM机
DS_81XX_SHXL_K4 | 6101 | KY2017平台审讯机DS-8104SHFH（L）-K4/4P
DS_8116THFHL_F4 | 6201 | 标准庭审主机DS-8116THFHL-F4
DS_81XXAHQ_E4 | 6301 | DS_81XXAHQ_E4(TVI ATM)
IDS_81XXAHQ_E4 | 6302 | IDS_81XXAHQ_E4(智能TVI ATM)
IDS_96XX_NX_S | 7502 | 超脑智能NVR(人体识别)
IDS_96XX_NX_V | 7503 | 超脑加油站NVR
IDS_96XX_NX_FA | 7504 | 人脸超脑智能NVR
iDS_PT | 8451 | 全景细节相机
DS_IEXX_E_J | 11501 | 监所智能服务器
IDS_67XX_NX_L | 12502 | 67系列录播NVS产品
IDS_ENIXX_XHE | 12503 | 录播NVS行业专业产品

    See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

    Reference Structure

    该结构扩展源于

    NET_DVR_DEVICECFG


NET_DVR_DEVICEID_INFO

设备ID信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDeviceIndex;
  BYTE     byWallNo;
  BYTE     byRes1[27];
  DWORD    dwChan;
  DWORD    dwInputSignalIndex;
  BYTE     byRes2[60];
}NET_DVR_DEVICEID_INFO,*LPNET_DVR_DEVICEID_INFO;

Members

dwSize
结构体大小
dwDeviceIndex
设备序号
byWallNo
墙号，从1开始
byRes1
保留
dwChan
通道号，BNC处理器：1~16，RGB处理器为1，转码处理器：1~4
dwInputSignalIndex
信号源索引，集中式多屏控制器使用
byRes2
保留

Remarks

在V4.2.1.5及以后版本的SDK中，该结构体将原先的sDeviceID[32]改为了dwDeviceIndex+byRes1[28]，使得集中式多屏控制V2.0中的解码板网络参数配置有兼容性问题，请升级多屏控制器到V2.1或者以后版本。

调用NET_DVR_AddNetSignal添加网络信号源时，NET_DVR_DEVICEID_INFO中的dwInputSignalIndex表示添加的信号源的索引，其他参数都无效。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig

NET_DVR_AddNetSignal


NET_DVR_DEVICEINFO

设备参数结构体。

struct{
  BYTE     sSerialNumber[SERIALNO_LEN];
  BYTE     byAlarmInPortNum;
  BYTE     byAlarmOutPortNum;
  BYTE     byDiskNum;
  BYTE     byDVRType;
  BYTE     byChanNum;
  BYTE     byStartChan;
}NET_DVR_DEVICEINFO,*LPNET_DVR_DEVICEINFO;

Members

sSerialNumber
序列号
byAlarmInPortNum
模拟报警输入个数
byAlarmOutPortNum
模拟报警输出个数
byDiskNum
硬盘个数
byDVRType
设备类型，详见下表
宏定义 | 宏定义值 | 设备类型
DVR | 1 | 尚未定义的DVR类型
ATMDVR | 2 | ATM DVR
DVS | 3 | DVS
DEC | 4 | 6001D
ENC_DEC | 5 | 6001F
DVR_HC | 6 | 8000HC
DVR_HT | 7 | 8000HT
DVR_HF | 8 | 8000HF
DVR_HS | 9 | 8000HS DVR(no audio)
DVR_HTS | 10 | 8016HTS DVR(no audio)
DVR_HB | 11 | HB DVR(SATA HD)
DVR_HCS | 12 | 8000HCS DVR
DVS_A | 13 | 带ATA硬盘的DVS
DVR_HC_S | 14 | 8000HC-S
DVR_HT_S | 15 | 8000HT-S
DVR_HF_S | 16 | 8000HF-S
DVR_HS_S | 17 | 8000HS-S
ATMDVR_S | 18 | ATM-S
DVR_7000H | 19 | 7000H系列
DEC_MAT | 20 | 多路解码器
DVR_MOBILE | 21 | mobile DVR
DVR_HD_S | 22 | 8000HD-S
DVR_HD_SL | 23 | 8000HD-SL
DVR_HC_SL | 24 | 8000HC-SL
DVR_HS_ST | 25 | 8000HS_ST
DVS_HW | 26 | 6000HW
DS630X_D | 27 | 多路解码器
IPCAM | 30 | IP 摄像机
MEGA_IPCAM | 31 | X52MF系列摄像机
IPCAM_X62MF | 32 | X62MF系列摄像机
ITCCAM | 35 | 智能交通摄像机
IPDOME | 40 | IP标清快球
IPDOME_MEGA200 | 41 | IP 200万高清快球
IPDOME_MEGA130 | 42 | IP 130万高清快球
IPMOD | 50 | IP 模块
IDS6101_HF_A | 61 | 智能ATM
IDS6002_HF_B | 62 | 双摄像机跟踪：DS6002-HF/B
IDS6101_HF_B | 63 | 异常行为识别：DS6101-HF/B
IDS52XX | 64 | 智能分析仪
IDS90XX | 65 | 9000智能
IDS8104_AHL_S_HX | 66 | 海鑫人脸抓拍 ATM
IDS91XX | 68 | 9100智能
IIP_CAM_B | 69 | 智能行为IP摄像机
DS71XX_H | 71 | DS71XXH_S
DS72XX_H_S | 72 | DS72XXH_S
DS73XX_H_S | 73 | DS73XXH_S
DS72XX_HF_S | 74 | DS72XXHF_S
DS76XX_H_S | 76 | DS76XX_H_S
DS76XX_N_S | 77 | DS76XX_N_S
DS81XX_HS_S | 81 | DS81XX_HS_S
DS81XX_HL_S | 82 | DS81XX_HL_S
DS81XX_HC_S | 83 | DS81XX_HC_S
DS81XX_HD_S | 84 | DS81XX_HD_S
DS81XX_HE_S | 85 | DS81XX_HE_S
DS81XX_HF_S | 86 | DS81XX_HF_S
DS81XX_AH_S | 87 | DS81XX_AH_S
DS81XX_AHF_S | 88 | DS81XX_AHF_S
DS90XX_HF_S | 90 | DS90XX_HF_S
DS91XX_HF_S | 91 | DS91XX_HF_S
DS91XX_HD_S | 92 | 91XXHD-S(MD)
DS95XX_N_S | 95 | DS95XXN-S NVR
DS96XX_N_SH | 96 | DS96XXN-SH NVR
DS90XX_HF_SH | 97 | DS90XX_HF_SH
DS91XX_HF_SH | 98 | DS91XX_HF_SH
DS_65XXHC | 105 | 65XXHC DVS
DS_65XXHC_S | 106 | 65XXHC-SATA DVS
DS_65XXHF | 107 | 65XXHF DVS
DS_65XXHF_S | 108 | 65XXHF-SATA DVS
IVMS-6400 | 110 | 客流量统计设备
IVMS_6200_B | 111 | iVMS-6200(/B)
DS_72XXHV_ST15 | 112 | 72XXHV_ST15 DVR
DS_72XXHV_ST20 | 113 | 72XXHV_ST20 DVR
DS_66XXDVS | 120 | DS_66XXDVS
byChanNum
设备模拟通道个数
byStartChan
起始通道号，目前设备通道号从1开始

See Also

NET_DVR_Login


NET_DVR_DEVICEINFO_V30

设备参数结构体。

struct{
  BYTE     sSerialNumber[SERIALNO_LEN];
  BYTE     byAlarmInPortNum;
  BYTE     byAlarmOutPortNum;
  BYTE     byDiskNum;
  BYTE     byDVRType;
  BYTE     byChanNum;
  BYTE     byStartChan;
  BYTE     byAudioChanNum;
  BYTE     byIPChanNum;
  BYTE     byZeroChanNum;
  BYTE     byMainProto;
  BYTE     bySubProto;
  BYTE     bySupport;
  BYTE     bySupport1;
  BYTE     bySupport2;
  WORD     wDevType;
  BYTE     bySupport3;
  BYTE     byMultiStreamProto;
  BYTE     byStartDChan;
  BYTE     byStartDTalkChan;
  BYTE     byHighDChanNum;
  BYTE     bySupport4;
  BYTE     byLanguageType;
  BYTE     byVoiceInChanNum;
  BYTE     byStartVoiceInChanNo;
  BYTE     byRes3[2];
  BYTE     byMirrorChanNum;
  WORD     wStartMirrorChanNo;
  BYTE     byRes2[2];
}NET_DVR_DEVICEINFO_V30,*LPNET_DVR_DEVICEINFO_V30;

Members

sSerialNumber
序列号
byAlarmInPortNum
模拟报警输入个数
byAlarmOutPortNum
模拟报警输出个数
byDiskNum
硬盘个数
byDVRType
设备类型，详见下文列表
byChanNum
设备模拟通道个数，数字（IP）通道最大个数为byIPChanNum + byHighDChanNum*256
byStartChan
模拟通道的起始通道号，从1开始。数字通道的起始通道号见下面参数byStartDChan
byAudioChanNum
设备语音对讲通道数
byIPChanNum
设备最大数字通道个数，低8位，高8位见byHighDChanNum。可以根据IP通道个数来判断是否调用NET_DVR_GetDVRConfig（配置命令NET_DVR_GET_IPPARACFG_V40）获取模拟和数字通道相关参数（NET_DVR_IPPARACFG_V40）。
byZeroChanNum
零通道编码个数
byMainProto
主码流传输协议类型：0- private，1- rtsp，2- 同时支持私有协议和rtsp协议取流（默认采用私有协议取流）
bySubProto
子码流传输协议类型：0- private，1- rtsp，2- 同时支持私有协议和rtsp协议取流（默认采用私有协议取流）
bySupport
能力，位与结果为0表示不支持，1表示支持
bySupport & 0x1，表示是否支持智能搜索
bySupport & 0x2，表示是否支持备份
bySupport & 0x4，表示是否支持压缩参数能力获取
bySupport & 0x8, 表示是否支持双网卡
bySupport & 0x10, 表示支持远程SADP
bySupport & 0x20, 表示支持Raid卡功能
bySupport & 0x40, 表示支持IPSAN目录查找
bySupport & 0x80, 表示支持rtp over rtsp
bySupport1
能力集扩充，位与结果为0表示不支持，1表示支持
bySupport1 & 0x1, 表示是否支持snmp v30
bySupport1 & 0x2, 表示是否支持区分回放和下载
bySupport1 & 0x4, 表示是否支持布防优先级
bySupport1 & 0x8, 表示智能设备是否支持布防时间段扩展
bySupport1 & 0x10,表示是否支持多磁盘数（超过33个）
bySupport1 & 0x20,表示是否支持rtsp over http
bySupport1 & 0x80,表示是否支持车牌新报警信息，且还表示是否支持NET_DVR_IPPARACFG_V40配置
bySupport2
能力集扩充，位与结果为0表示不支持，1表示支持
bySupport2 & 0x1, 表示解码器是否支持通过URL取流解码
bySupport2 & 0x2, 表示是否支持FTPV40
bySupport2 & 0x4, 表示是否支持ANR(断网录像)
bySupport2 & 0x20, 表示是否支持单独获取设备状态子项
bySupport2 & 0x40, 表示是否是码流加密设备
wDevType
设备型号，详见下文列表
bySupport3
能力集扩展，位与结果：0- 不支持，1- 支持
bySupport3 & 0x1, 表示是否支持多码流
bySupport3 & 0x4, 表示是否支持按组配置，具体包含通道图像参数、报警输入参数、IP报警输入/输出接入参数、用户参数、设备工作状态、JPEG抓图、定时和时间抓图、硬盘盘组管理等
bySupport3 & 0x20, 表示是否支持通过DDNS域名解析取流
byMultiStreamProto
是否支持多码流，按位表示，位与结果：0-不支持，1-支持
byMultiStreamProto & 0x1, 表示是否支持码流3
byMultiStreamProto & 0x2, 表示是否支持码流4
byMultiStreamProto & 0x40,表示是否支持主码流
byMultiStreamProto & 0x80,表示是否支持子码流
byStartDChan
起始数字通道号，0表示无数字通道，比如DVR或IPC
byStartDTalkChan
起始数字对讲通道号，区别于模拟对讲通道号，0表示无数字对讲通道
byHighDChanNum
数字通道个数，高8位
bySupport4
能力集扩展，按位表示，位与结果：0- 不支持，1- 支持
bySupport4 & 0x01, 表示是否所有码流类型同时支持RTSP和私有协议
bySupport4 & 0x10, 表示是否支持域名方式挂载网络硬盘
byLanguageType
支持语种能力，按位表示，位与结果：0- 不支持，1- 支持
byLanguageType ==0，表示老设备，不支持该字段
byLanguageType & 0x1，表示是否支持中文
byLanguageType & 0x2，表示是否支持英文
byVoiceInChanNum
音频输入通道数
byStartVoiceInChanNo
音频输入起始通道号，0表示无效
byRes3
保留，置为0
byMirrorChanNum
镜像通道个数，录播主机中用于表示导播通道
wStartMirrorChanNo
起始镜像通道号
byRes2
保留，置为0

Remarks

  • 设备登录模式有两种：SDK私有协议和ISAPI协议。
    1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
    2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。
  • 使用ISAPI协议方式登录时byMainProto、bySubProto、bySupport、bySupport1、bySupport2、bySupport3、bySupport4、bySupport5、bySupport6、bySupport7、byMultiStreamProto、byStartDTalkChan、byVoiceInChanNum、byStartVoiceInChanNo、byMirrorChanNum、wStartMirrorChanNo这些参数都不支持。
  • 如果byDVRType是0，则接口中解析wDevType作为设备型号；如果byDVRType非0，则接口中byDVRType和wDevType值相等，都是byDVRType。推荐使用wDevType作为设备类型。
    byDVRType和wDevType取值定义如下所示：
宏定义 | 宏定义值 | 设备类型
DVR | 1 | 尚未定义的DVR类型
ATMDVR | 2 | ATM DVR
DVS | 3 | DVS
DEC | 4 | 6001D
ENC_DEC | 5 | 6001F
DVR_HC | 6 | 8000HC
DVR_HT | 7 | 8000HT
DVR_HF | 8 | 8000HF
DVR_HS | 9 | 8000HS DVR(no audio)
DVR_HTS | 10 | 8016HTS DVR(no audio)
DVR_HB | 11 | HB DVR(SATA HD)
DVR_HCS | 12 | 8000HCS DVR
DVS_A | 13 | 带ATA硬盘的DVS
DVR_HC_S | 14 | 8000HC-S
DVR_HT_S | 15 | 8000HT-S
DVR_HF_S | 16 | 8000HF-S
DVR_HS_S | 17 | 8000HS-S
ATMDVR_S | 18 | ATM-S
DVR_7000H | 19 | 7000H系列
DEC_MAT | 20 | 多路解码器
DVR_MOBILE | 21 | mobile DVR
DVR_HD_S | 22 | 8000HD-S
DVR_HD_SL | 23 | 8000HD-SL
DVR_HC_SL | 24 | 8000HC-SL
DVR_HS_ST | 25 | 8000HS_ST
DVS_HW | 26 | 6000HW
DS630X_D | 27 | 多路解码器
DS640X_HD | 28 | 640X高清解码器
DS610X_D | 29 | 610X解码器
IPCAM | 30 | 标清网络摄像机
MEGA_IPCAM | 31 | 高清网络摄像机
IPCAM_X62MF | 32 | X62MF系列摄像机
ITCCAM | 35 | 智能交通摄像机
IVS_IPCAM | 36 | 智能分析高清网络摄像机(人脸抓拍机)
ZOOMCAM | 38 | 一体机
IPDOME | 40 | IP标清快球
IPDOME_MEGA200 | 41 | IP 200万高清快球
IPDOME_MEGA130 | 42 | IP 130万高清快球
IPDOME_AI | 43 | IP 高清智能快球
TII_IPCAM | 44 | 红外热成像摄像机
IPTC_DOME | 45 | 红外热成像双目球机
DS_2DP_Z | 46 | 球型鹰眼（大）
DS_2DP | 47 | 非球型鹰眼（小）
ITS_WMS | 48 | 称重数据管理服务器
IPMOD | 50 | IP 模块
TRAFFIC_YTDOME | 51 | 交通智能云台（不带雷达测速）
TRAFFIC_RDDOME | 52 | 交通智能云台（带雷达测速）
IDS6501_HF_P | 60 | 6501 车牌识别
IDS6101_HF_A | 61 | 智能ATM
IDS6002_HF_B | 62 | 双摄像机跟踪：DS6002-HF/B
IDS6101_HF_B | 63 | 异常行为识别：DS6101-HF/B
IDS52XX | 64 | 智能分析仪
IDS90XX | 65 | 9000智能
IDS8104_AHL_S_HX | 66 | 海鑫人脸抓拍 ATM
IDS8104_AHL_S_H | 67 | 私有人脸抓拍 ATM
IDS91XX | 68 | 9100智能
IIP_CAM_B | 69 | 智能行为IP摄像机
IIP_CAM_F | 70 | 智能人脸IP摄像机
DS71XX_H | 71 | DS71XXH_S
DS72XX_H_S | 72 | DS72XXH_S
DS73XX_H_S | 73 | DS73XXH_S
DS72XX_HF_S | 74 | DS72XX_HF_S
DS73XX_HFI_S | 75 | DS73XX_HFI_S
DS76XX_H_S | 76 | DS76XX_H_S
DS76XX_N_S | 77 | DS76XX_N_S
DS_TP3200_EC | 78 | 机柜智能检测仪
DS81XX_HS_S | 81 | DS81XX_HS_S
DS81XX_HL_S | 82 | DS81XX_HL_S
DS81XX_HC_S | 83 | DS81XX_HC_S
DS81XX_HD_S | 84 | DS81XX_HD_S
DS81XX_HE_S | 85 | DS81XX_HE_S
DS81XX_HF_S | 86 | DS81XX_HF_S
DS81XX_AH_S | 87 | DS81XX_AH_S
DS81XX_AHF_S | 88 | DS81XX_AHF_S
DS90XX_HF_S | 90 | DS90XX_HF_S
DS91XX_HF_S | 91 | DS91XX_HF_S
DS91XX_HD_S | 92 | 91XXHD-S(MD)
IDS90XX_A | 93 | 9000智能 ATM
IDS91XX_A | 94 | 9100智能 ATM
DS95XX_N_S | 95 | DS95XXN-S NVR
DS96XX_N_SH | 96 | DS96XXN-SH NVR
DS90XX_HF_SH | 97 | DS90XX_HF_SH
DS91XX_HF_SH | 98 | DS91XX_HF_SH
DS_B10_XY | 100 | 视频综合平台设备型号(X:编码板片数，Y:解码板片数)
DS_6504HF_B10 | 101 | 视频综合平台内部编码器
DS_6504D_B10 | 102 | 视频综合平台内部解码器
DS_1832_B10 | 103 | 视频综合平台内部码分器
DS_6401HFH_B10 | 104 | 视频综合平台内部光纤板
DS_65XXHC | 105 | 65XXHC DVS
DS_65XXHC_S | 106 | 65XXHC-SATA DVS
DS_65XXHF | 107 | 65XXHF DVS
DS_65XXHF_S | 108 | 65XXHF-SATA DVS
DS_6500HF_B | 109 | 65 rack DVS
IVMS_6200_C | 110 | iVMS-6200(/C) 客流量统计
IVMS_6200_B | 111 | IVMS_6200_B 异常行为识别
DS_72XXHV_ST15 | 112 | 72XXHV_ST15 DVR
DS_72XXHV_ST20 | 113 | 72XXHV_ST20 DVR
IVMS_6200_T | 114 | IVMS-6200(/T)
IVMS_6200_BP | 115 | IVMS-6200(/BP)
DS_81XXHC_ST | 116 | DS_81XXHC_ST
DS_81XXHS_ST | 117 | DS_81XXHS_ST
DS_81XXAH_ST | 118 | DS_81XXAH_ST
DS_81XXAHF_ST | 119 | DS_81XXAHF_ST
DS_66XXDVS | 120 | DS_66XXDVS
DS_1964_B10 | 121 | 视频综合平台内部报警器
DS_B10N04_IN | 122 | 视频综合平台内部级联输入
DS_B10N04_OUT | 123 | 视频综合平台内部级联输出
DS_B10N04_INTEL | 124 | 视频综合平台内部智能
DS_6408HFH_B10E_RM | 125 | V6高清
DS_B10N64F1_RTM | 126 | V6级联不带DSP
DS_B10N64F1D_RTM | 127 | V6级联带DSP
DS_B10_SDS | 128 | 视频综合平台子域控制器
DS_B10_DS | 129 | 视频综合平台域控制器
DS_6401HFH_B10V | 130 | VGA高清编码器
DS_6504D_B10B | 131 | 视频综合平台内部标清解码器
DS_6504D_B10H | 132 | 视频综合平台内部高清解码器
DS_6504D_B10V | 133 | 视频综合平台内部VGA解码器
DS_6408HFH_B10S | 134 | 视频综合平台SDI子板
DS_18XX_N | 135 | 矩阵接入网关
DS_6504HF_B10F_CLASS | 136 | 光端机SD
DS_18XX_PTZ | 141 | 网络码分类产品
DS_19AXX | 142 | 通用报警主机类产品
DS_19BXX | 143 | 家用报警主机
DS_19CXX | 144 | 自助银行报警主机
DS_19DXX | 145 | 动环监控报警主机
DS_19XX | 146 | 1900系列报警主机
DS_19SXX | 147 | 视频报警主机
DS_1HXX | 148 | ATM防护舱控制器
DS_PEAXX | 149 | 紧急求助报警产品
DS_PWXX | 150 | 无线报警主机产品
DS_PMXX | 151 | 4G网络模块
DS_19DXX_S | 152 | 视频动环监控主机
DS_C10H | 161 | 多屏控制器
DS_C10N_BI | 162 | BNC处理器
DS_C10N_DI | 163 | RGB处理器
DS_C10N_SI | 164 | 码流处理器
DS_C10N_DO | 165 | 显示处理器
DS_C10N_SERVER | 166 | 分布式服务器
IDS_8104_AHFL_S_H | 171 | 8104ATM
IDS_65XX_HF_A | 172 | 65 ATM
IDS90XX_HF_RH | 173 | 9000 智能RH
IDS91XX_HF_RH | 174 | 9100 智能RH设备
IDS_65XX_HF_B | 175 | 65 异常行为识别
IDS_65XX_HF_P | 176 | 65 车牌识别
IVMS_6200_F | 177 | IVMS-6200(/F)人脸分析仪
IVMS_6200_A | 178 | iVMS-6200(/A)
IVMS_6200_F_S | 179 | IVMS-6200(/F_S)人脸后检索分析仪
DS90XX_HF_RH | 181 | DS90XX_HF_RH
DS91XX_HF_RH | 182 | 9100 RH设备
DS78XX_S | 183 | 78系列设备
DS81XXHW_S | 185 | DVR_81XXHW_S
DS81XXHW_ST | 186 | DVR_81XXHW_ST
DS91XXHW_ST | 187 | DVR_91XXHW_ST
DS91XX_ST | 188 | DVR_91XX_ST
DS81XX_ST | 189 | DVR_81XX_ST
DS81XXH_ST | 190 | DS81XXHDI_ST,DS81XXHE_ST
DS73XXH_ST | 191 | DS73XXHI_ST
DS81XX_SH | 192 | 审讯81SH，81SHF
DS81XX_SN | 193 | 审讯81SNL
DS96XXN_ST | 194 | NVR：DS96xxN_ST
DS86XXN_ST | 195 | NVR：DS86xxN_ST
DS80XXHF_ST | 196 | DS80xxHF_ST
DS90XXHF_ST | 197 | DS90xxHF_ST
DS76XXN_ST | 198 | NVR：DS76xxN_ST
DS_9664N_RX | 199 | NVR：DS-9664N-RH、DS-9664N-RT
ENCODER_SERVER | 200 | 编码卡服务器
DECODER_SERVER | 201 | 解码卡服务器
PCNVR_SERVER | 202 | PCNVR存储服务器
CVR_SERVER | 203 | CVR
DS_91XXHFH_ST | 204 | 高清DVR：DS_91xxHFH_ST
DS_66XXHFH | 205 | 66高清编码器
TRAFFIC_TS_SERVER | 210 | 终端服务器
TRAFFIC_VAR | 211 | 视频分析记录仪
IPCALL | 212 | IP可视对讲主机
SAN_SERVER | 213 | SAN(与CVR_SERVER相同的程序，只是模式不同)
DS_B11_M_CLASS | 301 | B11
DS_B12_M_CLASS | 302 | B12
DS_6504HF_B11_CLASS | 303 | B11内部编码器
DS_6504HF_B12_CLASS | 304 | B12内部编码器
DS_6401HFH_B11V_CLASS | 305 | VGA高清
DS_6401HFH_B12V_CLASS | 306 | VGA高清
DS_6408HFH_B11S_CLASS | 307 | SDI
DS_6408HFH_B12S_CLASS | 308 | SDI
DS_6504D_B11H_CLASS | 309 | B11内部高清解码器
DS_6504D_B11B_CLASS | 310 | B11内部标清解码器
DS_6504D_B12B_CLASS | 311 | B12内部标清解码器
DS_6504D_B11V_CLASS | 312 | B11内部VGA解码器
DS_6504D_B12V_CLASS | 313 | B12内部VGA解码器
DS_6401HFH_B10R_CLASS | 314 | B10 RGB高清
DS_6401HFH_B10D_CLASS | 315 | B10 DVI高清
DS_6401HFH_B10H_CLASS | 316 | B10 HDMI高清
DS_6401HFH_B11R_CLASS | 317 | B11 RGB高清
DS_6401HFH_B11D_CLASS | 318 | B11 DVI高清
DS_6401HFH_B11H_CLASS | 319 | B11 HDMI高清
DS_6401HFH_B12R_CLASS | 320 | B12 RGB高清
DS_6401HFH_B12D_CLASS | 321 | B12 DVI高清
DS_6401HFH_B12H_CLASS | 322 | B12 HDMI高清
DS_65XXD_B10Ex_CLASS | 323 | B10 netra高清解码
DS_6516HW_B10_CLASS | 324 | B10 netra高清编码
DS_6504D_B11Ex_CLASS | 328 | B11 netra高清解码
DS_6504D_B12Ex_CLASS | 329 | B12 netra高清解码
DS_6512_B11_CLASS | 330 | B11 netra高清编码
DS_6512_B12_CLASS | 331 | B12 netra高清编码
DS_6504D_B10H_CLASS | 332 | 视频综合平台内部高清解码器
DS_65XXT_B10_CLASS | 333 | 视频综合平台转码子系统
DS_65XXD_B10_CLASS | 335 | 视频综合平台万能解码板
DS_IVMSE_B10X_CLASS | 336 | X86服务器子系统
DS_6532D_B10ES_CLASS | 337 | 增强型解码板_SDI(B10)
DS_6508HFH_B10ES_CLASS | 338 | SDI输入编码子系统
DS_82NCG_CLASS | 340 | 联网网关中的子系统
DS_82VAG_CLASS | 341 | 联网网关中的子系统
DS_1802XXF_B10_CLASS | 342 | 光口交换子系统
iDS_6504_B10EVAC_CLASS | 343 | 智能子系统
iDS_6504_B10EDEC_CLASS | 344 | 智能子系统
DS_6402HFH_B10EV_CLASS | 345 | netra编码(VGA)
DS_6402HFH_B10ED_CLASS | 346 | netra编码(DVI)
DS_6402HFH_B10EH_CLASS | 347 | netra编码(HDMI)
DS_6404HFH_B10T_RX_CLASS | 348 | 光纤接入编码
DS_6504D_AIO_CLASS | 349 | netra高清解码
DS_IVMST_B10_CLASS | 350 | X86转码子系统
DS_6402_AIO_CLASS | 351 | netra编码
DS_iVMSE_AIO_CLASS | 352 | x86服务器子系统
DS_AIO_M_CLASS | 353 | 一体机
DS_6508HF_B10E_CLASS | 355 | BNC输入编码子系统
DS_6404HFH_B10ES_CLASS | 356 | SDI输入编码子系统
DS_6402HFH_B10ER_CLASS | 358 | RGB输入编码子系统
DS_6404HFH_B10T_RM_CLASS | 361 | 光纤输入编码子系统
DS_6516D_B10EB_CLASS | 362 | BNC输出解码子系统
DS_6516D_B10ES_CLASS | 363 | SDI输出解码子系统
DS_6508_B11E_CLASS | 365 | BNC输入编码子系统
DS_6402_B11ES_CLASS | 366 | SDI输入编码子系统
DS_6402_B11EV_CLASS | 367 | VGA输入编码子系统
DS_6402_B11ER_CLASS | 368 | RGB输入编码子系统
DS_6402_B11ED_CLASS | 369 | DVI输入编码子系统
DS_6402_B11EH_CLASS | 370 | HDMI输入编码子系统
DS_6516D_B11EB_CLASS | 371 | BNC输出解码子系统
DS_6516D_B11ES_CLASS | 372 | SDI输出解码子系统
DS_6508_B12E_CLASS | 373 | BNC输入编码子系统
DS_6402_B12ES_CLASS | 375 | SDI输入编码子系统
DS_6402_B12EV_CLASS | 376 | VGA输入编码子系统
DS_6402_B12ER_CLASS | 377 | RGB输入编码子系统
DS_6402_B12ED_CLASS | 378 | DVI输入编码子系统
DS_6402_B12EH_CLASS | 379 | HDMI输入编码子系统
DS_6516D_B12EB_CLASS | 380 | BNC输出解码子系统
DS_iVMSE_AIO_8100x_CLASS | 381 | 金融行业一体机X86子系统
DS_iVMSE_AIO_87x_CLASS | 382 | 智能楼宇一体机X86子系统
DS_6532D_B11ES_CLASS | 384 | 增强型解码板_SDI(B11)
DS_6532D_B12ES_CLASS | 385 | 增强型解码板_SDI(B12)
DS_B20_MSU_NP | 400 | B20主控板
DS_6416HFH_B20S | 401 | SDI输入编码
DS_6416HFH_B20_RM | 402 | 光纤输入高清编码
DS_6564D_B20D | 403 | DVI解码
DS_6564D_B20H | 404 | HDMI解码
DS_6564D_B20V | 405 | VGA解码
DS_B20_6516D_DEV_CLASS | 406 | B20解码子系统
DS_6408HFH_B20V | 407 | VGA编码板
DS_MMC_B20_CLASS | 408 | B20主控
DS_CARD_CHIP_B20_CLASS | 409 | B20主控子板
DS_6564D_B20B_DEV_CLASS | 410 | BNC解码子系统
DS_6564D_B20S_DEV_CLASS | 411 | SDI解码子系统
DS_6532HF_B20B_DEV_CLASS | 412 | BNC编码子系统
DS_6408HFH_B20D_DEV_CLASS | 413 | DVI编码子系统
DS_6408HFH_B20H_DEV_CLASS | 414 | HDMI编码子系统
DS_IVMSE_B20_CLASS | 415 | X86服务器子系统
DS_6402HFH_B20Y_DEV_CLASS | 416 | YUV编码子系统
DS_6508HW_B20_DEV_CLASS | 417 | HW编码子系统
DS_B20N128Fx_B20_DEV_CLASS | 418 | DS_B20N128Fx_M级联板
DS_AIO_MCU_NP_DEV_CLASS | 419 | IO主控板
DS_6402_AIO_EV_DEV_CLASS | 420 | VGA编码
DS_6508D_AIO_EV_DEV_CLASS | 421 | VGA解码
DS_6508D_AIO_ED_DEV_CLASS | 422 | DVI解码
DS_6508D_AIO_EH_DEV_CLASS | 423 | HDMI解码
DS_6508HD_B20F_DEV_CLASS | 424 | 视频增强板
DS_6402HFH_B20ES_DEV_CLASS | 425 | 3G SID编码
DS_6532D_B20_DEV_CLASS | 426 | B20解码子系统
DS_IVMST_B20_DEV_CLASS | 427 | X86服务器子系统
DS_6416HFH_B20DD_DEV_CLASS | 428 | DVI双链路
DS_6441VS_B20_DEV_CLASS | 429 | 相机拼接类型
DS_6404HFH_B20T_CLASS | 431 | TVI
DS_FS22_B20_DEV_CLASS | 432 | 交换机子系统
DS_IVMSE_B20UH_DEV_CLASS | 433 | 超高清X86输入
DS_6404HFH_B20Fx_DEV_CLASS | 436 | 光端机接入子系统
DS_N128x_B20Fy_CLASS | 437 | 级联子系统
DS_181600F_B20_CLASS | 438 | 网络光纤子系统
DS_6904UD_B20H_CLASS | 439 | 超高清解码子系统
DS_B21_MCU_NP_CLASS | 440 | B21主控
DS_B21_S10_x_CLASS | 441 | B21机箱 x = A/S/D
DS_6402HFH_B21D_CLASS | 442 | B21编码子系统
DS_6508HD_B21D_CLASS | 443 | B21解码子系统
DS_iVMSE_B21HW_CLASS | 444 | B21 X86子系统
DS_C10S | 501 | C10S 集中式大屏控制器
DS_C10N_SDI | 551 | SDI处理器
DS_C10N_BIW | 552 | 8路BNC处理器
DS_C10N_DON | 553 | 显示处理器
DS_C10N_TVI | 554 | TVI输入板
DS_C10N_DI2 | 555 | DVI 2路输入板
DS_C10N_AUDIO_OUT | 556 | DVI，HDMI，VGA输出板带音频
DS_C10N_AUDIO_IN | 557 | DVI，HDMI，VGA输入板带音频
DS_C20N | 570 | 分布式大屏控制器
DS_C20N_BNC | 571 | BNC输入设备
DS_C20N_DVI | 572 | DVI输入设备
DS_C20N_DP | 573 | DP输入设备
DS_C20N_OUT | 574 | 输出设备
DS_19M00_MN | 601 | 报警主机百兆网络模块
DS_KH8302_A | 602 | 室内机
DS_KD8101_2 | 603 | 门口机
DS_KM8301 | 604 | 管理机
DS_KVXXXX_XX | 605 | 别墅门口机
DS64XXHD_T | 701 | 64-T高清解码器
DS_65XXD | 703 | 65万能解码器
DS63XXD_T | 704 | 63-T标清解码器
SCE_SERVER | 705 | 抓屏服务器
DS_64XXHD_S | 706 | DS-64xxHD-S高清解码器
DS_68XXT | 707 | 多功能视音频转码器
DS_65XXD_T | 708 | 65D-T万能解码器
DS_65XXHD_T | 709 | 65HD-T万能解码器
DS_69XXUD | 710 | 69XXUD超高清解码器
DS_65XXUD | 711 | 65XXUD解码器
DS_65XXUD_L | 712 | 65XXUD_L解码器
DS_65XXUD_T | 713 | 65XXUD_T解码器
DS_D20XX | 750 | LCD屏幕 解码卡
DS_C50S | 751 | SDI矩阵
DS_D50XX | 752 | LCD屏幕解码卡
DS_D40 | 760 | LED屏发送卡
DS_65VMXX | 770 | 视频会议服务器
DS_65VTXX | 771 | 视频会议终端
DS_65VTA | 772 | 视频会议一体式终端
DS_65VT_RX | 773 | 互动教学终端
DS_CS_SERVER | 800 | 虚拟屏服务器
DS_K260X | 850 | 门禁主机
DS_K1TXXX | 851 | 指纹一体机
DS_K280X | 852 | 经济型门禁主机
DS_K1T80X | 854 | 经济型门禁一体机
RAC_6X00 | 856 | 汉军指纹门禁一体机
DS_K2602_AX | 857 | 人员通道主机
DS_K1T803F | 858 | 经济型指纹门禁产品
DS_K2700 | 859 | 分布式三层架构门禁主机
DS_K270X | 860 | 分布式三层架构就地控制器
DS_K1T500S | 861 | 视屏门禁一体机
DS_K1A801F | 862 | 经济型指纹门禁产品
DS_K1T600X | 863 | 人脸抓拍门禁一体机
DS_K22X | 864 | 梯控主控制器
DS_K2M0016AX | 865 | 梯控分控制器
DS_K560XX | 870 | 立式/台式智能身份识别终端
DS_6800M | 900 | 68M合码器
DS_68NTH | 901 | 信息发布主机
DS_D60S | 902 | 信息发布服务器
DS_D10 | 931 | 背投显示设备
DS_3K0X_NM | 951 | 光纤收发器
DS_3E2328 | 952 | 百兆交换机
SCREEN_LINK_SERVER | 971 | 屏幕服务器
DS_D51OPSXX | 972 | OPS电脑盒
IP_PTSYS_MEGA200 | 1001 | IP 200万一体化云台
IPCAM_FISHEYE | 1002 | 鱼眼摄像机
IPCAM_FISHEYE_E | 1003 | 经济型鱼眼摄像机
IPCAM_BINOCULAR | 1004 | 双目摄像机
IPCAM_365 | 1010 | 支持365的平台的IPC CAM
IPCAM_R0 | 1011 | 支持A5S的平台的IPC CAM
IPCAM_R1 | 1012 | 支持385的平台的IPC CAM
IPCAM_R2 | 1013 | 支持R2的平台的IPC CAM
IPCAM_R3 | 1014 | 支持8127的平台的IPC CAM
IPCAM_R4 | 1015 | 支持S2的平台的IPC CAM
IPDOME_365 | 1110 | 支持365的平台的IPD CAM
IPDOME_R0 | 1111 | 支持A5S的平台的IPD CAM
IPDOME_R1 | 1112 | 支持385的平台的IPD CAM
IPDOME_R2 | 1113 | 支持R2的平台的IPD CAM
IPDOME_R3 | 1114 | 支持8127的平台的IPD CAM
IPDOME_R4 | 1115 | 支持S2的平台的IPD CAM
ITCCAM_R3 | 1211 | 支持8127的平台的ITCCAM
UAV_S | 1300 | 无人机基站设备（Ummanned Aerial Vehicle – Station）
TRAFFIC_ECT | 1400 | 出入口终端服务器
TRAFFIC_PARKING_SERVER | 1401 | 停车场服务器
TRAFFIC_TME | 1402 | TME出入口控制机
DS90XXHW_ST | 2001 | 混合DVR：DS-90xxHW-ST
DS72XXHX_SH | 2002 | DS-72xxHV-SH，DS-72xxHF-SH
DS_92XX_HF_ST | 2003 | DS-92xxHF-ST
DS_91XX_HF_XT | 2004 | Netra DVR: DS-91xxHF-XT
DS_90XX_HF_XT | 2005 | Netra 混合DVR: DS-90xxHF-XT
DS_73XXHX_SH | 2006 | Netra DVR: DS-73xxHX-SH
DS_72XXHFH_ST | 2007 | Netra DVR: DS-72xxHFH-ST
DS_67XXHF_SATA | 2008 | DVS: DS-67xxHF-SATA
DS_67XXHW | 2009 | DVS: DS-67xxHW
DS_67XXHW_SATA | 2010 | DVS: DS-67xxHW-SATA
DS_67XXHF | 2011 | DVS: DS-67xxHF
DS_72XXHF_SV | 2012 | DVR: DS-72xxHF-SV
DS_72XXHW_SV | 2013 | DVR: DS-72xxHW-SV
DS_81XXHX_SH | 2014 | DVR: DS-81xxHX-SH
DS_71XXHX_SL | 2015 | DVR: DS-71xxHX-SL
DS_76XXH_ST | 2016 | DVR: DS-76xxH-ST
DS_73XXHFH_ST | 2017 | DVR: DS-73xxHFH-ST
DS_81XXHFH_ST | 2018 | DVR: DS-81xxHFH-ST
DS_72XXHFH_SL | 2019 | DVR: DS-72xxHFH-SL
DS_FDXXCGA_FLT | 2020 | 2盘位ATM
IDS_91XX_HF_ST_A | 2100 | iDS-9100HF-ST/A
IDS_91XX_HF_ST_B | 2101 | iDS-9100HF-ST/B
IDS_90XX_HF_ST_A | 2102 | iDS-9000HF-ST/A
IDS_90XX_HF_ST_B | 2103 | iDS-9000HF-ST/B
IDS_81XX_HF_ST_A | 2104 | iDS-8100HF-ST/A
IDS_81XX_HF_ST_B | 2105 | iDS-8100HF-ST/B
IDS_80XX_HF_ST_A | 2106 | iDS-8000HF-ST/A
IDS_80XX_HF_ST_B | 2107 | iDS-8000HF-ST/B
IDS_8104_AHFL_ST | 2108 | 智能混合ATM机
IDS_2CD6812F_C | 2109 | 垂直双目相机
DS_77XXN_ST | 2201 | Netra NVR: DS-77xxN-ST
DS_95XX_N_ST | 2202 | Netra NVR: DS-95xxN-ST
DS_85XX_N_ST | 2203 | Netra NVR: DS-85xxN-ST
DS_96XX_N_XT | 2204 | Netra NVR: DS-96xxN-XT
DS_76XX_N_SE | 2205 | Netra NVR: DS-76xxN-SE、DS-78xxN-SH
DS_86XXSN_SX | 2206 | Netra 审讯NVR，包括4种类型：DS-8608SNL-SP、DS-8608SNL-ST、DS-8608SN-SP、DS-8608SN-ST，L表示带LCD，P表POE
DS_96XX_N_RX | 2207 | Netra NVR: DS-96xxN-RX
DS_71XXN_SL | 2208 | DS-71XXN-SL 民用产品
CS_N1_1XX | 2209 | CS_N1_1XX，民用事业部所用
DS_71XXN_SN | 2210 | 71XX_N_SN 经济型民用产品
CS_N1_2XX | 2211 | N1_2XX 民用事业部所用
DS_76XX_N_SHT | 2212 | 76XX_N_SHT
DS_96XXX_N_E | 2213 | 高新性能NVR(256路)
DS_76XXN_EX | 2214 | 76/78N-EX(/N/P)系列NVR，包括4/8/16路的E1一盘位设备和8/16/32路的E2两盘位设备
DS_77XXN_E4 | 2215 | 77N-E4(/N/P)系列NVR，包括8/16/32路设备
DS_86XXN_E8 | 2216 | 86N-E8(/N/P)系列NVR，包括8/16/32路设备
DS_9616N_H8 | 2217 | DS_9616N_H8
DS_72XXHX_EX_GXY | 2218 | 72系列无线DVR产品（其中72后面的xx表示通道数，E后面的X表示的是盘位数，G XY表示的是无线类型）
DS_76XXN_EX_GXY | 2219 | 76系列无线NVR产品（其中76后面的xx表示通道数，E后面的X表示的是盘位数，G XY表示的是无线类型）
DS_72XXHXH_SH_21 | 2220 | XVR: 72HGH-SH系列4路
DS_72XXHXH_SH_31 | 2221 | XVR: 72HGH-SH系列8路16路、72HQH-SH系列
DS_73XXHXH_SH_31 | 2222 | XVR: 73HGH-SH系列、73HQH-SH系列
DS_81XXHXH_SH_31 | 2223 | XVR: 81HGH-SH系列、81HQH-SH系列
DS_71XXHXH_SH_21 | 2224 | XVR: 71HGH-SH系列4路
DS_71XXHXH_SH_31 | 2225 | XVR: 71HGH-SH系列8路16路、71HQH-SH系列
DS_NBXX_N_E1_X | 2226 | 便携式主机
DS_96XXN_FX | 2230 | 96N-Fx系列NVR，包括8/16/32路设备
DS_86XXN_FX | 2231 | 86N-Fx系列NVR，包括8/16/32路设备
DS_96XXXN_HX | 2232 | 96xxxN-Hx系列NVR
DS_86XXN_I | 2233 | 86N_I系列NVR
DS_77XX_N_I | 2234 | 77N_I系列NVR
DS_76XX_N_I | 2235 | 76N_I系列NVR
DS_78XX_N_I | 2236 | 78N_I系列NVR
DS_96XXXN_IX | 2237 | 96xxxN-Ix系列NVR（DS-96128N-I16、DS-96128N-I24、DS-96256N-I16、DS-96256N-I24）
DS_90XXHXH_XT | 2238 | DS-9016HQH-XT
PCNVR_IVMS_4200 | 2301 | iVMS-4200的存储服务器
IVMS_6200_TP | 2401 | IVMS-6200 交通诱导分析仪
IVMS_6200_TF | 2402 | IVMS-6200 交通取证分析仪
IVMS_6200_D | 2403 | iVMS-6200(/D)
IDS_81XXAHW_ST | 2405 | iDS-81xxAHW-ST
IDS_81XXAHW_SP | 2406 | iDS-81xxAHW-SP
IDS_81XXAHWL_ST | 2407 | iDS-81xxAHWL-ST
IDS_81XXAHWL_SP | 2408 | iDS-81xxAHWL-SP
IDS_9616N_H8 | 2409 | iDS_9616N_H8
IVMS_6200_SMD | 2500 | IVMS_6200_SMD
DS_81XXAHW_ST | 2501 | 81HW-ST混合ATM DVR
DS_81XXAHW_SP | 2502 | 81HW-SP混合ATM DVR
DS_81XXAHWL_ST | 2503 | 81AHWL-ST混合ATM DVR
DS_81XXAHWL_SP | 2504 | 81AHWL-SP混合ATM DVR
DS_81XXAHGH_E4 | 2601 | TVI ATM机
DS_81XX_SHXL_K4 | 6101 | KY2017平台审讯机DS-8104SHFH（L）-K4/4P
DS_8116THFHL_F4 | 6201 | 标准庭审主机DS-8116THFHL-F4
DS_81XXAHQ_E4 | 6301 | DS_81XXAHQ_E4(TVI ATM)
IDS_81XXAHQ_E4 | 6302 | IDS_81XXAHQ_E4(智能TVI ATM)
IDS_96XX_NX_S | 7502 | 超脑智能NVR(人体识别)
IDS_96XX_NX_V | 7503 | 超脑加油站NVR
IDS_96XX_NX_FA | 7504 | 人脸超脑智能NVR
IDS_86XX_NX_IX_B | 7505 | 86系列安全帽检测NVR产品：IDS-8632NX-I8/B
iDS_PT | 8451 | 全景细节相机
DS_IEXX_E_J | 11501 | 监所智能服务器
IDS_67XX_NX_L | 12502 | 67系列录播NVS产品
IDS_ENIXX_XHE | 12503 | 录播NVS行业专业产品
IDS_67XX_NX_B | 12505 | 67系列安全帽检测NVS产品：iDS-6708NX/B
DS_IE63XX_E_FA | 13001 | 脸谱单机
DS-GPKIA01XX | 13002 | 猎鹰服务器
DS-IC01XX-F | 13003 | 脸谱纯分析
DS_DS_FS | 13004 | 人脸静态数据服务器
DS_DS_FD | 13005 | 抓拍检测服务器
DS-GPKIB01XX-V | 13006 | 刀锋
DS-I01CP-CD | 13007 | 模型对比服务器
DS_LNX_RF | 13501 | 智能锁盒子

See Also

NET_DVR_USER_LOGIN_INFO NET_DVR_DEVICEINFO_V40

NET_DVR_Login_V30


NET_DVR_DEVICEINFO_V40

设备参数结构体。

struct{
  NET_DVR_DEVICEINFO_V30    struDeviceV30;
  BYTE                      bySupportLock;
  BYTE                      byRetryLoginTime;
  BYTE                      byPasswordLevel;
  BYTE                      byProxyType;
  DWORD                     dwSurplusLockTime;
  BYTE                      byCharEncodeType;
  BYTE                      bySupportDev5;
  BYTE                      byLoginMode;
  DWORD                      byRes3;
  int                      iResidualValidity;
  BYTE                      byResidualValidity;
  BYTE                      bySingleStartDTalkChan;
  BYTE                      bySingleDTalkChanNums;
  BYTE                      byPassWordResetLevel;
  BYTE                      bySupportStreamEncrypt;
  BYTE                      byMarketType;
  BYTE                      byRes2[238];
}NET_DVR_DEVICEINFO_V40,*LPNET_DVR_DEVICEINFO_V40;

Members

struDeviceV30
设备参数
bySupportLock
设备是否支持锁定功能，bySupportLock为1时，dwSurplusLockTime和byRetryLoginTime有效
byRetryLoginTime
剩余可尝试登陆的次数，用户名、密码错误时，此参数有效
byPasswordLevel
密码安全等级：0- 无效，1- 默认密码，2- 有效密码，3- 风险较高的密码，当管理员用户的密码为出厂默认密码（12345）或者风险较高的密码时，建议上层客户端提示用户更改密码
byProxyType
代理服务器类型：0- 不使用代理，1- 使用标准代理，2- 使用EHome代理
dwSurplusLockTime
剩余时间，单位：秒，用户锁定时此参数有效。在锁定期间，用户尝试登陆，不管用户名密码输入对错，设备锁定剩余时间重新恢复到30分钟
byCharEncodeType
字符编码类型（SDK所有接口返回的字符串编码类型，透传接口除外）：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)
bySupportDev5
支持v50版本的设备参数获取，设备名称和设备类型名称长度扩展为64字节
byLoginMode
登录模式(不同模式具体含义详见“Remarks”说明)：0- SDK私有协议，1- ISAPI协议
byRes3
保留，置为0
iResidualValidity
该用户密码剩余有效天数，单位：天，返回负值，表示密码已经超期使用，例如“-3表示密码已经超期使用3天”
byResidualValidity
iResidualValidity字段是否有效，0-无效，1-有效
bySingleStartDTalkChan
独立音轨接入的设备，起始接入通道号，0-为保留字节，无实际含义，音轨通道号不能从0开始
bySingleDTalkChanNums
独立音轨接入的设备的通道总数，0-表示不支持
byPassWordResetLevel
0-无效，1-管理员创建一个非管理员用户为其设置密码，该非管理员用户正确登录设备后要提示“请修改初始登录密码”，未修改的情况下，用户每次登入都会进行提醒；2-当非管理员用户的密码被管理员修改，该非管理员用户再次正确登录设备后，需要提示“请重新设置登录密码”，未修改的情况下，用户每次登入都会进行提醒。
bySupportStreamEncrypt
能力集扩展，位与结果：0- 不支持，1- 支持 bySupportStreamEncrypt & 0x1:表示是否支持RTP/TLS取流 bySupportStreamEncrypt & 0x2: 表示是否支持SRTP/UDP取流 bySupportStreamEncrypt & 0x4: 表示是否支持SRTP/MULTICAST取流
byMarketType
0-无效（未知类型）,1-经销型，2-行业型
byRes2
保留，置为0

Remarks

  • 将密码输入分为数字(0~9)、小写字母(a~z)、大写字母(A~Z)、特殊符号（:\"除外）4类，等级分为4个等级，如下所示：
    等级0（风险密码）：密码长度小于8位，或者只包含4类字符中的任意一类，或者密码与用户名一样，或者密码是用户名的倒写。例如：12345、abcdef。
    等级1（弱密码）：包含两类字符，且组合为（数字+小写字母）或（数字+大写字母），且长度大于等于8位。例如：abc12345、123ABCDEF
    等级2（中密码）：包含两类字符，且组合不能为（数字+小写字母）和（数字+大写字母），且长度大于等于8位。例如：12345***++、ABCDabcd。
    等级3（强密码）：包含三类字符及以上，且长度大于等于8位。例如：Abc12345、abc12345++。
  • 设备登录模式有两种：SDK私有协议和ISAPI协议。
    1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
    2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。
  • 使用ISAPI协议方式登录时bySupportLock、byRetryLoginTime、byPasswordLevel、byProxyType、dwSurplusLockTime、byCharEncodeType、bySupportDev5这些参数都不支持。

See Also

NET_DVR_Login_V40


NET_DVR_DEVICENATINFO

NAT模式下网络信息结构体。

struct{
  NET_DVR_IPADDR    struPuIp;
  WORD              wOuterPort;
  WORD              wInterPort;
  BYTE              byRes[8];
}NET_DVR_DEVICENATINFO,*LPNET_DVR_DEVICENATINFO;

Members

struPuIp
PU端外网IP地址
wOuterPort
PU外网端口
wInterPort
PU发送视频的本地端口
byRes
保留

See Also

NET_DVR_PreviewRequest


NET_DVR_DEVICESTATECFG

智能交通摄像机设备状态参数结构体。

struct{
  DWORD            dwSize;
  WORD             wPreviewNum;
  WORD             wFortifyLinkNum;
  NET_DVR_IPADDR   struPreviewIP[MAX_LINK];
  NET_DVR_IPADDR   struFortifyIP[MAX_FORTIFY_NUM];
  DWORD            dwVideoFrameRate;
  BYTE             byResolution;
  BYTE             bySnapResolution;
  BYTE             byStreamType;
  BYTE             byTriggerType;
  DWORD            dwSDVolume;
  DWORD            dwSDFreeSpace;
  BYTE             byDetectorState[MAX_DRIVECHAN_NUM][MAX_COIL_NUM];
  BYTE             byDetectorLinkState;
  BYTE             bySDStatus;
  BYTE             byFortifyLevel[MAX_FORTIFY_NUM];
  BYTE             byRes2[116];
}NET_DVR_DEVICESTATECFG, *LPNET_DVR_DEVICESTATECFG;

Members

dwSize
结构体大小
wPreviewNum
预览连接个数
wFortifyLinkNum
布防连接个数
struPreviewIP
预览的用户IP地址
struFortifyIP
布防连接的用户IP地址
dwVideoFrameRate
帧率：0-全部; 1- 1/16; 2- 1/8; 3- 1/4; 4- 1/2; 5- 1; 6- 2; 7- 4; 8- 6; 9- 8; 10- 10; 11- 12; 12- 16; 13- 20; 14- 15; 15- 18; 16- 22;
byResolution
视频分辨率：0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF，16-VGA(640*480), 17-UXGA(1600*1200), 18-SVGA (800*600), 19-HD720p(1280*720), 20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048, 32-2448*1200, 33-2448*800, 34-XGA(1024*768), 35-SXGA(1280*1024),36-WD1(960*576/960*480), 37-1080i, 38-2336*1744, 39-1940*1460, 0xff-Auto(使用当前码流分辨率)
bySnapResolution
抓拍分辨率：0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF，16-VGA(640*480), 17-UXGA(1600*1200), 18-SVGA (800*600),19-HD720p(1280*720), 20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048, 32-2448*1200, 33-2448*800, 34-XGA(1024*768), 35-SXGA(1280*1024), 36-WD1(960*576/960*480), 37-1080i, 38-2336*1744, 39-1940*1460 0xff-Auto(使用当前码流分辨率)
byStreamType
码流类型：0- 主码流，1- 子码流
byTriggerType
触发模式：0- 视频触发，1- 普通触发
dwSDVolume
SD卡容量
dwSDFreeSpace
SD卡剩余空间
byDetectorState
车道的线圈状态：0- 未使用，1- 正常，2- 异常
byDetectorLinkState
车检器连接状态：0- 未连接，1- 连接
bySDStatus
SD卡状态：0- 活动，1- 休眠，2- 异常，3- 无sd卡
byFortifyLevel
布防等级：0- 一等级(高)，1- 二等级(中)，2- 三等级(低)，0xff- 无
byRes2
保留，置为0

Remarks

该结构体中参数byFortifyLevel和struFortifyIP是一一对应的。

See Also

NET_DVR_GetDVRConfig


NET_DVR_DEVLIST

分布式子设备信息列表结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDevNums;
  BYTE     *pBuffer;
  BYTE     byRes1[3];
  DWORD    dwBufLen;
  BYTE     byRes2[64];
}NET_DVR_DEVLIST,*LPNET_DVR_DEVLIST;

Members

dwSize
结构体大小
dwDevNums
设备返回的分布式子设备数量
pBuffer
子设备信息列表，dwDevNums*NET_DVR_SINGLE_DEV_INFO
byRes1
保留
dwBufLen
所分配指针长度，输入参数
byRes2
保留

See Also

NET_DVR_GetDevList


NET_DVR_DEVSERVER_CFG

模块服务配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byIrLampServer;
  BYTE     bytelnetServer;
  BYTE     byABFServer;
  BYTE     byEnableLEDStatus;
  BYTE     byEnableAutoDefog;
  BYTE     byEnableSupplementLight;
  BYTE     byEnableDeicing;
  BYTE     byEnableVisibleMovementPower;
  BYTE     byEnableThermalMovementPower;
  BYTE     byEnablePtzPower;
  BYTE     byPowerSavingControl;
  BYTE     byRes[245];
}NET_DVR_DEVSERVER_CFG,*LPNET_DVR_DEVSERVER_CFG;

Members

dwSize
结构体大小
byIrLampServer
红外灯设置：0- 禁用，1- 启用
bytelnetServer
telnet设置：0- 禁用，1- 启用
byABFServer
ABF设置：0- 启用，1- 禁用，请注意此处参数取值0、1和其他参数取值含义不同
byEnableLEDStatus
状态指示灯控制：0- 禁用，1- 启用
byEnableAutoDefog
自动除雾控制：0- 启用，1- 禁用，请注意此处参数取值0、1和其他参数取值含义不同
byEnableSupplementLight
补光灯控制：0- 启用，1- 禁用，请注意此处参数取值0、1和其他参数取值含义不同
byEnableDeicing
除冰功能：0- 关闭，1- 开启
byEnableVisibleMovementPower
可见光机芯电源开关(低功耗模式下有效)：0- 关闭，1- 开启
byEnableDeicing
热成像机芯电源开关(低功耗模式下有效)：0- 关闭，1- 开启
byEnableDeicing
云台电源开关(低功耗模式下有效)：0- 关闭，1- 开启
byEnableDeicing
低功耗策略：0- 保留，1- 休眠模式，2-低功耗模式(低功耗模式下，可见光机芯电源、热成像机芯电源、云台电源控制生效）
byRes
保留，置为0

Remarks

  • 只允许admin用户设置telnet配置。
  • ABF：自动后焦距，实现Sensor传感器调焦，而普通的调焦模式是镜头的电子或者手动的调焦。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DEVTYPE_CALIBFILE_PARAM

客户标定文件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwFileLen;
  BYTE    byChannel;
  BYTE    byFileType;
  BYTE    byRes[22];
}NET_DVR_DEVTYPE_CALIBFILE_PARAM,*LPNET_DVR_DEVTYPE_CALIBFILE_PARAM;

Members

dwSize
结构体大小
dwFileLen
文件大小
byChannel
多个senor拼接后通道号
byChannel
0-3200W标定文件,1-800W标定文件
byRes
保留，置为0


NET_DVR_DIAGNOSIS_UPLOAD

诊断服务器结果信息结构体。

struct{
  DWORD           dwSize;
  char            sStreamID[STREAM_ID_LEN];
  char            sMonitorIP[64];
  DWORD           dwChanIndex;
  DWORD           dwWidth;
  DWORD           dwHeight;
  NET_DVR_TIME    struCheckTime;
  BYTE            byResult;
  BYTE            bySignalResult;
  BYTE            byBlurResult;
  BYTE            byLumaResult;
  BYTE            byChromaResult;
  BYTE            bySnowResult;
  BYTE            byStreakResult;
  BYTE            byFreezeResult;
  BYTE            byPTZResult;
  BYTE            byRes1[3];
  char            sNapShotURL[256];
  BYTE            byRes2[64];
}NET_DVR_DIAGNOSIS_UPLOAD,*LPNET_DVR_DIAGNOSIS_UPLOAD;

Members

dwSize
结构体大小
sStreamID
流ID，为字母、数字和"_"的组合，长度小于32个字节
sMonitorIP
监控点IP地址
dwChanIndex
监控点通道号
dwWidth
图像宽度
dwHeight
图像高度
struCheckTime
检测时间(合并日期和时间字段)，格式：2012-08-06 13:00:00
byResult
检测结果：0-未检测，1-正常，2-异常，3-登录失败，4-取流异常
bySignalResult
视频丢失检测结果：0-未检测，1-正常，2-异常
byBlurResult
图像模糊检测结果：0-未检测，1-正常，2-异常
byLumaResult
亮度异常检测结果：0-未检测，1-正常，2-异常
byChromaResult
偏色检测结果：0-未检测，1-正常，2-异常
bySnowResult
雪花点干扰检测结果：0-未检测，1-正常，2-异常
byStreakResult
条纹干扰检测结果：0-未检测，1-正常，2-异常
byFreezeResult
画面冻结检测结果：0-未检测，1-正常，2-异常
byPTZResult
云台检测结果：0-未检测，1-正常，2-异常
byRes1
保留
sNapShotURL
图片URL地址
byRes2
保留

Remarks

监听获取到服务器上传的图片URL地址后，通过接口NET_DVR_GetDeviceConfig（命令：NET_DVR_GET_RECORD_INFO）可以查询相应的图片数据。

See Also

NET_DVR_StartListen_V30


NET_DVR_DIALPARAM

拨号参数结构体。

struct{
  DWORD                dwSize;
  BYTE                 bEnable3G;
  BYTE                 byDialMethod;
  BYTE                 bySwitchMethod;
  BYTE                 byRes1[11];
  WORD                 wOffLineTime;
  NET_DVR_PPPDPARAM    struPppdParam;
  NET_DVR_QOSPARAM     struQosParam;
  BYTE                 byUimNumber[MAX_PHONE_NUM];
  BYTE                 byRes2[24];
}NET_DVR_DIALPARAM, *LPNET_DVR_DIALPARAM;

Members

dwSize
结构体大小
bEnable3G
是否启用3G，0- 禁用，1- 启用
byDialMethod
拨号方式，0- 自动拨号，1- 手动拨号
bySwitchMethod
切换方式，0- 自动切换，1- 3G优先，2- 手动切换成2G，3- 手动切换成3G
byRes1
保留
wOffLineTime
无连接时自动下线时间，单位：分钟，范围：5~65535分钟
struPppdParam
PPP拨号参数
struQosParam
QoS参数
byUimNumber
手机号码
byRes2
保留

See Also

NET_DVR_GetDialParam NET_DVR_SetDialParam


NET_DVR_DIALREQUEST

拨号请求结构体。

struct{
  BYTE    byConnNum;
  BYTE    byNetType;
  BYTE    byRes[6];
}NET_DVR_DIALREQUEST, *LPNET_DVR_DIALREQUEST;

Members

byConnNum
网卡序号
byNetType
指定获得某个网络的默认拨号参数，调用接口NET_DVR_SetDialParam设置时此参数无效。
0- 自动, 1- CDMA，2- EVDO，3- WCDMA，4- TD-SCDMA
byRes
保留

See Also

NET_DVR_GetDialParam NET_DVR_SetDialParam


NET_DVR_DIALSTATUS

拨号状态结构体。

struct{
  BYTE               byRealMode;
  BYTE               byUimCard;
  BYTE               byRes1[6];
  DWORD              dwSignal;
  DWORD              dwDialStatus;
  NET_DVR_IPADDR     struLocalIp;
  NET_DVR_IPADDR     struRemoteIp;
  NET_DVR_IPADDR     struNetMask;
  NET_DVR_IPADDR     struDns;
  BYTE               byRes2[16];
}NET_DVR_DIALSTATUS,*LPNET_DVR_DIALSTATUS;

Members

byRealMode
3G网络模式，具体定义如下：
enum _REAL_MODE_{
  RMODE_CDMA1X     = 12,
  RMODE_EVDO       = 14,
  RMODE_CDMAHYBRID = 18,

  RMODE_GSM        = 21,
  RMODE_GPRS       = 22,
  RMODE_EDGE       = 23,
  RMODE_WCDMA      = 24,
  RMODE_HSDPA      = 25,
  RMODE_HSUPA      = 26,
  RMODE_HSPA       = 27,

  RMODE_TGSM       = 31,
  RMODE_TGPRS      = 32,
  RMODE_TEDGE      = 33,
  RMODE_TDSCDMA    = 34,
  RMODE_TDHSDPA    = 35,
  RMODE_TDHSUPA    = 36,
  RMODE_TDHSPA     = 37
}REAL_MODE
byUimCard
UIM卡状态，具体定义如下：
enum _UIM_INFO_{
  UIM_UNKNOWN = 0,
  UIM_VALID   = 1,
  UIM_NOVALID = 4,
  UIM_ROAM    = 11,
  UIM_NOEXIST = 255
}UIM_INFO
UIM_UNKNOWN
未知
UIM_VALID
有效
UIM_NOVALID
无效
UIM_ROAM
漫游
UIM_NOEXIST
不存在
byRes1
保留
dwSignal
当前网络信号强度
dwDialStatus
拨号状态
struLocalIp
无线网络IP地址
struRemoteIp
无线网络网关
struNetMask
无线网络子网掩码
struDns
无线网络DNS地址
byRes2
保留

Remarks

仅在“2G无线网络”和“3G无线网络”才支持获取该拨号状态。

See Also

NET_DVR_GetDVRConfig


NET_DVR_DIFFDEV_INFO

设备信息结构体。

union{
  NET_DVR_CODEDEV_INFO         struCodeDevInfo;
  NET_DVR_DECODEDEV_INFO       struDecodeDevInfo;
  NET_DVR_NETSIGNALDEV_INFO    struNetSignalInfo;
}NET_DVR_DIFFDEV_INFO,*LPNET_DVR_DIFFDEV_INFO;

Members

struCodeDevInfo
编码设备信息
struDecodeDevInfo
解码设备信息
struNetSignalInfo
网络信号源信息

Remarks

网络信号源在系统中层次应该是在码流处理器的下层，负责将网络码流传给码流处理器,但是把结构体放在这里跟码流处理和其他设备同一级。

实际使用中，如果是本地信号，客户端上直接拖显示处理器的通道到一个窗口上。而网络信号需要拖动网络信号源的通道到一个窗口上。

See Also

NET_DVR_SINGLE_DEV_INFO


NET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS

数字通道前端设备安全状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byDigitalChanPasswordStatus[MAX_CHANNUM_V30*4];
  BYTE     byRes[1140];
}NET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS, *LPNET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS;

Members

dwSize
结构体大小
byDigitalChanPasswordStatus
数字通道前端设备密码状态：0- 保留，1- IPC未激活，2- 风险密码，3- 密码强度弱，4- 密码强度中，5- 密码强度强，
每位数组表示一个通道，例如：byDigitalChanPasswordStatus[0]表示第一个数字通道的前端设备密码状态
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_DIGITAL_CHANNEL_STATE

设备数字通道状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byDigitalAudioChanTalkState[MAX_CHANNUM_V30];
  BYTE     byDigitalChanState[MAX_CHANNUM_V30];
  BYTE     byDigitalAudioChanTalkStateEx[MAX_CHANNUM_V30*3];
  BYTE     byDigitalChanStateEx[MAX_CHANNUM_V30*3];
  BYTE     byRes[64];
}NET_DVR_DIGITAL_CHANNEL_STATE, *LPNET_DVR_DIGITAL_CHANNEL_STATE;

Members

dwSize
结构体大小
byDigitalAudioChanTalkState
表示数字语音通道的对讲状态，从第1个到第MAX_CHANNUM_V30个，数组元素值：0- 未使用，1- 使用中，0xff- 无效
byDigitalChanState
数字通道状态，从第1个到第MAX_CHANNUM_V30个，数组元素值表示状态码，0表示无效，其他值定义见“Remarks”说明
byDigitalAudioChanTalkStateEx
表示数字语音通道的对讲状态，从第MAX_CHANNUM_V30+1个到第MAX_CHANNUM_V30*4个，数组元素值：0- 未使用，1- 使用中，0xff- 无效
byDigitalChanStateEx
数字通道状态，从第MAX_CHANNUM_V30+1个到第MAX_CHANNUM_V30*4个，数组元素值表示状态码，0表示无效，其他值定义见“Remarks”说明
byRes
保留，置为0

Remarks

数字通道状态（byDigitalChanState、byDigitalChanStateEx）取值定义如下所示：

宏定义 | 宏定义值 | 含义
NET_SDK_DC_STATUS_CONNECTED | 1 | 已连接
NET_SDK_DC_STATUS_CONNECTING | 2 | 正在连接
NET_SDK_DC_STATUS_BAND_WIDTH_EXCEED | 3 | 超过系统带宽
NET_SDK_DC_STATUS_DOMAIN_ERROR | 4 | 域名错误
NET_SDK_DC_STATUS_CHANNEL_ERROR | 5 | 通道号错误
NET_SDK_DC_STATUS_ACCOUNT_ERROR | 6 | 用户名或密码错误
NET_SDK_DC_STATUS_STREAM_TYPE_NOT_SUPPORT | 7 | 流类型不支持
NET_SDK_DC_STATUS_CONFLICT_WITH_DVR | 8 | 和设备IP地址冲突
NET_SDK_DC_STATUS_CONFLICT_WITH_IPC | 9 | 和IPC IP地址冲突
NET_SDK_DC_STATUS_NETWORK_UNREACHBALE | 10 | 网络不可达
NET_SDK_DC_STATUS_IPC_NOT_EXIST | 11 | IP通道未接入
NET_SDK_DC_STATUS_IPC_EXCEPTION | 12 | IP通道异常
NET_SDK_DC_STATUS_OTHER_ERROR | 13 | 其他错误
NET_SDK_DC_STATUS_RESOLUTION_NOT_SUPPORT | 14 | IPC分辨率不支持
NET_SDK_DC_STATUS_IPC_LAN_ERR | 15 | IPC语言与NVR语言不匹配
NET_SDK_DC_STATUS_USER_LOCKED | 16 | 用户被锁定
NET_SDK_DC_STATUS_NOT_ACTIVATED | 17 | 设备未激活
NET_SDK_DC_STATUS_USER_NOT_EXIST | 18 | 用户不存在
NET_SDK_DC_STATUS_IPC_UNREGISTERED | 19 | IP通道对应设备未注册(GB28181协议接入)
NET_SDK_DC_STATUS_POE_PORT_DETECTING | 20 | POE通道检测中
NET_SDK_DC_STATUS_TOKEN_AUTHENTCATE_FAILED | 24 | token认证失败

See Also

NET_DVR_GetDVRConfig


NET_DVR_DIGITALSCREEN

数字屏幕信息结构体。

struct{
  NET_DVR_IPADDR    struAddress;
  WORD              wPort;
  BYTE              byRes[26];
}NET_DVR_DIGITALSCREEN, *LPNET_DVR_DIGITALSCREEN;

Members

struAddress
设备为数字设备时的IP信息
wPort
端口号
byRes
保留，置为0

See Also

NET_DVR_SCREEN_UNION


NET_DVR_DIRECT_CONNECT_CHAN_INFO

IP通道信息结构体。

struct{
  BYTE               byEnable;
  BYTE               byProType;
  BYTE               byZeroChan;
  BYTE               byPriority;
  BYTE               sUserName[NAME_LEN];
  BYTE               sPassword[PASSWD_LEN];
  BYTE               byDomain[MAX_DOMAIN_NAME];
  NET_DVR_IPADDR     struIP;
  WORD               wDVRPort;
  BYTE               byStreamType;
  BYTE               byOnline;
  DWORD              dwChannel;
  BYTE               byTransProtocol;
  BYTE               byLocalBackUp;
  WORD               wDirectLastTime;
  BYTE               byChanNo[CHAN_NO_LEN];
}NET_DVR_DIRECT_CONNECT_CHAN_INFO, *LPNET_DVR_DIRECT_CONNECT_CHAN_INFO;

Members

byEnable
是否启用
byProType
协议类型：0- 私有协议(default)，1- 松下协议，2- 索尼，更多协议通过NET_DVR_GetIPCProtoList获取
byZeroChan
是否是零通道：0- 不是，1- 是
byPriority
优先级，取值范围：1~5
sUserName
用户名
sPassword
密码
byDomain
设备域名
struIP
IP地址
wDVRPort
端口号
byStreamType
码流类型：0- 主码流，1- 子码流
byOnline
在线状态（只读）：0- 不在线，1- 在线
dwChannel
通道号
byTransProtocol
协议类型：0- TCP，1- UDP，2- 多播
byLocalBackUp
本地备份：0- 不启用CVR本地备份，1- 启用CVR本地备份（即录像时的流一份保存在录像卷，一份保存在存档卷）
wDirectLastTime
导播持续时间，单位：s，取值范围通过能力集获取
byChanNo
通道编号，用于VAG取流

See Also

NET_DVR_STREAM_TYPE_UNION NET_DVR_AUTO_TRACK_CFG


NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40

IP通道信息结构体。

struct{
  BYTE     byEnable;
  BYTE     byProType;
  BYTE     byZeroChan;
  BYTE     byRes1;
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  BYTE     byAddress[MAX_DOMAIN_NAME];
  WORD     wDVRPort;
  BYTE     byStreamType;
  BYTE     byOnline;
  DWORD    dwChannel;
  BYTE     byTransProtocol;
  BYTE     byLocalBackUp;
  BYTE     byRes2[2];
  BYTE     byVAGChanNo[MAX_VAG_CHANNO_LEN];
  BYTE     byRes[340];
}NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40, *LPNET_DVR_DIRECT_CONNECT_CHAN_INFO_V40;

Members

byEnable
是否启用
byProType
协议类型：0- 私有协议(default)，1- 松下协议，2- 索尼，更多协议通过NET_DVR_GetIPCProtoList获取
byZeroChan
是否是零通道：0- 不是，1- 是
byRes1
保留，置为0
sUserName
用户名
sPassword
密码
byDomain
前端IP或者域名(需要设备解析，解析方式为有字母存在且有“.”则认为是域名，否则为IP地址）
wDVRPort
端口号
byStreamType
码流类型：0- 主码流，1- 子码流
byOnline
在线状态（只读）：0- 不在线，1- 在线
dwChannel
通道号
byTransProtocol
协议类型：0- TCP，1- UDP，2- 多播
byLocalBackUp
本地备份：0- 不启用CVR本地备份，1- 启用CVR本地备份（即录像时的流一份保存在录像卷，一份保存在存档卷）
byRes2
保留，置为0
byVAGChanNo
协议类型为VAG时有效，对应的VAG通道编号
byRes
保留，置为0

Remarks

VAG是CVR的一个组件，通过它可以对接各种厂商的设备，配置从VAG取流时需要配置VAG通道号。

See Also

NET_DVR_STREAM_TYPE_V40_UNION


NET_DVR_DIRECTED_STRATEGY_CFG

导播策略类型配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byDirectedStrategyType;
  BYTE     byRes[255];
 }NET_DVR_DIRECTED_STRATEGY_CFG,*LPNET_DVR_DIRECTED_STRATEGY_CFG;

Members

dwSize
结构体大小
byDirectedStrategyType
导播策略类型：0- 常态导播策略，1- 精品导播策略
byRes
保留，置为0

Remarks

  • 设备是否支持导播策略类型配置能力或者支持的参数，可以通过设备能力集进行判断，对应导播策略配置能力集(DirectedStrategyCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_DIRECTED_STRATEGY_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_DIRECTION

方向结构体。

struct{
  NET_VCA_POINT     struStartPoint;
  NET_VCA_POINT     struEndPoint;
}NET_DVR_DIRECTION,*LPNET_DVR_DIRECTION;

Members

struStartPoint
方向起始点
struEndPoint
方向结束点

See Also

NET_DVR_AID_INFO NET_DVR_ONE_LANE


NET_DVR_DISK_QUOTA

磁盘配额信息结构体。

struct{
  BYTE      byQuotaType;
  BYTE      byRes1[5];
  WORD      wStoragePeriod;
  DWORD     dwHCapacity;
  DWORD     dwLCapacity;
  DWORD     dwHUsedSpace;
  DWORD     dwLUsedSpace;
  BYTE      byQuotaRatio;
  BYTE      byRes2[21];
}NET_DVR_DISK_QUOTA,*LPNET_DVR_DISK_QUOTA;

Members

byQuotaType
磁盘配额类型：1- 按容量，2- 按比例，3- 按时间
byRes1
保留
wStoragePeriod
录像存储周期，单位：天，配额类型为按时间时有效
dwHCapacity
分配的磁盘容量高32位，单位MB
dwLCapacity
分配的磁盘容量低32位，单位MB
dwHUsedSpace
已使用的磁盘空间高32位，位MB
dwLUsedSpace
已使用的磁盘空间低32位，单位MB
byQuotaRatio
分配的磁盘比例，单位：%
byRes2
保留

See Also

NET_DVR_DISK_QUOTA_CFG


NET_DVR_DISK_QUOTA_CFG

磁盘配额配置结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_DISK_QUOTA       struPicQuota;
  NET_DVR_DISK_QUOTA       struRecordQuota;
  BYTE                     res2[60];
}NET_DVR_DISK_QUOTA_CFG,*LPNET_DVR_DISK_QUOTA_CFG;

Members

dwSize
结构体大小
struPicQuota
图片配额
struRecordQuota
录像配额
res2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DISK_RAID_INFO

磁盘Raid信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     bySleepStatus;
  BYTE     byRes[34];
}NET_DVR_DISK_RAID_INFO,*LPNET_DVR_DISK_RAID_INFO;

Members

dwSize
结构体大小
byEnable
磁盘Raid是否禁用：0- 禁用，1- 启用
bySleepStatus
休眠状态：0- 无效，1- 休眠，2- 不休眠
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DISKABILITY_LIST

设备磁盘列表结构体。

struct{
  DWORD                dwSize;
  DWORD                dwNodeNum;
  NET_DVR_DESC_NODE    struDescNode[MAX_NODE_NUM];
}NET_DVR_DISKABILITY_LIST,*LPNET_DVR_DISKABILITY_LIST;

Members

dwSize
结构体大小
dwNodeNum
可用磁盘个数
struDescNode
可用磁盘的参数结构

See Also

NET_DVR_GetDiskList


NET_DVR_DISKSTATE

硬盘信息结构体。

struct{
  DWORD    dwVolume;
  DWORD    dwFreeSpace;
  DWORD    dwHardDiskStatic;
}NET_DVR_DISKSTATE, *LPNET_DVR_DISKSTATE;

Members

dwVolume
硬盘容量，单位：MB
dwFreeSpace
硬盘剩余空间，单位：MB
dwHardDiskStatic
硬盘的状态：0- 活动，1- 休眠，2- 异常，3- 休眠硬盘出错，4- 未格式化，5- 未连接状态(网络硬盘)，6- 硬盘正在格式化

See Also

NET_DVR_WORKSTATE_V30 NET_ITS_WORKSTATE


NET_DVR_DISP_CHAN_STATUS

显示通道状态结构体。

struct{
  BYTE   byDispStatus;
  BYTE   byBVGA;
  BYTE   byVideoFormat;
  BYTE   byWindowMode;
  BYTE   byJoinDecChan[MAX_WINDOWS];
  BYTE   byFpsDisp[NET_DVR_MAX_DISPREGION];
  BYTE   byRes[32];
}NET_DVR_DISP_CHAN_STATUS,*LPNET_DVR_DISP_CHAN_STATUS;

Members

byDispStatus
显示状态：0-未显示，1-启动显示
byBVGA
显示接口，0-BNC输出，1-VGA输出，2-HDMI输出，3-DVI输出
byVideoFormat
视频制式，具体定义如下：
enum{
  VS_NON  = 0,
  VS_NTSC = 1,
  VS_PAL  = 2
}VIDEO_STANDARD
VS_NON
无
VS_NTSC
NTSC制式
VS_PAL
PAL制式
byWindowMode
当前画面模式
byJoinDecChan
各个子窗口关联的解码通道
byFpsDisp
每个子画面的显示帧率
byRes
保留，置为0

See Also

NET_DVR_DECODER_WORK_STATUS


NET_DVR_DISP_CHAN_STATUS_V41

显示通道状态结构体。

struct{
  BYTE    byDispStatus;
  BYTE    byBVGA;
  BYTE    byVideoFormat;
  BYTE    byWindowMode;
  BYTE    byJoinDecChan[MAX_WINDOWS_V41];
  BYTE    byFpsDisp[MAX_WINDOWS_V41];
  BYTE    byScreenMode;
  BYTE    byRes1[3];
  DWORD   dwDispChan;
  BYTE    byRes2[24];
}NET_DVR_DISP_CHAN_STATUS_V41,*LPNET_DVR_DISP_CHAN_STATUS_V41;

Members

byDispStatus
显示状态：0-未显示，1-启动显示
byBVGA
显示接口，0-BNC输出，1-VGA输出，2-HDMI输出，3-DVI输出，0xff-无效
byVideoFormat
视频制式，具体定义如下：
enum{
  VS_NON  = 0,
  VS_NTSC = 1,
  VS_PAL  = 2
}VIDEO_STANDARD
VS_NON
无
VS_NTSC
NTSC制式
VS_PAL
PAL制式
byWindowMode
当前画面模式
byJoinDecChan
各个子窗口关联的解码通道
byFpsDisp
每个子画面的显示帧率
byScreenMode
屏幕模式：0- 普通，1- 大屏
byRes1
保留，置为0
dwDispChan
显示通道号，获取全部显示通道状态时有效，设置时可填0
byRes2
保留，置为0

See Also

NET_DVR_DECODER_WORK_STATUS_V41

NET_DVR_GetDeviceStatus


NET_DVR_DISP_LOGOCFG

上传的LOGO的结构体。

struct{
  DWORD   dwCorordinateX;
  DWORD   dwCorordinateY;
  WORD    wPicWidth;
  WORD    wPicHeight;
  BYTE    byRes1[4];
  BYTE    byFlash;
  BYTE    byTranslucent;
  BYTE    byRes2[6];
  DWORD   dwLogoSize;
}NET_DVR_DISP_LOGOCFG,*LPNET_DVR_DISP_LOGOCFG;

Members

dwCorordinateX
图片显示区域X坐标
dwCorordinateY
图片显示区域Y坐标
wPicWidth
图片宽
wPicHeight
图片高
byRes1
保留，置为0
byFlash
是否闪烁：0-不闪烁，1-闪烁
byTranslucent
是否半透明：0-不半透明，1-半透明
byRes2
保留，置为0
dwLogoSize
LOGO的大小，包括BMP的文件头

Remarks

解码器支持的LOGO图片要求：BMP图片，位深24，长宽是32的倍数，最大是128*128（即大小不能超过100K）。

录播主机支持的LOGO图片参数可以NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，录播主机能力RecordingHostAbility)获取，对应节点<LogoOverlay>。

See Also

NET_DVR_UploadLogo


NET_DVR_DISP_SCREEN

屏幕和设备关系信息结构体。

struct{
  DWORD    dwSize;
  WORD     wScreenID;
  BYTE     byWallNo;
  BYTE     byRes1;
  DWORD    dwDeviceIndex;
  BYTE     byRes2[16];
}NET_DVR_DISP_SCREEN,*LPNET_DVR_DISP_SCREEN;

Members

dwSize
结构体大小
wScreenID
屏幕ID号，ID号从1开始
byWallNo
电视墙号
byRes1
保留
dwDeviceIndex
输出设备序号，从1开始
byRes2
保留

Remarks

对于集中式多屏控制器，dwDeviceIndex表示输出通道号，从1开始。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig

NET_DVR_SetScreenRelation


NET_DVR_DISPINFO

解码器或者大屏显示通道信息结构体。

struct{
  BYTE     byChanNums;
  BYTE     byStartChan;
  BYTE     byRes[2];
  DWORD    dwSupportResolution[MAX_SUPPORT_RES];
}NET_DVR_DISPINFO,*LPNET_DVR_DISPINFO;

Members

byChanNums
通道个数，该参数在大屏中无效
byStartChan
起始通道号，该参数在大屏中无效
byRes
保留，置为0
dwSupportResolution
支持的分辨率，具体定义如下所示：
宏定义 宏定义值
MAKE_RESOLUTION(_interlace_, _width_, _height_, _fps_) 		含义
NOT_AVALIABLE | MAKE_RESOLUTION(0,0,0,0) | 无
SVGA_60HZ | MAKE_RESOLUTION(0, 800, 600, 60) | SVGA:800*600，频率：60HZ
SVGA_75HZ | MAKE_RESOLUTION(0, 800, 600, 75) | SVGA:800*600，频率：75HZ
XGA_60HZ | MAKE_RESOLUTION(0, 1024, 768, 60) | XGA:1024*768，频率：60HZ
XGA_75HZ | MAKE_RESOLUTION(0, 1024, 768, 75) | XGA:1024*768，频率：75HZ
SXGA_60HZ | MAKE_RESOLUTION(0, 1280, 1024, 60) | SXGA:1280*1024，频率：60HZ
SXGA2_60HZ | MAKE_RESOLUTION(0, 1280, 960, 60) | SXGA2:1280*960，频率：60HZ
_720P_60HZ | MAKE_RESOLUTION(0, 1280, 720, 60) | 720P:1280*720，频率：60HZ
_720P_50HZ | MAKE_RESOLUTION(0, 1280, 720, 50) | 720P:1280*720，频率：50HZ
_1080I_60HZ | MAKE_RESOLUTION(1, 1920, 1080, 60) | 1080I:1920*1080，频率：60HZ
_1080I_50HZ | MAKE_RESOLUTION(1, 1920, 1080, 50) | 1080I:1920*1080，频率：50HZ
_1080P_60HZ | MAKE_RESOLUTION(0, 1920, 1080, 60) | 1080P:1920*1080，频率：60HZ
_1080P_50HZ | MAKE_RESOLUTION(0, 1920, 1080, 50) | 1080P:1920*1080，频率：50HZ
_1080P_30HZ | MAKE_RESOLUTION(0, 1920, 1080, 30) | 1080P:1920*1080，频率：30HZ
_1080P_25HZ | MAKE_RESOLUTION(0, 1920, 1080, 25) | 1080P:1920*1080，频率：25HZ
_1080P_24HZ | MAKE_RESOLUTION(0, 1920, 1080, 24) | 1080P:1920*1080，频率：24HZ
UXGA_60HZ | MAKE_RESOLUTION(0, 1600, 1200, 60) | UXGA:1600*1200，频率：60HZ
UXGA_30HZ | MAKE_RESOLUTION(0, 1600, 1200, 30) | UXGA:1600*1200，频率：30HZ
WSXGA_60HZ | MAKE_RESOLUTION(0, 1680, 1050, 60) | WSXGA:1680*1050，频率：60HZ
WUXGA_60HZ | MAKE_RESOLUTION(0, 1920, 1200, 60) | WUXGA:1920*1200，频率：60HZ
WUXGA_30HZ | MAKE_RESOLUTION(0, 1920, 1200, 30) | WUXGA:1920*1200，频率：30HZ
WXGA_60HZ | MAKE_RESOLUTION(0, 1360, 768, 60) | WXGA:1360*768，频率：60HZ
SXGA_PLUS_60HZ | MAKE_RESOLUTION(0, 1400, 1050, 60) | SXGA_PLUS:1400*1050，频率：60HZ

Remarks

#define MAKE_RESOLUTION(_interlace_, _width_, _height_, _fps_) \
(((_interlace_)<<28) \
|((((_width_)>>3)&0x1ff)<<19)\
|((((_height_)>>1)&0x7ff)<<8) \
|((_fps_)&0xff))

#define GET_RES_INTERLACE(_res_) (((_res_)>>28)&0x1)

#define GET_RES_WIDTH(_res_) ((((_res_)>>19)&0x1ff)<<3)

#define GET_RES_HEIGHT(_res_) ((((_res_)>>8)&0x7ff)<<1)

#define GET_RES_FPS(_res_) ((_res_)&0xff)

See Also

NET_DVR_MATRIX_ABILITY_V41


NET_DVR_DISPLAY_COLOR_CTRL

显示单元颜色控制结构体。

struct{
  BYTE    byColorType;
  BYTE    byScale;
  BYTE    byRes[14];
}NET_DVR_DISPLAY_COLOR_CTRL,*LPNET_DVR_DISPLAY_COLOR_CTRL;

Members

byColorType
类型：1- 亮度，2- 对比度，3- 饱和度，4- 清晰度
byScale
控制取值：-1或者+1
byRes
保留

See Also

NET_DVR_SCREEN_CONTROL_PARAM


NET_DVR_DISPLAY_EFFECT_CFG

显示输出效果参数结构体。

struct{
  DWORD            dwSize;
  NET_DVR_COLOR    struColor;
  BYTE             byRes[32];
}NET_DVR_DISPLAY_EFFECT_CFG, *LPNET_DVR_DISPLAY_EFFECT_CFG;

Members

dwSize
结构体大小
struColor
显示输出效果相关参数
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DISPLAY_POSITION_CTRL

显示单元位置控制结构体。

struct{
  BYTE    byPositionType;
  BYTE    byScale;
  BYTE    byRes[14];
}NET_DVR_DISPLAY_POSITION_CTRL,*LPNET_DVR_DISPLAY_POSITION_CTRL;

Members

byPositionType
类型：1- 水平位置，2- 垂直位置
byScale
控制取值：-1或者+1
byRes
保留

See Also

NET_DVR_SCREEN_CONTROL_PARAM


NET_DVR_DISPLAYCFG

显示输出配置结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_DISPLAYPARAM    struDisplayParam[MAX_DISPLAY_NUM];
  BYTE                    byRes[128];
}NET_DVR_DISPLAYCFG,*LPNET_DVR_DISPLAYCFG;

Members

dwSize
结构体大小
struDisplayParam
显示输出参数
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_DISPLAYPARAM

显示输出参数结构体。

struct{
  DWORD    dwDisplayNo;
  BYTE     byDispChanType;
  BYTE     byRes[11];
}NET_DVR_DISPLAYPARAM,*LPNET_DVR_DISPLAYPARAM;

Members

dwDisplayNo
显示输出号
byDispChanType
输出连接模式：1- BNC，2- VGA，3- HDMI，4- DVI，5- SDI，6- FIBER，7- RGB，8- YPrPb，9- VGA/HDMI/DVI自适应，10- 3GSDI，11- VGA/DVI自适应，0xff- 无效
byRes
保留，置为0

See Also

NET_DVR_DISPLAYCFG


NET_DVR_DISPWINDOWMODE

解码器显示通道画面分割模式结构体。

struct{
  BYTE    byDispChanType;
  BYTE    byDispChanSeq;
  BYTE    byRes[2];
  BYTE    byDispMode[MAX_WINDOWS_NUM];
}NET_DVR_DISPWINDOWMODE,*LPNET_DVR_DISPWINDOWMODE;

Members

byDispChanType
显示通道类型：0- BNC，1- VGA，2- HDMI，3- DVI
byDispChanSeq
显示通道序号，从1开始，如果类型是VGA，则表示第几个VGA
byRes
保留，置为0
byDispMode
支持的画面分割模式。

Remarks

取值举例说明：
NET_DVR_MATRIX_ABILITY_V41  m_Ability;
m_Ability.struDispMode[0].byDispChanType = 1;   //VGA
m_Ability.struDispMode[0].byDispChanSeq  = 1;   //第一个VGA
m_Ability.struDispMode[0].byDispMode[0]  = 1;   //1画面
m_Ability.struDispMode[0].byDispMode[1]  = 4;   //4画面
m_Ability.struDispMode[0].byDispMode[2]  = 0;
...
m_Ability.struDispMode[0].byDispMode[11] = 0;
m_Ability.struDispMode[1].byDispChanType = 2;   //HDMI
m_Ability.struDispMode[1].byDispChanSeq  = 1;   //第一个HDMI
m_Ability.struDispMode[1].byDispMode[0]  = 1;   //1画
m_Ability.struDispMode[1].byDispMode[1]  = 4;   //4画面
m_Ability.struDispMode[1].byDispMode[2]  = 16;  //16画面
m_Ability.struDispMode[1].byDispMode[3]  = 0;
...
m_Ability.struDispMode[1].byDispMode[11] = 0;
...
//m_Ability.struDispMode[2]~ m_Ability.struDispMode[31]所有的参数值为0
...
则该能力集表示只支持一个VGA和一个HDMI，VGA支持1、4画面分割，HDMI支持1、4、16画面分割。

See Also

NET_DVR_MATRIX_ABILITY_V41


NET_DVR_DNMODE

移动侦测日夜模式参数结构体。

struct{
  BYTE    byObjectSize;
  BYTE    byMotionSensitive;
  BYTE    byRes[6];
}NET_DVR_DNMODE, *LPNET_DVR_DNMODE;

Members

byObjectSize
占比参数，移动物体大小占设置的侦测区域的比例（只检测大于byObjectSize的物体），取值范围：0~100
byMotionSensitive
移动侦测灵敏度，取值范围：1~100，越高越灵敏，0xff表示关闭
byRes
保留，置为0

See Also

NET_DVR_MOTION_MULTI_AREAPARAM


NET_DVR_DOME_MOVEMENT_PARAM

球机机芯参数结构体。

struct{
  WORD    wMaxZoom;
  BYTE    byRes[42];
}NET_DVR_DOME_MOVEMENT_PARAM, *LPNET_DVR_DOME_MOVEMENT_PARAM;

Members

wMaxZoom
球机最大倍率系数
byRes
处理方式参数

See Also

NET_DVR_GetDVRConfig


NET_DVR_DOOR_CFG

门参数（或者梯控的楼层参数）配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byDoorName[DOOR_NAME_LEN];
  BYTE     byMagneticType;
  BYTE     byOpenButtonType;
  BYTE     byOpenDuration;
  BYTE     byAccessibleOpenDuration;
  BYTE     byMagneticAlarmTimeout;
  BYTE     byEnableDoorLock;
  BYTE     byEnableLeaderCard;
  BYTE     byLeaderCardMode;
  DWORD    dwLeaderCardOpenDuration;
  BYTE     byStressPassword[STRESS_PASSWORD_LEN];
  BYTE     bySuperPassword[SUPER_PASSWORD_LEN];
  BYTE     byUnlockPassword[UNLOCK_PASSWORD_LEN];
  BYTE     byUseLocalController;
  BYTE     byRes1;
  WORD     wLocalControllerID;
  WORD     wLocalControllerDoorNumber;
  WORD     wLocalControllerStatus;
  BYTE     byLockInputCheck;
  BYTE     byLockInputType;
  BYTE     byDoorTerminalMode;
  BYTE     byOpenButton;
  BYTE     byLadderControlDelayTime;
  BYTE     byRes2[43];
}NET_DVR_DOOR_CFG,*LPNET_DVR_DOOR_CFG;

Members

dwSize
结构体大小
byDoorName
门名称
byMagneticType
门磁类型：0- 常闭，1- 常开
byOpenButtonType
开门按钮类型：0- 常闭，1- 常开
byOpenDuration
开门持续时间（楼层继电器动作时间），取值范围：1~255s
byAccessibleOpenDuration
残障人士卡开门持续时间，取值范围：1~255s
byMagneticAlarmTimeout
门磁检测超时报警时间，取值范围：0~255s，0表示不报警
byEnableDoorLock
是否启用闭门回锁：0- 否，1- 是
byEnableLeaderCard
是否启用首卡常开功能：0- 否，1- 是
byLeaderCardMode
首卡模式，0-不启用首卡功能，1-首卡常开模式，2-首卡授权模式（使用了此字段，则byEnableLeaderCard无效）
dwLeaderCardOpenDuration
首卡常开持续时间，取值范围：1~1440，单位：min（分钟）
byStressPassword
胁迫密码
bySuperPassword
超级密码
byUnlockPassword
解除码，解锁密码
byUseLocalController
只读，是否连接在就地控制器上，0-否，1-是
byRes1
保留，置为0
wLocalControllerID
只读，就地控制器序号，byUseLocalController=1时有效，1-64,0代表未注册
wLocalControllerDoorNumber
只读，就地控制器的门编号，byUseLocalController=1时有效，1-4,0代表未注册
wLocalControllerStatus
只读，byUseLocalController=1时有效，就地控制器在线状态：0-离线，1-网络在线，2-环路1上的RS485串口1，3-环路1上的RS485串口2，4-环路2上的RS485串口1，5-环路2上的RS485串口2，6-环路3上的RS485串口1，7-环路3上的RS485串口2，8-环路4上的RS485串口1，9-环路4上的RS485串口2（只读）
byLockInputCheck
是否启用门锁输入检测(1字节，0不启用，1启用，默认不启用)
BYTE byLockInputType
门锁输入类型(1字节，0常闭，1常开，默认常闭)
byDoorTerminalMode
门相关端子工作模式(1字节，0防剪防短，1普通，默认防剪防短)
byOpenButton
是否启用开门按钮(0是，1否，默认是)
byLadderControlDelayTime
梯控访客延迟时间，取值范围：1~255，单位：分钟
byRes2
保留，置为0

Remarks

门参数能力，对应门禁主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY）中节点<Door>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DOOR_STATUS_PLAN

门状态计划配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTemplateNo;
  BYTE     byRes[64];
}NET_DVR_DOOR_STATUS_PLAN,*LPNET_DVR_DOOR_STATUS_PLAN;

Members

dwSize
结构体大小
dwTemplateNo
计划模板编号，为0表示取消关联、恢复默认状态（普通状态）。非0回复关联（门序号，与相同序号的门状态计划模板关联）
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_DOWN_LOAD_REQUEST

资源图片查询条件结构体。

struct{
  NET_DVR_STREAM_INFO    struStreamInfo;
  char                   sSnapShotURL[256];
  BYTE                   byRes[32];
}NET_DVR_DOWN_LOAD_REQUEST,*LPNET_DVR_DOWN_LOAD_REQUEST;

Members

struStreamInfo
流信息
sSnapShotURL
诊断抓图URL，长度小于256个字节
byRes
保留

Remarks

抓图的URL(sSnapShotURL)由诊断服务器上传，在报警监听NET_DVR_StartListen_V30设置的报警回调函数中获取（NET_DVR_DIAGNOSIS_UPLOAD）。

See Also

NET_DVR_GetDeviceConfig


NET_DVR_DOWNLOAD_ALARM_RECORD_COND

报警录像下载条件结构体。

struct{
  DWORD   dwSize;
  WORD    wAlarmRecordID;
  BYTE    byRes[130];
}NET_DVR_DOWNLOAD_ALARM_RECORD_COND, *LPNET_DVR_DOWNLOAD_ALARM_RECORD_COND;

Members

dwSize
结构体大小
wAlarmRecordID
报警录像ID
byRes
保留，置为0

See Also

NET_DVR_StartDownload


NET_DVR_DOWNLOAD_BY_NAME_COND

按文件名下载集群录像文件结构体。

struct{
  char    *pFileName,
  char    *pSavedFileName,
  NET_DVR_ADDRESS    struAddr;
  BYTE    byRes[[256];
}NET_DVR_DOWNLOAD_BY_NAME_COND, *LPNET_DVR_DOWNLOAD_BY_NAME_COND;

Members

pFileName
回放文件名，文件名长度需小于100字节
pSavedFileName
文件保存位置，保存位置长度需小于256字节
struAddr
文件所在集群中CS地址信息，该信息文件查找时会返回；如果为空表示本登录地址
byRes
保留参数，置为0

See Also

NET_DVR_GetFileByName_V50


NET_DVR_DOWNLOAD_CB_PARAM

文件下载输入参数结构体。

struct{
  DOWNLOAD_DATA_CB    fnDownloadDataCB;
  void                *pUserData;
  BOOL                i64Offset;
  BYTE                byRes[256];
}NET_DVR_DOWNLOAD_CB_PARAM,*LPNET_DVR_DOWNLOAD_CB_PARAM;

Members

fnDownloadDataCB
下载数据回调函数
pUserData
用户数据
i64Offset
下载文件的偏移量，用于断点续传
byRes
保留，置为0

Callback Function

typedef BOOL(*DOWNLOAD_DATA_CB)(
  LONG                    lHandle,
  NET_DOWNLOAD_CB_INFO    *pCBInfo,
  void                    *pUserData
);

Callback Function Parameters

lHandle
[out] 文件下载句柄，NET_DVR_StartDownload的返回值
pCBInfo
[out] 下载回调的数据信息
pUserData
[out] 用户数据

Remarks

  • 设备是否支持下载功能对应视图库总能力集(VideoImgDBCap)中节点<isSupportDownLoad>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CAP)。

See Also

NET_DVR_StartDownload


NET_DVR_DOWNLOAD_FILEVOLUME_PARAM

文件下载输入参数结构体。

struct{
  DWORD               dwSize;
  BYTE                sUrl[MAX_URL_LEN];
  BYTE                byRes[248];
  DOWNLOAD_DATA_CB    fnDownloadDataCB;
  void                *pUserData;
}NET_DVR_DOWNLOAD_FILEVOLUME_PARAM,*LPNET_DVR_DOWNLOAD_FILEVOLUME_PARAM;

Members

dwSize
结构体大小
sUrl
文件上传时返回的URL或者ID，由设备生成
byRes
保留，置为0
fnDownloadDataCB
下载数据回调函数
pUserData
用户数据

Callback Function

typedef BOOL(*DOWNLOAD_DATA_CB)(
  LONG                    lHandle,
  NET_DOWNLOAD_CB_INFO    *pCBInfo,
  void                    *pUserData
);

Callback Function Parameters

lHandle
[out] 文件下载句柄，NET_DVR_StartDownload的返回值
pCBInfo
[out] 下载回调的数据信息
pUserData
[out] 用户数据

See Also

NET_DVR_StartDownload


NET_DVR_DOWNLOAD_QOS

下载流控参数结构体。

struct{
  DWORD    dwMaxSpeed;
  BYTE     byRes[256];
 }NET_DVR_DOWNLOAD_QOS,*LPNET_DVR_DOWNLOAD_QOS;

Members

dwMaxSpeed
流控最大速度，单位：kbps
byRes
保留，置为0

Remarks

  • 设备是否支持下载流控功能对应视图库总能力集(VideoImgDBCap)中节点<isSupportDownLoadQos>，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CAP)。

See Also

NET_DVR_DownloadControl


NET_DVR_DPC_PARAM

坏点校正参数结构体。

struct{
  DWORD            dwSize;
  DWORD            dwChannel;
  WORD             wCtrlType;
  BYTE             byDPCMode;
  BYTE             byRes;
  NET_VCA_POINT    struPoint;
  BYTE             byRes1[64];
}NET_DVR_DPC_PARAM,*LPNET_DVR_DPC_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
wCtrlType
控制类型，具体定义如下表所示
wCtrlType宏定义 | 宏定义值 | 含义
DPC_CORRECT | 1 | 校正
DPC_CORRECT_CANCEL | 2 | 取消校正
DPC_CROSS_DISPALY_OPEN | 3 | 坏点检测十字叉显示开启
DPC_CROSS_DISPALY_CLOSE | 4 | 坏点检测十字叉显示关闭
DPC_POINT | 5 | 坏点校正坐标
DPC_UP | 6 | 坏点校正坐标点向上偏移
DPC_DOWN | 7 | 坏点校正坐标点向下偏移
DPC_RIGHT | 8 | 坏点校正坐标点向右偏移
DPC_LEFT | 9 | 坏点校正坐标点向左偏移
DPC_ALL_CORRECT | 10 | 所有坏点校正
DPC_SAVE | 11 | 坏点保存
byDPCMode
坏点校正模式：0-手动校正，1-自动校正
手动校正：默认为手动校正模式，使用wCtrlType操作类型进行手动校正
自动校正：设备将自动进行校正，无需再进行手动校正，此时wCtrlType、truPoint参数无效
byRes
保留，置为0
struPoint
输入的图像平面坐标，归一化到0-1，wCtrlType为DPC_POINT时有效
byRes1
保留，置为0

Remarks

  • 坏点保存：是将坏点坐标告诉设备应用层加以保存（暂时先不下发给机芯），等下发所有坏点校正的时候，将原先保存的所有坏点一起下发给机芯。校正：是将单个坏点告诉给设备应用层，设备应用层将该坏点直接下发给机芯。
  • 设备是否支持坏点校正控制功能或者支持的参数能力，可以通过设备能力集进行判断，对应前端参数能力集(CAMERAPARA)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20，节点：<DPCParam>。

See Also

NET_DVR_RemoteControl


NET_DVR_DRAG_POS_PARAM

PTZ拖动参数结构体。

struct{
  DOWRD            dwChannel;
  DOWRD            dwPtzChannel;
  NET_VCA_POINT    struToPoint;
  NET_VCA_POINT    struOriPoint;
  BYTE             byRes[56];
}NET_DVR_DRAG_POS_PARAM,*LPNET_DVR_DRAG_POS_PARAM;

Members

dwChannel
设备通道号
dwPtzChannel
dwChannel所指通道模式为FISHEYE_STREAM_MODE_FISHEYE（鱼眼模式时），此值为其拖动所联动的ptz通道；dwChannel通道模式为非鱼眼模式时，置为0即可
struToPoint
拖动画面要跳转到的目标点，目标点位置相对于预览画面的左上角
struOriPoint
拖动操作起始点，此点为当次拖动操作开始时，鼠标指针相对于预览画面左上角的位置
byRes
保留，置为0

Remarks

通道的码流模式通过接口NET_DVR_GetDeviceStatus（命令：NET_DVR_GET_FISHEYE_STREAM_STATUS）获取。

通过与鱼眼设备之间建立长连接，当用户在预览窗口内进行拖动PTZ时，客户端可不断的发送当前鼠标指针所处的ptz坐标到设备，用以实时切换预览画面。

See Also

NET_DVR_SendRemoteConfig


NET_DVR_DRAWFRAME_DISK_QUOTA_CFG

抽帧通道磁盘配额结构体。

struct{
  DWORD   dwSize;
  BYTE    byPicQuota;
  BYTE    byRecordQuota;
  BYTE    byDrawFrameRecordQuota;
  BYTE    byRes[61];
}NET_DVR_DRAWFRAME_DISK_QUOTA_CFG, *LPNET_DVR_DRAWFRAME_DISK_QUOTA_CFG;

Members

dwSize
结构体大小
byPicQuota
图片百分比，取值范围：[0%,30%]
byRecordQuota
录像百分比，取值范围：[20%,40%]
byDrawFrameRecordQuota
抽帧录像百分比，取值范围：[30%,80%]
byRes
保留

Remarks

当存储模式为抽帧模式时，该配额设置有效。区别于之前的配额模式，抽帧模式将录像分为抽帧录像配额和非抽帧录像配额，且对于每个通道而言，磁盘空间平均分配。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_AUTO_LIMIT_WAVE_CFG

设备网络SDK开发使用手册

NET_DVR_DSP_PARAMETER_CFG

数字信号处理芯片参数结构体。

struct{
  BYTE    byFBCEnable;
  BYTE    byVolume;
  BYTE    byRes[22];
 }NET_DVR_DSP_PARAMETER_CFG,*LPNET_DVR_DSP_PARAMETER_CFG;

Members

byFBCEnable
FBC开关：0- 不开启，1- 开启
byVolume
输入音量，取值范围：[0,255]
byRes
保留，置为0

See Also

NET_DVR_MIX_AUDIOIN_CFG


NET_DVR_DVCS_STATE_ALARM

分布式多屏控制器报警信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byAlarmType;
  BYTE     byDeviceType;
  BYTE     byWallNo;
  BYTE     byDeviceChanIndex;
  DWORD    dwDeviceIndex;
  WORD     wResolutionX;
  WORD     wResolutionY;
  WORD     wTemperature;
  BYTE     byRes[86];
}NET_DVR_DVCS_STATE_ALARM,*LPNET_DVR_DVCS_STATE_ALARM;

Members

dwSize
结构体大小
byAlarmType
报警类型：1- 设备上线，2- 设备离线，3- 服务器上线，4- 服务器离线，5-管理员登陆，6-预案开始，7-预案结束，8-分辨率变化，9-图像切割失败，10-设备资源不足，11-温度异常
byDeviceType
设备类型(只能获取)，取值定义如下：
enum _NET_DVCS_DEVICE_TYPE_{
  NET_DVR_BNC_PROC = 1,
  NET_DVR_RGB_PROC,
  NET_DVR_STP_PROC,
  NET_DVR_DISP_PROC,
  NET_DVR_NETSIGNAL
}NET_DVCS_DEVICE_TYPE
NET_DVR_BNC_PROC
BNC处理器
NET_DVR_RGB_PROC
RGB处理器
NET_DVR_STP_PROC
转码处理器
NET_DVR_DISP_PROC
显示处理器
NET_DVR_NETSIGNAL
网络信号源
byWallNo
墙号，从1开始，0表示无效
byDeviceChanIndex
设备通道号，0表示无效，其他值表示通道号
dwDeviceIndex
设备序号，0表示无效
wResolutionX
分辨率的宽度，单位：像素，0表示无效
wResolutionY
分辨率的高度，单位：像素，0表示无效
wTemperature
设备温度，单位：摄氏度，0表示无效
byRes
保留，置为0

Remarks

前端输入分辨率的变化，可能导致该分辨率下图像不能被切割并放大到全屏。前端输入分辨率的变化，也可能导致解码资源不足，在解码资源不足的情况下，该解码设备的所有通道都会受影响，与通道号无关。

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_DVR_NET_DISK_MODIFY

DVR网盘修改参数结构体。

struct{
  DWORD             dwSize;
  char              szOldDvrNetDiskName[MAX_NAMELEN];
  char              szNewDvrNetDiskName[MAX_NAMELEN];
  NET_DVR_IPADDR    struWarrantIP;
  BYTE              byRes[32];
}NET_DVR_DVR_NET_DISK_MODIFY,*LPNET_DVR_DVR_NET_DISK_MODIFY;

Members

dwSize
结构体大小
szOldDvrNetDiskName
原DVR网盘共享名
szNewDvrNetDiskName
新DVR网盘共享名
struWarrantIP
新授权的DVR网盘IP
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_DVR_PARAM

DVR网盘参数结构体。

struct{
  DWORD             dwHCapacity;
  DWORD             dwLCapacity;
  char              szName[MAX_NAMELEN];
  DWORD             dwBlockSize;
  NET_DVR_IPADDR    struSyncBeginTime;
  char              szArrayIDGroup[NAME_LEN];
}NET_DVR_DVR_PARAM, *LPNET_DVR_DVR_PARAM;

Members

dwHCapacity
DVR网盘大小高32位
dwLCapacity
DVR网盘大小低32位
szName
DVR网盘名称
dwBlockSize
最小存储单元块大小
bySyncProgress
授权的DVR网盘IP
szArrayIDGroup
使用的阵列名称组，多个阵列名称以逗号隔开，为空则使用默认阵列

See Also

NET_DVR_VD_UNION


NET_DVR_EACH_LESSON_INFO

每节课信息结构体。

struct{
  NET_DVR_SCHEDTIME    struSchedTime;
  WORD                 wCourseIndex;
  WORD                 wSessionIndex;
  BYTE                 byRes[4];
}NET_DVR_EACH_LESSON_INFO,*LPNET_DVR_EACH_LESSON_INFO;

Members

struSchedTime
课程起止时间
wCourseIndex
课程索引
wSessionIndex
课程节次
byRes
保留，置为0

See Also

NET_DVR_CURRICULUM_CFG


NET_DVR_EAGLEFOCUSING_CALCFG

鹰视聚焦标定配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnabled;
  BYTE                           byRes1[3];
  NET_DVR_EAGLEFOCUSING_SENCE    struEagleFoucsing[MAX_SENCE_NUM];
  BYTE                           byRes[128];
}NET_DVR_EAGLEFOCUSING_CALCFG,*LPNET_DVR_EAGLEFOCUSING_CALCFG;

Members

dwSize
结构体大小
byEnabled
是否开启标定：0-中止标定，1-开始标定（该节点设置时有效，获取时无效）
byRes1
保留，置为0
struEagleFoucsing
鹰视聚焦标定参数
byRes
保留，置为0

Remarks

  • 设备是否支持鹰视聚焦标定配置或者支持的参数能力，可以通过设备能力集进行判断，对应鹰视聚焦标定配置能力集(EagleFocusing)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EAGLEFOCUS_CALCFG_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_EAGLEFOCUSING_CTRL

鹰视聚焦配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[511];
}NET_DVR_EAGLEFOCUSING_CTRL,*LPNET_DVR_EAGLEFOCUSING_CTRL;

Members

dwSize
结构体大小
byEnabled
使能：0- 关闭鹰视聚焦，1- 开启鹰视聚焦
byRes
保留，置为0

Remarks

  • 设备是否支持鹰视聚焦配置或者支持的参数能力，可以通过设备能力集进行判断，对应鹰视聚焦配置能力集(Control)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EAGLEFOCUSING_CFG_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_EAGLEFOCUSING_SENCE

鹰视聚焦标定参数结构体。

struct{
  BYTE               byRuleType;
  BYTE               byRes1[3];
  NET_VCA_POLYGON    struRegion;
  BYTE               byRes[128];
}NET_DVR_EAGLEFOCUSING_SENCE, *LPNET_DVR_EAGLEFOCUSING_SENCE;

Members

byRuleType
规则类型：0- 线
byRes1
保留
struRegion
区域范围（byRuleType为0时规则类型为线类型，区域坐标只支持两个坐标点，一条线）
byRes
保留

See Also

NET_DVR_EAGLEFOCUSING_CALCFG


NET_DVR_ELECTRONICSTABILIZATION

电子防抖参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byLevel;
  BYTE    byRes[6];
}NET_DVR_ELECTRONICSTABILIZATION, *LPNET_DVR_ELECTRONICSTABILIZATION;

Members

byMode
电子防抖使能：0- 不启用，1- 启用
byLevel
电子防抖等级，取值范围：0~100
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_ELEVATORCONTROL_CFG

可视对讲梯控器参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1;
  BYTE     byInterfaceType;
  BYTE     byRS485Protocol;
  BYTE     byNetworkType;
  BYTE     byRes[63];
}NET_DVR_ELEVATORCONTROL_CFG, *LPNET_DVR_ELEVATORCONTROL_CFG;

Members

dwSize
结构体大小
byEnable
是否启用梯控：0- 否，1- 是
byRes1
保留，置为0
byInterfaceType
接口类型：0- 无，1- RS485，2- 网口
byRS485Protocol
RS485协议类型：0- 未知，1- 私有，0xff- 自定义，当byInterfaceType取值为1时有效
byNetworkType
网口协议类型：0- 未知，1- 私有，0xff- 自定义，当byInterfaceType取值为2时有效
byRes
保留，置为0

Remarks

梯控器参数能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<ElevatorControl>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ELEVATORCONTROL_CFG_V40

可视对讲梯控器参数配置结构体。

struct{
  DWORD             dwSize;
  BYTE              byEnable;
  BYTE              byRes1;
  BYTE              byInterfaceType;
  BYTE              byRS485Protocol;
  BYTE              byNetworkType;
  BYTE              byRes2;
  WORD              wServerPort;
  NET_DVR_IPADDR    struServerIP;
  BYTE              byRes[256];
}NET_DVR_ELEVATORCONTROL_CFG_V40, *LPNET_DVR_ELEVATORCONTROL_CFG_V40;

Members

dwSize
结构体大小
byEnable
是否启用梯控：0- 否，1- 是
byRes1
保留，置为0
byInterfaceType
接口类型：0- 无，1- RS485，2- 网口
byRS485Protocol
RS485协议类型：0- 未知，1- 私有，0xff- 自定义，当byInterfaceType取值为1时有效
byNetworkType
网口协议类型：0- 未知，1- 私有，0xff- 自定义，当byInterfaceType取值为2时有效
byRes2
保留，置为0
wServerPort
梯控服务器端口号，当网卡协议类型为“1- 私有”时有效
struServerIP
梯控服务器IP地址，当网卡协议类型为“1- 私有”时有效
byRes
保留，置为0

Remarks

梯控器参数能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<ElevatorControl>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_EMAILCFG

网络应用参数（EMAIL）结构体。

struct{
  DWORD    dwSize;
  char     sUserName[32];
  char     sPassWord[32];
  char     sFromName[32];
  char     sFromAddr[48];
  char     sToName1[32];
  char     sToName2[32];
  char     sToAddr1[48];
  char     sToAddr2[48];
  char     sEmailServer[32];
  BYTE     byServerType;
  BYTE     byUseAuthen;
  BYTE     byAttachment;
  BYTE     byMailinterval;
}NET_DVR_EMAILCFG, *LPNET_DVR_EMAILCFG;

Members

dwSize
结构体大小
sUserName
Email用户名
sPassWord
Email密码
sFromName
发件人名称
sFromAddr
发件人地址，字符串中的第一个字符和最后一个字符不能是"@"，并且字符串中要有"@"字符
sToName1
收件人1的名称
sToName2
收件人2的名称
sToAddr1
收件人1的地址
sToAddr2
收件人2的地址
sEmailServer
Email服务器地址
byServerType
Email服务器类型
byUseAuthen
是否启动Email服务器验证：1－是，0－否
byAttachment
是否带附件
byMailinterval
邮件发送间隔：0－2秒，1－3秒，2－4秒，3－5秒

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_EMAILCFG_V30


NET_DVR_EMAILCFG_V30

网络应用参数（EMAIL）结构体。

struct{
  DWORD     dwSize;
  BYTE      sAccount[NAME_LEN];
  BYTE      sPassword[MAX_EMAIL_PWD_LEN];
  struct{
           BYTE   sName[NAME_LEN];
           BYTE   sAddress[MAX_EMAIL_ADDR_LEN];
  }struSender
  BYTE      sSmtpServer[MAX_EMAIL_ADDR_LEN];
  BYTE      sPop3Server[MAX_EMAIL_ADDR_LEN];
  struct{
           BYTE   sName[NAME_LEN];
           BYTE   sAddress[MAX_EMAIL_ADDR_LEN];
  }struReceiver[3];
  BYTE      byAttachment;
  BYTE      bySmtpServerVerify;
  BYTE      byMailInterval;
  BYTE      byEnableSSL;
  WORD      wSmtpPort;
  BYTE      byEnableTLS;
  BYTE      byStartTLS;
  BYTE      byRes[72];
}NET_DVR_EMAILCFG_V30,*LPNET_DVR_EMAILCFG_V30;

Members

dwSize
结构体大小
sAccount
账号
sPassword
密码
sName
发件人姓名
sAddress
发件人地址
sSmtpServer
SMTP服务器
sPop3Server
POP3服务器
sName
收件人姓名
sAddress
收件人地址
byAttachment
是否带附件
bySmtpServerVerify
发送服务器要求身份验证
byMailInterval
邮件发送间隔：0- 2秒，1- 3秒，2- 4秒，3- 5秒
byEnableSSL
是否启用SSL：0-禁用，非0-启用
wSmtpPort
SMTP端口：GMAIL的465，其他为25
byEnableTLS
TLS是否启用：0-不启用，1-启用
byEnableTLS
StartTLS是否启用：0-不启用，1-启用
byRes
保留，置为0

Remarks

SSL与TSL是两种邮件加密方式，可以选择其中一种，两者是互斥的，也可以选择不加密。

See Also

NET_DVR_SERVER_TEST_PARA

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_EMAILCFG


NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG

紧急报警处理控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byCommand;
  BYTE     byType;
  BYTE     byRes[510];
}NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG,*LPNET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG;

Members

dwSize
结构体大小
byCommand
控制命令：0- 中心忙，1- 拒绝
byType
处理类型：0- 紧急报警，1- 业务咨询
byRes
保留，置为0

Remarks

  • 设备是否支持紧急报警处理控制或者支持的参数能力，可以通过设备能力集进行判断，对应紧急报警处理控制能力集(EmergencyAlarmResponseCtrl)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EMERGENCE_ALARM_RESPONSE_CAP。

See Also

NET_DVR_STDControl


NET_DVR_ENCODEINFO

码流压缩参数信息结构体。

struct{
  BYTE     byFormatType;
  BYTE     byVideoEncType;
  WORD     wWidth;
  WORD     wHeight;
  BYTE     byRes1[2];
  DWORD    dwVideoBitrate;
  DWORD    dwVideoFrameRate;
  BYTE     byAudioEncType;
  BYTE     byRes2[15];
}NET_DVR_ENCODEINFO, *LPNET_DVR_ENCODEINFO;

Members

byFormatType
封装类型：1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181），0xff-无效
byVideoEncType
视频编码类型：0-私有264，1-标准h264，2-标准mpeg4，7-M-JPEG，8-MPEG2，0xff-无效
wWidth
图像宽度，单位：像素
wHeight
图像高度，单位：像素
byRes1
保留，置为0
dwVideoBitrate
视频码率，单位：Kbps
dwVideoFrameRate
帧率，200起表示小于1帧/秒的状态，其余值表示实际帧率值。
200- 1/2，201- 1/4，202- 1/8，203- 1/16。
byAudioEncType
音频编码类型：0-G722，1-G711_U，2-G711_A，5-MP2L2，6-G726，7-AAC，0xff-无效
byRes2
保留，置为0

See Also

NET_DVR_TRANSSTATUS


NET_DVR_ENFORCESYS_PARA

车辆稽查参数结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_SPEEDLMT_PARA      struSpeedLmtPara;
  NET_DVR_PLATECHECK_PARA    struPlateCheckPara;
  BYTE                       bySelPeccType;
  BYTE                       byEnfOptHabit;
  BYTE                       byAdjPrevFpsMode;
  BYTE                       byRes1;
  NET_DVR_IPADDR             struUploadServerIp;
  WORD                       wUploadServerPort;
  BYTE                       byRes2[18];
}NET_DVR_ENFORCESYS_PARA, *LPNET_DVR_ENFORCESYS_PARA;

Members

dwSize
结构体大小
struSpeedLmtPara
限速设置
struPlateCheckPara
车牌比对
bySelPeccType
是否选择违章类型，0- 否，1- 是
byEnfOptHabit
取证操作习惯，0- 长按取证，1- 短按两次取证
byAdjPrevFpsMode
预览帧率调节模式
0- 关闭，以固定高帧率(25FPS)预览；
1- 标准，以固定低帧率(6FPS)预览；
2- 自适应，根据GPS速度信息动态调整预览帧率，3秒无有效GPS的情况下，以固定高帧率预览
byRes1
保留
struUploadServerIp
上传服务器地址
wUploadServerPort
上传服务器端口
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ENISSUED_DATADEL

终端出入口控制(清空下发卡片信息)结构体。

struct{
  DWORD    dwSize;
  BYTE     byDevCtrlCode;
  BYTE     byRes[27];
}NET_DVR_ENISSUED_DATADEL, *LPNET_DVR_ENISSUED_DATADEL;

Members

dwSize
结构体大小
byDevCtrlCode
出入口控制机拨码地址，用于区分设备，取值范围：1~255
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_ENTRANCE_CFG

出入口控制参数结构体。

struct{
  DWORD                      dwSize;
  BYTE                       byEnable;
  BYTE                       byBarrierGateCtrlMode;
  BYTE                       byRes1[2];
  DWORD                      dwRelateTriggerMode;
  DWORD                      dwMatchContent;
  NET_DVR_RELAY_PARAM        struRelayRelateInfo[MAX_RELAY_NUM];
  BYTE                       byGateSingleIO[MAX_IOIN_NUM];
  NET_DVR_VEHICLE_CONTROL    struVehicleCtrl[MAX_VEHICLE_TYPE_NUM];
  BYTE                       byRes2[64];
}NET_DVR_ENTRANCE_CFG,*LPNET_DVR_ENTRANCE_CFG;

Members

dwSize
结构体大小
byEnable
使能：0- 关闭，1- 打开
byBarrierGateCtrlMode
道闸控制模式：0- 相机自动控制，1- 平台外部控制
byRes1
保留，置为0
dwRelateTriggerMode
触发模式，参见ITC_TRIGGERMODE_TYPE
dwMatchContent
异常处理，不同异常处理方式的"或"结果：
0x00: 不做匹配
0x01: 车牌匹配（带车牌颜色）
0x02: 车牌匹配（不带车牌颜色）
0x04: 卡号匹配
struRelayRelateInfo
继电器关联配置信息(一个继电器只能控制一个接入设备)，数组0表示继电器1，数组1表示继电器2，依次类推
byGateSingleIO
单个IO触发参数，数组0表示IO1，数组1表示IO2，依次类推，具体数组值的含义：0- 无，1- 道闸开到位，2- 道闸关到位，3- 消防报警
struVehicleCtrl
车辆信息管控：
数组0- 临时车辆配置的模式
数组1- 非授权名单车辆的模式
数组2- 授权名单车辆的模式
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ENTRANCEDEV_COMMAND

终端出入口控制（数据下发）结构体。

struct{
  DWORD    dwSize;
  BYTE     byDevCtrlCode;
  BYTE     byManualIssuedData;
  BYTE     byRes[62];
}NET_DVR_ENTRANCEDEV_COMMAND, *LPNET_DVR_ENTRANCEDEV_COMMAND;

Members

dwSize
结构体大小
byDevCtrlCode
出入口控制机拨码地址，用于区分设备，取值范围：1~255
byManualIssuedData
是否启动手动数据下发：0-关闭，1-开启
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_ESATA_MINISAS_USAGE

eSATA和miniSAS用途配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byESATAUsage[MAX_ESATA_NUM];
  BYTE     byMiniSASUsage[MAX_MINISAS_NUM];
  BYTE     byRes[32;
}NET_DVR_ESATA_MINISAS_USAGE, *LPNET_DVR_ESATA_MINISAS_USAGE;

Members

dwSize
结构体大小
byESATAUsage
数组索引表示第几个eSATA：0- 默认备份，1- 默认录像
byMiniSASUsage
数组索引表示第几个miniSAS：0- 默认备份，1- 默认录像
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ETHERNET

以太网配置结构体。

struct{
  char    sDVRIP[16];
  char    sDVRIPMask[16];
  DWORD   dwNetInterface;
  WORD    wDVRPort;
  BYTE    byMACAddr[MACADDR_LEN];
}NET_DVR_ETHERNET, *LPNET_DVR_ETHERNET;

Members

sDVRIP
设备IP地址
sDVRIPMask
设备IP地址掩码
dwNetInterface
网络接口：1-10MBase-T；2-10MBase-T全双工；3-100MBase-TX；4-100M全双工；5-10M/100M自适应
wDVRPort
设备端口号
byMACAddr
设备物理地址

See Also

NET_DVR_NETCFG


NET_DVR_ETHERNET_MULTI

单个网卡配置信息结构体。

struct{
  NET_DVR_IPADDR    struDVRIP;
  NET_DVR_IPADDR    struDVRIPMask;
  DWORD             dwNetInterface;
  BYTE              byCardType;
  BYTE              byEnableDNS;
  WORD              wMTU;
  BYTE              byMACAddr[MACADDR_LEN];
  BYTE              byEthernetPortNo;
  BYTE              byRes2[1];
  BYTE              byUseDhcp;
  BYTE              byRes3[3];
  NET_DVR_IPADDR    struGatewayIpAddr;
  NET_DVR_IPADDR    struDnsServer1IpAddr;
  NET_DVR_IPADDR    struDnsServer2IpAddr;
}NET_DVR_ETHERNET_MULTI, *LPNET_DVR_ETHERNET_MULTI;

Members

struDVRIP
设备IP地址
struDVRIPMask
设备IP地址掩码
dwNetInterface
网络接口：1-10MBase-T；2-10MBase-T全双工；3-100MBase-TX；4-100M全双工；5-10M/100M/1000M自适应
byCardType
网卡类型：0-普通网卡，1-内网网卡，2-外网网卡
byEnableDNS
DNS自动使能：0-保留，1-打开，2-关闭
wMTU
MTU设置，默认1500
byMACAddr
设备物理地址，只读
byEthernetPortNo
网口号，0-无效，1-网口0，2-网口1以此类推，只读
byRes2
保留
byUseDhcp
是否启用DHCP
byRes3
保留
struGatewayIpAddr
网关地址
struDnsServer1IpAddr
域名服务器1的IP地址
struDnsServer2IpAddr
域名服务器2的IP地址

Remarks

MTU的设置范围为500-9676，若MTU设置过小客户端将无法注册到设备，并且客户端预览、回放、配置参数也会失败。

See Also

NET_DVR_NETCFG_MULTI


NET_DVR_ETHERNET_V30

以太网配置结构体。

struct{
  NET_DVR_IPADDR    struDVRIP;
  NET_DVR_IPADDR    struDVRIPMask;
  DWORD             dwNetInterface;
  WORD              wDVRPort;
  WORD              wMTU;
  BYTE              byMACAddr[MACADDR_LEN];
  BYTE              byEthernetPortNo;
  BYTE              byRes[1];
}NET_DVR_ETHERNET_V30, *LPNET_DVR_ETHERNET_V30;

Members

struDVRIP
设备IP地址
struDVRIPMask
设备IP地址掩码
dwNetInterface
网络接口：1-10MBase-T；2-10MBase-T全双工；3-100MBase-TX；4-100M全双工；5-10M/100M/1000M自适应；6-1000M全双工
wDVRPort
设备端口号
wMTU
MTU设置，默认1500
byMACAddr
设备物理地址
byEthernetPortNo
网口号，0-无效，1-网口0，2-网口1以此类推，只读
byRes
保留

Remarks

MTU的设置范围为500-9676，若MTU设置过小客户端将无法注册到设备，并且客户端预览、回放、配置参数也会失败。

See Also

NET_DVR_NETCFG_V30 NET_DVR_ONE_BONDING


NET_DVR_EVENT_CAPTURE

事件抓图参数结构体。

struct{
  NET_DVR_JPEGPARA               struJpegPara;
  DWORD                          dwPicInterval;
  NET_DVR_REL_CAPTURE_CHAN       struRelCaptureChan[MAX_PIC_EVENT_NUM];
  NET_DVR_REL_CAPTURE_CHAN       struAlarmInCapture[MAX_ALARMIN_CAPTURE];
  BYTE                           byCapTimes;
  BYTE                           byRes[59];
}NET_DVR_EVENT_CAPTURE, *LPNET_DVR_EVENT_CAPTURE;

Members

struJpegPara
事件抓图图片质量
dwPicInterval
事件抓图时间间隔：1-1s，2-2s，3-3s，4-4s，5-5s，6-10m，7-30m，8-1h，9-12h，10-24h
struRelCaptureChan
数组下标为：
0- 移动侦测触发抓图，
1- 视频遮挡触发抓图，
2- 视频丢失触发抓图，
3- PIR报警抓图，
4- 无线报警抓图，
5- 呼救报警抓图，
6- 智能抓图，
7- 人脸侦测抓图，
8- 越界侦测侦测抓图，
9- 区域入侵侦测抓图，
10- 场景变更侦测抓图，
11- 进入区域侦测，
12- 离开区域侦测，
13- 徘徊侦测，
14- 人员聚集侦测，
15- 快速运动侦测，
16- 停车侦测，
17- 物品遗留侦测，
18- 物品拿取侦测。
例如，struRelCaptureChan[0]里的byChan[0]第0位为1表示当前配置通道的移动侦测会触发第一通道的抓图
struAlarmInCapture
报警输入触发抓图，下标为0表示报警输入1，依次类推(用于一个通道多个报警输入触发的情况)。例如，struAlarmInCapture[0]里的byChan[0]第0位为1表示当前配置通道的第一个报警输入会触发第一通道的抓图。
byCapTimes
抓图张数
byRes
保留

See Also

NET_DVR_JPEG_CAPTURE_CFG


NET_DVR_EVENT_CAPTURE_V40

事件抓图参数结构体。

struct{
  NET_DVR_JPEGPARA                   struJpegPara;
  DWORD                              dwPicInterval;
  NET_DVR_REL_CAPTURE_CHAN_V40       struRelCaptureChan[MAX_PIC_EVENT_NUM];
  NET_DVR_REL_CAPTURE_CHAN_V40       struAlarmInCapture[MAX_ALARMIN_CAPTURE];
  DWORD                              dwMaxGroupNum;
  BYTE                               byCapTimes;
  BYTE                               byRes[59];
}NET_DVR_EVENT_CAPTURE_V40, *LPNET_DVR_EVENT_CAPTURE_V40;

Members

struJpegPara
事件抓图图片质量
dwPicInterval
事件抓图时间间隔：1-1s，2-2s，3-3s，4-4s，5-5s，6-10m，7-30m，8-1h，9-12h，10-24h
struRelCaptureChan
数组下标为：
0- 移动侦测触发抓图，
1- 视频遮挡触发抓图，
2- 视频丢失触发抓图，
3- PIR报警抓图，
4- 无线报警抓图，
5- 呼救报警抓图，
6- 智能抓图，
7- 人脸侦测抓图，
8- 越界侦测侦测抓图，
9- 区域入侵侦测抓图，
10- 场景变更侦测抓图，
11- 进入区域侦测，
12- 离开区域侦测，
13- 徘徊侦测，
14- 人员聚集侦测，
15- 快速运动侦测，
16- 停车侦测，
17- 物品遗留侦测，
18- 物品拿取侦测。
例如，struRelCaptureChan[0]里的byChan[0]第0位为1表示当前配置通道的移动侦测会触发第一通道的抓图
struAlarmInCapture
报警输入触发抓图，下标为0表示报警输入1，依次类推(用于一个通道多个报警输入触发的情况)
例如，struAlarmInCapture[0]里的dwChanNo[0]==3表示当前配置通道的第1个报警输入会触发第3通道的抓图
dwMaxGroupNum
设备支持的最大报警输入组数，每组16个报警输入
byCapTimes
抓图张数
byRes
保留

See Also

NET_DVR_JPEG_CAPTURE_CFG_V40


NET_DVR_EVENT_CARD_LINKAGE_CFG

事件/卡号联动配置结构体。

struct{
  DWORD                               dwSize;
  BYTE                                byProMode;
  BYTE                                byRes1[3];
  DWORD                               dwEventSourceID;
  NET_DVR_EVETN_CARD_LINKAGE_UNION    uLinkageInfo;
  BYTE                                byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byRes2[32];
  BYTE                                byOpenDoor[MAX_DOOR_NUM_256];
  BYTE                                byCloseDoor[MAX_DOOR_NUM_256];
  BYTE                                byNormalOpen[MAX_DOOR_NUM_256];
  BYTE                                byNormalClose[MAX_DOOR_NUM_256];
  BYTE                                byMainDevBuzzer;
  BYTE                                byCapturePic;
  BYTE                                byRecordVideo;
  BYTE                                byRes3[29];
  BYTE                                byReaderBuzzer[MAX_CARD_READER_NUM_512];
  BYTE                                byRes[128];
}NET_DVR_EVENT_CARD_LINKAGE_CFG, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG;

Members

dwSize
结构体大小
byProMode
联动方式：0- 事件，1- 卡号
byRes1
保留，置为0
dwEventSourceID
事件源ID，0xffffffff表示联动全部，其他取值：当主类型为设备事件时无效；当主类型是为门事件时，为门编号；当主类型为读卡器事件时，为读卡器ID；当主类型为报警输入事件时，为防区报警输入ID或事件报警输入ID
uLinkageInfo
联动方式参数
byAlarmout
关联的报警输出号，按数组表示，数组下标表示报警输出口序号，数组值：0- 不关联，1- 关联
byRes2
保留，置为0
byOpenDoor
是否联动开门，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byCloseDoor
是否联动关门，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byNormalOpen
是否联动常开，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byNormalClose
是否联动常关，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byMainDevBuzzer
是否联动主机蜂鸣器：0- 不联动，1- 联动输出
byCapturePic
是否联动抓拍：0- 不联动抓拍，1- 联动抓拍
byRecordVideo
是否联动录像：0- 不联动录像，1- 联动录像
byRes3
保留
byReaderBuzzer
是否联动读卡器蜂鸣器，按数组表示，数组下标表示读卡器编号，数组值：0-不联动，1-联动
byRes
保留，置为0

Remarks

  • 设备是否支持事件/卡号联动配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<EventLinkage>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_EVENT_CARD_LINKAGE_CFG_V50

事件/卡号联动配置结构体。

struct{
  DWORD                               dwSize;
  BYTE                                byProMode;
  BYTE                                byRes1[3];
  DWORD                               dwEventSourceID;
  NET_DVR_EVETN_CARD_LINKAGE_UNION    uLinkageInfo;
  BYTE                                byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byRes2[32];
  BYTE                                byOpenDoor[MAX_DOOR_NUM_256];
  BYTE                                byCloseDoor[MAX_DOOR_NUM_256];
  BYTE                                byNormalOpen[MAX_DOOR_NUM_256];
  BYTE                                byNormalClose[MAX_DOOR_NUM_256];
  BYTE                                byMainDevBuzzer;
  BYTE                                byCapturePic;
  BYTE                                byRecordVideo;
  BYTE                                byRes3[29];
  BYTE                                byReaderBuzzer[MAX_CARD_READER_NUM_512];
  BYTE                                byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byAlarmInSetup[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byAlarmInClose[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byRes[500];
}NET_DVR_EVENT_CARD_LINKAGE_CFG_V50, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG_V50;

Members

dwSize
结构体大小
byProMode
联动方式：0- 事件，1- 卡号，2-MAC地址
byRes1
保留，置为0
dwEventSourceID
事件源ID，0xffffffff表示联动全部，其他取值：当主类型为设备事件时无效；当主类型是为门事件时，为门编号；当主类型为读卡器事件时，为读卡器ID；当主类型为报警输入事件时，为防区报警输入ID或事件报警输入ID
uLinkageInfo
联动方式参数
byAlarmout
关联的报警输出号，按数组表示，数组下标表示报警输出口序号，数组值：0- 不关联，1- 关联
byRes2
保留，置为0
byOpenDoor
是否联动开门，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byCloseDoor
是否联动关门，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byNormalOpen
是否联动常开，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byNormalClose
是否联动常关，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byMainDevBuzzer
是否联动主机蜂鸣器：0- 不联动，1- 联动输出
byCapturePic
是否联动抓拍：0- 不联动抓拍，1- 联动抓拍
byRecordVideo
是否联动录像：0-不联动录像，1-联动录像
byRes3
保留
byReaderBuzzer
是否联动读卡器蜂鸣器，按数组表示，数组下标表示读卡器编号，数组值：0-不联动，1-联动
byAlarmOutClose
关联报警输出关闭，按字节表示，为0表示不关联，为1表示关联
byAlarmInSetup
关联防区布防，按字节表示，为0表示不关联，为1表示关联
byAlarmInClose
关联防区撤防，按字节表示，为0表示不关联，为1表示关联
byRes
保留，置为0

Remarks

  • 设备是否支持事件/卡号联动配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<EventLinkage>。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_EVENT_CARD_LINKAGE_CFG_V51

事件/卡号联动配置结构体。

struct{
  DWORD                               dwSize;
  BYTE                                byProMode;
  BYTE                                byRes1[3];
  DWORD                               dwEventSourceID;
  NET_DVR_EVETN_CARD_LINKAGE_UNION    uLinkageInfo;
  BYTE                                byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byRes2[32];
  BYTE                                byOpenDoor[MAX_DOOR_NUM_256];
  BYTE                                byCloseDoor[MAX_DOOR_NUM_256];
  BYTE                                byNormalOpen[MAX_DOOR_NUM_256];
  BYTE                                byNormalClose[MAX_DOOR_NUM_256];
  BYTE                                byMainDevBuzzer;
  BYTE                                byCapturePic;
  BYTE                                byRecordVideo;
  BYTE                                byMainDevStopBuzzer;
  BYTE                                byRes3[28];
  BYTE                                byReaderBuzzer[MAX_CARD_READER_NUM_512];
  BYTE                                byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byAlarmInSetup[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byAlarmInClose[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byReaderStopBuzzer[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                                byRes[512];
}NET_DVR_EVENT_CARD_LINKAGE_CFG_V51, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG_V50;

Members

dwSize
结构体大小
byProMode
联动方式：0- 事件，1- 卡号，3-工号（人员ID）
byRes1
保留，置为0
dwEventSourceID
事件源ID，0xffffffff表示联动全部，其他取值：当主类型为设备事件时无效；当主类型是为门事件时，为门编号；当主类型为读卡器事件时，为读卡器ID；当主类型为报警输入事件时，为防区报警输入ID或事件报警输入ID
uLinkageInfo
联动方式参数
byAlarmout
关联的报警输出号，按数组表示，数组下标表示报警输出口序号，数组值：0- 不关联，1- 关联
byRes2
保留，置为0
byOpenDoor
是否联动开门，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byCloseDoor
是否联动关门，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byNormalOpen
是否联动常开，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byNormalClose
是否联动常关，按数组表示，数组下标表示门编号，数组值：0- 不联动，1- 联动
byMainDevBuzzer
是否联动主机蜂鸣器：0- 不联动，1- 联动输出
byCapturePic
是否联动抓拍：0- 不联动抓拍，1- 联动抓拍
byRecordVideo
是否联动录像：0-不联动录像，1-联动录像
byMainDevStopBuzzer
主机停止蜂鸣 0-不联动，1-联动输出
byRes3
保留
byReaderBuzzer
是否联动读卡器蜂鸣器，按数组表示，数组下标表示读卡器编号，数组值：0-不联动，1-联动
byAlarmOutClose
关联报警输出关闭，按字节表示，为0表示不关联，为1表示关联
byAlarmInSetup
关联防区布防，按字节表示，为0表示不关联，为1表示关联
byAlarmInClose
关联防区撤防，按字节表示，为0表示不关联，为1表示关联
byReaderStopBuzzer
联动读卡器停止蜂鸣，按字节表示，0-不联动，1-联动
byRes
保留，置为0

Remarks

  • 设备是否支持事件/卡号联动配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<EventLinkage>。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_EVENT_CARD_LINKAGE_COND

事件/卡号联动配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwEventID;
  WORD    wLocalControllerID;
  BYTE    byRes[106];
}NET_DVR_EVENT_CARD_LINKAGE_COND,*LPNET_DVR_EVENT_CARD_LINKAGE_COND;

Members

dwSize
结构体大小
dwEventID
事件ID
wLocalControllerID
就地控制器序号[1,64]，0表示门禁主机（目前设备只支持门禁主机）
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_EVENT_INFO

单个事件信息。

struct{
  BYTE                          byRuleID;
  BYTE                          byRes[3];
  BYTE                          byRuleName[NAME_LEN];
  DWORD                         dwEventType;
  NET_DVR_EVENT_PARAM_UNION     uEventParam;
}NET_DVR_EVENT_INFO, *LPNET_DVR_EVENT_INFO;

Members

byRuleID
规则序号，为规则配置结构的下标
byRes1
保留
byRuleName
规则名称
dwEventType
事件类型，具体定义见VCA_EVENT_TYPE
uEventParam
事件参数联合体

See Also

NET_DVR_EVENT_INFO_LIST


NET_DVR_EVENT_INFO_LIST

事件信息列表。

struct{
  BYTE                 byNum;
  BYTE                 byRes1[3];
  NET_DVR_EVENT_INFO   struEventInfo[MAX_RULE_NUM];
}NET_DVR_EVENT_INFO_LIST, *LPNET_DVR_EVENT_INFO_LIST;

Members

byNum
事件实时信息个数
byRes1
保留
struEventInfo
事际实时信息

See Also

NET_DVR_RULE_INFO_ALARM


NET_DVR_EVENT_LINKAGE_CARD_CFG_V51

刷卡事件联动参数结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byProMode;
  BYTE                              byRes1[3];
  DWORD                             dwEventSourceID;
  NET_DVR_EVETN_CARD_LINKAGE_UNION  uLinkageInfo;
  BYTE                              byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                              byRes2[32];
  BYTE                              byOpenDoor[MAX_DOOR_NUM_256];
  BYTE                              byCloseDoor[MAX_DOOR_NUM_256];
  BYTE                              byNormalOpen[MAX_DOOR_NUM_256];
  BYTE                              byNormalClose[MAX_DOOR_NUM_256];
  BYTE                              byMainDevBuzzer;
  BYTE                              byCapturePic;
  BYTE                              byRecordVideo;
  BYTE                              byMainDevStopBuzzer;
  DWORD                             wAudioDisplayID;
  BYTE                              byAudioDisplayMode;
  BYTE                              byRes3[25];
  BYTE                              byReaderBuzzer[MAX_CARD_READER_NUM_512];
  BYTE                              byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                              byAlarmInSetup[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE                              byAlarmInClose[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE                              byReaderStopBuzzer[MAX_CARD_READER_NUM_512];
  BYTE                              byRes[512];
}NET_DVR_EVENT_LINKAGE_CARD_CFG_V51,*LPNET_DVR_EVENT_LINKAGE_CARD_CFG_V51;

Members

dwSize
结构体大小
byProMode
联动方式，0-事件，1-卡号，2-MAC地址，3-工号（人员ID）
byRes1
保留，置为0
dwEventSourceID
事件源ID，当主类型为设备事件时无效， 当主类型是门事件时为门编号;当主类型为读卡器事件时，为读卡器ID;当为报警输入事件时为防区报警输入ID或事件报警输入ID。0xffffffff表示联动全部
uLinkageInfo
联动方式参数
byAlarmout
关联的报警输出号，按位表示，为0表示不关联，为1表示关联
byRes2
保留，置为0
byOpenDoor
按位表示,是否联动开门，0-不联动，1-联动
byCloseDoor
按位表示,是否联动关门，0-不联动，1-联动
byNormalOpen
按位表示,是否联动常开，0-不联动，1-联动
byNormalClose
按位表示,是否联动常关，0-不联动，1-联动
byMainDevBuzzer
主机蜂鸣器 0-不联动，1-联动输出
byMainDevBuzzer
主机蜂鸣器 0-不联动，1-联动输出
byCapturePic
是否联动抓拍，0-不联动抓拍，1-联动抓拍
byRecordVideo
是否联动录像，0-不联动录像，1-联动录像
byMainDevStopBuzzer
主机停止蜂鸣 0-不联动，1-联动输出
wAudioDisplayID
联动语音播放ID：0-不联动，目前范围1-32
byAudioDisplayMode
联动语音播放模式：0-关闭，1-单次播放，2-循环播放
byRes3
保留，置为0
byReaderBuzzer
联动读卡器蜂鸣器，按字节表示，0-不联动，1-联动
byAlarmOutClose
关联报警输出关闭，按字节表示，为0表示不关联，为1表示关联
byAlarmInSetup
关联防区布防，按字节表示，为0表示不关联，为1表示关联
byAlarmInClose
关联防区撤防，按字节表示，为0表示不关联，为1表示关联
byReaderStopBuzzer
联动读卡器停止蜂鸣，按字节表示，0-不联动，1-联动
byRes
保留
  • 对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点： <EventLinkage>。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_EVENT_LINKAGE_INFO

事件联动参数结构体。

struct{
  WORD    wMainEventType;
  WORD    wSubEventType;
  BYTE    byRes[28];
}NET_DVR_EVENT_LINKAGE_INFO,*LPNET_DVR_EVENT_LINKAGE_INFO;

Members

wMainEventType
事件主类型：0- 设备事件，1- 报警输入事件，2- 门事件，3- 读卡器事件
wSubEventType
事件次类型，不同的主类型对应不同的次类型，详见“Remarks”说明
byRes
保留，置为0

Remarks

不同的事件主类型对应不同的事件次类型，具体定义如下所示：

主类型 | 含义
0 | 设备事件
次类型 | 宏定义值 | 含义
EVENT_ACS_HOST_ANTI_DISMANTLE | 0 | 主机防拆报警
EVENT_ACS_OFFLINE_ECENT_NEARLY_FULL | 1 | 离线事件满90%报警
EVENT_ACS_NET_BROKEN | 2 | 网络断开
EVENT_ACS_NET_RESUME | 3 | 网络恢复
EVENT_ACS_LOW_BATTERY | 4 | 蓄电池电压低
EVENT_ACS_BATTERY_RESUME | 5 | 蓄电池电压恢复正常
EVENT_ACS_AC_OFF | 6 | 交流电断电
EVENT_ACS_AC_RESUME | 7 | 交流电恢复
EVENT_ACS_SD_CARD_FULL | 8 | SD卡存储满报警
EVENT_ACS_LINKAGE_CAPTURE_PIC | 9 | 联动抓拍事件报警
EVENT_ACS_IMAGE_QUALITY_LOW | 10 | 人脸图像画质低
EVENT_ACS_FINGER_PRINT_QUALITY_LOW | 11 | 指纹图像画质低
EVENT_ACS_BATTERY_ELECTRIC_LOW | 12 | 电池电压低（仅人脸设备使用）
EVENT_ACS_BATTERY_ELECTRIC_RESUME | 13 | 电池电压恢复正常（仅人脸设备使用）
EVENT_ACS_FIRE_IMPORT_SHORT_CIRCUIT | 14 | 消防输入短路报警
EVENT_ACS_FIRE_IMPORT_BROKEN_CIRCUIT | 15 | 消防输入断路报警
EVENT_ACS_FIRE_IMPORT_RESUME | 16 | 消防输入恢复
EVENT_ACS_MASTER_RS485_LOOPNODE_BROKEN | 17 | 主控RS485环路节点断开
EVENT_ACS_MASTER_RS485_LOOPNODE_RESUME | 18 | 主控RS485环路节点恢复
EVENT_ACS_LOCAL_CONTROL_OFFLINE | 19 | 就地控制器掉线
EVENT_ACS_LOCAL_CONTROL_RESUME | 20 | 就地控制器掉线恢复
EVENT_ACS_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN | 21 | 就地下行RS485环路断开
EVENT_ACS_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME | 22 | 就地下行RS485环路恢复
EVENT_ACS_DISTRACT_CONTROLLER_ONLINE | 23 | 分控器在线
EVENT_ACS_DISTRACT_CONTROLLER_OFFLINE | 24 | 分控器离线
EVENT_ACS_FIRE_BUTTON_TRIGGER | 25 | 消防按钮触发
EVENT_ACS_FIRE_BUTTON_RESUME | 26 | 消防按钮恢复
EVENT_ACS_MAINTENANCE_BUTTON_TRIGGER | 27 | 维护按钮触发
EVENT_ACS_MAINTENANCE_BUTTON_RESUME | 28 | 维护按钮恢复
EVENT_ACS_EMERGENCY_BUTTON_TRIGGER | 29 | 紧急按钮触发
EVENT_ACS_EMERGENCY_BUTTON_RESUME | 30 | 紧急按钮恢复
EVENT_ACS_MAC_DETECT | 31 | MAC侦测
EVENT_ACS_SUBMARINEBACK_COMM_BREAK | 32 | 与反潜回服务器通信断开
EVENT_ACS_SUBMARINEBACK_COMM_RESUME | 33 | 与反潜回服务器通信恢复
EVENT_ACS_REMOTE_ACTUAL_GUARD | 34 | 远程实时布防
EVENT_ACS_REMOTE_ACTUAL_UNGUARD | 35 | 远程实时撤防
EVENT_ACS_MOTOR_SENSOR_EXCEPTION | 36 | 电机或传感器异常
EVENT_ACS_CAN_BUS_EXCEPTION | 37 | CAN总线异常
EVENT_ACS_CAN_BUS_RESUME | 38 | CAN总线恢复
EVENT_ACS_GATE_TEMPERATURE_OVERRUN | 39 | 闸机腔体温度超限
EVENT_ACS_IR_EMITTER_EXCEPTION | 40 | 红外对射异常
EVENT_ACS_IR_EMITTER_RESUME | 41 | 红外对射恢复
EVENT_ACS_LAMP_BOARD_COMM_EXCEPTION | 42 | 灯板通信异常
EVENT_ACS_CAN_BUS_RESUME | 43 | 灯板通信恢复
EVENT_ACS_IR_ADAPTOR_BOARD_COMM_EXCEPTION | 44 | 红外转接板通信异常
EVENT_ACS_IR_ADAPTOR_BOARD_COMM_RESUME | 45 | 红外转接板通信恢复
EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_ALARM | 46 | 通道控制器防拆报警
EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_RESUME | 47 | 通道控制器防拆报警恢复
EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM | 48 | 通道控制器消防输入报警
EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME | 49 | 通道控制器消防输入报警恢复
EVENT_ACS_STAY_EVENT | 50 | 逗留事件
EVENT_ACS_LEGAL_EVENT_NEARLY_FULL | 51 | 合法事件满90%报警

主类型 | 含义
1 | 报警输入事件
次类型 | 宏定义值 | 含义
EVENT_ACS_ALARMIN_SHORT_CIRCUIT | 0 | 防区短路报警
EVENT_ACS_ALARMIN_BROKEN_CIRCUIT | 1 | 防区断路报警
EVENT_ACS_ALARMIN_EXCEPTION | 2 | 防区异常报警
EVENT_ACS_ALARMIN_RESUME | 3 | 防区报警恢复
EVENT_ACS_CASE_SENSOR_ALARM | 4 | 事件输入报警
EVENT_ACS_CASE_SENSOR_RESUME | 5 | 事件输入恢复

主类型 | 含义
2 | 门事件
次类型 | 宏定义值 | 含义
EVENT_ACS_LEADER_CARD_OPEN_BEGIN | 0 | 首卡开门开始
EVENT_ACS_LEADER_CARD_OPEN_END | 1 | 首卡开门结束
EVENT_ACS_ALWAYS_OPEN_BEGIN | 2 | 常开状态开始
EVENT_ACS_ALWAYS_OPEN_END | 3 | 常开状态结束
EVENT_ACS_ALWAYS_CLOSE_BEGIN | 4 | 常关状态开始
EVENT_ACS_ALWAYS_CLOSE_END | 5 | 常关状态结束
EVENT_ACS_LOCK_OPEN | 6 | 门锁打开
EVENT_ACS_LOCK_CLOSE | 7 | 门锁关闭
EVENT_ACS_DOOR_BUTTON_PRESS | 8 | 开门按钮按下
EVENT_ACS_DOOR_BUTTON_RELEASE | 9 | 开门按钮放开
EVENT_ACS_DOOR_OPEN_NORMAL | 10 | 正常开门（门磁）
EVENT_ACS_DOOR_CLOSE_NORMAL | 11 | 正常关门（门磁）
EVENT_ACS_DOOR_OPEN_ABNORMAL | 12 | 门异常打开（门磁）
EVENT_ACS_DOOR_OPEN_TIMEOUT | 13 | 门打开超时（门磁）
EVENT_ACS_REMOTE_OPEN_DOOR | 14 | 远程开门
EVENT_ACS_REMOTE_CLOSE_DOOR | 15 | 远程关门
EVENT_ACS_REMOTE_ALWAYS_OPEN | 16 | 远程常开
EVENT_ACS_REMOTE_ALWAYS_CLOSE | 17 | 远程常关
EVENT_ACS_NOT_BELONG_MULTI_GROUP | 18 | 卡不属于多重认证群组
EVENT_ACS_INVALID_MULTI_VERIFY_PERIOD | 19 | 卡不在多重认证时间段内
EVENT_ACS_MULTI_VERIFY_SUPER_RIGHT_FAIL | 20 | 多重认证模式超级密码认证失败
EVENT_ACS_MULTI_VERIFY_REMOTE_RIGHT_FAIL | 21 | 多重认证模式远程认证失败
EVENT_ACS_MULTI_VERIFY_SUCCESS | 22 | 多重认证成功
EVENT_ACS_MULTI_VERIFY_NEED_REMOTE_OPEN | 23 | 多重多重认证需要远程开门
EVENT_ACS_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS | 24 | 多重认证超级密码认证成功事件
EVENT_ACS_MULTI_VERIFY_REPEAT_VERIFY_FAIL | 25 | 多重认证重复认证失败
EVENT_ACS_MULTI_VERIFY_TIMEOUT | 26 | 多重认证超时失败
EVENT_ACS_REMOTE_CAPTURE_PIC | 27 | 远程抓拍
EVENT_ACS_DOORBELL_RINGING | 28 | 门铃响
EVENT_ACS_SECURITY_MODULE_DESMANTLE_ALARM | 29 | 门控安全模块防拆报警
EVENT_ACS_CALL_CENTER | 30 | 呼叫中心事件
EVENT_ACS_FIRSTCARD_AUTHORIZE_BEGIN | 31 | 首卡授权开始
EVENT_ACS_FIRSTCARD_AUTHORIZE_END | 32 | 首卡授权结束
EVENT_ACS_DOORLOCK_INPUT_SHORT_CIRCUIT | 33 | 门锁输入短路报警
EVENT_ACS_DOORLOCK_INPUT_BROKEN_CIRCUIT | 34 | 门锁输入断路报警
EVENT_ACS_DOORLOCK_INPUT_EXCEPTION | 35 | 门锁输入异常报警
EVENT_ACS_DOORCONTACT_INPUT_SHORT_CIRCUIT | 36 | 门磁输入短路报警
EVENT_ACS_DOORCONTACT_INPUT_BROKEN_CIRCUIT | 37 | 门磁输入断路报警
EVENT_ACS_DOORCONTACT_INPUT_EXCEPTION | 38 | 门磁输入异常报警
EVENT_ACS_OPENBUTTON_INPUT_SHORT_CIRCUIT | 39 | 开门按钮输入短路报警
EVENT_ACS_OPENBUTTON_INPUT_BROKEN_CIRCUIT | 40 | 开门按钮输入断路报警
EVENT_ACS_OPENBUTTON_INPUT_EXCEPTION | 41 | 开门按钮输入异常报警
EVENT_ACS_DOORLOCK_OPEN_EXCEPTION | 42 | 门锁异常打开
EVENT_ACS_DOORLOCK_OPEN_TIMEOUT | 43 | 门锁打开超时
EVENT_ACS_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE | 44 | 首卡未授权开门失败
EVENT_ACS_CALL_LADDER_RELAY_BREAK | 45 | 呼梯继电器断开
EVENT_ACS_CALL_LADDER_RELAY_CLOSE | 46 | 呼梯继电器闭合
EVENT_ACS_AUTO_KEY_RELAY_BREAK | 47 | 自动按键继电器断开
EVENT_ACS_AUTO_KEY_RELAY_CLOSE | 48 | 自动按键继电器闭合
EVENT_ACS_KEY_CONTROL_RELAY_BREAK | 49 | 按键梯控继电器断开
EVENT_ACS_KEY_CONTROL_RELAY_CLOSE | 50 | 按键梯控继电器闭合
EVENT_ACS_REMOTE_VISITOR_CALL_LADDER | 51 | 访客呼梯
EVENT_ACS_REMOTE_HOUSEHOLD_CALL_LADDER | 52 | 住户呼梯
EVENT_ACS_LEGAL_MESSAGE | 53 | 合法短信
EVENT_ACS_ILLEGAL_MESSAGE | 54 | 非法短信
EVENT_ACS_TRAILING | 55 | 尾随通行
EVENT_ACS_REVERSE_ACCESS | 56 | 反向闯入
EVENT_ACS_FORCE_ACCESS | 57 | 外力冲撞
EVENT_ACS_CLIMBING_OVER_GATE | 58 | 翻越
EVENT_ACS_PASSING_TIMEOUT | 59 | 通行超时
EVENT_ACS_INTRUSION_ALARM | 60 | 误闯报警
EVENT_ACS_FREE_GATE_PASS_NOT_AUTH | 61 | 闸机自由通行时未认证通过
EVENT_ACS_DROP_ARM_BLOCK | 62 | 摆臂被阻挡
EVENT_ACS_DROP_ARM_BLOCK_RESUME | 63 | 摆臂阻挡消除
EVENT_ACS_REMOTE_CONTROL_CLOSE_DOOR | 64 | 遥控器关门
EVENT_ACS_REMOTE_CONTROL_OPEN_DOOR | 65 | 遥控器开门
EVENT_ACS_REMOTE_CONTROL_ALWAYS_OPEN_DOOR | 66 | 遥控器常开门

主类型 | 含义
3 | 读卡器事件
次类型 | 宏定义值 | 含义
EVENT_ACS_STRESS_ALARM | 0 | 胁迫报警
EVENT_ACS_CARD_READER_DESMANTLE_ALARM | 1 | 读卡器防拆报警
EVENT_ACS_LEGAL_CARD_PASS | 2 | 合法卡认证通过
EVENT_ACS_CARD_AND_PSW_PASS | 3 | 刷卡加密码认证通过
EVENT_ACS_CARD_AND_PSW_FAIL | 4 | 刷卡加密码认证失败
EVENT_ACS_CARD_AND_PSW_TIMEOUT | 5 | 刷卡加密码认证超时
EVENT_ACS_CARD_MAX_AUTHENTICATE_FAIL | 6 | 读卡器认证失败超次
EVENT_ACS_CARD_NO_RIGHT | 7 | 卡未分配权限
EVENT_ACS_CARD_INVALID_PERIOD | 8 | 卡当前时段无效
EVENT_ACS_CARD_OUT_OF_DATE | 9 | 卡号过期
EVENT_ACS_INVALID_CARD | 10 | 无此卡号
EVENT_ACS_ANTI_SNEAK_FAIL | 11 | 反潜回认证失败
EVENT_ACS_INTERLOCK_DOOR_NOT_CLOSE | 12 | 互锁门未关闭
EVENT_ACS_FINGERPRINT_COMPARE_PASS | 13 | 指纹比对通过
EVENT_ACS_FINGERPRINT_COMPARE_FAIL | 14 | 指纹比对失败
EVENT_ACS_CARD_FINGERPRINT_VERIFY_PASS | 15 | 刷卡加指纹认证通过
EVENT_ACS_CARD_FINGERPRINT_VERIFY_FAIL | 16 | 刷卡加指纹认证失败
EVENT_ACS_CARD_FINGERPRINT_VERIFY_TIMEOUT | 17 | 刷卡加指纹认证超时
EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_PASS | 18 | 刷卡加指纹加密码认证通过
EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL | 19 | 刷卡加指纹加密码认证失败
EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT | 20 | 刷卡加指纹加密码认证超时
EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_PASS | 21 | 指纹加密码认证通过
EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_FAIL | 22 | 指纹加密码认证失败
EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_TIMEOUT | 23 | 指纹加密码认证超时
EVENT_ACS_FINGERPRINT_INEXISTENCE | 24 | 指纹不存在
EVENT_ACS_FACE_VERIFY_PASS | 25 | 人脸认证通过
EVENT_ACS_FACE_VERIFY_FAIL | 26 | 人脸认证失败
EVENT_ACS_FACE_AND_FP_VERIFY_PASS | 27 | 人脸加指纹认证通过
EVENT_ACS_FACE_AND_FP_VERIFY_FAIL | 28 | 人脸加指纹认证失败
EVENT_ACS_FACE_AND_FP_VERIFY_TIMEOUT | 29 | 人脸加指纹认证超时
EVENT_ACS_FACE_AND_PW_VERIFY_PASS | 30 | 人脸加密码认证通过
EVENT_ACS_FACE_AND_PW_VERIFY_FAIL | 31 | 人脸加密码认证失败
EVENT_ACS_FACE_AND_PW_VERIFY_TIMEOUT | 32 | 人脸加密码认证超时
EVENT_ACS_FACE_AND_CARD_VERIFY_PASS | 33 | 人脸加刷卡认证通过
EVENT_ACS_FACE_AND_CARD_VERIFY_FAIL | 34 | 人脸加刷卡认证失败
EVENT_ACS_FACE_AND_CARD_VERIFY_TIMEOUT | 35 | 人脸加刷卡认证超时
EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_PASS | 36 | 人脸加密码加指纹认证通过
EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_FAIL | 37 | 人脸加密码加指纹认证失败
EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT | 38 | 人脸加密码加指纹认证超时
EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_PASS | 39 | 人脸加刷卡加指纹认证通过
EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_FAIL | 40 | 人脸加刷卡加指纹认证失败
EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_TIMEOUT | 41 | 人脸加刷卡加指纹认证超时
EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_PASS | 42 | 工号加指纹认证通过
EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_FAIL | 43 | 工号加指纹认证失败
EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT | 44 | 工号加指纹认证超时
EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS | 45 | 工号加指纹加密码认证通过
EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL | 46 | 工号加指纹加密码认证失败
EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT | 47 | 工号加指纹加密码认证超时
EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_PASS | 48 | 工号加人脸认证通过
EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_FAIL | 49 | 工号加人脸认证失败
EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT | 50 | 工号加人脸认证超时
EVENT_ACS_FACE_RECOGNIZE_FAIL | 51 | 人脸抓拍失败
EVENT_ACS_EMPLOYEENO_AND_PW_PASS | 52 | 工号加密码认证通过
EVENT_ACS_EMPLOYEENO_AND_PW_FAIL | 53 | 工号加密码认证失败
EVENT_ACS_EMPLOYEENO_AND_PW_TIMEOUT | 54 | 工号加密码认证超时
EVENT_ACS_HUMAN_DETECT_FAIL | 55 | 真人检测失败
EVENT_ACS_PEOPLE_AND_ID_CARD_COMPARE_PASS | 56 | 人证比对通过
EVENT_ACS_PEOPLE_AND_ID_CARD_COMPARE_FAIL | 57 | 人证比对失败
EVENT_ACS_DOOR_OPEN_OR_DORMANT_FAIL | 58 | 门状态常闭或休眠状态认证失败
EVENT_ACS_AUTH_PLAN_DORMANT_FAIL | 59 | 认证计划休眠模式认证失败
EVENT_ACS_CARD_ENCRYPT_VERIFY_FAIL | 60 | 卡加密校验失败
EVENT_ACS_SUBMARINEBACK_REPLY_FAIL | 61 | 反潜回服务器应答失败
EVENT_ACS_PASSWORD_MISMATCH | 62 | 密码不匹配
EVENT_ACS_EMPLOYEE_NO_NOT_EXIST | 63 | 工号不存在
EVENT_ACS_COMBINED_VERIFY_PASS | 64 | 组合认证通过
EVENT_ACS_COMBINED_VERIFY_TIMEOUT | 65 | 组合认证超时
EVENT_ACS_VERIFY_MODE_MISMATCH | 66 | 认证方式不匹配

See Also

NET_DVR_EVETN_CARD_LINKAGE_UNION


NET_DVR_EVENT_PARAM_UNION

事件参数联合体。

union{
  DWORD    uLen[3];
  DWORD    dwHumanIn;
  float    fCrowdDensity;
}NET_DVR_EVENT_PARAM_UNION, *LPNET_DVR_EVENT_PARAM_UNION;

Members

uLen
联合体大小，12字节
dwHumanIn
有没有人接近：0- 无人， 1- 有人
fCrowdDensity
人员聚集值

See Also

NET_DVR_EVENT_INFO


NET_DVR_EVENT_SCHEDULE

事件布防时间配置结构体。

struct{
  DWORD                dwSize;
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_SCHEDTIME    struHolidayAlarmTime[MAX_TIMESEGMENT_V30];
  BYTE                 byRes[128];
}NET_DVR_EVENT_SCHEDULE,*LPNET_DVR_EVENT_SCHEDULE;

Members

dwSize
结构体大小
struAlarmTime
布防时间，每周7天，每天最多8个时间段
struHolidayAlarmTime
假日布防时间
byRes
保留

Remarks

  • 该配置功能对应布防时间能力集(Schedule)，接口：NET_DVR_GetSTDAbility，不同的智能侦测类型对应的布防时间能力集获取使用不同的命令，例如：
    • 侦测类型 | dwAbilityType能力集类型
进入区域侦测 | NET_DVR_GET_REGION_ENTRANCE_SCHEDULE_CAPABILITIES
离开区域侦测 | NET_DVR_GET_REGION_EXITING_SCHEDULE_CAPABILITIES
徘徊侦测 | NET_DVR_GET_LOITERING_SCHEDULE_CAPABILITIES
人员聚集 | NET_DVR_GET_GROUP_SCHEDULE_CAPABILITIES
快速运动 | NET_DVR_GET_RAPIDMOVE_SCHEDULE_CAPABILITIES
停车侦测 | NET_DVR_GET_PARKING_SCHEDULE_CAPABILITIES
物品遗留侦测 | NET_DVR_GET_UNATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES
物品拿取侦测 | NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES
烟火检测 | NET_DVR_GET_FIREDETECTION_SCHEDULE_CAPABILITIES
区域人数统计 | NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES
学生起立检测 | NET_DVR_GET_FIREDETECTION_SCHEDULE_CAPABILITIES


NET_DVR_EVENT_SCHEDULE

事件布防时间配置结构体。

struct{
  DWORD                dwSize;
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_SCHEDTIME    struHolidayAlarmTime[MAX_TIMESEGMENT_V30];
  BYTE                 byRes[128];
}NET_DVR_EVENT_SCHEDULE,*LPNET_DVR_EVENT_SCHEDULE;

Members

dwSize
结构体大小
struAlarmTime
布防时间，每周7天，每天最多8个时间段
struHolidayAlarmTime
假日布防时间
byRes
保留

Remarks

  • 该配置功能对应布防时间能力集(Schedule)，接口：NET_DVR_GetSTDAbility，不同的智能侦测类型对应的布防时间能力集获取使用不同的命令，如下所示：
    • 侦测类型 | dwAbilityType能力集类型
存储健康检测 | NET_DVR_GET_STORAGEDETECTION_SCHEDULE_CAPABILITIES

    See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_EVENT_TRIGGER

事件联动配置结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_HANDLEEXCEPTION_V41    struHandleException;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V40];
  NET_DVR_PRESETCHAN_INFO        struPresetChanInfo[MAX_CHANNUM_V40];
  NET_DVR_CRUISECHAN_INFO        struCruiseChanInfo[MAX_CHANNUM_V40];
  NET_DVR_PTZTRACKCHAN_INFO      struPtzTrackInfo[MAX_CHANNUM_V40];
  BYTE                           byDirection;
  BYTE                           byRes2[255];
}NET_DVR_EVENT_TRIGGER,*LPNET_DVR_EVENT_TRIGGER;

Members

dwSize
结构体大小
struHandleException
异常处理方式
dwRelRecordChan
实际触发录像通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效
struPresetChanInfo
启用的预置点信息
struCruiseChanInfo
启用巡航功能通道的信息
struPtzTrackInfo
调用云台花样扫描的通道信息
byDirection
触发方向：0- 保留，1- 全部，2- 正向，3- 反向
byRes2
保留

Remarks

  • 该配置功能对应事件触发能力集(EventTriggersCap)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)。


NET_DVR_EVENT_TRIGGER

事件联动配置结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_HANDLEEXCEPTION_V41    struHandleException;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V40];
  NET_DVR_PRESETCHAN_INFO        struPresetChanInfo[MAX_CHANNUM_V40];
  NET_DVR_CRUISECHAN_INFO        struCruiseChanInfo[MAX_CHANNUM_V40];
  NET_DVR_PTZTRACKCHAN_INFO      struPtzTrackInfo[MAX_CHANNUM_V40];
  BYTE                           byRes2[256];
}NET_DVR_EVENT_TRIGGER,*LPNET_DVR_EVENT_TRIGGER;

Members

dwSize
结构体大小
struHandleException
异常处理方式
dwRelRecordChan
实际触发录像通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效
struPresetChanInfo
启用的预置点信息
struCruiseChanInfo
启用巡航功能通道的信息
struPtzTrackInfo
调用云台花样扫描的通道信息
byRes2
保留

Remarks

  • 该配置功能对应事件触发能力集(EventTriggersCap)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES)。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_EVETN_CARD_LINKAGE_UNION

事件/卡号联动方式联合体。

union{
  BYTE                          byCardNo[ACS_CARD_NO_LEN];
  NET_DVR_EVENT_LINKAGE_INFO    struEventLinkage;
  BYTE                          byMACAddr[MACADDR_LEN];
  BYTE                          byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
}NET_DVR_EVETN_CARD_LINKAGE_UNION,*LPNET_DVR_EVETN_CARD_LINKAGE_UNION;

Members

byCardNo
卡号，byProMode为1时有效
struEventLinkage
事件联动参数，byProMode为0时有效
byMACAddr
物理MAC地址
byEmployeeNo
工号（人员ID）

See Also

NET_DVR_EVENT_CARD_LINKAGE_CFG


NET_DVR_EXCEPTION

异常参数结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_HANDLEEXCEPTION     struExceptionHandleType[MAX_EXCEPTIONNUM];
}NET_DVR_EXCEPTION,*LPNET_DVR_EXCEPTION;

Members

dwSize
结构体大小
struExceptionHandleType
异常信息处理方式：
数组0－硬盘满
数组1－硬盘出错
数组2－网线断
数组3－IP 地址冲
数组4－非法访问
数组5－输入/输出视频制式不匹配
数组6－视频信号异常

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_EXCEPTION_V30


NET_DVR_EXCEPTION_V30

异常参数结构体。

struct{
  DWORD                           dwSize;
  NET_DVR_HANDLEEXCEPTION_V30     struExceptionHandleType[MAX_EXCEPTIONNUM_V30];
}NET_DVR_EXCEPTION_V30,*LPNET_DVR_EXCEPTION_V30;

Members

dwSize
结构体大小
struExceptionHandleType
异常信息处理方式：
数组0－硬盘满
数组1－硬盘出错
数组2－网线断
数组3－IP 地址冲突
数组4－非法访问
数组5－输入/输出视频制式不匹配
数组6－视频信号异常
数组7－录像异常
数组8－阵列异常
数组9－前端/录像分辨率不匹配异常
数组10-行车超速（车载专用）
数组11-热备异常（N+1使用）
数组12-温度异常
数组13-子系统异常
数组14-风扇异常
数组15-POE供电异常

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_EXCEPTION_V40

该结构扩展源于

NET_DVR_EXCEPTION


NET_DVR_EXCEPTION_V40

异常参数配置（扩展）结构体。

struct{
  DWORD                          dwSize;
  DWORD                          dwMaxGroupNum;
  NET_DVR_HANDLEEXCEPTION_V41    struExceptionHandle[MAX_EXCEPTIONNUM_V30];
  BYTE                           byRes[128];
}NET_DVR_EXCEPTION_V40,*LPNET_DVR_EXCEPTION_V40;

Members

dwSize
结构体大小
dwMaxGroupNum
设备支持的异常类型最大组数（只读）
struExceptionHandle
异常信息处理方式，数组的每个元素都表示一种异常类型：
数组0－硬盘满
数组1－硬盘出错
数组2－网线断
数组3－IP 地址冲突
数组4－非法访问
数组5－输入/输出视频制式不匹配
数组6－视频信号异常
数组7－录像异常
数组8－阵列异常
数组9－前端/录像分辨率不匹配异常
数组10-行车超速（车载专用）
数组11-热备异常（N+1使用）
数组12-温度异常
数组13-子系统异常
数组14-风扇异常
数组15-POE供电异常
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_EXCEPTION_V30


NET_DVR_EXDEVDET_CFG

外设状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byExternalDevStatus;
  BYTE     byRes[63];
}NET_DVR_EXDEVDET_CFG,*LPNET_DVR_EXDEVDET_CFG;

Members

dwSize
结构体大小
byExternalDevStatus
外设状态：0- 正常，1- 异常
byRes
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_DVR_EXDEVDET_COND

外设状态检测条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byExternalDevType;
  BYTE     byRes[63];
}NET_DVR_EXDEVDET_COND,*LPNET_DVR_EXDEVDET_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byExternalDevType
外接设备类型：0- 无效值（保留），1- 信号灯，2- 闪光灯
byRes
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_DVR_EXPOSURE

CCD曝光控制参数结构体。

struct{
  BYTE       byExposureMode;
  BYTE       byAutoApertureLevel;
  BYTE       byRes[2];
  DWORD      dwVideoExposureSet;
  DWORD      dwExposureUserSet;
  DWORD      dwRes;
}NET_DVR_EXPOSURE, *LPNET_DVR_EXPOSURE;

Members

byExposureMode
0-手动曝光，1-自动曝光
byAutoApertureLevel
自动光圈灵敏度，取值范围：0~10
byRes
保留
dwVideoExposureSet
自定义视频曝光时间（单位us），自动曝光时该值为曝光最慢值
dwExposureUserSet
自定义曝光时间。在智能交通摄像机上应用及CCD模式时，是指抓拍快门速度，（单位us）
dwRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_EXTERNAL_CONTROL_ALARM

指示灯外控报警信息结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwChannelNo;
  NET_DVR_LAMP_STATE    struLampStateCtrl;
  NET_DVR_TIME          struExternalBeginTime;
  BYTE                  byRes1[64];
}NET_DVR_EXTERNAL_CONTROL_ALARM, *LPNET_DVR_EXTERNAL_CONTROL_ALARM;

Members

dwSize
结构体大小
dwChannelNo
通道号
struLampStateCtrl
指示灯外控状态
struExternalBeginTime
外控开始时间
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_EXTERNAL_DEVCFG

ITS外接设备信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byExternalDevTpye;
  BYTE     byRes2[3];
  char     sDevName[MAX_DEVNAME_LEN];
  union{
           BYTE                  byUnionLen[656];
           struct{
               NET_DVR_IPADDR    struDevIP;
               WORD              wDevPort;
               BYTE              byRes[510];
           }struRrReader;
           struct{
               BYTE              byRs485No;
               BYTE              byDevCtrlCode;
               BYTE              byAutoIssuedData;
               BYTE              byOfflineDetEnable;
               BYTE              byDetCycle;
               BYTE              byRes[651];
           }struGateway;
           struct{
               BYTE              byExternalMode;
               BYTE              byRes[3];
               NET_DVR_IPADDR    struDevIP;
               WORD              wDevPort;
               BYTE              byRs485No;
               BYTE              byDevCtrlCode;
               BYTE              byCtrlCardType;
               BYTE              byLedScreenType;
               BYTE              byLedScreenUse;
               BYTE              byLedDisplayMode;
               char              sLedCustomInfo[MAX_LED_INFO];
               DWORD             dwLedScreenH;
               DWORD             dwLedScreenW;
               BYTE              byRes1[236];
           }struLed;
  }uExternalDevInfo;
  BYTE     byRes[128];
}NET_DVR_EXTERNAL_DEVCFG, *LPNET_DVR_EXTERNAL_DEVCFG;

Members

dwSize
结构体大小
byExternalDevTpye
外接设备类型：0- 其他(联合体unionAddr可不赋值)，1- 远距离读头设备(对应联合体里的struRrReader)，2- 出入口控制机(对应联合体里的struGateway)，3- LED屏(对应联合体里的struLed)
byRes2
保留
sDevName
设备名称
unionAddr为外接设备信息联合体
byUnionLen
联合体大小为656字节
struRrReader为远距离读头设备信息结构体
struDevIP
设备IP地址
wDevPort
设备端口
byRes
保留
struGateway为出入口控制机信息结构体
byRs485No
RS485编号(外接设备类型一样，该编号可以重复；类型不一样，该编号互斥)
byDevCtrlCode
拨码地址，用于区分设备，取值范围：1~255
byAutoIssuedData
是否自动下发卡片数据：0-不自动下发，1-自动下发
byOfflineDetEnable
离线检测：0-关闭，1-开启。离线检测开启时，如果检测到设备在线，则由终端匹配卡片信息，并发送道闸控制指令给出入口控制机；否则由出入口控制机自身匹配控制道闸
byDetCycle
检测周期，取值范围：0～60，单位：s
byRes
保留
struLed为LED屏信息结构体
byExternalMode
LED屏接口类型：0-RS485，1-网络
byRes
保留
struDevIP
DEV IP地址 144 (在byExternalMode == 1 时生效)
wDevPort
设备端口(在byExternalMode == 1 时生效)
byRs485No
RS485编号(外接设备类型一样，该编号可以重复；类型不一样，该编号互斥)
byDevCtrlCode
拨码地址，用于区分设备，取值范围：1~255
byCtrlCardType
控制卡类型：0-保留(无效值)，1- EQ2013，LED屏通过控制卡控制显示的，不同的控制卡类型支持的显示方式不同
byLedScreenType
屏类型：0-单色屏，1-双色屏
byLedScreenUse
屏用途：0-其它，1-区位屏，2-提示屏，3-收费屏
byLedDisplayMode
屏幕字体显示方式：1- 立即显示，2- 左移，3- 右移，4- 上移，5- 下移
sLedContomInfo
屏幕字体显示信息
dwLedScreenH
显示屏组成高度上需要的LED点数
dwLedScreenW
显示屏组成宽度上需要的LED点数
byRes1
保留
byRes
保留

Remarks

LED屏是由控制卡控制的，LED屏可以根据项目实际使用更换大小，此时需要终端通知控制卡目前使用的屏宽(dwLedScreenH)和屏高(dwLedScreenW)。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_EXTERNAL_DEVCOND

ITS外接设备获取信息条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byExternalDevTpye;
  BYTE     byRelativeIndex;
  BYTE     byRes[30];
}NET_DVR_EXTERNAL_DEVCOND, *LPNET_DVR_EXTERNAL_DEVCOND;

Members

dwSize
结构体大小
byExternalDevTpye
外接设备类型：0- 保留，1- 远距离读头设备，2- 出入口控制机，3- LED屏，0xff- 全部信息（长连接获取时使用）
byRelativeIndex
相对索引：0-保留；针对LED屏的类型，相对索引值为1～255，针对其他类型（远距离读头设备、出入口控制机）相对索引值为1~8；0xff-全部信息（长连接获取时使用）
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig

NET_DVR_StartRemoteConfig


NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION

外接设备报警限值联合体。

union {
  NET_DVR_ALARMHOST_UPS_LIMIT_VALUE                     struUpsLimitValue;
  NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE     struTempHumidityLimitValue;
}NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION, *LPNET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION;

Members

struUpsLimitValue
UPS报警限值
struTempHumidityLimitValue
温湿度传感器限值

See Also

NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE


NET_DVR_EXTERNAL_DEVICE_STATE_UNION

外接设备状态联合体。

union {
  NET_DVR_ALARMHOST_UPS_STATE                    struUpsState;
  NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE    struSwitchPowerState;
  NET_DVR_ALARMHOST_GAS_DETECTOR_STATE           struGasDetectorState;
  NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE       struTempHumiSensorState;
  NET_DVR_ALARMHOST_AIRCONDITION_STATE           struAirConditionState;
  NET_DVR_ALARMHOST_ELECTRICITY_STATE            struElectricityState;
  NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE       struTransformerTempState;
  NET_DVR_ALARMHOST_WATERLEVEL_SENSOR            struWaterLevelSensor;
  NET_DVR_ALARMHOST_DUSTNOISE_SENSOR             struDustNoiseSensor;
  NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER         struEnvironmentLogger;
  NET_DVR_WIND_SPEED_STATE    struWindSpeedState;
  NET_DVR_GENERATE_OUTPUT_STATE           struGenerateOutputState;
  NET_DVR_SOAK_STATE       struSoakState;
  NET_DVR_SOLAR_POWER_STATE           struSolarPowerState;
  NET_DVR_SF6_ALARMHOST_STATE            struSF6AlarmHostState;
  NET_DVR_WEIGHT_STATE       struWeightState;
  NET_DVR_WEATHER_STATION_STATE            struWeatherStationState;
  NET_DVR_WATER_QLT_STATE             struWaterQltState;
  NET_DVR_FUEL_GAS_DETE_STATE         struFuelGasDeteState;
  BYTE                                           byRes[512];
}NET_DVR_EXTERNAL_DEVICE_STATE_UNION, *LPNET_DVR_EXTERNAL_DEVICE_STATE_UNION;

Members

struUpsState
UPS状态
struSwitchPowerState
开关电源状态
struGasDetectorState
气体检测系统状态
struTempHumiSensorState
温湿度传感器状态
struAirConditionState
空调状态
struElectricityState
电量表状态
struTransformerTempState
变电器温显表状态
struWaterLevelSensor
水位传感器状态
struDustNoiseSensor
扬尘噪声传感器状态
struEnvironmentLogger
环境采集仪状态
struWindSpeedState
风速传感器状态
struGenerateOutputState
通用扩展输出模块状态
struSoakState
浸水传感器状态
struSolarPowerState
太阳能控制器状态
struSF6AlarmHostState
SF6报警主机状态
struWeightState
称重仪状态
struWeatherStationState
气象采集系统状态
struWaterQltState
水质监测仪状态
struFuelGasDeteState
燃气监测系统状态
byRes
联合体大小为512字节

See Also

NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE


NET_DVR_EXTERNAL_DEVSTATUS

外接设备状态信息结构体。

struct{
  DWORD    dwSize;
  char     sDevName[MAX_DEVNAME_LEN];
  BYTE     byExternalDevTpye;
  BYTE     byRelativeIndex;
  BYTE     byOnline;
  BYTE     byRes[125];
}NET_DVR_EXTERNAL_DEVSTATUS, *LPNET_DVR_EXTERNAL_DEVSTATUS;

Members

dwSize
结构体大小
sDevName
设备名称
byExternalDevTpye
外接设备类型：0- 保留，1- 远距离读头设备，2- 出入口控制机，3- LED屏
byRelativeIndex
相对索引：0-保留；针对LED屏的类型，相对索引值为1～255，针对其他类型（远距离读头设备、出入口控制机）相对索引值为1~8
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_EXTERNAL_LAMP_CTRL_MODE

外接灯控制模式结构体。

struct{
  NET_DVR_PARKINFO    struParkInfo[MAX_PARKING_NUM];
  BYTE                byRes[32];
}NET_DVR_EXTERNAL_LAMP_CTRL_MODE, *LPNET_DVR_EXTERNAL_LAMP_CTRL_MODE;

Members

struParkInfo
外接灯的情况下车位信息，一个通道最大4个车位 (从左到右车位对应数组0～3)
byRes
保留

See Also

NET_DVR_LAMP_CTRL_MODE_UNION


NET_DVR_EXTERNAL_MATRIX_CFG

矩阵信息结构体。

struct{
  DWORD               dwSize;
  BYTE                byValid;
  BYTE                byRes1[3];
  BYTE                sMatrixName[NAME_LEN];
  DWORD               dwMatrixID;
  WORD                wMatrixInputChanNum;
  WORD                wMatrixOutputChanNum;
  WORD                wMatrixOutputChanRef[MAX_CAM_COUNT];
  BYTE                byMatrixChanType;
  BYTE                byMatrixProtocol;
  BYTE                byMatrixType;
  BYTE                byRes2;
  NET_MATRIX_UNION    struMatrixUnion;
  BYTE                byRes3[128];
}NET_DVR_EXTERNAL_MATRIX_CFG,*LPNET_DVR_EXTERNAL_MATRIX_CFG;

Members

dwSize
结构体大小
byValid
是否有效：0-无效，1-有效，有效时为设置矩阵，无效时为删除矩阵
byRes1
保留，置为0
sMatrixName
矩阵的名称
dwMatrixID
矩阵的ID号，获取所有矩阵配置时使用该字段，其他接口调用时该值无效
wMatrixInputChanNum
矩阵的输入通道数目
wMatrixOutputChanNum
矩阵的输出通道数目
wMatrixOutputChanRef
设备输入和矩阵输出的绑定关系，数组下标(+1)表示控制器设备输入通道号，元素的值表示矩阵的输出通道号，元素值大于0表示绑定矩阵输出通道，元素值为0时表示不绑定。对于LCD拼接屏（屏幕服务器），表示屏幕和矩阵输出的绑定关系，数组下标(+1)为屏幕索引序号（从1开始）。
byMatrixChanType
矩阵的通道类型：1-BNC，2-VGA，3-RGB，4-DVI
byMatrixProtocol
矩阵所用协议：1-ZT1.0，2- ZT2.0，3- Extron，4- Creator，5- 自定义
byMatrixType
矩阵类型：1-模拟矩阵，2-数字矩阵，集中式多屏控制器V2.1只支持模拟矩阵
byRes2
保留，置为0
struMatrixUnion
模拟或者数字矩阵参数联合体
byRes3
保留，置为0

Remarks

当矩阵协议为自定义时，通过透明通道接口发送自定义控制命令。

See Also

LCD拼接屏：NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_EXTERNALDEVICE

外设配置结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_SUPPLEMENTLIGHT    struSupplementLight;
  BYTE                       byRes[512];
}NET_DVR_EXTERNALDEVICE, *LPNET_DVR_EXTERNALDEVICE;

Members

dwSize
结构体大小
struSupplementLight
补光灯结构信息
byRes
保留

Remarks

  • 设备是否支持外设配置能力或者支持的参数能力，可以通过设备能力集进行判断，对应外设配置能力集(ExternalDevice)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EXTERNALDEVICE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_EZVIZ_ACCESS_CFG

EZVIZ接入参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byDeviceStatus;
  BYTE     byAllowRedirect;
  BYTE     byDomainName[MAX_DOMAIN_NAME];
  BYTE     byRes1[33];
  BYTE     byNetMode;
  BYTE     byRes[411];
}NET_DVR_EZVIZ_ACCESS_CFG,*LPNET_DVR_EZVIZ_ACCESS_CFG;

Members

dwSize
结构体大小
byEnable
启用EZVIZ接入：0- 禁用，1- 启用
byDeviceStatus
是否在线状态：0- 保留，1- 在线，2- 离线
byAllowRedirect
是否允许重定向：0- 保留(兼容老SDK接新设备的情况)，1- 是，2- 否
byDomainName
域名服务器地址
byRes1
保留，置为0
byNetMode
网络模式：0-无意义；1-自动；2-有线网络优先；3-有线网络（默认）；4-无线网络
byRes
保留，置为0

Remarks

EZVIZ是指民用萤石平台。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FACE_COND

人脸参数配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwFaceNum;
  DWORD    dwEnableReaderNo;
  BYTE     byRes[124];
}NET_DVR_FACE_COND, *LPNET_DVR_FACE_COND;

Members

dwSize
结构体大小
byCardNo
人脸关联的卡号（设置时该参数可不设置）
dwFaceNum
设置或获取人脸数量，获取时置为0xffffffff表示获取所有人脸信息
dwEnableReaderNo
人脸读卡器编号
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FACE_DETECTION

人脸侦测报警信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  DWORD               dwBackgroundPicLen;
  NET_VCA_DEV_INFO    struDevInfo;
  NET_VCA_RECT        struFacePic[MAX_FACE_PIC_NUM];
  BYTE                byFacePicNum ;
  BYTE                byUploadEventDataType ;
  BYTE                byRes1;
  WORD                wDevInfoIvmsChannelEx;
  BYTE                byTimeDiffFlag;
  char                cTimeDifferenceH;
  char                cTimeDifferenceM;
  BYTE                byRes[249];
  BYTE                *pBackgroundPicpBuffer;
}NET_DVR_FACE_DETECTION,*LPNET_DVR_FACE_DETECTION;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
dwBackgroundPicLen
背景图的长度，为0表示没有图片，大于0表示有图片
struDevInfo
前端设备信息，包括IP、端口、通道号等
struFacePic
人脸子图区域，归一化值，相对于大图（背景图)的分辨率
byFacePicNum
子图数量
byUploadEventDataType
图片数据长传方式：0-二进制数据，1-URL
byRes1
保留
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区,，byTimeDiffFlag为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byTimeDiffFlag为1时有效
byRes
保留，置为0
pBackgroundPicpBuffer
背景图的图片数据

Remarks

  • 从DWORD类型的时间取值解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)
  • 相对时标，一般涉及到时区，比如传递的东八区时间、GMT时间。
    绝对时标，即UTC时间，不带时区，比如1970年1月1日0时0分0秒到现在的秒数，相机现在一般传递的绝对时标都是这个。
    例如：当前相机东八区的time_t值1400252410 ，则
    相对时标：2014-05-16 23:00:10
    绝对时标：2014-05-16 15:00:10

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_FACE_EXTRA_INFO

人脸侦测抓图附加信息结构体。

struct{
  NET_VCA_RECT    struVcaRect[MAX_FACE_PIC_NUM];
  BYTE            byRes[64];
}NET_DVR_FACE_EXTRA_INFO,*LPNET_DVR_FACE_EXTRA_INFO;

Members

struVcaRect
图片名称
byRes
人脸子图坐标信息

See Also

NET_DVR_PIC_EXTRA_INFO_UNION


NET_DVR_FACE_FEATURE

人脸属性结构体。

struct{
  NET_VCA_RECT    struFace;
  NET_VCA_POINT    struLeftEye;
  NET_VCA_POINT    struRightEye;
  NET_VCA_POINT    struLeftMouth;
  NET_VCA_POINT    struRightMouth;
  NET_VCA_POINT    struNoseTip;
}NET_DVR_FACE_FEATURE, *LPNET_DVR_FACE_FEATURE;

Members

struFace
人脸子图区域
struLeftEye
左眼坐标
struRightEye
右眼坐标
struLeftMouth
嘴左边坐标
struRightMouth
嘴右边坐标
struNoseTip
鼻子坐标

See Also

NET_DVR_CAPTURE_FACE_CFG


NET_DVR_FACE_PARAM_BYCARD

按卡号删除人脸参数条件结构体。

struct{
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  BYTE     byFaceID[MAX_FACE_NUM];
  BYTE     byRes1[42];
}NET_DVR_FACE_PARAM_BYCARD, *LPNET_DVR_FACE_PARAM_BYCARD;

Members

byCardNo
人脸关联的卡号
byEnableCardReader
人脸读卡器信息，按数组表示，每位数组表示一个读卡器，取值：0-不删除，1-删除
byFaceID
需要删除的人脸ID编号，按数组下标，每位数组表示一个人脸ID，取值：0-不删除，1-删除该人脸
byRes1
保留，置为0

See Also

NET_DVR_DEL_FACE_PARAM_MODE


NET_DVR_FACE_PARAM_BYREADER

按读卡器删除人脸参数条件结构体。

struct{
  DWORD    dwCardReaderNo;
  BYTE     byClearAllCard;
  BYTE     byRes1[3];
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byRes[548];
}NET_DVR_FACE_PARAM_BYREADER, *LPNET_DVR_FACE_PARAM_BYREADER;

Members

dwCardReaderNo
人脸读卡器编号（0-主机）
byClearAllCard
是否删除所有卡的人脸信息：0- 按卡号删除人脸信息，1- 删除所有卡的人脸信息
byRes1
保留，置为0
byCardNo
人脸关联的卡号，byClearAllCard为0时有效
byRes
保留，置为0

See Also

NET_DVR_DEL_FACE_PARAM_MODE


NET_DVR_FACE_PARAM_CFG

人脸参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwFaceLen;
  char     *pFaceBuffer;
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  BYTE     byFaceID;
  BYTE     byFaceDataType;
  BYTE     byRes[126];
}NET_DVR_FACE_PARAM_CFG, *LPNET_DVR_FACE_PARAM_CFG;

Members

dwSize
结构体大小
byCardNo
人脸关联的卡号
dwFaceLen
人脸数据长度
pFaceBuffer
人脸数据缓冲区指针，dwFaceLen不为0时存放人脸数据（DES加密处理，设备端返回的即加密后的数据）
byEnableCardReader
需要下发人脸的读卡器，按数组表示，每位数组表示一个读卡器，数组取值：0-不下发该读卡器，1-下发到该读卡器
byFaceID
人脸ID编号，有效取值范围：1~2
byFaceDataType
人脸数据类型：0- 模板（默认），1- 图片
byRes
保留，置为0

Remarks

  • 设备是否支持人脸参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FaceParam>。

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_FACE_PARAM_COND

人脸参数配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  DWORD    dwFaceNum;
  BYTE     byFaceID;
  BYTE     byRes[127];
}NET_DVR_FACE_PARAM_COND, *LPNET_DVR_FACE_PARAM_COND;

Members

dwSize
结构体大小
byCardNo
人脸关联的卡号
byEnableCardReader
人脸的读卡器是否有效，按数组表示，每位数组表示一个读卡器，数组取值：0-无效，1-有效
dwFaceNum
设置或获取人脸数量，获取时置为0xffffffff表示获取所有人脸信息
byFaceID
人脸ID编号，有效取值范围：1~2，0xff表示该卡所有人脸
byRes
保留，置为0

Remarks

  • 设备是否支持人脸参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FaceParam>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FACE_PARAM_CTRL

人脸参数删除条件结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byMode;
  BYTE                           byRes1[3];
  NET_DVR_DEL_FACE_PARAM_MODE    struProcessMode;
  BYTE                           byRes[64];
}NET_DVR_FACE_PARAM_CTRL, *LPNET_DVR_FACE_PARAM_CTRL;

Members

dwSize
结构体大小
byMode
删除方式：0- 按卡号方式删除，1- 按读卡器删除
byRes1
保留，置为0
struProcessMode
处理方式，不同的删除方式对应联合体里面不同的结构体参数
byRes
保留，置为0

Remarks

  • 设备是否支持人脸参数配置，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FaceParam>。

See Also

NET_DVR_RemoteControl


NET_DVR_FACE_PARAM_STATUS

人脸参数下发状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byCardReaderRecvStatus[MAX_CARD_READER_NUM_512];
  BYTE     byErrorMsg[ERROR_MSG_LEN];
  DWORD    dwCardReaderNo;
  BYTE     byTotalStatus;
  BYTE     byFaceID;
  BYTE     byRes[130];
}NET_DVR_FACE_PARAM_STATUS, *LPNET_DVR_FACE_PARAM_STATUS;

Members

dwSize
结构体大小
byCardNo
人脸关联的卡号
byCardReaderRecvStatus
人脸读卡器状态，按数组表示，每位数组表示一个读卡器，取值：0-失败，1-成功，2-重试或人脸质量差，3-内存已满，4-已存在该人脸，5-非法人脸ID，6-算法建模失败，7-未下发卡权限，8-未定义（保留），9-人眼间距小，10-图片数据长度小于1KB，11-图片格式不符（png/jpg/bmp）,12-图片像素数量超过上限，13-图片像素数量低于下限，14-图片信息校验失败，15-图片解码失败，16-人脸检测失败，17-人脸评分失败
byErrorMsg
下发错误信息，当byCardReaderRecvStatus为4时表示已存在人脸对应的卡号
dwCardReaderNo
指纹读卡器编号
byTotalStatus
下发总的状态：0- 当前人脸未下完所有读卡器，1- 已下完所有读卡器(这里的所有指的是门禁主机往所有的读卡器下发了，不管成功与否)
byFaceID
人脸ID编号，有效取值范围：1~2
byRes
保留，置为0

Remarks

对应ACS_ABILITY中<FaceParam>节点下<isSupportFaceCover>节点

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FACE_PIC_DATA_INFO

人脸子图信息查询条件结构体。

struct{
  DWORD           dwImageLen;
  NET_VCA_RECT    struVcaRect;
  DWORD           dwFaceScore;
  BYTE            byVcaRectOnly;
  BYTE            byRes1[3];
  DWORD           dwPID;
  DWORD           dwFaceSearchNum;
  NET_VCA_RECT    struMultiVcaRect[NET_DVR_MAX_FACE_SEARCH_NUM];
  BYTE            byRes[136];
  DWORD           *pImage;
}NET_DVR_FACE_PIC_DATA_INFO, *LPNET_DVR_FACE_PIC_DATA_INFO;

Members

dwImageLen
大图的图片大小，byVcaRectOnly为0时使用
struVcaRect
子图在大图中的坐标位置，归一化坐标，byVcaRectOnly为0时使用
dwFaceScore
相似度（阈值，查询返回相似度大于该值的结果），取值范围：0~100
byVcaRectOnly
是否使用上传图片ID和坐标的方式：0- 否，1- 是
byRes1
保留
dwPID
图片ID，byVcaRectOnly为1时使用
dwFaceSearchNum
搜索人脸区域个数，byVcaRectOnly为1时使用
struMultiVcaRect
子图在大图中的坐标位置归一化坐标，byVcaRectOnly为1时使用，每位数组表示一个人脸子图区域，紧凑排列
byRes
保留
pImage
大图的图片数据缓冲区，图片格式为jpg，byVcaRectOnly为0时使用

Remarks

  • 对于超脑NVR设备，图片ID和人脸子图在大图中的坐标，通过接口NET_DVR_UploadFile_V40(上传类型：UPLOAD_FACE_ANALYSIS_DATA)、NET_DVR_GetUploadResult将图片上传给设备进行识别获取。
  • 对于其他设备，子图在大图中的坐标位置，通过接口NET_DVR_DetectImage将图片上传给设备进行识别获取。

See Also

NET_DVR_SMARTSEARCH_PIC_UNION


NET_DVR_FACE_PIPCFG

画中画参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byBackChannel;
  BYTE    byPosition;
  BYTE    byPIPDiv;
  BYTE    byRes[4];
 }NET_DVR_FACE_PIPCFG,*LPNET_DVR_FACE_PIPCFG;

Members

byEnable
是否开启画中画：0-否，1-是
byBackChannel
背景通道号（面板通道）
byPosition
叠加位置：0-左上，1-左下，2-右上，3-右下
byPIPDiv
分屏系数(人脸画面:面板画面)：0-1:4，1-1:9，2-1:16
byRes
保留，置为0

See Also

NET_DVR_FACEDETECT_RULECFG_V41


NET_DVR_FACE_RECORD

人脸参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwFaceLen;
  DWORD    pFaceBuffer;
  BYTE     byRes[128];
}NET_DVR_FACE_RECORD, *LPNET_DVR_FACE_RECORD;

Members

dwSize
结构体大小
byCardNo
人脸关联的卡号
dwFaceLen
人脸数据长度
pFaceBuffer
人脸数据指针(人脸图片二进制数据)
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_SendWithRecvRemoteConfig


NET_DVR_FACE_STATUS

人脸参数配置状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byErrorMsg[ERROR_MSG_LEN];
  DWORD    dwReaderNo;
  BYTE     byRecvStatus;
  BYTE     byRes[131];
}NET_DVR_FACE_STATUS, *LPNET_DVR_FACE_STATUS;

Members

dwSize
结构体大小
byCardNo
人脸关联的卡号
byErrorMsg
下发错误信息，当byCardReaderRecvStatus为4时，表示已存在人脸对应的卡号
dwReaderNo
人脸读卡器编号，可用于下发错误返回
byRecvStatus
人脸读卡器状态，按字节表示，0-失败，1-成功，2-重试或人脸质量差，3-内存已满(人脸数据满)，4-已存在该人脸，5-非法人脸ID，6-算法建模失败，7-未下发卡权限，8-未定义（保留），9-人眼间距小距小，10-图片数据长度小于1KB，11-图片格式不符（png/jpg/bmp），12-图片像素数量超过上限，13-图片像素数量低于下限，14-图片信息校验失败，15-图片解码失败，16-人脸检测失败，17-人脸评分失败
byRes
保留，置为0

See Also

NET_DVR_SendWithRecvRemoteConfig


NET_DVR_FACE_SUB_PIC_INFO

人体特征识别结果结构体。

struct{
  DWORD           dwSimilarity;
  NET_VCA_RECT    struVcaRect;
  BYTE            byRes2[236];
}NET_DVR_FACE_SUB_PIC_INFO, *LPNET_DVR_FACE_SUB_PIC_INFO;

Members

dwSimilarity
相似度，取值范围：0~100
struVcaRect
人脸区域，归一化坐标
byRes2
保留，置为0

See Also

NET_DVR_PIC_FEATURE_UNION


NET_DVR_FACE_THERMOMETRY_ALARM

人脸测温报警信息结构体

struct{
  DWORD              dwSize;
  DWORD              dwChannel;
  BYTE               byRuleID;
  BYTE               byRes1[3];
  BYTE               byRuleName[NAME_LEN];
  DWORD              dwRelativeTime;
  DWORD              dwAbsTime;
  BYTE               byFaceDetectionState;
  BYTE               byThermometryUnit;
  BYTE               byAlarmRule;
  BYTE               byRes2[1];
  float              fAlarmTemperature;
  float              fRuleTemperature;
  DWORD              dwVisibleLightImageLen;
  BYTE               *pVisibleLightImage;
  DWORD              dwFaceImageLen;
  BYTE               *pFaceImage;
  NET_VCA_RECT       struFaceRegion;
  float              fMinTemperature;
  float              fAverageTemperature;
  NET_VCA_POINT      struMinTemperaturePoint;
  NET_VCA_POINT      struMaxTemperaturePoint;
  BYTE               byRes[720];
}NET_DVR_FACE_THERMOMETRY_ALARM, *LPNET_DVR_FACE_THERMOMETRY_ALARM;

Members

dwSize
结构体大小
dwChannel
通道号
byRuleID
人脸测温规则ID，取值范围：1-40
byRes1
保留字节
byRuleName
规则名称
dwRelativeTime
相对时标
dwAbsTime
绝对时标
byFaceDetectionState
人脸检测状态：0- 未检测到人脸，1- 已检测到人脸
byThermometryUnit
测温单位：0- 摄氏度（℃），1- 华氏度（℉），2- 开尔文(K)
byAlarmRule
报警规则：0- 大于，1- 小于
byRes2
保留字节
fAlarmTemperature
触发报警温度，精确到小数点后一位，取值范围：[-20.0, 120.0]
fRuleTemperature
规则配置报警温度，精确到小数点后一位，取值范围：[-20.0, 60.0]
dwVisibleLightImageLen
可见光图片长度
pVisibleLightImage
可见光图片指针，存放可见光图片数据，JPEG格式
dwFaceImageLen
人脸子图长度
pThermalPicBuff
人脸子图指针，存放人脸子图图片数据，JPEG格式
struFaceRegion
人脸子图区域
fMinTemperature
最低温度，精确到小数点后一位，取值范围：[-20.0, 120.0]
fAverageTemperature
平均温度，精确到小数点后一位，取值范围：[-20.0, 120.0]
struMinTemperaturePoint
最低温度位置坐标
struMaxTemperaturePoint
最高温度位置坐标
byRes
保留字节

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

当byFaceDetectionState = 0（未检测到人脸）时，dwfaceImageLen = 0，struFaceRect为空，只有可见光图片数据，无人脸子图图片数据；
当byFaceDetectionState = 1（检测到人脸）时，有可见光图片数据和人脸子图图片数据

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_FACECAPTURE_STATISTICS_COND

人脸抓拍人员统计查询条件结构体。

struct{
  DWORD              dwSize;
  DWORD              dwChannel;
  NET_DVR_TIME_EX    struStartTime;
  BYTE               byReportType;
  BYTE               byStatType;
  BYTE               byRes[126];
}NET_DVR_FACECAPTURE_STATISTICS_COND, *LPNET_DVR_FACECAPTURE_STATISTICS_COND;

Members

dwSize
结构体大小
dwChannel
通道号
struStartTime
统计开始时间
byReportType
统计报表类型：1- 日报表，2- 周报表，3- 月报表，4- 年报表
byStatType
数据类型统计，按位表示：Bit0- 年龄段，Bit1- 性别，Bit2- 人数
byRes
保留

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FACECAPTURE_STATISTICS_RESULT

人脸抓拍人员统计结果结构体。

struct{
  DWORD                     dwSize;
  NET_DVR_TIME_EX           struStartTime;
  NET_DVR_TIME_EX           struEndTime;
  BYTE                      byStatType;
  BYTE                      byRes[7];
  DWORD                     dwPeopleNum;
  NET_DVR_AGEGROUP_PARAM    struAgeGroupParam;
  NET_DVR_SEXGROUP_PARAM    struSexGroupParam;
  BYTE                      byRes1[128];
}NET_DVR_FACECAPTURE_STATISTICS_RESULT, *LPNET_DVR_FACECAPTURE_STATISTICS_RESULT;

Members

dwSize
结构体大小
struStartTime
统计开始时间
struEndTime
统计结束时间
byStatType
数据类型统计，按位表示：Bit0- 年龄段有效，Bit1- 性别有效，Bit2- 人数有效
byRes
保留
dwPeopleNum
人数统计
struAgeGroupParam
年龄段人数统计
struSexGroupParam
性别人数统计
byRes1
保留

Remarks

  • 设备不支持报警监听方式获取统计结果，仅支持报警布防方式，目前设备15分钟默认上传一次，上传间隔时间不可设置。
  • 设备是否支持人员统计功能或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<FaceCaptureStatistics>。

See Also

NET_DVR_GetNextRemoteConfig

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_FACEDETECT_ALARM

人脸检测报警上传结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwRelativeTime;
  DWORD                  dwAbsTime;
  BYTE                   byRuleName[NAME_LEN];
  NET_VCA_TARGET_INFO    struTargetInfo;
  NET_VCA_DEV_INFO       struDevInfo;
  DWORD                  dwPicDataLen;
  BYTE                   byAlarmPicType;
  BYTE                   byPanelChan;
  BYTE                   byRelAlarmPicNum;
  BYTE                   byRes1;
  DWORD                  dwFacePicDataLen;
  DWORD                  dwAlarmID;
  BYTE                   byRes2[44];
  BYTE                   *pFaceImage;
  BYTE                   *pImage;
}NET_DVR_FACEDETECT_ALARM, *LPNET_DVR_FACEDETECT_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
byRuleName
规则名称
struTargetInfo
报警目标信息
struDevInfo
前端设备信息
dwPicDataLen
返回图片的长度，为0表示没有图片，大于0表示该结构后面紧跟图片数据。
byAlarmPicType
报警图片类型：0- 异常人脸报警图片，1- 人脸图片，2- 多张人脸，3- 戴墨镜人脸，4- 打电话人脸
byPanelChan
人脸通道关联的面板通道
byRelAlarmPicNum
关联通道报警图片数量
byRes1
保留
dwFacePicDataLen
人脸图片的长度，为0表示没有图片，大于0表示该结构后面紧跟图片数据
dwAlarmID
报警ID，用以标识通道间关联产生的组合报警，0表示无效
byRes2
保留
pFaceImage
指向人脸图指针
pImage
指向图片的指针

Remarks

  • 如当前报警通道存在关联通道时，针对同一报警事件，会对关联通道进行抓图并上传，这些图片数据分多次上传，其中报警事件信息一致。可通过字段dwAlarmID对这些报警进行区分组合，由byRelAlarmPicNum获取关联通道的抓拍图片数量，其中报警图片总数量为byRelAlarmPicNum + 1，从而得到当前报警事件的多张图片。
  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_FACEDETECT_RULECFG

人脸检测规则结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byEnable;
  BYTE                          byEventType;
  BYTE                          byUpLastAlarm;
  BYTE                          byUpFacePic;
  BYTE                          byRuleName[NAME_LEN];
  NET_VCA_POLYGON               struPolygon;
  BYTE                          byPicProType;
  BYTE                          bySensitivity;
  DWORD                         wDuration;
  NET_DVR_JPEGPARA              struPictureParam;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                          byPicRecordEnable;
  BYTE                          byRes1[3];
  DWORD                         dwEventTypeEx;
  BYTE                          byRes2[32];
 }NET_DVR_FACEDETECT_RULECFG,*LPNET_DVR_FACEDETECT_RULECFG;

Members

dwSize
结构体大小
byEnable
是否启用人脸检测规则
byEventType
警戒事件类型：0- 异常人脸，1- 正常人脸，2- 异常人脸&正常人脸
byUpLastAlarm
是否先上传最近一次的报警
byUpFacePic
是否上传人脸子图：0-否，1-是
byRuleName
规则名称
struPolygon
人脸检测规则区域
byPicProType
报警时图片处理方式：0-不处理，非0-上传
bySensitivity
规则灵敏度
wDuration
触发人脸报警时间阈值
struPictureParam
图片规格结构
struSizeFilter
尺寸过滤器
struAlarmTime
布防时间
struHandleType
处理方式
byRelRecordChan
报警触发的录象通道，为1表示触发该通道
byPicRecordEnable
是否启用图片存储：0- 不启用，1- 启用
byRes1
保留，置为0
dwEventTypeEx
警戒事件类型扩展，类型值按位表示，可任意选择其中1种或者几种进行组合，类型取值如下所示：
0x00: 无效，以byEventType字段为准
0x01: 异常人脸
0x02: 正常人脸
0x04: 多张人脸
0x08: 戴墨镜人脸
0x10: 打电话人脸
dwEventTypeEx字段为0时则取byEventType字段，dwEventTypeEx、byEventType字段都有值时则以dwEventTypeEx字段为准。上层配置dwEventTypeEx字段时，若该类型是byEventType字段已有的类型，SDK会将值同步到byEventType中，因此建议统一使用dwEventTypeEx，可以兼容byEventType字段
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FACEDETECT_RULECFG_V41

人脸检测规则结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byEnable;
  BYTE                          byEventType;
  BYTE                          byUpLastAlarm;
  BYTE                          byUpFacePic;
  BYTE                          byRuleName[NAME_LEN];
  NET_VCA_POLYGON               struVcaPolygon;
  BYTE                          byPicProType;
  BYTE                          bySensitivity;
  DWORD                         wDuration;
  NET_DVR_JPEGPARA              struPictureParam;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                          byPicRecordEnable;
  BYTE                          byRes1;
  WORD                          wAlarmDelay;
  NET_DVR_FACE_PIPCFG           struFacePIP;
  WORD                          wRelSnapChan[MAX_REL_SNAPCHAN_NUM];
  BYTE                          byRes2[2];
  DWORD                         dwEventTypeEx;
  BYTE                          byRes[16];
 }NET_DVR_FACEDETECT_RULECFG_V41,*LPNET_DVR_FACEDETECT_RULECFG_V41;

Members

dwSize
结构体大小
byEnable
是否启用人脸检测规则
byEventType
警戒事件类型：0- 异常人脸，1- 正常人脸，2- 异常人脸&正常人脸
byUpLastAlarm
是否先上传最近一次的报警
byUpFacePic
是否上传人脸子图：0- 否，1- 是
byRuleName
规则名称
struVcaPolygon
人脸检测规则区域
byPicProType
报警时图片处理方式：0-不处理，非0-上传
bySensitivity
规则灵敏度
wDuration
触发人脸报警时间阈值
struPictureParam
图片规格结构
struSizeFilter
尺寸过滤器
struAlarmTime
布防时间
struHandleType
处理方式
byRelRecordChan
报警触发的录象通道，为1表示触发该通道。按位表示通道，例如：byRelRecordChan[0]==1表示触发通道1录像，byRelRecordChan[1]==1表示触发通道2录像，依次类推
byPicRecordEnable
是否启用图片存储：0-不启用，1-启用
byRes1
保留，置为0
wAlarmDelay
智能报警延时：0-5s，1-10s，2-30s，3-60s，4-120s，5-300s，6-600s
struFacePIP
画中画参数
wRelSnapChan
关联抓图通道(当主通道报警时，同时会上传关联通道的抓拍图片)：0表示不关联，其他值为关联通道号
byRes2
保留，置为0
dwEventTypeEx
警戒事件类型扩展，类型值按位表示，可任意选择其中1种或者几种进行组合，类型取值如下所示：
0x00: 无效，以byEventType字段为准
0x01: 异常人脸
0x02: 正常人脸
0x04: 多张人脸
0x08: 戴墨镜人脸
0x10: 打电话人脸
dwEventTypeEx字段为0时则取byEventType字段，dwEventTypeEx、byEventType字段都有值时则以dwEventTypeEx字段为准。上层配置dwEventTypeEx字段时，若该类型是byEventType字段已有的类型，SDK会将值同步到byEventType中，因此建议统一使用dwEventTypeEx，可以兼容byEventType字段
byRes
保留，置为0

Remarks

  • 设备是否支持人脸检测智能功能或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<Face>中<FaceDetect>。
  • 门禁一体机配置好人脸检测参数之后，刷卡开门时需要检测到人脸才会进行开门，如果配置关联抓图通道，联动抓拍的图片通过报警布防方式上传，对应门禁主机报警信息类型（COMM_ALARM_ACS）。

See Also

智能ATM：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

门禁主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FACEDETECTCFG

人脸抓拍功能配置结构体。

struct{
  DWORD                dwSize;
  DWORD                dwMinNeighbors;
  DWORD                dwScaleFactor;
  DWORD                dwMinObjWidth;
  DWORD                dwMinObjHeight;
  DWORD                dwMaxObjWidth;
  DWORD                dwMaxObjHeight;
  DWORD                dwDetFrameDiffEnable;
  DWORD                dwDetFrameDiffThresh;
  DWORD                dwTrackEnable;
  DWORD                dwTckMinEnter;
  BYTE                 byRes1[20];
  BYTE                 byRegionEnable;
  BYTE                 byRes2[3];
  NET_VCA_POLYGON      struVcaPolygon;
  BYTE                 byRes3[256];
}NET_DVR_FACEDETECTCFG, *LPNET_DVR_FACEDETECTCFG;

Members

dwSize
结构体大小
dwMinNeighbors
最小邻居数，范围0-7，默认3
dwScaleFactor
缩放因子，范围0-4，默认3
dwMinObjWidth
检测目标的最小宽度，范围24-200，默认60
dwMinObjHeight
检测目标的最小高度，范围24-200，默认60
dwMaxObjWidth
检测目标的最大宽度，范围dwMinObjHeight - 500，默认200
dwMaxObjHeight
检测目标的最大高度，范围dwMinObjHeight - 500，默认200
dwDetFrameDiffEnable
是否利用帧差形成的mask进行加速，默认1
dwDetFrameDiffThresh
帧差阈值，范围1-8，默认4
dwTrackEnable
保留
dwTckMinEnter
进入检测中形成目标的最小路径长度，范围1-100，默认15
byRes1
保留
byRegionEnable
是否激活区域检测
byRes2
保留
struVcaPolygon
人脸抓拍区域
byRes3
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FACEDETECTION_SEARCHCOND

人脸侦测录像查找条件参数结构体。

struct{
  NET_VCA_POLYGON    struFacePolygon;
  DWORD              dwPreTime;
  DWORD              dwDelayTime;
  BYTE               byRes[5972];
}NET_DVR_FACEDETECTION_SEARCHCOND,*LPNET_DVR_FACEDETECTION_SEARCHCOND;

Members

struFacePolygon
人脸侦测识别区域
dwPreTime
智能报警提前时间，单位：秒
dwDelayTime
智能报警延迟时间，单位：秒
byRes
保留，置为0

See Also

NET_DVR_AREA_SMARTSEARCH_COND_UNION


NET_DVR_FACELIB_COND

导入人脸数据(人脸图片+图片附件信息)到人脸库的条件参数结构体。

struct{
  DWORD    dwSize;
  char     szFDID[NET_SDK_MAX_FDID_LEN];
  BYTE     byConcurrent;
  BYTE     byCover;
  BYTE     byCustomFaceLibID;
  BYTE     byRes1;
  char     byIdentityKey[NET_SDK_MAX_INDENTITY_KEY_LEN];
  BYTE     byRes[60];
}NET_DVR_FACELIB_COND,*LPNET_DVR_FACELIB_COND;

Members

dwSize
结构体大小
szFDID
人脸库ID(设备自动生成的FDID或者是自定义的customFaceLibID)，唯一标识
byConcurrent
设备并发处理：0- 不开启(设备自动会建模)，1- 开始(设备不会自动进行建模)
byCover
是否覆盖式导入(人脸库存储满的情况下强制覆盖导入时间最久的图片数据)：0- 否，1- 是
byCustomFaceLibID
人脸库ID是否是自定义：0- 不是，1- 是
byRes1
保留，置为0
byIdentityKey
交互操作口令
byRes
保留，置为0

Remarks

  • 设备是否支持导入人脸图片数据到人脸库的能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<FaceAppendData>。

See Also

NET_DVR_UploadFile_V40


NET_DVR_FACELIB_GUARD_COND

脸比对库联动配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  char     szFDID[68];
  BYTE     byRes[128];
}NET_DVR_FACELIB_GUARD_COND, *LPNET_DVR_FACELIB_GUARD_COND;

Members

dwSize
结构体大小
dwChannel
通道号
szFDID
人脸库ID
byRes
保留，置为0

Remarks

  • 设备是否支持脸比对库联动配置或者支持的参数能力，可以通过设备能力集进行判断，对应事件触发能力集(EventTriggersCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES，节点：<FaceLibTriggerCap>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig

NET_DVR_GetSTDAbility


NET_DVR_FC_PARAM

光纤参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwStoreLunID;
  DWORD    dwLogicLunID;
  DWORD    dwHbaID;
  DWORD    dwAccessMode;
  char     szClientWWWPN[NAME_LEN];
  BYTE     byRes[32];
}NET_DVR_FC_PARAM,*LPNET_DVR_FC_PARAM;

Members

dwSize
结构体大小
dwStoreLunID
存储LUN卷ID
dwLogicLunID
逻辑LUN卷ID，-1表示自动生成
dwHbaID
光纤通道号
dwAccessMode
读写方式：0- 读写，1- 同步读写，2- 只读，3- 智能只读
szClientWWWPN
客户光纤卡
byRes
保留

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_FD_DATA_COND

人脸数据文件上传条件参数结构体。

struct{
  DWORD    dwSize;
  char     szFDID[NET_SDK_MAX_FDID_LEN];
  char     szCheckCode[NET_SDK_CHECK_CODE_LEN];
  BYTE     byCover;
  BYTE     byRes[127];
}NET_DVR_FD_DATA_COND,*LPNET_DVR_FD_DATA_COND;

Members

dwSize
结构体大小
szFDID
人脸库ID(设备自动生成的FDID或者是自定义的customFaceLibID)，唯一标识
szCheckCode
校验码
byCover
是否覆盖式导入(人脸库存储满的情况下强制覆盖导入时间最久的图片数据)：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持人脸数据文件上传功能，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<isSuportFDLibImpEmp>。

See Also

NET_DVR_UploadFile_V40


NET_DVR_FFC_PARAM

FFC参数结构体。

struct{
  BYTE    byMode;
  BYTE    byRes1;
  WORD    wCompensateTime;
  BYTE    byRes2[4];
}NET_DVR_FFC_PARAM,*LPNET_DVR_FFC_PARAM;

Members

byMode
1- 定时模式，2- 温度模式，3- 关闭
byRes1
保留，置为0
wCompensateTime
时间（定时模式下生效），单位：分钟，具体取值通过能力集获取，选项有：10、20、30、40、50、60、120、180、240
byRes2
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_FIGURE_INFO

按时间点获取缩略图结果信息结构体。

struct{
  DWORD    dwPicLen;
  char     *pPicBuf;
}NET_DVR_FIGURE_INFO, *LPNET_DVR_FIGURE_INFO;

Members

dwPicLen
图片长度
pPicBuf
图片数据

Remarks

  • 设备是否支持按时间点获取缩略图或者支持的参数能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportGetFigure>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FILE_INFO_IN

视图库文件查找条件参数结构体。

struct{
  char    szFileID[MAX_FILE_ID_LEN];
  BYTE    byRes[256];
 }NET_DVR_FILE_INFO_IN,*LPNET_DVR_FILE_INFO_IN;

Members

szFileID
上传之后设备分配的文件ID
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig NET_DVR_STDControl


NET_DVR_FILE_QUERY_INFO

视图库文件查找结果参数结构体。

struct{
  DWORD    dwSize;
  INT64    i64FileLen;
  BYTE     byRes[256];
 }NET_DVR_FILE_QUERY_INFO,*LPNET_DVR_FILE_QUERY_INFO;

Members

dwSize
结构体大小
i64FileLen
文件大小，单位：字节
byRes
保留，置为0

Remarks

  • 根据文件ID获取视图库中文件大小信息，可以用于断点续传。
  • 设备支持查询的信息对应按文件ID查找文件信息的能力集(FileInfoCap)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_QUERY_FILE_INFO_CAP)。
  • 设备是否支持查询功能可以通过视图库总能力集(VideoImgDBCap)的节点<isSupportQuery>进行判断，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_FILECOND

查找的录像文件信息结构体。

struct{
  LONG             lChannel;
  DWORD            dwFileType;
  DWORD            dwIsLocked;
  DWORD            dwUseCardNo;
  BYTE             sCardNumber[32];
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
}NET_DVR_FILECOND,*LPNET_DVR_FILECOND;

Members

lChannel
通道号
dwFileType
录象文件类型（根据dwUseCardNo参数是否带卡号查找分为两类）：
不带卡号查找时类型：0xff－全部，0－定时录像，1-移动侦测，2－报警触发，3-报警触发或移动侦测，4-报警触发和移动侦测，5-命令触发，6-手动录像，7-智能录像，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件
带卡号查找时类型：0xff-全部，0-定时录像，1-移动侦测，2-接近报警，3-出钞报警，4-进钞报警，5-命令触发，6-手动录像，7-震动报警，8-环境报警，9-智能报警，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，16-区域入侵，17-声音异常，18-场景变更侦测
dwIsLocked
是否锁定：0-未锁定文件，1-锁定文件，0xff表示所有文件（包括锁定和未锁定）
dwUseCardNo
是否带卡号查找
sCardNumber
卡号
struStartTime
开始时间
struStopTime
停止时间

Remarks

按卡号查找录像文件需要设备支持，比如ATM机。如果ATM机按卡号查找（dwUseCardNo=1）时，卡号sCardNumber为空，则搜索所有录像文件

使用ISAPI协议方式登录时dwIsLocked、dwUseCardNo、sCardNumber这些参数都不支持。
ISAPI只支持定时录像。

See Also

NET_DVR_FindFile_V30


NET_DVR_FILECOND_MEDICAL

智慧医疗文件查找条件结构体。

struct{
  LONG                         lChannel;
  DWORD                        dwFileType;
  DWORD                        dwIsLocked;
  DWORD                        dwUseCardNo;
  BYTE                         sCardNumber[32];
  NET_DVR_TIME_SEARCH_COND     struStartTime;
  NET_DVR_TIME_SEARCH_COND     struStopTime;
  char                         szPatientID[64];
  BYTE                         byRes[256];
}NET_DVR_FILECOND_V50, *LPNET_DVR_FILECOND_V50;

Members

lChannel
通道号
dwFileType
录象文件类型（根据dwUseCardNo参数是否带卡号查找分为两类）：
不带卡号查找时类型：0xff－全部，0－定时录像，1-移动侦测，2－报警触发，3-报警触发或移动侦测，4-报警触发和移动侦测，5-命令触发，6-手动录像，7-智能录像，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件
带卡号查找时类型：0xff-全部，0-定时录像，1-移动侦测，2-接近报警，3-出钞报警，4-进钞报警，5-命令触发，6-手动录像，7-震动报警，8-环境报警，9-智能报警，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件
dwIsLocked
是否锁定：0-未锁定文件，1-锁定文件，0xff表示所有文件（包括锁定和未锁定）
dwUseCardNo
是否带卡号查找
sCardNumber
卡号
struStartTime
开始时间
struStopTime
停止时间
szPatientID
病人编号
byRes
保留

See Also

NET_DVR_StartRemoteConfig_MEDICAL


NET_DVR_FILECOND_V40

文件查找条件结构体。

struct{
  LONG                              lChannel;
  DWORD                             dwFileType;
  DWORD                             dwIsLocked;
  DWORD                             dwUseCardNo;
  BYTE                              sCardNumber[CARDNUM_LEN_OUT];
  NET_DVR_TIME                      struStartTime;
  NET_DVR_TIME                      struStopTime;
  BYTE                              byDrawFrame;
  BYTE                              byFindType;
  BYTE                              byQuickSearch;
  BYTE                              bySpecialFindInfoType;
  DWORD                             dwVolumeNum;
  BYTE                              byWorkingDeviceGUID[GUID_LEN];
  NET_DVR_SPECIAL_FINDINFO_UNION    uSpecialFindInfo;
  BYTE                              byStreamType;
  BYTE                              byAudioFile;
  BYTE                              byRes2[30];
}NET_DVR_FILECOND_V40, *LPNET_DVR_FILECOND_V40;

Members

lChannel
通道号
dwFileType
录象文件类型（根据dwUseCardNo参数是否带卡号查找分为两类）：
  • 不带卡号查找时类型：0xff-全部，0-定时录像，1-移动侦测，2-报警触发，3-报警触发或移动侦测，4-报警触发和移动侦测，5-命令触发，6-手动录像，7-智能录像，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测），20-人脸侦测，21-信号量，22-回传，23-回迁录像，24-遮挡，25-POS录像，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-起立，58-人数变化，59-违停，60-逆行，61-压线，62-机占非，63-变道，64-掉头，65-行人检测，66-路障，67-抛洒物，68-浓雾检测，69-施工，70-拥堵，71-交通事故检测，72-侧方停车，73-手动触发报警，74-交通违章，75-挖沙船检测报警，76-废气排放监测，77-灰度报警，78-振动侦测，79-烟雾检测，80-通道定时录像事件，81-AI开放平台事件
  • 带卡号查找时类型：0xff-全部，0-定时录像，1-移动侦测，2-接近报警，3-出钞报警，4-进钞报警，5-命令触发，6-手动录像，7-震动报警，8-环境报警，9-智能报警，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测），20-人脸侦测，21-信号量，22-回传，23-回迁录像，24-遮挡，25-POS录像，26-进入区域侦测，27-离开区域侦测，28-徘徊侦测，29-人员聚集侦测，30-快速运动侦测，31-停车侦测，32-物品遗留侦测，33-物品拿取侦测，34-火点检测，35-防破坏检测，36-船只检测，37-测温预警，38-测温报警，39-打架斗殴报警，40-起身检测，41-瞌睡检测，42-温差报警，43-离线测温报警，44-防区报警，45-紧急求助，46-业务咨询，47-起身检测，48-折线攀高，49-如厕超时
    • dwIsLocked
    是否锁定：0-未锁定文件，1-锁定文件，0xff表示所有文件（包括锁定和未锁定）
    dwUseCardNo
    是否带ATM信息进行查询：0-不带ATM信息，1-按交易卡号查询，2-按交易类型查询，3-按交易金额查询，4-按卡号、交易类型及交易金额的组合查询，5-按课程名称查找（此时卡号表示课程名称）
    sCardNumber
    dwUseCardNo为1、4时表示卡号，有效字符个数为20；dwUseCardNo为5时表示课程名称
    struStartTime
    开始时间
    struStopTime
    结束时间
    byDrawFrame
    是否抽帧：0- 不抽帧，1- 抽帧
    byFindType
    0- 查询普通卷，1- 查询存档卷(适用于CVR设备，普通卷用于通道录像，存档卷用于备份录像)，2- 查询N+1录像文件
    byQuickSearch
    0- 普通查询，1- 快速（日历）查询，快速查询速度快于普通查询但是相关的录像信息减少（比如没有文件名、文件类型等）
    bySpecialFindInfoType
    专有查询类型：0-无效，1-带ATM信息的查询
    dwVolumeNum
    存档卷号，适用于CVR设备
    byWorkingDeviceGUID
    工作机GUID，通过获取N+1设备信息（NET_DVR_WORKING_DEVICE_INFO）得到，byFindType为2时有效。
    uSpecialFindInfo
    专有查询条件联合体
    byStreamType
    码流类型：0- 主码流优先（同一个时间段只返回一种录像，优先级顺序为：主码流、子码流、三码流），1- 子码流，2- 三码流，3- 只搜索返回主码流录像，254- 双码流搜索(优先返回主码流录像，没有主码流录像时返回子码流录像)，0xff- 全部
    byAudioFile
    查找音频文件：0- 不搜索音频文件，1- 搜索音频文件，该功能需要设备支持，启动音频搜索后只搜索音频文件
    byRes2
    保留

    Remarks

    • 设备登录模式有两种：SDK私有协议和ISAPI协议。
      1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
      2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。
    • 使用ISAPI协议方式登录时,只支持定时录像（dwFileType = 0），dwIsLocked、dwUseCardNo、sCardNumber、byDrawFrame、byFindType、byQuickSearch、bySpecialFindInfoType、dwVolumeNum、byWorkingDeviceGUID、uSpecialFindInfo、byStreamType、byAudioFile这些参数都不支持。

    See Also

    NET_DVR_FindFile_V40


NET_DVR_FILECOND_V50

文件查找条件结构体。

struct{
  NET_DVR_STREAM_INFO               struStreamID;
  NET_DVR_TIME_SEARCH_COND          struStartTime;
  NET_DVR_TIME_SEARCH_COND          struStopTime;
  BYTE                              byFindType;
  BYTE                              byDrawFrame;
  BYTE                              byQuickSearch;
  BYTE                              byStreamType;
  DWORD                             dwFileType;
  DWORD                             dwVolumeNum;
  BYTE                              byIsLocked;
  BYTE                              byNeedCard;
  BYTE                              byOnlyAudioFile;
  BYTE                              bySpecialFindInfoType;
  char                              szCardNum[32];
  char                              szWorkingDeviceGUID[16];
  NET_DVR_SPECIAL_FINDINFO_UNION    uSpecialFindInfo;
  DWORD                             dwTimeout;
  BYTE                              byRes[252];
}NET_DVR_FILECOND_V50, *LPNET_DVR_FILECOND_V50;

Members

struStreamID
流ID或通道号
struStartTime
开始时间
struStopTime
结束时间
byDrawFrame
0-查询普通卷，1-查询存档卷 2-查询N+1录像文件
byFindType
是否抽帧 0-不抽帧 1-抽帧
byQuickSearch
是否抽帧 0-不抽帧 1-抽帧
byQuickSearch
0-普通查询，1-快速（日历）查询
byStreamType
0-主码流，1-子码流，2-3码流，0xff-全部
dwFileType
文件类型
dwVolumeNum
存档卷号，byFindType为1时有效
byIsLocked
是否锁定 0-正常文件,1-锁定文件, 0xff表示所有文件
byNeedCard
是否需要查询卡，0-不需要 1-需要
byOnlyAudioFile
音频文件 0-视频文件 1-音频文件
bySpecialFindInfoType
0-无效， 1-带ATM查询条件
szCardNum
卡号，byNeedCard为1时有效
szWorkingDeviceGUID
工作机GUID，通过获取N+1得到，byFindType为2时有效
uSpecialFindInfo
专有查询条件联合体
dwTimeout
查找超时时间（设置的超时时间对NET_DVR_FindNextFile_V50接口有效）；单位：毫秒，有效值 : [5000 – 15000] ; 不填写（默认为0），接口不会返回超时错误，同以前返回继续查找。
byRes
保留

Remarks

ISAPI只支持定时录像。

See Also

NET_DVR_FindFile_V50


NET_DVR_FILM_MODE_CFG

电影模式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byScreenType;
  BYTE     byRes[255];
 }NET_DVR_FILM_MODE_CFG,*LPNET_DVR_FILM_MODE_CFG;

Members

dwSize
结构体大小
byScreenType
画面类型：0- 单画面，1- 两画面，2- 画中画
byRes
保留，置为0

Remarks

  • 设备是否支持电影模式配置能力或者支持的参数，可以通过设备能力集进行判断，对应文件发布能力集(FilmModeCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FILM_MODE_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_FILTER

ATM报文过滤配置结构体。

struct{
  BYTE    byEnable;
  BYTE    byMode;
  BYTE    byFrameBeginPos;
  BYTE    byRes[1];
  BYTE    byFilterText[16];
  BYTE    byRes2[12];
}NET_DVR_FILTER, *LPNET_DVR_FILTER;

Members

byEnable
是否启用过滤设置，0-不启用；1-启用
byMode
过滤字符模式，0-ASCII；1-HEX
byFrameBeginPos
需过滤目标字符串的起始位置
byRes
保留
byFilterText
过滤字符串
byRes2
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_FIND_DATA

录像文件信息结构体。

struct{
  char             sFileName[100];
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  DWORD            dwFileSize;
}NET_DVR_FIND_DATA,*LPNET_DVR_FIND_DATA;

Members

sFileName
文件名
struStartTime
文件的开始时间
struStopTime
文件的结束时间
dwFileSize
文件大小

See Also

NET_DVR_FindNextFile


NET_DVR_FIND_LABEL

录像标签查找结构体。

struct{
  DWORD            dwSize;
  LONG             lChannel;
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  BYTE             sLabelName[LABEL_NAME_LEN];
  BYTE             byDrawFrame;
      BYTE                                   byISO8601;
  signed char                       cStartTimeDifferenceH;
  signed char                      cStartTimeDifferenceM;
   signed char       	          cStopTimeDifferenceH;
   signed char                     cStopTimeDifferenceM;
  BYTE             byRes[34];
}NET_DVR_FIND_LABEL,*LPNET_DVR_FIND_LABEL;

Members

dwSize
结构体大小
lChannel
查找的通道
struStartTime
开始时间
struStopTime
结束时间
sLabelName
录像标签名称。如果标签名称为空，则搜索起止时间所有标签
byDrawFrame
0- 不抽帧，1- 抽帧
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

See Also

NET_DVR_FindRecordLabel


NET_DVR_FIND_LOG_COND

查找条件结构体。

struct{
  DWORD                           dwSelectMode;
  DWORD                           dwMainType;
  DWORD                           dwSubType;
  NET_DVR_TIME_V50                    struStartTime;
  NET_DVR_TIME_V50                    struEndTime;
  BOOL                           bOnlySmart;
  BYTE                            byRes[128];
}NET_DVR_FIND_LOG_COND, *LPNET_DVR_FIND_LOG_COND;

Members

dwSelectMode
0－全部；1－按类型；2－按时间；3－按时间和类型
dwMainType
日志主类型
dwSubType
日志次类型
struStartTime
开始时间
struEndTime
结束时间
bOnlySmart
是否只搜索带S.M.A.R.T信息的日志
byRes
保留

See Also

NET_DVR_FindDVRLog_V50


NET_DVR_FIND_PIC_PARAM

查找结果结构体。

struct{
  char                            *pDVRFileName;
  char                            *pSavedFileBuf;
  DWORD                           dwBufLen;
  DWORD                           *lpdwRetLen;
  NET_DVR_ADDRESS                    struAddr;
  BYTE                            byRes[256];
  NET_DVR_PIC_EXTRA_INFO_UNION    uPicExtraInfo;
}NET_DVR_FIND_PIC_PARAM,*LPNET_DVR_FIND_PIC_PARAM;

Members

pDVRFileName
图片名
pSavedFileBuf
保存图片的缓冲区，内存外部申请释放
dwBufLen
缓冲区大小
lpdwRetLen
实际收到的数据长度指针，不能为NULL
struAddr
图片所在的地址信息，图片查找时会返回。
byRes
保留

See Also

NET_DVR_FindNextPicture_V50


NET_DVR_FIND_PICTURE

图片查找结果信息结构体。

struct{
  char             sFileName[PICTURE_NAME_LEN];
  NET_DVR_TIME     struTime;
  DWORD            dwFileSize;
  char             sCardNum[CARDNUM_LEN_V30];
  BYTE             byPlateColor;
  BYTE             byVehicleLogo;
  BYTE             byEventSearchStatus;
  BYTE             byRecogResult ;
  char             sLicense[MAX_LICENSE_LEN];
  BYTE             byRes[12];
}NET_DVR_FIND_PICTURE,*LPNET_DVR_FIND_PICTURE;

Members

sFileName
图片名称
struTime
图片的时间
dwFileSize
图片的大小
sCardNum
卡号
byPlateColor
车牌颜色(仅智能交通设备支持)，取值详见枚举类型：VCA_PLATE_COLOR
byVehicleLogo
汽车品牌(仅智能交通设备支持)，定义详见VLR_VEHICLE_CLASS
byEventSearchStatus
查找状态，连续图片表示同一查找结果的时候，0- 表示后面没有图片信息，1- 表示后面还有图片信息。总的图片信息包括最后一张状态为0的图片。
byRecogResult
车辆识别结果：0- 未知，1- 客车，2- 货车，3- 轿车，4- 面包车，5- 小货车，6- 行人，7- 二轮车，8- 三轮车，9- SUV/MPV，10- 中型客车，11- 机动车，12- 非机动车
sLicense
车牌号码
byRes
保留

See Also

NET_DVR_FindNextPicture


NET_DVR_FIND_PICTURE_MEDICAL_PARAM

智慧医疗图片查找条件结构体。

struct{
  DWORD            dwSize;
  LONG             lChannel;
  BYTE             byFileType;
  BYTE             byNeedCard;
  BYTE             byProvince;
  BYTE             byRes1;
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  char             szPatientID[64];
  BYTE             byRes[256];
}NET_DVR_FIND_PICTURE_PARAM,*LPNET_DVR_FIND_PICTURE_PARAM;

Members

dwSize
结构体大小
lChannel
通道号
byFileType
查找的图片类型：0- 定时抓图，1- 移动侦测抓图，2- 报警抓图，3- 报警|移动侦测抓图， 4- 报警&移动侦测抓图，6- 手动抓图， 9-智能图片，10- PIR报警，11- 无线报警，12- 呼救报警，0xa- 预览时截图，0xd- 人脸侦测，0xe- 越界侦测，0xf- 区域入侵侦测，0x10- 场景变更侦测，0x11- 设备本地回放时截图，0x12- 智能侦测，0x13- 进入区域侦测，0x14- 离开区域侦测，0x15- 徘徊侦测，0x16- 人员聚集侦测，0x17- 快速运动侦测，0x18- 停车侦测，0x19- 物品遗留侦测，0x1a- 物品拿取侦测，0x1b- 车牌侦测，0x1c- 混行检测，0x1d- 取证事件，0x1e- 火点检测，0x20- 船只检测，0x21- 测温预警，0x22- 测温报警, 0x23- 温差报警，0x24- 违停检测，0x25- 人脸抓拍，0x26- 离线测温报警，0x2a- 起身检测，0x2b- 折线攀高，0x2c- 如厕超时，0x2d- 安全帽检测，0xff- 全部类型
byNeedCard
是否需要卡号
byProvince
省份索引值（byFileType为车牌侦测时有效）：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-皖，0xff-全部
byRes1
查找结果中是否要求返回人脸坐标信息：0- 不返回，1- 返回
struStartTime
查找图片的开始时间
struStopTime
查找图片的结束时间
szPatientID
病人编号
byRes
保留，置为0

Remarks

设备支持的图片查找参数能力，对应设备JPEG抓图能力集(JpegCaptureAbility)中节点<FindPicInfo>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY。

See Also

NET_DVR_FindPicture

NET_DVR_StartRemoteConfig_MEDICAL


NET_DVR_FIND_PICTURE_PARAM

图片查找条件结构体。

struct{
  DWORD            dwSize;
  LONG             lChannel;
  BYTE             byFileType;
  BYTE             byNeedCard;
  BYTE             byProvince;
  BYTE             byEventType;
  BYTE             sCardNum[CARDNUM_LEN_V30];
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  DWORD            dwTrafficType;
  DWORD            dwVehicleType;
  DWORD            dwIllegalType;
  BYTE             byLaneNo;
  BYTE             bySubHvtType;
  BYTE             bySubDriveType;
  BYTE             byRes2;
  char             sLicense[MAX_LICENSE_LEN];
  BYTE             byRegion;
  BYTE             byCountry;
  BYTE             byArea;
  BYTE             byISO8601;
  char             cStartTimeDifferenceH;
  char             cStartTimeDifferenceM;
  char             cStopTimeDifferenceH;
  char             cStopTimeDifferenceM;
}NET_DVR_FIND_PICTURE_PARAM,*LPNET_DVR_FIND_PICTURE_PARAM;

Members

dwSize
结构体大小
lChannel
通道号
byFileType
查找的图片类型： 0-定时抓图，1-移动侦测抓图，2-报警抓图，3-报警|移动侦测抓图， 4-报警&移动侦测抓图，
6-手动抓图，9-智能图片，10-PIR报警(预览时截图)，11-无线报警，12-呼救报警，
0xd-人脸侦测，0xe-越界侦测，0xf-区域入侵侦测，0x10-场景变更侦测，0x11-设备本地回放时截图，
0x12-智能侦测，0x13-进入区域侦测，0x14-离开区域侦测，0x15-徘徊侦测，0x16-人员聚集侦测，
0x17-快速运动侦测，0x18-停车侦测，0x19-物品遗留侦测，0x1a-物品拿取侦测，0x1b-车牌侦测，
0x1c-混行检测，0x1d-取证事件，0x1e-火点检测，0x20-船只检测，0x21-测温预警，0x22-测温报警，
0x23-温差报警，0x24-违停检测，0x25-人脸抓拍，0x26-离线测温报警，0x2a-起身检测，0x2b-折线攀高，
0x2c-如厕超时，0x2d-安全帽检测，0x2e-周界抓拍，0x2f-人体目标抓拍，0x30-人脸抓拍建模，
0x31-混合目标检测，0x32-防区报警，0x33-紧急求助，0x34-业务咨询，0x35-非法摆摊，
0x36-人员密度(人数预警)，0x37-离岗检测，0x38-人数异常检测，0x39-剧烈运动检测，0x3a-违停，
0x3b-逆行，0x3c-压线，0x3d-机占非，0x3e-变道，0x3f-掉头，0x40-行人检测，0x41-路障，0x42-抛洒物，
0x43-浓雾检测，0x44-施工，0x45-拥堵，0x46-交通事故检测，0x47-侧方停车，0x48-手动触发报警，
0x49-玩手机检测，0x4b-司机驾驶行为，0x4c-高级辅助驾驶，0x4d-挖沙船检测报警，
0x52-排队检测人数，0x53-排队检测时长，0x54-车辆布防(包括手动布防，日常布防以及平台布防)，0x55-定时唤醒抓拍，0x56-废气排放监测，
0x57-灰度报警，0x58-振动侦测，0x59-人员奔跑，0x5a-人员滞留，0x5b-间距异常，0x5c-人员倒地，0x5d-抽烟检测，0x5e-卡口，0x5f-闯禁令，
0x60-占用应急车道，0x61-大车占道，0x62-非授权名单，0x63-占用专用车道，0x64-烟雾检测，0x66-通道定时抓图事件，
0x67-AI开发平台事件，0x68-甲烷检测浓度异常，0x69-甲烷检测光强异常，0x70-通道定时抓图，
0xff-全部类型
byNeedCard
是否需要卡号
byProvince
省份索引值（byFileType为车牌侦测时有效）：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-皖，0xff-全部
byEventType
事件类型：0-保留，1-交通事件，2-违章取证，3-其他事件
sCardNum
卡号
struStartTime
查找图片的开始时间
struStopTime
查找图片的结束时间
dwTrafficType
图片检索生效项(仅智能交通设备支持)，具体类型如下：
enum _VCA_OPERATE_TYPE_{
  VCA_LICENSE_TYPE       = 0x1,
  VCA_PLATECOLOR_TYPE    = 0x2,
  VCA_CARDNO_TYPE        = 0x4,
  VCA_PLATETYPE_TYPE     = 0x8,
  VCA_LISTTYPE_TYPE      = 0x10,
  VCA_INDEX_TYPE         = 0x20,
  VCA_OPERATE_INDEX_TYPE = 0x40
}VCA_OPERATE_TYPE
VCA_LICENSE_TYPE
车牌号码
VCA_PLATECOLOR_TYPE
车牌颜色
VCA_CARDNO_TYPE
卡号
VCA_PLATETYPE_TYPE
车牌类型
VCA_LISTTYPE_TYPE
车辆名单类型
VCA_INDEX_TYPE
数据流水号
VCA_OPERATE_INDEX_TYPE
操作数
dwVehicleType
车辆类型(仅智能交通设备支持)，具体类型如下：
enum _VCA_VEHICLE_TYPE_{
  VCA_OTHER_TYPE          = 0x1,
  VCA_SMALLCAR_TYPE       = 0x2,
  VCA_BIGCAR_TYPE         = 0x4,
  VCA_BUS_TYPE            = 0x8,
  VCA_TRUCK_TYPE          = 0x10,
  VCA_CAR_TYPE            = 0x20,
  VCA_MINIBUS_TYPE        = 0x40,
  VCA_SMALL_TRUCK_TYPE    = 0x80
}VCA_VEHICLE_TYPE
VCA_OTHER_TYPE
其它车型
VCA_SMALLCAR_TYPE
小型车
VCA_BIGCAR_TYPE
大型车
VCA_BUS_TYPE
客车
VCA_TRUCK_TYPE
货车
VCA_CAR_TYPE
轿车
VCA_MINIBUS_TYPE
面包车
VCA_SMALL_TRUCK_TYPE
小货车
dwIllegalType
违规检测类型(仅智能交通设备支持)，具体类型如下：
enum _VCA_ILLEGAL_TYPE_{
  VCA_POSTPIC_TYPE               = 0x1,
  VCA_LOWSPEED_TYPE              = 0x2,
  VCA_HIGHSPEED_TYPE             = 0x4,
  VCA_RETROGRADE_TYPE            = 0x8,
  VCA_RUSH_REDLIGHT_TYPE         = 0x10,
  VCA_PRESS_LANE_TYPE            = 0x20,
  VCA_VIOLATE_GUIDE_TYPE         = 0x40,
  VCA_ROAD_STRAND_TYPE           = 0x80,
  VCA_VEHICLE_ILLEGAL_LANE_TYPE  = 0x100,
  VCA_ILLEGAL_LANE_CHANGE_TYPE   = 0x200,
  VCA_ILLEGAL_LANE_DRIVE_TYPE    = 0x400,
  VCA_VIOLATE_BAN_TYPE           = 0x800,
  VCA_CROSS_PARKING_TYPE         = 0x1000,
  VCA_GREEN_PARKING_TYPE         = 0x2000
}VCA_ILLEGAL_TYPE
VCA_POSTPIC_TYPE
卡口图片
VCA_LOWSPEED_TYPE
低速
VCA_HIGHSPEED_TYPE
高速
VCA_RETROGRADE_TYPE
逆行
VCA_RUSH_REDLIGHT_TYPE
闯红灯
VCA_PRESS_LANE_TYPE
压车道线
VCA_VIOLATE_GUIDE_TYPE
不按导向
VCA_ROAD_STRAND_TYPE
路口滞留(设备不支持)
VCA_VEHICLE_ILLEGAL_LANE_TYPE
机占非
VCA_ILLEGAL_LANE_CHANGE_TYPE
违法变道
VCA_ILLEGAL_LANE_DRIVE_TYPE
不按车道
VCA_VIOLATE_BAN_TYPE
违法禁令
VCA_CROSS_PARKING_TYPE
路口停车
VCA_GREEN_PARKING_TYPE
绿灯停车
byLaneNo
车道号(仅智能交通设备支持)，取值范围：1~99
bySubHvtType
混行检测查找子类型：0- 全部， 1- 机动车(机动车子类型中支持车牌检索、省份检索)，2-非机动车，3- 行人
bySubDriveType
驾驶子类型 当byFileType为0x4b-司机驾驶行为时，该参数表示司机驾驶行为类型，具体定义：0-保留、1-抽烟、2-接打电话、3-疲劳驾驶、4-分神提醒、5-驾驶员异常、6-未系安全带、7-红外阻断墨镜、8-双手脱离方向盘、9-单手脱离方向盘、10-驾驶员身份异常、11-超时驾驶、12-驾驶员变更； 当byFileType为0x4c-高级辅助驾驶时，该参数表示高级辅助驾驶类型，具体定义：0-保留、1-前向碰撞、2-车道偏离(左)、3-车道偏离(右)、4-车距过近、5-行人防撞、6-盲区检测(右后方)、7-盲区检测(左后方)、8-盲区检测(后方)
byRes2
保留，置为0
sLicense
车牌号码（byFileType为车牌侦测时有效）
byRegion
区域索引值：0- 保留，1- 欧洲(Europe Region)，2- 俄罗斯(Russian Region)，3- 欧洲&俄罗斯(EU&CIS)，0xff- 所有
byCountry
国家和地区索引值，取值定义详见COUNTRY_INDEX
byArea
地区
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效

Remarks

设备支持的图片查找参数能力，对应设备JPEG抓图能力集(JpegCaptureAbility)中节点<FindPicInfo>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY。

See Also

NET_DVR_FindPicture


NET_DVR_FIND_PICTURE_V40

图片查找结果信息结构体。

struct{
  char                            sFileName[PICTURE_NAME_LEN];
  NET_DVR_TIME                    struTime;
  DWORD                           dwFileSize;
  char                            sCardNum[CARDNUM_LEN_V30];
  BYTE                            byPlateColor;
  BYTE                            byVehicleLogo;
  BYTE                            byFileType;
  BYTE                            byRecogResult ;
  char                            sLicense[MAX_LICENSE_LEN];
  BYTE                            byEventSearchStatus;
  BYTE                            byRes1[2];
  BYTE                            byThermometryUnit;
  float                           fFaceSnapTemperature;
  BYTE                            byRes[68];
  NET_DVR_PIC_EXTRA_INFO_UNION    uPicExtraInfo;
}NET_DVR_FIND_PICTURE_V40,*LPNET_DVR_FIND_PICTURE_V40;

Members

sFileName
图片名称
struTime
图片的时间
dwFileSize
图片的大小
sCardNum
卡号
byPlateColor
车牌颜色(仅智能交通设备支持)，取值详见枚举类型：VCA_PLATE_COLOR
byVehicleLogo
汽车品牌(仅智能交通设备支持)，定义详见VLR_VEHICLE_CLASS
byFileType
文件类型：0- 定时抓图，1- 移动侦测抓图，2- 报警抓图，3- 报警|移动侦测抓图，4- 报警&移动侦测抓图，6- 手动抓图，9- 智能图片，10- PIR报警，11- 无线报警，12- 呼救报警，0xa- 预览时截图，0xd- 人脸侦测，0xe- 越界侦测，0xf- 入侵区域侦测，0x10- 场景变更侦测，0x11- 设备本地回放时截图，0x12- 智能侦测，0x13- 进入区域侦测，0x14- 离开区域侦测，0x15- 徘徊侦测，0x16- 人员聚集侦测，0x17- 快速运动侦测，0x18- 停车侦测，0x19- 物品遗留侦测，0x1a- 物品拿取侦测，0x1b- 车牌侦测，0x1c- 混行检测，0x1d- 取证事件，0x1e- 火点检测，0x20- 船只检测，0x21- 测温预警，0x22- 测温报警, 0x23- 温差报警，0x24- 违停检测，0x25- 人脸抓拍，0x26- 离线测温报警，0x2a- 起身检测，0x2b- 折线攀高，0x2c- 如厕超时，0x2d-安全帽检测，0xff- 全部类型
byRecogResult
车辆识别结果：0- 未知，1- 客车，2- 货车，3- 轿车，4- 面包车，5- 小货车，6- 行人，7- 二轮车，8- 三轮车，9- SUV/MPV，10- 中型客车，11- 机动车，12- 非机动车
sLicense
车牌号码
byEventSearchStatus
查找状态，连续图片表示同一查找结果的时候，0- 表示后面没有图片信息，1- 表示后面还有图片信息。总的图片信息包括最后一张状态为0的图片。
byRes1
保留
byThermometryUnit
测温单位：0-摄氏度（℃），1-华氏度（℉），2-开尔文(K)
fFaceSnapTemperature
人脸抓拍温度信息，精确到小数点后1位，(浮点数+100）*10取正数传输，单位固定为摄氏度（℃）。当byFileType为0x25-人脸抓拍时有效，其余情况下该字段为0值
byRes
保留
uPicExtraInfo
图片附件信息(文件类型为人脸侦测时有效)

See Also

NET_DVR_FindNextPicture_V40


NET_DVR_FIND_PICTURE_V50

图片查找结果信息结构体。

struct{
  char                            sFileName[PICTURE_NAME_LEN];
  NET_DVR_TIME                    struTime;
  DWORD                           dwFileSize;
  char                            sCardNum[CARDNUM_LEN_V30];
  BYTE                            byPlateColor;
  BYTE                            byVehicleLogo;
  BYTE                            byFileType;
  BYTE                            byRecogResult ;
  char                            sLicense[MAX_LICENSE_LEN];
  BYTE                            byEventSearchStatus;
  NET_DVR_ADDRESS                 struAddr;
  BYTE                            byISO8601;
  signed char                     cTimeDifferenceH;
  signed char                     cTimeDifferenceM;
  BYTE                            byRes[253];
  NET_DVR_PIC_EXTRA_INFO_UNION    uPicExtraInfo;
}NET_DVR_FIND_PICTURE_V50,*LPNET_DVR_FIND_PICTURE_V50;

Members

sFileName
图片名称
struTime
图片的时间
dwFileSize
图片的大小
sCardNum
卡号
byPlateColor
车牌颜色(仅智能交通设备支持)，取值详见枚举类型：VCA_PLATE_COLOR
byVehicleLogo
汽车品牌(仅智能交通设备支持)，定义详见VLR_VEHICLE_CLASS
byFileType
图片类型： 0-定时抓图，1-移动侦测抓图，2-报警抓图，3-报警|移动侦测抓图， 4-报警&移动侦测抓图，
6-手动抓图，9-智能图片，10-PIR报警(预览时截图)，11-无线报警，12-呼救报警，
0xd-人脸侦测，0xe-越界侦测，0xf-区域入侵侦测，0x10-场景变更侦测，0x11-设备本地回放时截图，
0x12-智能侦测，0x13-进入区域侦测，0x14-离开区域侦测，0x15-徘徊侦测，0x16-人员聚集侦测，
0x17-快速运动侦测，0x18-停车侦测，0x19-物品遗留侦测，0x1a-物品拿取侦测，0x1b-车牌侦测，
0x1c-混行检测，0x1d-取证事件，0x1e-火点检测，0x20-船只检测，0x21-测温预警，0x22-测温报警，
0x23-温差报警，0x24-违停检测，0x25-人脸抓拍，0x26-离线测温报警，0x2a-起身检测，0x2b-折线攀高，
0x2c-如厕超时，0x2d-安全帽检测，0x2e-周界抓拍，0x2f-人体目标抓拍，0x30-人脸抓拍建模，
0x31-混合目标检测，0x32-防区报警，0x33-紧急求助，0x34-业务咨询，0x35-非法摆摊，
0x36-人员密度(人数预警)，0x37-离岗检测，0x38-人数异常检测，0x39-剧烈运动检测，0x3a-违停，
0x3b-逆行，0x3c-压线，0x3d-机占非，0x3e-变道，0x3f-掉头，0x40-行人检测，0x41-路障，0x42-抛洒物，
0x43-浓雾检测，0x44-施工，0x45-拥堵，0x46-交通事故检测，0x47-侧方停车，0x48-手动触发报警，
0xff-全部类型
byRecogResult
车辆识别结果：0- 未知，1- 客车，2- 货车，3- 轿车，4- 面包车，5- 小货车，6- 行人，7- 二轮车，8- 三轮车，9- SUV/MPV，10- 中型客车，11- 机动车，12- 非机动车
sLicense
车牌号码
byEventSearchStatus
查找状态，连续图片表示同一查找结果的时候，0- 表示后面没有图片信息，1- 表示后面还有图片信息。总的图片信息包括最后一张状态为0的图片。
struAddr
图片所在的地址信息，图片下载时用到。
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留
uPicExtraInfo
图片附件信息(文件类型为人脸侦测时有效)

See Also

NET_DVR_FindNextPicture_V50


NET_DVR_FINDDATA_V30

录像文件信息结构体。

struct{
  char             sFileName[100];
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  DWORD            dwFileSize;
  char             sCardNum[32];
  BYTE             byLocked;
  BYTE             byFileType;
  BYTE             byRes[2];
}NET_DVR_FINDDATA_V30,*LPNET_DVR_FINDDATA_V30;

Members

sFileName
文件名
struStartTime
文件的开始时间
struStopTime
文件的结束时间
dwFileSize
文件大小
sCardNum
（ISAPI登录不支持）卡号
byLocked
（ISAPI登录不支持）文件是否被锁定，1- 文件已锁定；0-文件未锁定
byFileType
文件类型： 0-定时录像，1-移动侦测，2-报警触发，3-报警|移动侦测，4-报警&移动侦测，5-命令触发，6-手动录像，7-震动报警，
8-环境报警，9-智能报警，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，
14-智能交通事件，15-越界侦测，16-区域入侵，17-声音异常，18-场景变更侦测
注：ISAPI只支持定时录像
byRes
保留，置为0

See Also

NET_DVR_BACKUP_NAME_PARAM

NET_DVR_FindNextFile_V30


NET_DVR_FINDDATA_V40

文件查找结果信息结构体。

struct{
  char             sFileName[100];
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struStopTime;
  DWORD            dwFileSize;
  char             sCardNum[32];
  BYTE             byLocked;
  BYTE             byFileType;
  BYTE             byQuickSearch;
  BYTE             byRes;
  DWORD            dwFileIndex;
  BYTE             byStreamType;
  BYTE             byRes1[127];
}NET_DVR_FINDDATA_V40,*LPNET_DVR_FINDDATA_V40;

Members

sFileName
文件名，日历查询时无效
struStartTime
文件的开始时间
struStopTime
文件的结束时间
dwFileSize
文件大小
sCardNum
卡号
byLocked
（ISAPI登录不支持）文件是否被锁定，1－文件已锁定；0－文件未锁定
byFileType
文件类型（日历查询时无效）：
0-定时录像，1-移动侦测，2-报警触发，3-报警|移动侦测，4-报警&移动侦测，5-命令触发，
6-手动录像，7-震动报警，8-环境报警，9-智能报警，10-PIR报警，11-无线报警，12-呼救报警，
13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，
16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测，20-人脸侦测
21-信号量，22-回传，23-回迁录像，24-遮挡，21-POS录像，26-进入区域侦测，27-离开区域侦测，
28-徘徊侦测，29-人员聚集侦测，30-快速运动侦测，31-停车侦测，32-物品遗留侦测，33-物品拿取侦测，
34-火点检测，36-船只检测，37-测温预警，38-测温报警，42-温差报警，43-离线测温报警，44-防区报警，
45-紧急求助，46-业务咨询，47-起身检测，48-折线攀高，49-如厕超时
注：ISAPI只支持定时录像
byQuickSearch
（ISAPI登录不支持）0- 普通查询结果，1- 快速（日历）查询结果
byRes
保留
dwFileIndex
（ISAPI登录不支持）文件索引号
byStreamType
（ISAPI登录不支持）码流类型：0- 主码流，1- 子码流，2- 码流三
byRes
保留

Remarks

智能侦测：越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测，即这些报警类型的“或”。

See Also

NET_DVR_FindNextFile_V40


NET_DVR_FINDDATA_V50

文件查找结果信息结构体。

struct{
  char                   sFileName[100];
  NET_DVR_TIME_SEARCH    struStartTime;
  NET_DVR_TIME_SEARCH    struStopTime;
  NET_DVR_ADDRESS        struAddr;
  DWORD                  dwFileSize;
  BYTE                   byLocked;
  BYTE                   byFileType;
  BYTE                   byQuickSearch;
  BYTE                   byStreamType;
  DWORD                  dwFileIndex;
  char                   sCardNum[32];
  DWORD                  dwTotalLenH;
  DWORD                  dwTotalLenL;
  BYTE                   byBigFileType;
  BYTE                   byRes[247];
}NET_DVR_FINDDATA_V50,*LPNET_DVR_FINDDATA_V50;

Members

sFileName
文件名，日历查询时无效
struStartTime
文件的开始时间
struStopTime
文件的结束时间
struAddr
片段所在的地址信息，集群回放时用到
dwFileSize
文件大小，单位：字节
byLocked
文件是否被锁定，1－文件已锁定；0－文件未锁定
byFileType
文件类型（日历查询时无效）：
0-定时录像，1-移动侦测，2-报警触发，3-报警|移动侦测，4-报警&移动侦测，5-命令触发，
6-手动录像，7-震动报警，8-环境报警，9-智能报警，10-PIR报警，11-无线报警，12-呼救报警，
13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，
16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测，20-人脸侦测
21-信号量，22-回传，23-回迁录像，24-遮挡，21-POS录像，26-进入区域侦测，27-离开区域侦测，
28-徘徊侦测，29-人员聚集侦测，30-快速运动侦测，31-停车侦测，32-物品遗留侦测，33-物品拿取侦测，
34-火点检测，36-船只检测，37-测温预警，38-测温报警，42-温差报警，43-离线测温报警，44-防区报警，
45-紧急求助，46-业务咨询，47-起身检测，48-折线攀高，49-如厕超时
注：ISAPI只支持定时录像
byQuickSearch
0- 普通查询结果，1- 快速（日历）查询结果
byStreamType
码流类型：0- 主码流，1- 子码流，2- 码流三
dwFileIndex
文件索引号
sCardNum
卡号
dwTotalLenH
对于大文件搜索，时间段内数据总长度，高32字节
dwTotalLenL
对于大文件搜索，时间段内数据总长度，低32字节
byBigFileType
大文件搜索类型：0- 普通片段搜索，1- 大文件搜索
byRes
保留

Remarks

智能侦测：越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测，即这些报警类型的“或”。

使用ISAPI协议方式登录时byLocked、byQuickSearch、byStreamType、dwFileIndex、sCardNum这些参数都不支持。ISAPI只支持定时录像。

See Also

NET_DVR_FindNextFile_V50


NET_DVR_FINDLABEL_DATA

标签信息结构体。

struct{
  BYTE                    sLabelName[LABEL_NAME_LEN];
  NET_DVR_TIME            struTimeLabel;
  NET_DVR_LABEL_IDENTIFY  struLabelIdentify;
   BYTE                                   byISO8601;
  signed char                       cTimeDifferenceH;
  signed char                      cTimeDifferenceM;
  BYTE                    byRes1[29];
}NET_DVR_FINDLABEL_DATA,*LPNET_DVR_FINDLABEL_DATA;

Members

sLabelName
标签名称
struTimeLabel
标签时间
struLabelIdentify
标签标识
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留，置为0

See Also

NET_DVR_FindNextLabel


NET_DVR_FINGER_PRINT_BYCARD

按卡号方式删除指纹的处理方式结构体。

struct{
  BYTE    byCardNo[ACS_CARD_NO_LEN];
  BYTE    byEnableCardReader[MAX_CARD_READER_NUM_512];
  BYTE    byFingerPrintID[MAX_FINGER_PRINT_NUM];
  BYTE    byRes1[34];
}NET_DVR_FINGER_PRINT_BYCARD, *LPNET_DVR_FINGER_PRINT_BYCARD;

Members

byCardNo
指纹关联的卡号
byEnableCardReader
指纹的读卡器是否有效，数组下标表示读卡器序号，数组值：0- 无效，1- 有效
byFingerPrintID
需要控制的指纹，数组下标表示指纹编号，数组值：0- 不删除，1- 删除
byRes1
保留

See Also

NET_DVR_DEL_FINGER_PRINT_MODE


NET_DVR_FINGER_PRINT_BYCARD_V50

指纹关联卡号参数信息结构体。

struct{
  BYTE    byCardNo[ACS_CARD_NO_LEN];
  BYTE    byEnableCardReader[MAX_CARD_READER_NUM];
  BYTE    byFingerPrintID[MAX_FINGER_PRINT_NUM];
  BYTE    byRes1[2];
  BYTE    byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
}NET_DVR_FINGER_PRINT_BYCARD_V50,*LPNET_DVR_FINGER_PRINT_BYCARD_V50;

Members

byCardNo
指纹关联的卡号
byEnableCardReader
指纹的读卡器信息，按位表示
byFingerPrintID
需要删除的指纹编号，按数组下标，值表示0-不删除，1-删除该指纹
byRes1
保留，置为0
byEmployeeNo
工号（人员ID）

See Also

NET_DVR_DEL_FINGER_PRINT_MODE_V50


NET_DVR_FINGER_PRINT_BYREADER

按按读卡器方式删除指纹的处理方式结构体。

struct{
  DWORD    dwCardReaderNo;
  BYTE     byClearAllCard;
  BYTE     byRes1[3];
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byRes[100];
}NET_DVR_FINGER_PRINT_BYREADER, *LPNET_DVR_FINGER_PRINT_BYREADER;

Members

dwCardReaderNo
读卡器编号
byClearAllCard
是否删除所有卡的指纹信息：0- 按卡号删除指纹信息，1- 删除所有卡的指纹信息
byRes1
保留，置为0
byCardNo
指纹关联的卡号，byClearAllCard为0时有效
byRes
保留，置为0

See Also

NET_DVR_DEL_FINGER_PRINT_MODE


NET_DVR_FINGER_PRINT_BYREADER_V50

指纹读卡器参数信息结构体。

struct{
  DWORD    dwCardReaderNo,
  BYTE     byClearAllCard;
  BYTE     byRes1[3];
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byRes[516];
}NET_DVR_FINGER_PRINT_BYREADER_V50,*LPNET_DVR_FINGER_PRINT_BYREADER_V50;

Members

dwCardReaderNo
按值表示，指纹读卡器编号
byClearAllCard
是否删除所有卡的指纹信息，0-按卡号删除指纹信息，1-删除所有卡的指纹信息
byRes1
保留，置为0
byCardNo
指纹关联的卡号
byRes
保留，置为0

See Also

NET_DVR_DEL_FINGER_PRINT_MODE_V50


NET_DVR_FINGER_PRINT_CFG

指纹参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwFingerPrintLen;
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  BYTE     byFingerPrintID;
  BYTE     byFingerType;
  BYTE     byRes1[30];
  BYTE     byFingerData[MAX_FINGER_PRINT_LEN];
  BYTE     byRes[64];
}NET_DVR_FINGER_PRINT_CFG, *LPNET_DVR_FINGER_PRINT_CFG;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
dwFingerPrintLen
指纹数据长度
byEnableCardReader
需要下发指纹的读卡器，数组下标表示读卡器序号，数组值：0- 不下发，1- 下发
byFingerPrintID
指纹编号，有效值范围为1~10
byFingerType
指纹类型：0- 普通指纹，1- 胁迫指纹
byRes1
保留，置为0
byFingerData
指纹数据内容
byRes
保留，置为0

Remarks

  • 设备是否支持指纹参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FingerPrint>。

    • See Also

    NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_FINGER_PRINT_CFG_V50

指纹参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwFingerPrintLen;
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  BYTE     byFingerPrintID;
  BYTE     byFingerType;
  BYTE     byRes1[30];
  BYTE     byFingerData[MAX_FINGER_PRINT_LEN];
  BYTE     byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byLeaderFP[MAX_DOOR_NUM_256];
  BYTE     byRes[128];
}NET_DVR_FINGER_PRINT_CFG_V50, *LPNET_DVR_FINGER_PRINT_CFG_V50;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
dwFingerPrintLen
指纹数据长度
byEnableCardReader
需要下发指纹的读卡器，数组下标表示读卡器序号，数组值：0- 不下发，1- 下发
byFingerPrintID
手指编号，有效值范围为1~10
byFingerType
指纹类型：0- 普通指纹，1- 胁迫指纹，2-巡更指纹，3-超级指纹，4-解除指纹
byRes1
保留，置为0
byFingerData
指纹数据内容
byEmployeeNo
工号（人员ID）
byLeaderFP
对门是否有首次认证功能（按字节表示）：0-无首次认证功能，1-有首次认证功能
byRes
保留，置为0

Remarks

  • 设备是否支持指纹参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FingerPrint>。

    • See Also

    NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_FINGER_PRINT_INFO_COND

指纹参数配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  DWORD    dwFingerPrintNum;
  BYTE     byFingerPrintID;
  BYTE     byCallbackMode;
  BYTE     byRes1[26];
}NET_DVR_FINGER_PRINT_INFO_COND, *LPNET_DVR_FINGER_PRINT_INFO_COND;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
byEnableCardReader
指纹的读卡器是否有效，数组下标表示读卡器序号，数组值：0- 无效，1- 有效
dwFingerPrintNum
设置或获指纹数量，获取时置为0xffffffff表示获取所有指纹信息
byFingerPrintID
指纹编号，有效值范围为1~10，获取时置为0xff表示该卡所有指纹
byCallbackMode
设备回调方式：0- 已向所有读卡器下发完成，1- 在时间段内只下发了部分也返回
byRes1
保留

Remarks

  • 设备是否支持指纹参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FingerPrint>。
  • 指纹参数对应的能力集中若返回工号（人员ID）字段，说明设备支持以人为中心下发指纹参数，结构体中的卡号信息可不添加，指纹参数会直接绑定到对应的工号（人员ID）上面。

    • See Also

    NET_DVR_StartRemoteConfig


NET_DVR_FINGER_PRINT_INFO_COND_V50

指纹参数配置条件结构体。

 struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byEnableCardReader[MAX_CARD_READER_NUM_512];
  DWORD    dwFingerPrintNum;
  BYTE     byFingerPrintID;
  BYTE     byCallbackMode;
  BYTE     byRes2[2];
  BYTE     byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byRes1[128];
}NET_DVR_FINGER_PRINT_INFO_COND_V50, *LPNET_DVR_FINGER_PRINT_INFO_COND_V50;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号（该字段获取时有效，设置时无效）
byEnableCardReader
指纹的读卡器是否有效，0-无效，1-有效
dwFingerPrintNum
设置或获指纹数量，获取时置为0xffffffff表示获取所有指纹信息
byFingerPrintID
手指编号，有效值范围为1-10， 0xff表示该卡所有指纹
byCallbackMode
设备回调方式，0-设备所有读卡器下完了返回，1-在时间段内下了部分也返回
byRes2
保留，置为0
byEmployeeNo
工号（人员ID）
byRes1
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FINGER_PRINT_INFO_CTRL

指纹删除控制参数结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byMode;
  BYTE                             byRes1[3];
  NET_DVR_DEL_FINGER_PRINT_MODE    struProcessMode;
  BYTE                             byRes[64];
}NET_DVR_FINGER_PRINT_INFO_CTRL, *LPNET_DVR_FINGER_PRINT_INFO_CTRL;

Members

dwSize
结构体大小
byMode
删除方式：0- 按卡号方式删除，1- 按读卡器删除
byRes1
保留，置为0
struProcessMode
处理方式
byRes
保留，置为0

Remarks

  • 设备是否支持指纹参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FingerPrint>。

    • See Also

    NET_DVR_RemoteControl


NET_DVR_FINGER_PRINT_INFO_CTRL_V50

指纹信息控制结构体。

 struct{
  DWORD                             dwSize;
  BYTE                              byMode;
  BYTE                              byRes1[3];
  NET_DVR_DEL_FINGER_PRINT_MODE_V50 struProcessMode;
  BYTE                              byRes[64];
}NET_DVR_FINGER_PRINT_INFO_CTRL_V50, *LPNET_DVR_FINGER_PRINT_INFO_CTRL_V50;

Members

dwSize
结构体大小
byMode
删除方式，0-按卡号（人员ID）方式删除，1-按读卡器删除
byRes1
保留，置为0
struProcessMode
处理方式
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FINGER_PRINT_INFO_STATUS_V50

指纹信息状态结构体。

 struct{
  DWORD    dwSize;
  DWORD    dwCardReaderNo;
  BYTE     byStatus;
  BYTE     byRes[63];
}NET_DVR_FINGER_PRINT_INFO_STATUS_V50, *LPNET_DVR_FINGER_PRINT_INFO_STATUS_V50;

Members

dwSize
结构体大小
dwCardReaderNo
按值表示，指纹读卡器编号
byStatus
状态：0-无效，1-处理中，2-删除失败，3-成功
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_GetNextRemoteConfig


NET_DVR_FINGER_PRINT_STATUS

指纹状态参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byCardReaderRecvStatus[MAX_CARD_READER_NUM_512];
  BYTE     byFingerPrintID;
  BYTE     byFingerType;
  BYTE     byTotalStatus;
  BYTE     byRes1;
  BYTE     byErrorMsg[ERROR_MSG_LEN];
  DWORD    dwCardReaderNo;
  BYTE     byRes[24];
}NET_DVR_FINGER_PRINT_STATUS, *LPNET_DVR_FINGER_PRINT_STATUS;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
byCardReaderRecvStatus
指纹读卡器状态，数组下标表示读卡器序号，数组值：0- 失败，1- 成功，2- 该指纹模组不在线，3- 重试或指纹质量差，4- 内存已满，5- 已存在该指纹，6- 已存在该指纹ID，7- 非法指纹ID，8- 该指纹模组无需配置，9- 指纹类型不支持
byFingerPrintID
指纹编号，有效值范围为1~10
byFingerType
指纹类型：0- 普通指纹，1- 胁迫指纹
byTotalStatus
下发总的状态：0- 当前指纹未向所有读卡器下发完成，1- 当前指纹已向所有读卡器下发完成(指的是门禁主机往所有的读卡器下发了，不管成功与否)
byRes1
保留
byErrorMsg
下发错误信息，当byCardReaderRecvStatus为5时，表示已存在指纹对应的卡号
dwCardReaderNo
指纹读卡器编号，可用于下发错误返回
byRes
保留

Remarks

  • 设备是否支持指纹参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FingerPrint>。

    • See Also

    NET_DVR_StartRemoteConfig


NET_DVR_FINGER_PRINT_STATUS_V50

指纹状态参数结构体V50。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byCardReaderRecvStatus[MAX_CARD_READER_NUM_512];
  BYTE     byFingerPrintID;
  BYTE     byFingerType;
  BYTE     byTotalStatus;
  BYTE     byRecvStatus;
  BYTE     byErrorMsg[ERROR_MSG_LEN];
  DWORD    dwCardReaderNo;
  BYTE     byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byErrorEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byRes[128];
}NET_DVR_FINGER_PRINT_STATUS, *LPNET_DVR_FINGER_PRINT_STATUS;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
byCardReaderRecvStatus
指纹读卡器状态，数组下标表示读卡器序号，数组值：0- 失败，1- 成功，2- 该指纹模组不在线，3- 重试或指纹质量差，4- 内存已满，5- 已存在该指纹，6- 已存在该指纹ID，7- 非法指纹ID，8- 该指纹模组无需配置，9- 指纹类型不支持，10-指纹读卡器版本过低（无法支持工号）
byFingerPrintID
手指编号，有效值范围为1~10
byFingerType
指纹类型：0- 普通指纹，1- 胁迫指纹，2-巡更指纹，3-超级指纹，4-解除指纹
byTotalStatus
下发总的状态：0- 当前指纹未向所有读卡器下发完成，1- 当前指纹已向所有读卡器下发完成(指的是门禁主机往所有的读卡器下发了，不管成功与否)
byRecvStatus
设备错误状态：0-成功，1-手指编号错误，2-指纹类型错误，3-卡号错误（卡号规格不符合设备要求），4-指纹未关联工号或卡号（工号或卡号字段为空），5-工号不存在，6-指纹数据长度为0，7-读卡器编号错误，8-工号错误，9-首次认证值非法，10-其他参数错误
byErrorMsg
下发错误信息，当byCardReaderRecvStatus为5时，表示已存在指纹对应的卡号
dwCardReaderNo
当byCardReaderRecvStatus为5时，表示已存在指纹对应的指纹读卡器编号，可用于下发错误返回。0时表示无错误信息
byEmployeeNo
工号（人员ID）
byErrorEmployeeNo
下发错误信息，当byCardReaderRecvStatus为5时，表示已存在指纹对应的工号（人员ID）
byRes
保留

Remarks

  • 设备是否支持指纹参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<FingerPrint>。

    • See Also

    NET_DVR_StartRemoteConfig


NET_DVR_FINGERPRINT_COND

指纹参数配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwFingerprintNum;
  BYTE    byCardNo[ACS_CARD_NO_LEN];
  DWORD   dwEnableReaderNo;
  BYTE    byFingerPrintID;
  BYTE    byRes[131];
}NET_DVR_FINGERPRINT_COND,*LPNET_DVR_FINGERPRINT_COND;

Members

dwSize
结构体大小
dwFingerprintNum
指纹数量（指纹获取或下发时有效，指纹获取时为0xffffffff表示获取所有指纹信息）
byCardNo
指纹关联的卡号（指纹获取时有效）
dwEnableReaderNo
指纹读卡器编号（指纹获取时有效）
byFingerPrintID
指纹编号，取值范围：1~10（指纹获取时有效，0xff表示该卡所有指纹）
byRes3
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_FINGERPRINT_RECORD

指纹参数信息结构体。

 struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  DWORD    dwFingerPrintLen;
  DWORD    dwEnableReaderNo;
  BYTE     byFingerPrintID;
  BYTE     byFingerType;
  BYTE     byRes1[30];
  BYTE     byFingerData[MAX_FINGER_PRINT_LEN];
  BYTE     byRes[96];
}NET_DVR_FINGERPRINT_RECORD, *LPNET_DVR_FINGERPRINT_RECORD;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
dwFingerPrintLen
指纹数据长度
dwEnableReaderNo
需要下发指纹的读卡器编号
byFingerPrintID
手指编号，有效值范围为1~10
byFingerType
指纹类型：0-普通指纹，1-胁迫指纹
byRes1
保留，置为0
byFingerData
指纹数据内容
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig NET_DVR_SendWithRecvRemoteConfig


NET_DVR_FINGERPRINT_STATUS

指纹管理状态信息结构体。

 struct{
  DWORD    dwSize;
  BYTE     byCardNo[ACS_CARD_NO_LEN];
  BYTE     byCardReaderRecvStatus;
  BYTE     byFingerPrintID;
  BYTE     byFingerType;
  BYTE     byRecvStatus;
  BYTE     byErrorMsg[ERROR_MSG_LEN];
  DWORD    dwCardReaderNo;
  BYTE     byRes[20];
}NET_DVR_FINGERPRINT_STATUS, *LPNET_DVR_FINGERPRINT_STATUS;

Members

dwSize
结构体大小
byCardNo
指纹关联的卡号
byCardReaderRecvStatus
指纹读卡器状态，取值含义：0-失败，1-成功，2-该指纹模组不在线，3-重试或指纹质量差，4-内存已满，5-已存在该指纹，6-已存在该指纹ID，7-非法指纹ID，8-该指纹模组无需配置
byFingerPrintID
手指编号，有效值范围为1~10
byFingerType
指纹类型：0-普通指纹，1-胁迫指纹
byRecvStatus
下发状态信息：0-成功，1-手指编号错误，2-指纹类型错误，3-卡号错误（卡号规格不符合设备要求），4-指纹未关联工号或卡号（工号或卡号字段为空），5-工号不存在，6-指纹数据长度为0，7-读卡器编号错误，8-工号错误
byErrorMsg
下发错误信息，当byCardReaderRecvStatus为5时表示已存在指纹对应的卡号
dwCardReaderNo
当byCardReaderRecvStatus为5时，表示已存在指纹对应的指纹读卡器编号，可用于下发错误返回。0时表示无错误信息
byRes
保留，置为0

See Also

NET_DVR_SendWithRecvRemoteConfig


NET_DVR_FIRE_ALARM

消防报警信息结构体。

struct{
  DWORD               dwSize;
  NET_DVR_TIME_V30    struAlarmTime;
  BYTE                byRes[128];
}NET_DVR_FIRE_ALARM,*LPNET_DVR_FIRE_ALARM;

Members

dwSize
结构体大小
struAlarmTime
报警时间
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_FIREDETECTION_ALARM

火点检测报警信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  NET_VCA_DEV_INFO    struDevInfo;
  WORD                wPanPos;
  WORD                wTiltPos;
  WORD                wZoomPos;
   BYTE                byPicTransType;
  BYTE                byRes1;
  DWORD               dwPicDataLen;
  BYTE                *pBuffer;
  NET_VCA_RECT        struRect;
  NET_VCA_POINT       struPoint;
  WORD                wFireMaxTemperature;
  WORD                wTargetDistance;
  BYTE                byStrategyType;
  BYTE                byAlarmSubType;
  BYTE                byPTZPosExEnable;
  BYTE                byRes2 ;
  NET_PTZ_INFO        struPtzPosEx;
  DWORD               dwVisiblePicLen;
  BYTE                *pVisiblePicBuf;
  BYTE                *pSmokeBuf;
  WORD                wDevInfoIvmsChannelEx;
  BYTE                byRes3;
  BYTE                byFireScanWaitMode;
  DWORD               dwVisibleChannel;
  BYTE                byTimeDiffFlag;
  signed char         cTimeDifferenceH;
  signed char         cTimeDifferenceM;
  BYTE                byRes[49];
}NET_DVR_FIREDETECTION_ALARM, *LPNET_DVR_FIREDETECTION_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
wPanPos
P参数（水平参数，为实际值*100）
wTiltPos
T参数（垂直参数，为（实际值+360）*100）
wZoomPos
Z参数（变倍参数，为实际值*100）
byPicTransType
图片数据传输方式: 0-二进制；1-url
byRes1
保留
dwPicDataLen
报警抓拍热成像图片数据长度
pBuffer
热成像图片数据指针，缓冲区中保存热成像图片数据
struRect
火点区域框
struPoint
火点框内最高温度点坐标
wFireMaxTemperature
火点最高温度，取值范围：[300,4000]，单位：℃
wTargetDistance
火点目标距离，取值范围：[100,10000]，单位：m
byStrategyType
策略类型：0- 任意报警，1- 协同报警，2- 多系统报警，3- 指定火点报警，4- 指定烟雾报警
byAlarmSubType
报警子类型：0- 火点检测报警，1- 烟雾检测报警，2- 烟火报警
byPTZPosExEnable
是否启用PTZ坐标扩展：0- 不启用（PTZ坐标值以wPanPos、wTiltPos、wZoomPos为准），1- 启用（PTZ坐标值以struPtzPosEx为准）
byRes2
保留
struPtzPosEx
PTZ坐标扩展(支持高精度PTZ值，精确到小数点后三位，byPTZPosExEnable为1时有效)
dwVisiblePicLen
可见光图片长度
pVisiblePicBuf
可见光图片数据指针
pSmokeBuf
烟雾检测报警数据指针，指向一个NET_DVR_SMOKEDETECTION_ALARM结构体。当byAlarmSubType报警子类型为1（烟雾检测报警）、2（烟火报警）时有效。
wDevInfoIvmsChannelEx
与struDevInfo里的byIvmsChannel含义相同，能表示更大的值，老版本用byIvmsChannel能继续兼容，但是最大到255，新版本请使用wDevInfoIvmsChannelEx
byRes3
保留
byFireScanWaitMode
火点扫描等待模式 0-自动 1-手动
dwVisibleChannel
可见光通道通道号
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

Remarks

  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)
  • 设备是否支持火点检测能力，可以通过设备能力集进行判断，对应热成像能力集(ThermalCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES，节点：<isSupportFireDetection>。

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_FIREDETECTION_CFG

火点检测参数配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnabled;
  BYTE                           bySensitivity;
  BYTE                           byFireComfirmTime;
  BYTE                           byFireRegionOverlay;
  BYTE                           byDetectionMode;
  BYTE                           byFireFocusMode;
  BYTE                           byFireZoomMode;
  BYTE                           byFirezoomLevel;
  BYTE                           bySmokeFireEnabled;
  BYTE                           byFireManualWaitEnabled;
  BYTE                           byCancelRepeatedAlarmEnabled;
  BYTE                           byApplicationSceneMode;
  DWORD                          dwInstallationHeight;
  BYTE                           byFireSourceDetection;
  BYTE                           bySmokeAuxiliaryDetectionEnabled;
  BYTE                           byverificationSensitivity;
  BYTE                           byFireAlgorithmMode;
  BYTE                           byAgriculturalMachineryFilterEnabled;
  BYTE                           byWaterReflectionEnabled;
  BYTE                           byPatrolSensitivity;
  BYTE                           byRes[33];
  NET_DVR_ALARMSTRATEGY_PARAM    struAlarmStrategy;
  NET_DVR_SMOKEDETECTION_CFG     struSmokeCfg;
}NET_DVR_FIREDETECTION_CFG, *LPNET_DVR_FIREDETECTION_CFG;

Members

dwSize
结构体大小
byEnabled
是否启用动态火点搜索功能：0- 否，1- 是
bySensitivity
检测灵敏度，取值范围：1~100
byFireComfirmTime
发现火点等待时间，取值范围：0~120，单位：秒，默认：5s
byFireRegionOverlay
码流叠加火点框: 0- 否，1- 是
byDetectionMode
火点检测模式：0~二次判别，1~单帧检测。
byFireFocusMode
火点聚焦模式：0~自动模式,1~ 巡航模式。
byFireZoomMode
火点光学变倍模式：0~为自动模式，1~为手动模式。
byFirezoomLevel
火点光学变倍倍率：1~100。当光学变倍模式为手动模式时生效。
bySmokeFireEnabled
烟火检测总使能：0- 不启用，1- 启用。
byFireManualWaitEnabled
火点手动等待使能：0~为自动等待模式，1~手动等待模式。
byCancelRepeatedAlarmEnabled
取消重复报警使能：0-关闭 1-开启。
byApplicationSceneMode
应用场景模式：0-保留，1-森林防火, 2-秸秆燃烧,3-城市制高点, 4-室内或周界。
dwInstallationHeight
安装高度。
byFireSourceDetection
火点搜索模式：0- 动态火点 ，1- 吸烟模式
bySmokeAuxiliaryDetectionEnabled
烟雾辅助判断启用使能，检测模式是二次判别时生效: 0-否， 1-是
byverificationSensitivity
二次确认灵敏度，范围1~100s，默认50s
byFireAlgorithmMode
火点算法模式，0：无效，1：模式识别-patternRecognition,:2：机器学习-machineLearning
byAgriculturalMachineryFilterEnabled
农机过滤模块使能，0：不启用，1：启用
byWaterReflectionEnabled
水面阳光反射模块使能, 0：不启用，1：启用
byPatrolSensitivity
巡航检测灵敏度 （针对火点检测）, 范围1~100s，默认50s
byRes
保留
struAlarmStrategy
报警策略
struSmokeCfg
烟雾检测配置

Remarks

  • 设备是否支持火点检测配置能力或者支持的参数能力，可以通过设备能力集进行判断，对应火点检测配置能力集(FireDetection)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FIREDETECTION_CAPABILITIES。
  • 火点搜索模式（动态火点、吸烟模式）为新增字段，与原有字段火点检测模式（单帧检测、二次判别）的区别如下：
    1、 火点检测模式：决定用一帧图像还是多帧图像去确定火点：单帧检测是一帧；二次判别是多帧。
    2、 火点搜索模式：决定使用何种算法或者策略去判定有没有火点：动态火点，是一定量的连通像素点的平均温度高于环境温度一定值，认为是火点；吸烟模式，是一个像素点的温度高于阈值则认为就是火点。
    火点搜索模式和火点检测模式，有不同的作用域，两者组合，构成了一个完整的火点检测功能。
    大致过程为：
    先是在一帧图像中，运行不同的算法进行火点搜索；搜索出火点后，再根据火点检测模式中的单帧判别还是二次判断（其实就是一帧图像中有火点我就认为有火点，还是多帧图像中有火点我才认为有火点的区别），确定是不是有火点。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_FIRMWARE_VERSION_IFNO

主控版本信息结构体。

struct{
  DWORD    dwSize;
  char     szFirmwareVersion[LEN_PROPERTY];
  BYTE     byRes2[128];
}NET_DVR_FIRMWARE_VERSION_IFNO, *LPNET_DVR_FIRMWARE_VERSION_IFNO;

Members

dwSize
结构体大小
szFirmwareVersion
主控版本属性，只读
byRes2
保留，置为0

Remarks

  • 设备是否支持获取主控版本信息能力，可以通过设备能力集进行判断，对应设备系统能力集(DeviceCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SYSTEM_CAPABILITIES，节点：<isSupportFirmwareVersionInfo>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_FIRMWARECODE

识别码信息结构体。

struct{
  WORD    wIndex;
  WORD    wCodeLen;
  BYTE    byCode[MAX_IDCODE_LEN];
  BYTE    byVersion[MAX_VERSIIN_LEN];
  BYTE    byRes[12];
}NET_DVR_FIRMWARECODE, *LPNET_DVR_FIRMWARECODE;

Members

wIndex
识别码索引ID
wCodeLen
识别码长度
byCode
识别码
byVersion
固件版本，只做显示用
byRes
保留

See Also

NET_DVR_FIRMWARECODE_LIST


NET_DVR_FIRMWARECODE_COND

识别码查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwStartIndex;
  DWORD    dwMaxNum;
  BYTE     byRes[52];
}NET_DVR_FIRMWARECODE_COND, *LPNET_DVR_FIRMWARECODE_COND;

Members

dwSize
结构体大小
dwStartIndex
起始索引号，从1开始
dwMaxNum
单次最大个数，最大为32
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_FIRMWARECODE_LIST

识别码查询结果结构体。

struct{
  DWORD                   dwSize;
  DWORD                   dwValidCodeNum;
  NET_DVR_FIRMWARECODE    struCode[MAX_IDCODE_NUM];
  BYTE                    byRes[64];
}NET_DVR_FIRMWARECODE_LIST, *LPNET_DVR_FIRMWARECODE_LIST;

Members

dwSize
结构体大小
dwValidCodeNum
有效个数
struCode
识别码信息，每位数组表示一个识别码
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_FISHEYE_STREAM_STATUS

鱼眼码流状态信息结构体。

struct{
  DOWRD   dwSize;
  BYTE    byStreamMode;
  BYTE    byRes[63];
}NET_DVR_FISHEYE_STREAM_STATUS,*LPNET_DVR_FISHEYE_STREAM_STATUS;

Members

dwSize
结构体大小
byStreamMode
码流输出模式，具体定义见下表：
enum _FISHEYE_STREAM_OUTPUT_MODE_{
  FISHEYE_STREAM_MODE_FISHEYE   = 1,
  FISHEYE_STREAM_MODE_PTZ       = 2,
  FISHEYE_STREAM_MODE_PANORAMA  = 3
}FISHEYE_STREAM_OUTPUT_MODE
FISHEYE_STREAM_MODE_FISHEYE
鱼眼模式
FISHEYE_STREAM_MODE_PTZ
PTZ模式
FISHEYE_STREAM_MODE_PANORAMA
全景模式
byRes
保留，置为0

Remarks

  • 鱼眼摄像机的通道码流类型可以通过接口NET_DVR_GetDeviceStatus（命令：NET_DVR_GET_FISHEYE_STREAM_STATUS）获取。
  • 鱼眼摄像机有多个通道，每个通道对应不同的码流类型(通道码流模式只能获取，不能配置)。一般有5个通道：1个鱼眼通道、1个全景通道和3个PTZ通道，其中PTZ通道可以调用云台控制接口控制云台转动。调用NET_DVR_RealPlay_V40传入不同的通道号即可预览不同的场景图像。
  • 当鱼眼设备发现有移动设备(比如手机客户端)登录时，会将第5个通道的预览模式从PTZ模式切换至鱼眼模式。是否是移动设备登录，需要通过命令NET_DVR_REMOTECONTROL_DEV_PARAM（对应接口：NET_DVR_RemoteControl）主动告知鱼眼设备。

    • See Also

    NET_DVR_GetDeviceStatus

    NET_DVR_CALLBACK_TYPE_DATA


NET_DVR_FLASH_OUTCFG

IO闪光灯输出参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byMode;
  BYTE       byRelatedIoIn;
  BYTE       byRecognizedLane;
  BYTE       byDetectBrightness;
  BYTE       byBrightnessThreld;
  BYTE       byStartHour;
  BYTE       byStartMinute;
  BYTE       byEndHour;
  BYTE       byEndMinute;
  BYTE       byFlashLightEnable;
  BYTE       byRes[2];
}NET_DVR_FLASH_OUTCFG, *LPNET_DVR_FLASH_OUTCFG;

Members

dwSize
结构体大小
byMode
闪光灯闪烁模式，0-不闪，1-闪，2-关联闪，3-轮闪
byRelatedIoIn
闪光灯关联的输入IO号（关联闪时此参数有效，暂时保留）
byRecognizedLane
关联的IO号，按位表示，bit0表示IO1是否关联，0-不关联，1-关联
byDetectBrightness
自动检测亮度使能闪光灯0-不检测；1-检测
byBrightnessThreld
使能闪光灯亮度阈值，范围[0,100],高于阈值闪
byStartHour
开始时间，单位：小时，取值范围[0,23]
byStartMinute
开始时间，单位：分，取值范围[0,59]
byEndHour
结束时间，单位：小时，取值范围[0,23]
byEndMinute
结束时间，单位：分，取值范围[0,59]
byFlashLightEnable
闪光灯时间是否开启：0-关，1-开
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FLASHSTORAGE_REMOVE

客流数据清除操作参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byPDCRemoveEnable;
  BYTE     byRes[127];
}NET_DVR_FLASHSTORAGE_REMOVE,*LPNET_DVR_FLASHSTORAGE_REMOVE;

Members

dwSize
结构体大小
dwChannel
通道号
byPDCRemoveEnable
清除客流数据使能：0- 不清除，1- 清除
byRes
保留，置为0

Remarks

  • 通过该功能可以清除设备FLASH中存储的客流数据，针对的是flash存储客流数据的设备，类似于使用SD卡存储数据的设备的SD卡格式化功能。
  • 设备是否支持客流数据清除操作功能或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PDC>中的子节点<isSupportFlashRemoveCouting>。

See Also

NET_DVR_STDControl


NET_DVR_FLOW_INFO

检测网络流量结果参数。

struct{
  DWORD     dwSize;
  DWORD     dwSendFlowSize;
  DWORD     dwRecvFlowSize;
  BYTE      byRes[16];
}NET_DVR_FLOW_INFO,*LPNET_DVR_FLOW_INFO;

Members

dwSize
结构体大小
dwSendFlowSize
发送流量大小，单位kbps
dwRecvFlowSize
接收流量大小，单位kbps
byRes
保留

See Also

NET_DVR_StartNetworkFlowTest


NET_DVR_FLOW_TEST_PARAM

检测网络流量参数结构体。

struct{
  DWORD     dwSize;
  DWORD     lCardIndex;
  DWORD     dwTime;
  BYTE      byRes[8];
}NET_DVR_FLOW_TEST_PARAM,*LPNET_DVR_FLOW_TEST_PARAM;

Members

dwSize
结构体大小
lCardIndex
网卡索引：0–网卡0，1-网卡1，以此类推；最高位为1表示bonding网卡，0表示普通网卡
dwTime
上传时间间隔,单位100 毫秒
byRes
保留

See Also

NET_DVR_StartNetworkFlowTest


NET_DVR_FOCUSMODE_CFG

快球聚焦模式信息。

struct{
  DWORD    dwSize;
  BYTE     byFocusMode;
  BYTE     byAutoFocusMode;
  WORD     wMinFocusDistance;
  BYTE     byZoomSpeedLevel;
  BYTE     byFocusSpeedLevel;
  BYTE     byOpticalZoom;
  BYTE     byDigtitalZoom;
  float    fOpticalZoomLevel;
  DWORD    dwFocusPos;
  BYTE     byFocusDefinitionDisplay;
  BYTE     byFocusSensitivity;
  BYTE     byRes1[2];
  DWORD    dwRelativeFocusPos;
  BYTE     byRes[48];
}NET_DVR_FOCUSMODE_CFG, *LPNET_DVR_FOCUSMODE_CFG;

Members

dwSize
结构体大小
byFocusMode
聚焦模式：0-自动，1-手动，2-半自动
byAutoFocusMode
自动聚焦模式：0-关，1-模式A，2-模式B，3-模式AB，4-模式C
wMinFocusDistance
最小聚焦距离，单位CM：0-自动，0xffff-无穷远
byZoomSpeedLevel
变倍速度，为实际取值，取值范围：1~3
byFocusSpeedLevel
聚焦速度，为实际取值，取值范围：1~3
byOpticalZoom
光学变倍，取值范围：0~255
byDigtitalZoom
数字变倍，取值范围：0~255
fOpticalZoomLevel
光学变倍(倍率值)，取值范围：[1,32]，最小间隔0.5 ，内部设备交互的时候*1000
dwFocusPos
focus值（聚焦值），取值范围：[0x1000,0xC000]，这个值是sony坐标值，使用这个值是为了对外统一，保证不同的镜头对外focus值都转换在这个范围内 (手动聚焦模式下下应用)
byFocusDefinitionDisplay
聚焦清晰度显示，0~不显示，1~显示, 开启会在码流上显示当前镜头目标的清晰度值，用于帮助客户调焦使相机抓拍能够达到最清晰的效果，该清晰度越大代表着越清晰，清晰度范围为：0~100.0000
byFocusSensitivity
聚焦灵敏度，范围[0,2]，聚焦模式为自动、半自动时生效
byRes1
保留
dwRelativeFocusPos
相对focus值，其低16位表示聚焦值，0~4000；高16位代表当前聚焦值获取时的温度值
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FORENSICS_MODE

交通违章取证方式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byMode;
  BYTE     byRes[23];
}NET_DVR_FORENSICS_MODE, *LPNET_DVR_FORENSICS_MODE;

Members

dwSize
结构体大小
byMode
取证方式：0- 手动取证，1- 自动取证
byRes
保留

Remarks

交通违章取证模式分为两种：

  • 自动模式：分析仪对视频进行分析，如果检测到目标则驱动球机跟踪，如果符合条件则上传报警。也可以使用手动跟踪定位控制命令
    NET_DVR_CONTROL_PTZ_MANUALTRACE（对应接口：NET_DVR_RemoteControl），指定跟踪目标。
  • 手动模式：分析仪对视频进行分析，即使检测到目标也不会驱动球机跟踪，除非使用手动跟踪定位控制命令指定跟踪目标，让分析仪对目标进行分析。
    使用手动模式，主要是为了降低误报。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_FORMAT_HDD

硬盘格式化结构体。

struct{
  DWORD    dwSize;
  BYTE     dwDiskNo;
  NET_DVR_IPADDR      struLocateIP
  BYTE     byRes[16];
}NET_DVR_FORMAT_HDD, *LPNET_DVR_FORMAT_HDD;

Members

dwSize
结构体大小
dwDiskNo
硬盘号，从0开始，0xff表示对所有硬盘有效（不包括只读硬盘）
struLocateIP
该硬盘所在设备的IP（对应硬盘管理参数V50中获取到的szHDLocateIP信息）
byRes
保留

See Also

NET_DVR_FormatDisk_V50


NET_DVR_FRAME

边框参数结构体。

struct{
  BYTE    byFrameWide;
  BYTE    byRed;
  BYTE    byGreen;
  BYTE    byBlue;
  BYTE    byRes[256];
 }NET_DVR_FRAME,*LPNET_DVR_FRAME;

Members

byFrameWide
边框宽度，取值范围：[0,14]，并且只能取偶数值
byRed
边框颜色为RGB模式，R值
byGreen
边框颜色为RGB模式，G值
byBlue
边框颜色为RGB模式，B值
byRes
保留，置为0

See Also

NET_DVR_FRAME_CFG


NET_DVR_FRAME_CFG

画面边框配置结构体。

struct{
  DWORD            dwSize;
  NET_DVR_FRAME    struTopFrame;
  NET_DVR_FRAME    struBottomFrame;
  NET_DVR_FRAME    struLeftFrame;
  NET_DVR_FRAME    struRightFrame;
  BYTE             byFrameEnable;
  BYTE             byRes[256];
 }NET_DVR_FRAME_CFG,*LPNET_DVR_FRAME_CFG;

Members

dwSize
结构体大小
struTopFrame
上边框
struBottomFrame
下边框
struLeftFrame
左边框
struRightFrame
右边框
byFrameEnable
是否叠加边框：0- 不叠加，1- 叠加边框
byRes
保留，置为0

Remarks

  • 设备是否支持画面边框配置能力或者支持的参数，可以通过设备能力集进行判断，对应画面边框配置能力集(FrameCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FRAME_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_FRAME_COND

画面边框配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPicNo;
  BYTE     byRes[256];
 }NET_DVR_FRAME_COND,*LPNET_DVR_FRAME_COND;

Members

dwSize
结构体大小
dwPicNo
画面编号
byRes
保留，置为0

Remarks

  • 设备是否支持画面边框配置能力或者支持的参数，可以通过设备能力集进行判断，对应画面边框配置能力集(FrameCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FRAME_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_FRAMEFORMAT

ATM交易协议结构体。

struct{
  DWORD                     dwSize;
  char                      sATMIP[16];
  DWORD                     dwATMType;
  DWORD                     dwInputMode;
  DWORD                     dwFrameSignBeginPos;
  DWORD                     dwFrameSignLength;
  BYTE                      byFrameSignContent[12];
  DWORD                     dwCardLengthInfoBeginPos;
  DWORD                     dwCardLengthInfoLength;
  DWORD                     dwCardNumberInfoBeginPos;
  DWORD                     dwCardNumberInfoLength;
  DWORD                     dwBusinessTypeBeginPos;
  DWORD                     dwBusinessTypeLength;
  NET_DVR_FRAMETYPECODE     frameTypeCode[10];
}NET_DVR_FRAMEFORMAT,*LPNET_DVR_FRAMEFORMAT;

Members

dwSize
结构体大小
sATMIP
ATM IP地址
dwATMType
ATM类型
宏定义 | 宏定义值
NCR | 0
DIEBOLD | 1
WINCOR_NIXDORF | 2
SIEMENS | 3
OLIVETTI | 4
FUJITSU | 5
HITACHI | 6
SMI | 7
IBM | 8
BULL | 9
YiHua | 10
LiDe | 11
GDYT | 12
Mini_Banl | 13
GuangLi | 14
DongXin | 15
ChenTong | 16
NanTian | 17
XiaoXing | 18
GZYY | 19
QHTLT | 20
DRS918 | 21
KALATEL | 22
NCR_2 | 23
NXS | 24
dwInputMode
输入方式：0-网络侦听，1-网络接收，2-串口直接输入，3-串口ATM命令输入
dwFrameSignBeginPos
报文标志位的起始位置
dwFrameSignLength
报文标志位的长度
byFrameSignContent
报文标志位的内容
dwCardLengthInfoBeginPos
卡号长度信息的起始位置
dwCardLengthInfoLength
卡号长度信息的长度
dwCardNumberInfoBeginPos
卡号信息的起始位置
dwCardNumberInfoLength
卡号信息的长度
dwBusinessTypeBeginPos
交易类型的起始位置
dwBusinessTypeLength
交易类型的长度
frameTypeCode
交易方式类型码

See Also

NET_DVR_ClientGetframeformat NET_DVR_ClientSetframeformat


NET_DVR_FRAMETYPECODE

交易方式类型码。

struct{
  BYTE    code[12];
}NET_DVR_FRAMETYPECODE;

Members

code
类型码


NET_DVR_FREQUENCY

三相频率参数结构体。

struct{
  int     iPhaseAFrequency;
  int     iPhaseBFrequency;
  int     iPhaseCFrequency;
  BYTE    byRes[4];
}NET_DVR_FREQUENCY,*LPNET_DVR_FREQUENCY;

Members

iPhaseAFrequency
A相频率，单位：Hz
iPhaseBFrequency
B相频率，单位：Hz
iPhaseCFrequency
C相频率，单位：Hz
byRes
保留

See Also

NET_DVR_ALARMHOST_UPS_STATE NET_DVR_ALARMHOST_ELECTRICITY_STATE


NET_DVR_FTP_SERVER_TEST_PARA

FTP服务器测试参数结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byEnableFTP;
  BYTE                    byProtocolType;
  WORD                    wFTPPort;
  union{
       BYTE               byRes[144];
       struct{
         BYTE             szDomain[MAX_DOMAIN_NAME];
         BYTE             byRes1[80];
       }struDomain;
       struct{
         NET_DVR_IPADDR   struIp;
       }struAddrIP;
  }unionServer;
  BYTE                    szUserName[NAME_LEN];
  BYTE                    szPassWORD[PASSWD_LEN];
  BYTE                    szTopCustomDir[MAX_CUSTOM_DIR];
  BYTE                    szSubCustomDir[MAX_CUSTOM_DIR];
  BYTE                    byDirLevel;
  BYTE                    byTopDirMode;
  BYTE                    bySubDirMode;
  BYTE                    byType;
  BYTE                    byEnableAnony;
  BYTE                    byAddresType;
  BYTE                    byRes2[198];
}NET_DVR_FTP_SERVER_TEST_PARA,*LPNET_DVR_FTP_SERVER_TEST_PARA;

Members

dwSize
结构体大小
byEnableFTP
是否启动ftp上传功能：0- 否，1- 是
byProtocolType
协议类型：0- FTP，1- SFTP
wFTPPort
FTP端口号
unionServer为FTP地址联合体
byRes
联合体大小为144字节
szDomain
服务器地址，域名
byRes1
保留，置为0
struIp
IPv4或者IPv6地址，144字节
szUserName
用户名
szPassWORD
密码
szTopCustomDir
自定义一级目录
szSubCustomDir
自定义二级目录
byDirLevel
目录等级：0- 不使用目录结构，直接保存在根目录；1- 使用1级目录；2- 使用2级目录
byTopDirMode
一级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用时间(年月日)，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 通道名，0xb- 通道号，0xc-车道号，0xff- 自定义
bySubDirMode
二级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用时间(年月日)，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 通道名，0xb- 通道号，0xc-车道号，0xff- 自定义
byType
FTP服务器类型：0- 主服务器，1- 备用服务器
byDirLevel
是否启用匿名：0- 否，1- 是
byAddresType
服务器地址类型：0- 使用IPV4或者IPV6，1- 使用域名
byRes2
保留，置为0

See Also

NET_DVR_SERVER_TEST_PARA


NET_DVR_FTP_TYPE

FTP类型信息结构体。

struct{
  BYTE    byType;
  BYTE    byRes[3];
}NET_DVR_FTP_TYPE,*LPNET_DVR_FTP_TYPE;

Members

byType
0-首选FTP服务器，1-备用FTP服务器
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_FTPCFG

FTP上传参数结构体。

struct{
  DWORD      dwSize;
  DWORD      dwEnableFTP;
  char       sFTPIP[16];
  DWORD      dwFTPPort;
  BYTE       sUserName[NAME_LEN];
  BYTE       sPassword[PASSWD_LEN];
  DWORD      dwDirLevel;
  WORD       wTopDirMode;
  WORD       wSubDirMode;
  BYTE       byEnableAnony;
  BYTE       byPicArchivingInterval;
  BYTE       byRes[22];
}NET_DVR_FTPCFG, *LPNET_DVR_FTPCFG;

Members

dwSize
结构体大小
dwEnableFTP
是否启用FTP，0-不启用，1-启用
sFTPIP
FTP服务器IP地址
dwFTPPort
FTP端口号
sUserName
用户名
sPassword
密码
dwDirLevel
目录结构，0-不使用目录结构，直接保存在根目录，1-使用1级目录，2-使用2级目录
wTopDirMode
一级目录，0x1-使用设备名，0x2-使用设备号，0x3-使用设备ip地址，0x4-使用监测点，0x5-使用时间(年月)，0x6-自定义，0x7-违规类型，0x8-方向，0x9-地点
wSubDirMode
二级目录，0x1-使用通道名，0x2-使用通道号，0x3-使用时间(年月日)，0x4-使用车道号，0x5-自定义，0x6-违规类型，0x7-方向，0x8-地点
byEnableAnony
启用匿名：0- 否，1- 是，智能交通摄像机不支持该字段
byPicArchivingInterval
图片归档间隔，取值范围：[0,30]，0表示关闭
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_FTPCFG_V40

FTP配置结构体。

struct{
  NET_DVR_STRUCTHEAD         struStruceHead;
  BYTE                       byEnableFTP;
  BYTE                       byProtocolType;
  WORD                       wFTPPort;
  union{
       struct{
         BYTE                szDomain[64];
         BYTE                byRes1[80];
       }struDomain;
       struct{
         NET_DVR_IPADDR      struIp;
       }struAddrIP;
  }unionServer;
  BYTE                       szUserName[32];
  BYTE                       szPassWORD[16];
  BYTE                       szTopCustomDir[64];
  BYTE                       szSubCustomDir[64];
  BYTE                       byDirLevel;
  BYTE                       byTopDirMode;
  BYTE                       bySubDirMode;
  BYTE                       byType;
  BYTE                       byEnableAnony;
  BYTE                       byAddresType;
  BYTE                       byFTPPicType;
  BYTE                       byPicArchivingInterval;
  NET_DVR_PICTURE_NAME_EX    struPicNameRule;
  BYTE                       byPicNameRuleType;
  BYTE                       byRes[203];
}NET_DVR_FTPCFG_V40,*LPNET_DVR_FTPCFG_V40;

Members

struStruceHead
结构体的头信息
byEnableFTP
是否启动ftp上传功能：0- 否，1- 是
byProtocolType
协议类型：0- FTP，1- SFTP
wFTPPort
FTP端口号
szDomain
服务器地址，可以使IPv4、IPv6或是域名
struIp
IPv4或者IPv6地址
szUserName
用户名
szPassWORD
密码
szTopCustomDir
自定义一级目录
szSubCustomDir
自定义二级目录
byDirLevel
0- 不使用目录结构，直接保存在根目录；1- 使用1级目录；2- 使用2级目录
byTopDirMode
一级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用自定义，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 栋号单元号，0xb- 期号
bySubDirMode
二级目录：0x1- 使用通道名，0x2- 使用通道号，0x3- 使用时间(年月日)，0x4- 使用车道号，0x5- 使用自定义，0x6- 违规类型，0x7- 方向，0x8- 地点，0x9- 车位编号，0xa- 栋号单元号，0xb- 门口机编号，0xc- 设备编号
byType
FTP类型：0-主服务器，1-备用服务器
byEnableAnony
启用匿名：0- 否，1- 是
byAddresType
地址类型：0- 使用IPV4或者IPV6，1- 使用域名
byFTPPicType
FTP上传图片类型：0- 保留，1- 抓拍图片命名规则
byPicArchivingInterval
图片归档间隔，取值范围：[0,30]，0表示关闭
struPicNameRule
图片命名规则，byFTPPicType为1时有效
byPicNameRuleType
图片命令规则类型：0- 默认类型，1- 图片前缀名定义(启用struPicNameRule中的byPicNamePrefix字段)
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_FTPUPLOAD_PARAM

FTP上传图片命名规则参数结构体。

struct{
  char    szRuleTypeItem[MAX_SINGLE_FTPPICNAME_LEN];
  char    szCameraName[MAX_CAMNAME_LEN];
  BYTE    byRes[64];
}NET_DVR_FTPUPLOAD_PARAM,*LPNET_DVR_FTPUPLOAD_PARAM;

Members

szRuleTypeItem
文件命名选型，固定字符串：capture_time-抓图时间，plate_No-车牌号码，alarm_type-报警类型，camera_name-通道名称
szCameraName
通道名称，szRuleTypeItem为camera_name时有效
byRes
保留，置为0

See Also

NET_DVR_FTPUPLOADCFG


NET_DVR_FTPUPLOADCFG

FTP上传信息规整参数配置结构体。

struct{
  DWORD                      dwSize;
  BYTE                       byEventType;
  BYTE                       byMode;
  BYTE                       byRes[62];
  NET_DVR_FTPUPLOAD_PARAM    struCustomVehicle[MAX_FTPNAME_NUM];
  BYTE                       byRes1[1024];
}NET_DVR_FTPUPLOADCFG, *LPNET_DVR_FTPUPLOADCFG;

Members

dwSize
结构体大小
byEventType
事件类型：0- 默认，1- 车辆检测
byMode
图片命名模式：0- 默认，1- 自定义
byRes
保留，置为0
struCustomVehicle
车辆检测事件类型下自定义图片命名规则，每位数组表示一种文件命名选型，数组下标表示先后顺序
byRes1
保留，置为0

Remarks

  • 设备是否支持FTP上传信息规整配置或者支持的参数能力，可以通过设备能力集进行判断，对应FTP上传能力集(FTPNotificationList )，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FTP_CAPABILITIES，节点：<FtpUpload>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ALARMHOST_DUSTNOISE_SENSOR

设备网络SDK开发使用手册

NET_DVR_FUEL_GAS_DETE_STATE

燃气监测系统状态结构体。

struct{
  LONG    iNatrualGasThick;
  BYTE    byRes[508];
}NET_DVR_FUEL_GAS_DETE_STATE,*LPNET_DVR_FUEL_GAS_DETE_STATE;

Members

iNatrualGasThick
天然气浓度，单位：ppm
byRes
保留，置为0

See Also

NET_DVR_EXTERNAL_DEVICE_STATE_UNION


NET_DVR_GAIN

增益参数结构体。

struct{
  BYTE      byGainLevel;
  BYTE      byGainUserSet;
  BYTE      byRes[2];
  DWORD     dwMaxGainValue;
}NET_DVR_GAIN, *LPNET_DVR_GAIN;

Members

byGainLevel
增益，单位dB，取值范围[0,100]
byGainUserSet
用户自定义增益，单位dB，取值范围[0,100]，对于智能交通摄像机，是CCD模式下的抓拍增益
byRes
保留，置为0
dwMaxGainValue
最大增益值，单位dB

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_GAMMACORRECT

Gamma校正配置参数结构体。

struct{
  BYTE       byGammaCorrectionEnabled;
  BYTE       byGammaCorrectionLevel;
  BYTE       byRes[6];
}NET_DVR_GAMMACORRECT, *LPNET_DVR_GAMMACORRECT;

Members

byGammaCorrectionEnabled
Gamma校正是否启用，0-不启用，1-启用
byGammaCorrectionLevel
0-100
byRes
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_GATE_ALARMINFO

出入口控制机报警数据结构体。

struct{
  DWORD               dwSize;
  BYTE                byAlarmType;
  BYTE                byExternalDevType;
  BYTE                byExternalDevStatus;
  BYTE                byRes;
  NET_DVR_TIME_V30    struAlarmTime;
  union{
           BYTE       uLen[128];
           struct{
           char       sLicense[MAX_LICENSE_LEN];
           BYTE       byVehicleType;
           BYTE       byRes1[111];
         }struVehicleInfo;
  }uAlarmInfo;
}NET_DVR_GATE_ALARMINFO,*LPNET_DVR_GATE_ALARMINFO;

Members

dwSize
结构体大小
byAlarmType
报警类型：
0x1- 车辆非法侵入报警，
0x2- 道闸超时未关报警，
0x3- 车辆压线圈超时报警，
0x4- 发卡报警（无卡），
0x5- 发卡报警（少卡），
0x6- 发卡报警（发卡异常）
byExternalDevType
外接设备类型，取值详见：EXTERNAL_DEVICES_TYPE
byExternalDevStatus
外接设备状态，取值详见：EXTERNAL_DEVICES_STATUS
byRes
保留，置为0
struAlarmTime
报警时间
uAlarmInfo为报警信息联合体
uLen
联合体长度，128字节
struVehicleInfo为车辆报警信息结构体(byAlarmType为0x1时有效)
sLicense
车牌号码
byVehicleType
车辆类型：0- 保留，1- 固定车，2- 临时车，3- 预订车，4- 联检车，5- 授权车
byRes1
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_GATE_CARDINFO

出入口卡片信息结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  char                szCardNo[MAX_CARDNO_LEN];
  char                szPassVehicleID[MAX_VEHICLE_ID_LEN];
  char                szInVehicleID[MAX_VEHICLE_ID_LEN];
  NET_DVR_TIME_V30    struSwipeTime;
  NET_DVR_TIME_V30    struCardTime;
  BYTE                byLetPass;
  BYTE                byCardType;
  BYTE                byRes[126];
}NET_DVR_GATE_CARDINFO,*LPNET_DVR_GATE_CARDINFO;

Members

dwSize
结构体大小
struDevInfo
报警设备信息
dwRelativeTime
相对时标
dwAbsTime
绝对时标
szCardNo
卡号
szPassVehicleID
通过车辆唯一标识ID
szInVehicleID
出口时的入口唯一标识ID
struSwipeTime
刷卡时间
struCardTime
卡片存的时间，即入场时写入的时间，只对出口票箱有用，0表示无入场时间
byLetPass
出入口放行方式：0- 不放行(当CardType == 纸票)需要收费，1- 放行，2- 中心收费放行
byCardType
卡类型：0- 固定卡，1- 临时卡，2- 纸票
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_GATE_CHARGEINFO

出入口付费信息结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  char                sLicense[MAX_LICENSE_LEN];
  char                szCardNo[48];
  NET_DVR_TIME_V30    struEntranceTime;
  NET_DVR_TIME_V30    struDepartureTime;
  char                szDepartureID[32];
  char                szEntranceID[32];
  DWORD               dwTotalCost;
  char                szOperateName[32];
  BYTE                byChargeRuleId;
  BYTE                byVehicleType;
  BYTE                byRes[127];
}NET_DVR_GATE_CHARGEINFO,*LPNET_DVR_GATE_CHARGEINFO;

Members

dwSize
结构体大小
struDevInfo
报警设备信息
dwRelativeTime
相对时标
dwAbsTime
绝对时标
sLicense
车牌号码
szCardNo
卡号
struEntranceTime
进入时间
struDepartureTime
离开时间
szDepartureID
出场唯一过车标示
szEntranceID
入场唯一过车标示
dwTotalCost
实际收费金额*100
szOperateName[32]
操作名称，脱机下为"offline"
byChargeRuleId
收费规则centerId
byVehicleType
车辆类型：0- 其他车辆，1- 小型车，2- 大型车
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_GATE_TIME_CFG

人员通道闸门时间参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwHoldOnALarmTime;
  DWORD    dwHoldOnGateOpenTime;
  DWORD    dwPostponeIntrusionAlarmTime;
  DWORD    dwNoLaneAccessTimeLimitTime;
  DWORD    dwSafetyZoneStayTime;
  DWORD    byIRTriggerTimeoutTime;
  BYTE     byRes[299];
}NET_DVR_GATE_TIME_CFG, *LPNET_DVR_GATE_TIME_CFG;

Members

dwSize
结构体大小
dwHoldOnALarmTime
延续报警器蜂鸣时间，单位：ms
dwHoldOnGateOpenTime
闸门收到关闭命令前继续保持打开状态时间，单位：ms
dwPostponeIntrusionAlarmTime
推迟触发闯入欺骗行为报警时间，单位：ms
dwNoLaneAccessTimeLimitTime
通道收到有效通行认证信号，但无人通行超时报警时间，单位：s
dwSafetyZoneStayTime
通道收到有效通行认证信号，乘客到达安全区后滞留通道超时报警时间，单位：s
byIRTriggerTimeoutTime
红外触发超时时间，单位：秒（0-255）
byRes
保留，置为0

Remarks

  • 设备是否支持人员通道闸门时间配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<GateTimeCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GATELAMP_INFO

常亮灯控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byLaneNo;
  BYTE     byBrightlampCtrl;
  BYTE     byRes[14];
}NET_DVR_GATELAMP_INFO,*LPNET_DVR_GATELAMP_INFO;

Members

dwSize
结构体大小
dwChannel
通道号
byLaneNo
道闸号：0- 表示无效值(设备需要做有效值判断)，1- 道闸1
byBrightlampCtrl
控制参数：0- 关闭常亮灯，1- 开启常亮灯
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_GATEWAY_CFG

门禁参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byName[NAME_LEN];
  BYTE     byEnable;
  BYTE     byLocalEnable;
  WORD     wDelayTime;
  BYTE     byLockWorkMode;
  BYTE     byRes[31];
}NET_DVR_GATEWAY_CFG, *LPNET_DVR_GATEWAY_CFG;

Members

dwSize
结构体大小
byName
门禁名称
byEnable
是否启用
byLocalEnable
本地是否启用
wDelayTime
开启延时时间，单位为：秒，取值范围：0~65535，0为一直开启
byLockWorkMode
电锁工作模式：0- 通电启动，1-断电启动
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GB28181_SERVICE_CFG

GB28181服务器参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byServerID[DEV_ID_LEN];
  WORD     wPort;
  BYTE     byRes1[2];
  BYTE     byAuthPasswd[PASSWD_LEN];
  DWORD    dwRegisterValid;
  BYTE     byMaxHeartbeatTimeOut;
  BYTE     byAutoAddIpc;
  BYTE     byRes[254];
}NET_DVR_GB28181_SERVICE_CFG, *LPNET_DVR_GB28181_SERVICE_CFG;

Members

dwSize
结构体大小
byServerID
SIP服务器ID
wPort
SIP服务器端口号
byRes1
保留，置为0
byAuthPasswd
认证密码
dwRegisterValid;
存活期周期，单位：秒，默认：3600
byMaxHeartbeatTimeOut
最大心跳超时次数，默认：3次
byAutoAddIpc
是否启用自动添加ipc：0- 不启用，1- 启用
byRes
保留，置为0

Remarks

  • 该配置设置的是设备作为GB28181注册服务器的相关参数，设置之后前端设备（IPC等）可以使用28281协议的方式接入该设备。
  • 当启用自动添加IPC时，设备会进行sadp扫描，自动将扫描到的在线IPC以28181协议的方式添加到设备中。
  • 设备是否支持GB28181服务器功能或者支持的参数能力，可以通过设备能力集进行判断，对应GB28181服务器能力集(GB28181ServiceCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_GBT28181_SERVICE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_GBT28181_ACCESS_CFG

GBT28181协议接入配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byTransProtocol;
  WORD     wLocalSipPort;
  char     szServerID[MAX_SERVERID_LEN];
  char     szServerDomain[MAX_SIPSERVER_ADDRESS_LEN];
  char     szSipServerAddress[MAX_SIPSERVER_ADDRESS_LEN];
  WORD     wServerSipPort;
  BYTE     byProtocolVersion;  BYTE     byRes3;
  char     szSipUserName[MAX_SERVERNAME_LEN];
  char     szSipAuthenticateID[MAX_AUTHENTICATEID_LEN];
  char     szSipAuthenticatePasswd[MAX_AUTHENTICATEPASSWD_LEN];
  DWORD    dwRegisterValid;
  BYTE     byHeartbeatInterval;
  BYTE     byMaxHeartbeatTimeOut;
  BYTE     byStreamType;
  BYTE     byDeviceStatus;
  DWORD    dwRegisterInterval;
  DWORD    dwAutoAllocChannelID;
  char     szDeviceDomain[MAX_SIPSERVER_ADDRESS_LEN];
  BYTE     byRes4[116];
}NET_DVR_GBT28181_ACCESS_CFG,*LPNET_DVR_GBT28181_ACCESS_CFG;

Members

dwSize
结构体大小
byEnable
28181协议使能：0- 关闭，1- 开启
byTransProtocol
传输协议：0- UDP（默认），1- TCP
wLocalSipPort
设备SIP端口，取值范围：1024~65535
szServerID
服务器ID，64字节字符串，仅限数字，由GB28181服务器提供
szServerDomain
服务器域
szSipServerAddress
SIP服务器地址，支持域名和IP地址
wServerSipPort
服务器SIP端口：1024~65535
byProtocolVersion
协议版本：0- GB/T28181-2011(仅支持UDP)，1- GB/T28181-2015(支持TCP、UDP)，2- GB/T28181-2016
byRes3
保留，置为0
szSipUserName
SIP用户名称，64字节字符串(第三方SIP终端请求IPC服务时使用)
szSipAuthenticateID
SIP用户认证ID(注册用户名)，64字节字符串
szSipAuthenticatePasswd
SIP用户认证密码，32字节字符串(IPC设备注册到SIP服务器时使用)
dwRegisterValid
注册有效期，单位：秒，默认：3600
byHeartbeatInterval
心跳间隔，单位：秒，默认：10秒
byMaxHeartbeatTimeOut
最大心跳超时次数，默认：3次
byStreamType
取流类型：0- 主码流，1- 子码流，2- 三码流
byDeviceStatus
设备是否在线状态：0- 保留，1- 在线，2- 离线
dwRegisterInterval
注册间隔（注册失败后再次注册的时间间隔），范围：60~600s，默认：60s
dwAutoAllocChannelID
是否自动分配通道ID，按位表示，取值：0- 手动配置，1- 自动分配
bit1- 自动分配编码通道ID
bit2- 自动分配报警输入通道
bit3- 自动分配解码通道ID
szDeviceDomain
设备域
byRes4
保留，置为0

Remarks

  • 设备是否支持GBT28181协议接入配置或者支持的参数能力，可以通过设备能力集进行判断，对应GBT28181协议能力集(GBT28181AccessAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • GB28181详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》（即GB28181协议文档）。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GBT28181_ALARMINCFG

GBT28181协议设备的报警输入通道配置结构体。

struct{
  DWORD    dwSize;
  char     szAlarmInNumID[MAX_COMPRESSIONID_LEN];
  BYTE     byRes[256];
}NET_DVR_GBT28181_ALARMINCFG,*LPNET_DVR_GBT28181_ALARMINCFG;

Members

dwSize
结构体大小
szAlarmInNumID
设备报警输入编码ID，20字节字符串，仅限数字
byRes
保留，置为0

See Also

GB28181包括编码ID规定，详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》（即GB28181协议文档）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_GBT28181_AUDIO_OUTPUT_CFG

GBT28181协议接入设备语音对讲通道配置结构体。

struct{
  DWORD    dwSize;
  char     szAudioOutNumID[MAX_COMPRESSIONID_LEN];
  BYTE     byRes[256];
}NET_DVR_GBT28181_AUDIO_OUTPUT_CFG,*LPNET_DVR_GBT28181_AUDIO_OUTPUT_CFG;

Members

dwSize
结构体大小
szAudioOutNumID
设备语音输出编码ID
byRes
保留，置为0

Remarks

  • 设备是否支持GBT28181协议接入设备语音对讲通道配置或者支持的参数能力，可以通过设备能力集进行判断，对应GBT28181协议能力集(GBT28181AccessAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<audioOutputCompressionIDLen>。
  • GB28181详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》（即GB28181协议文档）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_GBT28181_AUDIO_OUTPUT_COND

GBT28181协议接入设备语音对讲通道配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAudioChannel;
  BYTE     byRes[128];
}NET_DVR_GBT28181_AUDIO_OUTPUT_COND,*LPNET_DVR_GBT28181_AUDIO_OUTPUT_COND;

Members

dwSize
结构体大小
dwAudioChannel
语音对讲通道号
byRes
保留，置为0

Remarks

  • 设备是否支持GBT28181协议接入设备语音对讲通道配置或者支持的参数能力，可以通过设备能力集进行判断，对应GBT28181协议能力集(GBT28181AccessAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<audioOutputCompressionIDLen>。
  • GB28181详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》（即GB28181协议文档）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_GBT28181_CHANINFO_CFG

GBT28181协议设备的编码通道配置结构体。

struct{
  DWORD    dwSize;
  char     szVideoChannelNumID[MAX_COMPRESSIONID_LEN];
  BYTE     byRes[256];
}NET_DVR_GBT28181_CHANINFO_CFG,*LPNET_DVR_GBT28181_CHANINFO_CFG;

Members

dwSize
结构体大小
szVideoChannelNumID
设备视频通道编码ID，64字节字符串，仅限数字
byRes
保留，置为0

See Also

GB28181包括编码ID规定，详细内容请参考《安全防范视频监控联网系统信息传输、交换、控制技术要求》（即GB28181协议文档）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_GENERATE_OUTPUT_CTRL

通用扩展输出模块控制结构体。

struct{
  DWORD                                        dwSize;
  BYTE                                         byOutPutState1;
  BYTE                                         byOutPutState2;
  BYTE                                         byOutPutState3;
  BYTE                                         byOutPutState4;
  BYTE                                         byOutPutState5;
  BYTE                                         byOutPutState6;
  BYTE                                         byOperateType;
  BYTE                                         byRes[65];
}NET_DVR_GENERATE_OUTPUT_CTRL,*LPNET_DVR_GENERATE_OUTPUT_CTRL;

Members

dwSize
结构体大小
byOutPutState1
输出口1-8
byOutPutState2
输出口9-16
byOutPutState3
输出口17-24
byOutPutState4
输出口25-32
byOutPutState5
输出口33-40
byOutPutState6
输出口41-48
byOperateType
操作类型：0- 无效，1- 开，2- 关
byRes
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_GENERIC_DATA_CFG

数据信息结构体。

struct{
  BYTE    sData[MAX_POS_FILTER_DATA_LEN];
  BYTE    byFlagType;
  BYTE    byRes[3];
}NET_DVR_GENERIC_DATA_CFG, *LPNET_DVR_GENERIC_DATA_CFG;

Members

sData
数据标志，目前支持最大为32字节
byFlagType
标志类型：0- 字符串，1- 十六进制
byRes
保留，置为0

See Also

NET_DVR_POS_GENERIC


NET_DVR_GENERIC_END

交易结束信息结构体。

struct{
  BYTE    sData[MAX_POS_FILTER_DATA_LEN];
  BYTE    byExclusive;
  BYTE    byFlagType;
  BYTE    byRes[6];
}NET_DVR_GENERIC_END, *LPNET_DVR_GENERIC_END;

Members

sData
交易结束标志，目前支持最大为32字节
byExclusive
是否包含标志本身：0- 包含，1- 不包含
byFlagType
标志类型：0- 字符串，1- 十六进制
byRes
保留，置为0

See Also

NET_DVR_POS_GENERIC


NET_DVR_GENERIC_START

交易开始信息结构体。

struct{
  BYTE    sData[MAX_POS_FILTER_DATA_LEN];
  BYTE    byExclusive;
  BYTE    byFlagType;
  BYTE    byRes[2];
}NET_DVR_GENERIC_START, *LPNET_DVR_GENERIC_START;

Members

sData
交易开始标志，目前支持最大为32字节，只有anyCharacter(是否区分大小写)为否时才生效
byExclusive
是否包含标志本身：0- 包含，1- 不包含
byFlagType
标志类型：0- 字符串，1- 十六进制
byRes
保留，置为0

See Also

NET_DVR_POS_GENERIC


NET_DVR_GEOGLOCATION

地址位置信息结构体。

struct{
  int     iRes[2];
  DWORD   dwCity;
}NET_DVR_GEOGLOCATION,*LPNET_DVR_GEOGLOCATION;

Members

iRes
保留，置为0
dwCity
省份城市，详见枚举类型：PROVINCE_CITY_IDX

See Also

NET_DVR_VTPARAM


NET_DVR_GET_FIGURE_COND

按时间点获取缩略图条件参数结构体。

struct{
  DWORD               dwLength;
  DWORD               dwChannel;
  NET_DVR_TIME_V30    struTimePoint;
  BYTE                byID[STREAM_ID_LEN];
  BYTE                byRes[32];
}NET_DVR_GET_FIGURE_COND, *LPNET_DVR_GET_FIGURE_COND;

Members

dwLength
结构体大小
dwChannel
通道号，0xffffffff时无效
struTimePoint
时间点
byID
流ID，为字母、数字和"_"的组合，全部为0时无效
byRes
保留，置为0

Remarks

  • 如果设备不支持流ID，byID全部为0即可。如果设备同时支持流ID和通道模式，dwChannel和byID不能同时有效：使用通道模式时，dwChannel输入正确的通道号，byID全部赋值为0；使用流ID模式时，dwChannel为0xffffffff，byID输入正确的流ID。
  • 设备是否支持按时间点获取缩略图或者支持的参数能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportGetFigure>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_GET_GPS_DATA_PARAM

GPS查找条件参数结构体。

struct{
  DWORD    dwCmdType;
  union{
           struct{
           NET_DVR_TIME    struBeginTime;
           NET_DVR_TIME    struEndTime;
           DWORD           dwInterval;
           BYTE            byRes[76];
           }TimeSeg;
           struct{
           NET_DVR_TIME    struTimePoint;
           BYTE            byRes[104];
           }TimePoint;
  }GpsDataParam;
}NET_DVR_GET_GPS_DATA_PARAM, *LPNET_DVR_GET_GPS_DATA_PARAM;

Members

dwCmdType
查找方式：0- 按时间段查找GPS数据，1- 按时间点查找GPS数据
TimeSeg为按时间段查找GPS数据条件参数
struBeginTime
GPS数据查找起始时间
struEndTime
GPS数据查找结束时间
dwInterval
GPS点时间间隔，单位：秒
byRes
保留
TimePoint为按时间点查找GPS数据条件参数
struTimePoint
GPS数据查找时间点
byRes
保留

See Also

NET_DVR_GetVehicleGpsInfo


NET_DVR_GET_STREAM_UNION

取流方式联合体。

union{
  NET_DVR_IPCHANINFO         struChanInfo;
  NET_DVR_PU_STREAM_CFG      struPUStream;
  NET_DVR_IPSERVER_STREAM    struIPServerStream;
  NET_DVR_DDNS_STREAM_CFG    struDDNSStream;
  NET_DVR_PU_STREAM_URL      struStreamUrl;
  NET_DVR_HKDDNS_STREAM      struHkDDNSStream;
  NET_DVR_IPCHANINFO_V40     struIPChan;
}NET_DVR_GET_STREAM_UNION,*LPNET_DVR_GET_STREAM_UNION;

Members

struChanInfo
直接从设备取流的IP通道信息
struPUStream
通过流媒体从设备取流
struIPServerStream
通过IPServer获得IP地址后取流
struDDNSStream
通过IPServer找到设备，再通过流媒体取设备的码流
struStreamUrl
通过URL从流媒体取流
struHkDDNSStream
通过hiDDNS连接设备然后从设备取流
struIPChan
直接从设备取流（扩展）

Remarks

NVR、混合型DVR设备主要支持直接从设备取流(struChanInfo)的模式；PCNVR（存储服务器）支持struChanInfo、struPUStream、struIPServerStream及struDDNSStream 4种取流模式。

See Also

NET_DVR_STREAM_MODE


NET_DVR_GETWORKSTATE_COND

设备工作状态查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byFindHardByCond;
  BYTE     byFindChanByCond;
  BYTE     byRes1[2];
  DWORD    dwFindHardStatus[MAX_DISKNUM_V30];
  DWORD    dwFindChanNo[MAX_CHANNUM_V40];
  BYTE     byRes[64];
}NET_DVR_GETWORKSTATE_COND,*LPNET_DVR_GETWORKSTATE_COND;

Members

dwSize
结构体大小
byFindHardByCond
按条件查找磁盘：0- 查找全部磁盘，1- 根据dwFindHardStatus数组中各元素所指定的有效硬盘号进行查找
byFindChanByCond
按条件查找通道：0- 查找全部通道，1- 根据dwFindChanNo数组中各元素所指定的有效通道号进行查找
byRes1
保留，置为0
dwFindHardStatus
要查找的硬盘号，其中的数组元素按值赋值，表示相应的硬盘号。当某个数组下标所对应的元素值为0xffffffff时，则认为从该下标开始及其后续的数据无效
dwFindChanNo
要查找的通道号，其中的数组元素按值赋值，表示相应的通道号。当某个数组下标对所应的元素值为0xffffffff时，则认为从该下标开始及其后续的数据无效
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_GIS_INFO

GIS信息数据结构体。

struct{
  DWORD                   dwSize;
  float                   fAzimuth;
  float                   fHorizontalValue;
  float                   fVerticalValue;
  float                   fVisibleRadius;
  float                   fMaxViewRadius;
  BYTE                    byLatitudeType;
  BYTE                    byLongitudeType;
  BYTE                    byPTZPosExEnable;
  BYTE                    byRes1;
  NET_DVR_LLI_PARAM       struLatitude;
  NET_DVR_LLI_PARAM       struLongitude;
  NET_DVR_PTZPOS_PARAM    struPtzPos;
  NET_DVR_SENSOR_PARAM    struSensorParam;
  NET_PTZ_INFO            struPtzPosEx ;
  float                   fMinHorizontalValue;
  float                   fMaxHorizontalValue;
  float                   fMinVerticalValue;
  float                   fMaxVerticalValue;
  BYTE                    byRes[220];
}NET_DVR_GIS_INFO, *LPNET_DVR_GIS_INFO;

Members

dwSize
结构体大小
fAzimuth
电子罗盘的方位信息，方位角取值范围：[0.00°,360.00°)
fHorizontalValue
水平视场角，精确到小数点后面两位
fVerticalValue
垂直视场角，精确到小数点后面两位
fVisibleRadius
当前可视半径，精确到小数点后面两位
fMaxViewRadius
最大可视半径，精确到小数点后面0位（预留处理）
byLatitudeType
纬度类型：0- 北纬，1- 南纬
byLongitudeType
经度类型：0- 东经，1- 西经
byPTZPosExEnable
是否启用PTZ坐标扩展：0~不启用，PTZ坐标值以struPtzPos为准；1~启用，PTZ坐标值以struPtzPosEx为准。
byRes1
保留
struLatitude
纬度信息
struLongitude
经度信息
struPtzPos
PTZ坐标
struSensorParam
Sensor信息
struPtzPosEx
ptz坐标扩展(支持高精度PTZ值，精确到小数点后三位)
fMinHorizontalValue
最小水平视场角，精确到小数点后面两位；取值范围：0.0-360.00
fMaxHorizontalValue
最大水平视场角，精确到小数点后面两位；取值范围：0.0-360.00
fMinVerticalValue
最小垂直视场角，精确到小数点后面两位；取值范围：0.0-360.00
fMaxVerticalValue
最大垂直视场角，精确到小数点后面两位；取值范围：0.0-360.00
byRes
保留

Remarks

  • 获取当前球机的GIS信息。

See Also

NET_DVR_GetSTDConfig


NET_DVR_GIS_UPLOADINFO

GIS上传信息结构体。

struct{
  DWORD                   dwSize;
  DWORD                   dwRelativeTime;
  DWORD                   dwAbsTime;
  NET_VCA_DEV_INFO         struDevInfo;
  float                   fAzimuth;
  BYTE                    byLatitudeType;
  BYTE                    byLongitudeType;
  BYTE                    byRes1[2];
  NET_DVR_LLI_PARAM       struLatitude;
  NET_DVR_LLI_PARAM       struLongitude;
  float                   fHorizontalValue;
  float                   fVerticalValue;
  float                   fVisibleRadius;
  float                   fMaxViewRadius;
  NET_DVR_SENSOR_PARAM    struSensorParam;
  NET_DVR_PTZPOS_PARAM    struPtzPos;
  BYTE                     byRes[256];
}NET_DVR_GIS_UPLOADINFO, *LPNET_DVR_GIS_UPLOADINFO;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
fAzimuth
电子罗盘的方位信息，方位角取值范围：[0.00°,360.00°)
byLatitudeType
纬度类型：0- 北纬，1- 南纬
byLongitudeType
经度类型：0- 东经，1- 西经
byRes1
保留
struLatitude
纬度信息
struLongitude
经度信息
fHorizontalValue
水平视场角，精确到小数点后面两位
fVerticalValue
垂直视场角，精确到小数点后面两位
fVisibleRadius
当前可视半径，精确到小数点后面两位
fMaxViewRadius
最大可视半径，精确到小数点后面0位（预留处理）
struSensorParam
Sensor信息
struPtzPos
PTZ坐标
byRes
保留

Remarks

  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_GOP_INFO

GOP信息查询条件参数结构体。

struct{
  DWORD              dwSize;
  LONG               lChannel;
  NET_DVR_TIME_EX    struStartTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byRes[256];
}NET_DVR_GOP_INFO,*LPNET_DVR_GOP_INFO;

Members

dwSize
结构体大小
lChannel
通道号
struStartTime
开始时间
struEndTime
结束时间
byRes
保留，置为0

Remarks

  • GOP信息是录像中的智能索引信息，主要用于智能快速回放功能。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_GOP_INFO_RET

GOP信息结构体。

struct{
  NET_DVR_TIME_V30    struGopTime;
  DWORD               dwDuration;
  DWORD               dwDataSize;
  BYTE                byRes[128];
  char                *pBuf;
}NET_DVR_GOP_INFO_RET,*LPNET_DVR_GOP_INFO_RET;

Members

struGopTime
Gop信息时间点
dwDuration
信息持续时间
dwDataSize
指针pBuf缓冲区大小
byRes
保留，置为0
pBuf
Gop信息块

Remarks

  • GOP信息是录像中的智能索引信息，主要用于智能快速回放功能。
  • 设备是否支持获取GOP信息能力，可以通过设备能力集进行判断，对应录像相关能力集(RecordAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<supportGetGopInfo>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_GOTOSCENE_COND

远程控制主摄像机转向指定的场景条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwSceneID;
  BYTE     byRes[512];
}NET_DVR_GOTOSCENE_COND, *LPNET_DVR_GOTOSCENE_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwSceneID
场景ID号
byRes
保留，置为0

Remarks

  • 远程控制主摄像机转向指定的场景ID，可以通过设备能力集获取，对应从摄像机配置和标定能力集(SlaveCameraCalibrating)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES，节点：<sceneID>。

See Also

NET_DVR_STDControl


NET_DVR_GPS_DATA

GPS数据结构体。

struct{
  NET_DVR_GPS_INFO    struGPSInfo;
  NET_DVR_TIME        struTime;
  BYTE                byRes[12];
}NET_DVR_GPS_DATA,*LPNET_DVR_GPS_DATA;

Members

struGPSInfo
GPS信息
struTime
GPS坐标对应的时间点
byRes
保留，置为0

See Also

NET_DVR_GetVehicleGpsInfo


NET_DVR_GPS_DATACFG

GPS参数结构体。

struct{
  DWORD                      dwSize;
  BYTE                       byGpsDataMode;
  BYTE                       byLongitudeType;
  BYTE                       byLatitudeType;
  BYTE                       byRes;
  NET_DVR_LATITUDE_PARAM     struLatitude;
  NET_DVR_LONGITUDE_PARAM    struLongitude;
  BYTE                       byRes1[128];
}NET_DVR_GPS_DATACFG, *LPNET_DVR_GPS_DATACFG;

Members

dwSize
结构体大小
byGpsDataMode
GPS数据获取方式：0- 自动，1- 手动
byLongitudeType
经度：0- 东经，1- 西经
byLatitudeType
纬度：0- 南纬，1- 北纬
byRes
保留，置为0
struLatitude
纬度
struLongitude
经度
byRes1
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GPS_INFO

GPS信息结构体。

struct{
  BYTE     byDirection[2];
  BYTE     bySvs;
  BYTE     byLocateMode;
  WORD     wHDOP;
  WORD     wHeight;
  DWORD    dwLatitude;
  DWORD    dwLongitude;
  DWORD    dwVehicleSpeed;
  DWORD    dwVehicleDirection;
  BYTE     byRes[8];
}NET_DVR_GPS_INFO,*LPNET_DVR_GPS_INFO;

Members

byDirection
direction[0]：0- 东经，1- 西经；direction[1]：0- 北纬，1- 南纬
bySvs
satellite vehicles，有效定位星数，初始值为0
byLocateMode
定位模式(初值0)，0- 自主定位，1- 差分，2- 估算，3- 数据无效
wHDOP
水平精度因子，度量GPS精确度（0.5~99.9，6以内定位精度高，20以上需丢弃），这里存储的是乘以10以后的整数
wHeight
高度：厘米
dwLatitude
纬度，dwLatitude = 实际度*3600*100 + 实际分*60*100 + 实际秒*100
dwLongitude
经度，dwLongitude = 实际度*3600*100 + 实际分*60*100 + 实际秒*100
dwVehicleSpeed
速度 = 实际速度*100000，实际单位：kph(千米/小时)
dwVehicleDirection
车辆方向=实际方向*100。实际方向：以度为单位，正北方向为基准，顺时针方向计算
byRes
保留

See Also

NET_DVR_GPS_DATA


NET_DVR_GPSALARMINFO

GPS报警信息结构体。

struct{
  BYTE              byDeviceID[NAME_LEN];
  NET_DVR_TIME_EX   struGpsTime;
  DWORD             dwLongitude;
  DWORD             dwLatitude;
  int               iTimeZone;
  DWORD             dwDirection;
  WORD              wSatellites;
  WORD              wPrecision;
  DWORD             dwHeight;
  DWORD             dwGPSSeq;
  WORD              wSpeed;
  char              sDirection[2];
  BYTE              byLocateMode;
  BYTE              byRes[3];
}NET_DVR_GPSALARMINFO,*LPNET_DVR_GPSALARMINFO;

Members

byDeviceID
设备的ID串
struGpsTime
GPS上传的时间
dwLongitude
经度，dwLongitude =实际度*3600*100+实际分*60*100+实际秒*100
dwLatitude
纬度，dwLatitude = 实际度*3600*100+实际分*60*100+实际秒*100
iTimeZone
时区，用分钟数表示，+60代表东1区，+480代表东8区，-60代表西1区，-480代表西8区，该字段和GPSTime构成一个完整的时间描述
dwDirection
车辆方向=实际方向*100。实际方向：以度为单位，正北方向为基准，顺时针方向计算
wSatellites
卫星数量
wPrecision
精度
dwHeight
高度：厘米，预留
dwGPSSeq
GPS序号，GPS补传时要用到
wSpeed
速度，单位：km/h
sDirection
direction[0]：‘E’或‘W’(东经或西经)，direction[1]：‘N’或‘S’(北纬或南纬)
byLocateMode
定位模式(初值0)，1- 自主定位，2- 差分，3- 估算，4- 数据无效
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_GROUP_CFG

群组参数配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnable;
  BYTE                        byRes1[3];
  NET_DVR_VALID_PERIOD_CFG    struValidPeriodCfg;
  BYTE                        byGroupName[GROUP_NAME_LEN];
  BYTE                        byRes2[32];
}NET_DVR_GROUP_CFG,*LPNET_DVR_GROUP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用该群组：0- 不启用，1- 启用
byRes1
保留，置为0
struValidPeriodCfg
群组有效期参数
byGroupName
群组名称
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GROUP_COMBINATION_INFO

群组组合参数结构体。

struct{
  BYTE     byEnable;
  BYTE     byMemberNum;
  BYTE     bySequenceNo;
  BYTE     byRes;
  DWORD    dwGroupNo;
}NET_DVR_GROUP_COMBINATION_INFO,*LPNET_DVR_GROUP_COMBINATION_INFO;

Members

byEnable
是否启用该群组组合：0- 不启用，1- 启用
byMemberNum
刷卡成员数量，群组里面需要刷卡的卡个数
bySequenceNo
群组刷卡次序号
byRes
保留，置为0
dwGroupNo
群组编号，0xffffffff表示远程开门，0xfffffffe表示超级密码

Remarks

多重卡刷卡开门功能：
有权限的任意n张卡刷卡之后才能开门，不限制先后次序，则只需要设置一个群组组合（卡号都配置关联该群组），byMemberNum设为n，bySequenceNo设为1。
有权限的n张A类卡和m张B类卡刷卡之后才能开门，而且先刷A类卡再刷B类卡，则需要设置2个群组组合，2个群组组合的byMemberNum分别为n和m，bySequenceNo分别为1、2；如果不需要限制刷卡先后次序，则bySequenceNo都设为0，0表示无序。

See Also

NET_DVR_MULTI_CARD_GROUP_CFG_V50


NET_DVR_GROUP_COMBINATION_INFO_V50

群组组合参数结构体。

struct{
  BYTE     byEnable;
  BYTE     byMemberNum;
  BYTE     bySequenceNo;
  BYTE     byRes;
  DWORD    dwGroupNo;
}NET_DVR_MULTI_CARD_CFG_V50,*LPNET_DVR_MULTI_CARD_CFG_V50;

Members

byEnable
是否启用该群组组合：0- 不启用，1- 启用
byMemberNum
刷卡成员数量，群组里面需要刷卡的卡个数
bySequenceNo
群组刷卡次序号
byRes
保留，置为0
dwGroupNo
群组编号，0xffffffff表示远程开门，0xfffffffe表示超级密码

Remarks

多重卡刷卡开门功能：
有权限的任意n张卡刷卡之后才能开门，不限制先后次序，则只需要设置一个群组组合（卡号都配置关联该群组），byMemberNum设为n，bySequenceNo设为1。
有权限的n张A类卡和m张B类卡刷卡之后才能开门，而且先刷A类卡再刷B类卡，则需要设置2个群组组合，2个群组组合的byMemberNum分别为n和m，bySequenceNo分别为1、2；如果不需要限制刷卡先后次序，则bySequenceNo都设为0，0表示无序。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GROUP_DETECTION

人员聚集侦测配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnabled;
  BYTE                        byRes1[3];
  NET_DVR_RAPIDMOVE_REGION    struRegion[MAX_REGION_NUM];
  BYTE                        byRes2[128];
}NET_DVR_GROUP_DETECTION,*LPNET_DVR_GROUP_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留
struRegion
人员聚集侦测区域
byRes2
保留

Remarks

  • 该配置功能对应人员聚集侦测能力集(Group)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_GROUPDETECTION_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。人员聚集侦测区域参数通过NET_DVR_SET_GROUPDETECTION_REGION命令进行配置，每一个区域单独设置。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_GROUPDETECTION_REGION

人员聚集侦测区域结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               byObjectOccup;
  BYTE               byRes[63];
}NET_DVR_GROUPDETECTION_REGION,*LPNET_DVR_GROUPDETECTION_REGION;

Members

struRegion
人员聚集侦测区域范围
byObjectOccup
占比（人体面积占用户设定区域面积的比例阈值），取值范围：[1,100]
byRes
保留

Remarks

设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

See Also

NET_DVR_GROUP_DETECTION


NET_DVR_GSENSORPARA

GSENSOR 配置结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_ACCELERATIONCFG        struAccelerationCfg;
  BYTE                           byModuleSelect;
  BYTE                           byRes1[3];
  NET_DVR_HANDLEEXCEPTION_V30    struHandleException;
  BYTE                           byRes2[24];
}NET_DVR_GSENSORPARA, *LPNET_DVR_GSENSORPARA;

Members

dwSize
结构体大小
struAccelerationCfg
加速报警参数
byModuleSelect
模块选择，0- 内置，1- 外置
byRes1
保留
struHandleException
处理方式
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_GUARD_CFG

车牌侦测计划配置结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_TIME_DETECTION         struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V30];
  NET_DVR_TIME_DETECTION         struHolidayTime[MAX_TIMESEGMENT_V30];
  BYTE                           byRes[88];
}NET_DVR_GUARD_CFG,*LPNET_DVR_GUARD_CFG;

Members

dwSize
结构体大小
struAlarmSched
布防时间段，每周7天，每天最多设置8个时间段
struHandleException
异常处理方式，支持设置“上传中心”
dwMaxRelRecordChanNum
触发的录像通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
dwRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]
struHolidayTime
假日布防时间
byRes
保留，置为0

Remarks

  • dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_GUARD_COND

车牌侦测计划配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRelateType;
  BYTE     byRes[63];
}NET_DVR_GUARD_COND,*LPNET_DVR_GUARD_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRelateType
关联类型：0- 无效，1- 关联抓拍MPR模式(多帧触发抓拍，IPC使用)，2- 关联抓拍HVT模式（混卡IPC使用）
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_GUID_FILE_EXPORT

导出GUID文件输入参数结构体。

struct{
  DWORD    dwSize;
  char     sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN];
  BYTE     byRes[128];
}NET_DVR_GUID_FILE_EXPORT, *LPNET_DVR_GUID_FILE_EXPORT;

Members

dwSize
结构体大小
sLoginPassWord
用户登录密码
byRes
保留，置为0

Remarks

  • 设备是否支持导出GUID文件能力，可以通过设备能力集进行判断，对应安全能力集(SecurityCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Security/capabilities，节点：<isSupportGUIDFileDataExport>。

See Also

NET_DVR_StartDownload


NET_DVR_GUID_FILE_STATUS_INFO

导出GUID文件状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byLockStatus;
  BYTE     byPasswd;
  BYTE     byRetryNum;
  BYTE     byRes1;
  DWORD    dwLockTime;
  BYTE     byRes[128];
}NET_DVR_GUID_FILE_STATUS_INFO, *LPNET_DVR_GUID_FILE_STATUS_INFO;

Members

dwSize
结构体大小
byLockStatus
锁定状态：0- 未锁定，1- 锁定
byPasswd
密码状态（未锁定时有效）：0- 密码错误，1- 密码正确
byRetryNum
剩余尝试次数（未锁定时有效）
byRes1
保留，置为0
dwLockTime
剩余锁定时间（锁定时有效
byRes
保留，置为0

See Also

NET_DVR_GetDownloadStateInfo


NET_DVR_HANDLEEXCEPTION

报警和异常处理结构体。

struct{
  DWORD    dwHandleType;
  BYTE     byRelAlarmOut[MAX_ALARMOUT];
}NET_DVR_HANDLEEXCEPTION, *LPNET_DVR_HANDLEEXCEPTION;

Members

dwHandleType
处理方式：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
byRelAlarmOut
报警触发的输出通道，0-不触发，1-触发输出


NET_DVR_HANDLEEXCEPTION_V30

报警和异常处理结构体。

struct{
  DWORD    dwHandleType;
  BYTE     byRelAlarmOut[MAX_ALARMOUT_V30];
}NET_DVR_HANDLEEXCEPTION_V30, *LPNET_DVR_HANDLEEXCEPTION_V30;

Members

dwHandleType
处理方式：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200：抓图并上传ftp
byRelAlarmOut
报警触发的输出通道，0-不触发，1-触发输出，按位表示输出通道，例如byRelAlarmOut[0]==1表示触发输出通道1，byRelAlarmOut[1]==1表示触发输出通道2，依次类推


NET_DVR_HANDLEEXCEPTION_V40

报警和异常处理结构体。

struct{
  DWORD    dwHandleType;
  DWORD    dwMaxRelAlarmOutChanNum;
  DWORD    dwRelAlarmOutChanNum ;
  DWORD    dwRelAlarmOut[MAX_CHANNUM_V30];
  BYTE     byRes[64];
}NET_DVR_HANDLEEXCEPTION_V40, *LPNET_DVR_HANDLEEXCEPTION_V40;

Members

dwHandleType
处理方式，各种异常处理方式的"或"结果，异常处理方式：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200：抓图并上传ftp
0x400: 虚焦侦测联动聚焦
0x800: PTZ联动跟踪(球机跟踪目标)
0x1000：抓图上传到云存储
0x4000:白光灯报警
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心。
dwMaxRelAlarmOutChanNum
设备最大支持的触发报警输出通道数（只读）
dwRelAlarmOutChanNum
已配置的触发的报警输出通道个数，决定dwRelAlarmOut取前多少个数组下标
dwRelAlarmOut
触发报警输出通道，取数组前dwRelAlarmOutChanNum个值，其值表示报警输出通道号(从1开始)，初始值是0xfffffffff(不关联通道)。例如，dwRelAlarmOutChanNum=5，则可以配置触发报警输出通道dwRelAlarmOut[0]~dwRelAlarmOut[4]。
byRes
保留

Remarks

  • 当dwRelAlarmOutChanNum字段大于64的时候，区分组号（dwGroup，从0开始，一组最大64路）。
  • 根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 触发的报警输出号与组号绑定，即：组号为0时，表示报警输出号范围为1~64；当组号为1时，表示报警输出号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的报警输出号无效。


NET_DVR_HANDLEEXCEPTION_V41

异常参数信息结构体。

struct{
  DWORD    dwHandleType;
  DWORD    dwMaxAlarmOutChannelNum;
  DWORD    dwRelAlarmOut[MAX_ALARMOUT_V40];
  BYTE     byRes[64];
}NET_DVR_HANDLEEXCEPTION_V41,*LPNET_DVR_HANDLEEXCEPTION_V41;

Members

dwHandleType
处理方式，各种异常处理方式的"或"结果，异常处理方式：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200: 抓图并上传ftp
0x400: 虚交侦测 联动 聚焦模式（提供可配置项，原先设备自动完成）IPC5.1.0
0x800: PTZ联动跟踪(球机跟踪目标)
0x1000：抓图上传到云存储
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心
dwMaxAlarmOutChannelNum
设备最大支持的触发报警输出通道数（只读）
dwRelAlarmOut
触发报警输出通道，数组元素值表示报警输出号（从0开始），例如：dwRelAlarmOut[i]==3表示触发第4个报警输出通道。中间遇到0xffffffff则后续无效。
byRes
保留，置为0

See Also

NET_DVR_EXCEPTION_V40 NET_DVR_EVENT_TRIGGER


NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO

单个硬盘卷信息结构体。

struct{
  DWORD     dwSize;
  BYTE      byHDVolumeNo;
  BYTE      byType;
  BYTE      byRes1[2];
  DWORD     dwCapacity;
  DWORD     dwFreeSpace;
  BYTE      byHDVolumeName[NET_SDK_DISK_VOLUME_LEN];
  BYTE      byLoopCover;
  BYTE      byRes[63];
}NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO, *LPNET_DVR_HARD_DISK_SINGLE_VOLUME_INFO;

Members

dwSize
结构体大小
byHDVolumeNo
硬盘卷ID(只读)
byType
硬盘卷类型:0-录像卷（用于保存录像），1-存档卷（用于存档录像，下发录像计划时，不能关联存档卷），2-文件卷（只用于存储客户端上传的文件，下发录像计划时，不能关联文件卷，需要过滤掉），3-图片卷（只用于存储客户端上传的图片）
byRes1
保留，置为0
dwCapacity
硬盘容量，单位：MB，该参数只能获取，不支持设置
dwFreeSpace
硬盘剩余空间，单位：MB，该参数只能获取，不支持设置
byHDVolumeName
硬盘卷名称(只读，不可设置)
byLoopCover
是否循环覆盖：0-非循环覆盖，1-循环覆盖（硬盘卷满了之后，循环覆盖最老的录像）
byRes
保留，置为0

Remarks

    硬盘卷：分为录像卷和存档卷。把多块硬盘创建成RAID之后，把RAID放到存储池，由存储池创建逻辑卷，再由逻辑卷组成录像卷或者存档卷。。

See Also

NET_DVR_HARD_DISK_VOLUME_INFO


NET_DVR_HARD_DISK_VOLUME_INFO

硬盘卷信息结构体。

struct{
  DWORD                                    dwSize;
  DWORD                                    dwHDVolumeCount;
  NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO     struSingleVolumeInfo[NET_SDK_MAX_DISK_VOLUME];
  BYTE                                     byRes[128];
}NET_DVR_HARD_DISK_VOLUME_INFO, *LPNET_DVR_HARD_DISK_VOLUME_INFO;

Members

dwSize
结构体大小
dwHDVolumeCount
当前硬盘卷总数(只读，不可设置)
struSingleVolumeInfo
单个硬盘卷信息
byRes
保留，置为0

Remarks

本结构体中的dwHDVolumeCount参数是指设备本地的硬盘数，因此只能获取，不能设置。

硬盘卷：分为录像卷和存档卷。把多块硬盘创建成RAID之后，把RAID放到存储池，由存储池创建逻辑卷，再由逻辑卷组成录像卷或者存档卷。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HD_STATUS

硬盘休眠状态参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySleepStatus;
  BYTE     byRes[127];
}NET_DVR_HD_STATUS,*LPNET_DVR_HD_STATUS;

Members

dwSize
结构体大小
bySleepStatus
休眠状态：0-不休眠，1-休眠
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HDCFG

设备硬盘配置结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwHDCount;
  NET_DVR_SINGLE_HD     struHDInfo[MAX_DISKNUM_V30];
}NET_DVR_HDCFG, *LPNET_DVR_HDCFG;

Members

dwSize
结构体大小
dwHDCount
硬盘数，该参数只能获取，不支持设置
struHDInfo
硬盘信息参数

Remarks

本结构体中的dwHDCount参数是指设备本地的硬盘数，因此只能获取该信息，不能设置。对硬盘的信息进行设置后需要重启设备才生效。

DS-8000系列的DVR不支持获取该参数，硬盘状态可以通过NET_DVR_GetDVRWorkState_V30获取。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HDCFG_V50

设备硬盘配置结构体。

struct{
  DWORD                     dwSize;
  DWORD                     dwHDCount;
  NET_DVR_SINGLE_HD_V50    struHDInfoV50[MAX_DISKNUM_V30];
}NET_DVR_HDCFG_V50, *LPNET_DVR_HDCFG_V50;

Members

dwSize
结构体大小
dwHDCount
硬盘数，该参数只能获取，不支持设置
struHDInfo
硬盘信息参数（硬盘相关操作都需要重启才能生效）

Remarks

本结构体中的dwHDCount参数是指设备本地的硬盘数，因此只能获取该信息，不能设置。对硬盘的信息进行设置后需要重启设备才生效。

DS-8000系列的DVR不支持获取该参数，硬盘状态可以通过NET_DVR_GetDVRWorkState_V30获取。

硬盘位置格式为：x/y-z

x为扩展柜插在主机箱上哪个接口（0表示主机箱本身，1表示接在接口1上的扩展柜，2表示插在接口2上的扩展柜）；

y为第几级扩展柜（0表示主机箱，1表示一级扩展柜上，2表示二级扩展柜上，3表示三级扩展柜上）

z为盘位号（比如机箱有48个盘位，则有1~48个盘位号，扩展柜有24个盘位，则有1~24个盘位号）。

例如：0/0-1表示主机箱上盘位号为1的位置；1/1-24表示接在主机箱接口1上的一级扩展柜上盘位号为24的位置；1/2-24表示接在主机箱接口1上的二级扩展柜上盘位号为24的位置；2/1-1表示接在主机箱接口2上的一级扩展柜上盘位号为1的位置；2/2-1表示接在主机箱接口2上的二级扩展柜上盘位号为1的位置；

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HDGROUP_CFG

设备盘组配置结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwHDGroupCount;
  NET_DVR_SINGLE_HDGROUP     struHDGroupAttr[MAX_HD_GROUP];
}NET_DVR_HDGROUP_CFG, *LPNET_DVR_HDGROUP_CFG;

fMembers

dwSize
结构体大小
dwHDGroupCount
盘组总数，该参数只能获取，不支持设置
struHDGroupAttr
盘组信息参数

Remarks

本结构体中的dwHDGroupCount参数是指设备本地的盘组数，因此只能获取该信息，不能设置。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_HDGROUP_CFG_V40


NET_DVR_HDGROUP_CFG_V40

设备盘组配置（扩展）结构体。

struct{
  DWORD                          dwSize;
  DWORD                          dwMaxHDGroupCount;
  DWORD                          dwCurHDGroupCount;
  NET_DVR_SINGLE_HDGROUP_V40     struHDGroupAttr[MAX_HD_GROUP];
  BYTE                           byRes[128];
}NET_DVR_HDGROUP_CFG_V40, *LPNET_DVR_HDGROUP_CFG_V40;

Members

dwSize
结构体大小
dwHDGroupCount
设备支持的最大盘组数（只读）
dwCurHDGroupCount
当前盘组总数（只读）
struHDGroupAttr
盘组信息参数（硬盘相关操作都需要重启才能生效）
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_HDGROUP_CFG


NET_DVR_HEATMAP_CFG

热度图参数配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes[3];
  NET_VCA_POLYGON                struPolygon[MAX_HEATMAPREGION_NUM];
  NET_DVR_HEATMAP_PARAM          struHeatMap;
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  NET_DVR_SCHEDTIME              struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRes1[512];
 }NET_DVR_HEATMAP_CFG,*LPNET_DVR_HEATMAP_CFG;

Members

dwSize
结构体大小
byEnable
是否使能热度图功能：0-否，1-是
byRes
保留，置为0
struPolygon
多边形规则区域，最大支持8个区域
struHeatMap
热度图参数
struHandleException
异常处理方式 仅支持上传中心
struAlarmSched
布防时间，每周7天，每天最大设置8个时间段
byRes1
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_HEATMAP_COND

热度图配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byDetSceneID;
  BYTE     byRes[63];
}NET_DVR_HEATMAP_COND, *LPNET_DVR_HEATMAP_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byDetSceneID
检测场景号，球机当前支持1个场景，IPC为0（不支持）
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_HEATMAP_INFO

热度图数据查询结果结构体。

struct{
  DWORD              dwSize;
  NET_DVR_TIME_EX    struStartTime;
  NET_DVR_TIME_EX    struEndTime;
  DWORD              dwHeatMapPicLen;
  BYTE               *pBuffer;
  DWORD              dwTimeHeatMapValue;
  DWORD              dwHeatMapMaxValue;
  DWORD              dwHeatMapMinValue;
  BYTE               byRes[116];
}NET_DVR_HEATMAP_INFO, *LPNET_DVR_HEATMAP_INFO;

Members

dwSize
结构体大小
struStartTime
开始时间
struEndTime
结束时间
dwHeatMapPicLen
空间热度图片长度(当含有图片的时候，该字段为非0；没有图片的时候，该字段为0)
pBuffer
热度图片数据信息
dwTimeHeatMapValue
时间热度值，取值范围：0~255
dwHeatMapMaxValue
检测区域最高热度点人员活动时间(空间热度图时有效)，单位：秒(s)
dwHeatMapMinValue
检测区域最低热度点人员活动时间(空间热度图时有效)，单位：秒(s)
byRes
保留

Remarks

查找的时候会有空间热度图（即图片信息），第一次调用接口先获取结构体（NET_DVR_HEATMAP_INFO）信息，再判断字段dwHeatMapPicLen是否大于0(即是否存在图片信息)，若存在图片数据，根据dwHeatMapPicLen的值申请内存(pBuffer)，然后再次调用NET_DVR_GetNextRemoteConfig接口获取图片数据（接口内的末尾参数lpOutBuff为申请的图片内存的长度）。

See Also

NET_DVR_GetNextRemoteConfig

Example

iRet = NET_DVR_GetNextRemoteConfig(pThis->m_lHandle, &pThis->m_pStruHeatMapInfo[pThis->m_iStruCount], sizeof(NET_DVR_HEATMAP_INFO));
if (iRet == NET_SDK_GET_NEXT_STATUS_SUCCESS)
{
     int iBuffLen = pThis->m_pStruHeatMapInfo[pThis->m_iStruCount].dwHeatMapPicLen;
     sBuffAll = new char[iBuffLen + sizeof(NET_DVR_HEATMAP_INFO)];
     memset(sBuffAll, 0, sizeof(*sBuffAll));
     memcpy(sBuffAll, &pThis->m_pStruHeatMapInfo[pThis->m_iStruCount], sizeof(NET_DVR_HEATMAP_INFO));
     if (pThis->m_pStruHeatMapInfo[pThis->m_iStruCount].dwHeatMapPicLen > 0)
     {
          sBuff = new char[pThis->m_pStruHeatMapInfo[pThis->m_iStruCount].dwHeatMapPicLen];
          memset(sBuff, 0, sizeof(*sBuff));
          iRet = NET_DVR_GetNextRemoteConfig(pThis->m_lHandle, sBuff, iBuffLen);
          if (NULL != sBuff)
          {
                memcpy(sBuffAll + sizeof(NET_DVR_HEATMAP_INFO), sBuff, iBuffLen);
          }
      }
}
//......


NET_DVR_HEATMAP_PARAM

热度图参数结构体。

struct{
  BYTE    byTargetTrackEnable;
  BYTE    bySensitivity;
  BYTE    byBackgroundUpdateRate;
  BYTE    bySceneChangeLevel;
  BYTE    byMinTargetSize;
  BYTE    byRes[15];
}NET_DVR_HEATMAP_PARAM,*LPNET_DVR_HEATMAP_PARAM;

Members

byTargetTrackEnable
目标跟踪：0- 关闭（默认），1- 开启
bySensitivity
灵敏度参数，取值范围：1~100，默认：50
byBackgroundUpdateRate
背景更新速度，取值范围：1~100，默认：50
bySceneChangeLevel
场景变化等级，取值范围：1~100，默认：50
byMinTargetSize
最小目标尺寸，取值范围：1~100，默认：50
byRes
保留

See Also

NET_DVR_HEATMAP_CFG


NET_DVR_HEATMAP_QUERY_COND

热度图数据查询条件结构体。

struct{
  DWORD              dwSize;
  DWORD              dwChannel;
  NET_DVR_TIME_EX    struStartTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byReportType;
  BYTE               byDetSceneID;
  BYTE               byRes[126];
}NET_DVR_HEATMAP_QUERY_COND, *LPNET_DVR_HEATMAP_QUERY_COND;

Members

dwSize
结构体大小
dwChannel
通道号
struStartTime
查询开始时间
struEndTime
查询结束时间
byReportType
查询类型：0- 无效值，1- 日报表，2- 周报表，3- 月报表，4- 年报表
byDetSceneID
检测场景号，球机当前支持1个场景，IPC为0（不支持）
byRes
保留

See Also

NET_DVR_StartRemoteConfig


NET_DVR_HEATMAP_RESULT

热度图上传结果结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  NET_DVR_TIME_EX     struStartTime;
  NET_DVR_TIME_EX     struEndTime;
  DWORD               dwMaxHeatMapValue;
  DWORD               dwMinHeatMapValue;
  DWORD               dwTimeHeatMapValue;
  WORD                wArrayLine;
  WORD                wArrayColumn;
  BYTE                *pBuffer;
  BYTE                byDetSceneID;
  BYTE                byBrokenNetHttp;
  WORD                wDevInfoIvmsChannelEx;
   BYTE                byTimeDiffFlag;
    signed char             cStartTimeDifferenceH;
    signed char             cStartTimeDifferenceM;
    signed char             cStopTimeDifferenceH;
    signed char             cStopTimeDifferenceM;
  BYTE                byRes[119];
}NET_DVR_HEATMAP_RESULT,*LPNET_DVR_HEATMAP_RESULT;

Members

dwSize
结构体大小
struDevInfo
设备信息
struStartTime
开始时间
struEndTime
结束时间
dwMaxHeatMapValue
最大热度值
dwMinHeatMapValue
最小热度值
dwTimeHeatMapValue
(时间热度值)平均热度值
wArrayLine
图片像素点行值
wArrayColumn
图片像素点列值
pBuffer
热度图片像素点数据信息（当行列值为0的时候，像素点值内存信息不存在）
byDetSceneID
检测场景号，球机当前支持1个场景，IPC为0（不支持）
byBrokenNetHttp
断网续传标志位：0- 不是重传数据，1- 重传数据
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

Remarks

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_HEATMAP_RESULT_PDC

热度图按人数统计数据上传事件结构体。

struct{
  DWORD                                dwSize;
  NET_DVR_TIME_EX                      struStartTime;
  NET_DVR_TIME_EX                      struEndTime;
  NET_VCA_DEV_INFO                     struDevInfo;
  WORD                                 wDevInfoIvmsChannelEx;
  BYTE                                 byBrokenNetHttp;
  BYTE                                 byArrayUnitType;
  NET_DVR_SINGLE_HEATMAP_RESULT_PDC    struSingleHeatMap[2];
  WORD                                 wCurNumber;
  WORD                                 wLeaveNumber;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  char                                 *pEventNotificationAlertBuff;
  #else
  char                                 *pEventNotificationAlertBuff;
  BYTE                                 byRes2[4];
  #endif
  DWORD                                dwEventNotificationAlertLen;
  BYTE                                 byRes1[48];
}NET_DVR_HEATMAP_RESULT_PDC,*LPNET_DVR_HEATMAP_RESULT_PDC;

Members

dwSize
结构体大小
struStartTime
开始时间
struEndTime
结束时间
struDevInfo
报警设备信息
wDevInfoIvmsChannelEx
设备通道号，与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值，兼容byIvmsChannel，建议直接使用wDevInfoIvmsChannelEx
byBrokenNetHttp
断网续传标志位：0-不是重传数据，1-重传数据
byArrayUnitType
矩阵单元数据类型（矩阵信息中每个像素点数据的数据类型）：1-byte，2-short，4-int
struSingleHeatMap
struSingleHeatMap[0]表示按人数统计中的画面中停留人数的热度值，struSingleHeatMap[1]表示按人数统计中的画面中离开人数的热度值
wCurNumber
当前人数
wLeaveNumber
离开人数
pEventNotificationAlertBuff
报警事件JSON报文("eventType"为"heatmap")
byRes2
保留字节。Win64及Linux64下指针为8字节，无此参数
dwEventNotificationAlertLen
报警事件JSON报文数据长度
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V50 NET_DVR_StartListen_V30


NET_DVR_HIDEALARM

遮挡报警参数结构体。

struct{
  DWORD                      dwEnableHideAlarm;
  WORD                       wHideAlarmAreaTopLeftX;
  WORD                       wHideAlarmAreaTopLeftY;
  WORD                       wHideAlarmAreaWidth;
  WORD                       wHideAlarmAreaHeight;
  NET_DVR_HANDLEEXCEPTION    strHideAlarmHandleType;
  NET_DVR_SCHEDTIME          struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];
}NET_DVR_HIDEALARM, *LPNET_DVR_HIDEALARM;

Members

dwEnableHideAlarm
是否启动遮挡报警：0-否，1-低灵敏度，2-中灵敏度，3-高灵敏度
wHideAlarmAreaTopLeftX
遮挡区域的x坐标
wHideAlarmAreaTopLeftY
遮挡区域的y坐标
wHideAlarmAreaWidth
遮挡区域的宽
wHideAlarmAreaHeight
遮挡区域的高
strHideAlarmHandleType
处理方法
struAlarmTime
布防时间

Remarks

SDK设定整个图像的区域大小为704*576，结构中遮挡区域的坐标以及宽和高需要转换成704*576大小区域下的坐标和宽高值。

See Also

NET_DVR_PICCFG NET_DVR_PICCFG_EX


NET_DVR_HIDEALARM_V30

遮挡报警参数结构体。

struct{
  DWORD                          dwEnableHideAlarm;
  WORD                           wHideAlarmAreaTopLeftX;
  WORD                           wHideAlarmAreaTopLeftY;
  WORD                           wHideAlarmAreaWidth;
  WORD                           wHideAlarmAreaHeight;
  NET_DVR_HANDLEEXCEPTION_V30    strHideAlarmHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
}NET_DVR_HIDEALARM_V30, *LPNET_DVR_HIDEALARM_V30;

Members

dwEnableHideAlarm
是否启动遮挡报警：0-否，1-低灵敏度，2-中灵敏度，3-高灵敏度
wHideAlarmAreaTopLeftX
遮挡区域的x坐标
wHideAlarmAreaTopLeftY
遮挡区域的y坐标
wHideAlarmAreaWidth
遮挡区域的宽
wHideAlarmAreaHeight
遮挡区域的高
strHideAlarmHandleType
处理方法
struAlarmTime
布防时间

Remarks

SDK设定整个图像的区域大小为704*576，结构中遮挡区域的坐标以及宽和高需要转换成704*576大小区域下的坐标和宽高值。

See Also

NET_DVR_PICCFG_V30

Reference Structure

扩展结构可见

NET_DVR_HIDEALARM_V40


NET_DVR_HIDEALARM_V40

遮挡报警参数结构体。

struct{
  DWORD                dwEnableHideAlarm;
  WORD                 wHideAlarmAreaTopLeftX;
  WORD                 wHideAlarmAreaTopLeftY;
  WORD                 wHideAlarmAreaWidth;
  WORD                 wHideAlarmAreaHeight;
  DWORD                dwHandleType;
  DWORD                dwMaxRelAlarmOutChanNum;
  DWORD                dwRelAlarmOut[MAX_ALARMOUT_V40];
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                 byRes[64];
}NET_DVR_HIDEALARM_V40, *LPNET_DVR_HIDEALARM_V40;

Members

dwEnableHideAlarm
是否启动遮挡报警：0- 否，1- 低灵敏度，2- 中灵敏度，3- 高灵敏度
wHideAlarmAreaTopLeftX
遮挡区域的x坐标
wHideAlarmAreaTopLeftY
遮挡区域的y坐标
wHideAlarmAreaWidth
遮挡区域的宽
wHideAlarmAreaHeight
遮挡区域的高
dwHandleType
报警处理方式，各种异常处理方式的"或"结果：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200：抓图并上传ftp
0x1000：抓图上传到云存储
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心。
dwMaxRelAlarmOutChanNum
设备最大支持的触发报警输出通道数（只读）
dwRelAlarmOut
触发报警输出号，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效。报警输出口号从0开始。
例如：dwRelAlarmOut[8]开始值为0xffffffff，即联动触发第(dwRelAlarmOut[0]+1),...,(dwRelAlarmOut[7]+1)个报警输出口。
struAlarmTime
布防时间，一周7天，每天可以设置8个时间段
byRes
保留，置为0

Remarks

SDK设定整个图像的区域大小为704*576，结构中遮挡区域的坐标以及宽和高需要转换成704*576大小区域下的坐标和宽高值。

See Also

NET_DVR_PICCFG_V40

Reference Structure

该结构扩展源于

NET_DVR_HIDEALARM_V30


NET_DVR_HISTORICAL_QUERY_PARAM

历史数据查询参数结构体。

struct{
  NET_DVR_TIME_V30        struStartTime;
  NET_DVR_TIME_V30        struEndTime;
  NET_DVR_SENSOR_VALUE    struVoltageValue;
  NET_DVR_SENSOR_VALUE    struCurrentValue;
  NET_DVR_SENSOR_VALUE    struTemperatureValue;
  NET_DVR_SENSOR_VALUE    struHumidityValue;
  BYTE                    bySwitchStatus;
  BYTE                    bySensorStatus;
  BYTE                    byRes[66];
}NET_DVR_HISTORICAL_QUERY_PARAM, *LPNET_DVR_HISTORICAL_QUERY_PARAM;

Members

struStartTime
开始时间
struEndTime
结束时间
struVoltageValue
电压参数，单位：伏特
struCurrentValue
电流参数，单位：毫安
struTemperatureValue
温度参数，单位：摄氏度
struHumidityValue
湿度参数
bySwitchStatus
通电状态：0- 未通电，1- 通电，0xff查询所有
bySensorStatus
传感器状态：0- 正常，1- 异常，2- 报警，0xff查询所有
byRes
保留

See Also

NET_DVR_SENSOR_COND


NET_DVR_HISTORICDATACFG

历史数据信息结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwTotalNum;
  BYTE                  byRes[16];
}NET_DVR_HISTORICDATACFG, *LPNET_DVR_HISTORICDATACFG;

Members

dwSize
结构体大小
dwTotalNum
历史数据个数
byRes
保留

See Also

NET_DVR_GetHistoricDataInfo


NET_DVR_HISTORY_DATA

历史数据信息结构体。

struct{
  DWORD           dwSize;
  NET_DVR_TIME    struTime;
  BYTE            byChanType;
  BYTE            byRes1[3];
  DWORD           dwChanNo;
  DWORD           dwSubChanNo;
  DWORD           dwVariableNo;
  DWORD           dwPointNo;
  int             iData;
  BYTE            byDataType;
  BYTE            byRes2[31];
}NET_DVR_HISTORY_DATA, *LPNET_DVR_HISTORY_DATA;

Members

dwSize
结构体大小
struTime
时间点
byChanType
通道类型：1-模拟量，2-开关量，3-485通道，0xff表示无效
byRes1
保留，置为0
dwChanNo
通道号，从1开始，0xffffffff表示无效
dwSubChanNo
槽位号，从1开始，0xffffffff表示无效
dwVariableNo
变量号，从1开始，0xffffffff表示无效
dwPointNo
点号，0xffffffff表示无效
iData
历史数据，比如点号为电压，则电压实际值为iData/1000
byDataType
数据类型：0- 正常数据，1- 越上限数据，2- 越下限数据
byRes2
保留，置为0

Remarks

设备支持的每一个模拟量类型或者开关量类型都算是一个点。例如：一个设备有电流、电压等参数，那么电流是一个点，电压也是一个点。设备点号信息通过接口NET_DVR_GetDeviceConfig（命令：NET_DVR_GET_ALARM_POINT_CFG）获取。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_HKDDNS_STREAM

hiDDNS取流配置结构体。

struct{
  BYTE    byEnable;
  BYTE    byRes[3];
  BYTE    byDDNSDomain[64];
  WORD    wPort;
  WORD    wAliasLen;
  BYTE    byAlias[NAME_LEN];
  WORD    wDVRSerialLen;
  BYTE    byRes1[2];
  BYTE    byDVRSerialNumber[SERIALNO_LEN];
  BYTE    byUserName[NAME_LEN];
  BYTE    byPassWord[PASSWD_LEN];
  BYTE    byChannel;
  BYTE    byRes2[11];
}NET_DVR_HKDDNS_STREAM,*LPNET_DVR_HKDDNS_STREAM;

Members

byEnable
是否启用
byRes
保留
byDDNSDomain
hiDDNS服务器地址
wPort
hiDDNS端口，默认：80
wAliasLen
别名长度
byAlias
别名
wDVRSerialLen
序列号长度
byRes1
保留
byDVRSerialNumber
设备序列号
byUserName
设备登录用户名
byPassWord
设备登录密码
byChannel
设备通道号
byRes2
保留

See Also

NET_DVR_GET_STREAM_UNION


NET_DVR_HOLIDATE_MODEA

假日日期模式A。

struct{
  BYTE    byStartMonth;
  BYTE    byStartDay;
  BYTE    byEndMonth;
  BYTE    byEndDay;
  BYTE    byRes[4];
}NET_DVR_HOLIDATE_MODEA, *LPNET_DVR_HOLIDATE_MODEA;

Members

byStartMonth
开始月，从1开始
byStartDay
开始日，从1开始
byEndMonth
结束月份
byEndDay
结束日
byRes
保留

See Also

NET_DVR_HOLIDATE_UNION


NET_DVR_HOLIDATE_MODEB

假日日期模式B。

struct{
  BYTE    byStartMonth;
  BYTE    byStartWeekNum;
  BYTE    byStartWeekday;
  BYTE    byEndMonth;
  BYTE    byEndWeekNum;
  BYTE    byEndWeekday;
  BYTE    byRes[2];
}NET_DVR_HOLIDATE_MODEB, *LPNET_DVR_HOLIDATE_MODEB;

Members

byStartMonth
开始月份，从1开始
byStartWeekNum
第几个星期,从1开始
byStartWeekday
星期几
byEndMonth
结束月份，从1开始
byEndWeekNum
第几个星期,从1开始
byEndWeekday
星期几
byRes
保留

See Also

NET_DVR_HOLIDATE_UNION


NET_DVR_HOLIDATE_MODEC

假日日期模式C。

struct{
  WORD        wStartYear;
  BYTE        byStartMon;
  BYTE        byStartDay;
  WORD        wEndYear;
  BYTE        byEndMon;
  BYTE        byEndDay;
}NET_DVR_HOLIDATE_MODEC, *LPNET_DVR_HOLIDATE_MODEC;

Members

wStartYear
开始年份
byStartMon
开始月份，从1开始
byStartDay
开始日
wEndYear
结束年份
byEndMon
结束月份
byEndDay
结束日

See Also

NET_DVR_HOLIDATE_UNION


NET_DVR_HOLIDATE_UNION

假日日期结构联合体。

union{
  DWORD                    dwSize[3];
  NET_DVR_HOLIDATE_MODEA   struModeA;
  NET_DVR_HOLIDATE_MODEB   struModeB;
  NET_DVR_HOLIDATE_MODEC   struModeC;
}NET_DVR_HOLIDATE_UNION, *LPNET_DVR_HOLIDATE_UNION;

Members

dwSize
联合体大小
struModeA
日期模式A
struModeB
日期模式B
struModeC
日期模式C

See Also

NET_DVR_HOLIDAY_PARAM


NET_DVR_HOLIDAY_GROUP_CFG

假日组配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  BYTE     byGroupName[HOLIDAY_GROUP_NAME_LEN];
  DWORD    dwHolidayPlanNo[MAX_HOLIDAY_PLAN_NUM];
  BYTE     byRes2[32];
}NET_DVR_HOLIDAY_GROUP_CFG,*LPNET_DVR_HOLIDAY_GROUP_CFG;

Members

dwSize
结构体大小
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
byGroupName
假日组名称
dwHolidayPlanNo
假日计划编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HOLIDAY_GROUP_COND

卡权限假日组配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwHolidayGroupNumber;
  WORD    wLocalControllerID;
  BYTE    byRes[106];
}NET_DVR_HOLIDAY_GROUP_COND,*LPNET_DVR_HOLIDAY_GROUP_COND;

Members

dwSize
结构体大小
dwHolidayGroupNumber
假日组编号
wLocalControllerID
就地控制器序号[1,64]，0表示门禁主机
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_HOLIDAY_HANDLE

假日报警处理方式结构体。

struct{
  DWORD                dwSize;
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_TIMESEGMENT_V30];
  BYTE                 byRes2[240];
}NET_DVR_HOLIDAY_HANDLE,*LPNET_DVR_HOLIDAY_HANDLE;

Members

dwSize
结构体大小
struAlarmTime
布防时间段
byRes2
保留

See Also

通道参数配置：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

SMART智能参数配置：NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_HOLIDAY_HANDLE_COND

简易智能(SMD)假日布防计划配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwSMDHandleType;
  BYTE     byRes2[32];
}NET_DVR_HOLIDAY_HANDLE_COND,*LPNET_DVR_HOLIDAY_HANDLE_COND;

Members

dwSize
结构体大小
dwSMDHandleType
简易智能假日布防类型：0- 音频异常侦测，1- 虚焦侦测，2- 场景变更侦测
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_HOLIDAY_PARAM

假日参数结构体。

struct{
  BYTE                     byEnable;
  BYTE                     byDateMode;
  BYTE                     byRes1[2];
  NET_DVR_HOLIDATE_UNION   uHolidate;
  BYTE                     byName[NAME_LEN];
  BYTE                     byRes2[20];
}NET_DVR_HOLIDAY_PARAM, *LPNET_DVR_HOLIDAY_PARAM;

Members

byEnable
是否启用
byDateMode
日期模式:0-模式A,1-模式B,2-模式C
byRes1
保留
uHolidate
假日日期
byName
假日名称
byRes2
保留

See Also

NET_DVR_HOLIDAY_PARAM_CFG


NET_DVR_HOLIDAY_PARAM_CFG

假日参数配置结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_HOLIDAY_PARAM    struHolidayParam[MAX_HOLIDAY_NUM];
  DWORD                    byRes[40];
}NET_DVR_HOLIDAY_PARAM_CFG, *LPNET_DVR_HOLIDAY_PARAM_CFG;

Members

dwSize
结构体大小
struHolidayParam
假日参数
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HOLIDAY_PLAN_CFG

假日计划配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  NET_DVR_DATE                   struBeginDate;
  NET_DVR_DATE                   struEndDate;
  NET_DVR_SINGLE_PLAN_SEGMENT    struPlanCfg[MAX_TIMESEGMENT_V30];
  BYTE                           byRes2[16];
}NET_DVR_HOLIDAY_PLAN_CFG,*LPNET_DVR_HOLIDAY_PLAN_CFG;

Members

dwSize
结构体大小
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
struBeginDate
假日开始日期
struEndDate
假日结束日期
struPlanCfg
假日计划参数，每天最多8个时间段
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HOLIDAY_PLAN_COND

卡权限假日计划配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwHolidayPlanNumber;
  WORD    wLocalControllerID;
  BYTE    byRes[106];
}NET_DVR_HOLIDAY_PLAN_COND,*LPNET_DVR_HOLIDAY_PLAN_COND;

Members

dwSize
结构体大小
dwHolidayPlanNumber
假日计划编号
wLocalControllerID
就地控制器序号[1,64]，0表示门禁主机
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_HOLIDAY_RECORD

假日录像参数结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_RECORDDAY        struRecDay;
  NET_DVR_RECORDSCHED      struRecordSched[MAX_TIMESEGMENT_V30];
  BYTE                     byRes[20];
}NET_DVR_HOLIDAY_RECORD, *LPNET_DVR_HOLIDAY_RECORD;

Members

dwSize
结构体大小
struRecDay
录像参数
struRecordSched
录像时间段
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_HTTPS_CFG

HTTPS信息结构体。

struct{
  DWORD    dwSize;
  WORD     wHttpsPort;
  BYTE     byEnable;
  BYTE     byRes[125];
}NET_DVR_HTTPS_CFG,*LPNET_DVR_HTTPS_CFG;

Members

dwSize
结构体大小
wHttpsPort
HTTPS端口
byEnable
使能HTTPS：0-禁用，1-启用
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PPT_DETECT_CFG

设备网络SDK开发使用手册

NET_DVR_HUMAN_CALIB_CFG

人体坐标标定配置结构体。

struct{
  DWORD          dwSize;
  NET_VCA_POINT  struLeftPos;
  NET_PTZ_INFO   struRightPos;
  BYTE           byRes[300];
 }NET_DVR_HUMAN_CALIB_CFG,*LPNET_DVR_HUMAN_CALIB_CFG;

Members

dwSize
结构体大小
struLeftPos
人体左坐标点
struRightPos
人体右坐标点
byRes
保留，置为0

Remarks

PPT检测参数取值范围可以通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，录播主机能力RecordingHostAbility)获取，对应节点<PPTDetection>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_I_FRAME

强制I帧参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sStreamID[STREAM_ID_LEN];
  DWORD    dwChan;
  BYTE     byStreamType;
  BYTE     byRes[63];
}NET_DVR_I_FRAME,*LPNET_DVR_I_FRAME;

Members

dwSize
结构体大小
sStreamID
流ID
dwChan
设备通道号
byStreamType
码流类型：0-主码流，1-子码流，2-码流3，3-虚拟码流，以此类推
byRes
保留，置为0

Remarks

该强制I帧功能兼容接口NET_DVR_MakeKeyFrame、NET_DVR_MakeKeyFrameSub。

See Also

NET_DVR_RemoteControl


NET_DVR_ID_CARD_BLOCKLIST_CFG

身份登记信息列表结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_ID_CARD_INFO    struIDCardCfg;
  DWORD                   dwFingerPrintDataLen;
  char                    *pFingerPrintData;
  DWORD                   dwPicDataLen;
  char                    *pPicData;
  BYTE                    byRes[128];
}NET_DVR_ID_CARD_BLOCKLIST_CFG, *LPNET_DVR_ID_CARD_BLOCKLIST_CFG;

Members

dwSize
结构体大小
struIDCardCfg
身份证信息
dwFingerPrintDataLen
身份证指纹数据大小
pFingerPrintData
指纹数据缓冲区指针，dwFingerPrintDataLen不为0时存放身份证对应的指纹数据
dwPicDataLen
身份证图片数据大小
pPicData
图片数据缓冲区指针，dwPicDataLen不为0时存放身份证图片数据
byRes
保留，置为0

Remarks

  • 设备是否支持身份登记信息查询能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportGetRegisterInfo>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ID_CARD_BLOCKLIST_COND

身份登记信息查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byRes[256];
}NET_DVR_ID_CARD_BLOCKLIST_COND, *LPNET_DVR_ID_CARD_BLOCKLIST_COND;

Members

dwSize
结构体大小
byRes
保留，置为0

Remarks

  • 设备是否支持身份登记信息查询能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<isSupportGetRegisterInfo>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ID_CARD_INFO

身份证信息结构体。

struct{
  DWORD           dwSize;
  BYTE            byName[MAX_ID_NAME_LEN];
  NET_DVR_DATE    struBirth;
  BYTE            byAddr[MAX_ID_ADDR_LEN];
  BYTE            byIDNum[MAX_ID_NUM_LEN];
  BYTE            byIssuingAuthority[MAX_ID_ISSUING_AUTHORITY_LEN];
  NET_DVR_DATE    struStartDate;
  NET_DVR_DATE    struEndDate;
  BYTE            byTermOfValidity;
  BYTE            bySex;
  BYTE            byNation;
  BYTE            byRes[101];
}NET_DVR_ID_CARD_INFO, *LPNET_DVR_ID_CARD_INFO;

Members

dwSize
结构体大小
byName
姓名
struBirth
出生日期
byAddr
住址
byIDNum
身份证号码
byIssuingAuthority
签发机关
struStartDate
有效开始日期
struEndDate
有效截止日期
byTermOfValidity
是否长期有效：0- 否，1- 是（有效截止日期无效）
bySex
性别：1- 男，2- 女
byNation
保留
byRes
保留，置为0

See Also

NET_DVR_ID_CARD_INFO_ALARM NET_DVR_ID_CARD_BLOCKLIST_CFG


NET_DVR_ID_CARD_INFO_ALARM

身份证刷卡信息上传结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_ID_CARD_INFO    struIDCardCfg;
  DWORD                   dwMajor;
  DWORD                   dwMinor;
  NET_DVR_TIME_V30        struSwipeTime;
  BYTE                    byNetUser[MAX_NAMELEN];
  NET_DVR_IPADDR          struRemoteHostAddr;
  DWORD                   dwCardReaderNo;
  DWORD                   dwDoorNo;
  DWORD                   dwPicDataLen;
  char                    *pPicData;
  BYTE                    byCardType;
  BYTE                    byDeviceNo;
  BYTE                    byMask;
  BYTE                    byRes2;
  DWORD                   dwFingerPrintDataLen;
  char                    *pFingerPrintData;
  DWORD                   dwCapturePicDataLen;
  char                    *pCapturePicData;
  DWORD                   dwCertificatePicDataLen;
  char                    *pCertificatePicData;
  BYTE                    byCardReaderKind;
  BYTE                    byRes3[2];
  BYTE                    byIDCardInfoExtend;
  char                    *pIDCardInfoExtend;
  DWORD                    dwSerialNo;
  BYTE                    byRes[168];
}NET_DVR_ID_CARD_INFO_ALARM, *LPNET_DVR_ID_CARD_INFO_ALARM;

Members

dwSize
结构体大小
struIDCardCfg
身份证信息
dwMajor
报警主类型，具体定义见“Remarks”说明
dwMinor
报警次类型，次类型含义根据主类型不同而不同，具体定义见“Remarks”说明
struSwipeTime
刷卡时间
byNetUser
网络操作的用户名
struRemoteHostAddr
远程主机地址
dwCardReaderNo
读卡器编号，为0表示无效
dwDoorNo
门编号，为0表示无效
dwPicDataLen
身份证图片数据大小
pPicData
身份证图片数据缓冲区，dwPicDataLen不为0时缓冲区里面存放身份证头像的图片数据
byCardType
卡类型：1- 普通卡，2- 残障人士卡，3- 非授权名单卡，4- 巡更卡，5- 胁迫卡，6- 超级卡，7- 来宾卡，8- 解除卡，为0表示无效
byDeviceNo
设备编号，为0表示无效，有效取值范围：1~255
byMask
是否带口罩：0-保留，1-未知，2-不戴口罩，3-戴口罩
byRes2
保留，置为0
dwFingerPrintDataLen
指纹数据大小
pFingerPrintData
指纹数据缓冲区，dwFingerPrintDataLen不为0时缓冲区里面存放指纹数据
dwCapturePicDataLen
抓拍图片数据大小
pCapturePicData
抓拍图片数据缓冲区，dwCapturePicDataLen不为0时缓冲区里面存放设备上摄像机抓拍上传的图片数据
dwCertificatePicDataLen
证件抓拍图片数据大小，不为0是表示后面带数据
pCertificatePicData
证件抓拍图片数据缓冲区，dwCertificatePicDataLen不为0时缓冲区里面存放设备上摄像机抓拍上传的证件抓拍图片数据
byCardReaderKind
读卡器属于哪一类：0-无效，1-IC读卡器，2-身份证读卡器，3-二维码读卡器，4-指纹头
byRes3
保留，置为0
byIDCardInfoExtend
pIDCardInfoExtend是否有效：0-无效，1-有效
pIDCardInfoExtend
byIDCardInfoExtend为1时，表示指向一个NET_DVR_ID_CARD_INFO_EXTEND结构体
dwSerialNo
事件流水号，为0无效
byRes
保留，置为0

Remarks

通过NET_DVR_SetDVRMessageCallBack_V31设置报警回调函数，回调函数有返回值，需要返回TRUE告知设备已经接收数据，设备才会上传下一条信息。

报警主类型定义如下所示：

宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_EVENT | 0x5 | 事件

根据不同的主类型的次类型定义如下所示：

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARMIN_SHORT_CIRCUIT | 0x400 | 防区短路报警
MINOR_ALARMIN_BROKEN_CIRCUIT | 0x401 | 防区断路报警
MINOR_ALARMIN_EXCEPTION | 0x402 | 防区异常报警
MINOR_ALARMIN_RESUME | 0x403 | 防区报警恢复
MINOR_HOST_DESMANTLE_ALARM | 0x404 | 设备防拆报警
MINOR_HOST_DESMANTLE_RESUME | 0x405 | 设备防拆恢复
MINOR_CARD_READER_DESMANTLE_ALARM | 0x406 | 读卡器防拆报警
MINOR_CARD_READER_DESMANTLE_RESUME | 0x407 | 读卡器防拆恢复
MINOR_CASE_SENSOR_ALARM | 0x408 | 事件输入报警
MINOR_CASE_SENSOR_RESUME | 0x409 | 事件输入恢复
MINOR_STRESS_ALARM | 0x40a | 胁迫报警
MINOR_OFFLINE_ECENT_NEARLY_FULL | 0x40b | 离线事件满90%报警
MINOR_CARD_MAX_AUTHENTICATE_FAIL | 0x40c | 卡号认证失败超次报警
MINOR_SD_CARD_FULL | 0x40d | SD卡存储满报警
MINOR_LINKAGE_CAPTURE_PIC | 0x40e | 联动抓拍事件报警
MINOR_SECURITY_MODULE_DESMANTLE_ALARM | 0x40f | 门控安全模块防拆报警
MINOR_SECURITY_MODULE_DESMANTLE_RESUME | 0x410 | 门控安全模块防拆恢复
MINOR_POS_START_ALARM | 0x411 | POS开启
MINOR_POS_END_ALARM | 0x412 | POS结束
MINOR_FACE_IMAGE_QUALITY_LOW | 0x413 | 人脸图像画质低
MINOR_FINGE_RPRINT_QUALITY_LOW | 0x414 | 指纹图像画质低
MINOR_FIRE_IMPORT_SHORT_CIRCUIT | 0x415 | 消防输入短路报警
MINOR_FIRE_IMPORT_BROKEN_CIRCUIT | 0x416 | 消防输入断路报警
MINOR_FIRE_IMPORT_RESUME | 0x417 | 消防输入恢复
MINOR_FIRE_BUTTON_TRIGGER | 0x418 | 消防按钮触发
MINOR_FIRE_BUTTON_RESUME | 0x419 | 消防按钮恢复
MINOR_MAINTENANCE_BUTTON_TRIGGER | 0x41a | 维护按钮触发
MINOR_MAINTENANCE_BUTTON_RESUME | 0x41b | 维护按钮恢复
MINOR_EMERGENCY_BUTTON_TRIGGER | 0x41c | 紧急按钮触发
MINOR_EMERGENCY_BUTTON_RESUME | 0x41d | 紧急按钮恢复
MINOR_DISTRACT_CONTROLLER_ALARM | 0x41e | 分控器防拆报警
MINOR_DISTRACT_CONTROLLER_RESUME | 0x41f | 分控器防拆报警恢复
MINOR_ALARM_CUSTOM1 | 0x900 | 门禁自定义报警1
MINOR_ALARM_CUSTOM2 | 0x901 | 门禁自定义报警2
MINOR_ALARM_CUSTOM3 | 0x902 | 门禁自定义报警3
MINOR_ALARM_CUSTOM4 | 0x903 | 门禁自定义报警4
MINOR_ALARM_CUSTOM5 | 0x904 | 门禁自定义报警5
MINOR_ALARM_CUSTOM6 | 0x905 | 门禁自定义报警6
MINOR_ALARM_CUSTOM7 | 0x906 | 门禁自定义报警7
MINOR_ALARM_CUSTOM8 | 0x907 | 门禁自定义报警8
MINOR_ALARM_CUSTOM9 | 0x908 | 门禁自定义报警9
MINOR_ALARM_CUSTOM10 | 0x909 | 门禁自定义报警10
MINOR_ALARM_CUSTOM11 | 0x90a | 门禁自定义报警11
MINOR_ALARM_CUSTOM12 | 0x90b | 门禁自定义报警12
MINOR_ALARM_CUSTOM13 | 0x90c | 门禁自定义报警13
MINOR_ALARM_CUSTOM14 | 0x90d | 门禁自定义报警14
MINOR_ALARM_CUSTOM15 | 0x90e | 门禁自定义报警15
MINOR_ALARM_CUSTOM16 | 0x90f | 门禁自定义报警16
MINOR_ALARM_CUSTOM17 | 0x910 | 门禁自定义报警17
MINOR_ALARM_CUSTOM18 | 0x911 | 门禁自定义报警18
MINOR_ALARM_CUSTOM19 | 0x912 | 门禁自定义报警19
MINOR_ALARM_CUSTOM20 | 0x913 | 门禁自定义报警20
MINOR_ALARM_CUSTOM21 | 0x914 | 门禁自定义报警21
MINOR_ALARM_CUSTOM22 | 0x915 | 门禁自定义报警22
MINOR_ALARM_CUSTOM23 | 0x916 | 门禁自定义报警23
MINOR_ALARM_CUSTOM24 | 0x917 | 门禁自定义报警24
MINOR_ALARM_CUSTOM25 | 0x918 | 门禁自定义报警25
MINOR_ALARM_CUSTOM26 | 0x919 | 门禁自定义报警26
MINOR_ALARM_CUSTOM27 | 0x91a | 门禁自定义报警27
MINOR_ALARM_CUSTOM28 | 0x91b | 门禁自定义报警28
MINOR_ALARM_CUSTOM29 | 0x91c | 门禁自定义报警29
MINOR_ALARM_CUSTOM30 | 0x91d | 门禁自定义报警30
MINOR_ALARM_CUSTOM31 | 0x91e | 门禁自定义报警31
MINOR_ALARM_CUSTOM32 | 0x91f | 门禁自定义报警32
MINOR_ALARM_CUSTOM33 | 0x920 | 门禁自定义报警33
MINOR_ALARM_CUSTOM34 | 0x921 | 门禁自定义报警34
MINOR_ALARM_CUSTOM35 | 0x922 | 门禁自定义报警35
MINOR_ALARM_CUSTOM36 | 0x923 | 门禁自定义报警36
MINOR_ALARM_CUSTOM37 | 0x924 | 门禁自定义报警37
MINOR_ALARM_CUSTOM38 | 0x925 | 门禁自定义报警38
MINOR_ALARM_CUSTOM39 | 0x926 | 门禁自定义报警39
MINOR_ALARM_CUSTOM40 | 0x927 | 门禁自定义报警40
MINOR_ALARM_CUSTOM41 | 0x928 | 门禁自定义报警41
MINOR_ALARM_CUSTOM42 | 0x929 | 门禁自定义报警42
MINOR_ALARM_CUSTOM43 | 0x92a | 门禁自定义报警43
MINOR_ALARM_CUSTOM44 | 0x92b | 门禁自定义报警44
MINOR_ALARM_CUSTOM45 | 0x92c | 门禁自定义报警45
MINOR_ALARM_CUSTOM46 | 0x92d | 门禁自定义报警46
MINOR_ALARM_CUSTOM47 | 0x92e | 门禁自定义报警47
MINOR_ALARM_CUSTOM48 | 0x92f | 门禁自定义报警48
MINOR_ALARM_CUSTOM49 | 0x930 | 门禁自定义报警49
MINOR_ALARM_CUSTOM50 | 0x931 | 门禁自定义报警50
MINOR_ALARM_CUSTOM51 | 0x932 | 门禁自定义报警51
MINOR_ALARM_CUSTOM52 | 0x933 | 门禁自定义报警52
MINOR_ALARM_CUSTOM53 | 0x934 | 门禁自定义报警53
MINOR_ALARM_CUSTOM54 | 0x935 | 门禁自定义报警54
MINOR_ALARM_CUSTOM55 | 0x936 | 门禁自定义报警55
MINOR_ALARM_CUSTOM56 | 0x937 | 门禁自定义报警56
MINOR_ALARM_CUSTOM57 | 0x938 | 门禁自定义报警57
MINOR_ALARM_CUSTOM58 | 0x939 | 门禁自定义报警58
MINOR_ALARM_CUSTOM59 | 0x93a | 门禁自定义报警59
MINOR_ALARM_CUSTOM60 | 0x93b | 门禁自定义报警60
MINOR_ALARM_CUSTOM61 | 0x93c | 门禁自定义报警61
MINOR_ALARM_CUSTOM62 | 0x93d | 门禁自定义报警62
MINOR_ALARM_CUSTOM63 | 0x93e | 门禁自定义报警63
MINOR_ALARM_CUSTOM64 | 0x93f | 门禁自定义报警64

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_RS485_DEVICE_ABNORMAL | 0x3a | RS485连接状态异常
MINOR_RS485_DEVICE_REVERT | 0x3b | RS485连接状态异常恢复
MINOR_DEV_POWER_ON | 0x400 | 设备上电启动
MINOR_DEV_POWER_OFF | 0x401 | 设备掉电关闭
MINOR_WATCH_DOG_RESET | 0x402 | 看门狗复位
MINOR_LOW_BATTERY | 0x403 | 蓄电池电压低
MINOR_BATTERY_RESUME | 0x404 | 蓄电池电压恢复正常
MINOR_AC_OFF | 0x405 | 交流电断电
MINOR_AC_RESUME | 0x406 | 交流电恢复
MINOR_NET_RESUME | 0x407 | 网络恢复
MINOR_FLASH_ABNORMAL | 0x408 | FLASH读写异常
MINOR_CARD_READER_OFFLINE | 0x409 | 读卡器掉线
MINOR_CARD_READER_RESUME | 0x40a | 读卡器掉线恢复
MINOR_INDICATOR_LIGHT_OFF | 0x40b | 指示灯关闭
MINOR_INDICATOR_LIGHT_RESUME | 0x40c | 指示灯恢复
MINOR_CHANNEL_CONTROLLER_OFF | 0x40d | 通道控制器掉线
MINOR_CHANNEL_CONTROLLER_RESUME | 0x40e | 通道控制器恢复
MINOR_SECURITY_MODULE_OFF | 0x40f | 门控安全模块掉线
MINOR_SECURITY_MODULE_RESUME | 0x410 | 门控安全模块掉线恢复
MINOR_LOCAL_CONTROL_NET_BROKEN | 0x413 | 就地控制器网络断开
MINOR_LOCAL_CONTROL_NET_RSUME | 0x414 | 就地控制器网络恢复
MINOR_MASTER_RS485_LOOPNODE_BROKEN | 0x415 | 主控RS485环路节点断开
MINOR_MASTER_RS485_LOOPNODE_RESUME | 0x416 | 主控RS485环路节点恢复
MINOR_LOCAL_CONTROL_OFFLINE | 0x417 | 就地控制器掉线
MINOR_LOCAL_CONTROL_RESUME | 0x418 | 就地控制器掉线恢复
MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN | 0x419 | 就地下行RS485环路断开
MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME | 0x41a | 就地下行RS485环路恢复
MINOR_DISTRACT_CONTROLLER_ONLINE | 0x41b | 分控器在线
MINOR_DISTRACT_CONTROLLER_OFFLINE | 0x41c | 分控器离线
MINOR_ID_CARD_READER_NOT_CONNECT | 0x41d | 身份证阅读器未连接（智能专用）
MINOR_ID_CARD_READER_RESUME | 0x41e | 身份证阅读器连接恢复（智能专用）
MINOR_FINGER_PRINT_MODULE_NOT_CONNECT | 0x41f | 指纹模组未连接（智能专用）
MINOR_FINGER_PRINT_MODULE_RESUME | 0x420 | 指纹模组连接恢复（智能专用）
MINOR_CAMERA_NOT_CONNECT | 0x421 | 摄像头未连接
MINOR_CAMERA_RESUME | 0x422 | 摄像头连接恢复
MINOR_COM_NOT_CONNECT | 0x423 | COM口未连接
MINOR_COM_RESUME | 0x424 | COM口连接恢复
MINOR_DEVICE_NOT_AUTHORIZE | 0x425 | 设备未授权
MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE | 0x426 | 人证设备在线
MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE | 0x427 | 人证设备离线
MINOR_LOCAL_LOGIN_LOCK | 0x428 | 本地登录锁定
MINOR_LOCAL_LOGIN_UNLOCK | 0x428 | 本地登录解锁
MINOR_BATTERY_ELECTRIC_LOW | 0x411 | 电池电压低（仅人脸设备使用）
MINOR_BATTERY_ELECTRIC_RESUME | 0x412 | 电池电压恢复正常（仅人脸设备使用）
MINOR_LOCAL_LOGIN_LOCK | 0x428 | 本地登录锁定
MINOR_LOCAL_LOGIN_UNLOCK | 0x429 | 本地登录解锁
MINOR_SUBMARINEBACK_COMM_BREAK | 0x42a | 与反潜回服务器通信断开
MINOR_SUBMARINEBACK_COMM_RESUME | 0x42b | 与反潜回服务器通信恢复
MINOR_EXCEPTION_CUSTOM1 | 0x900 | 门禁自定义异常1
MINOR_EXCEPTION_CUSTOM2 | 0x901 | 门禁自定义异常2
MINOR_EXCEPTION_CUSTOM3 | 0x902 | 门禁自定义异常3
MINOR_EXCEPTION_CUSTOM4 | 0x903 | 门禁自定义异常4
MINOR_EXCEPTION_CUSTOM5 | 0x904 | 门禁自定义异常5
MINOR_EXCEPTION_CUSTOM6 | 0x905 | 门禁自定义异常6
MINOR_EXCEPTION_CUSTOM7 | 0x906 | 门禁自定义异常7
MINOR_EXCEPTION_CUSTOM8 | 0x907 | 门禁自定义异常8
MINOR_EXCEPTION_CUSTOM9 | 0x908 | 门禁自定义异常9
MINOR_EXCEPTION_CUSTOM10 | 0x909 | 门禁自定义异常10
MINOR_EXCEPTION_CUSTOM11 | 0x90a | 门禁自定义异常11
MINOR_EXCEPTION_CUSTOM12 | 0x90b | 门禁自定义异常12
MINOR_EXCEPTION_CUSTOM13 | 0x90c | 门禁自定义异常13
MINOR_EXCEPTION_CUSTOM14 | 0x90d | 门禁自定义异常14
MINOR_EXCEPTION_CUSTOM15 | 0x90e | 门禁自定义异常15
MINOR_EXCEPTION_CUSTOM16 | 0x90f | 门禁自定义异常16
MINOR_EXCEPTION_CUSTOM17 | 0x910 | 门禁自定义异常17
MINOR_EXCEPTION_CUSTOM18 | 0x911 | 门禁自定义异常18
MINOR_EXCEPTION_CUSTOM19 | 0x912 | 门禁自定义异常19
MINOR_EXCEPTION_CUSTOM20 | 0x913 | 门禁自定义异常20
MINOR_EXCEPTION_CUSTOM21 | 0x914 | 门禁自定义异常21
MINOR_EXCEPTION_CUSTOM22 | 0x915 | 门禁自定义异常22
MINOR_EXCEPTION_CUSTOM23 | 0x916 | 门禁自定义异常23
MINOR_EXCEPTION_CUSTOM24 | 0x917 | 门禁自定义异常24
MINOR_EXCEPTION_CUSTOM25 | 0x918 | 门禁自定义异常25
MINOR_EXCEPTION_CUSTOM26 | 0x919 | 门禁自定义异常26
MINOR_EXCEPTION_CUSTOM27 | 0x91a | 门禁自定义异常27
MINOR_EXCEPTION_CUSTOM28 | 0x91b | 门禁自定义异常28
MINOR_EXCEPTION_CUSTOM29 | 0x91c | 门禁自定义异常29
MINOR_EXCEPTION_CUSTOM30 | 0x91d | 门禁自定义异常30
MINOR_EXCEPTION_CUSTOM31 | 0x91e | 门禁自定义异常31
MINOR_EXCEPTION_CUSTOM32 | 0x91f | 门禁自定义异常32
MINOR_EXCEPTION_CUSTOM33 | 0x920 | 门禁自定义异常33
MINOR_EXCEPTION_CUSTOM34 | 0x921 | 门禁自定义异常34
MINOR_EXCEPTION_CUSTOM35 | 0x922 | 门禁自定义异常35
MINOR_EXCEPTION_CUSTOM36 | 0x923 | 门禁自定义异常36
MINOR_EXCEPTION_CUSTOM37 | 0x924 | 门禁自定义异常37
MINOR_EXCEPTION_CUSTOM38 | 0x925 | 门禁自定义异常38
MINOR_EXCEPTION_CUSTOM39 | 0x926 | 门禁自定义异常39
MINOR_EXCEPTION_CUSTOM40 | 0x927 | 门禁自定义异常40
MINOR_EXCEPTION_CUSTOM41 | 0x928 | 门禁自定义异常41
MINOR_EXCEPTION_CUSTOM42 | 0x929 | 门禁自定义异常42
MINOR_EXCEPTION_CUSTOM43 | 0x92a | 门禁自定义异常43
MINOR_EXCEPTION_CUSTOM44 | 0x92b | 门禁自定义异常44
MINOR_EXCEPTION_CUSTOM45 | 0x92c | 门禁自定义异常45
MINOR_EXCEPTION_CUSTOM46 | 0x92d | 门禁自定义异常46
MINOR_EXCEPTION_CUSTOM47 | 0x92e | 门禁自定义异常47
MINOR_EXCEPTION_CUSTOM48 | 0x92f | 门禁自定义异常48
MINOR_EXCEPTION_CUSTOM49 | 0x930 | 门禁自定义异常49
MINOR_EXCEPTION_CUSTOM50 | 0x931 | 门禁自定义异常50
MINOR_EXCEPTION_CUSTOM51 | 0x932 | 门禁自定义异常51
MINOR_EXCEPTION_CUSTOM52 | 0x933 | 门禁自定义异常52
MINOR_EXCEPTION_CUSTOM53 | 0x934 | 门禁自定义异常53
MINOR_EXCEPTION_CUSTOM54 | 0x935 | 门禁自定义异常54
MINOR_EXCEPTION_CUSTOM55 | 0x936 | 门禁自定义异常55
MINOR_EXCEPTION_CUSTOM56 | 0x937 | 门禁自定义异常56
MINOR_EXCEPTION_CUSTOM57 | 0x938 | 门禁自定义异常57
MINOR_EXCEPTION_CUSTOM58 | 0x939 | 门禁自定义异常58
MINOR_EXCEPTION_CUSTOM59 | 0x93a | 门禁自定义异常59
MINOR_EXCEPTION_CUSTOM60 | 0x93b | 门禁自定义异常60
MINOR_EXCEPTION_CUSTOM61 | 0x93c | 门禁自定义异常61
MINOR_EXCEPTION_CUSTOM62 | 0x93d | 门禁自定义异常62
MINOR_EXCEPTION_CUSTOM63 | 0x93e | 门禁自定义异常63
MINOR_EXCEPTION_CUSTOM64 | 0x93f | 门禁自定义异常64

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_ALARMOUT_OPEN_MAN | 0xd6 | 远程手动开启报警输出
MINOR_REMOTE_ALARMOUT_CLOSE_MAN | 0xd7 | 远程手动关闭报警输出
MINOR_REMOTE_OPEN_DOOR | 0x400 | 远程开门
MINOR_REMOTE_CLOSE_DOOR | 0x401 | 远程关门（对于梯控，表示受控）
MINOR_REMOTE_ALWAYS_OPEN | 0x402 | 远程常开（对于梯控，表示自由）
MINOR_REMOTE_ALWAYS_CLOSE | 0x403 | 远程常关（对于梯控，表示禁用）
MINOR_REMOTE_CHECK_TIME | 0x404 | 远程手动校时
MINOR_NTP_CHECK_TIME | 0x405 | NTP自动校时
MINOR_REMOTE_CLEAR_CARD | 0x406 | 远程清空卡号
MINOR_REMOTE_RESTORE_CFG | 0x407 | 远程恢复默认参数
MINOR_ALARMIN_ARM | 0x408 | 防区布防
MINOR_ALARMIN_DISARM | 0x409 | 防区撤防
MINOR_LOCAL_RESTORE_CFG | 0x40a | 本地恢复默认参数
MINOR_REMOTE_CAPTURE_PIC | 0x40b | 远程抓拍
MINOR_MOD_NET_REPORT_CFG | 0x40c | 修改网络中心参数配置
MINOR_MOD_GPRS_REPORT_PARAM | 0x40d | 修改GPRS中心参数配置
MINOR_MOD_REPORT_GROUP_PARAM | 0x40e | 修改中心组参数配置
MINOR_UNLOCK_PASSWORD_OPEN_DOOR | 0x40f | 解除码输入
MINOR_AUTO_RENUMBER | 0x410 | 自动重新编号
MINOR_AUTO_COMPLEMENT_NUMBER | 0x411 | 自动补充编号
MINOR_NORMAL_CFGFILE_INPUT | 0x412 | 导入普通配置文件
MINOR_NORMAL_CFGFILE_OUTTPUT | 0x413 | 导出普通配置文件
MINOR_CARD_RIGHT_INPUT | 0x414 | 导入卡权限参数
MINOR_CARD_RIGHT_OUTTPUT | 0x415 | 导出卡权限参数
MINOR_LOCAL_USB_UPGRADE | 0x416 | 本地U盘升级
MINOR_REMOTE_VISITOR_CALL_LADDER | 0x417 | 访客呼梯
MINOR_REMOTE_HOUSEHOLD_CALL_LADDER | 0x418 | 住户呼梯
MINOR_REMOTE_ACTUAL_GUARD | 0x419 | 远程实时布防
MINOR_REMOTE_ACTUAL_UNGUARD | 0x41a | 远程实时撤防
MINOR_OPERATION_CUSTOM1 | 0x900 | 门禁自定义操作1
MINOR_OPERATION_CUSTOM2 | 0x901 | 门禁自定义操作2
MINOR_OPERATION_CUSTOM3 | 0x902 | 门禁自定义操作3
MINOR_OPERATION_CUSTOM4 | 0x903 | 门禁自定义操作4
MINOR_OPERATION_CUSTOM5 | 0x904 | 门禁自定义操作5
MINOR_OPERATION_CUSTOM6 | 0x905 | 门禁自定义操作6
MINOR_OPERATION_CUSTOM7 | 0x906 | 门禁自定义操作7
MINOR_OPERATION_CUSTOM8 | 0x907 | 门禁自定义操作8
MINOR_OPERATION_CUSTOM9 | 0x908 | 门禁自定义操作9
MINOR_OPERATION_CUSTOM10 | 0x909 | 门禁自定义操作10
MINOR_OPERATION_CUSTOM11 | 0x90a | 门禁自定义操作11
MINOR_OPERATION_CUSTOM12 | 0x90b | 门禁自定义异常12
MINOR_OPERATION_CUSTOM13 | 0x90c | 门禁自定义操作13
MINOR_OPERATION_CUSTOM14 | 0x90d | 门禁自定义操作14
MINOR_OPERATION_CUSTOM15 | 0x90e | 门禁自定义操作15
MINOR_OPERATION_CUSTOM16 | 0x90f | 门禁自定义操作16
MINOR_OPERATION_CUSTOM17 | 0x910 | 门禁自定义操作17
MINOR_OPERATION_CUSTOM18 | 0x911 | 门禁自定义操作18
MINOR_OPERATION_CUSTOM19 | 0x912 | 门禁自定义操作19
MINOR_OPERATION_CUSTOM20 | 0x913 | 门禁自定义操作20
MINOR_OPERATION_CUSTOM21 | 0x914 | 门禁自定义异常21
MINOR_OPERATION_CUSTOM22 | 0x915 | 门禁自定义操作22
MINOR_OPERATION_CUSTOM23 | 0x916 | 门禁自定义操作23
MINOR_OPERATION_CUSTOM24 | 0x917 | 门禁自定义操作24
MINOR_OPERATION_CUSTOM25 | 0x918 | 门禁自定义操作25
MINOR_OPERATION_CUSTOM26 | 0x919 | 门禁自定义操作26
MINOR_OPERATION_CUSTOM27 | 0x91a | 门禁自定义操作27
MINOR_OPERATION_CUSTOM28 | 0x91b | 门禁自定义操作28
MINOR_OPERATION_CUSTOM29 | 0x91c | 门禁自定义操作29
MINOR_OPERATION_CUSTOM30 | 0x91d | 门禁自定义操作30
MINOR_OPERATION_CUSTOM31 | 0x91e | 门禁自定义操作31
MINOR_OPERATION_CUSTOM32 | 0x91f | 门禁自定义操作32
MINOR_OPERATION_CUSTOM33 | 0x920 | 门禁自定义操作33
MINOR_OPERATION_CUSTOM34 | 0x921 | 门禁自定义操作34
MINOR_OPERATION_CUSTOM35 | 0x922 | 门禁自定义操作35
MINOR_OPERATION_CUSTOM36 | 0x923 | 门禁自定义操作36
MINOR_OPERATION_CUSTOM37 | 0x924 | 门禁自定义操作37
MINOR_OPERATION_CUSTOM38 | 0x925 | 门禁自定义操作38
MINOR_OPERATION_CUSTOM39 | 0x926 | 门禁自定义操作39
MINOR_OPERATION_CUSTOM40 | 0x927 | 门禁自定义操作40
MINOR_OPERATION_CUSTOM41 | 0x928 | 门禁自定义操作41
MINOR_OPERATION_CUSTOM42 | 0x929 | 门禁自定义操作42
MINOR_OPERATION_CUSTOM43 | 0x92a | 门禁自定义操作43
MINOR_OPERATION_CUSTOM44 | 0x92b | 门禁自定义操作44
MINOR_OPERATION_CUSTOM45 | 0x92c | 门禁自定义操作45
MINOR_OPERATION_CUSTOM46 | 0x92d | 门禁自定义操作46
MINOR_OPERATION_CUSTOM47 | 0x92e | 门禁自定义操作47
MINOR_OPERATION_CUSTOM48 | 0x92f | 门禁自定义操作48
MINOR_OPERATION_CUSTOM49 | 0x930 | 门禁自定义操作49
MINOR_OPERATION_CUSTOM50 | 0x931 | 门禁自定义操作50
MINOR_OPERATION_CUSTOM51 | 0x932 | 门禁自定义操作51
MINOR_OPERATION_CUSTOM52 | 0x933 | 门禁自定义操作52
MINOR_OPERATION_CUSTOM53 | 0x934 | 门禁自定义操作53
MINOR_OPERATION_CUSTOM54 | 0x935 | 门禁自定义操作54
MINOR_OPERATION_CUSTOM55 | 0x936 | 门禁自定义操作55
MINOR_OPERATION_CUSTOM56 | 0x937 | 门禁自定义操作56
MINOR_OPERATION_CUSTOM57 | 0x938 | 门禁自定义操作57
MINOR_OPERATION_CUSTOM58 | 0x939 | 门禁自定义操作58
MINOR_OPERATION_CUSTOM59 | 0x93a | 门禁自定义操作59
MINOR_OPERATION_CUSTOM60 | 0x93b | 门禁自定义操作60
MINOR_OPERATION_CUSTOM61 | 0x93c | 门禁自定义操作61
MINOR_OPERATION_CUSTOM62 | 0x93d | 门禁自定义操作62
MINOR_OPERATION_CUSTOM63 | 0x93e | 门禁自定义操作63
MINOR_OPERATION_CUSTOM64 | 0x93f | 门禁自定义操作64

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EVENT | 0x5 | 事件
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LEGAL_CARD_PASS | 0x01 | 合法卡认证通过
MINOR_CARD_AND_PSW_PASS | 0x02 | 刷卡加密码认证通过
MINOR_CARD_AND_PSW_FAIL | 0x03 | 刷卡加密码认证失败
MINOR_CARD_AND_PSW_TIMEOUT | 0x04 | 数卡加密码认证超时
MINOR_CARD_AND_PSW_OVER_TIME | 0x05 | 刷卡加密码超次
MINOR_CARD_NO_RIGHT | 0x06 | 未分配权限
MINOR_CARD_INVALID_PERIOD | 0x07 | 无效时段
MINOR_CARD_OUT_OF_DATE | 0x08 | 卡号过期
MINOR_INVALID_CARD | 0x09 | 无此卡号
MINOR_ANTI_SNEAK_FAIL | 0x0a | 反潜回认证失败
MINOR_INTERLOCK_DOOR_NOT_CLOSE | 0x0b | 互锁门未关闭
MINOR_NOT_BELONG_MULTI_GROUP | 0x0c | 卡不属于多重认证群组
MINOR_INVALID_MULTI_VERIFY_PERIOD | 0x0d | 卡不在多重认证时间段内
MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL | 0x0e | 多重认证模式超级权限认证失败
MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL | 0x0f | 多重认证模式远程认证失败
MINOR_MULTI_VERIFY_SUCCESS | 0x10 | 多重认证成功
MINOR_LEADER_CARD_OPEN_BEGIN | 0x11 | 首卡开门开始
MINOR_LEADER_CARD_OPEN_END | 0x12 | 首卡开门结束
MINOR_ALWAYS_OPEN_BEGIN | 0x13 | 常开状态开始
MINOR_ALWAYS_OPEN_END | 0x14 | 常开状态结束
MINOR_LOCK_OPEN | 0x15 | 门锁打开
MINOR_LOCK_CLOSE | 0x16 | 门锁关闭
MINOR_DOOR_BUTTON_PRESS | 0x17 | 开门按钮打开
MINOR_DOOR_BUTTON_RELEASE | 0x18 | 开门按钮放开
MINOR_DOOR_OPEN_NORMAL | 0x19 | 正常开门（门磁）
MINOR_DOOR_CLOSE_NORMAL | 0x1a | 正常关门（门磁）
MINOR_DOOR_OPEN_ABNORMAL | 0x1b | 门异常打开（门磁）
MINOR_DOOR_OPEN_TIMEOUT | 0x1c | 门打开超时（门磁）
MINOR_ALARMOUT_ON | 0x1d | 报警输出打开
MINOR_ALARMOUT_OFF | 0x1e | 报警输出关闭
MINOR_ALWAYS_CLOSE_BEGIN | 0x1f | 常关状态开始
MINOR_ALWAYS_CLOSE_END | 0x20 | 常关状态结束
MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN | 0x21 | 多重多重认证需要远程开门
MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS | 0x22 | 多重认证超级密码认证成功事件
MINOR_MULTI_VERIFY_REPEAT_VERIFY | 0x23 | 多重认证重复认证事件
MINOR_MULTI_VERIFY_TIMEOUT | 0x24 | 多重认证超时
MINOR_DOORBELL_RINGING | 0x25 | 门铃响
MINOR_FINGERPRINT_COMPARE_PASS | 0x26 | 指纹比对通过
MINOR_FINGERPRINT_COMPARE_FAIL | 0x27 | 指纹比对失败
MINOR_CARD_FINGERPRINT_VERIFY_PASS | 0x28 | 刷卡加指纹认证通过
MINOR_CARD_FINGERPRINT_VERIFY_FAIL | 0x29 | 刷卡加指纹认证失败
MINOR_CARD_FINGERPRINT_VERIFY_TIMEOUT | 0x2a | 刷卡加指纹认证超时
MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_PASS | 0x2b | 刷卡加指纹加密码认证通过
MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL | 0x2c | 刷卡加指纹加密码认证失败
MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT | 0x2d | 刷卡加指纹加密码认证超时
MINOR_FINGERPRINT_PASSWD_VERIFY_PASS | 0x2e | 指纹加密码认证通过
MINOR_FINGERPRINT_PASSWD_VERIFY_FAIL | 0x2f | 指纹加密码认证失败
MINOR_FINGERPRINT_PASSWD_VERIFY_TIMEOUT | 0x30 | 指纹加密码认证超时
MINOR_FINGERPRINT_INEXISTENCE | 0x31 | 指纹不存在
MINOR_CARD_PLATFORM_VERIFY | 0x32 | 刷卡平台认证
MINOR_CALL_CENTER | 0x33 | 呼叫中心事件
MINOR_FIRE_RELAY_TURN_ON_DOOR_ALWAYS_OPEN | 0x34 | 消防继电器导通触发门常开
MINOR_FIRE_RELAY_RECOVER_DOOR_RECOVER_NORMAL | 0x35 | 消防继电器恢复门恢复正常
MINOR_FACE_AND_FP_VERIFY_PASS | 0x36 | 人脸加指纹认证通过
MINOR_FACE_AND_FP_VERIFY_FAIL | 0x37 | 人脸加指纹认证失败
MINOR_FACE_AND_FP_VERIFY_TIMEOUT | 0x38 | 人脸加指纹认证超时
MINOR_FACE_AND_PW_VERIFY_PASS | 0x39 | 人脸加密码认证通过
MINOR_FACE_AND_PW_VERIFY_FAIL | 0x3a | 人脸加密码认证失败
MINOR_FACE_AND_PW_VERIFY_TIMEOUT | 0x3b | 人脸加密码认证超时
MINOR_FACE_AND_CARD_VERIFY_PASS | 0x3c | 人脸加刷卡认证通过
MINOR_FACE_AND_CARD_VERIFY_FAIL | 0x3d | 人脸加刷卡认证失败
MINOR_FACE_AND_CARD_VERIFY_TIMEOUT | 0x3e | 人脸加刷卡认证超时
MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS | 0x3f | 人脸加密码加指纹认证通过
MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL | 0x40 | 人脸加密码加指纹认证失败
MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT | 0x41 | 人脸加密码加指纹认证超时
MINOR_FACE_CARD_AND_FP_VERIFY_PASS | 0x42 | 人脸加刷卡加指纹认证通过
MINOR_FACE_CARD_AND_FP_VERIFY_FAIL | 0x43 | 人脸加刷卡加指纹认证失败
MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT | 0x44 | 人脸加刷卡加指纹认证超时
MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS | 0x45 | 工号加指纹认证通过
MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL | 0x46 | 工号加指纹认证失败
MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT | 0x47 | 工号加指纹认证超时
MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS | 0x48 | 工号加指纹加密码认证通过
MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL | 0x49 | 工号加指纹加密码认证失败
MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT | 0x4a | 工号加指纹加密码认证超时
MINOR_FACE_VERIFY_PASS | 0x4b | 人脸认证通过
MINOR_FACE_VERIFY_FAIL | 0x4c | 人脸认证失败
MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS | 0x4d | 工号加人脸认证通过
MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL | 0x4e | 工号加人脸认证失败
MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT | 0x4f | 工号加人脸认证超时
MINOR_FACE_RECOGNIZE_FAIL | 0x50 | 人脸抓拍失败
MINOR_FIRSTCARD_AUTHORIZE_BEGIN | 0x51 | 首卡授权开始
MINOR_FIRSTCARD_AUTHORIZE_END | 0x52 | 首卡授权结束
MINOR_DOORLOCK_INPUT_SHORT_CIRCUIT | 0x53 | 门锁输入短路报警
MINOR_DOORLOCK_INPUT_BROKEN_CIRCUIT | 0x54 | 门锁输入断路报警
MINOR_DOORLOCK_INPUT_EXCEPTION | 0x55 | 门锁输入异常报警
MINOR_DOORCONTACT_INPUT_SHORT_CIRCUIT | 0x56 | 门磁输入短路报警
MINOR_DOORCONTACT_INPUT_BROKEN_CIRCUIT | 0x57 | 门磁输入断路报警
MINOR_DOORCONTACT_INPUT_EXCEPTION | 0x58 | 门磁输入异常报警
MINOR_OPENBUTTON_INPUT_SHORT_CIRCUIT | 0x59 | 开门按钮输入短路报警
MINOR_OPENBUTTON_INPUT_BROKEN_CIRCUIT | 0x5a | 开门按钮输入断路报警
MINOR_OPENBUTTON_INPUT_EXCEPTION | 0x5b | 开门按钮输入异常报警
MINOR_DOORLOCK_OPEN_EXCEPTION | 0x5c | 门锁异常打开
MINOR_DOORLOCK_OPEN_TIMEOUT | 0x5d | 门锁打开超时
MINOR_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE | 0x5e | 首卡未授权开门失败
MINOR_CALL_LADDER_RELAY_BREAK | 0x5f | 呼梯继电器断开
MINOR_CALL_LADDER_RELAY_CLOSE | 0x60 | 呼梯继电器闭合
MINOR_AUTO_KEY_RELAY_BREAK | 0x61 | 自动按键继电器断开
MINOR_AUTO_KEY_RELAY_CLOSE | 0x62 | 自动按键继电器闭合
MINOR_KEY_CONTROL_RELAY_BREAK | 0x63 | 按键梯控继电器断开
MINOR_KEY_CONTROL_RELAY_CLOSE | 0x64 | 按键梯控继电器闭合
MINOR_EMPLOYEENO_AND_PW_PASS | 0x65 | 工号加密码认证通过
MINOR_EMPLOYEENO_AND_PW_FAIL | 0x66 | 工号加密码认证失败
MINOR_EMPLOYEENO_AND_PW_TIMEOUT | 0x67 | 工号加密码认证超时
MINOR_HUMAN_DETECT_FAIL | 0x68 | 真人检测失败
MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS | 0x69 | 人证比对通过
MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL | 0x70 | 人证比对失败
MINOR_CERTIFICATE_BLOCKLIST | 0x71 | 非授权名单事件
MINOR_LEGAL_MESSAGE | 0x72 | 合法短信
MINOR_ILLEGAL_MESSAGE | 0x73 | 非法短信
MINOR_MAC_DETECT | 0x74 | MAC侦测
MINOR_DOOR_OPEN_OR_DORMANT_FAIL | 0x75 | 门状态常闭或休眠状态认证失败
MINOR_AUTH_PLAN_DORMANT_FAIL | 0x76 | 认证计划休眠模式认证失败
MINOR_AUTH_PLAN_DORMANT_FAIL | 0x76 | 认证计划休眠模式认证失败
MINOR_CARD_ENCRYPT_VERIFY_FAIL | 0x77 | 卡加密校验失败
MINOR_SUBMARINEBACK_REPLY_FAIL | 0x78 | 反潜回服务器应答失败
MINOR_EVENT_CUSTOM1 | 0x500 | 门禁自定义事件1
MINOR_EVENT_CUSTOM2 | 0x501 | 门禁自定义事件2
MINOR_EVENT_CUSTOM3 | 0x502 | 门禁自定义事件3
MINOR_EVENT_CUSTOM4 | 0x503 | 门禁自定义事件4
MINOR_EVENT_CUSTOM5 | 0x504 | 门禁自定义事件5
MINOR_EVENT_CUSTOM6 | 0x505 | 门禁自定义事件6
MINOR_EVENT_CUSTOM7 | 0x506 | 门禁自定义事件7
MINOR_EVENT_CUSTOM8 | 0x507 | 门禁自定义事件8
MINOR_EVENT_CUSTOM9 | 0x508 | 门禁自定义事件9
MINOR_EVENT_CUSTOM10 | 0x509 | 门禁自定义事件10
MINOR_EVENT_CUSTOM11 | 0x50a | 门禁自定义事件11
MINOR_EVENT_CUSTOM12 | 0x50b | 门禁自定义事件12
MINOR_EVENT_CUSTOM13 | 0x50c | 门禁自定义事件13
MINOR_EVENT_CUSTOM14 | 0x50d | 门禁自定义事件14
MINOR_EVENT_CUSTOM15 | 0x50e | 门禁自定义事件15
MINOR_EVENT_CUSTOM16 | 0x50f | 门禁自定义事件16
MINOR_EVENT_CUSTOM17 | 0x510 | 门禁自定义事件17
MINOR_EVENT_CUSTOM18 | 0x511 | 门禁自定义事件18
MINOR_EVENT_CUSTOM19 | 0x512 | 门禁自定义事件19
MINOR_EVENT_CUSTOM20 | 0x513 | 门禁自定义事件20
MINOR_EVENT_CUSTOM21 | 0x514 | 门禁自定义事件21
MINOR_EVENT_CUSTOM22 | 0x515 | 门禁自定义事件22
MINOR_EVENT_CUSTOM23 | 0x516 | 门禁自定义事件23
MINOR_EVENT_CUSTOM24 | 0x517 | 门禁自定义事件24
MINOR_EVENT_CUSTOM25 | 0x518 | 门禁自定义事件25
MINOR_EVENT_CUSTOM26 | 0x519 | 门禁自定义事件26
MINOR_EVENT_CUSTOM27 | 0x51a | 门禁自定义事件27
MINOR_EVENT_CUSTOM28 | 0x51b | 门禁自定义事件28
MINOR_EVENT_CUSTOM29 | 0x51c | 门禁自定义事件29
MINOR_EVENT_CUSTOM30 | 0x51d | 门禁自定义事件30
MINOR_EVENT_CUSTOM31 | 0x51e | 门禁自定义事件31
MINOR_EVENT_CUSTOM32 | 0x51f | 门禁自定义事件32
MINOR_EVENT_CUSTOM33 | 0x520 | 门禁自定义事件33
MINOR_EVENT_CUSTOM34 | 0x521 | 门禁自定义事件34
MINOR_EVENT_CUSTOM35 | 0x522 | 门禁自定义事件35
MINOR_EVENT_CUSTOM36 | 0x523 | 门禁自定义事件36
MINOR_EVENT_CUSTOM37 | 0x524 | 门禁自定义事件37
MINOR_EVENT_CUSTOM38 | 0x525 | 门禁自定义事件38
MINOR_EVENT_CUSTOM39 | 0x526 | 门禁自定义事件39
MINOR_EVENT_CUSTOM40 | 0x527 | 门禁自定义事件40
MINOR_EVENT_CUSTOM41 | 0x528 | 门禁自定义事件41
MINOR_EVENT_CUSTOM42 | 0x529 | 门禁自定义事件42
MINOR_EVENT_CUSTOM43 | 0x52a | 门禁自定义事件43
MINOR_EVENT_CUSTOM44 | 0x52b | 门禁自定义事件44
MINOR_EVENT_CUSTOM45 | 0x52c | 门禁自定义事件45
MINOR_EVENT_CUSTOM46 | 0x52d | 门禁自定义事件46
MINOR_EVENT_CUSTOM47 | 0x52e | 门禁自定义事件47
MINOR_EVENT_CUSTOM48 | 0x52f | 门禁自定义事件48
MINOR_EVENT_CUSTOM49 | 0x530 | 门禁自定义事件49
MINOR_EVENT_CUSTOM50 | 0x531 | 门禁自定义事件50
MINOR_EVENT_CUSTOM51 | 0x532 | 门禁自定义事件51
MINOR_EVENT_CUSTOM52 | 0x533 | 门禁自定义事件52
MINOR_EVENT_CUSTOM53 | 0x534 | 门禁自定义事件53
MINOR_EVENT_CUSTOM54 | 0x535 | 门禁自定义事件54
MINOR_EVENT_CUSTOM55 | 0x536 | 门禁自定义事件55
MINOR_EVENT_CUSTOM56 | 0x537 | 门禁自定义事件56
MINOR_EVENT_CUSTOM57 | 0x538 | 门禁自定义事件57
MINOR_EVENT_CUSTOM58 | 0x539 | 门禁自定义事件58
MINOR_EVENT_CUSTOM59 | 0x53a | 门禁自定义事件59
MINOR_EVENT_CUSTOM60 | 0x53b | 门禁自定义事件60
MINOR_EVENT_CUSTOM61 | 0x53c | 门禁自定义事件61
MINOR_EVENT_CUSTOM62 | 0x53d | 门禁自定义事件62
MINOR_EVENT_CUSTOM63 | 0x53e | 门禁自定义事件63
MINOR_EVENT_CUSTOM64 | 0x53f | 门禁自定义事件64

Remarks

  • 建议使用NET_DVR_SetDVRMessageCallBack_V31，设备断开链接后，回调函数返回异常状态，获取错误码为7。

    • See Also

    NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_ID_CARD_INFO_EXTEND

身份证事件信息扩展参数。

struct{
  BYTE             byRemoteCheck;
  BYTE             byThermometryUnit;
  BYTE             byIsAbnomalTemperature;
  BYTE             byRes2;
  float            fCurrTemperature;
  NET_VCA_POINT    struRegionCoordinates;
  DWORD            dwQRCodeInfoLen;
  DWORD            dwVisibleLightDataLen;
  DWORD            dwThermalDataLen;
  char             *pQRCodeInfo;
  char             *pVisibleLightData;
  char             *pThermalData;
  WORD             wXCoordinate;
  WORD             wYCoordinate;
  WORD             wWidth;
  WORD             wHeight;
  BYTE             byHealthCode;
  BYTE             byNADCode;
  BYTE             byTravelCode;
  BYTE             byVaccineStatus;
  BYTE             byRes[1012];
}NET_DVR_ID_CARD_INFO_EXTEND,*LPNET_DVR_ID_CARD_INFO_EXTEND;

Members

byRemoteCheck
是否需要远程核验：0-无效，1-不需要（默认），2-需要
byThermometryUnit
测温单位：0-摄氏度（默认），1-华氏度，2-开尔文
byIsAbnomalTemperature
人脸抓拍测温是否温度异常：1-是，0-否
byRes2
保留，置为0
fCurrTemperature
人脸温度（精确到小数点后一位）
struRegionCoordinates
人脸温度坐标
dwQRCodeInfoLen
二维码信息长度，不为0是表示后面带数据
dwVisibleLightDataLen
热成像相机可见光图片长度，不为0是表示后面带数据
dwThermalDataLen
热成像图片长度，不为0是表示后面带数据
pQRCodeInfo
二维码信息指针
pVisibleLightData
热成像相机可见光图片指针
pThermalData
热成像图片指针
wXCoordinate
x坐标，人脸框左上角相对于图片的归一化坐标，取值范围0-1000
wYCoordinate
y坐标，人脸框左上角相对于图片的归一化坐标，取值范围0-1000
wWidth
人脸框宽度，取值范围0-1000
wHeight
人脸框高度，取值范围0-1000
byHealthCode
健康码状态：0-保留, 1-未请求, 2-未申领, 3-绿码, 4-黄码, 5-红码, 6-无此人员, 7-其他错误信息（如接口异常导致查询失败）, 8-查询健康码超时
byNADCode
核酸检测结果：0-保留, 1-未查询到核酸检测结果, 2-核酸检测阴性（代表正常）, 3-核酸检测阳性（代表确诊）, 4-核酸检测有效期已过
byTravelCode
行程编码：0-保留, 1-14天内一直在当地, 2-14天内离开过当地, 3-14天内到过疫区, 4-其他
byVaccineStatus
打疫苗状态：0-保留, 1-未打疫苗, 2-部分注射疫苗, 3-打过疫苗
byRes
保留，置为0

See Also

NET_DVR_ID_CARD_INFO_ALARM


NET_DVR_IDENTIFICAT

ATM自定义协议报文起始标识结构体。

struct{
  BYTE                      byStartMode;
  BYTE                      byEndMode;
  BYTE                      byRes[2];
  NET_DVR_FRAMETYPECODE     struStartCode;
  NET_DVR_FRAMETYPECODE     struEndCode;
  BYTE                      byRes1[12];
}NET_DVR_IDENTIFICAT, *LPNET_DVR_IDENTIFICAT;

Members

byStartMode
起始字符模式，0-ASCII；1-HEX
byEndMode
结束字符模式，0-ASCII；1-HEX
byRes
保留
struStartCode
数据报起始字符
struEndCode
数据报结束字符
byRes1
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_IDENTIFICATION_PARAM

协议认证参数结构体。

struct{
  BYTE    sUserName[NAME_LEN];
  BYTE    sPassword[PASSWD_LEN];
  BYTE    byRes1[4];
}NET_DVR_IDENTIFICATION_PARAM, *LPNET_DVR_IDENTIFICATION_PARAM;

Members

sUserName
用户名
sPassword
密码
byRes1
保留

See Also

NET_DVR_MOUNT_PARAM_UNION


NET_DVR_IGNORE_STRING

忽略字符串信息结构体。

struct{
  BYTE    sData[MAX_POS_FILTER_DATA_LEN];
}NET_DVR_IGNORE_STRING, *LPNET_DVR_IGNORE_STRING;

Members

sData
忽略的字符串

See Also

NET_DVR_POS_GENERIC


NET_DVR_ILLEGALCARDFILTERING_CFG

停车场票箱参数配置结构体。

struct{
  DWORD    dwSize;
  char     sLEDDefaultInfo[MAX_LED_INFO_LEN];
  BYTE     byillegalCardFilteringEnabled;
  BYTE     bySendCardSensingCoilEnabled;
  BYTE     byWiegendSensingCoilEnabled;
  BYTE     byGateSwitchEnabled;
  BYTE     byVerifyKeyWriteCardEnabled;
  BYTE     byNoplateTakeCardEnabled;
  BYTE     byRes[126];
}NET_DVR_ILLEGALCARDFILTERING_CFG,*LPNET_DVR_ILLEGALCARDFILTERING_CFG;

Members

dwSize
结构体大小
sLEDDefaultInfo
LED默认显示内容
byillegalCardFilteringEnabled
启用非法卡过滤：0- 不启用，1- 启用
bySendCardSensingCoilEnabled
发卡机是否关联地感线圈：0- 否，1- 是
byWiegendSensingCoilEnabled
远距离卡是否关联地感线圈：0- 否，1- 是
byGateSwitchEnabled
是否有道闸开关信息：0- 否，1- 是
byVerifyKeyWriteCardEnabled
是否验证密钥和写卡：0- 否，1- 是
byNoplateTakeCardEnabled
是否启用无车牌取凭据放行：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持停车场票箱参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应停车场票箱参数配置能力集(TMEConfiguration)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ IMAGE_DIFF_DETECTION_CFG

图像差分检测参数结构体。

struct{
  DWORD              dwSize;
  NET_VCA_POLYGON    struRegion;
  BYTE               byEnabled;
  BYTE               byThreshold;
  BYTE               bySensitivity;
  BYTE               byVideoInputType;
  BYTE               byRes[300];
 }NET_DVR_IMAGE_DIFF_DETECTION_CFG,*LPNET_DVR_IMAGE_DIFF_DETECTION_CFG;

Members

dwSize
结构体大小
struRegion
区域范围
byEnabled
是否启用：0-不启用，1-启用
byThreshold
阈值，取值范围[0,100]
bySensitivity
灵敏度 ，取值范围[0,100]
byVideoInputType
视频输入口类型：0- 自动，1- HDMI，2- VGA
byRes
保留字节，置为0

Remarks

  • 设备是否支持图像差分检测配置，可以通过设备能力集进行判断，对应能力集(ImageDiffDetectionCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_IMAGEOVERLAYCFG

图像叠加参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byOverlayInfo;
  BYTE     byOverlayMonitorInfo;
  BYTE     byOverlayTime;
  BYTE     byOverlaySpeed;
  BYTE     byOverlaySpeeding;
  BYTE     byOverlayLimitFlag;
  BYTE     byOverlayPlate;
  BYTE     byOverlayColor;
  BYTE     byOverlayLength;
  BYTE     byOverlayType;
  BYTE     byOverlayColorDepth;
  BYTE     byOverlayDriveChan;
  BYTE     byOverlayMilliSec;
  BYTE     byOverlayIllegalInfo;
  BYTE     byOverlayRedOnTime;
  BYTE     byFarAddPlateJpeg;
  BYTE     byNearAddPlateJpeg;
  BYTE     byRes1[3];
  BYTE     byMonitorInfo1[32];
  BYTE     byMonitorInfo2[44];
  BYTE     byRes2[52];
}NET_DVR_IMAGEOVERLAYCFG, *LPNET_DVR_IMAGEOVERLAYCFG;

Members

dwSize
结构体大小
byOverlayInfo
叠加使能开关，0-不叠加，1-叠加
byOverlayMonitorInfo
是否叠加监测点信息，0-不叠加，1-叠加
byOverlayTime
是否叠加时间，0-不叠加，1-叠加
byOverlaySpeed
是否叠加速度，0-不叠加，1-叠加
byOverlaySpeeding
是否叠加超速比例，0-不叠加，1-叠加
byOverlayLimitFlag
是否叠加限速标志，0-不叠加，1-叠加
byOverlayPlate
是否叠加车牌，0-不叠加，1-叠加
byOverlayColor
是否叠加车身颜色，0-不叠加，1-叠加
byOverlayLength
是否叠加车长，0-不叠加，1-叠加
byOverlayType
是否叠加车型，0-不叠加，1-叠加
byOverlayColorDepth
是否叠加车身颜色深浅，保留
byOverlayDriveChan
是否叠加车道，0-不叠加，1-叠加
byOverlayMilliSec
是否叠加毫秒信息，0-不叠加，1-叠加
byOverlayIllegalInfo
是否叠加违章信息，0-不叠加，1-叠加
byOverlayRedOnTime
叠加红灯已亮时间 0-不叠加，1-叠加
byFarAddPlateJpeg
远景图是否叠加车牌截图,0-不叠加,1-叠加
byNearAddPlateJpeg
近景图是否叠加车牌截图,0-不叠加,1-叠加
byres1
保留，置为0
byMonitorInfo1
监测点信息1
byMonitorInfo2
监测点信息2
byres2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IN_CAL_SAMPLE

样本参数结构体。

struct{
  NET_VCA_RECT           struVcaRect;
  NET_DVR_LINE_SEGMENT   struLineSegment;
}NET_DVR_IN_CAL_SAMPLE, *LPNET_DVR_IN_CAL_SAMPLE;

Members

struVcaRect
目标框
struLineSegment
高度标定线

Remarks

该结构体表示IAS智能库标定样本，其中包括一个目标框和一条对应的高度标定线：目标框为站立的人体外接矩形框，高度线样本标识从人头顶点到脚点的标定线。

See Also

NET_DVR_BEHAVIOR_IN_CALIBRATION


NET_DVR_IN_PARAM

输入参数结构体。

struct{
  NET_DVR_BUF_INFO    struCondBuf;
  NET_DVR_BUF_INFO    struInParamBuf;
  DWORD               dwRecvTimeout;
  BYTE                byRes[32];
}NET_DVR_IN_PARAM,*LPNET_DVR_IN_PARAM;

Members

struCondBuf
条件缓冲区
struInParamBuf
输入参数缓冲区
lpStatusList
接收数据超时时间，单位：ms，为0时采用接口默认超时
byRes
保留，置为0

Remarks

不同的配置功能，struCondBuf、struInParamBuf对应不同的内容，详见接口NET_DVR_SetDeviceConfigEx中“Remarks”说明。


NET_DVR_INDOOR_UNIT_RELATEDEV

室内机相关设备参数结构体。

struct{
  NET_DVR_IPADDR     struOutdoorUnit;
  NET_DVR_IPADDR     struManageUnit;
  NET_DVR_IPADDR     struSIPServer;
  NET_DVR_IPADDR     struAgainUnit;
  BYTE     byOutDoorType;
  BYTE     byOutInConnectMode;
  BYTE     byIndoorConnectMode;
  BYTE     byRes1;
  NET_DVR_IPADDR     struIndoorUnit;
  BYTE     byManageCenterID[32];
  BYTE     byRes[268];
}NET_DVR_INDOOR_UNIT_RELATEDEV, *LPNET_DVR_INDOOR_UNIT_RELATEDEV;

Members

struOutdoorUnit
主门口机IP
struManageUnit
管理机IP
struSIPServer
SIP服务器IP
struAgainUnit
二次确认机IP
byOutDoorType
主门口机类型，0保留，1-主单元门口机，2-主别墅门口机
byOutInConnectMode
门口机与室内分机组网模式：1-门口机与室内分机同一局域网,2-门口机与室内分机不同局域网
byIndoorConnectMode
室内主机与室内分机组网模式：1-通过无线网卡、2-通过有线网卡
byRes1
保留，置为0
struIndoorUnit
室内主机IP
byManageCenterID
标准sip模式下使用，管理中心ID，支持数字，字母，@和.
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION


NET_DVR_INFRARE_CFG

红外信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byIrControlMode;
  BYTE     byIrBrightness;
  BYTE     byIrSensitivity;
  BYTE     byRes[65];
}NET_DVR_INFRARE_CFG, *LPNET_DVR_INFRARE_CFG;

Members

dwSize
结构体大小
byIrControlMode
控制模式：0-自动，1-手动
byIrBrightness
红外亮度，取值范围：0~100
byIrSensitivity
红外灯灵敏度，取值范围：0~100
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_INFRARED_CMD_INFO

红外命令名称信息结构体。

struct{
  BYTE    sCmdName[MAX_IR_CMD_NAME_LEN];
  BYTE    byRes[8];
}NET_DVR_INFRARED_CMD_INFO,*LPNET_DVR_INFRARED_CMD_INFO;

Members

sCmdName
红外命令名称
byRes
保留，置为0

See Also

NET_DVR_INFRARED_CMD_NAME_CFG


NET_DVR_INFRARED_CMD_NAME_CFG

红外命令名称参数配置结构体。

struct{
  DWORD                        dwSize;
  BYTE                         sIROutName[MAX_IR_CMD_NAME_LEN];
  NET_DVR_INFRARED_CMD_INFO    struIRCmdInfo[MAX_IR_CMD_NUM];
  BYTE                         byRes[256];
}NET_DVR_INFRARED_CMD_NAME_CFG,*LPNET_DVR_INFRARED_CMD_NAME_CFG;

Members

dwSize
结构体大小
sIROutName
红外输出口名称
struIRCmdInfo
红外命令信息
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_INFRARED_LEARN_END

红外学码配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     bySaveLearnInfo;
  BYTE     byRes[255];
}NET_DVR_INFRARED_LEARN_END,*LPNET_DVR_INFRARED_LEARN_END;

Members

dwSize
结构体大小
bySaveLearnInfo
保存学码信息：0- 保存，1- 不保存
byRes
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_INFRARED_LEARN_INFO

红外学码配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byIROutPort;
  BYTE     byIRCmdIndex;
  BYTE     byRes[30];
}NET_DVR_INFRARED_LEARN_INFO,*LPNET_DVR_INFRARED_LEARN_INFO;

Members

dwSize
结构体大小
byIROutPort
红外输出索引：1- 红外输出口1，2- 红外输出口2
byIRCmdIndex
红外学码命令对应的索引
byRes
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_INFRARED_OUTPUT_CTRL_CFG

红外输出控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byIROutPort;
  BYTE     byIRCmdIndex;
  BYTE     byRes[254];
}NET_DVR_INFRARED_OUTPUT_CTRL_CFG,*LPNET_DVR_INFRARED_OUTPUT_CTRL_CFG;

Members

dwSize
结构体大小
byIROutPort
红外输出索引：1- 红外输出口1，2- 红外输出口2
byIRCmdIndex
红外学码命令对应的索引
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_INIT_CFG_ABILITY

初始化能力参数结构体。

struct{
  INIT_CFG_MAX_NUM    enumMaxLoginUsersNum;
  INIT_CFG_MAX_NUM    enumMaxAlarmNum;
  BYTE                byRes[64];
}NET_DVR_INIT_CFG_ABILITY,*LPNET_DVR_INIT_CFG_ABILITY;

Members

enumMaxLoginUsersNum
最大注册用户个数，具体定义如下所示：
enum _INIT_CFG_MAX_NUM_{
  INIT_CFG_NUM_2048  = 2048,
  INIT_CFG_NUM_5120  = 5120,
  INIT_CFG_NUM_10240 = 10240,
  INIT_CFG_NUM_15360 = 15360,
  INIT_CFG_NUM_20480 = 20480
}INIT_CFG_MAX_NUM
enumMaxAlarmNum
最大报警布防路数，具体定义如下所示：
enum _INIT_CFG_MAX_NUM_{
  INIT_CFG_NUM_2048  = 2048,
  INIT_CFG_NUM_5120  = 5120,
  INIT_CFG_NUM_10240 = 10240,
  INIT_CFG_NUM_15360 = 15360,
  INIT_CFG_NUM_20480 = 20480
}INIT_CFG_MAX_NUM
byRes
保留，置为0

Remarks

  • SDK默认支持路数为2048路，路数能力增加，对PC性能、网络带宽要求则更高。

See Also

NET_DVR_SetSDKInitCfg


NET_DVR_INITIALPOSITIONCTRL

零方位角控制结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byWorkMode;
  BYTE     byRes[127];
}NET_DVR_INITIALPOSITIONCTRL, *LPNET_DVR_INITIALPOSITIONCTRL;

Members

dwSize
结构体大小
dwChan
设备通道号
byWorkMode
工作模式：0- 设置，1- 调用，2- 清除
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_INLAY_LAMP_CTRL_MODE

内置灯控制模式结构体。

struct{
  NET_DVR_PARK_INLAY_SUBINFO    struLampStateCtrl[MAX_PARKING_STATUS];
  BYTE                          byRes[96];
}NET_DVR_INLAY_LAMP_CTRL_MODE, *LPNET_DVR_INLAY_LAMP_CTRL_MODE;

Members

struLampStateCtrl
内置灯的情况下车位状态，数组0- 无车，数组1- 有车，数组2- 压线(优先级最高), 数组3- 特殊车位
byRes
保留

See Also

NET_DVR_LAMP_CTRL_MODE_UNION


NET_DVR_INPUT_INFO

变量元素信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byChanType;
  BYTE     byRes1[3];
  DWORD    dwChanNo;
  DWORD    dwSubChanNo;
  DWORD    dwVariableNo;
  BYTE     byRemoteType;
  BYTE     byLinkageIPCType[3];
  BYTE     byLinkageTriggerType[3];
  BYTE     byRes2[57];
}NET_DVR_INPUT_INFO, *LPNET_DVR_INPUT_INFO;

fMembers

dwSize
结构体大小
byChanType
接入类型：1- 本地模拟量通道，2- 本地开关量通道，3- 485通道，4- 网络通道
byRes1
保留，置为0
dwChanNo
通道号
dwSubChanNo
槽位号
dwVariableNo
变量编号
byRemoteType
变量类型，0-全部类型，1-遥信，2-遥测
byLinkageIPCType
联动IPC配置类型：0-默认，1-按变量号配置，2-按通道号配置
byLinkageTriggerType
联动触发器配置类型：0-默认，1-按变量号配置，2-按通道号配置
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_INPUT_INTERFACE_CTRL

输入接口控制结构体

struct{
  BYTE    byInputSourceType;
  BYTE    byRes[15];
}NET_DVR_INPUT_INTERFACE_CTRL, *LPNET_DVR_INPUT_INTERFACE_CTRL;

Members

byInputSourceType
输入源类型
enum _INPUT_INTERFACE_TYPE_{
  INTERFACE_VGA  = 0,
  INTERFACE_SVIDEO,
  INTERFACE_YPBPR,
  INTERFACE_DVI,
  INTERFACE_BNC,
  INTERFACE_DVI_LOOP,
  INTERFACE_BNC_LOOP,
  INTERFACE_HDMI,
  INTERFACE_IP,
  INTERFACE_USB,
  INTERFACE_SDI,
  INTERFACE_DP,
  INTERFACE_HDBASET
}INPUT_INTERFACE_TYPE
INTERFACE_VGA
VGA输入
INTERFACE_SVIDEO
S-Video输入
INTERFACE_YPBPR
YPbPr输入
INTERFACE_DVI
DVI输入
INTERFACE_BNC
BNC输入
INTERFACE_DVI_LOOP
DVI（环通）输入
INTERFACE_BNC_LOOP
BNC（环通）输入
INTERFACE_HDMI
HDMI输入
INTERFACE_IP
IP输入
INTERFACE_USB
USB输入
INTERFACE_SDI
SDI输入
INTERFACE_DP
DP输入
INTERFACE_HDBASET
HDBaseT输入
byRes
保留

See Also

NET_DVR_SCREEN_CONTROL_PARAM


NET_DVR_INPUT_SIGNAL_LIST

输入信号源列表结构体。

struct{
  DWORD    dwSize;
  DWORD    dwInputSignalNums;
  BYTE     *pBuffer;
  BYTE     byRes1[3];
  DWORD    dwBufLen;
  BYTE     byRes2[64];
}NET_DVR_INPUT_SIGNAL_LIST,*LPNET_DVR_INPUT_SIGNAL_LIST;

Members

dwSize
结构体大小
dwInputSignalNums
设备输入信号源数量
pBuffer
输入信号源，指向dwInputSignalNums个NET_DVR_INPUTSTREAMCFG结构体大小的缓冲区
byRes1
保留，置为0
dwBufLen
所分配缓冲区长度
byRes2
保留，置为0

Remarks

1. 调用NET_DVR_GetInputSignalList，将该结构体中的pBuffer置为空且dwBufLen为0，此时获取输入信号源个数（dwInputSignalNums）；
2. 根据接口返回的数量分配pBuffer的大小，然后再次调用NET_DVR_GetInputSignalList，此时获取输入信号源列表（pBuffer）。

See Also

NET_DVR_GetInputSignalList


NET_DVR_INPUTSTATUS

输入源状态结构体。

struct{
  WORD                         wInputNo;
  BYTE                         byInputType;
  BYTE                         byRes1[9];
  NET_DVR_INPUTSTATUS_UNION    struStatusUnion;
  BYTE                         byRes2[16];
}NET_DVR_INPUTSTATUS, *LPNET_DVR_INPUTSTATUS;

Members

wInputNo
结构体大小
byInputType
信号输入源类型，定义详见NET_DVR_CAM_MODE
byRes1
保留参数
struStatusUnion
输入源状态联合体
byRes2
保留参数

See Also

NET_DVR_SCREENINPUTSTATUS


NET_DVR_INPUTSTATUS_UNION

输入源状态联合体。

union{
  NET_DVR_MATRIX_CHAN_STATUS    struIpInputStatus;
  NET_DVR_ANALOGINPUTSTATUS     struAnalogInputStatus;
}NET_DVR_INPUTSTATUS_UNION,*LPNET_DVR_INPUTSTATUS_UNION;

Members

struIpInputStatus
解码通道状态
struAnalogInputStatus
模拟输入源状态

See Also

NET_DVR_INPUTSTATUS


NET_DVR_INPUTSTREAM_LIST

信号源列表

struct{
 DWORD                     dwSize;
 NET_DVR_INPUTSTREAMCFG    struInputStreamInfo[MAX_CAM_COUNT];
 BYTE                      byRes[4];
}NET_DVR_INPUTSTREAM_LIST,*LPNET_DVR_INPUTSTREAM_LIST;

Members

dwSize
结构体大小
struInputStreamInfo
输入流信息:0- (INPUT_UNKNOWN)未知输入信息，1- (INPUT_VIDEO)视频信号，2- (INPUT_RGB)计算机信号，3- (INPUT_SCREENCAPTURE)网络抓屏
byRes
保留，置为0

Remarks

通过接口NET_DVR_GetDVRConfig获取的信号源列表，包括本地输入子板信号、解码板、网络信号源，返回的最大个数个数为224个，超过224个时，剩下的信号源将不返回，建议使用接口NET_DVR_GetInputSignalList。

See Also

NET_DVR_GetDVRConfig


NET_DVR_INPUTSTREAMCFG

输入流参数结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byValid;
  BYTE                     byCamMode;
  WORD                     wInputNo;
  BYTE                     sCamName[NAME_LEN];
  NET_DVR_VIDEOEFFECT      struVideoEffect;
  NET_DVR_PU_STREAM_CFG    struPuStream;
  WORD                     wBoardNum;
  WORD                     wInputIdxOnBoard;
  WORD                     wResolutionX;
  WORD                     wResolutionY;
  BYTE                     byVideoFormat;
  BYTE                     byNetSignalResolution;
  BYTE                     sGroupName[NAME_LEN];
  BYTE                     byJointMatrix;
  BYTE                     byRes;
}NET_DVR_INPUTSTREAMCFG,*LPNET_DVR_INPUTSTREAMCFG;

Members

dwSize
结构体大小
byValid
是否有效
byCamMode
信号输入源类型，定义详见NET_DVR_CAM_MODE
wInputNo
信号源序号：0~224
sCamName
信号输入源名称
struVideoEffect
视频参数
struPuStream
输入流参数，ip输入时使用
wBoardNum
信号源所在的板卡号，只能获取
wInputIdxOnBoard
信号源在板卡上的位置，只能获取
wResolutionX
分辨率X*Y
wResolutionY
分辨率X*Y
byVideoFormat
视频制式，0-无，1-NTSC，2-PAL
byNetSignalResolution
网络信号源的分辨率：1- CIF，2- 4CIF，3- 720P，4- 1080P，5- 500万像素，在添加网络信号源时传给设备，设备根据这个分辨率来分配解码资源
sGroupName
网络信号源分组的组名
byJointMatrix
关联矩阵：0-不关联，1-关联，当输入信号源为NET_DVR_CAM_BNC、NET_DVR_CAM_VGA、NET_DVR_CAM_DVI、NET_DVR_CAM_HDMI中的一种时，该参数有效。
byRes
保留，置为0

Remarks

对于本地信号源和矩阵信号源，只有sCamName和struVideoEffect可以设置；其他参数只能获取，不能设置。

See Also

NET_DVR_SetDVRConfig


NET_DVR_INPUTVOLUME

音量信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byAudioInputChan;
  BYTE     byRes[63];
}NET_DVR_INPUTVOLUME,*LPNET_DVR_INPUTVOLUME;

Members

dwSize
结构体大小
byAudioInputChan
音频输入通道号
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_INQUEST_ALARM

审讯机报警信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAlarmType;
  BYTE     byTrayNo;
  BYTE     byRes[3];
  DWORD    dwInquestTime;
  DWORD    dwNotifyChannel;
  BYTE     byRes1[244];
}NET_DVR_INQUEST_ALARM,*LPNET_DVR_INQUEST_ALARM;

Members

dwSize
结构体大小
dwAlarmType
报警类型：0- 光盘满，1- 光盘错误
byTrayNo
光驱号
byRes
保留，置为0
dwInquestTime
已审讯时间,当dwAlarmType=2时有效,单位:秒
dwNotifyChannel
审讯时间超时提醒通道号
byRes1
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_INQUEST_CASE_INFO

审讯案件信息配置结构体。

struct{
  DWORD    dwSize;
  BYTE     sCaseNo[INQUEST_CASE_NO_LEN];
  BYTE     sCaseName[INQUEST_CASE_NAME_LEN];
  BYTE     sCustomInfo1[CUSTOM_INFO_LEN];
  BYTE     sCustomInfo2[CUSTOM_INFO_LEN];
  BYTE     sCustomInfo3[CUSTOM_INFO_LEN];
  BYTE     byShowCaseInfoTime;
  BYTE     byShowCaseInfo;
  BYTE     byPosition;
  BYTE     byRes[257];
}NET_DVR_INQUEST_CASE_INFO,*LPNET_DVR_INQUEST_CASE_INFO;

Members

dwSize
结构体大小
sCaseNo
案件编号
sCaseName
案件名称
sCustomInfo1
自定义信息1
sCustomInfo2
自定义信息2
sCustomInfo3
自定义信息3
byShowCaseInfoTime
案件信息显示时间，单位秒，取值范围：1~60秒
byShowCaseInfo
案件开始是否显示案件信息：0- 不显示，1- 显示
byPosition
案件显示位置：0- 左上，1- 左下
byRes
保留，置为0

Remarks

  • 设备是否支持案件信息配置功能或者支持的参数能力，可以通过设备能力集进行判断，对应审讯机能力集(InquestAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<InquestCaseInfoConfig>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_INQUEST_CDRW

单个刻录状态信息结构体。

struct{
  DWORD    dwEnable;
  DWORD    dwStatus;
  DWORD    dwVolumn;
  DWORD    dwFreeSpace;
  DWORD    dwTimeLeft;
  BYTE     byCDTyp;
  BYTE     byRes[3];
}NET_DVR_INQUEST_CDRW,*LPNET_DVR_INQUEST_CDRW;

Members

dwEnable
刻录机状态是否有效：0-无效，1-有效
dwStatus
刻录机状态
dwVolumn
光盘容量，单位：M
dwFreeSpace
光盘剩余容量，单位：M
dwTimeLeft
光盘剩余时间，单位：秒
byCDTyp
光盘类型：
0x11- DVD-R Sequential（顺序读写），
0x12- DVD-RAM（随机存储），
0x13- DVD-RW Restricted Overwrite（顺序读写存取，重写次数有限额，大概1000次），
0x14- DVD-RW Sequential（顺序读写），
0x15- DVD-R Dual Layer Sequential（顺序读写，单面双层刻录，容量8.5GB），
0x1A- DVD+RW，
0x1B- DVD+R，
0x2A- DVD+RW Double Layer（单面双层刻录，容量8.5GB），
0x2B- DVD+R Double Layer（单面双层刻录，容量8.5GB），
0x41- BD-R SRM（单次使用）
0x43- BD-RE（可搽抹光盘，可以多次重复读写）
byRes
保留

Remarks

该结构中的参数dwStatus与结构体NET_DVR_INQUEST_CDRW_STATUS中的dwType参数相关，详见如下：
当dwType=0时，0-光盘正常，1-无光盘或光盘异常
当dwType=1或2时，0-刻录正常，1-无光盘或光盘异常，2-光盘已封盘(81不支持)，3-光盘空间不足，4-异常导致审讯终止(81不支持)
当dwType=3时，0-刻录正常，1-无光盘或光盘异常，2-光盘已封盘(81不支持)，3-光盘空间不足
当dwType=4时，0-刻录正常，1-无光盘或光盘异常，2-光盘已封盘(81不支持)，3-光盘空间不足
当dwType=5时，0-刻录正常，1-无光盘或光盘异常，2-光盘已封盘(81不支持)
当dwType=6或7时，0-刻录正常，1-无光盘或光盘异常，2-光盘已封盘(81不支持)，3-光盘空间不足

See Also

NET_DVR_INQUEST_CDRW_STATUS


NET_DVR_INQUEST_CDRW_CFG

刻录参数结构体。

struct{
  DWORD   dwSize;
  DWORD   dwNum;
  DWORD   dwRwSelectPara[MAX_CHANNUM_V30];
  DWORD   dwModeSelect;
  BYTE    byRes[24];
  DWORD   dwStartCDRW;
  DWPRD   dwHdExcp;
  DWORD   dwInterval;
  char    sLable[64];
}NET_DVR_INQUEST_CDRW_CFG, *LPNET_DVR_INQUEST_CDRW_CFG;

Members

dwSize
结构体大小
dwNum
刻录机的个数
dwRwSelectPara
各通道与刻录机之间的关联（是否选中该刻录机）：0-不选中，1-选中。如：dwRwSelectPara[0]表示通道1与各刻录机的关联，按位表示刻录机是否选中，第一位表示1号刻录机是否选中
dwModeSelect
刻录模式：0-循环刻录模式，1-并行刻录模式(默认模式)
byRes
保留，置为0
dwStartCDRW
本地是否开始刻录：0-未开始刻录，1-已开始刻录
dwHdExcp
硬盘是否有异常：0-无异常，1-有异常
dwInterval
时间间隔：0-10分钟、1-20分钟、2-30分钟
sLable
光盘名称

See Also

NET_DVR_InquestGetCDRWScheme NET_DVR_InquestSetCDRWScheme


NET_DVR_INQUEST_CDRW_STATUS

刻录状态信息结构体。

struct{
  DWORD                   dwType;
  NET_DVR_INQUEST_CDRW    strCDRWNum[MAX_INQUEST_CDRW_NUM];
  NET_DVR_TIME_EX         struInquestStartTime;
  BYTE                    byRes[16];
}NET_DVR_INQUEST_CDRW_STATUS,*LPNET_DVR_INQUEST_CDRW_STATUS;

Members

dwType
运行状态：0-审讯开始，1-审讯过程中刻录，2-审讯停止，3-刻录审讯文件，4-备份(事后备份和本地备份)， 5-空闲，6-初始化硬盘，7-恢复审讯
strCDRWNum
刻录状态，数组0表示刻录机1，数组1表示刻录机2，以此类推。
struInquestStartTime
审讯开始的时间点
byRes
保留

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_INQUEST_DEVICE_VERSION

审讯设备版本信息结构体。

struct{
  BYTE    byMainVersion;
  BYTE    bySubVersion;
  BYTE    byUpgradeVersion;
  BYTE    byCustomizeVersion;
  BYTE    byRes[60];
}NET_DVR_INQUEST_DEVICE_VERSION, *LPNET_DVR_INQUEST_DEVICE_VERSION;

Members

byMainVersion
基线主版本
bySubVersion
基线次版本
byUpgradeVersion
升级版本。如果未升级的，版本为0
byCustomizeVersion
定制版本。如果是非定制的，版本为0
byRes
保留

Remarks

主版本为0，设备为未知版本。
主版本为1，设备为8000系列审讯DVR。如果次版本为1，设备为8000HD-S。
主版本为2，设备为8100系列审讯DVR。如果次版本为1，设备为审讯81SNL；如果次版本为2，设备为审讯81SH；如果次版本为3，设备为审讯81SFH。
主版本为3，设备为8608高清审讯NVR。如果次版本为1，设备为DS-8608SN-SP；如果次版本为2，设备为DS-8608SN-ST。

See Also

NET_DVR_InquestGetDeviceVersion


NET_DVR_INQUEST_FILEINFO

审讯文件信息结构体。

struct{
  char    sFileName[36];
  DWORD   dwFileLen;
}NET_DVR_INQUEST_FILEINFO,*LPNET_DVR_INQUEST_FILEINFO;

Members

sFileName
文件名
dwFileLen
文件大小

See Also

NET_DVR_INQUEST_FILES


NET_DVR_INQUEST_FILES

审讯文件结构体。

struct{
  DWORD                       dwFileNum;
  NET_DVR_INQUEST_FILEINFO    struFileInfo[MAX_RECORD_FILE_NUM];
  DWORD                       dwCDIndex;
  BYTE                        bFinalizeDisc;
}NET_DVR_INQUEST_FILES,*LPNET_DVR_INQUEST_FILES;

Members

dwFileNum
删除的文件数，一次最多20个
struFileInfo
单个文件的信息
dwCDIndex
刻录机的索引：1-1号刻录机，2-2号刻录机，3-3号刻录机，4-4号刻录机，5-所有刻录机
bFinalizeDisc
0-刻录完之后不封盘；1-刻录完之后封盘

Remarks

该结构中的后面两个参数仅当刻录时有效。

See Also

NET_DVR_InquestCDWByFile NET_DVR_InquestDeleteFile_V30


NET_DVR_INQUEST_MESSAGE

重点标记信息结构体。

struct{
  char                  sMessage[INQUEST_MESSAGE_LEN];
  BYTE                  byRes[46];
}NET_DVR_INQUEST_MESSAGE, *LPNET_DVR_INQUEST_MESSAGE;

Members

sMessage
重点标记信息
byRes
保留

See Also

NET_DVR_InquestSendMessage


NET_DVR_INQUEST_MIX_AUDIOIN_CFG

审讯机音频输入混音配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwMixCnt;
  BYTE     bySrcChan[MAX_MIX_CHAN_NUM];
  BYTE     byLineIn[MAX_LINE_IN_CHAN_NUM];
  BYTE     byMic[MAX_MIC_CHAN_NUM];
  BYTE     byMixAudioDelay;
  BYTE     byRes2[127];
}NET_DVR_INQUEST_MIX_AUDIOIN_CFG,*LPNET_DVR_INQUEST_MIX_AUDIOIN_CFG;

Members

dwSize
结构体大小
byEnable
是否启用混音：0- 不启用，1- 启用
byRes1
保留，置为0
dwMixCnt
混音的通道数
bySrcChan
数组下标表示混音通道号（模拟通道、IP通道），数组取值：0- 不混入，1- 混入
byLineIn
数组下标表示混入Line In通道号，数组取值：0- 不混入，1- 混入
byMic
数组下标表示混入Mic通道号，数组取值：0- 不混入，1- 混入
byMixAudioDelay
混音延迟，单位：帧，取值范围：0~63
byRes2
保留，置为0

Remarks

  • Line In和Mic各自不能同时混到不同的审讯通道。
  • 设备是否支持音频输入混音配置功能或者支持的参数能力，可以通过设备能力集进行判断，对应审讯机能力集(InquestAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<InquestMixAudoiInCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_INQUEST_PIP_PARAM

画中画位置信息结构体。

struct{
  BYTE   byPipChan;
  BYTE   byRes[3];
  WORD   wTopLeftX;
  WORD   wTopLeftY;
}NET_DVR_INQUEST_PIP_PARAM,*LPNET_DVR_INQUEST_PIP_PARAM;

Members

byPipChan
画中画显示的通道，0xFF表示关闭
byRes
保留
wTopLeftX
画中画的x坐标
wTopLeftY
画中画的y坐标

See Also

NET_DVR_INQUEST_PIP_STATUS


NET_DVR_INQUEST_PIP_PARAM_V40

画中画位置信息结构体。

struct{
  BYTE   byPipChan;
  BYTE   byRes1[3];
  WORD   wTopLeftX;
  WORD   wTopLeftY;
  WORD   wHeight;
  WORD   wWidth;
  BYTE   byRes2[32];
}NET_DVR_INQUEST_PIP_PARAM_V40,*LPNET_DVR_INQUEST_PIP_PARAM_V40;

Members

byPipChan
画中画显示的通道，0xFF表示关闭
byRes1
保留
wTopLeftX
画中画的x坐标
wTopLeftY
画中画的y坐标
wHeight
画中画的高
wWidth
画中画的宽
byRes2
保留

See Also

NET_DVR_INQUEST_PIP_STATUS_V40


NET_DVR_INQUEST_PIP_STATUS

画中画状态信息结构体。

struct{
  BYTE                        byBaseChan;
  BYTE                        byBackChan;
  BYTE                        byPIPMode;
  BYTE                        byRes;
  NET_DVR_INQUEST_PIP_PARAM   strPipPara[MAX_INQUEST_PIP_NUM];
}NET_DVR_INQUEST_PIP_STATUS,*LPNET_DVR_INQUEST_PIP_STATUS;

Members

byBaseChan
显示画中画所在的通道
byBackChan
显示画中画背景通道
byPIPMode
是否开启
0-当前窗口无小画面
1-当前窗口有1个小画面
2-当前窗口有2个小画面
3-当前窗口有3个小画面
255-当前窗口关闭预览画面
byRes
保留
strPipPara
画面位置的参数

See Also

NET_DVR_InquestGetPIPStatus_V30


NET_DVR_INQUEST_PIP_STATUS_V40

画中画状态信息结构体。

struct{
  NET_DVR_STRUCTHEAD               struStructHead;
  BYTE                             byBaseChan;
  BYTE                             byBackChan;
  BYTE                             byPIPMode;
  BYTE                             byPipCount;
  BYTE                             byPicShowMode;
  BYTE                             byRes[31];
  NET_DVR_INQUEST_PIP_PARAM_V40    strPipPara[MAX_INQUEST_PIP_NUM_EX];
}NET_DVR_INQUEST_PIP_STATUS_V40,*LPNET_DVR_INQUEST_PIP_STATUS_V40;

Members

struStructHead
结构体的头信息
byBaseChan
显示画中画所在的通道，即审讯通道，对于录播主机导播通道配置时该参数无效（值默认为1）
byBackChan
显示画中画背景通道，即大画面所在的数字通道
byPIPMode
是否开启
0-当前窗口无小画面
1-当前窗口有1个小画面
2-当前窗口有2个小画面
3-当前窗口有3个小画面
5-当前窗口有5个小画面
7-当前窗口有7个小画面
8-当前窗口有8个小画面
9-当前窗口有9个小画面
255-当前窗口关闭预览画面
byPipCount
小画面的个数
byPicShowMode
画面显示模式：0- 画中画，1- 画面均分，2- 画面拼接
byRes
保留
strPipPara
画面位置的参数

See Also

NET_DVR_InquestGetPIPStatus_V40


NET_DVR_INQUEST_RESUME_EVENT

需恢复的事件信息结构体。

struct{
  DWORD                             dwResumeNum;
  NET_DVR_INQUEST_RESUME_SEGMENT    struResumeSegment[MAX_RESUME_SEGMENT];
  BYTE                              byResumeMode;
  BYTE                              byCDPrintEnbled;
  BYTE                              byRes[198];
}NET_DVR_INQUEST_RESUME_EVENT, *LPNET_DVR_INQUEST_RESUME_EVENT;

Members

dwResumeNum
需恢复的事件个数
struResumeSegment
需恢复的事件片段信息
byResumeMode
恢复模式：0- 单光盘恢复，1- 双光盘恢复
byCDPrintEnbled
恢复完成后，是否使能光盘封面打印功能 0-否 1-开启
byRes
保留

See Also

NET_DVR_InquestResumeEvent


NET_DVR_INQUEST_RESUME_SEGMENT

事件片段信息结构体。

struct{
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struStopTime;
  BYTE            byRoomIndex;
  BYTE            byDriveIndex;
  WORD            wSegmetSize;
  DWORD           dwSegmentNo;
  BYTE            byRes[24];
}NET_DVR_INQUEST_RESUME_SEGMENT, *LPNET_DVR_INQUEST_RESUME_SEGMENT;

Members

struStartTime
事件起始时间
struStopTime
事件终止时间
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，1开始
wSegmetSize
本片断的大小，单位M
dwSegmentNo
本片断在本次审讯中的序号，从1开始
byRes
保留

See Also

NET_DVR_INQUEST_RESUME_EVENT


NET_DVR_INQUEST_ROOM

审讯室信息结构体。

struct{
  BYTE    byRoomIndex;
  BYTE    byFileType;
  BYTE    byRes[22];
}NET_DVR_INQUEST_ROOM, *LPNET_DVR_INQUEST_ROOM;

Members

byRoomIndex
审讯室编号
byFileType
文件类型（审讯中暂停刻录或者恢复刻录时该参数无效）：0- 审讯文件，1- 开庭上传文件
byRes
保留


NET_DVR_INQUEST_ROOM_INFO

审讯室信息结构体。

struct{
  char    szCDName[NAME_LEN];
  union{
           BYTE    byBitRate;
           BYTE    byInquestTime;
  }uCalcMode;
  BYTE    byCalcType;
  BYTE    byAutoDelRecord;
  BYTE    byAlarmThreshold;
  BYTE    byInquestChannelResolution;
  BYTE    byAutoOpenTray;
  BYTE    byCDPrintEnabled;
  BYTE    byRes[9];
}NET_DVR_INQUEST_ROOM_INFO,*LPNET_DVR_INQUEST_ROOM_INFO;

Members

szCDName
光盘名称，单室双刻光盘名称是一样的
byBitRate
码率，单位：Kbps，byCalcType为0时有效：0-32，1-48，2-64，3-80，4-96，5-128，6-160，7-192，8-224，9-256，10-320，11-384，12-448， 13-512，14-640，15-768，16-896，（前16个值保留)，17-1024，18-1280，19-1536，20-1792，21-2048，22-3072，23-4096，24-8192，25-6144
byInquestTime
时间，byCalcType为1时有效：0-1小时, 1-2小时，2-3小时，3-4小时，4-6小时，5-8小时，8-16小时，9-20小时，10-22小时，11-24小时
byCalcType
刻录计算类型：0-按码率，1-按时间
byAutoDelRecord
是否自动删除录像：0-不删除（即结束时保存录像），1-删除
byAlarmThreshold
声音报警阀值
byInquestChannelResolution
审讯通道分辨率：0- 720P，1- 1080P，2- CIF，3- 4CIF，4- WD1，5- VGA
byAutoOpenTray
是否自动弹仓：0- 否，1- 是
byCDPrintEnabled
恢复完成后，是否使能光盘封面打印功能 0-否 1-开启
byRes
保留

Remarks

设备支持的刻录参数取值可以通过NET_DVR_GetDeviceAbility获取。

See Also

NET_DVR_INQUEST_SYSTEM_INFO


NET_DVR_INQUEST_SECRET_INFO

设备码流加密密钥信息结构体。

struct{
  BYTE   sSecretKey[16];
  BYTE   byRes[64];
}NET_DVR_INQUEST_SECRET_INFO,*LPNET_DVR_INQUEST_SECRET_INFO;

Members

sSecretKey
码流加密密钥
byRes
保留

See Also

NET_DVR_InquestSetSecretKey


NET_DVR_INQUEST_SENSOR_DEVICE

传感器设备信息结构体。

struct{
  WORD    wDeviceType;
  WORD    wDeviceAddr;
  BYTE    byRes[28];
}NET_DVR_INQUEST_SENSOR_DEVICE, *LPNET_DVR_INQUEST_SENSOR_DEVICE;

Members

wDeviceType
数据采集设备型号：1-米乐，2-镭彩，3-优力，4-佳盟，5-永控，6-垅上，7-维纳斯达
wDeviceAddr
数据采集设备地址
byRes
保留

See Also

NET_DVR_INQUEST_SENSOR_INFO


NET_DVR_INQUEST_SENSOR_INFO

传感器配置结构体。

struct{
  NET_DVR_INQUEST_SENSOR_DEVICE    struSensorDevice[INQUEST_MAX_ROOM_NUM];
  DWORD                            dwSupportPro;
  BYTE                             byRes[120];
}NET_DVR_INQUEST_SENSOR_INFO, *LPNET_DVR_INQUEST_SENSOR_INFO;

Members

struSensorDevice
传感器设备信息
dwSupportPro
支持协议类型，按位表示。
0x1:米乐
0x2:镭彩
0x4:优力
审讯NVR支持协议类型请通过能力集（NET_DVR_GetDeviceAbility）获取。
byRes
保留

See Also

NET_DVR_INQUEST_SYSTEM_INFO


NET_DVR_INQUEST_SYSTEM_INFO

审讯机系统信息结构体。

struct{
  DWORD                         dwRecordMode;
  DWORD                         dwWorkMode;
  DWORD                         dwResolutionMode;
  NET_DVR_INQUEST_SENSOR_INFO   struSensorInfo;
  NET_DVR_INQUEST_ROOM_INFO     struInquestRoomInfo[INQUEST_MAX_ROOM_NUM];
  BYTE                          byEnableHashCheck;
  BYTE                          byEnableInitCD;
  BYTE                          byCDProcessingMode;
  BYTE                          byRes[21];
}NET_DVR_INQUEST_SYSTEM_INFO, *LPNET_DVR_INQUEST_SYSTEM_INFO;

Members

dwRecordMode
刻录模式：1-单室双刻模式，2-单室轮刻模式，3-双室双刻模式，修改需要重启设备
dwWorkMode
工作模式：0-标准模式，1-通用模式(保留，目前只有标准模式)
dwResolutionMode
设备分辨率：0-标清，1-D1，2-720P，3-1080P，高清审讯机分辨率请参见参数struInquestRoomInfo
struSensorInfo
温湿度传感器配置信息
struInquestRoomInfo
审讯室信息
byEnableHashCheck
是否启用对光盘数据HASH值校验：0- 无意义，1- 不启用，2- 启用
byEnableInitCD
是否启用初始化光盘：0- 无意义，1- 不启用，2- 启用
byCDProcessingMode
1.存盘模式 2-出盘模式 存盘模式：刻录完成的光盘归档到出盘桶上；刻录失败的光盘，机械臂将坏盘直接通过中间的出盘位置弹出。出盘模式：将刻录好的光盘从中间的出盘位置出盘，刻录失败的光盘放到出盘桶里
byRes
保留

See Also

NET_DVR_InquestGetSystemInfo NET_DVR_InquestSetSystemInfo


NET_DVR_INQUEST_USER_RIGHT_CFG

审讯机用户权限配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byLocalRight[MAX_RIGHT];
  BYTE     byRemoteRight[MAX_RIGHT];
  BYTE     byNetAudioRight[MAX_CHANNUM_V40];
  BYTE     byRes[512*9];
}NET_DVR_INQUEST_USER_RIGHT_CFG,*LPNET_DVR_INQUEST_USER_RIGHT_CFG;

Members

dwSize
结构体大小
byLocalRight
本地权限，数组取值：0- 无权限，1- 有权限，每位数组表示一种权限类型：
数组0: 审讯记录删除权限
byRemoteRight
远程权限，数组取值：0- 无权限，1- 有权限，每位数组表示一种权限类型：
数组0: 远程音频预览权限
byNetAudioRight
远程音频预览权限通道，数组下标表示通道，数组值表示有无权限：0- 无权限，1- 有权限
byRes
保留，置为0

Remarks

  • 普通用户只能获取权限，不支持设置权限。
  • 设备是否支持审讯机用户权限功能或者支持的参数能力，可以通过设备能力集进行判断，对应审讯机能力集(InquestAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<InquestUserRight>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_INTRUSION_SEARCHCOND

区域入侵录像查找条件参数结构体。

struct{
  NET_VCA_INTRUSION             struVcaIntrusion[MAX_INTRUSIONREGION_NUM];
  DWORD                         dwPreTime;
  DWORD                         dwDelayTime;
  NET_DVR_PTZPOS_INFO           struPTZPosInfo;
  BYTE                          byAdvanceType;
  BYTE                          byRes1[3];
  NET_DVR_ADVANCE_COND_UNION    uAdvanceCond;
  BYTE                          byRes[5348];
}NET_DVR_INTRUSION_SEARCHCOND,*LPNET_DVR_INTRUSION_SEARCHCOND;

Members

struVcaIntrusion
入侵区域参数
dwPreTime
智能报警提前时间，单位：秒
dwDelayTime
智能报警延迟时间，单位：秒
struPTZPosInfo
PTZ坐标信息
byAdvanceType
组合方式：0- 不使用组号，1- 和人脸属性组合，2- 与物体颜色占比组合
byRes1
保留，置为0
uAdvanceCond
组合属性
byRes
保留，置为0

See Also

NET_DVR_AREA_SMARTSEARCH_COND_UNION


NET_DVR_INVALID_DISK_PARAM

无效磁盘参数结构体。

struct{
  NET_DVR_STRUCTHEAD    struStructHead;
  DWORD                 dwDiskNo;
  BYTE                  byDelAll;
  BYTE                  byRes[31];
}NET_DVR_INVALID_DISK_PARAM,*LPNET_DVR_INVALID_DISK_PARAM;

Members

struStructHead
结构体的头信息
dwDiskNo
磁盘号
byDelAll
0- 删除dwDiskNo号磁盘，1- 删除全部无效磁盘
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_IO_INCFG

IO输入配置参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byIoInStatus;
  BYTE       byRes[3];
}NET_DVR_IO_INCFG, *LPNET_DVR_IO_INCFG;

Members

dwSize
结构体大小
byIoInStatus
输入的IO口状态，0-下降沿，1-上升沿，2-上升沿和下降沿，3-高电平，4-低电平
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IO_OUTCFG

IO输出配置参数结构体。

struct{
  DWORD   dwSize;
  BYTE    byDefaultStatus;
  BYTE    byIoOutStatus;
  WORD    wAheadTime;
  DWORD   dwTimePluse;
  DWORD   dwTimeDelay;
  BYTE    byFreqMulti;
  BYTE    byDutyRate;
  BYTE    byRes[2];
}NET_DVR_IO_OUTCFG, *LPNET_DVR_IO_OUTCFG;

Members

dwSize
结构体大小
byDefaultStatus
IO默认状态：0-低电平，1-高电平
byIoOutStatus
IO起效时状态：0-低电平，1-高电平，2-脉冲
wAheadTime
输出IO提前时间，单位us，取值范围[0,300]
dwTimePluse
脉冲间隔时间，单位us
dwTimeDelay
IO有效持续时间，单位us
byFreqMulti
倍频，数值范围[1,15]
byDutyRate
占空比，[0,40%]
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IO_RELATION_INFO

矩阵输入输出关联关系信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwIORelation[MATRIX_MAX_OUTPUT_NUM];
  BYTE     byRes[256];
}NET_DVR_IO_RELATION_INFO,*LPNET_DVR_IO_RELATION_INFO;

Members

dwSize
结构体大小
dwIORelation
输出通道关联的输入通道号，dwIORelation[i] = j表示输出通道(i+1)和输入通道j关联，dwIORelation[i] = 0表示输出通道i+1未关联输入通道。对于LCD拼接屏（屏幕服务器），表示屏幕和矩阵输入的关联关系，i+1为屏幕索引序号（从1开始），j为矩阵输入通道号
byRes
保留，置为0

See Also

矩阵切换器：NET_DVR_GetDVRConfig

LCD拼接屏：NET_DVR_GetDVRConfig


NET_DVR_IOOUT_CFG

补光灯参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode;
  BYTE     byRes1[3];
  union{
           BYTE                 byUnionLen[128];
           struct{
           BYTE                 byDefaultState;
           BYTE                 byWorkState;
           BYTE                 byFreqMulti;
           BYTE                 byDutyRatio;
           BYTE                 byRes[3];
           BYTE                 byFlashLightEnable;
           NET_DVR_SCHEDTIME    struFlashLightTime;
           BYTE                 byRes1[116];
           }struStrobeLamp;
  }uWorkModeInfo;
  BYTE     byRes2[128];
}NET_DVR_IOOUT_CFG,*LPNET_DVR_IOOUT_CFG;

Members

dwSize
结构体大小
byWorkMode
输出口工作模式：0-报警输出，1-频闪灯(默认)
byRes1
保留，置为0
uWorkModeInfo为输出口工作模式配置联合体
byUnionLen
联合体大小，128字节
struStrobeLamp结构为频闪灯参数
byDefaultState
默认状态：0- 低电平(默认)，1- 高电平
byWorkState
生效状态：0- 低电平(默认)，1- 高电平，2- 脉冲
byFreqMulti
倍频，取值范围：[1,15]
byDutyRatio
占空比，取值范围：[0,40%]
byRes
保留
byFlashLightEnable
设置闪光灯时间使能：0- 关，1- 开
struFlashLightTime
启用闪光灯时间
byRes1
保留
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_IOOUT_COND

补光灯参数配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     bySyncOutputNo;
  BYTE     byRes[63];
}NET_DVR_IOOUT_COND,*LPNET_DVR_IOOUT_COND;

Members

dwSize
结构体大小
bySyncOutputNo
同步输出号：0- F1，1- F2，2- F3
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_IP_ADDRESS

设备IP地址信息结构体。

struct{
  BYTE    byDevAddress[MAX_DOMAIN_NAME];
  WORD    wDevPort;
  BYTE    byres[134];
}NET_DVR_IP_ADDRESS, *LPNET_DVR_IP_ADDRESS;

Members

byDevAddress
设备IP地址
wDevPort
设备端口号
byres
保留

See Also

NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX


NET_DVR_IP_ALARM_GROUP_NUM

报警输入输出组数信息。

struct{
  DWORD    dwSize;
  DWORD    dwIPAlarmInGroup;
  DWORD    dwIPAlarmInNum;
  DWORD    dwIPAlarmOutGroup;
  DWORD    dwIPAlarmOutNum;
  BYTE     byRes[64];
}NET_DVR_IP_ALARM_GROUP_NUM, *LPNET_DVR_IP_ALARM_GROUP_NUM;

Members

dwSize
结构体大小
dwIPAlarmInGroup
IP通道报警输入组数
dwIPAlarmInNum
IP通道报警输入个数
dwIPAlarmOutGroup
IP通道报警输出组数
dwIPAlarmOutNum
IP通道报警输出个数
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_IP_VIEW_AUDIO_CFG

IP可视对讲主机音频参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byAudioEncPri1;
  BYTE     byAudioEncPri2;
  WORD     wAudioPacketLen1;
  WORD     wAudioPacketLen2 ;
  BYTE     byRes[30];
}NET_DVR_IP_VIEW_AUDIO_CFG,*LPNET_DVR_IP_VIEW_AUDIO_CFG;

Members

dwSize
结构体大小
byAudioEncPri1
音频编码优先级1：0- G722，1- G711_U，2- G711_A，5- MP2L2，6- G726，7- AAC
byAudioEncPri2
音频编码优先级2（当sip服务器不支持音频编码1时会使用音频编码2）：0-G722，1-G711_U，2-G711_A，5-MP2L2，6-G726，7-AAC
wAudioPacketLen1
音频编码1数据包长度，取值：0- 160字节，1- 320字节
wAudioPacketLen2
音频编码2数据包长度，取值：0- 160字节，1- 320字节
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IP_VIEW_CALL_CFG

IP可视对讲主机呼叫参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableAutoResponse;
  BYTE     byAudoResponseTime;
  BYTE     byRes1[2];
  BYTE     byEnableAlarmNumber1;
  BYTE     byRes2[3];
  WORD     byAlarmNumber1[MAX_NUMBER_LEN];
  BYTE     byEnableAlarmNumber2;
  BYTE     byRes3[3];
  BYTE     byAlarmNumber2[MAX_NUMBER_LEN];
  BYTE     byRes4[72];
}NET_DVR_IP_VIEW_CALL_CFG,*LPNET_DVR_IP_VIEW_CALL_CFG;

Members

dwSize
结构体大小
byEnableAutoResponse
使能自动应答：0-不使能，1-使能
byAudoResponseTime
自动应答时间，取值范围：0~30，单位：秒
byRes1
保留，置为0
byEnableAlarmNumber1
启动报警号码1：0-不启动，1-启动
byRes2
保留，置为0
byAlarmNumber1
呼叫号码1
byEnableAlarmNumber2
启动报警号码2：0-不启动，1-启动
byRes3
保留，置为0
byAlarmNumber2
呼叫号码2，呼叫号码1失败会尝试呼叫号码2
byRes4
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IP_VIEW_DEVCFG

IP可视对讲主机配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byDefaultRing;
  BYTE     byRingVolume;
  BYTE     byInputVolume;
  BYTE     byOutputVolume;
  WORD     wRtpPort;
  BYTE     byRes1[2];
  DWORD    dwPreviewDelayTime;
  BYTE     byRes2[64];
}NET_DVR_IP_VIEW_DEVCFG,*LPNET_DVR_IP_VIEW_DEVCFG;

Members

dwSize
结构体大小
byDefaultRing
默认铃音，取值范围：1~6
byRingVolume
铃音音量，取值范围：0~9
byInputVolume
输入音量值，取值范围：0~6
byOutputVolume
输出音量值，取值范围：0~9
wRtpPort
RTP端口
byRes1
保留，置为0
dwPreviewDelayTime
预览延时配置，0~30秒
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IPADDR

IP地址结构体。

struct{
  char    sIpV4[16];
  BYTE    sIpV6[128];
}NET_DVR_IPADDR, *LPNET_DVR_IPADDR;

Members

sIpV4
设备IPv4地址
sIpV6
设备IPv6地址


NET_DVR_IPADDR_FILTERCFG

IP地址过滤配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byFilterType;
  BYTE     byRes[18];
  BYTE     byIPAddr[1024];
}NET_DVR_IPADDR_FILTERCFG,*LPNET_DVR_IPADDR_FILTERCFG;

Members

dwSize
结构体大小
byEnabled
是否开启IP地址过滤：0- 不启用，1- 启用
byFilterType
IP地址过滤类型：0- 禁止，1- 允许
byRes
保留，置为0
byIPAddr
过滤的IP地址，IP地址字符串组合，以“;”分隔两个IP地址，例如："192.168.1.2;192.168.1.3;192.168.1.4"

Remarks

  • 设备是否支持IP地址过滤配置或者支持的参数能力，可以通过设备能力集进行判断，对应网络应用参数能力集(NetAppAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY，节点：<IPAddrFilter>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IPADDR_UNION

IP地址联合体。

union{
  char    szIPv4[16];
  char    szIPv6[256];
}NET_DVR_IPADDR_UNION, *LPNET_DVR_IPADDR_UNION;

Members

szIPv4
IPv4地址
szIPv6
IPv6地址

See Also

NET_DVR_LINK_ADDR


NET_DVR_IPALARMINCFG

IP报警输入配置结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_IPALARMININFO      struIPAlarmInInfo[MAX_IP_ALARMIN];
}NET_DVR_IPALARMINCFG, *LPNET_DVR_IPALARMINCFG;

Members

dwSize
结构体大小
struIPAlarmInInfo
IP报警输入信息

Remarks

1.IP报警输入资源只能获取，设备从IP设备资源获取对应的报警参数后进行紧凑排列，然后传给网络SDK。
2.IP报警输入资源的下标索引值（0到MAX_IP_ALARMIN -1）加上MAX_ANALOG_ALARMIN对应的是报警输入相关参数（报警输入配置结构等）的下标索引值（MAX_ANALOG_ALARMIN到MAX_ALARMIN_V30-1）。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_IPALARMINCFG_V40

IP报警输入配置（扩展）结构体。

struct{
  DWORD                        dwSize;
  DWORD                        dwCurIPAlarmInNum;
  NET_DVR_IPALARMININFO_V40    struIPAlarmInInfo[MAX_IP_ALARMIN_V40];
  BYTE                         byRes[256];
}NET_DVR_IPALARMINCFG_V40, *LPNET_DVR_IPALARMINCFG_V40;

Members

dwSize
结构体大小
dwCurIPAlarmInNum
当前报警输入口数
struIPAlarmInInfo
IP报警输入信息
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_IPALARMINFO

IPC接入配置改变的报警信息结构体。

struct{
  NET_DVR_IPDEVINFO         struIPDevInfo[MAX_IP_DEVICE];
  BYTE                      byAnalogChanEnable[MAX_ANALOG_CHANNUM];
  NET_DVR_IPCHANINFO        struIPChanInfo[MAX_IP_CHANNEL];
  NET_DVR_IPALARMININFO     struIPAlarmInInfo[MAX_IP_ALARMIN];
  NET_DVR_IPALARMOUTINFO    struIPAlarmOutInfo[MAX_IP_ALARMOUT];
}NET_DVR_IPALARMINFO,*LPNET_DVR_IPALARMINFO;

Members

struIPDevInfo
IP设备信息结构体
byAnalogChanEnable
模拟通道是否启用：0-未启用；1-启用。如byAnalogChanEnable[0]值为1表示模拟通道1启用
struIPChanInfo
IP通道参数
struIPAlarmInInfo
IP报警输入
struIPAlarmOutInfo
IP报警输出

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_IPALARMINFO_V31

IPC接入配置改变的报警信息结构体（扩展）。

struct{
  NET_DVR_IPDEVINFO_V31     struIPDevInfo[MAX_IP_DEVICE];
  BYTE                      byAnalogChanEnable[MAX_ANALOG_CHANNUM];
  NET_DVR_IPCHANINFO        struIPChanInfo[MAX_IP_CHANNEL];
  NET_DVR_IPALARMININFO     struIPAlarmInInfo[MAX_IP_ALARMIN];
  NET_DVR_IPALARMOUTINFO    struIPAlarmOutInfo[MAX_IP_ALARMOUT];
}NET_DVR_IPALARMINFO_V31,*LPNET_DVR_IPALARMINFO_V31;

Members

struIPDevInfo
IP设备信息结构体
byAnalogChanEnable
模拟通道是否启用：0-未启用；1-启用。如byAnalogChanEnable[0]值为1表示模拟通道1启用
struIPChanInfo
IP通道参数
struIPAlarmInInfo
IP报警输入
struIPAlarmOutInfo
IP报警输出

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_IPALARMININFO

IP报警输入信息结构体。

struct{
  BYTE     byIPID;
  BYTE     byAlarmIn;
  BYTE     byRes[18];
}NET_DVR_IPALARMININFO, *LPNET_DVR_IPALARMININFO;

Members

byIPID
IP设备ID，取值范围[1,MAX_IP_DEVICE]，其中#define MAX_IP_DEVICE 32
byAlarmIn
报警输入号
byRes
保留，置为0

See Also

NET_DVR_IPALARMINCFG NET_DVR_IPALARMINFO NET_DVR_IPALARMINFO_V31


NET_DVR_IPALARMININFO_V40

IP报警输入信息结构体。

struct{
  DWORD    dwIPID;
  DWORD    dwAlarmIn;
  BYTE     byRes[32];
}NET_DVR_IPALARMININFO_V40, *LPNET_DVR_IPALARMININFO_V40;

Members

dwIPID
IP设备ID，取值范围[1,MAX_IP_DEVICE_V40]，其中#define MAX_IP_DEVICE_V40 64
dwAlarmIn
IP设备ID对应的报警输入号
byRes
保留，置为0

See Also

NET_DVR_IPALARMINCFG_V40


NET_DVR_IPALARMOUTCFG

IP报警输出配置结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_IPALARMOUTINFO     struIPAlarmOutInfo[MAX_IP_ALARMOUT];
}NET_DVR_IPALARMOUTCFG, *LPNET_DVR_IPALARMOUTCFG;

Members

dwSize
结构体大小
struIPAlarmOutInfo
IP报警输出信息

Remarks

1.IP报警输出资源只能获取，设备从IP设备资源获取对应的报警参数后进行紧凑排列，然后传给设备。
2.IP报警输出资源的下标索引值（0到MAX_IP_ALARMOUT -1）加上MAX_ANALOG_ALARMOUT对应的是报警输出相关参数（报警输出配置结构、联动触发报警输出等）的下标索引值（MAX_ANALOG_ALARMOUT到MAX_ALARMOUT_V30-1）。

See Also

NET_DVR_GetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_IPALARMOUTCFG_V40


NET_DVR_IPALARMOUTCFG_V40

报警输入参数（扩展）结构体。

struct{
  DWORD                         dwSize;
  DWORD                         dwCurIPAlarmOutNum;
  NET_DVR_IPALARMOUTINFO_V40    struIPAlarmOutInfo[MAX_IP_ALARMOUT_V40];
  BYTE                          byRes[256];
}NET_DVR_IPALARMOUTCFG_V40,*LPNET_DVR_IPALARMOUTCFG_V40;

Members

dwSize
结构体大小
dwCurIPAlarmOutNum
当前报警输出口数
struIPAlarmOutInfo
IP报警输出口信息
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_IPALARMOUTCFG


NET_DVR_IPALARMOUTINFO

IP报警输出信息结构体。

struct{
  BYTE     byIPID;
  BYTE     byAlarmOut;
  BYTE     byRes[18];
}NET_DVR_IPALARMOUTINFO, *LPNET_DVR_IPALARMOUTINFO;

Members

byIPID
IP设备ID，取值范围[1,MAX_IP_DEVICE]，其中#define MAX_IP_DEVICE 32
byAlarmOut
报警输出号
byRes
保留，置为0

See Also

NET_DVR_IPALARMINFO NET_DVR_IPALARMINFO_V31
NET_DVR_IPALARMOUTCFG


NET_DVR_IPALARMOUTINFO_V40

IP报警输出口信息结构体。

struct{
  DWORD    dwIPID;
  DWORD    dwAlarmOut;
  BYTE     byRes[32];
}NET_DVR_IPALARMOUTINFO_V40, *LPNET_DVR_IPALARMOUTINFO_V40;

Members

dwIPID
IP设备ID，取值范围[1,MAX_IP_DEVICE_V40]，其中#define MAX_IP_DEVICE_V40 64
dwAlarmOut
IP设备ID对应的报警输出号
byRes
保留，置为0

See Also

NET_DVR_IPALARMOUTCFG_V40


NET_DVR_IPC_CFG_FILE_ERR_INFO

IPC接入配置文件导入错误信息结构体。

struct{
  NET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE    struErrInfoSingle[MAX_CHANNUM_V30];
}NET_DVR_IPC_CFG_FILE_ERR_INFO, *LPNET_DVR_IPC_CFG_FILE_ERR_INFO;

Members

struStreamInfo
IPC接入配置文件导入时每个监控点的错误信息，最大64个通道

Remarks

设备通道大于64时，出错状态会回调返回多次，每次对应64个通道的错误信息。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE

错误信息参数结构体。

struct{
  WORD    wRow;
  WORD    wErrCode;
  BYTE    byRes[32];
}NET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE, *LPNET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE;

Members

wRow
出错的行，0表示没出错，1表示第1行出错，以此类推
wErrCode
错误号，具体定义如下：
enum _NET_SDK_IPC_CFG_FILE_ERR_CODE_{
  NET_SDK_IPC_CFG_FILE_NO_ERR = 0,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_INVALID = 1,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_DUPLICATE,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_INVALID,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_DUPLICATE,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_CONFLICT_WITH_LOCAL,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_PROTOCOL_INVALID,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_PORT_INVALID,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_DEVICE_CHANNEL_ERR,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_USER_NAME_ERR,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_PASSWD_ERR,
  NET_SDK_IPC_CFG_FILE_ERR_CODE_TRANSPORT_PROTOCOL_INVALID
}NET_SDK_IPC_CFG_FILE_ERR_CODE
NET_SDK_IPC_CFG_FILE_NO_ERR
没有错误
NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_INVALID
通道ID非法
NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_DUPLICATE
通道ID重复
NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_INVALID
通道IP或域名非法
NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_DUPLICATE
通道IP或域名重复
NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_CONFLICT_WITH_LOCAL
通道IP与本地IP冲突
NET_SDK_IPC_CFG_FILE_ERR_CODE_PROTOCOL_INVALID
协议错误
NET_SDK_IPC_CFG_FILE_ERR_CODE_PORT_INVALID
管理端口错误
NET_SDK_IPC_CFG_FILE_ERR_CODE_DEVICE_CHANNEL_ERR
设备通道号错误
NET_SDK_IPC_CFG_FILE_ERR_CODE_USER_NAME_ERR
用户名不合法
NET_SDK_IPC_CFG_FILE_ERR_CODE_PASSWD_ERR
密码不合法
NET_SDK_IPC_CFG_FILE_ERR_CODE_TRANSPORT_PROTOCOL_INVALID
传输协议错误
byRes
保留

See Also

NET_DVR_IPC_CFG_FILE_ERR_INFO


NET_DVR_IPC_CFG_FILE_PARAM

IPC配置文件参数结构体。

struct{
  char    szFileName[260];
  BYTE    byRes[32];
}NET_DVR_IPC_CFG_FILE_PARAM,*LPNET_DVR_IPC_CFG_FILE_PARAM;

Members

szFileName
配置文件名，绝对路径，包括文件名
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_IPC_NETCFG

IPC的网络参数配置结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  char              res[126];
}NET_DVR_IPC_NETCFG,*LPNET_DVR_IPC_NETCFG;

Members

dwSize
结构体大小
struIP
IPC的IP地址
wPort
IPC的端口
res
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_IPC_PARAM_TYPE

前端参数清空控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwParamType;
  BYTE     byRes[32];
}NET_DVR_IPC_PARAM_TYPE, *LPNET_DVR_IPC_PARAM_TYPE;

Members

dwSize
结构体大小
dwParamType
参数类型，按位表示，值：0- 不清空，1- 清空
宏定义 | 宏定义值 | 含义
IPC_PARAM_AGING_TRICK_SCAN | 0x00000001 | 清除花样扫描参数设置
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_IPC_PASSWD

IPC用户名密码配置结构体。

struct{
  DWORD    dwSize;
  char     sOldPasswd[PASSWD_LEN];
  char     sNewPasswd[PASSWD_LEN];
  BYTE     byRes[32];
}NET_DVR_IPC_PASSWD,*LPNET_DVR_IPC_PASSWD;

Members

dwSize
结构体大小
sOldPasswd
IPC的旧密码，传给设备让设备验证
sNewPasswd
IPC的新密码
byRes
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_IPC_PROTO_LIST

IPC协议列表的结构体。

struct{
  DWORD                dwSize;
  DWORD                dwProtoNum;
  NET_DVR_PROTO_TYPE   struProto[IPC_PROTOCOL_NUM];
  BYTE                 byRes[8];
}NET_DVR_IPC_PROTO_LIST,*LPNET_DVR_IPC_PROTO_LIST;

Members

dwSize
结构体大小
dwProtoNum
有效的IPC协议个数
struProto
有效的IPC协议的参数结构
byRes
保留，置为0

See Also

NET_DVR_GetIPCProtoList


NET_DVR_IPC_PROTO_LIST_V41

IPC协议列表的结构体。

struct{
  DWORD    dwSize;
  DWORD    dwProtoNum;
  BYTE     *pBuffer;
  DWORD    dwBufferLen;
  BYTE     byRes[32];
}NET_DVR_IPC_PROTO_LIST_V41,*LPNET_DVR_IPC_PROTO_LIST_V41;

Members

dwSize
结构体大小
dwProtoNum
有效的IPC协议个数
pBuffer
协议列表缓冲区，保存dwProtoNum个NET_DVR_PROTO_TYPE结构内容
dwBufferLen
缓冲区长度，dwProtoNum个NET_DVR_PROTO_TYPE结构体大小之和
byRes
保留，置为0

See Also

NET_DVR_GetIPCProtoList_V41


NET_DVR_IPCHANINFO

IP通道信息结构体。

struct{
  BYTE     byEnable;
  BYTE     byIPID;
  BYTE     byChannel;
  BYTE     byIPIDHigh;
  BYTE     byRes[32];
}NET_DVR_IPCHANINFO, *LPNET_DVR_IPCHANINFO;

Members

byEnable
IP通道在线状态，是一个只读的属性；0表示HDVR或者NVR设备的数字通道连接对应的IP设备失败，该通道不在线；1表示连接成功，该通道在线
byIPID
IP设备ID的低8位，byIPID = iDevID % 256
byChannel
IP设备的通道号，例如设备A（HDVR或者NVR设备）的IP通道01，对应的是设备B里的通道04，则byChannel=4。
byIPIDHigh
IP设备ID的高8位，byIPIDHigh = iDevID /256
byRes
保留，置为0

Remarks

iDevID为设备ID号，iDevID = byIPIDHigh*256 + byIPID。通过iDevID值查找具体的设备信息struIPDevInfo（结构体NET_DVR_IPPARACFG_V40的数组参数），与设备信息数组下标（iDevInfoIndex）换算关系为：iDevID = iDevInfoIndex + iGroupNO*64 +1。

See Also

NET_DVR_GET_STREAM_UNION NET_DVR_IPALARMINFO NET_DVR_IPALARMINFO_V31

NET_DVR_IPPARACFG NET_DVR_IPPARACFG_V31 NET_DVR_IPPARACFG_V40


NET_DVR_IPCHANINFO_V40

IP通道信息（扩展）结构体。

struct{
  BYTE     byEnable;
  BYTE     byRes1;
  WORD     wIPID;
  DWORD    dwChannel;
  BYTE     byTransProtocol;
  BYTE     byTransMode;
  BYTE     byFactoryType;
  BYTE     byRes;
  BYTE     strURL[URL_LEN];
}NET_DVR_IPCHANINFO_V40, *LPNET_DVR_IPCHANINFO_V40;

Members

byEnable
IP通道在线状态，是一个只读的属性；0表示HDVR或者NVR设备的数字通道连接对应的IP设备失败，该通道不在线；1表示连接成功，该通道在线
byRes1
保留，置为0
wIPID
IP设备ID
dwChannel
IP设备的通道号，例如设备A（HDVR或者NVR设备）的IP通道01，对应的是设备B（DVS）里的通道04，则byChannel=4，如果前端接的是IPC则byChannel=1。
byTransProtocol
传输协议类型：0- TCP，1- UDP，2- 多播，3-RTSP(仅监所智能服务器支持)，0xff- auto(自动)
byTransMode
传输码流模式：0- 主码流，1- 子码流
byFactoryType
前端设备厂家类型，通过接口NET_DVR_GetIPCProtoList获取
byRes
保留，置为0
strURL
RTSP协议取流URL，byTransProtocol为3时有效，仅监所智能服务器支持

See Also

NET_DVR_GET_STREAM_UNION


NET_DVR_IPDEVICE_ACTIVATE_CFG

IP通道前端设备激活参数结构体。

struct{
  DWORD            dwSize;
  BYTE             byMode;
  BYTE             bySelfDefinePassword;
  BYTE             sPassword[PASSWD_LEN];
  BYTE             sUserName[NAME_LEN];
  BYTE             byRes[78];
  union{
           BYTE                  byLen[512];

           struct{
           DWORD                 dwChannelNo;
           BYTE                  byRes[508];
           }struChannelInfo;

           struct{
           NET_DVR_IPADDR   struIp;
           WORD                 wPort;
           BYTE                  sProtocolDesc[DESC_LEN];
           BYTE                  byMacAddr[MACADDR_LEN];
           BYTE                  byRes[344];
           }struAddrInfo;
  }unActivateDeviceInfo;
}NET_DVR_IPDEVICE_ACTIVATE_CFG,*LPNET_DVR_IPDEVICE_ACTIVATE_CFG;

Members

dwSize
结构体大小
byMode
激活方式：0- 按通道激活，1- 按地址激活
bySelfDefinePassword
是否自定义密码：0- 否，1- 是，2-是，且为IPC的自定义密码
sPassword
自定义密码
sUserName
用户名
byRes
保留，置为0
unActivateDeviceInfo结构为激活参数联合体
byLen
联合体大小，512字节
struChannelInfo结构为按通道激活参数
dwChannelNo
通道号
byRes
保留，置为0
struAddrInfo结构为按地址激活参数
struIp
设备IP地址
wPort
设备端口号
sProtocolDesc
协议类型
byMacAddr
MAC物理地址
byRes
保留，置为0

Remarks

  • 该配置参数，对应NVR激活前端设备能力集(VideoSourceActivationCapability)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_ACTIVATE_IPC_ABILITY)。

    • See Also

    NET_DVR_SetSTDConfig


NET_DVR_IPDEVINFO

IP设备信息结构体。

struct{
  DWORD              dwEnable;
  BYTE               sUserName[NAME_LEN];
  BYTE               sPassword[PASSWD_LEN];
  NET_DVR_IPADDR     struIP;
  WORD               wDVRPort;
  BYTE               byRes[34];
}NET_DVR_IPDEVINFO, *LPNET_DVR_IPDEVINFO;

Members

dwEnable
该IP设备是否启用
sUserName
用户名
sPassword
密码
struIP
IP地址
wDVRPort
端口号
byRes
保留，置为0

Remarks

当某个IP设备参数对应的所有IP通道被删除，即IP通道资源的中所有IP通道参数的IPID减1没有与该IP设备参数的下标值相对应的时候，9000设备本地的该IP设备参数将被删除。

See Also

NET_DVR_IPALARMINFO NET_DVR_IPPARACFG


NET_DVR_IPDEVINFO_V31

IP设备信息结构体。

struct{
  BYTE               byEnable;
  BYTE               byProType;
  BYTE               byEnableQuickAdd;
  BYTE               byCameraType;
  BYTE               sUserName[NAME_LEN];
  BYTE               sPassword[PASSWD_LEN];
  BYTE               byDomain[MAX_DOMAIN_NAME];
  NET_DVR_IPADDR     struIP;
  WORD               wDVRPort;
  BYTE               szDeviceID[DEV_ID_LEN];
  BYTE               byEnableTiming;
  BYTE               byCertificateValidation;
}NET_DVR_IPDEVINFO_V31, *LPNET_DVR_IPDEVINFO_V31;

Members

byEnable
该IP设备是否启用
byProType
协议类型(默认为私有协议)：0- 私有协议，1- 松下协议，2- 索尼，更多协议通过NET_DVR_GetIPCProtoList获取。
byEnableQuickAdd
0- 不支持快速添加；1- 使用快速添加，快速添加需要设备IP或设备ID(GB28181协议接入)和协议类型，其他参数信息由设备默认指定
byCameraType
通道接入的相机类型：0-无意义，1-老师跟踪，2-学生跟踪，3-老师全景，4-学生全景，5-多媒体，6–教师定位，7-学生定位，8-板书定位，9-板书相机
sUserName
用户名
sPassword
密码
byDomain
设备域名
struIP
IP地址
wDVRPort
端口号
szDeviceID
设备ID，GB28181协议接入时有效
byEnableTiming
0-保留，1-不启用NVR对IPC自动校时，2-启用NVR对IPC自动校时
byCertificateValidation
是否启用证书。byCertificateValidation:bit0: 0-不启用证书验证 1-启用证书验证，byCertificateValidation:bit1: 0-不启用默认通信端口 1-启用默认通信端口

Remarks

  • 当某个IP设备参数对应的所有IP通道被删除，即IP通道资源的中所有IP通道参数的IPID减1没有与该IP设备参数的下标值相对应的时候，设备本地的该IP设备参数将被删除。
  • 在该结构体中，设备域名为空，ipv4地址有效时，使用ipv4地址去连接设备；ipv4和设备域名都为空，ipv6地址有效时，使用ipv6去连接设备。
  • 当协议类型为GB28181时，设置NET_DVR_IPDEVINFO_V31中的设备IP地址及域名字段无效，byDeviceID字段有；其它协议接入时，byDeviceID无效，设备IP及域名字段有效。

See Also

NET_DVR_IPALARMINFO_V31 NET_DVR_IPPARACFG_V31 NET_DVR_IPPARACFG_V40


NET_DVR_IPPARACFG

IP设备资源及IP通道资源配置结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_IPDEVINFO      struIPDevInfo[MAX_IP_DEVICE];
  BYTE                   byAnalogChanEnable[MAX_ANALOG_CHANNUM];
  NET_DVR_IPCHANINFO     struIPChanInfo[MAX_IP_CHANNEL];
}NET_DVR_IPPARACFG, *LPNET_DVR_IPPARACFG;

Members

dwSize
结构体大小
struIPDevInfo
IP设备，下标0对应设备IP ID为1
byAnalogChanEnable
模拟通道资源是否启用：0-禁用，1-启用。DS-9000该配置修改后会自动重启
struIPChanInfo
IP通道信息

Remarks

1.混合型DVR接的IP设备包括IP Camera和DVS等，struDevInfo保存混合型DVR注册的设备信息； struIPChanInfo的byIPID对应IP设备资源struDevInfo的数组下标索引值加1；IP报警输入资源NET_DVR_IPALARMINCFG 以及IP报警输出资源NET_DVR_IPALARMOUTCFG中的byIPID同样对应NET_DVR_IPPARACFG 的IP设备资源struDevInfo的数组下标索引值加1。

2.模拟通道资源 的下标（0到MAX_ANALOG_CHANNUM-1）与通道相关参数（通道图像参数，压缩参数，录像参数，报警联动及录像触发通道的）下标索引值一一对应，其通道号为下标索引加上设备的起始通道号（结构NET_DVR_DEVICEINFO_V30中的byStartChan）。

3.IP通道资源struIPChanInfo的下标索引值（0到MAX_IP_CHANNEL -1）加上MAX_ANALOG_CHANNUM再加上设备的起始通道号（结构NET_DVR_DEVICEINFO_V30中的byStartChan）对应的是预览以及参数配置要使用的音视频通道号（MAX_ANALOG_CHANNUM+byStartChan到MAX_CHANNUM_V30-1+byStartChan）。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_IPPARACFG_V31


NET_DVR_IPPARACFG_V31

IP设备资源及IP通道资源配置结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_IPDEVINFO_V31   struIPDevInfo[MAX_IP_DEVICE];
  BYTE                    byAnalogChanEnable[MAX_ANALOG_CHANNUM];
  NET_DVR_IPCHANINFO      struIPChanInfo[MAX_IP_CHANNEL];
}NET_DVR_IPPARACFG_V31, *LPNET_DVR_IPPARACFG_V31;

Members

dwSize
结构体大小
struIPDevInfo
IP设备，下标0对应设备IP ID为1
byAnalogChanEnable
模拟通道资源是否启用：0-禁用，1-启用。DS-9000该配置修改后会自动重启
struIPChanInfo
IP通道信息

Remarks

1.混合型DVR设备接的IP设备包括IP Camera和DVS等，struIPDevInfo保存混合型DVR注册的设备信息； struIPChanInfo的byIPID对应IP设备资源struIPDevInfo的数组下标索引值加1；IP报警输入资源NET_DVR_IPALARMINCFG 以及IP报警输出资源NET_DVR_IPALARMOUTCFG中的byIPID同样对应NET_DVR_IPPARACFG_V31的IP设备资源struDevInfo的数组下标索引值加1。

2.模拟通道资源 的下标（0到MAX_ANALOG_CHANNUM-1）与通道相关参数（通道图像参数，压缩参数，录像参数，报警联动及录像触发通道的）下标索引值一一对应，其通道号为下标索引加上设备的起始通道号（结构NET_DVR_DEVICEINFO_V30中的byStartChan）。

3.IP通道资源struIPChanInfo的下标索引值（0到MAX_IP_CHANNEL -1）加上MAX_ANALOG_CHANNUM再加上设备的起始通道号（结构NET_DVR_DEVICEINFO_V30中的byStartChan）对应的是预览以及参数配置要使用的音视频通道号（MAX_ANALOG_CHANNUM+byStartChan到MAX_CHANNUM_V30-1+byStartChan）。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_IPPARACFG


NET_DVR_IPPARACFG_V40

IP设备资源及IP通道资源配置结构体。

struct{
  DWORD                   dwSize;
  DWORD                   dwGroupNum;
  DWORD                   dwAChanNum;
  DWORD                   dwDChanNum;
  DWORD                   dwStartDChan;
  BYTE                    byAnalogChanEnable[MAX_CHANNUM_V30];
  NET_DVR_IPDEVINFO_V31   struIPDevInfo[MAX_IP_DEVICE_V40];
  NET_DVR_STREAM_MODE     struStreamMode[MAX_CHANNUM_V30];
  BYTE                    byRes2[20];
}NET_DVR_IPPARACFG_V40, *LPNET_DVR_IPPARACFG_V40;

Members

dwSize
结构体大小
dwGroupNum
设备支持的总组数（只读）。若设备支持的组数大于1，NET_DVR_GetDVRConfig（或者NET_DVR_SetDVRConfig）获取（或设置）相关通道参数需要按照组数调用多次命令分别获取（或设置）各组通道参数，此时接口中lChannel对应组号。
dwAChanNum
最大模拟通道个数（只读）
dwDChanNum
数字通道个数（只读）
dwStartDChan
起始数字通道（只读）
byAnalogChanEnable
模拟通道资源是否启用，数组下标与通道号一一对应，取值：0-禁用，1-启用。
例如：byAnalogChanEnable[i]=1表示通道(i+1)启用
struIPDevInfo
IP设备信息，下标0对应设备IP ID为1
struStreamMode
取流模式
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_IPPARACFG


NET_DVR_IPSAN_SERACH_PARAM

IPSAN目录查找参数结构体。

struct{
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byRes[10];
}NET_DVR_IPSAN_SERACH_PARAM,*LPNET_DVR_IPSAN_SERACH_PARAM;

Members

struIP
IPSAN IP地址
wPort
IPSAN 端口号
byRes
保留，置为0

See Also

NET_DVR_FindIpSanDirectory


NET_DVR_IPSAN_SERACH_RET

IPSAN文件目录查找结果结构体。

struct{
  BYTE    byDirectory[128];
  BYTE    byRes[20];
}NET_DVR_IPSAN_SERACH_RET,*LPNET_DVR_IPSAN_SERACH_RET;

Members

byDirectory
返回的文件目录
byRes
保留，置为0

See Also

NET_DVR_FindNextDirectory


NET_DVR_IPSERVER_STREAM

IP Server模式配置结构体。

struct{
  BYTE               byEnable;
  BYTE               byRes[3];
  NET_DVR_IPADDR     struIPServer;
  WORD               wPort;
  WORD               wDvrNameLen;
  BYTE               byDVRName[NAME_LEN];
  WORD               wDVRSerialLen;
  WORD               byRes1[2];
  BYTE               byDVRSerialNumber[SERIALNO_LEN];
  BYTE               byUserName[NAME_LEN];
  BYTE               byPassWord[PASSWD_LEN];
  BYTE               byChannel;
  BYTE               byRes2[11];
}NET_DVR_IPSERVER_STREAM, *LPNET_DVR_IPSERVER_STREAM;

Members

byEnable
是否启用
byRes
保留，置为0
struIPServer
IPServer 地址
wPort
IPServer 端口
wDvrNameLen
DVR 名称长度
byDVRName
DVR名称
wDVRSerialLen
序列号长度
byRes1
保留，置为0
byDVRSerialNumber
DVR序列号
byUserName
DVR 登陆用户名
byPassWord
DVR 登陆密码
byChannel
DVR 通道，参数值为通道号，例如byChannel=1表示通道1
byRes2
保留，置为0

See Also

NET_DVR_GET_STREAM_UNION


NET_DVR_ISCSI_PARAM

iSCSI参数结构体。

struct{
  DWORD             dwSize;
  DWORD             dwTargetID;
  DWORD             dwLunID;
  DWORD             dwAccessMode;
  NET_DVR_IPADDR    struClientIP;
  BYTE              byRes[32];
}NET_DVR_ISCSI_PARAM,*LPNET_DVR_ISCSI_PARAM;

Members

dwSize
结构体大小
dwTargetID
iSCSI服务的Target ID
dwLunID
对应LUN卷ID
dwAccessMode
读写方式：0- 读写，1- 同步读写，2- 只读，3-智能只读
struClientIP
客户端IP，"0.0.0.0"为所有IP
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_ISP_CAMERAPARAMCFG

ISP前端参数配置结构体。

struct{
  DWORD                        dwSize;
  BYTE                         byWorkType;
  BYTE                         byRes[3];
  NET_DVR_SCHEDULE_DAYTIME     struDayNightScheduleTime;
  NET_DVR_CAMERAPARAMCFG_EX    struSelfAdaptiveParam;
  NET_DVR_CAMERAPARAMCFG_EX    struDayIspAdvanceParam;
  NET_DVR_CAMERAPARAMCFG_EX    struNightIspAdvanceParam;
  BYTE                         byRes1[512];
}NET_DVR_ISP_CAMERAPARAMCFG, *LPNET_DVR_ISP_CAMERAPARAMCFG;

Members

dwSize
结构体大小
byWorkType
工作模式：0- 自适应(Auto)，1- 定时模式(Scheduled)
byRes
保留，置为0
struDayNightScheduleTime
定时切换时间，byWorkType==1时有效，时间段内为白天，时间段外为夜晚
struSelfAdaptiveParam
自适应参数，byWorkType==0时有效，或者byWorkType==1时不支持定时模式的参数
struDayIspAdvanceParam
白天参数，byWorkType==1时有效
struNightIspAdvanceParam
夜晚参数，byWorkType==1时有效
byRes1
保留，置为0

Remarks

byWorkType设置成定时模式时，NET_DVR_CAMERAPARAMCFG_EX结构体中只有部分参数支持白天和夜晚两套参数（struDayIspAdvanceParam和struNightIspAdvanceParam）切换，支持的参数通过设备前端参数能力集（IPC_FRONT_PARAMETER_V20）获取：字段<ISPAdvanceCfg>的子节点<ISPCfgSupport>；其他参数采用自适应参数(struSelfAdaptiveParam)，struDayIspAdvanceParam和struNightIspAdvanceParam中的这些参数都无效。

2号通道，配置红外镜头参数。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetDeviceAbility


NET_DVR_ITS_ABILITY

交通能力集结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAbilityType;
  BYTE     byMaxRuleNum;
  BYTE     byMaxTargetNum;
  BYTE     byRes[10];
}NET_DVR_ITS_ABILITY,*LPNET_DVR_ITS_ABILITY;

Members

dwSize
结构体大小
dwAbilityType
支持的能力列表
enum _ITS_ABILITY_TYPE_{
  ITS_CONGESTION_ABILITY              = 0x01,
  ITS_PARKING_ABILITY                 = 0x02,
  ITS_INVERSE_ABILITY                 = 0x04,
  ITS_PEDESTRIAN_ABILITY              = 0x08,
  ITS_DEBRIS_ABILITY                  = 0x10,
  ITS_SMOG_ABILITY                    = 0x20,
  ITS_LANE_VOLUME_ABILITY             = 0x010000,
  ITS_LANE_VELOCITY_ABILITY           = 0x020000,
  ITS_TIME_HEADWAY_ABILITY            = 0x040000,
  ITS_SPACE_HEADWAY_ABILITY           = 0x080000,
  ITS_TIME_OCCUPANCY_RATIO_ABILITY    = 0x100000,
  ITS_SPACE_OCCUPANCY_RATIO_ABILITY   = 0x200000,
  ITS_LANE_QUEUE_ABILITY              = 0x400000,
  ITS_VEHICLE_TYPE_ABILITY            = 0x800000,
  ITS_TRAFFIC_STATE_ABILITY           = 0x1000000
}ITS_ABILITY_TYPE
ITS_CONGESTION_ABILITY
拥堵
ITS_PARKING_ABILITY
停车
ITS_INVERSE_ABILITY
逆行
ITS_PEDESTRIAN_ABILITY
行人
ITS_DEBRIS_ABILITY
遗留物，抛洒物碎片
ITS_SMOG_ABILITY
烟雾-隧道
ITS_LANE_VOLUME_ABILITY
车道流量
ITS_LANE_VELOCITY_ABILITY
车道平均速度
ITS_TIME_HEADWAY_ABILITY
车头时距
ITS_SPACE_HEADWAY_ABILITY
车头间距
ITS_TIME_OCCUPANCY_RATIO_ABILITY
车道占有率（时间上)
ITS_SPACE_OCCUPANCY_RATIO_ABILITY
车道占有率，百分比计算（空间上)
ITS_LANE_QUEUE_ABILITY
排队长度
ITS_VEHICLE_TYPE_ABILITY
车辆类型
ITS_TRAFFIC_STATE_ABILITY
交通状态
byMaxRuleNum
最大规则个数
byMaxTargetNum
最大目标个数
byRes
保留

See Also

NET_DVR_GetDeviceAbility


NET_DVR_ITS_CALIBRATION

智能交通事件标定结构体。

struct{
  DWORD            dwPointNum;
  NET_VCA_POINT    struPoint[CALIB_PT_NUM];
  float            fWidth;
  float            fHeight;
  BYTE             byRes1[100];
}NET_DVR_ITS_CALIBRATION, *LPNET_DVR_ITS_CALIBRATION;

Members

dwPointNum
标定点数
struPoint
图像坐标
fWidth
宽度
fHeight
高度
byRes1
保留

See Also

NET_DVR_CALIBRATION_PRARM_UNION


NET_DVR_JOINT_SUB_SYSTEM

关联的子系统信息联合体。

union{
  NET_DVR_NOAMAL_SUB_SYSTEM    struNormalSubSystem;
  NET_DVR_PUBLIC_SUB_SYSTEM    struPublicSubSystem;
  BYTE                         byRes[20];
}NET_DVR_JOINT_SUB_SYSTEM,*LPNET_DVR_JOINT_SUB_SYSTEM;

Members

struNormalSubSystem
子系统信息，NET_DVR_ALARMSUBSYSTEMPARAM中参数byPublicAttributeEnable为0时有效
struPublicSubSystem
公共子系统信息,NET_DVR_ALARMSUBSYSTEMPARAM中参数byPublicAttributeEnable为1时有效
byRes
联合体大小，20字节

See Also

NET_DVR_ALARMSUBSYSTEMPARAM


NET_DVR_JPEG_CAPTURE_CFG

设备抓图配置结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_TIMING_CAPTURE  struTimingCapture;
  NET_DVR_EVENT_CAPTURE   struEventCapture;
  BYTE                    byStreamType;
  BYTE                    byRes3[19];
}NET_DVR_JPEG_CAPTURE_CFG,*LPNET_DVR_JPEG_CAPTURE_CFG;

Members

dwSize
结构体大小
struTimingCapture
定时抓图参数配置
struEventCapture
事件抓图参数配置
byStreamType
抓图码流类型：0- 主码流，1- 子码流
byRes3
保留，置为0

Remarks

  • 设备是否支持抓图配置或者支持的参数能力，可以通过设备能力集进行判断，对应JPEG抓图能力集(JpegCaptureAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_JPEG_CAPTURE_CFG_V40

设备抓图配置（扩展）结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_TIMING_CAPTURE      struTimingCapture;
  NET_DVR_EVENT_CAPTURE_V40   struEventCapture;
  BYTE                        byStreamType;
  BYTE                        byRes3[19];
}NET_DVR_JPEG_CAPTURE_CFG_V40,*LPNET_DVR_JPEG_CAPTURE_CFG_V40;

Members

dwSize
结构体大小
struTimingCapture
定时抓图参数配置
struEventCapture
事件抓图参数配置
byStreamType
抓图码流类型：0- 主码流，1- 子码流
byRes3
保留，置为0

Remarks

  • 设备是否支持抓图配置或者支持的参数能力，可以通过设备能力集进行判断，对应JPEG抓图能力集(JpegCaptureAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_JPEGCFG_V30

JPEG抓图参数配置结构体。

struct{
  DWORD                              dwSize;
  NET_DVR_JPEGPARA                   struJpegPara[MAX_CHANNUM_V30];
  WORD                               wBurstMode;
  WORD                               wUploadInterval;
  NET_DVR_PICTURE_NAME               struPicNameRule;
  BYTE                               bySaveToHD;
  BYTE                               byRes1;
  WORD                               wCatchInterval;
  BYTE                               byRes2[12];
  NET_DVR_SERIAL_CATCHPIC_PARA       struRs232Cfg;
  NET_DVR_SERIAL_CATCHPIC_PARA       struRs485Cfg;
  DWORD                              dwTriggerPicTimes[MAX_CHANNUM_V30];
  DWORD                              dwAlarmInPicChanTriggered[MAX_ALARMIN_V30];
}NET_DVR_JPEGCFG_V30, *LPNET_DVR_JPEGCFG_V30;

Members

dwSize
结构体大小
struJpegPara
每个通道的图像参数
wBurstMode
抓图方式，按位设置，0x1=报警输入触发，0x2=移动侦测触发，0x4=232触发，0x8=485触发，0x10=网络触发
wUploadInterval
图片上传间隔(秒)，取值范围[0，65535]
struPicNameRule
图片命名规则
bySaveToHD
是否保存到硬盘
byRes1
保留
wCatchInterval
抓图间隔（秒），取值范围[0，65535]
byRes2
保留
struRs232Cfg
232抓图参数
struRs485Cfg
485串口抓图参数
dwTriggerPicTimes
每个通道一次触发拍照次数
dwAlarmInPicChanTriggered
报警触发抓拍通道，按位设置，从第1位开始

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_JPEGPARA

JPEG图像信息结构体。

struct{
  WORD     wPicSize;
  WORD     wPicQuality;
}NET_DVR_JPEGPARA,*LPNET_DVR_JPEGPARA;

Members

wPicSize
图片尺寸：0-CIF(352*288/352*240)，1-QCIF(176*144/176*120)，2-4CIF(704*576/704*480)或D1(720*576/720*486)，3-UXGA(1600*1200)， 4-SVGA(800*600)，5-HD720P(1280*720)，6-VGA(640*480)，7-XVGA(1280*960)，8-HD900P(1600*900)，9-HD1080P(1920*1080)，10-2560*1920， 11-1600*304，12-2048*1536，13-2448*2048，14-2448*1200，15-2448*800，16-XGA(1024*768)，17-SXGA(1280*1024)，18-WD1(960*576/960*480), 19-1080I(1920*1080)，20-576*576，21-1536*1536，22-1920*1920，23-320*240，24-720*720，25-1024*768，26-1280*1280，27-1600*600， 28-2048*768，29-160*120，75-336*256，78-384*256，79-384*216，80-320*256，82-320*192，83-512*384，127-480*272，128-512*272， 161-288*320，162-144*176，163-480*640，164-240*320，165-120*160，166-576*720，167-720*1280，168-576*960，180-180*240, 181-360*480, 182-540*720, 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使用当前码流分辨率)
wPicQuality
图片质量系数：0-最好，1-较好，2-一般


NET_DVR_JPEGPICTURE_WITH_APPENDDATA

设备抓图附加全屏测温数据结构体。

struct{
  DWORD           dwSize;
  DWORD           dwChannel;
  DWORD           dwJpegPicLen;
  char            *pJpegPicBuff;
  DWORD           dwJpegPicWidth;
  DWORD           dwJpegPicHeight;
  DWORD           dwP2PDataLen;
  char            *pP2PDataBuff;
  BYTE            byIsFreezedata;
  BYTE            byRes1[3];
  DWORD           dwVisiblePicLen;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  char            *pVisiblePicBuff;
  #else
  char            *pVisiblePicBuff;
  BYTE            byRes2[4];
  #endif
  NET_VCA_RECT    struThermalValidRect;
  NET_VCA_RECT    struVisibleValidRect;
  BYTE            byRes[208];
}NET_DVR_JPEGPICTURE_WITH_APPENDDATA,*LPNET_DVR_JPEGPICTURE_WITH_APPENDDATA;

Members

dwSize
[out] 结构体大小
dwChannel
[out] 通道号
dwJpegPicLen
[out] Jpeg图片长度
pJpegPicBuff
[out] Jpeg图片指针
dwJpegPicWidth
[out] 图像宽度
dwJpegPicHeight
[out] 图像高度
dwP2PDataLen
[out] 全屏测温数据长度
pP2PDataBuff
[out] 全屏测温数据指针
byIsFreezedata
[out] 是否数据冻结：0-否，1-是
byRes1
[out] 保留
dwVisiblePicLen
[out] 可见光图片长度
pVisiblePicBuff
[out] 可见光图片指针
byRes2
[out] 保留，win64及linux64下指针为8字节，因此64位版本无该参数
struThermalValidRect
[out] 热成像有效区域
struVisibleValidRect
[out] 可见光有效区域
byRes
[out] 保留

Remarks

冻结是指设备打挡片、切换档位时，设备内部会把热成像的打挡片（或切换单位）前的裸数据保存记录，并不再更新，持续到打挡片（或切换挡片）结束。此过程中因为裸数据不在更新，会造成图像，测温信息都不变化。此种状态为冻结状态。

See Also

NET_DVR_CaptureJPEGPicture_WithAppendData


NET_DVR_JSON_DATA_CFG

JSON数据配置结构体。

struct{
  DWORD    dwSize;
  void     *lpJsonData;
  DWORD    dwJsonDataSize;
  void     *lpPicData;
  DWORD    dwPicDataSize;
  DWORD    dwInfraredFacePicSize;
  char     *lpInfraredFacePicBuffer;
  BYTE     byRes[248];
}NET_DVR_JSON_DATA_CFG, *LPNET_DVR_JSON_DATA_CFG;

Members

dwSize
结构体大小
lpJsonData
JSON报文（与NET_DVR_StartRemoteConfig的命令dwCommand和输入参数lpInBuffer有关，不同的功能对应不同的JSON内容）
dwJsonDataSize
JSON报文大小
lpPicData
图片数据指针（当JSON报文Inbound Data中没有faceURL时，该字段表示图片二进制数据内容）
dwPicDataSize
图片内容大小（大小限制为200KB以内）
dwInfraredFacePicSize
红外人脸图片数据大小，等于0 时表示无人脸图片数据(当JSON 报文为当ResponseStatus（JSON）报文时，该字段无意义；当Inbound Data（JSON）报文中没有infraredFaceURL时，该字段需要带上二进制图片内容）
lpInfraredFacePicBuffer
红外人脸图片数据指针
byRes
保留

See Alsoo

NET_DVR_StartRemoteConfig NET_DVR_SendWithRecvRemoteConfig


NET_DVR_KEYBOARD_USER

报警主机键盘用户配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwID;
  BYTE     byDefanceArea[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byRes[560];
}NET_DVR_KEYBOARD_USER,*LPNET_DVR_KEYBOARD_USER;

Members

dwSize
结构体大小
dwID
键盘用户ID
byDefanceArea
防区权限，按数组下标表示，值为0- 无权限，1- 有权限。最大支持512个防区。
byRes
保留

See Also

NET_DVR_GetKeyboardUser NET_DVR_SetKeyboardUser


NET_DVR_LABEL_IDENTIFY

添加录像标签后的标识结构体。

struct{
  BYTE   sLabelIdentify[LABEL_IDENTIFY_LEN];
  BYTE   byRes[8];
}NET_DVR_LABEL_IDENTIFY,*LPNET_DVR_LABEL_IDENTIFY;

Members

sLabelIdentify
录像标签的标识
byRes
保留，置为0

See Also

NET_DVR_DEL_LABEL_PARAM NET_DVR_InsertRecordLabel


NET_DVR_LAMP_CONTROL

LAMP控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byLampNo;
  BYTE     byLampStateNo;
  BYTE     byRes[14];
}NET_DVR_LAMP_CONTROL,*LPNET_DVR_LAMP_CONTROL;

Members

dwSize
结构体大小
byLampNo
Lamp编号：1- lamp1，2- lamp2
byLampStateNo
Lamp状态编号：0- 无效，1- 状态1，2- 状态2，3- 状态3
byRes
保留，置为0

Remarks

庭审主机的报警输出口3和报警输出口4，可以组合作为lamp1使用，每个报警输出口均有高低电平两种状态，不允许两个输出口同时为高电平，其它状态可以组号使用，因此有3中组合状态，分别对应lamp1的3个状态：
状态1：报警输出口A高电平，报警输出口B为低电平；
状态2：报警输出口A低电平，报警输出口B为高电平；
状态3：报警输出口A低电平，报警输出口B为低电平。
报警输出口5和报警输出口6两个组合使用，称为lamp2，用法同lamp1。

See Also

NET_DVR_RemoteControl


NET_DVR_LAMP_CTRL_INFO

内外置灯参数配置结构体。

struct{
  DWORD                           dwSize;
  BYTE                            byLampCtrlMode;
  BYTE                            byCtrlChannelIndex;
  BYTE                            byRes[2];
  NET_DVR_LAMP_CTRL_MODE_UNION    uLampCtrlMode;
  BYTE                            byRes2[32];
}NET_DVR_LAMP_CTRL_INFO, *LPNET_DVR_LAMP_CTRL_INFO;

Members

dwSize
结构体大小
byLampCtrlMode
控灯模式：1- 内置灯，2- 外接灯
byCtrlChannelIndex
交替控制通道号（IP通道接入，取值范围：33~48）
byRes
保留，置为0
uLampCtrlMode
灯控制模式联合体
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LAMP_CTRL_MODE_UNION

灯控制模式联合体。

union{
  BYTE                               uLen[288];
  NET_DVR_INLAY_LAMP_CTRL_MODE       struInlayLampCtrlMode;
  NET_DVR_EXTERNAL_LAMP_CTRL_MODE    struExternalLampCtrlMode;
}NET_DVR_LAMP_CTRL_MODE_UNION, *LPNET_DVR_LAMP_CTRL_MODE_UNION;

Members

uLen
联合体大小，288字节
struInlayLampCtrlMode
内置灯控制模式参数
struExternalLampCtrlMode
外接灯控制模式参数

See Also

NET_DVR_LAMP_CTRL_INFO


NET_DVR_LAMP_EXTERNAL_CFG

指示灯外控配置结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byEnable;
  BYTE                  byRes1[3];
  NET_DVR_LAMP_STATE    struLampStateCtrl;
  BYTE                  byRes2[32];
}NET_DVR_LAMP_EXTERNAL_CFG, *LPNET_DVR_LAMP_EXTERNAL_CFG;

Members

dwSize
结构体大小
byEnable
外控使能：0- 不启用，1- 启用
byRes1
保留，置为0
struLampStateCtrl
指示灯外控状态信息
byRes2
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_LAMP_INFO

LAMP输出口信息结构体。

struct{
  BYTE    byEnable;
  BYTE    byRes1[3];
  BYTE    byLampName[LAMP_NAME];
  BYTE    byLampState1[LAMP_STATE_NAME];
  BYTE    byLampState2[LAMP_STATE_NAME];
  BYTE    byLampState3[LAMP_STATE_NAME];
  BYTE    byRes[32];
}NET_DVR_LAMP_INFO,*LPNET_DVR_LAMP_INFO;

Members

byEnable
是否启用该LAMP输出口：0- 否，1- 是
byRes1
保留，置为0
byLampName
LAMP输出口名称
byLampState1
状态1对应名称
byLampState2
状态2对应名称
byLampState3
状态3对应名称
byRes
保留，置为0

See Also

NET_DVR_LAMP_OUT


NET_DVR_LAMP_OUT

LAMP输出口配置结构体。

struct{
  DWORD                dwSize;
  NET_DVR_LAMP_INFO    struLampInfo[2];
  BYTE                 byRes[256];
}NET_DVR_LAMP_OUT,*LPNET_DVR_LAMP_OUT;

Members

dwSize
结构体大小
struLampInfo
LAMP输出口信息，数组0表示lamp1，数组1表述lamp2
byRes
保留，置为0

Remarks

庭审主机的报警输出口3和报警输出口4，可以组合作为lamp1使用，每个报警输出口均有高低电平两种状态，不允许两个输出口同时为高电平，其它状态可以组合使用，因此有3中组合状态，分别对应lamp1的3个状态：
状态1：报警输出口A高电平，报警输出口B为低电平；
状态2：报警输出口A低电平，报警输出口B为高电平；
状态3：报警输出口A低电平，报警输出口B为低电平。
报警输出口5和报警输出口6两个组合使用，称为lamp2，用法同lamp1。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LAMP_STATE

指示灯外控状态信息结构体。

struct{
  BYTE     byFlicker;
  BYTE     byRes1[3];
  DWORD    dwIONo;
  BYTE     byRes2[8];
}NET_DVR_LAMP_STATE, *LPNET_DVR_LAMP_STATE;

Members

byFlicker
0- 不闪烁，1- 闪烁
byRes1
保留，置为0
dwIONo
按位表示，支持复选，bit1- IO1，bit2- IO2，bit4- IO3，取值：1- 启用，0- 不启用
byRes
保留，置为0

See Also

NET_DVR_LAMP_EXTERNAL_CFG


NET_DVR_LANE_CFG

车道规则配置结构体。

struct{
  DWORD               dwSize;
  NET_DVR_ONE_LANE    struLan[MAX_LANE_NUM];
  BYTE                byRes1[40];
}NET_DVR_LANE_CFG, *LPNET_DVR_LANE_CFG;

Members

dwSize
结构体大小
struLan
车道参数，数组下标为车道ID
byRes1
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LANE_PARAM

车道参数结构体。

struct{
  BYTE                  byRuleName[NAME_LEN];
  BYTE                  byRuleID;
  BYTE                  byVaryType;
  BYTE                  byLaneType;
  BYTE                  byRes1;
  DWORD                 dwLaneVolume;
  DWORD                 dwLaneVelocity;
  DWORD                 dwTimeHeadway ;
  DWORD                 dwSpaceHeadway;
  float                 fSpaceOccupyRation;
  NET_DVR_LANE_QUEUE    struLaneQueue;
  NET_VCA_POINT         struRuleLocation;
  BYTE                  byRes2[32];
}NET_DVR_LANE_PARAM,*LPNET_DVR_LANE_PARAM;

Members

byRuleName
车道规则名称
byRuleID
规则序号，[0,7]，为规则配置结构下标
byVaryType
车道交通参数变化类型
enum _TRAFFIC_DATA_VARY_TYPE_{
  NO_VARY,
  VEHICLE_ENTER,
  VEHICLE_LEAVE,
  UEUE_VARY
}TRAFFIC_DATA_VARY_TYPE
NO_VARY
无变化
VEHICLE_ENTER
车辆进入虚拟线圈
VEHICLE_LEAVE
车辆离开虚拟线圈
UEUE_VARY
队列变化
byLaneType
车道上行或下行
byRes1
保留
dwLaneVolume
车道流量，统计有多少车子通过，上次清零点（一般零点清零）到当前时间的车道内通过的车辆数目
dwLaneVelocity
车道内车辆的平均速度，以千米/小时表示
dwTimeHeadway
车头时距，以秒计算
dwSpaceHeadway
车头间距，以米来计算
fSpaceOccupyRation
车道占有率，百分比计算（空间上，车辆长度与监控路段总长度的比值)
struLaneQueue
车道队列长度
struRuleLocation
线圈规则的中心点位置
byRes2
保留

See Also

NET_DVR_TPS_INFO


NET_DVR_LANE_PARAM_V41

车道参数结构体。

struct{
  BYTE                  byRuleName[NAME_LEN];
  BYTE                  byRuleID;
  BYTE                  byLaneType;
  BYTE                  byTrafficState;
  BYTE                  byLaneNo;
  DWORD                 dwVaryType;
  DWORD                 dwTpsType;
  DWORD                 dwLaneVolume;
  DWORD                 dwLaneVelocity;
  DWORD                 dwTimeHeadway ;
  DWORD                 dwSpaceHeadway;
  float                 fSpaceOccupyRation ;
  float                 fTimeOccupyRation;
  DWORD                 dwLightVehicle ;
  DWORD                 dwMidVehicle;
  DWORD                 dwHeavyVehicle ;
  NET_DVR_LANE_QUEUE    struLaneQueue;
  NET_VCA_POINT         struRuleLocation;
  DWORD                 dwOversizeVehicle ;
  BYTE                  byRes2[60];
}NET_DVR_LANE_PARAM_V41, *LPNET_DVR_LANE_PARAM_V41;

Members

byRuleName
车道规则名称
byRuleID
规则序号，为规则配置结构下标：0~7（对于ITS终端服务器，取值范围为1~8）
byLaneType
车道上行或下行
byTrafficState
车道的交通状态，0-无效，1-畅通，2-拥挤，3-堵塞
byLaneNo
车道号
dwVaryType
车道交通参数变化类型参照，按位区分
enum _TRAFFIC_DATA_VARY_TYPE_EX_ENUM_{
  ENUM_TRAFFIC_VARY_NO             = 0x00,
  ENUM_TRAFFIC_VARY_VEHICLE_ENTER  = 0x01,
  ENUM_TRAFFIC_VARY_VEHICLE_LEAVE  = 0x02,
  ENUM_TRAFFIC_VARY_QUEUE          = 0x04,
  ENUM_TRAFFIC_VARY_STATISTIC      = 0x08,
}TRAFFIC_DATA_VARY_TYPE_EX_ENUM
ENUM_TRAFFIC_VARY_NO
无变化
ENUM_TRAFFIC_VARY_VEHICLE_ENTER
车辆进入虚拟线圈
ENUM_TRAFFIC_VARY_VEHICLE_LEAVE
车辆离开虚拟线圈
ENUM_TRAFFIC_VARY_QUEUE
队列变化
ENUM_TRAFFIC_VARY_STATISTIC
统计数据变化（每分钟变化一次包括平均速度，车道空间/时间占有率，交通状态）
dwTpsType
数据变化类型标志，表示当前上传的统计参数中，哪些数据有效，按位区分
enum _ITS_TPS_TYPE_{
  LANE_VOLUME             = 0x1,
  LANE_VELOCITY           = 0x2,
  TIME_HEADWAY            = 0x4,
  SPACE_HEADWAY           = 0x8,
  TIME_OCCUPANCY_RATIO    = 0x10,
  SPACE_OCCUPANCY_RATIO   = 0x20,
  QUEUE                   = 0x40,
  VEHICLE_TYPE            = 0x80,
  TRAFFIC_STATE           = 0x100
}ITS_TPS_TYPE
LANE_VOLUME
车道流量
LANE_VELOCITY
车道速度
TIME_HEADWAY
车头时距
SPACE_HEADWAY
车头间距
TIME_OCCUPANCY_RATIO
车道占有率(时间上)
SPACE_OCCUPANCY_RATIO
车道占有率，百分比计算(空间上)
QUEUE
排队长度
VEHICLE_TYPE
车辆类型
TRAFFIC_STATE
交通状态
dwLaneVolume
车道流量，统计有多少车子通过
dwLaneVelocity
车道内车辆的平均速度，以千米/小时表示
dwTimeHeadway
车头时距，以秒计算
dwSpaceHeadway
车头间距，以米来计算
fSpaceOccupyRation
车道占有率，百分比计算（空间上，车辆长度与监控路段总长度的比值)
fTimeOccupyRation
时间占有率，百分比计算
dwLightVehicle
小型车数量
dwMidVehicle
中型车数量
dwHeavyVehicle
重型车数量
struLaneQueue
车道队列长度
struRuleLocation
规则位置虚拟线圈的中心
dwOversizeVehicle
大型车数量
byRes2
保留

See Also

NET_DVR_TPS_INFO_V41


NET_DVR_LANE_QUEUE

车道队列结构体。

struct{
  NET_VCA_POINT    struHead;
  NET_VCA_POINT    struTail;
  DWORD            dwLength;
}NET_DVR_LANE_QUEUE,*LPNET_DVR_LANE_QUEUE;

Members

struHead
队列头
struTail
队列尾
dwLength
实际队列长度，单位：米，范围[0-500]

See Also

NET_DVR_LANE_PARAM_V41 NET_DVR_LANE_PARAM


NET_DVR_LASER_PARAM_CFG

激光参数配置结构体。

struct{
  BYTE    byControlMode;
  BYTE    bySensitivity;
  BYTE    byTriggerMode;
  BYTE    byBrightness;
  BYTE    byAngle;
  BYTE    byLimitBrightness;
  BYTE    byEnabled;
  BYTE    byIllumination;
  BYTE    byLightAngle;
  BYTE    byRes[7];
}NET_DVR_LASER_PARAM_CFG, *LPNET_DVR_LASER_PARAM_CFG;

Members

byControlMode
控制模式：0-无效，1-自动，2-手动，默认：自动
bySensitivity
激光灯灵敏度，取值范围：0~100，默认：50
byTriggerMode
激光灯触发模式：0-无效，1-机芯触发，2-光敏触发，默认：机芯触发
byBrightness
激光灯亮度，控制模式为手动模式下有效，取值范围：0~255，默认：100
byAngle
激光灯角度，0表示无效，取值范围：1~36，默认：12。激光灯照射范围为一个圆圈，调节激光角度是调节这个圆的半径的大小
byLimitBrightness
激光灯亮度限制，控制模式为自动模式下有效，取值范围：0~100
byEnabled
手动控制激光灯使能：0- 关闭，1- 启动
byIllumination
激光灯强度配置，取值范围：0~100
byLightAngle
补光角度，取值范围：0~100
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_LATITUDE_PARAM

纬度参数结构体。

struct{
  BYTE    byDegree;
  BYTE    byMinute;
  BYTE    bySec;
  BYTE    byRes;
}NET_DVR_LATITUDE_PARAM, *LPNET_DVR_LATITUDE_PARAM;

Members

byDegree
度，取值范围：[0,179]
byMinute
分，取值范围：[0,59]
byMinute
秒，取值范围：[0,59]
byRes
保留，置为0

See Also

NET_DVR_GPS_DATACFG


NET_DVR_LAYOUT_LIST

场景参数设置

struct{
  DWORD                      dwSize;
  NET_DVR_LAYOUTCFG          struLayoutInfo[MAX_LAYOUT_COUNT];
  BYTE                       byRes[4];
}NET_DVR_LAYOUT_LIST,*LPNET_DVR_LAYOUT_LIST;

Members

dwSize
结构体大小
struLayoutInfo
所有场景名称
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_LAYOUTCFG

场景参数设置。

struct{
  DWORD                  dwSize;
  BYTE                   byValid;
  BYTE                   byRes1[3];
  BYTE                   byLayoutName[NAME_LEN];
  NET_DVR_SCREEN_WINCFG  struWinCfg[MAX_WIN_COUNT];
  BYTE                   byRes2[16];
}NET_DVR_LAYOUTCFG,*LPNET_DVR_LAYOUTCFG;

Members

dwSize
结构体大小
byValid
是否有效：0- 否，1- 是
byRes1
保留，置为0
byLayoutName
场景名称
struWinCfg
场景内窗口参数
byRes2
保留，置为0

See Also

NET_DVR_LAYOUT_LIST

NET_DVR_SetDVRConfig


NET_DVR_LCD_ALARM

LCD屏幕报警信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwScreenID;
  BYTE     byOnOffLine;
  BYTE     byTempState;
  BYTE     byFanState;
  BYTE     byFanException;
  BYTE     byTemperature;
  BYTE     byRes[27];
}NET_DVR_LCD_ALARM,*LPNET_DVR_LCD_ALARM;

Members

dwSize
结构体大小
dwScreenID
屏幕索引号(组合)：1字节设备号+1字节保留+2字节屏幕索引序号
byOnOffLine
屏幕是否在线：0- 离线，1- 在线，当屏幕离线时，本结构后续参数无效
byTempState
板卡温度状态：0- 正常，1- 异常
byFanState
风扇状态：0- 关，1- 开
byFanException
风扇异常状态：0- 不支持，1- 正常，2- 异常
byTemperature
屏幕板卡温度，单位：摄氏度
byRes
保留，置为0

Remarks

LCD服务器在空闲时会每隔一定时间上传各屏幕工作状态信息。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_LCD_AUDIO_CFG

LCD音频参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byMute;
  BYTE     byVolume;
  BYTE     byBalance;
  BYTE     byRes[33];
}NET_DVR_LCD_AUDIO_CFG,*LPNET_DVR_LCD_AUDIO_CFG;

Members

dwSize
结构体大小
byMute
是否静音：0- 否，1- 是
byVolume
音量大小，取值范围：0~100
byBalance
声道平衡，取值范围：-50~+50
byRes
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_LED_BRIGHTNESS_STEP

分时LED屏亮度参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byValid;
  BYTE     byRes1[3];
  BYTE     byBrightnessStep[TIME_SEGMENT_A_DAY];
  BYTE     byRes2[48];
}NET_DVR_LED_BRIGHTNESS_STEP,*LPNET_DVR_LED_BRIGHTNESS_STEP;

Members

dwSize
结构体大小
byValid
分时亮度调节是否有效
byRes1
保留
byBrightnessStep
将全天24个小时分为48个时段，每30分钟一个时段，用48个字节表示每个时段的亮度级别，亮度共16级，用0~15表示。
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LED_CONTENT_CFG

LED屏显内容结构体。

struct{
  DWORD    dwSize;
  BYTE     sLEDContent[MAX_CONTENT_LEN];
  BYTE     byContentAct;
  BYTE     byContentSpeed;
  BYTE     byContentStayTime;
  BYTE     byRes[33];
}NET_DVR_LED_CONTENT_CFG,*LPNET_DVR_LED_CONTENT_CFG;

Members

dwSize
结构体大小
sLEDContent
LED屏幕显示内容
byContentAct
运动模式：1- 静态，2- 快速打出，3- 向左移动，4- 向右移动，5- 向上移动，6- 向下移动
byContentSpeed
运动速度：1~24（1最快，24最慢）
byContentStayTime
停留时间（0~127.5s，精度0.5s），客户端赋值的时候为实际值*2，即传送数值范围：0~255，设备端在使用的时候再除以2
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LED_SCREEN_CFG

LED屏幕参数结构体。

struct{
  DWORD    dwSize;
  BYTE     sLEDName[NAME_LEN];
  BYTE     byTransMode;
  BYTE     byProtocolType;
  BYTE     byLEDColor;
  BYTE     byDataPolarity;
  BYTE     byOEPolarity;
  BYTE     byScanMode;
  BYTE     byRes1[2];
  WORD     wLEDWidth;
  WORD     wLEDHeight;
  BYTE     byRes2[64];
}NET_DVR_LED_SCREEN_CFG,*LPNET_DVR_LED_SCREEN_CFG;

Members

dwSize
结构体大小
sLEDName
LED屏幕名称
byTransMode
通讯模式，现只支持串口通讯：1- 串口通信
byProtocolType
协议类型，对应LED屏的厂家，目前只支持：1- 仰邦
byLEDColor
LED颜色类型（目前只支持单色）：1- 单色，2- 双色，3- 256级灰度双基色，4- 全彩色
byDataPolarity
数据极性：0- 负极，1- 正极
byOEPolarity
有效性：0- 低有效，1- 高有效
byScanMode
扫描模式：1- 1/16，2- 1/8，3- 1/4，4- 1/2，5- 静态
byRes1
保留
wLEDWidth
屏幕宽度，取值范围：16~2048，间隔是8个点，即16、24、32、40、...、2040、2048
wLEDHeight
屏幕高度，取值范围：16~2048，间隔是8个点，即16、24、32、40、...、2040、2048
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LED_STATUS

LED屏状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     bySwitchState;
  BYTE     byBrightness;
  BYTE     byRes[62];
}NET_DVR_LED_STATUS,*LPNET_DVR_LED_STATUS;

Members

dwSize
结构体大小
bySwitchState
1- 开机状态，2- 关机状态
byBrightness
亮度值，范围：0~15
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_LED_SWITCH_TIME

LED屏定时开关参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_SWITCH_TIME    struTimer[LED_TIMER_NUM];
  BYTE                   byRes[64];
}NET_DVR_LED_SWITCH_TIME,*LPNET_DVR_LED_SWITCH_TIME;

Members

dwSize
结构体大小
struTimer
定时开关机时间，结构体中只有小时和分钟两个参数有效。
支持最多3组开关机定时设置，每组开机时间要早于该组的关机时间，但比前一组的关机时间要晚。
例如：struTimer[0]的关机时间是10:00，那么，struTimer[0]的开机时间须设置为10:00之前，struTimer[1]的开机时间须设置为10:00以后。
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LEDDISPLAY_CFG

LED屏幕显示参数配置结构体。

struct{
  DWORD    dwSize;
  char     sDisplayInfo[MAX_LED_INFO_LEN];
  BYTE     byDisplayMode;
  BYTE     bySpeedType;
  BYTE     byRes1[2];
  DWORD    dwShowTime;
  BYTE     byRes[128];
}NET_DVR_LEDDISPLAY_CFG,*LPNET_DVR_LEDDISPLAY_CFG;

Members

dwSize
结构体大小
sDisplayInfo
LED显示内容
byDisplayMode
显示方式：0- 左移，1- 右移，2- 立即显示
bySpeedType
速度类型：0- 快，1- 中，2- 慢
byRes1
保留，置为0
dwShowTime
显示时长，取值范围：1~60，单位：秒
byRes
保留，置为0

Remarks

  • 设备是否支持LED屏幕显示参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应LED屏幕显示参数配置能力集(LEDConfiguration)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_LEDDISPLAY_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_LIGHTSNAPCFG

红绿灯功能参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byLightIoIn;
  BYTE       byTrigIoIn;
  BYTE       byRelatedDriveWay;
  BYTE       byTrafficLight;
  BYTE       bySnapTimes1;
  BYTE       bySnapTimes2;
  BYTE       byRes1[2];
  WORD       wIntervalTime1[MAX_INTERVAL_NUM];
  WORD       wIntervalTime2[MAX_INTERVAL_NUM];
  BYTE       byRecord;
  BYTE       bySessionTimeout;
  BYTE       byPreRecordTime;
  BYTE       byVideoDelay;
  BYTE       byRes2[32];
}NET_DVR_LIGHTSNAPCFG, *LPNET_DVR_LIGHTSNAPCFG;

Members

dwSize
结构体大小
byLightIoIn
红绿灯的IO号，从1开始
byTrigIoIn
触发的IO号，从1开始
byRelatedDriveWay
触发IO关联的车道号，取值范围[0,9]
byTrafficLight
0-高电平红灯，低电平绿灯；1-高电平绿灯，低电平红灯
bySnapTimes1
红灯抓拍次数，0-不抓拍，非0-连拍次数，最大5次
bySnapTimes2
绿灯抓拍次数，0-不抓拍，非0-连拍次数，最大5次
byRes1
保留，置为0
wIntervalTime1
红灯连拍间隔时间，单位ms，取值范围[67,60000]
wIntervalTime2
绿灯连拍间隔时间，单位ms，取值范围[67,60000]
byRecord
闯红灯周期录像标志，0-不录像，1-录像
bySessionTimeout
闯红灯周期录像超时时间（单位秒），取值范围[0,100]
byPreRecordTime
闯红灯录像片段预录时间(单位秒)，取值范围[0,100]
byVideoDelay
闯红灯录像片段延时时间（单位秒），取值范围[0,100]
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LIMIT_ANGLE

限位参数配置结构。

struct{
  BYTE              byEnable;
  BYTE              byRes1[3];
  NET_DVR_PTZPOS    struUp;
  NET_DVR_PTZPOS    struDown;
  NET_DVR_PTZPOS    struLeft;
  NET_DVR_PTZPOS    struRight;
  BYTE              byRes2[20];
}NET_DVR_LIMIT_ANGLE, *LPNET_DVR_LIMIT_ANGLE;

Members

byEnable
是否启用场景限位功能：0-不启用，1-启用
byRes1
保留
struUp
上限位
struDown
下限位
struLeft
左限位
struRight
右限位
byRes2
保留

See Also

NET_DVR_GetPatrolLimitAngle NET_DVR_SetPatrolLimitAngle

NET_DVR_GetPositionLimitAngle NET_DVR_SetPositionLimitAngle


NET_DVR_LINE_SEGMENT

样本线参数结构体。

struct{
  BYTE            byLineMode;
  BYTE            byRes[3];
  NET_VCA_POINT   struStartPoint;
  NET_VCA_POINT   struEndPoint;
  float           fValue;
}NET_DVR_LINE_SEGMENT, *LPNET_DVR_LINE_SEGMENT;

Members

byLineMode
样本线类型，具体见如下定义：
enum tagLINE_MODE{
  HEIGHT_LINE,
  LENGTH_LINE
}LINE_MODE
HEIGHT_LINE
高度样本线
LENGTH_LINE
长度样本线
byRes
保留
struStartPoint
目标头部点或线段起始点
struEndPoint
目标脚部点或线段终点
fValue
高度或者长度

Remarks

当样本线类型为高度样本线时，参数struStartPoint表示目标头部点，参数struEndPoint表示目标脚部点，参数fValue表示高度；当样本线类型为长度样本线时，参数struStartPoint表示线段起始点，参数struEndPoint表示线段终点，参数fValue表示长度。

See Also

NET_DVR_BEHAVIOR_OUT_CALIBRATION NET_DVR_IN_CAL_SAMPLE

NET_DVR_VerifyCalibration


NET_DVR_LINE_VOLTAGE

线电压参数结构体。

struct{
  int    iLineVolAB;
  int    iLineVolBC;
  int    iLineVolCA;
  int    iAverageLineVol;
}NET_DVR_LINE_VOLTAGE,*LPNET_DVR_LINE_VOLTAGE;

Members

iLineVolAB
AB线电压，单位：V
iLineVolBC
BC线电压，单位：V
iLineVolCA
CA线电压，单位：V
iAverageLineVol
线电压平均值，单位：V

See Also

NET_DVR_ALARMHOST_ELECTRICITY_STATE


NET_DVR_LINEPOLYGON_THERM_CFG

框/线测温实时信息结构体。

struct{
  float              fMaxTemperature;
  float              fMinTemperature;
  float              fAverageTemperature;
  float              fTemperatureDiff;
  NET_VCA_POLYGON    struRegion;
  BYTE               byRes[32];
}NET_DVR_LINEPOLYGON_THERM_CFG,*LPNET_DVR_LINEPOLYGON_THERM_CFG;

Members

fMaxTemperature
最高温度
fMinTemperature
最低温度
fAverageTemperature
平均温度
fTemperatureDiff
温差
struRegion
区域坐标（当规则标定类型为框/线的时候生效）
byRes
保留，置为0

See Also

NET_DVR_THERMOMETRY_UPLOAD


NET_DVR_LINK_ADDR

连接地址结构体。

struct{
  NET_DVR_IPADDR_UNION                       uLocalIP;
  WORD                                       wLocalPort[10];
  BYTE                                       byLocalPortNum;
  BYTE                                       byRes1[3];
  NET_DVR_IPADDR_UNION                       uDevIP;
  WORD                                       wDevPort[10];
  BYTE                                       byDevPortNum;
  BYTE                                       byRes2[3];
  BYTE                                       byRes[80];
}NET_DVR_LINK_ADDR, *LPNET_DVR_LINK_ADDR;

Members

uLocalIP
本地IP地址
wLocalPort
本地端口号
byLocalPortNum
本地端口数目
byRes1
保留，置为0
uDevIP
设备IP地址
wDevPort
设备端口号
byDevPortNum
设备端口数目
byRes2
保留，置为0
byRes
保留，置为0

See Also

NET_DVR_GetLinkAddr


NET_DVR_LINK_STATUS

通道设备工作状态结构体。

struct{
  DWORD             dwSize;
  WORD              wLinkNum;
  BYTE              byRes1[2];
  NET_DVR_ONE_LINK  struOneLink[MAX_LINK_V30];
  BYTE              byRes[32];
}NET_DVR_LINK_STATUS, *LPNET_DVR_LINK_STATUS;

Members

dwSize
结构体大小
wLinkNum
连接的数目
byRes1
保留
struOneLink
连接的客户端信息
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_LIST_INFO

子系统信息列表结构体。

struct{
  DWORD    dwSize;
  BYTE     byIndex;
  BYTE     byRes[63];
}NET_DVR_LIST_INFO, *LPNET_DVR_LIST_INFO;

Members

dwSize
结构体大小
byIndex
子系统号，0xff表示所有子系统
byRes
保留

See Also

NET_DVR_StartRemoteConfig


NET_DVR_LITESTORAGE

轻存储配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byStorageTime;
  BYTE     byLevel;
  BYTE     byRes;
  float    fCapacity;
  BYTE     byDefLowStorageTime;
  BYTE     byDefMediumStorageTime;
  BYTE     byDefHighStorageTime;
  BYTE     byRes1[61];
}NET_DVR_LITESTORAGE,*LPNET_DVR_LITESTORAGE;

Members

dwSize
结构体大小
byEnable
使能轻存储：0- 不启用，1- 启用
byStorageTime
存储时间，取值范围：[1,30]，默认：7，单位：天
byLevel
等级参数：0- 保留，1- 低，2- 中(默认)，3- 高
byRes
保留，置为0
fCapacity
可用SD卡录像空间（只读）
byDefLowStorageTime
低等级模式下推荐天数（只读）
byDefMediumStorageTime
中等级模式下推荐天数（只读）
byDefHighStorageTime
高等级模式下推荐天数（只读）
byRes1
保留，置为0

Remarks

  • 该配置功能对应轻存储能力集(LiteStorage)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_LITESTORAGE_CAPABILITIES)。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_LLI_PARAM

经纬度参数结构体。

struct{
  float    fSec;
  BYTE     byDegree;
  BYTE     byMinute;
  BYTE     byRes[6];
}NET_DVR_LLI_PARAM,*LPNET_DVR_LLI_PARAM;

Members

fSec
秒，取值范围：[0.000000,60.000000]
byDegree
度，取值范围：[0,179]
byMinute
分，取值范围：[0,59]
byRes
保留，置为0

See Also

NET_DVR_GIS_UPLOADINFO NET_DVR_CENTRALIZEDCTRL_CFG NET_DVR_GIS_INFO NET_DVR_REVISE_GPS_CFG


NET_DVR_LLPOS_PARAM

经纬度参数结构体。

struct{
  BYTE                  byLatitudeType ;
  BYTE                  byLongitudeType;
  BYTE                  byRes1[2] ;
  NET_DVR_LLI_PARAM     struLatitude;
  NET_DVR_LLI_PARAM     struLongitude;
  BYTE                  byRes[16];
}NET_DVR_LLPOS_PARAM,*LPNET_DVR_LLPOS_PARAM;

Members

byLatitudeType
纬度类型：0-北纬，1-南纬
byLongitudeType
经度类型：0-东经，1-西经
byRes1
保留，置为0
struLatitude
纬度
struLongitude
经度
byRes
保留，置为0

See Also

NET_DVR_SMOKEDETECTION_ALARM


NET_DVR_LOAD_FACTOR

负载率参数结构体。

struct{
  int     iPhaseALoadFactor;
  int     iPhaseBLoadFactor;
  int     iPhaseCLoadFactor;
  BYTE    byRes[4];
}NET_DVR_LOAD_FACTOR,*LPNET_DVR_LOAD_FACTOR;

Members

iPhaseALoadFactor
A相负载率，单位：%
iPhaseBLoadFactor
B相负载率，单位：%
iPhaseCLoadFactor
C相负载率，单位：%
byRes
保留

See Also

NET_DVR_ALARMHOST_UPS_STATE


NET_DVR_LOCAL_ABILITY_PARSE_CFG

能力集解析库配置结构体。

struct{
  BYTE    byEnableAbilityParse;
  BYTE    byRes[127];
}NET_DVR_LOCAL_ABILITY_PARSE_CFG,*LPNET_DVR_LOCAL_ABILITY_PARSE_CFG;

Members

byEnableAbilityParse
使用能力集解析库：0-不使用，1-使用，默认不使用
byRes
保留，置为0

Remarks

模拟能力集默认禁用，调用该接口可以启用模拟能力集，支持获取设备各种能力。如果需要获取能力集（NET_DVR_GetDeviceAbility），可以调用此接口来启用模拟能力集，并且需要加载LocalXml.zip（要求和SDK库文件放在同一个目录下）。

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_BYTE_ENCODE_CONVERT

字符编码转换参数结构体。

struct{
  CHAR_ENCODE_CONVERT    fnCharConvertCallBack;
  BYTE                   byRes[256];
}NET_DVR_LOCAL_BYTE_ENCODE_CONVERT,*LPNET_DVR_LOCAL_BYTE_ENCODE_CONVERT;

Members

fnCharConvertCallBack
字符编码转换回调函数
byRes
保留，置为0

Callback Function

typedef int(CALLBACK *CHAR_ENCODE_CONVERT)(
  char     *pInput,
  DWORD    dwInputLen,
  DWORD    dwInEncodeType,
  char     *pOutput,
  DWORD    dwOutputLen,
  DWORD    dwOutEncodeType
);

Callback Function Parameters

pInput
[in] 输入字符串，内存由SDK申请，字符串数据也由SDK提供
dwInputLen
[in] 输入字符串缓冲区大小
dwInEncodeType
[in] 输入的字符编码格式：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)
pOutput
[out] 输出字符串，内存由SDK申请，存放使用用户字符编码接口转换之后的字符串
dwOutputLen
[out] 输出字符串缓冲区大小
dwOutEncodeType
[out] 输出字符编码格式：0- 无字符编码信息(老设备)，1- GB2312(简体中文)，2- GBK，3- BIG5(繁体中文)，4- Shift_JIS(日文)，5- EUC-KR(韩文)，6- UTF-8，7- ISO8859-1，8- ISO8859-2，9- ISO8859-3，…，依次类推，21- ISO8859-15(西欧)

Remarks

  • 回调函数的返回值：-1表示失败，0表示成功（内存足够存放转换以后的字符串）。
  • 设备的字符编码类型在登录接口返回，对应NET_DVR_DEVICEINFO_V40结构体中的参数byCharEncodeType。SDK内部需要字符编码转换时，SDK默认使用libiconv库进行类型转换。如果不想使用libiconv编码库，可以调用NET_DVR_SetSDKLocalCfg(类型: NET_SDK_LOCAL_CFG_TYPE_BYTE_ENCODE)设置字符转码回调函数，告知SDK用户自己的字符编码接口，然后SDK将使用用户提供的字符编码接口进行字符串处理。

See Also

NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_CERTIFICATION

证书校验参数配置结构体。

struct{
  char                       szLoadPath[MAX_FILE_PATH_LEN];
  fnCertVerifyResultCallBack      fnCB;
  void           *pUserData
  BYTE      byRes[64];
}NET_DVR_LOCAL_CERTIFICATION, *LPNET_DVR_LOCAL_CERTIFICATION;

Members

szLoadPath
证书下载路径
fnCB
证书校验回调函数
pUserData
用户数据
byRes
保留

Callback Function

typedef void(CALLBACK *fnCertVerifyResultCallBack)(
  DWORD               uiResult,
  NET_DVR_CETTIFICATE_INFO    lpCertificateInfo,
  void           *pUserData
);

Callback Function Parameters

uiResult
证书校验结果
lpCertificateInfo
证书校验结构体
pUser
用户数据

Remarks

  • 证书校验回调的结果在校验证书的情况下应当返回uiResult，否则直接返回成功即可

    • See Also

    NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_CFG_TYPE_PTZ

PTZ是否交互配置参数结构体。

struct{
  BYTE     byWithoutRecv;
  BYTE     byRes[63];
}NET_DVR_LOCAL_PTZ_CFG, *LPNET_DVR_LOCAL_PTZ_CFG;

Members

byWithoutRecv
是否交互配置，0-接收设备返回，1-不接收设备返回
byRes
保留，置为0

Remarks

  • 适用于3G弱网络环境下。

    • See Also

    NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_CHECK_DEV

设备在线巡检参数结构体。

struct{
  DWORD    dwCheckOnlineTimeout;
  DWORD    dwCheckOnlineNetFailMax;
  BYTE     byRes[256];
}NET_DVR_LOCAL_CHECK_DEV, *LPNET_DVR_LOCAL_CHECK_DEV;

Members

dwCheckOnlineTimeout
巡检时间间隔，单位：ms，取值范围：30s~120s，0表示用默认值(120s)，推荐设置30s
dwCheckOnlineNetFailMax
由于网络原因失败的最大累加次数，达到该次数，SDK才回调用户异常消息，0表示使用默认值1，推荐设置3次
byRes
保留，置为0

Remarks

  • SDK按照该结构体中的时间间隔对设备进行自动巡检，巡检过程中如果连失败或者重连成功在NET_DVR_SetExceptionCallBack_V30设置的异常消息回调函数中返回，对应异常消息类型为：EXCEPTION_EXCHANGE、RESUME_EXCHANGE。
  • 推荐设置30s时间间隔、3次，即心跳间隔为1.5分钟。
  • 通过NET_DVR_RemoteControl（命令：NET_DVR_CHECK_USER_STATUS）可以手动检测设备在线状态。

    • See Also

    NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_CONTROLLER_STATUS

就地控制器状态参数结构体。

struct{
  DWORD    dwSize;
  WORD     wLocalControllerID;
  BYTE     byLocalAntiDismantleStatus;
  BYTE     byPowerSupplyStatus;
  WORD     wBatteryVoltage;
  BYTE     byBatteryLowVoltage;
  BYTE     byFireAlarm;
  BYTE     bySerialNumber[SERIALNO_LEN];
  BYTE     byMagneticStatus[MAX_DOOR_NUM];
  BYTE     byDoorLockStatus[MAX_DOOR_NUM];
  BYTE     byCardReaderOnlineStatus[MAX_CARD_READER_NUM];
  WORD     wLocalControllerStatus;
  BYTE     byRes2[122];
}NET_DVR_LOCAL_CONTROLLER_STATUS, *LPNET_DVR_LOCAL_CONTROLLER_STATUS;

Members

dwSize
结构体大小
wLocalControllerID
就地控制器序号（或者梯控的分控器序号）
byLocalAntiDismantleStatus
就地控制器（或者梯控的分控器）防拆状态：0- 关闭，1- 开启
byPowerSupplyStatus
设备供电状态：1- 交流电供电，2- 蓄电池供电
wBatteryVoltage
蓄电池电压值，实际值乘10，单位：伏特
byBatteryLowVoltage
蓄电池是否处于低压状态：0- 否，1- 是
byFireAlarm
消防报警：0- 正常，1- 短接报警，2- 断开报警
bySerialNumber
设备序列号
byMagneticStatus
门磁状态：0- 正常关闭，1- 正常开启，2- 破坏短路报警，3- 破坏断路报警，4- 异常报警
byDoorLockStatus
门锁状态：0- 正常关闭，1- 正常开启，2- 破坏短路报警，3- 破坏断路报警，4- 异常报警
byCardReaderOnlineStatus
读卡器在线状态：0- 不在线，1- 在线
wLocalControllerStatus
只读，就地控制器（或者梯控的分控器）在线状态：0- 离线，1- 网络在线，2- 环路1上的RS485串口1，3- 环路1上的RS485串口2，4- 环路2上的RS485串口1，5- 环路2上的RS485串口2，6- 环路3上的RS485串口1，7- 环路3上的RS485串口2，8- 环路4上的RS485串口1，9- 环路4上的RS485串口2
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_LOCAL_CONTROLLER_STATUS_COND

就地控制器（或者梯控的分控器）状态查询条件结构体。

struct{
  DWORD   dwSize;
  WORD    wLocalControllerID;
  BYTE    byRes[306];
}NET_DVR_LOCAL_CONTROLLER_STATUS_COND,*LPNET_DVR_LOCAL_CONTROLLER_STATUS_COND;

Members

dwSize
结构体大小
wLocalControllerID
就地控制器序号（或者梯控的分控器序号），为0表示所有
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_LOCAL_GENERAL_CFG

通用参数配置结构体。

struct{
  BYTE      byExceptionCbDirectly;
  BYTE      byNotSplitRecordFile;
  BYTE      byResumeUpgradeEnable;
  BYTE      byAlarmJsonPictureSeparate;
  BYTE      byRes[4];
  UINT64    i64FileSize;
  UINT32    dwResumeUpgradeTimeout;
  BYTE      byRes1[236];
}NET_DVR_LOCAL_GENERAL_CFG, *LPNET_DVR_LOCAL_GENERAL_CFG;

Members

byExceptionCbDirectly
异常回调类型：0- 通过线程池异常回调，1- 直接异常回调给上层
byNotSplitRecordFile
回放和预览中保存到本地录像文件不切片：0- 切片（默认），1- 不切片
byResumeUpgradeEnable
断网续传升级使能：0-关闭（默认），1-开启
byAlarmJsonPictureSeparate
控制JSON透传报警数据和图片是否分离，0-不分离，1-分离（分离后走COMM_ISAPI_ALARM回调返回）
byRes
保留
i64FileSize
文件最大限制字节数，单位：Byte，启用切片（byNotSplitRecordFile为0）时，预览和回放保存的录像文件超过这个大小限制会自动切片，即新建文件进行保存
dwResumeUpgradeTimeout
断网续传重连超时时间，单位毫秒
byRes1
保留

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_INPUT_INFO

本地输入信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byChannelName[NAME_LEN];
  BYTE     byRes[32];
}NET_DVR_LOCAL_INPUT_INFO,*LPNET_DVR_LOCAL_INPUT_INFO;

Members

dwSize
结构体大小
byChannelName
本地输入通道名称
byRes
保留，置为0

Remarks

此处通道名称同图像参数NET_DVR_PICCFG_V40里面的通道名称。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LOCAL_LOG_CFG

SDK日志参数配置结构体。

struct{
  WORD    wSDKLogNum;
  BYTE    byRes[254];
}NET_DVR_LOCAL_LOG_CFG,*LPNET_DVR_LOCAL_LOG_CFG;

Members

wSDKLogNum
SDK日志文件个数，SDK写日志模式为覆盖模式（NET_DVR_SetLogToFile接口中参数bAutoDel为TRUE）时日志生成的个数，0表示默认值（即10个）
byRes
保留，置为0

See Also

NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_MEM_POOL_CFG

内存池本地配置结构体。

struct{
  DWORD    dwAlarmMaxBlockNum;
  DWORD    dwAlarmReleaseInterval;
  BYTE     byRes[60];
}NET_DVR_LOCAL_MEM_POOL_CFG,*LPNET_DVR_LOCAL_MEM_POOL_CFG;

Members

dwAlarmMaxBlockNum
报警模块内存池最多向系统申请的内存块（block）个数，每个block为64MB，超过这个上限则不向系统申请，0表示无上限
dwAlarmReleaseInterval
报警模块空闲内存释放的间隔，单位：秒，为0表示不释放空闲的内存
byRes
保留，置为0

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG

按模块配置接收超时时间。

struct{
  DWORD    dwPreviewTime;
  DWORD    dwAlarmTime;
  DWORD    dwVodTime;
  DWORD    dwElse;
  BYTE     byRes[512];
}NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG,*LPNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG;

Members

dwPreviewTime
预览模块接收超时时间，单位：毫秒，取值范围：0~3000,000，0表示恢复默认设置
dwAlarmTime
报警模块接收超时时间，单位：毫秒，取值范围：0~3000,000，0表示恢复默认设置
dwVodTime
回放模块接收超时时间，单位：毫秒，取值范围：0~3000,000，0表示恢复默认设置
dwElse
其他模块接收超时时间，单位：毫秒，取值范围：0~3000,000，0表示恢复默认设置
byRes
保留，置为0

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_PORT_MULTI_CFG

端口复用参数配置结构体。

struct{
  BOOL      bEnable;
  BYTE      byRes[60];
}NET_DVR_LOCAL_PORT_MULTI_CFG, *LPNET_DVR_LOCAL_PORT_MULTI_CFG;

Members

bEnable
端口复用使能：true- 开启，false- 关闭
byRes
保留

Remarks

  • 在某些操作系统中，默认供非系统应用可用端口数目较少，并不能满足HCNetSDK的性能指标。如需使用非默认端口，需要用户手动设置系统参数，并不方便。
    如，Win Server2016系统只默认提供16000个端口供用户网络通信用，但HCNetSDK的布防路数支持到20000路，若一个端口只支持一个socket做通信，那在默认情况下，HCNetSDK的布防性能会受到限制。
    因此引入端口复用机制，将多个socket绑定到同一个端口上，从而增加网络通信路数，解决端口不够用引入的性能受限问题，同时用户不需再修改操作系统默认参数，以简化操作。

    • See Also

    NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_PROTECT_KEY_CFG

密钥配置结构体。

struct{
  BYTE    byProtectKey[128];
  BYTE    byRes[128];
}NET_DVR_LOCAL_PROTECT_KEY_CFG,*LPNET_DVR_LOCAL_PROTECT_KEY_CFG;

Members

byProtectKey
密钥，默认设置为0
byRes
保留，置为0

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_SDK_PATH

组件库加载路径信息结构体。

struct{
  char    sPath[NET_SDK_MAX_FILE_PATH];
  BYTE    byRes[128];
}NET_DVR_LOCAL_SDK_PATH, *LPNET_DVR_LOCAL_SDK_PATH;

Members

sPath
组件库地址
byRes
保留

Remarks

  • 当组件库所在的HCNetSDKCom文件夹、HCNetSDK库的路径同可执行程序工作目录不同时，可以调用NET_DVR_SetSDKInitCfg接口配置指明HCNetSDKCom文件夹的路径，以保证组件库的正常加载。

See Also

NET_DVR_SetSDKInitCfg


NET_DVR_LOCAL_TALK_MODE_CFG

对讲模式配置结构体。

struct{
  BYTE    byEnableAbilityParse;
  BYTE    byRes[127];
}NET_DVR_LOCAL_TALK_MODE_CFG,*LPNET_DVR_LOCAL_TALK_MODE_CFG;

Members

byTalkMode
对讲模式：0- 使用对讲库（默认），1- 使用windows api模式
byRes
保留，置为0

Remarks

V4.2.2.5及以前版本SDK均采用windows API实现相关功能。之后版本默认使用语音对讲库的方式，语音对讲库模式下必须加载AudioIntercom.dll和OpenAL32.dll。

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_TCP_PORT_BIND_CFG

本地TCP端口绑定配置结构体。

struct{
  WORD    wLocalBindTcpMinPort;
  WORD    wLocalBindTcpMaxPort;
  BYTE    byRes[60];
}NET_DVR_LOCAL_TCP_PORT_BIND_CFG,*LPNET_DVR_LOCAL_TCP_PORT_BIND_CFG;

Members

wLocalBindTcpMinPort
本地绑定TCP最小端口
wLocalBindTcpMaxPort
本地绑定TCP最大端口
byRes
保留，置为0

Remarks

  • 端口绑定的策略是：给一个端口段，可以保证使用的端口都是在这个段里（多播除外），但不能保证每一个段内的端口都用到，因为是循环利用的；端口池中取出的端口会去尝试绑定，如果被占用了，将取下一个，如果段内每一个都绑定不了，则连接操作返回失败。建议最好不要设置系统预留的端口（1-1024），比如80等。
  • 设置的最大端口应该大于等于最小端口，[0, 0]表示清除绑定，[0, 非0]将设置失败，因为0不能进行绑定。

    • See Also

    NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCAL_UDP_PORT_BIND_CFG

本地UDP端口绑定配置结构体。

struct{
  WORD    wLocalBindUdpMinPort;
  WORD    wLocalBindUdpMaxPort;
  BYTE    byRes[60];
}NET_DVR_LOCAL_UDP_PORT_BIND_CFG,*LPNET_DVR_LOCAL_UDP_PORT_BIND_CFG;

Members

wLocalBindUdpMinPort
本地绑定UDP最小端口
wLocalBindUdpMaxPort
本地绑定UDP最大端口
byRes
保留，置为0

Remarks

  • 端口绑定的策略是：给一个端口段，可以保证使用的端口都是在这个段里（多播除外），但不能保证每一个段内的端口都用到，因为是循环利用的；端口池中取出的端口会去尝试绑定，如果被占用了，将取下一个，如果段内每一个都绑定不了，则连接操作返回失败。建议最好不要设置系统预留的端口（1-1024），比如80等。
  • 设置的最大端口应该大于等于最小端口，[0, 0]表示清除绑定，[0, 非0]将设置失败，因为0不能进行绑定。

    • See Also

    NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_LOCK_RETURN

录像段加锁/解锁结果结构体。

struct{
  DWORD           dwSize;
  NET_DVR_TIME    strBeginTime;
  NET_DVR_TIME    strEndTime;
      BYTE                                   byISO8601;
  signed char                       cTimeDifferenceH;
  signed char                      cTimeDifferenceM;
  BYTE            byRes[17];
}NET_DVR_LOCK_RETURN,*LPNET_DVR_LOCK_RETURN;

Members

dwSize
结构体大小
strBeginTime
开始时间
strEndTime
结束时间
byISO8601
是否是8601的时间格式，即时差字段是否有效,0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留，置为0

See Also

NET_DVR_LockFileByTime NET_DVR_UnLockFileByTime


NET_DVR_LOCKED_INFO

锁定信息结构体。

struct{
  DWORD             dwSize;
  BYTE              byIPType;
  BYTE              byRes1[3];
  NET_DVR_IPADDR    struIPAddress;
  BYTE              byRes[20];
}NET_DVR_LOCKED_INFO,*LPNET_DVR_LOCKED_INFO;

Members

dwSize
结构体大小
byIPType
IP类型：0- 无效，1- IPV4，2- IPV6
byRes1
保留，置为0
struIPAddress
被锁定的IP地址信息
byRes
保留，置为0

Remarks

  • 设备锁定的是socket通信中的IP地址。

    • See Also

    NET_DVR_GetNextRemoteConfig


NET_DVR_LOCKGATE_CFG

智能锁闸参数配置结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_LOCKGATE_TIME_CFG    struTime[LOCKGATE_TIME_NUM];
  BYTE                         byRes[128];
}NET_DVR_LOCKGATE_CFG,*LPNET_DVR_LOCKGATE_CFG;

Members

dwSize
结构体大小
struTime
智能锁闸时间段，最多支持4个不同的时间段
byRes
保留，置为0

Remarks

  • 设备是否支持智能锁闸参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应智能锁闸参数配置能力集(LockGateConfigList)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_LOCkGATE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_LOCKGATE_TIME_CFG

智能锁闸时间段信息结构体。

struct{
  char    sBeginTime[LEN_32];
  char    sEndTime[LEN_32];
  BYTE    byRes[64];
}NET_DVR_LOCKGATE_TIME_CFG,*LPNET_DVR_LOCKGATE_TIME_CFG;

Members

sBeginTime
开始时间，32位字符串：HH:MM:SS
sEndTime
结束时间，32位字符串：HH:MM:SS
byRes
保留，置为0

See Also

NET_DVR_LOCKGATE_CFG


NET_DVR_LOG

日志信息结构体。

struct{
  NET_DVR_TIME     strLogTime;
  DWORD            dwMajorType;
  DWORD            dwMinorType;
  BYTE             sPanelUser[MAX_NAMELEN];
  BYTE             sNetUser[MAX_NAMELEN];
  char             sRemoteHostAddr[16];
  DWORD            dwParaType;
  DWORD            dwChannel;
  DWORD            dwDiskNumber;
  DWORD            dwAlarmInPort;
  DWORD            dwAlarmOutPort;
}NET_DVR_LOG,*LPNET_DVR_LOG;

Members

strLogTime
日志时间
dwMajorType
报警主类型，定义如下：
宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_INFORMATION | 0x4 | 日志附加信息
dwMinorType
报警次类型，根据不同的主类型的次类型定义如下：
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARM_IN | 0x1 | 报警输入
MINOR_ALARM_OUT | 0x2 | 报警输出
MINOR_MOTDET_START | 0x3 | 移动侦测报警开始
MINOR_MOTDET_STOP | 0x4 | 移动侦测报警结束
MINOR_HIDE_ALARM_START | 0x5 | 遮挡报警开始
MINOR_HIDE_ALARM_STOP | 0x6 | 遮挡报警结束
MINOR_VCA_ALARM_START | 0x7 | 智能报警开始
MINOR_VCA_ALARM_STOP | 0x8 | 智能报警结束

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_VI_LOST | 0x21 | 视频信号丢失
MINOR_ILLEGAL_ACCESS | 0x22 | 非法访问
MINOR_HD_FULL | 0x23 | 硬盘满
MINOR_HD_ERROR | 0x24 | 网络硬盘错误，录像异常
MINOR_DCD_LOST | 0x25 | MODEM 掉线(保留)
MINOR_IP_CONFLICT | 0x26 | IP地址冲突
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_REC_ERROR | 0x28 | 录像出错
MINOR_IPC_NO_LINK | 0x29 | IPC连接异常
MINOR_VI_EXCEPTION | 0x2a | 视频输入异常(只针对模拟通道)
MINOR_IPC_IP_CONFLICT | 0x2b | IPC的IP地址冲突

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_START_DVR | 0x41 | 开机
MINOR_STOP_DVR | 0x42 | 关机
MINOR_STOP_ABNORMAL | 0x43 | 异常关机
MINOR_REBOOT_DVR | 0x44 | 本地重启设备
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_LOGOUT | 0x51 | 本地注销登陆
MINOR_LOCAL_CFG_PARM | 0x52 | 本地配置参数
MINOR_LOCAL_PLAYBYFILE | 0x53 | 本地按文件回放或下载
MINOR_LOCAL_PLAYBYTIME | 0x54 | 本地按时间回放或下载
MINOR_LOCAL_START_REC | 0x55 | 本地开始录像
MINOR_LOCAL_STOP_REC | 0x56 | 本地停止录像
MINOR_LOCAL_PTZCTRL | 0x57 | 本地云台控制
MINOR_LOCAL_PREVIEW | 0x58 | 本地预览(保留不使用)
MINOR_LOCAL_MODIFY_TIME | 0x59 | 本地修改时间(保留不使用)
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_LOCAL_RECFILE_OUTPUT | 0x5b | 本地备份录象文件
MINOR_LOCAL_FORMAT_HDD | 0x5c | 本地初始化硬盘
MINOR_LOCAL_CFGFILE_OUTPUT | 0x5d | 导出本地配置文件
MINOR_LOCAL_CFGFILE_INPUT | 0x5e | 导入本地配置文件
MINOR_LOCAL_COPYFILE | 0x5f | 本地备份文件
MINOR_LOCAL_LOCKFILE | 0x60 | 本地锁定录像文件
MINOR_LOCAL_UNLOCKFILE | 0x61 | 本地解锁录像文件
MINOR_LOCAL_DVR_ALARM | 0x62 | 本地手动清除和触发报警
MINOR_IPC_ADD | 0x63 | 本地添加IPC
MINOR_IPC_DEL | 0x64 | 本地删除IPC
MINOR_IPC_SET | 0x65 | 本地设置IPC
MINOR_LOCAL_START_BACKUP | 0x66 | 本地开始备份
MINOR_LOCAL_STOP_BACKUP | 0x67 | 本地停止备份
MINOR_LOCAL_COPYFILE_START_TIME | 0x68 | 本地备份开始时间
MINOR_LOCAL_COPYFILE_END_TIME | 0x69 | 本地备份结束时间
MINOR_LOCAL_ADD_NAS | 0x6a | 本地添加网络硬盘
MINOR_LOCAL_DEL_NAS | 0x6b | 本地删除NAS盘
MINOR_LOCAL_SET_NAS | 0x6c | 本地设置NAS盘
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_START_REC | 0x72 | 远程开始录像
MINOR_REMOTE_STOP_REC | 0x73 | 远程停止录像
MINOR_START_TRANS_CHAN | 0x74 | 开始透明传输
MINOR_STOP_TRANS_CHAN | 0x75 | 停止透明传输
MINOR_REMOTE_GET_PARM | 0x76 | 远程获取参数
MINOR_REMOTE_CFG_PARM | 0x77 | 远程配置参数
MINOR_REMOTE_GET_STATUS | 0x78 | 远程获取状态
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_START_VT | 0x7c | 开始语音对讲
MINOR_STOP_VT | 0x7d | 停止语音对讲
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_PLAYBYFILE | 0x7f | 远程按文件回放
MINOR_REMOTE_PLAYBYTIME | 0x80 | 远程按时间回放
MINOR_REMOTE_PTZCTRL | 0x81 | 远程云台控制
MINOR_REMOTE_FORMAT_HDD | 0x82 | 远程格式化硬盘
MINOR_REMOTE_STOP | 0x83 | 远程关机
MINOR_REMOTE_LOCKFILE | 0x84 | 远程锁定文件
MINOR_REMOTE_UNLOCKFILE | 0x85 | 远程解锁文件
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_RECFILE_OUTPUT | 0x88 | 远程导出录象文件
MINOR_REMOTE_DVR_ALARM | 0x89 | 远程手动清除和触发报警
MINOR_REMOTE_IPC_ADD | 0x8a | 远程添加IPC
MINOR_REMOTE_IPC_DEL | 0x8b | 远程删除IPC
MINOR_REMOTE_IPC_SET | 0x8c | 远程设置IPC
MINOR_REBOOT_VCA_LIB | 0x8d | 重启智能库
MINOR_REMOTE_ADD_NAS | 0x8e | 远程添加NAS盘
MINOR_REMOTE_DEL_NAS | 0x8f | 远程删除NAS盘
MINOR_REMOTE_SET_NAS | 0x90 | 远程设置NAS盘

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_INFORMATION | 0x4 | 附加信息
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_HDD_INFO | 0xa1 | 硬盘信息
MINOR_SMART_INFO | 0xa2 | S.M.A.R.T信息
MINOR_REC_START | 0xa3 | 开始录像
MINOR_REC_STOP | 0xa4 | 停止录像
MINOR_REC_OVERDUE | 0xa5 | 过期录像删除
MINOR_LINK_START | 0xa6 | 连接前端设备
MINOR_LINK_STOP | 0xa7 | 断开前端设备
sPanelUser
操作面板的用户名
sNetUser
网络操作的用户名
sRemoteHostAddr
远程主机地址
dwParaType
当日志的主类型为 MAJOR_OPERATION=03（操作）， 且次类型为 MINOR_LOCAL_CFG_PARM=0x52（本地配置参数）或 MINOR_REMOTE_GET_PARM=0x76（远程获得参数）或 MINOR_REMOTE_CFG_PARM=0x77（远程配置参数）时， 该参数类型有效，其含义如下：
宏定义 | 宏定义值 | 含义
PARA_VIDEOOUT | 0x1 | 视频输出结构配置
PARA_IMAGE | 0x2 | 图像参数结构配置
PARA_ENCODE | 0x4 | 压缩参数结构配置
PARA_NETWORK | 0x8 | 网络参数结构配置
PARA_ALARM | 0x10 | 报警参数结构配置
PARA_EXCEPTION | 0x20 | 异常参数结构配置
PARA_DECODER | 0x40 | 解码器参数结构配置
PARA_RS232 | 0x80 | RS232参数结构配置
PARA_PREVIEW | 0x100 | 本地预览参数结构配置
PARA_SECURITY | 0x200 | 用户权限参数结构配置
PARA_DATETIME | 0x400 | 本地系统配置
PARA_FRAMETYPE | 0x800 | 帧信息参数结构配置
dwChannel
通道号
dwDiskNumber
硬盘号
dwAlarmInPort
报警输入端口
dwAlarmOutPort
报警输出端口

Remarks

设备日志查找有两种方式：SDK私有协议和ISAPI协议。
1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。

使用ISAPI协议方式登录查找日志时不支持sPanelUser参数。

See Also

NET_DVR_FindNextLog


NET_DVR_LOG_V30

日志信息结构体。

struct{
  NET_DVR_TIME     strLogTime;
  DWORD            dwMajorType;
  DWORD            dwMinorType;
  BYTE             sPanelUser[MAX_NAMELEN];
  BYTE             sNetUser[MAX_NAMELEN];
  NET_DVR_IPADDR   struRemoteHostAddr;
  DWORD            dwParaType;
  DWORD            dwChannel;
  DWORD            dwDiskNumber;
  DWORD            dwAlarmInPort;
  DWORD            dwAlarmOutPort;
  DWORD            dwInfoLen;
  char             sInfo[LOG_INFO_LEN];
}NET_DVR_LOG_V30,*LPNET_DVR_LOG_V30;

Members

strLogTime
日志时间
dwMajorType
日志主类型，定义如下：
宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_INFORMATION | 0x4 | 日志附加信息
MAJOR_EVENT | 0x5 | 事件
dwMinorType
日志次类型，根据不同的主类型的次类型定义如下：
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARM_IN | 0x1 | 报警输入
MINOR_ALARM_OUT | 0x2 | 报警输出
MINOR_MOTDET_START | 0x3 | 移动侦测报警开始
MINOR_MOTDET_STOP | 0x4 | 移动侦测报警结束
MINOR_HIDE_ALARM_START | 0x5 | 遮挡报警开始
MINOR_HIDE_ALARM_STOP | 0x6 | 遮挡报警结束
MINOR_VCA_ALARM_START | 0x7 | 智能报警开始
MINOR_VCA_ALARM_STOP | 0x8 | 智能报警结束
MINOR_ITS_ALARM_START | 0x09 | 交通事件报警开始
MINOR_ITS_ALARM_STOP | 0x0a | 交通事件报警结束
MINOR_NETALARM_START | 0x0b | 网络报警开始
MINOR_NETALARM_STOP | 0x0c | 网络报警结束
MINOR_NETALARM_RESUME | 0x0d | 网络报警恢复
MINOR_WIRELESS_ALARM_START | 0x0e | 无线报警开始
MINOR_WIRELESS_ALARM_STOP | 0x0f | 无线报警结束
MINOR_PIR_ALARM_START | 0x10 | 人体感应报警开始
MINOR_PIR_ALARM_STOP | 0x11 | 人体感应报警结束
MINOR_CALLHELP_ALARM_START | 0x12 | 呼救报警开始
MINOR_CALLHELP_ALARM_STOP | 0x13 | 呼救报警结束
MINOR_DETECTFACE_ALARM_START | 0x16 | 人脸侦测报警开始
MINOR_DETECTFACE_ALARM_STOP | 0x17 | 人脸侦测报警结束
MINOR_VCA_SECNECHANGE_DETECTION | 0x1a | 场景侦测报警
MINOR_SMART_REGION_EXITING_BEGIN | 0x1b | 离开区域侦测开始
MINOR_SMART_REGION_EXITING_END | 0x1c | 离开区域侦测结束
MINOR_SMART_LOITERING_BEGIN | 0x1d | 徘徊侦测开始
MINOR_SMART_LOITERING_END | 0x1e | 徘徊侦测结束
MINOR_VCA_ALARM_LINE_DETECTION_BEGIN | 0x20 | 越界侦测开始
MINOR_VCA_ALARM_LINE_DETECTION_END | 0x21 | 越界侦测结束
MINOR_VCA_ALARM_INTRUDE_BEGIN | 0x22 | 区域入侵侦测开始
MINOR_VCA_ALARM_INTRUDE_END | 0x23 | 区域入侵侦测结束
MINOR_VCA_ALARM_AUDIOINPUT | 0x24 | 音频丢失侦测
MINOR_VCA_ALARM_AUDIOABNORMAL | 0x25 | 音频异常侦测
MINOR_VCA_DEFOCUS_DETECTION_BEGIN | 0x26 | 虚焦侦测开始
MINOR_VCA_DEFOCUS_DETECTION_END | 0x27 | 虚焦侦测结束
MINOR_VCA_FACE_ALARM_BEGIN | 0x29 | 人脸侦测开始
MINOR_SMART_REGION_ENTRANCE_BEGIN | 0x2a | 进入区域侦测开始
MINOR_SMART_REGION_ENTRANCE_END | 0x2b | 进入区域侦测结束
MINOR_SMART_PEOPLE_GATHERING_BEGIN | 0x2c | 人员聚集侦测开始
MINOR_SMART_PEOPLE_GATHERING_END | 0x2d | 人员聚集侦测结束
MINOR_SMART_FAST_MOVING_BEGIN | 0x2e | 快速运动侦测开始
MINOR_SMART_FAST_MOVING_END | 0x2f | 快速运动侦测结束
MINOR_VCA_FACE_ALARM_END | 0x30 | 人脸侦测结束
MINOR_VCA_SCENE_CHANGE_ALARM_BEGIN | 0x31 | 场景变更侦测开始
MINOR_VCA_SCENE_CHANGE_ALARM_END | 0x32 | 场景变更侦测结束
MINOR_VCA_ALARM_AUDIOINPUT_BEGIN | 0x33 | 音频丢失侦测开始
MINOR_VCA_ALARM_AUDIOINPUT_END | 0x34 | 音频丢失侦测结束
MINOR_VCA_ALARM_AUDIOABNORMAL_BEGIN | 0x35 | 声强突变侦测开始
MINOR_VCA_ALARM_AUDIOABNORMAL_END | 0x36 | 声强突变侦测结束
MINOR_VCA_ALARM_AUDIOSTEEPDROP | 0x39 | 声强陡降侦测
MINOR_SMART_PARKING_BEGIN | 0x3c | 停车侦测开始
MINOR_SMART_PARKING_END | 0x3d | 停车侦测结束
MINOR_SMART_UNATTENDED_BAGGAGE_BEGIN | 0x3e | 物品遗留侦测开始
MINOR_SMART_UNATTENDED_BAGGAGE_END | 0x3f | 物品遗留侦测结束
MINOR_SMART_OBJECT_REMOVAL_BEGIN | 0x40 | 物品拿取侦测开始
MINOR_SMART_OBJECT_REMOVAL_END | 0x41 | 物品拿取侦测结
MINOR_SMART_VEHICLE_ALARM_START | 0x46 | 车牌检测开始
MINOR_SMART_VEHICLE_ALARM_STOP | 0x47 | 车牌检测结束
MINOR_THERMAL_FIREDETECTION | 0x48 | 热成像火点检测侦测开始
MINOR_THERMAL_FIREDETECTION_END | 0x49 | 热成像火点检测侦测结束
MINOR_SMART_VANDALPROOF_BEGIN | 0x50 | 防破坏检测开始
MINOR_SMART_VANDALPROOF_END | 0x51 | 防破坏检测结束
MINOR_FACESNAP_MATCH_ALARM_START | 0x55 | 人脸比对报警开始
MINOR_FACESNAP_MATCH_ALARM_STOP | 0x56 | 人脸比对报警结束
MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_START | 0x57 | 授权名单人脸比对(陌生人)报警开始
MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_STOP | 0x58 | 授权名单人脸比对(陌生人)报警结束
MINOR_THERMAL_SHIPSDETECTION | 0x5a | 热成像船只检测侦测
MINOR_THERMAL_THERMOMETRY_EARLYWARNING_BEGIN | 0x5b | 热成像测温预警开始
MINOR_THERMAL_THERMOMETRY_EARLYWARNING_END | 0x5c | 热成像测温预警结束
MINOR_THERMAL_THERMOMETRY_ALARM_BEGIN | 0x5d | 热成像测温报警开始
MINOR_THERMAL_THERMOMETRY_ALARM_END | 0x5e | 热成像测温报警结束
MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_BEGIN | 0x5f | 热成像温差报警开始
MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_END | 0x60 | 热成像温差报警结束
MINOR_ FACE_THERMOMETRY_ALARM | 0x63 | 人脸测温报警
MINOR_SAFETY_HELMET_ALARM_START | 0x72 | 未佩戴安全帽检测报警开始
MINOR_SAFETY_HELMET_ALARM_STOP | 0x73 | 未佩戴安全帽检测报警结束
MINOR_HFPD_ALARM_START | 0x74 | 高频人员检测报警开始
MINOR_HFPD_ALARM_STOP | 0x75 | 高频人员检测报警结束
MINOR_VCA_GET_UP_ALARM_BEGIN | 0x80 | 起床检测报警开始
MINOR_VCA_GET_UP_ALARM_END | 0x81 | 起床检测报警结束
MINOR_VCA_ADV_REACH_HEIGHT_ALARM_BEGIN | 0x82 | 折线攀高报警开始
MINOR_VCA_ADV_REACH_HEIGHT_ALARM_END | 0x83 | 折线攀高报警结束
MINOR_VCA_TOILET_TARRY_ALARM_BEGIN | 0x84 | 如厕超时报警开始
MINOR_VCA_TOILET_TARRY_ALARM_END | 0x85 | 如厕超时报警结束
MINOR_HUMAN_RECOGNITION_ALARM_BEGIN | 0x86 | 人体识别报警开始
MINOR_HUMAN_RECOGNITION_ALARM_END | 0x87 | 人体识别报警结束
MINOR_STUDENTS_STOODUP_ALARM_BEGIN | 0x88 | 学生起立报警开始
MINOR_STUDENTS_STOODUP_ALARM_END | 0x89 | 学生起立报警结束
MINOR_FRAMES_PEOPLE_COUNTING_ALARM | 0x8a | 区域人数统计报警
MINOR_MANUAL_ALARM | 0x10e | 手动报警
MINOR_DETECTOR_ALARM | 0x10f | 探测器报警
MINOR_LINKAGE_ALARM | 0x110 | 联动报警
MINOR_FIRE_ALARM | 0x113 | 火警报警
MINOR_SUPERVISE_ALARM | 0x114 | 监管报警
MINOR_SHIELD_ALARM | 0x115 | 屏蔽报警
MINOR_ABNORMAL_ALARM | 0x116 | 故障报警
MINOR_ALARMIN_SHORT_CIRCUIT | 0x400 | 防区短路报警
MINOR_ALARMIN_BROKEN_CIRCUIT | 0x401 | 防区断路报警
MINOR_ALARMIN_EXCEPTION | 0x402 | 防区异常报警
MINOR_ALARMIN_RESUME | 0x403 | 防区报警恢复
MINOR_HOST_DESMANTLE_ALARM | 0x404 | 设备防拆报警
MINOR_HOST_DESMANTLE_RESUME | 0x405 | 设备防拆恢复
MINOR_CARD_READER_DESMANTLE_ALARM | 0x406 | 读卡器防拆报警
MINOR_CARD_READER_DESMANTLE_RESUME | 0x407 | 读卡器防拆恢复
MINOR_CASE_SENSOR_ALARM | 0x408 | 事件输入报警
MINOR_CASE_SENSOR_RESUME | 0x409 | 事件输入恢复
MINOR_STRESS_ALARM | 0x40a | 胁迫报警
MINOR_OFFLINE_ECENT_NEARLY_FULL | 0x40b | 离线事件满90%报警
MINOR_CARD_MAX_AUTHENTICATE_FAIL | 0x40c | 卡号认证失败超次报警
MINOR_POS_START_ALARM | 0x411 | POS开启
MINOR_POS_END_ALARM | 0x412 | POS结束
MINOR_HEART_RATE_ABNORMAL_BEGIN | 0x426 | 心率异常报警开始
MINOR_HEART_RATE_ABNORMAL_END | 0x427 | 心率异常报警结束
MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN | 0x428 | 血氧异常报警开始
MINOR_BLOOD_OXYGEN_ABNORMAL_END | 0x429 | 血氧异常报警结束
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42a | 血压收缩压异常报警开始
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42b | 血压收缩压异常报警结束
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42c | 血压舒张压异常报警开始
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42d | 血压舒张压异常报警结束

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_RAID_ERROR | 0x20 | 阵列异常
MINOR_VI_LOST | 0x21 | 视频信号丢失
MINOR_ILLEGAL_ACCESS | 0x22 | 非法访问
MINOR_HD_FULL | 0x23 | 硬盘满
MINOR_HD_ERROR | 0x24 | 网络硬盘错误，录像异常
MINOR_DCD_LOST | 0x25 | MODEM 掉线(保留)
MINOR_IP_CONFLICT | 0x26 | IP地址冲突
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_REC_ERROR | 0x28 | 录像出错
MINOR_IPC_NO_LINK | 0x29 | IPC连接异常
MINOR_VI_EXCEPTION | 0x2a | 视频输入异常(只针对模拟通道)
MINOR_IPC_IP_CONFLICT | 0x2b | IPC的IP地址冲突
MINOR_SENCE_EXCEPTION | 0x2c | 场景异常
MINOR_PIC_REC_ERROR | 0x2d | 抓图出错,获取图片文件失败
MINOR_VI_MISMATCH | 0x2e | 视频制式不匹配
MINOR_RESOLUTION_MISMATCH | 0x2f | 编码分辨率和前端分辨率不匹配
MINOR_RS485_DEVICE_ABNORMAL | 0x3a | RS485连接状态异常
MINOR_RS485_DEVICE_REVERT | 0x3b | RS485连接状态异常恢复
MINOR_SCREEN_SUBSYSTEM_ABNORMALREBOOT | 0x3c | 子板异常启动
MINOR_SCREEN_SUBSYSTEM_ABNORMALINSERT | 0x3d | 子板插入
MINOR_SCREEN_SUBSYSTEM_ABNORMALPULLOUT | 0x3e | 子板拔出
MINOR_SCREEN_ABNARMALTEMPERATURE | 0x3f | 温度异常
MINOR_RECORD_OVERFLOW | 0x41 | 缓冲区溢出
MINOR_DSP_ABNORMAL | 0x42 | DSP异常
MINOR_ANR_RECORD_FAIED | 0x43 | ANR录像失败
MINOR_SPARE_WORK_DEVICE_EXCEPT | 0x44 | 热备设备工作机异常
MINOR_START_IPC_MAS_FAILED | 0x45 | 开启IPC MAS失败
MINOR_IPCM_CRASH | 0x46 | IPCM异常重启
MINOR_POE_POWER_EXCEPTION | 0x47 | POE供电异常
MINOR_UPLOAD_DATA_CS_EXCEPTION | 0x48 | 云存储数据上传失败
MINOR_DIAL_EXCEPTION | 0x49 | 拨号异常
MINOR_DEV_EXCEPTION_OFFLINE | 0x50 | 设备异常下线
MINOR_UPGRADEFAIL | 0x51 | 远程升级设备失败
MINOR_AI_LOST | 0x52 | 音频信号丢失
MINOR_SYNC_IPC_PASSWD | 0x53 | 同步IPC密码异常
MINOR_EZVIZ_OFFLINE | 0x54 | 萤石下线异常
MINOR_ACCESSORIES_PLATE | 0x57 | 配件板异常
MINOR_FACESNAP_RESOLUTION_OVERFLOW | 0x63 | 人脸抓拍码流分辨率超限
MINOR_SMD_RESOLUTION_OVERFLOW | 0x64 | SMD码流分辨率超限
MINOR_AUDIO_LOSS_EXCEPTION | 0x65 | 音频丢失异常
MINIOR_VCA_RUNNING_EXCEPTION | 0x88 | 智能板运行异常
MINOR_DEV_POWER_ON | 0x400 | 设备上电启动
MINOR_DEV_POWER_OFF | 0x401 | 设备掉电关闭
MINOR_WATCH_DOG_RESET | 0x402 | 看门狗复位
MINOR_LOW_BATTERY | 0x403 | 蓄电池电压低
MINOR_BATTERY_RESUME | 0x404 | 蓄电池电压恢复正常
MINOR_AC_OFF | 0x405 | 交流电断电
MINOR_AC_RESUME | 0x406 | 交流电恢复
MINOR_NET_RESUME | 0x407 | 网络恢复
MINOR_FLASH_ABNORMAL | 0x408 | FLASH读写异常
MINOR_CARD_READER_OFFLINE | 0x409 | 读卡器掉线
MINOR_CARD_READER_RESUME | 0x40a | 读卡器掉线恢复
MINOR_SUBSYSTEM_IP_CONFLICT | 0x4000 | 子板IP冲突
MINOR_SUBSYSTEM_NET_BROKEN | 0x4001 | 子板断网
MINOR_FAN_ABNORMAL | 0x4002 | 风扇异常
MINOR_BACKPANEL_TEMPERATURE_ABNORMAL | 0x4003 | 背板温度异常
MINOR_SDCARD_ABNORMAL | 0x4004 | SD卡不健康
MINOR_SDCARD_DAMAGE | 0x4005 | SD卡损坏
MINOR_MAIN_POWER_FAULT | 0x4007 | 主电故障
MINOR_BACK_UP_POWER_FAULT | 0x4008 | 备电故障
MINOR_TAMPER_FAULT | 0x4009 | 防拆故障
MINOR_RS232_FAULT | 0x400a | 232总线故障
MINOR_RS485_FAULT | 0x400b | 485总线故障
MINOR_LAN_STATUS_FAULT | 0x400c | LAN网线接入状态故障
MINOR_LAN_LINK1_FAULT | 0x400d | LAN链路1故障
MINOR_LAN_LINK2_FAULT | 0x400e | LAN链路2故障
MINOR_SIM_CARD_STATUS_FAULT | 0x400f | 4G-SIM卡状态故障
MINOR_4G_LINK1_FAULT | 0x4010 | 4G链路1故障
MINOR_4G_LINK2_FAULT | 0x4011 | 4G链路2故障
MINOR_OTHER_FAULT | 0x4012 | 其他故障
MINOR_SENSOR_SHORT_CIRCUIT | 0x4014 | 传感器短路
MINOR_SENSOR_OPEN_CIRCUIT | 0x4015 | 传感器断路
MINOR_SENSOR_MIS_CONNECT | 0x4016 | 传感器错接
MINOR_SENSOR_FAULT_RESTORE | 0x4017 | 传感器故障恢复

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_START_DVR | 0x41 | 开机
MINOR_STOP_DVR | 0x42 | 关机
MINOR_STOP_ABNORMAL | 0x43 | 异常关机
MINOR_REBOOT_DVR | 0x44 | 本地重启设备
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_LOGOUT | 0x51 | 本地注销登陆
MINOR_LOCAL_CFG_PARM | 0x52 | 本地配置参数
MINOR_LOCAL_PLAYBYFILE | 0x53 | 本地按文件回放或下载
MINOR_LOCAL_PLAYBYTIME | 0x54 | 本地按时间回放或下载
MINOR_LOCAL_START_REC | 0x55 | 本地开始录像
MINOR_LOCAL_STOP_REC | 0x56 | 本地停止录像
MINOR_LOCAL_PTZCTRL | 0x57 | 本地云台控制
MINOR_LOCAL_PREVIEW | 0x58 | 本地预览(保留不使用)
MINOR_LOCAL_MODIFY_TIME | 0x59 | 本地修改时间(保留不使用)
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_LOCAL_RECFILE_OUTPUT | 0x5b | 本地备份录象文件
MINOR_LOCAL_FORMAT_HDD | 0x5c | 本地初始化硬盘
MINOR_LOCAL_CFGFILE_OUTPUT | 0x5d | 导出本地配置文件
MINOR_LOCAL_CFGFILE_INPUT | 0x5e | 导入本地配置文件
MINOR_LOCAL_COPYFILE | 0x5f | 本地备份文件
MINOR_LOCAL_LOCKFILE | 0x60 | 本地锁定录像文件
MINOR_LOCAL_UNLOCKFILE | 0x61 | 本地解锁录像文件
MINOR_LOCAL_DVR_ALARM | 0x62 | 本地手动清除和触发报警
MINOR_IPC_ADD | 0x63 | 本地添加IPC
MINOR_IPC_DEL | 0x64 | 本地删除IPC
MINOR_IPC_SET | 0x65 | 本地设置IPC
MINOR_LOCAL_START_BACKUP | 0x66 | 本地开始备份
MINOR_LOCAL_STOP_BACKUP | 0x67 | 本地停止备份
MINOR_LOCAL_COPYFILE_START_TIME | 0x68 | 本地备份开始时间
MINOR_LOCAL_COPYFILE_END_TIME | 0x69 | 本地备份结束时间
MINOR_LOCAL_ADD_NAS | 0x6a | 本地添加网络硬盘
MINOR_LOCAL_DEL_NAS | 0x6b | 本地删除NAS盘
MINOR_LOCAL_SET_NAS | 0x6c | 本地设置NAS盘
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_START_REC | 0x72 | 远程开始录像
MINOR_REMOTE_STOP_REC | 0x73 | 远程停止录像
MINOR_START_TRANS_CHAN | 0x74 | 开始透明传输
MINOR_STOP_TRANS_CHAN | 0x75 | 停止透明传输
MINOR_REMOTE_GET_PARM | 0x76 | 远程获取参数
MINOR_REMOTE_CFG_PARM | 0x77 | 远程配置参数
MINOR_REMOTE_GET_STATUS | 0x78 | 远程获取状态
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_START_VT | 0x7c | 开始语音对讲
MINOR_STOP_VT | 0x7d | 停止语音对讲
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_PLAYBYFILE | 0x7f | 远程按文件回放
MINOR_REMOTE_PLAYBYTIME | 0x80 | 远程按时间回放
MINOR_REMOTE_PTZCTRL | 0x81 | 远程云台控制
MINOR_REMOTE_FORMAT_HDD | 0x82 | 远程格式化硬盘
MINOR_REMOTE_STOP | 0x83 | 远程关机
MINOR_REMOTE_LOCKFILE | 0x84 | 远程锁定文件
MINOR_REMOTE_UNLOCKFILE | 0x85 | 远程解锁文件
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_RECFILE_OUTPUT | 0x88 | 远程导出录象文件
MINOR_REMOTE_DVR_ALARM | 0x89 | 远程手动清除和触发报警
MINOR_REMOTE_IPC_ADD | 0x8a | 远程添加IPC
MINOR_REMOTE_IPC_DEL | 0x8b | 远程删除IPC
MINOR_REMOTE_IPC_SET | 0x8c | 远程设置IPC
MINOR_REBOOT_VCA_LIB | 0x8d | 重启智能库
MINOR_REMOTE_ADD_NAS | 0x8e | 远程添加NAS盘
MINOR_REMOTE_DEL_NAS | 0x8f | 远程删除NAS盘
MINOR_REMOTE_SET_NAS | 0x90 | 远程设置NAS盘
MINOR_LOCAL_START_REC_CDRW | 0x91 | 本地开始刻录
MINOR_LOCAL_STOP_REC_CDRW | 0x92 | 本地停止刻录
MINOR_REMOTE_START_REC_CDRW | 0x93 | 远程开始刻录
MINOR_REMOTE_STOP_REC_CDRW | 0x94 | 远程停止刻录
MINOR_LOCAL_PIC_OUTPUT | 0x95 | 本地备份图片文件
MINOR_REMOTE_PIC_OUTPUT | 0x96 | 远程备份图片文件
MINOR_LOCAL_INQUEST_RESUME | 0x97 | 本地恢复审讯事件
MINOR_REMOTE_INQUEST_RESUME | 0x98 | 远程恢复审讯事件
MINOR_LOCAL_ADD_FILE | 0x99 | 本地导入文件
MINOR_REMOTE_DELETE_HDISK | 0x9a | 远程删除异常不存在的硬盘
MINOR_REMOTE_LOAD_HDISK | 0x9b | 远程加载硬盘
MINOR_REMOTE_UNLOAD_HDISK | 0x9c | 远程卸载硬盘
MINOR_LOCAL_OPERATE_LOCK | 0x9d | 本地操作锁定
MINOR_LOCAL_OPERATE_UNLOCK | 0x9e | 本地操作解除锁定
MINOR_LOCAL_DEL_FILE | 0x9f | 本地删除审讯文件
MINOR_REMOTE_BYPASS | 0xd0 | 远程旁路
MINOR_REMOTE_UNBYPASS | 0xd1 | 远程旁路恢复
MINOR_REMOTE_SET_ALARMIN_CFG | 0xd2 | 远程设置报警输入参数
MINOR_REMOTE_GET_ALARMIN_CFG | 0xd3 | 远程获取报警输入参数
MINOR_REMOTE_SET_ALARMOUT_CFG | 0xd4 | 远程设置报警输出参数
MINOR_REMOTE_GET_ALARMOUT_CFG | 0xd5 | 远程获取报警输出参数
MINOR_REMOTE_ALARMOUT_OPEN_MAN | 0xd6 | 远程手动开启报警输出
MINOR_REMOTE_ALARMOUT_CLOSE_MAN | 0xd7 | 远程手动关闭报警输出
MINOR_REMOTE_ALARM_ENABLE_CFG | 0xd8 | 远程设置报警主机的RS485串口使能状态
MINOR_DBDATA_OUTPUT | 0xd9 | 导出数据库记录
MINOR_DBDATA_INPUT | 0xda | 导入数据库记录
MINOR_MU_SWITCH | 0xdb | 级联切换
MINOR_MU_PTZ | 0xdc | 级联PTZ控制
MINOR_REMOTE_INQUEST_DEL_FILE | 0xde | 远程删除文件
MINOR_LOCAL_CONF_REB_RAID | 0x101 | 本地配置自动重建
MINOR_LOCAL_CONF_SPARE | 0x102 | 本地配置热备
MINOR_LOCAL_ADD_RAID | 0x103 | 本地创建阵列
MINOR_LOCAL_DEL_RAID | 0x104 | 本地删除阵列
MINOR_LOCAL_MIG_RAID | 0x105 | 本地迁移阵列
MINOR_LOCAL_REB_RAID | 0x106 | 本地手动重建阵列
MINOR_LOCAL_QUICK_CONF_RAID | 0x107 | 本地一键配置
MINOR_LOCAL_ADD_VD | 0x108 | 本地创建虚拟磁盘
MINOR_LOCAL_DEL_VD | 0x109 | 本地删除虚拟磁盘
MINOR_LOCAL_RP_VD | 0x10a | 本地修复虚拟磁盘
MINOR_LOCAL_FORMAT_EXPANDVD | 0x10b | 本地扩展虚拟磁盘扩容
MINOR_LOCAL_RAID_UPGRADE | 0x10c | 本地raid卡升级
MINOR_LOCAL_STOP_RAID | 0x10d | 本地暂停RAID操作(即安全拔盘)
MINOR_LOCAL_STOP_RAID | 0x10e | 手动报警
MINOR_LOCAL_STOP_RAID | 0x10f | 探测器报警
MINOR_LOCAL_STOP_RAID | 0x110 | 联动报警
MINOR_REMOTE_CONF_REB_RAID | 0x111 | 远程配置自动重建
MINOR_REMOTE_CONF_SPARE | 0x112 | 远程配置热备
MINOR_REMOTE_ADD_RAID | 0x113 | 远程创建阵列
MINOR_REMOTE_DEL_RAID | 0x114 | 远程删除阵列
MINOR_REMOTE_MIG_RAID | 0x115 | 远程迁移阵列
MINOR_REMOTE_REB_RAID | 0x116 | 远程手动重建阵列
MINOR_REMOTE_QUICK_CONF_RAID | 0x117 | 远程一键配置
MINOR_REMOTE_ADD_VD | 0x118 | 远程创建虚拟磁盘
MINOR_REMOTE_DEL_VD | 0x119 | 远程删除虚拟磁盘
MINOR_REMOTE_RP_VD | 0x11a | 远程修复虚拟磁盘
MINOR_REMOTE_FORMAT_EXPANDVD | 0x11b | 远程虚拟磁盘扩容
MINOR_REMOTE_RAID_UPGRADE | 0x11c | 远程raid卡升级
MINOR_REMOTE_STOP_RAID | 0x11d | 远程暂停RAID操作(即安全拔盘)
MINOR_LOCAL_START_PIC_REC | 0x121 | 本地开始抓图
MINOR_LOCAL_STOP_PIC_REC | 0x122 | 本地停止抓图
MINOR_LOCAL_SET_SNMP | 0x125 | 本地配置SNMP
MINOR_LOCAL_TAG_OPT | 0x126 | 本地标签操作
MINOR_REMOTE_START_PIC_REC | 0x131 | 远程开始抓图
MINOR_REMOTE_STOP_PIC_REC | 0x132 | 远程停止抓图
MINOR_REMOTE_SET_SNMP | 0x135 | 远程配置SNMP
MINOR_REMOTE_TAG_OPT | 0x136 | 远程标签操作
MINOR_REMOTE_LOGIN_LOCK | 0x137 | 远程登录锁定
MINOR_REMOTE_LOGIN_UNLOCK | 0x138 | 远程登录解锁
MINOR_OFFLINE_DATA_OUTPUT | 0x423 | 离线采集数据导出
MINOR_CREATE_SSH_LINK | 0x42d | 建立SSH 连接
MINOR_CLOSE_SSH_LINK | 0x42e | 断开SSH 连接
MINOR_LOCAL_VOUT_SWITCH | 0x140 | 本地输出口切换操作
MINOR_STREAM_CABAC | 0x141 | 码流压缩性能选项配置操作
MINOR_LOCAL_SPARE_OPT | 0x142 | 本地N+1热备相关操作
MINOR_REMOTE_SPARE_OPT | 0x143 | 远程N+1热备相关操作
MINOR_LOCAL_IPCCFGFILE_OUTPUT | 0x144 | 本地导出ipc配置文件
MINOR_LOCAL_IPCCFGFILE_INPUT | 0x145 | 本地导入ipc配置文件
MINOR_LOCAL_IPC_UPGRADE | 0x146 | 本地升级IPC
MINOR_REMOTE_IPCCFGFILE_OUTPUT | 0x147 | 远程导出ipc配置文件
MINOR_REMOTE_IPCCFGFILE_INPUT | 0x148 | 远程导入ipc配置文件
MINOR_REMOTE_IPC_UPGRADE | 0x149 | 远程升级IPC
MINOR_LOCAL_UNLOAD_HDISK | 0x150 | 本地卸载硬盘
MINOR_LOCAL_AUDIO_MIX | 0x151 | 本地配置音频混音参数
MINOR_REMOTE_AUDIO_MIX | 0x152 | 远程配置音频混音参数
MINOR_LOCAL_TRIAL_PAUSE | 0x153 | 本地暂停讯问
MINOR_LOCAL_TRIAL_RESUME | 0x154 | 本地继续讯问
MINOR_REMOTE_TRIAL_PAUSE | 0x155 | 远程暂停讯问
MINOR_REMOTE_TRIAL_RESUME | 0x156 | 远程继续讯问
MINOR_REMOTE_MODIFY_VERIFICATION_CODE | 0x157 | 修改平台的验证码
MINOR_LOCAL_MAKECALL | 0x180 | 本地呼叫
MINOR_LOCAL_REJECTCALL | 0x181 | 本地拒接
MINOR_LOCAL_ANSWERCALL | 0x182 | 本地接听
MINOR_LOCAL_HANGUPCALL | 0x183 | 本地挂断
MINOR_REMOTE_MAKECALL | 0x188 | 远程呼叫
MINOR_REMOTE_REJECTCALL | 0x189 | 远程拒接
MINOR_REMOTE_ANSWERCALL | 0x18a | 远程接听
MINOR_REMOTE_HANGUPCALL | 0x18b | 远程挂断
MINOR_SET_MULTI_MASTER | 0x201 | 设置大屏主屏
MINOR_SET_MULTI_SLAVE | 0x202 | 设置大屏子屏
MINOR_CANCEL_MULTI_MASTER | 0x203 | 取消大屏主屏
MINOR_CANCEL_MULTI_SLAVE | 0x204 | 取消大屏子屏
MINOR_SCREEN_SET_INPUT | 0x251 | 修改输入源
MINOR_SCREEN_SET_OUTPUT | 0x252 | 修改输出通道
MINOR_SCREEN_SET_OSD | 0x253 | 修改虚拟LED
MINOR_SCREEN_SET_LOGO | 0x254 | 修改LOGO
MINOR_SCREEN_SET_LAYOUT | 0x255 | 设置场景
MINOR_SCREEN_PICTUREPREVIEW | 0x256 | 回显操作
MINOR_SCREEN_GET_OSD | 0x257 | 获取虚拟LED
MINOR_SCREEN_GET_LAYOUT | 0x258 | 获取场景
MINOR_SCREEN_LAYOUT_CTRL | 0x259 | 场景控制
MINOR_GET_ALL_VALID_WND | 0x260 | 获取所有有效窗口
MINOR_GET_SIGNAL_WND | 0x261 | 获取单个窗口信息
MINOR_WINDOW_CTRL | 0x262 | 窗口控制
MINOR_GET_LAYOUT_LIST | 0x263 | 获取场景列表
MINOR_LAYOUT_CTRL | 0x264 | 场景控制
MINOR_SET_LAYOUT | 0x265 | 设置单个场景
MINOR_GET_SIGNAL_LIST | 0x266 | 获取输入信号源列表
MINOR_GET_PLAN_LIST | 0x267 | 获取预案列表
MINOR_SET_PLAN | 0x268 | 修改预案
MINOR_CTRL_PLAN | 0x269 | 控制预案
MINOR_CTRL_SCREEN | 0x270 | 屏幕控制
MINOR_ADD_NETSIG | 0x271 | 添加信号源
MINOR_SET_NETSIG | 0x272 | 修改信号源
MINOR_SET_DECBDCFG | 0x273 | 设置解码板参数
MINOR_GET_DECBDCFG | 0x274 | 获取解码板参数
MINOR_GET_DEVICE_STATUS | 0x275 | 获取设备信息
MINOR_UPLOAD_PICTURE | 0x276 | 底图上传
MINOR_SET_USERPWD | 0x277 | 设置用户密码
MINOR_ADD_LAYOUT | 0x278 | 添加场景
MINOR_DEL_LAYOUT | 0x279 | 删除场景
MINOR_DEL_NETSIG | 0x280 | 删除信号源
MINOR_ADD_PLAN | 0x281 | 添加预案
MINOR_DEL_PLAN | 0x282 | 删除预案
MINOR_GET_EXTERNAL_MATRIX_CFG | 0x283 | 获取外接矩阵配置
MINOR_SET_EXTERNAL_MATRIX_CFG | 0x284 | 设置外接矩阵配置
MINOR_GET_USER_CFG | 0x285 | 获取用户配置
MINOR_SET_USER_CFG | 0x286 | 设置用户配置
MINOR_GET_DISPLAY_PANEL_LINK_CFG | 0x287 | 获取显示墙连接配置
MINOR_SET_DISPLAY_PANEL_LINK_CFG | 0x288 | 设置显示墙连接配置
MINOR_GET_WALLSCENE_PARAM | 0x289 | 获取电视墙场景
MINOR_SET_WALLSCENE_PARAM | 0x28a | 设置电视墙场景
MINOR_GET_CURRENT_WALLSCENE | 0x28b | 获取当前使用场景
MINOR_SWITCH_WALLSCENE | 0x28c | 场景切换
MINOR_LOCAL_LOAD_HDISK | 0x300 | 本地加载硬盘
MINOR_LOCAL_DELETE_HDISK | 0x301 | 本地删除异常不存在的硬盘
MINOR_REMOTE_CFG_POE_WORK_MODE | 0x361 | 远程设置POE工作模式
MINOR_LOCAL_CFG_POE_WORK_MODE | 0x362 | 本地设置POE工作模式
MINOR_REMOTE_OPEN_DOOR | 0x400 | 远程开门
MINOR_REMOTE_CLOSE_DOOR | 0x401 | 远程关门
MINOR_REMOTE_ALWAYS_OPEN | 0x402 | 远程常开
MINOR_REMOTE_ALWAYS_CLOSE | 0x403 | 远程常关
MINOR_REMOTE_CHECK_TIME | 0x404 | 远程手动校时
MINOR_NTP_CHECK_TIME | 0x405 | NTP自动校时
MINOR_REMOTE_CLEAR_CARD | 0x406 | 远程清空卡号
MINOR_REMOTE_RESTORE_CFG | 0x407 | 远程恢复默认参数
MINOR_ALARMIN_ARM | 0x408 | 防区布防
MINOR_ALARMIN_DISARM | 0x409 | 防区撤防
MINOR_LOCAL_RESTORE_CFG | 0x40a | 本地恢复默认参数
MINOR_SET_TRIGGERMODE_CFG | 0x1001 | 设置触发模式参数
MINOR_GET_TRIGGERMODE_CFG | 0x1002 | 获取触发模式参数
MINOR_SET_IOOUT_CFG | 0x1003 | 设置IO输出参数
MINOR_GET_IOOUT_CFG | 0x1004 | 获取IO输出参数
MINOR_GET_TRIGGERMODE_DEFAULT | 0x1005 | 获取触发模式推荐参数
MINOR_GET_ITCSTATUS | 0x1006 | 获取状态检测参数
MINOR_SET_STATUS_DETECT_CFG | 0x1007 | 设置状态检测参数
MINOR_GET_STATUS_DETECT_CFG | 0x1008 | 获取状态检测参数
MINOR_GET_VIDEO_TRIGGERMODE_CFG | 0x1009 | 获取视频电警模式参数
MINOR_SET_VIDEO_TRIGGERMODE_CFG | 0x100a | 设置视频电警模式参数
MINOR_LOCAL_ADD_CAR_INFO | 0x2001 | 本地添加车辆信息
MINOR_LOCAL_MOD_CAR_INFO | 0x2002 | 本地修改车辆信息
MINOR_LOCAL_DEL_CAR_INFO | 0x2003 | 本地删除车辆信息
MINOR_LOCAL_FIND_CAR_INFO | 0x2004 | 本地查找车辆信息
MINOR_LOCAL_ADD_MONITOR_INFO | 0x2005 | 本地添加布防信息
MINOR_LOCAL_MOD_MONITOR_INFO | 0x2006 | 本地修改布防信息
MINOR_LOCAL_DEL_MONITOR_INFO | 0x2007 | 本地删除布防信息
MINOR_LOCAL_FIND_MONITOR_INFO | 0x2008 | 本地查询布防信息
MINOR_LOCAL_FIND_NORMAL_PASS_INFO | 0x2009 | 本地查询正常通行信息
MINOR_LOCAL_FIND_ABNORMAL_PASS_INFO | 0x200a | 本地查询异常通行信息
MINOR_LOCAL_FIND_PEDESTRIAN_PASS_INFO | 0x200b | 本地查询正常通行信息
MINOR_LOCAL_PIC_PREVIEW | 0x200c | 本地图片预览
MINOR_LOCAL_SET_GATE_PARM_CFG | 0x200d | 设置本地配置出入口参数
MINOR_LOCAL_GET_GATE_PARM_CFG | 0x200e | 获取本地配置出入口参数
MINOR_LOCAL_SET_DATAUPLOAD_PARM_CFG | 0x200f | 设置本地配置数据上传参数
MINOR_LOCAL_GET_DATAUPLOAD_PARM_CFG | 0x2010 | 获取本地配置数据上传参数
MINOR_LOCAL_DEVICE_CONTROL | 0x2011 | 本地设备控制(本地开关闸)
MINOR_LOCAL_ADD_EXTERNAL_DEVICE_INFO | 0x2012 | 本地添加外接设备信息
MINOR_LOCAL_MOD_EXTERNAL_DEVICE_INFO | 0x2013 | 本地修改外接设备信息
MINOR_LOCAL_DEL_EXTERNAL_DEVICE_INFO | 0x2014 | 本地删除外接设备信息
MINOR_LOCAL_FIND_EXTERNAL_DEVICE_INFO | 0x2015 | 本地查询外接设备信息
MINOR_LOCAL_ADD_CHARGE_RULE | 0x2016 | 本地添加收费规则
MINOR_LOCAL_MOD_CHARGE_RULE | 0x2017 | 本地修改收费规则
MINOR_LOCAL_DEL_CHARGE_RULE | 0x2018 | 本地删除收费规则
MINOR_LOCAL_FIND_CHARGE_RULE | 0x2019 | 本地查询收费规则
MINOR_LOCAL_COUNT_NORMAL_CURRENTINFO | 0x2020 | 本地统计正常通行信息
MINOR_LOCAL_EXPORT_NORMAL_CURRENTINFO_REPORT | 0x2021 | 本地导出正常通行信息统计报表
MINOR_LOCAL_COUNT_ABNORMAL_CURRENTINFO | 0x2022 | 本地统计异常通行信息
MINOR_LOCAL_EXPORT_ABNORMAL_CURRENTINFO_REPORT | 0x2023 | 本地导出异常通行信息统计报表
MINOR_LOCAL_COUNT_PEDESTRIAN_CURRENTINFO | 0x2024 | 本地统计行人通行信息
MINOR_LOCAL_EXPORT_PEDESTRIAN_CURRENTINFO_REPORT | 0x2025 | 本地导出行人通行信息统计报表
MINOR_LOCAL_FIND_CAR_CHARGEINFO | 0x2026 | 本地查询过车收费信息
MINOR_LOCAL_COUNT_CAR_CHARGEINFO | 0x2027 | 本地统计过车收费信息
MINOR_LOCAL_EXPORT_CAR_CHARGEINFO_REPORT | 0x2028 | 本地导出过车收费信息统计报表
MINOR_LOCAL_FIND_SHIFTINFO | 0x2029 | 本地查询交接班信息
MINOR_LOCAL_FIND_CARDINFO | 0x2030 | 本地查询卡片信息
MINOR_LOCAL_ADD_RELIEF_RULE | 0x2031 | 本地添加减免规则
MINOR_LOCAL_MOD_RELIEF_RULE | 0x2032 | 本地修改减免规则
MINOR_LOCAL_DEL_RELIEF_RULE | 0x2033 | 本地删除减免规则
MINOR_LOCAL_FIND_RELIEF_RULE | 0x2034 | 本地查询减免规则
MINOR_LOCAL_GET_ENDETCFG | 0x2035 | 本地获取出入口控制机离线检测配置
MINOR_LOCAL_SET_ENDETCFG | 0x2036 | 本地设置出入口控制机离线检测配置
MINOR_LOCAL_SET_ENDEV_ISSUEDDATA | 0x2037 | 本地设置出入口控制机下发卡片信息
MINOR_LOCAL_DEL_ENDEV_ISSUEDDATA | 0x2038 | 本地清空出入口控制机下发卡片信息
MINOR_REMOTE_DEVICE_CONTROL | 0x2101 | 远程设备控制
MINOR_REMOTE_SET_GATE_PARM_CFG | 0x2102 | 设置远程配置出入口参数
MINOR_REMOTE_GET_GATE_PARM_CFG | 0x2103 | 获取远程配置出入口参数
MINOR_REMOTE_SET_DATAUPLOAD_PARM_CFG | 0x2104 | 设置远程配置数据上传参数
MINOR_REMOTE_GET_DATAUPLOAD_PARM_CFG | 0x2105 | 获取远程配置数据上传参数
MINOR_REMOTE_GET_BASE_INFO | 0x2106 | 远程获取终端基本信息
MINOR_REMOTE_GET_OVERLAP_CFG | 0x2107 | 远程获取字符叠加参数配置
MINOR_REMOTE_SET_OVERLAP_CFG | 0x2108 | 远程设置字符叠加参数配置
MINOR_REMOTE_GET_ROAD_INFO | 0x2109 | 远程获取路口信息
MINOR_REMOTE_START_TRANSCHAN | 0x210a | 远程建立同步数据服务器
MINOR_REMOTE_GET_ECTWORKSTATE | 0x210b | 远程获取出入口终端工作状态
MINOR_REMOTE_GET_ECTCHANINFO | 0x210c | 远程获取出入口终端通道状态
MINOR_REMOTE_ADD_EXTERNAL_DEVICE_INFO | 0x210d | 远程添加外接设备信息
MINOR_REMOTE_MOD_EXTERNAL_DEVICE_INFO | 0x210e | 远程修改外接设备信息
MINOR_REMOTE_GET_ENDETCFG | 0x210f | 远程获取出入口控制机离线检测配置
MINOR_REMOTE_SET_ENDETCFG | 0x2110 | 远程设置出入口控制机离线检测配置
MINOR_REMOTE_ENDEV_ISSUEDDATA | 0x2111 | 远程设置出入口控制机下发卡片信息
MINOR_REMOTE_DEL_ENDEV_ISSUEDDATA | 0x2112 | 远程清空出入口控制机下发卡片信息
MINOR_REMOTE_ON_CTRL_LAMP | 0x2115 | 开启远程控制车位指示灯
MINOR_REMOTE_OFF_CTRL_LAMP | 0x2116 | 关闭远程控制车位指示灯
MINOR_SET_VOICE_LEVEL_PARAM | 0x2117 | 设置音量大小
MINOR_SET_VOICE_INTERCOM_PARAM | 0x2118 | 设置音量录音
MINOR_SET_INTELLIGENT_PARAM | 0x2119 | 智能配置
MINOR_LOCAL_SET_RAID_SPEED | 0x211a | 本地设置raid速度
MINOR_REMOTE_SET_RAID_SPEED | 0x211b | 远程设置raid速度
MINOR_REMOTE_CREATE_STORAGE_POOL | 0x211c | 远程添加存储池
MINOR_REMOTE_DEL_STORAGE_POOL | 0x211d | 远程删除存储池
MINOR_REMOTE_DEL_PIC | 0x2120 | 远程删除图片数据
MINOR_REMOTE_DEL_RECORD | 0x2121 | 远程删除录像数据
MINOR_REMOTE_CLOUD_ENABLE | 0x2123 | 远程设置云存储启用
MINOR_REMOTE_CLOUD_DISABLE | 0x2124 | 远程设置云存储禁用
MINOR_REMOTE_CLOUD_MODIFY_PARAM | 0x2125 | 远程修改云存储池参数
MINOR_REMOTE_CLOUD_MODIFY_VOLUME | 0x2126 | 远程修改云存储池容量
MINOR_REMOTE_CREATE_MOD_VIEWLIB_SPACE | 0x2200 | 远程创建/修改视图库空间
MINOR_REMOTE_DELETE_VIEWLIB_FILE | 0x2201 | 远程删除视图库文件
MINOR_REMOTE_DOWNLOAD_VIEWLIB_FILE | 0x2202 | 远程下载视图库文件
MINOR_REMOTE_UPLOAD_VIEWLIB_FILE | 0x2203 | 远程上传视图库文件
MINOR_LOCAL_CREATE_MOD_VIEWLIB_SPACE | 0x2204 | 本地创建/修改视图库空间
MINOR_REMOTE_CONFERENCE_CONFIG | 0x2501 | MCU会议配置
MINOR_REMOTE_TERMINAL_CONFIG | 0x2502 | MCU终端配置
MINOR_REMOTE_GROUP_CONFIG | 0x2503 | MCU分组配置
MINOR_REMOTE_CONFERENCE_CTRL | 0x2504 | MCU会议控制
MINOR_REMOTE_TERMINAL_CTRL | 0x2505 | MCU终端控制
MINOR_LOCAL_RESET_LOGIN_PASSWORD | 0x2600 | 本地重置admin登陆密码
MINOR_REMOTE_RESET_LOGIN_PASSWORD | 0x2601 | 远程重置admin登录密码
MINOR_LOCAL_FACE_BASE_CREATE | 0x2602 | 本地人脸对比库创建
MINOR_REMOTE_FACE_BASE_CREATE | 0x2603 | 远程人脸对比库创建
MINOR_LOCAL_FACE_BASE_MODIFY | 0x2604 | 本地人脸对比库修改
MINOR_REMOTE_FACE_BASE_MODIFY | 0x2605 | 远程人脸对比库修改
MINOR_LOCAL_FACE_BASE_DELETE | 0x2606 | 本地人脸对比库删除
MINOR_REMOTE_FACE_BASE_DELETE | 0x2607 | 远程人脸对比库删除
MINOR_LOCAL_FACE_DATA_APPEND | 0x2608 | 本地录入人脸数据
MINOR_REMOTE_FACE_DATA_APPEND | 0x2609 | 远程录入人脸数据
MINOR_LOCAL_FACE_DATA_SEARCH | 0x2610 | 本地人脸比对数据查找
MINOR_REMOTE_FACE_DATA_SEARCH | 0x2611 | 远程人脸比对数据查找
MINOR_LOCAL_FACE_DATA_ANALYSIS | 0x2612 | 本地图片分析操作
MINOR_REMOTE_FACE_DATA_ANALYSIS | 0x2613 | 远程图片分析操作
MINOR_LOCAL_FACE_DATA_EDIT | 0x2614 | 本地人脸数据修改
MINOR_REMOTE_FACE_DATA_EDIT | 0x2615 | 远程人脸数据修改
MINOR_LOCAL_FACE_DATA_DELETE | 0x2616 | 本地人脸数据删除
MINOR_REMOTE_FACE_DATA_DELET | 0x2617 | 远程人脸数据删除
MINOR_LOCAL_VCA_ANALYSIS_CFG | 0x2618 | 本地智能分析配置
MINOR_REMOTE_VCA_ANALYSIS_CFG | 0x2619 | 远程智能分析配置
MINOR_LOCAL_FACE_BASE_IMPORT | 0x261a | 本地导入人脸库
MINOR_LOCAL_FACE_BASE_EXPORT | 0x261b | 本地导出人脸库

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_INFORMATION | 0x4 | 附加信息
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_HDD_INFO | 0xa1 | 硬盘信息
MINOR_SMART_INFO | 0xa2 | S.M.A.R.T信息
MINOR_REC_START | 0xa3 | 开始录像
MINOR_REC_STOP | 0xa4 | 停止录像
MINOR_REC_OVERDUE | 0xa5 | 过期录像删除
MINOR_LINK_START | 0xa6 | 连接前端设备
MINOR_LINK_STOP | 0xa7 | 断开前端设备
MINOR_NET_DISK_INFO | 0xa8 | 网络硬盘信息
MINOR_RAID_INFO | 0xa9 | raid相关信息
MINOR_RUN_STATUS_INFO | 0xaa | 系统运行状态信息
MINOR_SPARE_START_BACKUP | 0xab | 热备系统开始备份指定工作机
MINOR_SPARE_STOP_BACKUP | 0xac | 热备系统停止备份指定工作机
MINOR_SPARE_CLIENT_INFO | 0xad | 热备客户机信息
MINOR_ANR_RECORD_START | 0xae | ANR录像开始
MINOR_ANR_RECORD_END | 0xaf | ANR录像结束
MINOR_ANR_ADD_TIME_QUANTUM | 0xb0 | ANR添加时间段
MINOR_ANR_DEL_TIME_QUANTUM | 0xb1 | ANR删除时间段
MINOR_PIC_REC_START | 0xb3 | 开始抓图
MINOR_PIC_REC_STOP | 0xb4 | 停止抓图
MINOR_PIC_REC_OVERDUE | 0xb5 | 过期图片文件删除
MINOR_CLIENT_LOGIN | 0xb6 | 登录服务器成功
MINOR_CLIENT_RELOGIN | 0xb7 | 重新登录服务器
MINOR_CLIENT_LOGOUT | 0xb8 | 退出服务器成功
MINOR_CLIENT_SYNC_START | 0xb9 | 录像同步开始
MINOR_CLIENT_SYNC_STOP | 0xba | 录像同步终止
MINOR_CLIENT_SYNC_SUCC | 0xbb | 录像同步成功
MINOR_CLIENT_SYNC_EXCP | 0xbc | 录像同步异常
MINOR_GLOBAL_RECORD_ERR_INFO | 0xbd | 全局错误记录信息
MINOR_BUFFER_STATE | 0xbe | 缓冲区状态日志记录
MINOR_DISK_ERRORINFO_V2 | 0xbf | 硬盘错误详细信息V2
MINOR_UNLOCK_RECORD | 0xc3 | 开锁记录
MINOR_VIS_ALARM | 0xc4 | 防区报警
MINOR_TALK_RECORD | 0xc5 | 通话记录
MINOR_ACCESSORIES_MESSAGE | 0xc6 | 配件板信息
MINOR_INTELLIGENT_BOARD_STATUS | 0xc9 | 智能板状态
MINOR_EZVIZ_OPERATION | 0xcc | 萤石运行状态
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EVENT | 0x5 | 事件
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LEGAL_CARD_PASS | 0x01 | 合法卡认证通过
MINOR_CARD_AND_PSW_PASS | 0x02 | 刷卡加密码认证通过
MINOR_CARD_AND_PSW_FAIL | 0x03 | 刷卡加密码认证失败
MINOR_CARD_AND_PSW_TIMEOUT | 0x04 | 数卡加密码认证超时
MINOR_CARD_AND_PSW_OVER_TIME | 0x05 | 刷卡加密码超次
MINOR_CARD_NO_RIGHT | 0x06 | 未分配权限
MINOR_CARD_INVALID_PERIOD | 0x07 | 无效时段
MINOR_CARD_OUT_OF_DATE | 0x08 | 卡号过期
MINOR_INVALID_CARD | 0x09 | 无此卡号
MINOR_ANTI_SNEAK_FAIL | 0x0a | 反潜回认证失败
MINOR_INTERLOCK_DOOR_NOT_CLOSE | 0x0b | 互锁门未关闭
MINOR_NOT_BELONG_MULTI_GROUP | 0x0c | 卡不属于多重认证群组
MINOR_INVALID_MULTI_VERIFY_PERIOD | 0x0d | 卡不在多重认证时间段内
MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL | 0x0e | 多重认证模式超级权限认证失败
MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL | 0x0f | 多重认证模式远程认证失败
MINOR_MULTI_VERIFY_SUCCESS | 0x10 | 多重认证成功
MINOR_LEADER_CARD_OPEN_BEGIN | 0x11 | 首卡开门开始
MINOR_LEADER_CARD_OPEN_END | 0x12 | 首卡开门结束
MINOR_ALWAYS_OPEN_BEGIN | 0x13 | 常开状态开始
MINOR_ALWAYS_OPEN_END | 0x14 | 常开状态结束
MINOR_LOCK_OPEN | 0x15 | 门锁打开
MINOR_LOCK_CLOSE | 0x16 | 门锁关闭
MINOR_DOOR_BUTTON_PRESS | 0x17 | 开门按钮打开
MINOR_DOOR_BUTTON_RELEASE | 0x18 | 开门按钮放开
MINOR_DOOR_OPEN_NORMAL | 0x19 | 正常开门（门磁）
MINOR_DOOR_CLOSE_NORMAL | 0x1a | 正常关门（门磁）
MINOR_DOOR_OPEN_ABNORMAL | 0x1b | 门异常打开（门磁）
MINOR_DOOR_OPEN_TIMEOUT | 0x1c | 门打开超时（门磁）
MINOR_ALARMOUT_ON | 0x1d | 报警输出打开
MINOR_ALARMOUT_OFF | 0x1e | 报警输出关闭
MINOR_ALWAYS_CLOSE_BEGIN | 0x1f | 常关状态开始
MINOR_ALWAYS_CLOSE_END | 0x20 | 常关状态结束
MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN | 0x21 | 多重多重认证需要远程开门
MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS | 0x22 | 多重认证超级密码认证成功事件
MINOR_MULTI_VERIFY_REPEAT_VERIFY | 0x23 | 多重认证重复认证事件
MINOR_MULTI_VERIFY_TIMEOUT | 0x24 | 多重认证重复认证事件
sPanelUser
操作面板的用户名
sNetUser
网络操作的用户名
struRemoteHostAddr
远程主机地址
dwParaType
对于DS-90xx设备，当日志次类型为MINOR_START_VT或者MINOR_STOP_VT时，表示语音对讲端口号；当日志的主类型为 MAJOR_OPERATION=03（操作）， 且次类型为 MINOR_LOCAL_CFG_PARM=0x52（本地配置参数）或 MINOR_REMOTE_GET_PARM=0x76（远程获得参数）或 MINOR_REMOTE_CFG_PARM=0x77（远程配置参数）时， 该参数类型有效，其含义如下：
宏定义 | 宏定义值 | 含义
PARA_VIDEOOUT | 0x1 | 视频输出结构配置
PARA_IMAGE | 0x2 | 图像参数结构配置
PARA_ENCODE | 0x4 | 压缩参数结构配置
PARA_NETWORK | 0x8 | 网络参数结构配置
PARA_ALARM | 0x10 | 报警参数结构配置
PARA_EXCEPTION | 0x20 | 异常参数结构配置
PARA_DECODER | 0x40 | 解码器参数结构配置
PARA_RS232 | 0x80 | RS232参数结构配置
PARA_PREVIEW | 0x100 | 本地预览参数结构配置
PARA_SECURITY | 0x200 | 用户权限参数结构配置
PARA_DATETIME | 0x400 | 本地系统配置
PARA_FRAMETYPE | 0x800 | 帧信息参数结构配置
PARA_DETECTION | 0x1000 | 侦测配置(根据附加信息区分区域入侵和越界侦测)
dwChannel
通道号
dwDiskNumber
硬盘号
dwAlarmInPort
报警输入端口
dwAlarmOutPort
报警输出端口
dwInfoLen
日志附加信息长度
sInfo
日志附加信息（查询门禁主机的日志时，sInfo包含一个NET_DVR_ACS_EVENT_INFO结构）

Remarks

设备日志查找有两种方式：SDK私有协议和ISAPI协议。
1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。

使用ISAPI协议方式登录查找日志时不支持sPanelUser参数。

See Also

NET_DVR_FindNextLog_V30


NET_DVR_LOG_V50

日志信息结构体。

struct{
  NET_DVR_TIME_V50     strLogTime;
  DWORD            dwMajorType;
  DWORD            dwMinorType;
  BYTE             sPanelUser[MAX_NAMELEN];
  BYTE             sNetUser[MAX_NAMELEN];
  NET_DVR_IPADDR   struRemoteHostAddr;
  DWORD            dwParaType;
  DWORD            dwChannel;
  DWORD            dwDiskNumber;
  DWORD            dwAlarmInPort;
  DWORD            dwAlarmOutPort;
  DWORD            dwInfoLen;
  char             sInfo[LOG_INFO_LEN];
  BYTE                            byRes[128];
}NET_DVR_LOG_V50,*LPNET_DVR_LOG_V50;

Members

strLogTime
日志时间
dwMajorType
日志主类型，定义如下：
宏定义 | 宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
MAJOR_EXCEPTION | 0x2 | 异常
MAJOR_OPERATION | 0x3 | 操作
MAJOR_INFORMATION | 0x4 | 日志附加信息
MAJOR_EVENT | 0x5 | 事件
dwMinorType
日志次类型，根据不同的主类型的次类型定义如下：
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_ALARM | 0x1 | 报警
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_ALARM_IN | 0x1 | 报警输入
MINOR_ALARM_OUT | 0x2 | 报警输出
MINOR_MOTDET_START | 0x3 | 移动侦测报警开始
MINOR_MOTDET_STOP | 0x4 | 移动侦测报警结束
MINOR_HIDE_ALARM_START | 0x5 | 遮挡报警开始
MINOR_HIDE_ALARM_STOP | 0x6 | 遮挡报警结束
MINOR_VCA_ALARM_START | 0x7 | 智能报警开始
MINOR_VCA_ALARM_STOP | 0x8 | 智能报警结束
MINOR_ITS_ALARM_START | 0x09 | 交通事件报警开始
MINOR_ITS_ALARM_STOP | 0x0a | 交通事件报警结束
MINOR_NETALARM_START | 0x0b | 网络报警开始
MINOR_NETALARM_STOP | 0x0c | 网络报警结束
MINOR_NETALARM_RESUME | 0x0d | 网络报警恢复
MINOR_WIRELESS_ALARM_START | 0x0e | 无线报警开始
MINOR_WIRELESS_ALARM_STOP | 0x0f | 无线报警结束
MINOR_PIR_ALARM_START | 0x10 | 人体感应报警开始
MINOR_PIR_ALARM_STOP | 0x11 | 人体感应报警结束
MINOR_CALLHELP_ALARM_START | 0x12 | 呼救报警开始
MINOR_CALLHELP_ALARM_STOP | 0x13 | 呼救报警结束
MINOR_DETECTFACE_ALARM_START | 0x16 | 人脸侦测报警开始
MINOR_DETECTFACE_ALARM_STOP | 0x17 | 人脸侦测报警结束
MINOR_VCA_SECNECHANGE_DETECTION | 0x1a | 场景侦测报警
MINOR_SMART_REGION_EXITING_BEGIN | 0x1b | 离开区域侦测开始
MINOR_SMART_REGION_EXITING_END | 0x1c | 离开区域侦测结束
MINOR_SMART_LOITERING_BEGIN | 0x1d | 徘徊侦测开始
MINOR_SMART_LOITERING_END | 0x1e | 徘徊侦测结束
MINOR_VCA_ALARM_LINE_DETECTION_BEGIN | 0x20 | 越界侦测开始
MINOR_VCA_ALARM_LINE_DETECTION_END | 0x21 | 越界侦测结束
MINOR_VCA_ALARM_INTRUDE_BEGIN | 0x22 | 区域入侵侦测开始
MINOR_VCA_ALARM_INTRUDE_END | 0x23 | 区域入侵侦测结束
MINOR_VCA_ALARM_AUDIOINPUT | 0x24 | 音频丢失侦测
MINOR_VCA_ALARM_AUDIOABNORMAL | 0x25 | 音频异常侦测
MINOR_VCA_DEFOCUS_DETECTION_BEGIN | 0x26 | 虚焦侦测开始
MINOR_VCA_DEFOCUS_DETECTION_END | 0x27 | 虚焦侦测结束
MINOR_VCA_FACE_ALARM_BEGIN | 0x29 | 人脸侦测开始
MINOR_SMART_REGION_ENTRANCE_BEGIN | 0x2a | 进入区域侦测开始
MINOR_SMART_REGION_ENTRANCE_END | 0x2b | 进入区域侦测结束
MINOR_SMART_PEOPLE_GATHERING_BEGIN | 0x2c | 人员聚集侦测开始
MINOR_SMART_PEOPLE_GATHERING_END | 0x2d | 人员聚集侦测结束
MINOR_SMART_FAST_MOVING_BEGIN | 0x2e | 快速运动侦测开始
MINOR_SMART_FAST_MOVING_END | 0x2f | 快速运动侦测结束
MINOR_VCA_FACE_ALARM_END | 0x30 | 人脸侦测结束
MINOR_VCA_SCENE_CHANGE_ALARM_BEGIN | 0x31 | 场景变更侦测开始
MINOR_VCA_SCENE_CHANGE_ALARM_END | 0x32 | 场景变更侦测结束
MINOR_VCA_ALARM_AUDIOINPUT_BEGIN | 0x33 | 音频丢失侦测开始
MINOR_VCA_ALARM_AUDIOINPUT_END | 0x34 | 音频丢失侦测结束
MINOR_VCA_ALARM_AUDIOABNORMAL_BEGIN | 0x35 | 声强突变侦测开始
MINOR_VCA_ALARM_AUDIOABNORMAL_END | 0x36 | 声强突变侦测结束
MINOR_VCA_ALARM_AUDIOSTEEPDROP | 0x39 | 声强陡降侦测
MINOR_SMART_PARKING_BEGIN | 0x3c | 停车侦测开始
MINOR_SMART_PARKING_END | 0x3d | 停车侦测结束
MINOR_SMART_UNATTENDED_BAGGAGE_BEGIN | 0x3e | 物品遗留侦测开始
MINOR_SMART_UNATTENDED_BAGGAGE_END | 0x3f | 物品遗留侦测结束
MINOR_SMART_OBJECT_REMOVAL_BEGIN | 0x40 | 物品拿取侦测开始
MINOR_SMART_OBJECT_REMOVAL_END | 0x41 | 物品拿取侦测结
MINOR_SMART_VEHICLE_ALARM_START | 0x46 | 车牌检测开始
MINOR_SMART_VEHICLE_ALARM_STOP | 0x47 | 车牌检测结束
MINOR_THERMAL_FIREDETECTION | 0x48 | 热成像火点检测侦测开始
MINOR_THERMAL_FIREDETECTION_END | 0x49 | 热成像火点检测侦测结束
MINOR_SMART_VANDALPROOF_BEGIN | 0x50 | 防破坏检测开始
MINOR_SMART_VANDALPROOF_END | 0x51 | 防破坏检测结束
MINOR_FACESNAP_MATCH_ALARM_START | 0x55 | 人脸比对报警开始
MINOR_FACESNAP_MATCH_ALARM_STOP | 0x56 | 人脸比对报警结束
MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_START | 0x57 | 授权名单人脸比对(陌生人)报警开始
MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_STOP | 0x58 | 授权名单人脸比对(陌生人)报警结束
MINOR_THERMAL_SHIPSDETECTION | 0x5a | 热成像船只检测侦测
MINOR_THERMAL_THERMOMETRY_EARLYWARNING_BEGIN | 0x5b | 热成像测温预警开始
MINOR_THERMAL_THERMOMETRY_EARLYWARNING_END | 0x5c | 热成像测温预警结束
MINOR_THERMAL_THERMOMETRY_ALARM_BEGIN | 0x5d | 热成像测温报警开始
MINOR_THERMAL_THERMOMETRY_ALARM_END | 0x5e | 热成像测温报警结束
MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_BEGIN | 0x5f | 热成像温差报警开始
MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_END | 0x60 | 热成像温差报警结束
MINOR_ FACE_THERMOMETRY_ALARM | 0x63 | 人脸测温报警
MINOR_SAFETY_HELMET_ALARM_START | 0x72 | 未佩戴安全帽检测报警开始
MINOR_SAFETY_HELMET_ALARM_STOP | 0x73 | 未佩戴安全帽检测报警结束
MINOR_HFPD_ALARM_START | 0x74 | 高频人员检测报警开始
MINOR_HFPD_ALARM_STOP | 0x75 | 高频人员检测报警结束
MINOR_VCA_GET_UP_ALARM_BEGIN | 0x80 | 起床检测报警开始
MINOR_VCA_GET_UP_ALARM_END | 0x81 | 起床检测报警结束
MINOR_VCA_ADV_REACH_HEIGHT_ALARM_BEGIN | 0x82 | 折线攀高报警开始
MINOR_VCA_ADV_REACH_HEIGHT_ALARM_END | 0x83 | 折线攀高报警结束
MINOR_VCA_TOILET_TARRY_ALARM_BEGIN | 0x84 | 如厕超时报警开始
MINOR_VCA_TOILET_TARRY_ALARM_END | 0x85 | 如厕超时报警结束
MINOR_HUMAN_RECOGNITION_ALARM_BEGIN | 0x86 | 人体识别报警开始
MINOR_HUMAN_RECOGNITION_ALARM_END | 0x87 | 人体识别报警结束
MINOR_STUDENTS_STOODUP_ALARM_BEGIN | 0x88 | 学生起立报警开始
MINOR_STUDENTS_STOODUP_ALARM_END | 0x89 | 学生起立报警结束
MINOR_FRAMES_PEOPLE_COUNTING_ALARM | 0x8a | 区域人数统计报警
MINOR_MANUAL_ALARM | 0x10e | 手动报警
MINOR_DETECTOR_ALARM | 0x10f | 探测器报警
MINOR_LINKAGE_ALARM | 0x110 | 联动报警
MINOR_FIRE_ALARM | 0x113 | 火警报警
MINOR_SUPERVISE_ALARM | 0x114 | 监管报警
MINOR_SHIELD_ALARM | 0x115 | 屏蔽报警
MINOR_ABNORMAL_ALARM | 0x116 | 故障报警
MINOR_ALARMIN_SHORT_CIRCUIT | 0x400 | 防区短路报警
MINOR_ALARMIN_BROKEN_CIRCUIT | 0x401 | 防区断路报警
MINOR_ALARMIN_EXCEPTION | 0x402 | 防区异常报警
MINOR_ALARMIN_RESUME | 0x403 | 防区报警恢复
MINOR_HOST_DESMANTLE_ALARM | 0x404 | 设备防拆报警
MINOR_HOST_DESMANTLE_RESUME | 0x405 | 设备防拆恢复
MINOR_CARD_READER_DESMANTLE_ALARM | 0x406 | 读卡器防拆报警
MINOR_CARD_READER_DESMANTLE_RESUME | 0x407 | 读卡器防拆恢复
MINOR_CASE_SENSOR_ALARM | 0x408 | 事件输入报警
MINOR_CASE_SENSOR_RESUME | 0x409 | 事件输入恢复
MINOR_STRESS_ALARM | 0x40a | 胁迫报警
MINOR_OFFLINE_ECENT_NEARLY_FULL | 0x40b | 离线事件满90%报警
MINOR_CARD_MAX_AUTHENTICATE_FAIL | 0x40c | 卡号认证失败超次报警
MINOR_POS_START_ALARM | 0x411 | POS开启
MINOR_POS_END_ALARM | 0x412 | POS结束
MINOR_HEART_RATE_ABNORMAL_BEGIN | 0x426 | 心率异常报警开始
MINOR_HEART_RATE_ABNORMAL_END | 0x427 | 心率异常报警结束
MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN | 0x428 | 血氧异常报警开始
MINOR_BLOOD_OXYGEN_ABNORMAL_END | 0x429 | 血氧异常报警结束
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42a | 血压收缩压异常报警开始
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42b | 血压收缩压异常报警结束
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42c | 血压舒张压异常报警开始
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42d | 血压舒张压异常报警结束

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EXCEPTION | 0x2 | 异常
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_RAID_ERROR | 0x20 | 阵列异常
MINOR_VI_LOST | 0x21 | 视频信号丢失
MINOR_ILLEGAL_ACCESS | 0x22 | 非法访问
MINOR_HD_FULL | 0x23 | 硬盘满
MINOR_HD_ERROR | 0x24 | 网络硬盘错误，录像异常
MINOR_DCD_LOST | 0x25 | MODEM 掉线(保留)
MINOR_IP_CONFLICT | 0x26 | IP地址冲突
MINOR_NET_BROKEN | 0x27 | 网络断开
MINOR_REC_ERROR | 0x28 | 录像出错
MINOR_IPC_NO_LINK | 0x29 | IPC连接异常
MINOR_VI_EXCEPTION | 0x2a | 视频输入异常(只针对模拟通道)
MINOR_IPC_IP_CONFLICT | 0x2b | IPC的IP地址冲突
MINOR_SENCE_EXCEPTION | 0x2c | 场景异常
MINOR_PIC_REC_ERROR | 0x2d | 抓图出错,获取图片文件失败
MINOR_VI_MISMATCH | 0x2e | 视频制式不匹配
MINOR_RESOLUTION_MISMATCH | 0x2f | 编码分辨率和前端分辨率不匹配
MINOR_RS485_DEVICE_ABNORMAL | 0x3a | RS485连接状态异常
MINOR_RS485_DEVICE_REVERT | 0x3b | RS485连接状态异常恢复
MINOR_SCREEN_SUBSYSTEM_ABNORMALREBOOT | 0x3c | 子板异常启动
MINOR_SCREEN_SUBSYSTEM_ABNORMALINSERT | 0x3d | 子板插入
MINOR_SCREEN_SUBSYSTEM_ABNORMALPULLOUT | 0x3e | 子板拔出
MINOR_SCREEN_ABNARMALTEMPERATURE | 0x3f | 温度异常
MINOR_RECORD_OVERFLOW | 0x41 | 缓冲区溢出
MINOR_DSP_ABNORMAL | 0x42 | DSP异常
MINOR_ANR_RECORD_FAIED | 0x43 | ANR录像失败
MINOR_SPARE_WORK_DEVICE_EXCEPT | 0x44 | 热备设备工作机异常
MINOR_START_IPC_MAS_FAILED | 0x45 | 开启IPC MAS失败
MINOR_IPCM_CRASH | 0x46 | IPCM异常重启
MINOR_POE_POWER_EXCEPTION | 0x47 | POE供电异常
MINOR_UPLOAD_DATA_CS_EXCEPTION | 0x48 | 云存储数据上传失败
MINOR_DIAL_EXCEPTION | 0x49 | 拨号异常
MINOR_DEV_EXCEPTION_OFFLINE | 0x50 | 设备异常下线
MINOR_UPGRADEFAIL | 0x51 | 远程升级设备失败
MINOR_AI_LOST | 0x52 | 音频信号丢失
MINOR_SYNC_IPC_PASSWD | 0x53 | 同步IPC密码异常
MINOR_EZVIZ_OFFLINE | 0x54 | 萤石下线异常
MINOR_ACCESSORIES_PLATE | 0x57 | 配件板异常
MINOR_FACESNAP_RESOLUTION_OVERFLOW | 0x63 | 人脸抓拍码流分辨率超限
MINOR_SMD_RESOLUTION_OVERFLOW | 0x64 | SMD码流分辨率超限
MINOR_AUDIO_LOSS_EXCEPTION | 0x65 | 音频丢失异常
MINOR_DEV_POWER_ON | 0x400 | 设备上电启动
MINOR_DEV_POWER_OFF | 0x401 | 设备掉电关闭
MINOR_WATCH_DOG_RESET | 0x402 | 看门狗复位
MINOR_LOW_BATTERY | 0x403 | 蓄电池电压低
MINOR_BATTERY_RESUME | 0x404 | 蓄电池电压恢复正常
MINOR_AC_OFF | 0x405 | 交流电断电
MINOR_AC_RESUME | 0x406 | 交流电恢复
MINOR_NET_RESUME | 0x407 | 网络恢复
MINOR_FLASH_ABNORMAL | 0x408 | FLASH读写异常
MINOR_CARD_READER_OFFLINE | 0x409 | 读卡器掉线
MINOR_STRESS_ALARM | 0x40a | 胁迫报警
MINOR_OFFLINE_ECENT_NEARLY_FULL | 0x40b | 离线事件满90%报警
MINOR_CARD_MAX_AUTHENTICATE_FAIL | 0x40c | 卡号认证失败超次报警
MINOR_POS_START_ALARM | 0x411 | POS开启
MINOR_POS_END_ALARM | 0x412 | POS结束
MINOR_HEART_RATE_ABNORMAL_BEGIN | 0x426 | 心率异常报警开始
MINOR_HEART_RATE_ABNORMAL_END | 0x427 | 心率异常报警结束
MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN | 0x428 | 血氧异常报警开始
MINOR_BLOOD_OXYGEN_ABNORMAL_END | 0x429 | 血氧异常报警结束
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42a | 血压收缩压异常报警开始
MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42b | 血压收缩压异常报警结束
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN | 0x42c | 血压舒张压异常报警开始
MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END | 0x42d | 血压舒张压异常报警结束
MINOR_CARD_READER_RESUME | 0x40a | 读卡器掉线恢复
MINOR_AUXILIARY_BOARD_OFFLINE | 0x43c | 辅助板掉线
MINOR_AUXILIARY_BOARD_RESUME | 0x43d | 辅助板掉线恢复
MINOR_IDCARD_SECURITY_MOUDLE_EXCEPTION | 0x43e | 身份证安全模块异常
MINOR_IDCARD_SECURITY_MOUDLE_RESUME | 0x43f | 身份证安全模块恢复
MINOR_FP_PERIPHERAL_EXCEPTION | 0x440 | 指纹采集外设异常
MINOR_FP_PERIPHERAL_RESUME | 0x441 | 指纹采集外设恢复
MINOR_SUBSYSTEM_IP_CONFLICT | 0x4000 | 子板IP冲突
MINOR_SUBSYSTEM_NET_BROKEN | 0x4001 | 子板断网
MINOR_FAN_ABNORMAL | 0x4002 | 风扇异常
MINOR_BACKPANEL_TEMPERATURE_ABNORMAL | 0x4003 | 背板温度异常
MINOR_SDCARD_ABNORMAL | 0x4004 | SD卡不健康
MINOR_SDCARD_DAMAGE | 0x4005 | SD卡损坏
MINOR_MAIN_POWER_FAULT | 0x4007 | 主电故障
MINOR_BACK_UP_POWER_FAULT | 0x4008 | 备电故障
MINOR_TAMPER_FAULT | 0x4009 | 防拆故障
MINOR_RS232_FAULT | 0x400a | 232总线故障
MINOR_RS485_FAULT | 0x400b | 485总线故障
MINOR_LAN_STATUS_FAULT | 0x400c | LAN网线接入状态故障
MINOR_LAN_LINK1_FAULT | 0x400d | LAN链路1故障
MINOR_LAN_LINK2_FAULT | 0x400e | LAN链路2故障
MINOR_SIM_CARD_STATUS_FAULT | 0x400f | 4G-SIM卡状态故障
MINOR_4G_LINK1_FAULT | 0x4010 | 4G链路1故障
MINOR_4G_LINK2_FAULT | 0x4011 | 4G链路2故障
MINOR_OTHER_FAULT | 0x4012 | 其他故障
MINOR_SENSOR_SHORT_CIRCUIT | 0x4014 | 传感器短路
MINOR_SENSOR_OPEN_CIRCUIT | 0x4015 | 传感器断路
MINOR_SENSOR_MIS_CONNECT | 0x4016 | 传感器错接
MINOR_SENSOR_FAULT_RESTORE | 0x4017 | 传感器故障恢复

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_OPERATION | 0x3 | 操作
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_START_DVR | 0x41 | 开机
MINOR_STOP_DVR | 0x42 | 关机
MINOR_STOP_ABNORMAL | 0x43 | 异常关机
MINOR_REBOOT_DVR | 0x44 | 本地重启设备
MINOR_LOCAL_LOGIN | 0x50 | 本地登陆
MINOR_LOCAL_LOGOUT | 0x51 | 本地注销登陆
MINOR_LOCAL_CFG_PARM | 0x52 | 本地配置参数
MINOR_LOCAL_PLAYBYFILE | 0x53 | 本地按文件回放或下载
MINOR_LOCAL_PLAYBYTIME | 0x54 | 本地按时间回放或下载
MINOR_LOCAL_START_REC | 0x55 | 本地开始录像
MINOR_LOCAL_STOP_REC | 0x56 | 本地停止录像
MINOR_LOCAL_PTZCTRL | 0x57 | 本地云台控制
MINOR_LOCAL_PREVIEW | 0x58 | 本地预览(保留不使用)
MINOR_LOCAL_MODIFY_TIME | 0x59 | 本地修改时间(保留不使用)
MINOR_LOCAL_UPGRADE | 0x5a | 本地升级
MINOR_LOCAL_RECFILE_OUTPUT | 0x5b | 本地备份录象文件
MINOR_LOCAL_FORMAT_HDD | 0x5c | 本地初始化硬盘
MINOR_LOCAL_CFGFILE_OUTPUT | 0x5d | 导出本地配置文件
MINOR_LOCAL_CFGFILE_INPUT | 0x5e | 导入本地配置文件
MINOR_LOCAL_COPYFILE | 0x5f | 本地备份文件
MINOR_LOCAL_LOCKFILE | 0x60 | 本地锁定录像文件
MINOR_LOCAL_UNLOCKFILE | 0x61 | 本地解锁录像文件
MINOR_LOCAL_DVR_ALARM | 0x62 | 本地手动清除和触发报警
MINOR_IPC_ADD | 0x63 | 本地添加IPC
MINOR_IPC_DEL | 0x64 | 本地删除IPC
MINOR_IPC_SET | 0x65 | 本地设置IPC
MINOR_LOCAL_START_BACKUP | 0x66 | 本地开始备份
MINOR_LOCAL_STOP_BACKUP | 0x67 | 本地停止备份
MINOR_LOCAL_COPYFILE_START_TIME | 0x68 | 本地备份开始时间
MINOR_LOCAL_COPYFILE_END_TIME | 0x69 | 本地备份结束时间
MINOR_LOCAL_ADD_NAS | 0x6a | 本地添加网络硬盘
MINOR_LOCAL_DEL_NAS | 0x6b | 本地删除NAS盘
MINOR_LOCAL_SET_NAS | 0x6c | 本地设置NAS盘
MINOR_REMOTE_LOGIN | 0x70 | 远程登录
MINOR_REMOTE_LOGOUT | 0x71 | 远程注销登陆
MINOR_REMOTE_START_REC | 0x72 | 远程开始录像
MINOR_REMOTE_STOP_REC | 0x73 | 远程停止录像
MINOR_START_TRANS_CHAN | 0x74 | 开始透明传输
MINOR_STOP_TRANS_CHAN | 0x75 | 停止透明传输
MINOR_REMOTE_GET_PARM | 0x76 | 远程获取参数
MINOR_REMOTE_CFG_PARM | 0x77 | 远程配置参数
MINOR_REMOTE_GET_STATUS | 0x78 | 远程获取状态
MINOR_REMOTE_ARM | 0x79 | 远程布防
MINOR_REMOTE_DISARM | 0x7a | 远程撤防
MINOR_REMOTE_REBOOT | 0x7b | 远程重启
MINOR_START_VT | 0x7c | 开始语音对讲
MINOR_STOP_VT | 0x7d | 停止语音对讲
MINOR_REMOTE_UPGRADE | 0x7e | 远程升级
MINOR_REMOTE_PLAYBYFILE | 0x7f | 远程按文件回放
MINOR_REMOTE_PLAYBYTIME | 0x80 | 远程按时间回放
MINOR_REMOTE_PTZCTRL | 0x81 | 远程云台控制
MINOR_REMOTE_FORMAT_HDD | 0x82 | 远程格式化硬盘
MINOR_REMOTE_STOP | 0x83 | 远程关机
MINOR_REMOTE_LOCKFILE | 0x84 | 远程锁定文件
MINOR_REMOTE_UNLOCKFILE | 0x85 | 远程解锁文件
MINOR_REMOTE_CFGFILE_OUTPUT | 0x86 | 远程导出配置文件
MINOR_REMOTE_CFGFILE_INTPUT | 0x87 | 远程导入配置文件
MINOR_REMOTE_RECFILE_OUTPUT | 0x88 | 远程导出录象文件
MINOR_REMOTE_DVR_ALARM | 0x89 | 远程手动清除和触发报警
MINOR_REMOTE_IPC_ADD | 0x8a | 远程添加IPC
MINOR_REMOTE_IPC_DEL | 0x8b | 远程删除IPC
MINOR_REMOTE_IPC_SET | 0x8c | 远程设置IPC
MINOR_REBOOT_VCA_LIB | 0x8d | 重启智能库
MINOR_REMOTE_ADD_NAS | 0x8e | 远程添加NAS盘
MINOR_REMOTE_DEL_NAS | 0x8f | 远程删除NAS盘
MINOR_REMOTE_SET_NAS | 0x90 | 远程设置NAS盘
MINOR_LOCAL_START_REC_CDRW | 0x91 | 本地开始刻录
MINOR_LOCAL_STOP_REC_CDRW | 0x92 | 本地停止刻录
MINOR_REMOTE_START_REC_CDRW | 0x93 | 远程开始刻录
MINOR_REMOTE_STOP_REC_CDRW | 0x94 | 远程停止刻录
MINOR_LOCAL_PIC_OUTPUT | 0x95 | 本地备份图片文件
MINOR_REMOTE_PIC_OUTPUT | 0x96 | 远程备份图片文件
MINOR_LOCAL_INQUEST_RESUME | 0x97 | 本地恢复审讯事件
MINOR_REMOTE_INQUEST_RESUME | 0x98 | 远程恢复审讯事件
MINOR_LOCAL_ADD_FILE | 0x99 | 本地导入文件
MINOR_REMOTE_DELETE_HDISK | 0x9a | 远程删除异常不存在的硬盘
MINOR_REMOTE_LOAD_HDISK | 0x9b | 远程加载硬盘
MINOR_REMOTE_UNLOAD_HDISK | 0x9c | 远程卸载硬盘
MINOR_LOCAL_OPERATE_LOCK | 0x9d | 本地操作锁定
MINOR_LOCAL_OPERATE_UNLOCK | 0x9e | 本地操作解除锁定
MINOR_LOCAL_DEL_FILE | 0x9f | 本地删除审讯文件
MINOR_REMOTE_BYPASS | 0xd0 | 远程旁路
MINOR_REMOTE_UNBYPASS | 0xd1 | 远程旁路恢复
MINOR_REMOTE_SET_ALARMIN_CFG | 0xd2 | 远程设置报警输入参数
MINOR_REMOTE_GET_ALARMIN_CFG | 0xd3 | 远程获取报警输入参数
MINOR_REMOTE_SET_ALARMOUT_CFG | 0xd4 | 远程设置报警输出参数
MINOR_REMOTE_GET_ALARMOUT_CFG | 0xd5 | 远程获取报警输出参数
MINOR_REMOTE_ALARMOUT_OPEN_MAN | 0xd6 | 远程手动开启报警输出
MINOR_REMOTE_ALARMOUT_CLOSE_MAN | 0xd7 | 远程手动关闭报警输出
MINOR_REMOTE_ALARM_ENABLE_CFG | 0xd8 | 远程设置报警主机的RS485串口使能状态
MINOR_DBDATA_OUTPUT | 0xd9 | 导出数据库记录
MINOR_DBDATA_INPUT | 0xda | 导入数据库记录
MINOR_MU_SWITCH | 0xdb | 级联切换
MINOR_MU_PTZ | 0xdc | 级联PTZ控制
MINOR_REMOTE_INQUEST_DEL_FILE | 0xde | 远程删除文件
MINOR_LOCAL_CONF_REB_RAID | 0x101 | 本地配置自动重建
MINOR_LOCAL_CONF_SPARE | 0x102 | 本地配置热备
MINOR_LOCAL_ADD_RAID | 0x103 | 本地创建阵列
MINOR_LOCAL_DEL_RAID | 0x104 | 本地删除阵列
MINOR_LOCAL_MIG_RAID | 0x105 | 本地迁移阵列
MINOR_LOCAL_REB_RAID | 0x106 | 本地手动重建阵列
MINOR_LOCAL_QUICK_CONF_RAID | 0x107 | 本地一键配置
MINOR_LOCAL_ADD_VD | 0x108 | 本地创建虚拟磁盘
MINOR_LOCAL_DEL_VD | 0x109 | 本地删除虚拟磁盘
MINOR_LOCAL_RP_VD | 0x10a | 本地修复虚拟磁盘
MINOR_LOCAL_FORMAT_EXPANDVD | 0x10b | 本地扩展虚拟磁盘扩容
MINOR_LOCAL_RAID_UPGRADE | 0x10c | 本地raid卡升级
MINOR_LOCAL_STOP_RAID | 0x10d | 本地暂停RAID操作(即安全拔盘)
MINOR_LOCAL_STOP_RAID | 0x10e | 手动报警
MINOR_LOCAL_STOP_RAID | 0x10f | 探测器报警
MINOR_LOCAL_STOP_RAID | 0x110 | 联动报警
MINOR_REMOTE_CONF_REB_RAID | 0x111 | 远程配置自动重建
MINOR_REMOTE_CONF_SPARE | 0x112 | 远程配置热备
MINOR_REMOTE_ADD_RAID | 0x113 | 远程创建阵列
MINOR_REMOTE_DEL_RAID | 0x114 | 远程删除阵列
MINOR_REMOTE_MIG_RAID | 0x115 | 远程迁移阵列
MINOR_REMOTE_REB_RAID | 0x116 | 远程手动重建阵列
MINOR_REMOTE_QUICK_CONF_RAID | 0x117 | 远程一键配置
MINOR_REMOTE_ADD_VD | 0x118 | 远程创建虚拟磁盘
MINOR_REMOTE_DEL_VD | 0x119 | 远程删除虚拟磁盘
MINOR_REMOTE_RP_VD | 0x11a | 远程修复虚拟磁盘
MINOR_REMOTE_FORMAT_EXPANDVD | 0x11b | 远程虚拟磁盘扩容
MINOR_REMOTE_RAID_UPGRADE | 0x11c | 远程raid卡升级
MINOR_REMOTE_STOP_RAID | 0x11d | 远程暂停RAID操作(即安全拔盘)
MINOR_LOCAL_START_PIC_REC | 0x121 | 本地开始抓图
MINOR_LOCAL_STOP_PIC_REC | 0x122 | 本地停止抓图
MINOR_LOCAL_SET_SNMP | 0x125 | 本地配置SNMP
MINOR_LOCAL_TAG_OPT | 0x126 | 本地标签操作
MINOR_REMOTE_START_PIC_REC | 0x131 | 远程开始抓图
MINOR_REMOTE_STOP_PIC_REC | 0x132 | 远程停止抓图
MINOR_REMOTE_SET_SNMP | 0x135 | 远程配置SNMP
MINOR_REMOTE_TAG_OPT | 0x136 | 远程标签操作
MINOR_REMOTE_LOGIN_LOCK | 0x137 | 远程登录锁定
MINOR_REMOTE_LOGIN_UNLOCK | 0x138 | 远程登录解锁
MINOR_OFFLINE_DATA_OUTPUT | 0x423 | 离线采集数据导出
MINOR_CREATE_SSH_LINK | 0x42d | 建立SSH 连接
MINOR_CLOSE_SSH_LINK | 0x42e | 断开SSH 连接
MINOR_LOCAL_VOUT_SWITCH | 0x140 | 本地输出口切换操作
MINOR_STREAM_CABAC | 0x141 | 码流压缩性能选项配置操作
MINOR_LOCAL_SPARE_OPT | 0x142 | 本地N+1热备相关操作
MINOR_REMOTE_SPARE_OPT | 0x143 | 远程N+1热备相关操作
MINOR_LOCAL_IPCCFGFILE_OUTPUT | 0x144 | 本地导出ipc配置文件
MINOR_LOCAL_IPCCFGFILE_INPUT | 0x145 | 本地导入ipc配置文件
MINOR_LOCAL_IPC_UPGRADE | 0x146 | 本地升级IPC
MINOR_REMOTE_IPCCFGFILE_OUTPUT | 0x147 | 远程导出ipc配置文件
MINOR_REMOTE_IPCCFGFILE_INPUT | 0x148 | 远程导入ipc配置文件
MINOR_REMOTE_IPC_UPGRADE | 0x149 | 远程升级IPC
MINOR_LOCAL_UNLOAD_HDISK | 0x150 | 本地卸载硬盘
MINOR_LOCAL_AUDIO_MIX | 0x151 | 本地配置音频混音参数
MINOR_REMOTE_AUDIO_MIX | 0x152 | 远程配置音频混音参数
MINOR_LOCAL_TRIAL_PAUSE | 0x153 | 本地暂停讯问
MINOR_LOCAL_TRIAL_RESUME | 0x154 | 本地继续讯问
MINOR_REMOTE_TRIAL_PAUSE | 0x155 | 远程暂停讯问
MINOR_REMOTE_TRIAL_RESUME | 0x156 | 远程继续讯问
MINOR_REMOTE_MODIFY_VERIFICATION_CODE | 0x157 | 修改平台的验证码
MINOR_LOCAL_MAKECALL | 0x180 | 本地呼叫
MINOR_LOCAL_REJECTCALL | 0x181 | 本地拒接
MINOR_LOCAL_ANSWERCALL | 0x182 | 本地接听
MINOR_LOCAL_HANGUPCALL | 0x183 | 本地挂断
MINOR_REMOTE_MAKECALL | 0x188 | 远程呼叫
MINOR_REMOTE_REJECTCALL | 0x189 | 远程拒接
MINOR_REMOTE_ANSWERCALL | 0x18a | 远程接听
MINOR_REMOTE_HANGUPCALL | 0x18b | 远程挂断
MINOR_SET_MULTI_MASTER | 0x201 | 设置大屏主屏
MINOR_SET_MULTI_SLAVE | 0x202 | 设置大屏子屏
MINOR_CANCEL_MULTI_MASTER | 0x203 | 取消大屏主屏
MINOR_CANCEL_MULTI_SLAVE | 0x204 | 取消大屏子屏
MINOR_SCREEN_SET_INPUT | 0x251 | 修改输入源
MINOR_SCREEN_SET_OUTPUT | 0x252 | 修改输出通道
MINOR_SCREEN_SET_OSD | 0x253 | 修改虚拟LED
MINOR_SCREEN_SET_LOGO | 0x254 | 修改LOGO
MINOR_SCREEN_SET_LAYOUT | 0x255 | 设置场景
MINOR_SCREEN_PICTUREPREVIEW | 0x256 | 回显操作
MINOR_SCREEN_GET_OSD | 0x257 | 获取虚拟LED
MINOR_SCREEN_GET_LAYOUT | 0x258 | 获取场景
MINOR_SCREEN_LAYOUT_CTRL | 0x259 | 场景控制
MINOR_GET_ALL_VALID_WND | 0x260 | 获取所有有效窗口
MINOR_GET_SIGNAL_WND | 0x261 | 获取单个窗口信息
MINOR_WINDOW_CTRL | 0x262 | 窗口控制
MINOR_GET_LAYOUT_LIST | 0x263 | 获取场景列表
MINOR_LAYOUT_CTRL | 0x264 | 场景控制
MINOR_SET_LAYOUT | 0x265 | 设置单个场景
MINOR_GET_SIGNAL_LIST | 0x266 | 获取输入信号源列表
MINOR_GET_PLAN_LIST | 0x267 | 获取预案列表
MINOR_SET_PLAN | 0x268 | 修改预案
MINOR_CTRL_PLAN | 0x269 | 控制预案
MINOR_CTRL_SCREEN | 0x270 | 屏幕控制
MINOR_ADD_NETSIG | 0x271 | 添加信号源
MINOR_SET_NETSIG | 0x272 | 修改信号源
MINOR_SET_DECBDCFG | 0x273 | 设置解码板参数
MINOR_GET_DECBDCFG | 0x274 | 获取解码板参数
MINOR_GET_DEVICE_STATUS | 0x275 | 获取设备信息
MINOR_UPLOAD_PICTURE | 0x276 | 底图上传
MINOR_SET_USERPWD | 0x277 | 设置用户密码
MINOR_ADD_LAYOUT | 0x278 | 添加场景
MINOR_DEL_LAYOUT | 0x279 | 删除场景
MINOR_DEL_NETSIG | 0x280 | 删除信号源
MINOR_ADD_PLAN | 0x281 | 添加预案
MINOR_DEL_PLAN | 0x282 | 删除预案
MINOR_GET_EXTERNAL_MATRIX_CFG | 0x283 | 获取外接矩阵配置
MINOR_SET_EXTERNAL_MATRIX_CFG | 0x284 | 设置外接矩阵配置
MINOR_GET_USER_CFG | 0x285 | 获取用户配置
MINOR_SET_USER_CFG | 0x286 | 设置用户配置
MINOR_GET_DISPLAY_PANEL_LINK_CFG | 0x287 | 获取显示墙连接配置
MINOR_SET_DISPLAY_PANEL_LINK_CFG | 0x288 | 设置显示墙连接配置
MINOR_GET_WALLSCENE_PARAM | 0x289 | 获取电视墙场景
MINOR_SET_WALLSCENE_PARAM | 0x28a | 设置电视墙场景
MINOR_GET_CURRENT_WALLSCENE | 0x28b | 获取当前使用场景
MINOR_SWITCH_WALLSCENE | 0x28c | 场景切换
MINOR_LOCAL_LOAD_HDISK | 0x300 | 本地加载硬盘
MINOR_LOCAL_DELETE_HDISK | 0x301 | 本地删除异常不存在的硬盘
MINOR_REMOTE_CFG_POE_WORK_MODE | 0x361 | 远程设置POE工作模式
MINOR_LOCAL_CFG_POE_WORK_MODE | 0x362 | 本地设置POE工作模式
MINOR_REMOTE_OPEN_DOOR | 0x400 | 远程开门
MINOR_REMOTE_CLOSE_DOOR | 0x401 | 远程关门
MINOR_REMOTE_ALWAYS_OPEN | 0x402 | 远程常开
MINOR_REMOTE_ALWAYS_CLOSE | 0x403 | 远程常关
MINOR_REMOTE_CHECK_TIME | 0x404 | 远程手动校时
MINOR_NTP_CHECK_TIME | 0x405 | NTP自动校时
MINOR_REMOTE_CLEAR_CARD | 0x406 | 远程清空卡号
MINOR_REMOTE_RESTORE_CFG | 0x407 | 远程恢复默认参数
MINOR_ALARMIN_ARM | 0x408 | 防区布防
MINOR_ALARMIN_DISARM | 0x409 | 防区撤防
MINOR_LOCAL_RESTORE_CFG | 0x40a | 本地恢复默认参数
MINOR_SET_TRIGGERMODE_CFG | 0x1001 | 设置触发模式参数
MINOR_GET_TRIGGERMODE_CFG | 0x1002 | 获取触发模式参数
MINOR_SET_IOOUT_CFG | 0x1003 | 设置IO输出参数
MINOR_GET_IOOUT_CFG | 0x1004 | 获取IO输出参数
MINOR_GET_TRIGGERMODE_DEFAULT | 0x1005 | 获取触发模式推荐参数
MINOR_GET_ITCSTATUS | 0x1006 | 获取状态检测参数
MINOR_SET_STATUS_DETECT_CFG | 0x1007 | 设置状态检测参数
MINOR_GET_STATUS_DETECT_CFG | 0x1008 | 获取状态检测参数
MINOR_GET_VIDEO_TRIGGERMODE_CFG | 0x1009 | 获取视频电警模式参数
MINOR_SET_VIDEO_TRIGGERMODE_CFG | 0x100a | 设置视频电警模式参数
MINOR_LOCAL_ADD_CAR_INFO | 0x2001 | 本地添加车辆信息
MINOR_LOCAL_MOD_CAR_INFO | 0x2002 | 本地修改车辆信息
MINOR_LOCAL_DEL_CAR_INFO | 0x2003 | 本地删除车辆信息
MINOR_LOCAL_FIND_CAR_INFO | 0x2004 | 本地查找车辆信息
MINOR_LOCAL_ADD_MONITOR_INFO | 0x2005 | 本地添加布防信息
MINOR_LOCAL_MOD_MONITOR_INFO | 0x2006 | 本地修改布防信息
MINOR_LOCAL_DEL_MONITOR_INFO | 0x2007 | 本地删除布防信息
MINOR_LOCAL_FIND_MONITOR_INFO | 0x2008 | 本地查询布防信息
MINOR_LOCAL_FIND_NORMAL_PASS_INFO | 0x2009 | 本地查询正常通行信息
MINOR_LOCAL_FIND_ABNORMAL_PASS_INFO | 0x200a | 本地查询异常通行信息
MINOR_LOCAL_FIND_PEDESTRIAN_PASS_INFO | 0x200b | 本地查询正常通行信息
MINOR_LOCAL_PIC_PREVIEW | 0x200c | 本地图片预览
MINOR_LOCAL_SET_GATE_PARM_CFG | 0x200d | 设置本地配置出入口参数
MINOR_LOCAL_GET_GATE_PARM_CFG | 0x200e | 获取本地配置出入口参数
MINOR_LOCAL_SET_DATAUPLOAD_PARM_CFG | 0x200f | 设置本地配置数据上传参数
MINOR_LOCAL_GET_DATAUPLOAD_PARM_CFG | 0x2010 | 获取本地配置数据上传参数
MINOR_LOCAL_DEVICE_CONTROL | 0x2011 | 本地设备控制(本地开关闸)
MINOR_LOCAL_ADD_EXTERNAL_DEVICE_INFO | 0x2012 | 本地添加外接设备信息
MINOR_LOCAL_MOD_EXTERNAL_DEVICE_INFO | 0x2013 | 本地修改外接设备信息
MINOR_LOCAL_DEL_EXTERNAL_DEVICE_INFO | 0x2014 | 本地删除外接设备信息
MINOR_LOCAL_FIND_EXTERNAL_DEVICE_INFO | 0x2015 | 本地查询外接设备信息
MINOR_LOCAL_ADD_CHARGE_RULE | 0x2016 | 本地添加收费规则
MINOR_LOCAL_MOD_CHARGE_RULE | 0x2017 | 本地修改收费规则
MINOR_LOCAL_DEL_CHARGE_RULE | 0x2018 | 本地删除收费规则
MINOR_LOCAL_FIND_CHARGE_RULE | 0x2019 | 本地查询收费规则
MINOR_LOCAL_COUNT_NORMAL_CURRENTINFO | 0x2020 | 本地统计正常通行信息
MINOR_LOCAL_EXPORT_NORMAL_CURRENTINFO_REPORT | 0x2021 | 本地导出正常通行信息统计报表
MINOR_LOCAL_COUNT_ABNORMAL_CURRENTINFO | 0x2022 | 本地统计异常通行信息
MINOR_LOCAL_EXPORT_ABNORMAL_CURRENTINFO_REPORT | 0x2023 | 本地导出异常通行信息统计报表
MINOR_LOCAL_COUNT_PEDESTRIAN_CURRENTINFO | 0x2024 | 本地统计行人通行信息
MINOR_LOCAL_EXPORT_PEDESTRIAN_CURRENTINFO_REPORT | 0x2025 | 本地导出行人通行信息统计报表
MINOR_LOCAL_FIND_CAR_CHARGEINFO | 0x2026 | 本地查询过车收费信息
MINOR_LOCAL_COUNT_CAR_CHARGEINFO | 0x2027 | 本地统计过车收费信息
MINOR_LOCAL_EXPORT_CAR_CHARGEINFO_REPORT | 0x2028 | 本地导出过车收费信息统计报表
MINOR_LOCAL_FIND_SHIFTINFO | 0x2029 | 本地查询交接班信息
MINOR_LOCAL_FIND_CARDINFO | 0x2030 | 本地查询卡片信息
MINOR_LOCAL_ADD_RELIEF_RULE | 0x2031 | 本地添加减免规则
MINOR_LOCAL_MOD_RELIEF_RULE | 0x2032 | 本地修改减免规则
MINOR_LOCAL_DEL_RELIEF_RULE | 0x2033 | 本地删除减免规则
MINOR_LOCAL_FIND_RELIEF_RULE | 0x2034 | 本地查询减免规则
MINOR_LOCAL_GET_ENDETCFG | 0x2035 | 本地获取出入口控制机离线检测配置
MINOR_LOCAL_SET_ENDETCFG | 0x2036 | 本地设置出入口控制机离线检测配置
MINOR_LOCAL_SET_ENDEV_ISSUEDDATA | 0x2037 | 本地设置出入口控制机下发卡片信息
MINOR_LOCAL_DEL_ENDEV_ISSUEDDATA | 0x2038 | 本地清空出入口控制机下发卡片信息
MINOR_REMOTE_DEVICE_CONTROL | 0x2101 | 远程设备控制
MINOR_REMOTE_SET_GATE_PARM_CFG | 0x2102 | 设置远程配置出入口参数
MINOR_REMOTE_GET_GATE_PARM_CFG | 0x2103 | 获取远程配置出入口参数
MINOR_REMOTE_SET_DATAUPLOAD_PARM_CFG | 0x2104 | 设置远程配置数据上传参数
MINOR_REMOTE_GET_DATAUPLOAD_PARM_CFG | 0x2105 | 获取远程配置数据上传参数
MINOR_REMOTE_GET_BASE_INFO | 0x2106 | 远程获取终端基本信息
MINOR_REMOTE_GET_OVERLAP_CFG | 0x2107 | 远程获取字符叠加参数配置
MINOR_REMOTE_SET_OVERLAP_CFG | 0x2108 | 远程设置字符叠加参数配置
MINOR_REMOTE_GET_ROAD_INFO | 0x2109 | 远程获取路口信息
MINOR_REMOTE_START_TRANSCHAN | 0x210a | 远程建立同步数据服务器
MINOR_REMOTE_GET_ECTWORKSTATE | 0x210b | 远程获取出入口终端工作状态
MINOR_REMOTE_GET_ECTCHANINFO | 0x210c | 远程获取出入口终端通道状态
MINOR_REMOTE_ADD_EXTERNAL_DEVICE_INFO | 0x210d | 远程添加外接设备信息
MINOR_REMOTE_MOD_EXTERNAL_DEVICE_INFO | 0x210e | 远程修改外接设备信息
MINOR_REMOTE_GET_ENDETCFG | 0x210f | 远程获取出入口控制机离线检测配置
MINOR_REMOTE_SET_ENDETCFG | 0x2110 | 远程设置出入口控制机离线检测配置
MINOR_REMOTE_ENDEV_ISSUEDDATA | 0x2111 | 远程设置出入口控制机下发卡片信息
MINOR_REMOTE_DEL_ENDEV_ISSUEDDATA | 0x2112 | 远程清空出入口控制机下发卡片信息
MINOR_REMOTE_ON_CTRL_LAMP | 0x2115 | 开启远程控制车位指示灯
MINOR_REMOTE_OFF_CTRL_LAMP | 0x2116 | 关闭远程控制车位指示灯
MINOR_SET_VOICE_LEVEL_PARAM | 0x2117 | 设置音量大小
MINOR_SET_VOICE_INTERCOM_PARAM | 0x2118 | 设置音量录音
MINOR_SET_INTELLIGENT_PARAM | 0x2119 | 智能配置
MINOR_LOCAL_SET_RAID_SPEED | 0x211a | 本地设置raid速度
MINOR_REMOTE_SET_RAID_SPEED | 0x211b | 远程设置raid速度
MINOR_REMOTE_CREATE_STORAGE_POOL | 0x211c | 远程添加存储池
MINOR_REMOTE_DEL_STORAGE_POOL | 0x211d | 远程删除存储池
MINOR_REMOTE_DEL_PIC | 0x2120 | 远程删除图片数据
MINOR_REMOTE_DEL_RECORD | 0x2121 | 远程删除录像数据
MINOR_REMOTE_CLOUD_ENABLE | 0x2123 | 远程设置云存储启用
MINOR_REMOTE_CLOUD_DISABLE | 0x2124 | 远程设置云存储禁用
MINOR_REMOTE_CLOUD_MODIFY_PARAM | 0x2125 | 远程修改云存储池参数
MINOR_REMOTE_CLOUD_MODIFY_VOLUME | 0x2126 | 远程修改云存储池容量
MINOR_REMOTE_CREATE_MOD_VIEWLIB_SPACE | 0x2200 | 远程创建/修改视图库空间
MINOR_REMOTE_DELETE_VIEWLIB_FILE | 0x2201 | 远程删除视图库文件
MINOR_REMOTE_DOWNLOAD_VIEWLIB_FILE | 0x2202 | 远程下载视图库文件
MINOR_REMOTE_UPLOAD_VIEWLIB_FILE | 0x2203 | 远程上传视图库文件
MINOR_LOCAL_CREATE_MOD_VIEWLIB_SPACE | 0x2204 | 本地创建/修改视图库空间
MINOR_REMOTE_CONFERENCE_CONFIG | 0x2501 | MCU会议配置
MINOR_REMOTE_TERMINAL_CONFIG | 0x2502 | MCU终端配置
MINOR_REMOTE_GROUP_CONFIG | 0x2503 | MCU分组配置
MINOR_REMOTE_CONFERENCE_CTRL | 0x2504 | MCU会议控制
MINOR_REMOTE_TERMINAL_CTRL | 0x2505 | MCU终端控制
MINOR_LOCAL_RESET_LOGIN_PASSWORD | 0x2600 | 本地重置admin登陆密码
MINOR_REMOTE_RESET_LOGIN_PASSWORD | 0x2601 | 远程重置admin登录密码
MINOR_LOCAL_FACE_BASE_CREATE | 0x2602 | 本地人脸对比库创建
MINOR_REMOTE_FACE_BASE_CREATE | 0x2603 | 远程人脸对比库创建
MINOR_LOCAL_FACE_BASE_MODIFY | 0x2604 | 本地人脸对比库修改
MINOR_REMOTE_FACE_BASE_MODIFY | 0x2605 | 远程人脸对比库修改
MINOR_LOCAL_FACE_BASE_DELETE | 0x2606 | 本地人脸对比库删除
MINOR_REMOTE_FACE_BASE_DELETE | 0x2607 | 远程人脸对比库删除
MINOR_LOCAL_FACE_DATA_APPEND | 0x2608 | 本地录入人脸数据
MINOR_REMOTE_FACE_DATA_APPEND | 0x2609 | 远程录入人脸数据
MINOR_LOCAL_FACE_DATA_SEARCH | 0x2610 | 本地人脸比对数据查找
MINOR_REMOTE_FACE_DATA_SEARCH | 0x2611 | 远程人脸比对数据查找
MINOR_LOCAL_FACE_DATA_ANALYSIS | 0x2612 | 本地图片分析操作
MINOR_REMOTE_FACE_DATA_ANALYSIS | 0x2613 | 远程图片分析操作
MINOR_LOCAL_FACE_DATA_EDIT | 0x2614 | 本地人脸数据修改
MINOR_REMOTE_FACE_DATA_EDIT | 0x2615 | 远程人脸数据修改
MINOR_LOCAL_FACE_DATA_DELETE | 0x2616 | 本地人脸数据删除
MINOR_REMOTE_FACE_DATA_DELET | 0x2617 | 远程人脸数据删除
MINOR_LOCAL_VCA_ANALYSIS_CFG | 0x2618 | 本地智能分析配置
MINOR_REMOTE_VCA_ANALYSIS_CFG | 0x2619 | 远程智能分析配置
MINOR_LOCAL_FACE_BASE_IMPORT | 0x261a | 本地导入人脸库
MINOR_LOCAL_FACE_BASE_EXPORT | 0x261b | 本地导出人脸库

主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_INFORMATION | 0x4 | 附加信息
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_HDD_INFO | 0xa1 | 硬盘信息
MINOR_SMART_INFO | 0xa2 | S.M.A.R.T信息
MINOR_REC_START | 0xa3 | 开始录像
MINOR_REC_STOP | 0xa4 | 停止录像
MINOR_REC_OVERDUE | 0xa5 | 过期录像删除
MINOR_LINK_START | 0xa6 | 连接前端设备
MINOR_LINK_STOP | 0xa7 | 断开前端设备
MINOR_NET_DISK_INFO | 0xa8 | 网络硬盘信息
MINOR_RAID_INFO | 0xa9 | raid相关信息
MINOR_RUN_STATUS_INFO | 0xaa | 系统运行状态信息
MINOR_SPARE_START_BACKUP | 0xab | 热备系统开始备份指定工作机
MINOR_SPARE_STOP_BACKUP | 0xac | 热备系统停止备份指定工作机
MINOR_SPARE_CLIENT_INFO | 0xad | 热备客户机信息
MINOR_ANR_RECORD_START | 0xae | ANR录像开始
MINOR_ANR_RECORD_END | 0xaf | ANR录像结束
MINOR_ANR_ADD_TIME_QUANTUM | 0xb0 | ANR添加时间段
MINOR_ANR_DEL_TIME_QUANTUM | 0xb1 | ANR删除时间段
MINOR_PIC_REC_START | 0xb3 | 开始抓图
MINOR_PIC_REC_STOP | 0xb4 | 停止抓图
MINOR_PIC_REC_OVERDUE | 0xb5 | 过期图片文件删除
MINOR_CLIENT_LOGIN | 0xb6 | 登录服务器成功
MINOR_CLIENT_RELOGIN | 0xb7 | 重新登录服务器
MINOR_CLIENT_LOGOUT | 0xb8 | 退出服务器成功
MINOR_CLIENT_SYNC_START | 0xb9 | 录像同步开始
MINOR_CLIENT_SYNC_STOP | 0xba | 录像同步终止
MINOR_CLIENT_SYNC_SUCC | 0xbb | 录像同步成功
MINOR_CLIENT_SYNC_EXCP | 0xbc | 录像同步异常
MINOR_GLOBAL_RECORD_ERR_INFO | 0xbd | 全局错误记录信息
MINOR_BUFFER_STATE | 0xbe | 缓冲区状态日志记录
MINOR_DISK_ERRORINFO_V2 | 0xbf | 硬盘错误详细信息V2
MINOR_UNLOCK_RECORD | 0xc3 | 开锁记录
MINOR_VIS_ALARM | 0xc4 | 防区报警
MINOR_TALK_RECORD | 0xc5 | 通话记录
MINOR_ACCESSORIES_MESSAGE | 0xc6 | 配件板信息
MINOR_INTELLIGENT_BOARD_STATUS | 0xc9 | 智能板状态
MINOR_EZVIZ_OPERATION | 0xcc | 萤石运行状态
MINOR_SET_USERPWD | 0x277 | 设置用户密码
MINOR_SET_USER_CFG | 0x286 | 设置设置用户配置（增加、删除、修改权限）用户密码
MINOR_LIVE_DETECT_OPEN | 0x400 | 真人检测开启
MINOR_LIVE_DETECT_CLOSE | 0x401 | 真人检测关闭
MINOR_CLEAR_DATA_COLLECTION | 0x402 | 采集数据清空
MINOR_DELETE_DATA_COLLECTION | 0x403 | 采集数据删除
MINOR_EXPORT_DATA_COLLECTION | 0x404 | 采集数据导出
MINOR_CARD_LEN_CONFIG | 0x405 | 卡长度配置
MINOR_DATA_BASE_INIT_FAILED | 0x406 | 数据库初始化失败
MINOR_DATA_BASE_PATCH_UPDATE | 0x407 | 数据库补丁升级
MINOR_PSAM_CARD_INSERT | 0x408 | Psam 卡插入
MINOR_PSAM_CARD_REMOVE | 0x409 | Psam 卡拔出
MINOR_HARD_FAULT_REBOOT | 0x40a | 硬件异常（hardfault）重启
MINOR_PSAM_CARD_OCP | 0x40b | Psam 卡过流保护
MINOR_STACK_OVERFLOW | 0x40c | 堆栈溢出
MINOR_PARM_CFG | 0x40d | 参数配置
MINOR_IMPORT_USER_LIST | 0x422 | 用户列表导入（离线采集）
主类型的宏定义 | 主类型的宏定义值 | 含义
MAJOR_EVENT | 0x5 | 事件
次类型的宏定义 | 次类型的宏定义值 | 含义
MINOR_LEGAL_CARD_PASS | 0x01 | 合法卡认证通过
MINOR_CARD_AND_PSW_PASS | 0x02 | 刷卡加密码认证通过
MINOR_CARD_AND_PSW_FAIL | 0x03 | 刷卡加密码认证失败
MINOR_CARD_AND_PSW_TIMEOUT | 0x04 | 数卡加密码认证超时
MINOR_CARD_AND_PSW_OVER_TIME | 0x05 | 刷卡加密码超次
MINOR_CARD_NO_RIGHT | 0x06 | 未分配权限
MINOR_CARD_INVALID_PERIOD | 0x07 | 无效时段
MINOR_CARD_OUT_OF_DATE | 0x08 | 卡号过期
MINOR_INVALID_CARD | 0x09 | 无此卡号
MINOR_ANTI_SNEAK_FAIL | 0x0a | 反潜回认证失败
MINOR_INTERLOCK_DOOR_NOT_CLOSE | 0x0b | 互锁门未关闭
MINOR_NOT_BELONG_MULTI_GROUP | 0x0c | 卡不属于多重认证群组
MINOR_INVALID_MULTI_VERIFY_PERIOD | 0x0d | 卡不在多重认证时间段内
MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL | 0x0e | 多重认证模式超级权限认证失败
MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL | 0x0f | 多重认证模式远程认证失败
MINOR_MULTI_VERIFY_SUCCESS | 0x10 | 多重认证成功
MINOR_LEADER_CARD_OPEN_BEGIN | 0x11 | 首卡开门开始
MINOR_LEADER_CARD_OPEN_END | 0x12 | 首卡开门结束
MINOR_ALWAYS_OPEN_BEGIN | 0x13 | 常开状态开始
MINOR_ALWAYS_OPEN_END | 0x14 | 常开状态结束
MINOR_LOCK_OPEN | 0x15 | 门锁打开
MINOR_LOCK_CLOSE | 0x16 | 门锁关闭
MINOR_DOOR_BUTTON_PRESS | 0x17 | 开门按钮打开
MINOR_DOOR_BUTTON_RELEASE | 0x18 | 开门按钮放开
MINOR_DOOR_OPEN_NORMAL | 0x19 | 正常开门（门磁）
MINOR_DOOR_CLOSE_NORMAL | 0x1a | 正常关门（门磁）
MINOR_DOOR_OPEN_ABNORMAL | 0x1b | 门异常打开（门磁）
MINOR_DOOR_OPEN_TIMEOUT | 0x1c | 门打开超时（门磁）
MINOR_ALARMOUT_ON | 0x1d | 报警输出打开
MINOR_ALARMOUT_OFF | 0x1e | 报警输出关闭
MINOR_ALWAYS_CLOSE_BEGIN | 0x1f | 常关状态开始
MINOR_ALWAYS_CLOSE_END | 0x20 | 常关状态结束
MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN | 0x21 | 多重多重认证需要远程开门
MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS | 0x22 | 多重认证超级密码认证成功事件
MINOR_MULTI_VERIFY_REPEAT_VERIFY | 0x23 | 多重认证重复认证事件
MINOR_MULTI_VERIFY_TIMEOUT | 0x24 | 多重认证重复认证事件
sPanelUser
操作面板的用户名
sNetUser
网络操作的用户名
struRemoteHostAddr
远程主机地址
dwParaType
对于DS-90xx设备，当日志次类型为MINOR_START_VT或者MINOR_STOP_VT时，表示语音对讲端口号；当日志的主类型为 MAJOR_OPERATION=03（操作）， 且次类型为 MINOR_LOCAL_CFG_PARM=0x52（本地配置参数）或 MINOR_REMOTE_GET_PARM=0x76（远程获得参数）或 MINOR_REMOTE_CFG_PARM=0x77（远程配置参数）时， 该参数类型有效，其含义如下：
宏定义 | 宏定义值 | 含义
PARA_VIDEOOUT | 0x1 | 视频输出结构配置
PARA_IMAGE | 0x2 | 图像参数结构配置
PARA_ENCODE | 0x4 | 压缩参数结构配置
PARA_NETWORK | 0x8 | 网络参数结构配置
PARA_ALARM | 0x10 | 报警参数结构配置
PARA_EXCEPTION | 0x20 | 异常参数结构配置
PARA_DECODER | 0x40 | 解码器参数结构配置
PARA_RS232 | 0x80 | RS232参数结构配置
PARA_PREVIEW | 0x100 | 本地预览参数结构配置
PARA_SECURITY | 0x200 | 用户权限参数结构配置
PARA_DATETIME | 0x400 | 本地系统配置
PARA_FRAMETYPE | 0x800 | 帧信息参数结构配置
PARA_DETECTION | 0x1000 | 侦测配置(根据附加信息区分区域入侵和越界侦测)
dwChannel
通道号
dwDiskNumber
硬盘号
dwAlarmInPort
报警输入端口
dwAlarmOutPort
报警输出端口
dwInfoLen
日志附加信息长度
sInfo
日志附加信息（查询门禁主机的日志时，sInfo包含一个NET_DVR_ACS_EVENT_INFO结构）
byRes
保留

Remarks

设备日志查找有两种方式：SDK私有协议和ISAPI协议。
1) SDK私有协议是我司私有的TCP/IP协议，登录使用的是设备服务端口（默认为8000），我司网络设备除特殊产品外基本都支持该协议方式登录，因此一般建议使用SDK私有协议模式登录。
2) ISAPI协议是基于标准HTTP REST架构，HTTP协议或者HTTPS协议访问设备，登录使用的是设备HTTP端口（默认为80）或者HTTPS端口（默认为443）。不支持SDK私有协议的设备如猎鹰、刀锋等采用ISAPI协议的方式登录。

使用ISAPI协议方式登录查找日志时不支持sPanelUser参数。

See Also

NET_DVR_FindNextLog_V30


NET_DVR_LOGIN_DEVICE_PARAM

登录设备信息结构体。

struct{
  DOWRD    dwSize;
  BYTE     byMobileDev;
  BYTE     byRes[63];
}NET_DVR_LOGIN_DEVICE_PARAM,*LPNET_DVR_LOGIN_DEVICE_PARAM;

Members

dwSize
结构体
byMobileDev
设备种类：0- 非移动设备，1- 移动设备
byRes
保留，置为0

Remarks

通过此接口告知鱼眼设备有移动设备接入。当鱼眼设备发现有移动设备登录时，会将第五通道的预览模式切换至鱼眼预览模式，此时不支持PTZ操作。预览模式的切换通知将通过NET_DVR_StartRemoteConfig设置的回调返回给上层应用。

See Also

NET_DVR_RemoteControl


NET_DVR_LOGO_OVERLAYCFG

LOGO图片叠加配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwCoordinateX;
  DWORD    dwCoordinateY;
  WORD     wPicWidth;
  WORD     wPicHeight;
  BYTE     byRes[16];
}NET_DVR_LOGO_OVERLAYCFG,*LPNET_DVR_LOGO_OVERLAYCFG;

Members

dwSize
结构体大小
byEnable
是否启用LOGO图片叠加：0- 否，1- 是
byRes1
保留，置为0
dwCoordinateX
图片显示区域X坐标
dwCoordinateY
图片显示区域Y坐标
wPicWidth
图片宽
wPicHeight
图片高
byRes
保留，置为0

See Also

LOGO图片通过接口NET_DVR_UploadLogo上传设备，上传之后才能通过该配置启用LOGO图片叠加与否。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LOITERING_DETECTION

徘徊侦测配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnabled;
  BYTE                        byRes1[3];
  NET_DVR_LOITERING_REGION    struRegion[MAX_REGION_NUM];
  BYTE                        byRes2[128];
}NET_DVR_LOITERING_DETECTION,*LPNET_DVR_LOITERING_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留
struRegion
徘徊侦测区域
byRes2
保留

Remarks

  • 该配置功能对应徘徊侦测能力集(Loitering)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_LOITERING_CAPABILITIES )。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。徘徊侦测的区域参数通过NET_DVR_SET_LOITERING_REGION命令进行配置，每一个区域单独设置。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_LOITERING_REGION

徘徊侦测区域结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byTimeThreshold;
  BYTE               byRes[62];
}NET_DVR_LOITERING_REGION,*LPNET_DVR_LOITERING_REGION;

Members

struRegion
徘徊侦测区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byTimeThreshold
时间阈值，取值范围：[0,10]，单位：s
byRes
保留

Remarks

设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

See Also

NET_DVR_LOITERING_DETECTION


NET_DVR_LONGITUDE_PARAM

经度参数结构体。

struct{
  BYTE    byDegree;
  BYTE    byMinute;
  BYTE    bySec;
  BYTE    byRes;
}NET_DVR_LONGITUDE_PARAM, *LPNET_DVR_LONGITUDE_PARAM;

Members

byDegree
度，取值范围：[0,179]
byMinute
分，取值范围：[0,59]
byMinute
秒，取值范围：[0,59]
byRes
保留，置为0

See Also

NET_DVR_GPS_DATACFG


NET_DVR_LOW_LIGHT_CFG

低照度信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byLowLightLimt;
  BYTE     byLowLightLimtLevel;
  BYTE     byRes[66];
}NET_DVR_LOW_LIGHT_CFG, *LPNET_DVR_LOW_LIGHT_CFG;

Members

dwSize
结构体大小
byLowLightLimt
低照度电子快门: 0- 关，1- 开
byLowLightLimtLevel
球机低照度电子快门等级：0- 关，1- 慢快门*2，2-慢快门*3，3-慢快门*4，4-慢快门*6，5-慢快门*8，6-慢快门*12，7-慢快门*16，8-慢快门*24，9-慢快门*32，10-慢快门*48，11-慢快门*64，12-慢快门*96，13-慢快门*128，14-慢快门*256，15-慢快门*512
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_LOWPOWER

低功耗配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byMode;
  BYTE                        byEnabled;
  BYTE                        byRes[6];
  NET_DVR_SCHEDULE_DAYTIME    struSchedTime;
  BYTE                        byRes1[256];
}NET_DVR_LOWPOWER,*LPNET_DVR_LOWPOWER;

Members

dwSize
结构体大小
byMode
低功耗控制模式：0- 手动，1- 定时
byEnabled
手动模式下的使能开关(byMode为0有效)：0- 关闭，1- 开启
byRes
保留，置为0
struSchedTime
定时模式下时间段参数，开始时间和结束时间范围内开启低功耗功能，范围外关闭低功耗功能
byRes1
保留，置为0

Remarks

  • 设备是否支持低功耗配置或者支持的参数能力，可以通过设备能力集进行判断，对应低功耗配置能力集(LowPower)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_LOWPOWER_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_N_PLUS_ONE_DEVICE_INFO

LUN卷克隆参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwSrcLunID;
  DWORD    dwDstLunID;
  BYTE     byRes[32];
}NET_DVR_N_PLUS_ONE_DEVICE_INFO,*LPNET_DVR_N_PLUS_ONE_DEVICE_INFO;

Members

dwSize
结构体大小
dwSrcLunID
源LUN卷ID
dwDstLunID
目的LUN卷ID
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_LUN_EXPAND

LUN卷扩展参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwLunID;
  DWORD    dwHSize;
  DWORD    dwLSize;
  char     szArrayIDGroup[NAME_LEN];
  char     szNewLunName[MAX_NAMELEN];
  BYTE     byRes[32];
}NET_DVR_LUN_EXPAND,*LPNET_DVR_LUN_EXPAND;

Members

dwSize
结构体大小
dwLunID
LUN卷ID
dwHSize
扩展的大小高32位
dwLSize
扩展的大小低32位
szArrayIDGroup
使用的阵列ID组，以逗号隔开，为空则使用默认阵列
szNewLunName
新LUN卷名
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_LUN_PARAM

逻辑卷参数结构体。

struct{
  DWORD    dwHCapacity;
  DWORD    dwLCapacity;
  char     szName[MAX_NAMELEN];
  DWORD    dwBlockSize;
  char     szArrayIDGroup[NAME_LEN];
}NET_DVR_LUN_PARAM, *LPNET_DVR_LUN_PARAM;

Members

dwHCapacity
逻辑卷大小高32位
dwLCapacity
逻辑卷大小低32位
szName
逻辑卷名称
dwBlockSize
逻辑卷的最小存储单元块大小
szArrayIDGroup
使用的阵列名称组，多个阵列名称以逗号隔开，为空则使用默认阵列

See Also

NET_DVR_VD_UNION


NET_DVR_MACFILTER_CFG

MAC地址过滤配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byPermissionType;
  BYTE     byRes1[2];
  BYTE     szMacAddress[MAC_ADDRESS_NUM][MACADDR_LEN];
  BYTE     byRes[128];
}NET_DVR_MACFILTER_CFG,*LPNET_DVR_MACFILTER_CFG;

Members

dwSize
结构体大小
byEnabled
是否开启MAC地址过滤：0- 不启用，1- 启用
byPermissionType
MAC地址过滤类型：0- 禁止，1- 允许
byRes1
保留，置为0
szMacAddress
过滤的MAC地址，最大支持48个MAC地址，每个地址6个字节
byRes
保留，置为0

Remarks

  • 设备是否支持MAC地址过滤配置或者支持的参数能力，可以通过设备能力集进行判断，对应MAC地址过滤配置能力集(MACFilter)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MACFILTER_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_MACHINE_MAX_NUM_CFG

备机数目配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwMaxNum;
  BYTE     byRes[32];
}NET_DVR_MACHINE_MAX_NUM_CFG,*LPNET_DVR_MACHINE_MAX_NUM_CFG;

Members

dwSize
结构体大小
dwMaxNum
最大备机数目
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MANAGE_UNIT_DEVICEID

管理机编号参数结构体。

struct{
  WORD    wPeriod;
  WORD    wDevIndex;
  BYTE    byRes[124];
 }NET_DVR_MANAGE_UNIT_DEVICEID,*LPNET_DVR_MANAGE_UNIT_DEVICEID;

Members

wPeriod
期号，取值范围：[0,9]
wDevIndex
管理机序号，每一层中门口机的序号唯一，从0开始
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION


NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG

管理机操作时间配置结构体。

struct{
  DWORD    dwMaxMonitoringTime;
  DWORD    dwMaxRingTime;
  DWORD    dwMaxTalkTime;
  BYTE     byRes[116];
 }NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG;

Members

dwMaxMonitoringTime
最大视频时间，范围：[10,60]，单位：秒
dwMaxRingTime
最大振铃时间，范围：[15,60]，单位：秒
dwMaxTalkTime
最大通话时间，单位：秒
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION


NET_DVR_MANAGE_UNIT_RELATEDEV

管理机关联网络设备参数结构体。

struct{
  NET_DVR_IPADDR    struSIPServer;
  BYTE              byRes[880];
 }NET_DVR_MANAGE_UNIT_RELATEDEV,*LPNET_DVR_MANAGE_UNIT_RELATEDEV;

Members

struSIPServer
SIP服务器IP地址
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION


NET_DVR_MANUAL_CTRL_INFO

双摄像机手动控制结构体。

struct{
  NET_VCA_POINT     struCtrlPoint;
  BYTE              byRes[8];
}NET_DVR_MANUAL_CTRL_INFO, *LPNET_DVR_MANUAL_CTRL_INFO;

Members

struCtrlPoint
手动控制时的控制点参数
byRes
保留

See Also

NET_DVR_TRACK_MODE


NET_DVR_MANUAL_CURRICULUM_CFG

手动课程录像结构体。

struct{
  DWORD          dwSize;
  BYTE           byRecUUID[MAX_UUID_LEN];
  BYTE           byCourseName[COURSE_NAME_LEN_128];
  BYTE           byInstructorName[INSTRUCTOR_NAME_LEN_64];
  BYTE           byCourseDescription[COURSE_DESCRIPTION_LEN];
  BYTE           byCmdType;
  BYTE           byRes[303];
 }NET_DVR_RECORD_STATUS,*LPNET_DVR_RECORD_STATUS;

Members

dwSize
结构体大小
byRecUUID
手动课表UUID
byCourseName
课程名称
byInstructorName
授课老师
byCourseDescription
课程描述
byCmdType
命令，0-开始录像 1-结束 2-暂停 3-继续,4-开始屏蔽，5-结束屏蔽
byRes
保留字节，置为0

Remarks

  • 设备是否支持手动课程录像，可以通过设备能力集进行判断，对应能力集(ManualCurriculumCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_MANUAL_CURRICULUM_CONTROL_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_MANUAL_RECORD_PARA

手动录像参数结构体。

struct{
  NET_DVR_STREAM_INFO    struStreamInfo;
  LONG                   lRecordType;
  BYTE                   byRes[32];
}NET_DVR_MANUAL_RECORD_PARA,*LPNET_DVR_MANUAL_RECORD_PARA;

Members

struStreamInfo
流ID信息
lRecordType
录像类型：0- 手动录像，1- 移动侦测录像，2- 信号量IO报警录像，3- 遮挡报警录像
byRes
保留，置为0

See Also

NET_DVR_StartManualRecord


NET_DVR_MANUAL_TRACKRATIO

手动跟踪倍率配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCoefficient;
  BYTE     byRes[127];
}NET_DVR_MANUAL_TRACKRATIO,*LPNET_DVR_MANUAL_TRACKRATIO;

Members

dwSize
结构体大小
byCoefficient
跟踪倍率系数，取值范围：[1,60]
byRes
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，相关配置是需要先登录主摄像机，然后配置关联的从摄像机，目前最多支持设置4个从摄像机。
  • 设备是否支持手动跟踪倍率配置或者支持的参数能力，可以通过设备能力集进行判断，对应从摄像机配置和标定能力集(SlaveCameraCalibrating)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES，节点：<ManualTrackRatio>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_MANUALDEICING_CFG

手动除冰配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byRes[127];
}NET_DVR_MANUALDEICING_CFG,*LPNET_DVR_MANUALDEICING_CFG;

Members

dwSize
结构体大小
byEnabled
手动除冰：0- 未启用，1- 启用
byRes
保留，置为0

Remarks

  • 如果需要手动除冰，需要先判断设备是否正处于手动除冰状态下，平台需要等当前手动除冰结束之后再重新启用手动除冰功能。
  • 设备是否支持手动除冰功能，可以通过设备能力集进行判断，对应手动除冰能力集(ManualDeicing)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MANUALDEICING_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_MANUALRANGING_CFG

手动测距参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byRes[127];
}NET_DVR_MANUALRANGING_CFG,*LPNET_DVR_MANUALRANGING_CFG;

Members

dwSize
结构体大小
byEnabled
是否开启手动测距：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持手动测距参数设置或者支持的参数能力，可以通过设备能力集进行判断，对应手动测距配置能力集(ManualRanging)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MANUALRANGING_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig


NET_DVR_MANUALSNAP

手动抓拍请求参数结构体。

struct{
  BYTE    byOSDEnable;
  BYTE    byLaneNo;
  BYTE    byRes[22];
}NET_DVR_MANUALSNAP, *LPNET_DVR_MANUALSNAP;

Members

byOSDEnable
抓拍图片上是否关闭OSD信息叠加：0- 不关闭(默认)，1- 关闭
byLaneNo
车道号，取值范围：1~6，默认为1
byRes
保留，置为0

See Also

NET_DVR_ManualSnap


NET_DVR_MATRIX_ABILITY

多路解码器显示和解码能力输出参数的结构体。

struct{
  DWORD   dwSize;
  BYTE    byDecNums;
  BYTE    byStartChan;
  BYTE    byVGANums;
  BYTE    byBNCNums;
  BYTE    byVGAWindowMode[8][12];
  BYTE    byBNCWindowMode[4];
  BYTE    byDspNums;
  BYTE    byHDMINums;
  BYTE    byDVINums;
  BYTE    byRes1[13];
  BYTE    bySupportResolution[MAX_RESOLUTIONNUM];
  BYTE    byHDMIWindowMode[4][8];
  BYTE    byDVIWindowMode[4][8];
  BYTE    byRes2[24];
}NET_DVR_MATRIX_ABILITY,*LPNET_DVR_MATRIX_ABILITY;

Members

dwSize
结构体大小
byDecNums
解码通道数
byStartChan
起始通道号
byVGANums
VGA显示通道个数
byBNCNums
BNC显示通道个数
byVGAWindowMode
VGA支持的窗口模式，共有1、2、4、9、16等几种模式，例如byVGAWindowMode[0][0]为1表示VGA1支持1画面窗口模式，byVGAWindowMode[0][1]为2表示VGA1支持2画面模式，到0为止
byBNCWindowMode
BNC支持的窗口模式，例如byBNCWindowMode[0]为1表示BNC输出支持1画面窗口模式，byBNCWindowMode[1]为2表示BNC输出支持2画面模式，到0为止
byDspNums
DSP数目
byHDMINums
HDMI显示通道个数（从25开始）
byDVINums
DVI显示通道个数（从29开始）
byRes1
保留，置为0
bySupportResolution
按下面的枚举类型定义，一个字节表示一种分辨率是否支持，0-不支持，1-支持，分辨率定义如下：
enum{
  VGA_NOT_AVALIABLE,
  VGA_THS8200_MODE_SVGA_60HZ,
  VGA_THS8200_MODE_SVGA_75HZ,
  VGA_THS8200_MODE_XGA_60HZ,
  VGA_THS8200_MODE_XGA_70HZ,
  VGA_THS8200_MODE_SXGA_60HZ,
  VGA_THS8200_MODE_720P_60HZ,
  VGA_THS8200_MODE_1080I_60HZ,
  VGA_THS8200_MODE_1080P_30HZ,
  VGA_THS8200_MODE_UXGA_30HZ,
  HDMI_SII9134_MODE_XGA_60HZ,
  HDMI_SII9134_MODE_SXGA_60HZ,
  HDMI_SII9134_MODE_SXGA2_60HZ,
  HDMI_SII9134_MODE_720P_60HZ,
  HDMI_SII9134_MODE_720P_50HZ,
  HDMI_SII9134_MODE_1080I_60HZ,
  HDMI_SII9134_MODE_1080I_50HZ,
  HDMI_SII9134_MODE_1080P_25HZ,
  HDMI_SII9134_MODE_1080P_30HZ,
  HDMI_SII9134_MODE_1080P_50HZ,
  HDMI_SII9134_MODE_1080P_60HZ,
  HDMI_SII9134_MODE_UXGA_60HZ,
  DVI_SII9134_MODE_XGA_60HZ,
  DVI_SII9134_MODE_SXGA_60HZ,
  DVI_SII9134_MODE_SXGA2_60HZ,
  DVI_SII9134_MODE_720P_60HZ,
  DVI_SII9134_MODE_720P_50HZ,
  DVI_SII9134_MODE_1080I_60HZ,
  DVI_SII9134_MODE_1080I_50HZ,
  DVI_SII9134_MODE_1080P_25HZ,
  DVI_SII9134_MODE_1080P_30HZ,
  DVI_SII9134_MODE_1080P_50HZ,
  DVI_SII9134_MODE_1080P_60HZ,
  DVI_SII9134_MODE_UXGA_60HZ
}VGA_MODE
VGA_NOT_AVALIABLE
无
VGA_THS8200_MODE_SVGA_60HZ
SVGA:800*600
VGA_THS8200_MODE_SVGA_75HZ
SVGA:800*600
VGA_THS8200_MODE_XGA_60HZ
XGA:1024*768
VGA_THS8200_MODE_XGA_70HZ
XGA:1024*768
VGA_THS8200_MODE_SXGA_60HZ
SXGA:1280*1024
VGA_THS8200_MODE_720P_60HZ
H720P:1280*720
VGA_THS8200_MODE_1080I_60HZ
1080i:1920*1080
VGA_THS8200_MODE_1080P_30HZ
1080P:1920*1080
VGA_THS8200_MODE_UXGA_30HZ
UXGA:1600*1200
HDMI_SII9134_MODE_XGA_60HZ
XGA:1024*768
HDMI_SII9134_MODE_SXGA_60HZ
SXGA:1280*1024
HDMI_SII9134_MODE_SXGA2_60HZ
SXGA2:1280*960
HDMI_SII9134_MODE_720P_60HZ
720P:1280*720
HDMI_SII9134_MODE_720P_50HZ
720P:1280*720
HDMI_SII9134_MODE_1080I_60HZ
1080P:1920*1080
HDMI_SII9134_MODE_1080I_50HZ
1080I:1920*1080
HDMI_SII9134_MODE_1080P_25HZ
1080P:1920*1080
HDMI_SII9134_MODE_1080P_30HZ
1080P:1920*1080
HDMI_SII9134_MODE_1080P_50HZ
1080P:1920*1080
HDMI_SII9134_MODE_1080P_60HZ
1080P:1920*1080
HDMI_SII9134_MODE_UXGA_60HZ
UXGA:1600*1200
DVI_SII9134_MODE_XGA_60HZ
XGA:1024*768
DVI_SII9134_MODE_SXGA_60HZ
SXGA:1280*1024
DVI_SII9134_MODE_SXGA2_60HZ
SXGA2:1280*960
DVI_SII9134_MODE_720P_60HZ
720P:1280*720
DVI_SII9134_MODE_720P_50HZ
720P:1280*720
DVI_SII9134_MODE_1080I_60HZ
1080P:1920*1080
DVI_SII9134_MODE_1080I_50HZ
1080I:1920*1080
DVI_SII9134_MODE_1080P_25HZ
1080P:1920*1080
DVI_SII9134_MODE_1080P_30HZ
1080P:1920*1080
DVI_SII9134_MODE_1080P_50HZ
1080P:1920*1080
DVI_SII9134_MODE_1080P_60HZ
1080P:1920*1080
DVI_SII9134_MODE_UXGA_60HZ
UXGA:1600*1200
byHDMIWindowMode
HDMI支持的窗口模式
byDVIWindowMode
DVI支持的窗口模式
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceAbility


NET_DVR_MATRIX_ABILITY_V41

解码器能力集结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byDspNums;
  BYTE                      byDecChanNums;
  BYTE                      byStartChan;
  BYTE                      byRes1[5];
  NET_DVR_DISPINFO          struVgaInfo;
  NET_DVR_DISPINFO          struBncInfo;
  NET_DVR_DISPINFO          struHdmiInfo;
  NET_DVR_DISPINFO          struDviInfo;
  NET_DVR_DISPWINDOWMODE    struDispMode[MAX_DISPNUM_V41];
  NET_DVR_SCREENINFO        struBigScreenInfo;
  BYTE                      bySupportAutoReboot;
  BYTE                      byRes2[119];
}NET_DVR_MATRIX_ABILITY_V41,*LPNET_DVR_MATRIX_ABILITY_V41;

Members

dwSize
结构体大小
byDspNums
DSP个数
byDecChanNums
解码通道数
byStartChan
起始解码通道
byRes1
保留，置为0
struVgaInfo
VGA显示通道信息
struBncInfo
BNC显示通道信息
struHdmiInfo
HDMI显示通道信息
struDviInfo
DVI显示通道信息
struDispMode
显示通道画面分割模式
struBigScreenInfo
大屏拼接信息
bySupportAutoReboot
是否支持自动重启：0- 不支持，1- 支持
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceAbility


NET_DVR_MATRIX_BASE_CFG

矩阵基本参数配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwVaildInputNum;
  DWORD    dwValidOutputNum;
  BYTE     byRes2[64];
}NET_DVR_MATRIX_BASE_CFG,*LPNET_DVR_MATRIX_BASE_CFG;

Members

dwSize
结构体大小
dwVaildInputNum
有效的输入通道个数
dwValidOutputNum
有效的输出通道个数
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MATRIX_CFG

模拟矩阵配置结构体。

struct{
  BYTE    byValid;
  BYTE    byCommandProtocol;
  BYTE    byScreenType;
  BYTE    byRes1;
  BYTE    byMatrixToScreen[32];
  BYTE    byRes2[4];
}NET_DVR_MATRIX_CFG,*LPNET_DVR_MATRIX_CFG;

Members

byValid
判断是否是模拟矩阵（是否有效）
byCommandProtocol
模拟矩阵的指令
宏定义 | 宏定义值 | 含义
MATRIX_COMMAND_V1 | 0x01 | 指令集一
MATRIX_COMMAND_V2 | 0x02 | 指令集二
MATRIX_COMMAND_V3 | 0x03 | extron兼容指令集
MATRIX_COMMAND_V4 | 0x04 | creator指令集
byScreenType
屏幕类型，保留
byRes1
保留，置为0
byMatrixToScreen
模拟矩阵的输出与屏幕的对应关系
byRes2
保留，置为0

See Also

NET_DVR_ANALOGSCREEN


NET_DVR_MATRIX_CHAN_INFO_V30

动态解码轮巡通道参数子结构体。

struct{
  DWORD                             dwEnable;
  NET_DVR_STREAM_MEDIA_SERVER_CFG   streamMediaServerCfg;
  NET_DVR_DEV_CHAN_INFO             struDevChanInfo;
}NET_DVR_MATRIX_CHAN_INFO_V30,*LPNET_DVR_MATRIX_CHAN_INFO_V30;

Members

dwEnable
是否启用：0－否，1－启用
streamMediaServerCfg
流媒体服务器参数
struDevChanInfo
轮巡解码通道信息

See Also

NET_DVR_MATRIX_LOOP_DECINFO_V30


NET_DVR_MATRIX_CHAN_INFO_V41

动态解码轮巡通道信息结构体。

struct{
  BYTE                       byEnable;
  BYTE                       byStreamMode;
  BYTE                       byRes[2];
  NET_DVR_DEC_STREAM_MODE    uDecStreamMode;
}NET_DVR_MATRIX_CHAN_INFO_V41,*LPNET_DVR_MATRIX_CHAN_INFO_V41;

Members

byEnable
是否启用：0－否，1－启用
byStreamMode
取流模式：0- 无效，1- 通过IP或域名取流，2- 通过URL取流，3- 通过动态域名解析向设备取流
byRes
保留，置为0
uDecStreamMode
取流配置信息

See Also

NET_DVR_MATRIX_LOOP_DECINFO_V41


NET_DVR_MATRIX_CHAN_STATUS

解码通道状态结构体。

struct{
  BYTE    byDecodeStatus;
  BYTE    byStreamType;
  BYTE    byPacketType;
  BYTE    byRecvBufUsage;
  BYTE    byDecBufUsage;
  BYTE    byFpsDecV;
  BYTE    byFpsDecA;
  BYTE    byCpuLoad;
  BYTE    byRes1[4];
  DWORD   dwDecodedV;
  DWORD   dwDecodedA;
  WORD    wImgW;
  WORD    wImgH;
  BYTE    byVideoFormat;
  BYTE    byRes2[3];
  DWORD   dwDecChan;
  BYTE    byRes3[20];
}NET_DVR_MATRIX_CHAN_STATUS,*LPNET_DVR_MATRIX_CHAN_STATUS;

Members

byDecodeStatus
当前状态：0-未启动，1-启动解码
byStreamType
码流类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_ENCODER_UNKOWN | 0 | 未知编码格式
NET_DVR_ENCODER_H264 | 1 | private 264
NET_DVR_ENCODER_S264 | 2 | 标准H264
NET_DVR_ENCODER_MPEG4 | 3 | MPEG4
NET_DVR_ORIGINALSTREAM | 4 | 原始流
NET_DVR_PICTURE | 5 | 智能分析联动的报警图片
NET_DVR_ENCODER_MJPEG | 6 | MJPEG
NET_DVR_ECONDER_MPEG2 | 7 | MPEG2
byPacketType
封装格式，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_STREAM_TYPE_UNKOWN | 0 | 未知封装格式
NET_DVR_STREAM_TYPE_PRIVT | 1 | 私有自定义封装格式
NET_DVR_STREAM_TYPE_TS | 7 | TS封装格式
NET_DVR_STREAM_TYPE_PS | 8 | PS封装格式
NET_DVR_STREAM_TYPE_RTP | 9 | RTP封装格式
NET_DVR_STREAM_TYPE_ORIGIN | 10 | 未封装
byRecvBufUsage
接收缓冲使用率
byDecBufUsage
解码缓冲使用率
byFpsDecV
视频解码帧率，大于1的数值即代表帧率值，对于小于1的低帧率部分的定义见下表：
宏定义 | 宏定义值 | 含义
LOW_DEC_FPS_1_2 | 51 | 1/2帧
LOW_DEC_FPS_1_4 | 52 | 1/4帧
LOW_DEC_FPS_1_8 | 53 | 1/8帧
LOW_DEC_FPS_1_16 | 54 | 1/16帧
byFpsDecA
音频解码帧率，其值的含义和视频解码帧率相同
byCpuLoad
DSP CPU利用率
byRes1
保留，置为0
dwDecodedV
解码的视频帧
dwDecodedA
解码的音频帧
wImgW
解码器当前的图像的宽
wImgH
解码器当前的图像的高
byVideoFormat
视频制式，具体定义如下：
enum{
  VS_NON  = 0,
  VS_NTSC = 1,
  VS_PAL  = 2
}VIDEO_STANDARD
VS_NON
无
VS_NTSC
NTSC制式
VS_PAL
PAL制式
byRes2
保留，置为0
dwDecChan
解码通道号，获取全部解码通道状态时有效，设置时可填0
byRes3
保留，置为0

See Also

NET_DVR_DECODER_WORK_STATUS_V41 NET_DVR_DECODER_WORK_STATUS

NET_DVR_GetDeviceStatus


NET_DVR_MATRIX_DEC_CHAN_INFO

解码通道信息结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_MATRIX_DECINFO   struDecChanInfo;
  DWORD                    dwDecState;
  NET_DVR_TIME             StartTime;
  NET_DVR_TIME             StopTime;
  char                     sFileName[128];
}NET_DVR_MATRIX_DEC_CHAN_INFO,*LPNET_DVR_MATRIX_DEC_CHAN_INFO;

Members

dwSize
结构体大小
struDecChanInfo
解码通道信息
dwDecState
解码通道状态：0-动态解码 1－循环解码 2－按时间回放 3－按文件回放
StartTime
按时间回放开始时间
StopTime
按时间回放结束时间
sFileName
按文件回放文件名

See Also

NET_DVR_MatrixGetDecChanInfo


NET_DVR_MATRIX_DEC_CHAN_INFO_V30

解码通道信息结构体。

struct{
  DWORD                             dwSize;
  NET_DVR_STREAM_MEDIA_SERVER_CFG   streamMediaServerCfg;
  NET_DVR_DEV_CHAN_INFO             struDevChanInfo;
  DWORD                             dwDecState;
  NET_DVR_TIME                      StartTime;
  NET_DVR_TIME                      StopTime;
  char                              sFileName[128];
  DWORD                             dwGetStreamMode;
  NET_DVR_MATRIX_PASSIVEMODE        struPassiveMode;
  BYTE                              byRes[32];
}NET_DVR_MATRIX_DEC_CHAN_INFO_V30,*LPNET_DVR_MATRIX_DEC_CHAN_INFO_V30;

Members

dwSize
结构体大小
streamMediaServerCfg
流媒体服务器参数
struDevChanInfo
解码设备的通道信息
dwDecState
解码通道状态：0-动态解码 1－循环解码 2－按时间回放 3－按文件回放
StartTime
按时间回放开始时间
StopTime
按时间回放结束时间
sFileName
按文件回放文件名
dwGetStreamMode
取流模式：0-未解码，1-主动，2-被动
struPassiveMode
被动解码信息
byRes
保留

See Also

NET_DVR_MatrixGetDecChanInfo_V30


NET_DVR_MATRIX_DEC_CHAN_INFO_V41

解码通道信息结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byStreamMode;
  BYTE                          byRes1[3];
  NET_DVR_DEC_STREAM_MODE       uDecStreamMode;
  DWORD                         dwPlayMode;
  NET_DVR_TIME                  StartTime;
  NET_DVR_TIME                  StopTime;
  char                          sFileName[128];
  DWORD                         dwGetStreamMode;
  NET_DVR_MATRIX_PASSIVEMODE    struPassiveMode;
  BYTE                          byRes2[32];
}NET_DVR_MATRIX_DEC_CHAN_INFO_V41,*LPNET_DVR_MATRIX_DEC_CHAN_INFO_V41;

Members

dwSize
结构体大小
byStreamMode
取流模式：0- 无效，1- 通过IP或域名取流，2- 通过URL取流，3- 通过动态域名解析向设备取流
byRes1
保留
uDecStreamMode
取流信息
dwPlayMode
解码状态：0-动态解码，1－循环解码，2－按时间回放，3－按文件回放
StartTime
按时间回放开始时间
StopTime
按时间回放结束时间
sFileName
按文件回放文件名
dwGetStreamMode
取流模式：0-未解码，1-主动，2-被动
struPassiveMode
被动解码信息
byRes2
保留

See Also

NET_DVR_MatrixGetDecChanInfo_V41


NET_DVR_MATRIX_DEC_CHAN_STATUS

解码通道状态结构体。

struct{
  DWORD   dwSize;
  DWORD   dwIsLinked;
  DWORD   dwStreamCpRate;
  char    cRes[64];
}NET_DVR_MATRIX_DEC_CHAN_STATUS,*LPNET_DVR_MATRIX_DEC_CHAN_STATUS;

Members

dwSize
结构体大小
dwIsLinked
解码通道状态：0－休眠；1－正在连接；2－已连接；3-正在解码
dwStreamCpRate
码流传输速率，单位kb/s
cRes
保留，置为0

See Also

NET_DVR_MatrixGetDecChanStatus


NET_DVR_MATRIX_DEC_REMOTE_PLAY

远程回放文件的参数结构体。

struct{
  DWORD          dwSize;
  char           sDVRIP[16];
  WORD           wDVRPort;
  BYTE           byChannel;
  BYTE           byReserve;
  BYTE           sUserName[NAME_LEN];
  BYTE           sPassword[PASSWD_LEN];
  DWORD          dwPlayMode;
  NET_DVR_TIME   StartTime;
  NET_DVR_TIME   StopTime;
  char           sFileName[128];
}NET_DVR_MATRIX_DEC_REMOTE_PLAY,*LPNET_DVR_MATRIX_DEC_REMOTE_PLAY;

Members

dwSize
结构体大小
sDVRIP
远程设备IP地址
wDVRPort
远程设备端口
byChannel
通道号
byReserve
保留，置为0
sUserName
用户名
sPassword
密码
dwPlayMode
播放类型：0－按文件；1－按时间
StartTime
文件开始时间
StopTime
文件结束时间
sFileName
保存的文件路径名

See Also

NET_DVR_MatrixSetRemotePlay


NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX

远程文件解码回放参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDecChannel;
  BYTE     byAddressType;
  BYTE     byChannelType;
  BYTE     byres[2];
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  DWORD    dwChannel;
  BYTE     byStreamId[STREAM_ID_LEN];
  DWORD    dwPlayMode;
  union{
           BYTE                        byRes[200];
           NET_DVR_IP_ADDRESS          struIpAddr;
           NET_DVR_DDNS_ADDRESS        struDdnsAddr;
  }unionAddr;
  union{
           BYTE                        byRes[128];
           NET_DVR_PLAY_BACK_BY_TIME   struPlayBackByTime;
           char                        sFileName[128];
  }unionPlayBackInfo;
}NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_EX;

Members

dwSize
结构体大小
dwDecChannel
解码通道号
byAddressType
设备地址类型：0- IP，1- DDNS域名
byChannelType
通道类型：0- 普通通道，1- 零通道，2- 流ID
byres
保留
sUserName
用户名
sPassword
密码
dwChannel
设备通道号
byStreamId
流ID,此参数在通道类型为流ID时有效
dwPlayMode
0－按文件 1－按时间
unionAddr为设备地址联合体
byRes
联合体大小为200字节
struIpAddr
设备IP地址
struDdnsAddr
设备DDNS域名
unionPlayBackInfo为回放参数联合体
byRes
联合体大小为128字节
struPlayBackByTime
按时间回放时文件信息
sFileName
按文件名回放时文件信息

See Also

NET_DVR_RemoteControl


NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS

回放状态信息结构体。

struct{
  DWORD   dwSize;
  DWORD   dwCurMediaFileLen;
  DWORD   dwCurMediaFilePosition;
  DWORD   dwCurMediaFileDuration;
  DWORD   dwCurPlayTime;
  DWORD   dwCurMediaFIleFrames;
  DWORD   dwCurDataType;
  BYTE    res[72];
}NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS,*LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS;

Members

dwSize
结构体大小
dwCurMediaFileLen
当前播放的媒体文件长度
dwCurMediaFilePosition
当前播放文件的播放位置
dwCurMediaFileDuration
当前播放文件的总时间
dwCurPlayTime
当前已经播放的时间
dwCurMediaFIleFrames
当前播放文件的总帧数
dwCurDataType
当前传输的数据类型：19-文件头，20-流数据，21-播放结束标志
res
保留，置为0

See Also

NET_DVR_MatrixGetRemotePlayStatus


NET_DVR_MATRIX_DECCHAN_CONTROL

解码缩放控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDecChanScaleStatus;
  BYTE     byDecodeDelay;
  BYTE     byEnableSpartan;
  BYTE     byLowLight;
  BYTE     byNoiseReduction;
  BYTE     byDefog;
  BYTE     byEnableVcaDec;
  BYTE     byRes1;
  DWORD    dwAllCtrlType;
  BYTE     byRes[56];
}NET_DVR_MATRIX_DECCHAN_CONTROL,*LPNET_DVR_MATRIX_DECCHAN_CONTROL;

Members

dwSize
结构体大小
byDecChanScaleStatus
解码通道显示缩放控制，1-缩放显示，0-真实显示
byDecodeDelay
解码延时：0- 默认，1- 实时性好；2- 实时性较好；3- 实时性中，流畅性中；4- 流畅性较好；5- 流畅性好；0xff- 自动调整
byEnableSpartan
畅显使能：0- 关，1- 开
byLowLight
低照度：0- 关，1~8代表低照度等级，等级越高强度越大
byNoiseReduction
3D降噪：0- 关，1- 开，2- 自动
byDefog
透雾：0- 关，1~7代表透雾等级，等级越高强度越大
byEnableVcaDec
是否启用智能解码：0- 不启用，非0- 启用
byRes1
保留，置为0
dwAllCtrlType
所有子窗口一起操作的类型，设置时有效，按位表示，值：0- 不设置，1- 设置
dwAllCtrlType & 0x01：表示开启关闭智能解码
byRes
保留，置为0

Remarks

  • 设备是否支持智能解码能力，可以通过设备能力集进行判断，对应电视墙能力集(WallAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：WALL_ABILITY，节点：<VcaDecode>。

See Also

NET_DVR_MatrixGetDecChanCfg NET_DVR_MatrixSetDecChanCfg


NET_DVR_MATRIX_DECCHANINFO

动态解码轮巡通道参数结构体。

struct{
  DWORD                    dwEnable;
  NET_DVR_MATRIX_DECINFO   struDecChanInfo;
}NET_DVR_MATRIX_DECCHANINFO,*LPNET_DVR_MATRIX_DECCHANINFO;

Members

dwEnable
是否启用：0－否；1－启用
struDecChanInfo
轮巡解码通道信息

See Also

NET_DVR_MATRIX_LOOP_DECINFO


NET_DVR_MATRIX_DECINFO

解码通道参数结构体。

struct{
  char    sDVRIP[16];
  WORD    wDVRPort;
  BYTE    byChannel;
  BYTE    byTransProtocol;
  BYTE    byTransMode;
  BYTE    byRes[3];
  BYTE    sUserName[NAME_LEN];
  BYTE    sPassword[PASSWD_LEN];
}NET_DVR_MATRIX_DECINFO, *LPNET_DVR_MATRIX_DECINFO;

Members

sDVRIP
设备IP地址
wDVRPort
端口号
byChannel
通道号
byTransProtocol
传输协议类型：0—TCP；1—UDP
byTransMode
传输码流模式：0－主码流；1－子码流
byRes
保留，置为0
sUserName
监控主机登陆帐号
sPassword
监控主机密码

See Also

NET_DVR_MATRIX_DEC_CHAN_INFO NET_DVR_MATRIX_DECCHANINFO
NET_DVR_MATRIX_DYNAMIC_DEC


NET_DVR_MATRIX_DYNAMIC_DEC

动态解码信息结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_MATRIX_DECINFO   struDecChanInfo;
}NET_DVR_MATRIX_DYNAMIC_DEC,*LPNET_DVR_MATRIX_DYNAMIC_DEC;

Members

dwSize
结构体大小
struDecChanInfo
动态解码通道信息

See Also

NET_DVR_MatrixStartDynamic


NET_DVR_MATRIX_LOOP_DECINFO

轮巡解码参数结构体。

struct{
  DWORD                        dwSize;
  DWORD                        dwPoolTime;
  NET_DVR_MATRIX_DECCHANINFO   struchanConInfo[MAX_CYCLE_CHAN];
}NET_DVR_MATRIX_LOOP_DECINFO,*LPNET_DVR_MATRIX_LOOP_DECINFO;

Members

dwSize
结构体大小
dwPoolTime
轮巡时间
struDecChanInfo
轮巡通道信息

See Also

NET_DVR_MatrixGetLoopDecChanInfo NET_DVR_MatrixSetLoopDecChanInfo


NET_DVR_MATRIX_LOOP_DECINFO_V30

轮巡解码参数结构体。

struct{
  DWORD                          dwSize;
  DWORD                          dwPoolTime;
  NET_DVR_MATRIX_CHAN_INFO_V30   struchanConInfo[MAX_CYCLE_CHAN_V30];
  BYTE                           byRes[16];
}NET_DVR_MATRIX_LOOP_DECINFO_V30,*LPNET_DVR_MATRIX_LOOP_DECINFO_V30;

Members

dwSize
结构体大小
dwPoolTime
轮巡时间
struDecChanInfo
轮巡通道信息
byRes
保留，置为0

See Also

NET_DVR_MatrixGetLoopDecChanInfo_V30 NET_DVR_MatrixSetLoopDecChanInfo_V30


NET_DVR_MATRIX_LOOP_DECINFO_V41

轮巡解码参数结构体。

struct{
  DWORD                          dwSize;
  DWORD                          dwPoolTime;
  NET_DVR_MATRIX_CHAN_INFO_V41   struchanConInfo[MAX_CYCLE_CHAN_V30];
  BYTE                           byRes[16];
}NET_DVR_MATRIX_LOOP_DECINFO_V41,*LPNET_DVR_MATRIX_LOOP_DECINFO_V41;

Members

dwSize
结构体大小
dwPoolTime
轮巡时间，单位：s
struchanConInfo
轮巡通道信息
byRes
保留，置为0

See Also

NET_DVR_MatrixGetLoopDecChanInfo_V41 NET_DVR_MatrixSetLoopDecChanInfo_V41


NET_DVR_MATRIX_PASSIVEMODE

被动解码参数结构体。

struct{
  WORD             wTransProtol;
  WORD             wPassivePort;
  NET_DVR_IPADDR   struMcastIP;
  BYTE             byStreamType;
  BYTE             byRes[7];
}NET_DVR_MATRIX_PASSIVEMODE,*LPNET_DVR_MATRIX_PASSIVEMODE;

Members

wTransProtol
传输协议：0-TCP，1-UDP，2-MCAST
wPassivePort
TCP或者UDP端口，TCP时端口默认是8000，不同的解码通道UDP端口号需设置为不同的值
struMcastIP
TCP/UDP时无效，MCAST时为多播地址(暂时不支持多播，保留)
byStreamType
数据类型: 1-实时流, 2-文件流
byRes
保留，置为0

See Also

NET_DVR_MATRIX_DEC_CHAN_INFO_V41 NET_DVR_MATRIX_DEC_CHAN_INFO_V30

NET_DVR_MatrixStartPassiveDecode


NET_DVR_MATRIX_SWITCH_INFO

矩阵切换信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwInputChan;
  DWORD    dwOutputChan;
  DWORD    dwMatrixID;
  BYTE     byRes[28];
}NET_DVR_MATRIX_SWITCH_INFO,*LPNET_DVR_MATRIX_SWITCH_INFO;

Members

dwSize
结构体大小
dwInputChan
输入通道号，为0表示取消和指定输出的关联关系
dwOutputChan
要切换到的输出通道号，0xffffffff表示切换到所有输出。对于LCD拼接屏（屏幕服务器），该参数表示屏幕索引号(组合)：1字节设备号+1字节保留+2字节屏幕索引序号
dwMatrixID
矩阵ID号
byRes
保留，置为0

See Also

矩阵切换器：NET_DVR_RemoteControl

LCD拼接屏：NET_DVR_RemoteControl


NET_DVR_MATRIX_TRAN_CHAN_CONFIG

透明通道参数结构体。

struct{
  DWORD                           dwSize;
  BYTE                            by232IsDualChan;
  BYTE                            by485IsDualChan;
  DWORD                           res[2];
  NET_DVR_MATRIX_TRAN_CHAN_INFO   struTranInfo[MAX_SERIAL_NUM];
}NET_DVR_MATRIX_TRAN_CHAN_CONFIG,*LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG;

Members

dwSize
结构体大小
by232IsDualChan
设置哪路232透明通道是全双工的，取值范围[1,MAX_SERIAL_NUM]
by485IsDualChan
设置哪路485透明通道是全双工的,取值范围[1,MAX_SERIAL_NUM]
res
保留，置为0
struTranInfo
透明通道参数结构体，同时支持建立MAX_SERIAL_NUM个透明通道

See Also

NET_DVR_MatrixGetTranInfo NET_DVR_MatrixSetTranInfo


NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30

透明通道参数结构体。

struct{
  DWORD                               dwSize;
  BYTE                                by232IsDualChan;
  BYTE                                by485IsDualChan;
  BYTE                                vyRes[2];
  NET_DVR_MATRIX_TRAN_CHAN_INFO_V30   struTranInfo[MAX_SERIAL_NUM];
}NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30,*LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30;

Members

dwSize
结构体大小
by232IsDualChan
设置哪路232透明通道是全双工的，取值范围[1,MAX_SERIAL_NUM]
by485IsDualChan
设置哪路485透明通道是全双工的，取值范围[1,MAX_SERIAL_NUM]
vyRes
保留，置为0
struTranInfo
透明通道参数结构体，同时支持建立MAX_SERIAL_NUM个透明通道

See Also

NET_DVR_MatrixGetTranInfo_V30 NET_DVR_MatrixSetTranInfo_V30


NET_DVR_MATRIX_TRAN_CHAN_INFO

透明通道参数子结构体。

struct{
  BYTE         byTranChanEnable;
  BYTE         byLocalSerialDevice;
  BYTE         byRemoteSerialDevice;
  BYTE         res1;
  char         sRemoteDevIP[16];
  WORD         wRemoteDevPort;
  BYTE         res2[2];
  TTY_CONFIG   RemoteSerialDevCfg;
}NET_DVR_MATRIX_TRAN_CHAN_INFO,*LPNET_DVR_MATRIX_TRAN_CHAN_INFO;

Members

byTranChanEnable
当前透明通道是否打开：0－关闭；1－打开。多路解码器本地有1个485串口、1个232串口都可以作为透明通道，设备号分配如下：0－RS485；1－RS232
byLocalSerialDevice
多路解码器本地串口：0－RS485；1－RS232
byRemoteSerialDevice
远程串口输出两个：一个RS232，一个RS485。1表示232串口；2表示485串口
res1
保留，置为0
sRemoteDevIP
远程设备IP地址
wRemoteDevPort
远程设备端口
res2
保留，置为0
RemoteSerialDevCfg
串口配置参数

See Also

NET_DVR_MATRIX_TRAN_CHAN_CONFIG


NET_DVR_MATRIX_TRAN_CHAN_INFO_V30

透明通道参数子结构体。

struct{
  BYTE             byTranChanEnable;
  BYTE             byLocalSerialDevice;
  BYTE             byRemoteSerialDevice;
  BYTE             byRes1;
  NET_DVR_IPADDR   struRemoteDevIP;
  WORD             wRemoteDevPort;
  BYTE             byIsEstablished;
  BYTE             byRes2;
  TTY_CONFIG       RemoteSerialDevCfg;
  BYTE             byUsername[NAME_LEN];
  BYTE             byPassword[PASSWD_LEN];
  BYTE             byRes3[16];
}NET_DVR_MATRIX_TRAN_CHAN_INFO_V30,*LPNET_DVR_MATRIX_TRAN_CHAN_INFO_V30;

Members

byTranChanEnable
当前透明通道是否打开：0－关闭；1－打开。多路解码器本地有1个485串口、1个232串口都可以作为透明通道，设备号分配如下：0－RS485；1－RS232
byLocalSerialDevice
多路解码器本地串口：0－RS485；1－RS232
byRemoteSerialDevice
远程串口输出两个：一个RS232，一个RS485。1表示232串口；2表示485串口
byRes1
保留，置为0
struRemoteDevIP
远程设备IP地址
wRemoteDevPort
远程设备端口
byIsEstablished
透明通道建立成功标志：0-没有成功，1-建立成功
byRes2
保留，置为0
RemoteSerialDevCfg
串口配置参数
byUsername
用户名
byPassword
密码
byRes3
保留，置为0

See Also

NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30


NET_DVR_MATRIX_VOUTCFG

显示通道配置结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byAudio;
  BYTE                     byAudioWindowIdx;
  BYTE                     byRes;
  BYTE                     byVedioFormat;
  DWORD                    dwResolution;
  DWORD                    dwWindowMode;
  BYTE                     byJoinDecChan[MAX_WINDOWS_V41];
  BYTE                     byEnlargeStatus;
  BYTE                     byEnlargeSubWindowIndex;
  BYTE                     byScale;
  BYTE                     byUnionType;
  NET_DVR_VIDEO_PLATFORM   struDiff;
  DWORD                    dwDispChanNum;
  BYTE                     byRes2[76];
}NET_DVR_MATRIX_VOUTCFG, *LPNET_DVR_MATRIX_VOUTCFG;

Members

dwSize
结构体大小
byAudio
音频是否开启：0- 关闭，1- 开启
byAudioWindowIdx
音频开启子窗口
byRes
保留
byVedioFormat
视频制式：1- NTSC，2- PAL，0- NULL
dwResolution
分辨率
dwWindowMode
画面模式，能力集获取
byJoinDecChan
各个子窗口关联的解码通道
byEnlargeStatus
是否处于放大状态：0- 不放大，1- 放大。获取时有效，设置通过接口NET_DVR_MatrixDiaplayControl实现
byEnlargeSubWindowIndex
放大的子窗口号（获取时有效）
byScale
显示模式：0- 真实显示，1- 缩放显示(针对BNC)
byUnionType
区分共用体：0- 视频综合平台内部解码器显示通道配置，1- 其他解码器显示通道配置
struDiff
显示通道配置联合体
dwDispChanNum
显示输出号，此参数在全部获取时有效
byRes2
保留

Remarks

在V41以下的版本中，byDecResolution[MAX_WINDOWS_V41]是byDecResolution，V41版本中改为数组。在低版本向高版本转换时，根据NET_DVR_MATRIX_VOUTCFG中的画面模式dwWindowMode对byDecResolution[MAX_WINDOWS_V41]进行赋值；高版本向低版本转化时用byDecResolution[0]。

对于DS-63xxD-T、DS-64xxHD(-T/-S)、DS-65xxD系列的解码器，显示通道可以关联任意空闲的解码通道（byJoinDecChan）；而对于DS-63xxD系列解码器，则有以下限制：

对于DS6301，有一个VGA，一个BNC，4个解码通道
VGA和BNC可以任意管理1～4解码通道

对于DS6304，有2个VGA，4个BNC，8个解码通道
VGA1可以关联1～8解码通道
BNC1、BNC2可以关联1～4解码通道
VGA2、BNC3、BNC4可以关联5～8解码通道

对于DS6308，有4个VGA，8个BNC，16个解码通道
VGA1可以关联1～16解码通道
BNC1、BNC2可以关联1～4解码通道
VGA2、BNC3、BNC4可以关联5～8解码通道
VGA3、BNC5、BNC6可以关联9～12解码通道
VGA4、BNC7、BNC8可以关联13～16解码通道

See Also

NET_DVR_MatrixGetDisplayCfg_V41 NET_DVR_MatrixSetDisplayCfg_V41

NET_DVR_GetDeviceAbility


NET_DVR_MATRIXPARA

MATRIX输出参数结构体。

struct{
  WORD       wDisplayLogo;
  WORD       wDisplayOsd;
}NET_DVR_MATRIXPARA,*LPNET_DVR_MATRIXPARA;

Members

wDisplayLogo
显示视频通道号
wDisplayOsd
显示时间

See Also

NET_DVR_VIDEOOUT


NET_DVR_MATRIXPARA_V30

MATRIX输出参数结构体。

struct{
  WORD       wOrder[MAX_ANALOG_CHANNUM];
  WORD       wSwitchTime;
  BYTE       res[14];
}NET_DVR_MATRIXPARA_V30,*LPNET_DVR_MATRIXPARA_V30;

Members

wOrder
预览顺序, 0xff表示相应的窗口不预览
wSwitchTime
预览切换时间
res
保留，置为0

See Also

NET_DVR_VIDEOOUT_V30


NET_DVR_MB_AUTOBACKUPPARA

开启自动备份结构体。

struct{
  DWORD                dwSize;
  BYTE                 byEnableAutoBackup;
  BYTE                 byRes1[3];
  BYTE                 byBackupChannel[MAX_CHANNUM_V30];
  BYTE                 byBackupDays[MAX_CHANNUM_V30];
  BYTE                 byBackupFileType[MAX_CHANNUM_V30];
  NET_DVR_SCHEDTIME    struBackupTime[MAX_CHANNUM_V30][2];
  BYTE                 byRes2[36];
}NET_DVR_MB_AUTOBACKUPPARA, *LPNET_DVR_MB_AUTOBACKUPPARA;

Members

dwSize
结构体大小
byEnableAutoBackup
是否开启自动备份，0- 关闭，1- 开启
byRes1
保留
byBackupChannel
需要备份的通道
byBackupDays
备份天数
byBackupFileType
备份文件类型，0- 全部，1- 定时，2- 移动侦测，3- 报警，4- 手动录像
struBackupTime
自动备份时间段
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MB_AUTOWORKPARA

启动控制参数结构体。

struct{
  BYTE                 byCurPowerCtrlType;
  BYTE                 byRes[3];
  NET_DVR_SCHEDTIME    struWorkTime[MAX_DAYS][2];
}NET_DVR_MB_AUTOWORKPARA, *LPNET_DVR_MB_AUTOWORKPARA;

Members

byCurPowerCtrlType
当前启动控制方式，1- 延时关机，2- 自动开关机
byRes
保留
struWorkTime
布防时间

See Also

NET_DVR_MB_POWERCTRLPARA


NET_DVR_MB_DOWNLOADSVRPARA

自动下载服务器配置结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struDownloadSvrIp;
  BYTE              byRes[64];
}NET_DVR_MB_DOWNLOADSVRPARA, *LPNET_DVR_MB_DOWNLOADSVRPARA;

Members

dwSize
结构体大小
struDownloadSvrIp
自动下载服务器IP地址
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MB_EHOMEPARA

EHOME平台参数结构体。

struct{
  NET_DVR_MB_IPADDR    struEHomeAddr;
  BYTE                 byPuid[NAME_LEN];
}NET_DVR_MB_EHOMEPARA, *LPNET_DVR_MB_EHOMEPARA;

Members

struEHomeAddr
EHOME平台地址
byPuid
设备ID

See Also

NET_DVR_MB_PLATFORMPARA


NET_DVR_MB_GPS_STATUS

GPS状态信息结构体。

struct{
  BYTE    byGPSModule;
  BYTE    byPositionStatus;
  BYTE    bySignalStrength;
  BYTE    byres[5];
}NET_DVR_MB_GPS_STATUS, *LPNET_DVR_MB_GPS_STATUS;

Members

byGPSModule
GPS模块：0- 不存在，1- 正常
byPositionStatus
GPS定位状态：0- 定位失败，1- 定位成功
bySignalStrength
信号强度：0- 弱，1- 正常，2- 强
byres
保留，置为0

See Also

NET_DVR_MB_MOBILEDEV_STATUS


NET_DVR_MB_GPSPARA

GPS配置结构体。

struct{
  DWORD                        dwSize;
  BYTE                         byEnableGPS;
  BYTE                         byGpsInterface;
  BYTE                         bySpeedUnit;
  BYTE                         byEnableRetrieve;
  int                          iAdjustTime;
  BYTE                         byEnableAdjustTime;
  BYTE                         byRes1[5];
  WORD                         wGpsUploadInterval;
  BYTE                         byGpsOsdChannel[MAX_CHANNUM_V30];
  DWORD                        dwSpeedLimit;
  NET_DVR_HANDLEEXCEPTION_V30  struGpsAlarm;
  BYTE                         byRes2[36];
}NET_DVR_MB_GPSPARA, *LPNET_DVR_MB_GPSPARA;

Members

dwSize
结构体大小
byEnableGPS
是否启用GPS
byGpsInterface
GPS接收接口，0- RS232, 1- RS485, 2- frontpanel，3- lcd
bySpeedUnit
速度单位，0- 公里/小时，1- 英里/小时。 如果单位为公里/小时，速度范围为（0,965）；如果单位是英里/小时，速度范围为（0,600)。
byEnableRetrieve
盲区补发，1- 启用，0- 不启用
iAdjustTime
时区
iAdjustTime参数值 | 时区 | iAdjustTime参数值 | 时区
-12*3600 | GMT-12:00 | 3*3600+1800 | GMT+03:30
-11*3600 | GMT-11:00 | 4*3600 | GMT+04:00
-10*3600 | GMT-10:00 | 4*3600+1800 | GMT+04:30
-9*3600-1800 | GMT-09:30 | 5*3600 | GMT+05:00
-9*3600 | GMT-09:00 | 5*3600+1800 | GMT+05:30
-8*3600 | GMT-08:00 | 5*3600+2700 | GMT+05:45
-7*3600 | GMT-07:00 | 6*3600 | GMT+06:00
-6*3600 | GMT-06:00 | 6*3600+1800 | GMT+06:30
-5*3600 | GMT-05:00 | 7*3600 | GMT+07:00
-4*3600-1800 | GMT-04:30 | 8*3600 | GMT+08:00
-4*3600 | GMT-04:00 | 9*3600 | GMT+09:00
-3*3600-1800 | GMT-03:30 | 9*3600+1800 | GMT+09:30
-3*3600 | GMT-03:00 | 10*3600 | GMT+10:00
-2*3600 | GMT-02:00 | 10*3600+1800 | GMT+10:30
-1*3600 | GMT-01:00 | 11*3600 | GMT+11:00
1*3600 | GMT+01:00 | 11*3600+1800 | GMT+11:30
2*3600 | GMT+02:00 | 12*3600 | GMT+12:00
3*3600 | GMT+03:00 | 13*3600 | GMT+13:00
byEnableAdjustTime
是否启用GPS校时，1- 启用, 0- 不启动
byRes1
保留
wGpsUploadInterval
GPS上传间隔, 单位：秒
byGpsOsdChannel
OSD显示，每字节代表一路
dwSpeedLimit
限速报警
struGpsAlarm
报警和异常处理结构体
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MB_GSENSOR_STATUS

GSENSOR状态信息结构体。

struct{
  BYTE    byGsensorModule;
  BYTE    byCurAccX[10];
  BYTE    byCurAccY[10];
  BYTE    byCurAccZ[10];
  BYTE    byRefAccX[10];
  BYTE    byRefAccY[10];
  BYTE    byRefAccZ[10];
  BYTE    byres[3];
}NET_DVR_MB_GSENSOR_STATUS, *LPNET_DVR_MB_GSENSOR_STATUS;

Members

byGsensorModule
GPS模块
byCurAccX
当前X轴加速度
byCurAccY
当前Y轴加速度
byCurAccZ
当前Z轴加速度
byRefAccX
X轴加速度标定值
byRefAccY
Y轴加速度标定值
byRefAccZ
Z轴加速度标定值
byres
保留，置为0

See Also

NET_DVR_MB_MOBILEDEV_STATUS


NET_DVR_MB_IPADDR

平台地址参数结构体。

struct{
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byRes[2];
}NET_DVR_MB_IPADDR, *LPNET_DVR_MB_IPADDR;

Members

struWVSAddr
平台IP地址
wPort
端口号
byRes
保留

See Also

NET_DVR_MB_WVSPARA NET_DVR_MB_EHOMEPARA


NET_DVR_MB_MOBILEDEV_STATUS

移动设备状态信息结构体。

struct{
  DWORD    dwSize;
  union{
       NET_DVR_MB_GPS_STATUS         struGPSStatus;
       NET_DVR_MB_GSENSOR_STATUS     struGSensorStatus;
       NET_DVR_MB_WIFI_STATUS        struWiFiStatus;
       NET_DVR_MB_PLATFORM_STATUS    struPlatformStatus;
  }mobileStatus;
}NET_DVR_MB_MOBILEDEV_STATUS,*LPNET_DVR_MB_MOBILEDEV_STATUS;

Members

dwSize
结构体大小
mobileStatus为移动设备状态信息联合体
struGPSStatus
GPS状态信息
struGSensorStatus
GSensor状态信息
struWiFiStatus
WIFI状态信息
struPlatformStatus
平台状态信息

See Also

NET_DVR_GetDeviceStatus


NET_DVR_MB_PLATFORM_STATUS

平台状态信息结构体。

struct{
  BYTE    byCurPlat;
  BYTE    byLoginStatus;
  BYTE    byExceptionInfo;
  BYTE    byres[5];
}NET_DVR_MB_PLATFORM_STATUS, *LPNET_DVR_MB_PLATFORM_STATUS;

Members

byCurPlat
当前平台：0- WVS，1- IVMS，2- 推模式(net_3g_sdk)
byLoginStatus
登录状态：0- 登录失败，1- 登录成功
byExceptionInfo
异常信息，不同的平台对应不同的异常类型：
平台类型 | 异常类型
WVS车载平台 | 0- 连接服务器失败，1- 注册中，2- 用户名密码错误，3- 注册超时，4- 心跳超时，5- 注册成功
IVMS平台 | 0- 未注册，1- 注册中，2- 注册连接出错，3- 注册超时，4- 长时间没有心跳、连接中断，5- 重新注册，6- CMS中注册设备数量已经超过限定的台数，7- CMS中注册通道数量已经超过限定通道数，8- 设备在WEB管理中心中没有配置，9- CMS和WEB管理中心通信失败，10- 登录未知错误，11- 注册成功
推模式 | 0- 未注册，1- 注册中，2- 重复注册，3- 注册连接失败，4- 服务器IP变化，5- 注册成功，6- 用户注销，7- 心跳超时
byres
保留，置为0

See Also

NET_DVR_MB_MOBILEDEV_STATUS


NET_DVR_MB_PLATFORMPARA

平台登录参数结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byNetEnvironment;
  BYTE                    byCurPlatForm;
  BYTE                    byRes1[2];
  NET_DVR_MB_WVSPARA      struWVSPara;
  NET_DVR_MB_EHOMEPARA    struMbEHpara;
  BYTE                    byRes2[64];
}NET_DVR_MB_PLATFORMPARA, *LPNET_DVR_MB_PLATFORMPARA;

Members

dwSize
结构体大小
byNetEnvironment
网络环境：0- wireless，1- 3G，2- wLan，3- lan
byCurPlatForm
当前平台：0- WVS，1- E家，2- 推模式
byRes1
保留
struWVSPara
车载平台(平台登入)参数
struMbEHpara
E家平台参数（不设置设备登入密码）
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MB_POWERCTRLPARA

启动控制配置结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwHaltDelay;
  NET_DVR_MB_AUTOWORKPARA    struAutoWorkPara;
  BYTE                       byRes[36];
}NET_DVR_MB_POWERCTRLPARA, *LPNET_DVR_MB_POWERCTRLPARA;

Members

dwSize
结构体大小
dwHaltDelay
关机延迟时间，单位：分钟（min）
struAutoWorkPara
启动控制相关参数
byRes
保留

Remarks

关机延迟时间, 可选时间为0、5分钟、10分钟、20分钟、25分钟、30分钟、35分钟、40分钟、45分钟、50分钟、60分钟、60*2分钟、60*3分钟、60*4分钟、60*5分钟以及60*6分钟。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MB_SENSORINPARA

传感器配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byTriggerType[SENSOR_IN_NUMBER];
  BYTE     byTriggerChannel[SENSOR_IN_NUMBER];
  BYTE     byOsdDisplay[MAX_CHANNUM_V30];
  BYTE     byRes[32];
}NET_DVR_MB_SENSORINPARA, *LPNET_DVR_MB_SENSORINPARA;

Members

dwSize
结构体大小
byTriggerType
行车状态相关触发的联动，只用后4个，分别代表刹车、左转、右转、倒车，0-高电平，1-低电平
byTriggerChannel
各Sensor In触发时的联动弹出通道，当被触发时，如果当前处在多画面预览时，自动切换到单画面预览，预览通道即为此处设置的通道；如果当前是单画面预览，则自动切换为设置的预览通道
byOsdDisplay
OSD显示，每字节代表一路
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MB_WIFI_STATUS

WIFI状态信息结构体。

struct{
  BYTE    byEnableWiFi;
  BYTE    byWiFiConnectStatus;
  BYTE    bySignalStrength;
  BYTE    byIPaddress[IP_ADDR_LEN];
  BYTE    byEssid[IW_ESSID_MAX_SIZE];
  BYTE    byres[5];
}NET_DVR_MB_WIFI_STATUS, *LPNET_DVR_MB_WIFI_STATUS;

Members

byEnableWiFi
是否启用：0- 关，1- 开
byWiFiConnectStatus
WIFI状态：0- 连接失败，1- 连接成功，2- 无模块
bySignalStrength
信号强度：0- 弱，1- 正常，2- 强
byIPaddress
WIFI设备IP地址
byEssid
无线接入点Essid
byres
保留，置为0

See Also

NET_DVR_MB_MOBILEDEV_STATUS


NET_DVR_MB_WVSPARA

WVS平台参数结构体。

struct{
  NET_DVR_MB_IPADDR    struWVSAddr;
  BYTE                 byPuid[NAME_LEN];
  BYTE                 byPassword[PASSWD_LEN];
  BYTE                 byRes[8];
}NET_DVR_MB_WVSPARA, *LPNET_DVR_MB_WVSPARA;

Members

struWVSAddr
WVS平台地址
byPuid
设备ID
byPassword
登录密码
byRes
保留

See Also

NET_DVR_MB_PLATFORMPARA


NET_DVR_MEASURESPEEDCFG

测速功能参数结构体。

struct{
  DWORD       dwSize;
  BYTE        byTrigIo1;
  BYTE        byTrigIo2;
  BYTE        byRelatedDriveWay;
  BYTE        byTestSpeedTimeOut;
  DWORD       dwDistance;
  BYTE        byCapSpeed;
  BYTE        bySpeedLimit;
  BYTE        bySnapTimes1;
  BYTE        bySnapTimes2;
  WORD        wIntervalTime1[MAX_INTERVAL_NUM];
  WORD        wIntervalTime2[MAX_INTERVAL_NUM];
  BYTE        byRes[32];
}NET_DVR_MEASURESPEEDCFG, *LPNET_DVR_MEASURESPEEDCFG;

Members

dwSize
结构体大小
byTrigIo1
测速第1线圈，从1开始
byTrigIo2
测速第2线圈，从1开始
byRelatedDriveWay
触发IO关联的车道号，取值范围[0,9]
byTestSpeedTimeOut
测速模式超时时间，单位s，取值范围[0,255]
dwDistance
线圈距离，单位cm，取值范围[0,20000]
byCapSpeed
测速模式起拍速度，单位km/h，取值范围[0,255]
bySpeedLimit
限速值，单位km/h，取值范围[0,255]
bySnapTimes1
线圈1抓拍次数，0-不抓拍，非0-连拍次数，最大5次
bySnapTimes2
线圈2抓拍次数，0-不抓拍，非0-连拍次数，最大5次
wIntervalTime1
线圈1连拍间隔时间，单位ms，取值范围[67,20000]
wIntervalTime2
线圈2连拍间隔时间，单位ms，取值范围[67,20000]
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MENU_OUTPUT_MODE

菜单输出模式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byMenuOutputMode;
  BYTE     byRes[63];
 }NET_DVR_MENU_OUTPUT_MODE,*LPNET_DVR_MENU_OUTPUT_MODE;

Members

dwSize
结构体大小
byMenuOutputMode
非同源设备：0- Auto，1- 主CVBS，2- HDMI，3- VGA；同源设备：0- Auto，1- 主CVBS，2- HDMI/VGA
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MIME_UNIT

ISAPI协议透传XML/JSON数据输入结构体

typedef struct tagNET_DVR_MIME_UNIT{
  char     szContentType[32];
  char     szName[MAX_FILE_PATH_LEN];
  char     szFilename[MAX_FILE_PATH_LEN];
  DWORD    dwContentLen;
  char*    pContent;
  BYTE     byRes[16];
}NET_DVR_MIME_UNIT,*LPNET_DVR_MIME_UNIT;

Members

szContentType
对应ISAPI协议中的Content-Type字段，内容格式须符合HTTP协议，如text/json，text/xml等
szName
对应HTTP协议中name字段 例：name="upload"，则赋值"upload"
szFilename
对应HTTP协议中filename字段 例：filename="C:\Users\test\Desktop\11.txt"，则赋值"C:\Users\test\Desktop\11.txt"
dwContentLen
Content的长度
pContent
数据指针，对应ISAPI协议的XML/JSON报文
byRes
保留，置为0

See Also

NET_DVR_XML_CONFIG_INPUT


NET_DVR_MIX_AUDIOIN_CFG

音频输入口混音参数配置结构体。

struct{
  DWORD                          dwSize;
  DWORD                          dwHighPassFilter;
  DWORD                          dwNoiseMargin;
  NET_DVR_AUTO_LIMIT_WAVE_CFG    struLimitWave;
  NET_DVR_DSP_PARAMETER_CFG    struDSPParameter;
  BYTE                           byRes[40];
 }NET_DVR_MIX_AUDIOIN_CFG,*LPNET_DVR_MIX_AUDIOIN_CFG;

Members

dwSize
结构体大小
dwHighPassFilter
高通滤波器，取值范围：[0,127]，具体索引代表含义以能力集为准
dwNoiseMargin
噪声门限，取值范围：[0,127]，具体索引代表含义以能力集为准
struLimitWave
自动限波控制参数，当音频输入源为MIC IN时有效
struDSPParameter
数字信号处理芯片参数
byRes
保留，置为0

Remarks

  • 对于录播主机，音频输入口混音参数能力，对应录播主机能力集(RecordingHostAbility)中节点<MixAudioIn>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • 对于庭审主机，音频输入口混音参数能力，对应庭审主机能力集(TrialHostAbility)中<AudioInChanList>里的子节点<MixAudio>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

录播主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

庭审主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MIX_AUDIOOUT_CFG

音频输出口混音参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byModulatorEnbale;
  BYTE     byPostFilter;
  BYTE     byLimitPressure;
  BYTE     byRes1;
  WORD     wModulatorValue;
  WORD     wTriggerTime;
  WORD     wFreeTime;
  BYTE     byCompressThreshold;
  BYTE     byCompressMode;
  BYTE     byCompressRate;
  BYTE     byRecoveryGain;
  BYTE     byOutputGain;
  BYTE     byOutputMute;
  int      iOutputGainEx;
  BYTE     bySoundQualityHanding;
  BYTE     byRes[55];
 }NET_DVR_MIX_AUDIOOUT_CFG,*LPNET_DVR_MIX_AUDIOOUT_CFG;

Members

dwSize
结构体大小
byModulatorEnbale
是否启用相位调制器：0- 否，1- 是
byPostFilter
Post Filter开关：0- 关闭，1- 开启（默认）
byLimitPressure
输出压限开关：0- 关闭，1- 开启（默认）
byRes1
保留，置为0
wModulatorValue
相位调制量，取值范围：[0,127]，具体索引代表含义以能力集为准
wTriggerTime
压限触发时间，取值范围：[0,127]，具体索引代表含义以能力集为准
wFreeTime
压限释放时间，取值范围：[0,127]，具体索引代表含义以能力集为准
byCompressThreshold
压缩门限：0- 1X，1- 2X，2- 4X，3- 8X，X表示倍，比如2X表示2倍
byCompressMode
压缩方式：0- 软压缩（默认），1- 硬压缩
byCompressRate
压缩率
byRecoveryGain
回复增益：0- 1X，1- 2X，2- 4X，3- 8X，X表示倍，比如2X表示2倍
byOutputGain
输出增益，取值范围：[-100,0]
byOutputMute
输出静音：0- 关闭，1- 开启
iOutputGainEx
输出增益扩展：>0- 放大，<0- 缩小
bySoundQualityHanding
音质处理：0- 关闭，1- 开启
byRes
保留，置为0

Remarks

  • 对于录播主机，音频输出口混音参数能力，对应录播主机能力集(RecordingHostAbility)中节点<MixAudioOut>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • 对于庭审主机，音频输出口混音参数能力，对应庭审主机能力集(TrialHostAbility)中<AudioOutChanList>里的子节点<MixAudio>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

录播主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

庭审主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOBILE_CAPTUREPIC_CFG

车载抓图配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byPreviewFpsAdjMode;
  BYTE     bySelPeccType;
  BYTE     byOptHabit;
  BYTE     byEnablePeccRec;
  BYTE     byPicSize;
  BYTE     byPicQuality;
  BYTE     byRes[62];
}NET_DVR_MOBILE_CAPTUREPIC_CFG,*LPNET_DVR_MOBILE_CAPTUREPIC_CFG;

Members

dwSize
结构体大小
byPreviewFpsAdjMode
预览帧率调节模式：0- 不调节，标准帧率预览；1- 标准低帧率预览；2- 根据GPS速度进行帧率调节
bySelPeccType
是否选择违章类型：0- 否，1- 是
byOptHabit
取证操作习惯：0- 长按取证，1- 短按两次取证
byEnablePeccRec
违章录像抓取使能：0- 禁用，1- 启用
byPicSize
抓图分辨率：0- CIF，1- QCIF，2- D1，3- UXGA(1600x1200)，4- SVGA(800x600)，5- HD720p(1280*720)，6- VGA，7- XVGA，8- HD900p，9- HD1080，10- 2560*1920，11- 1600*304，12- 2048*1536，13- 2448*2048,14- 2448*1200，15- 2448*800，16- XGA(1024*768)，17- SXGA(1280*1024)，18- WD1(960*576/960*480)，19- 1080i
byPicQuality
图片质量系数：0- 最好，1- 较好，2- 一般
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOBILE_LOCALPLATECHK_CFG

车载非授权名单本地对比配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCheck;
  BYTE     byCheckAlarm;
  BYTE     byCheckHint;
  BYTE     byUploadUnlicensedCar;
  BYTE     byRes[64];
}NET_DVR_MOBILE_LOCALPLATECHK_CFG,*LPNET_DVR_MOBILE_LOCALPLATECHK_CFG;

Members

dwSize
结构体大小
byCheck
稽查任务是否进行非授权名单稽查：0- 是，1- 否，请注意此处参数取值0、1和其他参数取值不同
byCheckAlarm
稽查成功是否报警：0- 否，1- 是
byCheckHint
稽查成功是否提示(软件提示)：0- 否，1- 是
byUploadUnlicensedCar
是否上传黑车信息：0- 否，1- 是
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOBILE_PLATE_RECOGCFG

车载车牌识别配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byDefaultCHN[MAX_CHJC_NUM];
  BYTE     byTimeOsd;
  BYTE     byRecogResultOsd;
  BYTE     byRecogHint;
  BYTE     byRecogDir;
  BYTE     byRecogEnv;
  BYTE     byRecogPlateType;
  BYTE     byUploadPlate;
  BYTE     byRes[62];
}NET_DVR_MOBILE_PLATE_RECOGCFG,*LPNET_DVR_MOBILE_PLATE_RECOGCFG;

Members

dwSize
结构体大小
byDefaultCHN
设备运行省份的汉字简写
byTimeOsd
时间信息是否叠加：0- 不叠加，1- 叠加
byRecogResultOsd
识别结果是否叠加：0- 不叠加，1- 叠加
byRecogHint
识别成功是否提示：0- 不提示，1- 提示
byRecogDir
识别方向：0- 正向，1- 背向
byRecogEnv
识别环境：0- 白天，1- 晚上
byRecogPlateType
识别车牌类型：0- 小车牌识别，1- 大车牌识别
byUploadPlate
是否上传车牌：0- 不上传，1- 上传
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOBILE_RADAR_CFG

车载雷达配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableRadar;
  BYTE     byEnableAlarm;
  WORD     wOverSpeed;
  BYTE     bySpeedUnits;
  BYTE     bydirection;
  BYTE     byMeasureMode;
  BYTE     byTargetType;
  BYTE     bySensitivity;
  BYTE     byCaptureNum;
  BYTE     byUploadPlate;
  BYTE     byRes[61];
}NET_DVR_MOBILE_RADAR_CFG,*LPNET_DVR_MOBILE_RADAR_CFG;

Members

dwSize
结构体大小
byEnableRadar
是否开启雷达：0- 否，1- 是
byEnableAlarm
是否开启报警：0- 否，1- 是
wOverSpeed
超速速度值，取值范围：20~250
bySpeedUnits
速度单位：0- 公里/小时，1- 英里/小时
bydirection
雷达方向：0- 反向（雷达与车相向），1- 正向（雷达与车反向）
byMeasureMode
雷达状态：0- 静态，1- 动态
byTargetType
抓拍目标类型：0- 最快(多辆违章车辆中抓拍速度最快的)，1- 最近(多辆违章车辆中抓拍最近的)
bySensitivity
灵敏度，取值范围：[0,100]
byCaptureNum
抓拍张数，取值范围：[0,255]
byUploadPlate
是否上传超速抓拍图片：0- 不上传，1- 上传
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOD_LABEL_PARAM

标签修改结构体。

struct{
  NET_DVR_LABEL_IDENTIFY      struIndentify;
  BYTE                        byRes1[24];
  BYTE                        sLabelName[LABEL_NAME_LEN];
  BYTE                        byRes2[40];
}NET_DVR_MOD_LABEL_PARAM,*LPNET_DVR_MOD_LABEL_PARAM;

Members

struIndentify
要修改的标签标识
byRes1
保留
sLabelName
修改后的标签名称
byRes2
保留

See Also

NET_DVR_ModifyRecordLabel


NET_DVR_MODULE_INFO

模块信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byModuleType;
  BYTE     byKeyBoardType;
  BYTE     byTriggerType;
  BYTE     byRes1;
  WORD     wModuleAddress;
  BYTE     byRes2[2];
  char     sModelInfo[32];
  char     sDeviceVersionInfo[32];
  BYTE     byRes[128];
}NET_DVR_MODULE_INFO,*LPNET_DVR_MODULE_INFO;

Members

dwSize
结构体大小
byModuleType
外接触发器类型：1- 键盘，2- 触发器，3- 防区，4-网络模块
byKeyBoardType
键盘类型：1- LCD，2- LED
byTriggerType
触发类型：1- 本地触发器，2- 4路触发器，3- 8路触发器，4- 单防区触发器，5- 32路触发器，6- 单防区触发器
byRes1
保留，置为0
wModuleAddress
外接触发器地址，扩展模块：0~255，0xFFFF表示无效
byRes2
保留，置为0
sModelInfo
模块信息
sDeviceVersionInfo
版本信息
byRes
保留，置为0

Remarks

  • 设备是否支持查询所有模块信息的能力，可以通过设备能力集进行判断，对应报警主机能力集(AlarmHostAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<ModuleList>。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_MONITOR_INFO

网络监听模式配置结构体。

struct{
  WORD              wPort;
  BYTE              byRes1[2];
  NET_DVR_IPADDR    struRestrictRemoteIP;
  BYTE              byRes[164];
}NET_DVR_MONITOR_INFO,*LPNET_DVR_MONITOR_INFO;

Members

wNetPort
监听端口号
byRes1
保留，置为0
struRestrictRemoteIP
限制远程访问IP
byRes
保留，置为0

See Also

NET_DVR_POS_CONNECTMODE_UNION


NET_DVR_MONITOR_LOCATION_CFG

监测点信息配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byMonitoringSiteID[MAX_ID_LEN];
  BYTE     byDeviceID[MAX_ID_LEN];
  BYTE     byDirectionNo;
  BYTE     byRes1[3];
  BYTE     byMonitorInfo[MONITORSITE_ID_LEN];
  BYTE     byRes[128];
}NET_DVR_MONITOR_LOCATION_CFG,*LPNET_DVR_MONITOR_LOCATION_CFG;

Members

dwSize
结构体大小
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byDirectionNo
监测方向编号：0- 无，1- 上行，2- 下行，3- 双向，4- 由东向西，5- 由南向北，6- 由西向东，7- 由北向南，8- 其他
byRes1
保留，置为0
byMonitorInfo
监测点信息描述
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_MONITOR_LOCATION_COND

监测点信息配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byRelateType;
  BYTE     byRes[63];
}NET_DVR_MONITOR_LOCATION_COND,*LPNET_DVR_MONITOR_LOCATION_COND;

Members

dwSize
结构体大小
dwChan
通道号
byRelateType
0- 关联抓拍MPR模式（多帧触发抓拍IPC使用），1- 关联抓拍HVT模式（混卡IPC使用）
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_MONITOR_VQDCFG

监控点信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byDevType;
  BYTE     bySignalPoint;
  BYTE     byBlurPoint;
  BYTE     byLumaPoint;
  BYTE     byChromaPoint;
  BYTE     bySnowPoint;
  BYTE     byStreakPoint;
  BYTE     byFreezePoint;
  BYTE     byPTZPoint;
  BYTE     byMonitorDel;
  BYTE     byRes[53];
}NET_DVR_MONITOR_VQDCFG,*LPNET_DVR_MONITOR_VQDCFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 否，1- 是
byDevType
设备类型：0-非云台设备，1-带云台设备
bySignalPoint
信号丢失阀值，取值范围：0~100
byBlurPoint
图像模糊阀值，取值范围：0~100
byLumaPoint
亮度异常阀值，取值范围：0~100
byChromaPoint
图像偏色阀值，取值范围：0~100
bySnowPoint
雪花干扰阀值，取值范围：0~100
byStreakPoint
条纹干扰阀值，取值范围：0~100
byFreezePoint
画面冻结阀值，取值范围：0~100
byPTZPoint
云台失控阀值，取值范围：0~100
byMonitorDel
监控点删除 0-不删除， 1-删除
byRes
保留

Remarks

监控点信息管理，首先通过NET_DVR_SET_STREAM_SRC_INFO配置流ID，然后再通过NET_DVR_SET_MONITOR_VQDCFG配置流ID对应的监控参数（NET_DVR_MONITOR_VQDCFG）。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_MOTION

移动侦测参数结构体。

struct{
  BYTE                       byMotionScope[18][22];
  BYTE                       byMotionSensitive;
  BYTE                       byEnableHandleMotion;
  BYTE                       reservedData[2];
  NET_DVR_HANDLEEXCEPTION    strMotionHandleType;
  NET_DVR_SCHEDTIME          struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];
  BYTE                       byRelRecordChan[MAX_CHANNUM];
}NET_DVR_MOTION, *LPNET_DVR_MOTION;

Members

byMotionScope
移动侦测区域，共有22*18个小宏块，取值为1表示该宏块设定为移动侦测区域，0表示不设定为移动侦测区域
byMotionSensitive
移动侦测灵敏度，取值范围[0,5]，若取值为0xff表示关闭，值越大越灵敏
byEnableHandleMotion
是否处理移动侦测：0-不处理，1-处理
reservedData
保留，置为0
strMotionHandleType
处理方式
struAlarmTime
布防时间
byRelRecordChan
报警触发的录象通道，为1表示触发该通道

Remarks

整个图像的区域大小为704*576

See Also

NET_DVR_PICCFG_EX NET_DVR_PICCFG


NET_DVR_MOTION_MODE_PARAM

移动侦测不同模式下区域参数结构体。

struct{
  NET_DVR_MOTION_SINGLE_AREA    struMotionSingleArea;
  NET_DVR_MOTION_MULTI_AREA     struMotionMultiArea;
}NET_DVR_MOTION_MODE_PARAM, *LPNET_DVR_MOTION_MODE_PARAM;

Members

struMotionSingleArea
普通模式移动侦测参数（单区域模式），移动侦测模式（byConfigurationMode）为“0- 普通模式”时有效
struMotionMultiArea
移动侦测多区域参数，移动侦测模式（byConfigurationMode）为“1- 专家模式”或“2- 坐标系区域模式”时有效

See Also

NET_DVR_MOTION_V40


NET_DVR_MOTION_MULTI_AREA

移动侦测多区域配置结构体。

struct{
  BYTE                              byDayNightCtrl;
  BYTE                              byAllMotionSensitive;
  BYTE                              byRes[2];
  NET_DVR_SCHEDULE_DAYTIME          struScheduleTime;
  NET_DVR_MOTION_MULTI_AREAPARAM    struMotionMultiAreaParam[MAX_MULTI_AREA_NUM];
  BYTE                              byRes1[60];
}NET_DVR_MOTION_MULTI_AREA, *LPNET_DVR_MOTION_MULTI_AREA;

Members

byDayNightCtrl
日夜控制：0- 关闭(默认)，1- 自动切换，2- 定时切换
byAllMotionSensitive
移动侦测灵敏度（全部区域的灵敏度范围），取值范围：0~5，越高越灵敏，0xff表示关闭
byRes
保留，置为0
struScheduleTime
定时切换时间，byDayNightCtrl==2时有效，时间段内为白天，时间段外为夜晚
struMotionMultiAreaParam
移动侦测区域参数，最大支持设置24个区域
byRes1
保留，置为0

See Also

NET_DVR_MOTION_MODE_PARAM


NET_DVR_MOTION_MULTI_AREAPARAM

移动侦测区域参数结构体。

struct{
  BYTE              byAreaNo;
  BYTE              byRes[3];
  NET_VCA_RECT      struRect;
  NET_DVR_DNMODE    struDayNightDisable;
  NET_DVR_DNMODE    struDayModeParam;
  NET_DVR_DNMODE    struNightModeParam;
  BYTE              byRes1[8];
}NET_DVR_MOTION_MULTI_AREAPARAM, *LPNET_DVR_MOTION_MULTI_AREAPARAM;

Members

byAreaNo
区域编号，从1开始
byRes
保留，置为0
struRect
单个区域的坐标信息(矩形)
struDayNightDisable
关闭模式，日夜控制(byDayNightCtrl)为关闭的情况下有效
struDayModeParam
白天模式，日夜控制(byDayNightCtrl)为自动切换或者定时切换的情况下有效
struNightModeParam
夜晚模式，日夜控制(byDayNightCtrl)为自动切换或者定时切换的情况下有效
byRes1
保留，置为0

See Also

NET_DVR_MOTION_MULTI_AREA


NET_DVR_MOTION_SINGLE_AREA

移动侦测普通模式区域参数结构体。

struct{
  BYTE    byMotionScope[64][96];
  BYTE    byMotionSensitive;
  BYTE    byRes[3];
}NET_DVR_MOTION_SINGLE_AREA, *LPNET_DVR_MOTION_SINGLE_AREA;

Members

byMotionScope
移动侦测区域，96×64的数组中，P制只有22×18有效，N制只有22×15有效，取值为1表示该宏块设定为移动侦测区域，0表示不设定为移动侦测区域；其他保留，置为0。
byMotionSensitive
移动侦测灵敏度，取值范围[0,5]，若取值为0xff表示关闭，值越大越灵敏
byRes
保留，置为0

Remarks

整个图像的区域大小P制为704×576，N制为704×480，即将704×576（或者704×480）的画面分割成22×18（或者22×15）个小宏块，然后可分别设置每个宏块是否为移动侦测区域。如果P制情况下，设备的图像大小不为704*576，比如高清设备1280*720，设置移动侦测时需要将画面缩小成704*576，然后设置移动侦测区域。

See Also

NET_DVR_MOTION_MODE_PARAM


NET_DVR_MOTION_TRACK_CFG

跟踪参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableTrack;
  BYTE     byRes[63];
}NET_DVR_MOTION_TRACK_CFG, *LPNET_DVR_MOTION_TRACK_CFG;

Members

dwSize
结构体大小
byEnableTrack
启用自动跟踪：0- 否，1- 是
byRes
保留

Remarks

  • 使能自动跟踪时，当预览画面中出现移动目标（人或车等）时，球机能够快速和平稳的跟踪目标。球机在跟踪目标过程中，目标始终保持在画面中心， 并以目标占画面中的一定比例（可设置）进行显示，球机会自动的缩放倍率。此时，也可以调用3D定位接口NET_DVR_PTZSelZoomIn_EX手动选择跟踪目标。
  • 使能自动跟踪且守望模式为关时，如果云台停止时间超过守望时间则自动启动当前场景的全景跟踪。
  • 手动跟踪通过NET_DVR_RemoteControl(命令：NET_DVR_CONTROL_PTZ_MANUALTRACE)实现。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOTION_TRACK_CFG

跟踪参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableTrack;
  BYTE     byRes[63];
}NET_DVR_MOTION_TRACK_CFG, *LPNET_DVR_MOTION_TRACK_CFG;

Members

dwSize
结构体大小
byEnableTrack
启用自动跟踪：0- 否，1- 是
byRes
保留

Remarks

  • 使能自动跟踪时，当预览画面中出现移动目标（人或车等）时，球机能够快速和平稳的跟踪目标。球机在跟踪目标过程中，目标始终保持在画面中心，并以目标占画面中的一定比例（可设置）进行显示，球机会自动的缩放倍率。
  • 使能自动跟踪且守望模式为关时，如果云台停止时间超过守望时间则自动启动当前场景的全景跟踪。
  • 手动跟踪通过NET_DVR_RemoteControl(命令：NET_DVR_CONTROL_PTZ_MANUALTRACE)实现。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MOTION_V30

移动侦测参数结构体。

struct{
  BYTE                           byMotionScope[64][96];
  BYTE                           byMotionSensitive;
  BYTE                           byEnableHandleMotion;
  BYTE                           byEnableDisplay;
  char                           reservedData;
  NET_DVR_HANDLEEXCEPTION_V30    strMotionHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRelRecordChan[MAX_CHANNUM_V30];
}NET_DVR_MOTION_V30, *LPNET_DVR_MOTION_V30;

Members

byMotionScope
移动侦测区域，96×64的数组中，P制只有22×18有效，N制只有22×15有效，取值为1表示该宏块设定为移动侦测区域，0表示不设定为移动侦测区域；其他保留，置为0。
byMotionSensitive
移动侦测灵敏度，取值范围[0,5]，若取值为0xff表示关闭，值越大越灵敏
byEnableHandleMotion
是否处理移动侦测：0-不处理，1-处理
byEnableDisplay
启用移动侦测高亮显示：0- 否，1- 是
reservedData
保留，置为0
strMotionHandleType
处理方式
struAlarmTime
布防时间
byRelRecordChan
报警触发的录象通道，为1表示触发该通道

Remarks

整个图像的区域大小P制为704×576，N制为704×480，即将704×576（或者704×480）的画面分割成22×18（或者22×15）个小宏块，然后可分别设置每个宏块是否为移动侦测区域。如果P制情况下，设备的图像大小不为704*576，比如高清设备1280*720，设置移动侦测时需要将画面缩小成704*576，然后设置移动侦测区域。

See Also

NET_DVR_PICCFG_V30

Reference Structure

扩展结构可见

NET_DVR_MOTION_V40


NET_DVR_MOTION_V40

移动侦测参数结构体。

struct{
  NET_DVR_MOTION_MODE_PARAM    struMotionMode;
  BYTE                         byEnableHandleMotion;
  BYTE                         byEnableDisplay;
  BYTE                         byConfigurationMode;
  BYTE                         byKeyingEnable;
  DWORD                        dwHandleType;
  DWORD                        dwMaxRelAlarmOutChanNum;
  DWORD                        dwRelAlarmOut[MAX_ALARMOUT_V40];
  NET_DVR_SCHEDTIME            struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  DWORD                        dwMaxRecordChanNum;
  DWORD                        dwRelRecordChan[MAX_CHANNUM_V40];
  BYTE                         byRes[128];
}NET_DVR_MOTION_V40, *LPNET_DVR_MOTION_V40;

Members

struMotionMode
移动侦测不同模式下区域设置
byEnableHandleMotion
是否处理移动侦测：0- 否，1- 是
byEnableDisplay
是否启用移动侦测高亮显示：0- 否，1- 是
byConfigurationMode
移动侦测模式：0- 普通模式，1- 专家模式（针对网络摄像机），2- 坐标系区域模式（针对网络硬盘录像机）
byKeyingEnable
启用键控移动侦测（启用之后球机运动中也可以检测移动侦测）：0- 不启用，1- 启用
dwHandleType
处理方式，各种异常处理方式的"或"结果：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200：抓图并上传ftp
0x1000：抓图上传到云存储
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心。
dwMaxRelAlarmOutChanNum
设备最大支持的触发报警输出通道数（只读）
dwRelAlarmOut
触发报警输出号，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效。报警输出口号从0开始。
例如：dwRelAlarmOut[8]开始值为0xffffffff，即联动触发第(dwRelAlarmOut[0]+1),...,(dwRelAlarmOut[7]+1)个报警输出口。
struAlarmTime
布防时间，一周7天，每天可以设置8个时间段
dwMaxRecordChanNum
设备支持的最大关联录像通道数（只读）
dwRelRecordChan
实际触发录像通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效。
byRes
保留，置为0

Remarks

设备支持的移动侦测参数能力，可以从图像参数能力集（VideoPicAbility）中获取，对应节点：<MotionDetection>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_VIDEOPIC_ABILITY。

See Also

NET_DVR_PICCFG_V40

Reference Structure

该结构扩展源于

NET_DVR_MOTION_V30


NET_DVR_MOUNT_DISK_PARAM

磁盘参数结构体。

struct{
  NET_DVR_STRUCTHEAD    struStructHead;
  DWORD                 dwDiskNo;
  BYTE                  byRes[32];
}NET_DVR_MOUNT_DISK_PARAM,*LPNET_DVR_MOUNT_DISK_PARAM;

Members

struStructHead
结构体的头信息
dwDiskNo
磁盘号
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_MOUNT_PARAM_UNION

NAS挂载协议参数联合体。

union{
  BYTE                            uLen[52];
  NET_DVR_IDENTIFICATION_PARAM    struIdentificationParam;
}NET_DVR_MOUNT_PARAM_UNION, *LPNET_DVR_MOUNT_PARAM_UNION;

Members

uLen
联合体大小，52字节
struIdentificationParam
SMB/CIFS协议认证参数，NET_DVR_NAS_MOUNT_PARAM的参数byNetDiskType为“2- SMB/CIFS”时有效

See Also

NET_DVR_NAS_MOUNT_PARAM


NET_DVR_MOUNTMETHOD_PARAM_UNION

网络硬盘挂载方式联合体。

union{
  BYTE                       uLen[56];
  NET_DVR_NAS_MOUNT_PARAM    struNasMountParam;
}NET_DVR_MOUNTMETHOD_PARAM_UNION,*LPNET_DVR_MOUNTMETHOD_PARAM_UNION;

Members

uLen
联合体大小，56个字节
struNasMountParam
NAS挂载方式，NET_DVR_SINGLE_NET_DISK_INFO的参数byNetDiskType为“0-NFS(NAS)”时有效

See Also

NET_DVR_SINGLE_NET_DISK_INFO_V40 NET_DVR_SINGLE_NET_DISK_INFO


NET_DVR_MRD_SEARCH_PARAM

月历录像分布查询条件结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  WORD                   wYear;
  BYTE                   byMonth;
  BYTE                   byDrawFrame;
  BYTE                   byStreamType;
  BYTE                   byLocalOrUTC;
  BYTE                   byRes[30];
}NET_DVR_MRD_SEARCH_PARAM, *LPNET_DVR_MRD_SEARCH_PARAM;

Members

dwSize
结构体大小
struStreamInfo
监控点信息
wYear
年
byMonth
月
byDrawFrame
是否抽帧：0- 不抽帧，1- 抽帧
byStreamType
码流类型：0- 主码流，1- 子码流
byLocalOrUTC
0-设备本地时区 1-UTC
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_MRD_SEARCH_RESULT

月历录像分布查询结果结构体。

struct{
  DWORD    dwSize;
  BYTE     byRecordDistribution[32];
  BYTE     byHasEventRecode[31];
  BYTE     byRes;
}NET_DVR_MRD_SEARCH_RESULT, *LPNET_DVR_MRD_SEARCH_RESULT;

Members

dwSize
结构体大小
byRecordDistribution
录像分布，byRecordDistribution[0]==1表示这个月1号存在录像，byRecordDistribution[0]==0表示1号没有录像， byRecordDistribution[1]==1表示2号存在录像，byRecordDistribution[2]==1表示3号存在录像，以此类推
byHasEventRecode
事件录像，byHasEventRecode[0]~byHasEventRecode[30]分别表示1号~31号，元素值：0- 无事件录像，1- 有事件录像
例如：byHasEventRecode[2]==1表示3号存在事件录像
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_MSC_SCREEN_BACKLIGHT_CFG

屏幕背光参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byBacklight;
  BYTE     byRes[15];
}NET_DVR_MSC_SCREEN_BACKLIGHT_CFG, *LPNET_DVR_MSC_SCREEN_BACKLIGHT_CFG;

Members

dwSize
结构体大小
byBacklight
背光参数，取值范围：0~100
byRes
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_MSC_SCREEN_INTERFACE_CFG

输入源参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byInterfaceType;
  BYTE     byNoSignalPic;
  BYTE     byRes[30];
}NET_DVR_MSC_SCREEN_INTERFACE_CFG, *LPNET_DVR_MSC_SCREEN_INTERFACE_CFG;

Members

dwSize
结构体大小
byInterfaceType
输入源索引，具体定义如下：
enum _INPUT_INTERFACE_TYPE_{
  INTERFACE_VGA  = 0,
  INTERFACE_SVIDEO,
  INTERFACE_YPBPR,
  INTERFACE_DVI,
  INTERFACE_BNC,
  INTERFACE_DVI_LOOP,
  INTERFACE_BNC_LOOP,
  INTERFACE_HDMI,
  INTERFACE_IP,
  INTERFACE_USB,
  INTERFACE_SDI,
  INTERFACE_DP,
  INTERFACE_HDBASET
}INPUT_INTERFACE_TYPE
INTERFACE_VGA
VGA输入
INTERFACE_SVIDEO
S-Video输入
INTERFACE_YPBPR
YPbPr输入
INTERFACE_DVI
DVI输入
INTERFACE_BNC
BNC输入
INTERFACE_DVI_LOOP
DVI（环通）输入
INTERFACE_BNC_LOOP
BNC（环通）输入
INTERFACE_HDMI
HDMI输入
INTERFACE_IP
IP输入
INTERFACE_USB
USB输入
INTERFACE_SDI
SDI输入
INTERFACE_DP
DP输入
INTERFACE_HDBASET
HDBaseT输入
byNoSignalPic
无信号画面模式：1- 蓝屏，2- 黑屏，3- LOGO画面
byRes
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_MSC_SCREEN_PARAM

屏幕参数联合体。

union{
  NET_DVR_MSC_SCREEN_INTERFACE_CFG    struInterfaceCfg;
  NET_DVR_SCREEN_FAN_WORK_MODE_CFG    struFanWorkMode;
  NET_DVR_SCREEN_VGA_CFG              struVgaCfg;
  NET_DVR_SCREEN_MENU_CFG             struMenuCfg;
  NET_DVR_VIDEO_OUT_CFG               struOutEffectCfg;
  NET_DVR_COLOR_TEMPERATURE_CFG       struColorTemperatureCfg;
  NET_DVR_ADC_CFG                     struAdcCfg;
  NET_DVR_SCREEN_EDGE_CFG             struScreenEdgeCfg;
  NET_DVR_MSC_SCREEN_BACKLIGHT_CFG    struBacklight;
  NET_DVR_MSC_SCREEN_PIP_CFG          struPicInPicCfg;
  NET_DVR_DEFOG_LCD                   struDefog;
  NET_DVR_SCREEN_WORK_STATE           struWorkState;
  NET_DVR_BOOT_LOGO_CFG               struBootLogoCfg;
  NET_DVR_LCD_AUDIO_CFG               struAudioCfg;
  BYTE                                byRes[256];
}NET_DVR_MSC_SCREEN_PARAM, *LPNET_DVR_MSC_SCREEN_PARAM;

Members

struInterfaceCfg
输入源参数
struFanWorkMode
风扇工作模式参数
struVgaCfg
VGA信号参数
struMenuCfg
屏幕菜单参数
struOutEffectCfg
显示效果参数
struColorTemperatureCfg
色温参数
struAdcCfg
ADC参数
struScreenEdgeCfg
屏幕边缘参数
struBacklight
背光参数
struPicInPicCfg
画中画参数
struDefog
去雾参数
struWorkStatw
屏幕工作状态
struBootLogoCfg
开始显示logo参数
struAudioCfg
LCD音频参数
byRes
联合体大小，256字节

See Also

NET_DVR_MSC_SCREEN_PARAM_CFG


NET_DVR_MSC_SCREEN_PARAM_CFG

屏幕参数结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byParamType;
  BYTE                        byRes1[3];
  NET_DVR_MSC_SCREEN_PARAM    struParam;
  BYTE                        byRes2[32];
}NET_DVR_MSC_SCREEN_PARAM_CFG, *LPNET_DVR_MSC_SCREEN_PARAM_CFG;

Members

dwSize
结构体大小
byParamType
参数类型：1-输入源参数，2-风扇工作模式参数，3-VGA信号参数，4-屏幕菜单参数，5-显示效果参数，6-色温参数，7-ADC参数，8-屏幕边缘参数，9-背光参数，10-画中画参数，11-透雾参数，12-屏幕工作状态（只能获取），13-开机LOGO是否显示参数，14-音频参数
byRes1
保留，置为0
struParam
屏幕参数
byRes2
保留，置为0

See Also

NET_DVR_MSC_SCREEN_REMOTE_CFG NET_DVR_StartRemoteConfig


NET_DVR_MSC_SCREEN_PARAM_COND

屏幕相关参数配置条件结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byWallNo;
  BYTE                  byParamType;
  BYTE                  byRes1[2];
  NET_DVR_RECTCFG_EX    struRectCfg;
  BYTE                  byRes2[32];
}NET_DVR_MSC_SCREEN_PARAM_COND, *LPNET_DVR_MSC_SCREEN_PARAM_COND;

Members

dwSize
结构体大小
byWallNo
电视墙号
byParamType
参数类型：1-输入源参数，2-风扇工作模式参数，3-VGA信号参数，4-屏幕菜单参数，5-显示效果参数，6-色温参数，7-ADC参数，8-屏幕边缘参数，9-背光参数，10-画中画参数，11-透雾参数，12-屏幕工作状态（只能获取），13-开机LOGO是否显示参数，14-音频参数
byRes1
保留，置为0
struRectCfg
屏幕区域
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_MSC_SCREEN_PIP_CFG

屏幕画中画参数结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byEnable;
  BYTE                  bySubWindowSource;
  BYTE                  bySubWindowBorderColor;
  BYTE                  byRes1;
  NET_DVR_RECTCFG_EX    struPosition;
  BYTE                  byRes2[16];
}NET_DVR_MSC_SCREEN_PIP_CFG, *LPNET_DVR_MSC_SCREEN_PIP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用画中画：0- 不启用，1- 启用
bySubWindowSource
子画面信号源，具体定义如下：
enum _INPUT_INTERFACE_TYPE_{
  INTERFACE_VGA  = 0,
  INTERFACE_SVIDEO,
  INTERFACE_YPBPR,
  INTERFACE_DVI,
  INTERFACE_BNC,
  INTERFACE_DVI_LOOP,
  INTERFACE_BNC_LOOP,
  INTERFACE_HDMI,
  INTERFACE_IP,
  INTERFACE_USB,
  INTERFACE_SDI,
  INTERFACE_DP,
  INTERFACE_HDBASET
}INPUT_INTERFACE_TYPE
INTERFACE_VGA
VGA输入
INTERFACE_SVIDEO
S-Video输入
INTERFACE_YPBPR
YPbPr输入
INTERFACE_DVI
DVI输入
INTERFACE_BNC
BNC输入
INTERFACE_DVI_LOOP
DVI（环通）输入
INTERFACE_BNC_LOOP
BNC（环通）输入
INTERFACE_HDMI
HDMI输入
INTERFACE_IP
IP输入
INTERFACE_USB
USB输入
INTERFACE_SDI
SDI输入
INTERFACE_DP
DP输入
INTERFACE_HDBASET
HDBaseT输入
bySubWindowBorderColor
子画面边框颜色：1- 蓝色，2- 黑色
byRes1
保留，置为0
struPosition
子画面位置，屏幕总大小为1920*1920
byRes2
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_MSC_SCREEN_REMOTE_CFG

屏幕相关参数配置结构体。

struct{
  DWORD                           dwSize;
  BYTE                            byWallNo;
  BYTE                            byRes1[3];
  NET_DVR_RECTCFG_EX              struRectCfg;
  NET_DVR_MSC_SCREEN_PARAM_CFG    struScreenParam;
  BYTE                            byRes2[32];
}NET_DVR_MSC_SCREEN_REMOTE_CFG, *LPNET_DVR_MSC_SCREEN_REMOTE_CFG;

Members

dwSize
结构体大小
byWallNo
电视墙号
byRes1
保留，置为0
struRectCfg
屏幕区域
struScreenParam
配置的屏幕参数
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_MSC_SPLICE_CFG

屏幕拼接配置结构体。

struct{
  DWORD                 dwSize;
  BYTE                  bySpliceNo;
  BYTE                  byWallNo;
  BYTE                  byEnable;
  BYTE                  byRes1;
  NET_DVR_RECTCFG_EX    struRectCfg;
  BYTE                  byRes2[32];
}NET_DVR_MSC_SPLICE_CFG, *LPNET_DVR_MSC_SPLICE_CFG;

Members

dwSize
结构体大小
bySpliceNo
拼接屏号
byWallNo
电视墙号
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
struRectCfg
需要进行拼接的区域，获取的时候此参数填0
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_MUL_STREAM_CHANNEL_GROUP

单组码流配置参数结构体。

struct{
  DWORD                                       dwSize;
  DWORD                                       dwGroup;
  NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND    struStreamPara;
  BYTE                                        byRes[64];
}NET_DVR_MUL_STREAM_CHANNEL_GROUP,*LPNET_DVR_MUL_STREAM_CHANNEL_GROUP;

Members

dwSize
结构体大小
dwGroup
组号，从0开始，0表示第1组，1表示第2组，依次类推
struStreamPara
多码流配置参数
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_MULTI_ALARMIN_COND

防区参数列表查询条件结构体。

struct{
  DWORD    dwSize;
  int      iZoneNo[MAX_MAX_ALARMIN_NUM];
  BYTE     byRes[256];
}NET_DVR_MULTI_ALARMIN_COND,*LPNET_DVR_MULTI_ALARMIN_COND;

Members

dwSize
结构体大小
iZoneNo
防区号，从0开始，小于0表示无效
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_MULTI_CARD_CFG

多重卡参数配置结构体。

struct{
  DWORD                           dwSize;
  BYTE                            byEnable;
  BYTE                            bySwipeIntervalTimeout;
  BYTE                            byRes1[2];
  NET_DVR_MULTI_CARD_GROUP_CFG    struGroupCfg[MULTI_CARD_GROUP_NUM];
  BYTE                            byRes2[32];
}NET_DVR_MULTI_CARD_CFG,*LPNET_DVR_MULTI_CARD_CFG;

Members

dwSize
结构体大小
byEnable
是否启用多重卡功能：0- 不启用，1- 启用
bySwipeIntervalTimeout
刷卡间隔超时时间，取值范围：1~255，单位：s（秒），默认：10
byRes1
保留，置为0
struGroupCfg
群组刷卡参数
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MULTI_CARD_CFG_V50

多重卡参数配置结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byEnable;
  BYTE                              bySwipeIntervalTimeout;
  BYTE                              byRes1[2];
  NET_DVR_MULTI_CARD_GROUP_CFG_V50  struGroupCfg[NET_SDK_MULTI_CARD_GROUP_NUM_20];
  BYTE                              byRes2[32];
}NET_DVR_MULTI_CARD_CFG_V50,*LPNET_DVR_MULTI_CARD_CFG_V50;

Members

dwSize
结构体大小
byEnable
是否启用多重卡功能：0- 不启用，1- 启用
bySwipeIntervalTimeout
刷卡间隔超时时间，取值范围：1~255，单位：s（秒），默认：10
byRes1
保留，置为0
struGroupCfg
群组刷卡参数
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MULTI_CARD_GROUP_CFG

群组刷卡参数结构体。

struct{
  BYTE                              byEnable;
  BYTE                              byEnableOfflineVerifyMode;
  BYTE                              byRes1[2];
  DWORD                             dwTemplateNo;
  NET_DVR_GROUP_COMBINATION_INFO    struGroupCombination[GROUP_COMBINATION_NUM];
}NET_DVR_MULTI_CARD_GROUP_CFG,*LPNET_DVR_MULTI_CARD_GROUP_CFG;

Members

byEnable
是否启用该多重卡组参数：0- 不启用，1- 启用
bySwipeIntervalTimeout
是否启用主机离线时验证方式（超级密码代替远程开门）：0- 不启用，1- 启用
byRes1
保留，置为0
dwTemplateNo
启用多重卡功能的计划模板编号，复用卡权限计划模板
struGroupCombination
群组组合参数

See Also

NET_DVR_MULTI_CARD_CFG


NET_DVR_MULTI_CARD_GROUP_CFG_V50

群组刷卡参数结构体。

struct{
  BYTE                              byEnable;
  BYTE                              byEnableOfflineVerifyMode;
  BYTE                              byRes1[2];
  DWORD                             dwTemplateNo;
  NET_DVR_GROUP_COMBINATION_INFO_V50    struGroupCombination[GROUP_COMBINATION_NUM];
}NET_DVR_MULTI_CARD_GROUP_CFG_V50,*LPNET_DVR_MULTI_CARD_GROUP_CFG_V50;

Members

byEnable
是否启用该多重卡组参数：0- 不启用，1- 启用
bySwipeIntervalTimeout
是否启用主机离线时验证方式（超级密码代替远程开门）：0- 不启用，1- 启用
byRes1
保留，置为0
dwTemplateNo
启用多重卡功能的计划模板编号，复用卡权限计划模板
struGroupCombination
群组组合参数

See Also

NET_DVR_MULTI_CARD_CFG_V50


NET_DVR_MULTI_DOOR_INTERLOCK_CFG

多门互锁参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwMultiDoorGroup[MAX_MULTI_DOOR_INTERLOCK_GROUP][MAX_INTER_LOCK_DOOR_NUM];
  BYTE     byRes2[64];
}NET_DVR_MULTI_DOOR_INTERLOCK_CFG,*LPNET_DVR_MULTI_DOOR_INTERLOCK_CFG;

Members

dwSize
结构体大小
byEnable
是否启用多门互锁功能：0- 不启用，1- 启用
byRes1
保留，置为0
dwMultiDoorGroup
多门互锁组参数，取值为门编号，即dwMultiDoorGroup[i][j]=k表示第(i+1)多门互锁组中第(j+1)个互锁门关联的门编号是k
byRes2
保留，置为0

Remarks

互锁和反潜回功能不能同时生效。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_MULTI_STREAM_COMPRESSIONCFG

多码流压缩参数结构体。

struct{
  DWORD                           dwSize;
  DWORD                           dwStreamType;
  NET_DVR_COMPRESSION_INFO_V30    struStreamPara;
  DWORD                           dwResolution;
  BYTE                            byRes[76];
}NET_DVR_MULTI_STREAM_COMPRESSIONCFG,*LPNET_DVR_MULTI_STREAM_COMPRESSIONCFG;

Members

dwSize
结构体大小
dwStreamType
码流类型：0-主码流，1-子码流，2-事件码流，3-三码流，4-虚拟码流，……
struStreamPara
码流压缩参数
dwResolution
当分辨率索引小于255时和struStreamPara里面参数byResolution保持一致，大于255时以该字段返回索引值判断。分辨率索引值：
256-3888*1696，257-2784*1200，258-496*224，259-352*160，260-912*400，
261-640*288，262-1456*640，263-1024*448，264-2896*1280，265-2544*1080，
266-2736*768，267-1920*544，268-3840*1696，269-2880*848，270-5424*2400，
271-5520*1600，272-848*376，273-912*272，274-1360*600，275-1456*432，
276-2736*1200，277-5760*1696，278-8160*2400，279-5520*2400，280-4608*2592，
281-4944*3280，282-6016*4008，283-720*480，284-3200*2400，285-2784*800，
286-1968*848，287-1392*608，288-2736*1184，89-1920*848，290-2560*2880，
291-1944*1212，292-1920*2400，293-384*384，94-768*768，295-4800*2688，
296-6480*1080，297-8640*1440，298-4800*800，299-6720*1200，300-3600*600，
301-4800*840，302-2400*400，303-3072*540，304-1440*810，305-1920*320，
306-2688*480，307-1440*240，308-4800*1792，309-3360*1264，310-2304*880，
311-3840*1440，312-2688*1008，313-1824*704，314-1248*496，315-1920*720，
316-1344*496，317-912*336，318-1280*480，319-864*336，320-576*224，
321-2704*1008，322-1904*704，323-1808*672，324-1264*464，325-944*336，
326-2400*1344，327-2032*1440，328-4064*1792，329-304*112，330-960*360，
331-672*240，332-464*160，333-896*336，334-624*224，335-640*240，
336-448*160，337-4976*1452，338-1968*560，339-2736*784，340-3888*1136，
341-6120*1800，342-4320*1280，343-3056*896，344-1776*528，345-1392*400，
346-7256*1520，347-512*288，348-1936*1210，349-640*400，350-2688*1792，
351-2464*2056，352-2720*1600，353-4800*1600，354-3600*1200，355-未定义，
356-2400*800，357-1200*400，358-4096*3008，359-7680*4096，360-1080*1520，
361-6656*3744，362-5120*1400，363-2560*704，364-2688*3040，365-1280*352，
366-3376*1008，367-1688*504，368-5120*1440，369-1920*2160，370-4080*1808，
371-4080*1152，372-2688*3888，373-3840*2880，374-2464*3520，375-4416*1696，
376-1408*540，377-3456*1080，378-1728*540，379-704*1152，380-1408*1152，
381-5120*2880，382-720*576，383-3984*1168，384-1920*1440，385-3840*4096，
386-1920*536，387-1536*432，388-3072*864，389-1440*1080，390-720*540
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND

多码流压缩参数配置条件结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  DWORD                  dwStreamType;
  BYTE                   byRes[32];
}NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND,*LPNET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND;

Members

dwSize
结构体大小
struStreamInfo
流信息，流ID或者通道号
dwStreamType
码流类型：0-主码流，1-子码流，2-事件码流，3-三码流，4-虚拟码流，……
byRes
保留

Remarks

  • 设备码流类型详细介绍可以参考“帮助”->“常见问题解答”中的Question 33。

    • See Also

    NET_DVR_MUL_STREAM_CHANNEL_GROUP NET_DVR_ROI_DETECT_COND

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_MULTISTREAM_RELATION_CHAN_CFG

多码流关联通道参数配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[64];
 }NET_DVR_MULTISTREAM_RELATION_CHAN_CFG,*LPNET_DVR_MULTISTREAM_RELATION_CHAN_CFG;

Members

dwSize
结构体大小
dwChannel
关联的通道号
byRes
保留，置为0

See Also

  • 庭审主机V3.0.1支持3路多码流通道，V3.4.0支持4路多码流通道，多码流编号从1开始，可以配置关联编码通道1~12。
  • 多码流取流需要通过标准RTSP协议，取流URL地址格式为：
    rtsp://[ip]:[port]/multi[1/2/3]/av_stream
    例如：rtsp://10.2.3.4:554/multi1/av_stream，表示访问主机10.2.3.4的第1条多码流。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_N_PLUS_ONE_DEVICE_INFO

N+1模式设备信息结构体。

struct{
  DWORD                         dwSize;
  NET_DVR_NPO_DEV_INFO_UNION    unionDevInfo;
  BYTE                          byType;
  BYTE                          byRes[127];
}NET_DVR_N_PLUS_ONE_DEVICE_INFO,*LPNET_DVR_N_PLUS_ONE_DEVICE_INFO;

Members

dwSize
结构体大小
unionDevInfo
N+1模式设备信息联合体
byType
设备类型：0- 工作机（unionDevInfo中的struWorkingDeviceInfo），1- 备机（对应unionDevInfo中的struRedundantDeviceInfo）
byRes
保留

Remarks

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_N_PLUS_ONE_DEVICE_PARAM

N+1模式设备参数结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_NPO_PARAM_UNION    unionParam;
  BYTE                       byType;
  BYTE                       byRes2[255];
}NET_DVR_N_PLUS_ONE_DEVICE_PARAM,*LPNET_DVR_N_PLUS_ONE_DEVICE_PARAM;

Members

dwSize
结构体大小
unionParam
N+1模式设备参数联合体
byType
操作类型：0- 添加（对应unionParam中的struAddParam），1- 删除（对应unionParam中的struDelParam）
byRes2
保留

Remarks

N+1工作模式配置步骤：
1）先在工作机上添加备机，CVR只需填备机IP，而NVR还需填上备机密码等注册信息
2）在备机上添加工作机

See Also

NET_DVR_RemoteControl


NET_DVR_N_PLUS_ONE_WORK_MODE_CFG

N+1工作模式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode;
  BYTE     byRes[127];
}NET_DVR_N_PLUS_ONE_WORK_MODE_CFG,*LPNET_DVR_N_PLUS_ONE_WORK_MODE_CFG;

Members

dwSize
结构体大小
byWorkMode
设备工作模式：0- 工作机，1- 备机
byRes
保留

Remarks

配置之后需要手动重启后生效。CVR不支持此操作，CVR通过添加工作机或备机来确定工作模式（接口：NET_DVR_RemoteControl，命令：NET_DVR_ADD_DEVICE）。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NAS_MOUNT_PARAM

NAS挂载方式参数结构体。

struct{
  BYTE                         byMountType;
  BYTE                         byRes[3];
  NET_DVR_MOUNT_PARAM_UNION    uMountParam;
}NET_DVR_NAS_MOUNT_PARAM, *LPNET_DVR_NAS_MOUNT_PARAM;

Members

byNetDiskType
NAS挂载的协议类型：0- 保留，1- NFS，2- SMB/CIFS
byRes
保留，置为0
uMountParam
NAS挂载协议参数联合体

See Also

NET_DVR_MOUNTMETHOD_PARAM_UNION


NET_DVR_NAS_PARAM

NAS盘参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwLunID;
  BYTE     byRes[32];
}NET_DVR_NAS_PARAM,*LPNET_DVR_NAS_PARAM;

Members

dwSize
结构体大小
dwLunID
对应LUN卷ID
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_NAT_CFG

UPNP配置结构体。

struct{
  DWORD               dwSize;
  WORD                wEnableUpnp;
  WORD                wEnableNat;
  NET_DVR_IPADDR      struIpAddr;
  NET_DVR_NAT_PORT    struHttpPort;
  NET_DVR_NAT_PORT    struCmdPort;
  NET_DVR_NAT_PORT    struRtspPort;
  BYTE                byFriendName[64];
  BYTE                byNatType;
  BYTE                byRes1[3];
  NET_DVR_NAT_PORT    struHttpsPort;
  NET_DVR_NAT_PORT    struSDKOverTLSPort;
  BYTE                byRes[60];
}NET_DVR_NAT_CFG, *LPNET_DVR_NAT_CFG;

Members

dwSize
结构体大小
wEnableUpnp
UPNP功能是否启用
wEnableNat
UPNP端口映射（NAT）功能是否启用
struIpAddr
NAT路由器LAN IP地址
struHttpPort
Web server http端口映射配置
struCmdPort
SDK命令端口映射配置（默认：8000）
struRtspPort
rtsp端口映射配置
byFriendName
服务名
byNatType
UPNP端口映射类型：0- 手动，1- 自动
byRes1
保留
struHttpsPort
HTTP端口映射配置
struSDKOverTLSPort
SDKOverTLS端口映射配置
byRes
保留

Remarks

UPNP端口映射类型如果设置为自动模式，UPNP映射自动设置外部端口和内部端口一致，不能修改；UPNP端口映射类型如果设置为手动模式，可以手动设置外部端口，可与内部端口不一致。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NAT_PORT

端口映射配置结构体。

struct{
  WORD    wEnable;
  WORD    wExtPort;
  BYTE    byRes[12];
}NET_DVR_NAT_PORT, *LPNET_DVR_NAT_PORT;

Members

wEnable
该端口是否使能映射
wExtPort
映射的外部端口号
byRes
保留

See Also

NET_DVR_NAT_CFG


NET_DVR_NET_DISK_SERACH_PARAM

NAS目录查找参数结构体。

struct{
  NET_DVR_IPADDR    struIP;
  WORD              wPort;
  BYTE              byRes[10];
}NET_DVR_NET_DISK_SERACH_PARAM,*LPNET_DVR_NET_DISK_SERACH_PARAM;

Members

struIP
IP地址
wPort
端口号
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_NET_DISK_SERACH_RET

NAS目录查找结果结构体。

struct{
  BYTE    byDirectory[128];
  BYTE    byRes[20];
}NET_DVR_NET_DISK_SERACH_RET,*LPNET_DVR_NET_DISK_SERACH_RET;

Members

byDirectory
返回的文件目录
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_NET_DISKCFG

网络硬盘参数结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_SINGLE_NET_DISK_INFO   struNetDiskParam[MAX_NET_DISK];
}NET_DVR_NET_DISKCFG,*LPNET_DVR_NET_DISKCFG;

Members

dwSize
结构体大小
struNetDiskParam
单个网络硬盘参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NET_DISKCFG_V40

网络硬盘参数结构体。

struct{
  DWORD                              dwSize;
  NET_DVR_SINGLE_NET_DISK_INFO_V40   struNetDiskParam[MAX_NET_DISK];
}NET_DVR_NET_DISKCFG_V40,*LPNET_DVR_NET_DISKCFG_V40;

Members

dwSize
结构体大小
struNetDiskParam
单个网络硬盘参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NET_RECEIVE

网络接收模式配置结构体。

struct{
  WORD    wNetPort;
  BYTE    byRes[2];
}NET_DVR_NET_RECEIVE,*LPNET_DVR_NET_RECEIVE;

Members

wNetPort
网络端口
byRes
保留，置为0

See Also

NET_DVR_POS_CONNECTMODE_UNION


NET_DVR_NET_SNIFF

网络侦听模式配置结构体。

struct{
  BYTE    byEnableSourcePort;
  BYTE    byEnableDestAddr;
  BYTE    byEnableDestPort;
  BYTE    byRes1;
  BYTE    bySourceIpAddr[MAX_DOMAIN_NAME];
  BYTE    byDestinationIpAddr[MAX_DOMAIN_NAME];
  WORD    wSourcePort;
  WORD    wDestinationPort;
  BYTE    byRes[16];
}NET_DVR_NET_SNIFF,*LPNET_DVR_NET_SNIFF;

Members

byEnableSourcePort
是否启用对数据源端口过滤：0- 不启用，1- 启用
byEnableDestAddr
是否启用对目标IP地址进行过滤：0- 不启用，1- 启用
byEnableDestPort
是否启用对目标地址的端口号进行过滤：0- 不启用，1- 启用
byRes1
保留，置为0
bySourceIpAddr
数据源地址
byDestinationIpAddr
数据发送目标地址
wSourcePort
数据源端口号
wDestinationPort
数据发送目标端口号
byRes
保留，置为0

See Also

NET_DVR_POS_CONNECTMODE_UNION


NET_DVR_NETAPPCFG

网络应用参数（NTP/DDNS）结构体。

struct{
  DWORD               dwSize;
  char                sDNSIp[16];
  NET_DVR_NTPPARA     struNtpClientParam;
  NET_DVR_DDNSPARA    struDDNSClientParam;
  BYTE                res[464];
}NET_DVR_NETAPPCFG,*LPNET_DVR_NETAPPCFG;

Members

dwSize
结构体大小
sDNSIp
DNS服务器地址
struNtpClientParam
NTP参数
struDDNSClientParam
DDNS参数
res
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NETCFG

网络配置结构体。

struct{
  DWORD                dwSize;
  NET_DVR_ETHERNET     struEtherNet[MAX_ETHERNET];
  char                 sManageHostIP[16];
  WORD                 wManageHostPort;
  char                 sIPServerIP[16];
  char                 sMultiCastIP[16];
  char                 sGatewayIP[16];
  char                 sNFSIP[16];
  BYTE                 sNFSDirectory[PATHNAME_LEN];
  DWORD                dwPPPOE;
  BYTE                 sPPPoEUser[NAME_LEN];
  char                 sPPPoEPassword[PASSWD_LEN];
  char                 sPPPoEIP[16];
  WORD                 wHttpPort;
}NET_DVR_NETCFG,*LPNET_DVR_NETCFG;

Members

dwSize
结构体大小
struEtherNet
以太网口
sManageHostIP
远程管理主机地址
wManageHostPort
远程管理主机端口号
sIPServerIP
IPServer服务器地址
sMultiCastIP
多播组地址
sGatewayIP
网关地址
sNFSIP
NFS主机IP地址
sNFSDirectory
NFS目录
dwPPPOE
0-不启用,1-启用
sPPPoEUser
PPPoE用户名
sPPPoEPassword
PPPoE密码
sPPPoEIP
PPPoE IP地址(只读)
wHttpPort
HTTP端口号

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_NETCFG_V30


NET_DVR_NETCFG_MULTI

多网卡网络配置结构。

struct{
  DWORD                    dwSize;
  BYTE                     byDefaultRoute;
  BYTE                     byNetworkCardNum;
  BYTE                     byWorkMode;
  BYTE                     byRes;
  NET_DVR_ETHERNET_MULTI   struEtherNet[MAX_NETWORK_CARD];
  NET_DVR_IPADDR           struManageHost1IpAddr;
  NET_DVR_IPADDR           struManageHost2IpAddr;
  NET_DVR_IPADDR           struAlarmHostIpAddr;
  WORD                     wManageHost1Port;
  WORD                     wManageHost2Port;
  WORD                     wAlarmHostIpPort;
  BYTE                     byIpResolver[MAX_DOMAIN_NAME];
  WORD                     wIpResolverPort;
  WORD                     wDvrPort;
  WORD                     wHttpPortNo;
  WORD                     wDvrPort2;
  BYTE                     byRes2[4];
  NET_DVR_IPADDR           struMulticastIpAddr;
  NET_DVR_PPPOECFG         struPPPoE;
  BYTE                     byRes3[24];
}NET_DVR_NETCFG_MULTI,*LPNET_DVR_NETCFG_MULTI;

Members

dwSize
结构体大小
byDefaultRoute
默认路由，0表示struEtherNet[0]，1表示struEtherNet[1]
byNetworkCardNum
设备实际可配置的网卡数目
byWorkMode
0-普通多网卡模式，1-内外网隔离模式
byRes
保留，置为0
struEtherNet
以太网口
struManageHost1IpAddr
主管理主机IP地址
struManageHost2IpAddr
辅管理主机IP地址
struAlarmHostIpAddr
报警主机IP地址
wManageHost1Port
主管理主机端口号
wManageHost2Port
辅管理主机端口号
wAlarmHostIpPort
报警主机端口号
byIpResolver
IP解析服务器域名或IP地址
wIpResolverPort
IP解析服务器端口号
wDvrPort
通讯端口，默认8000
wHttpPortNo
HTTP端口号
wDvrPort2
通讯端口2
byRes2
保留，置为0
struMulticastIpAddr
多播组地址
struPPPoE
PPPoE参数
byRes3
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NETCFG_OTHER

多路解码器网络配置结构体。

struct{
  DWORD    dwSize;
  char     sFirstDNSIP[16];
  char     sSecondDNSIP[16];
  char     sRes[32];
}NET_DVR_NETCFG_OTHER,*LPNET_DVR_NETCFG_OTHER;

Members

dwSize
结构体大小
sFirstDNSIP
主DNS IP地址
sSecondDNSIP
辅助DNS IP地址
sRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NETCFG_V30

网络配置结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_ETHERNET_V30     struEtherNet[MAX_ETHERNET];
  NET_DVR_IPADDR           struRes1[2];
  NET_DVR_IPADDR           struAlarmHostIpAddr;
  BYTE                     byRes2[4];
  WORD                     wAlarmHostIpPort;
  BYTE                     byUseDhcp;
  BYTE                     byIPv6Mode;
  NET_DVR_IPADDR           struDnsServer1IpAddr;
  NET_DVR_IPADDR           struDnsServer2IpAddr;
  BYTE                     byIpResolver[MAX_DOMAIN_NAME];
  WORD                     wIpResolverPort;
  WORD                     wHttpPortNo;
  NET_DVR_IPADDR           struMulticastIpAddr;
  NET_DVR_IPADDR           struGatewayIpAddr;
  NET_DVR_PPPOECFG         struPPPoE;
  BYTE                     byEnablePrivateMulticastDiscovery;
  BYTE                     byEnableOnvifMulticastDiscovery;
  BYTE                     byEnableDNS;
  BYTE                     byRes[61];
}NET_DVR_NETCFG_V30,*LPNET_DVR_NETCFG_V30;

Members

dwSize
结构体大小
struEtherNet
以太网口
struRes1
保留，置为0
struAlarmHostIpAddr
报警主机IP地址
byRes2
保留，置为0
wAlarmHostIpPort
报警主机端口号
byUseDhcp
是否启用DHCP：0xff-无效；0-不启用；1-启用
byIPv6Mode
IPv6分配方式：0-路由公告，1-手动设置，2-启用DHCP分配
struDnsServer1IpAddr
域名服务器1的IP地址
struDnsServer2IpAddr
域名服务器2的IP地址
byIpResolver
IP解析服务器域名或IP地址（8000设备不支持域名）
wIpResolverPort
IP解析服务器端口号
wHttpPortNo
HTTP端口号
struMulticastIpAddr
多播组地址
struGatewayIpAddr
网关地址
struPPPoE
PPPoE参数
byEnablePrivateMulticastDiscovery
私有多播搜索(SADP)：0- 默认，1- 启用，2- 禁用
byEnableOnvifMulticastDiscovery
Onvif多播搜索(SADP)：0- 默认，1- 启用，2- 禁用
byEnableDNS
DNS自动使能：0-保留，1-打开，2-关闭
byRes
保留，置为0

Remarks

  • 8000等3.0协议以下的设备，参数byUseDhcp为0xff-无效，将其IP地址填成空，设备会自动去获取DHCP。
  • 当byIPv6Mode选择“0-路由公告”或“2-启用DHCP分配”时，无需设置struEtherNet中的IPv6地址，设备自动获取；当byIPv6Mode选择“1-手动设置”时，需要设置struEtherNet中的IPv6地址。由于多IPv6地址（路由公告地址多个，可以正常使用），当前登录的设备IPv6地址可能和此结构中的struEtherNet中的IPv6地址不一致。
  • 对应的能力见设备网络应用参数能力（DEVICE_NETAPP_ABILITY）中<netcfg>节点

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_NETCFG

扩展结构体可见

NET_DVR_NETCFG_V50


NET_DVR_NETCFG_V50

网络配置结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_ETHERNET_V30     struEtherNet[MAX_ETHERNET];
  NET_DVR_IPADDR           struRes1[2];
  NET_DVR_IPADDR           struAlarmHostIpAddr;
  BYTE                     byRes2[4];
  WORD                     wAlarmHostIpPort;
  BYTE                     byUseDhcp;
  BYTE                     byIPv6Mode;
  NET_DVR_IPADDR           struDnsServer1IpAddr;
  NET_DVR_IPADDR           struDnsServer2IpAddr;
  BYTE                     byIpResolver[MAX_DOMAIN_NAME];
  WORD                     wIpResolverPort;
  WORD                     wHttpPortNo;
  NET_DVR_IPADDR           struMulticastIpAddr;
  NET_DVR_IPADDR           struGatewayIpAddr;
  NET_DVR_PPPOECFG         struPPPoE;
  BYTE                     byEnablePrivateMulticastDiscovery;
  BYTE                     byEnableOnvifMulticastDiscovery;
  WORD                     wAlarmHost2IpPort;
  NET_DVR_IPADDR           struAlarmHost2IpAddr;
  BYTE                     byEnableDNS;
  BYTE                     byAlarmOverTLS;
  BYTE                     byRes[598];
}NET_DVR_NETCFG_V50,*LPNET_DVR_NETCFG_V50;

Members

dwSize
结构体大小
struEtherNet
以太网口
struRes1
保留，置为0
struAlarmHostIpAddr
报警主机IP地址
byRes2
保留，置为0
wAlarmHostIpPort
报警主机端口号
byUseDhcp
是否启用DHCP：0xff-无效；0-不启用；1-启用
byIPv6Mode
IPv6分配方式：0-路由公告，1-手动设置，2-启用DHCP分配
struDnsServer1IpAddr
域名服务器1的IP地址
struDnsServer2IpAddr
域名服务器2的IP地址
byIpResolver
IP解析服务器域名或IP地址（8000设备不支持域名）
wIpResolverPort
IP解析服务器端口号
wHttpPortNo
HTTP端口号
struMulticastIpAddr
多播组地址
struGatewayIpAddr
网关地址
struPPPoE
PPPoE参数
byEnablePrivateMulticastDiscovery
私有多播搜索(SADP)：0- 默认，1- 启用，2- 禁用
byEnableOnvifMulticastDiscovery
Onvif多播搜索(SADP)：0- 默认，1- 启用，2- 禁用
wAlarmHost2IpPort
报警主机2端口号
struAlarmHost2IpAddr
报警主机2 IP地址
byEnableDNS
DNS自动使能：0-保留，1-打开，2-关闭
byAlarmOverTLS
监听是否使用TLS链路：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 8000等3.0协议以下的设备，参数byUseDhcp为0xff-无效，将其IP地址填成空，设备会自动去获取DHCP。
  • 当byIPv6Mode选择“0-路由公告”或“2-启用DHCP分配”时，无需设置struEtherNet中的IPv6地址，设备自动获取；当byIPv6Mode选择“1-手动设置”时，需要设置struEtherNet中的IPv6地址。由于多IPv6地址（路由公告地址多个，可以正常使用），当前登录的设备IPv6地址可能和此结构中的struEtherNet中的IPv6地址不一致。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_NETCFG_V30


NET_DVR_NETPARAM

网络配置信息结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_SINGLE_NETPARAM    struEtherNet[MAX_ETHERNET];
  BYTE                       byRes[64];
}NET_DVR_NETPARAM,*LPNET_DVR_NETPARAM;

Members

dwSize
结构体大小
struEtherNet
以太网口信息
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_NETSIGNAL_INFO

单个网络信号源信息结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byDevName[NAME_LEN];
  NET_DVR_PU_STREAM_CFG    struPuStream;
  BYTE                     byValid;
  BYTE                     byRes1[3];
  BYTE                     sGroupName[NAME_LEN];
  WORD                     wResolutionX;
  WORD                     wResolutionY;
  BYTE                     byRes2[24];
}NET_DVR_NETSIGNAL_INFO,*LPNET_DVR_NETSIGNAL_INFO;

Members

dwSize
结构体大小
byDevName
网络信号源名称
struPuStream
网络信号源信息，当流媒体结构体struStreamMediaSvrCfg中的byValid为0时，直接使用struDevChanInfo中的参数作为网络信号源参数
byValid
网络信号源是否有效：0- 无效，删除网络信号源时设为0；1- 有效，添加和修改网络信号源时设为1
byRes1
保留
sGroupName
网络信号源所在组的组名，网络信号源根据这个组名来分类
wResolutionX
当前分辨率的宽度
wResolutionY
当前分辨率的高度
byRes2
保留

Remarks

设置网路信号源时，只能设置“网路信号源名称”，“网路信号源组名”和“传输协议类型”。另外，设置网络信号源只能通过命令NET_DVR_SET_NET_SIGNAL设置该参数来实现，而不能通过NET_DVR_SET_INPUTSTREAMCFG设置。

客户端窗口的等比例缩放功能，根据wResolutionX，wResolutionY的值来确定所开窗口的宽，高比例。窗口比例有16:9和4:3，具体看分辨率更接近于哪一种窗口比例。

See Also

NET_DVR_SetDeviceConfig NET_DVR_AddNetSignal

NET_DVR_NETSIGNALDEV_INFO


NET_DVR_NETSIGNALDEV_INFO

网络信号源信息结构体。

struct{
  NET_DVR_NETSIGNAL_INFO    struDevInfo;
  BYTE                      byRes[816];
}NET_DVR_NETSIGNALDEV_INFO,*LPNET_DVR_NETSIGNALDEV_INFO;

Members

struDevInfo
网络信号源信息
byRes
保留

See Also

NET_DVR_DIFFDEV_INFO


NET_DVR_NETWORK_BONDING

BONDING网卡配置结构体。

struct{
  DWORD                dwSize;
  BYTE                 byEnable;
  BYTE                 byNum;
  BYTE                 byRes1[2];
  NET_DVR_ONE_BONDING  struOneBond[MAX_BOND_NUM];
  BYTE                 byRes2[40];
}NET_DVR_NETWORK_BONDING,*LPNET_DVR_NETWORK_BONDING;

Members

dwSize
结构体大小
byEnable
是否启用bonding功能
byNum
Bonding网卡的个数
byRes1
保留
struOneBond
单BONDING网卡配置参数
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NFSCFG

网络文件系统参数结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_SINGLE_NFS      struNfsDiskParam[MAX_NFS_DISK];
}NET_DVR_NFSCFG, *LPNET_DVR_NFSCFG;

Members

dwSize
结构体大小
struNfsDiskParam
NFS配置子结构

Remarks

修改NFS各参数时需要重启设备才能生效。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_NOAMAL_SUB_SYSTEM

子系统信息结构体。

struct{
  DWORD    dwBeJoinedSubSystem;
  BYTE     byRes[16];
}NET_DVR_NOAMAL_SUB_SYSTEM,*LPNET_DVR_NOAMAL_SUB_SYSTEM;

Members

dwBeJoinedSubSystem
表示被哪些公共子系统关联，按位表示，bit0==1表示该子系统被关联到公共子系统1，bit1==1表示该子系统被关联到公共子系统2，依次类推
byRes
保留

See Also

NET_DVR_JOINT_SUB_SYSTEM


NET_DVR_NOISEREMOVE

数字降噪功能参数结构体。

struct{
  BYTE    byDigitalNoiseRemoveEnable;
  BYTE    byDigitalNoiseRemoveLevel;
  BYTE    bySpectralLevel;
  BYTE    byTemporalLevel;
  BYTE    byDigitalNoiseRemove2DEnable;
  BYTE    byDigitalNoiseRemove2DLevel;
  BYTE    byRes[2];
}NET_DVR_NOISEREMOVE, *LPNET_DVR_NOISEREMOVE;

Members

byDigitalNoiseRemoveEnable
数字去噪是否启用，0-不启用，1-普通模式数字降噪，2-专家模式数字降噪
byDigitalNoiseRemoveLevel
普通模式数字降噪级别：0x0~0xF
bySpectralLevel
专家模式下空域强度：0~100
byTemporalLevel
专家模式下时域强度：0~100
byDigitalNoiseRemove2DEnable
抓拍帧2D降噪：0-不启用，1-启用，智能交通摄像机支持
byDigitalNoiseRemove2DLevel
抓拍帧2D降噪级别，取值范围：0~100，智能交通摄像机支持
byRes
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_NORMAL_SCHEDTIME

日常计划布防参数结构体。

struct{
  NET_DVR_SCHEDTIME    struTime;
  BYTE                 byAlarmType;
  BYTE                 byRes[3];
}NET_DVR_NORMAL_SCHEDTIME,*LPNET_DVR_NORMAL_SCHEDTIME;

Members

struTime
布防计划的开始时间和结束时间
byAlarmType
布防类型：0- 外出布防，1- 留守布防，2- 即时布防，3- 撤防
byRes
保留，置为0

See Also

NET_DVR_SUBSYSTEM_ALARM


NET_DVR_NOTICE_DATA

公告数据下发参数结构体。

struct{
  DWORD                 dwSize;
  NET_DVR_TIME_EX       struTime;
  BYTE                  byNoticeNumber[MAX_NOTICE_NUMBER_LEN];
  BYTE                  byNoticeTheme[MAX_NOTICE_THEME_LEN];
  BYTE                  byNoticeDetail[MAX_NOTICE_DETAIL_LEN];
  BYTE                  byLevel;
  BYTE                  byPicNum;
  BYTE                  byRes1[2];
  NET_DVR_NOTICE_PIC    struNoticePic[MAX_NOTICE_PIC_NUM];
  BYTE                  byRes2[128];
}NET_DVR_NOTICE_DATA, *LPNET_DVR_NOTICE_DATA;

Members

dwSize
结构体大小
struTime
公告时间
byNoticeNumber
公告编号
byNoticeTheme
公告主题
byNoticeDetail
公告详情
byLevel
公告等级：1- 广告类信息，2- 物业信息，3- 报警类信息，4- 通知类信息
byPicNum
公告图片数量
byRes1
保留，置为0
struNoticePic
公告图片信息
byRes2
保留，置为0

Remarks

公告数据下发参数能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<NoticeData>。

See Also

NET_DVR_RemoteControl


NET_DVR_NOTICE_PIC

公告图片信息结构体。

struct{
  BYTE     *pPicData;
  DWORD    dwPicDataLen;
  BYTE     byRes[32];
 }NET_DVR_NOTICE_PIC,*LPNET_DVR_NOTICE_PIC;

Members

pPicData
缓冲区指针，保存图片数据（单张图片长度最大512KB，默认jpeg格式）
dwPicDataLen
图片数据长度
byRes
保留，置为0

See Also

NET_DVR_NOTICE_DATA


NET_DVR_NOTICEDATA_RECEIPT_INFO

公告信息阅读回执信息结构体。

struct{
  BYTE    byNoticeNumber[MAX_NOTICE_NUMBER_LEN];
  BYTE    byRes[224];
}NET_DVR_NOTICEDATA_RECEIPT_INFO, *LPNET_DVR_NOTICEDATA_RECEIPT_INFO;

Members

byNoticeNumber
公告编号
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON


NET_DVR_NPO_DEV_INFO_UNION

N+1模式设备信息联合体。

struct{
  BYTE                             byUnionLen[512];
  NET_DVR_WORKING_DEVICE_INFO      struWorkingDeviceInfo;
  NET_DVR_REDUNDANT_DEVICE_INFO    struRedundantDeviceInfo;
}NET_DVR_NPO_DEV_INFO_UNION, *LPNET_DVR_NPO_DEV_INFO_UNION;

Members

byUnionLen
联合体长度，512字节
struWorkingDeviceInfo
工作机信息
struRedundantDeviceInfo
备机信息

See Also

NET_DVR_N_PLUS_ONE_DEVICE_INFO


NET_DVR_NPO_PARAM_UNION

N+1模式设备参数联合体。

struct{
  BYTE                 byUnionLen[128];
  NET_DVR_ADD_PARAM    struAddParam;
  NET_DVR_DEL_PARAM    struDelParam;
}NET_DVR_NPO_PARAM_UNION, *LPNET_DVR_NPO_PARAM_UNION;

Members

byUnionLen
联合体长度，128字节
struAddParam
添加设备
struDelParam
删除设备

See Also

NET_DVR_N_PLUS_ONE_DEVICE_PARAM


NET_DVR_NTPPARA

网络应用参数（NTP）结构体。

struct{
  BYTE           sNTPServer[64];
  WORD           wInterval;
  BYTE           byEnableNTP;
  signed char    cTimeDifferenceH;
  signed char    cTimeDifferenceM;
  BYTE           res1;
  WORD           wNtpPort;
  BYTE           res2[8];
}NET_DVR_NTPPARA,*LPNET_DVR_NTPPARA;

Members

sNTPServer
NTP服务器域名或者IP地址
wInterval
校时间隔时间，以分钟或小时为单位（通过能力集NET_DVR_GetDeviceAbility获取，对应网络应用参数能力集：DEVICE_NETAPP_ABILITY）
byEnableNTP
NTP校时是否启用：0－否，1－是
cTimeDifferenceH
与国际标准时间的时差（小时），-12 ... +13
cTimeDifferenceM
与国际标准时间的时差（分钟），0, 30, 45
res1
保留，置为0
wNtpPort
NTP服务器端口，设备默认为123
res2
保留，置为0

See Also

NET_DVR_NETAPPCFG NET_DVR_SERVER_TEST_PARA

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OBJECT_COLOR

物体（如衣物、帽子等）颜色属性结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byEnable;
  BYTE                          byColorMode;
  BYTE                          byRes1[2];
  NET_DVR_OBJECT_COLOR_UNION    uObjColor;
  BYTE                          byRes2[64];
}NET_DVR_OBJECT_COLOR, *LPNET_DVR_OBJECT_COLOR;

Members

dwSize
结构体大小
byEnable
是否启用该属性：0-不启用，1-启用
byColorMode
取色方式：1-颜色值，2-图片
byRes1
保留，置为0
uObjColor
物体颜色联合体，取值依赖于取色方式(byColorMode)
byRes2
保留，置为0

Remarks

对物体（如衣物、帽子等）颜色属性进行描述，以解决非相关感兴趣因素对检测结果造成干扰，当取色方式为图片时，设备以一定的方式从图片中提取特征颜色值。图片大小建议不要超过400 * 300 像素。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_OBJECT_COLOR_COND

物体颜色条件结构体。

struct{
  DWORD     dwChannel;
  DWORD     dwObjType;
  BYTE      byRes[64];
}NET_DVR_OBJECT_COLOR_COND, *LPNET_DVR_OBJECT_COLOR_COND;

Members

dwChannel
通道号
dwObjType
物体类型，具体定义如下：
enum _OBJECT_TYPE_ENUM_{
  ENUM_OBJECT_TYPE_COAT  = 1
}OBJECT_TYPE_ENUM
ENUM_OBJECT_TYPE_COAT
上衣
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_OBJECT_COLOR_UNION

物体颜色属性联合体。

union{
  NET_DVR_COLOR    struColor;
  NET_DVR_PIC      struPicture;
  BYTE             byRes[64];
}NET_DVR_OBJECT_COLOR_UNION, *LPNET_DVR_OBJECT_COLOR_UNION;

Members

struColor
颜色值，按颜色取色时有效
struPicture
取色参考图片，按图片取色时有效
byRes
联合体大小，64字节

See Also

NET_DVR_OBJECT_COLOR


NET_DVR_OBJECT_FEATURE

物体属性参数结构体。

struct{
  BYTE    byColorRatel;
  BYTE    byRed;
  BYTE    byGreen;
  BYTE    byBlue;
  BYTE    byRes[32];
}NET_DVR_OBJECT_FEATURE, *LPNET_DVR_OBJECT_FEATURE;

Members

byColorRatel
颜色在移动物体中的占比阈值，百分比，取值范围：0~100
byRed
RGB颜色三分量中的红色
byGreen
RGB颜色三分量中的绿色
byBlue
RGB颜色三分量中的蓝色
byRes
保留，置为0

See Also

NET_DVR_ADVANCE_COND_UNION


NET_DVR_OIS_CFG

光学防抖配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byMode;
  BYTE     byOISLevel;
  BYTE     byOISSensitivity;
  BYTE     byRes[125];
}NET_DVR_OIS_CFG,*LPNET_DVR_OIS_CFG;

Members

dwSize
结构体大小
byMode
是否光学防抖：0- 关闭，1- 普通，2- 专家
byOISLevel
光学防抖等级：0- 低，1- 中，2- 高
byOISSensitivity
光学防抖灵敏度：0- 低，1- 中，2- 高
byRes
保留，置为0

Remarks

  • 设备是否支持光学防抖配置或者支持的参数能力，可以通过设备能力集进行判断，对应光学防抖配置能力集(OIS)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_OIS_CAPABILITIES。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ONE_AID_RULE

单条交通事件规则结构体。

struct{
  BYTE                          byEnable;
  BYTE                          byRes1[3];
  BYTE                          byRuleName[NAME_LEN];
  DWORD                         dwEventType;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_VCA_POLYGON               struPolygon;
  NET_DVR_AID_PARAM             struAIDParam;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                          byRes2[20];
}NET_DVR_ONE_AID_RULE,*LPNET_DVR_ONE_AID_RULE;

Members

byEnable
是否启用事件规则：0-否；非0-是
byRes1
保留，置为0
byRuleName
规则名称
dwEventType
交通事件检测类型，详见枚举类型：TRAFFIC_AID_TYPE
struSizeFilter
尺寸过滤器
struPolygon
规则区域
struAIDParam
交通事件参数
struAlarmTime
布防时间
struHandleType
处理方式
byRelRecordChan
报警触发的录象通道：1表示触发该通道；0表示不触发
byRes2
保留，置为0

See Also

NET_DVR_AID_RULECFG


NET_DVR_ONE_AID_RULE_V41

单条交通事件规则结构体。

struct{
  BYTE                          byEnable;
  BYTE                          byLaneNo;
  BYTE                          byRes1[2];
  BYTE                          byRuleName[NAME_LEN];
  DWORD                         dwEventType;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_VCA_POLYGON               struPolygon;
  NET_DVR_AID_PARAM             struAIDParam;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                          byRes2[60];
}NET_DVR_ONE_AID_RULE_V41,*LPNET_DVR_ONE_AID_RULE_V41;

Members

byEnable
是否启用事件规则：0-否；非0-是
byLaneNo
关联车道号
byRes1
保留，置为0
byRuleName
规则名称
dwEventType
交通事件检测类型，详见枚举类型：TRAFFIC_AID_TYPE
struSizeFilter
尺寸过滤器
struPolygon
规则区域
struAIDParam
交通事件参数
struAlarmTime
布防时间
struHandleType
处理方式
byRelRecordChan
报警触发的录象通道：1表示触发该通道；0表示不触发
byRes2
保留，置为0

See Also

NET_DVR_AID_RULECFG_V41


NET_DVR_ONE_BONDING

单BONDING网卡配置结构体。

struct{
  BYTE                 byMode;
  BYTE                 byUseDhcp;
  BYTE                 byMasterCard;
  BYTE                 byStatus;
  BYTE                 byBond[MAX_NETWORK_CARD];
  NET_DVR_ETHERNET_V30 struEtherNet;
  NET_DVR_IPADDR       struGatewayIpAddr;
  BYTE                 byEnableDNS;
  BYTE                 byBondMode;
  BYTE                 byRes1;
  BYTE                 byBond2MAX_NETWORK_CARD_EX];;
  BYTE                 byRes[4];
}NET_DVR_ONE_BONDING,*LPNET_DVR_ONE_BONDING;

Members

byMode
工作模式：0 - 网络容错，1 - 负载均衡（CVR采用绑定方式，该字段无效，默认返回0）
byUseDhcp
是否使能dhcp
byMasterCard
指定哪张网卡为主网卡
byStatus
BONDING的状态：0 - 异常，1-正常，只能获取不能设置
byBond
byBond[0]== 1 表示使用eh0，0表示不使用eh0
struEtherNet
网卡参数
struGatewayIpAddr
网关地址
byEnableDNS
DNS使能, 0-关闭，1-打开
byBondMode
绑定方式, 0-无效，1-主备模式，2-轮转模式，3-XOR模式，4-广播模式，5-802.3ad模式，6-T1b模式，7-虚拟化模式
byRes1
保留
byBond2
byBond2[0]== 1 表示使用eh4 0表示不使用eh4，基于byBond扩展
byRes
保留

See Also

NET_DVR_NETWORK_BONDING


NET_DVR_ONE_KEY_CFG_SAN_V50

一键配置SAN(V50)参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byRaidType;
  BYTE     bySpareRaidProportion;
  BYTE     byRes[254];
}NET_DVR_ONE_KEY_CFG_SAN_V50, *LPNET_DVR_ONE_KEY_CFG_SAN_V50;

Members

dwSize
结构体大小
byRaidType
RAID类型：0- raid5，1- raid6，2- raid95（Vraid），3- 单盘模式（即不创建raid）
bySpareRaidProportion
(热备盘:RAID阵列)的比例：0- (0:1)，1-（1:1)，2- (1:2)，3- (1:3)，4- (1:4)，5- (1:5)，6- (1:6)，7- (6:1)，8- (5:1)，9- (4:1),10- (3:1)，11- (2:1)
byRes
保留，置为0

Remarks

  • 原来老的一键配置SAN没有结构体，就是简单发一个命令下去，由CVR根据自身实际环境来配置，现扩展为V50，CVR将根据用户的填写的参数进行对应的配置。
  • NET_DVR_ONE_KEY_CONFIG_V50兼容NET_DVR_ONE_KEY_CONFIG，该结构体里面byRaidType为0、bySpareRaidProportion为2、byPicQuota为0即NET_DVR_ONE_KEY_CONFIG命令的一键配置是一样的。
  • 设备是否支持CVR一键配置扩展命令或者支持的参数能力，可以通过设备能力集进行判断，对应CVR能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<OneKeyConfigCVRV50>。
  • SAN：存储区域网络（Storage Area Network，简称SAN）。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ONE_KEY_CFG_V50

CVR一键配置条件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byRaidType;
  BYTE     bySpareRaidProportion;
  BYTE     byPicQuota;
  BYTE     byRes[257];
}NET_DVR_ONE_KEY_CFG_V50, *LPNET_DVR_ONE_KEY_CFG_V50;

Members

dwSize
结构体大小
byRaidType
RAID类型：0- raid5，1- raid6，2- raid95（Vraid），3- 单盘模式（即不创建raid）
bySpareRaidProportion
(热备盘:RAID阵列)的比例：0- (0:1)，1-（1:1)，2- (1:2)，3- (1:3)，4- (1:4)，5- (1:5)，6- (1:6)，7- (6:1)，8- (5:1)，9- (4:1),10- (3:1)，11- (2:1)
byPicQuota
图片卷比例，取值范围：0~100
byRes
保留，置为0

Remarks

  • NET_DVR_ONE_KEY_CONFIG_V50兼容NET_DVR_ONE_KEY_CONFIG，该结构体里面byRaidType为0、bySpareRaidProportion为2、byPicQuota为0即NET_DVR_ONE_KEY_CONFIG命令的一键配置是一样的。
  • 设备是否支持CVR一键配置扩展命令或者支持的参数能力，可以通过设备能力集进行判断，对应CVR能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<OneKeyConfigCVRV50>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ONE_LANE

单条车道规则配置。

struct{
  BYTE                  byEnable;
  BYTE                  byRes1[11];
  BYTE                  byLaneName[NAME_LEN];
  NET_DVR_DIRECTION     struFlowDirection;
  NET_VCA_POLYGON       struPolygon;
}NET_DVR_ONE_LANE, *LPNET_DVR_ONE_LANE;

Members

byEnable
车道是否启用
byRes1
保留
byLaneName
车道规则名称
struFlowDirection
车道内车流方向
struPolygon
车道区域

See Also

NET_DVR_LANE_CFG


NET_DVR_ONE_LINK

连接的客户端信息结构体。

struct{
  NET_DVR_IPADDR     struIP;
  LONG               lChannel;
  BYTE               byRes[32];
}NET_DVR_ONE_LINK, *LPNET_DVR_ONE_LINK;

Members

struIP
客户端IP
Channel
通道号
byRes
保留

See Also

NET_DVR_LINK_STATUS


NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40

设备网络SDK开发使用手册

NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40

单个时控输出规则配置结构体。

struct{
  DWORD                                   dwSize;
  NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40    struOutputRule;
  BYTE                                    byRes[256];
}NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40,*LPNET_DVR_ONE_OUTPUT_SCH_RULECFG_V40;

Members

dwSize
结构体大小
struOutputRule
规则配置，最多支持8个日期区段
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ONE_OUTPUT_SCHEDULE_RULE

时控输出规则参数结构体。

struct{
  BYTE                       byEnable;
  BYTE                       byRes1[3];
  NET_DVR_SCHEDDATE          struDate;
  NET_DVR_OUTPUT_SCHEDULE    struOutputSchedule[MAX_TIMESEGMENT_V30];
  BYTE                       byRes2[16];
}NET_DVR_ONE_OUTPUT_SCHEDULE_RULE,*LPNET_DVR_ONE_OUTPUT_SCHEDULE_RULE;

Members

byEnable
是否启用规则：0- 否，1- 是
byRes1
保留，置为0
struDate
日期区段，XX月XX日至XX月XX日
struOutputSchedule
时控输出控制，最多支持8个时间段
byRes2
保留，置为0

Remarks

See Also

NET_DVR_OUTPUT_SCHEDULE_RULECFG


NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40

时控输出规则参数结构体。

struct{
  BYTE                       byEnable;
  BYTE                       byRes1[3];
  NET_DVR_SCHEDDATE          struDate;
  NET_DVR_OUTPUT_SCHEDULE    struOutputSchedule[MAX_TIMESEGMENT_V30];
  BYTE                       byTriggerIndex[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE                       byRes2[64];
}NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40,*NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40;

Members

byEnable
是否启用规则：0- 否，1- 是
byRes1
保留，置为0
struDate
日期区段，XX月XX日至XX月XX日
struOutputSchedule
时控输出控制，最多支持8个时间段
byTriggerIndex
触发器，下标表示触发器号，值：0- 不启用，1- 启用
byRes2
保留，置为0

Remarks

See Also

NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40


NET_DVR_ONE_SCENE_CFG

单个场景配置信息结构体。

struct{
  BYTE              byEnable;
  BYTE              byDirection;
  BYTE              byRes1[2];
  DWORD             dwSceneID;
  BYTE              bySceneName[NAME_LEN];
  NET_DVR_PTZPOS    struPtzPos;
  DWORD             dwTrackTime;
  BYTE              byRes2[24];
}NET_DVR_ONE_SCENE_CFG, *LPNET_DVR_ONE_SCENE_CFG;

Members

byEnable
是否启用该场景：0- 不启用，1- 启用
byDirection
监测方向：1-上行，2-下行，3-双向，4-由东向西，5-由南向北，6-由西向东，7-由北向南，8-其它
byRes1
保留，置为0
dwSceneID
场景ID（只读），0表示该场景无效
bySceneName
场景名称
struPtzPos
PTZ坐标
dwTrackTime
球机跟踪时间，单位：秒，取值范围：[5,300]，TFS模式下有效
byRes2
保留，置为0

See Also

NET_DVR_SCENE_CFG


NET_DVR_ONE_SCENE_TIME

场景时间段信息结构体。

struct{
  BYTE                  byActive;
  BYTE                  byRes1[3];
  DWORD                 dwSceneID;
  NET_DVR_SCHEDTIME    struEffectiveTime;
  BYTE                  byRes2[16];
}NET_DVR_ONE_SCENE_TIME, *LPNET_DVR_ONE_SCENE_TIME;

Members

byActive
是否启用该时间段：0- 启用， 1- 不启用
byRes1
保留
dwSceneID
场景ID
struEffectiveTime
场景起效时间
byRes2
保留

See Also

NET_DVR_SCENE_TIME_CFG


NET_DVR_ONE_TPS_RULE

单条交通事件规则结构体。

struct{
  BYTE                          byEnable;
  BYTE                          byLaneID;
  BYTE                          byRes1[2];
  DWORD                         dwCalcType;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_VCA_POLYGON               struVitrualLoop;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRes2[20];
}NET_DVR_ONE_TPS_RULE,*LPNET_DVR_ONE_TPS_RULE;

Members

byEnable
是否启用车道交通规则
byLaneID
车道ID
byRes1
保留，置为0
dwCalcType
统计参数类型
enum _ITS_TPS_TYPE_{
  LANE_VOLUME             = 0x1,
  LANE_VELOCITY           = 0x2,
  TIME_HEADWAY            = 0x4,
  SPACE_HEADWAY           = 0x8,
  TIME_OCCUPANCY_RATIO    = 0x10,
  SPACE_OCCUPANCY_RATIO   = 0x20,
  QUEUE                   = 0x40,
  VEHICLE_TYPE            = 0x80,
  TRAFFIC_STATE           = 0x100
}ITS_TPS_TYPE
LANE_VOLUME
车道流量
LANE_VELOCITY
车道速度
TIME_HEADWAY
车头时距
SPACE_HEADWAY
车头间距
TIME_OCCUPANCY_RATIO
车道占有率(时间上)
SPACE_OCCUPANCY_RATIO
车道占有率，百分比计算(空间上)
QUEUE
排队长度
VEHICLE_TYPE
车辆类型
TRAFFIC_STATE
交通状态
struSizeFilter
尺寸过滤器
struVitrualLoop
虚拟线圈，类似于地感线圈，在实际场景中大于车子一半小于车子大小最适合
struAlarmTime
布防时间
struHandleType
处理方式。一般为处理是否上传中心，其他功能不需要
byRes2
保留，置为0

See Also

NET_DVR_TPS_RULECFG


NET_DVR_ONE_TPS_RULE_V41

单条交通事件规则结构体。

struct{
  BYTE                          byEnable;
  BYTE                          byLaneID;
  BYTE                          byRes1[2];
  DWORD                         dwCalcType;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_VCA_POLYGON               struVitrualLoop;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRes2[60];
}NET_DVR_ONE_TPS_RULE_V41,*LPNET_DVR_ONE_TPS_RULE_V41;

Members

byEnable
是否启用车道交通规则
byLaneID
车道ID
byRes1
保留，置为0
dwCalcType
统计参数类型
enum _ITS_TPS_TYPE_{
  LANE_VOLUME             = 0x1,
  LANE_VELOCITY           = 0x2,
  TIME_HEADWAY            = 0x4,
  SPACE_HEADWAY           = 0x8,
  TIME_OCCUPANCY_RATIO    = 0x10,
  SPACE_OCCUPANCY_RATIO   = 0x20,
  QUEUE                   = 0x40,
  VEHICLE_TYPE            = 0x80,
  TRAFFIC_STATE           = 0x100
}ITS_TPS_TYPE
LANE_VOLUME
车道流量
LANE_VELOCITY
车道速度
TIME_HEADWAY
车头时距
SPACE_HEADWAY
车头间距
TIME_OCCUPANCY_RATIO
车道占有率(时间上)
SPACE_OCCUPANCY_RATIO
车道占有率，百分比计算(空间上)
QUEUE
排队长度
VEHICLE_TYPE
车辆类型
TRAFFIC_STATE
交通状态
struSizeFilter
尺寸过滤器
struVitrualLoop
虚拟线圈，类似于地感线圈，在实际场景中大于车子一半小于车子大小最适合
struAlarmTime
布防时间
struHandleType
处理方式。一般为处理是否上传中心，其他功能不需要
byRes2
保留，置为0

See Also

NET_DVR_TPS_RULECFG_V41


NET_DVR_ONEKEY_PUBLISH_CFG

一键发布录像配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byUseDefine;
  BYTE                           byRes1[3];
  NET_DVR_RECORD_PUBLISH_INFO    struChanPublish[MAX_CHANNUM_V30];
  NET_DVR_RECORD_PUBLISH_INFO    struDirectChanPublish;
  NET_DVR_TIME_EX                struStartTime;
  NET_DVR_TIME_EX                struEndTime;
  BYTE                           byRes[64];
 }NET_DVR_ONEKEY_PUBLISH_CFG,*LPNET_DVR_ONEKEY_PUBLISH_CFG;

Members

dwSize
结构体大小
byUseDefine
是否使用自定义：0- 使用默认发布配置信息，1- 使用自定义发布配置信息
byRes1
保留，置为0
struChanPublish
通道录像发布信息，数组下标跟通道一一对应，例如：struChanPublis[0]表示通道1对应录像发布信息
struDirectChanPublish
导播通道录像发布信息
struStartTime
课程开始时间
struEndTime
课程结束时间
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ONLINE_LOCAL_CONTROLLER_CFG

在线就地控制器信息结构体。

struct{
  DWORD            dwSize;
  BYTE             byLocalControllerName[LOCAL_CONTROLLER_NAME_LEN];
  WORD             wLocalControllerID;
  WORD             wDevPort;
  NET_DVR_IPADDR   struDevIP;
  NET_DVR_IPADDR   struSubnetMask;
  NET_DVR_IPADDR   struGateway;
  BYTE             bySearchProgress;
  BYTE             byEffectData;
  BYTE             byRes[302];
}NET_DVR_SADPINFO,*LPNET_DVR_SADPINFO;

Members

dwSize
结构体大小
byLocalControllerName
就地控制器名称
wLocalControllerID
就地控制器序号
wDevPort
设备端口号
struDevIP
设备IP地址
struSubnetMask
设备子网掩码
struGateway
设备网关
bySearchProgress
搜索进度：0表示未开始，100表示同步完成
byEffectData
是否为有效数据：0- 表示有效，1- 表示设备只返回搜索进度（作为心跳包）
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ONLINE_USER_INFO

在线用户信息结构体。

struct{
  DWORD    dwSize;
  WORD     wOnlineUserCount;
  BYTE     byRes[514];
}NET_DVR_ONLINE_USER_INFO, *LPNET_DVR_ONLINE_USER_INFO;

Members

dwSize
结构体大小
wOnlineUserCount
登录设备的用户数
byRes
保留，置为0

Remarks

  • 设备是否支持在线用户信息查询或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<OnlineUser>。

See Also

NET_DVR_GetDVRConfig


NET_DVR_ONLINEUPGRADE_SERVER

升级服务器状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byConnectStatus;
  BYTE     byRes[1019];
}NET_DVR_ONLINEUPGRADE_SERVER, *LPNET_DVR_ONLINEUPGRADE_SERVER;

Members

dwSize
结构体大小
byConnectStatus
连接状态：0- 未连接，1- 已连接
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_ONLINEUPGRADE_STATUS

在线升级状态和进度信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byUpgradeStatus;
  BYTE     byProgress;
  BYTE     byRes[250];
}NET_DVR_ONLINEUPGRADE_STATUS, *LPNET_DVR_ONLINEUPGRADE_STATUS;

Members

dwSize
结构体大小
byUpgradeStatus
升级状态：0- 未开始升级，1- 正在升级，2- 升级成功，3- 包语言不匹配，4- 写falsh失败，5- 包类型不匹配，6- 包版本不匹配，7- 网络不可达，8- 升级服务器出错，9- 读取升级包文件出错，10- 没有找到升级文件，11- 升级文件有错，12- 设备内存不足，0xff- 未知错误
byProgress
升级进度，取值范围：0~100
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_ONLINEUPGRADE_VERSION_COND

新版本信息查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byCheckFromSvr;
  BYTE     byRes[59];
}NET_DVR_ONLINEUPGRADE_VERSION_COND, *LPNET_DVR_ONLINEUPGRADE_VERSION_COND;

Members

dwSize
结构体大小
byCheckFromSvr
是否需要从服务器检测：0- 不需要，仅返回设备周期性检查的结果；1- 需要，设备会即时连接服务器检测是否有新版本
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_ONLINEUPGRADE_VERSION_RET

在线升级新版本信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byNewVersionAvailable;
  BYTE     byNewVersion[MAX_VERSIIN_LEN];
  BYTE     byChangeLog[SDK_LEN_2048];
  BYTE     byRes[971];
}NET_DVR_ONLINEUPGRADE_VERSION_RET, *LPNET_DVR_ONLINEUPGRADE_VERSION_RET;

Members

dwSize
结构体大小
byNewVersionAvailable
是否有新版本：0- 否，1- 是
byNewVersion
新版本的版本号
byChangeLog
新版本更新的内容
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_ONLINEUSER_CFG

用户在线信息查询结果结构体。

struct{
  DWORD               dwSize;
  BYTE                byID;
  BYTE                byUserType;
  BYTE                byDataType;
  BYTE                byRes;
  NET_DVR_IPADDR      struIpAddr;
  NET_DVR_TIME_V30    struLoginTime;
  char                szUserName[NAME_LEN];
  BYTE                byRes1[128];
}NET_DVR_ONLINEUSER_CFG, *LPNET_DVR_ONLINEUSER_CFG;

Members

dwSize
结构体大小
byID
用户序列号
byUserType
用户类型：0- 普通用户，1- 操作员，2- 超级用户
byDataType
数据状态类型：0- 检测中，1- 开始，2- 结束
byRes
保留，置为0
struIpAddr
用户IP地址
struLoginTime
登录时间
szUserName
登录用户名
byRes1
保留，置为0

Remarks

  • 设备是否支持用户在线信息查询功能或者支持的参数能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportOnLineUser>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_ONLINEUSER_COND

用户在线信息查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[128];
}NET_DVR_ONLINEUSER_COND, *LPNET_DVR_ONLINEUSER_COND;

Members

dwSize
结构体大小
dwChannel
通道号（网络摄像机默认是1）
byRes
保留，置为0

Remarks

  • 设备是否支持用户在线信息查询功能或者支持的参数能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportOnLineUser>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_OPERATE_ARRAY_PARAM

阵列操作参数结构体。

struct{
  BYTE   byRaidMode;
  BYTE   byPDCount;
  WORD   wArrayID;
  WORD   wPDSlots[SUPPORT_PD_NUM];
  BYTE   byName[MAX_NAMELEN];
  BYTE   byInitMode;
  BYTE   byRes1;
  WORD   wPDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO];
  BYTE   byRes2[2];
}NET_DVR_OPERATE_ARRAY_PARAM, *LPNET_DVR_OPERATE_ARRAY_PARAM;

Members

byRaidMode
创建/迁移时RAID的类型
byPDCount
物理磁盘数目
wArrayID
迁移/重建时的阵列ID
wPDSlots
物理磁盘槽位号
byName
阵列名称
byInitMode
初始化化方式: 0- 快速初始化，1- 完全初始化(前台)，2- 完全初始化(后台)，3- 不初始化
byRes1
保留，置为0
wPDSlotsPartTwo
物理磁盘槽位号扩展，0表示无效
byRes2
保留，置为0

Remarks

byInitMode可以取哪些值，由Raid能力集获取。

See Also

NET_DVR_CalcArraySize NET_DVR_CreateArray

NET_DVR_MigrateArray NET_DVR_RebuildArray


NET_DVR_OPERATE_DEVICE

设备升级操作参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwSubCommand;
  DWORD    dwDeviceIndex;
  BYTE     byRes[44];
}NET_DVR_OPERATE_DEVICE,*LPNET_DVR_OPERATE_DEVICE;

Members

dwSize
结构体大小
dwSubCommand
设置设备的命令：1- 设备开始升级，2- 设备停止升级
dwDeviceIndex
设备序号
byRes
保留

See Also

NET_DVR_StartUpgrade


NET_DVR_OPERATE_USER

操作用户配置结构体。

struct{
  DWORD    dwSize;
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  BYTE     bySubSystemPermission;
  BYTE     byRes[63];
}NET_DVR_OPERATE_USER,*LPNET_DVR_OPERATE_USER;

Members

dwSize
结构体大小
sUserName
用户名
sPassword
密码
bySubSystemPermission
0-安装员权限，其他为操作员权限（所有子系统）如下： 1- 单布防，无布防报告，不能旁路
2- 单撤防，无撤防报告，不能旁路
3- 布撤防，无布撤防报告，不能旁路
4- 单布防，有布//防报告，不能旁路
5- 单撤防，有撤防报告，不能旁路
6- 布撤防，有布撤防报告，不能旁路
7- 单布防，无布撤防报告，允许旁路
8- 单撤防，无布撤防报告，允许旁路
9- 布撤防，无布撤防报告，允许旁路
10- 单布防，有布防报告，允许旁路
11- 单撤防，有撤防报告，允许旁路
12- 布撤防，有布撤防报告，允许旁路
byRes
保留

Remarks

  • 操作用户是指报警主机的本地用户，如用键盘操作的用户，而设备用户是指通过SDK连接的远程登录的用户。
  • 安装员密码是1~6位，操作员的密码是2~5位，每个操作员的密码都不能相同，否则设置会失败。密码设置成功后，再次获取时，安装员是6个*号，操作员是5个*号，因为使用密码的是键盘用户，而不是远程用户，所以远程用户在获取密码时不能获取到密码。

    • See Also

    NET_DVR_GetOperateUser NET_DVR_SetOperateUser


NET_DVR_OPERATE_VD_PARAM

虚拟磁盘参数结构体。

struct{
  WORD    wArrayID;
  BYTE    bySlot;
  BYTE    byInitType;
  DWORD   dwHCapacity;
  DWORD   dwLCapacity;
  BYTE    byName[MAX_NAMELEN];
  BYTE    byRes[16];
}NET_DVR_OPERATE_VD_PARAM, *LPNET_DVR_OPERATE_VD_PARAM;

Members

wArrayID
阵列ID
bySlot
创建虚拟磁盘指定槽位
byInitType
创建虚拟磁盘时初始化类型：0- 快速初始化，1- 前台完全初始化，2- 后台完全初始化
dwHCapacity
虚拟磁盘大小高32位
dwLCapacity
虚拟磁盘大小低32位
byName
虚拟磁盘名称
byRes
保留，置为0

See Also

NET_DVR_VD_UNION

NET_DVR_CreateVD


NET_DVR_OPERATE_VD_PARAM_EX

虚拟磁盘参数结构体。

struct{
  BYTE                byVDType;
  BYTE                byRes1[3];
  NET_DVR_VD_UNION    uVDParam;
  BYTE                byRes2[32];
}NET_DVR_OPERATE_VD_PARAM_EX, *LPNET_DVR_OPERATE_VD_PARAM_EX;

Members

byVDType
虚拟磁盘类型：0- 厂家私有虚拟磁盘类型，1- 逻辑卷，2- DVR网盘
byRes1
保留，置为0
uVDParam
虚拟磁盘参数联合体
byRes2
保留，置为0

See Also

NET_DVR_CreateVDEx


NET_DVR_OPTICAL_DEHAZE

光学透雾参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byRes[7];
}NET_DVR_OPTICAL_DEHAZE, *LPNET_DVR_OPTICAL_DEHAZE;

Members

byEnable
使能：0- 不启用光学透雾，1- 启用光学透雾
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_OSD_BATTERY_POWER_CFG

OSD电池电量显示参数结构体。

struct{
  DWORD            dwSize;
  NET_VCA_POINT    struOSDBatteryPower;
  BYTE             byOSDBatteryPower;
  BYTE             byRes[63];
}NET_DVR_OSD_BATTERY_POWER_CFG, *LPNET_DVR_OSD_BATTERY_POWER_CFG;

Members

dwSize
结构体大小
struOSDBatteryPower
电池电量OSD叠加显示左上角坐标
byOSDBatteryPower
电池电量OSD叠加显示使能：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持OSD电池电量显示参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应OSD电池电量显示参数能力集(BatteryPowerOverlay)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_OSD_BATTERY_POWER_CFG_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_OSD_INFO

OSD信息结构体。

struct{
  BYTE                      byEnabled;
  BYTE                      byEnabledFlash;
  BYTE                      byFontSize;
  BYTE                      byTransparent;
  NET_DVR_RGB_COLOR         struColor;
  WORD                      wCoordinateX;
  WORD                      wCoordinateY;
  BYTE                      byContent[MAX_LEN_OSD_CONTENT];
  BYTE                      byRes[32];
}NET_DVR_OSD_INFO, *LPNET_DVR_OSD_INFO;

Members

byEnabled
是否使能：0- 不使能，1- 使能
byEnabledFlash
是否闪烁：0-不闪烁，1-闪烁
byFontSize
字体大小，1-大，2-中，3-小，4-自适应
byTransparent
透明度，取值范围0-100
struColor
字体颜色
wCoordinateX
OSD左上角X坐标
wCoordinateY
OSD左上角Y坐标
byContent
OSD信息内容
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OSD_POSITION

OSD叠加位置信息结构体。

struct{
  BYTE      byPositionMode;
  BYTE      byRes1[3];
  DWORD     dwPosX;
  DWORD     dwPosY;
  BYTE      byRes2[8];
}NET_DVR_OSD_POSITION, *NET_DVR_OSD_POSITION;

Members

byPositionMode
叠加风格，0-不显示；1-自定义
byRes1
保留
dwPosX
x坐标，叠加风格为自定义时使用
dwPosY
y坐标，叠加风格为自定义时使用
byRes2
保留

See Also

NET_DVR_ATM_PACKAGE_ACTION NET_DVR_ATM_PACKAGE_DATE

NET_DVR_ATM_PACKAGE_OTHERS NET_DVR_ATM_PACKAGE_TIME


NET_DVR_OSDCFG

虚拟LED参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byValid;
  BYTE     byDispMode;
  BYTE     byFontColorY;
  BYTE     byFontColorU;
  BYTE     byFontColorV;
  BYTE     byBackColorY;
  BYTE     byBackColorU;
  BYTE     byBackColorV;
  WORD     wXCoordinate;
  WORD     wYCoordinate;
  WORD     wWidth;
  WORD     wHeight;
  DWORD    dwCharCnt;
  WORD     wOSDChar[MAX_OSDCHAR_NUM];
  BYTE     byRes[32];
}NET_DVR_OSDCFG,*LPNET_DVR_OSDCFG;

Members

dwSize
结构体大小
byValid
是否有效：0- 无效，1- 有效
byDispMode
显示模式：1- 透明，2- 半透明，3- 覆盖三种模式
byFontColorY
字体颜色Y，取值范围：0~255
byFontColorU
字体颜色U，取值范围：0~255
byFontColorV
字体颜色V，取值范围：0~255
byBackColorY
背景颜色Y，取值范围：0~255
byBackColorU
背景颜色U，取值范围：0~255
byBackColorV
背景颜色V，取值范围：0~255
wXCoordinate
虚拟LED在屏幕左上角位置x
wYCoordinate
虚拟LED在屏幕左上角位置y
wWidth
虚拟LED宽度
wHeight
虚拟LED高度
dwCharCnt
字符的个数
wOSDChar
虚拟LED字符内容
byRes
保留

Remarks

将16进制WORD转为char数组示例代码：

WORD wOSD[MAX_OSDCHAR_NUM/*256*/];
char cOSD[MAX_OSDCHAR_NUM*2 + 1];
BYTE bLow;
BYTE bHigh;
int iOSDNum =0;

for (int i = 0; i < MAX_OSDCHAR_NUM; i++)
{
    wOSD[i] = struOSDConfig.wOSDChar[i];
}
for (int j = 0; j < (int)struOSDConfig.dwCharCnt; j++)
{
    bLow = LOBYTE(wOSD[j]);
    bHigh = HIBYTE(wOSD[j]);
    if (0x00 == bHigh)
    {
        cOSD[iOSDNum] = bLow;
        iOSDNum++;
    }
    else
    {
        cOSD[iOSDNum] = bHigh;
        iOSDNum++;
        cOSD[iOSDNum] = bLow;
        iOSDNum++;
    }
}
cOSD[iOSDNum] = '\0';

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OUT_PARAM

输出参数结构体。

struct{
  NET_DVR_BUF_INFO    struOutBuf;
  void*               lpStatusList;
  BYTE                byRes[32];
}NET_DVR_OUT_PARAM,*LPNET_DVR_OUT_PARAM;

Members

struOutBuf
输出参数缓冲区
lpStatusList
状态缓冲区
byRes
保留，置为0

Remarks

不同的配置功能，struOutBuf对应不同的内容，详见接口NET_DVR_SetDeviceConfigEx中“Remarks”说明。


NET_DVR_OUT_SCALE_CFG

辅电输出配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byOutScale[8];
  BYTE     byRes[16];
}NET_DVR_OUT_SCALE_CFG,*LPNET_DVR_OUT_SCALE_CFG;

Members

dwSize
结构体大小
byOutScale
数组下标表示主辅口号，取值：0- 不支持，1- 12V，2- 24V
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OUTDOOR_FENCE_DEVICEID

围墙机编号参数结构体。

struct{
  WORD    wPeriod;
  WORD    wDevIndex;
  BYTE    byRes[124];
 }NET_DVR_OUTDOOR_FENCE_DEVICEID,*LPNET_DVR_OUTDOOR_FENCE_DEVICEID;

Members

wPeriod
期号，取值范围：[0,9]
wDevIndex
围墙机序号，每一层中门口机的序号唯一，从0开始
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION


NET_DVR_OUTDOOR_UNIT_DEVICEID

门口机编号参数结构体。

struct{
  WORD    wPeriod;
  WORD    wBuildingNumber;
  WORD    wUnitNumber;
  WORD    wFloorNumber;
  WORD    wDevIndex;
  BYTE    byRes[118];
 }NET_DVR_OUTDOOR_UNIT_DEVICEID,*LPNET_DVR_OUTDOOR_UNIT_DEVICEID;

Members

wPeriod
期号，取值范围：[0,9]
wBuildingNumber
楼号
wUnitNumber
单元号
wFloorNumber
层号
wDevIndex
门口机序号，每一层中门口机的序号唯一，从0开始
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION


NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG

门口机/围墙机/别墅门口机/二次确认机操作时间配置结构体。

struct{
  DWORD    dwMaxMessageTime;
  DWORD    dwMaxTalkTime;
  BYTE     byRes[120];
 }NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG;

Members

dwMaxMessageTime
最大留言时间，范围：[30,60]，单位：秒
dwMaxTalkTime
最大通话时间，范围：[90,120]，单位：秒
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION


NET_DVR_OUTDOOR_UNIT_RELATEDEV

门口机/围墙机/别墅门口机关联网络设备参数结构体。

struct{
  NET_DVR_IPADDR    struMainOutdoorUnit;
  NET_DVR_IPADDR    struManageUnit;
  NET_DVR_IPADDR    struSIPServer;
  BYTE          byManageCenterID[32];
  BYTE          byRes[560];
 }NET_DVR_OUTDOOR_UNIT_RELATEDEV,*LPNET_DVR_OUTDOOR_UNIT_RELATEDEV;

Members

struMainOutdoorUnit
主门口机IP地址，副门口机时有效
struManageUnit
管理机IP地址
struSIPServer
SIP服务器IP地址，副门口机时无效
byManageCenterID
标准sip模式下使用，管理中心ID，支持数字，字母，@和.
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION


NET_DVR_OUTPUT_SCHEDULE

时控输出参数结构体。

struct{
  NET_DVR_SCHEDTIME    struTime;
  BYTE                 byState;
  BYTE                 byRes[11];
}NET_DVR_OUTPUT_SCHEDULE,*LPNET_DVR_OUTPUT_SCHEDULE;

Members

struTime
时间段，XX时XX分至XX时XX分
byState
输出状态：0- 关闭，1- 开启
byRes
保留，置为0

See Also

NET_DVR_ONE_OUTPUT_SCHEDULE_RULE


NET_DVR_OUTPUT_SCHEDULE_RULECFG

时控输出配置结构体。

struct{
  DWORD                               dwSize;
  NET_DVR_ONE_OUTPUT_SCHEDULE_RULE    struOutputRule[MAX_RULE_NUM];
  BYTE                                byRes[64];
}NET_DVR_OUTPUT_SCHEDULE_RULECFG,*LPNET_DVR_OUTPUT_SCHEDULE_RULECFG;

Members

dwSize
结构体大小
struOutputRule
规则配置，最多支持8个日期区段
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40

时控输出配置结构体。

struct{
  DWORD                                   dwSize;
  NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40    struOutputRule[MAX_RULE_NUM];
  BYTE                                    byRes[64];
}NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40,*LPNET_DVR_OUTPUT_SCHEDULE_RULECFG_V40;

Members

dwSize
结构体大小
struOutputRule
规则配置，最多支持8个规则（数组下标表示规则序号），每个规则支持8个日期区段
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OUTPUT_VIDEO_TYPE

双目摄像机输出视频类型参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byType;
  BYTE     byRes[63];
}NET_DVR_OUTPUT_VIDEO_TYPE, *LPNET_DVR_OUTPUT_VIDEO_TYPE;

Members

dwSize
结构体大小
byType
输出视频类型：1- 拼接图，2- 深度图
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OUTPUTCFG

输出通道配置结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byScreenLayX;
  BYTE                  byScreenLayY;
  WORD                  wOutputChanNum;
  BYTE                  byRes1[4];
  NET_DVR_OUTPUTPARAM   struOutputParam;
  BYTE                  sWallName[16];
  BYTE                  byRes2[8];
}NET_DVR_OUTPUTCFG, *LPNET_DVR_OUTPUTCFG;

Members

dwSize
结构体大小
byScreenLayX
大屏场景-横坐标，横向屏幕个数
byScreenLayY
大屏场景-纵坐标，纵向屏幕个数
wOutputChanNum
输出通道个数，0表示设备支持的最大输出通道个数，最大个数从能力集获取，其他值表示实际输出通道个数。
byRes1
保留
struOutputParam
输出通道视频参数配置
sWallName
电视墙名称
byRes2
保留

Remarks

C10S、C10H V2.2中输出通道个数从该结构体(配置命令：NET_DVR_OUTPUT_GET）中获取，而C10H V2.1及其以下版本输出通道个数都是从能力集（NET_DVR_SCREENCONTROL_ABILITY）获取。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_OUTPUTPARAM

输出通道视频参数结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byMonMode;
  BYTE                  byRes1[3];
  DWORD                 dwResolution;
  BYTE                  byRes2[40];
}NET_DVR_OUTPUTPARAM, *LPNET_DVR_OUTPUTPARAM;

Members

dwSize
结构体大小
byMonMode
输出连接模式：1- BNC，2- VGA，3- DVI，4- HDMI
byRes1
保留
dwResolution
分辨率，根据能力集获取所支持的值进行设置
byRes2
保留

See Also

NET_DVR_OUTPUTCFG


NET_DVR_OVERLAY_CHANNEL

ATM叠加通道信息结构体。

struct{
  BYTE    byChannel[64];
  DWORD   dwDelayTime;
  BYTE    byEnableDelayTime;
  BYTE    byRes[11];
}NET_DVR_OVERLAY_CHANNEL, *LPNET_DVR_OVERLAY_CHANNEL;

Members

byChannel
是否叠加的通道，每个字节标识一个通道， 例如byChannel[0]值为1对应叠加通道1，0对应不叠加通道1
dwDelayTime
叠加延时时间
byEnableDelayTime
是否启用叠加延时
byRes
保留

See Also

NET_DVR_ATM_USER_DEFINE_PROTOCOL


NET_DVR_PACKAGE_LENGTH

ATM报文长度信息结构体。

struct{
  BYTE                      byLengthMode;
  BYTE                      byRes1[3];
  DWORD                     dwFixLength;
  DWORD                     dwMaxLength;
  DWORD                     dwMinLength;
  BYTE                      byEndMode;
  BYTE                      byRes2[3];
  NET_DVR_FRAMETYPECODE     struEndCode;
  DWORD                     dwLengthPos;
  DWORD                     dwLengthLen;
  BYTE                      byRes3[8];
}NET_DVR_PACKAGE_LENGTH,* LPNET_DVR_PACKAGE_LENGTH;

Members

byLengthMode
长度类型，0-可变长度；1-固定长度；2-自主长度（从卡号中获取）
byRes1
保留
dwFixLength
固定长度大小，长度类型为1的时候使用
dwMaxLength
报文信息最大长度，长度类型为0时使用
dwMinLength
报文信息最小长度，长度类型为0时使用
byEndMode
可变长度下的终结符模式，0-ASCII；1-HEX
byRes2
保留
struEndCode
终结符
dwLengthPos
卡号长度在报文中的位置， 长度类型为2的时候使用
dwLengthLen
卡号长度的长度， 长度类型为2的时候使用
byRes3
保留

See Also

NET_DVR_ATM_PACKAGE_OTHERS


NET_DVR_PACKAGE_LOCATION

ATM报文位置信息结构体。

struct{
  BYTE                      byOffsetMode;
  BYTE                      byRes1[3];
  DWORD                     dwOffsetPos;
  NET_DVR_FRAMETYPECODE     struTokenCode;
  BYTE                      byMultiplierValue;
  BYTE                      byEternOffset;
  BYTE                      byCodeMode;
  BYTE                      byRes2[9];
}NET_DVR_PACKAGE_LOCATION, *LPNET_DVR_PACKAGE_LOCATION;

Members

byOffsetMode
报文位置信息模式，0-token（字符标志模式）；1-fix（固定模式）
byRes1
保留
dwOffsetPos
固定偏移量大小，固定模式时使用
struTokenCode
标志位字符
byMultiplierValue
标志位出现的次数
byEternOffset
附加的偏移量
byCodeMode
字符模式，0-ASCII；1-HEX
byRes2
保留

See Also

NET_DVR_ATM_PACKAGE_ACTION NET_DVR_ATM_PACKAGE_DATE

NET_DVR_ATM_PACKAGE_OTHERS NET_DVR_ATM_PACKAGE_TIME


NET_DVR_PACKET_INFO_EX

数据包信息结构体。

struct{
  WORD             wWidth;
  WORD             wHeight;
  DWORD            dwTimeStamp;
  DWORD            dwTimeStampHigh;
  DWORD            dwYear;
  DWORD            dwMonth;
  DWORD            dwDay;
  DWORD            dwHour;
  DWORD            dwMinute;
  DWORD            dwSecond;
  DWORD            dwMillisecond;
  DWORD            dwFrameNum;
  DWORD            dwFrameRate;
  DWORD            dwFlag;
  DWORD            dwFilePos;
  DWORD            dwPacketType;
  DWORD            dwPacketSize;
  unsigned char    *pPacketBuffer;
  BYTE             byRes1[4];
  DWORD            dwPacketMode;
  BYTE             byRes2[16];
  DWORD            dwReserved[6];
}NET_DVR_PACKET_INFO_EX, *LPNET_DVR_PACKET_INFO_EX;

Members

wWidth
宽度
wHeight
高度
dwTimeStamp
时间戳低位
dwTimeStampHigh
时间戳高位
dwYear
OSD时间：年
dwMonth
OSD时间：月
dwDay
OSD时间：日
dwHour
OSD时间：时
dwMinute
OSD时间：分
dwSecond
OSD时间：秒
dwMillisecond
OSD时间：毫秒
dwFrameNum
帧号
dwFrameRate
帧率，当帧率小于0时，0x80000002表示1/2帧率，同理可推0x80000010为1/16帧率
dwFlag
flag E帧标记
dwFilePos
帧在文件中的位置
dwPacketType
包类型：0- 文件头，1- 视频I帧，2- 视频B帧， 3- 视频P帧， 10- 音频数据包， 11- 私有数据包
dwPacketSize
包数据大小
pPacketBuffer
包数据缓冲区指针
byRes1
保留，置为0
dwPacketMode
打包方式：0- 保留，1- FU_A打包方式
byRes2
保留，置为0
dwReserved
私有数据信息，保留

See Also

NET_DVR_SetESRealPlayCallBack NET_DVR_SetPlayBackESCallBack


NET_DVR_PANORAMIC_LINKAGE

全景联动到位事件信息结构体。

struct{
  DWORD             dwSize;
  DWORD             dwChannel;
  BYTE              byType;
  BYTE              byRes1[3];
  BYTE              byMACAddr[MACADDR_LEN];
  BYTE              byRes2[2];
  NET_DVR_IPADDR    struDevIP;
  DWORD             dwPicLen;
  char              *pPicBuff;
  BYTE              byRes[128];
}NET_DVR_PANORAMIC_LINKAGE, *LPNET_DVR_PANORAMIC_LINKAGE;

Members

dwSize
结构体大小
dwChannel
通道号
byType
图片类型：0- 无意义，1- 全景联动到位图片
byRes1
保留
byMACAddr
MAC地址
byRes2
保留
struDevIP
设备IP地址信息
dwPicLen
图片数据长度
pPicBuff
图片数据缓冲区指针，JPEG图片
byRes
保留

See Also

全景摄像机跟踪联动到位时上传对应的事件信息，包括抓拍图片数据。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_PANORAMIC_STITCH_UPLOAD

全景自动拼接配置文件上传条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[128];
}NET_DVR_PANORAMIC_STITCH_UPLOAD, *LPNET_DVR_PANORAMIC_STITCH_UPLOAD;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 设备是否支持上传全景自动拼接配置文件能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportPanoramicStitch>。

See Also

NET_DVR_UploadFile_V40


NET_DVR_PAPERCHARGEINFO_CFG

停车场出入口纸票信息结构体。

struct{
  DWORD    dwSize;
  char     szBarCode[LEN_16];
  char     szLicense[MAX_LICENSE_LEN];
  char     szVehicleInTime[LEN_32];
  char     szPaymentTime[LEN_32];
  float    fPaymentAmount;
  DWORD    dwPaymentOutFailureTime;
  float    byVehicleOutEnabled;
  BYTE     byRes[128];
}NET_DVR_PAPERCHARGEINFO_CFG,*LPNET_DVR_PAPERCHARGEINFO_CFG;

Members

dwSize
结构体大小
szBarCode
条形码（16位字符串）
szLicense
车牌号码
szVehicleInTime
入场时间（32位字符串 YYYY-MM-DD HH:MM:SS）
szPaymentTime
缴费时间（32位字符串 YYYY-MM-DD HH:MM:SS）
fPaymentAmount
缴费金额
dwPaymentOutFailureTime
缴费出场失效时间，单位：分钟
byVehicleOutEnabled
是否出场: 0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持停车场出入口纸票信息下发或者支持的参数能力，可以通过设备能力集进行判断，对应停车场出入口纸票信息下发能力集(PaperChargeInfo)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PAPERCHARGEINFO_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig


NET_DVR_PAPERPRINTFORMAT_CFG

纸票打印格式参数配置结构体。

struct{
  DWORD    dwSize;
  char     sTitleInfo[MAX_LITLE_INFO_LEN];
  char     sCustomInfo[MAX_CUSTOM_INFO_LEN];
  char     sPhoneNum[MAX_PHONE_NUM_LEN];
  BYTE     byPrintInTimeEnabled;
  BYTE     byRes[127];
}NET_DVR_PAPERPRINTFORMAT_CFG,*LPNET_DVR_PAPERPRINTFORMAT_CFG;

Members

dwSize
结构体大小
sTitleInfo
纸票标题内容
sCustomInfo
纸票自定义信息内容
sPhoneNum
联系电话
byPrintInTimeEnabled
是否打印入场时间：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持纸票打印格式配置或者支持的参数能力，可以通过设备能力集进行判断，对应纸票打印格式配置能力集(PaperPrintFormatInfo)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PAPERPRINTFORMAT_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_PARK_EXTERNAL_SUBINFO

外接灯模式车位信息子结构体。

struct{
  BYTE    byEnable;
  BYTE    byFlicker;
  BYTE    byIOState;
  BYTE    byRes[5];
}NET_DVR_PARK_EXTERNAL_SUBINFO, *LPNET_DVR_PARK_EXTERNAL_SUBINFO;

Members

byEnable
使能：0- 不开启，1- 开启
byFlicker
0- 不闪烁，1- 闪烁
byIOState
外置灯起效的IO状态：0- 低电平，1- 高电平
byRes
保留

See Also

NET_DVR_PARKINFO


NET_DVR_PARK_INFO

车位信息结构体。

struct{
  char   sPlateNo[MAX_PlATE_NO_LEN];
  char   sParkIndex[MAX_PlATE_NO_LEN];
  BYTE   byRes[64];
}NET_DVR_PARK_INFO, *LPNET_DVR_PARK_INFO;

Members

sPlateNo
车牌号码，不带车牌颜色，比如："浙A12345"
sParkIndex
车位编号
byRes
保留

See Also

NET_DVR_CROSSLINE_ALARM


NET_DVR_PARK_INLAY_SUBINFO

内置灯模式车位信息结构体。

struct{
  BYTE    byEnable;
  BYTE    byFlicker;
  BYTE    byLampColor;
  BYTE    byRes[21];
}NET_DVR_PARK_INLAY_SUBINFO, *LPNET_DVR_PARK_INLAY_SUBINFO;

Members

byEnable
使能：0- 不开启，1- 开启
byFlicker
0- 不闪烁，1- 闪烁
byLampColor
内置灯起效的颜色状态：0- 灭，1- 红，2- 绿，3- 黄，4- 蓝，5- 品红，6- 青，7- 白色
byRes
保留

See Also

NET_DVR_INLAY_LAMP_CTRL_MODE


NET_DVR_PARKINFO

外接灯模式车位信息结构体。

struct{
  NET_DVR_PARK_EXTERNAL_SUBINFO    struNormalParkIOState;
  NET_DVR_PARK_EXTERNAL_SUBINFO    struNormalNoParkIOState;
  NET_DVR_PARK_EXTERNAL_SUBINFO    struSpecialParkIOState;
  NET_DVR_PARK_EXTERNAL_SUBINFO    struSpecialNoParkIOState;
  BYTE                             byRes[32];
}NET_DVR_PARKINFO, *LPNET_DVR_PARKINFO;

Members

struNormalParkIOState
有车IO电平状态
struNormalNoParkIOState
无车IO电平状态
struSpecialParkIOState
特殊车位有车IO电平状态
struSpecialNoParkIOState
特殊车位无车IO电平状态
byRes
保留

See Also

NET_DVR_EXTERNAL_LAMP_CTRL_MODE


NET_DVR_PARKING_CARD

停车卡信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwChannel;
  char                szCardNo[MAX_CARDNO_LEN];
  BYTE                byCardType;
  BYTE                byCardStatus;
  BYTE                byChargeRuleID;
  BYTE                byDelete;
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struEndTime;
  BYTE                byRes[128];
}NET_DVR_PARKING_CARD,*LPNET_DVR_PARKING_CARD;

Members

dwSize
结构体大小
dwChannel
通道号，默认是1（后续兼容多通道设备）
szCardNo
卡号
byCardType
卡片类型：0- 临时卡，1- 固定卡
byCardStatus
卡片状态：0- 正常，1- 挂失，2- 注销
byChargeRuleID
收费规则ID
byDelete
是否删除：0- 不删除，1- 删除
struStartTime
有效开始时间
struEndTime
有效结束时间
byRes
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_PARKING_CARD_CTRL_PARAM

停车卡远程控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byCardType;
  BYTE     byDeleteALL;
  BYTE     byRes[62];
}NET_DVR_PARKING_CARD_CTRL_PARAM,*LPNET_DVR_PARKING_CARD_CTRL_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号，默认是1（后续兼容多通道设备）
byCardType
卡片类型：0- 临时卡
byDeleteALL
是否全部删除：0- 不删除，1- 删除
byRes
保留，置为0

See Also

NET_DVR_STDControl


NET_DVR_PARKING_DATASTATE_INFO

数据同步状态信息上传结构体。

struct{
  DWORD    dwSize;
  char     szAppSerialNum[MAX_APP_SERIALNUM_LEN];
  DWORD    dwParkingNum;
  DWORD    dwUpdataSerialNum;
  BYTE     byRes[256];
}NET_DVR_PARKING_DATASTATE_INFO,*LPNET_DVR_PARKING_DATASTATE_INFO;

Members

dwSize
结构体大小
szAppSerialNum
应用序列号，代表当前所连接的应用
dwParkingNum
当前停车场号
dwUpdataSerialNum
更新序列号，代表最后更新的序列号
byRes
保留，置为0

Remarks

  • 设备是否支持数据同步状态配置或者支持的参数能力，可以通过设备能力集进行判断，对应抓拍机和智能终端能力集(ITDeviceAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，对应节点：<ITCDataState>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PARKING_DETECTION

停车侦测配置结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byEnabled;
  BYTE                      byRes1[3];
  NET_DVR_PARKING_REGION    struRegion[MAX_REGION_NUM];
  BYTE                      byRes2[128];
}NET_DVR_PARKING_DETECTION,*LPNET_DVR_PARKING_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留
struRegion
停车侦测区域
byRes2
保留

Remarks

  • 该配置功能对应停车侦测能力集(Parking)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_PATKING_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。停车侦测的区域参数通过NET_DVR_SET_PARKING_REGION命令进行配置，每一个区域单独设置。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_PARKING_REGION

停车区域配置结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byTimeThreshold;
  BYTE               byRes[62];
}NET_DVR_PARKING_REGION,*LPNET_DVR_PARKING_REGION;

Members

struRegion
停车区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byTimeThreshold
时间阈值，取值范围:[0,10]，单位：s
byRes
保留

Remarks

设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

See Also

NET_DVR_PARKING_DETECTION


NET_DVR_PARKING_VEHICLE

停车车辆信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwChannel;
  char                szLicense[MAX_LICENSE_LEN];
  char                szRelateCardNo[MAX_CARDNO_LEN];
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struEndTime;
  BYTE                byVehicleType;
  BYTE                byPlateColor;
  BYTE                byRes[126];
}NET_DVR_PARKING_VEHICLE,*LPNET_DVR_PARKING_VEHICLE;

Members

dwSize
结构体大小
dwChannel
通道号，默认是1（后续兼容多通道设备）
szLicense
车牌号码
szRelateCardNo
关联卡号
struStartTime
有效开始时间
struEndTime
有效结束时间
byVehicleType
车辆类型：0- 其他车辆，1- 小型车，2- 大型车
byPlateColor
车牌颜色，取值详见枚举类型：VCA_PLATE_COLOR
byRes
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_PARKINGSAPCE_CFG

停车场出入口停车位信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTotalParkingLot;
  DWORD    dwCurrParkingLot;
  BYTE     byRes[128];
}NET_DVR_PARKINGSAPCE_CFG,*LPNET_DVR_PARKINGSAPCE_CFG;

Members

dwSize
结构体大小
dwTotalParkingLot
总停车位数
dwCurrParkingLot
当前剩余停车位数
byRes
保留，置为0

Remarks

  • 设备是否支持停车场出入口停车位信息下发或者支持的参数能力，可以通过设备能力集进行判断，对应停车场出入口停车位信息下发能力集(ParkingSpaceInfo)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PARKINGSAPCE_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig


NET_DVR_PARKLAMP_COND

停车场信号灯状态查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byParkingIndex;
  BYTE     byRes[15];
}NET_DVR_PARKLAMP_COND, *LPNET_DVR_PARKLAMP_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byParkingIndex
相对车位号，取值：1～4
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_PARKLAMP_INFOCFG

停车场信号灯状态信息结构体。

struct{
  DWORD    dwSize;
  char     sLicense[MAX_LICENSE_LEN];
  char     sParkingNo[MAX_LICENSE_LEN];
  BYTE     byLampFlicker;
  BYTE     byLampColor;
  BYTE     byStatus;
  BYTE     byColorDepth;
  BYTE     byColor;
  BYTE     byVehicleLogoRecog;
  BYTE     byRes[250];
}NET_DVR_PARKLAMP_INFOCFG, *LPNET_DVR_PARKLAMP_INFOCFG;

Members

dwSize
结构体大小
sLicense
车牌号码
sParkingNo
车位编号(实际的车位编号)
byLampFlicker
车位指示灯是否闪烁：0- 不闪烁，1- 闪烁()
byLampColor
车位指示灯颜色：0- 灭，1- 红，2- 绿，3- 黄，4- 蓝，5- 品红，6- 青，7- 白色
byStatus
车位状态：0- 无车，1- 有车
byColorDepth
车身颜色深浅：0- 深色，1- 浅色
byColor
车身颜色：0- 其他色，1- 白色，2- 银色，3- 灰色，4- 黑色，5- 红色，6- 深蓝，7- 蓝色，8- 黄色，9- 绿色，10- 棕色，11- 粉色，12- 紫色，13- 深灰，14- 青色，0xff- 未进行车身颜色识别
byVehicleLogoRecog
车辆品牌类型识别，定义详见VLR_VEHICLE_CLASS
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_PARKSPACE_ATTRIBUTE

车位属性配置结构体。

struct{
  DWORD                     dwSize;
  NET_DVR_PARKSPACE_INFO    struParkSpaceInfo[MAX_PARKING_NUM];
  BYTE                      byRes[64];
}NET_DVR_PARKSPACE_ATTRIBUTE, *LPNET_DVR_PARKSPACE_ATTRIBUTE;

Members

dwSize
结构体大小
struParkSpaceInfo
车位属性，一个通道最大4个车位 (从左到右车位对应数组0～3)
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PARKSPACE_INFO

车位属性信息结构体。

struct{
  BYTE    byParkSpaceAttribute;
  BYTE    byRes[23];
}NET_DVR_PARKSPACE_INFO, *LPNET_DVR_PARKSPACE_INFO;

Members

byParkSpaceAttribute
0- 普通车位(默认)，1- 特殊车位
byRes
保留，置为0

See Also

NET_DVR_PARKSPACE_ATTRIBUTE


NET_DVR_PASSBACK_DAY

录像回传全天计划参数结构体。

struct{
  BYTE    byAllDay;
  BYTE    byRes[3];
}NET_DVR_PASSBACK_DAY, *LPNET_DVR_PASSBACK_DAY;

Members

byAllDay
是否启用全天回传：0- 否，1- 是
byRes
保留，置为0

See Also

NET_DVR_RECORD_PASSBACK_SCH_CFG NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG


NET_DVR_PASSBACK_SCHED

录像回传时间段计划参数结构体。

struct{
  NET_DVR_SCHEDTIME    struPassBackTime;
  BYTE                 byRes[4];
}NET_DVR_PASSBACK_SCHED, *LPNET_DVR_PASSBACK_SCHED;

Members

struPassBackTime
回传任务时间段，开始时间和结束时间
byRes
保留，置为0

See Also

NET_DVR_RECORD_PASSBACK_SCH_CFG NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG


NET_DVR_PASSIVEDECODE_CONTROL

被动解码控制参数。

struct{
  DWORD    dwSize;
  DWORD    dwPlayCmd;
  DWORD    dwCmdParam;
  BYTE     byRes[16];
}NET_DVR_PASSIVEDECODE_CONTROL,*LPNET_DVR_PASSIVEDECODE_CONTROL;

Members

dwSize
结构体大小
dwPlayCmd
解码器播放控制状态命令，见下表
宏定义 | 宏定义值 | 含义
PASSIVE_DEC_PAUSE | 1 | 被动解码暂停（仅对文件流有效）
PASSIVE_DEC_RESUME | 2 | 恢复被动解码（仅对文件流有效）
PASSIVE_DEC_FAST | 3 | 快速被动解码（仅对文件流有效）
PASSIVE_DEC_SLOW | 4 | 慢速被动解码（仅对文件流有效）
PASSIVE_DEC_NORMAL | 5 | 正常被动解码（仅对文件流有效）
PASSIVE_DEC_ONEBYONE | 6 | 被动解码单帧播放（保留）
PASSIVE_DEC_AUDIO_ON | 7 | 音频开启
PASSIVE_DEC_AUDIO_OFF | 8 | 音频关闭
PASSIVE_DEC_RESETBUFFER | 9 | 清空缓冲区
dwCmdParam
被动解码控制参数
byRes
保留

Remarks

该结构中的第三个参数是否需要输入数值与控制命令有关。

See Also

NET_DVR_MatrixPassiveDecodeControl


NET_DVR_PASSIVETRANSINFO

被动转码信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byStreamType;
  BYTE     byLinkMode;
  BYTE     byPassiveTransMode;
  BYTE     byRes1[5];
  BYTE     byDataType;
  BYTE     byRes2;
  WORD     wDataLength;
  char     *pBuffer;
  BYTE     byRes3[32];
}NET_DVR_PASSIVETRANSINFO, *LPNET_DVR_PASSIVETRANSINFO;

Members

dwSize
结构体大小
byStreamType
码流类型：0-主码流，1-子码流
byLinkMode
连接模式：0-TCP方式，1-UDP方式
byPassiveTransMode
被动转码模式：1-实时流，2-文件流
byRes1
保留
byDataType
缓冲区数据类型：1-SDP信息，2-码流头。发送RTP码流时，需要先送SDP信息；其他码流时，需要先送码流头数据。
byRes2
保留
wDataLength
数据长度
pBuffer
缓冲区，存放码流头数据或者SDP信息
byRes3
保留

See Also

NET_DVR_StartPassiveTransCode


NET_DVR_PASSNUM_INFO_ALARM

通行人数信息上传结构体。

struct{
  DWORD               dwSize;
  DWORD               dwAccessChannel;
  NET_DVR_TIME_V30    struSwipeTime;
  BYTE                byNetUser[MAX_NAMELEN];
  NET_DVR_IPADDR      struRemoteHostAddr;
  DWORD               dwEntryTimes;
  DWORD               dwExitTimes;
  DWORD               dwTotalTimes;
  BYTE                byRes[300];
}NET_DVR_PASSNUM_INFO_ALARM, *LPNET_DVR_PASSNUM_INFO_ALARM;

Members

dwSize
结构体大小
dwAccessChannel
人员通道号
struSwipeTime
刷卡时间
byNetUser
网络操作的用户名
struRemoteHostAddr
远程主机地址
dwEntryTimes
人员进入次数
dwExitTimes
人员离开次数
dwTotalTimes
人员出入总次数
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_PATROL_SCENE_INFO

单个场景巡航路径配置结构。

struct{
  WORD   wDwell;
  BYTE   byPositionID;
  BYTE   byRes[5];
}NET_DVR_PATROL_SCENE_INFO, *LPNET_DVR_PATROL_SCENE_INFO;

Members

wDwell
停留时间，范围[30,300]
byPositionID
场景号从1到10，默认0表示该巡航点不添加场景
byRes2
保留

See Also

NET_DVR_PATROL_TRACKCFG


NET_DVR_PATROL_TRACKCFG

场景巡航路径配置结构。

struct{
  DWORD                       dwSize;
  NET_DVR_PATROL_SCENE_INFO   struPatrolSceneInfo[10];
  BYTE                        byRes[16];
}NET_DVR_PATROL_TRACKCFG, *LPNET_DVR_PATROL_TRACKCFG;

Members

dwSize
结构体大小
struPatrolSceneInfo
巡航路径
byRes2
保留

See Also

NET_DVR_GetPatrolTrack NET_DVR_SetPatrolTrack


NET_DVR_PDC_ALRAM_INFO

客流量统计结果参数结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byMode;
  BYTE                     byChannel;
  BYTE                     bySmart;
  BYTE                     byRes1;
  NET_VCA_DEV_INFO         struDevInfo;
  union{
           struct{
           DWORD           dwRelativeTime;
           DWORD           dwAbsTime;
           BYTE            byTimeDiffFlag;
           signed char     cTimeDifferenceH;
           signed char     cTimeDifferenceM;
           BYTE            byRes[89];
           }struStatFrame;
           struct{
           NET_DVR_TIME    tmStart;
           NET_DVR_TIME    tmEnd;
           BYTE            byTimeDifferenceFlag;
           signed char     cStartTimeDifferenceH;
           signed char     cStartTimeDifferenceM;
           signed char     cStopTimeDifferenceH;
           signed char     cStopTimeDifferenceM;
           BYTE            byRes[87];
           }struStatTime;
  }uStatModeParam;
  DWORD                    dwLeaveNum;
  DWORD                    dwEnterNum;
  BYTE                     byBrokenNetHttp;
  BYTE                     byRes3;
  WORD                     wDevInfoIvmsChannelEx;
  DWORD                    dwPassingNum;
  DWORD                    dwChildLeaveNum;
  DWORD                    dwChildEnterNum;
  DWORD                    dwDuplicatePeople;
  DWORD                    dwXmlLen;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  char*                    pXmlBuf;
  #else
  char*                    pXmlBuf;
  BYTE                     byRes4[4];
  #endif
  BYTE                     byRes2[8];
}NET_DVR_PDC_ALRAM_INFO,*LPNET_DVR_PDC_ALRAM_INFO;

Members

dwSize
结构体大小
byMode
数据统计模式：0-实时统计结果(联合体中struStatFrame有效)，1-周期统计结果(联合体中struStatTime有效)，2-信号量触发(联合体中struStatTime有效)
byChannel
报警上传通道号
bySmart
0- iDS专业智能设备返回，1- Smart设备返回
byRes1
保留
struDevInfo
前端设备信息
struStatFrame结构为实时统计结果参数
dwRelativeTime
统计相对时标
dwAbsTime
统计绝对时标
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留
struStatTime结构为周期统计或者信号量触发结果参数
tmStart
统计开始时间
tmEnd
统计结束时间
byTimeDifferenceFlag
0-默认行为，cStartTimeDifferenceH等时差信息无效，1-时差信息有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留
dwLeaveNum
离开人数
dwEnterNum
进入人数
byBrokenNetHttp
断网续传标志位：0- 不是重传数据，1- 重传数据
byRes3
保留
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
dwPassingNum
经过人数（进入区域后徘徊没有触发进入、离开的人数）
byRes2
保留

Remarks

  • 客流量数据上传有两种不同类型的数据：
    1）实时统计结果（byMode为0）：自上次清零动作（包括设备重启、手动清零或每天零点自动清零）后开始计算的实时数量，计数发生变化时上传。
    2）周期统计结果（byMode为1）：设定统计周期内增加的数量，更新频率即为设定的统计周期（默认15分钟，最小1分钟，最大60分钟）。
  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_PDC_CALIBRATION

客流量统计标定参数结构体。

struct{
  NET_DVR_RECT_LIST    struRectList;
  BYTE                 byRes[120];
}NET_DVR_PDC_CALIBRATION, *LPNET_DVR_PDC_CALIBRATION;

Members

struRectList
标定矩形框参数列表
byRes
保留

See Also

NET_DVR_CALIBRATION_PRARM_UNION


NET_DVR_PDC_ENTER_DIRECTION

流量统计方向参数结构体。

struct{
  NET_VCA_POINT    struStartPoint;
  NET_VCA_POINT    struEndPoint;
}NET_DVR_PDC_ENTER_DIRECTION, *LPNET_DVR_PDC_ENTER_DIRECTION;

Members

struStartPoint
起始点参数
struEndPoint
终止点参数

See Also

NET_DVR_SETUP_CALIB_RESULT NET_DVR_PDC_RULE_CFG_V42 NET_DVR_PDC_RULE_CFG_V41 NET_DVR_PDC_RULE_CFG


NET_DVR_PDC_LINE_CALIBRATION

PDC线标定参数结构体。

struct{
  NET_VCA_LINE    struCalibrationLine;
  BYTE            byRes[224];
}NET_DVR_PDC_LINE_CALIBRATION,*LPNET_DVR_PDC_LINE_CALIBRATION;

Members

struCalibrationLine
PDC标定线参数
byRes
保留，置为0

See Also

NET_DVR_CALIBRATION_PRARM_UNION


NET_DVR_PDC_QUERY

客流量统计信息结构体。

struct{
  NET_DVR_TIME     tmStart;
  NET_DVR_TIME     tmEnd;
  DWORD            dwLeaveNum;
  DWORD            dwEnterNum;
  BYTE             byRes1[256];
}NET_DVR_PDC_QUERY, *LPNET_DVR_PDC_QUERY;

Members

tmStart
统计开始时间
tmEnd
统计结束时间
dwLeaveNum
离开人数
dwEnterNum
进入人数
byRes1
保留

See Also

NET_DVR_FindNextPDCInfo


NET_DVR_PDC_QUERY_COND

客流量数据查询条件结构体。

struct{
  DWORD              dwSize;
  DWORD              dwChannel;
  NET_DVR_TIME_EX    struStartTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byReportType;
  BYTE               byEnableProgramStatistics;
  BYTE               byTriggerPeopleCountingData;
  BYTE               byRes1;
  DWORD              dwPlayScheduleNo;
  BYTE               byRes[120];
}NET_DVR_PDC_QUERY_COND, *LPNET_DVR_PDC_QUERY_COND;

Members

dwSize
结构体大小
dwChannel
通道号
struStartTime
查询开始时间
struEndTime
查询结束时间
byReportType
查询类型：0- 无效值，1- 日报表，2- 周报表，3- 月报表，4- 年报表
byEnableProgramStatistics
是否按节目统计：0- 否，1- 是
byTriggerPeopleCountingData
触发客流统计数据查询使能(开启之后只查询信号量触发的客流量数据)：0- 否，1- 是
byRes1
保留
dwPlayScheduleNo
按节目统计时关联的日程号
byRes
保留

Remarks

查询结束时间只用于简单的“开始时间是否早于结束时间”的校验，查询的是时间段长短仍以开始时间及查询方式为准，比如：开始时间是7月1日，结束时间是8月1日，查询方式是周查询，则设备自动查询的是7.1~7.7的信息。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_PDC_RECOMMEND

客流统计表示推荐值信息结构体。

struct{
  DWORD    dwSize;
  WORD     wWidth;
  BYTE     byRes[126];
}NET_DVR_PDC_RECOMMEND,*LPNET_DVR_PDC_RECOMMEND;

Members

dwSize
结构体大小
wWidth
推荐宽度值，取值范围：[0, 1000]
byRes
保留，置为0

Remarks

  • 设备是否支持客流统计表示推荐值功能，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PDC>中的子节点<isSupportRecommendedValue>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_PDC_RESULT

客流量数据查询结果结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_TIME_EX         struStartTime;
  NET_DVR_TIME_EX         struEndTime;
  DWORD                   dwEnterNum;
  DWORD                   dwLeaveNum;
  NET_DVR_PROGRAM_INFO    struProgramInfo;
  DWORD                   dwPeoplePassing;
  BYTE                    byRes[200];
}NET_DVR_PDC_RESULT, *LPNET_DVR_PDC_RESULT;

Members

dwSize
结构体大小
struStartTime
开始时间
struEndTime
结束时间
dwEnterNum
进入人数
dwLeaveNum
离开人数
struProgramInfo
节目信息
dwPeoplePassing
经过人数
byRes
保留

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_PDC_RULE_CFG

客流量规则配置参数结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[23];
  NET_VCA_POLYGON                struPolygon;
  NET_DVR_PDC_ENTER_DIRECTION    struEnterDirection;
}NET_DVR_PDC_RULE_CFG, *LPNET_DVR_PDC_RULE_CFG;

Members

dwSize
结构体大小
byEnable
是否激活规则，0-不启用，1-启用
byRes1
保留
struPolygon
规则多边形参数
struEnterDirection
流量进入方向

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PDC_RULE_CFG_V41

客流量规则配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[23];
  NET_VCA_POLYGON                struPolygon;
  NET_DVR_PDC_ENTER_DIRECTION    struEnterDirection;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_TIME_EX                struDayStartTime;
  NET_DVR_TIME_EX                struNightStartTime;
  BYTE                           byRes[100];
 }NET_DVR_PDC_RULE_CFG_V41,*LPNET_DVR_PDC_RULE_CFG_V41;

Members

dwSize
结构体大小
byEnable
是否激活客流量规则：0-否，1-是
byRes1
保留，置为0
struPolygon
多边形规则区域
struEnterDirection
流量进入方向
struAlarmTime
布防时间
struDayStartTime
白天开始时间，时分秒有效
struNightStartTime
夜晚开始时间，时分秒有效
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PDC_RULE_CFG_V42

客流量规则配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byOSDEnable;
  BYTE                           byCurDetectType;
  BYTE                           byInterferenceSuppression;
  NET_VCA_POINT                  struOSDPoint;
  BYTE                           byDataUploadCycle;
  BYTE                           bySECUploadEnable;
  BYTE                           byEmailDayReport;
  BYTE                           byEmailWeekReport;
  BYTE                           byEmailMonthReport;
  BYTE                           byEmailYearReport;
  BYTE                           byRes2[6];
  NET_VCA_POLYGON                struPolygon;
  NET_DVR_PDC_ENTER_DIRECTION    struEnterDirection;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_TIME_EX                struDayStartTime;
  NET_DVR_TIME_EX                struNightStartTime;
  NET_DVR_HANDLEEXCEPTION_V40    struAlarmHandleType;
  BYTE                           byDetecteSensitivity;
  BYTE                           byGenerateSpeedSpace;
  BYTE                           byGenerateSpeedTime;
  BYTE                           byCountSpeed;
  BYTE                           byDetecteType;
  BYTE                           byTargetSizeCorrect;
  BYTE                           byStreamOverlayRuleInfos;
  BYTE                           byRes3;
  NET_VCA_LINE                   struLine;
  BYTE                           byHeightFilterEnable;
  BYTE                           byRes4[3];
  float                          fHeightFilter;
  BYTE                           byCalibrateType;
  BYTE                           byCountingType;
  BYTE                           bySignalType;
  BYTE                           byRS485TransmissionEnabled;
  float                          fTiltAngle;
  float                          fHeelAngle;
  float                          fHeight;
  NET_VCA_POLYGON                struCountPolygon;
  NET_VCA_POLYGON                struAutoCalibPolygon;
  NET_DVR_TIME_EX                struDailyResetTime;
  NET_VCA_POLYLINE               struPolyLine;
  BYTE                           byRes[4];
 }NET_DVR_PDC_RULE_CFG_V42,*LPNET_DVR_PDC_RULE_CFG_V42;

Members

dwSize
结构体大小
byEnable
是否激活客流量规则：0-否，1-是
byOSDEnable
客流统计OSD显示是否启用：0- 否(进入和离开数据均不显示)，1- 是(进入和离开数据均显示)，2- 仅显示进入数据，3- 仅显示离开数据，4- 经过人数，5- 进入和经过
byCurDetectType
当前检测区域类型：0- 多边形，1- 检测线，2- 检测折线
byInterferenceSuppression
干扰抑制，按位表示，bit0-阴影，bit1-徘徊，bit2-推车，取值：0- 不启用，1- 启用
例如：byInterferenceSuppression为7（二进制为111），表示阴影、徘徊、推车等干扰抑制均启用
struOSDPoint
客流统计显示OSD显示左上角坐标
byDataUploadCycle
客流量检测数据上传周期：0- 15，1- 1，2- 5，3- 10，4- 20，5- 30，6- 60，单位：分钟
bySECUploadEnable
每秒上传机制使能：0- 关闭，1- 开启
byEmailDayReport
客流日报表邮件上传使能：0- 关闭，1- 开启
byEmailWeekReport
客流周报表邮件上传使能：0- 关闭，1- 开启
byEmailMonthReport
客流月报表邮件上传使能：0- 关闭，1- 开启
byEmailYearReport
客流年报表邮件上传使能：0- 关闭，1- 开启
byRes2
保留，置为0
struPolygon
多边形规则区域，byCurDetectType为0时有效
struEnterDirection
流量进入方向
struAlarmTime
布防时间
struDayStartTime
白天开始时间，时分秒有效
struNightStartTime
夜晚开始时间，时分秒有效
struAlarmHandleType
处理方式 仅支持上传中心
byDetecteSensitivity
目标检测灵敏度，取值范围：1~100，默认：50
byGenerateSpeedSpace
目标生成速度（空域），取值范围：1~100，默认：50
byGenerateSpeedTime
目标生成速度（时域），取值范围：1~100，默认：50
byCountSpeed
计数速度，取值范围：1~100，默认：50
byDetecteType
目标检测类型：0-自动，1-人头，2-头肩，默认0-自动，自动模式下DSP调整算法的参数配置给算法库
byTargetSizeCorrect
目标尺寸修正，取值范围：1~100，默认：50
byStreamOverlayRuleInfos
码流智能信息叠加：0- 否，1- 是
byRes3
保留，置为0
struLine
检测线，byCurDetectType为1时有效
byHeightFilterEnable
高度过滤是否开启：0- 关闭，1- 开启
byRes4
保留，置为0
fHeightFilter
过滤高度(byHeightFilterEnable为1时有效)，单位：厘米，默认值：120厘米，范围：40~200厘米
byCalibrateType
标定类型：0- 未进行标定，1- 自动标定，2- 手动标定
byCountingType
计数触发方式：0- 无，1- 报警输入触发，2- 视频分析触发
bySignalType
信号类型：0- 电平(连接报警输入1，配置为常开模式，高电平是开门，低电平是关门)，1- 脉冲(需要连接报警输入1【开门】和报警输入2【关门】，配置为常开模式，检测上升沿，持续时间至少10ms)
byRS485TransmissionEnabled
启用485传输（开启之后可以通过RS485串口传输客流量数据）：0- 关闭，1- 开启
fTiltAngle
俯仰角，单位：度，默认值：0，取值范围：0~180，只读
fHeelAngle
倾斜角，单位：度，默认值：0，取值范围：-90~90，只读
fHeight
标定高度(摄像机镜头离地高度，byCalibrateType为2时设置有效，其余时只读)，单位：厘米，默认值：300，取值范围：200~500
struCountPolygon
计数区域，只读
struAutoCalibPolygon
自动标定区域(对于车载客流来说，该参数表示踏板区域)，当byCalibrateType为1时有效
struDailyResetTime
定时清零(客流统计OSD实时数据清零，设备默认为零点清零)
struPolyLine
折线检测区域，byCurDetectType为2时有效
byRes
保留，置为0

Remarks

  • 设备是否支持客流量能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PDC>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PDC_RULE_COND

客流量统计规则配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwID;
  BYTE     byRes[60];
}NET_DVR_PDC_RULE_COND, *LPNET_DVR_PDC_RULE_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwID
场景ID，兼容球机多场景概念，为了兼容老版本，该字节为0时默认为场景1
byRes
保留

See Also

SMART智能参数配置：NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig

专业智能参数配置：NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PEOPLE_DETECTION_RESULT

人员侦测结果信息结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwRelativeTime;
  DWORD                    dwAbsTime;
  NET_VCA_DEV_INFO         struDevInfo;
  NET_DVR_PEOPLE_REGION    struPeopleRegion[MAX_PEOPLE_DETECTION_NUM];
  BYTE                      byRes[256];
}NET_DVR_PEOPLE_DETECTION_RESULT, *LPNET_DVR_PEOPLE_DETECTION_RESULT;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
struPeopleRegion
人员侦测区域信息，每位数组表示一个区域，最大支持8个侦测区域
byRes
保留

Remarks

  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_PEOPLE_REGION

人员检测区域信息结构体。

struct{
  BYTE            byID;
  BYTE            byNumber;
  BYTE            byRes[2];
  NET_VCA_RECT    struRegion;
  BYTE            byRes1[32];
 }NET_DVR_PEOPLE_REGION,*LPNET_DVR_PEOPLE_REGION;

Members

byID
区域ID
byNumber
区域中的人员数量，0表示区域中没有人员
byRes
保留，置为0
struRegion
区域范围
byRes1
保留，置为0

See Also

NET_DVR_PEOPLE_DETECTION_RESULT


NET_DVR_PERSON_STATISTICS_CFG

人数统计参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableStatistics;
  BYTE     byEnableOfflineStatistics;
  BYTE     byCountSignalStatisticalStandard;
  BYTE     byRes[605];
}NET_DVR_PERSON_STATISTICS_CFG, *LPNET_DVR_PERSON_STATISTICS_CFG;

Members

dwSize
结构体大小
byEnableStatistics
是否开启人数统计：0- 不开启，1- 开启
byEnableOfflineStatistics
是否开启离线人数统计：0- 不开启，1- 开启
byCountSignalStatisticalStandard
计数信号统计标准：0- 无效，1- 红外检测通行统计，2- 认证数量统计
byRes
保留，置为0

Remarks

  • 设备是否支持人数统计功能或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility )， 相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<PersonStatisticsCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PERSONNEL_CHANNEL_CFG

门禁主机人员通道参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byInMode;
  BYTE     byOutMode;
  BYTE     byWorkMode;
  BYTE     byRes[301];
}NET_DVR_PERSONNEL_CHANNEL_CFG,*LPNET_DVR_PERSONNEL_CHANNEL_CFG;

Members

dwSize
结构体大小
byInMode
进门模式：0- 受控，1- 禁止，2- 自由
byOutMode
出门模式：0- 受控，1- 禁止，2- 自由
byWorkMode
工作模式：0- 紧急，1- 维护，2- 常闭，3- 常开
byRes
保留，置为0

Remarks

  • 设备是否支持人员通道参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<PersonnelChannelCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PHONE_DOOR_RIGHT_CFG

手机关联门权限参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byOpenRight[MAX_DOOR_NUM_256];
  BYTE     byCloseRight[MAX_DOOR_NUM_256];
  BYTE     byNormalOpenRight[MAX_DOOR_NUM_256];
  BYTE     byNormalCloseRight[MAX_DOOR_NUM_256];
  BYTE     byArmRight[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byDisarmRight[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE     byRes[256];
}NET_DVR_PHONE_DOOR_RIGHT_CFG, *LPNET_DVR_PHONE_DOOR_RIGHT_CFG;

Members

dwSize
结构体大小
byOpenRight
是否有开门权限，按数组表示，数组下标表示门序号，数组值：0- 无权限，1- 有权限
byCloseRight
是否有关门权限，按数组表示，数组下标表示门序号，数组值：0- 无权限，1- 有权限
byNormalOpenRight
是否有常开权限，按数组表示，数组下标表示门序号，数组值：0- 无权限，1- 有权限
byNormalCloseRight
是否有常闭权限，按数组表示，数组下标表示门序号，数组值：0- 无权限，1- 有权限
byArmRight
是否有布防权限，按数组表示，数组下标表示报警输入口序号，数组值：0- 无权限，1- 有权限
byDisarmRight
是否有撤防权限，按数组表示，数组下标表示报警输入口序号，数组值：0- 无权限，1- 有权限
byRes
保留

Remarks

  • 设备是否支持手机关联门权限配置或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<SMS>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PHONECENTERDIALCFG

中心参数配置结构体。

struct{
  BYTE    sCenterName[NAME_LEN];
  BYTE    byPhoneNum[MAX_PHONE_NUM];
  BYTE    byRepeatCall;
  BYTE    byPstnProtocol;
  BYTE    byDialDelay;
  BYTE    byPstnTransMode;
  BYTE    byEnable;
  BYTE    byRes1[5];
  BYTE    byReceiverId[6];
  BYTE    byRes2[32];
}NET_DVR_PHONECENTERDIALCFG, *LPNET_DVR_PHONECENTERDIALCFG;

Members

sCenterName
中心名称
byPhoneNum
拨号号码
byRepeatCall
重复拨号次数，取值范围：1~15次
byPstnProtocol
通信协议：0- CID
byDialDelay
拨号延时， 取值范围：0~150s
byPstnTransMode
传输方式：0- DTMF 5/S，1- DTMF 10/S
byEnable
使能，0-关闭，1-启用
byRes1
保留
byReceiverId
接收机识别账号
byRes2
保留

See Also

NET_DVR_ALARMHOSTDIALCFG


NET_DVR_PHONECFG

电话配置结构体。

struct{
  BYTE    byAllowList[MAX_PHONE_NUM];
  BYTE    byPhonePerssion[32];
  BYTE    byAlarmHandler[32];
  BYTE    byRes[128];
}NET_DVR_PHONECFG,*LPNET_DVR_PHONECFG;

Members

byAllowList
授权名单号码
byPhonePerssion
是否使能该号码的某功能，按字节表示：
0x0: 支持接收报警短信
0x1: 支持短信控制上下线
0x2: 支持呼叫控制上线
0x3: 支持短信重启
0x4: 支持门操作控制
byAlarmHandler
是否使能对某个报警类型的短信发送，取值：0- 否，1-是，按字节表示:
0x0: 硬盘满
0x1: 硬盘错
0x2: 网线断
0x3: IP地址冲突
0x4: 非法访问
0x5: 视频信号异常
0x6: 输入/输出视频制式不匹配
0x7: 视频无信号
0x8: 音频无信号
0x9: 报警输入
0xa: 遮挡报警
0xb: 移动侦测
0xc: 录像异常
0xd: PIR报警
0xe: 无线报警
0xf: 呼救报警
0x10: 音频异常侦测报警
0x11: 场景侦测报警
0x12: 虚焦侦测报警
0x13: 人脸侦测报警
0x14: 越界侦测报警
0x15: 区域入侵侦测报警
0x16: 离开区域侦测报警
0x17: 进入区域报警
0x18: 人员徘徊侦测报警
0x19: 人员聚集侦测报警
0x1a: 快速移动侦测报警
0x1b: 停车侦测报警
0x1c: 物品遗留侦测报警
0x1d: 物品拿取侦测报警
byRes
保留，置为0

See Also

NET_DVR_SMSRELATIVEPARAM


NET_DVR_PHONECFG_V50

电话配置结构体。

struct{
  BYTE    byAllowList[MAX_PHONE_NUM];
  BYTE    byPhonePerssion[32];
  BYTE    byAlarmHandler[32];
  BYTE    byAcsPassword[16];
  BYTE    byRes[112];
}NET_DVR_PHONECFG_V50,*LPNET_DVR_PHONECFG_V50;

Members

byAllowList
授权名单号码
byPhonePerssion
是否使能该号码的某功能，按字节表示：
0x0: 支持接收报警短信
0x1: 支持短信控制上下线
0x2: 支持呼叫控制上线
0x3: 支持短信重启
0x4: 支持门操作控制
byAlarmHandler
是否使能对某个报警类型的短信发送，取值：0- 否，1-是，按字节表示:
0x0: 硬盘满
0x1: 硬盘错
0x2: 网线断
0x3: IP地址冲突
0x4: 非法访问
0x5: 视频信号异常
0x6: 输入/输出视频制式不匹配
0x7: 视频无信号
0x8: 音频无信号
0x9: 报警输入
0xa: 遮挡报警
0xb: 移动侦测
0xc: 录像异常
0xd: PIR报警
0xe: 无线报警
0xf: 呼救报警
0x10: 音频异常侦测报警
0x11: 场景侦测报警
0x12: 虚焦侦测报警
0x13: 人脸侦测报警
0x14: 越界侦测报警
0x15: 区域入侵侦测报警
0x16: 离开区域侦测报警
0x17: 进入区域报警
0x18: 人员徘徊侦测报警
0x19: 人员聚集侦测报警
0x1a: 快速移动侦测报警
0x1b: 停车侦测报警
0x1c: 物品遗留侦测报警
0x1d: 物品拿取侦测报警
0x1e: 流量超额，其他见SDK开发手册
byAcsPassword
开门命令
byRes
保留，置为0

See Also

NET_DVR_SMSRELATIVEPARAM


NET_DVR_PHY_DISK_INFO

单个物理磁盘参数结构体。

struct{
  WORD    wPhySlot;
  BYTE    byType;
  BYTE    byStatus;
  BYTE    byMode[40];
  DWORD   dwHCapacity;
  DWORD   dwLCapacity;
  BYTE    byArrrayName[MAX_NAMELEN];
  WORD    wArrayID;
  BYTE    byRes[102];
}NET_DVR_PHY_DISK_INFO, *LPNET_DVR_PHY_DISK_INFO;

Members

wPhySlot
硬盘槽位，从0开始
byType
硬盘信息：0- 普通，1- 全局热备，2- 阵列热备，3- 阵列盘
byStatus
硬盘状态：0- 正常，1- 降级，2- 已删除，3- 磁盘丢失，4- 下线，5- 次正常，6- 外来，7- 异常，8- SMART状态异常，9- 休眠，0xff- 不存在
byMode
硬盘类型（字符串）
dwHCapacity
磁盘总量高32位(单位kb)
dwLCapacity
磁盘总量低32位
wArrayID
所属阵列ID
byRes
保留，置为0

See Also

NET_DVR_PHY_DISK_LIST

NET_DVR_StartRemoteConfig


NET_DVR_PHY_DISK_LIST

物理磁盘参数结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwCount;
  NET_DVR_PHY_DISK_INFO    struPhyDiskInfo[SUPPORT_PD_NUM];
}NET_DVR_PHY_DISK_LIST, *LPNET_DVR_PHY_DISK_LIST;

Members

dwSize
结构体大小
dwCount
物理磁盘个数
struPhyDiskInfo
单个物理磁盘信息

See Also

NET_DVR_GetPDList


NET_DVR_PHY_RATIO

物理倍率坐标参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPhysicsRatio;
  BYTE     byRes[60];
}NET_DVR_PHY_RATIO, *LPNET_DVR_PHY_RATIO;

Members

dwSize
结构体大小
dwPhysicsRatio
物理倍率坐标
byRes
保留，置为0

Remarks

物理倍率坐标参数能力，对应设备前端参数能力集(CAMERAPARA)中<FocusMode>的子节点<physicsRatio>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：IPC_FRONT_PARAMETER_V20。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PIC

取色参考图片参数结构体。

struct{
  BYTE     byPicType;
  BYTE     byRes1[3];
  DWORD    dwPicWidth;
  DWORD    dwPicHeight;
  DWORD    dwPicDataLen;
  DWORD    dwPicDataBuffLen;
  BYTE     *byPicDataBuff;
  BYTE     byRes2[40];
}NET_DVR_PIC, *LPNET_DVR_PIC;

Members

byPicType
图片类型：1-jpg
byRes1
保留，置为0
dwPicWidth
图片宽度
dwPicHeight
图片高度
dwPicDataLen
图片数据实际大小
dwPicDataBuffLen
图片数据缓冲区大小
byPicDataBuff
图片数据缓冲区，由客户端自行分配，用于保存获取的图片数据
byRes2
保留，置为0

Remarks

图片大小建议不要超过400*300像素。

See Also

NET_DVR_OBJECT_COLOR_UNION


NET_DVR_PIC_ADJUST

图像微调参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySubCommand;
  BYTE     byScale;
  BYTE     byPictureProportion;
  BYTE     byRes[29];
}NET_DVR_PIC_ADJUST,*LPNET_DVR_PIC_ADJUST;

Members

dwSize
结构体大小
bySubCommand
微调命令
宏定义 | 宏定义值 | 含义
DECODEPIC_LEFTADJUST | 1 | 图像左移
DECODEPIC_RIGHTADJUST | 2 | 图像右移
DECODEPIC_UPADJUST | 3 | 图像上移
DECODEPIC_DOWNADJUST | 4 | 图像下移
DECODEPIC_FULL_SCREEN_ADJUST | 6 | 图像全屏，分布式多屏控制器支持
DECODEPIC_CANCEL_FULL_SCREEN_ADJUST | 7 | 图像取消全屏显示，分布式多屏控制器支持
byScale
调整的量值，大于0的整型值，表示移动距离，单位为：个（像素）。例如，dwPicAdjust = DECODEPIC_LEFTADJUST，dwCmdParam = 1，表示图片向左移动一个像素点。
byPictureProportion
图像缩放比例：1- 4:3，2- 16:9
byRes
保留，置为0

Remarks

当命令为6时，byPictureProportion有效；命令为7时，byScale和byPictureProportion都无效。

See Also

NET_DVR_SetDeviceConfig


NET_DVR_PIC_EXTRA_INFO_UNION

图片附件信息联合体。

union{
  BYTE                       byUnionLen[544];
  NET_DVR_FACE_EXTRA_INFO    struFaceExtraInfo;
}NET_DVR_PIC_EXTRA_INFO_UNION,*LPNET_DVR_PIC_EXTRA_INFO_UNION;

Members

byUnionLen
联合体大小，544字节
struFaceExtraInfo
人脸侦测信息

See Also

NET_DVR_FIND_PICTURE_V40


NET_DVR_PIC_FEATURE_UNION

图片属性联合体。

union{
  BYTE                         byLen[256];
  NET_DVR_PLATE_INFO           struPlateInfo;
  NET_DVR_FACE_SUB_PIC_INFO    struFaceSubInfo;
  NET_DVR_BEHAVIOR_INFO        struBehavior;
}NET_DVR_PIC_FEATURE_UNION,*LPNET_DVR_PIC_FEATURE_UNION;

Members

byLen
联合体大小，256字节
struPlateInfo
车辆检索信息，图片类型(wPicType)为"0-车辆检索"时有效
struFaceSubInfo
人脸子图信息，图片类型(wPicType)为"1-人脸属性"时有效
struBehavior
异常行为识别对应的子图信息，图片类型(wPicType)为3、4、5、6、7、8、9、10、11、12等异常行为识别类型时有效

See Also

NET_DVR_SMART_SEARCH_PIC_RET


NET_DVR_PIC_INFO

图片颜色信息结构体。

struct{
  BYTE     byPicType;
  BYTE     byRes1[3];
  DWORD    dwPicWidth;
  DWORD    dwPicHeight;
  DWORD    dwPicDataLen;
  char     *byPicDataBuff;
  BYTE     byRes2[32];
}NET_DVR_PIC_INFO, *LPNET_DVR_PIC_INFO;

Members

byPicType
图片类型：0- JPEG
byRes1
保留，置为0
dwPicWidth
图片宽度
dwPicHeight
图片高度
dwPicDataLen
图片数据大小
byPicDataBuff
图片数据缓冲区
byRes2
保留

See Also

NET_DVR_VCA_RULE_COLOR_CFG


NET_DVR_PIC_MODEL_CFG

图像建模配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[63];
}NET_DVR_PIC_MODEL_CFG,*LPNET_DVR_PIC_MODEL_CFG;

Members

dwSize
结构体大小
byEnable
是否启用图片建模：0- 否，1- 是
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PIC_PARAM

查找结果结构体。

struct{
  char               *pDVRFileName;
  char               *pSavedFileBuf;
  DWORD              dwBufLen;
  DWORD              *lpdwRetLen;
  NET_DVR_ADDRESS    struAddr,
  BYTE               byRes[256];
}NET_DVR_PIC_PARAM,*LPNET_DVR_PIC_PARAM;

Members

pDVRFileName
图片名
pSavedFileBuf
保存图片的缓冲区，内存外部申请释放
dwBufLen
缓冲区大小
lpdwRetLen
实际收到的数据长度指针，不能为NULL
struAddr
图片所在的地址信息，图片查找时会返回
byRes
保留字节

Remarks

集群中CS的地址可以从图片查找中获取，SDK根据struAddr对CS建立连接，下载图片。

See Also

NET_DVR_GetPicture_V50


NET_DVR_PIC_VIEW_PARAM

推模式图片回显结构体。

struct{
  DWORD              dwSize;
  NET_DVR_IPADDR     struCuIp;
  WORD               wPort;
  BYTE               bySourceIndex;
  BYTE               byRes[29];
}NET_DVR_PIC_VIEW_PARAM,*LPNET_DVR_PIC_VIEW_PARAM;

Members

dwSize
结构体大小
struCuIp
CU端IP地址
wPort
CU端口
bySourceIndex
信号源通道号
byRes
保留

See Also

NET_DVR_PicViewRequest


NET_DVR_PICCFG

通道图像结构体。

struct{
  DWORD                    dwSize;
  BYTE                     sChanName[NAME_LEN];
  DWORD                    dwVideoFormat;
  BYTE                     byRes[4];
  DWORD                    dwShowChanName;
  WORD                     wShowNameTopLeftX;
  WORD                     wShowNameTopLeftY;
  NET_DVR_VILOST           struVILost;
  NET_DVR_MOTION           struMotion;
  NET_DVR_HIDEALARM        struHideAlarm;
  DWORD                    dwEnableHide;
  WORD                     wHideAreaTopLeftX;
  WORD                     wHideAreaTopLeftY;
  WORD                     wHideAreaWidth;
  WORD                     wHideAreaHeight;
  DWORD                    dwShowOsd;
  WORD                     wOSDTopLeftX;
  WORD                     wOSDTopLeftY;
  BYTE                     byOSDType;
  BYTE                     byDispWeek;
  BYTE                     byOSDAttrib;
  char                     reservedData2;
}NET_DVR_PICCFG,*LPNET_DVR_PICCFG;

Members

dwSize
结构体大小
sChanName
通道名称
dwVideoFormat
视频制式：1-NTSC；2-PAL
byRes
保留
dwShowChanName
预览的图象上是否显示通道名称：0-不显示，1-显示（区域大小704*576）
wShowNameTopLeftX
通道名称显示位置的x坐标
wShowNameTopLeftY
通道名称显示位置的y坐标
struVILost
信号丢失报警参数
struMotion
移动侦测报警参数
struHideAlarm
遮挡报警参数
dwEnableHide
是否启动隐私遮蔽：0-否，1-是
wHideAreaTopLeftX
隐私遮蔽区域的x坐标
wHideAreaTopLeftY
隐私遮蔽区域的y坐标
wHideAreaWidth
隐私遮蔽区域的宽
wHideAreaHeight
隐私遮蔽区域的高
dwShowOsd
预览的图象上是否显示OSD：0-不显示，1-显示（区域大小704*576）
wOSDTopLeftX
OSD的x坐标
wOSDTopLeftY
OSD的y坐标
byOSDType
OSD类型(年月日格式)：
0－XXXX-XX-XX 年月日
1－XX-XX-XXXX 月日年
2－XXXX年XX月XX日
3－XX月XX日XXXX年
4－XX-XX-XXXX 日月年
5－XX日XX月XXXX年
byDispWeek
是否显示星期：0-不显示，1-显示
byOSDAttrib
OSD属性（透明/闪烁）：
1－透明，闪烁
2－透明，不闪烁
3－闪烁，不透明
4－不透明，不闪烁
reservedData2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_PICCFG_V30


NET_DVR_PICCFG_EX

通道图像结构体。

struct{
  DWORD                    dwSize;
  BYTE                     sChanName[NAME_LEN];
  DWORD                    dwVideoFormat;
  BYTE                     byRes[4];
  DWORD                    dwShowChanName;
  WORD                     wShowNameTopLeftX;
  WORD                     wShowNameTopLeftY;
  NET_DVR_VILOST           struVILost;
  NET_DVR_MOTION           struMotion;
  NET_DVR_HIDEALARM        struHideAlarm;
  DWORD                    dwEnableHide;
  NET_DVR_SHELTER          struShelter[MAX_SHELTERNUM];
  DWORD                    dwShowOsd;
  WORD                     wOSDTopLeftX;
  WORD                     wOSDTopLeftY;
  BYTE                     byOSDType;
  BYTE                     byDispWeek;
  BYTE                     byOSDAttrib;
  BYTE                     byHourOsdType;
}NET_DVR_PICCFG_EX,*LPNET_DVR_PICCFG_EX;

Members

dwSize
结构体大小
sChanName
通道名称
dwVideoFormat
视频制式：1-NTSC；2-PAL
byRes
保留
byContrast
预览的图象上是否显示通道名称：0-不显示，1-显示（区域大小704*576）
wShowNameTopLeftX
通道名称显示位置的x坐标
wShowNameTopLeftY
通道名称显示位置的y坐标
struVILost
信号丢失报警参数
struMotion
移动侦测报警参数
struHideAlarm
遮挡报警参数
dwEnableHide
是否启动隐私遮蔽：0-否，1-是
struShelter
隐私遮蔽区域参数
dwShowOsd
预览的图象上是否显示OSD：0-不显示，1-显示（区域大小704*576）
wOSDTopLeftX
OSD的x坐标
wOSDTopLeftY
OSD的y坐标
byOSDType
OSD类型(年月日格式)：
0－XXXX-XX-XX 年月日
1－XX-XX-XXXX 月日年
2－XXXX年XX月XX日
3－XX月XX日XXXX年
4－XX-XX-XXXX 日月年
5－XX日XX月XXXX年
byDispWeek
是否显示星期：0-不显示，1-显示
byOSDAttrib
OSD属性（透明/闪烁）：
1－透明，闪烁
2－透明，不闪烁
3－闪烁，不透明
4－不透明，不闪烁
byHourOsdType
小时制：0表示24小时制，1表示12小时制或am/pm

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_PICCFG_V30


NET_DVR_PICCFG_V30

通道图像参数结构体。

struct{
  DWORD                    dwSize;
  BYTE                     sChanName[NAME_LEN];
  DWORD                    dwVideoFormat;
  char                     byReservedData[64];
  DWORD                    dwShowChanName;
  WORD                     wShowNameTopLeftX;
  WORD                     wShowNameTopLeftY;
  NET_DVR_VILOST_V30       struVILost;
  NET_DVR_VILOST_V30       struRes;
  NET_DVR_MOTION_V30       struMotion;
  NET_DVR_HIDEALARM_V30    struHideAlarm;
  DWORD                    dwEnableHide;
  NET_DVR_SHELTER          struShelter[MAX_SHELTERNUM];
  DWORD                    dwShowOsd;
  WORD                     wOSDTopLeftX;
  WORD                     wOSDTopLeftY;
  BYTE                     byOSDType;
  BYTE                     byDispWeek;
  BYTE                     byOSDAttrib;
  BYTE                     byHourOSDType;
  BYTE                     byFontSize;
  BYTE                     byOSDColorType;
  BYTE                     byAlignment;
  BYTE                     byOSDMilliSecondEnable;
  NET_DVR_RGB_COLOR        struOsdColor;
  DWORD                    dwBoundary;
  BYTE                     byRes[52];
}NET_DVR_PICCFG_V30,*LPNET_DVR_PICCFG_V30;

Members

dwSize
结构体大小
sChanName
通道名称
dwVideoFormat
视频制式：0- 不支持，1- NTSC，2- PAL
byReservedData
保留，置为0
dwShowChanName
预览的图象上是否显示通道名称：0-不显示，1-显示（区域大小704*576）
wShowNameTopLeftX
通道名称显示位置的x坐标
wShowNameTopLeftY
通道名称显示位置的y坐标
struVILost
视频信号丢失报警参数
struRes
保留，置为0
struMotion
移动侦测报警参数
struHideAlarm
遮挡报警参数
dwEnableHide
是否启动隐私遮蔽：0-否，1-是
struShelter
隐私遮蔽区域参数
dwShowOsd
预览的图象上是否显示OSD：0-不显示，1-显示（区域大小704*576）
wOSDTopLeftX
OSD的x坐标
wOSDTopLeftY
OSD的y坐标
byOSDType
OSD类型(年月日格式)：
0－XXXX-XX-XX 年月日
1－XX-XX-XXXX 月日年
2－XXXX年XX月XX日
3－XX月XX日XXXX年
4－XX-XX-XXXX 日月年
5－XX日XX月XXXX年
byDispWeek
是否显示星期：0-不显示，1-显示
byOSDAttrib
OSD属性（透明/闪烁）：
1－透明，闪烁
2－透明，不闪烁
3－闪烁，不透明
4－不透明，不闪烁
byHourOSDType
小时制：0表示24小时制，1表示12小时制或am/pm
byFontSize
字体大小：0- 16*16(中)/8*16(英)，1- 32*32(中)/16*32(英)，2- 64*64(中)/32*64(英)，3- 48*48(中)/24*48(英)，4- 24*24(中)/12*24(英)，5- 96*96(中)/48*96(英)，0xff- 自适应(adaptive)
byOSDColorType
OSD颜色模式：0- 默认（黑白），1-自定义(颜色见struOsdColor)
byAlignment
对齐方式：0- 自适应，1- 右对齐，2- 左对齐，3- 国标模式
byOSDMilliSecondEnable
视频叠加时间支持毫秒（智能交通摄像机V4.1及以后版本支持）：0- 不叠加，1- 叠加
struOsdColor
OSD自定义颜色
dwBoundary
边界值，左对齐、右对齐以及国标模式的边界值，0表示默认值，左对齐和右对齐模式下单位为像素，国标模式下单位为字符个数（取值范围：0、1、2）
byRes
保留，置为0

Remarks

  • 设备通道名称、OSD、移动侦测、视频遮挡等图像参数配置能力，对应设备图像参数能力集（VideoPicAbility），相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_VIDEOPIC_ABILITY。
  • 智能交通摄像机，视频叠加是否支持时间毫秒（byOSDMilliSecondEnable）也可以通过能力集NET_DVR_SNAP_ABILITY中的bySupport2&0x02进行判断。
  • 当对齐方式选择国标模式时，可以分别对右下角、左下角两个区域做字符叠加。
    1) 右下角区域：
    共支持6行字符叠加，通过NET_DVR_GetDVRConfig(命令:NET_DVR_SET_SHOWSTRING_V30)字符叠加接口进行设置，对应NET_DVR_SHOWSTRINGINFO结构体数组中的第0至第5个下标的值，叠加字符的方式为从下到上的方式。
    2) 左下角区域：
    共支持2行字符叠加，通过NET_DVR_GetDVRConfig(命令:NET_DVR_SET_SHOWSTRING_V30)字符叠加接口进行设置，对应NET_DVR_SHOWSTRINGINFO结构体数组中的第6和第7个下标的值。叠加字符的方式为从下到上的方式。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_PICCFG_V40


NET_DVR_PICCFG_V40

通道图像参数结构体。

struct{
  DWORD                    dwSize;
  BYTE                     sChanName[NAME_LEN];
  DWORD                    dwVideoFormat;
  NET_DVR_VICOLOR          struViColor;
  DWORD                    dwShowChanName;
  WORD                     wShowNameTopLeftX;
  WORD                     wShowNameTopLeftY;
  DWORD                    dwEnableHide;
  NET_DVR_SHELTER          struShelter[MAX_SHELTERNUM];
  DWORD                    dwShowOsd;
  WORD                     wOSDTopLeftX;
  WORD                     wOSDTopLeftY;
  BYTE                     byOSDType;
  BYTE                     byDispWeek;
  BYTE                     byOSDAttrib;
  BYTE                     byHourOSDType;
  BYTE                     byFontSize;
  BYTE                     byOSDColorType;
  BYTE                     byAlignment;
  BYTE                     byOSDMilliSecondEnable;
  NET_DVR_VILOST_V40       struVILost;
  NET_DVR_VILOST_V40       struAULost;
  NET_DVR_MOTION_V40       struMotion;
  NET_DVR_HIDEALARM_V40    struHideAlarm;
  NET_DVR_RGB_COLOR        struOsdColor;
  DWORD                    dwBoundary;
  BYTE                     byRes[120];
}NET_DVR_PICCFG_V40,*LPNET_DVR_PICCFG_V40;

Members

dwSize
结构体大小
sChanName
通道名称
dwVideoFormat
视频制式：0- 不支持，1- NTSC，2- PAL
struViColor
图像参数按时间段设置
dwShowChanName
预览的图象上是否显示通道名称：0-不显示，1-显示（区域大小704*576）
wShowNameTopLeftX
通道名称显示位置的x坐标
wShowNameTopLeftY
通道名称显示位置的y坐标
dwEnableHide
是否启动隐私遮蔽：0-否，1-是
struShelter
隐私遮蔽区域参数
dwShowOsd
预览的图象上是否显示OSD：0-不显示，1-显示（区域大小704*576）
wOSDTopLeftX
OSD的x坐标
wOSDTopLeftY
OSD的y坐标
byOSDType
OSD类型(年月日格式)：
0－XXXX-XX-XX 年月日
1－XX-XX-XXXX 月日年
2－XXXX年XX月XX日
3－XX月XX日XXXX年
4－XX-XX-XXXX 日月年
5－XX日XX月XXXX年
6－xx/xx/xxxx 月/日/年
7－xxxx/xx/xx 年/月/日
8－xx/xx/xxxx 日/月/年
byDispWeek
是否显示星期：0-不显示，1-显示
byOSDAttrib
OSD属性（透明/闪烁）：
1－透明，闪烁
2－透明，不闪烁
3－闪烁，不透明
4－不透明，不闪烁
byHourOSDType
小时制：0表示24小时制，1表示12小时制或am/pm
byFontSize
字体大小：0- 16*16(中)/8*16(英)，1- 32*32(中)/16*32(英)，2- 64*64(中)/32*64(英)，3- 48*48(中)/24*48(英)，4- 24*24(中)/12*24(英)，5- 96*96(中)/48*96(英)，0xff- 自适应(adaptive)
byOSDColorType
OSD颜色模式：0- 默认（黑白），1-自定义(颜色见struOsdColor)
byAlignment
对齐方式：0- 自适应，1- 右对齐，2- 左对齐，3- 国标模式
byOSDMilliSecondEnable
启用视频叠加时间毫秒（智能交通摄像机V4.1及以后版本支持）：0- 不叠加，1- 叠加
struVILost
视频信号丢失报警参数
struAULost
音频信号丢失报警参数
struMotion
移动侦测报警参数
struHideAlarm
遮挡报警参数
struOsdColor
OSD自定义颜色
dwBoundary
对齐边界值，左对齐、右对齐以及国标模式的边界值，0表示默认值，左对齐和右对齐模式下单位为像素，国标模式下单位为字符个数（取值范围：0、1、2）
byRes
保留，置为0

Remarks

  • 设备通道名称、OSD、移动侦测、视频遮挡等图像参数配置能力，对应设备图像参数能力集（VideoPicAbility），相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_VIDEOPIC_ABILITY。
  • 智能交通摄像机，视频叠加是否支持时间毫秒（byOSDMilliSecondEnable）也可以通过能力集NET_DVR_SNAP_ABILITY中的bySupport2&0x02进行判断。
  • 当对齐方式选择国标模式时，可以分别对右下角、左下角两个区域做字符叠加。
    1) 右下角区域：
    共支持6行字符叠加，通过NET_DVR_GetDVRConfig(命令:NET_DVR_SET_SHOWSTRING_V30)字符叠加接口进行设置，对应NET_DVR_SHOWSTRINGINFO结构体数组中的第0至第5个下标的值，叠加字符的方式为从下到上的方式。
    2) 左下角区域：
    共支持2行字符叠加，通过NET_DVR_GetDVRConfig(命令:NET_DVR_SET_SHOWSTRING_V30)字符叠加接口进行设置，对应NET_DVR_SHOWSTRINGINFO结构体数组中的第6和第7个下标的值。叠加字符的方式为从下到上的方式。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_PICCFG_V30


NET_DVR_PICPARAM_V50

抓图参数结构体。

struct{
  NET_DVR_JPEGPARA    struParam;
  BYTE                byPicFormat;
  BYTE                byCapturePicType;
  BYTE                byRes[254];
}NET_DVR_PICPARAM_V50, *LPNET_DVR_PICPARAM_V50;

Members

struParam
图片参数，包括抓图分辨率和图片质量
byPicFormat
设备抓图图片格式：0- JPEG
byCapturePicType
设备抓图类型：0- 设备通用抓图，1- 鹰眼标定图片（FPJA重启刷新获取图片，需要时间较长，最长超时3分钟），2- 从Flash中获取已存在鹰眼标定图片
byRes
保留，置为0

Remarks

  • 设备是否支持该抓图功能或者支持的参数能力，可以通过设备能力集进行判断，对应设备JPEG抓图能力集(JpegCaptureAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_JPEG_CAP_ABILITY，节点：<CapturePicture>。

See Also

NET_DVR_CapturePicture_V50


NET_DVR_PICTURE_NAME

图片命名规则。

struct{
  BYTE    byItemOrder[PICNAME_MAXITEM];
  BYTE    byDelimiter;
}NET_DVR_PICTURE_NAME, *LPNET_DVR_PICTURE_NAME;

Members

byItemOrder
按数组定义文件命名的规则，每个元素取值如下所示，同时支持选择其中的15种：
宏定义 | 宏定义值 | 含义
PICNAME_ITEM_DEV_NAME | 1 | 设备名
PICNAME_ITEM_DEV_NO | 2 | 设备号
PICNAME_ITEM_DEV_IP | 3 | 设备IP
PICNAME_ITEM_CHAN_NAME | 4 | 通道名
PICNAME_ITEM_CHAN_NO | 5 | 通道号
PICNAME_ITEM_TIME | 6 | 时间
PICNAME_ITEM_CARDNO | 7 | 卡号
PICNAME_ITEM_PLATE_NO | 8 | 车牌号码
PICNAME_ITEM_PLATE_COLOR | 9 | 车牌颜色
PICNAME_ITEM_CAR_CHAN | 10 | 车道号
PICNAME_ITEM_CAR_SPEED | 11 | 车辆速度
PICNAME_ITEM_CARCHAN | 12 | 监测点
PICNAME_ITEM_PIC_NUMBER | 13 | 图片序号
PICNAME_ITEM_CAR_NUMBER | 14 | 车辆序号
PICNAME_ITEM_SPEED_LIMIT_VALUES | 15 | 限速值
PICNAME_ITEM_ILLEGAL_CODE | 16 | 国标违法代码
PICNAME_ITEM_CROSS_NUMBER | 17 | 路口编号
PICNAME_ITEM_DIRECTION_NUMBER | 18 | 方向编号
PICNAME_ITEM_CAR_COLOR | 19 | 车身颜色
PICNAME_ITEM_PLATE_COORDINATE | 20 | 车牌坐标
PICNAME_ITEM_CAR_TYPE | 21 | 车辆类型
PICNAME_ITEM_VIOLATION_TYPE | 22 | 违规类型
PICNAME_ITEM_CUSTOM | 255 | 自定义
byDelimiter
分隔符，“_”“-”“+”“=”“.”，一般为'_'

See Also

NET_ITC_FTP_CFG NET_DVR_JPEGCFG_V30


NET_DVR_PICTURE_NAME_EX

图片命名规则扩展。

struct{
  BYTE    byItemOrder[PICNAME_MAXITEM];
  BYTE    byDelimiter;
  BYTE    byPicNamePrefix[NAME_LEN];
}NET_DVR_PICTURE_NAME_EX, *LPNET_DVR_PICTURE_NAME_EX;

Members

byItemOrder
按数组定义文件命名的规则，每个元素取值如下所示：
宏定义 | 宏定义值 | 含义
PICNAME_ITEM_PARK_DEV_IP | 1 | 设备IP地址
PICNAME_ITEM_PARK_PLATE_NO | 2 | 车牌号码
PICNAME_ITEM_PARK_TIME | 3 | 时间
PICNAME_ITEM_PARK_INDEX | 4 | 车位编号
PICNAME_ITEM_PARK_STATUS | 5 | 车位状态
PICNAME_ITEM_BUILDING_NUMBER | 6 | 栋号单元号
PICNAME_ITEM_OUTDOOR_UNIT_ID | 7 | 门口机编号
PICNAME_ITEM_UNLOCK_TYPE | 8 | 开锁方式
PICNAME_ITEM_DEVICE_NAME | 9 | 设备名称
PICNAME_ITEM_PERIOD_NO | 10 | 期号
PICNAME_ITEM_DEV_INDEX | 11 | 设备编号
byDelimiter
分隔符，一般为'_'
byPicNamePrefix
图片名自定义前缀，格式为：自定义前缀_设备序列号_时间_类型.jpg；前缀默认为空，支持用户输入，包括数字、符号（除特殊符合，如：不能含有字符 / \ : * ? ' " < > | %）、英文等，最大长度32个字符（16个汉字）

See Also

NET_DVR_FTPCFG_V40


NET_DVR_PICTURE_PARAM

图片参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byControlCommand;
  BYTE     byUseType;
  BYTE     byWallNo;
  BYTE     byPictureNo;
  BYTE     byRes[64];
}NET_DVR_PICTURE_PARAM,*LPNET_DVR_PICTURE_PARAM;

Members

dwSize
结构体大小
byControlCommand
切换命令：1- 显示，2- 不显示，3- 全部删除（针对GIF图片）
byUseType
图片类型：1- 虚拟LED，2- 底图，3- GIF
byWallNo
电视墙墙号，从1开始
byPictureNo
图片序号
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_PICTURECFG

图片参数结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byUseType;
  BYTE                   bySequence;
  BYTE                   byWallNo;
  BYTE                   byRes1;
  NET_DVR_BASEMAP_CFG    struBasemapCfg;
  BYTE                   sPicName[NAME_LEN];
  BYTE                   byRes2[32];
}NET_DVR_PICTURECFG,*LPNET_DVR_PICTURECFG;

Members

dwSize
结构体大小
byUseType
1- 底图，2- GIF图片，3- CAD图片，4- 输出口图片
bySequence
序号。分布式不使用该参数，设为0
byWallNo
电视墙号
byRes1
保留
struBasemapCfg
底图参数
sPicName
图片名称
byRes2
保留

Remarks

  • 底图由上层切割并传送，例如：2*2的大屏，上传底图时需要客户端将底图切割成4块，并分成4次发送底图数据，每次发送时都需要发送结构体NET_DVR_BASEMAP_CFG。
  • 设备端在收到屏幕序号为0的底图时，表示是新的底图。例如，用户将一幅图切割成4份，当传完前两块以后又要传另一幅底图，此时应该将屏幕序号置为0。这时设备就能知道是另一幅底图，并将第一幅底图的前两块数据丢弃。
  • 对于门禁主机，不支持设置底图参数，参数struBasemapCfg无效。门禁设备是否支持底图功能或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<PictureCfg>。

See Also

NET_DVR_PicUpload


NET_DVR_PICTUREINFO

图片信息结构体。

struct{
  DWORD       dwSize;
  BYTE        byChanIndex;
  BYTE        byRes1[3];
  BYTE        byDeviceID[NAME_LEN];
  BYTE        byAbsTime[32];
  DWORD       dwPicLen;
  BYTE        byRes2[32];
  BYTE        *pPicBuffer;
}NET_DVR_PICTUREINFO,*LPNET_DVR_PICTUREINFO;

Members

dwSize
结构体大小
byChanIndex
通道号
byRes1
保留，置为0
byDeviceID
设备的ID串
byAbsTime
绝对时间点，精确到毫秒，yyyymmddhhmmssxxx，例如20090810235959999
dwPicLen
图片长度
byRes2
保留
pPicBuffer
上传的图片信息

Remarks

需要在平台参数配置中把图片服务器的地址和端口配置好，然后调用NET_DVR_StartListen()接口进行监听，设置好回调函数，才能正常得到图片信息。

See Also

NET_DVR_StartListen_V30


NET_DVR_PICVIEW_CALLBACKPARAM

图片回显注册消息结构体。

struct{
  DWORD    dwUserID;
  BYTE     sDeviceID[16];
  LONG     nPicViewHandle;
  WORD     wSignalIndex;
  WORD     wHeadLen;
  BYTE     byHeadBuf[100];
  BYTE     byRes[32];
}NET_DVR_PICVIEW_CALLBACKPARAM, *LPNET_DVR_PICVIEW_CALLBACKPARAM;

Members

dwUserID
用户ID
sDeviceID
设备ID
nPicViewHandle
回显句柄
wSignalIndex
信号源索引
wHeadLen
文件头长度，码流文件头都是40
byHeadBuf
文件头
byRes
保留

See Also

NET_DVR_SetPicViewResponseCallBack


NET_DVR_PIN_PARAM

PIN码参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byPIN[8];
  BYTE     byRes[32];
}NET_DVR_PIN_PARAM, *LPNET_DVR_PIN_PARAM;

Members

dwSize
结构体大小
byPIN
PIN码
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_PINCODEPARAM

PIN码参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byPinCmd;
  BYTE     byRes1[3];
  BYTE     byPinCode[MAX_PIN_LEN];
  BYTE     byNewPinCode[MAX_PIN_LEN];
  BYTE     byRes2[16];
}NET_DVR_PINCODEPARAM,*LPNET_DVR_PINCODEPARAM;

Members

dwSize
结构体大小
byPinCmd
PIN命令，具体定义如下：
enum _PIN_READY_{
  PIN_ENABLE  = 1,
  PIN_DISABLE = 2,
  PIN_VERIFY  = 3,
  PUK_VERIFY  = 4,
  PIN_CHANGE  = 5
}PIN_READY
PIN_ENABLE
PIN启用
PIN_DISABLE
PIN禁用
PIN_VERIFY
PIN校验
PUK_VERIFY
PUK校验
PIN_CHANGE
PIN修改
byRes1
保留
byPinCode
PIN码或者PUK码
byNewPinCode
新的PIN码
byRes
保留

Remarks

进行PIN相关的操作项之前需要先获取一下PIN状态，根据返回的状态参数（NET_DVR_PINSTATUS），决定哪些项当前允许操作，哪些项当前不允许操作。具体如下：
byStatus == CPIN_PIN，“PIN校验”项允许，其它不允许；
byStatus == CPIN_PUK，“PUK校验”项允许，其它不允许；
byStatus == CPIN_READY && bEnableLock == 0， “PIN启用”项允许，其它不允许；
byStatus == CPIN_READY && bEnableLock == 1， “PIN禁用”与“修改”项允许，其它不允许。

当byPinCmd为PIN_ENABLE、PIN_DISABLE和PIN_VERIFY时，只需输入byPinCode，无需输入byNewPinCode。当byPinCmd为PUK_VERIFY和PIN_CHANGE时，byPinCode和byNewPinCode都需输入。

PIN操作界面需提供给用户当前PIN状态及还剩余的操作次数，因此PIN操作命令的返回信息中包含了PIN_STATUS的信息，需实时刷新这些信息。

See Also

NET_DVR_SetDVRConfig


NET_DVR_PINSTATUS

PIN码状态结构体。

struct{
  DWORD    dwSize;
  BYTE     byStatus;
  BYTE     byPinTimes;
  BYTE     byPukTimes;
  BYTE     bEnableLock;
  BYTE     byRes[4];
}NET_DVR_PINSTATUS,*LPNET_DVR_PINSTATUS;

Members

dwSize
结构体大小
byStatus
PIN状态，具体定义如下：
enum _PIN_READY_{
  CPIN_READY = 1,
  CPIN_PIN   = 2,
  CPIN_PUK   = 3,
  CPIN_PIN2  = 4,
  CPIN_PUK2  = 5
}PIN_READY
byPinTimes
持续输入PIN码次数
byPukTimes
持续输入PUK码次数
bEnableLock
是否锁定PIN码，0- 不锁定，1- 锁定
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_PIP_CFG

画中画参数结构体。

struct{
  DWORD              dwSize;
  BYTE               byEnable;
  BYTE               bySubWindowSource;
  BYTE               bySubWindowBorderColor;
  BYTE               byRes1;
  NET_DVR_RECTCFG    struPosition;
  BYTE               byRes2[12];
}NET_DVR_PIP_CFG,*LPNET_DVR_PIP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用画中画：0-不启用，1-启用
bySubWindowSource
子画面信号源，定义详见NET_DVR_CAM_MODE
bySubWindowBorderColor
子画面边框颜色：1-蓝色，2-黑色
byRes1
保留，置为0
struPosition
子画面位置，相对于屏幕总大小100*100的值
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PIRIS_PARAM

P-Iris红外光圈大小等级配置结构体。

struct{
  BYTE    byMode;
  BYTE    byPIrisAperture;
  BYTE    byRes[6];
}NET_DVR_PIRIS_PARAM, *LPNET_DVR_PIRIS_PARAM;

Members

byMode
P-Iris模式：0- 自动，1- 手动
byPIrisAperture
红外光圈大小等级(等级越高，光圈越大)：1~100，默认:50，手动模式下可修改
byRes
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_PLAN_CFG

预案信息结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byValid;
  BYTE                  byWorkMode;
  BYTE                  byRes1[2];
  BYTE                  byPlanName[NAME_LEN];
  NET_DVR_TIME_EX       struTime;
  NET_DVR_CYCLE_TIME    struTimeCycle[DAYS_A_WEEK];
  DWORD                 dwWorkCount;
  NET_DVR_PLAN_INFO     strPlanEntry[MAX_PLAN_ACTION_NUM];
  BYTE                  byRes2[64];
}NET_DVR_PLAN_CFG,*LPNET_DVR_PLAN_CFG;

Members

dwSize
结构体大小
byValid
该预案是否有效
byWorkMode
预案工作模式：1- 表示手动，2- 自动，3- 预案循环
byRes1
保留，置为0
byPlanName
预案名称
struTime
时间，工作模式为自动时使用
struTimeCycle
循环时间，周期为一个星期，年、月、日三个参数不使用。星期取值区间为[0,6]，其中0代表星期天，1代表星期一，以此类推。
如：struTimeCycle[0]中的byValid的值是1，表示星期天执行该预案。
dwWorkCount
预案内容执行次数，预案工作模式为手动时该值无效
strPlanEntry
预案执行的内容
byRes2
保留，置为0

See Also

NET_DVR_PLAN_LIST

NET_DVR_SetDVRConfig


NET_DVR_PLAN_INFO

预案项信息结构体。

struct{
  BYTE     byValid;
  BYTE     byType;
  WORD     wLayoutNo;
  BYTE     byScreenStyle;
  BYTE     byRes1[3];
  DWORD    dwDelayTime;
  BYTE     byRes2[32];
}NET_DVR_PLAN_INFO,*LPNET_DVR_PLAN_INFO;

Members

byValid
该项是否有效
byType
执行类型：
enum _NET_DVR_PLAN_OPERATE_TYPE_{
  NET_DVR_SWITCH_LAYOUT  = 1,
  NET_DVR_SCREEN_POWER_OFF,
  NET_DVR_SCREEN_POWER_ON
}NET_DVR_PLAN_OPERATE_TYPE
NET_DVR_SWITCH_LAYOUT
场景切换(默认)
NET_DVR_SCREEN_POWER_OFF
关闭大屏幕显示
NET_DVR_SCREEN_POWER_ON
打开大屏幕显示
wLayoutNo
场景号， 从1开始
byScreenStyle
屏幕型号，开关机所用：1- 低亮，2- 高亮
byRes1
保留，置为0
dwDelayTime
一个项的运行时间，单位：秒
byRes2
保留，置为0

See Also

NET_DVR_PLAN_CFG


NET_DVR_PLAN_LIST

预案列表结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPlanNums;
  BYTE     *pBuffer;
  BYTE     byWallNo;
  BYTE     byRes1[2];
  DWORD    dwBufLen;
  BYTE     byRes2[64];
}NET_DVR_PLAN_LIST,*LPNET_DVR_PLAN_LIST;

Members

dwSize
结构体大小
dwPlanNums
预案数量
pBuffer
预案信息，指向dwPlanNums个NET_DVR_PLAN_CFG结构体大小的缓冲区
byWallNo
电视墙墙号，从1开始
byRes1
保留，置为0
dwBufLen
所分配缓冲区长度
byRes2
保留，置为0

Remarks

  • 先调用NET_DVR_GetPlanList，将该结构体中的pBuffer置为空且dwBufLen为0，此时获取预案个数（dwPlanNums）；然后根据接口返回的数量分配pBuffer的大小，然后再次调用NET_DVR_GetPlanList，此时获取预案列表（pBuffer）。
  • 获取预案列表，设备返回电视墙内所有的预案，包括有效的预案和无效的预案。
  • 分布式多屏控制器中，每个电视墙都自己的预案，所以预案项中的场景也是属于该电视墙内的场景，其他电视墙中的场景不能使用。

    • See Also

    NET_DVR_GetPlanList


NET_DVR_PLAN_TEMPLATE

计划模板配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  BYTE     byTemplateName[TEMPLATE_NAME_LEN];
  DWORD    dwWeekPlanNo;
  DWORD    dwHolidayGroupNo[MAX_HOLIDAY_GROUP_NUM];
  BYTE     byRes2[32];
}NET_DVR_PLAN_TEMPLATE,*LPNET_DVR_PLAN_TEMPLATE;

Members

dwSize
结构体大小
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
byTemplateName
计划模板名称
dwWeekPlanNo
周计划编号，0表示无效
dwHolidayGroupNo
假日组编号，按值表示，采用紧凑型排列，中间遇到0则后续无效
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PLAN_TEMPLATE_COND

卡权限计划模板配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwPlanTemplateNumber;
  WORD    wLocalControllerID;
  BYTE    byRes[106];
}NET_DVR_PLAN_TEMPLATE_COND,*LPNET_DVR_PLAN_TEMPLATE_COND;

Members

dwSize
结构体大小
dwPlanTemplateNumber
计划模板编号，从1开始，最大值从门禁能力集获取
wLocalControllerID
就地控制器序号[1,64]，0表示门禁主机
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PLAN_VQD_CFG

诊断服务器计划参数结构体。

struct{
  DWORD                dwSize;
  BYTE                 sPlanID[PLAN_ID_LEN];
  NET_DVR_SCHEDTIME    struDetectTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                 byPlanMode;
  BYTE                 byRes1;
  BYTE                 byCheckFlag;
  BYTE                 bySignal;
  BYTE                 byBlur;
  BYTE                 byLuma;
  BYTE                 byChroma;
  BYTE                 bySnow;
  BYTE                 byStreak;
  BYTE                 byFreeze;
  BYTE                 byPTZ;
  BYTE                 byEnablePlanRound;
  BYTE                 byRes[20];
}NET_DVR_PLAN_VQD_CFG,*LPNET_DVR_PLAN_VQD_CFG;

Members

dwSize
结构体大小
sPlanID
计划ID，长度小于32个字节
struDetectTime
检测时间
byPlanMode
计划模式：0- 即时计划，1- 周期计划
byRes1
保留
byCheckFlag
是否检测：0-不检测，1-检测
bySignal
是否检测视频丢失：0-不检测，1-检测
byBlur
是否检测图像模糊：0-不检测，1-检测
byLuma
是否检测亮度异常：0-不检测，1-检测
byChroma
是否检测偏色检测：0-不检测，1-检测
bySnow
是否检测雪花点干扰：0-不检测，1-检测
byStreak
是否检测条纹干扰：0-不检测，1-检测
byFreeze
是否检测画面冻结：0-不检测，1-检测
byPTZ
是否检测云台：0-不检测，1-检测
byEnablePlanRound
计划循环是否开启
byRes
保留

Remarks

计划管理，先通过命令NET_DVR_SET_MONITOR_PLAN_VQDCFG设置计划，然后再通过NET_DVR_SET_MONITOR_INFO可以配置计划内的监控点信息。

通过长连接接口NET_DVR_StartRemoteConfig等可以获取计划信息（NET_DVR_PLAN_VQD_CFG）以及计划内监控点信息（NET_DVR_STREAM_INFO）。

See Also

NET_DVR_SetDeviceConfig


NET_DVR_PLATE_INFO

交通抓拍结果车牌信息结构体。

struct{
  BYTE            byPlateType;
  BYTE            byColor;
  BYTE            byBright;
  BYTE            byLicenseLen;
  BYTE            byEntireBelieve;
  BYTE            byRegion;
  BYTE            byCountry;
  BYTE            byArea;
  BYTE            byPlateSize;
  BYTE            byAddInfoFlag;
  WORD            wCRIndex ;
  BYTE            byRes[4];
 #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64及linux64下指针为8字节
  BYTE            *pAddInfoBuffer;
 #else
  BYTE            *pAddInfoBuffer;
  BYTE            byRes2[4];
 #endif
  char            sPlateCategory[MAX_CATEGORY_LEN];
  DWORD           dwXmlLen;
  char            *pXmlBuf;
  NET_VCA_RECT    struPlateRect;
  char            sLicense[MAX_LICENSE_LEN];
  BYTE            byBelieve[MAX_LICENSE_LEN];
}NET_DVR_PLATE_INFO, *LPNET_DVR_PLATE_INFO;

Members

byPlateType
车牌类型，取值详见枚举类型：VCA_PLATE_TYPE
byColor
车牌颜色，取值详见枚举类型：VCA_PLATE_COLOR
byBright
车牌亮度
byLicenseLen
车牌字符个数
byEntireBelieve
整个车牌的置信度，取值范围：0~100
byRegion
区域索引值：0- 保留，1- 欧洲(Europe Region)，2- 俄罗斯(Russian Region)，3- 欧洲&俄罗斯(EU&CIS) ，0xff- 所有
byCountry
国家和地区索引值，取值定义详见COUNTRY_INDEX，不支持0xff(全部)
byArea
区域（省份），各国家和地区内部区域枚举，阿联酋参照EMI_AREA
byPlateSize
车牌尺寸：0- 未知，1- long，2- short(中东车牌使用)
byAddInfoFlag
附加信息标识（即是否有NET_DVR_VEHICLE_ADDINFO结构体）：0- 无附加信息,，1- 有附加信息。
byRes
保留
pAddInfoBuffer
附加信息指针,指向NET_DVR_VEHICLE_ADDINFO结构体
byRes2
保留
sPlateCategory
车牌附加信息, 即中东车牌中车牌号码旁边的小字信息，(目前只有中东地区支持)
dwXmlLen
XML报警信息长度
pXmlBuf
XML报警信息指针，对应内容为<EventNotificationAlert>
struPlateRect
车牌位置
sLicense
车牌号码，注：中东车牌需求把小字也纳入车牌号码，小字和车牌号中间用空格分隔
byBelieve
各个识别字符的置信度，如检测到车牌"浙A12345", 置信度为20,30,40,50,60,70，则表示"浙"字正确的可能性是20%，"A"字的正确的可能性是30%

See Also

NET_DVR_TFS_ALARM NET_DVR_PLATE_RESULT

NET_DVR_PLATE_RESULT_V50


NET_DVR_PLATE_RESULT

识别结果结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byResultType;
  BYTE                     byChanIndex;
  WORD                     wAlarmRecordID;
  DWORD                    dwRelativeTime;
  BYTE                     byAbsTime[32];
  DWORD                    dwPicLen;
  DWORD                    dwPicPlateLen;
  DWORD                    dwVideoLen;
  BYTE                     byTrafficLight;
  BYTE                     byPicNum;
  BYTE                     byDriveChan;
  BYTE                     byVehicleType;
  DWORD                    dwBinPicLen;
  DWORD                    dwCarPicLen;
  DWORD                    dwFarCarPicLen;
  BYTE                     *pBuffer3;
  BYTE                     *pBuffer4;
  BYTE                     *pBuffer5;
  BYTE                     byRelaLaneDirectionType;
  BYTE                     byRes3[7];
  NET_DVR_PLATE_INFO       struPlateInfo;
  NET_DVR_VEHICLE_INFO     struVehicleInfo;
  BYTE                     *pBuffer1;
  BYTE                     *pBuffer2;
}NET_DVR_PLATE_RESULT, *LPNET_DVR_PLATE_RESULT;

Members

dwSize
结构体大小
byResultType
识别结果类型，0-通过视频识别，1-通过图像识别，2-长录像(支持查询)
byChanIndex
车道号
wAlarmRecordID
报警录像ID(用于查询录像，仅当byResultType为2时有效)
dwRelativeTime
相对时间（保留）
byAbsTime
绝对时间，精确到毫秒，yyyymmddhhmmssxxx，例如20090810235959999
dwPicLen
图片长度（近景图）
dwPicPlateLen
车牌小图片长度（车牌彩图）
dwVideoLen
录像内容长度
byTrafficLight
0-非红绿灯抓拍，1-绿灯时抓拍；2-红灯时抓拍
byPicNum
连拍的图片序号
byDriveChan
触发的车道号
byVehicleType
车辆类型，定义详见VTR_RESULT
dwBinPicLen
二值图长度（仅iDS-65xx支持）
dwCarPicLen
车辆原图长度（仅iDS-65xx支持）
dwFarCarPicLen
远景图长度（仅iDS-65xx支持）
pBuffer3
车牌二值图（仅iDS-65xx支持）
pBuffer4
车辆原图（仅iDS-65xx支持）
pBuffer5
远景图（仅iDS-65xx支持）
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE，与关联车道号对应，确保车道唯一性
byRes3
保留
struPlateInfo
车牌信息参数
struVehicleInfo
车辆信息参数
*pBuffer1
当上传的是图片(近景图)信息时，指针指向图片信息，图片长度为dwPicLen；当上传的是录像时，指针指向录像信息，录像长度为dwVideoLen
*pBuffer2
当上传的是图片(车牌图)信息时，指针指向车牌小图片信息，车牌小图片的长度为dwPicPlateLen

Remarks

  • 智能交通摄像机报警上传的信息是图片或者录像中的一种，可以通过判断图片和录像的长度是否为0以确定上传的是图片信息还是录像信息。图片数据为场景图片+车牌小图片。视频长度为0xffffffff时，表示视频内容异常，此时只上传报警信息，后面无视频内容，指向视频内容的指针为NULL。
  • iDS-65xx手动抓拍只支持上传pBuffer1和pBuffer2。
  • 当byResultType为2时，可以用wAlarmRecordID作为查找条件，搜索报警录像。

    • See Also

    NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_PLATE_RESULT_V50

识别结果结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwMatchNo;
  BYTE                             byGroupNum;
  BYTE                             byPicNo;
  BYTE                             bySecondCam;
  BYTE                             byFeaturePicNo;
  BYTE                             byDriveChan;
  BYTE                             byVehicleType;
  BYTE                             byDetSceneID;
  BYTE                             byVehicleAttribute;
  WORD                             wIllegalType;
  BYTE                             byIllegalSubType[8];
  BYTE                             byPostPicNo;
  BYTE                             byChanIndex;
  WORD                             wSpeedLimit;
  BYTE                             byChanIndexEx;
  BYTE                             byVehiclePositionControl;
  NET_DVR_PLATE_INFO               struPlateInfo;
  NET_DVR_VEHICLE_INFO             struVehicleInfo;
  BYTE                             byMonitoringSiteID[48];
  BYTE                             byDeviceID[48];
  BYTE                             byDir;
  BYTE                             byDetectType;
  BYTE                             byRelaLaneDirectionType;
  BYTE                             byCarDirectionType;
  DWORD                            dwCustomIllegalType;
  BYTE                             *pIllegalInfoBuf;
  BYTE                             byIllegalFromatType;
  BYTE                             byPendant;
  BYTE                             byDataAnalysis;
  BYTE                             byYellowLabelCar;
  BYTE                             byDangerousVehicles;
  BYTE                             byPilotSafebelt;
  BYTE                             byCopilotSafebelt;
  BYTE                             byPilotSunVisor;
  BYTE                             byCopilotSunVisor;
  BYTE                             byPilotCall;
  BYTE                             byBarrierGateCtrlType;
  BYTE                             byAlarmDataType;
  NET_DVR_TIME_V30                 struSnapFirstPicTime;
  DWORD                            dwIllegalTime;
  DWORD                            dwPicNum;
  NET_ITS_PICTURE_INFO             struPicInfo[6];
  NET_DVR_VEHICLE_WEIGHT_RESULT    struWeightResult;
  BYTE                             byRes[256];
}NET_DVR_PLATE_RESULT_V50, *LPNET_DVR_PLATE_RESULT_V50;

Members

dwSize
结构体大小
dwMatchNo
匹配序号,由(车辆序号,数据类型,车道号)组成匹配码
byGroupNum
图片组数量（一辆过车相机多次抓拍的数量，代表一组图片的总数，用于延时匹配数据）
byPicNo
连拍的图片序号（接收到图片组数量后，表示接收完成;接收超时不足图片组数量时，根据需要保留或删除）
bySecondCam
是否第二相机抓拍（如远近景抓拍的远景相机，或前后抓拍的后相机，特殊项目中会用到）
byFeaturePicNo
闯红灯电警，取第几张图作为特写图,0xff-表示不取
byDriveChan
触发车道号
byVehicleType
车辆类型，参考VTR_RESULT
byDetSceneID
检测场景号[1,4], IPC默认是0
byVehicleAttribute
车辆属性，按位表示，0- 无附加属性(普通车)，bit1- 黄标车(类似年检的标志)，bit2- 危险品车辆，值：0- 否，1- 是
该节点已不再使用,使用下面的byYellowLabelCar和byDangerousVehicles判断是否黄标车和危险品车
wIllegalType
违章类型采用国标定义
byIllegalSubType
违章子类型
byPostPicNo
违章时取第几张图片作为卡口图,0xff-表示不取
byChanIndex
通道号（保留）
wSpeedLimit
限速上限（超速时有效）
byChanIndexEx
byChanIndexEx*256+byChanIndex表示真实通道号。
byVehiclePositionControl
车辆位置布防标志,0~为普通车牌识别报警,1~为车辆位置布防触发报警(即通过PUT /ISAPI/Traffic/channels/<ID>/vehiclePositionControl?format=json触发)
struPlateInfo
车牌信息结构
struVehicleInfo
车辆信息
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byDir
监测方向，1-上行（反向），2-下行(正向)，3-双向，4-由东向西，5-由南向北,6-由西向东，7-由北向南，8-其它
byDetectType
检测方式,1-地感触发，2-视频触发，3-多帧识别，4-雷达触发
byRelaLaneDirectionType
关联车道方向类型，参考ITC_RELA_LANE_DIRECTION_TYPE
该参数为车道方向参数，与关联车道号对应，确保车道唯一性。
byCarDirectionType
车辆具体行驶的方向，0表示从上往下，1表示从下往上（根据实际车辆的行驶方向来的区分）,2表示未知
dwCustomIllegalType
违章类型定义(用户自定义)
为0~数字格式时，为老的违章类型，wIllegalType、dwCustomIllegalType参数生效，赋值国标违法代码。
为1~字符格式时，pIllegalInfoBuf参数生效。老的违章类型，wIllegalType、dwCustomIllegalType参数依然赋值国标违法代码。
pIllegalInfoBuf
违法代码字符信息结构体指针；指向NET_ITS_ILLEGAL_INFO
byIllegalFromatType
违章信息格式类型； 0~数字格式， 1~字符格式
byPendant
0-表示未知,1-车窗有悬挂物，2-车窗无悬挂物
byDataAnalysis
0-数据未分析, 1-数据已分析
byYellowLabelCar
0-表示未知, 1-非黄标车,2-黄标车
byDangerousVehicles
0-表示未知, 1-非危险品车,2-危险品车
*以下字段包含Pilot字符均为主驾驶，含Copilot字符均为副驾驶
byPilotSafebelt
0-表示未知,1-系安全带,2-不系安全带
byCopilotSafebelt
0-表示未知,1-系安全带,2-不系安全带
byPilotSunVisor
0-表示未知,1-不打开遮阳板,2-打开遮阳板
byCopilotSunVisor
0-表示未知, 1-不打开遮阳板,2-打开遮阳板
byPilotCall
0-表示未知, 1-不打电话,2-打电话
byBarrierGateCtrlType
0-开闸，1-未开闸 (专用于历史数据中相机根据名单匹配后，是否开闸成功的标志)
byAlarmDataType
0-实时数据，1-历史数据
struSnapFirstPicTime
端点时间(ms)（抓拍第一张图片的时间）
dwIllegalTime
违法持续时间（ms） = 抓拍最后一张图片的时间 - 抓拍第一张图片的时间
dwPicNum
图片数量（与picGroupNum不同，代表本条信息附带的图片数量，图片信息由struVehicleInfoEx定义
struPicInfo
图片信息,单张回调，最多6张图，由序号区分
struWeightResult
车辆称重
byRes
预留

See Also

NET_DVR_StartListen_V30


NET_DVR_PLATECHECK_PARA

车牌比对参数结构体。

struct{
  BYTE              byAlarmWhenChecked;
  BYTE              byInformWhenChecked;
  BYTE              byRes[6];
  NET_DVR_IPADDR    struBlockFtpServer;
}NET_DVR_PLATECHECK_PARA, *LPNET_DVR_PLATECHECK_PARA;

Members

byAlarmWhenChecked
稽查成功是否报警，0- 否，1- 是
byInformWhenChecked
稽查成功是否对话框提示，0- 否，1- 是
byRes
保留
struBlockFtpServer
非授权名单FTP服务器地址

See Also

NET_DVR_ENFORCESYS_PARA


NET_DVR_PLATERECOG_PARA

车牌识别参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byPrMode;
  BYTE     byPrScene;
  BYTE     byPrDetRect;
  BYTE     byPrPicQuality;
  BYTE     byPrPicMode;
  BYTE     byPlateOsdDisplay;
  BYTE     byPrProvCharIndex;
  BYTE     byPrProvCharIndex1;
  BYTE     byPrProvCharIndex2;
  BYTE     byRes[7];
}NET_DVR_PLATERECOG_PARA, *LPNET_DVR_PLATERECOG_PARA;

Members

dwSize
结构体大小
byPrMode
车牌识别的模式，0- 静态图像，1- 动态视频
byPrScene
车牌识别的场景，0- 低速场景，1- 高速场景
byPrDetRect
0- 全屏幕，1- 中心区域
byPrPicQuality
车牌识别返回的图片质量，0- 低，1- 一般，2- 较高，3- 最高
byPrPicMode
车牌识别返回的图片分辨率，0- D1，1- CIF，2- QCIF
byPlateOsdDisplay
车牌OSD是否显示，0- 不显示，1- 显示
byPrProvCharIndex
车牌识别省份首汉字对应的索引
byPrProvCharIndex1
车牌识别常见首汉字1对应的索引
byPrProvCharIndex2
车牌识别常见首汉字2对应的索引
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PLATFORM_VERIFY_CFG

平台认证结果信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDoorNo;
  BYTE     byResultType;
  BYTE     byRes1[3];
  BYTE     byScreenDisplay[MAX_SCREEN_DISPLAY_LEN];
  BYTE     byRes[300];
}NET_DVR_PLATFORM_VERIFY_CFG, *LPNET_DVR_PLATFORM_VERIFY_CFG;

Members

dwSize
结构体大小
dwDoorNo
门编号
byResultType
认证结果类型：0- 非法，1- 合法
byRes1
保留，置为0
byScreenDisplay
LED屏幕显示，字符串，用于显示认证相关信息
byRes
保留，置为0

Remarks

  • 设备是否支持平台认证或者支持的参数能力，可以通过设备能力集进行判断，对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<PlatformVerifyCfg>。

See Also

NET_DVR_SetDVRConfig


NET_DVR_PLAY_BACK_BY_TIME

回放时间信息结构体。

struct{
  NET_DVR_TIME    StartTime;
  NET_DVR_TIME    StopTime;
}NET_DVR_PLAY_BACK_BY_TIME, *LPNET_DVR_PLAY_BACK_BY_TIME;

Members

StartTime
回放开始时间
StopTime
回放结束时间

See Also

NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX


NET_DVR_PLAY_BY_NAME_PARA

按文件名回放参数结构体。

struct{
  char    szFileName[100],
  char    byRes1[128],
  HWND    hWnd,
  NET_DVR_ADDRESS    struAddr;
  BYTE    byRes2[256];
}NET_DVR_PLAY_BY_NAME_PARA, *LPNET_DVR_PLAY_BY_NAME_PARA;

Members

szFileName
回放文件名
byRes1
保留参数，置为0
hWnd
放的窗口句柄，若置为空，SDK仍能收到码流数据，但不解码显示
struAddr
文件所在集群中CS地址信息，该信息文件查找时会返回；如果为空表示本登录地址
byRes2
保留参数，置为0

See Also

NET_DVR_PlayBackByName_V50


NET_DVR_PLAYCOND

回放或者下载信息结构体。

struct{
  DWORD           dwChannel;
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struStopTime;
  BYTE            byDrawFrame;
  BYTE            byStreamType;
  BYTE            byStreamID[STREAM_ID_LEN];
  BYTE            byCourseFile;
  BYTE            byRes[29];
}NET_DVR_PLAYCOND, *LPNET_DVR_PLAYCOND;

Members

dwChannel
通道号
struStartTime
开始时间
struStopTime
结束时间
byDrawFrame
是否抽帧：0- 不抽帧，1- 抽帧
byStreamType
码流类型：0- 主码流，1- 子码流，2- 码流三
byStreamID
流ID，使用流ID方式时dwChannel设为0xffffffff
byCourseFile
课程文件：0-否，1-是
byRes
保留

See Also

NET_DVR_PlayBackReverseByTime_V40 NET_DVR_GetFileByTime_V40


NET_DVR_PLAYREMOTEFILE

解码设备文件回放的参数结构体。

struct{
  DWORD   dwSize;
  char    sDecoderIP[16];
  WORD    wDecoderPort;
  WORD    wLoadMode;
  union{
           BYTE   byFile[100];
           struct{
           DWORD          dwChannel;
           BYTE           sUserName[NAME_LEN];
           BYTE           sPassword[PASSWD_LEN];
           NET_DVR_TIME   struStartTime;
           NET_DVR_TIME   struStopTime;
           }bytime;
  }mode_size;
}NET_DVR_PLAYREMOTEFILE,*LPNET_DVR_PLAYREMOTEFILE;

Members

dwSize
结构体大小
sDecoderIP
前端设备IP地址
wDecoderPort
前端设备端口号
wLoadMode
回放下载模式：1－按文件；2－按时间
byFile
回放的文件名
dwChannel
通道号
sUserName
请求视频用户名
sPassword
密码
struStartTime
按时间回放的开始时间
struStopTime
按时间回放的结束时间

See Also

NET_DVR_DecPlayBackCtrl


NET_DVR_PLCCFG

车牌亮度补偿参数结构体。

struct{
  DWORD   dwSize;
  BYTE    byPlcEnable;
  BYTE    byPlateExpectedBright;
  BYTE    byRes1[2];
  BYTE    byTradeoffFlash;
  BYTE    byCorrectFactor;
  WORD    wLoopStatsEn;
  WORD    wPlcBrightOffSet;
  BYTE    byRes[18];
}NET_DVR_PLCCFG,*LPNET_DVR_PLCCFG;

Members

dwSize
结构体大小
byPlcEnable
是否启用车牌亮度补偿（默认启用）：0-关闭，1-启用
byPlateExpectedBright
车牌的预期亮度（默认值50），范围[0,100]
byRes1
保留
byTradeoffFlash
是否考虑闪光灯的影响(默认启用): 0-关闭，1-启用。（使用闪光灯补光时, 如果考虑减弱闪光灯的亮度增强效应, 则需要设为1，否则为0）
byCorrectFactor
纠正系数（默认值50），范围[0,100]。默认值50(在byTradeoffFlash切换时，恢复默认值）
wLoopStatsEn
触发线圈是否参与车牌亮度统计，按位表示，0-不统计，1-统计
wPlcBrightOffSet
车牌亮度补偿灵敏度(虚拟线圈模式起效)，取值范围：1~100
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_POE_CFG

POE参数配置结构体。

struct{
 NET_DVR_IPADDR    struIP;
 char              byRes[128];
}NET_DVR_POE_CFG,*LPNET_DVR_POE_CFG;

Members

struIP
IP地址，配置POE即插即用的网关地址
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_POE_CHANNEL_ADD_MODE

POE通道添加方式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byAddMode;
  BYTE     byRes1[127];
}NET_DVR_POE_CHANNEL_ADD_MODE, *LPNET_DVR_POE_CHANNEL_ADD_MODE;

Members

dwSize
结构体大小
byAddMode
添加方式：0- 即插即用，1- 手动添加
byRes1
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_POINT

区域坐标点信息结构体。

struct{
  DWORD    dwX;
  DWORD    dwY;
}NET_DVR_POINT,*LPNET_DVR_POINT;

Members

dwX
X轴坐标
dwY
Y轴坐标

See Also

NET_DVR_CONFERENCE_REGION


NET_DVR_POINT_FRAME

云台图像区域位置信息。

struct{
  int    xTop;
  int    yTop;
  int    xBottom;
  int    yBottom;
  int    bCounter;
}NET_DVR_POINT_FRAME, *LPNET_DVR_POINT_FRAME;

Members

xTop
方框起始点的x坐标
yTop
方框起始点的y坐标
xBottom
方框结束点的x坐标
yBottom
方框结束点的y坐标
bCounter
保留

Remarks

该结构体中的坐标值与当前预览显示框的大小有关，现假设预览显示框为352*288，我们规定原点为预览显示框左上角的顶点，前四个参数计算方法如下：
xTop = 鼠标当前所选区域的起始点坐标的值*255/352；
xBottom = 鼠标当前所选区域的结束点坐标的值*255/352；
yTop = 鼠标当前所选区域的起始点坐标的值*255/288；
yBottom = 鼠标当前所选区域的结束点坐标的值*255/288；
缩小条件：xTop减去xBottom的值大于2。放大条件：xTop小于xBottom。

See Also

NET_DVR_PTZSelZoomIn_EX NET_DVR_PTZSelZoomIn

NET_DVR_SCREENZOOM


NET_DVR_POINT_THERM_CFG

点测温实时信息结构体。

struct{
  float            fTemperature;
  NET_VCA_POINT    struPoint;
  BYTE             byRes[120];
}NET_DVR_POINT_THERM_CFG,*LPNET_DVR_POINT_THERM_CFG;

Members

fTemperature
当前温度
struPoint
点测温坐标（当规则标定类型为点的时候生效）
byRes
保留，置为0

See Also

NET_DVR_THERMOMETRY_UPLOAD


NET_DVR_POOLPARAM

云存储数据池参数结构体。

struct{
  DWORD    dwPoolID;
  BYTE     byRes[4];
}NET_DVR_POOLPARAM,*LPNET_DVR_POOLPARAM;

Members

dwPoolID
云存储分配节点号
byRes
保留，置为0

See Also

NET_DVR_CLOUDSTORAGE_CFG NET_DVR_SERVER_TEST_PARA


NET_DVR_PORTCFG

解码器透明通道配置的结构体。

struct{
  DWORD              dwSize;
  NET_DVR_PORTINFO   struTransPortInfo[MAX_TRANSPARENTNUM];
}NET_DVR_PORTCFG,*LPNET_DVR_PORTCFG;

Members

dwSize
结构体大小
struTransPortInfo
透明通道的参数结构体

See Also

NET_DVR_GetDecTransPort NET_DVR_SetDecTransPort


NET_DVR_PORTINFO

透明通道配置的参数子结构体。

struct{
  DWORD   dwEnableTransPort;
  char    sDecoderIP[16];
  WORD    wDecoderPort;
  WORD    wDVRTransPort;
  char    cReserve[4];
}NET_DVR_PORTINFO,*LPNET_DVR_PORTINFO;

Members

dwEnableTransPort
是否启动透明通道：0－不启用；1－启用
sDecoderIP
前端设备IP地址
wDecoderPort
端口号
wDVRTransPort
配置前端设备是从485或232输出：1表示232串口；2表示485串口
cReserve
保留，置为0

See Also

NET_DVR_PORTCFG


NET_DVR_POS_AVE

AVE协议信息结构体。

struct{
  DWORD    dwPosAddr;
  BYTE     byRes[948];
}NET_DVR_POS_AVE,*LPNET_DVR_POS_AVE;

Members

dwPosAddr
POS地址编号
byRes
保留，置为0

See Also

NET_DVR_POS_PROTOCOL_UNION


NET_DVR_POS_CONNECTMODE_UNION

POS连接模式配置联合体。

union{
  BYTE                    byLen[312];
  NET_DVR_NET_RECEIVE     struNetRecv;
  NET_DVR_MONITOR_INFO    struTcpMonitor;
  NET_DVR_SINGLE_RS232    struRS232;
  NET_DVR_MONITOR_INFO    struUdpMonitor;
  NET_DVR_NET_SNIFF       struSniff;
  NET_DVR_ADDRESS         struMcast;
  NET_DVR_USB_RS232       struUSBRS232;
}NET_DVR_POS_CONNECTMODE_UNION,*LPNET_DVR_POS_CONNECTMODE_UNION;

Members

byLen
联合体大小，312字节
struNetRecv
网络接收模式
struTcpMonitor
网络监听模式
struRS232
串口方式
struUdpMonitor
网络监听-UDP模式
struSniff
网络侦听模式
struMcast
多播模式
struUSBRS232
USB转232串口方式

See Also

NET_DVR_CONNECT_POS_CFG


NET_DVR_POS_FILTER_CFG

POS过滤规则配置结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byEnable;
  BYTE                          byCharSetType;
  BYTE                          byRes1;
  BYTE                          byProtocolType;
  NET_DVR_POS_PROTOCOL_UNION    struPosProtocol;
  BYTE                          byRes[32];
}NET_DVR_POS_FILTER_CFG,*LPNET_DVR_POS_FILTER_CFG;

Members

dwSize
结构体大小
byEnable
使能规则：0- 禁用，1- 启用
byCharSetType
编码方式：0- UTF-8，1- GB2312，其他取值详见枚举类型：NET_DVR_CHARSET_ENUM
byRes1
保留，置为0
byProtocolType
协议类型：1- generic text协议(universal Protocol)，2- AVE VSI-ADD，3- AVE Vnet，4- EPSON(该类型无需处理pos协议参数)，5- NUCLEUS
struPosProtocol
POS协议参数
byRes
保留，置为0

Remarks

  • 设备是否支持POS过滤规则配置或者支持的参数能力，可以通过设备能力集进行判断，对应POS能力集(POSAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<FilterRule>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_POS_GENERIC

Generic text协议信息结构体。

struct{
  BYTE                        byCaseSensitive;
  BYTE                        byRes1[7];
  NET_DVR_GENERIC_START       struTransactionStart;
  NET_DVR_GENERIC_END         struTransactionEnd;
  NET_DVR_GENERIC_DATA_CFG    struLineDeli;
  NET_DVR_IGNORE_STRING       struIgnoreString[MAX_IGNORE_STRING_NUM];
  BYTE                        byRes[40];
}NET_DVR_POS_GENERIC, *LPNET_DVR_POS_GENERIC;

Members

byCaseSensitive
是否区分大小写：0- 不区分，1- 区分
byRes1
保留
struTransactionStart
交易开始
struTransactionEnd
交易结束
struLineDeli
行间隔符
struIgnoreString
忽略字符串，目前最多支持为4个
byRes
保留

See Also

NET_DVR_POS_PROTOCOL_UNION


NET_DVR_POS_INFO_OVERLAY

客流量POS信息码流叠加参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byPosInfoOverlayEnable;
  BYTE     byOverlayType;
  BYTE     byRes[126];
}NET_DVR_POS_INFO_OVERLAY,*LPNET_DVR_POS_INFO_OVERLAY;

Members

dwSize
结构体大小
byPosInfoOverlayEnable
POS信息码流叠加控制：0- 不叠加，1- 叠加
byOverlayType
叠加信息类型：0- 叠加进入和离开信息，1- 叠加进入、离开、PASS、ID、高度信息
byRes
保留，置为0

Remarks

  • 设备是否支持POS信息码流叠加控制能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，对应节点：<PDC>中的<isSupportPosInfoOverlay>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_POS_NUCLEUS

NUCLEUS协议参数结构体。

struct{
  char    szEmployeeNo[SERIAL_NUM_LEN];
  char    szTerminalNo[SERIAL_NUM_LEN];
  char    szShiftNo[SERIAL_NUM_LEN];
  BYTE    byRes[928];
}NET_DVR_POS_NUCLEUS,*LPNET_DVR_POS_NUCLEUS;

Members

szEmployeeNo
员工编号，如1
szTerminalNo
Pos机编号，如1
szShiftNo
轮班编号，对应不同的轮班时间，比如早班、晚班、夜班等
byRes
保留

See Also

NET_DVR_POS_PROTOCOL_UNION


NET_DVR_POS_OSD_REGION

POS信息叠加区域结构体。

struct{
  NET_VCA_POINT    struStart;
  NET_VCA_POINT    struEnd;
}NET_DVR_POS_OSD_REGION,*LPNET_DVR_POS_OSD_REGION;

Members

struStart
起点坐标
struEnd
终点坐标

See Also

NET_DVR_CHAN_FILTER_CFG


NET_DVR_POS_PROTOCOL_UNION

POS协议参数联合体。

union{
  BYTE                   byLenth[952];
  NET_DVR_POS_GENERIC    struGeneric;
  NET_DVR_POS_AVE        struAve;
  NET_DVR_POS_NUCLEUS    struNUCLEUS;
}NET_DVR_POS_PROTOCOL_UNION,*LPNET_DVR_POS_PROTOCOL_UNION;

Members

byLenth
联合体大小，952字节
struGeneric
Generic text协议参数，协议类型(byProtocolType)为1时有效
struAve
AVE协议参数，协议类型(byProtocolType)为2、3时有效
struNUCLEUS
NUCLEUS协议参数，协议类型(byProtocolType)为5时有效

See Also

NET_DVR_POS_FILTER_CFG


NET_DVR_POSINFO_OVERLAY

POS叠加参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byBackpackEnanble;
  BYTE     bySexEnanble;
  BYTE     byCarryEnanble;
  BYTE     byRideEnanble;
  BYTE     byMaskEnanble;
  BYTE     byHatEnanble;
  BYTE     bySleeveEnanble;
  BYTE     byPantsTypeEnanble;
  BYTE     byHairEnanble;
  BYTE     byGlassesEnanble;
  BYTE     byAgeEnanble;
  BYTE     byHeightEnanble;
  BYTE     byRes[511];
}NET_DVR_POSINFO_OVERLAY,*LPNET_DVR_POSINFO_OVERLAY;

Members

dwSize
结构体大小
byEnable
POS信息叠加：0- 不叠加，1- 叠加
byBackpackEnanble
是否叠加背包信息是否叠加：0- 不叠加，1- 叠加
bySexEnanble
是否叠加性别信息是否叠加：0- 不叠加，1- 叠加
byCarryEnanble
是否叠加拎东西信息是否叠加：0-不叠加，1-叠加
byRideEnanble
是否叠加骑车信息是否叠加：0- 不叠加，1- 叠加
byMaskEnanble
是否叠加带口罩信息是否叠加：0- 不叠加，1- 叠加
byHatEnanble
是否叠加戴帽子信息是否叠加：0- 不叠加，1- 叠加
bySleeveEnanble
是否叠加长短袖情况：0- 不叠加，1- 叠加
byPantsTypeEnanble
是否叠加裤子属性信息是否叠加：0- 不叠加，1- 叠加
byHairEnanble
是否叠加长短发信息是否叠加：0- 不叠加，1- 叠加
byGlassesEnanble
是否叠加戴眼镜信息是否叠加：0- 不叠加，1- 叠加
byAgeEnanble
是否叠加年龄信息是否叠加：0- 不叠加，1- 叠加
byHeightEnanble
是否叠加身高信息是否叠加：0- 不叠加，1- 叠加
byRes
保留，置为0

Remarks

  • 设备是否支持POS叠加配置或者支持的参数能力，可以通过设备能力集进行判断，对应POS叠加配置能力集(PosOverlayCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_POSINFO_OVERLAY_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_POSITION_INDEX

场景信息规则结构体。

struct{
  BYTE    byIndex;
  BYTE    byRes1;
  WORD    wDwell;
  BYTE    byRes2[4];
}NET_DVR_POSITION_INDEX,*LPNET_DVR_POSITION_INDEX;

Members

byIndex
场景索引
byRes1
保留
wDwell
停留时间
byRes2
保留

See Also

NET_DVR_POSITION_TRACK_CFG


NET_DVR_POSITION_RULE_CFG

场景位置行为规则配置结构。

struct{
  DWORD                  dwSize;
  NET_DVR_PTZ_POSITION   struPtzPosition;
  NET_VCA_RULECFG        struVcaRuleCfg;
  BYTE                   byRes2[80];
}NET_DVR_POSITION_RULE_CFG, *LPNET_DVR_POSITION_RULE_CFG;

Members

dwSize
结构体大小
struPtzPosition
场景位置信息
struVcaRuleCfg
行为规则配置
byRes2
保留

See Also

NET_DVR_GetPositionRule NET_DVR_SetPositionRule


NET_DVR_POSITION_RULE_CFG_V41

场景位置行为规则配置结构。

struct{
  DWORD                  dwSize;
  NET_DVR_PTZ_POSITION   struPtzPosition;
  NET_VCA_RULECFG_V41    struVcaRuleCfg;
  BYTE                   byTrackEnable;
  BYTE                   byRes1;
  WORD                   wTrackDuration;
  BYTE                   byRes2[76];
}NET_DVR_POSITION_RULE_CFG_V41, *LPNET_DVR_POSITION_RULE_CFG_V41;

Members

dwSize
结构体大小
struPtzPosition
场景位置信息
struVcaRuleCfg
行为规则配置
byTrackEnable
是否启用跟踪：0- 否，1- 是
byRes1
保留
wTrackDuration
跟踪持续时间，单位：s
byRes2
保留

See Also

NET_DVR_GetPositionRule_V41 NET_DVR_SetPositionRule_V41


NET_DVR_POSITION_TRACK_CFG

场景跟踪信息列表结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byNum;
  BYTE                      byRes1[3];
  NET_DVR_POSITION_INDEX    struPositionIndex[MAX_POSITION_NUM];
  BYTE                      byRes2[8];
}NET_DVR_POSITION_TRACK_CFG,*LPNET_DVR_POSITION_TRACK_CFG;

Members

dwSize
结构体大小
byNum
场景个数
byRes1
保留
struPositionIndex
场景信息规则
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_POSTEPOLICECFG

卡口电警参数结构体。

struct{
  DWORD   dwSize;
  DWORD   dwDistance;
  DWORD   dwLightChan[MAX_SIGNALLIGHT_NUM];
  BYTE    byCapSpeed;
  BYTE    bySpeedLimit;
  BYTE    byTrafficDirection;
  BYTE    byRes[129];
}NET_DVR_POSTEPOLICECFG,*LPNET_DVR_POSTEPOLICECFG;

Members

dwSize
结构体大小
dwDistance
线圈距离,单位cm，取值范围[0,20000]
dwLightChan
信号灯通道号
byCapSpeed
标志限速，单位km/h，取值范围[0,255]
bySpeedLimit
限速值，单位km/h，取值范围[0,255]
byTrafficDirection
车流方向，0-由东向西，1-由西向东，2-由南向北，3-由北向南
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_POWER

三相功率参数结构体。

struct{
  int    iPhasePowerA;
  int    iPhasePowerB;
  int    iPhasePowerC;
  int    iSysTotalPower;
}NET_DVR_POWER,*LPNET_DVR_POWER;

Members

iPhasePowerA
A相功率，单位：W
iPhasePowerB
B相功率，单位：W
iPhasePowerC
C相功率，单位：W
iSysTotalPower
系统总功率，单位：W

See Also

NET_DVR_ALARMHOST_UPS_STATE NET_DVR_ALARMHOST_ELECTRICITY_STATE


NET_DVR_POWER_FACTOR

功率因数参数结构体。

struct{
  int    iPhaseAPowerFactor;
  int    iPhaseBPowerFactor;
  int    iPhaseCPowerFactor;
  int    iTotalPowerFactor;
}NET_DVR_POWER_FACTOR,*LPNET_DVR_POWER_FACTOR;

Members

iPhaseAPowerFactor
A相功率因数
iPhaseBPowerFactor
B相功率因数
iPhaseCPowerFactor
C相功率因数
iTotalPowerFactor
系统总功率因数

See Also

NET_DVR_ALARMHOST_ELECTRICITY_STATE


NET_DVR_PPPCFG

PPP参数结构体。

struct{
  char      sRemoteIP[16];
  char      sLocalIP[16];
  char      sLocalIPMask[16];
  BYTE      sUsername[NAME_LEN];
  BYTE      sPassword[PASSWD_LEN];
  BYTE      byPPPMode;
  BYTE      byRedial;
  BYTE      byRedialMode;
  BYTE      byDataEncrypt;
  DWORD     dwMTU;
  char      sTelephoneNumber[PHONENUMBER_LEN];
}NET_DVR_PPPCFG, *LPNET_DVR_PPPCFG;

Members

sRemoteIP
远端IP地址
sLocalIP
本地IP地址
sLocalIPMask
本地IP地址掩码
sUsername
用户名
sPassword
密码
byPPPMode
PPP模式：0－主动，1－被动
byRedial
是否回拨：0-否，1-是
byRedialMode
回拨模式：0-由拨入者指定，1-预置回拨号码
byDataEncrypt
数据加密：0-否，1-是
dwMTU
MTU
sTelephoneNumber
电话号码

See Also

NET_DVR_RS232CFG


NET_DVR_PPPCFG_V30

PPP参数结构体。

struct{
  NET_DVR_IPADDR      struRemoteIP;
  NET_DVR_IPADDR      struLocalIP;
  char                sLocalIPMask[16];
  BYTE                sUsername[NAME_LEN];
  BYTE                sPassword[PASSWD_LEN];
  BYTE                byPPPMode;
  BYTE                byRedial;
  BYTE                byRedialMode;
  BYTE                byDataEncrypt;
  DWORD               dwMTU;
  char                sTelephoneNumber[PHONENUMBER_LEN];
}NET_DVR_PPPCFG_V30, *LPNET_DVR_PPPCFG_V30;

Members

struRemoteIP
远端IP地址
struLocalIP
本地IP地址
sLocalIPMask
本地IP地址掩码
sUsername
用户名
sPassword
密码
byPPPMode
PPP模式：0－主动，1－被动
byRedial
是否回拨：0-否，1-是
byRedialMode
回拨模式：0-由拨入者指定，1-预置回拨号码
byDataEncrypt
数据加密：0-否，1-是
dwMTU
MTU
sTelephoneNumber
电话号码

See Also

NET_DVR_RS232CFG_V30


NET_DVR_PPPDPARAM

PPP拨号参数结构体。

struct{
  BYTE                byDialNum[NAME_LEN];
  BYTE                byUserName[NAME_LEN];
  BYTE                byPassword[DIALPASSWD_LEN];
  BYTE                byApn[NAME_LEN];
  NET_DVR_IPADDR      struLocalIp;
  NET_DVR_IPADDR      struRemoteIp;
  WORD                wMtuSize;
  BYTE                byVerifyProtocal;
  BYTE                byRes[25];
}NET_DVR_PPPDPARAM, *LPNET_DVR_PPPDPARAM;

Members

byDialNum
拨号号码，比如“#777”
byUserName
拨号用户名
byPassword
拨号密码
byApn
接入点名称
struLocalIp
本地IP地址
struRemoteIp
远端IP地址
wMtuSize
PPP接口的最大传输单元
byVerifyProtocal
IPCP 校验协议，0- auto，1- CHAP，2- PAP
byRes
保留

See Also

NET_DVR_DIALPARAM


NET_DVR_PPPOECFG

PPPoE配置结构体。

struct{
  DWORD             dwPPPOE;
  BYTE              sPPPoEUser[NAME_LEN];
  char              sPPPoEPassword[PASSWD_LEN];
  NET_DVR_IPADDR    struPPPoEIP;
}NET_DVR_PPPOECFG, *LPNET_DVR_PPPOECFG;

Members

dwPPPOE
是否启用PPPoE：0-不启用，1-启用
sPPPoEUser
PPPoE用户名
sPPPoEPassword
PPPoE密码
struPPPoEIP
PPPoE IP地址

See Also

NET_DVR_NETCFG_V30

NET_DVR_NETCFG_MULTI


NET_DVR_PPT_CHANNEL_CFG

PPT支持通道信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byChan[MAX_PPT_CHAN];
  BYTE     byRes[32];
 }NET_DVR_PPT_CHANNEL_CFG,*LPNET_DVR_PPT_CHANNEL_CFG;

Members

dwSize
结构体大小
byChan
PPT支持通道，下标跟通道一一对应，取值：0- 不支持，1- 支持，例如：byChan[0]=1表示通道01支持PPT功能
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_PPT_DETECT_CFG

PPT检测参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnablePPTDetect;
  BYTE     byPptDetLevel;
  BYTE     byEnablePartScreen;
  BYTE     byRes1[2];
  WORD     wX;
  WORD     wY;
  WORD     wWidth;
  WORD     wHeight;
  DWORD    dwChangePixelNum;
  BYTE     byRes[28];
 }NET_DVR_PPT_DETECT_CFG,*LPNET_DVR_PPT_DETECT_CFG;

Members

dwSize
结构体大小
byEnablePPTDetect
是否启用PPT检测：0- 否，1- 是
byPptDetLevel
检测灵敏度
byEnablePartScreen
是否配置部分区域：0- 否，1- 是
byRes1
保留，置为0
wX
区域X坐标
wY
区域Y坐标
wWidth
区域宽度
wHeight
区域高度
dwChangePixelNum
像素点检测阈值[0,1000](ps : 一幅图像有多少像素在变化)
byRes
保留，置为0

Remarks

PPT检测参数取值范围可以通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，录播主机能力RecordingHostAbility)获取，对应节点<PPTDetection>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PRESET_COND

预置点条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwGroupNO;
  BYTE     byRes[8];
}NET_DVR_PRESET_COND, *LPNET_DVR_PRESET_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwGroupNum
组号
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_PRESET_INFO

预置点信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPresetNum;
  DWORD    dwGroupNum;
  BYTE     byRes[8];
}NET_DVR_PRESET_INFO, *LPNET_DVR_PRESET_INFO;

Members

dwSize
结构体大小
dwPresetNum
预置点个数
dwGroupNum
组数
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_PRESET_NAME

预置点名称配置结构体。

struct{
  DWORD    dwSize;
  WORD     wPresetNum;
  BYTE     byRes1[2];
  BYTE     byName[NAME_LEN];
  WORD     wPanPos;
  WORD     wTiltPos;
  WORD     wZoomPos;
  BYTE     byRes[58];
}NET_DVR_PRESET_NAME, *LPNET_DVR_PRESET_NAME;

Members

dwSize
结构体大小
wPresetNum
预置点编号
byRes1
保留，置为0
byName
预置点名称
wPanPos
水平参数，只支持获取，如果获取到的数据大于360默认减去360
wTiltPos
垂直参数，只支持获取，如果获取到的数据大于360默认减去360
wZoomPos
变倍参数，只支持获取，如果获取到的数据大于360默认减去360
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PRESET_POINT_PARAM

预置点控制参数结构体。

struct{
  DWORD             dwSize;
  DWORD             dwChannel;
  DWORD             dwPTZPresetCmd;
  NET_VCA_POINT     struVcaPoint;
  DWORD             dwPresetIndex;
  WORD              wZoomCoordinate;
  BYTE              byRes[30];
}NET_DVR_PRESET_POINT_PARAM,*LPNET_DVR_PRESET_POINT_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
dwPTZPresetCmd
预置点控制命令，见下表
宏定义 | 宏定义值 | 含义
SET_PRESET | 8 | 设置预置点
CLE_PRESET | 9 | 清除预置点
GOTO_PRESET | 39 | 转到预置点
struVcaPoint
预览界面点坐标
dwPresetIndex
预置点的序号（从1开始），最多支持300个预置点
wZoomCoordinate
预置点窗口Zoom值
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_PRESETCFG

预置点参数结构体。

struct{
  DWORD            dwSize;
  DWORD            dwPresetIndex;
  NET_VCA_POINT    struVcaPoint;
  WORD             wZoomCoordinate;
  BYTE             byRes[30];
}NET_DVR_PRESET_COND, *LPNET_DVR_PRESET_COND;

Members

dwSize
结构体大小
dwPresetIndex
预置点序号
struVcaPoint
预置点坐标
wZoomCoordinate
预置点窗口Zoom值
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_PRESETCHAN_INFO

预置点通道信息结构体。

struct{
  DWORD   dwEnablePresetChan;
  DWORD   dwPresetPointNo;
}NET_DVR_PRESETCHAN_INFO,*LPNET_DVR_PRESETCHAN_INFO;

Members

dwEnablePresetChan
启用预置点的通道
dwPresetPointNo
调用预置点通道对应的预置点序号，0xfffffff表示不调用预置点

See Also

NET_DVR_ALARMINCFG_V40 NET_DVR_VCA_DETECTION_CFG_V40 NET_DVR_EVENT_TRIGGER NET_DVR_PTZ_NOTIFICATION


NET_DVR_PREVIEW_DELAY_CFG

延迟预览参数结构体。

struct{
  DWORD   dwSize;
  WORD    wdelayTime;
  BYTE    byRes[130];
}NET_DVR_PREVIEW_DELAY_CFG,*LPNET_DVR_PREVIEW_DELAY_CFG;

Members

dwSize
结构体大小
wdelayTime
延迟预览时间，单位：秒
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PREVIEW_DISPLAYCFG

预览显示参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byCorrectMode;
  BYTE     byMountType;
  BYTE     byRealTimeOutput;
  BYTE     byRes[61];
}NET_DVR_PREVIEW_DISPLAYCFG,*LPNET_DVR_PREVIEW_DISPLAYCFG;

Members

dwSize
结构体大小
byCorrectMode
校正模式：0- 软件校正，1- 芯片校正
byMountType
安装类型：0- 吸顶，1- 桌面，2- 墙面
byRealTimeOutput
实时输出模式：
0- 模式1：鱼眼+全景+3PTZ (与原有非实时模式一致)；
1- 模式2：鱼眼+4PTZ(与原有实时模式一致)；
2- 模式3：鱼眼(主)+鱼眼(子)+3PTZ；
3- 模式4：全景展开(主码流+子码流)；
4- 模式5：4PTZ；
5- 模式6：鱼眼
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PREVIEW_SWITCH_CFG

设备本地预览切换参数结构体。

struct{
  DWORD    dwSize;
  WORD     wSwitchSeq[MAX_WINDOW_V40];
  BYTE     byPreviewNumber;
  BYTE     byEnableAudio;
  BYTE     bySwitchTime;
  BYTE     bySameSource;
  BYTE     byRes[32];
}NET_DVR_PREVIEW_SWITCH_CFG, *LPNET_DVR_PREVIEW_SWITCH_CFG;

Members

dwSize
结构体大小
wSwitchSeq
bySwitchSeq[i]==j，表示第（byGroup*64+i+1）个窗口显示第j个通道，为0xff表示该窗口不显示。
对于庭审主机，数组取值对应视频输入通道，视频输入通道相关信息通过NET_DVR_GetDVRConfig(命令：NET_DVR_GET_TRIAL_SYSTEM_CFG)可以获取。
byPreviewNumber
预览画面分割模式：0- 1画面，1- 4画面，2- 9画面，3- 16画面，4- 6画面，5- 8画面，6- 25画面，7- 32画面，8- 36画面，9- 64画面，0xff- 最大画面
byEnableAudio
是否开启声音预览：0- 不预览，1- 预览
bySwitchTime
轮巡切换时间：0- 不切换，1- 5s，2- 10s，3- 20s，4- 30s，5- 60s，6- 120s，7- 300s
bySameSource
是否同源，当视频输出口类型为非同源VGA1~非同源VGA4、HDMI1、HDMI2时有效
byRes
保留，置为0

Remarks

  • 组号byGroup请参见结构体NET_DVR_PREVIEW_SWITCH_COND。
  • 设备是否支持本地预览切换功能或者支持的参数能力，可以通过能力集获取，对应本地预览切换能力集(PreviewSwitchAbility)，接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PREVIEW_SWITCH_COND

设备本地预览输出参数配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byGroup;
  BYTE     byVideoOutType;
  BYTE     byGetDefaultPreviewSet;
  BYTE     byPreviewNumber;
}NET_DVR_PREVIEW_SWITCH_COND, *LPNET_DVR_PREVIEW_SWITCH_COND;

Members

dwSize
结构体大小
byGroup
组号，从0开始，每组可配置64个画面
byVideoOutType
视频输出接口类型：0-主CVBS，1-HDMI，2-VGA，3-辅助输出，4-辅助输出二，5-辅助输出三，6-辅助输出四，7-辅助HDMI，8-扩展HDMI1，9-扩展HDMI2，10-扩展HDMI3，11-扩展HDMI4，12-非同源VGA1，13-非同源VGA2，14-非同源VGA3，15-非同源VGA4，16-同源VGA，17-主LCD，18-辅助VGA，19-辅助LCD
byGetDefaultPreviewSet
是否获取预设：0-否，1-是；若为1时，byPreviewNumber字段有效
byPreviewNumber
预览数目：0-1画面,1-4画面,2-9画面,3-16画面, 4-6画面, 5-8画面6-25画面,7-32画面, 8-36画面0xff:最大画面

Remarks

设备支持的视频输出接口类型：通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)获取本地预览切换能力集(PreviewSwitchAbility)，对应节点：<VideoOutType>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PREVIEWCFG

本地预览参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byPreviewNumber;
  BYTE       byEnableAudio;
  BYTE       wSwitchTime;
  BYTE       bySwitchSeq[MAX_WINDOW];
}NET_DVR_PREVIEWCFG,*LPNET_DVR_PREVIEWCFG;

Members

dwSize
结构体大小
byPreviewNumber
预览数目：0-1画面，1-4画面，2-9画面，3-16画面，0xff-最大画面
byEnableAudio
是否声音预览：0-不预览，1-预览
wSwitchTime
预览切换时间：0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s
bySwitchSeq
切换顺序，如果bySwitchSeq[i]为0xff表示不用

Remarks

举例：byPreviewNumber为4，bySwitchSeq[1]为4，表示当前选择了4画面预览，首次出现的轮训画面的第二个预览窗口是显示第四通道，其他窗口和后续轮训的窗口都不显示。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_PREVIEWCFG_V30


NET_DVR_PREVIEWCFG_V30

本地预览参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byPreviewNumber;
  BYTE       byEnableAudio;
  BYTE       wSwitchTime;
  BYTE       bySwitchSeq[MAX_PREVIEW_MODE][MAX_WINDOW_V30];
  BYTE       byRes[24];
}NET_DVR_PREVIEWCFG_V30,*LPNET_DVR_PREVIEWCFG_V30;

Members

dwSize
结构体大小
byPreviewNumber
预览数目：0-1画面，1-4画面，2-9画面，3-16画面，0xff-最大画面
byEnableAudio
是否声音预览：0-不预览，1-预览
wSwitchTime
预览切换时间：0-不切换，1-5s，2-10s，3-20s，4-30s，5-60s，6-120s，7-300s
bySwitchSeq
切换顺序，如果bySwitchSeq[i]为0xff表示不用
byRes
保留，置为0

Remarks

  • 本地预览参数配置，包括HDMI、主CVBS、辅CVBS、VGA以及零通道预览输出，具体硬件接口说明请参见设备操作手册。其中辅CVBS配置仅DS-90xxHF-S(H)和DS-91xxHF-S(H)支持。
  • 若当前是零通道本地预览参数配置时，本地零通道预览输出对应设备的主CVBS或辅CVBS口是由设备识别。目前仅支持一种预览模式，即只能选择1画面、4画面、9画面、16画面和最大画面中的一种，如：byPreviewNumber为1，bySwitchSeq[0][1]为4，表示当前选择了4画面预览，首次出现的轮训画面的第二个预览窗口是显示第四通道，其他窗口和后续轮训的窗口都不显示。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

    Reference Structure

    该结构扩展源于

    NET_DVR_PREVIEWCFG


NET_DVR_PREVIEWINFO

预览参数结构体。

struct{
  LONG     lChannel;
  DWORD    dwStreamType;
  DWORD    dwLinkMode;
  HWND     hPlayWnd;
  BOOL     bBlocked;
  BOOL     bPassbackRecord;
  BYTE     byPreviewMode;
  BYTE     byStreamID[STREAM_ID_LEN];
  BYTE     byProtoType;
  BYTE     byRes1;
  BYTE     byVideoCodingType;
  DWORD    dwDisplayBufNum;
  BYTE     byNPQMode;
  BYTE     byRecvMetaData;
  BYTE     byDataType;
  BYTE     byRes[213];
}NET_DVR_PREVIEWINFO, *LPNET_DVR_PREVIEWINFO;

Members

lChannel
通道号，目前设备模拟通道号从1开始，数字通道的起始通道号通过NET_DVR_GetDVRConfig（配置命令NET_DVR_GET_IPPARACFG_V40）获取（dwStartDChan）。
dwStreamType
码流类型：0-主码流，1-子码流，2-三码流，3-虚拟码流，以此类推
dwLinkMode
连接方式：0- TCP方式，1- UDP方式，2- 多播方式，3- RTP方式，4- RTP/RTSP，5- RTP/HTTP，6- HRUDP（可靠传输） ，7- RTSP/HTTPS，8- NPQ
hPlayWnd
播放窗口的句柄，为NULL表示不解码显示。
bBlocked
0- 非阻塞取流，1- 阻塞取流
若设为不阻塞，表示发起与设备的连接就认为连接成功，如果发生码流接收失败、播放失败等情况以预览异常的方式通知上层。在循环播放的时候可以减短停顿的时间，与NET_DVR_RealPlay处理一致。
若设为阻塞，表示直到播放操作完成才返回成功与否，网络异常时SDK内部connect失败将会有5s的超时才能够返回，不适合于轮询取流操作。
bPassbackRecord
是否启用录像回传：0-不启用录像回传，1-启用录像回传。ANR断网补录功能，客户端和设备之间网络异常恢复之后自动将前端数据同步过来，需要设备支持。
byPreviewMode
延迟预览模式：0- 正常预览，1- 延迟预览
byStreamID
流ID，为字母、数字和"_"的组合，lChannel为0xffffffff时启用此参数
byProtoType
应用层取流协议：0- 私有协议，1- RTSP协议。主子码流支持的取流协议通过登录返回结构参数NET_DVR_DEVICEINFO_V30的byMainProto、bySubProto值得知。设备同时支持私协议和RTSP协议时，该参数才有效，默认使用私有协议，可选RTSP协议。
byRes1
保留，置为0
byVideoCodingType
码流数据编解码类型：0- 通用编码数据，1- 热成像探测器产生的原始数据（温度数据的加密信息，通过去加密运算，将原始数据算出真实的温度值）
dwDisplayBufNum
播放库播放缓冲区最大缓冲帧数，取值范围：1、6（默认，自适应播放模式）、15，置0时默认为1
byNPQMode
NPQ模式：0- 直连模式，1-过流媒体模式
byRecvMetaData
是否接收metadata数据，设备是否支持该功能通过GET /ISAPI/System/capabilities 中DeviceCap.SysCap.isSupportMetadata是否存在且为true
byDataType
数据类型：0-码流数据，1-音频数据
byRes
保留，置为0

Remarks

  • dwStreamType(码流类型)、dwLinkMode(连接方式)、bPassbackRecord(录像回传)、byPreviewMode(延迟预览模式)、byStreamID(流ID)这些参数的取值需要设备支持。
  • NET_DVR_RealPlay_V40支持多播方式预览（dwLinkMode设为2），不需要传多播组地址，底层自动从设备获取已配置的多播组地址（NET_DVR_NETCFG_V50中的参数struMulticastIpAddr）并以该多播组地址实现多播。
  • 设备码流类型详细介绍可以参考“帮助”->“常见问题解答”中的Question 33。
  • 当dwLinkMode == 7的时候，同时byProtoType == 1的时候，表示RTP over HTTPS预览。

See Also

NET_DVR_RealPlay_V40


NET_DVR_PREVIEWINFO_SPECIAL

预览参数结构体。

typedef struct tagNET_DVR_PREVIEWINFO_SPECIAL{
  char     sURL[1024];
  DWORD    dwLinkMode;
  HWND     hPlayWnd;
  DWORD    bBlocked;
  DWORD    dwDisplayBufNum;
  BYTE     byRes[64];
}NET_DVR_PREVIEWINFO_SPECIAL, *LPNET_DVR_PREVIEWINFO_SPECIAL;

Members

sURL
取流URL，数据中心设备需要通过ISAPI协议获取前端相机对应的取流URL。
dwLinkMode
连接方式：0- TCP方式，1- UDP方式，2- 多播方式，3- RTP方式，4- RTP/RTSP，5- RTP/HTTP
hPlayWnd
播放窗口的句柄，为NULL表示不解码显示。
bBlocked
0- 非阻塞取流，1- 阻塞取流
若设为不阻塞，表示发起与设备的连接就认为连接成功，如果发生码流接收失败、播放失败等情况以预览异常的方式通知上层。在循环播放的时候可以减短停顿的时间，与NET_DVR_RealPlay处理一致。
若设为阻塞，表示直到播放操作完成才返回成功与否，网络异常时SDK内部connect失败将会有5s的超时才能够返回，不适合于轮询取流操作。
dwDisplayBufNum
播放库播放缓冲区最大缓冲帧数，取值范围：1-50，置0时默认为1
byRes
保留，置为0

Remarks

  • sURL为RTSP取流 URL，普通IPC和NVR等设备可以自己组装：
    rtsp://username:password@ip_address:rtsp_port/Streaming/Channels/(?parm1=value1&parm2-=value2…)
    注：VLC可以支持解析URL里的用户名密码，实际发给设备的RTSP请求不支持带用户名密码。
    举例说明：
    DS-9632N-ST的IP通道01主码流：
    rtsp://admin:12345@172.6.22.234:554/Streaming/Channels/101?transportmode=unicast
    DS-9016HF-ST的IP通道01主码流：
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/1701?transportmode=unicast
    DS-9016HF-ST的模拟通道01子码流：
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=unicast (单播)
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=multicast (多播)
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102 (?后面可省略，默认单播)
    DS-9016HF-ST的零通道主码流（零通道无子码流）：
    rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/001
    DS-2DF7274-A的第三码流：
    rtsp://admin:12345@172.6.10.11:554/Streaming/Channels/103
  • 数据中心的单机脸谱设备（DS_IE63XX_E_FA）和猎鹰设备（DS-GPKIA01XX）设备，可以通过ISAPI协议命令：GET /ISAPI/SDT/Management/Region/ID 返回的streamURL节点获取其对应前端相机取流的RTSP URL。
    返回的streamURL示例：rtsp://admin:abcd12345@10.7.37.2:554/Streaming/Channels/101?transportmode=unicast，部分设备返回的streamURL中不包含用户名密码信息，需要自行组装为完整RTSP URL。（用户名和密码信息来自该命令返回的deviceUser和devicePassword节点）。

See Also

NET_DVR_RealPlaySpecial


NET_DVR_PRIOR_SCHEDTIME

优先计划定时布防参数结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_SCHEDDATE           struData;
  NET_DVR_NORMAL_SCHEDTIME    struOneDayTime[8];
  BYTE                        byEnable;
  BYTE                        byRes1[3];
  BYTE                        bySubSystem[32];
  BYTE                        byMandatoryAlarm;
  BYTE                        byRes[63];
}NET_DVR_PRIOR_SCHEDTIME,*LPNET_DVR_PRIOR_SCHEDTIME;

Members

dwSize
结构体大小
struData
优先计划起止日期段
struOneDayTime
定时布防参数
byEnable
是否启用：0- 不启用，1- 启用
byRes1
保留，置为0
bySubSystem
子系统，下标表示子系统号，值：0-不支持，1-支持
byMandatoryAlarm
当防区有问题时是否强制为旁路布防：0- 强制布防，1- 非强制布防
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PRIVACY_MASKS_CFG

云台隐私遮蔽参数配置结构体。

struct{
  DWORD              dwSize;
  BYTE               byEnable;
  BYTE               byPrivacyMaskCfgEnable;
  BYTE               byColorType;
  BYTE               byActiveZoomRatio;
  char               sPrivacyMaskName[NAME_LEN];
  NET_VCA_POLYGON    struRegion;
  BYTE               byCurrentRegionEnable;
  BYTE               byCurZoomRatio;
  BYTE               byRes[2];
  float              fActiveZoomRatio;
  BYTE               byRes1[120];
}NET_DVR_PRIVACY_MASKS_CFG, *LPNET_DVR_PRIVACY_MASKS_CFG;

Members

dwSize
结构体大小
byEnable
是否启用该区域隐私遮蔽功能：0- 否，1- 是
byPrivacyMaskCfgEnable
该隐私遮蔽区域配置参数是否显示（ReadOnly）：0- 否，1- 是
byColorType
区域颜色：0- 保留，1- 灰，2- 红，3- 绿，4- 蓝，5- 橙，6- 黄，0xff- 马赛克
byActiveZoomRatio
屏蔽倍率(byCurZoomRatio为0时有效)，取值范围：1~100
sPrivacyMaskName
遮挡区域名称，目前只使用16个字节
struRegion
区域范围
byCurrentRegionEnable
当前区域坐标是否有效：0- 否，1- 是（针对单个区域设置区域坐标信息和单场景下的多区域设置区域坐标信息）
byCurZoomRatio
当前倍率使用字段：0- byActiveZoomRatio，1- fActiveZoomRatio(对应能力节点<curActiveZoomRatioType>)
byRes
保留，置为0
fActiveZoomRatio
屏蔽倍率(精确到小数点1位，byCurZoomRatio为1时有效)，取值范围：[1.0~100.0]
byRes1
保留，置为0

Remarks

  • struRegion(区域范围)和其他参数(byColorType、byActiveZoomRatio等)可以分开来独立配置，先配置区域范围，然后配置其他参数。通过字段byPrivacyMaskCfgEnable可以判断该隐私区域的区域范围是否已经配置，如果区域范围没有配置，其他参数配置可以配置成功但不生效。如果需要配置区域范围则不支持批量配置，需要一个一个区域单独配置。
  • 云台隐私遮蔽能力，对应设备云台能力集(PTZAbility)中节点<PrivacyMaskCfg>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PRIVACY_MASKS_COND

云台隐私遮蔽参数配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byRegionalID;
  BYTE     byDelPrivacyMaskCfg;
  BYTE     byRes[62];
}NET_DVR_PRIVACY_MASKS_COND, *LPNET_DVR_PRIVACY_MASKS_COND;

Members

dwSize
结构体大小
dwChan
设备通道号
byRegionalID
区域ID号，取值范围：1~24
byDelPrivacyMaskCfg
删除当前ID对应的隐私遮蔽信息：0- 保留，1- 删除（WriteOnly）
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PRIVACY_MASKS_ENABLECFG

云台隐私遮蔽全局使能配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[127];
}NET_DVR_PRIVACY_MASKS_ENABLECFG, *LPNET_DVR_PRIVACY_MASKS_ENABLECFG;

Members

dwSize
结构体大小
byEnable
是否启用隐私遮蔽：0- 否，1- 是
byRes
保留，置为0

Remarks

Remarks

  • 云台隐私遮蔽区域等参数通过NET_DVR_SetDeviceConfig(命令：NET_DVR_SET_PRIVACY_MASKSCFG)进行配置。
  • 云台隐私遮蔽全局使能能力，对应设备云台能力集(PTZAbility)中<PrivacyMaskCfg>的子节点<globalEnable>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PRIVILEGE_PASSWORD_CFG

权限密码配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byPwdType;
  BYTE     byRes1[3];
  BYTE     byOldPassword[PASSWD_LEN];
  BYTE     byNewPassword[PASSWD_LEN];
  BYTE     byRes2[128];
}NET_DVR_PRIVILEGE_PASSWORD_CFG, *LPNET_DVR_PRIVILEGE_PASSWORD_CFG;

Members

dwSize
结构体大小
byPwdType
密码类型，具体定义如下：
enum _PRIVILEGE_PASSWORD_TYPE_ENUM_{
  ENUM_PRIVILEGE_PASSWORD_ENGINEERING        = 1,
  ENUM_PRIVILEGE_PASSWORD_SETUPALARM         = 2,
  ENUM_PRIVILEGE_PASSWORD_HOUSEHOLDER_UNLOCK = 3,
  ENUM_PRIVILEGE_PASSWORD_ANTI_HIJACKING     = 4,
  ENUM_PRIVILEGE_PASSWORD_SENDCARD           = 8
}PRIVILEGE_PASSWORD_TYPE_ENUM
ENUM_PRIVILEGE_PASSWORD_ENGINEERING
工程密码
ENUM_PRIVILEGE_PASSWORD_SETUPALARM
布/撤防密码
ENUM_PRIVILEGE_PASSWORD_HOUSEHOLDER_UNLOCK
户主开锁密码
ENUM_PRIVILEGE_PASSWORD_ANTI_HIJACKING
防劫持密码
ENUM_PRIVILEGE_PASSWORD_SENDCARD
发卡密码
byRes1
保留，置为0
byOldPassword
旧密码
byNewPassword
新密码
byRes2
保留，置为0

Remarks

权限密码配置能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<PrivilegePwd>。

See Also

NET_DVR_SetDVRConfig


NET_DVR_PROGRAM_INFO

节目信息结构体。

struct{
  DWORD    dwProgramNo;
  BYTE     sProgramName[NAME_LEN];
  BYTE     byRes[16];
}NET_DVR_PROGRAM_INFO,*LPNET_DVR_PROGRAM_INFO;

Members

dwProgramNo
节目编号
sProgramName
节目名称
byRes
保留

See Also

NET_DVR_PDC_RESULT


NET_DVR_PROTO_TYPE

协议参数的结构体。

struct{
  DWORD   dwType;
  BYTE    byDescribe[DESC_LEN];
}NET_DVR_PROTO_TYPE,*LPNET_DVR_PROTO_TYPE;

Members

dwType
协议值
byDescribe
协议描述

Remarks

  • dwType取值对应的协议类型可以见byDescribe协议描述。
  • 如果设备支持统一IPC协议，对应枚举类型NET_DVR_IPC_ENUM_UNIFY；如果不支持统一IPC协议，对应枚举类型NET_DVR_IPC_ENUM。
  • 设备是否支持统一IPC协议，可以通过设备能力集进行判断，对应软硬件能力集（BasicCapability），相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<SupportUnifiedIPCProtocol>。
enum tagNET_DVR_IPC_ENUM_UNIFY{
  ENUM_IPC_PROTOCOL_INVALID = -1,
  ENUM_IPC_PROTOCOL_HIKVISION = 0,       //海康威视
  ENUM_IPC_PROTOCOL_PANASONIC,           //松下
  ENUM_IPC_PROTOCOL_SONY,                //索尼
  ENUM_IPC_PROTOCOL_AXIS = 4,            //安讯士
  ENUM_IPC_PROTOCOL_SANYO,               //三洋
  ENUM_IPC_PROTOCOL_BOSCH,               //博世
  ENUM_IPC_PROTOCOL_ZAVIO,               //ZAVIO
  ENUM_IPC_PROTOCOL_GRANDEYE,            //GRANDEYE
  ENUM_IPC_PROTOCOL_PROVIDEO,            //创视
  ENUM_IPC_PROTOCOL_ARECONT,             //爱锐康特
  ENUM_IPC_PROTOCOL_ACTI,                //大卫通
  ENUM_IPC_PROTOCOL_PELCO,               //帕尔高
  ENUM_IPC_PROTOCOL_VIVOTEK,             //晶睿通讯
  ENUM_IPC_PROTOCOL_DAHUA,               //大华
  ENUM_IPC_PROTOCOL_SAMSUNG,             //三星
  ENUM_IPC_PROTOCOL_PSIA = 17,           //PSIA
  ENUM_IPC_PROTOCOL_ONVIF,               //ONVIF
  ENUM_IPC_PROTOCOL_BRICKCOM,            //金砖通信
  ENUM_IPC_PROTOCOL_GB28181,             //GB28181
  ENUM_IPC_PROTOCOL_CANON = 23,          //佳能
  ENUM_IPC_PROTOCOL_HUINT = 32,          //HUINT
  ENUM_IPC_PROTOCOL_INFINOVA,            //英飞拓
  ENUM_IPC_PROTOCOL_HIK_STD_H264,        //海康标准264
  ENUM_IPC_PROTOCOL_HIK_STD_MPEG4,       //海康标准MPEG4
  ENUM_IPC_PROTOCOL_SUNELL,              //景阳
  ENUM_IPC_PROTOCOL_ATEME,               //安特姆
  ENUM_IPC_PROTOCOL_LAUNCH,              //郎驰
  ENUM_IPC_PROTOCOL_YAAN,                //亚安
  ENUM_IPC_PROTOCOL_BLUESKY,             //蓝色星际
  ENUM_IPC_PROTOCOL_BLUESKYLIMIT,        //蓝色星际LIMIT
  ENUM_IPC_PROTOCOL_TDWY,                //天地伟业
  ENUM_IPC_PROTOCOL_HBGK,                //汉邦高科
  ENUM_IPC_PROTOCOL_SANTACHI,            //金三立
  ENUM_IPC_PROTOCOL_HIGHEASY,            //恒亿
  ENUM_IPC_PROTOCOL_HANBANG,             //汉邦高科
  ENUM_IPC_PROTOCOL_SAMSUNG_3120,        //三星3120
  ENUM_IPC_PROTOCOL_SAMSUNG_3080,        //三星3080
  ENUM_IPC_PROTOCOL_SAMSUNG_2000,        //三星2000
  ENUM_IPC_PROTOCOL_SAMSUNG_5200,        //三星5200
  ENUM_IPC_PROTOCOL_JINGYUAN,            //警院
  ENUM_IPC_PROTOCOL_VIDEOTREC,           //动力盈科
  ENUM_IPC_PROTOCOL_CHENOVA,             //上海诚丰
  ENUM_IPC_PROTOCOL_FENGHUO,             //烽火
  ENUM_IPC_PROTOCOL_ZB_5301,             //浙江贝尔5301
  ENUM_IPC_PROTOCOL_ZB_5401,             //浙江贝尔5401
  ENUM_IPC_PROTOCOL_HAIXIN,              //海信
  ENUM_IPC_PROTOCOL_ZHONGYINGXIN,        //中瀛鑫
  ENUM_IPC_PROTOCOL_AVUN,                //信诺安达
  ENUM_IPC_PROTOCOL_GOVTY,               //广州吉田
  ENUM_IPC_PROTOCOL_SAE,                 //艾里克
  ENUM_IPC_PROTOCOL_DONGFANGWANGLI,      //东方网力
  ENUM_IPC_PROTOCOL_CHANGHONG,           //长虹
  ENUM_IPC_PROTOCOL_H3C,                 //华三
  ENUM_IPC_PROTOCOL_BAIAN,               //百安
  ENUM_IPC_PROTOCOL_HAT,                 //华安泰
  ENUM_IPC_PROTOCOL_YUANYE,              //远业
  ENUM_IPC_PROTOCOL_HIKCARD,             //海康板卡
  ENUM_IPC_PROTOCOL_HAIXINCAP,           //海信抓拍机
  ENUM_IPC_PROTOCOL_WENANCAP,            //文安抓拍机
  ENUM_IPC_PROTOCOL_XUNMEI,              //讯美
  ENUM_IPC_PROTOCOL_BAIWO,               //佰沃
  ENUM_IPC_PROTOCOL_APD,                 //安普达
  ENUM_IPC_PROTOCOL_REACHDEV,            //锐取
  ENUM_IPC_PROTOCOL_XUNMEI_DAHUA,        //讯美大华OEM
  ENUM_IPC_PROTOCOL_HUANGHE,             //黄河设备
  ENUM_IPC_PROTOCOL_LIANCHEN,            //联宸
  ENUM_IPC_PROTOCOL_CHENGYE,             //诚业
  ENUM_IPC_PROTOCOL_VISIONDIGI,          //威乾
  ENUM_IPC_PROTOCOL_HENGHE,              //恒河
  ENUM_IPC_PROTOCOL_KODAK,               //科达
  ENUM_IPC_PROTOCOL_AIRONIX,             //奥尼克斯
  ENUM_IPC_PROTOCOL_LG,                  //乐金
  ENUM_IPC_PROTOCOL_HASEE,               //神州
  ENUM_IPC_PROTOCOL_8000ME,              //8000ME
  ENUM_IPC_PROTOCOL_POVITEL,             //普天博威
  ENUM_IPC_PROTOCOL_YIVIEW,              //亿维
  ENUM_IPC_PROTOCOL_TIANYUE,             //天跃
  ENUM_IPC_PROTOCOL_HOWELL,              //浩维
  ENUM_IPC_PROTOCOL_WAPA,                //波粒
  ENUM_IPC_PROTOCOL_SANLE,               //三乐
  ENUM_IPC_PROTOCOL_HIKCARD_ENCRYPTION,  //加密海康板卡
  ENUM_IPC_PROTOCOL_JUNSDA,              //宙视达
  ENUM_IPC_PROTOCOL_LIYUAN,              //立元
  ENUM_IPC_PROTOCOL_XINCHAN,             //信产
  ENUM_IPC_PROTOCOL_BITE,                //比特
  ENUM_IPC_PROTOCOL_MEIAN,               //美安
  ENUM_IPC_PROTOCOL_ROSEEK,              //锐势
  ENUM_IPC_PROTOCOL_AEBELL,              //美电贝尔
  ENUM_IPC_PROTOCOL_JSL_ST,              //金三立ST
  ENUM_IPC_PROTOCOL_VIMICRO,             //中星微电子
  ENUM_IPC_PROTOCOL_TYPE,                //最大厂商类型
}NET_DVR_IPC_ENUM_UNIFY

enum _NET_DVR_IPC_ENUM_{
  ENUM_BUSINESS_INVALID = -1,
  ENUM_BUSINESS_HIKVISION = 0,
  ENUM_BUSINESS_PANASONIC,
  ENUM_BUSINESS_SONY,
  ENUM_BUSINESS_AXIS,
  ENUM_BUSINESS_SANYO,
  ENUM_BUSINESS_BOSCH,
  ENUM_BUSINESS_ZAVIO,
  ENUM_BUSINESS_GRANDEYE,
  ENUM_BUSINESS_PROVIDEO,
  ENUM_BUSINESS_ARECONT,        //9
  ENUM_BUSINESS_ACTI,
  ENUM_BUSINESS_PELCO,
  ENUM_BUSINESS_VIVOTEK,
  ENUM_BUSINESS_INFINOVA,
  ENUM_BUSINESS_DAHUA,          //14
  ENUM_BUSINESS_HIK_STD_H264 = 0x20,
  ENUM_BUSINESS_HIK_STD_MPEG4,
  ENUM_BUSINESS_SUNELL,         //景阳
  ENUM_BUSINESS_ATEME,
  ENUM_BUSINESS_LAUNCH,         //朗驰
  ENUM_BUSINESS_YAAN,           //雅安
  ENUM_BUSINESS_BLUESKY,        //蓝色星际
  ENUM_BUSINESS_BLUESKYLIMIT,   //蓝色星际
  ENUM_BUSINESS_TDWY,           //天地伟业
  ENUM_BUSINESS_HBGK,           //汉邦高科
  ENUM_BUSINESS_SANTACHI,       //金三立
  ENUM_BUSINESS_HIGHEASY,       //恒忆
  ENUM_BUSINESS_SAMSUNG,
  ENUM_BUSINESS_URL_RTSP = 0x40,//url类型取流
  ENUM_BUSINESS_ONVIF,
  ENUM_MAX_BUSINESS_TYPE,       //最大厂商类型
}NET_DVR_IPC_ENUM

See Also

NET_DVR_DEVICE_PROTO_LIST NET_DVR_IPC_PROTO_LIST_V41 NET_DVR_IPC_PROTO_LIST


NET_DVR_PTZ_3D_SPEED_CONTROL

3维带速度云台控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byPSpeed;
  BYTE     byTSpeed;
  BYTE     byZSpeed;
  BYTE     byPDirect;
  BYTE     byTDirect;
  BYTE     byZDirect;
  BYTE     byRes[18];
}NET_DVR_PTZ_3D_SPEED_CONTROL, *LPNET_DVR_PTZ_3D_SPEED_CONTROL;

Members

dwSize
结构体大小
dwChannel
通道号
byPSpeed
X轴控制速度，取值范围：1~64
byTSpeed
Y轴控制速度，取值范围：1~64
byZSpeed
Z变倍速度
byPDirect
P方向：1- 左，2- 右
byTDirect
T方向：1- 上，2- 下
byZDirect
Z方向：1- ZOOM+，2- ZOOM-
byRes
保留，置为0

Remarks

  • 设备是否支持3维带速度云台控制能力，可以通过设备能力集进行判断，对应软硬件能力集（BasicCapability），相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<Support3DPTZ>。

See Also

NET_DVR_RemoteControl


NET_DVR_PTZ_BASICPARAMCFG

PTZ基本参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byProportionalPan;
  BYTE     byPresetFreezing;
  BYTE     byPresetSpeed;
  BYTE     byKeyboardCtrlSpeed;
  BYTE     byAutoScanSpeed;
  BYTE     byZoomingSpeed;
  BYTE     byManualControlSpeed;
  BYTE     byPTZMotionTrack;
  BYTE     byRes[124];
}NET_DVR_PTZ_BASICPARAMCFG, *LPNET_DVR_PTZ_BASICPARAMCFG;

Members

dwSize
结构体大小
byProportionalPan
启用比例变倍配置：0- 否，1- 是
byPresetFreezing
启用预置点视频冻结：0- 否，1- 是
byPresetSpeed
预置点速度等级，取值范围：1~8，默认：4
byKeyboardCtrlSpeed
手控速度等级：0- 低，1- 中，2- 高
byAutoScanSpeed
扫描速度等级，取值范围：1~40，默认：28
byZoomingSpeed
变倍速度，取值范围：1~3，默认：3
byManualControlSpeed
手控速度模式：0- 兼容，1- 行人，2- 非机动车，3- 机动车，4- 自适应
byPTZMotionTrack
启用运动跟踪（锁定云台操作）：0- 默认（开启），1- 关闭
byRes
保留

Remarks

  • PTZ基本参数能力，对应设备云台能力集(PTZAbility)中节点<PtzBasicCfg>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_CRUISE_PARAM

巡航参数结构体。

struct{
  DWORD            dwSize;
  DWORD            dwChannel;
  DWORD            dwPTZCruiseCmd;
  NET_VCA_POINT    struVcaPoint;
  WORD             wCruiseRoute;
  WORD             wCruisePoint;
  WORD             wInput;
  WORD             wZoomCoordinate;
  BYTE             byRes[32];
}NET_DVR_PTZ_CRUISE_PARAM, *LPNET_DVR_PTZ_CRUISE_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
dwPTZCruiseCmd
巡航控制命令，见下表
宏定义 | 宏定义值 | 含义
FILL_PRE_SEQ | 30 | 将预置点加入巡航序列
SET_SEQ_DWELL | 31 | 设置巡航点停顿时间
SET_SEQ_SPEED | 32 | 设置巡航速度
CLE_PRE_SEQ | 33 | 将预置点从巡航序列中删除
RUN_SEQ | 37 | 开始巡航
STOP_SEQ | 38 | 停止巡航
struVcaPoint
预览界面点坐标
wCruiseRoute
巡航路径，最多支持32条路径（序号从1开始）
wCruisePoint
巡航点，最多支持32个点（序号从1开始）
wInput
不同巡航命令时的值不同，预置点(最大255)、时间(最大255)、速度(最大40)
wZoomCoordinate
预置点窗口Zoom值
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_PTZ_LIMITCFG

PTZ限位参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byLimitStatus;
  BYTE     byRes[122];
}NET_DVR_PTZ_LIMITCFG, *LPNET_DVR_PTZ_LIMITCFG;

Members

dwSize
结构体大小
byEnable
启用使能：0- 否，1- 是
byLimitStatus
限位状态（只能获取，不支持设置）：0- 未限位，1- 已限位
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PTZ_LIMITCOND

PTZ限位参数配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byLimitMode;
  BYTE     byRes[127];
}NET_DVR_PTZ_LIMITCOND, *LPNET_DVR_PTZ_LIMITCOND;

Members

dwSize
结构体大小
dwChan
设备通道号
byLimitMode
限位模式：0- 保留，1- 键控限位，2- 扫描限位
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_PTZ_LIMITCTRL

限位参数控制结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byLimitMode;
  BYTE     byWorkMode;
  BYTE     byRes[122];
}NET_DVR_PTZ_LIMITCTRL, *LPNET_DVR_PTZ_LIMITCTRL;

Members

dwSize
结构体大小
dwChan
设备通道号
byLimitMode
限位模式：0- 保留，1- 键控限位，2- 扫描限位
byWorkMode
工作模式：0- 设置，1- 清除
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_PTZ_LOCKCFG

云台锁定配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode ;
  BYTE     byRes[123];
}NET_DVR_PTZ_LOCKCFG, *LPNET_DVR_PTZ_LOCKCFG;

Members

dwSize
结构体大小
byWorkMode
云台锁定控制：0- 解锁，1- 锁定
byRes
保留，置为0

Remarks

云台锁定时间默认为180s，锁定剩余时间可以通过NET_DVR_StartRemoteConfig（命令：NET_DVR_GET_PTZLOCKINFO）获取。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_MANUALTRACE

手动跟踪定位参数结构体。

struct{
  DWORD               dwSize;
  DWORD               dwChannel;
  NET_VCA_POINT       struPoint;
  BYTE                byTrackType;
  BYTE                byLinkageType;
  BYTE                byRes[2];
  NET_VCA_POINT       struPointEnd;
  NET_DVR_TIME_V30    struTime;
  DWORD               dwSerialNo;
  BYTE                byRes1[36];
}NET_DVR_PTZ_MANUALTRACE,*LPNET_DVR_PTZ_MANUALTRACE;

Members

dwSize
结构体大小
dwChannel
通道号
struPoint
定位坐标（点选）
byTrackType
跟踪类型：0- 普通跟踪，1- 高速道路跟踪，2- 城市道路跟踪
byLinkageType
联动动作: 0- 手动跟踪，1- 联动不跟踪
byRes
保留，置为0
struPointEnd
定位坐标终点（和struPoint组合起来就是框选）
struTime
手动跟踪定位的当前时间，目前仅取证球机支持，和dwSerialNo一起用于平台录像和手动跟踪取证图片匹配使用
dwSerialNo
抓拍序号，目前仅取证球机支持，和struTime一起用于平台录像和手动跟踪取证图片匹配使用
byRes
保留，置为0

Remarks

  • 普通球机云台设备，byLinkageType只支持“0-手动跟踪”模式，调用该接口表示手动跟踪。
  • 鱼球联动设备，调用该接口控制手动跟踪定位，表示联动不跟踪（不调节倍率）。
  • 枪球联动设备，先调用通过NET_DVR_SetDVRConfig(命令:NET_DVR_SET_PTZ_TRACK_PARAM)设置PTZ跟踪参数(NET_DVR_PTZ_TRACK_PARAM)，然后调用该接口控制手动跟踪定位，表示联动跟踪。

See Also

NET_DVR_RemoteControl


NET_DVR_PTZ_NOTIFICATION_CFG

事件联动PTZ配置结构体。

struct{
  DWORD                          dwSize;
  DWORD                          dwEnablePresetChanNum;
  NET_DVR_PRESETCHAN_INFO        struPresetChanInfo[MAX_CHANNUM_V40];
  DWORD                          dwEnableCruiseChanNum;
  NET_DVR_CRUISECHAN_INFO        struCruiseChanInfo[MAX_CHANNUM_V40];
  DWORD                          dwEnablePtzTrackChanNum;
  NET_DVR_PTZTRACKCHAN_INFO      struPtzTrackInfo[MAX_CHANNUM_V40];
  BYTE                           byRes1[1024];
}NET_DVR_PTZ_NOTIFICATION_CFG,*LPNET_DVR_PTZ_NOTIFICATION_CFG;

Members

dwSize
结构体大小
dwEnablePresetChanNum
当前已启用预置点的数目
struPresetChanInfo
启用的预置点信息：dwEnablePresetChanNum不为0时，struPresetChanInfo[0]~struPresetChanInfo[dwEnablePresetChanNum-1]有效；dwEnablePresetChanNum为0表示未启用任何预置点。
dwEnableCruiseChanNum
当前已启用巡航的通道数目
struCruiseChanInfo
启用巡航功能通道的信息：dwEnableCruiseChanNum不为0时，struCruiseChanInfo[0]~struCruiseChanInfo[dwEnableCruiseChanNum-1]有效；dwEnableCruiseChanNum为0表示未启用任何巡航
dwEnablePtzTrackChanNum
当前已启云台花样扫描通道数目
struPtzTrackInfo
调用云台花样扫描的通道信息：dwEnablePtzTrackChanNum不为0时，struPtzTrackInfo[0]~struPtzTrackInfo[dwEnablePresetChanNum-1]有效；dwEnablePtzTrackChanNum为0表示未启用任何路径
byRes1
保留

Remarks

  • 设备是否支持事件联动PTZ配置或者支持的参数能力，可以通过设备能力集进行判断，对应事件触发能力集(EventTriggersCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_PTZ_NOTIFICATION_COND

事件联动PTZ配置条件结构体。

struct{
  DWORD    dwSize;
  WORD     byEventType;
  BYTE     byRes[2];
  DWORD    dwChannel;
  BYTE     byRes1[128];
}NET_DVR_PTZ_NOTIFICATION_COND, *LPNET_DVR_PTZ_NOTIFICATION_COND;

Members

dwSize
结构体大小
byEventType
事件类型：0- 人脸侦测，1- 车辆侦测，2- 场景变更侦测，3- 越界侦测，4- 进入区域，5- 离开区域，6- 徘徊侦测，7- 人员聚集侦测，8- 快速运动侦测，9- 停车侦测，10- 物品遗留侦测，11- 物品拿取侦测，12- 音频侦测，13- PIR，14- 虚焦侦测，15- 温差报警，16- 火点检测，17- 测温报警，18- 船只检测，19- 区域入侵侦测，20- 非授权名单人脸比对，21- 授权名单人脸比对，22- 人体目标识别
byRes
保留，置为0
dwChannel
通道号
byRes1
保留，置为0

Remarks

  • 设备是否支持事件联动PTZ配置或者支持的参数能力，可以通过设备能力集进行判断，对应事件触发能力集(EventTriggersCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES，节点：EventTriggerCapTypez中的<isSupportPTZ>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_PTZ_OSDCFG

PTZ OSD参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byZoomStatus;
  BYTE     byPtStatus;
  BYTE     byPresetStatus;
  BYTE     byRes[125];
}NET_DVR_PTZ_OSDCFG, *LPNET_DVR_PTZ_OSDCFG;

Members

dwSize
结构体大小
byZoomStatus
镜头倍数显示时间：1- 2秒，2- 5秒，3- 10秒，0xff- 常关，0- 常开，默认：2秒
byPtStatus
方位角显示时间：1- 2秒，2- 5秒，3- 10秒，0xff- 常关，0- 常开，默认：2秒
byPresetStatus
预置点标题显示时间：1- 2秒，2- 5秒，3- 10秒，0xff- 常关，0- 常开，默认：2秒
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_PARKACTION_CFG

云台守望参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byOneTouchSwitch;
  BYTE     byRes1[2];
  DWORD    dwParkTime;
  WORD     wActionType;
  WORD     wID;
  BYTE     byRes[128];
}NET_DVR_PTZ_PARKACTION_CFG,*LPNET_DVR_PTZ_PARKACTION_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0-不启用，1-启用
byOneTouchSwitch
一键开关, 0-不启用，1-启用 (和wActionType组合使用)
byRes1
保留
dwParkTime
守望等待时间，单位：s
wActionType
守望动作类型：0-自动扫描，1-帧扫描，2-随机扫描，3-巡航扫描，4-花样扫描，5-预置点，6-全景扫描，7-垂直扫描，8-区域扫描
wID
ID号（巡航扫描、预置点、花样扫描的ID）
byRes
保留

Remarks

守望等待时间：守望配置后执行动作的等待时间。
守望动作的巡航扫描、预置点、花样扫描时需要先配置。
支持的巡航路径编号、预置点编号、花样扫描编号由能力集获取。
ID号仅当wActionType为3，4，5有效

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_PATTERN

云台花样扫描参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwPatternCmd;
  DWORD    dwPatternID;
  BYTE     byRes[64];
}NET_DVR_PTZ_PATTERN,*LPNET_DVR_PTZ_PATTERN;

Members

dwSize
结构体大小
dwChannel
通道号
dwPatternCmd
云台花样扫描操作命令码，见下表：
宏定义 | 宏定义值 | 含义
STA_MEM_CRUISE | 34 | 开始记录花样扫描路径
STO_MEM_CRUISE | 35 | 停止记录花样扫描路径
RUN_CRUISE | 36 | 开始运行花样扫描
STOP_CRUISE | 44 | 停止运行花样扫描
DELETE_CRUISE | 45 | 删除单条花样扫描路径
DELETE_ALL_CRUISE | 46 | 删除所有花样扫描路径
dwPatternID
云台花样扫描路径ID（删除所有路径时无效）
byRes
保留

Remarks

此功能是对原接口NET_DVR_PTZTrack和NET_DVR_PTZTrack_Other的扩展，原来只支持一条路径操作，而通过接口NET_DVR_RemoteControl可支持多条路径操作，且支持停止花样扫描、删除单条路径、删除所有路径操作。

See Also

NET_DVR_RemoteControl


NET_DVR_PTZ_POSITION

场景位置信息配置结构。

struct{
  BYTE             byEnable;
  BYTE             byRes1[3];
  BYTE             byPtzPositionName[NAME_LEN];
  NET_DVR_PTZPOS   struPtzPos;
  BYTE             byRes2[40];
}NET_DVR_PTZ_POSITION, *LPNET_DVR_PTZ_POSITION;

Members

byEnable
是否启用场景：0-不启用，1-启用
byRes1
保留
byPtzPositionName
场景位置名称
struPtzPos
PTZ坐标
byRes2
保留

Remarks

参数byEnable应用在设置场景行为规则的时无效，在设置球机本地配置场景位置信息时有效。

See Also

NET_DVR_POSITION_RULE_CFG


NET_DVR_PTZ_POWEROFFMEMCFG

PTZ掉电记忆模式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byResumeTimePoint;
  BYTE     byRes[127];
}NET_DVR_PTZ_POWEROFFMEMCFG, *LPNET_DVR_PTZ_POWEROFFMEMCFG;

Members

dwSize
结构体大小
byResumeTimePoint
掉电记忆模式：Oxff- 禁用，1- 30秒，2- 60秒，3- 300秒，4- 600秒，默认：30秒
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_PRIORITIZECFG

云台优先配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byPTZPrioritize;
  BYTE     byRes[3];
  DWORD    dwDelay;
  BYTE     byRes1[124];
}NET_DVR_PTZ_PRIORITIZECFG, *LPNET_DVR_PTZ_PRIORITIZECFG;

Members

dwSize
结构体大小
byPTZPrioritize
云台优先：0- Rs485，1- 网络（默认）
byRes
保留
dwDelay
延时：2~200，单位：秒
byRes1
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_PROTOCOL

云台协议信息结构体。

struct{
  DWORD    dwType;
  BYTE     byDescribe[DESC_LEN];
}NET_DVR_PTZ_PROTOCOL, *LPNET_DVR_PTZ_PROTOCOL;

Members

dwType
协议类型值
byDescribe
协议描述符

See Also

NET_DVR_PTZCFG


NET_DVR_PTZ_TRACK_PARAM

PTZ跟踪参数结构。

struct{
  DWORD    dwSize;
  BYTE     byTrackMode;
  BYTE     byLinkageTarget;
  BYTE     byAutoTrackEnable;
  BYTE     byRes1;
  DWORD    dwTrackTime;
  BYTE     byRes2[256];
}NET_DVR_PTZ_TRACK_PARAM, *LPNET_DVR_PTZ_TRACK_PARAM;

Members

dwSize
结构体大小
byTrackMode
跟踪方式，具体定义如下：
enum _PTZ_TRACK_MODE_{
  PTZ_TRACK_MODE_ALWAYS  = 1,
  PTZ_TRACK_MODE_BYTIME  = 2,
  PTZ_TRACK_MODE_NEXT    = 3
}PTZ_TRACK_MODE
PTZ_TRACK_MODE_ALWAYS
一直跟踪
PTZ_TRACK_MODE_BYTIME
跟踪指定时间
PTZ_TRACK_MODE_NEXT
跟踪下一目标
byLinkageTarget
联动目标：0- 默认，1- 球机1，2- 球机2，…，依次类推
byAutoTrackEnable
跟踪使能：0- 自动跟踪开启，1- 自动跟踪关闭（枪球设备才支持自动跟踪关闭功能，设备默认关闭）
byRes1
保留，置为0
dwTrackTime
跟踪时间：
当跟踪模式为PTZ_TRACK_MODE_ALWAYS，此字段无效
当跟踪模式为PTZ_TRACK MODE_BYTIME时，范围：[1,60]，默认：10秒
当跟踪模式为PTZ_TRACK MODE_NEXT时，范围：[1,10]，默认：2秒
byRes2
保留，置为0

Remarks

鱼眼联动球机(NET_DVR_TRACK_DEV_PARAM)时，并且区域入侵侦测(NET_VCA_FIELDDETECION)或越界侦测(NET_VCA_TRAVERSE_PLANE_DETECTION)的处理方式启用了PTZ联动跟踪(NET_DVR_HANDLEEXCEPTION_V40中dwHandleType&0x800等于1），此PTZ跟踪参数才生效。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZ_TRACK_PARAM

PTZ跟踪参数结构。

struct{
  DWORD    dwSize;
  BYTE     byTrackMode;
  BYTE     byLinkageTarget;
  BYTE     byAutoTrackEnable;
  BYTE     byRes1;
  DWORD    dwTrackTime;
  BYTE     byRes2[256];
}NET_DVR_PTZ_TRACK_PARAM, *LPNET_DVR_PTZ_TRACK_PARAM;

Members

dwSize
结构体大小
byTrackMode
跟踪方式，具体定义如下：
enum _PTZ_TRACK_MODE_{
  PTZ_TRACK_MODE_ALWAYS  = 1,
  PTZ_TRACK_MODE_BYTIME  = 2,
  PTZ_TRACK_MODE_NEXT    = 3
}PTZ_TRACK_MODE
PTZ_TRACK_MODE_ALWAYS
一直跟踪
PTZ_TRACK_MODE_BYTIME
跟踪指定时间
PTZ_TRACK_MODE_NEXT
跟踪下一目标
byLinkageTarget
联动目标：0- 默认，1- 球机1，2- 球机2，…，依次类推
byAutoTrackEnable
跟踪使能：0- 自动跟踪开启，1- 自动跟踪关闭（枪球设备才支持自动跟踪关闭功能，设备默认关闭）
byRes1
保留，置为0
dwTrackTime
跟踪时间：
当跟踪模式为PTZ_TRACK_MODE_ALWAYS，此字段无效
当跟踪模式为PTZ_TRACK MODE_BYTIME时，范围：[1,60]，默认：10秒
当跟踪模式为PTZ_TRACK MODE_NEXT时，范围：[1,10]，默认：2秒
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZABSOLUTEEX_CFG

高精度PTZ绝对位置配置结构体。

struct{
  DWORD                   dwSize;
  NET_PTZ_INFO            struPTZCtrl ;
  DWORD                   dwFocalLen;
  float                   fHorizontalSpeed;
  float                   fVerticalSpeed;
  BYTE                    byZoomType;
  BYTE                    byRes[123];
}NET_DVR_PTZABSOLUTEEX_CFG, *LPNET_DVR_PTZABSOLUTEEX_CFG;

Members

dwSize
结构体大小
struPTZCtrl
设备PTZF信息
dwFocalLen
焦距范围：0-100000，单位：mm
fHorizontalSpeed
水平转动速度：0.01-1000.00，单位：度/S
fVerticalSpeed
垂直转动速度：0.01-1000.00，单位：度/S
byZoomType
镜头变倍配置类型： 0~ absoluteZoom，1~ focalLen。
absoluteZoom：通过变倍参数进行配置，选择为该类型时struPTZCtrl中的fZoom参数生效。focalLen：通过焦距参数进行配置，选择为该类型时，dwFocalLen参数生效。
byRes
保留，置为0

Remarks

  • 设备是否支持高精度PTZ绝对位置配置扩展功能或者支持的参数能力，可以通过设备能力集进行判断，对应高精度PTZ绝对位置配置扩展能力集(PTZAbsoluteEx)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PTZABSOLUTEEX_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_PTZCFG

云台协议结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_PTZ_PROTOCOL    struPtz[PTZ_PROTOCOL_NUM];
  DWORD                   dwPtzNum;
  BYTE                    byRes[8];
}NET_DVR_PTZCFG, *LPNET_DVR_PTZCFG;

Members

dwSize
结构体大小
struPtz
协议信息，最多200种
dwPtzNum
有效的PTZ协议数目，从0开始（即总数为该值加1）
byRes
保留，置为0

See Also

NET_DVR_GetPTZProtocol NET_DVR_GetPTZProtocol_Ex


NET_DVR_PTZCRUISE_COND

巡航路径条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwGroupNO;
  BYTE     byRes[8];
}NET_DVR_PTZCRUISE_COND, *LPNET_DVR_PTZCRUISE_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwGroupNum
组号
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_PTZCRUISE_INFO

巡航路径参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPtzCruiseNum;
  DWORD    dwGroupNum;
  BYTE     byRes[8];
}NET_DVR_PTZCRUISE_INFO, *LPNET_DVR_PTZCRUISE_INFO;

Members

dwSize
结构体大小
dwPtzCruiseNum
路径个数
dwGroupNum
组数
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_PTZCRUISE_POINTCFG

巡航点配置结构体。

struct{
  DWORD            dwSize;
  DWORD            dwPresetIndex;
  NET_VCA_POINT    struVcaPoint;
  BYTE             byDwell;
  BYTE             bySpeed;
  WORD             wZoomCoordinate;
  BYTE             byRes[28];
}NET_DVR_PTZCRUISE_POINTCFG, *LPNET_DVR_PTZCRUISE_POINTCFG;

Members

dwSize
结构体大小
dwPresetIndex
预置点序号
struVcaPoint
预置点坐标
byDwell
停留时间
bySpeed
速度
wZoomCoordinate
预置点窗口Zoom值
byRes
保留

Remarks

可以设置的预置点个数可以通过命令NET_DVR_GET_PRESET_NUM（接口：NET_DVR_GetDVRConfig）获取。

See Also

NET_DVR_PTZCRUISECFG


NET_DVR_PTZCRUISECFG

巡航路径配置结构体。

struct{
  DWORD                         dwSize;
  DWORD                         dwCruiseRoute;
  NET_DVR_PTZCRUISE_POINTCFG    struCruisePoint[MAX_PTZCRUISE_POINT_NUM];
  BYTE                          byRes[32];
}NET_DVR_PTZCRUISECFG, *LPNET_DVR_PTZCRUISECFG;

Members

dwSize
结构体大小
dwCruiseRoute
巡航路径序号
struCruisePoint
巡航点配置
byRes
保留

See Also

NET_DVR_GetDeviceConfig


NET_DVR_PTZLOCKINFO

云台锁定信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRemainingSec;
  BYTE     byRes[128];
}NET_DVR_PTZLOCKINFO, *LPNET_DVR_PTZLOCKINFO;

Members

dwSize
结构体大小
dwRemainingSec
剩余秒数
byRes
保留，置为0

Remarks

云台锁定配置通过NET_DVR_SetDVRConfig(命令：NET_DVR_SET_PTZLOCKCFG)实现。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_PTZLOCKINFO_COND

云台锁定时间查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[64];
}NET_DVR_PTZLOCKINFO_COND, *LPNET_DVR_PTZLOCKINFO_COND;

Members

dwSize
结构体大小
dwChannel
设备通道号
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_PTZPOS

球机位置配置结构体。

struct{
  WORD     wAction;
  WORD     wPanPos;
  WORD     wTiltPos;
  WORD     wZoomPos;
}NET_DVR_PTZPOS, *LPNET_DVR_PTZPOS;

Members

wAction
操作类型，仅在设置时有效。1-定位PTZ参数，2-定位P参数，3-定位T参数，4-定位Z参数，5-定位PT参数
wPanPos
P参数（水平参数）
wTiltPos
T参数（垂直参数）
wZoomPos
Z参数（变倍参数）

Remarks

本结构体中的wAction参数是设置时的操作类型，因此获取时该参数无效。实际显示的PTZ值是获取到的十六进制值的十分之一，如获取的水平参数P的值是0x1750，实际显示的P值为175度；获取到的垂直参数T的值是0x0789，实际显示的T值为78.9度；获取到的变倍参数Z的值是0x1100，实际显示的Z值为110倍。

See Also

NET_DVR_ONE_SCENE_CFG NET_DVR_SCENE_INFO

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PTZPOS_INFO

PTZ参数结构体。

struct{
  DWORD    dwPanPos;
  DWORD    dwTiltPos;
  DWORD    dwZoomPos;
}NET_DVR_PTZPOS_INFO, *LPNET_DVR_PTZPOS_INFO;

Members

dwPanPos
P参数（水平参数）
dwTiltPos
T参数（垂直参数）
dwZoomPos
Z参数（变倍参数）

See Also

NET_DVR_TRAVERSE_PLANE_SEARCHCOND


NET_DVR_PTZPOS_PARAM

PTZ坐标信息结构体。

struct{
  float    fPanPos;
  float    fTiltPos;
  float    fZoomPos;
  BYTE     byRes[16];
}NET_DVR_PTZPOS_PARAM,*LPNET_DVR_PTZPOS_PARAM;

Members

fPanPos
水平参数，精确到小数点后1位
fTiltPos
垂直参数，精确到小数点后1位
fZoomPos
变倍参数，精确到小数点后1位
byRes
保留，置为0

See Also

NET_DVR_GIS_UPLOADINFO NET_DVR_GIS_INFO


NET_DVR_PTZSCOPE

球机PTZ参数取值范围的结构体。

struct{
  WORD     wPanPosMin;
  WORD     wPanPosMax;
  WORD     wTiltPosMin;
  WORD     wTiltPosMax;
  WORD     wZoomPosMin;
  WORD     wZoomPosMax;
}NET_DVR_PTZSCOPE, *LPNET_DVR_PTZSCOPE;

Members

wPanPosMin
P参数（水平参数）的最小值
wPanPosMax
P参数（水平参数）的最大值
wTiltPosMin
T参数（垂直参数）的最小值
wTiltPosMax
T参数（垂直参数）的最大值
wZoomPosMin
Z参数（变倍参数）的最小值
wZoomPosMax
Z参数（变倍参数）的最大值

Remarks

仅支持对球机设备PTZ参数取值范围的获取。

See Also

NET_DVR_GetDVRConfig


NET_DVR_PTZTRACKCHAN_INFO

云台花样扫描通道信息结构体。

struct{
  DWORD   dwEnablePtzTrackChan;
  DWORD   dwPtzTrackNo;
}NET_DVR_PTZTRACKCHAN_INFO,*LPNET_DVR_PTZTRACKCHAN_INFO;

Members

dwEnablePtzTrackChan
启用云台花样扫描的通道
dwPtzTrackNo
对应的云台花样扫描路径序号，0xfffffff表示无效

See Also

NET_DVR_ALARMINCFG_V40 NET_DVR_VCA_DETECTION_CFG_V40 NET_DVR_EVENT_TRIGGER NET_DVR_PTZ_NOTIFICATION


NET_DVR_PTZTRACKSTATUS

球机联动跟踪状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byID;
  BYTE     byLinkageType;
  BYTE     byRes[254];
}NET_DVR_PTZTRACKSTATUS, *LPNET_DVR_PTZTRACKSTATUS;

Members

dwSize
结构体大小
byID
主从跟踪的从摄像机ID编号，从1开始，byLinkageType为1时有效
byLinkageType
联动动作：0- 不联动，1- 联动球机设备跟踪
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_PU_STREAM_CFG

动态解码参数结构体。

struct{
  DWORD                             dwSize;
  NET_DVR_STREAM_MEDIA_SERVER_CFG   struStreamMediaSvrCfg;
  NET_DVR_DEV_CHAN_INFO             struDevChanInfo;
}NET_DVR_PU_STREAM_CFG,*LPNET_DVR_PU_STREAM_CFG;

Members

dwSize
结构体大小
struStreamMediaSvrCfg
流媒体服务器配置参数
struDevChanInfo
设备通道配置参数

See Also

NET_DVR_GET_STREAM_UNION NET_DVR_INPUTSTREAMCFG

NET_IVMS_DEVSCHED NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PU_STREAM_CFG_V41

动态解码参数结构体。

struct{
  DWORD                      dwSize;
  BYTE                       byStreamMode;
  BYTE                       byRes1[3];
  NET_DVR_DEC_STREAM_MODE    uDecStreamMode;
  BYTE                       byRes2[64];
}NET_DVR_PU_STREAM_CFG_V41,*LPNET_DVR_PU_STREAM_CFG_V41;

Members

dwSize
结构体大小
byStreamMode
取流模式：0- 无效，1- 通过IP或域名取流，2- 通过URL取流，3- 通过动态域名解析向设备取流
byRes1
保留，置为0
uDecStreamMode
取流配置信息
byRes2
保留，置为0

See Also

NET_DVR_MatrixStartDynamic_V41 NET_DVR_DEC_VCA_ALARM


NET_DVR_PU_STREAM_URL

URL取流配置结构体。

struct{
  BYTE    byEnable;
  BYTE    strURL[240];
  BYTE    byTransPortocol;
  WORD    wIPID;
  BYTE    byChannel;
  BYTE    byRes[7];
}NET_DVR_PU_STREAM_URL,*LPNET_DVR_PU_STREAM_URL;

Members

byEnable
是否启用：0- 禁用，1- 启用
strURL
取流URL路径
byTransPortocol
传输协议类型：0-TCP，1-UDP
wIPID
设备ID号，wIPID = iDevInfoIndex + iGroupNO*64 +1
byChannel
设备通道号
byRes
保留，置为0

Remarks

通过流媒体服务器取流的URL格式举例:
{rtsp://ip[:port]/urlExtension}[?username=username][?password=password][?linkmode=linkmode]

URL路径也支持其他自定义路径（需前端IPC支持）。

See Also

NET_DVR_DEC_STREAM_MODE NET_DVR_GET_STREAM_UNION NET_DVR_STREAM_TYPE_UNION


NET_DVR_PU_STREAM_URL_CFG

URL取流路径构成参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byRes[3];
  BYTE    byStreamMediaIP[64];
  WORD    wStreamMediaPort;
  BYTE    byTransmitType;
  BYTE    byRes1[33];
  BYTE    byDevIP[64];
  WORD    wDevPort;
  BYTE    byChannel;
  BYTE    byTransMode;
  BYTE    byProType;
  BYTE    byTransProtocol;
  BYTE    byRes3[2];
  BYTE    sUserName[NAME_LEN];
  BYTE    sPassWord[PASSWD_LEN];
  BYTE    byRes2[28];
}NET_DVR_PU_STREAM_URL_CFG,*LPNET_DVR_PU_STREAM_URL_CFG;

Members

byEnable
是否启用：0- 禁用，1- 启用
byRes
保留，置为0
byStreamMediaIP
流媒体IP地址
wStreamMediaPort
流媒体端口
byTransmitType
流媒体传输协议：0- TCP，1- UDP，2-RTSP
byRes1
保留，置为0
byDevIP
设备IP地址
wDevPort
设备端口号
byChannel
设备通道号
byTransMode
传输模式：0- 主码流，1- 子码流
byProType
厂家协议类型：0- 私有协议，1- 大华，2- 汉邦，3- 郎驰，4- 蓝色星际
byTransProtocol
传输协议类型：0- TCP，1- UDP，2- 多播方式，3- RTP
byRes3
保留，置为0
sUserName
设备登陆用户名
sPassWord
设备登陆密码
byRes
保留，置为0

See Also

NET_DVR_STREAM_TYPE_UNION


NET_DVR_PU_STREAM_URL_CFG_V40

URL取流路径构成参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byRes[3];
  BYTE    byStreamMediaIP[64];
  WORD    wStreamMediaPort;
  BYTE    byTransmitType;
  BYTE    byRes1;
  BYTE    byDevIP[64];
  WORD    wDevPort;
  BYTE    byChannel;
  BYTE    byTransMode;
  BYTE    byProType;
  BYTE    byTransProtocol;
  BYTE    byRes3[2];
  BYTE    sUserName[NAME_LEN];
  BYTE    sPassWord[PASSWD_LEN];
  BYTE    byRes2[308];
}NET_DVR_PU_STREAM_URL_CFG_V40,*LPNET_DVR_PU_STREAM_URL_CFG_V40;

Members

byEnable
是否启用：0- 禁用，1- 启用
byRes
保留，置为0
byStreamMediaIP
流媒体IP地址
wStreamMediaPort
流媒体端口
byTransmitType
流媒体传输协议：0- TCP，1- UDP，2-RTSP
byRes1
保留，置为0
byDevIP
设备IP地址
wDevPort
设备端口号
byChannel
设备通道号
byTransMode
传输模式：0- 主码流，1- 子码流
byProType
厂家协议类型：0- 私有协议，1- 大华，2- 汉邦，3- 郎驰，4- 蓝色星际
byTransProtocol
传输协议类型：0- TCP，1- UDP，2- 多播方式
byRes3
保留，置为0
sUserName
设备登陆用户名
sPassWord
设备登陆密码
byRes2
保留，置为0

See Also

NET_DVR_STREAM_TYPE_V40_UNION


NET_DVR_PUBLIC_SUB_SYSTEM

公共子系统信息结构体。

struct{
  DWORD    dwJointSubSystem;
  BYTE     byRes[16];
}NET_DVR_PUBLIC_SUB_SYSTEM,*LPNET_DVR_PUBLIC_SUB_SYSTEM;

Members

dwJointSubSystem
关联子系统号，按位表示，dwJointSubSystem&0x1==1表示该公共子系统关联子系统1，dwJointSubSystem&0x2==1表示该公共子系统关联子系统2，依次类推
byRes
保留

See Also

NET_DVR_JOINT_SUB_SYSTEM


NET_DVR_PUBLISH_ADD_UNION

一键发布地址信息联合体。

union{
  BYTE                           byLen[256];
  NET_DVR_PUBLISH_HTTP_CFG       struHttpCfg;
  NET_DVR_PUBLISH_FTP_CFG        struFtpCfg;
  NET_DVR_PUBLISH_FTP_CFG_DIR    struDirFtpCfg;
}NET_DVR_PUBLISH_ADD_UNION, *LPNET_DVR_PUBLISH_ADD_UNION;

Members

byLen
联合体大小，256字节
struHttpCfg
HTTP地址信息
struFtpCfg
FTP地址信息
struDirFtpCfg
按目录方式的FTP地址信息

See Also

NET_DVR_PUBLISH_CFG


NET_DVR_PUBLISH_CFG

一键发布信息配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byPublishType;
  BYTE                           byRes1[3];
  NET_DVR_PUBLISH_ADD_UNION      struPublishAddr;
  NET_DVR_RECORD_PUBLISH_INFO    struChanPublish[MAX_CHANNUM_V30];
  NET_DVR_RECORD_PUBLISH_INFO    struDirectChanPublish;
  BYTE                           byUploadTime;
  BYTE                           byTimerMode;
  BYTE                           byUploadStartHour;
  BYTE                           byUoploadStartMin;
  BYTE                           byRes[1020];
 }NET_DVR_PUBLISH_CFG,*LPNET_DVR_PUBLISH_CFG;

Members

dwSize
结构体大小
byPublishType
发布方式：0- HTTP，1- FTP，2- 按目录方式的FTP
byRes1
保留，置为0
struPublishAddr
一键发布地址信息
struChanPublish
通道录像发布信息，数组下标与通道号一一对应，例如：struChanPublish[0]表示通道1对应录像发布信息
struDirectChanPublish
导播通道录像发布信息
byUploadTime
是否启动定时ftp上传功能：0- 不启动，1- 启用
byTimerMode
定时模式：0- 无意义，1- 按课表定时上传最近一节课的录像，2- 按时间点方式上传前24小时录像
byUploadStartHour
按时间定时上传起始时间：时，取值范围：0~23
byUoploadStartMin
按时间定时上传起始时间：分，取值范围：0~59
byRes
保留，置为0

Remarks

发布即把当天的录像文件上传到服务器上，方便对录像文件进行统一管理。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_PUBLISH_FTP_CFG

FTP发布参数结构体。

struct{
  BYTE    byProtocolType;
  BYTE    byRes1;
  WORD    wFTPPort;
  BYTE    byAddress[MAX_DOMAIN_NAME];
  BYTE    szUserName[NAME_LEN];
  BYTE    szPassWord[PASSWD_LEN];
  BYTE    szCustomDir[128];
  BYTE    byRes[12];
}NET_DVR_PUBLISH_FTP_CFG, *LPNET_DVR_PUBLISH_FTP_CFG;

Members

byProtocolType
协议类型：0- FTP，1- SFTP
byRes1
保留，置为0
wFTPPort
端口号
byAddress
IP或者域名，需要设备解析，解析方式为有字母存在且有’.’则认为是域名，否则为IP地址
szUserName
用户名
szPassWord
密码
szCustomDir
自定义发布目录，支持目录结构
byRes
保留，置为0

See Also

NET_DVR_PUBLISH_ADD_UNION


NET_DVR_PUBLISH_FTP_CFG_DIR

目录方式FTP发布参数结构体。

struct{
  BYTE    byProtocolType;
  BYTE    byRes1;
  WORD    wFTPPort;
  BYTE    byAddress[MAX_DOMAIN_NAME];
  BYTE    szUserName[NAME_LEN];
  BYTE    szPassWord[PASSWD_LEN];
  BYTE    byDirLevel;
  BYTE    byTopDirMode;
  BYTE    bySubDirMode;
  BYTE    byRes2;
  BYTE    byTopCustomDir[MAX_CUSTOMDIR_LEN];
  BYTE    bySubCustomDir[MAX_CUSTOMDIR_LEN];
  BYTE    byRes[72];
}NET_DVR_PUBLISH_FTP_CFG_DIR, *LPNET_DVR_PUBLISH_FTP_CFG_DIR;

Members

byProtocolType
协议类型：0- FTP，1- SFTP
byRes1
保留，置为0
wFTPPort
端口号
byAddress
IP或者域名，需要设备解析，解析方式为有字母存在且有’.’则认为是域名，否则为IP地址
szUserName
用户名
szPassWord
密码
byDirLevel
目录等级：0- 不使用目录结构，直接保存在根目录；1- 使用1级目录；2- 使用2级目录
byTopDirMode
一级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备IP地址，0xff- 使用自定义
bySubDirMode
二级目录，0x1- 使用通道名称，0x2- 使用通道号，0x3- 使用课程名称，0x4- 使用授课日期，0xff- 使用自定
byRes2
保留，置为0
byTopCustomDir
自定义一级目录
bySubCustomDir
自定义二级目录
byRes
保留，置为0

See Also

NET_DVR_PUBLISH_ADD_UNION


NET_DVR_PUBLISH_HTTP_CFG

HTTP发布参数结构体。

struct{
  BYTE    strUrl[256];
}NET_DVR_PUBLISH_HTTP_CFG, *LPNET_DVR_PUBLISH_HTTP_CFG;

Members

strUrl
发布的URL地址信息

See Also

NET_DVR_PUBLISH_ADD_UNION


NET_DVR_PUBLISH_PROGRESS_CFG

文件发布进度参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byPublishPercent;
  BYTE     byPublishStatus;
  BYTE     byRes[302];
 }NET_DVR_PUBLISH_PROGRESS_CFG,*LPNET_DVR_PUBLISH_PROGRESS_CFG;

Members

dwSize
结构体大小
byPublishPercent
发布百分比，取值范围：0~100
byPublishStatus
发布状态：0- 发布成功，1- 正在发布，2- 等待发布，3- 连不上FTP ，4- 没有找到此文件，5- 发布失败（其他错误）
byRes
保留，置为0

Remarks

  • 设备是否支持文件发布进度查询能力，可以通过设备能力集进行判断，对应文件发布能力集(PublishFile)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_PUBLISH_PROGRESS_COND

文件发布进度查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byFileID[MAX_ID_LEN_128];
  BYTE     byRes[256];
 }NET_DVR_PUBLISH_PROGRESS_COND,*LPNET_DVR_PUBLISH_PROGRESS_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byFileID
发布文件ID
byRes
保留，置为0

Remarks

  • 设备是否支持文件发布进度查询能力，可以通过设备能力集进行判断，对应文件发布能力集(PublishFile)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_PXMULTICTRL_CFG

停车场票箱从属设备多角度参数配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwMultiChansWaitTime;
  BYTE     byMultiChansCapEnabled;
  BYTE     byRes[127];
}NET_DVR_PXMULTICTRL_CFG,*LPNET_DVR_PXMULTICTRL_CFG;

Members

dwSize
结构体大小
dwMultiChansWaitTime
多角度抓拍匹配时间，取值范围：1~300，单位：秒(s)
byMultiChansCapEnabled
是否启用多角度抓拍：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持停车场票箱从属设备多角度参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应停车场票箱从属设备多角度参数配置能力集(TMEMultiCtrlConfiguration)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PXMULTICTRL_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_PXOFFLINE_CFG

停车场票箱脱机参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byChargeEnabled;
  BYTE     byAlarmEnabled;
  BYTE     byRecordSource;
  DWORD    dwTimeWait;
  DWORD    dwRealeaseMode;
  BYTE     byVehCardmatch;
  BYTE     bySingleInSingleOut;
  BYTE     byRes[126];
}NET_DVR_PXOFFLINE_CFG,*LPNET_DVR_PXOFFLINE_CFG;

Members

dwSize
结构体大小
byEnabled
是否启用票箱脱机模式：0- 不启用，1- 启用
byChargeEnabled
是否脱机收费：0- 否，1- 是
byAlarmEnabled
是否启用脱机报警：0- 否，1- 是
byRecordSource
记录产生依据：0- 牌识，1- 读卡
dwTimeWait
票箱进入脱机模式前的等待时间，取值范围：1~300，单位：秒
dwRealeaseMode
放行方式，按位表示，值：0- 不放行，1- 放行
dwRealeaseMode&(0x1<<0)，表示固定车放行
dwRealeaseMode&(0x1<<1)，表示固定卡放行
dwRealeaseMode&(0x1<<2)，表示临时车放行
dwRealeaseMode&(0x1<<3)，表示临时卡放行
dwRealeaseMode&(0x1<<4)，表示无车牌放行
dwRealeaseMode&(0x1<<5)，表示固定车若免费则自动放行
dwRealeaseMode&(0x1<<6)，表示临时车若免费则自动放行
byVehCardmatch
车卡是否一致：0- 否，1- 是
bySingleInSingleOut
是否单进单出：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持停车场票箱脱机参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应停车场票箱脱机参数配置能力集(TMEOfflineConfiguration)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PXOFFLINE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_QOS_CFG

QoS信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byManageDscp;
  BYTE     byAlarmDscp;
  BYTE     byVideoDscp;
  BYTE     byAudioDscp;
  BYTE     byFlag;
  BYTE     byEnable;
  BYTE     byRes[126];
}NET_DVR_QOS_CFG,*LPNET_DVR_QOS_CFG;

Members

dwSize
结构体大小
byManageDscp
管理数据的DSCP值，取值范围：[0,63]
byAlarmDscp
报警数据的DSCP值，取值范围：[0,63]
byVideoDscp
视频数据的DSCP值，取值范围：[0,63]，byFlag为0时表示音视频
byAudioDscp
音频数据的DSCP值，取值范围：[0,63]，byFlag为1时有效
byFlag
音视频数据类型：0- 音视频合一，1- 音视频分开
byEnable
使能QoS：0-禁用，1-启用
byRes
保留，置为0

See Also

DSCP：差分服务代码点（Differentiated Services Code Point），IETF于1998年12月发布的Diff-Serv（Differentiated Service）的QoS分类标准。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_QOSPARAM

QoS参数结构体。

struct{
  WORD    wMaxBitUL;
  WORD    wMaxBitDL;
  BYTE    byTrafficClass;
  BYTE    byRes[7];
}NET_DVR_QOSPARAM,*LPNET_DVR_QOSPARAM;

Members

wMaxBitUL
上行码率上限（kbits/s），0- 8，1- 16，2- 32，3- 64，4- 128，5- 256，6- 384，7- 512，8- 1152，9- 1536，10- 2048；最高位(15位)为1表示自定义速率，此时0-14位表示自定义码率值
wMaxBitDL
下行码率上限（kbits/s），0- 8，1- 16，2- 32，3- 64，4- 128，5- 256，6- 384，7- 512，8- 1152，9- 1536，10- 2048；最高位(15位)为1表示自定义速率，此时0-14位表示自定义码率值
byTrafficClass
0- 会话类，1- 流类，2- 交互类，3- 背景类，4- subscribed value(默认)
byRes
保留，置为0

See Also

NET_DVR_DIALPARAM


NET_DVR_QUERY_STATUS

诊断服务器的状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byCpuLoad;
  BYTE     byMemLoad;
  WORD     wAbility;
  WORD     wRemainAbility;
  WORD     wTotalPlanNum;
  WORD     wCurPlanNum;
  BYTE     byRes[62];
}NET_DVR_QUERY_STATUS, *LPNET_DVR_QUERY_STATUS;

Members

dwSize
结构体大小
byCpuLoad
CPU资源占用情况，取值范围：0~100
byMemLoad
Memory资源占用情况，取值范围：0~100
wAbility
诊断服务器能力集，大于0
wRemainAbility
诊断服务器剩余能力，取值范围：大于0，剩余监控点的个数
wTotalPlanNum
计划总数，最多100个计划
wCurPlanNum
当前计划数，最多100个计划
byRes3
保留

See Also

NET_DVR_GetDeviceStatus


NET_DVR_RAID_ADAPTER_INFO

适配器参数结构体。

struct{
  DWORD                     dwSize;
  NET_DVR_ADAPTER_VERSION   struVersion;
  BYTE                      bySlotCount;
  BYTE                      bySupportMigrate;
  BYTE                      bySupportExpand;
  BYTE                      bySupportRebuild;
  WORD                      wSlotSupportType;
  WORD                      wSupportRaidType;
  BYTE                      byAutoRebuild;
  BYTE                      byRes[27];
}NET_DVR_RAID_ADAPTER_INFO, *LPNET_DVR_RAID_ADAPTER_INFO;

Members

dwSize
结构体大小
struVersion
适配器版本号
bySlotCount
适配器槽位数
bySupportMigrate
是否支持迁移：0-不支持，1-支持
bySupportExpand
是否支持扩容：0-不支持，1-支持
bySupportRebuild
是否支持重建阵列：0-不支持，1-支持
wSlotSupportType
槽位支持的类型，按位表示，具体定义如下：
enum _HD_SUPPORT_TYPE_{
  HD_TYPE_SATA   = 0x01,
  HD_TYPE_PATA   = 0x02,
  HD_TYPE_SAS    = 0x04,
  HD_TYPE_ATAPI  = 0x08,
  HD_TYPE_TAPE   = 0x10,
  HD_TYPE_SES    = 0x20
}HD_SUPPORT_TYPE
HD_TYPE_SATA
SATA
HD_TYPE_PATA
PATA
HD_TYPE_SAS
SAS
HD_TYPE_ATAPI
ATAPI
HD_TYPE_TAPE
TAPE
HD_TYPE_SES
SES
wSupportRaidType
支持RAID类型，按位表示，具体定义如下：
enum _RAID_MODE_{
  RAID0 = 1,
  RAID1,
  RAID10,
  RAID1E,
  RAID5,
  RAID6,
  RAID50,
  JBOD,
  RAID60
}RAID_MODE
RAID0
RAID0方式
RAID1
RAID1方式
RAID10
RAID10方式
RAID1E
RAID1E方式
RAID5
RAID5方式
RAID6
RAID6方式
RAID50
RAID50方式
JBOD
JBOD方式
RAID60
RAID60方式
byAutoRebuild
是否启用自动重建：0-禁用，1-启用
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RAID_BTS_CFG

RAID后台任务速度参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySpeed;
  BYTE     byRes[127];
}NET_DVR_RAID_BTS_CFG,*LPNET_DVR_RAID_BTS_CFG;

Members

dwSize
结构体大小
bySpeed
RAID后台任务速度：0-高速，1-中速，2-低速
byRes
保留

Remarks

  • 根据实际情况，用户可以选择RAID后台任务(初始化任务、重建任务)的速度(高速、中速、低速)。
  • 一、默认配置：系统默认为中速。
  • 二、速度大小：
    高速：后台任务IO速度小于等于200MB/s
    中速：后台任务IO速度小于等于20MB/s
    低速：后台任务IO速度小于等于10MB/s
    选择后台任务速度越高，后台任务速度越快，所消耗系统资源越多。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RAPIDMOVE_DETECTION

快速运动侦测配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnabled;
  NET_DVR_RAPIDMOVE_REGION    struRegion[MAX_REGION_NUM];
  BYTE                        byRes2[128];
}NET_DVR_RAPIDMOVE_DETECTION,*LPNET_DVR_RAPIDMOVE_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留
struRegion
快速运动区域
byRes2
保留

Remarks

  • 该配置功能对应快速运动侦测能力集(RapidMove)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_RAPIDMOVE_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。快速运动侦测的区域参数通过NET_DVR_SET_REGION_ENTR_REGION命令进行配置，每一个区域单独设置。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RAPIDMOVE_REGION

快速运动侦测区域配置结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byRes[63];
}NET_DVR_RAPIDMOVE_REGION,*LPNET_DVR_RAPIDMOVE_REGION;

Members

struRegion
区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byRes
保留

Remarks

设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

See Also

NET_DVR_RAPIDMOVE_DETECTION


NET_DVR_RATIOSTITCHING_PARAM

客户标定文件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwFileLen;
  BYTE    byChannel;
  BYTE    byRes[23];
}NET_DVR_RATIOSTITCHING_PARAM,*LPNET_DVR_RATIOSTITCHING_PARAM;

Members

dwSize
结构体大小
dwFileLen
文件大小
byChannel
多个senor拼接后通道号
byRes
保留，置为0


NET_DVR_REALTIME_THERMOMETRY_COND

实时温度检测条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byRuleID;
  BYTE     byMode;
  WORD     wInterval;
  float     fTemperatureDiff;
  BYTE     byRes[56];
}NET_DVR_REALTIME_THERMOMETRY_COND,*LPNET_DVR_REALTIME_THERMOMETRY_COND;

Members

dwSize
结构体大小
dwChan
通道号，从1开始，0xffffffff代表获取全部通道
byRuleID
规则ID，0代表获取全部规则，具体规则ID从1开始
byMode
长连接模式：0- 保留（兼容不支持该功能的老设备），1- 定时模式，2- 温差模式
1-定时模式：设备每隔一秒上传各个规则测温数据的最高温、最低温和平均温度值、温差。
2-温差模式：若上一秒与下一秒的最高温或者最低温或者平均温或者温差值的温差大于等于2摄氏度，则上传最高温、最低温和平均温度值；若大于等于一个小时温差值均小于2摄氏度，则上传最高温、最低温、平均温和温差值
wInterval
上传间隔（仅温差模式支持），取值范围：1-3600 秒，填0则默认3600S上传一次
fTemperatureDiff
温差
byRes
保留，置为0

Remarks

  • 设备是否支持实时温度检测功能，可以通过设备能力集进行判断，对应热成像能力集(ThermalCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES，节点：<isSupportRealtimeThermometry>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_REBOOT_TIME

自动重启时间结构体。

struct{
  BYTE    byDate;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    byRes1;
  BYTE    byRebootMode;
  BYTE    byRes[11];
}NET_DVR_REBOOT_TIME,*LPNET_DVR_REBOOT_TIME;

Members

byDate
按周重启，取值1~7，表示星期一到星期日；按月重启，取值1~31，表示日期，若某月没有配置的日期则默认在每月最后一天重启。
byHour
时
byMinute
分
byRes1
保留，置为0
byRebootMode
重启模式（此参数只能获取，不能设置）：0- 按周重启，1- 按月重启
byRes
保留，置为0

See Also

NET_DVR_AUTO_REBOOT_CFG


NET_DVR_REC_PASSBACK_BASIC_CFG

回传功能基础配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwStartTime;
  DWORD    dwStopTime;
  WORD     wMaxTotalConcurrenceNum;
  WORD     wMaxDvrConcurrenceNum;
  BYTE     byRes[127];
}NET_DVR_REC_PASSBACK_BASIC_CFG,*LPNET_DVR_REC_PASSBACK_BASIC_CFG;

Members

dwSize
结构体大小
dwStartTime
检测窗口开始时间，单位：分钟，比如该参数为120，则开始时间为2小时前
dwStopTime
检测窗口结束时间，单位：分钟，比如该参数为60，则结束时间为1小时前
wMaxTotalConcurrenceNum
并发回传路数上限，针对的是编码器路数，不是回传任务条数
wMaxDvrConcurrenceNum
单台DVR并发回传通道数上限
byRes
保留，置为0

Remarks

  • 先通过NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG配置需要回传的历史录像时间段，再设置此处的检测窗口开始时间和结束时间，然后设备将会自动从前端设备把在回传历史录像时间段之内且在检测起止时间范围之内的录像文件回传过来进行存储。
  • 设备是否支持回传功能基础配置或者支持的参数能力，可以通过设备能力集进行判断，对应回传功能基础能力集(RecordPassBackBasicCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RECOMMEN_VERSION_COND

在线升级推荐版本查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byFirmwareCode[MAX_IDCODE_LEN];
  BYTE     byFirmwareVersion[MAX_VERSIIN_LEN];
  BYTE     byRes[60];
}NET_DVR_RECOMMEN_VERSION_COND, *LPNET_DVR_RECOMMEN_VERSION_COND;

Members

dwSize
结构体大小
byFirmwareCode
升级包识别码
byFirmwareVersion
升级包的版本号
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_RECOMMEN_VERSION_RET

是否推荐升级该版本查询结果结构体。

struct{
  DWORD    dwSize;
  BYTE     byRecommenUpgrade;
  BYTE     byRes[123];
}NET_DVR_RECOMMEN_VERSION_RET, *LPNET_DVR_RECOMMEN_VERSION_RET;

Members

dwSize
结构体大小
byRecommenUpgrade
是否推荐升级到该版本：0- 否，1- 是
byRes
保留

Remarks

  • 设备是否支持在线升级功能或者支持的参数能力，可以通过设备能力集进行判断，对应在线升级能力集(OnlineUpgradeCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ONLINEUPGRADE_ABILITY。

See Also

NET_DVR_GetSTDConfig


NET_DVR_RECORD

通道录像参数结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwRecord;
  NET_DVR_RECORDDAY     struRecAllDay[MAX_DAYS];
  NET_DVR_RECORDSCHED   struRecordSched[MAX_DAYS][MAX_TIMESEGMENT];
  DWORD                 dwRecordTime;
  DWORD                 dwPreRecordTime;
}NET_DVR_RECORD, *LPNET_DVR_RECORD;

Members

dwSize
结构体大小
dwRecord
是否启用计划录像配置：0-否，1-是
struRecAllDay
全天录像布防参数
struRecordSched
时间段录像布防参数
dwRecordTime
录象延时时间，0-5秒， 1-10秒， 2-30秒， 3-1分钟， 4-2分钟， 5-5分钟， 6-10分钟
dwPreRecordTime
预录时间：0-不预录，1-5秒，2-10秒，3-15秒，4-20秒，5-25秒，6-30秒，7-0xffffffff(尽可能预录)

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_RECORD_V30


NET_DVR_RECORD_CHECK_COND

录像完整性检测条件参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  BYTE                   byCheckType;
  BYTE                   byRes1[3];
  NET_DVR_TIME_EX        struBeginTime;
  NET_DVR_TIME_EX        struEndTime;
  BYTE                   byRes[128];
}NET_DVR_RECORD_CHECK_COND, *LPNET_DVR_RECORD_CHECK_COND;

Members

dwSize
结构体大小
struStreamInfo
流信息（仅流ID有效）
byCheckType
检测方式：0- 录像是否完整，1- 录像是否完整&缺失录像的起止时间
byRes1
保留，置为0
struBeginTime
检测录像的开始时间
struEndTime
检测录像的结束时间
byRes
保留，置为0

Remarks

  • 设备是否支持录像完整性检测或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<RecordCheck>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RECORD_CHECK_RET

录像完整性检测结果结构体。

struct{
  DWORD              dwSize;
  BYTE               byRecordNotComplete;
  BYTE               byRes1[3];
  NET_DVR_TIME_EX    struBeginTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byRes[128];
}NET_DVR_RECORD_CHECK_RET, *LPNET_DVR_RECORD_CHECK_RET;

Members

dwSize
结构体大小
byRecordNotComplete
录像是否完整：0- 完整，1- 不完整
byRes1
保留，置为0
struBeginTime
缺失录像的开始时间，byRecordNotComplete参数值和NET_DVR_RECORD_CHECK_COND查询条件中的byCheckType都为1时有效
struEndTime
缺失录像的结束时间，byRecordNotComplete参数值和NET_DVR_RECORD_CHECK_COND查询条件中的byCheckType都为1时有效
byRes
保留，置为0

Remarks

  • 设备是否支持录像完整性检测或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<RecordCheck>。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_RECORD_LABEL

录像标签结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_TIME            struTimeLabel;
  BYTE                    byQuickAdd;
  BYTE                    byRes1[3];
  BYTE                    sLabelName[LABEL_NAME_LEN];
  BYTE                    byRes2[40];
}NET_DVR_RECORD_LABEL,*LPNET_DVR_RECORD_LABEL;

Members

dwSize
结构体大小
struTimeLabel
标签的时间
byQuickAdd
是否快速添加，快速添加时标签名称无效
byRes1
保留，置为0
sLabelName
标签的名称，长度为40字节
byRes2
保留，置为0

See Also

NET_DVR_InsertRecordLabel


NET_DVR_RECORD_PACK

录像打包参数结构体。

struct{
  NET_DVR_STRUCTHEAD    struStructHead;
  DWORD                 dwPackageInterval;
  BYTE                  byRes[32];
}NET_DVR_RECORD_PACK,*LPNET_DVR_RECORD_PACK;

Members

struStructHead
结构体的头信息
dwPackageInterval
录像文件打包的时间间隔，时间单位：分钟
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG

回传历史录像计划配置结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byEnable;
  BYTE                      byRes1[3];
  NET_DVR_PASSBACK_DAY      struPassBackDay[MAX_DAYS];
  NET_DVR_PASSBACK_SCHED    struPassBackSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                      byRes[256];
}NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG,*LPNET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byRes1
保留，置为0
struPassBackDay
全天回传计划，每周7天
struPassBackSched
时间段回传计划，每周7天，每天最多8个时间段
byRes
保留，置为0

Remarks

  • 通过该结构体配置需要回传的历史录像时间段，再通过NET_DVR_REC_PASSBACK_BASIC_CFG设置检测窗口开始时间和结束时间，然后设备将会自动从前端设备把在回传历史录像时间段之内且在检测起止时间范围之内的录像文件回传过来进行存储。
  • 设备是否支持回传历史录像计划配置或者支持的参数能力，可以通过设备能力集进行判断，对应回传历史录像计划配置能力集(RecordPassBackHistoryPlanCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RECORD_PASSBACK_MANUAL_COND

手动添加录像回传任务查询条件参数结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byType;
  BYTE                   byTimeSegmentQuety;
  BYTE                   byRes1[2];
  NET_DVR_STREAM_INFO    struStreamInfo;
  NET_DVR_TIME_EX        struBeginTime;
  NET_DVR_TIME_EX        struEndTime;
  DWORD                  dwTaskID;
  BYTE                   byRes[108];
}NET_DVR_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_RECORD_PASSBACK_MANUAL_COND;

Members

dwSize
结构体大小
byType
查询方式：0- 获取全部剩余任务，1- 根据流ID获取剩余任务，2- 获取全部任务，3- 根据流ID获取任务，4- 根据任务ID获取任务
byTimeSegmentQuety
是否启用时间范围查询：0- 不启用，1- 启用
byRes1
保留，置为0
struStreamInfo
流信息（仅流ID有效），byType为1或3时有效
struBeginTime
查询开始时间，byTimeSegmentQuety为1时有效
struEndTime
查询结束时间，byTimeSegmentQuety为1时有效
dwTaskID
任务ID，byType为4时有效
byRes
保留，置为0

Remarks

  • 设备是否支持手动添加录像回传任务查询或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<GetAllRecordPassBackManulTask>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RECORD_PASSBACK_MANUAL_CTRL

手动录像回传任务控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byControlType;
  BYTE     byRes[131];
}NET_DVR_RECORD_PASSBACK_MANUAL_CTRL, *LPNET_DVR_RECORD_PASSBACK_MANUAL_CTRL;

Members

dwSize
结构体大小
byControlType
控制方式：0- 暂停所有手动任务，1- 恢复所有手动任务
byRes
保留，置为0

Remarks

  • 设备暂不支持单个任务暂停恢复控制。设备是否支持控制手动录像回传任务或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<RecordPassBackManulTaskCtrl>。

See Also

NET_DVR_RemoteControl


NET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET

手动添加录像回传任务查询结果结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  DWORD                  dwTaskID;
  NET_DVR_TIME_EX        struStartTime;
  NET_DVR_TIME_EX        struStopTime;
  BYTE                   byTaskStatus;
  BYTE                   byRes1[3];
  NET_DVR_TIME_EX        struExecuteStartTime;
  NET_DVR_TIME_EX        struExecuteStopTime;
  BYTE                   byRes[128];
}NET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET, *LPNET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET;

Members

dwSize
结构体大小
struStreamInfo
流ID信息
dwTaskID
任务ID
struStartTime
回传的录像开始时间
struStopTime
回传的录像结束时间
byTaskStatus
任务状态：0- 未执行，1- 暂停中，2- 已执行，3- 回传中
byRes1
保留，置为0
struExecuteStartTime
任务实际执行开始时间，byTaskStatus为1或2时有效
struExecuteStopTime
任务实际执行结束时间，byTaskStatus为2时有效
byRes
保留，置为0

Remarks

  • 设备是否支持手动添加录像回传任务查询或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<GetAllRecordPassBackManulTask>。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_RECORD_PASSBACK_SCH_CFG

录像回传计划配置结构体。

struct{
  DWORD                     dwSize;
  BYTE                      byEnable;
  BYTE                      byPassBackWeek;
  BYTE                      byRes1[2];
  NET_DVR_PASSBACK_DAY      struPassBackDay[MAX_DAYS];
  NET_DVR_PASSBACK_SCHED    struPassBackSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                      byRes[128];
}NET_DVR_RECORD_PASSBACK_SCH_CFG, *LPNET_DVR_RECORD_PASSBACK_SCH_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byPassBackWeek
是否按周回传：0- 否，1- 是，值为1时struPassBackDay、struPassBackSched无效
byRes1
保留，置为0
struPassBackDay
全天回传计划，byPassBackWeek为0时有效
struPassBackSched
时间段回传计划，byPassBackWeek为0时有效，每周7天，每天最多8个时间段
byRes
保留，置为0

Remarks

  • 在回传计划时间段内，设备会自动启动录像回传功能，将前端设备存储的录像回传过来进行存储。
  • 设备是否支持录像回传计划配置或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<RecordPassBackPlanConfig>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_RECORD_PASSBACK_TASK_CFG

回传任务参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTaskID;
  BYTE     byRes[160];
}NET_DVR_RECORD_PASSBACK_TASK_CFG, *LPNET_DVR_RECORD_PASSBACK_TASK_CFG;

Members

dwSize
结构体大小
dwTaskID
任务ID
byRes
保留，置为0

See Also

NET_DVR_SetDeviceConfigEx


NET_DVR_RECORD_PUBLISH_INFO

通道录像发布信息结构体。

struct{
  BYTE     byPublish;
  BYTE     byRes1[3];
  DWORD    dwStreamType;
  BYTE     byRes[12];
}NET_DVR_RECORD_PUBLISH_INFO,*LPNET_DVR_RECORD_PUBLISH_INFO;

Members

byPublish
是否发布：0- 否，1- 是
byRes1
保留，置为0
dwStreamType
一键发布码流类型，按位表示，值：0- 不发布，1- 发布
dwStreamType&0x1- 主码流
dwStreamType&0x2- 子码流
dwStreamType&0x4- 码流三
byRes
保留，置为0

See Also

NET_DVR_PUBLISH_CFG NET_DVR_ONEKEY_PUBLISH_CFG


NET_DVR_RECORD_SEGMENT_COND

录像段总大小查询条件参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  NET_DVR_TIME_EX        struStartTime;
  NET_DVR_TIME_EX        struStopTime;
  BYTE                   byRes[256];
}NET_DVR_RECORD_SEGMENT_COND, *LPNET_DVR_RECORD_SEGMENT_COND;

Members

dwSize
结构体大小
struStreamInfo
流信息（仅流ID有效）
struStartTime
录像段开始时间
struStopTime
录像段结束时间
byRes
保留，置为0

Remarks

  • 设备是否支持录像段总大小查询或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<GetSegmentRecordtotalSize>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RECORD_SEGMENT_RET

录像段总大小查询结果结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRecordTotalSize;
  BYTE     byRes[256];
}NET_DVR_RECORD_SEGMENT_RET, *LPNET_DVR_RECORD_SEGMENT_RET;

Members

dwSize
结构体大小
dwRecordTotalSize
录像总大小，单位：MB
byRes
保留，置为0

Remarks

  • 设备是否支持录像段总大小查询或者支持的参数能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<GetSegmentRecordtotalSize>。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_RECORD_STATUS

课程状态结构体。

struct{
  DWORD          dwSize;
  BYTE           byRecUUID[MAX_UUID_LEN];
  BYTE           byRecordStatus;
  BYTE           byRes1[3];
  DWORD          dwRecordingTime;
  BYTE           byRes[596];
 }NET_DVR_RECORD_STATUS,*LPNET_DVR_RECORD_STATUS;

Members

dwSize
结构体大小
byRecUUID
手动课表UUID
byRecordStatus
录播状态。取值：0-暂停，1-屏蔽,2-正在录像，3-空闲
byRes1
保留字节，置为0
dwRecordingTime
已录制时长，单位：秒，最大为12*60*60
byRes
保留字节，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_RECORD_TIME_SPAN

通道录像起止时间查询结果结构体。

struct{
  DWORD           dwSize;
  NET_DVR_TIME    strBeginTime;
  NET_DVR_TIME    strEndTime;
  BYTE            byType;
  BYTE            byRes[35];
}NET_DVR_RECORD_TIME_SPAN, *LPNET_DVR_RECORD_TIME_SPAN;

Members

dwSize
结构体大小
strBeginTime
开始时间
strEndTime
结束时间
byType
录像类型，0- 正常音视频录像，1- 图片通道录像，2- ANR通道录像，3- 抽帧通道录像
byRes
保留

See Also

NET_DVR_InquiryRecordTimeSpan


NET_DVR_RECORD_TIME_SPAN_INQUIRY

通道录像起止时间查询条件结构体。

struct{
  DWORD    dwSize;
  BYTE     byType;
  BYTE     byRes[63];
}NET_DVR_RECORD_TIME_SPAN_INQUIRY, *LPNET_DVR_RECORD_TIME_SPAN_INQUIRY;

Members

dwSize
结构体大小
byType
录像类型，0- 正常音视频录像，1- 图片通道录像，2- ANR通道录像，3- 抽帧通道录像
byRes
保留

See Also

NET_DVR_InquiryRecordTimeSpan


NET_DVR_RECORD_V30

通道录像参数结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwRecord;
  NET_DVR_RECORDDAY     struRecAllDay[MAX_DAYS];
  NET_DVR_RECORDSCHED   struRecordSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  DWORD                 dwRecordTime;
  DWORD                 dwPreRecordTime;
  DWORD                 dwRecorderDuration;
  BYTE                  byRedundancyRec;
  BYTE                  byAudioRec;
  BYTE                  byStreamType;
  BYTE                  byPassbackRecord;
  WORD                  wLockDuration;
  BYTE                  byRecordBackup;
  BYTE                  bySVCLevel;
  BYTE                  byRecordManage;
  BYTE                  byExtraSaveAudio;
  BYTE                  byReserve[2];
}NET_DVR_RECORD_V30, *LPNET_DVR_RECORD_V30;

Members

dwSize
结构体大小
dwRecord
是否启用计划录像配置：0-否，1-是
struRecAllDay
全天录像布防参数
struRecordSched
时间段录像布防参数
dwRecordTime
录象延时时间，0-5秒， 1-10秒， 2-30秒， 3-1分钟， 4-2分钟， 5-5分钟， 6-10分钟
dwPreRecordTime
预录时间：0-不预录，1-5秒，2-10秒，3-15秒，4-20秒，5-25秒，6-30秒，7-0xffffffff(尽可能预录)
dwRecorderDuration
录像保存的最长时间，单位：天。超过这个时间，该录像文件将被强制删除；若设置为0天则不强制删除，除非文件被循环覆盖。获取参数时若为0xffffffff，表示设备不支持设置该字段。
byRedundancyRec
是否冗余录像（重要数据双备份）：0-不录像，1-录像
byAudioRec
录像时复合流编码时是否记录音频数据：0-不记录，1-记录
byStreamType
码流类型：0- 主码流，1- 子码流，2- 主子码流同时录像，3- 第三码流
byPassbackRecord
0- 不回传录像，1- 回传录像
wLockDuration
录像锁定时长，单位：小时，0表示不锁定，0xffff表示永久锁定。录像段的时长大于锁定的持续时长的录像，将不会锁定
byRecordBackup
0- 录像不存档，1- 录像存档，目前定时录像不存档
bySVCLevel
SVC抽帧类型：0- 不抽，1- 抽二分之一，2- 抽四分之三
byRecordManage
录像调度：0- 启用，1- 不启用。启用时进行定时录像；不启用时不进行定时录像，但是录像计划仍在使用，比如移动侦测、回传都还在按这条录像计划进行
byExtraSaveAudio
是否单独存储音频录像：0- 不存储，1- 存储
byReserve
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_RECORD_V40

该结构扩展源于

NET_DVR_RECORD


NET_DVR_RECORD_V40

通道录像参数结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwRecord;
  NET_DVR_RECORDDAY_V40      struRecAllDay[MAX_DAYS];
  NET_DVR_RECORDSCHED_V40    struRecordSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  DWORD                      dwRecordTime;
  DWORD                      dwPreRecordTime;
  DWORD                      dwRecorderDuration;
  BYTE                       byRedundancyRec;
  BYTE                       byAudioRec;
  BYTE                       byStreamType;
  BYTE                       byPassbackRecord;
  WORD                       wLockDuration;
  BYTE                       byRecordBackup;
  BYTE                       bySVCLevel;
  BYTE                       byRecordManage;
  BYTE                       byExtraSaveAudio;
  BYTE                       byRes[126];
}NET_DVR_RECORD_V40, *LPNET_DVR_RECORD_V40;

Members

dwSize
结构体大小
dwRecord
是否启用计划录像配置：0-否，1-是
struRecAllDay
全天录像布防参数
struRecordSched
时间段录像布防参数
dwRecordTime
录象延时时间，0-5秒， 1-10秒， 2-30秒， 3-1分钟， 4-2分钟， 5-5分钟， 6-10分钟
dwPreRecordTime
预录时间：0-不预录，1-5秒，2-10秒，3-15秒，4-20秒，5-25秒，6-30秒，7-0xffffffff(尽可能预录)
dwRecorderDuration
录像保存的最长时间，单位：天。超过这个时间，该录像文件将被强制删除；若设置为0天则不强制删除，除非文件被循环覆盖。获取参数时若为0xffffffff，表示设备不支持设置该字段。
byRedundancyRec
是否冗余录像（重要数据双备份）：0-不录像，1-录像
byAudioRec
录像时复合流编码时是否记录音频数据：0-不记录，1-记录
byStreamType
码流类型：0- 主码流，1- 子码流，2- 主子码流同时录像，3- 第三码流
byPassbackRecord
0- 不回传录像，1- 回传录像
wLockDuration
录像锁定时长，单位：小时，0表示不锁定，0xffff表示永久锁定。录像段的时长大于锁定的持续时长的录像，将不会锁定
byRecordBackup
0- 录像不存档，1- 录像存档，目前定时录像不存档
bySVCLevel
SVC抽帧类型：0- 不抽，1- 抽二分之一，2- 抽四分之三
byRecordManage
录像调度：0- 启用，1- 不启用。启用时进行定时录像；不启用时不进行定时录像，但是录像计划仍在使用，比如移动侦测、回传都还在按这条录像计划进行
byExtraSaveAudio
是否单独存储音频录像：0- 不存储，1- 存储
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_RECORD_V30


NET_DVR_RECORD_VIDEO_CFG

录制视频参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byExportType;
  BYTE     byRes[255];
 }NET_DVR_RECORD_VIDEO_CFG,*LPNET_DVR_RECORD_VIDEO_CFG;

Members

dwSize
结构体大小
byExportType
导出文件类型：0- MP4，1- AVI
byRes
保留，置为0

Remarks

  • 设备是否支持录制视频参数配置能力或者支持的参数，可以通过设备能力集进行判断，对应录制视频配置能力集(RecordingVideoCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORD_VIDEO_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RECORDDAY

全天录像参数结构体。

struct{
  WORD    wAllDayRecord;
  BYTE    byRecordType;
  char    reservedData;
}NET_DVR_RECORDDAY, *LPNET_DVR_RECORDDAY;

Members

wAllDayRecord
是否全天录像：0-否，1-是
byRecordType
录像类型：0-定时录像，1-移动侦测录像，2-报警录像，3-移动侦测或报警录像，4-移动侦测和报警录像，5-命令触发录像，6-智能报警录像，10-PIR报警，11-无线报警，12-呼救报警，13-全部事件(移动侦测、PIR、无线、呼救等所有报警类型的"或")，14-智能交通事件，15-越界侦测，16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测），20-人脸侦测，21-POS录像
reservedData
保留，置为0

Remarks

配置录像计划时，如果录像类型设置为13（全部事件）时，按文件类型、时间方式查找时查找到的文件类型标志也为13；按事件方式查找时，可以得到具体的录像事件类型。

See Also

NET_DVR_HOLIDAY_RECORD NET_DVR_RECORD_V30 NET_DVR_RECORD


NET_DVR_RECORDDAY_V40

全天录像参数结构体。

struct{
  BYTE    byAllDayRecord;
  BYTE    byRecordType;
  char    byRes[62];
}NET_DVR_RECORDDAY_V40, *NET_DVR_RECORDDAY_V40;

Members

byAllDayRecord
是否全天录像：0-否，1-是
byRecordType
录像类型：0-定时录像，1-移动侦测录像，2-报警录像，3-移动侦测或报警录像，4-移动侦测和报警录像，5-命令触发录像，6-智能报警录像，10-PIR报警，11-无线报警，12-呼救报警，13-全部事件(移动侦测、PIR、无线、呼救等所有报警类型的"或"），14-智能交通事件，15-越界侦测，16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测），20-人脸侦测，21-POS录像，22-进入区域侦测，23-离开区域侦测，24-徘徊侦测，25-人员聚集侦测，26-快速运动侦测，27-停车侦测，28-物品遗留侦测，29-物品拿取侦测，30-火点检测，35-船只检测, 36-测温预警，37-测温报警，38-温差报警，39-离线测温报警，40-防区报警，41-紧急求助，42-业务咨询，43-起身检测，44-折线攀高，45-如厕超时
byRes
保留，置为0

Remarks

配置录像计划时，如果录像类型设置为13（全部事件）时，按文件类型、时间方式查找时查找到的文件类型标志也为13；按事件方式查找时，可以得到具体的录像事件类型。

See Also

NET_DVR_RECORD_V40


NET_DVR_RECORDING_CONTROL_CFG

录播主机控制参数结构体。

struct{
  DWORD                         dwSize;
  WORD                          wCmdType;
  BYTE                          byRes1[2];
  NET_DVR_CONTROL_INFO_UNION    struControlInfo;
  BYTE                          byRes[256];
}NET_DVR_RECORDING_CONTROL_CFG,*LPNET_DVR_RECORDING_CONTROL_CFG;

Members

dwSize
结构体大小
wCmdType
控制命令类型：0- 一键开始，1- 一键结束，2- 一键暂停，3- 一键恢复，4- 一键延长，5- 一键开始屏蔽，6- 一键停止屏蔽
byRes1
保留，置为0
struControlInfo
控制信息，一键开始和一键延长时有效
byRes
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_RECORDING_HOST_CFG

录播主机配置结构体。

struct{
  DWORD    dwSize;
  DWORD    dwOneKeyDelayTime;
  BYTE     byDirectedMode;
  BYTE     byClassroomType;
  BYTE     byCourseDataStorageEnabled;
  BYTE     byElectronicEnlargeMode;
  BYTE     byRes[124];
}NET_DVR_RECORDING_HOST_CFG, *LPNET_DVR_RECORDING_HOST_CFG;

Members

dwSize
结构体大小
dwOneKeyDelayTime
一键本地延迟时间，录像继续录的时间，单位：秒(s)
byDirectedMode
导播模式：0- 自动导播，1- 手动导播，2 - 半自动导播
byClassroomType
教室类型：0-无效，1-主教室，2-从教室
byCourseDataStorageEnabled
课堂数据统计是否存储在硬盘： 0-不存储，1-存储
byElectronicEnlargeMode
是否使用电子放大导播： 0-不使用，1-使用
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RECORDING_PUBLISH_FILE_CFG

文件发布参数结构体。

struct{
  DWORD               dwSize;
  BYTE                byFileID[MAX_ID_LEN_128];
  NET_DVR_TIME_EX     struStartTime;
  NET_DVR_TIME_EX     struEndTime;
  BYTE                byCmdType;
  BYTE                byFileType;
  BYTE                byRes[254];
 }NET_DVR_RECORDING_PUBLISH_FILE_CFG,*LPNET_DVR_RECORDING_PUBLISH_FILE_CFG;

Members

dwSize
结构体大小
byFileID
发布文件ID
struStartTime
课程开始时间
struEndTime
课程结束时间
byCmdType
发布命令类型：1- 开始发布 2- 取消发布
byFileType
发布文件类型：0- 保留，1- 定时课程，2- 手动课程
byRes
保留，置为0

Remarks

  • 设备是否支持文件发布能力或者支持的参数能力，可以通过设备能力集进行判断，对应文件发布能力集(PublishFile)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP。

See Also

NET_DVR_SetSTDConfig


NET_DVR_RECORDING_PUBLISH_FILE_COND

录像发布文件条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byFileID[MAX_ID_LEN_128];
  BYTE     byRes[300];
 }NET_DVR_RECORDING_PUBLISH_FILE_COND,*LPNET_DVR_RECORDING_PUBLISH_FILE_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byFileID
发布文件ID
wPicWidth
图片宽
byRes
保留，置为0

Remarks

  • 设备是否支持发布文件信息配置，可以通过设备能力集进行判断，对应发布文件信息能力集(PublishFileCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO_CAP。

See Also

NET_DVR_GetSTDConfig


NET_DVR_RECORDING_PUBLISH_FILE_INFO

发布文件信息参数结构体。

struct{
  DWORD               dwSize;
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struEndTime;
  BYTE                byCourseName[COURSE_NAME_LEN_128];
  BYTE                byInstructorName[INSTRUCTOR_NAME_LEN_64];
  BYTE                byCourseDescription[COURSE_DESCRIPTION_LEN];
  BYTE                byRes[300];
}NET_DVR_RECORDING_PUBLISH_FILE_INFO, *LPNET_DVR_RECORDING_PUBLISH_FILE_INFO;

Members

dwSize
结构体大小
struStartTime
课程开始时间，只读
struEndTime
课程结束时间，只读
byCourseName
课程名称
byInstructorName
授课老师姓名
byCourseDescription
课程描述
byRes
保留字节

See Also

NET_DVR_GetSTDConfig_RECORD NET_DVR_SetSTDConfig


NET_DVR_RECORDSCHED

时间段录像参数结构体。

struct{
  NET_DVR_SCHEDTIME    struRecordTime;
  BYTE                 byRecordType;
  char                 reservedData[3];
}NET_DVR_RECORDSCHED, *LPNET_DVR_RECORDSCHED;

Members

struRecordTime
录像时间
byRecordType
录象类型：0-定时录像，1-移动侦测录像，2-报警录像，3-移动侦测或报警录像，4-移动侦测和报警录像，5-命令触发录像，6-智能报警录像，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测），20-人脸侦测，21-POS录像
reservedData
保留，置为0

See Also

NET_DVR_HOLIDAY_RECORD NET_DVR_RECORD_V30 NET_DVR_RECORD


NET_DVR_RECORDSCHED_V40

时间段录像参数结构体。

struct{
  NET_DVR_SCHEDTIME    struRecordTime;
  BYTE                 byRecordType;
  BYTE                 byRes[31];
}NET_DVR_RECORDSCHED_V40, *LPNET_DVR_RECORDSCHED_V40;

Members

struRecordTime
录像时间段，开始时间-结束时间
byRecordType
录象类型：0-定时录像，1-移动侦测录像，2-报警录像，3-移动侦测或报警录像，4-移动侦测和报警录像，5-命令触发录像，6-智能报警录像，10-PIR报警，11-无线报警，12-呼救报警，13-移动侦测、PIR、无线、呼救等所有报警类型的"或"，14-智能交通事件，15-越界侦测，16-区域入侵侦测，17-音频异常侦测，18-场景变更侦测，19-智能侦测（越界侦测|区域入侵侦测|进入区域侦测|离开区域侦测|人脸侦测），20-人脸侦测，21-POS录像，22-进入区域侦测，23-离开区域侦测，24-徘徊侦测，25-人员聚集侦测，26-快速运动侦测，27-停车侦测，28-物品遗留侦测，29-物品拿取侦测，30-火点检测，35-船只检测, 36-测温预警，37-测温报警，38-温差报警，39-离线测温报警，40-防区报警，41-紧急求助，42-业务咨询，43-起身检测，44-折线攀高，45-如厕超时
byRes
保留，置为0

See Also

NET_DVR_RECORD_V40


NET_DVR_RECT_LIST

标定矩形框参数结构体。

struct{
  BYTE             byRectNum;
  BYTE             byRes1[11];
  NET_VCA_RECT     struVcaRect[MAX_RECT_NUM];
}NET_DVR_RECT_LIST, *LPNET_DVR_RECT_LIST;

Members

byRectNum
矩形框的数目，最小2个，最多6个矩形框
byRes1
保留
struVcaRect
区域框参数

See Also

NET_DVR_PDC_CALIBRATION


NET_DVR_RECTCFG

窗口设置结构体。

struct{
  WORD    wXCoordinate;
  WORD    wYCoordinate;
  WORD    wWidth;
  WORD    wHeight;
}NET_DVR_RECTCFG, *LPNET_DVR_RECTCFG;

Members

wXCoordinate
矩形左上角起始点X坐标
wYCoordinate
矩形左上角Y坐标
wWidth
矩形宽度
wHeight
矩形高度


NET_DVR_RECTCFG_EX

矩阵参数配置结构体。

struct{
  DWORD   dwXCoordinate;
  DWORD   dwYCoordinate;
  DWORD   dwWidth;
  DWORD   dwHeight;
  BYTE    byRes[4];
}NET_DVR_RECTCFG_EX, *LPNET_DVR_RECTCFG_EX;

Members

dwXCoordinate
矩形左上角起始点X坐标
dwYCoordinate
矩形左上角起始点Y坐标
dwWidth
矩形宽度
dwHeight
矩形高度
byRes
保留，置为0


NET_DVR_REDAREACFG

红绿灯区域校正配置结构体。

struct{
  DWORD           dwSize;
  DWORD           dwCorrectEnable;
  DWORD           dwCorrectLevel;
  DWORD           dwAreaNum;
  NET_VCA_RECT    struLaneRect[MAX_REDAREA_NUM];
  BYTE            byRes2[32];
}NET_DVR_REDAREACFG,*LPNET_DVR_REDAREACFG;

Members

dwSize
结构体大小
dwCorrectEnable
是否开启校正功能：0- 关闭，1- 开启
dwCorrectLevel
校正级别，取值范围：1(校正度最低)~10(校正度最高)，默认为5
dwAreaNum
校正区域个数
struLaneRect
校正区域
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_REDUNDANT_DEVICE_INFO

备机信息结构体。

struct{
  NET_DVR_IPADDR    struIP;
  BYTE              byWorkStatus;
  BYTE              byBackupStatus;
  WORD              wBackupPort;
}NET_DVR_REDUNDANT_DEVICE_INFO, *LPNET_DVR_REDUNDANT_DEVICE_INFO;

Members

struIP
设备IP地址
byWorkStatus
工作状态：0- 正常，1- 异常
byBackupStatus
备份状态：0- 不在监控，1- 正在监控，2- 正在备份中，3- 正在同步，4- 正在备份和同步中
wBackupPort
备份端口

See Also

NET_DVR_NPO_DEV_INFO_UNION


NET_DVR_REGION_CLIP_CFG

区域裁剪配置结构体。

struct{
  DWORD              dwSize;
  BYTE               byEnabled;
  BYTE               byRes1[3];
  WORD               wResolutionWidth;
  WORD               wResolutionHeight;
  NET_VCA_POLYGON    struRegion[MAX_REGION_NUM];
  BYTE               byRes2[64];
}NET_DVR_REGION_CLIP_CFG,*LPNET_DVR_REGION_CLIP_CFG;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留
wResolutionWidth
裁剪分辨率的宽
wResolutionHeight
裁剪分辨率的高
struRegion
剪裁区域
byRes2
保留，置为0

Remarks

  • 该配置功能对应区域裁剪能力集(RegionClip)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_REGIONCLIP_CAPABILITIES)。
  • 目前只有第三码流支持区域裁剪功能，启动裁剪功能后，该码流的编码分辨率将不能设置，只能设置裁剪分辨率，支持的分辨率类型通过上述能力集获取。
  • 启用区域裁剪后，ROI、电子防抖不再处理，移动侦测和智能的规则/目标信息不再叠加，画面中OSD相对位置不变。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_REGION_CLIP_COND

区域裁剪条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwStreamType;
  BYTE     byRes[8];
}NET_DVR_REGION_CLIP_COND,*LPNET_DVR_REGION_CLIP_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwStreamType
码流类型：0- 主码流，1- 子码流，2- 第三码流
byRes
保留，置为0

Remarks

目前只有第三码流支持区域裁剪功能。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_REGION_ENTRANCE_DETECTION

进入区域侦测配置结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byEnabled;
  BYTE                             byEnableHumanMisinfoFilter;
  BYTE                             byEnableVehicleMisinfoFilter;
  BYTE                             byRes1;
  NET_DVR_REGIONENTRANCE_REGION    struRegion[MAX_REGION_NUM];
  BYTE                             byRes2[128];
}NET_DVR_REGION_ENTRANCE_DETECTION,*LPNET_DVR_REGION_ENTRANCE_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byEnableHumanMisinfoFilter
是否启用人体去误报：0- 不启用，1- 启用
byEnableVehicleMisinfoFilter
是否启用车辆去误报：0- 不启用，1- 启用
byRes1
保留
struRegion
进入区域侦测区域参数
byRes2
保留，置为0

Remarks

  • 该配置功能对应进入区域侦测能力集(RegionEntrance)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。进入区域侦测的区域参数通过NET_DVR_SET_REGION_ENTR_REGION命令进行配置，每一个区域单独设置。
  • 如果开启人体去误报过滤功能，则设备将会把认为是误报的报警过滤掉，不进行实时上传，但会在本地存储以供查询。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_REGION_EXITING_DETECTION

离开区域侦测配置结构体。

struct{
  DWORD                           dwSize;
  BYTE                            byEnabled;
  BYTE                            byEnableHumanMisinfoFilter;
  BYTE                            byEnableVehicleMisinfoFilter;
  BYTE                            byRes1[1];
  NET_DVR_REGIONEXITING_REGION    struRegion[MAX_REGION_NUM];
  BYTE                            byRes2[128];
}NET_DVR_REGION_EXITING_DETECTION,*LPNET_DVR_REGION_EXITING_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byEnableHumanMisinfoFilter
是否启用人体去误报：0- 不启用，1- 启用
byEnableVehicleMisinfoFilter
是否启用车辆去误报：0- 不启用，1- 启用
byRes1
保留
struRegion
离开区域范围
byRes2
保留

Remarks

  • 该配置功能对应离开区域侦测能力集(RegionExiting)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_REGION_EXITINT_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。离开区域侦测的区域参数通过NET_DVR_SET_REGION_EXITING_REGION命令进行配置，每一个区域单独设置。
  • 如果开启人体去误报过滤功能，则设备将会把认为是误报的报警过滤掉，不进行实时上传，但会在本地存储以供查询。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_REGION_LIST

区域列表结构体。

struct{
  DWORD              dwSize;
  BYTE               byNum;
  BYTE               byRes1[3];
  NET_VCA_POLYGON    struPolygon[MAX_REGION_NUM];
  BYTE               byRes2[20];
}NET_DVR_REGION_LIST, *LPNET_DVR_REGION_LIST;

Members

dwSize
结构体大小
byNum
区域个数
byRes1
保留
struPolygon
区域参数
byRes2
保留

Remarks

参考区域：在图像区域选择一块或者多块能自动检测区分昼夜场景切换的区域。

屏蔽区域：在图像区域选择一块或者多块区域不做事件检测，一般是有字幕地方或者场景复杂的地方(如广告牌反光等地方)。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_REGIONENTRANCE_REGION

进入区域侦测参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byDetectionTarget;
  BYTE               byAlarmConfidence;
  DWORD              byRecordConfidence;
  BYTE               byRes[60];
}NET_DVR_REGIONENTRANCE_REGION,*LPNET_DVR_REGIONENTRANCE_REGION;

Members

struRegion
进入区域侦测的区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byDetectionTarget
检测目标，可支持多选，具体定义为： 0~所有目标（表示不锁定检测目标，所有目标都将进行检测） 0x01 ~ 人， 0x02 ~ 车， 0x04 ~ 其他， 该字段支持多选，按位取值，例如3表示1+2.
byAlarmConfidence
报警置信度, 0-低,1-较低,2-较高,3-高
byRecordConfidence
录像置信度, 0-低,1-较低,2-较高,3-高
byRes
保留

Remarks

设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

See Also

NET_DVR_REGION_ENTRANCE_DETECTION


NET_DVR_REGIONEXITING_REGION

离开区域配置结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byDetectionTarget;
  BYTE               byAlarmConfidence;
  BYTE               byRecordConfidence;
  BYTE               byRes[60];
}NET_DVR_REGION_EXITING_DETECTION,*LPNET_DVR_REGION_EXITING_DETECTION;

Members

struRegion
区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byDetectionTarget
检测目标，可支持多选，具体定义为：0~所有目标（表示不锁定检测目标，所有目标都将进行检测）; 0x01 ~ 人，0x02 ~ 车
byAlarmConfidence
报警置信度, 0-低,1-较低,2-较高,3-高
byRecordConfidence
录像置信度, 0-低,1-较低,2-较高,3-高
byRes
保留，置为0

Remarks

设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。

See Also

NET_DVR_REGION_EXITING_DETECTION


NET_DVR_REGISTER_RS485CFG

RS485注册配置结构体。

struct{
  DWORD    dwSize;
  WORD     wDeviceProtocol;
  BYTE     byRes[2];
  DWORD    dwBaudRate;
  BYTE     byRes1[124];
}NET_DVR_REGISTER_RS485CFG,*LPNET_DVR_REGISTER_RS485CFG;

Members

dwSize
结构体大小
wDeviceProtocol
前端设备协议，通过获取协议列表获取
byRes
保留，置为0
dwBaudRate
波特率(bps)：0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byRes1
保留，置为0

See Also

NET_DVR_SetSTDConfig


NET_DVR_REL_CAPTURE_CHAN

触发抓图的通道。

struct{
  BYTE      byChan[16];
  BYTE      byRes[20];
}NET_DVR_REL_CAPTURE_CHAN, *LPNET_DVR_REL_CAPTURE_CHAN;

Members

byChan
按位表示，byChan[0]=1表示触发第1个通道抓图，byChan[1]=1表示触发第2个通道抓图，依次类推
byRes
保留，置为0

See Also

NET_DVR_EVENT_CAPTURE


NET_DVR_REL_CAPTURE_CHAN_V40

触发抓图的通道信息。

struct{
  DWORD    dwMaxRelCaptureChanNum;
  DWORD    dwChanNo[MAX_CHANNUM_V40];
  BYTE     byRes[32];
}NET_DVR_REL_CAPTURE_CHAN_V40, *LPNET_DVR_REL_CAPTURE_CHAN_V40;

Members

dwMaxRelCaptureChanNum
报警输入最大可触发的关联通道个数（只读）
dwChanNo
触发的关联抓图通道号，按值表示，采用紧凑型排列，0xffffffff表示后续无效
byRes
保留，置为0

See Also

NET_DVR_EVENT_CAPTURE_V40


NET_DVR_RELAY_PARAM

继电器关联配置结构体。

struct{
  BYTE    byAccessDevInfo;
  BYTE    byRes[3];
}NET_DVR_RELAY_PARAM,*LPNET_DVR_RELAY_PARAM;

Members

byExternalDevInfo
接入设备信息：0- 不接入设备，1- 开道闸，2- 关道闸，3- 停道闸，4- 报警信号，5- 常亮灯
byRes
保留，置为0

See Also

NET_DVR_ENTRANCE_CFG


NET_DVR_RELOCATE_INFO

N+0模式下重定向设备信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byTakeOverAddr[MAX_DOMAIN_NAME];
  WORD     wPort;
  BYTE     byRes[254];
}NET_DVR_RELOCATE_INFO,*LPNET_DVR_RELOCATE_INFO;

Members

dwSize
结构体大小
byTakeOverAddr
接管设备地址
wPort
接管设备端口
byRes
保留，置为0

Remarks

  • N+0只支持流ID模式，不支持通道模式。
  • 设备是否支持N+0重定向信息查询能力，可以通过设备能力集进行判断，对应CVR设备能力集(CVRAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<NPlus0>。

See Also

NET_DVR_GetDeviceConfig


NET_DVR_REMIND_TIME

提醒时间参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
}NET_DVR_REMIND_TIME,*LPNET_DVR_REMIND_TIME;

Members

byEnable
是否启用本次提醒：0- 不启用，1- 启用
byHour
时，取值范围：0~24
byMinute
分，取值范围：0~60
bySecond
秒，取值范围：0~60

See Also

NET_DVR_SUBSYSTEM_PARAM_EX


NET_DVR_REMOTE_PLAY

设备本地回放远程控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byFileName[FILE_NAME_LEN];
  BYTE     byVideoOut[7];
  BYTE     byRes1[5];
  BYTE     byType;
  BYTE     byRes[31];
}NET_DVR_REMOTE_PLAY,*LPNET_DVR_REMOTE_PLAY;

Members

dwSize
结构体大小
byFileName
需要回放的文件名称
byVideoOut
播放输出口，下标表示表示通道号，依次为：VGA1、VGA2、VGA3、VGA4、VGA5-10、HDMI1、HDMI2，值：0- 不输出，1- 输出
byRes1
保留，置为0
byType
控制类型：0- 无效，1- 开始播放，2- 停止播放，3- 暂停，4- 恢复
byRes
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_REMOTECONTROL_ALARM_PARAM

遥控器布撤防参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  WORD     wDealyTime;
  BYTE     byRes[30];
}NET_DVR_REMOTECONTROL_ALARM_PARAM,*LPNET_DVR_REMOTECONTROL_ALARM_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
wDealyTime
延迟时间，单位：s，最大值：5分钟
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_REMOTECONTROL_COND

无线布防状态查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[64];
}NET_DVR_REMOTECONTROL_COND, *LPNET_DVR_REMOTECONTROL_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留

See Also

NET_DVR_GetDeviceStatus


NET_DVR_REMOTECONTROL_PTZ_PARAM

PTZ控制参数结构体。

struct{
  DWORD             dwSize;
  DWORD             dwChannel;
  DWORD             dwPTZCommand;
  NET_VCA_POINT     struVcaPoint;
  DWORD             dwSpeed;
  DWORD             dwStop;
  BYTE              byRes[32];
}NET_DVR_REMOTECONTROL_PTZ_PARAM,*LPNET_DVR_REMOTECONTROL_PTZ_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
dwPTZCommand
PTZ控制命令，见下表
宏定义 | 宏定义值 | 含义
ZOOM_IN | 11 | 焦距变大(倍率变大)
ZOOM_OUT | 12 | 焦距变小(倍率变小)
TILT_UP | 21 | 云台上仰
TILT_DOWN | 22 | 云台下俯
PAN_LEFT | 23 | 云台左转
PAN_RIGHT | 24 | 云台右转
PAN_AUTO | 29 | 云台左右自动扫描
PAN_CIRCLE | 50 | 云台自动圆周扫描
struVcaPoint
预览界面点坐标
dwSpeed
控制的速度，取值范围：[0,7]
struVcaPoint
停止动作或开始动作：0- 开始，1- 停止
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_REMOTECONTROL_STATUS

无线布防状态参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byAlarmStatus;
  BYTE     byRes[3];
  WORD     wAlarmDealyTime;
  WORD     wDisAlarmDealyTime;
  BYTE     byRes1[64];
}NET_DVR_REMOTECONTROL_STATUS, *LPNET_DVR_REMOTECONTROL_STATUS;

Members

dwSize
结构体大小
byAlarmStatus
布防状态：0- 保留，1- 撤防，2- 布防
byRes
保留
wAlarmDealyTime
布防延迟时间，单位：s
wDisAlarmDealyTime
撤防延迟时间，单位：s
byRes1
保留

See Also

NET_DVR_GetDeviceStatus


NET_DVR_REMOTECONTROL_STUDY_PARAM

远程控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[16];
}NET_DVR_REMOTECONTROL_STUDY_PARAM,*LPNET_DVR_REMOTECONTROL_STUDY_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

See Also

设备维护管理：NET_DVR_RemoteControl


NET_DVR_REMOTECONTROLLER_PERMISSION_CFG

遥控器用户参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1;
  WORD     wRemoteCtrllerID;
  BYTE     sDevSn[16];
  BYTE     byArmRight;
  BYTE     byDisArmRight;
  BYTE     byArmReportRight;
  BYTE     byDisArmReportRight;
  BYTE     byClearAlarmRight;
  BYTE     bySubSystemID;
  BYTE     byKeyboardAddr;
  BYTE     byEnableDel;
  BYTE     byAlwaysOpenRight;
  BYTE     byOpeningDirection;
  BYTE     byRes2[62];
}NET_DVR_REMOTECONTROLLER_PERMISSION_CFG,*LPNET_DVR_REMOTECONTROLLER_PERMISSION_CFG;

Members

dwSize
结构体大小
byEnable
是否使能：0- 禁用，1- 启用
byRes1
保留，置为0
wRemoteCtrllerID
遥控器号 从1开始
sDevSn
产品序列号
byArmRight
有无布防权限：0- 无布防权限，1- 有布防权限
byDisArmRight
有无撤防权限：0- 无撤防权限，1- 有撤防权限
byArmReportRight
有无布防报告权限：0- 无传布防报告权限，1- 有传布防报告权限
byDisArmReportRight
有无撤防报告权限：0- 无上传撤防报告权限，1- 有上传撤防报告权限
byClearAlarmRight
有无消警权限：0- 无消警权限，1- 有消警权限
bySubSystemID
设备(遥控器)子系统号，取值范围：1~8
byKeyboardAddr
接收键盘的地址，在配对时设置，后续用不到
byEnableDel
删除遥控器用户，0-禁用，1-启用
byAlwaysOpenRight
是否允许常开：0-无效，1-不允许，2-允许
byOpeningDirection
开门方向：0-无效，1-进门方向，2-出门方向
byRes2
保留，置为0

Remarks

  • 通道号用来传遥控器用户索引。
  • 对应门禁能力集(AcsAbility )，相关接口：NET_DVR_GetDeviceAbility， 为网络报警主机主机能力(DEVICE_ABILITY_INFO)的<RemoteController>节点。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RESET_COUNTER_CFG

统计数据清零参数结构体。

struct{
  DWORD              dwSize;
  BYTE               byEnable;
  BYTE               byMode;
  BYTE               byRes1[2];
  NET_DVR_TIME_EX    struTime[MAX_DAYS];
  BYTE               byRes[64];
 }NET_DVR_RESET_COUNTER_CFG,*LPNET_DVR_RESET_COUNTER_CFG;

Members

dwSize
结构体大小
byEnable
是否统计数据清零功能：0-否，1-是
byMode
生效模式：0- 定时，1- 手动
byRes1
保留，置为0
struTime
数据清零时间，时分秒有效
byRes
保留，置为0

Remarks

  • 清零模式为“定时”时设备到配置的时间点进行自动清零；清零模式为“手动”时调用设置接口时清零。

  • 设备是否支持客流数据清零操作或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PDC>中的子节点<resetCounter>和<resetCounterMode>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RESOLUTION_SWITCH

分辨率模式切换配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byResolutionType;
  BYTE     byRes[127];
}NET_DVR_RESOLUTION_SWITCH, *LPNET_DVR_RESOLUTION_SWITCH;

Members

dwSize
结构体大小
byResolutionType
分辨率模式：0- all，1- 20:9，2- 20:6
byRes
保留，置为0

Remarks

  • 设备是否支持分辨率模式切换配置或者支持的参数能力，可以通过设备能力集进行判断，对应分辨率模式切换能力集(ResolutionSwitch)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RESOLUTION_SWITCH_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RESUME_INITRACKPOS_CFG

恢复跟踪初始位控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[16];
}NET_DVR_RESUME_INITRACKPOS_CFG,*LPNET_DVR_RESUME_INITRACKPOS_CFG;

Members

dwSize
结构体大小
dwChannel
设备通道号
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_REVISE_GPS_CFG

GPS经纬度校准配置结构体。

struct{
  DWORD                dwSize;
  BYTE                 byLatitudeType;
  BYTE                 byLongitudeType;
  BYTE                 byRes[2];
  NET_DVR_LLI_PARAM    struLatitude;
  NET_DVR_LLI_PARAM    struLongitude;
  BYTE                 byRes1[300];
}NET_DVR_REVISE_GPS_CFG, *LPNET_DVR_REVISE_GPS_CFG;

Members

dwSize
结构体大小
byLatitudeType
纬度类型：0- 北纬，1- 南纬
byLongitudeType
经度类型：0- 东经，1- 西经
byRes
保留
struLatitude
纬度信息
struLongitude
经度信息
byRes1
保留

Remarks

  • 设备是否支持GPS经纬度校准或者支持的参数能力，可以通过设备能力集进行判断，对应校准GPS经纬度能力集(ReviseGPS)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_REVISE_GPS_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RGB_COLOR

颜色参数结构体。

struct{
  BYTE    byRed;
  BYTE    byGreen;
  BYTE    byBlue;
  BYTE    byRes;
}NET_DVR_RGB_COLOR, *LPNET_DVR_RGB_COLOR;

Members

byRed
RGB颜色三分量中的红色
byGreen
RGB颜色三分量中的绿色
byBlue
RGB颜色三分量中的蓝色
byRes
保留

Remarks

颜色值采用RGB888制式。


NET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM

权限控制器音频参数结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwFileSize;
  DWORD                       dwAudioID;
  BYTE                        byRes[256];
}NET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM,*LPNET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM;

Members

dwSize
结构体大小
dwFileSize
文件大小，单位：字节（上传音频文件时有效，下载音频文件时无效）
dwAudioID
音频ID（0xffffffff代表上传全部音频文件，目前设备仅支持全量上传，不支持单个音频ID上传）
byRes
保留

Remarks

  • 指音频文件从客户端上传到设备。

    • See Also

    NET_DVR_UploadFile_V40 NET_DVR_UploadClose


NET_DVR_RING_SEARCH_CFG

铃音参数列表查询结果结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRingID;
  BYTE     byRingName[MAX_RING_NAME_LEN_128];
  DWORD    dwRingSize;
  BYTE     byRingType;
  BYTE     byRes[303];
}NET_DVR_RING_SEARCH_CFG,*LPNET_DVR_RING_SEARCH_CFG;

Members

dwSize
结构体大小
dwRingID
铃音序号，取值范围：[1,8]
byRingName
铃音名称
dwRingSize
铃音文件大小，单位：字节
byRingType
铃音类型：0- wav
byRes
保留，置为0

Remarks

  • 设备是否支持铃音管理能力，可以通过设备能力集进行判断，对应铃音参数能力集(RingParam)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/VideoIntercom/ring/capabilities。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RING_SEARCH_COND

铃音参数列表查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRingID;
  BYTE     byRes[300];
}NET_DVR_RING_SEARCH_COND,*LPNET_DVR_RING_SEARCH_COND;

Members

dwSize
结构体大小
dwRingID
铃音序号，为0表示查询所有序号的铃音信息
byRes
保留，置为0

Remarks

  • 设备是否支持铃音管理能力，可以通过设备能力集进行判断，对应铃音参数能力集(RingParam)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/VideoIntercom/ring/capabilities。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_RING_UPLOAD_CFG

铃音文件上传信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRingID;
  BYTE     byRingName[MAX_RING_NAME_LEN_128];
  DWORD    dwRingSize;
  BYTE     byRingType;
  BYTE     byRes[363];
}NET_DVR_RING_UPLOAD_CFG,*LPNET_DVR_RING_UPLOAD_CFG;

Members

dwSize
结构体大小
dwRingID
铃音序号，取值范围：[1,8]
byRingName
铃音名称
dwRingSize
铃音文件大小，单位：字节
byRingType
铃音类型：0- wav
byRes
保留，置为0

Remarks

  • 设备是否支持铃音文件上传或者支持的参数能力，可以通过设备能力集进行判断，对应铃音参数能力集(RingParam)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/VideoIntercom/ring/capabilities。

See Also

NET_DVR_UploadFile_V40


NET_DVR_ROI_DETECT_CFG

ROI检测区域配置结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwStreamType;
  BYTE                        byRoiDetectType;
  BYTE                        byRes[3];
  NET_DVR_ROI_DETECT_UNION    uRoiDetectInfo;
  BYTE                        byRes1[36];
}NET_DVR_ROI_DETECT_CFG,*LPNET_DVR_ROI_DETECT_CFG;

Members

dwSize
结构体大小
dwStreamType
码流类型：0-主码流，1-子码流，2-事件类型，3-第三码流，……
byRoiDetectType
区域检测类型具体定义如下：
enum _DETECT_ROI_TYPE_{
  DETECT_FIX_ROI   = 0,
  DETECT_TRACK_ROI = 1
}DETECT_ROI_TYPE
DETECT_FIX_ROI
检测ROI固定区域
DETECT_TRACK_ROI
检测ROI 动态跟踪区域
byRes
保留
uRoiDetectInfo
ROI检测区域
byRes1
保留

Remarks

  • ROI：Region Of Interest，感兴趣区域编码。用户可以通过启用ROI功能设置视频画面中最关心、最感兴趣的区域，摄像机在进行视频编码时会提高相应区域的视频图像质量。
  • dwStreamType（码流类型）用于选择设置ROI的“主码流”、“子码流”、“第三码流”或者更多码流，分别对不同码流设置不同的感兴趣区域，不同码流相互独立。
  • “固定区域”和“动态跟踪区域”为ROI的两种不同工作模式，用户可根据需要设置固定的提升区域或允许摄像机动态提升侦测到人脸经过区域的画质。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ROI_DETECT_COND

ROI检测区域信息结构体。

struct{
  DWORD                                       dwSize;
  DWORD                                       dwRoiID;
  NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND    struMultiStreamCfg;
  BYTE                                        byRoiDetectType;
  BYTE                                        byRoiDetectTrackType;
  BYTE                                        byRes[30];
}NET_DVR_ROI_DETECT_COND,*LPNET_DVR_ROI_DETECT_COND;

Members

dwSize
结构体大小
dwRoiID
区域检测ID号
struMultiStreamCfg
多码流配置
byRoiDetectType
区域检测类型具体定义如下：
enum _DETECT_ROI_TYPE_{
  DETECT_FIX_ROI   = 0,
  DETECT_TRACK_ROI = 1
}DETECT_ROI_TYPE
DETECT_FIX_ROI
检测ROI固定区域
DETECT_TRACK_ROI
检测ROI动态跟踪区域
byRoiDetectTrackType
固定区域时，该字段无效；动态跟踪区域时，跟踪类型：2- 移动物体跟踪，3- 车牌跟踪
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_ROI_DETECT_NUM

ROI检测区域编号数目信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwGroup;
  DWORD    dwStreamType;
  DWORD    dwRoiFixNum;
  DWORD    dwRoiFixID[MAX_ROIDETECT_NUM];
  BYTE     szFixRoiName[MAX_ROIDETECT_NUM][NAME_LEN];
  DWORD    dwRoiTrackNum;
  DWORD    dwRoiTrackID[MAX_ROIDETECT_NUM];
  BYTE     byRes[320];
}NET_DVR_ROI_DETECT_NUM,*LPNET_DVR_ROI_DETECT_NUM;

Members

dwSize
结构体大小
dwGroup
组号
dwStreamType
码流类型：0-主码流，1-子码流，2-事件类型，3-码流3，……
dwRoiFixNum
固定区域总数，确定后续再次获取的组号
dwRoiFixID
ROI固定区域ID，IPC现在支持4个，球机现在支持24个(根据能力集可以扩展支持数量)
szFixRoiName
ROI固定区域名称
dwRoiTrackNum
ROI动态跟踪区域总数，确定后续再次获取的组号
dwRoiTrackID
ROI动态跟踪区域ID，IPC现在支持4个，球机现在支持24个(根据能力集可以扩展支持数量)
byRes
保留

Remarks

ROI：Region Of Interest，感兴趣区域编码。用户可以通过启用ROI功能设置视频画面中最关心、最感兴趣的区域，摄像机在进行视频编码时会提高相应区域的视频图像质量。

dwGroup是组号的概念，如果后续扩展超出每组MAX_ROIDETECT_NUM个区域的时候，需要分组去获取。组号从0开始，当dwRoiFixNum或者dwRoiTrackNum 数目超过MAX_ROIDETECT_NUM的时候，进行分组获取，组号依次递增。

See Also

NET_DVR_GetDeviceConfig


NET_DVR_ROI_DETECT_UNION

ROI检测区域配置联合体。

struct{
  DWORD                         uLen[128];
  NET_DVR_ROI_FIX_RECT_CFG      strRoiFixRectCfg;
  NET_DVR_ROI_TRACK_RECT_CFG    strRoiTrackRectCfg;
}NET_DVR_ROI_DETECT_UNION,*LPNET_DVR_ROI_DETECT_UNION;

Members

uLen
联合体大小，512字节
strRoiFixRectCfg
固定区域模式
strRoiTrackRectCfg
自动跟踪模式

Remarks

ROI：Region Of Interest，感兴趣区域编码。

当前设备在单场景下支持4个绘画区域（区域检测号）；球机多场景下一共支持24个绘画区域（区域检测号）。

See Also

NET_DVR_ROI_DETECT_CFG


NET_DVR_ROI_FIX_RECT_CFG

ROI固定区域模式配置结构体。

struct{
  BYTE            byEnableFixRoi;
  BYTE            byImageQualityLevel;
  BYTE            byRes[2];
  BYTE            byFixRoiName[NAME_LEN];
  NET_VCA_RECT    struRoiRect;
  BYTE            byRes1[468];
}NET_DVR_ROI_FIX_RECT_CFG,*LPNET_DVR_ROI_FIX_RECT_CFG;

Members

byEnableFixRoi
ROI固定区域模式是否启用：0- 不启用，1- 启用
byImageQualityLevel
图像质量提升等级，取值范围：1～6
byRes
保留
byFixRoiName
ROI固定区域名称
struRoiRect
ROI区域
byRes1
保留

Remarks

ROI：Region Of Interest，感兴趣区域编码。

See Also

NET_DVR_ROI_DETECT_UNION


NET_DVR_ROI_TRACK_RECT_CFG

ROI动态跟踪模式配置结构体。

struct{
  BYTE    byEnableTrackRoi;
  BYTE    byImageQualityLevel;
  BYTE    byModeType;
  BYTE    byRes1[509];
}NET_DVR_ROI_TRACK_RECT_CFG,*LPNET_DVR_ROI_TRACK_RECT_CFG;

Members

byEnableTrackRoi
ROI动态跟踪模式是否启用：0- 不启用，1- 启用
byImageQualityLevel
图像质量提升等级，取值范围：1～6
byModeType
动态跟踪模式：0- 保留，2- 移动物体跟踪，3- 车牌跟踪
byRes1
保留

Remarks

ROI：Region Of Interest，感兴趣区域编码。

See Also

NET_DVR_ROI_DETECT_UNION


NET_DVR_RS232CFG

RS232串口参数结构体。

struct{
  DWORD               dwSize;
  DWORD               dwBaudRate;
  BYTE                byDataBit;
  BYTE                byStopBit;
  BYTE                byParity;
  BYTE                byFlowcontrol;
  DWORD               dwWorkMode;
  NET_DVR_PPPCFG      struPPPConfig;
}NET_DVR_RS232CFG, *LPNET_DVR_RS232CFG;

Members

dwSize
结构体大小
dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控,2-硬流控
dwWorkMode
工作模式，0－窄带传输(232串口用于PPP拨号)，1－控制台(232串口用于参数控制)，2－透明通道
struPPPConfig
PPP参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_RS232CFG_V30


NET_DVR_RS232CFG_V30

RS232串口参数结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_SINGLE_RS232         struRs232[MAX_SERIAL_PORT];
  NET_DVR_PPPCFG_V30           struPPPConfig;
}NET_DVR_RS232CFG_V30, *LPNET_DVR_RS232CFG_V30;

Members

dwSize
结构体大小
struRs232
232串口号
struPPPConfig
PPP参数

Remarks

配置ATM防护舱控制器的232参数时，设备对1号、3号串口通道的数值会进行有效判断，其中流速必须是1200以上，流控设为无，数据位为8位，操作模式为“控制台”或“透明通道”。

配置自助行报警主机的232参数时，参数可设：
1. 串口操作模式：控制台及透明通道
2. 串口配置参数：
1)波特率（bps）：1200,2400,4800,9600,19200,38400,57600,76800,115200
2)数据位：7位或8位，默认8位，7位时必须带校验位
3)停止位：1位或2位，默认1位
4)校验：数据位8位时，校验位可选择为“奇校验”或“偶校验”或“无”，数据位为7位时，校验位可选为“奇校验”或“偶校验”
5)流控：不支持

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RS232CFG_V30

RS232串口参数结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_SINGLE_RS232    struRs232[MAX_SERIAL_PORT];
  NET_DVR_PPPCFG_V30      struPPPConfig;
}NET_DVR_RS232CFG_V30, *LPNET_DVR_RS232CFG_V30;

Members

dwSize
结构体大小
struRs232
RS232串口参数，数组下标（+1）表示串口号
struPPPConfig
PPP参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_RS232CFG


NET_DVR_RS485_CASCADE_CFG

RS485级联设备配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byDevAddr;
  BYTE     byRes[131];
}NET_DVR_RS485_CASCADE_CFG,*LPNET_DVR_RS485_CASCADE_CFG;

Members

dwSize
结构体大小
byDevAddr
设备地址，0表示主机，1~15表示从机
byRes
保留，置为0

Remarks

设备是否支持该配置功能，对应报警主机能力集(AlarmHostAbility)的子节点<SafetyCabinCascadeCfg>，相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_RS485_PROTOCOL_VERSION

RS485协议库版本信息结构体。

struct{
  DWORD                dwSize;
  BYTE                 byProtocleVersion[PROTOCOL_VERTION_LEN];
  BYTE                 byRes[128];
}NET_DVR_RS485_PROTOCOL_VERSION,*LPNET_DVR_RS485_PROTOCOL_VERSION;

Members

dwSize
结构体大小
byProtocleVersion
RS485协议库版本信息
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_RTMP_CFG

RTMP参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwPacketLen;
  char     szURL[RTMP_URL_LEN];
  BYTE     byRes[256];
 }NET_DVR_RTMP_CFG,*LPNET_DVR_RTMP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用RTMP：0- 不启用，1- 启用
byRes1
保留，置为0
dwPacketLen
RTMP包长度
szURL
RTMP URL
byRes
保留，置为0

Remarks

  • 设备是否支持RTMP配置能力或者支持的参数，可以通过设备能力集进行判断，对应RTMP配置能力集(RTMPCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RTMP_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_RTMP_COND

RTMP配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byStreamType;
  BYTE     byRes[303];
 }NET_DVR_RTMP_COND,*LPNET_DVR_RTMP_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byStreamType
码流类型：1- 主码流，2- 子码流，3- 码流三
byRes
保留，置为0

Remarks

  • 设备是否支持RTMP配置能力或者支持的参数，可以通过设备能力集进行判断，对应RTMP配置能力集(RTMPCfg)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_RTMP_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig

NET_DVR_GetSTDAbility


NET_DVR_RTSP_PROTOCAL_CFG

RTSP协议取流参数结构体。

struct{
  BYTE     byEnable;
  BYTE     byLocalBackUp;
  BYTE     byRes[2];
  BYTE     strURL[URL_LEN_V40];
  DWORD    dwProtocalType;
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassWord[PASSWD_LEN];
  BYTE     byAddress[MAX_DOMAIN_NAME];
  WORD     wPort;
  BYTE     byRes1[122];
}NET_DVR_RTSP_PROTOCAL_CFG,*LPNET_DVR_RTSP_PROTOCAL_CFG;

Members

byEnable
是否启用：0- 禁用，1- 启用
byLocalBackUp
是否本地备份：0- 不启用CVR本地备份，1- 启用CVR本地备份（即录像时的流一份保存在录像卷，一份保存在存档卷）
byRes
保留，置为0
strURL
取流URL
dwProtocalType
IPC协议类型，通过接口NET_DVR_GetIPCProtoList获取
sUserName
设备登陆用户名
sPassWord
设备登陆密码
byAddress
前端IP或者域名（需要设备解析，解析方式为有字母存在且有“.”则认为是域名，否则为IP地址）
wPort
设备端口号
byRes1
保留，置为0

See Also

NET_DVR_STREAM_TYPE_V40_UNION


NET_DVR_RTSPCFG

RTSP协议参数结构体。

struct{
  DWORD    dwSize;
  WORD     wPort;
  BYTE     byReserve[54];
}NET_DVR_RTSPCFG, *LPNET_DVR_RTSPCFG;

Members

dwSize
结构体大小
wPort
rtsp服务器侦听端口
byReserve
保留，置为0

See Also

NET_DVR_GetRtspConfig NET_DVR_SetRtspConfig


NET_DVR_RULE_INFO_ALARM

实时上传事件信息结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwRelativeTime;
  DWORD                       dwAbsTime;
  NET_VCA_DEV_INFO            struDevInfo;
  NET_DVR_EVENT_INFO_LIST     struEventInfoList;
  BYTE                        byRes[40];
}NET_DVR_RULE_INFO_ALARM, *LPNET_DVR_RULE_INFO_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
struEventInfoList
事件信息列表
byRes1
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_RULESLINE_CFG

热成像规则线相关属性参数结构体。

struct{
  NET_DVR_RGB_COLOR    struRGB;
  BYTE                 byRes[128];
}NET_DVR_RULESLINE_CFG,*LPNET_DVR_RULESLINE_CFG;

Members

struRGB
RGB参数，R（红色）、G（绿色）、B（蓝色）
byRes
保留，置为0

See Also

NET_DVR_THERMAL_INTELRULE_DISPLAY


NET_DVR_SADP_VERIFY

校验信息结构体。

struct{
  char             chPassword[PASSWD_LEN];
  NET_DVR_IPADDR   struOldIP;
  WORD             wOldPort;
  BYTE             byRes[62];
}NET_DVR_SADP_VERIFY,*LPNET_DVR_SADP_VERIFY;

Members

chPassword
管理员用户密码
struOldIP
修改前的IP地址
wOldPort
修改前的端口号
byRes
保留，置为0

See Also

NET_DVR_UpdateSadpInfo


NET_DVR_SADPINFO

单个IPC信息结构体。

struct{
  NET_DVR_IPADDR   struIP;
  WORD             wPort;
  WORD             wFactoryType;
  char             chSoftwareVersion[SOFTWARE_VERSION_LEN];
  char             chSerialNo[16];
  WORD             wEncCnt;
  BYTE             byMACAddr[MACADDR_LEN];
  NET_DVR_IPADDR   struSubDVRIPMask;
  NET_DVR_IPADDR   struGatewayIpAddr;
  NET_DVR_IPADDR   struDnsServer1IpAddr;
  NET_DVR_IPADDR   struDnsServer2IpAddr;
  BYTE             byDns;
  BYTE             byDhcp;
  BYTE             szGB28181DevID[DEV_ID_LEN];
  BYTE             byActivated;
  BYTE             byRes[125];
}NET_DVR_SADPINFO,*LPNET_DVR_SADPINFO;

Members

struIP
设备IP地址
wPort
设备端口号
wFactoryType
设备厂家类型
chSoftwareVersion
软件版本
chSerialNo
序列号
wEncCnt
编码通道个数
byMACAddr
MAC地址
struSubDVRIPMask
子网掩码
struGatewayIpAddr
网关
struDnsServer1IpAddr
域名服务器1的IP地址
struDnsServer1IpAddr
域名服务器2的IP地址
byDns
是否开启DNS，0-不开启；1-开启
byDhcp
是否开启DHCP，0-不开启；1-开启
szGB28181DevID
GB28181协议接入时的设备ID，用于IPC以GB28181协议接入
byActivated
激活状态：0- 无效，1- 已激活，2- 未激活
byRes
保留，置为0

See Also

NET_DVR_SADPINFO_LIST


NET_DVR_SADPINFO_LIST

IPC信息列表结构体。

struct{
  DWORD              dwSize;
  WORD               wSadpNum;
  BYTE               byRes[6];
  NET_DVR_SADPINFO   struSadpInfo[MAX_SADP_NUM];
}NET_DVR_SADPINFO_LIST,*LPNET_DVR_SADPINFO_LIST;

Members

dwSize
结构体大小
wSadpNum
搜索到的设备个数
byRes
保留，置为0
struSadpInfo
单个设备的信息

See Also

NET_DVR_GetSadpInfoList


NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG

防护舱人信号探测参数结构体。

struct{
  DWORD     dwSize;
  BYTE      bySensorType;
  BYTE      bySensitivity;
  BYTE      byDevUseTimeout;
  BYTE      byRes1;
  WORD      wCurtainDelayTime;
  WORD      wCurtainResponseTime;
  WORD      wFaintToEmergencyTime;
  BYTE      byFollowDetectorSensitivity;
  BYTE      byManyPersonSensitivity;
  BYTE      byRes2[28];
}NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG, *LPNET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG;

Members

dwSize
结构体大小
bySensorType
传感器类型：0- 红外对射传感器，1- 幕帘传感器
bySensitivity
传感器敏感度，范围：0~100%
byDevUseTimeout
防护舱使用超时时间，单位：分，范围：0~30，默认超时：15min，超时后通过布防通道上传报警
byRes1
保留
wCurtainDelayTime
幕帘传感器探测延时时间，单位：秒，取值范围：0~10
wCurtainResponseTime
幕帘人状态变化控制器响应时间，单位：秒，范围：0~300
wFaintToEmergencyTime
晕倒告警生效时间配置范围，单位：%，取值范围：0~100
byFollowDetectorSensitivity
尾随检测灵敏度配置范围，单位：%，取值范围：0~100
byManyPersonSensitivity
多人检测灵敏度配置范围，单位：%，取值范围：0~100
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SAFETYCABIN_WORK_MODE

防护舱工作模式参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode;
  BYTE     byRes[15];
}NET_DVR_SAFETYCABIN_WORK_MODE,*LPNET_DVR_SAFETYCABIN_WORK_MODE;

Members

dwSize
结构体大小
byWorkMode
工作模式：0- 无人时门常开，1- 无人时门常锁
byFaintToUnlock
晕倒报警一段时间后外部按钮是否可以开门：0-否，1-是
byOvertimeToUnlock
使用超时后外部按钮是否可以开门：0-否，1-是
byRes
保留，置为0

Remarks

设备是否支持该配置功能，对应报警主机能力集(AlarmHostAbility)的子节点<SafetyCabinWorkMode>；
防护舱人探测信号对应的能力集节点为<SafetyCabinPersonSignal>，防护舱工作模式设置对应的能力集节点为<SafetyCabinWorkMode>。
相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SATELLITETIME_CFG

卫星定位参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[127];
}NET_DVR_SATELLITETIME_CFG,*LPNET_DVR_SATELLITETIME_CFG;

Members

dwSize
结构体大小
byEnable
卫星定位校时使能：0- 不开启，1- 开启
byRes
保留，置为0

Remarks

  • 设备是否支持卫星定位能力，可以通过设备能力集进行判断，对应网络应用参数能力集(NetAppAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETAPP_ABILITY，节点：<SatelliteTiming>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCALECFG

视频输出缩放参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwMajorScale;
  DWORD    dwMinorScale;
  DWORD    dwRes[2];
}NET_DVR_SCALECFG, *LPNET_DVR_SCALECFG;

Members

dwSize
结构体大小
dwMajorScale
主显示：0-不缩放，1-缩放
dwMinorScale
辅显示：0-不缩放，1-缩放
dwRes
保留，置为0

See Also

NET_DVR_GetScaleCFG_V30 NET_DVR_SetScaleCFG_V30


NET_DVR_SCENE_CFG

场景配置结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_ONE_SCENE_CFG    struSceneCfg[MAX_ITS_SCENE_NUM];
  BYTE                     byRes[40];
}NET_DVR_SCENE_CFG, *LPNET_DVR_SCENE_CFG;

Members

dwSize
结构体大小
struSceneCfg
场景配置信息
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SCENE_COND

场景操作条件结构体。

struct{
  DWORD    dwSize;
  LONG     lChannel;
  DWORD    dwSceneID;
  BYTE     byRes[48];
}NET_DVR_SCENE_COND, *LPNET_DVR_SCENE_COND;

Members

dwSize
结构体大小
lChannel
通道号
dwSceneID
场景ID，0表示该场景无效
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SCENE_CONTROL_INFO

场景控制参数结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_VIDEO_WALL_INFO    struVideoWallInfo;
  DWORD                      dwCmd;
  BYTE                       byRes[4];
}NET_DVR_SCENE_CONTROL_INFO,*LPNET_DVR_SCENE_CONTROL_INFO;

Members

dwSize
结构体大小
struVideoWallInfo
电视墙信息
dwCmd
场景控制命令：1-场景模式切换（如果要切换的是当前场景，则不进行切换），2-初始化场景（将此场景的配置清空，如果是当前场景，则同时对当前场景进行清屏操作），3-强制切换（无论是否是当前场景，强制切换），4-保存当前模式到某场景
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_SCENE_INFO

场景信息结构体。

struct{
  DWORD             dwSceneID;
  BYTE              bySceneName[NAME_LEN];
  BYTE              byDirection;
  BYTE              byRes1[3];
  NET_DVR_PTZPOS    struPtzPos;
  BYTE              byRes2[64];
}NET_DVR_SCENE_INFO, *LPNET_DVR_SCENE_INFO;

Members

dwSceneID
场景ID，0- 表示该场景无效
bySceneName
场景名称
byDirection
监测方向：1-上行，2-下行，3-双向，4-由东向西，5-由南向北，6-由西向东，7-由北向南，8-其它
byRes1
保留
struPtzPos
PTZ坐标
byRes2
保留

See Alsoo

NET_DVR_AID_ALARM_V41


NET_DVR_SCENE_TIME_CFG

场景起效时间段配置结构体。

struct{
  DWORD                     dwSize;
  NET_DVR_ONE_SCENE_TIME    struSceneTime[MAX_SCENE_TIMESEG_NUM];
  BYTE                      byRes[64];
}NET_DVR_SCENE_TIME_CFG, *LPNET_DVR_SCENE_TIME_CFG;

Members

dwSize
结构体大小
struSceneTime
场景时间段信息
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SCENECHANGE_DETECTION

场景变更报警配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           bySensitiveLevel;
  BYTE                           byRes1[2];
  NET_DVR_SCHEDTIME              struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V30];
  BYTE                           byRes2[128];
}NET_DVR_SCENECHANGE_DETECTION, *LPNET_DVR_SCENECHANGE_DETECTION;

Members

dwSize
结构体大小
byEnable
是否启用场景变更报警：0- 不启用，1- 启用
bySensitiveLevel
灵敏度，1~100，默认50，灵敏度越高，越容易报警
byRes1
保留，置为0
struAlarmSched
布防时间
struHandleException
异常处理方式
dwMaxRelRecordChanNum
报警触发的录象通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
dwRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号，初始值是0xfffffffff(不关联通道)。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]。
byRes2
保留，置为0

Remarks

  • dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SCENECHANGE_DETECTION_RESULT

场景变更报警信息结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  WORD                wDevInfoIvmsChannelEx;
  BYTE                byRes[126];
}NET_DVR_SCENECHANGE_DETECTION_RESULT, *LPNET_DVR_SCENECHANGE_DETECTION_RESULT;

Members

dwSize
结构体大小
struDevInfo
前端设备信息
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_SCHED_CAPTURECFG

抓图计划参数结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnable;
  BYTE                        byRes1[3];
  NET_DVR_CAPTURE_DAY         struCaptureDay[MAX_DAYS];
  NET_DVR_CAPTURE_SCHED       struCaptureSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_CAPTURE_DAY         struCaptureHoliday;
  NET_DVR_CAPTURE_SCHED       struHolidaySched[MAX_TIMESEGMENT_V30];
  DWORD                       dwRecorderDuration;
  DWORD                       dwDelayTime;
  BYTE                        byRes[36];
}NET_DVR_SCHED_CAPTURECFG, *LPNET_DVR_SCHED_CAPTURECFG;

Members

dwSize
结构体大小
byEnable
是否抓图
byRes1
保留
struCaptureDay
全天抓图计划，数组0~6分别对应星期一~星期日
struCaptureSched
时间段抓图布防计划，数组0~6分别对应星期一~星期日
struCaptureHoliday
假日抓图计划
struHolidaySched
假日抓图时间段布防计划
dwRecorderDuration
抓图保存最长时间，单位：天，0xffffffff表示该值无效
dwDelayTime
抓图延时时间 0- 无延时， 1-3秒， 2-4秒， 3-5秒， 4-10秒， 5-30秒， 6-60秒， 7- 120秒，8-300秒
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCHEDDATE

起止日期段参数结构体。

struct{
  BYTE    byStartMonth;
  BYTE    byStartDay;
  BYTE    byStopMonth;
  BYTE    byStopDay;
}NET_DVR_SCHEDDATE,*LPNET_DVR_SCHEDDATE;

Members

byStartMonth
起始日期（月）
byStartDay
起始日期（日）
byStopMonth
结束日期（月）
byStopDay
结束日期（日）

See Also

NET_DVR_ONE_OUTPUT_SCHEDULE_RULE NET_DVR_PRIOR_SCHEDTIME


NET_DVR_SCHEDTASK

定时任务信息结构体。

struct{
  NET_DVR_SCHEDTIME    struSchedTime;
  WORD                 wAction;
  WORD                 wActionNum;
  BYTE                 byres[12];
}NET_DVR_SCHEDTASK, *LPNET_DVR_SCHEDTASK;

Members

struSchedTime
时间
wAction
定时动作具体动作：0-close，1- autoscan（自动扫描），2- framescan(帧扫描)，3- randomscan（随机扫描），4- patrol（巡航扫描），5- pattern（花样扫描），6- preset（预置点），7- panoramascan(全景扫描)，8- tiltscan(垂直扫描)，9- periodreboot(定时重启)，10- periodadjust(定时校正)，11- auxoutput（辅助输出），12- areaScan（区域扫描）
wActionNum
特殊动作子编号，具体取值如下：
patrol(巡航扫描)：编号支持1~8，
pattern(花样扫描)：编号支持1~4，
preset(预置点)：编号支持1~8，
auxoutput(辅助输出):编号支持1~2，
其他动作无编号，且不能设置编号。
byres
保留，置为0

See Also

NET_DVR_TIME_TASK


NET_DVR_SCHEDTIME

起止时间段参数结构体。

struct{
  BYTE    byStartHour;
  BYTE    byStartMin;
  BYTE    byStopHour;
  BYTE    byStopMin;
}NET_DVR_SCHEDTIME, *LPNET_DVR_SCHEDTIME;

Members

byStartHour
开始时间：时
byStartMin
开始时间：分
byStopHour
结束时间：时
byStopMin
结束时间：分


NET_DVR_SCHEDULE_AUTO_TRACK_CFG

定时智能跟踪配置结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byEnableTrack;
  BYTE                    byRes1[3];
  NET_DVR_DAY_SCHEDULE    struSchedule[MAX_DAYS];
  BYTE                    byRes2[128];
}NET_DVR_SCHEDULE_AUTO_TRACK_CFG,*LPNET_DVR_SCHEDULE_AUTO_TRACK_CFG;

Members

dwSize
结构体大小
byEnableTrack
启用智能跟踪定时任务：0- 否，1- 是
byRes1
保留，置为0
struSchedule
定时智能跟踪计划，每周7天，每天可设8个时间段。不在范围内的时间，默认定时智能跟踪关闭
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCHEDULE_DAYTIME

定时切换时间参数结构体。

struct{
  NET_DVR_DAYTIME    struStartTime;
  NET_DVR_DAYTIME    struStopTime;
}NET_DVR_SCHEDULE_DAYTIME, *LPNET_DVR_SCHEDULE_DAYTIME;

Members

struStartTime
开始时间
struStopTime
结束时间


NET_DVR_SCREEN_BASE_INFO

屏幕基本信息联合体。

union{
  BYTE                   byScreenAddress[MAX_SCREEN_ADDRESS_LEN];
  NET_DVR_DEV_IP_INFO    struIPInfo;
  BYTE                   byRes[100];
}NET_DVR_SCREEN_BASE_INFO,*LPNET_DVR_SCREEN_BASE_INFO;

Members

byScreenAddress
屏幕特征码，设备添加方式(byDevAddType)为0时有效
struIPInfo
屏幕IP地址信息，设备添加方式(byDevAddType)为1时有效
byRes
联合体大小，100字节

See Also

NET_DVR_SCREEN_INDEX_CFG


NET_DVR_SCREEN_CONTROL

屏幕控制结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwCommand;
  BYTE                             byProtocol;
  BYTE                             byRes1[3];
  NET_DVR_SCREEN_CONTROL_PARAM     struControlParam;
  BYTE                             byRes2[52];
}NET_DVR_SCREEN_CONTROL, *LPNET_DVR_SCREEN_CONTROL;

Members

dwSize
结构体大小
dwCommand
控制方法：1- 开，2- 关，3- 屏幕输入源选择，4- 显示单元颜色控制，5- 显示单元位置控制
byProtocol
屏幕串口协议：1-LCD-S1，2-LCD-S2，3-LCD-L1，4-LCD-DLP，5-LCD-S3，6-LCD-H1
byRes1
保留，置为0
struControlParam
屏幕控制参数
byRes2
保留，置为0

Remarks

协议类型 | 支持的输入口 | 颜色调整 | 位置调整 | 开、关机 | 备注
LCD-S1 | VGA、YPBPR、DVI、BNC、DVI_LOOP、BNC_LOOP，不支持SVIDEO、HDMI | 亮度、对比度、饱和度、清晰度 | 不支持 | 开机、关机（区域范围要求选择所有屏幕） | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
LCD-S2 | VGA、SVIDEO、YPBPR、DVI、BNC，不支持DVI_LOOP、BNC_LOOP、HDMI | 亮度、对比度、饱和度、清晰度，VGA、YPBPR和DVI不支持饱和度和清晰度调整 | 水平位置、垂直位置，VGA和YPBPR输入不支持位置调整 | 开机、关机 | LCD-S2屏幕选择输入类型不同进行颜色调整/位置调整协议也不相同，必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
LCD-L1 | VGA、SVIDEO、YPBPR、DVI、BNC、HDMI，不支持DVI_LOOP、BNC_LOOP | 亮度、对比度、饱和度、清晰度，VGA、DVI和HDMI输入不支持饱和度和清晰度调整 | VGA支持水平位置和垂直位置调整，其他输入口不支持 | 开机、关机 | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
DLP | VGA、YPBPR、DVI、BNC，不支持DVI_LOOP、BNC_LOOP、SVIDEO、HDMI | 亮度、对比度 | 水平位置、垂直位置 | 开机、关机 | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
LCD-S3 | / | / | / | / | /
LCD-H1 | VGA、YPBPR、DVI、BNC、HDMI | 亮度、对比度、饱和度、清晰度，VGA输入不支持饱和度和清晰度调整 | 只有VGA输入支持位置调整，其余输入不支持位置调整 | 开机、关机 | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败

See Also

NET_DVR_ScreenCtrl


NET_DVR_SCREEN_CONTROL_PARAM

屏幕控制参数联合体。

union{
  NET_DVR_INPUT_INTERFACE_CTRL     struInputCtrl;
  NET_DVR_DISPLAY_COLOR_CTRL       struDisplayCtrl;
  NET_DVR_DISPLAY_POSITION_CTRL    struPositionCtrl;
  NET_DVR_SIMULATE_REMOTE_CTRL     struSimulateRemoteCrtl;
  NET_DVR_SCREEN_WALL_CTRL         struScreenWallCtrl;
  NET_DVR_AREA_ZOOM_CFG            struZoomArea;
  BYTE                             byRes[16];
}NET_DVR_SCREEN_CONTROL_PARAM,*LPNET_DVR_SCREEN_CONTROL_PARAM;

Members

struInputCtrl
输入接口控制（dwCommand为3时有效）
struDisplayCtrl
显示单元颜色控制（dwCommand为4时有效）
struPositionCtrl
显示单元位置控制（dwCommand为5时有效）
struSimulateRemoteCrtl
模拟遥控按键（dwCommand为6时有效）
struScreenWallCtrl
屏幕维墙参数（dwCommand为9时有效）
struZoomArea
区域放大还原参数（dwCommand为13时有效）
byRes
保留

See Also

NET_DVR_SCREEN_CONTROL_V41 NET_DVR_SCREEN_CONTROL


NET_DVR_SCREEN_CONTROL_V41

屏幕控制结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byRes[3];
  BYTE                             byProtocol;
  DWORD                            dwCommand;
  NET_DVR_SCREEN_CONTROL_PARAM     struControlParam;
  BYTE                             byWallNo;
  BYTE                             byRes1[3];
  NET_DVR_RECTCFG_EX               struRect;
  BYTE                             byRes2[28];
}NET_DVR_SCREEN_CONTROL_V41, *LPNET_DVR_SCREEN_CONTROL_V41;

Members

dwSize
结构体大小
byRes
保留，置为0
byProtocol
串口协议类型：1-LCD-S1，2-LCD-S2，3-LCD-L1，4-LCD-DLP，5-LCD-S3，6-LCD-H1，7-LCD-L2，8-LCD-Z1，9-LCD-D20/D，10-LCD-D20/S，11-LCD-D20/P，12-LCD-D20/T，13-LCD-D20/F，14-LCD-D20/DF，15-LCD-D20/FS，16-LCD-D20/FP，17-LCD-D20/FT，18-LCD-D5022，19-LCD-D5032，20-LCD-D5042+，0xff-无效(使用预先绑定的协议类型)
dwCommand
控制方法：1-开，2-关，3-屏幕输入源选择，4-显示单元颜色控制，5-显示单元位置控制，6-模拟遥控按键，7-显示屏幕状态，8-显示屏幕特征码（此命令矩形区域起始坐标设为(0,0)，宽高均设为0xffffffff），9-屏幕维墙，10-恢复屏幕默认参数，11-显示IP（此命令矩形区域起始坐标设为(0,0)，宽高均设为0xffffffff），12-屏幕USB升级，13-区域放大还原
struControlParam
屏幕控制参数，dwCommand为3、4、5、6、9、13时有效
byWallNo
电视墙号
byRes1
保留，置为0
struRect
控制范围：根据坐标进行计算控制的屏幕，比如，基准坐标为(1920,1920)，若同时控制左上角4个屏幕，则坐标参数是(0,0,1920*2,1920*2)
byRes2
保留，置为0

Remarks

  • 对于LCD拼接屏（屏幕服务器），支持的功能可以通过NET_DVR_GetDeviceAbility（能力集类型：LCD_SCREEN_ABILITY）获取。
  • 对于多屏控制器，各款屏幕支持的功能如下所示：
协议类型 | 支持的输入口 | 颜色调整 | 位置调整 | 开、关机 | 备注
LCD-S1 | VGA、YPBPR、DVI、BNC、DVI_LOOP、BNC_LOOP，不支持SVIDEO、HDMI | 亮度、对比度、饱和度、清晰度 | 不支持 | 开机、关机（区域范围要求选择所有屏幕） | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
LCD-S2 | VGA、SVIDEO、YPBPR、DVI、BNC，不支持DVI_LOOP、BNC_LOOP、HDMI | 亮度、对比度、饱和度、清晰度，VGA、YPBPR和DVI不支持饱和度和清晰度调整 | 水平位置、垂直位置，VGA和YPBPR输入不支持位置调整 | 开机、关机 | LCD-S2屏幕选择输入类型不同进行颜色调整/位置调整协议也不相同，必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
LCD-L1 | VGA、SVIDEO、YPBPR、DVI、BNC、HDMI，不支持DVI_LOOP、BNC_LOOP | 亮度、对比度、饱和度、清晰度，VGA、DVI和HDMI输入不支持饱和度和清晰度调整 | VGA支持水平位置和垂直位置调整，其他输入口不支持 | 开机、关机 | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
DLP | VGA、YPBPR、DVI、BNC，不支持DVI_LOOP、BNC_LOOP、SVIDEO、HDMI | 亮度、对比度 | 水平位置、垂直位置 | 开机、关机 | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败
LCD-S3 | / | / | / | / | /
LCD-H1 | VGA、YPBPR、DVI、BNC、HDMI | 亮度、对比度、饱和度、清晰度，VGA输入不支持饱和度和清晰度调整 | 只有VGA输入支持位置调整，其余输入不支持位置调整 | 开机、关机 | 必须先选择输入类型再进行颜色调整或位置调整，否则可能会失败

See Also

LCD拼接屏：NET_DVR_RemoteControl


NET_DVR_SCREEN_DISPLAY_CFG

显示参数配置结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byCfgType;
  BYTE                             byBackLight;
  BYTE                             byRes1[2];
  NET_DVR_VIDEO_OUT_CFG            struVideoOutCfg;
  NET_DVR_COLOR_TEMPERATURE_CFG    struColorTempCfg;
  NET_DVR_ADC_CFG                  struAdcCfg;
  NET_DVR_SCREEN_EDGE_CFG          struScreenEdgeCfg;
  BYTE                             byRes[32];
}NET_DVR_SCREEN_DISPLAY_CFG,*LPNET_DVR_SCREEN_DISPLAY_CFG;

Members

dwSize
结构体大小
byCfgType
设置的参数类型（获取时此参数无效）：0-无效，1-背光参数，2-视频参数，3-色温参数，4-ADC参数，5-屏幕边缘参数
byBackLight
背光参数，取值范围：0~100
byRes1
保留，置为0
struVideoOutCfg
视频参数
struColorTempCfg
色温参数
struAdcCfg
ADC参数
struScreenEdgeCfg
屏幕边缘参数
byRes
保留，置为0

Remarks

显示参数：背光参数、视频参数、色温参数、ADC参数、屏幕边缘参数，一次只能设置其中一种参数，例如：byCfgType=1时，只需赋值背光参数(byBackLight)，而其它参数无效。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCREEN_EDGE_CFG

屏幕边缘参数结构体。

struct{
  BYTE    byEnable;
  BYTE    byLeftEdge;
  BYTE    byRightEdge;
  BYTE    byTopEdge;
  BYTE    byLowerEdge;
  BYTE    byRes[7];
}NET_DVR_SCREEN_EDGE_CFG,*LPNET_DVR_SCREEN_EDGE_CFG;

Members

byEnable
是否启用屏幕边缘：0-不启用，1-启用
byLeftEdge
左边缘，取值范围：0~100
byRightEdge
右边缘，取值范围：0~100
byTopEdge
上边缘，取值范围：0~100
byLowerEdge
下边缘，取值范围：0~100
byRes
保留，置为0

See Also

NET_DVR_SCREEN_DISPLAY_CFG NET_DVR_MSC_SCREEN_PARAM


NET_DVR_SCREEN_FAN_WORK_MODE_CFG

风扇工作方式配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byWorkMode;
  BYTE     byTemperatureLimitValue;
  BYTE     byRes[14];
}NET_DVR_SCREEN_FAN_WORK_MODE_CFG,*LPNET_DVR_SCREEN_FAN_WORK_MODE_CFG;

Members

dwSize
结构体大小
byWorkMode
风扇工作方式：1-常开，2-自动
byTemperatureLimitValue
风扇开启的温度阀值（工作模式为自动时该参数有效），取值范围：0~100，单位：摄氏度
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_SCREEN_INDEX_CFG

屏幕索引相关参数配置结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnbale;
  BYTE                        byDevAddType;
  BYTE                        byRes1[2];
  NET_DVR_SCREEN_BASE_INFO    struScreenBaseInfo;
  BYTE                        byRes[32];
}NET_DVR_SCREEN_INDEX_CFG, *LPNET_DVR_SCREEN_INDEX_CFG;

Members

dwSize
结构体大小
byEnbale
使能：0- 不使能，1- 使能
byDevAddType
设备添加方式：0- 按特征码(服务器和屏幕使用串口通信)，1- 按IP地址(服务器和屏幕使用网络通信)
byRes1
保留，置为0
struScreenBaseInfo
屏幕设备基本信息
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SCREEN_MENU_CFG

屏幕菜单配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byMenuLanguage;
  BYTE     byTransparency;
  BYTE     byDuration;
  BYTE     byRes[13];
}NET_DVR_SCREEN_MENU_CFG,*LPNET_DVR_SCREEN_MENU_CFG;

Members

dwSize
结构体大小
byMenuLanguage
语言：1-中文，2-英文
byTransparency
透明度：0-不透明，1-低，2-中，3-高
byDuration
持续时间：0-常开，1-5秒，2-15秒，3-30秒
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_SCREEN_POS_CFG

屏幕位置参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byScreenRowNum;
  BYTE     byScreenColNum;
  BYTE     byRes[34];
}NET_DVR_SCREEN_POS_CFG,*LPNET_DVR_SCREEN_POS_CFG;

Members

dwSize
结构体大小
byScreenRowNum
屏幕在电视墙上的位置，屏幕行号
byScreenColNum
屏幕在电视墙上的位置，屏幕列号
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCREEN_SIGNAL_CFG

屏幕信号源参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySignalSourceType;
  BYTE     byNoSignalPic;
  BYTE     byRes[14];
}NET_DVR_SCREEN_SIGNAL_CFG,*LPNET_DVR_SCREEN_SIGNAL_CFG;

Members

dwSize
结构体大小
bySignalSourceType
信号源索引，定义详见NET_DVR_CAM_MODE
byNoSignalPic
无信号画面：1-蓝屏，2-黑屏，3-LOGO画面
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCREEN_SPLICE_CFG

屏幕拼接参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySpliceIndex;
  BYTE     bySpliceX;
  BYTE     bySpliceY;
  BYTE     byWidth;
  BYTE     byHeight;
  BYTE     byRes[11];
}NET_DVR_SCREEN_SPLICE_CFG,*LPNET_DVR_SCREEN_SPLICE_CFG;

Members

dwSize
结构体大小
bySpliceIndex
自拼接屏号，0就是没有拼接，其他值表示自拼接屏的屏号
bySpliceX
屏幕在自拼接屏中的行位置
bySpliceY
屏幕在自拼接屏中的列位置
byWidth
拼接规模宽，以屏幕宽为单位
byHeight
拼接规模高，以屏幕高为单位
byRes
保留，置为0

Remaks

例如拼接0101、0102、0201、0202这4块屏，则需要分别登录这4个屏然后配置每个屏的拼接参数（这4块屏的bySpliceIndex必须相同且非0）：
屏幕0101：bySpliceIndex=1，bySpliceX=1，bySpliceY=1，byWidth=2，byHeight=2，表示该屏幕位置为1号子拼接屏中第1行，第1列
屏幕0102：bySpliceIndex=1，bySpliceX=1，bySpliceY=2，byWidth=2，byHeight=2，表示该屏幕位置为1号子拼接屏中第1行，第2列
屏幕0201：bySpliceIndex=1，bySpliceX=2，bySpliceY=1，byWidth=2，byHeight=2，表示该屏幕位置为1号子拼接屏中第2行，第1列
屏幕0202：bySpliceIndex=1，bySpliceX=2，bySpliceY=2，byWidth=2，byHeight=2，表示该屏幕位置为1号子拼接屏中第2行，第2列

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SCREEN_SWITCH

画面切换结构体。

struct{
  DWORD    dwSize;
  BYTE     byRes[64];
 }NET_DVR_SCREEN_SWITCH,*LPNET_DVR_SCREEN_SWITCH;

Members

dwSize
结构体大小
struInitialPos
初始坐标
struAdjustPos
调整坐标
byRes
保留，置为0

Remarks

PPT检测参数取值范围可以通过NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO，录播主机能力RecordingHostAbility)获取，对应节点<ScreenSwitch>。

See Also

NET_DVR_SetDVRConfig


NET_DVR_SCREEN_UNION

屏幕信息联合体。

union{
  NET_DVR_DIGITALSCREEN    struDigitalScreen;
  NET_DVR_ANALOGSCREEN     struAnalogScreen;
}NET_DVR_SCREEN_UNION,*LPNET_DVR_SCREEN_UNION;

Members

struDigitalScreen
数字屏幕信息
struAnalogScreen
模拟屏幕信息

See Also

NET_DVR_SCREEN_SCREENINFO


NET_DVR_SCREEN_VGA_CFG

VGA信号配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableAutoAdjust;
  BYTE     byHorizontalPosition;
  BYTE     byVerticalPosition;
  BYTE     byClock;
  BYTE     byPhase;
  BYTE     byRes[11];
}NET_DVR_SCREEN_VGA_CFG,*LPNET_DVR_SCREEN_VGA_CFG;

Members

dwSize
结构体大小
byEnableAutoAdjust
是否自动调整：0-否，1-是，当自动调整启用时以下参数无效
byHorizontalPosition
水平位置，取值范围：0~100
byVerticalPosition
垂直位置，取值范围：0~100
byClock
时钟，取值范围：0~100
byPhase
相位，取值范围：0~100
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_SCREEN_WALL_CFG

屏幕维墙参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[35];
}NET_DVR_SCREEN_WALL_CFG,*LPNET_DVR_SCREEN_WALL_CFG;

Members

dwSize
结构体大小
byEnable
开关：0-为关闭，1-为开启
byRes1
保留，置为0

Remarks

屏幕围墙功能：屏幕安装在一个结构上，结构可以电动控制将屏幕推出来，然后进行维护，之后再电动控制将屏幕推进去，利于节省占用空间。

See Also

NET_DVR_RemoteControl


NET_DVR_SCREEN_WALL_CTRL

屏幕维墙参数结构体。

union{
  BYTE    byEnable;
  BYTE    byRes[15];
}NET_DVR_SCREEN_WALL_CTRL,*LPNET_DVR_SCREEN_WALL_CTRL;

Members

byEnable
屏幕维墙状态开关：0- 关闭，1- 开启
byRes
保留，置为0

See Also

NET_DVR_SCREEN_CONTROL_PARAM


NET_DVR_SCREEN_WINCFG

窗口信息结构体。

struct{
  DWORD              dwSize;
  BYTE               byVaild;
  BYTE               byInputType;
  WORD               wInputIdx;
  DWORD              dwLayerIdx;
  NET_DVR_RECTCFG    struWin;
  BYTE               byWndIndex;
  BYTE               byCBD;
  BYTE               bySubWnd;
  BYTE               byRes1;
  DWORD              dwDeviceIndex;
  BYTE               byRes2[16];
}NET_DVR_SCREEN_WINCFG, *LPNET_DVR_SCREEN_WINCFG;

Members

dwSize
结构体大小
byVaild
是否有效：0－无效，1－有效
byInputType
信号输入源类型，定义详见NET_DVR_CAM_MODE
wInputIdx
输入源索引
dwLayerIdx
图层，0为最底层，只能获取
struWin
目的窗口(相对显示墙)
byWndIndex
窗口号
byCBD
是否带背景：0- 无，1- 带背景，2- 不带背景
bySubWnd
是否子窗口: 0-不是，1-是
byRes1
保留参数
dwDeviceIndex
设备序号
byRes2
保留参数

See Also

NET_DVR_LAYOUTCFG


NET_DVR_SCREEN_WORK_STATE

屏幕工作状态参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byFanStatus;
  BYTE     byFanExceptionStatus;
  BYTE     byRes1[2];
  DWORD    dwWorkingHours;
  BYTE     byVersion[VERSION_LEN];
  int      iTemperature;
  BYTE     byRes[32];
}NET_DVR_SCREEN_WORK_STATE,*LPNET_DVR_SCREEN_WORK_STATE;

Members

dwSize
结构体大小
byFanStatus
风扇状态：0- 关闭，1- 开启
byFanExceptionStatus
风扇异常状态：0- 不支持，1- 正常，2- 异常
byRes1
保留，置为0
dwWorkingHours
累积工作时长，单位：小时
byVersion
软件版本号
iTemperature
板卡温度，精确到个位，单位：摄氏度
byRes
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM


NET_DVR_SCREENALARMCFG

多屏控制器报警信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byAlarmType;
  BYTE     byBoardType;
  BYTE     bySubException;
  BYTE     byRes1;
  WORD     wStartInputNum;
  WORD     wEndInputNum;
  BYTE     byRes2[16];
}NET_DVR_SCREENALARMCFG, *LPNET_DVR_SCREENALARMCFG;

Members

dwSize
结构体大小
byAlarmType
报警类型：1- 子板拔出，2- 子板插入，3- 子系统状态异常，4- 子系统恢复正常，5- 输入源异常，6-温度报警，7- FPGA版本不匹配， 8- 预案开始，9- 预案结束，10- 解码板断网，11- 解码板IP地址冲突，12- 风扇异常
byBoardType
1- 输入板，2- 输出板，3- 主板，4- 背板。报警类型为1、2、3时，byBoardType只能是1或2，报警类型为6时，byBoardType为3或4。
bySubException
输入异常时具体子异常：1- 分辨率改变；2- 接口改变；3- 分辨率错误；4- 分辨率改变导致解码资源不足，关闭该输入源对应窗口； 5- 分辨率改变，导致已开窗的缩放比例不在1/8到8倍范围；6- 分辨率恢复正常；7- 分辨率改变导致输出板数据量超限，设备关闭窗口
byRes1
保留，置为0
wStartInputNum
异常输入源（异常起点）
wEndInputNum
异常输入源（异常终点）
byRes2
保留，置为0

Remarks

发生子异常的时候，由设备关闭窗口，客户端不需要再调用关闭窗口的接口，只需要重新刷新一下窗口列表。

C10H的开窗缩放比例在1/8~8倍的信号源分辨率；C10S的开窗缩放比例在1/8~16倍的信号源分辨率。

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_SCREENCONTROL_ABILITY

多屏控制器能力参数结构体。

struct{
  DWORD                dwSize;
  BYTE                 byLayoutNum;
  BYTE                 byWinNum;
  BYTE                 byOsdNum;
  BYTE                 byLogoNum;
  BYTE                 byInputStreamNum;
  BYTE                 byOutputChanNum;
  BYTE                 byCamGroupNum;
  BYTE                 byPlanNum;
  BYTE                 byRes1[5];
  BYTE                 byIsSupportPlayBack;
  BYTE                 byMatrixInputNum;
  BYTE                 byMatrixOutputNum;
  NET_DVR_DISPINFO     struVgaInfo;
  NET_DVR_DISPINFO     struBncInfo;
  NET_DVR_DISPINFO     struHdmiInfo;
  NET_DVR_DISPINFO     struDviInfo;
  BYTE                 byMaxUserNums;
  BYTE                 byPicSpan;
  WORD                 wDVCSDevNum;
  WORD                 wNetSignalNum;
  WORD                 wBaseCoordinateX;
  WORD                 wBaseCoordinateY;
  BYTE                 byExternalMatrixNum;
  BYTE                 byRes2[49];
}NET_DVR_SCREENCONTROL_ABILITY, *LPNET_DVR_SCREENCONTROL_ABILITY;

Members

dwSize
结构体大小
byLayoutNum
场景个数
byWinNum
屏幕窗口个数
byOsdNum
虚拟LED个数
byLogoNum
Logo个数
byInputStreamNum
输入源个数，设备支持最大输入通道个数（包括本地输入源和网络输入源）
byOutputChanNum
输出通道个数，设备支持最大输出通道个数
byCamGroupNum
分组个数
byPlanNum
预案个数
byRes1
保留
byIsSupportPlayBack
是否支持回放
byMatrixInputNum
输入源支持最大个数
byMatrixOutputNum
输出源支持最大个数
struVgaInfo
VGA输出信息
struBncInfo
BNC输出信息
struHdmiInfo
HDMI输出信息
struDviInfo
DVI输出信息
byMaxUserNums
支持用户数
byPicSpan
底图跨度，一张底图最多可覆盖的屏幕数
wDVCSDevNum
分布式多屏控制器最大设备数
wNetSignalNum
最大网络输入源个数
wBaseCoordinateX
基准坐标X轴坐标
wBaseCoordinateY
基准坐标Y轴坐标
byExternalMatrixNum
最大外接矩阵个数
byRes2
保留

See Also

NET_DVR_GetDeviceAbility


NET_DVR_SCREENINFO

大屏拼接信息结构体。

struct{
  BYTE      bySupportBigScreenNums;
  BYTE      byStartBigScreenNum;
  BYTE      byMaxScreenX;
  BYTE      byMaxScreenY;
  BYTE      byRes[8];
}NET_DVR_SCREENINFO, *LPNET_DVR_SCREENINFO;

Members

bySupportBigScreenNums
支持的最多大屏拼接数量
byStartBigScreenNum
大屏拼接起始序号
byMaxScreenX
水平方向屏幕个数
byMaxScreenY
垂直方向屏幕个数。大屏拼接模式：byMaxScreenX*byMaxScreenY，例如3*3，共有9块屏幕组成了一个大屏
byRes
保留，置为0

See Also

NET_DVR_MATRIX_ABILITY_V41


NET_DVR_SCREENLIST

显示屏映射关系列表结构体。

struct{
  DWORD    dwSize;
  BYTE     byWallNo;
  BYTE     byRes[11];
  DWORD    dwScreenNums;
  BYTE     *pBuffer;
  DWORD    dwBufLen;
}NET_DVR_SCREENLIST,*LPNET_DVR_SCREENLIST;

Members

dwSize
结构体大小
byWallNo
电视墙号，从1开始
byRes
保留
dwScreenNums
设备返回的映射显示屏数量
pBuffer
显示屏映射关系信息，dwScreenNums*NET_DVR_DISP_SCREEN
dwBufLen
所分配指针长度，输入参数

See Also

NET_DVR_DISP_SCREEN

NET_DVR_GetScreenList


NET_DVR_SCREENZOOM

电子放大参数结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwScreenNum;
  NET_DVR_POINT_FRAME    struPointFrame;
  BYTE                   byLayer;
  BYTE                   byRes[11];
}NET_DVR_SCREENZOOM,*LPNET_DVR_SCREENZOOM;

Members

dwSize
结构体大小
dwScreenNum
大屏号
struPointFrame
区域位置信息
byLayer
图层号
byRes
保留，置为0

See Also

NET_DVR_ScreenZoomIn


NET_DVR_SDKABL

SDK功能信息结构体。

struct{
  DWORD    dwMaxLoginNum;
  DWORD    dwMaxRealPlayNum;
  DWORD    dwMaxPlayBackNum;
  DWORD    dwMaxAlarmChanNum;
  DWORD    dwMaxFormatNum;
  DWORD    dwMaxFileSearchNum;
  DWORD    dwMaxLogSearchNum;
  DWORD    dwMaxSerialNum;
  DWORD    dwMaxUpgradeNum;
  DWORD    dwMaxVoiceComNum;
  DWORD    dwMaxBroadCastNum;
  DWORD    dwRes[10];
}NET_DVR_SDKABL,*LPNET_DVR_SDKABL;

Members

dwMaxLoginNum
最大注册用户数
dwMaxRealPlayNum
最大实时预览的路数
dwMaxPlayBackNum
最大回放或下载的路数
dwMaxAlarmChanNum
最大建立报警通道的路数
dwMaxFormatNum
最大硬盘格式化的路数
dwMaxFileSearchNum
最大文件搜索的路数
dwMaxLogSearchNum
最大日志搜索的路数
dwMaxSerialNum
最大建立透明通道的路数
dwMaxUpgradeNum
最大升级的路数
dwMaxVoiceComNum
最大语音转发的路数
dwMaxBroadCastNum
最大语音广播的路数
dwRes
保留，置为0

Remarks

在Windows64位、linux32/64位系统下不支持语音广播功能，因此dwMaxBroadCastNum为0。

See Also

NET_DVR_GetSDKAbility


NET_DVR_SDKLOCAL_CFG

模拟能力集参数结构体。

struct{
  BYTE    byEnableAbilityParse;
  BYTE    byVoiceComMode;
  BYTE    byRes[510];
}NET_DVR_SDKLOCAL_CFG,*LPNET_DVR_SDKLOCAL_CFG;

Members

byEnableAbilityParse
使用能力集解析库：0- 不使用，1- 使用，默认不使用
byVoiceComMode
对讲模式：0- 使用对讲库（默认），1- 使用windows api模式
byRes
保留

See Also

NET_DVR_GetSDKLocalConfig NET_DVR_SetSDKLocalConfig


NET_DVR_SDKSTATE

SDK状态信息结构体。

struct{
  DWORD     dwTotalLoginNum;
  DWORD     dwTotalRealPlayNum;
  DWORD     dwTotalPlayBackNum;
  DWORD     dwTotalAlarmChanNum;
  DWORD     dwTotalFormatNum;
  DWORD     dwTotalFileSearchNum;
  DWORD     dwTotalLogSearchNum;
  DWORD     dwTotalSerialNum;
  DWORD     dwTotalUpgradeNum;
  DWORD     dwTotalVoiceComNum;
  DWORD     dwTotalBroadCastNum;
  DWORD     dwRes[10];
}NET_DVR_SDKSTATE,*LPNET_DVR_SDKSTATE;

Members

dwTotalLoginNum
当前注册的用户数
dwTotalRealPlayNum
当前实时预览的路数
dwTotalPlayBackNum
当前回放或下载的路数
dwTotalAlarmChanNum
当前建立报警通道的路数
dwTotalFormatNum
当前硬盘格式化的路数
dwTotalFileSearchNum
当前文件搜索的路数
dwTotalLogSearchNum
当前日志搜索的路数
dwTotalSerialNum
当前建立透明通道的路数
dwTotalUpgradeNum
当前升级的路数
dwTotalVoiceComNum
当前语音转发的路数
dwTotalBroadCastNum
当前语音广播的路数
dwRes
保留，置为0

See Also

NET_DVR_GetSDKState


NET_DVR_SEARCH_CONDITION

历史数据信息结构体。

struct{
  DWORD           dwSize;
  BYTE            byMajorType;
  BYTE            byMinorType;
  BYTE            byRes1[2];
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struStopTime;
  BYTE            byChanType;
  BYTE            byRes2[3];
  DWORD           dwChanNo;
  DWORD           dwSubChanNo;
  DWORD           dwVariableNo;
  DWORD           dwPointNo;
  BYTE            byRes3[32];
}NET_DVR_SEARCH_CONDITION, *LPNET_DVR_SEARCH_CONDITION;

Members

dwSize
结构体大小
byMajorType
查询主类型：1-全部，2-按时间，3-按类型，4-按时间和类型
byMinorType
次类型：1-点号，2-通道+槽位+变量号
byRes1
保留，置为0
struStartTime
起始时间
struStopTime
结束时间
byChanType
通道类型：1-模块量，2-485通道，0xff表示无效
byRes2
保留，置为0
dwChanNo
通道号，从1开始，0xffffffff表示无效
dwSubChanNo
槽位号，从1开始，0xffffffff表示无效
dwVariableNo
变量号，从1开始，0xffffffff表示无效
dwPointNo
点号，0xffffffff表示无效
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_SEARCH_EVENT_PARAM

按事件搜索的条件参数结构体。

struct{
  WORD             wMajorType;
  WORD             wMinorType;
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struEndTime;
  BYTE             byLockType;
  BYTE             byValue;
  BYTE             byRes[130];
  union{
           BYTE    byLen[SEARCH_EVENT_INFO_LEN];
           struct{
           BYTE    byAlarmInNo[MAX_ALARMIN_V30];
           BYTE    byRes[SEARCH_EVENT_INFO_LEN - MAX_ALARMIN_V30];
           }struAlarmParam;

           struct{
           WORD    wAlarmInNo[128];
           BYTE    byRes[44];
           }struAlarmParamByValue;

           struct{
           BYTE    byMotDetChanNo[MAX_CHANNUM_V30];
           BYTE    byRes[SEARCH_EVENT_INFO_LEN - MAX_CHANNUM_V30];
           }struMotionParam;

           struct{
           WORD    wMotDetChanNo[64];
           BYTE    byRes[172];
           }struMotionParamByValue;

           struct{
           BYTE    byChanNo[MAX_CHANNUM_V30];
           BYTE    byRuleID;
           BYTE    byRes1[43];
           }struVcaParam;

           struct{
           WORD    wChanNo[64];
           BYTE    byRuleID;
           BYTE    byRes[171];
           }struVcaParamByValue;

           struct{
           BYTE    byRoomIndex;
           BYTE    byRes[299];
           }struInquestParam;

           struct{
           BYTE    byChan[256];
           }struVCADetectByBit;

           struct{
           DWORD   dwChanNo[MAX_CHANNUM_V30-1];
           BYTE    byAll;
           BYTE    byRes[3];
           }struVCADetectByValue;

           struct{
           NET_DVR_STREAM_INFO   struIDInfo;
           DWORD                 dwCmdType;
           BYTE                  byBackupVolumeNum;
           BYTE                  byRes[223];
           }struStreamIDParam;

           struct{
           BYTE                  byCaseNo[SEARCH_CASE_NO_LEN];
           BYTE                  byCaseName[SEARCH_CASE_NAME_LEN];
           BYTE                  byLitigant1[SEARCH_LITIGANT_LEN];
           BYTE                  byLitigant2[SEARCH_LITIGANT_LEN];
           BYTE                  byChiefJudge[SEARCH_CHIEF_JUDGE_LEN];
           BYTE                  byCaseType;
           BYTE                  byRes[47];
           }struTrialParam;
  }uSeniorParam;
}NET_DVR_SEARCH_EVENT_PARAM,*LPNET_DVR_SEARCH_EVENT_PARAM;

Members

wMajorType
搜索主类型，具体定义见下表：
enum _MAIN_EVENT_TYPE_{
  EVENT_MOT_DET        = 0,
  EVENT_ALARM_IN       = 1,
  EVENT_VCA_BEHAVIOR   = 2,
  EVENT_INQUEST        = 3,
  EVENT_VCA_DETECTION  = 4,
  EVENT_TRIAL_CASE     = 6,
  EVENT_STREAM_INFO    = 100
}MAIN_EVENT_TYPE
EVENT_MOT_DET
移动侦测
EVENT_ALARM_IN
报警输入
EVENT_VCA_BEHAVIOR
异常行为识别
EVENT_INQUEST
审讯事件
EVENT_VCA_DETECTION
智能侦测
EVENT_TRIAL_CASE
庭审案件信息
EVENT_STREAM_INFO
流ID信息
wMinorType
搜索次类型，根据主类型变化，0xffff表示全部。移动侦测和报警输入没有次类型，直接设置为0xffff。其他主类型对应的次类型见下表：
主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_BEHAVIOR | 2 | 异常行为识别
次类型宏定义 | 宏定义值 | 含义
EVENT_TRAVERSE_PLANE | 0 | 穿越警戒面
EVENT_ENTER_AREA | 1 | 目标进入区域，支持区域规则
EVENT_EXIT_AREA | 2 | 目标离开区域，支持区域规则
EVENT_INTRUSION | 3 | 周界入侵，支持区域规则
EVENT_LOITER | 4 | 徘徊，支持区域规则
EVENT_LEFT_TAKE | 5 | 丢包捡包，支持区域规则
EVENT_PARKING | 6 | 停车，支持区域规则
EVENT_RUN | 7 | 奔跑，支持区域规则
EVENT_HIGH_DENSITY | 8 | 区域内人员密度，支持区域规则
EVENT_STICK_UP | 9 | 贴纸条，支持区域规则
EVENT_INSTALL_SCANNER | 10 | 安装读卡器，支持区域规则
EVENT_OPERATE_OVER_TIME | 11 | 操作超时
EVENT_FACE_DETECT | 12 | 异常人脸
EVENT_LEFT | 13 | 物品遗留
EVENT_TAKE | 14 | 物品拿取
EVENT_LEAVE_POSITION | 15 | 离岗事件
EVENT_TRAIL_INFO | 16 | 尾随
EVENT_FALL_DOWN_INFO | 19 | 倒地
EVENT_OBJECT_PASTE | 20 | 异物粘贴区域
EVENT_FACE_CAPTURE_INFO | 21 | 正常人脸
EVENT_MULTI_FACES_INFO | 22 | 多张人脸
EVENT_AUDIO_ABNORMAL_INFO | 23 | 声强突变
EVENT_SUNGLASSES_FACE_INFO | 25 | 戴墨镜人脸
EVENT_CALLING_FACE_INFO | 26 | 打电话人脸

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_INQUEST | 3 | 审讯事件
次类型宏定义 | 宏定义值 | 含义
INQUEST_START_INFO | 0x1001 | 审讯开始信息
INQUEST_STOP_INFO | 0x1002 | 审讯停止信息
INQUEST_TAG_INFO | 0x1003 | 重点标记信息
INQUEST_SEGMENT_INFO | 0x1004 | 审讯片断状态信息

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_DETECTION | 4 | 智能侦测
次类型宏定义 | 宏定义值 | 含义
EVENT_VCA_TRAVERSE_PLANE | 1 | 越界侦测
EVENT_FIELD_DETECTION | 2 | 区域入侵侦测
EVENT_AUDIO_INPUT_ALARM | 3 | 音频丢失侦测
EVENT_SOUND_INTENSITY_ALARM | 4 | 声强突变侦测（声强陡升侦测、声强陡降侦测）
EVENT_FACE_DETECTION | 5 | 人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM | 6 | 虚焦侦测
EVENT_SCENE_CHANGE_ALARM | 7 | 场景变更侦测
EVENT_PIR_ALARM | 8 | PIR报警

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_STREAM_INFO | 100 | 流ID信息
次类型宏定义 | 宏定义值 | 含义
EVENT_STREAM_ID | 0 | 流ID
EVENT_TIMING | 1 | 定时录像
EVENT_MOTION_DETECT | 2 | 移动侦测
EVENT_ALARM | 3 | 报警录像
EVENT_ALARM_OR_MOTION_DETECT | 4 | 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT | 5 | 报警和移动侦测
EVENT_COMMAND_TRIGGER | 6 | 命令触发
EVENT_MANNUAL | 7 | 手动录像
EVENT_BACKUP_VOLUME | 8 | 存档卷录像

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_TRIAL_CASE | 5 | 庭审信息
次类型宏定义 | 宏定义值 | 含义
TRIAL_START_INFO | 0x1001 | 庭审开始事件
TRIAL_STOP_INFO | 0x1002 | 庭审结束事件
TRIAL_TAG_INFO | 0x1003 | 庭审重点标注事件
TRIAL_SEGMENT_INFO | 0x1004 | 庭审片段状态信息
TRIAL_JUDGE_CASE_INFO | 0x1005 | 庭审案件信息
struStartTime
搜索的开始时间
struEndTime
搜索的停止时间
byLockType
是否锁定：0xff- 全部，0- 未锁，1- 锁定
byValue
按值的方式设置：0-按位表示，1-按值表示，该参数与搜索主类型和搜索次类型联合使用决定使用联合体中的具体结构体
例如，wMajorType为0（移动侦测，没有次类型，wMinorType=0xffff）：如果byValue==0，则联合体uSeniorParam里struMotionParam有效，数组下标表示通道号；如果byValue==1，则联合体uSeniorParam里struMotionParamByValue有效，数组元素值即表示通道号
byRes
保留，置为0
uSeniorParam结构为事件搜索参数联合体
byLen
联合体大小，300字节
struAlarmParam结构为按位表示时的报警输入参数
byAlarmInNo
报警输入号，byAlarmInNo[0]==1表示查找由报警输入1触发的事件，byAlarmInNo[1]==1表示查找由报警输入2触发的事件，依次类推
byRes
保留，置为0
struAlarmParamByValue结构为按值表示时的报警输入参数
wAlarmInNo
报警输入号，按值表示，采用紧凑型排列，例如wAlarmInNo[0]==1&&wAlarmInNo[1]==2表示查找由报警输入1和报警输入2触发的事件
byRes
保留，置为0
struMotionParam结构为按位表示时的移动侦测参数
byMotDetChanNo
移动侦测通道，byMotDetChanNo[0]==1表示查找由通道1发生移动侦测触发的事件，byMotDetChanNo[1]==1表示查找由通道2发生移动侦测触发的事件，依次类推
byRes
保留，置为0
struMotionParamByValue结构为按值表示时的移动侦测参数
wMotDetChanNo
设备通道号，按值表示，采用紧凑型排列，例如wMotDetChanNo[0]==1&&wMotDetChanNo[1]==2表示查找通道1和通道2发生移动侦测触发的事件
byRes
保留，置为0
struVcaParam结构为按位表示时的异常行为识别参数
byChanNo
触发事件的通道，byChanNo[0]==1表示查找由通道1发生异常行为识别触发的事件，byChanNo[1]==1表示查找由通道2发生异常行为识别触发的事件，依次类推
byRuleID
规则ID，0xff表示全部
byRes1
保留，置为0
struVcaParamByValue结构为按值表示时的异常行为识别参数
wChanNo
异常行为识别对应的通道，按值表示，采用紧凑型排列，例如wChanNo[0]==1&&wChanNo[1]==2表示查找通道1和通道2发生异常行为识别触发的事件
byRuleID
规则ID，0xff表示全部
byRes
保留，置为0
struInquestParam结构为审讯事件参数
byRoomIndex
审讯室编号，从1开始
byRes
保留，置为0
struVCADetectByBit结构为按位表示时的智能侦测参数
byChan
触发智能侦测的通道，byChan[0]==1表示查找通道1发生的智能侦测事件，byChan[1]==1表示查找通道2发生的智能侦测事件，依次类推
struVCADetectByValue结构为按值表示时的智能侦测参数
dwChanNo
智能侦测对应的通道，按值表示，采用紧凑型排列，dwChanNo[0]==1&&dwChanNo[1]==2表示查找通道1和通道2的智能侦测事件
byAll
0- 按具体给出的通道号查找，1- 查找全部通道
byRes
保留，置为0
struStreamIDParam结构为流ID参数
struIDInfo
流ID信息，72字节长
dwCmdType
外部触发类型，NVR接入云存储使用
byBackupVolumeNum
存档卷号，适用于CVR设备
byRes
保留，置为0
struTrialParam结构为庭审信息查询条件
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byCaseType
案件类型：0- 全部，1- 刑事案件，2- 民事案件
byRes
保留，置为0

See Also

NET_DVR_FindFileByEvent


NET_DVR_SEARCH_EVENT_PARAM_V40

按事件搜索的条件参数结构体。

struct{
  WORD             wMajorType;
  WORD             wMinorType;
  NET_DVR_TIME     struStartTime;
  NET_DVR_TIME     struEndTime;
  BYTE             byLockType;
  BYTE             byQuickSearch;
  BYTE             byRes[130];
  union{
           BYTE                  byLen[SEARCH_EVENT_INFO_LEN_V40];

           struct{
           WORD                  wAlarmInNo[128];
           BYTE                  byRes[544];
           }struAlarmParam;

           struct{
           WORD                  wMotDetChanNo[MAX_CHANNUM_V30];
           BYTE                  byRes[672];
           }struMotionParam;

           struct{
           WORD                  wChanNo[MAX_CHANNUM_V30];
           BYTE                  byRuleID;
           BYTE                  byRes[671];
           }struVcaParam;

           struct{
           BYTE                  byRoomIndex;
           BYTE                  byRes[799];
           }struInquestParam;

           struct{
           BYTE                  byAll;
           BYTE                  byRes1[3];
           WORD                  wChanNo[MAX_CHANNUM_V30];
           BYTE                  byRes1[3];
           }struVCADetect;

           struct{
           NET_DVR_STREAM_INFO   struIDInfo;
           DWORD                 dwCmdType;
           BYTE                  byBackupVolumeNum;
           BYTE                  byRes1[3];
           BYTE                  byArchiveLabel[64];
           BYTE                  byRes[656];
           }struStreamIDParam;

           struct{
           BYTE                  byCaseNo[SEARCH_CASE_NO_LEN];
           BYTE                  byCaseName[SEARCH_CASE_NAME_LEN];
           BYTE                  byLitigant1[SEARCH_LITIGANT_LEN];
           BYTE                  byLitigant2[SEARCH_LITIGANT_LEN];
           BYTE                  byChiefJudge[SEARCH_CHIEF_JUDGE_LEN];
           BYTE                  byCaseType;
           BYTE                  byRes[547];
           }struTrialParam;

           struct{
           WORD                  wChannel[MAX_CHANNUM_V30];
           BYTE                  byAllChan;
           BYTE                  byCaseSensitive;
           BYTE                  byCombinateMode;
           BYTE                  byRes1;
           char                  sKeyWord[MAX_POS_KEYWORDS_NUM][MAX_POS_KEYWORD_LEN];
           BYTE                  byRes[284];
           }struPosAlarm;

           struct{
           DWORD                  dwMajor;
           DWORD                  dwMinor;
           BYTE                   byCardNo[ACS_CARD_NO_LEN];
           BYTE                   byName[NAME_LEN];
           BYTE                   byMACAddr[MACADDR_LEN];
           BYTE                   byRes[722];
           }struACSAlarm;

  }uSeniorParam;
}NET_DVR_SEARCH_EVENT_PARAM_V40,*LPNET_DVR_SEARCH_EVENT_PARAM_V40;

Members

wMajorType
搜索主类型，具体定义见下表：
enum _MAIN_EVENT_TYPE_{
  EVENT_MOT_DET        = 0,
  EVENT_ALARM_IN       = 1,
  EVENT_VCA_BEHAVIOR   = 2,
  EVENT_INQUEST        = 3,
  EVENT_VCA_DETECTION  = 4,
  EVENT_POS            = 5,
  EVENT_TRIAL_CASE     = 6,
  EVENT_ACS_CASE       = 7,
  EVENT_STREAM_INFO    = 100
}MAIN_EVENT_TYPE
EVENT_MOT_DET
移动侦测
EVENT_ALARM_IN
报警输入
EVENT_VCA_BEHAVIOR
异常行为识别
EVENT_INQUEST
审讯事件
EVENT_VCA_DETECTION
智能侦测
EVENT_POS
POS录像
EVENT_TRIAL_CASE
庭审案件信息
EVENT_ACS_CASE
门禁事件
EVENT_STREAM_INFO
流ID信息
wMinorType
搜索次类型，根据主类型变化，0xffff表示全部。移动侦测、报警输入和POS录像没有次类型，直接设置为0xffff。其他主类型对应的次类型见下表：
主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_BEHAVIOR | 2 | 异常行为识别
次类型宏定义 | 宏定义值 | 含义
EVENT_TRAVERSE_PLANE | 0 | 穿越警戒面
EVENT_ENTER_AREA | 1 | 目标进入区域，支持区域规则
EVENT_EXIT_AREA | 2 | 目标离开区域，支持区域规则
EVENT_INTRUSION | 3 | 周界入侵，支持区域规则
EVENT_LOITER | 4 | 徘徊，支持区域规则
EVENT_LEFT_TAKE | 5 | 丢包捡包，支持区域规则
EVENT_PARKING | 6 | 停车，支持区域规则
EVENT_RUN | 7 | 奔跑，支持区域规则
EVENT_HIGH_DENSITY | 8 | 区域内人员密度，支持区域规则
EVENT_STICK_UP | 9 | 贴纸条，支持区域规则
EVENT_INSTALL_SCANNER | 10 | 安装读卡器，支持区域规则
EVENT_OPERATE_OVER_TIME | 11 | 操作超时
EVENT_FACE_DETECT | 12 | 异常人脸
EVENT_LEFT | 13 | 物品遗留
EVENT_TAKE | 14 | 物品拿取
EVENT_LEAVE_POSITION | 15 | 离岗事件
EVENT_TRAIL_INFO | 16 | 尾随
EVENT_FALL_DOWN_INFO | 19 | 倒地
EVENT_OBJECT_PASTE | 20 | 异物粘贴区域
EVENT_FACE_CAPTURE_INFO | 21 | 正常人脸
EVENT_MULTI_FACES_INFO | 22 | 多张人脸
EVENT_AUDIO_ABNORMAL_INFO | 23 | 声强突变
EVENT_DETECT | 24 | 智能侦测
EVENT_SUNGLASSES_FACE_INFO | 25 | 戴墨镜人脸
EVENT_CALLING_FACE_INFO | 26 | 打电话人脸
EVENT_VIOLENT_MOTION | 27 | 剧烈运动
EVENT_SAFETY_HELMET | 28 | 安全帽检测
EVENT_PEOPLE_NUM_CHANGE | 29 | 人数变化
EVENT_GET_UP | 30 | 起身
EVENT_ADV_REACH_HEIGHT | 31 | 折线攀高
EVENT_STOOD_UP | 32 | 起立
EVENT_PERSON_DENSITY | 33 | 人员密度（人数预警）

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_INQUEST | 3 | 审讯事件
次类型宏定义 | 宏定义值 | 含义
INQUEST_START_INFO | 0x1001 | 审讯开始信息
INQUEST_STOP_INFO | 0x1002 | 审讯停止信息
INQUEST_TAG_INFO | 0x1003 | 重点标记信息
INQUEST_SEGMENT_INFO | 0x1004 | 审讯片断状态信息

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_DETECTION | 4 | 智能侦测
次类型宏定义 | 宏定义值 | 含义
EVENT_VCA_TRAVERSE_PLANE | 1 | 越界侦测
EVENT_FIELD_DETECTION | 2 | 区域入侵侦测
EVENT_AUDIO_INPUT_ALARM | 3 | 音频丢失侦测
EVENT_SOUND_INTENSITY_ALARM | 4 | 声强突变侦测（声强陡升侦测、声强陡降侦测）
EVENT_FACE_DETECTION | 5 | 人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM | 6 | 虚焦侦测
EVENT_SCENE_CHANGE_ALARM | 7 | 场景变更侦测
EVENT_PIR_ALARM | 8 | PIR报警
EVENT_ENTER_REGION | 9 | 进入区域
EVENT_EXIT_REGION | 10 | 目标离开区域
EVENT_LOITERING | 11 | 徘徊
EVENT_GROUPDETECTION | 12 | 区域内人员聚集,支持区域规则
EVENT_RAPIDMOVE | 13 | 快速移动
EVENT_PARK | 14 | 停车
EVENT_UNATTENDED_BAGGAGE | 15 | 物品遗留
EVENT_ATTENDEDBAGGAGE | 16 | 物品拿取
EVENT_VEHICLE_DETECTION | 17 | 车辆检测

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_STREAM_INFO | 100 | 流ID信息
次类型宏定义 | 宏定义值 | 含义
EVENT_STREAM_ID | 0 | 流ID
EVENT_TIMING | 1 | 定时录像
EVENT_MOTION_DETECT | 2 | 移动侦测
EVENT_ALARM | 3 | 报警录像
EVENT_ALARM_OR_MOTION_DETECT | 4 | 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT | 5 | 报警和移动侦测
EVENT_COMMAND_TRIGGER | 6 | 命令触发
EVENT_MANNUAL | 7 | 手动录像
EVENT_BACKUP_VOLUME | 8 | 存档卷录像
STREAM_EVENT_SEMAPHORE | 9 | 信号量
STREAM_EVENT_HIDE | 10 | 遮挡
STREAM_EVENT_INVERSE | 11 | 逆行
STREAM_EVENT_VIDEO_LOST | 12 | 视频丢失
STREAM_EVENT_WIRELESS_ALARM | 13 | 无线报警
STREAM_EVENT_PIR_ALARM | 14 | PIR报警
STREAM_EVENT_CALLHELP_ALARM | 15 | 呼救报警
STREAM_EVENT_FACESNAP | 16 | 人脸抓拍
STREAM_EVENT_FACE_DETECTION | 17 | 人脸侦测
STREAM_EVENT_ITS_PLATE | 18 | 车辆检测
STREAM_EVENT_PDC | 19 | 客流量统计
STREAM_EVENT_SCENECHANGE_DETECTION | 20 | 场景变更
STREAM_EVENT_DEFOCUS_DETECTION | 21 | 虚焦侦测
STREAM_EVENT_AUDIOEXCEPTION | 22 | 音频异常
VCA_EVENT_TRAVERSE_PLANE | 23 | 穿越警戒面
VCA_EVENT_INTRUSION | 24 | 周界入侵
VCA_EVENT_ENTER_AREA | 25 | 进入区域
VCA_EVENT_EXIT_AREA | 26 | 离开区域
VCA_EVENT_LOITER | 27 | 徘徊侦测
VCA_EVENT_HIGH_DENSITY | 28 | 人员聚集
VCA_EVENT_RUN | 29 | 快速移动
VCA_EVENT_PARKING | 30 | 非法停车
VCA_EVENT_LEFT, | 31 | 物品遗留
VCA_EVENT_TAKE | 32 | 物品拿取

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_TRIAL_CASE | 5 | 庭审信息
次类型宏定义 | 宏定义值 | 含义
TRIAL_START_INFO | 0x1001 | 庭审开始事件
TRIAL_STOP_INFO | 0x1002 | 庭审结束事件
TRIAL_TAG_INFO | 0x1003 | 庭审重点标注事件
TRIAL_SEGMENT_INFO | 0x1004 | 庭审片段状态信息
TRIAL_JUDGE_CASE_INFO | 0x1005 | 庭审案件信息
struStartTime
搜索的开始时间
struEndTime
搜索的停止时间
byLockType
是否锁定：0xff- 全部，0- 未锁，1- 锁定
byQuickSearch
是否启用快速查询，0-不启用，1-启用（快速查询不会返回文件大小，仅对设备数据库进行查询，避免频繁唤醒硬盘）
byRes
保留，置为0
uSeniorParam结构为事件搜索参数联合体
byLen
联合体大小，800字节
struAlarmParam结构为报警输入参数
wAlarmInNo
报警输入号，按值表示，采用紧凑型排列，0xffff表示后续无效，例如wAlarmInNo[0]==1&&wAlarmInNo[1]==2表示查找由报警输入1和报警输入2触发的事件
byRes
保留，置为0
struMotionParam结构为移动侦测参数
wMotDetChanNo
设备通道号，按值表示，采用紧凑型排列，0xffff表示后续无效，例如wMotDetChanNo[0]==1&&wMotDetChanNo[1]==2表示查找通道1和通道2发生移动侦测触发的事件
byRes
保留，置为0
struVcaParam结构为异常行为识别参数
wChanNo
异常行为识别对应的通道，按值表示，采用紧凑型排列，0xffff表示后续无效，例如wChanNo[0]==1&&wChanNo[1]==2表示查找通道1和通道2发生异常行为识别触发的事件
byRuleID
规则ID，0xff表示全部
byRes
保留，置为0
struInquestParam结构为审讯事件参数
byRoomIndex
审讯室编号，从1开始
byRes
保留，置为0
struVCADetect结构为智能侦测参数
byAll
0- 按具体给出的通道号查找，1- 查找全部通道
byRes1
保留，置为0
wChanNo
智能侦测对应的通道，按值表示，采用紧凑型排列，0xffff表示后续无效，wChanNo[0]==1&&wChanNo[1]==2表示查找通道1和通道2的智能侦测事件
byRes
保留，置为0
struStreamIDParam结构为流ID参数
struIDInfo
流ID信息，72字节长
dwCmdType
外部触发类型，NVR接入云存储使用
byBackupVolumeNum
存档卷号，适用于CVR设备
byRes1
保留，置为0
byArchiveLabel
存档标签，CVR使用
byRes
保留，置为0
struTrialParam结构为庭审信息查询条件
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byCaseType
案件类型：0- 全部，1- 刑事案件，2- 民事案件
byRes
保留，置为0
struPosAlarm结构为POS录像查询条件
wChannel
通道号，按值表示，采用紧凑型排列，0xffff表示后续无效，wChannel[0]==1&&wChannel[1]==2表示查找通道1和通道2的POS录像
byAllChan
是否查找全部通道：0- 否(此时wChannel有效)，1- 全部通道(此时wChannel无效)
byCaseSensitive
是否区分大小写：0- 不区分大小写，1- 区分大小写
byCombinateMode
关键字组合方式：0- 或，1- 与
byRes1
保留，置为0
sKeyWord
查找关键字
byRes
保留，置为0
struACSAlarm结构为门禁事件搜索条件
dwMajor
报警主类型（与事件上传主类型一致，0代表全部）
dwMinor
报警次类型（与事件上传主类型一致，0代表全部）
byCardNo
卡号
byName
姓名
byMACAddr
物理MAC地址
byRes
保留，置为0

See Also

NET_DVR_FindFileByEvent_V40


NET_DVR_SEARCH_EVENT_PARAM_V50

按事件搜索的条件参数结构体。

struct{
  WORD                        wMajorType;
  WORD                        wMinorType;
  NET_DVR_TIME_SEARCH_COND     struStartTime;
  NET_DVR_TIME_SEARCH_COND     struEndTime;
  BYTE                        byLockType;
  BYTE                        byQuickSearch;
  BYTE                        byRes[254];
  union{
           BYTE                  byLen[SEARCH_EVENT_INFO_LEN_V40];

           struct{
           WORD                  wAlarmInNo[128];
           BYTE                  byRes[544];
           }struAlarmParam;

           struct{
           WORD                  wMotDetChanNo[MAX_CHANNUM_V30];
           BYTE                  byRes[672];
           }struMotionParam;

           struct{
           WORD                  wChanNo[MAX_CHANNUM_V30];
           BYTE                  byRuleID;
           BYTE                  byRes[671];
           }struVcaParam;

           struct{
           BYTE                  byRoomIndex;
           BYTE                  byRes[799];
           }struInquestParam;

           struct{
           BYTE                  byAll;
           BYTE                  byRes1[3];
           WORD                  wChanNo[MAX_CHANNUM_V30];
           BYTE                  byRes1[668];
           }struVCADetect;

           struct{
           NET_DVR_STREAM_INFO   struIDInfo;
           DWORD                 dwCmdType;
           BYTE                  byBackupVolumeNum;
           BYTE                  byRes[723];
           }struStreamIDParam;

           struct{
           WORD                  wChannel[MAX_CHANNUM_V30];
           BYTE                  byAllChan;
           BYTE                  byCaseSensitive;
           BYTE                  byCombinateMode;
           BYTE                  byRes1;
           char                  sKeyWord[MAX_POS_KEYWORDS_NUM][MAX_POS_KEYWORD_LEN];
           BYTE                  byRes[284];
           }struPosAlarm;

           struct{
           BYTE                  byCaseNo[SEARCH_CASE_NO_LEN];
           BYTE                  byCaseName[SEARCH_CASE_NAME_LEN];
           BYTE                  byLitigant1[SEARCH_LITIGANT_LEN];
           BYTE                  byLitigant2[SEARCH_LITIGANT_LEN];
           BYTE                  byChiefJudge[SEARCH_CHIEF_JUDGE_LEN];
           BYTE                  byCaseType;
           BYTE                  byRes[547];
           }struTrialParam;

           struct{
           DWORD                  dwMajor;
           DWORD                  dwMinor;
           BYTE                   byCardNo[ACS_CARD_NO_LEN];
           BYTE                   byName[NAME_LEN];
           BYTE                   byMACAddr[MACADDR_LEN];
           BYTE                   byRes[722];
           }struACSAlarm;

  }uSeniorParam;
}NET_DVR_SEARCH_EVENT_PARAM_V50,*LPNET_DVR_SEARCH_EVENT_PARAM_V50;

Members

wMajorType
搜索主类型，具体定义见下表：
enum _MAIN_EVENT_TYPE_{
  EVENT_MOT_DET        = 0,
  EVENT_ALARM_IN       = 1,
  EVENT_VCA_BEHAVIOR   = 2,
  EVENT_INQUEST        = 3,
  EVENT_VCA_DETECTION  = 4,
  EVENT_POS            = 5,
  EVENT_TRIAL_CASE     = 6,
  EVENT_ACS_CASE       = 7,
  EVENT_STREAM_INFO    = 100
}MAIN_EVENT_TYPE
EVENT_MOT_DET
移动侦测
EVENT_ALARM_IN
报警输入
EVENT_VCA_BEHAVIOR
异常行为识别
EVENT_INQUEST
审讯事件
EVENT_VCA_DETECTION
智能侦测
EVENT_POS
POS录像
EVENT_TRIAL_CASE
庭审案件信息
EVENT_ACS_CASE
门禁事件
EVENT_STREAM_INFO
流ID信息
wMinorType
搜索次类型，根据主类型变化，0xffff表示全部。移动侦测、报警输入和POS录像没有次类型，直接设置为0xffff。其他主类型对应的次类型见下表：
主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_BEHAVIOR | 2 | 异常行为识别
次类型宏定义 | 宏定义值 | 含义
EVENT_TRAVERSE_PLANE | 0 | 穿越警戒面
EVENT_ENTER_AREA | 1 | 目标进入区域，支持区域规则
EVENT_EXIT_AREA | 2 | 目标离开区域，支持区域规则
EVENT_INTRUSION | 3 | 周界入侵，支持区域规则
EVENT_LOITER | 4 | 徘徊，支持区域规则
EVENT_LEFT_TAKE | 5 | 丢包捡包，支持区域规则
EVENT_PARKING | 6 | 停车，支持区域规则
EVENT_RUN | 7 | 奔跑，支持区域规则
EVENT_HIGH_DENSITY | 8 | 区域内人员密度，支持区域规则
EVENT_STICK_UP | 9 | 贴纸条，支持区域规则
EVENT_INSTALL_SCANNER | 10 | 安装读卡器，支持区域规则
EVENT_OPERATE_OVER_TIME | 11 | 操作超时
EVENT_FACE_DETECT | 12 | 异常人脸
EVENT_LEFT | 13 | 物品遗留
EVENT_TAKE | 14 | 物品拿取
EVENT_LEAVE_POSITION | 15 | 离岗事件
EVENT_TRAIL_INFO | 16 | 尾随
EVENT_FALL_DOWN_INFO | 19 | 倒地
EVENT_OBJECT_PASTE | 20 | 异物粘贴区域
EVENT_FACE_CAPTURE_INFO | 21 | 正常人脸
EVENT_MULTI_FACES_INFO | 22 | 多张人脸
EVENT_AUDIO_ABNORMAL_INFO | 23 | 声强突变
EVENT_DETECT | 24 | 智能侦测
EVENT_SUNGLASSES_FACE_INFO | 25 | 戴墨镜人脸
EVENT_CALLING_FACE_INFO | 26 | 打电话人脸
EVENT_VIOLENT_MOTION | 27 | 剧烈运动
EVENT_SAFETY_HELMET | 28 | 安全帽检测
EVENT_PEOPLE_NUM_CHANGE | 29 | 人数变化
EVENT_GET_UP | 30 | 起身
EVENT_ADV_REACH_HEIGHT | 31 | 折线攀高
EVENT_STOOD_UP | 32 | 起立
EVENT_PERSON_DENSITY | 33 | 人员密度（人数预警）

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_INQUEST | 3 | 审讯事件
次类型宏定义 | 宏定义值 | 含义
INQUEST_START_INFO | 0x1001 | 审讯开始信息
INQUEST_STOP_INFO | 0x1002 | 审讯停止信息
INQUEST_TAG_INFO | 0x1003 | 重点标记信息
INQUEST_SEGMENT_INFO | 0x1004 | 审讯片断状态信息

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_DETECTION | 4 | 智能侦测
次类型宏定义 | 宏定义值 | 含义
EVENT_VCA_TRAVERSE_PLANE | 1 | 越界侦测
EVENT_FIELD_DETECTION | 2 | 区域入侵侦测
EVENT_AUDIO_INPUT_ALARM | 3 | 音频丢失侦测
EVENT_SOUND_INTENSITY_ALARM | 4 | 声强突变侦测（声强陡升侦测、声强陡降侦测）
EVENT_FACE_DETECTION | 5 | 人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM | 6 | 虚焦侦测
EVENT_SCENE_CHANGE_ALARM | 7 | 场景变更侦测
EVENT_PIR_ALARM | 8 | PIR报警
EVENT_ENTER_REGION | 9 | 进入区域
EVENT_EXIT_REGION | 10 | 目标离开区域
EVENT_LOITERING | 11 | 徘徊
EVENT_GROUPDETECTION | 12 | 区域内人员聚集,支持区域规则
EVENT_RAPIDMOVE | 13 | 快速移动
EVENT_PARK | 14 | 停车
EVENT_UNATTENDED_BAGGAGE | 15 | 物品遗留
EVENT_ATTENDEDBAGGAGE | 16 | 物品拿取
EVENT_VEHICLE_DETECTION | 17 | 车辆检测

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_STREAM_INFO | 100 | 流ID信息
次类型宏定义 | 宏定义值 | 含义
EVENT_STREAM_ID | 0 | 流ID
EVENT_TIMING | 1 | 定时录像
EVENT_MOTION_DETECT | 2 | 移动侦测
EVENT_ALARM | 3 | 报警录像
EVENT_ALARM_OR_MOTION_DETECT | 4 | 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT | 5 | 报警和移动侦测
EVENT_COMMAND_TRIGGER | 6 | 命令触发
EVENT_MANNUAL | 7 | 手动录像
EVENT_BACKUP_VOLUME | 8 | 存档卷录像
STREAM_EVENT_SEMAPHORE | 9 | 信号量
STREAM_EVENT_HIDE | 10 | 遮挡
STREAM_EVENT_INVERSE | 11 | 逆行
STREAM_EVENT_VIDEO_LOST | 12 | 视频丢失
STREAM_EVENT_WIRELESS_ALARM | 13 | 无线报警
STREAM_EVENT_PIR_ALARM | 14 | PIR报警
STREAM_EVENT_CALLHELP_ALARM | 15 | 呼救报警
STREAM_EVENT_FACESNAP | 16 | 人脸抓拍
STREAM_EVENT_FACE_DETECTION | 17 | 人脸侦测
STREAM_EVENT_ITS_PLATE | 18 | 车辆检测
STREAM_EVENT_PDC | 19 | 客流量统计
STREAM_EVENT_SCENECHANGE_DETECTION | 20 | 场景变更
STREAM_EVENT_DEFOCUS_DETECTION | 21 | 虚焦侦测
STREAM_EVENT_AUDIOEXCEPTION | 22 | 音频异常
VCA_EVENT_TRAVERSE_PLANE | 23 | 穿越警戒面
VCA_EVENT_INTRUSION | 24 | 周界入侵
VCA_EVENT_ENTER_AREA | 25 | 进入区域
VCA_EVENT_EXIT_AREA | 26 | 离开区域
VCA_EVENT_LOITER | 27 | 徘徊侦测
VCA_EVENT_HIGH_DENSITY | 28 | 人员聚集
VCA_EVENT_RUN | 29 | 快速移动
VCA_EVENT_PARKING | 30 | 非法停车
VCA_EVENT_LEFT, | 31 | 物品遗留
VCA_EVENT_TAKE | 32 | 物品拿取

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_TRIAL_CASE | 5 | 庭审信息
次类型宏定义 | 宏定义值 | 含义
TRIAL_START_INFO | 0x1001 | 庭审开始事件
TRIAL_STOP_INFO | 0x1002 | 庭审结束事件
TRIAL_TAG_INFO | 0x1003 | 庭审重点标注事件
TRIAL_SEGMENT_INFO | 0x1004 | 庭审片段状态信息
TRIAL_JUDGE_CASE_INFO | 0x1005 | 庭审案件信息
struStartTime
搜索的开始时间
struEndTime
搜索的停止时间
byLockType
是否锁定：0xff- 全部，0- 未锁，1- 锁定
byQuickSearch
是否启用快速查询，0-不启用，1-启用（快速查询不会返回文件大小，仅对设备数据库进行查询，避免频繁唤醒硬盘）
byRes
保留，置为0
uSeniorParam结构为事件搜索参数联合体
byLen
联合体大小，800字节
struAlarmParam结构为报警输入参数
wAlarmInNo
报警输入号，按值表示，采用紧凑型排列，0xffff表示后续无效，例如wAlarmInNo[0]==1&&wAlarmInNo[1]==2表示查找由报警输入1和报警输入2触发的事件
byRes
保留，置为0
struMotionParam结构为移动侦测参数
wMotDetChanNo
设备通道号，按值表示，采用紧凑型排列，0xffff表示后续无效，例如wMotDetChanNo[0]==1&&wMotDetChanNo[1]==2表示查找通道1和通道2发生移动侦测触发的事件
byRes
保留，置为0
struVcaParam结构为异常行为识别参数
wChanNo
异常行为识别对应的通道，按值表示，采用紧凑型排列，0xffff表示后续无效，例如wChanNo[0]==1&&wChanNo[1]==2表示查找通道1和通道2发生异常行为识别触发的事件
byRuleID
规则ID，0xff表示全部
byRes
保留，置为0
struInquestParam结构为审讯事件参数
byRoomIndex
审讯室编号，从1开始
byRes
保留，置为0
struVCADetect结构为智能侦测参数
byAll
0- 按具体给出的通道号查找，1- 查找全部通道
byRes1
保留，置为0
wChanNo
智能侦测对应的通道，按值表示，采用紧凑型排列，0xffff表示后续无效，wChanNo[0]==1&&wChanNo[1]==2表示查找通道1和通道2的智能侦测事件
byRes
保留，置为0
struStreamIDParam结构为流ID参数
struIDInfo
流ID信息，72字节长
dwCmdType
外部触发类型，NVR接入云存储使用
byBackupVolumeNum
存档卷号，适用于CVR设备
byRes1
保留，置为0
byArchiveLabel
存档标签，CVR使用
byRes
保留，置为0
struTrialParam结构为庭审信息查询条件
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byCaseType
案件类型：0- 全部，1- 刑事案件，2- 民事案件
byRes
保留，置为0
struPosAlarm结构为POS录像查询条件
wChannel
通道号，按值表示，采用紧凑型排列，0xffff表示后续无效，wChannel[0]==1&&wChannel[1]==2表示查找通道1和通道2的POS录像
byAllChan
是否查找全部通道：0- 否(此时wChannel有效)，1- 全部通道(此时wChannel无效)
byCaseSensitive
是否区分大小写：0- 不区分大小写，1- 区分大小写
byCombinateMode
关键字组合方式：0- 或，1- 与
byRes1
保留，置为0
sKeyWord
查找关键字
byRes
保留，置为0
struACSAlarm结构为门禁事件搜索条件
dwMajor
报警主类型（与事件上传主类型一致，0代表全部）
dwMinor
报警次类型（与事件上传主类型一致，0代表全部）
byCardNo
卡号
byName
姓名
byMACAddr
物理MAC地址
byRes
保留，置为0

See Also

NET_DVR_FindFileByEvent_V50


NET_DVR_SEARCH_EVENT_RET

按事件搜索到的录像文件的信息结构体。

struct{
  WORD            wMajorType;
  WORD            wMinorType;
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
  BYTE            byChan[MAX_CHANNUM_V30];
  BYTE            byChanEx[32];
  BYTE            byRes[4];
  union{
           struct{
           DWORD                 dwAlarmInNo;
           BYTE                  byRes[SEARCH_EVENT_INFO_LEN];
           }struAlarmRet;
           struct{
           DWORD                 dwMotDetNo;
           BYTE                  byRes[SEARCH_EVENT_INFO_LEN];
           }struMotionRet;
           struct{
           DWORD                 dwChanNo;
           BYTE                  byRuleID;
           BYTE                  byRes1[3];
           BYTE                  byRuleName[NAME_LEN];
           NET_VCA_EVENT_UNION   uEvent;
           }struVcaRet;
           struct{
           BYTE                  byRoomIndex;
           BYTE                  byDriveIndex;
           BYTE                  byRes1[6];
           DWORD                 dwSegmentNo;
           WORD                  wSegmetSize;
           WORD                  wSegmentState;
           BYTE                  byRes2[288];
           }struInquestRet;
           struct{
           DWORD                 dwRecordType;
           DWORD                 dwRecordLength;
           BYTE                  byLockFlag;
           BYTE                  byDrawFrameType;
           BYTE                  byRes1[2];
           BYTE                  byFileName[NAME_LEN];
           DWORD                 dwFileIndex;
           BYTE                  byRes[256];
           }struStreamIDRet;
           struct{
           BYTE                  byRoomIndex;
           BYTE                  byDriveIndex;
           WORD                  wSegmetSize;
           DWORD                 dwSegmentNo;
           BYTE                  bySegmentState;
           BYTE                  byCaseType;
           BYTE                  byRes[2];
           BYTE                  byCaseNo[CASE_NO_RET_LEN];
           BYTE                  byCaseName[CASE_NAME_RET_LEN];
           BYTE                  byLitigant1[LITIGANT_RET_LEN];
           BYTE                  byLitigant2[LITIGANT_RET_LEN];
           BYTE                  byChiefJudge[CHIEF_JUDGE_RET_LEN];
           BYTE                  byRes1[104];
           }struTrialRet;
  }uSeniorRet;
}NET_DVR_SEARCH_EVENT_RET,*LPNET_DVR_SEARCH_EVENT_RET;

Members

wMajorType
主类型，具体定义见下表：
enum _MAIN_EVENT_TYPE_{
  EVENT_MOT_DET        = 0,
  EVENT_ALARM_IN       = 1,
  EVENT_VCA_BEHAVIOR   = 2,
  EVENT_INQUEST        = 3,
  EVENT_VCA_DETECTION  = 4,
  EVENT_TRIAL_CASE     = 6,
  EVENT_STREAM_INFO    = 100
}MAIN_EVENT_TYPE
EVENT_MOT_DET
移动侦测
EVENT_ALARM_IN
报警输入
EVENT_VCA_BEHAVIOR
异常行为识别
EVENT_INQUEST
审讯事件
EVENT_VCA_DETECTION
智能侦测
EVENT_TRIAL_CASE
庭审案件信息
EVENT_STREAM_INFO
流ID信息
wMinorType
不同的主类型对应次类型变化，0xffff表示全部。移动侦测和报警输入没有对应次类型，其他主类型对应的次类型见下表：
主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_BEHAVIOR | 2 | 异常行为识别
次类型宏定义 | 宏定义值 | 含义
EVENT_TRAVERSE_PLANE | 0 | 穿越警戒面
EVENT_ENTER_AREA | 1 | 目标进入区域，支持区域规则
EVENT_EXIT_AREA | 2 | 目标离开区域，支持区域规则
EVENT_INTRUSION | 3 | 周界入侵，支持区域规则
EVENT_LOITER | 4 | 徘徊，支持区域规则
EVENT_LEFT_TAKE | 5 | 丢包捡包，支持区域规则
EVENT_PARKING | 6 | 停车，支持区域规则
EVENT_RUN | 7 | 奔跑，支持区域规则
EVENT_HIGH_DENSITY | 8 | 区域内人员密度，支持区域规则
EVENT_STICK_UP | 9 | 贴纸条，支持区域规则
EVENT_INSTALL_SCANNER | 10 | 安装读卡器，支持区域规则
EVENT_OPERATE_OVER_TIME | 11 | 操作超时
EVENT_FACE_DETECT | 12 | 异常人脸
EVENT_LEFT | 13 | 物品遗留
EVENT_TAKE | 14 | 物品拿取
EVENT_LEAVE_POSITION | 15 | 离岗事件
EVENT_TRAIL_INFO | 16 | 尾随
EVENT_FALL_DOWN_INFO | 19 | 倒地
EVENT_OBJECT_PASTE | 20 | 异物粘贴区域
EVENT_FACE_CAPTURE_INFO | 21 | 正常人脸
EVENT_MULTI_FACES_INFO | 22 | 多张人脸
EVENT_AUDIO_ABNORMAL_INFO | 23 | 声强突变
EVENT_SUNGLASSES_FACE_INFO | 25 | 戴墨镜人脸
EVENT_CALLING_FACE_INFO | 26 | 打电话人脸

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_INQUEST | 3 | 审讯事件
次类型宏定义 | 宏定义值 | 含义
INQUEST_START_INFO | 0x1001 | 审讯开始信息
INQUEST_STOP_INFO | 0x1002 | 审讯停止信息
INQUEST_TAG_INFO | 0x1003 | 重点标记信息
INQUEST_SEGMENT_INFO | 0x1004 | 审讯片断状态信息

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_DETECTION | 4 | 智能侦测
次类型宏定义 | 宏定义值 | 含义
EVENT_VCA_TRAVERSE_PLANE | 1 | 越界侦测
EVENT_FIELD_DETECTION | 2 | 区域入侵侦测
EVENT_AUDIO_INPUT_ALARM | 3 | 音频丢失侦测
EVENT_SOUND_INTENSITY_ALARM | 4 | 声强突变侦测（声强陡升侦测、声强陡降侦测）
EVENT_FACE_DETECTION | 5 | 人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM | 6 | 虚焦侦测
EVENT_SCENE_CHANGE_ALARM | 7 | 场景变更侦测
EVENT_PIR_ALARM | 8 | PIR报警

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_STREAM_INFO | 100 | 流ID信息
次类型宏定义 | 宏定义值 | 含义
EVENT_STREAM_ID | 0 | 流ID
EVENT_TIMING | 1 | 定时录像
EVENT_MOTION_DETECT | 2 | 移动侦测
EVENT_ALARM | 3 | 报警录像
EVENT_ALARM_OR_MOTION_DETECT | 4 | 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT | 5 | 报警和移动侦测
EVENT_COMMAND_TRIGGER | 6 | 命令触发
EVENT_MANNUAL | 7 | 手动录像
EVENT_BACKUP_VOLUME | 8 | 存档卷录像

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_TRIAL_CASE | 5 | 庭审信息
次类型宏定义 | 宏定义值 | 含义
TRIAL_START_INFO | 0x1001 | 庭审开始事件
TRIAL_STOP_INFO | 0x1002 | 庭审结束事件
TRIAL_TAG_INFO | 0x1003 | 庭审重点标注事件
TRIAL_SEGMENT_INFO | 0x1004 | 庭审片段状态信息
TRIAL_JUDGE_CASE_INFO | 0x1005 | 庭审案件信息
struStartTime
事件的开始时间
struEndTime
事件的停止时间，脉冲事件时停止时间和开始时间一样
byChan
触发的通道号
byChanEx
关联的通道信息(扩展)
byRes
保留，置为0
uSeniorRet结构为事件搜索结果联合体
struAlarmRet结构为报警输入结果
dwAlarmInNo
报警输入号
byRes
保留
struMotionRet结构为移动侦测结果
dwMotDetNo
移动侦测通道
byRes
保留，置为0
struVcaRet结构为异常行为识别结果
dwChanNo
触发事件的通道
byRuleID
规则ID，0xff表示全部
byRes1
保留，置为0
byRuleName
规则名称
uEvent
行为事件参数，根据返回的事件次类型（wMinorType）决定
struInquestRet结构为审讯事件结果
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，从1开始
byRes1
保留，置为0
dwSegmentNo
本片断在本次审讯中的序号，从1开始
wSegmetSize
本片断的大小，单位M
wSegmentState
本片断状态：0-刻录正常，1-刻录异常，2-不刻录审讯
byRes2
保留，置为0
struStreamIDRet结构为流id录像查询结果
dwRecordType
录像类型：0- 定时录像，1- 移动侦测录像，2- 信号量IO报警录像，3- 信号量IO报警或移动侦测录像， 4- 信号量IO报警和移动侦测录像，5- 命令触发录像，6-手动录像，7- 震动报警录像，8- 环境触发报警录像， 9- 智能报警录像（包含逆行，越界，物品丢失，遗留物等），10- 遮挡报警录像，13-全部事件(移动侦测、PIR、无线、呼救等所有报警类型的"或"）
dwRecordLength
录像大小
byLockFlag
锁定标志：0- 没锁定，1- 锁定
byDrawFrameType
是否是抽帧录像：0- 非抽帧录像，1- 抽帧录像
byRes1
保留，置为0
byFileName
文件名
dwFileIndex
存档卷上的文件索引
byRes
保留，置为0
struTrialRet结构为庭审信息查询结果
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，从1开始
wSegmetSize
本片断的大小，单位：M
dwSegmentNo
本片断在本次审讯中的序号，从1开始
bySegmentState
本片断状态：0- 刻录正常，1- 刻录异常，2- 不刻录审讯
byCaseType
案件类型：0-全部，1- 刑事案件，2- 民事案件
byRes
保留，置为0
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byRes1
保留，置为0

See Also

NET_DVR_FindNextEvent


NET_DVR_SEARCH_EVENT_RET_V40

按事件搜索到的录像文件的信息结构体。

struct{
  WORD            wMajorType;
  WORD            wMinorType;
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
  WORD            wChan[MAX_CHANNUM_V40];
  BYTE            byRes[36];
  union{
           BYTE                  byLen[800];
           struct{
           DWORD                 dwAlarmInNo;
           BYTE                  byRes[796];
           }struAlarmRet;

           struct{
           DWORD                 dwMotDetNo;
           BYTE                  byRes[796];
           }struMotionRet;

           struct{
           DWORD                 dwChanNo;
           BYTE                  byRuleID;
           BYTE                  byRes1[3];
           BYTE                  byRuleName[NAME_LEN];
           NET_VCA_EVENT_UNION   uEvent;
           BYTE                  byRes[668];
           }struVcaRet;

           struct{
           BYTE                  byRoomIndex;
           BYTE                  byDriveIndex;
           BYTE                  byRes1[6];
           DWORD                 dwSegmentNo;
           WORD                  wSegmetSize;
           WORD                  wSegmentState;
           BYTE                  byRes2[784];
           }struInquestRet;

           struct{
           DWORD                 dwRecordType;
           DWORD                 dwRecordLength;
           BYTE                  byLockFlag;
           BYTE                  byDrawFrameType;
           BYTE                  byRes1[2];
           BYTE                  byFileName[NAME_LEN];
           DWORD                 dwFileIndex;
           BYTE                  byRes[752];
           }struStreamIDRet;

           struct{
           BYTE                  byRoomIndex;
           BYTE                  byDriveIndex;
           WORD                  wSegmetSize;
           DWORD                 dwSegmentNo;
           BYTE                  bySegmentState;
           BYTE                  byCaseType;
           BYTE                  byRes[2];
           BYTE                  byCaseNo[CASE_NO_RET_LEN];
           BYTE                  byCaseName[CASE_NAME_RET_LEN];
           BYTE                  byLitigant1[LITIGANT_RET_LEN];
           BYTE                  byLitigant2[LITIGANT_RET_LEN];
           BYTE                  byChiefJudge[CHIEF_JUDGE_RET_LEN];
           BYTE                  byRes1[600];
           }struTrialRet;

           struct{
           DWORD                 dwChanNo;
           BYTE                  byRes[796];
           }struPosRet;

  }uSeniorRet;
}NET_DVR_SEARCH_EVENT_RET_V40,*LPNET_DVR_SEARCH_EVENT_RET_V40;

Members

wMajorType
主类型，具体定义见下表：
enum _MAIN_EVENT_TYPE_{
  EVENT_MOT_DET        = 0,
  EVENT_ALARM_IN       = 1,
  EVENT_VCA_BEHAVIOR   = 2,
  EVENT_INQUEST        = 3,
  EVENT_VCA_DETECTION  = 4,
  EVENT_POS            = 5,
  EVENT_TRIAL_CASE     = 6,
  EVENT_STREAM_INFO    = 100
}MAIN_EVENT_TYPE
EVENT_MOT_DET
移动侦测
EVENT_ALARM_IN
报警输入
EVENT_VCA_BEHAVIOR
异常行为识别
EVENT_INQUEST
审讯事件
EVENT_VCA_DETECTION
智能侦测
EVENT_POS
POS录像
EVENT_TRIAL_CASE
庭审案件信息
EVENT_STREAM_INFO
流ID信息
wMinorType
不同的主类型对应次类型变化，0xffff表示全部。移动侦测、报警输入和POS录像没有对应次类型，其他主类型对应的次类型见下表：
主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_BEHAVIOR | 2 | 异常行为识别
次类型宏定义 | 宏定义值 | 含义
EVENT_TRAVERSE_PLANE | 0 | 穿越警戒面
EVENT_ENTER_AREA | 1 | 目标进入区域，支持区域规则
EVENT_EXIT_AREA | 2 | 目标离开区域，支持区域规则
EVENT_INTRUSION | 3 | 周界入侵，支持区域规则
EVENT_LOITER | 4 | 徘徊，支持区域规则
EVENT_LEFT_TAKE | 5 | 丢包捡包，支持区域规则
EVENT_PARKING | 6 | 停车，支持区域规则
EVENT_RUN | 7 | 奔跑，支持区域规则
EVENT_HIGH_DENSITY | 8 | 区域内人员密度，支持区域规则
EVENT_STICK_UP | 9 | 贴纸条，支持区域规则
EVENT_INSTALL_SCANNER | 10 | 安装读卡器，支持区域规则
EVENT_OPERATE_OVER_TIME | 11 | 操作超时
EVENT_FACE_DETECT | 12 | 异常人脸
EVENT_LEFT | 13 | 物品遗留
EVENT_TAKE | 14 | 物品拿取
EVENT_LEAVE_POSITION | 15 | 离岗事件
EVENT_TRAIL_INFO | 16 | 尾随
EVENT_FALL_DOWN_INFO | 19 | 倒地
EVENT_OBJECT_PASTE | 20 | 异物粘贴区域
EVENT_FACE_CAPTURE_INFO | 21 | 正常人脸
EVENT_MULTI_FACES_INFO | 22 | 多张人脸
EVENT_AUDIO_ABNORMAL_INFO | 23 | 声强突变
EVENT_SUNGLASSES_FACE_INFO | 25 | 戴墨镜人脸
EVENT_CALLING_FACE_INFO | 26 | 打电话人脸
EVENT_SAFETY_HELMET | 28 | 安全帽检测

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_INQUEST | 3 | 审讯事件
次类型宏定义 | 宏定义值 | 含义
INQUEST_START_INFO | 0x1001 | 审讯开始信息
INQUEST_STOP_INFO | 0x1002 | 审讯停止信息
INQUEST_TAG_INFO | 0x1003 | 重点标记信息
INQUEST_SEGMENT_INFO | 0x1004 | 审讯片断状态信息

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_DETECTION | 4 | 智能侦测
次类型宏定义 | 宏定义值 | 含义
EVENT_VCA_TRAVERSE_PLANE | 1 | 越界侦测
EVENT_FIELD_DETECTION | 2 | 区域入侵侦测
EVENT_AUDIO_INPUT_ALARM | 3 | 音频丢失侦测
EVENT_SOUND_INTENSITY_ALARM | 4 | 声强突变侦测（声强陡升侦测、声强陡降侦测）
EVENT_FACE_DETECTION | 5 | 人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM | 6 | 虚焦侦测
EVENT_SCENE_CHANGE_ALARM | 7 | 场景变更侦测
EVENT_PIR_ALARM | 8 | PIR报警
EVENT_ENTER_REGION | 9 | 进入区域
EVENT_EXIT_REGION | 10 | 目标离开区域
EVENT_LOITERING | 11 | 徘徊
EVENT_GROUPDETECTION | 12 | 区域内人员聚集,支持区域规则
EVENT_RAPIDMOVE | 13 | 快速移动
EVENT_PARK | 14 | 停车
EVENT_UNATTENDED_BAGGAGE | 15 | 物品遗留
EVENT_ATTENDEDBAGGAGE | 16 | 物品拿取
EVENT_VEHICLE_DETECTION | 17 | 车辆检测

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_STREAM_INFO | 100 | 流ID信息
次类型宏定义 | 宏定义值 | 含义
EVENT_STREAM_ID | 0 | 流ID
EVENT_TIMING | 1 | 定时录像
EVENT_MOTION_DETECT | 2 | 移动侦测
EVENT_ALARM | 3 | 报警录像
EVENT_ALARM_OR_MOTION_DETECT | 4 | 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT | 5 | 报警和移动侦测
EVENT_COMMAND_TRIGGER | 6 | 命令触发
EVENT_MANNUAL | 7 | 手动录像
EVENT_BACKUP_VOLUME | 8 | 存档卷录像
STREAM_EVENT_SEMAPHORE | 9 | 信号量
STREAM_EVENT_HIDE | 10 | 遮挡
STREAM_EVENT_INVERSE | 11 | 逆行
STREAM_EVENT_VIDEO_LOST | 12 | 视频丢失
STREAM_EVENT_WIRELESS_ALARM | 13 | 无线报警
STREAM_EVENT_PIR_ALARM | 14 | PIR报警
STREAM_EVENT_CALLHELP_ALARM | 15 | 呼救报警
STREAM_EVENT_FACESNAP | 16 | 人脸抓拍
STREAM_EVENT_FACE_DETECTION | 17 | 人脸侦测
STREAM_EVENT_ITS_PLATE | 18 | 车辆检测
STREAM_EVENT_PDC | 19 | 客流量统计
STREAM_EVENT_SCENECHANGE_DETECTION | 20 | 场景变更
STREAM_EVENT_DEFOCUS_DETECTION | 21 | 虚焦侦测
STREAM_EVENT_AUDIOEXCEPTION | 22 | 音频异常
VCA_EVENT_TRAVERSE_PLANE | 23 | 穿越警戒面
VCA_EVENT_INTRUSION | 24 | 周界入侵
VCA_EVENT_ENTER_AREA | 25 | 进入区域
VCA_EVENT_EXIT_AREA | 26 | 离开区域
VCA_EVENT_LOITER | 27 | 徘徊侦测
VCA_EVENT_HIGH_DENSITY | 28 | 人员聚集
VCA_EVENT_RUN | 29 | 快速移动
VCA_EVENT_PARKING | 30 | 非法停车
VCA_EVENT_LEFT, | 31 | 物品遗留
VCA_EVENT_TAKE | 32 | 物品拿取

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_TRIAL_CASE | 5 | 庭审信息
次类型宏定义 | 宏定义值 | 含义
TRIAL_START_INFO | 0x1001 | 庭审开始事件
TRIAL_STOP_INFO | 0x1002 | 庭审结束事件
TRIAL_TAG_INFO | 0x1003 | 庭审重点标注事件
TRIAL_SEGMENT_INFO | 0x1004 | 庭审片段状态信息
TRIAL_JUDGE_CASE_INFO | 0x1005 | 庭审案件信息
struStartTime
事件的开始时间
struEndTime
事件的停止时间，脉冲事件时停止时间和开始时间一样
wChan
事件触发的通道号，0xffff表示后续无效
byRes
保留，置为0
uSeniorRet结构为事件搜索结果联合体
byLen
联合体大小，800字节
struAlarmRet结构为报警输入结果
dwAlarmInNo
报警输入号
byRes
保留
struMotionRet结构为移动侦测结果
dwMotDetNo
移动侦测通道
byRes
保留，置为0
struVcaRet结构为异常行为识别结果
dwChanNo
触发事件的通道
byRuleID
规则ID，0xff表示全部
byRes1
保留，置为0
byRuleName
规则名称
uEvent
行为事件参数，根据返回的事件次类型（wMinorType）决定
byRes
保留，置为0
struInquestRet结构为审讯事件结果
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，从1开始
byRes1
保留，置为0
dwSegmentNo
本片断在本次审讯中的序号，从1开始
wSegmetSize
本片断的大小，单位M
wSegmentState
本片断状态：0-刻录正常，1-刻录异常，2-不刻录审讯
byRes2
保留，置为0
struStreamIDRet结构为流id录像查询结果
dwRecordType
录像类型：0- 定时录像，1- 移动侦测录像，2- 信号量IO报警录像，3- 信号量IO报警或移动侦测录像， 4- 信号量IO报警和移动侦测录像，5- 命令触发录像，6-手动录像，7- 震动报警录像，8- 环境触发报警录像， 9- 智能报警录像（包含逆行，越界，物品丢失，遗留物等），10- 遮挡报警录像，13-全部事件(移动侦测、PIR、无线、呼救等所有报警类型的"或"）,24-录像拼接存档
dwRecordLength
录像大小
byLockFlag
锁定标志：0- 没锁定，1- 锁定
byDrawFrameType
是否是抽帧录像：0- 非抽帧录像，1- 抽帧录像
byRes1
保留，置为0
byFileName
文件名
dwFileIndex
存档卷上的文件索引
byRes
保留，置为0
struTrialRet结构为庭审信息查询结果
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，从1开始
wSegmetSize
本片断的大小，单位：M
dwSegmentNo
本片断在本次审讯中的序号，从1开始
bySegmentState
本片断状态：0- 刻录正常，1- 刻录异常，2- 不刻录审讯
byCaseType
案件类型：0-全部，1- 刑事案件，2- 民事案件
byRes
保留，置为0
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byRes1
保留，置为0
struPosRet结构为POS录像查询结果
dwChanNo
触发产生POS事件的通道号
byRes
保留，置为0

See Also

NET_DVR_FindNextEvent_V40


NET_DVR_SEARCH_EVENT_RET_V50

按事件搜索到的录像文件的信息结构体。

struct{
  WORD                   wMajorType;
  WORD                   wMinorType;
  NET_DVR_TIME_SEARCH    struStartTime;
  NET_DVR_TIME_SEARCH    struEndTime;
  NET_DVR_ADDRESS        struAddr;
  WORD                   wChan[MAX_CHANNUM_V40];
  BYTE                   byRes[256];
  union{
           BYTE                  byLen[800];
           struct{
           DWORD                 dwAlarmInNo;
           BYTE                  byRes[796];
           }struAlarmRet;

           struct{
           DWORD                 dwMotDetNo;
           BYTE                  byRes[796];
           }struMotionRet;

           struct{
           DWORD                 dwChanNo;
           BYTE                  byRuleID;
           BYTE                  byRes1[3];
           BYTE                  byRuleName[NAME_LEN];
           NET_VCA_EVENT_UNION   uEvent;
           BYTE                  byRes[668];
           }struVcaRet;

           struct{
           BYTE                  byRoomIndex;
           BYTE                  byDriveIndex;
           BYTE                  byRes1[6];
           DWORD                 dwSegmentNo;
           WORD                  wSegmetSize;
           WORD                  wSegmentState;
           BYTE                  byRes2[784];
           }struInquestRet;

           struct{
           DWORD                 dwRecordType;
           DWORD                 dwRecordLength;
           BYTE                  byLockFlag;
           BYTE                  byDrawFrameType;
           BYTE                  byRes1[2];
           BYTE                  byFileName[NAME_LEN];
           DWORD                 dwFileIndex;
           BYTE                  byRes[752];
           }struStreamIDRet;

           struct{
           DWORD                 dwChanNo;
           BYTE                  byRes[796];
           }struPosRet;

           struct{
           BYTE                  byRoomIndex;
           BYTE                  byDriveIndex;
           WORD                  wSegmetSize;
           DWORD                 dwSegmentNo;
           BYTE                  bySegmentState;
           BYTE                  byCaseType;
           BYTE                  byRes[2];
           BYTE                  byCaseNo[CASE_NO_RET_LEN];
           BYTE                  byCaseName[CASE_NAME_RET_LEN];
           BYTE                  byLitigant1[LITIGANT_RET_LEN];
           BYTE                  byLitigant2[LITIGANT_RET_LEN];
           BYTE                  byChiefJudge[CHIEF_JUDGE_RET_LEN];
           BYTE                  byRes1[600];
           }struTrialRet;
  }uSeniorRet;
}NET_DVR_SEARCH_EVENT_RET_V50,*LPNET_DVR_SEARCH_EVENT_RET_V50;

Members

wMajorType
主类型，具体定义见下表：
enum _MAIN_EVENT_TYPE_{
  EVENT_MOT_DET        = 0,
  EVENT_ALARM_IN       = 1,
  EVENT_VCA_BEHAVIOR   = 2,
  EVENT_INQUEST        = 3,
  EVENT_VCA_DETECTION  = 4,
  EVENT_POS            = 5,
  EVENT_TRIAL_CASE     = 6,
  EVENT_STREAM_INFO    = 100
}MAIN_EVENT_TYPE
EVENT_MOT_DET
移动侦测
EVENT_ALARM_IN
报警输入
EVENT_VCA_BEHAVIOR
异常行为识别
EVENT_INQUEST
审讯事件
EVENT_VCA_DETECTION
智能侦测
EVENT_POS
POS录像
EVENT_TRIAL_CASE
庭审案件信息
EVENT_STREAM_INFO
流ID信息
wMinorType
不同的主类型对应次类型变化，0xffff表示全部。移动侦测、报警输入和POS录像没有对应次类型，其他主类型对应的次类型见下表：
主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_BEHAVIOR | 2 | 异常行为识别
次类型宏定义 | 宏定义值 | 含义
EVENT_TRAVERSE_PLANE | 0 | 穿越警戒面
EVENT_ENTER_AREA | 1 | 目标进入区域，支持区域规则
EVENT_EXIT_AREA | 2 | 目标离开区域，支持区域规则
EVENT_INTRUSION | 3 | 周界入侵，支持区域规则
EVENT_LOITER | 4 | 徘徊，支持区域规则
EVENT_LEFT_TAKE | 5 | 丢包捡包，支持区域规则
EVENT_PARKING | 6 | 停车，支持区域规则
EVENT_RUN | 7 | 奔跑，支持区域规则
EVENT_HIGH_DENSITY | 8 | 区域内人员密度，支持区域规则
EVENT_STICK_UP | 9 | 贴纸条，支持区域规则
EVENT_INSTALL_SCANNER | 10 | 安装读卡器，支持区域规则
EVENT_OPERATE_OVER_TIME | 11 | 操作超时
EVENT_FACE_DETECT | 12 | 异常人脸
EVENT_LEFT | 13 | 物品遗留
EVENT_TAKE | 14 | 物品拿取
EVENT_LEAVE_POSITION | 15 | 离岗事件
EVENT_TRAIL_INFO | 16 | 尾随
EVENT_FALL_DOWN_INFO | 19 | 倒地
EVENT_OBJECT_PASTE | 20 | 异物粘贴区域
EVENT_FACE_CAPTURE_INFO | 21 | 正常人脸
EVENT_MULTI_FACES_INFO | 22 | 多张人脸
EVENT_AUDIO_ABNORMAL_INFO | 23 | 声强突变
EVENT_SUNGLASSES_FACE_INFO | 25 | 戴墨镜人脸
EVENT_CALLING_FACE_INFO | 26 | 打电话人脸

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_INQUEST | 3 | 审讯事件
次类型宏定义 | 宏定义值 | 含义
INQUEST_START_INFO | 0x1001 | 审讯开始信息
INQUEST_STOP_INFO | 0x1002 | 审讯停止信息
INQUEST_TAG_INFO | 0x1003 | 重点标记信息
INQUEST_SEGMENT_INFO | 0x1004 | 审讯片断状态信息

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_VCA_DETECTION | 4 | 智能侦测
次类型宏定义 | 宏定义值 | 含义
EVENT_VCA_TRAVERSE_PLANE | 1 | 越界侦测
EVENT_FIELD_DETECTION | 2 | 区域入侵侦测
EVENT_AUDIO_INPUT_ALARM | 3 | 音频丢失侦测
EVENT_SOUND_INTENSITY_ALARM | 4 | 声强突变侦测（声强陡升侦测、声强陡降侦测）
EVENT_FACE_DETECTION | 5 | 人脸侦测
EVENT_VIRTUAL_FOCUS_ALARM | 6 | 虚焦侦测
EVENT_SCENE_CHANGE_ALARM | 7 | 场景变更侦测
EVENT_PIR_ALARM | 8 | PIR报警
EVENT_ENTER_REGION | 9 | 进入区域
EVENT_EXIT_REGION | 10 | 目标离开区域
EVENT_LOITERING | 11 | 徘徊
EVENT_GROUPDETECTION | 12 | 区域内人员聚集,支持区域规则
EVENT_RAPIDMOVE | 13 | 快速移动
EVENT_PARK | 14 | 停车
EVENT_UNATTENDED_BAGGAGE | 15 | 物品遗留
EVENT_ATTENDEDBAGGAGE | 16 | 物品拿取
EVENT_VEHICLE_DETECTION | 17 | 车辆检测

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_STREAM_INFO | 100 | 流ID信息
次类型宏定义 | 宏定义值 | 含义
EVENT_STREAM_ID | 0 | 流ID
EVENT_TIMING | 1 | 定时录像
EVENT_MOTION_DETECT | 2 | 移动侦测
EVENT_ALARM | 3 | 报警录像
EVENT_ALARM_OR_MOTION_DETECT | 4 | 报警或移动侦测
EVENT_ALARM_AND_MOTION_DETECT | 5 | 报警和移动侦测
EVENT_COMMAND_TRIGGER | 6 | 命令触发
EVENT_MANNUAL | 7 | 手动录像
EVENT_BACKUP_VOLUME | 8 | 存档卷录像
STREAM_EVENT_SEMAPHORE | 9 | 信号量
STREAM_EVENT_HIDE | 10 | 遮挡
STREAM_EVENT_INVERSE | 11 | 逆行
STREAM_EVENT_VIDEO_LOST | 12 | 视频丢失
STREAM_EVENT_WIRELESS_ALARM | 13 | 无线报警
STREAM_EVENT_PIR_ALARM | 14 | PIR报警
STREAM_EVENT_CALLHELP_ALARM | 15 | 呼救报警
STREAM_EVENT_FACESNAP | 16 | 人脸抓拍
STREAM_EVENT_FACE_DETECTION | 17 | 人脸侦测
STREAM_EVENT_ITS_PLATE | 18 | 车辆检测
STREAM_EVENT_PDC | 19 | 客流量统计
STREAM_EVENT_SCENECHANGE_DETECTION | 20 | 场景变更
STREAM_EVENT_DEFOCUS_DETECTION | 21 | 虚焦侦测
STREAM_EVENT_AUDIOEXCEPTION | 22 | 音频异常
VCA_EVENT_TRAVERSE_PLANE | 23 | 穿越警戒面
VCA_EVENT_INTRUSION | 24 | 周界入侵
VCA_EVENT_ENTER_AREA | 25 | 进入区域
VCA_EVENT_EXIT_AREA | 26 | 离开区域
VCA_EVENT_LOITER | 27 | 徘徊侦测
VCA_EVENT_HIGH_DENSITY | 28 | 人员聚集
VCA_EVENT_RUN | 29 | 快速移动
VCA_EVENT_PARKING | 30 | 非法停车
VCA_EVENT_LEFT, | 31 | 物品遗留
VCA_EVENT_TAKE | 32 | 物品拿取

主类型的宏定义 | 主类型的宏定义值 | 含义
EVENT_TRIAL_CASE | 5 | 庭审信息
次类型宏定义 | 宏定义值 | 含义
TRIAL_START_INFO | 0x1001 | 庭审开始事件
TRIAL_STOP_INFO | 0x1002 | 庭审结束事件
TRIAL_TAG_INFO | 0x1003 | 庭审重点标注事件
TRIAL_SEGMENT_INFO | 0x1004 | 庭审片段状态信息
TRIAL_JUDGE_CASE_INFO | 0x1005 | 庭审案件信息
struStartTime
事件的开始时间
struEndTime
事件的停止时间，脉冲事件时停止时间和开始时间一样
wChan
事件触发的通道号，0xffff表示后续无效
byRes
保留，置为0
uSeniorRet结构为事件搜索结果联合体
byLen
联合体大小，800字节
struAlarmRet结构为报警输入结果
dwAlarmInNo
报警输入号
byRes
保留
struMotionRet结构为移动侦测结果
dwMotDetNo
移动侦测通道
byRes
保留，置为0
struVcaRet结构为异常行为识别结果
dwChanNo
触发事件的通道
byRuleID
规则ID，0xff表示全部
byRes1
保留，置为0
byRuleName
规则名称
uEvent
行为事件参数，根据返回的事件次类型（wMinorType）决定
byRes
保留，置为0
struInquestRet结构为审讯事件结果
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，从1开始
byRes1
保留，置为0
dwSegmentNo
本片断在本次审讯中的序号，从1开始
wSegmetSize
本片断的大小，单位M
wSegmentState
本片断状态：0-刻录正常，1-刻录异常，2-不刻录审讯
byRes2
保留，置为0
struStreamIDRet结构为流id录像查询结果
dwRecordType
录像类型：0- 定时录像，1- 移动侦测录像，2- 信号量IO报警录像，3- 信号量IO报警或移动侦测录像， 4- 信号量IO报警和移动侦测录像，5- 命令触发录像，6-手动录像，7- 震动报警录像，8- 环境触发报警录像， 9- 智能报警录像（包含逆行，越界，物品丢失，遗留物等），10- 遮挡报警录像，13-全部事件(移动侦测、PIR、无线、呼救等所有报警类型的"或"）,24-录像拼接存档
dwRecordLength
录像大小
byLockFlag
锁定标志：0- 没锁定，1- 锁定
byDrawFrameType
是否是抽帧录像：0- 非抽帧录像，1- 抽帧录像
byRes1
保留，置为0
byFileName
文件名
dwFileIndex
存档卷上的文件索引
byRes
保留，置为0
struTrialRet结构为庭审信息查询结果
byRoomIndex
审讯室编号，从1开始
byDriveIndex
刻录机编号，从1开始
wSegmetSize
本片断的大小，单位：M
dwSegmentNo
本片断在本次审讯中的序号，从1开始
bySegmentState
本片断状态：0- 刻录正常，1- 刻录异常，2- 不刻录审讯
byCaseType
案件类型：0-全部，1- 刑事案件，2- 民事案件
byRes
保留，置为0
byCaseNo
案件编号
byCaseName
案件名称
byLitigant1
当事人1
byLitigant2
当事人2
byChiefJudge
审判长
byRes1
保留，置为0
struPosRet结构为POS录像查询结果
dwChanNo
触发产生POS事件的通道号
byRes
保留，置为0

See Also

NET_DVR_FindNextEvent_V50


NET_DVR_SECURITY_CFG

安全认证配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCommuMode;
  BYTE     byRes1[2];
  BYTE     byWebAuthentication;
  BYTE     byRtspAuthentication;
  BYTE     byTelnetServer;
  BYTE     bySSHServer;
  BYTE     byIllegalLoginLock;
  BYTE     byStreamEncryption;
  BYTE     byAntiAttack;
  BYTE     byRes[26];
}NET_DVR_SECURITY_CFG,*LPNET_DVR_SECURITY_CFG;

Members

dwSize
结构体大小
bySecurityLevel
私有协议通信模式：0-兼容模式，1-安全模式
byRes
保留，置为0
byWebAuthentication
web认证配置：0- Digest，1- basic(默认)，2- digest/basic
byRtspAuthentication
rtsp认证配置：0- 禁用，1-basic(默认)，2- digest，3- digest/basic
byTelnetServer
telnet设置：0- 禁用，1- 启用
bySSHServer
SSH设置：0- 禁用（默认），1- 启用
byIllegalLoginLock
开启登陆锁定：0-启用（默认），1-禁用
byStreamEncryption
码流加密：0-不加密，1-加密
byAntiAttack
是否开启防攻击功能：0- 不启用，1-启用(socket延时5s关闭)
byRes
保留，置为0

Remarks

  • 安全认证配置，只有管理员用户（admin）才有权限。
  • 安全等级关：不强制要求单条信令认证，按照SDK是否支持单条信令校验认证，来确定交互过程是否使用单条信令校验认证。SDK不支持，设备不校验。SDK支持，则设备校验。MD5，DES，模数加密方式都能登陆设备。Web认证级别低。
  • 安全等级开：强制要求单条信令认证。SDK不支持，则无法登陆，必须升级SDK版本。登陆认证方式只用MD5方式，DES及弱等级的登陆方式不能登陆设备。Web认证升级。安全等级开的时候，密码长度必须大于等于8位，且密码需要是数字、字符、特殊符号组成。用户名、密码不能相同。
  • 安全等级自定义：在自定义模式下，byCheckSingleCommad，byLoginLevel才有效。
  • 安全认证参数配置能力，对应安全认证配置能力集(SecurityAbility)，相关接口：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SECURITY_CFG_FILE_COND

安全导入导出配置文件输入参数结构体。

struct{
  DWORD    dwSize;
  char     szSecretKey[NET_SDK_SECRETKEY_LEN];
  BYTE     byRes[128];
}NET_DVR_SECURITY_CFG_FILE_COND,*LPNET_DVR_SECURITY_CFG_FILE_COND;

Members

dwSize
结构体大小
szSecretKey
配置文件校验密钥
byRes
保留，置为0

Remarks

  • 设备是否支持安全导入导出配置文件或者支持的参数能力，可以通过设备能力集进行判断，对应安全能力集(SecurityCap)，相关接口：NET_DVR_STDXMLConfig，命令：GET /ISAPI/Security/capabilities。

See Also

NET_DVR_UploadFile_V40 NET_DVR_StartDownload


NET_DVR_SECURITY_QUESTION_CFG

设备安全问题配置结构体。

struct{
  DWORD                                   dwSize;
  NET_DVR_SINGLE_SECURITY_QUESTION_CFG    struSecurityQuestion[NET_SDK_MAX_QUESTION_LIST_LEN];
  char                                    sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN];
  BYTE                                    byRes[512];
}NET_DVR_SECURITY_QUESTION_CFG, *LPNET_DVR_SECURITY_QUESTION_CFG;

Members

dwSize
结构体大小
struSecurityQuestion
安全问题列表，每位数组表示一个安全问题
sLoginPassWord
admin用户登录密码
byRes
保留，置为0

Remarks

  • 设备是否支持安全问题配置或者支持的参数能力，可以通过设备能力集进行判断，对应安全能力集(SecurityCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Security/capabilities，节点：<isSupportSecurityQuestionConfig>和<SecurityLimits>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SEND_CARD_INFO

可视对讲发卡信息。

struct{
  BYTE    byCardNo[ACS_CARD_NO_LEN];
  BYTE    byRes[224];
}NET_DVR_SEND_CARD_INFO, *LPNET_DVR_SEND_CARD_INFO;

Members

byCardNo
卡号
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON


NET_DVR_SEND_PARAM_IN

上传文件到云条件结构体。

struct{
  BYTE    *pSendData;
  DWORD     dwSendDataLen;
  NET_TIME_V30    struTime,
  BYTE     byPicType;
  BYTE     byRes[243];
}NET_DVR_SEND_PARAM_IN,*LPNET_DVR_SEND_PARAM_IN;

Members

pSendData
图片缓冲区
dwSendDataLen
图片数据长度
struTime
图片时间
byPicType
图片格式,1-jpg,2-bmp,3-png
byRes
保留，置为0

See Also

NET_DVR_UploadFile_V40 NET_DVR_UploadSend_Cloud


NET_DVR_SEND_PARAM_IN

数据发送输入参数结构体。

struct{
  BYTE                *pSendData;
  DWORD               dwSendDataLen;
  NET_DVR_TIME_V30    struTime;
  BYTE                byPicType;
  BYTE                byPicURL;
  BYTE                byRes1[2];
  DWORD               dwPicMangeNo;
  BYTE                sPicName[NAME_LEN];
  DWORD               dwPicDisplayTime;
  BYTE                *pSendAppendData;
  DWORD               dwSendAppendDataLen;
  BYTE                byRes[192];
 }NET_DVR_SEND_PARAM_IN,*LPNET_DVR_SEND_PARAM_IN;

Members

pSendData
发送的缓冲区
dwSendDataLen
发送数据长度
struTime
图片时间
byPicType
图片格式：1- jpg，2- bmp，3- png，4- SWF，5- GIF
byPicURL
图片数据采用URL方式 0-二进制图片数据，1-图片数据走URL方式
byRes1
保留，置为0
dwPicMangeNo
图片管理号
sPicName
图片名称
dwPicDisplayTime
图片播放时长，单位：秒
pSendAppendData
发送图片的附加信息缓冲区，不支持，设为NULL
dwSendAppendDataLen
发送图片的附加信息数据长度，不支持，设为0
byRes
保留，置为0

Remarks

上传图片文件到设备。

See Also

NET_DVR_UploadSend


NET_DVR_SEND_PARAM_IN

数据发送输入参数结构体。

struct{
  BYTE                *pSendData;
  DWORD               dwSendDataLen;
  NET_DVR_TIME_V30    struTime;
  BYTE                byPicType;
  BYTE                byRes1[3];
  DWORD               dwPicMangeNo;
  BYTE                sPicName[NAME_LEN];
  DWORD               dwPicDisplayTime;
  BYTE                *pSendAppendData;
  DWORD               dwSendAppendDataLen;
  BYTE                byRes[192];
 }NET_DVR_SEND_PARAM_IN,*LPNET_DVR_SEND_PARAM_IN;

Members

pSendData
发送的缓冲区
dwSendDataLen
发送数据长度
struTime
图片时间
byPicType
图片格式：1- jpg，2- bmp，3- png，4- SWF，5- GIF
byRes1
保留，置为0
dwPicMangeNo
图片管理号
sPicName
图片名称
dwPicDisplayTime
图片播放时长，单位：秒
pSendAppendData
发送图片的附加信息缓冲区，不支持，设为NULL
dwSendAppendDataLen
发送图片的附加信息数据长度，不支持，设为0
byRes
保留，置为0

Remarks

上传文件卷数据文件时，仅其中pSendData、dwSendDataLen字段有效。

See Also

NET_DVR_UploadSend


NET_DVR_SEND_PARAM_IN

数据发送输入参数结构体。

struct{
  BYTE                *pSendData;
  DWORD               dwSendDataLen;
  NET_DVR_TIME_V30    struTime;
  BYTE                byPicType;
  BYTE                byRes1[3];
  DWORD               dwPicMangeNo;
  BYTE                sPicName[NAME_LEN];
  DWORD               dwPicDisplayTime;
  BYTE                *pSendAppendData;
  DWORD               dwSendAppendDataLen;
  BYTE                byRes[192];
 }NET_DVR_SEND_PARAM_IN,*LPNET_DVR_SEND_PARAM_IN;

Members

pSendData
发送的缓冲区，存放需要上传的图片数据
dwSendDataLen
发送数据长度
struTime
图片时间
byPicType
图片格式：1- jpg，2- bmp，3- png，4- SWF，5- GIF
byRes1
保留，置为0
dwPicMangeNo
图片管理号(不使用)
sPicName
图片名称(不使用)
dwPicDisplayTime
图片播放时长(不使用)，单位：秒
pSendAppendData
发送图片的附加信息缓冲区，不支持，设为NULL
dwSendAppendDataLen
发送图片的附加信息数据长度，不支持，设为0
byRes
保留，置为0

Remarks

上传一个图片数据。

See Also

NET_DVR_UploadSend


NET_DVR_SEND_PARAM_IN

数据发送输入参数结构体。

struct{
  BYTE                *pSendData;
  DWORD               dwSendDataLen;
  NET_DVR_TIME_V30    struTime;
  BYTE                byPicType;
  BYTE                byRes1[3];
  DWORD               dwPicMangeNo;
  BYTE                sPicName[NAME_LEN];
  DWORD               dwPicDisplayTime;
  BYTE                *pSendAppendData;
  DWORD               dwSendAppendDataLen;
  BYTE                byRes[192];
 }NET_DVR_SEND_PARAM_IN,*LPNET_DVR_SEND_PARAM_IN;

Members

pSendData
发送的缓冲区，存放图片二进制数据
dwSendDataLen
发送数据长度
struTime
图片时间
byPicType
图片格式：1- jpg，2- bmp，3- png，4- SWF，5- GIF
byRes1
保留，置为0
dwPicMangeNo
图片管理号，人脸库不支持，设为0
sPicName
图片名称
dwPicDisplayTime
图片播放时长，单位：秒，人脸库不支持，设为0
pSendAppendData
发送图片的附加信息缓冲区，对应XML格式数据：FaceAppendData
dwSendAppendDataLen
发送图片的附加信息数据长度
byRes
保留，置为0

Remarks

将人脸数据(人脸图片+图片附件信息)发送到设备的人脸库，目前人脸库只支持jpg图片格式。

See Also

NET_DVR_UploadSend


NET_DVR_SENSOR_ADJUSTMENT

Sensor调节参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byType;
  BYTE     bySensorNo;
  BYTE     byRes[2];
  int      iAdjustMentRange;
  BYTE     byR;
  BYTE     byG;
  BYTE     byB;
  BYTE     byRes1[125];
}NET_DVR_SENSOR_ADJUSTMENT, *LPNET_DVR_SENSOR_ADJUSTMENT;

Members

dwSize
结构体大小
byType
调整模式：0- 上下，1- 左右，2- 旋转，3- 图像视场角，4- RGB调整
bySensorNo
Sensor序号，取值范围：[1,8]
byRes
保留，置为0
iAdjustMentRange
调整幅度，上下左右调整取值范围：[-100,100]，旋转调整取值范围：[-30,30]，图像视场角调整取值范围：[-10,10]
byR
RGB参数，R（红色），范围：0~255，byType为4时有效
byG
RGB参数，G（绿色），范围：0~255，byType为4时有效
byB
RGB参数，B（蓝色），范围：0~255，byType为4时有效
byRes1
保留，置为0

Remarks

  • 向上移动是负，向下移动是正[需要补充说明下：球型鹰眼的取值反的，即：向上移动是正，向下移动是负]；
    向右移动是负，向左移动是正；
    顺时针旋转是负，逆时针旋转是正；
    视场角缩小是负，视场角放大是正；
    RGB参数配置中的R/G/B的值任意两个值的大小相差5时，设置才会成功。
  • 设备是否支持Sensor调节能力，可以通过设备能力集进行判断，对应Sensor调节参数能力集(SensorCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES。

See Also

NET_DVR_STDControl


NET_DVR_SENSOR_ADJUSTMENT_INFO

Sensor调节信息结构体。

struct{
  DWORD    dwSize;
  int      iPan;
  int      iTilt;
  int      iRotation;
  int      iFieldAngle;
  BYTE     byRes[128];
}NET_DVR_SENSOR_ADJUSTMENT_INFO, *LPNET_DVR_SENSOR_ADJUSTMENT_INFO;

Members

dwSize
结构体大小
iPan
水平左右值
iTilt
垂直上下值
iRotation
旋转角度值
iFieldAngle
图像视场角值
byRes
保留，置为0

Remarks

  • 向上移动是负，向下移动是正[需要补充说明下：球型鹰眼的取值反的，即：向上移动是正，向下移动是负]；
    向右移动是负，向左移动是正；
    顺时针旋转是负，逆时针旋转是正；
    视场角缩小是负，视场角放大是正。
  • 设备是否支持Sensor调节能力，可以通过设备能力集进行判断，对应Sensor调节参数能力集(SensorCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig


NET_DVR_SENSOR_ALARM

模拟量上传数据结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAbsTime;
  BYTE     byName[NAME_LEN];
  BYTE     bySensorChannel;
  BYTE     byType;
  BYTE     byAlarmType;
  BYTE     byAlarmMode;
  float    fValue;
  float    fOriginalValue;
  BYTE     byRes2[28];
}NET_DVR_SENSOR_ALARM, *LPNET_DVR_SENSOR_ALARM;

Members

dwSize
结构体大小
dwAbsTime
绝对时标信息，OSD显示信息
byName
传感器名称
bySensorChannel
模拟量通道
byType
模拟量类型，具体定义如下：
enum _SENSOR_TYPE_{
  SENSOR_TYPE_NONE           = 0,
  SENSOR_TYPE_TEMPERATURE    = 1,
  SENSOR_TYPE_HUMIDITY,
  SENSOR_TYPE_WINDSPEED,
  SENSOR_TYPE_GAS,
  SENSOR_AC_VOLTAGE,
  SENSOR_AC_CURRENT,
  SENSOR_DC_VOLTAGE,
  SENSOR_DC_CURRENT,
  SENSOR_WATER_PRESSURE,
  SENSOR_PRESSURE_TRANSMITTER,
  SENSOR_FLOW_TRANSMITTER,
  SENSOR_WATER_LEAKAGE,
  SENSOR_INTERGRATED_TEMPERATURE_DETECTOR,
  SENSOR_ISOLATION_TEMPERATURE_DETECTOR,
  SENSOR_RESIDUAL_CHLORINE,
  SENSOR_TYPE_UNKNOW         = 255
}SENSOR_TYPE
SENSOR_TYPE_NONE
无
SENSOR_TYPE_TEMPERATURE
温度
SENSOR_TYPE_HUMIDITY
湿度
SENSOR_TYPE_WINDSPEED
风速
SENSOR_TYPE_GAS
气体
SENSOR_AC_VOLTAGE
交流电压
SENSOR_AC_CURRENT
交流电流
SENSOR_DC_VOLTAGE
直流电压
SENSOR_DC_CURRENT
直流电流
SENSOR_WATER_PRESSURE
水压
SENSOR_PRESSURE_TRANSMITTER
压力变送器
SENSOR_FLOW_TRANSMITTER
流量变送器
SENSOR_WATER_LEAKAGE
漏水传感器
SENSOR_INTERGRATED_TEMPERATURE_DETECTOR
一体化温变
SENSOR_ISOLATION_TEMPERATURE_DETECTOR
隔离式温变
SENSOR_RESIDUAL_CHLORINE
在线余氯仪
SENSOR_TYPE_UNKNOW
未定义
byAlarmType
报警类型：1-上4，2-上3，3-上2，4-上1，5-下1，6-下2，7-下3，8-下4，0xff-故障报警，具体类型和当前报警模式有关。
byAlarmMode
报警模式，作为平台报警程度判断功能，共五种模式: 15-HHHH、14-HHHL、12-HHLL、8HLLL、0-LLLL，即：
1111- 上上上上
1110- 上上上下
1100- 上上下下
1000- 上下下下
0000- 下下下下
fValue
当前模拟量的值，当byAlarmType为0xff时该值无效
fOriginalValue
原始电流电压值，保留小数点后三位，具体值表示电流还是电压根据NET_DVR_SENSOR_INFO的bySensorStandard类型
byRes2
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30

NET_DVR_GetDVRConfig


NET_DVR_SENSOR_CFG

传感器信息结构体。

struct{
  DWORD               dwSize;
  BYTE                byEnable;
  BYTE                byDeviceType;
  BYTE                byDeviceID;
  BYTE                byRes1;
  NET_DVR_TIME_V30    struTime;
  BYTE                byIsFirst;
  BYTE                byIsSwitchOn;
  BYTE                bySensorStatus;
  BYTE                bySensorType;
  float               fVoltage;
  float               fCurrent;
  float               fTemperatureValue;
  float               fHumidityValue;
  BYTE                bySensorName[SENSORNAME_LEN];
  BYTE                byDescription[MAX_SENSORDESCR_LEN];
  BYTE                byRes[256];
}NET_DVR_SENSOR_CFG,*LPNET_DVR_SENSOR_CFG;

Members

dwSize
结构体大小
byEnable
当前查询的传感器是否使能：0- 不使能，1- 使能
byDeviceType
设备类型：0- 未知，1- 模拟量传感器，2- 上电端子，3- 上电插座
byDeviceID
设备ID，Analog(模拟量传感器)范围：1~8，Terminal(上电端子)范围：1~4，Socket(上电插座)范围：1~2
byRes1
保留，置为0
struTime
上传时间
byIsFirst
是否是启动后第一条数据(检测是否有重启)：0- 否，1- 是
byIsSwitchOn
是否通电：0- 否，1- 是
bySensorStatus
传感器状态：0- 正常，1- 异常，2- 报警；
bySensorType
传感器类型：0- 未知1- 温度，2- 湿度；
fVoltage
电压，单位：伏特，精确到0.001，若为0xff表示无效值
fCurrent
电流，单位：毫安，精确到0.001，若为0xff表示无效值
fTemperatureValue
温度值，单位：摄氏度，精确到0.001，若为0xff表示无效值
fHumidityValue
湿度值，精确到0.001，若为0xff表示无效值
bySensorName
传感器名称
byDescription
传感器数据的描述信息，statusType为正常时description可以为空
byRes
保留，置为0

Remarks

  • 设备支持的传感器功能对应传感器能力集(SensorPortList)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_SENSOR_PORT_CAPABILITIES)。

    • See Also

    NET_DVR_GetNextRemoteConfig


NET_DVR_SENSOR_COND

传感器信息查询条件结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byQueryType;
  BYTE                              byDeviceType;
  BYTE                              byDeviceID;
  BYTE                              byRes1;
  NET_DVR_HISTORICAL_QUERY_PARAM    struHistoricalQueryParam;
  BYTE                              byRes[64];
}NET_DVR_SENSOR_COND, *LPNET_DVR_SENSOR_COND;

Members

dwSize
结构体大小
byQueryType
查询方式：0- 实时数据查询，1- 历史数据查询
byDeviceType
设备类型：0- 未知，1- 模拟量传感器，2- 上电端子，3- 上电插座，0xff表示查询所有
byDeviceID
设备ID，Analog(模拟量传感器)范围：1~8，Terminal(上电端子)范围：1~4，Socket(上电插座)范围：1~2，0xff表示查询所有
byRes1
保留，置为0
struHistoricalQueryParam
历史数据查询参数
byRes
保留

Remarks

  • 设备支持的传感器功能对应传感器能力集(SensorPortList)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_SENSOR_PORT_CAPABILITIES)。

    • See Also

    NET_DVR_StartRemoteConfig


NET_DVR_SENSOR_INFO

模拟量参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byName[MAX_NAMELEN];
  BYTE     byEnable;
  BYTE     byValid;
  BYTE     byType;
  BYTE     byAlarmMode;
  float    fMeasureHigh;
  float    fMeasureLow;
  float    fAlarm1;
  float    fAlarm2;
  float    fAlarm3;
  float    fAlarm4;
  DWORD    dwOsdCfg;
  float    fSensitive;
  BYTE     bySensorStandard;
  BYTE     byChan;
  BYTE     byRes3[114];
}NET_DVR_SENSOR_INFO, *LPNET_DVR_SENSOR_INFO;

Members

dwSize
结构体大小
byName
传感器名称
byEnable
是否启用
byValid
是否有效，传感器正常不正常(该参数只能获取不能个配置)
byType
模拟量类型，具体定义如下：
enum _SENSOR_TYPE_{
  SENSOR_TYPE_NONE           = 0,
  SENSOR_TYPE_TEMPERATURE    = 1,
  SENSOR_TYPE_HUMIDITY,
  SENSOR_TYPE_WINDSPEED,
  SENSOR_TYPE_GAS,
  SENSOR_AC_VOLTAGE,
  SENSOR_AC_CURRENT,
  SENSOR_DC_VOLTAGE,
  SENSOR_DC_CURRENT,
  SENSOR_WATER_PRESSURE,
  SENSOR_PRESSURE_TRANSMITTER,
  SENSOR_FLOW_TRANSMITTER,
  SENSOR_WATER_LEAKAGE,
  SENSOR_INTERGRATED_TEMPERATURE_DETECTOR,
  SENSOR_ISOLATION_TEMPERATURE_DETECTOR,
  SENSOR_RESIDUAL_CHLORINE,
  SENSOR_TYPE_AC_TERMINAL  = 16,
  SENSOR_TYPE_AC_SOCKET    = 17,
     SENSOR_TYPE_HUMITURE     ,
     SENSOR_TYPE_FLOW                   ,
    SENSOR_LIQUID_LEVEL                ,
     SENSOR_TYPE_ARC                        ,
  SENSOR_TYPE_UNKNOW       = 255
}SENSOR_TYPE
SENSOR_TYPE_NONE
无
SENSOR_TYPE_TEMPERATURE
温度
SENSOR_TYPE_HUMIDITY
湿度
SENSOR_TYPE_WINDSPEED
风速
SENSOR_TYPE_GAS
气体
SENSOR_AC_VOLTAGE
交流电压
SENSOR_AC_CURRENT
交流电流
SENSOR_DC_VOLTAGE
直流电压
SENSOR_DC_CURRENT
直流电流
SENSOR_WATER_PRESSURE
水压
SENSOR_PRESSURE_TRANSMITTER
压力变送器
SENSOR_FLOW_TRANSMITTER
流量变送器
SENSOR_WATER_LEAKAGE
漏水传感器
SENSOR_INTERGRATED_TEMPERATURE_DETECTOR
一体化温变
SENSOR_ISOLATION_TEMPERATURE_DETECTOR
隔离式温变
SENSOR_RESIDUAL_CHLORINE
在线余氯仪
SENSOR_TYPE_AC_TERMINAL
AC端子
SENSOR_TYPE_AC_SOCKET
AC插座
SENSOR_TYPE_HUMITURE
流量
SENSOR_TYPE_HUMITURE
温湿度
SENSOR_TYPE_FLOW
流量
SENSOR_LIQUID_LEVEL
液位
SENSOR_TYPE_ARC
电弧
SENSOR_TYPE_UNKNOW
未定义
byAlarmMode
报警模式，共五种模式: 15-HHHH、14-HHHL、12-HHLL、8HLLL、0-LLLL，即：
1111- 上上上上
1110- 上上上下
1100- 上上下下
1000- 上下下下
0000- 下下下下
fMeasureHigh
量程上限
fMeasureLow
量程下限
fAlarm1
报警限1
fAlarm2
报警限2
fAlarm3
报警限3
fAlarm4
报警限4，报警限1-4依次增大
dwOsdCfg
模拟量字符叠加，按位表示。0-15对应视频通道1-16
fSensitive
灵敏度
bySensorStandard
传感器规格：0- 4~20mA，1- 0~5V
byChan
模拟量通道号
byRes3
保留

Remarks

  • 当实时值的变化超过灵敏度的范围时，则表示实时值发生了变化，否则认为没有发生变化。如：灵敏度为0.1，则表示前后检测的两个值之差大于0.1时，则认为数据发生变化，需要上传；如果灵敏度为1，则表示变化超过1时上传。
  • 量程、报警限值、灵敏度，获取的为实际值，比如：fSensitive是0.001，灵敏度就是0.001，如果用%表示，那就是0.1%。
  • 量程和报警限制的范围是-10000~10000。
  • 动环监控主机不支持dwOsdCfg。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig NET_DVR_GetNextRemoteConfig


NET_DVR_SENSOR_INFO_UPLOAD

传感器上传信息结构体。

struct{
  DWORD               dwSize;
  NET_DVR_TIME_V30    struTime;
  char                szSensorName[MAX_SENSORNAME_LEN];
  char                szSensorChan[MAX_SENSORNAME_LEN];
  BYTE                byReboot;
  BYTE                byPowerSupply;
  BYTE                byStatusType;
  BYTE                bySensorType;
  float               fVoltageValue;
  float               fCurrentValue;
  float               fActualValue;
  char                szDescription[MAX_DESCRIPTION_LEN];
  BYTE                byRes1[128];
}NET_DVR_SENSOR_INFO_UPLOAD,*LPNET_DVR_SENSOR_INFO_UPLOAD;

Members

dwSize
结构体大小
strustruTime
上传时间
szSensorName
传感器名称
szSensorChan
传感器通道名称
byReboot
之前是否重启过（一般是重启的后的第一条数据带有这个标志）：0- 没有重启，1- 有过重启
byPowerSupply
是否正常供电：0- 不在供电，1- 正在供电
byStatusType
设备状态：0- 正常，1- 异常，2- 报警
bySensorType
传感器类型，具体定义如下：
enum _SENSOR_TYPE_{
  SENSOR_TYPE_NONE           = 0,
  SENSOR_TYPE_TEMPERATURE    = 1,
  SENSOR_TYPE_HUMIDITY,
  SENSOR_TYPE_WINDSPEED,
  SENSOR_TYPE_GAS,
  SENSOR_AC_VOLTAGE,
  SENSOR_AC_CURRENT,
  SENSOR_DC_VOLTAGE,
  SENSOR_DC_CURRENT,
  SENSOR_WATER_PRESSURE,
  SENSOR_PRESSURE_TRANSMITTER,
  SENSOR_FLOW_TRANSMITTER,
  SENSOR_WATER_LEAKAGE,
  SENSOR_INTERGRATED_TEMPERATURE_DETECTOR,
  SENSOR_ISOLATION_TEMPERATURE_DETECTOR,
  SENSOR_RESIDUAL_CHLORINE,
  SENSOR_TYPE_AC_TERMINAL  = 16,
  SENSOR_TYPE_AC_SOCKET    = 17,
  SENSOR_TYPE_UNKNOW       = 255
}SENSOR_TYPE
SENSOR_TYPE_NONE
无
SENSOR_TYPE_TEMPERATURE
温度
SENSOR_TYPE_HUMIDITY
湿度
SENSOR_TYPE_WINDSPEED
风速
SENSOR_TYPE_GAS
气体
SENSOR_AC_VOLTAGE
交流电压
SENSOR_AC_CURRENT
交流电流
SENSOR_DC_VOLTAGE
直流电压
SENSOR_DC_CURRENT
直流电流
SENSOR_WATER_PRESSURE
水压
SENSOR_PRESSURE_TRANSMITTER
压力变送器
SENSOR_FLOW_TRANSMITTER
流量变送器
SENSOR_WATER_LEAKAGE
漏水传感器
SENSOR_INTERGRATED_TEMPERATURE_DETECTOR
一体化温变
SENSOR_ISOLATION_TEMPERATURE_DETECTOR
隔离式温变
SENSOR_RESIDUAL_CHLORINE
在线余氯仪
SENSOR_TYPE_AC_TERMINAL
AC端子
SENSOR_TYPE_AC_SOCKET
AC插座
SENSOR_TYPE_UNKNOW
未定义
fVoltageValue
电压值，精确到0.001
fCurrentValue
电流值，精确到0.001
fActualValue
模拟信号转换后的数值，精确到0.001
szDescription
描述信息，当设备状态（byStatusType）不为0时生效
byRes1
保留，置为0

Remarks

  • 设备支持的传感器功能对应传感器能力集(SensorPortList)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_SENSOR_PORT_CAPABILITIES)。

    • See Also

    NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_SENSOR_PARAM

传感器参数结构体。

struct{
  BYTE     bySensorType;
  BYTE     byRes[3];
  float    fHorWidth;
  float    fVerWidth;
  float    fFold;
}NET_DVR_SENSOR_PARAM,*LPNET_DVR_SENSOR_PARAM;

Members

bySensorType
传感器类型：0- CCD，1- CMOS
byRes
保留，置为0
fHorWidth
水平宽度，精确到小数点后两位，单位: mm
fVerWidth
垂直宽度，精确到小数点后两位，单位: mm
fFold
Zoom=1没变倍时的焦距，精确到小数点后两位

See Also

NET_DVR_GIS_UPLOADINFO NET_DVR_GIS_INFO


NET_DVR_SENSOR_RESET

Sensor调节复位参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySensorNo;
  BYTE     byRes[127];
}NET_DVR_SENSOR_RESET, *LPNET_DVR_SENSOR_RESET;

Members

dwSize
结构体大小
bySensorNo
Sensor序号，取值范围：[0,8]，0表示全部清除，1~8表示单个清除
byRes
保留，置为0

Remarks

  • 设备是否支持Sensor调节复位能力，可以通过设备能力集进行判断，对应Sensor调节参数能力集(SensorCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES。

See Also

NET_DVR_STDControl


NET_DVR_SENSOR_SWITCH_COND

传感器控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDeviceType;
  BYTE     byDeviceID;
  BYTE     bySwitch;
  BYTE     byRes[125];
}NET_DVR_SENSOR_SWITCH_COND, *LPNET_DVR_SENSOR_SWITCH_COND;

Members

dwSize
结构体大小
byDeviceType
设备类型：0- 未知，1- 上电端子Terminal，3- 上电插座Socket
byDeviceID
设备ID，Terminal(上电端子)范围：1~4，Socket(上电插座)范围：1~2
bySwitch
开关控制：0-断电，1- 上电，2- 重启
byRes
保留

See Also

NET_DVR_STDControl


NET_DVR_SENSOR_VALUE

传感器数值参数结构体。

struct{
  float    fMinValue;
  float    fMaxValue;
  BYTE     byRes[8];
}NET_DVR_SENSOR_VALUE, *LPNET_DVR_SENSOR_VALUE;

Members

fMinValue
最小值，精确到0.001，若为0xfffffffff表示查询所有
fMaxValue
最大值，精确到0.001，若为0xfffffffff表示查询所有
byRes
保留

See Also

NET_DVR_HISTORICAL_QUERY_PARAM


NET_DVR_SERIAL_CATCHPIC_PARA

串口抓图参数结构体。

struct{
  BYTE      byStrFlag;
  BYTE      byEndFlag;
  WORD      wCardIdx;
  DWORD     dwCardLen;
  DWORD     dwTriggerPicChans;
}NET_DVR_SERIAL_CATCHPIC_PARA, *LPNET_DVR_SERIAL_CATCHPIC_PARA;

Members

byStrFlag
串口数据开始符
byEndFlag
串口数据结束符
wCardIdx
卡号相对起始位置
dwCardLen
卡号长度
dwTriggerPicChans
所触发的通道号，按位，从第1位开始计，即0x2表示第一通道

See Also

NET_DVR_JPEGCFG_V30


NET_DVR_SERIAL_CONTROL

串口信息结构体。

struct{
  DWORD    dwSize;
  BYTE     bySerialNum;
  BYTE     byRes1[3];
  BYTE     bySerial[32];
  BYTE     byRes2[32];
}NET_DVR_SERIAL_CONTROL,*LPNET_DVR_SERIAL_CONTROL;

Members

dwSize
结构体大小
bySerialNum
串口个数
byRes1
保留
bySerial
有效串口序号，数组的前bySerialNum个数据有效，bySerial[0]=1表示COM1
byRes2
保留

See Also

LCD拼接屏：NET_DVR_GetDVRConfig


NET_DVR_SERIALSTART_V40

透明通道串口参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwSerialType;
  BYTE     bySerialNum;
  BYTE     byRes[255];
}NET_DVR_SERIALSTART_V40,*LPNET_DVR_SERIALSTART_V40;

Members

dwSize
结构体大小
dwSerialType
串口类型：1- 232串口，2- 485串口
bySerialNum
串口编号（设备支持多个RS232串口时有效）
byRes
保留，置为0

Remarks

RS232串口作为透明通道使用时，必须先在232串口的配置信息中将工作模式选为透明通道，即调用接口NET_DVR_GetDVRConfig和NET_DVR_SetDVRConfig获取和设置RS232参数（NET_DVR_RS232CFG_V30）中的dwWorkMode值为透明通道，否则建立透明通道将失败。

See Also

NET_DVR_SerialStart_V40


NET_DVR_SERVER_TEST_PARA

服务器测试参数结构体。

struct{
  DWORD                                         dwSize;
  union{
         BYTE                                   byRes[740];
         struct{
             NET_DVR_NTPPARA                    struNtpPara;
             BYTE                               byRes1[660];
         }struNtpPara;

         struct{
             NET_DVR_SINGLE_NET_DISK_INFO_V40   struNasPara;
             BYTE                               byRes1[260];
         }struNasPara;

         struct{
             NET_DVR_FTP_SERVER_TEST_PARA       struFtpPara;
             BYTE                               byRes1[212];
         }struFtpPara;

         struct{
             NET_DVR_EMAILCFG_V30               struEmailPara;
             BYTE                               byRes1[80];
         }struEmailPara;

         struct{
             NET_DVR_IPADDR                     struIp;
             BYTE                               byRes1[716];
         }struIpPara;

         struct{
             NET_DVR_IPADDR                     struIPAdder;
             WORD                               wPort;
             BYTE                               byRes2[2];
             char                               szUser[CLOUD_NAME_LEN];
             char                               szPassword[CLOUD_PASSWD_LEN];
             NET_DVR_POOLPARAM                  struPoolInfo[16];
             BYTE                               byProtocolType;
             BYTE                               byRes3[3];
             char                               szAccessKey[NET_SDK_ACCESS_KEY_LEN];
             char                               szSecretKey[NET_SDK_SECRET_KEY_LEN];
             BYTE                               byRes1[354];
         }struCloudStoragePara;

         struct{
             BYTE                               byPhoneNum[MAX_PHONE_NUM];
             BYTE                               byRes1[708];
         }struPhoneNumPara;

  }unionServerPara;
  BYTE                                          byRes2[800];
}NET_DVR_SERVER_TEST_PARA,*LPNET_DVR_EMAILCFG_V30;

Members

dwSize
结构体大小
unionServerPara为服务器测试参数联合体
byRes
联合体大小，740字节
struNtpPara结构为NTP服务器测试参数
struNtpPara
NTP参数
byRes1
保留
struNasPara结构为NAS服务器测试参数
struNasPara
NAS参数
byRes1
保留
struFtpPara结构为FTP服务器测试参数
struFtpPara
FTP参数
byRes1
保留
struEmailPara结构为EMAIL服务器测试参数
struEmailPara
EMAIL参数
byRes1
保留
struIpPara结构为IP测试参数
struIp
IP地址
byRes1
保留
struCloudStoragePara结构为云存储服务器测试参数
struIPAdder
云存储服务器IP地址
wPort
云存储服务器端口号
byRes2
保留
szUser
云存储服务器用户名
szPassword
云存储服务器密码
struPoolInfo
数组0表示卡口图片数据池，数组1表示违章图片数据池，数组2表示车辆侦测数据池（IPC/D）
byProtocolType
云存储协议版本：0- 1.0版本，1- 2.0版本
byRes3
保留
szAccessKey
访问密钥
szSecretKey
加密密钥
byRes1
保留
struIpPara结构为短信测试参数
byPhoneNum
电话号码
byRes1
保留
byRes2
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_SETUP_CALIB_COND

客流相机架设标定检验条件参数结构体。

struct{
  DWORD              dwSize;
  BYTE               byCalibrateType;
  BYTE               byRes1[3];
  float              fTiltAngle;
  float              fHeelAngle;
  float              fHeight;
  NET_VCA_POLYGON    struAutoCalibPolygon;
  BYTE               byIntelligentType;
  BYTE               byRes[127];
}NET_DVR_SETUP_CALIB_COND,*LPNET_DVR_SETUP_CALIB_COND;

Members

dwSize
结构体大小
byCalibrateType
标定类型：0- 未进行标定，1- 自动标定，2- 手动标定
byRes1
保留，置为0
fTiltAngle
俯仰角，单位：度，默认值：0，取值范围：0~180，当byCalibrateType为2时有效
fHeelAngle
倾斜角，单位：度，默认值：0，取值范围：-90~90，当byCalibrateType为2时有效
fHeight
高度，单位：厘米，默认值：300，取值范围：200~500，当byCalibrateType为2时有效
struAutoCalibPolygon
自动标定区域，当byCalibrateType为1时有效
byIntelligentType
标定的智能类型：0- 保留，1- 客流，2- 人体属性，3- 异常行为识别, 4- 学生站立检测,只有在标定客流时NET_DVR_SETUP_CALIB_RESULT返回的数据才有效
byRes
保留，置为0

Remarks

  • 设备是否支持架设标定检验功能或者支持的参数，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，对应节点：<PDC>中的<isSupportCalibrate>和<CountingCalibrate>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_SETUP_CALIB_RESULT

客流相机架设标定检验结果参数结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byCalibrateType;
  BYTE                           byRes1[3];
  float                          fTiltAngle;
  float                          fHeelAngle;
  float                          fHeight;
  NET_VCA_POLYGON                struCountPolygon;
  NET_DVR_PDC_ENTER_DIRECTION    struEnterDirection;
  NET_VCA_LINE                   struLine;
  BYTE                           byRes[128];
}NET_DVR_SETUP_CALIB_RESULT,*LPNET_DVR_SETUP_CALIB_RESULT;

Members

dwSize
结构体大小
byCalibrateType
标定类型：0- 未进行标定，1- 自动标定，2- 手动标定
byRes1
保留，置为0
fTiltAngle
俯仰角，单位：度，默认值：0，取值范围：0~180，当byCalibrateType为2时有效
fHeelAngle
倾斜角，单位：度，默认值：0，取值范围：-90~90，当byCalibrateType为2时有效
fHeight
高度，单位：厘米，默认值：300，取值范围：200~500，当byCalibrateType为2时有效
struCountPolygon
计数区域
struEnterDirection
流量进入方向
struLine
检测线
byRes
保留，置为0

Remarks

  • 在标定客流即NET_DVR_SETUP_CALIB_COND中的参数byIntelligentType为1时，该结构体数据(NET_DVR_GetSTDConfig接口返回的输出参数)才有效。
  • 设备是否支持架设标定检验功能或者支持的参数，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，对应节点：<PDC>中的<isSupportCalibrate>和<CountingCalibrate>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_SETUPALARM_PARAM

报警布防参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byLevel;
  BYTE     byAlarmInfoType;
  BYTE     byRetAlarmTypeV40;
  BYTE     byRetDevInfoVersion;
  BYTE     byRetVQDAlarmType;
  BYTE     byFaceAlarmDetection;
  BYTE     bySupport;
  BYTE     byBrokenNetHttp;
  WORD     wTaskNo;
  BYTE     byDeployType;
  BYTE     byRes1[3];
  BYTE     byAlarmTypeURL;
  BYTE     byCustomCtrl;
}NET_DVR_SETUPALARM_PARAM, *LPNET_DVR_SETUPALARM_PARAM;

Members

dwSize
结构体大小
byLevel
布防优先级：0- 一等级（高），1- 二等级（中），2- 三等级（低）
byAlarmInfoType
智能交通报警信息上传类型：0- 老报警信息（NET_DVR_PLATE_RESULT），1- 新报警信息(NET_ITS_PLATE_RESULT)
byRetAlarmTypeV40
0- 移动侦测、视频丢失、遮挡、IO信号量等报警信息以普通方式上传（报警类型：COMM_ALARM_V30，报警信息结构体：NET_DVR_ALARMINFO_V30），1- 报警信息以数据可变长方式上传（报警类型：COMM_ALARM_V40，报警信息结构体：NET_DVR_ALARMINFO_V40，设备若不支持则仍以普通方式上传）
byRetDevInfoVersion
CVR上传报警信息类型(仅对接CVR时有效)：0- COMM_ALARM_DEVICE（对应报警信息结构体：NET_DVR_ALARMINFO_DEV），1- COMM_ALARM_DEVICE_V40（对应报警信息结构体：NET_DVR_ALARMINFO_DEV_V40）
byRetVQDAlarmType
VQD报警上传类型(仅对接VQD诊断功能的设备有效)：0- COMM_ALARM_VQD（对应报警信息结构体：NET_DVR_VQD_DIAGNOSE_INFO），1- COMM_ALARM_VQD_EX（对应报警信息结构体：NET_DVR_VQD_ALARM，包含前端设备信息和抓拍图片）
byFaceAlarmDetection
人脸报警信息类型：1- 人脸侦测报警(报警类型：COMM_ALARM_FACE_DETECTION，NET_DVR_FACE_DETECTION)，0- 人脸抓拍报警(报警类型：COMM_UPLOAD_FACESNAP_RESULT，NET_VCA_FACESNAP_RESULT)
bySupport
按位表示，每一位取值表示不同的能力
bit0- 表示二级布防是否上传图片，值：0-上传，1-不上传
Bit1- 表示是否启用断网续传数据确认机制，值：0-不开启，1-开启
byBrokenNetHttp
断网续传类型（设备目前只支持一个断网续传布防连接），按位表示，值：0- 不续传，1- 续传
bit0- 车牌检测（IPC）
bit1- 客流统计（IPC）
bit2- 热度图统计（IPC）
bit3- 人脸抓拍（IPC）
bit4- 人脸对比（IPC）
bit5- JSON报警透传（IPC）
例如：byBrokenNetHttp&0x1==0 表示车牌检测结果不续传
wTaskNo
任务处理号
byDeployType
布防类型：0-客户端布防，1-实时布防
byRes1
保留，置为0
byAlarmTypeURL
报警图片数据类型，按位表示：
bit0- 人脸抓拍(报警类型为COMM_UPLOAD_FACESNAP_RESULT)中图片数据上传类型：0- 二进制传输，1- URL传输
bit1- EVENT_JSON(报警类型为COMM_VCA_ALARM)中图片数据上传类型：0- 二进制传输，1- URL传输
bit2- 人脸比对(报警类型为COMM_SNAP_MATCH_ALARM)中图片数据上传类型：0- 二进制传输，1- URL传输
如果设备同时支持URL和二进制传输方式，可以布防的时候通过该参数指定上传的数据格式（二进制或者URL），选择URL传输方式时需要设备配置和启用云存储，否则仍默认以二进制数据格式传输。如果设备只支持URL方式，该参数赋值无效。
byCustomCtrl
按位表示，bit0表示是否上传副驾驶人脸子图: 0- 不上传，1- 上传

Remarks

  • byLevel和byAlarmInfoType针对智能交通设备（抓拍机）：一级布防最大连接数为1个，二级最大连接数为3个，三级最大连接数为5个，设备支持一级、二级、三级布防同时进行，一级布防优先上传信息；byAlarmInfoType是否支持新报警信息可从注册返回的能力获知，详见NET_DVR_DEVICEINFO_V30结构中bySupport1（表示是否支持车牌新报警信息），如果注册返回能力不支持，设备仅支持老报警信息上传。
  • wTaskNo针对车辆二次检测设备，用于区分不同布防链接，布防的任务处理号和任务提交的任务处理号、识别结果上传的任务处理号都是一一对应的。例如：布防链接中wTaskNo==1，任务A中wTaskNo==1，结果信息回调wTaskNo==1（该信息回调只在布防中wTaskNo == 1的链接中回调）。如果两个布防连接中wTaskNo的值相同，将返回布防链接错误。
  • 设备是否支持断网续传数据确认机制，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportConfirmMechanism>。
  • 客户端布防：门禁原有的布防方式，一般只支持1路布防，支持离线事件上传；实时布防：新增的布防方式，主要用于其他设备对门禁设备的布防，最多支持4路实时布防，不支持离线事件上传。

See Also

NET_DVR_SetupAlarmChan_V41


NET_DVR_SETUPALARM_PARAM_V50

报警布防参数V50结构体。

struct{
  DWORD    dwSize;
  BYTE     byLevel;
  BYTE     byAlarmInfoType;
  BYTE     byRetAlarmTypeV40;
  BYTE     byRetDevInfoVersion;
  BYTE     byRetVQDAlarmType;
  BYTE     byFaceAlarmDetection;
  BYTE     bySupport;
  BYTE     byBrokenNetHttp;
  WORD     wTaskNo;
  BYTE     byDeployType;
  BYTE     byRes1[3];
  BYTE     byAlarmTypeURL;
  BYTE     byCustomCtrl;
  BYTE     byRes4[128];
}NET_DVR_SETUPALARM_PARAM_V50, *LPNET_DVR_SETUPALARM_PARAM_V50;

Members

dwSize
结构体大小
byLevel
布防优先级：0- 一等级（高），1- 二等级（中），2- 三等级（低）
byAlarmInfoType
智能交通报警信息上传类型：0- 老报警信息（NET_DVR_PLATE_RESULT），1- 新报警信息(NET_ITS_PLATE_RESULT)
byRetAlarmTypeV40
0- 移动侦测、视频丢失、遮挡、IO信号量等报警信息以普通方式上传（报警类型：COMM_ALARM_V30，报警信息结构体：NET_DVR_ALARMINFO_V30），1- 报警信息以数据可变长方式上传（报警类型：COMM_ALARM_V40，报警信息结构体：NET_DVR_ALARMINFO_V40，设备若不支持则仍以普通方式上传）
byRetDevInfoVersion
CVR上传报警信息类型(仅对接CVR时有效)：0- COMM_ALARM_DEVICE（对应报警信息结构体：NET_DVR_ALARMINFO_DEV），1- COMM_ALARM_DEVICE_V40（对应报警信息结构体：NET_DVR_ALARMINFO_DEV_V40）
byRetVQDAlarmType
VQD报警上传类型(仅对接VQD诊断功能的设备有效)：0- COMM_ALARM_VQD（对应报警信息结构体：NET_DVR_VQD_DIAGNOSE_INFO），1- COMM_ALARM_VQD_EX（对应报警信息结构体：NET_DVR_VQD_ALARM，包含前端设备信息和抓拍图片）
byFaceAlarmDetection
人脸报警信息类型：1- 人脸侦测报警(报警类型：COMM_ALARM_FACE_DETECTION，NET_DVR_FACE_DETECTION)，0- 人脸抓拍报警(报警类型：COMM_UPLOAD_FACESNAP_RESULT，NET_VCA_FACESNAP_RESULT)
bySupport
按位表示，每一位取值表示不同的能力
bit0- 表示二级布防是否上传图片，值：0-上传，1-不上传
Bit1- 表示是否启用断网续传数据确认机制，值：0-不开启，1-开启
Bit4- 表示周界防范相关事件上传设备是否上传所有检测目标，值：0-不开启，1-开启（用于NVR对IPC配置，以便于NVR和获取到IPC检测到的所有目标）
byBrokenNetHttp
断网续传类型（设备目前只支持一个断网续传布防连接），按位表示，值：0- 不续传，1- 续传
bit0- 车牌检测（IPC）
bit1- 客流统计（IPC）
bit2- 热度图统计（IPC）
bit3- 人脸抓拍（IPC）
bit4- 人脸对比（IPC）
bit5- JSON报警透传（IPC）
bit6- 热度图按人员停留时间统计数据上传事件
bit7- 热度图按人数统计数据上传事件的确认机制
例如：byBrokenNetHttp&0x1==0 表示车牌检测结果不续传
wTaskNo
任务处理号，和 (上传数据NET_DVR_VEHICLE_RECOG_RESULT中的字段dwTaskNo对应 同时 下发任务结构NET_DVR_VEHICLE_RECOG_COND中的字段dwTaskNo对应)
byDeployType
布防类型：0-客户端布防，1-实时布防
byRes1
保留，置为0
byAlarmTypeURL
报警图片数据类型，按位表示：
bit0- 人脸抓拍(报警类型为COMM_UPLOAD_FACESNAP_RESULT)中图片数据上传类型：0- 二进制传输，1- URL传输
bit1- EVENT_JSON(报警类型为COMM_VCA_ALARM)中图片数据上传类型：0- 二进制传输，1- URL传输
bit2- 人脸比对(报警类型为COMM_SNAP_MATCH_ALARM)中图片数据上传类型：0- 二进制传输，1- URL传输
如果设备同时支持URL和二进制传输方式，可以布防的时候通过该参数指定上传的数据格式（二进制或者URL），选择URL传输方式时需要设备配置和启用云存储，否则仍默认以二进制数据格式传输。如果设备只支持URL方式，该参数赋值无效。
byCustomCtrl
按位表示，bit0表示是否上传副驾驶人脸子图: 0- 不上传，1- 上传。（(注：只在公司内部8600/8200等平台开放)）
byRes4
保留，置为0

Remarks

  • byLevel和byAlarmInfoType针对智能交通设备（抓拍机）：一级布防最大连接数为1个，二级最大连接数为3个，三级最大连接数为5个，设备支持一级、二级、三级布防同时进行，一级布防优先上传信息；byAlarmInfoType是否支持新报警信息可从注册返回的能力获知，详见NET_DVR_DEVICEINFO_V30结构中bySupport1（表示是否支持车牌新报警信息），如果注册返回能力不支持，设备仅支持老报警信息上传。
  • wTaskNo针对车辆二次检测设备，用于区分不同布防链接，布防的任务处理号和任务提交的任务处理号、识别结果上传的任务处理号都是一一对应的。例如：布防链接中wTaskNo==1，任务A中wTaskNo==1，结果信息回调wTaskNo==1（该信息回调只在布防中wTaskNo == 1的链接中回调）。如果两个布防连接中wTaskNo的值相同，将返回布防链接错误。
  • 设备是否支持断网续传数据确认机制，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportConfirmMechanism>。
  • 客户端布防：门禁原有的布防方式，一般只支持1路布防，支持离线事件上传；实时布防：新增的布防方式，主要用于其他设备对门禁设备的布防，最多支持4路实时布防，不支持离线事件上传。

See Also

NET_DVR_SetupAlarmChan_V50


NET_DVR_SEXGROUP_PARAM

性别人数统计参数结构体。

struct{
  DWORD    dwMale;
  DWORD    dwFemale;
  BYTE     byRes[64];
 }NET_DVR_SEXGROUP_PARAM,*LPNET_DVR_SEXGROUP_PARAM;

Members

dwMale
男性人数
dwFemale
女性人数
byRes
保留，置为0

See Also

NET_DVR_FACECAPTURE_STATISTICS_RESULT


NET_DVR_SHELTER

遮挡区域参数结构体。

struct{
  WORD    wHideAreaTopLeftX;
  WORD    wHideAreaTopLeftY;
  WORD    wHideAreaWidth;
  WORD    wHideAreaHeight;
}NET_DVR_SHELTER, *LPNET_DVR_SHELTER;

Members

wHideAreaTopLeftX
遮挡区域的x坐标
wHideAreaTopLeftY
遮挡区域的y坐标
wHideAreaWidth
遮挡区域的宽
wHideAreaHeight
遮挡区域的高

Remarks

SDK设定整个图像的区域大小为704*576，结构中遮挡区域的坐标以及宽和高需要转换成704*576大小区域下的坐标和宽高值。

See Also

NET_DVR_PICCFG_V40 NET_DVR_PICCFG_V30


NET_DVR_SHIPIMAGE_INFO

船只抓图信息结构体。

struct{
  DWORD    dwShipImageLen;
  #if (defined(OS_WINDOWS64) ||defined(OS_POSIX64))
  char     *pXmlBuf;
  #else //win64及linux64下指针为8字节
  char     *pXmlBuf;
  BYTE     byRes[4];
  #endif
}NET_DVR_SHIPIMAGE_INFO, *LPNET_DVR_SHIPIMAGE_INFO;

Members

dwShipImageLen
船只抓拍图片二进制数据的长度
pXmlBuf
船只抓拍图片二进制数据指针
byRes
保留字节，64位系统和32位系统的指针长度不同，用来对齐

See Also

NET_DVR_SHIPSDETECTION_ALARM


NET_DVR_SHIPSCOUNT_CFG

船只计数信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwUpShipsCount;
  DWORD    dwDownShipsCount;
  DWORD    dwLeftShipsCount;
  DWORD    dwRightShipsCount;
  DWORD    dwTotalCount;
  DWORD    dwRelativeTime;
  DWORD    dwAbsTime;
  BYTE     byDataType;
  BYTE     byRes[255];
}NET_DVR_SHIPSCOUNT_CFG,*LPNET_DVR_SHIPSCOUNT_CFG;

Members

dwSize
结构体大小
dwUpShipsCount
上行船只数
dwDownShipsCount
下行船只数
dwLeftShipsCount
左行船只数
dwRightShipsCount
右行船只数
dwTotalCount
船只总计数
dwRelativeTime
设备侧计数开始计数的相对时标
dwAbsTime
设备侧计数开始计数的绝对时标
byDataType
数据状态类型：0- 检测中，1- 开始，2- 结束
byRes
保留，置为0

Remarks

  • 设备是否支持船只计数功能，可以通过设备能力集进行判断，对应船只检测参数配置能力集(ShipsDetectionCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SHIPSDETECTION_CAPABILITIES，节点：<isSupportShipsDetectionCount>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_SHIPSCOUNT_COND

船只计数信息查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[128];
}NET_DVR_SHIPSCOUNT_COND,*LPNET_DVR_SHIPSCOUNT_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 设备是否支持船只计数功能，可以通过设备能力集进行判断，对应船只检测参数配置能力集(ShipsDetectionCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SHIPSDETECTION_CAPABILITIES，节点：<isSupportShipsDetectionCount>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_SHIPSDETECTION_ALARM

船只检测报警信息结构体

struct{
  DWORD                     dwSize;
  NET_VCA_DEV_INFO          struDevInfo;
  DWORD                     dwRelativeTime;
  DWORD                     dwAbsTime;
  BYTE                      byShipsNum;
  BYTE                      byShipsNumHead;
  BYTE                      byShipsNumEnd;
  BYTE                      byPicTransType;
  NET_DVR_SHIPSINFO         struShipInfo[MAX_SHIPS_NUM];
  DWORD                     dwPicLen;
  DWORD                     dwThermalPicLen;
  BYTE                      *pPicBuffer;
  BYTE                      *pThermalPicBuffer;
  WORD                      wDevInfoIvmsChannelEx;
  BYTE                      byTimeDiffFlag;
  char                      cTimeDifferenceH;
  char                      cTimeDifferenceM;
  BYTE                      bySID;
  BYTE                      byRes1[2];
  char                      szSceneName[NAME_LEN];
  BYTE                      byRes[132];
  DWORD                     dwXmlLen;
  #if (defined(OS_WINDOWS64) ||defined(OS_POSIX64))
  char                      *pXmlBuf;
  #else //win64及linux64下指针为8字节
  char                      *pXmlBuf;
  BYTE                      byRes2[4];
  #endif
  NET_DVR_SHIPIMAGE_INFO    struShipImageInfo[MAX_SHIPIMAGE_NUM];
}NET_DVR_SHIPSDETECTION_ALARM, *LPNET_DVR_SHIPSDETECTION_ALARM;

Members

dwSize
结构体大小
struDevInfo
报警设备信息，包括IP、端口、通道号等
dwRelativeTime
相对时标
dwAbsTime
绝对时标
byShipsNum
正跨越检测线的船只数
byShipsNumHead
船头检测的船只数
byShipsNumEnd
船尾检测的船只数
byPicTransType
图片数据传输方式: 0-二进制；1-url
struShipInfo
船只信息，每位数组表示一艘船只，最大支持20艘
dwPicLen
可见光图片长度
dwThermalPicLen
热成像图片长度
pPicBuff
可见光图片指针，存放可见光图片数据，JPEG格式
pThermalPicBuff
热成像图片指针，存放热成像图片数据，JPEG格式
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
bySID
场景ID
byRes1
保留
szSceneName
场景名称，不超过32字符
byRes
保留
dwXmlLen
XML透传数据长度, 即pXmlBuf对应XML数据长度
pXmlBuf
XML报警信息指针，其XML数据内容详见<eventnotificationalert>(eventType为shipsDetection)
struShipImageInfo
船只抓拍图片信息,数组下标为0时代表为第一张船只抓拍图片，以此类推；最大支持6张图片。

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_SHIPSDETECTION_CFG

船只检测参数配置结构体。

struct{
  DWORD                                dwSize;
  BYTE                                 byEnable;
  BYTE                                 byRes1[3];
  float                                fLookDownUpAngle;
  float                                fHorizontalHeight;
  NET_DVR_SHIPSDETECTION_REGION_CFG    struShipsDetectionRegion[MAX_SHIPSDETE_REGION_NUM];
  BYTE                                 byRes[256];
}NET_DVR_SHIPSDETECTION_CFG,*LPNET_DVR_SHIPSDETECTION_CFG;

Members

dwSize
结构体大小
byEnable
是否启用船只检测：0- 否，1- 是
byRes1
保留，置为0
fLookDownUpAngle
设备俯仰角度，精确到小数点后一位
fHorizontalHeight
设备水平高度，精确到小数点后一位
struShipsDetectionRegion
船只检测区域，每位数组表示一个区域，最大8个区域
byRes
保留，置为0

Remarks

  • 设备是否支持船只检测参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应船只检测参数配置能力集(ShipsDetectionCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SHIPSDETECTION_CAPABILITIES，节点：<ShipsDetection>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SHIPSDETECTION_REGION_CFG

船只检测区域信息结构体。

struct{
  BYTE               byRuleID;
  BYTE               byEnable;
  BYTE               bySensitivity;
  BYTE               byFrameOverlayEnabled;
  BYTE               byRes[36];
  NET_ITC_POLYGON    struPolygon;
  NET_VCA_LINE       struTriggerLine;
}NET_DVR_SHIPSDETECTION_REGION_CFG,*LPNET_DVR_SHIPSDETECTION_REGION_CFG;

Members

byRuleID
规则ID
byEnable
是否启用该区域：0- 否，1- 是
bySensitivity
灵敏度，取值范围：[1,100]
byFrameOverlayEnabled
视频是否叠加检测框：0- 否，1- 是
byRes
保留，置为0
struPolygon
触发区域
struTriggerLine
触发线

See Also

NET_DVR_SHIPSDETECTION_CFG


NET_DVR_SHIPSINFO

船只信息结构体。

struct{
  float              fShipsLength;
  float              fShipsHeight;;
  float              fShipsWidth;
  float              fShipsSpeed;
  BYTE               byShipsDirection;
  BYTE               byShipsDetState;
  BYTE               byTriggerLineID;
  BYTE               byRes[61];
  NET_VCA_POLYGON    struShipsRect;
}NET_DVR_SHIPSINFO,*LPNET_DVR_SHIPSINFO;

Members

fShipsLength
船只长度，取值范围：1~1000.0，单位：m，精确到小数点后一位
fShipsHeight;
船只高度，取值范围：1~1000.0，单位：m，精确到小数点后一位
fShipsWidth
船只宽度，取值范围：1~1000.0，单位：m，精确到小数点后一位
fShipsSpeed
船只速度，取值范围：1~1000.0，单位：m/s，精确到小数点后一位
byShipsDirection
船只方向：0- up（上），1- down（下），2- left（左），3- right（右）
byShipsDetState
船只检测状态：0- 正跨越检测线，1- 船头检测，2- 船尾检测
byTriggerLineID
检测线ID
byRes
保留，置为0
struShipsRect
船只区域，归一化值，相对于大图（可见光图、热成像图)的分辨率

See Also

NET_DVR_SHIPSDETECTION_ALARM


NET_DVR_SHOWSTRING

字符叠加参数结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_SHOWSTRINGINFO     struStringInfo[MAX_STRINGNUM];
}NET_DVR_SHOWSTRING,*LPNET_DVR_SHOWSTRING;

Members

dwSize
结构体大小
struStringInfo
要显示的字符内容

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_SHOWSTRING_V30


NET_DVR_SHOWSTRING_EX

字符叠加参数结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_SHOWSTRINGINFO     struStringInfo[MAX_STRINGNUM_EX];
}NET_DVR_SHOWSTRING_EX,*LPNET_DVR_SHOWSTRING_EX;

Members

dwSize
结构体大小
struStringInfo
要显示的字符内容

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_SHOWSTRING_V30


NET_DVR_SHOWSTRING_V30

字符叠加参数结构体。

struct{
  DWORD                      dwSize;
  NET_DVR_SHOWSTRINGINFO     struStringInfo[MAX_STRINGNUM_V30];
}NET_DVR_SHOWSTRING_V30,*LPNET_DVR_SHOWSTRING_V30;

Members

dwSize
结构体大小
struStringInfo
要显示的字符内容

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_SHOWSTRING


NET_DVR_SHOWSTRINGINFO

字符叠加参数子结构体。

struct{
  WORD    wShowString;
  WORD    wStringSize;
  WORD    wShowStringTopLeftX;
  WORD    wShowStringTopLeftY;
  char    sString[44];
}NET_DVR_SHOWSTRINGINFO,*LPNET_DVR_SHOWSTRINGINFO;

Members

wShowString
预览的图象上是否显示字符：0－不显示，1－显示（显示区域范围为704*576，单个字符的大小为32*32）
wStringSize
该行字符的长度，不能大于44个字符
wShowStringTopLeftX
字符显示位置的x坐标
wShowStringTopLeftY
字符显示位置的y坐标
sString
要显示的字符内容

See Also

NET_DVR_SHOWSTRING_V30 NET_DVR_SHOWSTRING


NET_DVR_PPT_DETECT_CFG

设备网络SDK开发使用手册

NET_DVR_SIGNAL_QUANTITY_ALARM

信号量报警结构体。

struct{
  DWORD    dwSize;
  DWORD    dwRelativeTime;
  DWORD    dwAbsTime;
NET_VCA_DEV_INFO  struDevInfo;
  BYTE    byAlarmType;
  BYTE     byRes[127];
 }NET_DVR_SIGNAL_QUANTITY_ALARM,*LPNET_DVR_SIGNAL_QUANTITY_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
byAlarmType
报警类型 0-预置点到位报警
byRes
保留，置为0

Remarks

相对时标:一般涉及到时区，比如传递的东八区时间、GMT时间。

绝对时标：即UTC时间，不带时区，比如1970年1月1日0时0分0秒到现在的秒数，相机现在一般传递的绝对时标都是这个。

比如一个当前相机东八区的time_t值1400252410,相对时标的话应该是：2014-05-16 23:00:10；绝对时标的话应该是：2014-05-16 15:00:10。

See Also

NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_SIGNAL_SYNCCFG

信号同步配置结构体。

struct{
  DWORD    dwSize;
  WORD     wPhase;
  BYTE     byLineLock;
  BYTE     byRes[125];
}NET_DVR_SIGNAL_SYNCCFG,*LPNET_DVR_SIGNAL_SYNCCFG;

Members

dwSize
结构体大小
wPhase
相位，取值范围：0~360
byLineLock
电源同步：0- 否，1- 是
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SIGNALLAMP_DETCFG

信号灯异常检测信息结构体。

struct{
  DWORD             dwSize;
  BYTE              byAbsTime[32];
  NET_DVR_IPADDR    struAlarmCamIP;
  DWORD             dwPic1Len;
  DWORD             dwPic2Len;
  char              *pPic1Buffer;
  char              *pPic2Buffer;
  BYTE              byRes[128];
}NET_DVR_SIGNALLAMP_DETCFG, *LPNET_DVR_SIGNALLAMP_DETCFG;

Members

dwSize
结构体大小
byAbsTime
绝对时间点，yyyymmddhhmmssxxx，e.g.20090810235959999，最后三位为毫秒数
struAlarmCamIP
报警摄像机IP地址
dwPic1Len
异常图片1数据长度
dwPic2Len
异常图片2数据长度
pPic1Buffer
数据缓冲区指针1，为叠加车道线的图片
pPic2Buffer
数据缓冲区指针2，为叠加信号灯状态的图片
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V31

NET_DVR_StartListen_V30


NET_DVR_SIMPLE_DAYTIME

时间点信息结构体。

struct{
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  BYTE    byRes;
}NET_DVR_SIMPLE_DAYTIME,*LPNET_DVR_SIMPLE_DAYTIME;

Members

byHour
时
byMinute
分
bySecond
秒
byRes
保留，置为0

See Also

NET_DVR_TIME_SEGMENT


NET_DVR_SIMULATE_REMOTE_CTRL

模拟遥控按键参数结构体。

union{
  BYTE    byControlType;
  BYTE    byControlParam;
  BYTE    byRes[14];
}NET_DVR_SIMULATE_REMOTE_CTRL,*LPNET_DVR_SIMULATE_REMOTE_CTRL;

Members

byControlType
遥控按键类型：1-电源开，2-电源关，3-信号源，4-菜单，5-确定，6-上，7-下，8-左，9-右，10-INFO，11-返回上一层，12-数字按键
byControlParam
控制参数：操作类型为12时表示按键值0~9，其他操作时此参数无效
byRes
保留

See Also

NET_DVR_SCREEN_CONTROL_PARAM


NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL

模拟遥控按键控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byControlType;
  BYTE     byControlParam;
  BYTE     byRes[14];
}NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL,*LPNET_DVR_SIMULATE_SCREEN_REMOTE_CTRL;

Members

dwSize
结构体大小
byControlType
按键类型：1-电源开，2-电源关，3-信号源，4-菜单，5-确定，6-上，7-下，8-左，9-右，10-INFO，11-返回上一层，12-数字按键
byControlParam
操作参数，操作类型为12时，表示按键值（0~9），其他操作时此参数无效
byRes1
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_SINGLE_ALARMIN_PARAM

单个防区参数信息结构体。

struct{
  DWORD    dwSize;
  WORD     wZoneNo;
  BYTE     byJointSubSystem;
  BYTE     byType;
  char     byName[NAME_LEN];
  WORD     wDetectorType;
  WORD     wInDelay;
  WORD     wOutDelay;
  BYTE     byAlarmType;
  BYTE     byZoneSignalType;
  BYTE     byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN];
  BYTE     byDisableDetectorTypeCfg;
  BYTE     byTimeOutRange;
  BYTE     byDetectorSignalIntensity;
  WORD     wTimeOut;
  BYTE     byTimeOutMethod;
  BYTE     byRes2[113];
}NET_DVR_SINGLE_ALARMIN_PARAM,*LPNET_DVR_SINGLE_ALARMIN_PARAM;

Members

dwSize
结构体大小
wZoneNo
防区号，该参数只能获取
byJointSubSystem
防区所属的子系统号，该参数只能获取
byType
防区类型：0- 即时防区，1- 24小时防区，2- 延时防区，3- 内部防区，4- 钥匙防区，5- 火警防区，6- 周界防区，7- 24小时无声防区，8- 24小时辅助防区，9- 24小时震动防区，12-超时防区，0xff- 无
byName
防区名称
wDetectorType
防区探测器类型，取值详见枚举类型DETECTOR_TYPE
wInDelay
进入延时，取值范围：0~255，单位：秒
wOutDelay
退出延时，取值范围：0~255，单位：秒
byAlarmType
报警器类型：0- 无效，1- 常开，1- 常闭
byZoneSignalType
防区信号传输类型：0- 有线防区，1- 无线防区
byDetectorSerialNo
探测器序列号，只读
byDisableDetectorTypeCfg
探测器类型是否不可配：0- 可配，1- 不可配
byTimeOutRange
超时时间范围：0-1~599s，1-1~65535s
byDetectorSignalIntensity
探测器信号强度（只读）：0~100
wTimeOut
超时时间，单位：秒
byTimeOutMethod
超时防区计时方式：0-触发计时，1-恢复计时
byRes2
保留，置为0

See Also

NET_DVR_ALARMIN_PARAM_LIST


NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG

防区联动视频单个通道信息结构体。

struct{
  BYTE     byDDNSType;
  BYTE     byRes1;
  WORD     wDDNSPort;
  BYTE     byServerAddr[MAX_DOMAIN_NAME];
  BYTE     byDevName[NAME_LEN];
  BYTE     byDevSerialNum[SERIALNO_LEN];
  BYTE     byDevAddrType;
  BYTE     byRes2;
  WORD     wDevPort;
  union{
           struct{
           BYTE              szDomain[MAX_DOMAIN_NAME];
           BYTE              byRes2[80];
           }struDomain;
           struct{
           NET_DVR_IPADDR    struIp;
           }struAddrIP;
  }unionDevAddr;
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassword[PASSWD_LEN];
  DWORD    dwChannel;
  BYTE     byRes3[64];
}NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG,*LPNET_DVR_SINGLE_CHANNEL_LINKAGE_CFG;

Members

byDDNSType
域名服务器类型：0- 无效，1- IPServer(私有DNS)，2- hiDDNS
byRes1
保留，置为0
wDDNSPort
域名服务器端口号
byServerAddr
域名服务器地址
byDevName
设备名称(自定义域名)
byDevSerialNum
设备序列号
byAddressType
设备地址类型：0- ipv4/ipv6地址，1- 域名
byRes2
保留，置为0
wDevPort
设备端口号
unionDevAddr为设备地址联合体
szDomain
设备地址，域名，byAddressType为1时有效
byRes2
保留，置为0
struIp
IPv4或者IPv6地址(144字节)，byAddressType为0时有效
sUserName
设备用户名
sPassword
设备密码
dwChannel
联动的设备通道号
byRes3
保留，置为0

See Also

NET_DVR_ZONE_CHANNEL_LINKAGE_CFG


NET_DVR_SINGLE_DEV_INFO

子设备信息结构体。

struct{
  DWORD                     dwSize;
  DWORD                     dwSoftVersion;
  DWORD                     dwSoftwareBuildDate;
  BYTE                      byUseInSys;
  BYTE                      byDevStatus;
  BYTE                      byDeviceType;
  BYTE                      byRes1[17];
  BYTE                      sDeviceID[DVCS_DEVICEID_LEN];
  BYTE                      sDevName[NAME_LEN];
  NET_DVR_SINGLE_NETPARAM   struEtherNet[MAX_ETHERNET];
  BYTE                      sSerialNumber[SERIALNO_LEN];
  NET_DVR_DIFFDEV_INFO      struSubDevInfo;
  DWORD                     dwDeviceIndex;
  BYTE                      byRes2[48];
}NET_DVR_SINGLE_DEV_INFO,*LPNET_DVR_SINGLE_DEV_INFO;

Members

dwSize
结构体大小
dwSoftVersion
设备软件版本号(只能获取)：最高8位为主版本号，次高8位为次版本号，低16位为修复版本号
dwSoftwareBuildDate
版本编译日期Build，0xYYYYMMDD
byUseInSys
是否在系统中使用：0- 否， 1- 是
byDevStatus
设备当前状态，0- 下线，1- 上线，(只能获取)
byDeviceType
设备类型(只能获取) ，具体定义如下：
enum{
  NET_DVR_BNC_PROC  = 1,
  NET_DVR_RGB_PROC  = 2,
  NET_DVR_STP_PROC  = 3,
  NET_DVR_DISP_PROC = 4,
  NET_DVR_NETSIGNAL = 5
}NET_DVCS_DEVICE_TYPE
NET_DVR_BNC_PROC
BNC处理器
NET_DVR_RGB_PROC
RGB处理器
NET_DVR_STP_PROC
转码处理器
NET_DVR_DISP_PROC
显示处理器
NET_DVR_NETSIGNAL
网络信号源
byRes1
保留，置为0
sDeviceID
设备ID标识符
sDevName
设备名称
struEtherNet
设备网络参数
sSerialNumber
设备序列号
struSubDevInfo
设备信息
dwDeviceIndex
设备序号，每个设备唯一确定
byRes2
保留，置为0

See Also

NET_DVR_DEVLIST


NET_DVR_SINGLE_HD

设备硬盘信息配置结构体。

struct{
  DWORD     dwHDNo;
  DWORD     dwCapacity;
  DWORD     dwFreeSpace;
  DWORD     dwHdStatus;
  BYTE      byHDAttr;
  BYTE      byHDType;
  BYTE      byDiskDriver;
  BYTE      byRes1[1];
  DWORD     dwHdGroup;
  BYTE      byRecycling;
  BYTE      byRes2[3];
  DWORD     dwStorageType;
  DWORD     dwPictureCapacity;
  DWORD     dwFreePictureSpace;
  BYTE      byRes3[104];
}NET_DVR_SINGLE_HD, *LPNET_DVR_SINGLE_HD;

Members

dwHDNo
硬盘号，取值范围[0,MAX_DISKNUM_V30-1]，其中#define MAX_DISKNUM_V30 33
dwCapacity
硬盘容量，单位：MB，该参数只能获取，不支持设置
dwFreeSpace
硬盘剩余空间，单位：MB，该参数只能获取，不支持设置
dwHdStatus
硬盘状态，该参数只能获取，不支持设置：0－正常，1－未格式化，2－错误，3－S.M.A.R.T状态，4－不匹配，5－休眠，6-未连接状态（ 网络硬盘），7-虚拟磁盘正常且支持扩容，10-硬盘正在修复，11-硬盘正在格式化，12-硬盘正在等待格式化，13-硬盘已卸载，14-本地硬盘不存在，15-正在删除（网络硬盘），16-已锁定
byHDAttr
硬盘属性：0－默认，1－冗余（备份重要数据），2－只读，3-存档（每次只能配置一个卷为存档卷，且循环覆盖的卷不能设置为存档卷），4-不可读写
byHDType
硬盘类型：0-本地硬盘，1-ESATA硬盘，2-NFS硬盘，3-iSCSI硬盘，4-RAID虚拟磁盘，5-SD卡，6-minSAS
byDiskDriver
硬盘盘值，代表其ASCII字符
byRes1
保留，置为0
dwHdGroup
该硬盘属于哪个盘组，取值范围[1,MAX_HD_GROUP]，其中#define MAX_HD_GROUP 16
byRecycling
是否循环利用：0- 不循环利用，1- 循环利用
byRes2
保留，置为0
dwStorageType
按位表示：0-不支持，非0-支持，
dwStorageType & 0x1 表示是否是普通录像专用存储盘
dwStorageType & 0x2 表示是否是抽帧录像专用存储盘
dwStorageType & 0x4 表示是否是图片录像专用存储盘
dwPictureCapacity
硬盘图片容量(不可设置)，单位：MB
dwFreePictureSpace
剩余图片空间(不可设置)，单位：MB
byRes3
保留，置为0

Remarks

  • 本结构体中的dwCapacity、dwFreeSpace和dwHdStatus参数是关于设备本地硬盘的属性，因此只能获取该信息，不能设置。
  • dwCapacity和dwFreeSpace表示录像和图片的总容量；dwPictureCapacity是指预留给图片的总容量，其值非0有效，为0表示无效。IPC等设备该值有效，DVR、NVR等设备不区分录像和图片容量，统一分配。

    • See Also

    NET_DVR_HDCFG


NET_DVR_SINGLE_HD_V50

设备硬盘信息配置结构体。

struct{
  DWORD     dwHDNo;
  DWORD     dwCapacity;
  DWORD     dwFreeSpace;
  DWORD     dwHdStatus;
  BYTE      byHDAttr;
  BYTE      byHDType;
  BYTE      byDiskDriver;
  BYTE      byGenusGruop;
  DWORD     dwHdGroup;
  BYTE      byRecycling;
  BYTE      byRes2[3];
  DWORD     dwStorageType;
  DWORD     dwPictureCapacity;
  DWORD     dwFreePictureSpace;
  BYTE      byDiskLocation[NET_SDK_DISK_LOCATION_LEN];
  BYTE      bySupplierName[NET_SDK_SUPPLIER_NAME_LEN];
  BYTE      byDiskModel[NET_SDK_DISK_MODEL_LEN];
  char      szHDLocateIP[SDK_MAX_IP_LEN];
  BYTE      byRes3[80];
}NET_DVR_SINGLE_HD_V50, *LPNET_DVR_SINGLE_HD_V50;

Members

dwHDNo
硬盘号，取值范围[0,MAX_DISKNUM_V30-1]，其中#define MAX_DISKNUM_V30 33
dwCapacity
硬盘容量，单位：MB，该参数只能获取，不支持设置
dwFreeSpace
硬盘剩余空间，单位：MB，该参数只能获取，不支持设置
dwHdStatus
硬盘状态，该参数只能获取，不支持设置：0－正常，1－未格式化，2－错误，3－S.M.A.R.T状态，4－不匹配，5－休眠，6-未连接状态（ 网络硬盘），7-虚拟磁盘正常且支持扩容，10-硬盘正在修复，11-硬盘正在格式化，12-硬盘正在等待格式化，13-硬盘已卸载，14-本地硬盘不存在，15-正在删除（网络硬盘），16-已锁定，,17-警告（随时会变成坏盘）,18-坏盘（已经损坏的硬盘）,19-隐患盘（出现异常被踢出阵列，比如出现坏扇区）,20-未认证（未检测，需要到CVR中对磁盘进行检测）
byHDAttr
硬盘属性：0－默认，1－冗余（备份重要数据），2－只读，3-存档（每次只能配置一个卷为存档卷，且循环覆盖的卷不能设置为存档卷），4-不可读写
byHDType
硬盘类型：0-本地硬盘，1-ESATA硬盘，2-NFS硬盘，3-iSCSI硬盘，4-RAID虚拟磁盘，5-SD卡，6-minSAS
byDiskDriver
硬盘盘值，代表其ASCII字符
byGenusGruop
属组：0-保留，1-阵列，2-存储池，3-阵列踢盘，4-未初始化，5-无效盘，6-区域热备，7-全局热备，只读
dwHdGroup
该硬盘属于哪个盘组，取值范围[1,MAX_HD_GROUP]，其中#define MAX_HD_GROUP 16
byRecycling
是否循环利用：0- 不循环利用，1- 循环利用
byRes2
保留，置为0
dwStorageType
按位表示：0-不支持，非0-支持，
dwStorageType & 0x1 表示是否是普通录像专用存储盘
dwStorageType & 0x2 表示是否是抽帧录像专用存储盘
dwStorageType & 0x4 表示是否是图片录像专用存储盘
dwPictureCapacity
硬盘图片容量(不可设置)，单位：MB
dwFreePictureSpace
剩余图片空间(不可设置)，单位：MB
byDiskLocation
硬盘位置，具体格式见备注，只读
bySupplierName
供应商名称，只读
byDiskModel
硬盘型号，只读
szHDLocateIP
磁盘所在IP信息
byRes3
保留，置为0

Remarks

  • 本结构体中的dwCapacity、dwFreeSpace和dwHdStatus参数是关于设备本地硬盘的属性，因此只能获取该信息，不能设置。
  • dwCapacity和dwFreeSpace表示录像和图片的总容量；dwPictureCapacity是指预留给图片的总容量，其值非0有效，为0表示无效。IPC等设备该值有效，DVR、NVR等设备不区分录像和图片容量，统一分配。
  • 硬盘位置格式为：x/y-z

    x为扩展柜插在主机箱上哪个接口（0表示主机箱本身，1表示接在接口1上的扩展柜，2表示插在接口2上的扩展柜）；

    y为第几级扩展柜（0表示主机箱，1表示一级扩展柜上，2表示二级扩展柜上，3表示三级扩展柜上）

    z为盘位号（比如机箱有48个盘位，则有1~48个盘位号，扩展柜有24个盘位，则有1~24个盘位号）。

  • 例如：0/0-1表示主机箱上盘位号为1的位置；1/1-24表示接在主机箱接口1上的一级扩展柜上盘位号为24的位置；1/2-24表示接在主机箱接口1上的二级扩展柜上盘位号为24的位置；2/1-1表示接在主机箱接口2上的一级扩展柜上盘位号为1的位置；2/2-1表示接在主机箱接口2上的二级扩展柜上盘位号为1的位置；

See Also

NET_DVR_HDCFG_V50


NET_DVR_SINGLE_HDGROUP

设备盘组信息配置结构体。

struct{
  DWORD     dwHDGroupNo;
  BYTE      byHDGroupChans[64];
  BYTE      byRes[8];
}NET_DVR_SINGLE_HDGROUP, *LPNET_DVR_SINGLE_HDGROUP;

Members

dwHDGroupNo
盘组号，该参数只能获取，不支持设置，取值范围[1,MAX_HD_GROUP]，其中#define MAX_HD_GROUP 16
byHDGroupChans
盘组对应的录像通道：0－该通道不录象到该盘组；1－录象到该盘组
struHDGroupAttr
保留，置为0

Remarks

本结构体中的dwHDGroupNo参数是指设备本地的盘组号，因此只能获取该信息，不能设置。

See Also

NET_DVR_HDGROUP_CFG


NET_DVR_SINGLE_HDGROUP_V40

设备盘组信息配置结构体。

struct{
  DWORD     dwHDGroupNo;
  BYTE      dwRelRecordChan[MAX_CHANNUM_V40];
  BYTE      byRes[64];
}NET_DVR_SINGLE_HDGROUP_V40, *LPNET_DVR_SINGLE_HDGROUP_V40;

Members

dwHDGroupNo
盘组号，该参数只能获取，不支持设置，取值范围[1,MAX_HD_GROUP]，其中#define MAX_HD_GROUP 16
dwRelRecordChan
触发的录像通道，按值表示，采用紧凑型排列，0xffffffff表示后续无效
struHDGroupAttr
保留，置为0

See Also

NET_DVR_HDGROUP_CFG_V40


NET_DVR_SINGLE_HEATMAP_RESULT_PDC

热度图按人数统计数据结构体。

struct{
  DWORD    dwMaxHeatMapValue;
  DWORD    dwMinHeatMapValue;
  DWORD    dwTimeHeatMapValue;
  WORD     wArrayLine;
  WORD     wArrayColumn;
  BYTE     *pBuffer;
  BYTE     byRes[32];
}NET_DVR_SINGLE_HEATMAP_RESULT_PDC,*LPNET_DVR_SINGLE_HEATMAP_RESULT_PDC;

Members

dwMaxHeatMapValue
最大热度值
dwMinHeatMapValue
最小热度值
dwTimeHeatMapValue
(时间热度值)平均热度值
wArrayLine
图片像素点行值
wArrayColumn
图片像素点列值 （当行列值为0的时候，像素点值内存信息不存在）
pBuffer
热度图片像素点数据信息
byRes
保留，置为0

See Also

NET_DVR_HEATMAP_RESULT_PDC


NET_DVR_SINGLE_NET_DISK_INFO

单个网络硬盘参数结构体。

struct{
  BYTE                               byNetDiskType;
  BYTE                               byRes1[3];
  NET_DVR_IPADDR                     struNetDiskAddr;
  BYTE                               sDirectory[PATHNAME_LEN];
  WORD                               wPort;
  BYTE                               byRes2[2];
  NET_DVR_MOUNTMETHOD_PARAM_UNION    uMountMethodParam;
  BYTE                               byRes3[8];
}NET_DVR_SINGLE_NET_DISK_INFO, *LPNET_DVR_SINGLE_NET_DISK_INFO;

Members

byNetDiskType
网络硬盘类型：0-NFS(NAS)，1-ISCSI(IPSAN)
byRes1
保留，置为0
struNetDiskAddr
网络硬盘地址
sDirectory
路径
wPort
ISCSI协议端口，目前为默认端口
byRes2
保留，置为0
uMountMethodParam
网络硬盘挂载方式联合体
byRes3
保留，置为0

See Also

NET_DVR_NET_DISKCFG


NET_DVR_SINGLE_NET_DISK_INFO_V40

单个网络硬盘参数结构体。

struct{
  BYTE                               byNetDiskType;
  BYTE                               byRes1[3];
  BYTE                               sDirectory[PATHNAME_LEN];
  BYTE                               byDevAddr[MAX_DOMAIN_NAME];
  WORD                               wPort;
  BYTE                               byRes2[2];
  NET_DVR_MOUNTMETHOD_PARAM_UNION    uMountMethodParam;
  BYTE                               byRes4[80];
}NET_DVR_SINGLE_NET_DISK_INFO_V40, *LPNET_DVR_SINGLE_NET_DISK_INFO_V40;

Members

byNetDiskType
网络硬盘类型：0-NFS(NAS)，1-ISCSI(IPSAN)
byRes1
保留，置为0
sDirectory
路径
byDevAddr
网络硬盘地址，IP或者域名
wPort
ISCSI协议端口，目前为默认端口
byRes2
保留，置为0
uMountMethodParam
网络硬盘挂载方式联合体
byRes4
保留，置为0

See Also

NET_DVR_NET_DISKCFG_V40 NET_DVR_SERVER_TEST_PARA


NET_DVR_SINGLE_NETPARAM

单个网络参数结构体。

struct{
  DWORD              dwSize;
  BYTE               byUseDhcp;
  BYTE               byRes1[3];
  NET_DVR_IPADDR     struDevIP;
  NET_DVR_IPADDR     struSubnetMask;
  NET_DVR_IPADDR     struGateway;
  WORD               wDevPort;
  BYTE               byMACAddr[MACADDR_LEN];
  BYTE               byRes2[16];
}NET_DVR_SINGLE_NETPARAM,*LPNET_DVR_SINGLE_NETPARAM;

Members

dwSize
结构体大小
byUseDhcp
是否启用DHCP：0xff- 无效，0- 不启用，1- 启用
byRes1
保留
struDevIP
设备IP地址
struSubnetMask
设备子网掩码
struGateway
设备网关
wDevPort
设备端口号
byMACAddr
MAC地址（只能获取）
byRes2
保留

See Also

NET_DVR_SINGLE_DEV_INFO NET_DVR_NETPARAM


NET_DVR_SINGLE_NFS

NFS配置子结构。

struct{
  char     sNfsHostIPAddr[16];
  BYTE     sNfsDirectory[PATHNAME_LEN];
}NET_DVR_SINGLE_NFS, *LPNET_DVR_SINGLE_NFS;

Members

sNfsHostIPAddr
网络文件系统主机IP地址
sNfsDirectory
NFS路径

See Also

NET_DVR_NFSCFG


NET_DVR_SINGLE_PLAN_SEGMENT

计划参数结构体。

struct{
  BYTE                    byEnable;
  BYTE                    byDoorStatus;
  BYTE                    byVerifyMode;
  BYTE                    byRes[5];
  NET_DVR_TIME_SEGMENT    struTimeSegment;
}NET_DVR_SINGLE_PLAN_SEGMENT,*LPNET_DVR_SINGLE_PLAN_SEGMENT;

Members

byEnable
是否使能：0- 否，1- 是
byDoorStatus
门状态模式（门状态或者梯控计划参数配置时使用）：0- 无效，1- 休眠，2- 常开状态（梯控的自由状态），3- 常闭状态（梯控的禁用状态），4-普通状态（门状态计划使用）
byVerifyMode
验证方式：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-刷卡或人脸或指纹
byRes
保留，置为0
struTimeSegment
计划时间段，包括开始时间和结束时间

See Also

NET_DVR_WEEK_PLAN_CFG NET_DVR_HOLIDAY_PLAN_CFG


NET_DVR_SINGLE_RS232

RS232串口参数子结构体。

struct{
  DWORD    dwBaudRate;
  BYTE     byDataBit;
  BYTE     byStopBit;
  BYTE     byParity;
  BYTE     byFlowcontrol;
  DWORD    dwWorkMode;
}NET_DVR_SINGLE_RS232, *LPNET_DVR_SINGLE_RS232;

Members

dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控，2-硬流控
dwWorkMode
工作模式，0－窄带传输(232串口用于PPP拨号)，1－控制台(232串口用于参数控制)，2－透明通道，3-ptz模式（审讯温湿度传感器），4-报警盒模式

See Also

NET_DVR_RS232CFG_V30 NET_MATRIX_ANALOGMATRIX NET_DVR_POS_CONNECTMODE_UNION


NET_DVR_SINGLE_SECURITY_QUESTION_CFG

设备安全问题参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwId;
  char     sAnswer[NET_SDK_MAX_ANSWER_LEN];
  BYTE     byMark;
  BYTE     byRes[127];
}NET_DVR_SINGLE_SECURITY_QUESTION_CFG, *LPNET_DVR_SINGLE_SECURITY_QUESTION_CFG;

Members

dwSize
结构体大小
dwId
序号（安全问题序号，只读）
sAnswer
安全问题答案
byMark
标记：0- 未设置，1- 已设置
byRes
保留，置为0

Remarks

下面表格为安全问题序号对应具体问题，供参考：

dwId序号 | 安全问题
1 | 你父亲的姓名是什么
2 | 你母亲的姓名是什么
3 | 你高中班主任的姓名是什么
4 | 你初中班主任的姓名是什么
5 | 你最熟悉的学校宿舍室友名称是什么
6 | 对你影响最大的人的名字
7 | 你最喜欢的明星是谁
8 | 你最喜欢的车是什么品牌
9 | 你最喜欢的游戏是什么
10 | 你最喜欢的一本书是什么
11 | 你最喜欢的颜色是什么
12 | 你最喜欢的电影是什么
13 | 你最喜欢的花是什么
14 | 你第一部手机是什么品牌
15 | 你第一次做飞机是去哪里

See Also

NET_DVR_SECURITY_QUESTION_CFG


NET_DVR_SINGLESCREENCFG

大屏拼接子屏幕信息结构体。

struct{
  BYTE      byScreenSeq;
  BYTE      bySubSystemNum;
  BYTE      byDispNum;
  BYTE      byRes[9];
}NET_DVR_SINGLESCREENCFG, *LPNET_DVR_SINGLESCREENCFG;

Members

byScreenSeq
屏幕序号，0xff表示此屏幕不用
bySubSystemNum
解码子系统槽位号
byDispNum
解码子系统上对应显示通道号
byRes
保留，置为0

See Also

NET_DVR_BIGSCREENCFG


NET_DVR_SINGLEWALLPARAM

电视墙中屏幕参数结构体。

struct{
  DWORD               dwSize;
  BYTE                byEnable;
  BYTE                byRes1[3];
  DWORD               dwWallNum;
  NET_DVR_RECTCFG     struRectCfg;
  BYTE                byRes2[36];
}NET_DVR_SINGLEWALLPARAM, *LPNET_DVR_SINGLEWALLPARAM;

Members

dwSize
结构体大小
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
dwWallNum
电视墙屏幕号
struRectCfg
屏幕区域，坐标必须为基准坐标（128×128）的整数倍。宽度和高度值不用设置，即为基准值
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SIP_CFG

SIP服务器参数配置结构体。

struct{
  DWORD             dwSize;
  BYTE              byEnableAutoLogin;
  BYTE              byLoginStatus;
  BYTE              byRes1[2];
  NET_DVR_IPADDR    stuServerIP;
  WORD              wServerPort;
  BYTE              byRes2[2];
  BYTE              byUserName[NAME_LEN];
  BYTE              byPassWord[PASSWD_LEN];
  BYTE              byLocalNo[MAX_NUMBER_LEN];
  BYTE              byDispalyName[MAX_NAME_LEN];
  WORD              wLocalPort;
  BYTE              byLoginCycle;
  BYTE              byType;
  BYTE              byDomainName[MAX_DOMAIN_NAME];
  BYTE              byRes[64];
}NET_DVR_SIP_CFG,*LPNET_DVR_SIP_CFG;

Members

dwSize
结构体大小
byEnableAutoLogin
使能自动注册：0-不使能，1-使能
byLoginStatus
注册状态：0-未注册，1-已注册，此参数只能获取
byRes1
保留，置为0
stuServerIP
SIP服务器IP
wServerPort
SIP服务器端口
byRes2
保留，置为0
byUserName
注册用户名
byPassWord
注册密码
byLocalNo
本地号码
byDispalyName
设备显示名称
wLocalPort
本地端口
byLoginCycle
注册周期，取值：1~99，单位：分钟
byRes
0-IP/IPV6, 1-域名
byDomainName
域名
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SIP_CFG_V50

SIP参数V50。

struct{
  DWORD             dwSize;
  BYTE              byEnableAutoLogin;
  BYTE              byLoginStatus;
  BYTE              byRes1[2];
  NET_DVR_IPADDR    stuServerIP;
  WORD              wServerPort;
  BYTE              byRes2[2];
  BYTE              byUserName[NAME_LEN];
  BYTE              byPassWord[PASSWD_LEN];
  BYTE              byLocalNo[MAX_NUMBER_LEN];
  BYTE              byDispalyName[MAX_NAME_LEN];
  WORD              wLocalPort;
  BYTE              byLoginCycle;
  BYTE              byRes3;
  BYTE              bySIPServerDomain[MAX_DOMAIN_NAME];
  NET_DVR_IPADDR    stuSTUNServerIP;
  BYTE              bySTUNServerDomain[MAX_DOMAIN_NAME];
  WORD              wSTUNServerPort;
  BYTE              byRes4[2];
  NET_DVR_IPADDR    stuProxyServerIP;
  BYTE              byProxyServerDomain[MAX_DOMAIN_NAME];
  WORD              wProxyServerPort;
  BYTE              byRes[258];
}NET_DVR_SIP_CFG,*LPNET_DVR_SIP_CFG;

Members

dwSize
结构体大小
byEnableAutoLogin
使能自动注册：0-不使能，1-使能
byLoginStatus
注册状态：0-未注册，1-已注册，此参数只能获取
byRes1
保留，置为0
stuServerIP
SIP服务器IP
wServerPort
SIP服务器端口
byRes2
保留，置为0
byUserName
注册用户名
byPassWord
注册密码
byLocalNo
本地号码
byDispalyName
设备显示名称
wLocalPort
本地端口
byLoginCycle
注册周期，取值：1~99，单位：分钟
byRes3
保留
bySIPServerDomain
sip服务器域名（IP和域名只需要填其一，都有值时IP优先）
stuSTUNServerIP
STUN服务器IP
bySTUNServerDomain
STUN服务器域名 （IP和域名只需要填其一，都有值时IP优先）
wSTUNServerPort
STUN服务器端口
byRes4
保留，置为0
stuProxyServerIP
代理服务器IP
byProxyServerDomain
代理服务器域名 （IP和域名只需要填其一，都有值时IP优先）
wProxyServerPort
代理服务器端口
byRes
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_SIREN_PARAM

警号参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byName[NAME_LEN];
  WORD     wDelay;
  BYTE     byRes1[2];
  DWORD    dwOverallEventJointSirenOn;
  DWORD    dwSubsystemEventJointSirenOn[MAX_ALARMHOST_SUBSYSTEM];
  BYTE     byRes2[448];
}NET_DVR_SIREN_PARAM, *LPNET_DVR_SIREN_PARAM;

Members

dwSize
结构体大小
byName
警号名称
wDelay
输出延迟，单位：秒。取值范围：0~3599s，0表示一直有输出
byRes1
保留
dwOverallEventJointSirenOn
全局事件联动警号输出开启，事件类型按位表示，bit0-主机防拆，bit1-全局键盘紧急报警，bit2-交流电断电，bit3-电池电压低，bit4-电话线掉线，bit5-有线网络异常，bit6-无线网络异常，bit7-键盘485断线，bit8- WIFI通信故障，bit9-RF信号干扰故障
dwSubsystemEventJointSirenOn
子系统事件联动警号输出开启。数组下标表示子系统号，每一位数组按位表示事件类型，bit0-紧急报警，bit1-布防，bit2-撤防。 例如：dwSubsystemEventJointSirenOn[i]&0x01==1 表示设置子系统(i+1)紧急报警联动该警号输出
byRes2
保留

Remarks

  • 子系统事件“布防”联动警号输出功能中，警号固定响2秒，此时wDelay参数无效。
  • 紧急报警事件：子系统键盘上的紧急报警按钮被按下。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SLAVE_CHANNEL_CFG

从通道参数配置结构体。

struct{
  DWORD                          dwSize;
  NET_DVR_SLAVE_CHANNEL_PARAM    struChanParam[MAX_SLAVE_CHANNEL_NUM];
  BYTE                           byRes[64];
}NET_DVR_SLAVE_CHANNEL_CFG,*LPNET_DVR_SLAVE_CHANNEL_CFG;

Members

dwSize
结构体大小
struChanParam
从通道参数
byRes
保留，置为0

Remarks

当通道工作模式为主通道模式时，对其可以设置关联从通道，如在监舍应用场景中，可以扩大监控范围，实现多人值岗检测。在主从跟踪模式中，如前端联动球机，当有报警事件发生时，可以驱动从通道（接入球机时）对报警目标进行跟踪。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SLAVE_CHANNEL_PARAM

从通道参数结构体。

struct{
  BYTE                           byChanType;
  BYTE                           byRes1[3];
  NET_DVR_SLAVE_CHANNEL_UNION    uSlaveChannel;
  BYTE                           byRes2[64];
}NET_DVR_SLAVE_CHANNEL_PARAM,*LPNET_DVR_SLAVE_CHANNEL_PARAM;

Members

byChanType
区域类型：1-本机通道，2-远程通道
byRes1
保留，置为0
uSlaveChannel
从通道参数联合体，取值依赖于byChanType
byRes2
保留，置为0

See Also

NET_DVR_SLAVE_CHANNEL_CFG


NET_DVR_SLAVE_CHANNEL_UNION

从通道参数联合体。

union{
  BYTE               byRes[152];
  DWORD              dwLocalChannel;
  NET_DVR_CHANNEL    struRemoteChannel;
}NET_DVR_SLAVE_CHANNEL_UNION, *LPNET_DVR_SLAVE_CHANNEL_UNION;

Members

byRes
联合体大小，152字节
dwLocalChannel
本机通道，通道类型为本机通道时有效
struRemoteChannel
远程通道，通道类型为远程通道时有效

See Also

NET_DVR_SLAVE_CHANNEL_PARAM


NET_DVR_SLAVECAMERA_CALIB_CFG

从摄像机标定配置结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byCalibMode;
  BYTE                   byRes[3];
  NET_DVR_CALIB_PARAM    struCalibParam[MAX_CALIB_NUM];
  BYTE                   byRes1[64];
}NET_DVR_SLAVECAMERA_CALIB_CFG,*LPNET_DVR_SLAVECAMERA_CALIB_CFG;

Members

dwSize
结构体大小
byCalibMode
标定模式: 0- 保留，1- 自动标定，2- 手动标定
byRes
保留，置为0
struCalibParam
标定参数（手动标定模式下支持设置和获取，自动模式下只支持获取操作），数组下标0表示标定点1，依次类推，最多支持6个标定点，最少需要设置4个标定点
byRes1
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，该配置是需要先登录主摄像机，对其关联的从摄像机进行标定操作。
  • 设备是否支持从摄像机标定配置或者支持的参数能力，可以通过设备能力集进行判断，对应从摄像机配置和标定能力集(SlaveCameraCalibrating)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SLAVECAMERA_CALIB_V50

从摄像机标定配置结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byCalibMode;
  BYTE                   byRes[3];
  NET_DVR_CALIB_PARAM    struCalibParam[MAX_CALIB_NUM_EX];
  BYTE                   byRes1[64];
}NET_DVR_SLAVECAMERA_CALIB_V50,*LPNET_DVR_SLAVECAMERA_CALIB_V50;

Members

dwSize
结构体大小
byCalibMode
标定模式: 0- 保留，1- 自动标定，2- 手动标定
byRes
保留，置为0
struCalibParam
标定参数（手动标定模式下支持设置和获取，自动模式下只支持获取操作），数组下标0表示标定点1，依次类推，最少需要设置4个标定点
byRes1
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，该配置是需要先登录主摄像机，对其关联的从摄像机进行标定操作。
  • 设备是否支持从摄像机标定配置或者支持的参数能力，可以通过设备能力集进行判断，对应从摄像机配置和标定能力集(SlaveCameraCalibrating)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SLAVECAMERA_CALIB_V51

从摄像机标定配置结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byCalibMode;
  BYTE                   byRes[3];
  NET_DVR_CALIB_PARAM    struCalibParam[MAX_CALIB_NUM_EX];
  BYTE                   byRes1[512];
}NET_DVR_SLAVECAMERA_CALIB_V51,*LPNET_DVR_SLAVECAMERA_CALIB_V51;

Members

dwSize
结构体大小
byCalibMode
标定模式: 0- 保留，1- 自动标定，2- 手动标定
byRes
保留，置为0
struCalibParam
标定参数（手动标定模式下支持设置和获取，自动模式下只支持获取操作），数组下标0表示标定点1，依次类推，最少需要设置4个标定点
byRes1
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，该配置是需要先登录主摄像机，对其关联的从摄像机进行标定操作。
  • 设备是否支持从摄像机标定配置或者支持的参数能力，可以通过设备能力集进行判断，对应从摄像机配置和标定能力集(SlaveCameraCalibrating)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SLAVECAMERA_CFG

从摄像机IP信息配置参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byAddressType;
  WORD     wPort;
  BYTE     byLoginStatus;
  union{
           struct{
           BYTE              szDomain[MAX_DOMAIN_NAME];
           BYTE              byRes1[80];
           }struDomain;
           struct{
           NET_DVR_IPADDR    struIp;
           }struAddrIP;
  }unionServer;
  BYTE     szUserName[NAME_LEN];
  BYTE     szPassWord[PASSWD_LEN];
  BYTE     byRes1[128];
}NET_DVR_SLAVECAMERA_CFG,*LPNET_DVR_SLAVECAMERA_CFG;

Members

dwSize
结构体大小
byAddressType
地址类型：0- ipv4或者ipv6地址，1- 域名
wPort
端口号
byLoginStatus
从摄像机登录状态：0- 注销登录，1- 登录
unionDevAddr为设备地址联合体
szDomain
设备地址，域名，byAddressType为1时有效
byRes1
保留，置为0
struIp
IPv4或者IPv6地址(144字节)，byAddressType为0时有效
szUserName
用户名
szPassWord
密码
byRes1
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，该配置是需要先登录主摄像机，然后配置关联的从摄像机，目前最多支持设置4个从摄像机。
  • 设备是否支持从摄像机IP信息配置或者支持的参数能力，可以通过设备能力集进行判断，对应从摄像机IP信息配置能力集(SlaveCamera)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SLAVECAMERA_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SLAVECAMERA_COND

从摄像机配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byID;
  BYTE     byRes[63];
}NET_DVR_SLAVECAMERA_COND,*LPNET_DVR_SLAVECAMERA_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byID
主从跟踪的从摄像机ID编号，取值范围：[1,4]
byRes
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，相关配置是需要先登录主摄像机，然后配置关联的从摄像机，目前最多支持设置4个从摄像机。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig

NET_DVR_STDControl


NET_DVR_SLAVECAMERA_PARAM

单个从摄像机状态信息结构体。

struct{
  BYTE    byLinkStatus;
  BYTE    byRes[15];
}NET_DVR_SLAVECAMERA_PARAM,*LPNET_DVR_SLAVECAMERA_PARAM;

Members

byLinkStatus
连接状态：0- 未连接，1- 连接
byRes
保留，置为0

See Also

NET_DVR_SLAVECAMERA_STATUS


NET_DVR_SLAVECAMERA_STATUS

从摄像机连接状态信息结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_SLAVECAMERA_PARAM    struSlaveCamera[MAX_SLAVECAMERA_NUM];
  BYTE                         byRes[64];
}NET_DVR_SLAVECAMERA_STATUS,*LPNET_DVR_SLAVECAMERA_STATUS;

Members

dwSize
结构体大小
struSlaveCamera
从摄像机连接状态信息，数组下标0表示从摄像机ID 1，依次类推
byRes
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，该配置是需要先登录主摄像机，获取其关联的从摄像机连接状态信息。
  • 设备是否支持获取从摄像机连接状态信息，可以通过设备能力集进行判断，对应主从跟踪能力集(MasterSlaveTrackingCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MASTERSLAVETRACKING_CAPABILITIES，节点：<isSupportSlaveCameraStatus>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_SMART_REGION_COND

智能侦测区域配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwRegion;
}NET_DVR_SMART_REGION_COND,*LPNET_DVR_SMART_REGION_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwRegion
区域ID号，从1开始

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SMART_SEARCH_PARAM

智能搜索参数的结构体。

struct{
  BYTE                                   byChan;
  BYTE                                   bySearchCondType;
  WORD                                   wChan;
  NET_DVR_TIME                           struStartTime;
  NET_DVR_TIME                           struEndTime;
  NET_DVR_AREA_SMARTSEARCH_COND_UNION    uSmartSearchCond;
  BYTE                                   bySensitivity;
  BYTE                                   byRes2[11];
}NET_DVR_SMART_SEARCH_PARAM,*LPNET_DVR_SMART_SEARCH_PARAM;

Members

byChan
通道号
bySearchCondType
智能查找类型索引：0-侦测区域，1-越界侦测，2-区域入侵，3-人脸侦测
wChan
检索时使用的通道号，该字段是对byChan的扩展并且兼容，使用该字段后byChan可以不使用
struStartTime
录像的开始时间
struEndTime
录像的结束时间
uSmartSearchCond
智能查找条件联合体
bySensitivity
动态分析搜索灵敏度（bySearchCondType==0时有效，表示发生移动侦测区域占搜索区域的百分比，当移动侦测区域占搜索区域的百分比越低越容易搜出结果来，即灵敏度越高），取值：1-大于80%；2-大于40%小于80%；3-大于1%小于40%
byRes2
保留，置为0

See Also

NET_DVR_SmartSearch


NET_DVR_SMART_SEARCH_PARAM_V40

智能搜索参数的结构体。

struct{
  DWORD                                  dwSize;
  NET_DVR_STREAM_INFO                    struIDInfo;
  BYTE                                   bySearchCondType;
  BYTE                                   bySensitivity;
  BYTE                                   byRes1[2];
  NET_DVR_TIME_EX                        struStartTime;
  NET_DVR_TIME_EX                        struEndTime;
  NET_DVR_AREA_SMARTSEARCH_COND_UNION    uSmartSearchCond;
  BYTE                                   byISO8601;
  signed char                       cStartTimeDifferenceH;
  signed char                      cStartTimeDifferenceM;
   signed char       	          cStopTimeDifferenceH;
   signed char                     cStopTimeDifferenceM;
  BYTE                                   byRes2[251];
}NET_DVR_SMART_SEARCH_PARAM_V40,*LPNET_DVR_SMART_SEARCH_PARAM_V40;

Members

dwSize
结构体大小
struIDInfo
流信息，流ID或者通道号
bySearchCondType
智能查找联合体索引：0- 侦测区域，1- 越界侦测，2- 区域入侵，3- 人脸侦测
bySensitivity
动态分析搜索灵敏度（bySearchCondType==0时有效，表示发生移动侦测区域占搜索区域的百分比，当移动侦测区域占搜索区域的百分比越低越容易搜出结果来，即灵敏度越高），取值：1~100
byRes1
保留，置为0
struStartTime
录像的开始时间
struEndTime
录像的结束时间
uSmartSearchCond
智能查找条件联合体
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes2
保留，置为0

See Also

NET_DVR_SmartSearch_V40


NET_DVR_SMART_SEARCH_PIC_PARA

智能图片搜索条件结构体。

struct{
  DWORD                            dwChanNo;
  BYTE                             byStreamID[STREAM_ID_LEN];
  NET_DVR_TIME_EX                  struStartTime;
  NET_DVR_TIME_EX                  struEndTime;
  WORD                             wSearchType;
  BYTE                             byRes1[2];
  NET_DVR_SMARTSEARCH_PIC_UNION    uSmartSearchCond;
  BYTE            byISO8601;
    signed char             cStartTimeDifferenceH;
    signed char             cStartTimeDifferenceM;
    signed char             cStopTimeDifferenceH;
    signed char             cStopTimeDifferenceM;
  BYTE                             byRes[59];
}NET_DVR_SMART_SEARCH_PIC_PARA,*LPNET_DVR_SMART_SEARCH_PIC_PARA;

Members

dwChanNo
通道号
byStreamID
流ID信息，与dwChanNo相比，优先级较高，即当byStreamID不为空时，则使用流ID，为空的情况下使用dwChanNo字段
struStartTime
查找的开始时间
struEndTime
查找的结束时间
wSearchType
智能查找类型：0- 车辆检索，1- 人脸属性，2- 以图索图，3- 异常行为识别
byRes1
保留
uSmartSearchCond
智能查找条件
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

Remarks

“以图索图”功能，需要设备启用图像建模功能（NET_DVR_PIC_MODEL_CFG）。

See Also

NET_DVR_SmartSearchPicture


NET_DVR_SMART_SEARCH_PIC_RET

图片查找结果信息结构体。

struct{
  char                         sFileName[PICTURE_NAME_LEN];
  NET_DVR_TIME_EX              struTime;
  DWORD                        dwFileSize;
  WORD                         wPicType;
  BYTE                         byRes1[2];
  NET_DVR_PIC_FEATURE_UNION    uPicFeature;
  BYTE                         byISO8601;
  signed char                  cTimeDifferenceH;
  signed char                  cTimeDifferenceM;
  BYTE                         byRes[29];
}NET_DVR_SMART_SEARCH_PIC_RET,*LPNET_DVR_SMART_SEARCH_PIC_RET;

Members

sFileName
图片名称
struTime
图片的抓图时间
dwFileSize
图片的大小
wPicType
图片类型：0-车辆检索，1-人脸属性，2-以图索图，3-穿越警戒线（越界侦测），4-区域入侵，5-物品遗留，6-物品拿取，7-进入区域，8-离开区域，9-非法停车，10-徘徊，11-人员聚集，12-快速移动，13-人员奔跑，14-剧烈运动，15-人员倒地，16-人数异常，17-离岗检测，18-人员滞留，19-态势分析 20-玩手机
byRes1
保留
uPicFeature
图片属性
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

See Also

NET_DVR_FindNextSmartPicture


NET_DVR_SMART_SEARCH_RET

智能搜索结果的结构体。

struct{
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struEndTime;
   BYTE            byISO8601;
    signed char             cStartTimeDifferenceH;
    signed char             cStartTimeDifferenceM;
    signed char             cStopTimeDifferenceH;
    signed char             cStopTimeDifferenceM;
   BYTE            byRes[59];
}NET_DVR_SMART_SEARCH_RET,*LPNET_DVR_SMART_SEARCH_RET;

Members

struStartTime
智能录像片段开始时间
struEndTime
智能录像片段结束时间
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes2
保留，置为0

See Also

NET_DVR_SearchNextInfo


NET_DVR_SMARTCALIBRATION_CFG

Smart行为标定过滤尺寸配置结构体。

struct{
  DWORD                              dwSize;
  BYTE                               bySmartType;
  BYTE                               byRes[3];
  NET_DVR_SMARTCALIBRATION_REGION    strRegion[RULE_REGION_MAX];
  BYTE                               byRes1[128];
}NET_DVR_SMARTCALIBRATION_CFG,*LPNET_DVR_SMARTCALIBRATION_CFG;

Members

dwSize
结构体大小
bySmartType
智能类型：0-越界侦测，1-区域入侵侦测，2-进入区域侦测，3-离开区域侦测，4-徘徊侦测，5-快速运动侦测，6-停车侦测，7-物品遗留侦测，8-物品拿取侦测
byRes
保留，置为0
strRegion
标定过滤尺寸
byRes1
保留，置为0

Remarks

  • 设备是否支持Smart行为标定过滤尺寸配置或者支持的参数能力，可以通过设备能力集进行判断，对应Smart行为标定过滤尺寸配置能力集(SmartCalibrationCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMARTCALIBRATION_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SMARTCALIBRATION_COND

Smart行为标定过滤尺寸配置条件结构体。

struct{
  DWORD    dwSize;
  BYTE     bySmartType;
  BYTE     byRes[3];
  DWORD    dwChannel;
  BYTE     byRes1[128];
}NET_DVR_SMARTCALIBRATION_COND, *LPNET_DVR_SMARTCALIBRATION_COND;

Members

dwSize
结构体大小
bySmartType
事件类型：0- 越界侦测，1- 区域入侵侦测，2- 进入区域侦测，3- 离开区域侦测，4- 徘徊侦测，5- 快速运动侦测，6- 停车侦测，7- 物品遗留侦测，8- 物品拿取侦测
byRes
保留，置为0
dwChannel
通道号
byRes1
保留，置为0

Remarks

  • 设备是否支持Smart行为标定过滤尺寸配置或者支持的参数能力，可以通过设备能力集进行判断，对应Smart行为标定过滤尺寸配置能力集(SmartCalibrationCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMARTCALIBRATION_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SMARTCALIBRATION_REGION

Smart行为标定过滤尺寸参数结构体。

struct{
  BYTE               byRuleID;
  BYTE               byMode;
  BYTE               byStrategy;
  BYTE               byPriority;
  NET_VCA_POLYGON    struMaxTargetSize;
  NET_VCA_POLYGON    struMinTargetSize;
}NET_DVR_SMARTCALIBRATION_CFG,*LPNET_DVR_SMARTCALIBRATION_CFG;

Members

byRuleID
规则编号
byMode
尺寸模式：0- default Mode，1- pix Mode，2- actual Mode
byStrategy
过滤策略：0- area(面积)，1- widthHeight(宽高，byMode为pix Mode时有效)
byPriority
优先级：0- 默认值，1- 低，2- 中，3- 高
struMaxTargetSize
最大目标尺寸
struMinTargetSize
最小目标尺寸

See Also

NET_DVR_SMARTCALIBRATION_CFG


NET_DVR_SMARTIR_PARAM

SMART IR(防过曝)配置参数结构体。

struct{
  BYTE    byMode;
  BYTE    byIRDistance;
  BYTE    byShortIRDistance;
  BYTE    byLongIRDistance;
}NET_DVR_SMARTIR_PARAM, *LPNET_DVR_SMARTIR_PARAM;

Members

byMode
SMART IR模式：0- 自动，1- 手动
byIRDistance
红外距离等级(等级越高，红外距离越远)：1~100，默认:50，手动模式下可修改
byShortIRDistance
近光灯距离等级，取值范围：1~100
byLongIRDistance
远光灯距离等级，取值范围：1~100

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_SMARTSEARCH_PIC_UNION

智能查找条件联合体。

union{
  BYTE                          byLen[256];
  NET_DVR_VEHICLE_PARA          struVehiclePara;
  NET_VCA_HUMAN_FEATURE         struHumaFeature;
  NET_DVR_FACE_PIC_DATA_INFO    struHumaPic;
  NET_DVR_BEHAVIOUR_COND        struBehaviourCond;
}NET_DVR_SMARTSEARCH_PIC_UNION,*LPNET_DVR_SMARTSEARCH_PIC_UNION;

Members

byLen
联合体大小，256字节
struVehiclePara
车辆检测信息，智能查找类型(wSearchType)为"0-车辆检索"时有效
struHumaFeature
人脸属性，智能查找类型(wSearchType)为"1-人脸属性"时有效
struHumaPic
根据人脸子图信息查询（用于远程图片的以图索图功能），智能查找类型(wSearchType)为"2-以图索图"时有效
struBehaviourCond
异常行为识别搜索条件，智能查找类型(wSearchType)为"3-异常行为识别"时有效

See Also

NET_DVR_SMART_SEARCH_PIC_PARA


NET_DVR_SMARTTRACKCFG

智能运动跟踪配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[3];
  DWORD    dwDuration;
  BYTE     byRes1[124];
}NET_DVR_SMARTTRACKCFG, *LPNET_DVR_SMARTTRACKCFG;

Members

dwSize
结构体大小
byEnable
是否启用智能运动跟踪功能：0- 否，1- 是
byRes
保留，置为0
dwDuration
跟踪持续时间，取值范围：0~300，单位：秒，默认：300秒
byRes1
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SMOKEDETECTION_ALARM

烟雾报警信息结构体。

struct{
  NET_PTZ_INFO          struPTZPos;
  NET_PTZ_INFO          struThermalPTZPos;
  NET_DVR_LLPOS_PARAM   struLLPos;
  NET_VCA_RECT          struSmokePos;
  BYTE                  byRes[256];
}NET_DVR_SMOKEDETECTION_ALARM,*LPNET_DVR_SMOKEDETECTION_ALARM;

Members

struPTZPos
可见光设备PTZ位置
struThermalPTZPos
热成像设备PTZ位置
struLLPos
设备经纬度位置
struSmokePos
画面中烟雾区域位置
byRes
保留，置为0

See Also

NET_DVR_FIREDETECTION_ALARM


NET_DVR_SMOKEDETECTION_CFG

烟火检测灵敏度参数结构体。

struct{
  BYTE     byEnable;
  BYTE     bySensitivity;
  BYTE     byPatrolSensitivity;
  BYTE     byDoubleCheckSensitivity;
  BYTE     byRes[56];
}NET_DVR_SMOKEDETECTION_CFG, *LPNET_DVR_SMOKEDETECTION_CFG;

Members

byEnable
使能：0- 否，1- 是
bySensitivity
检测灵敏度，取值范围：1~100，默认50
byPatrolSensitivity
巡航检测灵敏度: 1~100默认50
byDoubleCheckSensitivity
二次过滤灵敏度: 1~100默认50
byRes
保留

Remarks

  • 设备是否支持火点检测配置能力或者支持的参数能力，可以通过设备能力集进行判断，对应火点检测配置能力集(FireDetection)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FIREDETECTION_CAPABILITIES。

See Also

NET_DVR_FIREDETECTION_CFG


NET_DVR_SMSCONTENT

短信内容结构体。

struct{
  DWORD    byPhoneNum[MAX_PHONE_NUM];
  BYTE     byMsg[MAX_SMSCONTENT_LEN];
}NET_DVR_SMSCONTENT,*LPNET_DVR_SMSCONTENT;

Members

byPhoneNum
手机号码
byMsg
短信内容

See Also

NET_DVR_GetSmsContent NET_DVR_SendSms


NET_DVR_SMSLISTINFO

短信列表信息结构体。

struct{
  DWORD      dwSize;
  DWORD      dwTotalSmsNum;
  BYTE       byRes[8];
  BYTE       *pSmsParam;
  DWORD      dwBufLen;
}NET_DVR_SMSLISTINFO,*LPNET_DVR_SMSLISTINFO;

Members

dwSize
结构体大小
dwTotalSmsNum
短信条数
byRes
保留
pSmsParam
短信参数，对应dwTotalSmsNum个NET_DVR_SMSPARAM
dwBufLen
所分配指针长度

See Also

NET_DVR_GetSmsListInfo


NET_DVR_SMSPARAM

短信相关参数结构体。

struct{
  DWORD               dwIndex;
  BYTE                byStatus;
  BYTE                byRes[7];
  NET_DVR_TIME_EX     struRecvTime;
}NET_DVR_SMSPARAM, *LPNET_DVR_SMSPARAM;

Members

dwIndex
短信索引
byStatus
已读或者未读
byRes
保留
struRecvTime
短信接收时间

See Also

NET_DVR_SMSLISTINFO


NET_DVR_SMSRELATIVEPARAM

短信相关参数结构体。

struct{
  DWORD               dwSize;
  BYTE                bEnableSmsAlarm;
  BYTE                byRes1[7];
  NET_DVR_PHONECFG    struAllowList[MAX_ALLOWLIST_NUM];
  BYTE                byRes2[32];
}NET_DVR_SMSRELATIVEPARAM, *LPNET_DVR_SMSRELATIVEPARAM;

Members

dwSize
结构体大小
bEnableSmsAlarm
是否启动短信报警，0- 禁用，1- 启用
byRes1
保留
struAllowList
授权名单列表
byRes2
保留

Remarks

  • 各报警及异常需增加短信报警联动方式，当使能为真时，该联动方式便能生效。
  • 短信报警需配合授权名单使用，短信报警发生时将短信发送给授权名单中的号码。授权名单也可以配合短信控制设备使用，只有授权名单上的号码才允许发送控制短信给设备，使设备进行相应操作。
  • 设备是否支持短信相关配置或者支持的参数能力，可以通过设备能力集进行判断，对应无线网络能力集(NetworkSetting)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETWORK_ABILITY，节点：<MessageConfig>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SMSRELATIVEPARAM_V50

短信相关参数结构体。

struct{
  DWORD                 dwSize;
  BYTE                  bEnableSmsAlarm;
  BYTE                  byRes1[7];
  NET_DVR_PHONECFG_V50  struAllowList[NET_SDK_MAX_ALLOWLIST_NUM];
  BYTE                  byRes2[32];
}NET_DVR_SMSRELATIVEPARAM_V50, *LPNET_DVR_SMSRELATIVEPARAM_V50;

Members

dwSize
结构体大小
bEnableSmsAlarm
是否启动短信报警，0- 禁用，1- 启用3G
byRes1
保留
struAllowList
授权名单列表
byRes2
保留

Remarks

  • 各报警及异常需增加短信报警联动方式，当使能为真时，该联动方式便能生效。
  • 短信报警需配合授权名单使用，短信报警发生时将短信发送给授权名单中的号码。授权名单也可以配合短信控制设备使用，只有授权名单上的号码才允许发送控制短信给设备，使设备进行相应操作。
  • 设备是否支持短信相关配置或者支持的参数能力，可以通过设备能力集进行判断，对应无线网络能力集(NetworkSetting)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETWORK_ABILITY，节点：<MessageConfig>。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SNAP_ABILITY

智能交通摄像机能力集参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byIoInNum;
  BYTE     byIoOutNum;
  BYTE     bySingleSnapNum;
  BYTE     byLightModeArrayNum;
  BYTE     byMeasureModeArrayNum;
  BYTE     byPlateEnable;
  BYTE     byLensMode;
  BYTE     byPreTriggerSupport;
  DWORD    dwAbilityType;
  BYTE     byIoSpeedGroup;
  BYTE     byIoLightGroup;
  BYTE     byRecogRegionType;
  BYTE     bySupport;
  WORD     wSupportMultiRadar;
  BYTE     byICRPresetNum;
  BYTE     byICRTimeSlot;
  BYTE     bySupportRS485Num;
  BYTE     byExpandRs485SupportSensor;
  BYTE     byExpandRs485SupportSignalLampDet;
  BYTE     byRelayNum;
  BYTE     bySupport1;
  BYTE     bySupport2;
  BYTE     bySupportWhiteBalance;
  BYTE     byRes[9];
}NET_DVR_SNAP_ABILITY, *LPNET_DVR_SNAP_ABILITY;

Members

dwSize
结构体大小
byIoInNum
IO输入口数
byIoOutNum
IO输出口数
bySingleSnapNum
单IO触发组数
byLightModeArrayNum
红绿灯模式组数
byMeasureModeArrayNum
测速模式组数
byPlateEnable
车牌识别能力，0-没有，1-有
byLensMode
前端镜头模式：0-CCD，1-CMOS
byPreTriggerSupport
是否支持原触发模式：0- 支持，1- 不支持
dwAbilityType
支持的触发模式能力，按位表示，定义如下所示：
enum _ITC_MAINMODE_ABILITY_{
  ITC_MODE_UNKNOW      = 0x0,
  ITC_POST_MODE        = 0x1,
  ITC_EPOLICE_MODE     = 0x2,
  ITC_POSTEPOLICE_MODE = 0x4
}ITC_MAINMODE_ABILITY
ITC_MODE_UNKNOW
无
ITC_POST_MODE
卡口模式
ITC_EPOLICE_MODE
电警模式
ITC_POSTEPOLICE_MODE
卡式电警模式
byIoSpeedGroup
支持的IO测速组数
byIoLightGroup
支持的IO红绿灯组数
byRecogRegionType
牌识区域支持的类型，定义如下所示：
enum _ITC_RECOG_REGION_TYPE_{
  ITC_REGION_RECT      = 0x0,
  ITC_REGION_POLYGON   = 0x1
}ITC_RECOG_REGION_TYPE
ITC_REGION_RECT
矩形
ITC_REGION_POLYGON
多边形
bySupport
设备能力，按位表示，值：0-不支持，1-支持
bySupport&0x1，表示是否支持扩展的字符叠加配置(NET_ITS_OVERLAP_CFG)
bySupport&0x2，表示是否支持扩展的校时配置结构(NET_DVR_CALIBRATE_TIME)
bySupport&0x4, 表示是否支持多网卡(多网隔离)（NET_DVR_NETCFG_MULTI）
bySupport&0x8, 表示是否支持网卡的bonding功能(网络容错)（NET_DVR_NETWORK_BONDING）
bySupport&0x10, 表示是否支持语音对讲
bySupport&0x20，表示是否支持单IO触发界面IO使能配置（NET_ITC_SINGLEIO_PARAM中参数byRelatedIOOutEx）
bySupport&0x40，表示是否支持扩展的FTP接口（NET_ITC_FTP_CFG）
bySupport&0x80，表示是否支持云存储接口（NET_DVR_CLOUDSTORAGE_CFG）
wSupportMultiRadar
设备能力（RS485口关联雷达能力），按位表示，值：0-不支持，1-支持
wSupportMultiRadar&0x1，表示卡口RS485雷达是否支持车道关联雷达处理
wSupportMultiRadar&0x2，表示卡口虚拟线圈是否支持车道关联雷达处理
wSupportMultiRadar&0x8, 表示视频检测是否支持车道关联雷达处理
byICRPresetNum
表示支持的ICR预置点（滤光片偏移点）数
byICRTimeSlot
表示支持的ICR的时间段数（1～8）
bySupportRS485Num
表示支持的RS485口的数量
byExpandRs485SupportSensor
设备能力（RS485口关联车检器能力），按位表示，值：0-不支持，1-支持
byExpandRs485SupportSensor&0x1，表示电警车检器是否支持车检器
byExpandRs485SupportSensor&0x2，表示卡式电警车检器是否支持车检器
byExpandRs485SupportSignalLampDet
设备能力（RS485口关联信号灯检测器能力），按位表示，值：0-不支持，1-支持
byExpandRs485SupportSignalLampDet&0x1，表示电警车检器是否支持外接信号灯检测器
byExpandRs485SupportSignalLampDet&0x2，表示卡式电警车检器是否支持外接信号灯检测器
byExpandRs485SupportSignalLampDet&0x4, 表示视频电警是否支持外接信号灯检测器
byRelayNum
表示支持继电器的个数
bySupport1
设备能力（扩展），按位表示，值：0-不支持，1-支持
bySupport1&0x1, 表示是否支持自定义校时信息配置（NET_DVR_CALIBRATE_TIME）
bySupport1&0x2, 表示是否支持视频触发优化方案（NET_ITC_POST_VTCOIL_PARAM）
bySupport1&0x4, 表示是否支持DDNS配置（NET_DVR_DDNSPARA_V30）
bySupport1&0x8, 表示是否支持获取设备当前触发模式接口命令（NET_DVR_CURTRIGGERMODE）
bySupport1&0x10, 表示是否支持出入口配置（NET_DVR_ENTRANCE_CFG）
bySupport1&0x20, 表示是否支持GPS模块参数配置（NET_DVR_GPS_DATACFG）
bySupport1&0x40, 表示是否支持NTP校时间隔支持分钟设置（NET_DVR_NTPPARA）
bySupport1&0x80, 表示是否支持TPS报警数据上传（COMM_ALARM_TPS_REAL_TIME和COMM_ALARM_TPS_STATISTICS）
bySupport2
设备能力（扩展），按位表示，值：0-不支持，1-支持
bySupport2&0x01, 表示是否支持码流附加信息配置（NET_DVR_STREAM_ATTACHINFO_CFG）
bySupport2&0x02, 表示是否支持通道图像参数（NET_DVR_PICCFG_V30）中视频叠加时间毫秒使能参数(byOSDMilliSecondEnable)
bySupportWhiteBalance
白平衡能力（默认都是支持手动白平衡、自动白平衡、自动白平衡2这3种模式），按位表示，值：0-不支持，1-支持
bySupportWhiteBalance &0x01, 表示是否支持日光灯模式
bySupportWhiteBalance &0x02, 表示是否支持自然光模式
bySupportWhiteBalance &0x04, 表示是否支持暖光灯模式
bySupportWhiteBalance &0x08, 表示是否支持白炽灯模式
byRes
保留，置为0

Remarks

V3.0（含）之前版本仅支持老的触发模式（byPreTriggerSupport=0），不支持新的触发模式（dwAbilityType=0)。

See Also

NET_DVR_GetDeviceAbility


NET_DVR_SNAP_CAMERAPARAMCFG

CCD参数结构体。

struct{
  BYTE               byWDRMode;
  BYTE               byWDRType;
  BYTE               byWDRLevel;
  BYTE               byRes1;
  NET_DVR_TIME_EX    struStartTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byDayNightBrightness;
  BYTE               byMCEEnabled;
  BYTE               byMCELevel;
  BYTE               byAutoContrastEnabled;
  BYTE               byAutoContrastLevel;
  BYTE               byLSEDetailEnabled;
  BYTE               byLSEDetailLevel;
  BYTE               byLPDEEnabled;
  BYTE               byLPDELevel;
  BYTE               byRes[35];
}NET_DVR_SNAP_CAMERAPARAMCFG, *LPNET_DVR_SNAP_CAMERAPARAMCFG;

Members

byWDRMode
宽动态模式：0- 关闭，1- 数字宽动态，2- 宽动态态
byWDRType
宽动态切换模式：0- 强制启用，1- 按时间启用，2- 按亮度启用
byWDRLevel
宽动态等级，索引0~6分别对应等级1~7，默认索引2（即3级）
byRes1
保留
struStartTime
开始宽动态时间
struEndTime
结束宽动态时间
byDayNightBrightness
日夜转换亮度阈值，取值范围：0~100，默认：50
byMCEEnabled
记忆色增强使能：0- 关闭，1- 开启
byMCELevel
记忆色增强强度，取值范围：0~100，默认值：50
byAutoContrastEnabled
自动对比度使能：0- 关闭，1- 开启
byAutoContrastLevel
自动对比等级，取值范围：0~100，默认值：50
byLSEDetailEnabled
细节增强使能：0- 关闭，1- 开启
byLSEDetailLevel
细节增强等级，取值范围：0~100，默认值：50
byLPDEEnabled
车牌增强使能：0- 关闭，1- 开启
byLPDELevel
车牌增强等级，取值范围：0~100，默认值：50
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_SNAPCFG

触发参数结构体。

struct{
  DWORD               dwSize;
  BYTE                byRelatedDriveWay;
  BYTE                bySnapTimes;
  WORD                wSnapWaitTime;
  WORD                wIntervalTime[MAX_INTERVAL_NUM];
  DWORD               dwSnapVehicleNum;
  NET_DVR_JPEGPARA    struJpegPara;
  BYTE                byRes2[16];
}NET_DVR_SNAPCFG, *LPNET_DVR_SNAPCFG;

Members

dwSize
结构体大小
byRelatedDriveWay
触发IO关联的车道号，取值范围[0,9]
bySnapTimes
线圈抓拍次数，0-不抓拍，非0-连拍次数，目前最大5次
wSnapWaitTime
抓拍等待时间，单位ms，取值范围[0,60000]
wIntervalTime
连拍间隔时间，单位ms，取值范围[67,60000]
dwSnapVehicleNum
抓拍车辆序号，从1开始，逐次递增
struJpegPara
抓拍图片参数，需要设备支持(参数取值范围由设备能力集为准)，目前门禁考勤一体机V1.1支持
byRes2
保留，置为0

Remarks

  • 对于门禁主机，设备是否支持网络触发连拍或者支持的参数能力，可以通过设备能力集进行判断，对应门禁主机能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY，节点：<ContinuousShootCfg>。
  • 对应智能交通摄像机，目前没有相关能力集。

See Also

NET_DVR_ContinuousShoot NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SNAPENABLECFG

使能参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byPlateEnable;
  BYTE       byRes1[2];
  BYTE       byFrameFlip;
  WORD       wFlipAngle;
  WORD       wLightPhase;
  BYTE       byLightSyncPower;
  BYTE       byFrequency;
  BYTE       byUploadSDEnable;
  BYTE       byPlateMode;
  BYTE       byUploadInfoFTP;
  BYTE       byAutoFormatSD;
  WORD       wJpegPicSize;
  BYTE       bySnapPicResolution;
  BYTE       byRes[55];
}NET_DVR_SNAPENABLECFG, *LPNET_DVR_SNAPENABLECFG;

Members

dwSize
结构体大小
byPlateEnable
是否支持车牌识别：0- 不支持，1- 支持
byRes1
保留，置为0
byFrameFlip
图像是否翻转：0- 不翻转，1- 翻转
wFlipAngle
图像翻转角度：0，90，180，270
wLightPhase
相位，取值范围[0, 360]
byLightSyncPower
是否信号灯电源同步：0- 不同步，1- 同步
byFrequency
信号频率
byUploadSDEnable
是否自动上传SD图片：0- 否，1- 是
byPlateMode
识别模式参数（仅iDS-65xx支持）：0- 视频触发，1- 外部触发。
byUploadInfoFTP
是否上传抓拍附加信息到FTP：0- 否，1- 是
byAutoFormatSD
是否自动格式化SD卡：0- 否，1- 是
wJpegPicSize
Jpeg图片大小，取值范围：64~8196，单位：KB，用于V3.5或以上版本的智能交通摄像机的图像质量配置
bySnapPicResolution
抓拍图片分辨率(与NET_DVR_COMPRESSION_INFO_V30中分辨率保持一致)：
0-DCIF(528*384/528*320)，1-CIF(352*288/352*240)，2-QCIF(176*144/176*120)，3-4CIF(704*576/704*480)或D1(720*576/720*486)，4-2CIF(704*288/704*240)，6-QVGA(320*240)，7-QQVGA(160*120)，12-384*288，13-576*576，16-VGA(640*480)，17-UXGA(1600*1200)，18-SVGA(800*600)，19-HD720P(1280*720)，20-XVGA(1280*960)，21-HD900P(1600*900)，22-1360*1024，23-1536*1536，24-1920*1920，27-1920*1080p，28-2560*1920，29-1600*304，30-2048*1536，31-2448*2048，32-2448*1200，33-2448*800，34-XGA(1024*768)，35-SXGA(1280*1024)，36-WD1(960*576/960*480)，37-1080i(1920*1080)，38-WXGA(1440*900)，39-HD_F(1920*1080/1280*720)，40-HD_H(1920*540/1280*360)，41-HD_Q(960*540/630*360)，42-2336*1744，43-1920*1456，44-2592*2048，45-3296*2472，46-1376*768，47-1366*768，48-1360*768，49-WSXGA+，50-720*720，51-1280*1280，52-2048*768，53-2048*2048，54-2560*2048，55-3072*2048，56-2304*1296，57-WXGA(1280*800)，58-1600*600，59-1600*900，60-2752*2208，61-384*288，62-4000*3000，63-4096*2160，64-3840*2160，65-4000*2250，66-3072*1728，67-2592*1944，68-2464*1520，69-1280*1920，70-2560*1440，71-1024*1024，72-160*128，73-324*240，74-324*256，75-336*256，76-640*512，77-2720*2048，78-384*256，79-384*216，80-320*256，81-320*180，82-320*192，83-512*384，84-325*256，85-256*192，86-640*360，87-1776*1340，88-1936*1092，89-2080*784，90-2144*604，91-1920*1200，92-4064*3040，93-3040*3040，96-2560*2560，97-2688*1536，98-2688*1520，99-3072*3072，100-3392*2008，101-4000*3080，102-960*720，103-1024*1536，104-704*1056，105-352*528，106-2048*1530，107-2560*1600，108-2800*2100，109-4088*4088，110-4000*3072，111-960*1080(half 1080p)，112-640*720(half 720p)，0xff-Auto(使用当前码流分辨率)
byRes
保留，置为0

Remarks

使能参数配置能力：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)，获取抓拍机和智能终端能力(ITDeviceAbility)，对应节点：<SnapEnableCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SNAPINFO_COND

抓拍图片配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byRelateType;
  BYTE     byRes[63];
}NET_DVR_SNAPINFO_COND,*LPNET_DVR_SNAPINFO_COND;

Members

dwSize
结构体大小
dwChan
通道号
byRelateType
0- 关联抓拍MPR模式（多帧触发抓拍IPC使用），1- 关联抓拍HVT模式（混卡IPC使用）
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SNAPINFOCFG

抓拍图片参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCurPicType;
  BYTE     byPicQuality;
  BYTE     byRes1[2];
  DWORD    dwPicSize;
  BYTE     byRes2[128];
}NET_DVR_SNAPINFOCFG,*LPNET_DVR_SNAPINFOCFG;

Members

dwSize
结构体大小
byCurPicType
当前生效的图片参数：0- 图片质量，1- 图片大小
byPicQuality
图片质量，取值范围：[1,100]
byRes1
保留，置为0
dwPicSize
图片大小，取值范围：[64k,2048k]，单位：字节
byRes2
保留，置为0

Remarks

抓图图片大小和图片质量不能同时生效。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_SNMPCFG

SNMP协议配置结构体。

struct{
  DWORD          dwSize;
  BYTE           byEnable;
  BYTE           byRes1[3];
  WORD           wVersion;
  WORD           wServerPort;
  BYTE           byReadCommunity[NAME_LEN];
  BYTE           byWriteCommunity[NAME_LEN];
  BYTE           byTrapHostIP[DESC_LEN_64] ;
  WORD           wTrapHostPort;
  BYTE           byTrapName[NAME_LEN];
  BYTE           byRes2[70];
}NET_DVR_SNMPCFG,*LPNET_DVR_SNMPCFG;

Members

dwSize
结构体大小
byEnable
0-禁用SNMP，1-启用SNMP
byRes1
保留，置为0
wVersion
snmp版本：1-v1，2-v2
wServerPort
snmp消息接收端口，默认161
byReadCommunity
读共同体，最多31，默认"public"
byWriteCommunity
写共同体，最多31 字节，默认"private"
byTrapHostIP
自陷主机ip地址描述，支持IPV4、IPV6或者域名描述
wTrapHostPort
trap主机端口
byTrapName
trap主机名称
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SNMPCFG_V30

SNMP协议配置结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byEnableV1;
  BYTE                   byEnableV2;
  BYTE                   byEnableV3;
  BYTE                   byRes1[3];
  WORD                   wServerPort;
  BYTE                   byReadCommunity[NAME_LEN];
  BYTE                   byWriteCommunity[NAME_LEN];
  BYTE                   byTrapHostIP[DESC_LEN_64] ;
  WORD                   wTrapHostPort;
  BYTE                   byRes2[2];
  NET_DVR_SNMPv3_USER    struRWUser;
  NET_DVR_SNMPv3_USER    struROUser;
  BYTE                   byTrapName[NAME_LEN];
}NET_DVR_SNMPCFG_V30,*LPNET_DVR_SNMPCFG_V30;

Members

dwSize
结构体大小
byEnableV1
0- 禁用SNMP V1，1- 表示启用SNMP V1
byEnableV2
0- 禁用SNMP V2，1- 表示启用SNMP V2
byEnableV3
0- 禁用SNMP V3，1- 表示启用SNMP V3
byRes1
保留，置为0
wServerPort
snmp消息接收端口，默认161
byReadCommunity
读共同体，最多31，默认"public"
byWriteCommunity
写共同体，最多31 字节，默认"private"
byTrapHostIP
自陷主机ip地址描述，支持IPV4、IPV6或者域名描述
wTrapHostPort
trap主机端口
byRes2
保留，置为0
struRWUser
读写用户
struROUser
只读用户
byTrapName
trap主机名称

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SNMPv3_USER

SNMP用户配置结构体。

struct{
  BYTE                   byUserName[NAME_LEN];
  BYTE                   bySecLevel;
  BYTE                   byAuthtype;
  BYTE                   byPrivtype;
  BYTE                   byRes[5];
  BYTE                   byAuthpass[PASSWD_LEN] ;
  BYTE                   byPrivpass[PASSWD_LEN] ;
}NET_DVR_SNMPv3_USER,*LPNET_DVR_SNMPv3_USER;

Members

byUserName
用户名
bySecLevel
安全级别：1- 无校验，2- 无授权校验，3- 授权校验
byAuthtype
认证类型：0- MD5，1- SHA，2- 无
byPrivtype
加密类型：0- DES，1- AES，2- 无
byRes
保留，置为0
byAuthpass
认证密码
byPrivpass
加密密码

See Also

NET_DVR_SNMPCFG_V30


NET_DVR_SOCKS_CFG

SOCKS信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableSocks;
  BYTE     byVersion;
  WORD     wProxyPort;
  BYTE     byProxyaddr[MAX_DOMAIN_NAME];
  BYTE     byUserName[MAX_DOMAIN_NAME];
  BYTE     byPassword[NAME_LEN];
  BYTE     byLocalAddr[MAX_LOCAL_ADDR_LEN];
  BYTE     byRes[128];
}NET_DVR_SOCKS_CFG,*LPNET_DVR_SOCKS_CFG;

Members

dwSize
结构体大小
byEnableSocks
SOCKS使能：0- 关闭，1- 开启
byVersion
SOCKS版本：4- SOCKS4，5- SOCKS5
wProxyPort
代理端口，默认1080
byProxyaddr
代理IP地址，可以是域名
byUserName
用户名，用于SOCKS5
byPassword
密码，用于SOCKS5
byLocalAddr
不使用socks代理的网段，格式为"ip/netmask;ip/netmask;…"
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SOCKS_PROXY_PARA

代理服务器信息结构体。

struct{
  BYTE    byIP[129];
  BYTE    byAuthType;
  WORD    wPort;
  BYTE    byRes2[64];
}NET_DVR_SOCKS_PROXY_PARA,*LPNET_DVR_SOCKS_PROXY_PARA;

Members

byIP
代理服务器地址
byAuthType
认证方式，暂时先不使用该字段
wPort
代理服务器端口
byRes2
保留，置为0

See Also

NET_DVR_SOCKS_PROXYS


NET_DVR_SOCKS_PROXYS

代理服务器参数结构体。

struct{
  NET_DVR_SOCKS_PROXY_PARA    struProxy[4];
}NET_DVR_SOCKS_PROXYS,*LPNET_DVR_SOCKS_PROXYS;

Members

struProxy
代理服务器信息，每位数组表示一个代理服务器，允许重复设置相同代理服务器

See Also

NET_DVR_GetSDKLocalCfg NET_DVR_SetSDKLocalCfg


NET_DVR_SOFTWARE_SERVICE_CFG

软件服务配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byThirdStreamEnabled;
  BYTE     byRes[255];
}NET_DVR_SOFTWARE_SERVICE_CFG,*LPNET_DVR_SOFTWARE_SERVICE_CFG;

Members

dwSize
结构体大小
byThirdStreamEnabled
是否开启三码流：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 2x系列100w、200w、400w型号网络摄像机，因为性能问题，三码流启用之后不支持旋转、宽动态、Smart264功能。
  • 设备是否支持软件服务配置或者支持的参数能力，可以通过设备能力集进行判断，对应软件服务能力集(SoftwareService)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SOFTWARE_SERVICE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_SPARE_DISK_PARAM

设备热备参数结构体。

struct{
  WORD    wPDSlot;
  WORD    wArrayID;
  BYTE    bySpareType;
  BYTE    byRes[7];
}NET_DVR_SPARE_DISK_PARAM, *LPNET_DVR_SPARE_DISK_PARAM;

Members

wPDSlot
物理磁盘槽位
wArrayID
所属的阵列ID（热备类型为指定阵列时有效）
bySpareType
热备类型：0- 取消热备，1-全局热备，2-指定阵列（此时阵列的ID有效）
byRes
保留，置为0

See Also

NET_DVR_SetSpareDisk


NET_DVR_SPECIAL_FINDINFO_UNION

智能查找条件联合体。

union{
  BYTE                   byLenth[8];
  NET_DVR_ATMFINDINFO    struATMFindInfo;
}NET_DVR_SPECIAL_FINDINFO_UNION,*LPNET_DVR_SPECIAL_FINDINFO_UNION;

Members

uLen
联合体大小，8字节
struATMFindInfo
ATM查询条件

See Also

NET_DVR_FILECOND_V40


NET_DVR_SPEEDLMT_PARA

限速参数配置结构体。

struct{
  BYTE           bStartMaxSpeedLimit;
  BYTE           bStartMinSpeedLimit;
  BYTE           byRes[6];
  DWORD          dwMaxSpeedLimit;
  DWORD          dwMinSpeedLimit;
}NET_DVR_SPEEDLMT_PARA, *LPNET_DVR_SPEEDLMT_PARA;

Members

bStartMaxSpeedLimit
开启高速限制，0- 否，1- 是
bStartMinSpeedLimit
开启低速限制，0- 否，1- 是
byRes
保留
dwMaxSpeedLimit
最高限速，km/h
dwMinSpeedLimit
最低限速，km/h

See Also

NET_DVR_ENFORCESYS_PARA


NET_DVR_SPRCFG

车牌识别参数结构体。

struct{
  DWORD          dwSize;
  BYTE           byDefaultCHN[MAX_CHJC_NUM];
  BYTE           byPlateOSD;
  BYTE           bySendJPEG1;
  BYTE           bySendJPEG2;
  WORD           wDesignedPlateWidth;
  BYTE           byTotalLaneNum;
  BYTE           byRes1;
  WORD           wRecognizedLane;
  NET_VCA_RECT   struLaneRect[MAX_LANERECT_NUM];
  DWORD          dwRecogMode;
  BYTE           bySendPRRaw;
  BYTE           bySendBinImage;
  BYTE           byDelayCapture;
  BYTE           byUseLED;
  BYTE           byRes2[68];
}NET_DVR_SPRCFG, *LPNET_DVR_SPRCFG;

Members

dwSize
结构体大小
byDefaultCHN
设备运行省份的汉字简写
byPlateOSD
0-不叠加车牌彩色图，1-叠加车牌彩色图
bySendJPEG1
0-不传送近景JPEG图,1-传送近景JPEG图
bySendJPEG2
0-不传送远景JPEG图,1-传送远景JPEG图
wDesignedPlateWidth
车牌设计宽度
byTotalLaneNum
识别的车道数
byRes1
保留，置为0
wRecognizedLane
识别的车道号，按位表示，bit0表示车道1是否识别，0-不识别，1-识别
struLaneRect
车道识别区域
dwRecogMode
识别的类型，
bit0-背向识别：0-正向车牌识别，1-背向识别(尾牌识别) ；
bit1-大车牌识别或小车牌识别：0-小车牌识别，1-大车牌识别 ；
bit2-车身颜色识别：0-不采用车身颜色识别，在背向识别或小车牌识别时禁止启用，1-车身颜色识别；
bit3-农用车识别：0-不采用农用车识别，1-农用车识别；
bit4-模糊识别：0-不采用模糊识别，1-模糊识别；
bit5-帧定位或场定位：0-帧定位，1-场定位；
bit6-帧识别或场识别：0-帧识别，1-场识别；
bit7-晚上或白天：0-白天，1-晚上
bySendPRRaw
是否发送车辆原图（仅iDS-65xx支持）：0-不发送，1-发送
bySendBinImage
是否发送车牌二值图（仅iDS-65xx支持）：0-不发送，1-发送
byDelayCapture
延时抓拍控制（仅iDS-65xx支持），单位：帧
byUseLED
是否使用LED控制（仅iDS-65xx支持）：0-否，1-是
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_START_FILE_TO_CLOUD_COND

上传文件到云条件结构体。

struct{
  DWORD    dwSize;
  BYTE     aCameraID[MAX_CAMERAID_LEN];
  DWORD     dwPoolID;
  DWORD     dwRepPoolID;
  WORD     wReplication;
  BYTE     byRes[178];
}NET_DVR_START_FILE_TO_CLOUD_COND,*LPNET_DVR_START_FILE_TO_CLOUD_COND;

Members

dwSize
结构体大小
aCameraID
编码器ID
dwPoolID
存储池ID。
dwRepPoolID
冗余池ID
wReplication
冗余份数
byRes
保留，置为0

See Also

NET_DVR_UploadFile_V40


NET_DVR_START_PIC_VIEW_INFO

回显信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwSignalIndex;
  DWORD    dwDeviceIndex;
  BYTE     byRes1[12];
  BYTE     byChanIndex;
  BYTE     byRes2[3];
  DWORD    dwScreenNum;
  DWORD    dwLayer;
  DWORD    dwResolution;
  BYTE     byFrame;
  BYTE     byRes3[15];
}NET_DVR_START_PIC_VIEW_INFO,*LPNET_DVR_START_PIC_VIEW_INFO;

Members

dwSize
结构体大小
dwSignalIndex
信号源序号，该参数用于多屏控制器，其他设备该值设为0
dwDeviceIndex
设备序号
byRes1
保留，置为0
byChanIndex
通道号
byRes2
保留，置为0
dwScreenNum
大屏序号：从零开始
dwLayer
图层号：从零开始
dwResolution
回显分辨率：1-QCIF，2-CIF，3-4CIF
byFrame
帧率，单位：帧/秒
byRes3
保留，置为0

See Also

NET_DVR_StartPicPreview


NET_DVR_STATISTIC_DATA_CFG

统计数据配置结构体。

struct{
  DWORD           dwSize;
  DWORD           dwTypeTarget;
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struStopTime;
  BYTE            byRes[300];
}NET_DVR_STATISTIC_DATA_CFG,*LPNET_DVR_STATISTIC_DATA_CFG;

Members

dwSize
结构体大小
dwTypeTarget
统计对象类型，详见TARGET_TYPE，具体定义如下：
enum _VCA_OPERATE_TYPE_{
  NET_SDK_ALL_TARGET       = 0,
  NET_SDK_PPT_TARGET_ALARM,
  NET_SDK_PPT_TARGET_VIEW ,
  NET_SDK_STU_SINGLE_ALARM,
  NET_SDK_STU_SINGLE_VIEW,
  NET_SDK_SUT_MULT_ALARM,
  NET_SDK_STU_MULT_VIEW,
  NET_SDK_STU_TEACHER_VIEW,
  NET_SDK_TEA_UP_DOWN_ALARM,
  NET_SDK_TEA_START_VIEW,
  NET_SDK_BLA_WRITE_ALARM,
  NET_SDK_BLA_WRITE_VIEW,
  NET_SDK_TEA_FULL_VIEW,
  NET_SDK_TEA_START_ALARM,
  NET_SDK_TEA_WALK_ALARM,
  NET_SDK_TEA_LEFT_ALARM,
  NET_SDK_TEA_RUN_ALARM,
  NET_SDK_TEA_MULT_ALARM
}VCA_OPERATE_TYPE
NET_SDK_ALL_TARGET
统计所有对象
NET_SDK_PPT_TARGET_ALARM
PPT报警
NET_SDK_PPT_TARGET_VIEW
PPT视图
NET_SDK_STU_SINGLE_ALARM
单个学生报警
NET_SDK_STU_SINGLE_VIEW
单个学生视图
NET_SDK_SUT_MULT_ALARM
多个学生报警
NET_SDK_STU_MULT_VIEW
多个学生视图
NET_SDK_STU_TEACHER_VIEW
师生互动视图
NET_SDK_TEA_UP_DOWN_ALARM
教师上下讲台
NET_SDK_TEA_START_VIEW
教师授课视图
NET_SDK_BLA_WRITE_ALARM
书写板书报警
NET_SDK_BLA_WRITE_VIEW
书写板书视图
NET_SDK_TEA_FULL_VIEW
教师全景视图
NET_SDK_TEA_START_ALARM
教师开始授课报警
NET_SDK_TEA_WALK_ALARM
教师走动报警
NET_SDK_TEA_LEFT_ALARM
教师离开报警
NET_SDK_TEA_RUN_ALARM
教师奔跑报警
NET_SDK_TEA_MULT_ALARM
教师多人报警
struStartTime
事件开始时间
struStopTime
事件结束时间
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_STATISTIC_DATA_COND

统计数据条件结构体。

struct{
  DWORD         dwSize;
  DWORD         dwTypeTarget;
  NET_DVR_TIME  struStartTime;
  NET_DVR_TIME  struStopTime;
  BYTE          byRes[280];
}NET_DVR_STATISTIC_DATA_COND,*LPNET_DVR_STATISTIC_DATA_COND;

Members

dwSize
结构体大小
dwTypeTarget
统计对象类型，详见TARGET_TYPE，具体定义如下：
enum _VCA_OPERATE_TYPE_{
  NET_SDK_ALL_TARGET       = 0,
  NET_SDK_PPT_TARGET_ALARM,
  NET_SDK_PPT_TARGET_VIEW ,
  NET_SDK_STU_SINGLE_ALARM,
  NET_SDK_STU_SINGLE_VIEW,
  NET_SDK_SUT_MULT_ALARM,
  NET_SDK_STU_MULT_VIEW,
  NET_SDK_STU_TEACHER_VIEW,
  NET_SDK_TEA_UP_DOWN_ALARM,
  NET_SDK_TEA_START_VIEW,
  NET_SDK_BLA_WRITE_ALARM,
  NET_SDK_BLA_WRITE_VIEW,
  NET_SDK_TEA_FULL_VIEW,
  NET_SDK_TEA_START_ALARM,
  NET_SDK_TEA_WALK_ALARM,
  NET_SDK_TEA_LEFT_ALARM,
  NET_SDK_TEA_RUN_ALARM,
  NET_SDK_TEA_MULT_ALARM
}VCA_OPERATE_TYPE
NET_SDK_ALL_TARGET
统计所有对象
NET_SDK_PPT_TARGET_ALARM
PPT报警
NET_SDK_PPT_TARGET_VIEW
PPT视图
NET_SDK_STU_SINGLE_ALARM
单个学生报警
NET_SDK_STU_SINGLE_VIEW
单个学生视图
NET_SDK_SUT_MULT_ALARM
多个学生报警
NET_SDK_STU_MULT_VIEW
多个学生视图
NET_SDK_STU_TEACHER_VIEW
师生互动视图
NET_SDK_TEA_UP_DOWN_ALARM
教师上下讲台
NET_SDK_TEA_START_VIEW
教师授课视图
NET_SDK_BLA_WRITE_ALARM
书写板书报警
NET_SDK_BLA_WRITE_VIEW
书写板书视图
NET_SDK_TEA_FULL_VIEW
教师全景视图
NET_SDK_TEA_START_ALARM
教师开始授课报警
NET_SDK_TEA_WALK_ALARM
教师走动报警
NET_SDK_TEA_LEFT_ALARM
教师离开报警
NET_SDK_TEA_RUN_ALARM
教师奔跑报警
NET_SDK_TEA_MULT_ALARM
教师多人报警
struStartTime
开始统计时间
struStopTime
结束统计时间
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_STATUS_DETECTCFG

状态检测使能参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableTrigIODetect;
  BYTE     byEnableFlashOutDetect;
  BYTE     byEnableRS485Detect;
  BYTE     byEnableTrafficLightDetect;
  BYTE     byRes[28];
}NET_DVR_STATUS_DETECTCFG,*LPNET_DVR_STATUS_DETECTCFG;

Members

dwSize
结构体大小
byEnableTrigIODetect
开启触发IO状态检测：1- 是，0- 否
byEnableFlashOutDetect
开启同步输出状态检测：1- 是，0- 否
byEnableRS485Detect
开启RS485接收状态检测：1- 是，0- 否
byEnableTrafficLightDetect
开启交通灯状态检测：1- 是，0- 否
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_STD_ABILITY

能力集输入输出参数结构体。

struct{
  LPVOID    lpCondBuffer;
  DWORD     dwCondSize;
  LPVOID    lpOutBuffer;
  DWORD     dwOutSize;
  LPVOID    lpStatusBuffer;
  DWORD     dwStatusSize;
  DWORD     dwRetSize;
  BYTE      byRes[32];
}NET_DVR_STD_ABILITY, *LPNET_DVR_STD_ABILITY;

Members

lpCondBuffer
[in]条件参数(码字格式)，例如通道号等，可以为NULL
dwCondSize
[in]条件参数缓冲区大小
lpOutBuffer
[out]输出参数缓冲区(XML格式)，不为NULL
dwOutSize
[in]输出缓冲区大小
lpStatusBuffer
[out]获取失败返回的状态参数(XML格式：ResponseStatus)，获取成功时不会赋值，如果不需要，可以置NULL
dwStatusSize
[in]状态缓冲区大小
dwRetSize
[out]获取到的数据长度(如果获取成功，该值为lpOutBuffer的长度；如果获取失败，该值为lpStatusBuffer的长度)
byRes
[in]保留

Remarks

对于不同的能力集类型（NET_DVR_GetSTDAbility中的dwAbilityType），lpCondBuffer、lpOutBuffer分别对应不同的内容，详见NET_DVR_GetSTDAbility接口中"Remarks"说明。


NET_DVR_STD_CONFIG

配置输入输出参数结构体。

struct{
  LPVOID    lpCondBuffer;
  DWORD     dwCondSize;
  LPVOID    lpInBuffer;
  DWORD     dwInSize;
  LPVOID    lpOutBuffer;
  DWORD     dwOutSize;
  LPVOID    lpStatusBuffer;
  DWORD     dwStatusSize;
  LPVOID    lpXmlBuffer;
  DWORD     dwXmlSize;
  BYTE      byDataType;
  BYTE      byRes[23];
}NET_DVR_STD_CONFIG,*LPNET_DVR_STD_CONFIG;

Members

lpCondBuffer
[in]条件参数(结构体或者XML格式)，例如通道号等，可以为NULL
dwCondSize
[in]条件参数缓冲区大小
lpInBuffer
[in]输入参数(结构体格式)，获取时为NULL，设置时不为NULL
dwInSize
[in]输入参数缓冲区大小
lpOutBuffer
[out]输出参数(结构体格式)，获取时不为NULL，设置时为NULL
dwOutSize
[in]输出参数缓冲区大小
lpStatusBuffer
[out]返回的状态参数(XML格式：ResponseStatus)，获取和设置成功时不会赋值，如果不需要，可以置NULL
dwStatusSize
[in]状态参数缓冲区大小
lpXmlBuffer
[in/out]byDataType = 1时有效，xml格式数据内容
dwXmlSize
[in/out]lpXmlBuffer指向的内存大小：获取时同时作为输入和输出参数，获取成功后会修改返回实际长度；设置时表示实际数据长度【strlen((char*) lpXmlBuffer)】，而不是整个内存大小
byDataType
[in]输入/输出参数类型：0- 使用结构体类型lpInBuffer/lpOutBuffer有效，1- 使用XML类型lpXmlBuffer有效
byRes
[in]保留字节，置为0

Remarks

获取配置参数时，lpInBuffer无效，设为NULL。对于不同的配置功能（NET_DVR_GetSTDConfig中的配置命令dwCommand），lpCondBuffer、lpOutBuffer分别对应不同的内容，详见NET_DVR_GetSTDConfig接口中"Remarks"说明。


NET_DVR_STD_CONTROL

远程控制输入输出参数结构体。

struct{
  void      *lpCondBuffer;
  DWORD     dwCondSize;
  void      *lpStatusBuffer;
  DWORD     dwStatusSize;
  void      *lpXmlBuffer;
  DWORD     dwXmlSize;
  BYTE      byDataType;
  BYTE      byRes[55];
}NET_DVR_STD_CONTROL,*LPNET_DVR_STD_CONTROL;

Members

lpCondBuffer
[in]条件参数(结构体或者XML格式),例如通道号等.可以为NULL
dwCondSize
[in]条件参数缓冲区大小
lpStatusBuffer
[out]返回的状态参数(XML格式：ResponseStatus)，控制成功时不会赋值，如果不需要，可以置NULL
dwStatusSize
[in]状态参数缓冲区大小
dwStatusSize
[in]状态参数缓冲区大小
lpXmlBuffer
[in/out]xml格式数据，byDataType=1时有效
dwXmlSize
[in]lpXmlBuffer指向的内存大小：获取时同时作为输入和输出参数，获取成功后会修改返回实际长度；设置时表示实际数据长度【strlen((char*) lpXmlBuffer)】，而不是整个内存大小
byDataType
[in]输入/输出参数类型：0- 使用结构体类型lpInBuffer/lpOutBuffer有效，1- 使用XML类型lpXmlBuffer有效
byRes
[in]保留，置为0

Remarks

对于不同的控制功能（NET_DVR_STDControl中的控制参数dwCommand），lpCondBuffer对应不同的内容，详见接口NET_DVR_STDControl中的“Remarks”说明。


NET_DVR_STOP_LINE_PARAM

停止线信息信息结构体。

struct{
  BYTE                  byStatus;
  BYTE                  byRes[39] ;
}NET_DVR_STOP_LINE_PARAM,*LPNET_DVR_STOP_LINE_PARAM;

Members

byStatus
停止线状态，0-未知，1-进入，2-离开
byRes
保留，置为0


NET_DVR_STORAGE_DETECTION

存储健康状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byHealthState;
  BYTE     bySDCardState;
  WORD     wAbnormalPowerLoss;
  WORD     wBadBlocks;
  BYTE     byRemainingLife;
  BYTE     byRes[125];
}NET_DVR_STORAGE_DETECTION, *LPNET_DVR_STORAGE_DETECTION;

Members

dwSize
结构体大小
byHealthState
健康状态：0- 良好，1- 差，2- 损坏，3- 未知
bySDCardState
SD卡状态：0- 掉线，1- 上线，2- 未知，3- 已锁定
wAbnormalPowerLoss
异常掉电数
wBadBlocks
坏块数
byRemainingLife
SD卡剩余寿命，取值范围：0~100%
byRes
保留，置为0

Remarks

  • 设备是否支持存储健康状态检测功能，可以通过设备能力集进行判断，对应Smart能力集(SmartCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMART_CAPABILITIES，节点：<isSupportStorageDetection>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_STORAGE_DETECTION_ALARM

存储智能检测报警信息上传结构体。

struct{
  DWORD               dwSize;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  NET_VCA_DEV_INFO    struDevInfo;
  DWORD               dwCardID;
  WORD                wAbnormalPowerLoss;
  WORD                wBadBlocks;
  BYTE                byHealthState;
  BYTE                byRes1[3];
  float               fResidualLife;
  BYTE                byRes[118];
}NET_DVR_STORAGE_DETECTION_ALARM, *LPNET_DVR_STORAGE_DETECTION_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
报警设备信息，包括IP、端口、通道号等
dwCardID
卡ID
wAbnormalPowerLoss
异常掉电数
wBadBlocks
坏块数
byHealthState
健康状态：0- 良好，1- 差，2- 损坏，3- 未知
byRes1
保留，置为0
fResidualLife
SD卡预计剩余寿命，单位：%，精确到0.1
byRes
保留，置为0

Remarks

  • 从DWORD类型的时间取值解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)
  • 设备是否支持存储健康状态检测功能，可以通过设备能力集进行判断，对应Smart能力集(SmartCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMART_CAPABILITIES，节点：<isSupportStorageDetection>。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_STORAGE_RESOURCE_COND

存储资源查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwStorageID;
  BYTE     byRes[64];
}NET_DVR_STORAGE_RESOURCE_COND,*LPNET_DVR_STORAGE_RESOURCE_COND;

Members

dwSize
结构体大小
dwStorageID
从当前编号开始获取剩余资源，从1开始
byRes
保留，置为0

See Also

NET_DVR_GetSTDConfig


NET_DVR_STORAGE_RWLOCK

存储侦测读写锁配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byRes[3];
  char     szPassWD[PASSWD_LEN];
  char     szOriginalPassWD[PASSWD_LEN];
  BYTE     byRes1[128];
}NET_DVR_STORAGE_RWLOCK, *LPNET_DVR_STORAGE_RWLOCK;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes
保留，置为0
szPassWD
读写锁新密码
szOriginalPassWD
原始密码
byRes1
保留，置为0

Remarks

  • 设备是否支持存储侦测读写锁配置或者支持的参数能力，可以通过设备能力集进行判断，对应存储侦测读写锁配置能力集(RWLock)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_STORAGEDETECTION_RWLOCK_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_STORAGE_UNLOCK

存储侦测解锁配置结构体。

struct{
  DWORD    dwSize;
  char     szPassWD[PASSWD_LEN];
  BYTE     byRes1[128];
}NET_DVR_STORAGE_UNLOCK, *LPNET_DVR_STORAGE_UNLOCK;

Members

dwSize
结构体大小
szPassWD
解锁密码
byRes1
保留，置为0

Remarks

  • 设备是否支持存储侦测解锁配置或者支持的参数能力，可以通过设备能力集进行判断，对应存储侦测解锁配置能力集(UnLock)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_STORAGEDETECTION_UNLOCK_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig


NET_DVR_STREAM_ATTACHINFO_CFG

码流附加信息配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byStreamWithVca;
  BYTE     byRes[127];
}NET_DVR_STREAM_ATTACHINFO_CFG, *LPNET_DVR_STREAM_ATTACHINFO_CFG;

Members

dwSize
结构体大小
byStreamWithVca
码流中叠加智能信息：0- 不叠加，1- 叠加
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_STREAM_CABAC

码流压缩性能CABAC选项配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCabacEnable;
  BYTE     byRes[31];
}NET_DVR_STREAM_CABAC,*LPNET_DVR_STREAM_CABAC;

Members

dwSize
结构体大小
byCabacEnable
码流压缩性能选项值：0- 不提升，1- 提升
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_STREAM_INFO

流ID信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byID[STREAM_ID_LEN];
  DWORD    dwChannel;
  BYTE     byRes[32];
}NET_DVR_STREAM_INFO,*LPNET_DVR_STREAM_INFO;

Members

dwSize
结构体大小
byID
流ID，为字母、数字和"_"的组合。全部为0时，无效
dwChannel
关联的设备通道。等于0xffffffff时，如果是设置流的来源信息(NET_DVR_SET_STREAM_SRC_INFO)，表示不关联； 如果是作为其他如NET_DVR_SET_STREAM_RECORD_INFO、NET_DVR_SET_STREAM_RECORD_STATUS、NET_DVR_SET_MONITOR_VQDCFG等配置时的输入条件参数时，表示无效。
byRes
保留，置为0

Remarks

  • 如果设备不支持流ID标识功能，例如DVR设备，byID值设为0。
  • 对于转码器设备来说，配置流来源时，流ID（byID）和转码通道（dwChannel）有且只能有一个参数有效，同时有效或同时无效都将返回失败；被动转码的时候，流ID和通道号可以同时无效，转码通道或者流ID由设备自动分配。
  • 对于其他设备（CVR等），当该结构体参数作为SDK接口的输入条件时，如果byID和dwChannel都无效时，网络SDK将返回参数错误（错误代码一般为17）； 如果两个都有效，而输入的byID和dwChannel不匹配，则设备可能会返回失败，因此，建议只输入byID（dwChannel=0xffffffff）或者dwChannel（byID=0）。


NET_DVR_STREAM_MEDIA_SERVER

流媒体服务器参数结构体。

struct{
  BYTE    byValid;
  BYTE    byRes1[3];
  BYTE    byAddress[MAX_DOMAIN_NAME];
  WORD    wDevPort;
  BYTE    byTransmitType;
  BYTE    byRes2[5];
}NET_DVR_STREAM_MEDIA_SERVER,*LPNET_DVR_STREAM_MEDIA_SERVER;

Members

byValid
是否启用流媒体服务器取流：0-不启用，非0-启用
byRes1
保留，置为0
byAddress
流媒体服务器IP地址或者域名
wDevPort
流媒体服务器端口
byTransmitType
传输协议类型：0-TCP，1-UDP
byRes2
保留，置为0

See Also

NET_DVR_DEC_STREAM_DEV_EX NET_DVR_DEC_DDNS_DEV


NET_DVR_STREAM_MEDIA_SERVER_CFG

流媒体服务器参数结构体。

struct{
  BYTE             byValid;
  BYTE             byRes1[3];
  NET_DVR_IPADDR   struDevIP;
  WORD             wDevPort;
  BYTE             byTransmitType;
  BYTE             byRes2[69];
}NET_DVR_STREAM_MEDIA_SERVER_CFG,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG;

Members

byValid
是否启用流媒体服务器取流：0-不启用，非0-启用
byRes1
保留，置为0
struDevIP
流媒体服务器的IP地址
wDevPort
流媒体服务器端口
byTransmitType
传输协议类型：0-TCP，1-UDP
byRes2
保留，置为0

See Also

NET_DVR_MATRIX_CHAN_INFO_V30 NET_DVR_MATRIX_DEC_CHAN_INFO_V30 NET_DVR_PU_STREAM_CFG


NET_DVR_STREAM_MEDIA_SERVER_CFG_V41

流媒体服务器参数结构体。

struct{
  BYTE    byValid;
  BYTE    byRes1[3];
  BYTE    byAddress[MAX_DOMAIN_NAME];
  WORD    wDevPort;
  BYTE    byTransmitType;
  BYTE    byRes2[69];
}NET_DVR_STREAM_MEDIA_SERVER_CFG_V41,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG_V41;

Members

byValid
是否启用流媒体服务器取流：0-不启用，非0-启用
byRes1
保留，置为0
byAddress
流媒体服务器IP地址或者域名
wDevPort
流媒体服务器端口
byTransmitType
传输协议类型：0-TCP，1-UDP
byRes2
保留，置为0

See Also

NET_DVR_DEC_STREAM_DEV


NET_DVR_STREAM_MODE

取流方式配置结构体。

struct{
  BYTE                      byGetStreamType;
  BYTE                      byRes[3];
  NET_DVR_GET_STREAM_UNION  uGetStream;
}NET_DVR_STREAM_MODE,*LPNET_DVR_STREAM_MODE;

Members

byGetStreamType
取流方式：
0- 直接从设备取流，对应联合体中结构NET_DVR_IPCHANINFO；
1- 从流媒体取流，对应联合体中结构NET_DVR_IPSERVER_STREAM；
2- 通过IPServer获得IP地址后取流，对应联合体中结构NET_DVR_PU_STREAM_CFG；
3- 通过IPServer找到设备，再通过流媒体取设备的流，对应联合体中结构NET_DVR_DDNS_STREAM_CFG；
4- 通过流媒体由URL去取流，对应联合体中结构NET_DVR_PU_STREAM_URL；
5- 通过hiDDNS域名连接设备然后从设备取流，对应联合体中结构NET_DVR_HKDDNS_STREAM；
6- 直接从设备取流(扩展)，对应联合体中结构NET_DVR_IPCHANINFO_V40
byRes
保留，置为0
uGetStream
不同取流方式联合体

See Also

NET_DVR_IPPARACFG_V40


NET_DVR_STREAM_MODE_TYPE

取流方式结构体。

struct{
  BYTE                         byGetStreamType;
  BYTE                         byRes[3];
  NET_DVR_STREAM_TYPE_UNION    uGetStream;
}NET_DVR_STREAM_MODE_TYPE,*LPNET_DVR_STREAM_MODE_TYPE;

Members

byGetStreamType
取流方式：0- 直接从设备取流；1- 从流媒体取流；2- 通过IPServer获得ip地址后取流；3- 通过IPServer找到设备，再通过流媒体去设备的流； 4- 通过流媒体由URL去取流；6- 通过结构体参数组装URL去取流（包含用户名和密码）
byRes
保留，置为0
uGetStream
不同取流方式

See Also

NET_DVR_STREAM_SRC_INFO


NET_DVR_STREAM_RECORD_INFO

录像信息结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_RECORD_V30     struRecordInfo;
}NET_DVR_STREAM_RECORD_INFO,*LPNET_DVR_STREAM_RECORD_INFO;

Members

dwSize
结构体大小
struRecordInfo
录像信息

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_STREAM_RECORD_STATUS

流录像状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byRecord;
  BYTE     byOffLineRecord;
  BYTE     byRes1[2];
  DWORD    dwRelatedHD;
  BYTE     byRes2[8];
}NET_DVR_STREAM_RECORD_STATUS,*LPNET_DVR_STREAM_RECORD_STATUS;

Members

dwSize
结构体大小
byRecord
(只读)录像状态：0- 不在录像，1- 在录像，2- 空闲，3- 无连接，4- 无输入视频，5- 未加载，6- 存档中，7- 回传中，8- 用户名或密码错，9- 未验证，10- 存档中和录像中，11- 录像回传中和录像中，12-token认证失败
byOffLineRecord
ANR断网录像功能：0- 关闭，1- 开启
byRes1
保留，置为0
dwRelatedHD
关联磁盘
byRes2
保留，置为0

Remarks

设备是否支持ANR断网录像功能：通过NET_DVR_GetDeviceAbility（对应能力集类型：DEVICE_ABILITY_INFO）获取设备录像相关能力集（RecordAbility），对应其中的<ANR>节点，。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_STREAM_SRC_CFG

流的来源信息结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_STREAM_INFO          struStreamID;
  NET_DVR_STREAM_SRC_INFO     struStreamSrcInfo;
}NET_DVR_STREAM_SRC_CFG,*LPNET_DVR_STREAM_SRC_CFG;

Members

dwSize
结构体大小
struStreamInfo
流信息
struStreamSrcInfo
流的来源信息

See Also

NET_DVR_GetDeviceConfig


NET_DVR_STREAM_SRC_INFO

流的来源信息结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_STREAM_MODE_TYPE     struStreamSrcInfo;
}NET_DVR_STREAM_SRC_INFO,*LPNET_DVR_STREAM_SRC_INFO;

Members

dwSize
结构体大小
struStreamSrcInfo
流的来源信息

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_STREAM_SRC_INFO_V40

流的来源信息结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byGetStreamType;
  BYTE                             byRes1[3];
  NET_DVR_STREAM_TYPE_V40_UNION    uGetStream;
  BYTE                             byRes[512];
}NET_DVR_STREAM_SRC_INFO_V40,*LPNET_DVR_STREAM_SRC_INFO_V40;

Members

dwSize
结构体大小
byGetStreamType
取流方式：
0- 直接从设备取流
1- 从流媒体取流
2- 通过IPServer获得ip地址后取流
3- 通过IPServer找到设备再通过流媒体去设备的流
4- 通过流媒体由URL去取流
6- 通过流媒体到指定监控设备上取流
7- 通过标准RTSP协议接入取流
8- 通过流媒体（支持级联方式）向流来源取流
byRes1
保留，置为0
uGetStream
不同取流方式联合体
byRes
保留，置为0

Remarks

  • 目前CVR设备支持0、4、6、7、8这5种类型取流方式，其中取流方式类型0和8支持通过VAG取流。
  • VAG是CVR的一个组件，通过它可以对接各种厂商的设备，配置从VAG取流时需要配置VAG通道号。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_STREAM_TIME_LOCK

按流ID对录像段加锁/解锁参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_TIME           strBeginTime;
  NET_DVR_TIME           strEndTime;
  NET_DVR_STREAM_INFO    struStreamInfo;
  DWORD                  dwRecordType ;;
  DWORD                  dwLockDuration;
  NET_DVR_TIME_EX        strUnlockTimePoint;
      BYTE                                   byISO8601;
  signed char                       cTimeDifferenceH;
  signed char                      cTimeDifferenceM;
  BYTE                   byRes[1];
}NET_DVR_STREAM_TIME_LOCK,*LPNET_DVR_STREAM_TIME_LOCK;

Members

dwSize
结构体大小
strBeginTime
开始时间
strEndTime
结束时间
struStreamInfo
流信息
dwRecordType
录像类型：0xffffffff- 全部录像，0- 定时录像，1- 移动侦测录像，2- 报警录像，3- 报警或移动侦测录像，4- 报警和移动侦测录像， 5- 命令触发，6- 手动录像，7- 震动报警，8- 环境触发报警，9- 智能报警，10- 回传录像
dwLockDuration
锁定持续时间，单位：秒，0xffffffff- 永久锁定，0- 不锁或解锁
strUnlockTimePoint
加锁时有效，当dwLockDuration不为永久锁定时，锁定持续的时间到此时间点就自动解锁
byISO8601
是否是8601的时间格式，即时差字段是否有效,0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留，置为0

See Also

NET_DVR_LockStreamFileByTime NET_DVR_UnlockStreamFileByTime


NET_DVR_STREAM_TYPE_UNION

取流方式联合体。

union{
  NET_DVR_DIRECT_CONNECT_CHAN_INFO    struChanInfo;
  NET_DVR_PU_STREAM_URL               struStreamUrl;
  NET_DVR_PU_STREAM_URL_CFG           struStreamUrlCfg;
}NET_DVR_STREAM_TYPE_UNION,*LPNET_DVR_STREAM_TYPE_UNION;

Members

struChanInfo
IP通道信息
struStreamUrl
URL取流配置信息
struStreamUrlCfg
通过结构体参数构成URL去取流

See Also

NET_DVR_STREAM_MODE_TYPE


NET_DVR_STREAM_TYPE_V40_UNION

取流方式联合体。

union{
  NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40    struChanInfo;
  NET_DVR_PU_STREAM_URL                   struPuStreamUrl;
  NET_DVR_PU_STREAM_URL_CFG_V40           struStreamUrlCfg;
  NET_DVR_RTSP_PROTOCAL_CFG               struRtspCfg;
  NET_DVR_STREAM_URL_V40                  struStreamUrlV40;
}NET_DVR_STREAM_TYPE_V40_UNION,*LPNET_DVR_STREAM_TYPE_V40_UNION;

Members

struChanInfo
IP通道信息，对应byGetStreamType为0
struPuStreamUrl
URL取流配置信息，对应byGetStreamType为4
struStreamUrlCfg
通过结构体参数构成URL去取流，对应byGetStreamType为6
struRtspCfg
通过标准RTSP协议接入取流，对应byGetStreamType为7
struStreamUrlV40
通过流媒体（支持级联方式）向流来源取流，对应byGetStreamType为8

See Also

NET_DVR_STREAM_SRC_INFO_V40


NET_DVR_STREAM_URL_V40

流媒体向流来源取流参数结构体。

struct{
  BYTE     byEnable;
  BYTE     byStreamType;
  BYTE     byLocalBackUp;
  BYTE     byRes;
  BYTE     strURL[URL_LEN_V40];
  DWORD    dwProtocalType;
  BYTE     sUserName[NAME_LEN];
  BYTE     sPassWord[PASSWD_LEN];
  BYTE     byAddress[MAX_DOMAIN_NAME];
  WORD     wIPPort;
  WORD     wChanNo;
  BYTE     byVAGChanNo[MAX_VAG_CHANNO_LEN];
  BYTE     byRes1[88];
}NET_DVR_STREAM_URL_V40,*LPNET_DVR_STREAM_URL_V40;

Members

byEnable
是否启用：0- 禁用，1- 启用
byStreamType
码流类型：0- 主码流，1- 子码流
byLocalBackUp
本地备份：0- 不启用CVR本地备份，1- 启用CVR本地备份（即录像时的流一份保存在录像卷，一份保存在存档卷）
byRes
保留，置为0
strURL
流媒体URL，可以级联
dwProtocalType
协议类型：0- 私有协议(default)，1- 松下协议，2- 索尼，更多协议通过NET_DVR_GetIPCProtoList获取
sUserName
设备登陆用户名
sPassWord
设备登陆密码
byAddress
流来源IP或者域名(需要设备解析，解析方式为有字母存在且有“.”则认为是域名，否则为IP地址）
wIPPort
流来源对应的端口号
wChanNo
流来源设备通道号
byVAGChanNo
流来源通道编号(用于VAG功能)
byRes1
保留，置为0

See Also

NET_DVR_STREAM_TYPE_V40_UNION


NET_DVR_STREAMING_COND

流控制条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byStreamType;
  BYTE     byRes[127];
 }NET_DVR_STREAMING_COND,*LPNET_DVR_STREAMING_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byStreamType
码流类型：0- 主码流，1- 子码流，2- 码流3
byRes
保留，置为0

Remarks

  • 该功能针对启用Smart264编码后的码流预览，通过相应接口和命令强制设备生成一个深P帧。
  • 设备是否支持Smart264编码功能，通过能力集(StreamingChannel)中节点<isSupportRefreshFrame>进行判断，相关接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_STREAMING_CAPABILITIES)。
  • 设备支持刷新帧的码流类型，通过能力集(RefreshFrame)获取，相关接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_REFRESHFRAME_CAPABILITIES)。

See Also

NET_DVR_STDControl


NET_DVR_STRUCTHEAD

头信息结构体。

struct{
  WORD     wLength;
  BYTE     byVersion;
  BYTE     byRes;
}NET_DVR_STRUCTHEAD,*LPNET_DVR_STRUCTHEAD;

Members

wLength
结构长度，sizeof(NET_DVR_INVALID_DISK_PARAM)、sizeof(NET_DVR_MOUNT_DISK_PARAM)、sizeof(NET_DVR_FTPCFG_V40)或者sizeof(NET_DVR_WD1_CFG)等等
byVersion
高低4位分别代表高低版本，后续根据版本和长度进行扩展，不同的版本的长度进行限制
byRes
保留


NET_DVR_SUBSYSTEM_ALARM

子系统定时布防参数结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_NORMAL_SCHEDTIME    struNormalSchedtime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                        byNormalSchedTimeOn;
  BYTE                        byMandatoryAlarm;
  BYTE                        byRes[254];
}NET_DVR_SUBSYSTEM_ALARM,*LPNET_DVR_SUBSYSTEM_ALARM;

Members

dwSize
结构体大小
struNormalSchedtime
日常计划布防时间段，每周7天，每天最多8个时间段
byNormalSchedTimeOn
日常计划是否启用：0- 不启用，1- 启用
byMandatoryAlarm
当防区有问题时是否强制为旁路布防：0- 强制布防，1- 非强制布防
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SUBSYSTEM_PARAM_EX

子系统扩展参数结构体。

struct{
  DWORD                 dwSize;
  NET_DVR_SCHEDTIME     struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                  byAlarmInAdvance;
  BYTE                  byRes1[3];
  BYTE                  byJointAlarmIn[MAX_ALARMHOST_ALARMIN_NUM];
  BYTE                  byJointKeyboard[MAX_ALARMHOSTKEYBOARD];
  BYTE                  byJointOpetaterUser[MAX_KEYBOARD_USER_NUM];
  NET_DVR_REMIND_TIME    struAlarmRemindTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                  byRes2[288];
}NET_DVR_SUBSYSTEM_PARAM_EX, *LPNET_DVR_SUBSYSTEM_PARAM_EX;

Members

dwSize
结构体大小
struAlarmTime
布撤防时间，每周7天，每天最多8个时间段
byAlarmInAdvance
布撤防提前提示时间，取值范围：0~45分
byRes1
保留
byJointAlarmIn
按位，表示子系统关联的报警输入通道号，值：0- 不关联，1- 关联。
byJointAlarmIn & 0x1 == 1 表示 关联报警输入通道1
byJointAlarmIn & 0x2 == 1 表示 关联报警输入通道2
依次类推
byJointKeyboard
按位，表示支持的键盘号，值：0- 不支持，1- 支持。
byJointKeyboard & 0x1 == 1 表示 关联键盘1
byJointKeyboard & 0x2 == 1 表示 关联键盘2
依次类推
byJointOpetaterUser
按位，表示关联的键盘操作用户，值：0-不关联，1- 关联。
byJointOpetaterUser & 0x1 == 1 表示 关联键盘操作用户1
byJointOpetaterUser & 0x2 == 1 表示 关联键盘操作用户2
依次类推
struAlarmRemindTime
布撤防提醒时间，每周7天，每天最多8个时间段
byRes2
保留

Remarks

  • 是否支持子系统扩展参数配置，通过能力集NET_DVR_ALARMHOST_ABILITY中的参数dwSupport1的bit8进行判断。
  • 是否支持自动布撤防，通过能力集NET_DVR_ALARMHOST_ABILITY中的参数dwSupport1的bit5进行判断。如果不支持，则参数struAlarmTime和byAlarmInAdvance无效。
  • 设备支持的键盘数和支持的键盘操作用户数见能力集NET_DVR_ALARMHOST_ABILITY中的wKeyboardNum和wOperatorUserNum。

    • See Also

    NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SUPPLEMENTLIGHT

补光灯参数配置结构体。

struct{
  BYTE                        byEnable;
  BYTE                        byMode;
  BYTE                        byHighBeamBrightness;
  BYTE                        byLowBeamBrightness;
  NET_DVR_SCHEDULE_DAYTIME    struSchedTime;
  WORD                        wFilteringTime;
  BYTE                        byRes[62];
}NET_DVR_SUPPLEMENTLIGHT, *LPNET_DVR_SUPPLEMENTLIGHT;

Members

byEnable
补光灯功能使能：0- 关，1- 开
byMode
补光灯模式：0- 自动，1- 定时
byHighBeamBrightness
远光灯亮度，取值范围：[0,10]
byLowBeamBrightness
近光灯亮度，取值范围：[0,10]
struSchedTime
定时时间段
wFilteringTime
过滤时间(s)，取值范围：[0,120]
byRes
保留

See Also

NET_DVR_EXTERNALDEVICE


NET_DVR_SWITCH_ALARM

开关量报警上传结构体。

struct{
  DWORD              dwSize;
  BYTE               byName[NAME_LEN];
  WORD               wSwitchChannel;
  BYTE               byAlarmType;
  BYTE               byEventType;
  DWORD              dwRelativeTime;
  NET_DVR_TIME_EX    struOperateTime;
  BYTE               byRes[28];
}NET_DVR_SWITCH_ALARM, *LPNET_DVR_SWITCH_ALARM;

Members

dwSize
结构体大小
byName
开关量名称
wSwitchChannel
开关量通道，取值范围：0~255
byAlarmType
报警类型：0- 正常，1- 短路，2- 断路
byEventType
事件类型：0- 报警，1- 报警主机防区故障
dwRelativeTime
相对时间点
struOperateTime
报警信息上传时间
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_SWITCH_CONVERT_ALARM

交换机报警信息结构体

struct{
  DWORD    dwSize;
  BYTE     byPortNo;
  BYTE     byRes1[3];
  DWORD    dwEventType;
  DWORD    dwEvent;
  BYTE     byRes2[32];
}NET_DVR_SWITCH_CONVERT_ALARM, *LPNET_DVR_SWITCH_CONVERT_ALARM;

Members

dwSize
结构体大小
byPortNo
交换机端口号，从1开始
byRes1
保留字节
dwEventType
事件类型，1-告警，2-通知
dwEvent
具体事件，告警时参考枚举EN_SWITCH_CONVERT_ALARM，通知时参考枚举EN_SWITCH_CONVERT_NOTIFICATION
enum _EN_SWITCH_CONVERT_ALARM{
  SC_OPTICAL_PORT_LOST = 1,
  SC_NETWORK_PORT_LOST,
}EN_SWITCH_CONVERT_ALARM
SC_OPTICAL_PORT_LOST
光口断开
SC_NETWORK_PORT_LOST
网口断开
enum _EN_SWICH_CONVERT_NOTIFICATION{
  SC_OPTICAL_PORT_CONNECTED = 1,
  SC_NETWORK_PORT_CONNECTED,
}EN_SWITCH_CONVERT_NOTIFICATION
SC_OPTICAL_PORT_CONNECTED
光口连接
SC_NETWORK_PORT_CONNECTED
网口连接
byRes2
保留字节

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_SWITCH_DAY_TIME

开关机计划参数结构体。

struct{
  BYTE               byEnable;
  BYTE               bySwitchType;
  BYTE               byRes1[2];
  NET_DVR_DAYTIME    struTimePoint;
  BYTE               byRes2[8];
}NET_DVR_SWITCH_DAY_TIME,*LPNET_DVR_SWITCH_DAY_TIME;

Members

byEnable
是否启用该时间点：0- 不启用，1- 启用
bySwitchType
开关机类型：0- 关机，1- 开机
byRes1
保留，置为0
struTimePoint
开关机计划时间点
byRes2
保留，置为0

See Also

NET_DVR_TIME_SWITCH_CFG


NET_DVR_SWITCH_LAMP_ALARM

开关灯检测报警信息结构体。

struct{
  DWORD               dwSize;
  NET_VCA_DEV_INFO    struDevInfo;
  NET_DVR_TIME_EX     struTime;
  BYTE                byLampStatus;
  BYTE                byRes1[3];
  DWORD               dwPicDataLen;
  char                *pPicData;
  BYTE                byRes[64];
}NET_DVR_SWITCH_LAMP_ALARM,*LPNET_DVR_SWITCH_LAMP_ALARM;

Members

dwSize
结构体大小
struDevInfo
报警设备信息
struTime
报警时间
byLampStatus
开关灯状态：0- 已关闭，1- 已打开
byRes1
保留，置为0
dwPicDataLen
图片数据长度，非0表示有图片上传
pPicData
图片数据
byRes
保留，置为0

Remarks

  • 设备是否支持开关灯检测能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<SwitchLamp>。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_SWITCH_LAMP_CFG

开关灯检测规则配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byTriggerMode;
  BYTE                           byUploadPic;
  BYTE                           byRes1;
  DWORD                          dwTimeInterval;
  NET_DVR_HANDLEEXCEPTION_V30    struHandleType;
  BYTE                           byRelRecordChan[MAX_IVMS_IP_CHANNEL];
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRes[256];
}NET_DVR_SWITCH_LAMP_CFG,*LPNET_DVR_SWITCH_LAMP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用该规则：0-不启用，1-启用
byTriggerMode
触发模式：1- 持续触发，2- 单次触发
byUploadPic
是否上传图片：0- 不上传图片，1- 上传图片
byRes1
保留，置为0
dwTimeInterval
持续触发报警时间间隔，取值范围：[0,3600]，单位：秒
struHandleType
事件关联处理方式
byRelRecordChan
报警触发的录象通道，每位数组对应一个通道，数组下标表示通道号，数组值：1- 触发该通道，0- 不触发
例如：byRelRecordChan[0]==1表示触发通道1录像，byRelRecordChan[1]==1表示触发通道2录像，依次类推
struAlarmTime
检测时间，一周7天，每天最多8个时间段
byRes
保留，置为0

Remarks

  • 设备是否支持开关灯检测能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<SwitchLamp>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SWITCH_TIME

定时开关机时间结构体。

struct{
  BYTE               byValid;
  BYTE               byRes[3];
  NET_DVR_TIME_EX    struTimeOn;
  NET_DVR_TIME_EX    struTimeOff;
}NET_DVR_SWITCH_TIME,*LPNET_DVR_SWITCH_TIME;

Members

byValid
该组定时时间是否有效，时间是成对设置的
byRes
保留
struTimeOn
开机时间，只有小时和分钟两个参数有效
struTimeOff
关机时间，只有小时和分钟两个参数有效

See Also

NET_DVR_LED_SWITCH_TIME


NET_DVR_SWITCH_TIME_POINT

按时间点开关机参数结构体。

struct{
  BYTE                   byEnable;
  BYTE                   bySwitchType;
  BYTE                   byRes1[2];
  NET_DVR_SYSTEM_TIME    struTimePoint;
  BYTE                   byRes2[16];
}NET_DVR_SWITCH_TIME_POINT,*LPNET_DVR_SWITCH_TIME_POINT;

Members

byEnable
是否启用该时间点：0- 不启用，1- 启用
bySwitchType
开关机类型：0- 关机，1- 开机
byRes1
保留，置为0
struTimePoint
开关机时间点
byRes2
保留，置为0

See Also

NET_DVR_TIME_SWITCH_CFG


NET_DVR_SYN_CHANNEL_NAME_PARAM

同步通道名参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[64];
}NET_DVR_SYN_CHANNEL_NAME_PARAM,*LPNET_DVR_SYN_CHANNEL_NAME_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留

Remarks

该功能是将智能分析仪的通道名与前端设备的通道名同步，此时，NET_DVR_PICCFG_V30图像参数中的sChanName会同步成前端设备的通道名称，重新设置分析仪的通道名需要调用NET_DVR_PICCFG_V30进行修改。

See Also

NET_DVR_RemoteControl


NET_DVR_SYNCHRONOUS_IPC

同步前端IPC设备参数配置结构体。

struct{
  DWORD   dwSize;
  BYTE    byEnable;
  BYTE    byRes[7];
}NET_DVR_SYNCHRONOUS_IPC, *LPNET_DVR_SYNCHRONOUS_IPC;

Members

dwSize
结构体大小
byEnable
是否启用，同步前端IPC设备的参数
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_SYSTEM_TIME

时间信息结构体。

struct{
  WORD    wYear;
  WORD    wMonth;
  WORD    wDay;
  WORD    wHour;
  WORD    wMinute;
  WORD    wSecond;
  WORD    wMilliSec;
  BYTE    byRes[2];
}NET_DVR_SYSTEM_TIME,*LPNET_DVR_SYSTEM_TIME;

Members

wYear
年
wMonth
月
wDay
日
wHour
时
wMinute
分
wSecond
秒
wMilliSec
毫秒
byRes
保留

See Also

NET_ITS_TRAFFIC_COLLECT NET_ITS_REUPLOAD_CFG NET_DVR_SWITCH_TIME_POINT


NET_DVR_TAG_INFO_ALARM

标签信息上传。

struct{
  DWORD    dwSize;
  BYTE     byCardNo[NET_SDK_MAX_CARD_LEN];
  DWORD    iRssi;
  BYTE     byRes[160];
}NET_DVR_TAG_INFO_ALARM, *LPNET_DVR_TAG_INFO_ALARM;

Members

dwSize
结构体大小
byCardNo
卡号
iRssi
接收信号强度，取值范围:[-100,+100]
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_TAMPER_ALARMIN_PARAM

防区防拆参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byTamperType;
  BYTE     byUploadAlarmRecoveryReport;
  BYTE     byRes1[2];
  BYTE     byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM];
  BYTE     byAssociateSirenOut[8];
  BYTE     byTamperResistor;
  BYTE     byRes2[3];
  float    fTamperResistorManual;
  BYTE     byRes3[36];
}NET_DVR_TAMPER_ALARMIN_PARAM,*LPNET_DVR_TAMPER_ALARMIN_PARAM;

Members

dwSize
结构体大小
byTamperType
报警器类型：0- 无，1- 常开，2- 常闭
byUploadAlarmRecoveryReport
是否上传防区报警恢复报告：0- 不上传，1- 上传
byRes1
保留，置为0
byAssociateAlarmOut
防区关联触发器，数组下标表示防区号，数组的值表示关联的触发器编号，例如：
byAssociateAlarmOut[i]=j表示第(i+1)个防区关联触发器j
byAssociateSirenOut
关联警号输出，数组下标表示警号序号，数组值：1- 输出，0- 不输出，例如：
byAssociateSirenOut[i]=1表示关联警号(i+1)输出
byTamperResistor
防拆电阻，单位：千欧，取值：0- 无效，1- 2.2，2- 4.7，3- 5.6，4- 8.2，0xff- 自定义
byRes2
保留，置为0
fTamperResistorManual
防拆手动电阻，取值范围：1.0~10.0，精确到小数点后一位，单位：千欧，byTamperResistor为0xff时有效
byRes3
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TARGET_LEFT_REGION_ALARM

目标离开区域报警结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwRelativeTime;
  DWORD                 dwAbsTime;
  NET_VCA_DEV_INFO      struDevInfo;
  BYTE                  byTargetType;
  BYTE                  byLeftDirection;
  BYTE                  byRes[126];
}NET_DVR_TARGET_LEFT_REGION_ALARM,*LPNET_DVR_TARGET_LEFT_REGION_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标，暂未使用
dwAbsTime
绝对时标
struDevInfo
前端设备信息
byTargetType
检测目标类型：0-无效目标，1-教师区域（A） 2-学生区域（C）
byLeftDirection
检测目标离开方向类型：0-保留，1-上，2-下，3-左，4-右（始终填向下）
byRes
保留，置为0

Remarks

  • 相对时标暂未使用。从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_TEMP_HUMI_INFO

实时温湿度信息结构体。

struct{
  DWORD               dwSize;
  NET_DVR_TIME_V30    struCurrentTime;
  float               fTemperature;
  float               fHumidity;
  BYTE                byRes[256];
}NET_DVR_TEMP_HUMI_INFO,*LPNET_DVR_TEMP_HUMI_INFO;

Members

dwSize
结构体大小
struCurrentTime
当前时间
fTemperature
设备环境温度，精确到小数点后两位，取值范围：-273~1000摄氏度
fHumidity
设备环境湿度，精确到小数点后两位，单位为：%
byRes
保留，置为0

Remarks

  • 设备是否支持环境温湿度实时获取能力，可以通过设备能力集进行判断，对应环境温湿度实时获取能力集(TempHumi)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ TEMP_HUMI_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig


NET_DVR_TEMPERATURE_COLOR

热成像测温报警颜色参数结构体。

struct{
  BYTE    byType;
  BYTE    byRes1[3];
  int     iHighTemperature;
  int     iLowTemperature;
  BYTE    byRes[8];
}NET_DVR_TEMPERATURE_COLOR, *LPNET_DVR_TEMPERATURE_COLOR;

Members

byType
测温报警颜色控制类型：0-无报警类型(关闭)，1- 高温报警类型，2- 低温报警类型，3- 区间报警类型，4- 保温报警类型
0-无报警类型，关闭报警；
1-高温报警类型时，iHighTemperature字段生效，当高于该温度值时，会有进行颜色标注；
2-低温报警类型时，iLowTemperature字段生效，当低于该温度值时，会有进行颜色标注；
3-区间报警类型时，iHighTemperature、iLowTemperature字段生效，当在温度在该温度区间时，会有进行颜色标注；
4-保温报警类型时，iHighTemperature、iLowTemperature字段生效，当温度不在该温度区间时，会有进行颜色标注。
byRes1
保留，置为0
iHighTemperature
高温值，取值范围：-273~10000
iLowTemperature
低温值，取值范围：-273~10000
byRes
保留，置为0

See Also

NET_DVR_THERMOMETRY_BASICPARAM


NET_DVR_TEMPERATUREALARMCFG

温度超限报警参数结构体。

struct{
  BYTE                           byEnableTemperatureAlarm;
  BYTE                           byRes1[3];
  int                            iTemperatureUpLimited;
  int                            iTemperatureDownLimited;
  NET_DVR_HANDLEEXCEPTION_V30    struTempHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRes2[32];
}NET_DVR_TEMPERATUREALARMCFG, *LPNET_DVR_TEMPERATUREALARMCFG;

Members

byEnableTemperatureAlarm
温度超限报警使能：0-报警，1-不报警
byRes1
保留
iTemperatureUpLimited
温度上限值，精确到小数点后两位，如1234表示温度12.34度
iTemperatureDownLimited
温度下限值，精确到小数点后两位，如1234表示温度12.34度
struTempHandleType
处理方式
struAlarmTime
布防时间
byRes2
保留

See Also

NET_DVR_VIDEOPLATFORMALARMCFG


NET_DVR_TERMINAL_AUDIO_CTRL

终端音频调节参数结构体。

struct{
  BYTE    byMute;
  BYTE    byVolume;
  BYTE    byAudioInputDisabled;
  BYTE    byAudioInputVolume;
  BYTE    byRes[636];
}NET_DVR_TERMINAL_AUDIO_CTRL, *LPNET_DVR_TERMINAL_AUDIO_CTRL;

Members

byMute
是否静音：0- 否，1- 是
byVolume
音量，非静音时有效，取值范围：1~100
byAudioInputDisabled
禁止音频输入：0- 允许音频输入，1- 禁止音频输入
byAudioInputVolume
音频输入音量，允许音频输入时有效，取值范围：1~100
byRes
保留，置为0

See Also

NET_DVR_TERMINAL_DETAIL_CTRL_PARAM


NET_DVR_TERMINAL_CALL_CFG

终端呼叫参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byAnswerType;
  BYTE     byProtocolType;
  BYTE     byTransmissionProtocol;
  BYTE     byRes[39];
}NET_DVR_TERMINAL_CALL_CFG,*LPNET_DVR_TERMINAL_CALL_CFG;

Members

dwSize
结构体大小
byAnswerType
会议呼叫响应方式：1- 自动接听，2- 自动拒接，3- 手动接听
byProtocolType
使用的协议类型：1- SIP，2- H323
byTransmissionProtocol
传输协议类型：0- 无效，1- TCP，2- UDP
byRes
保留，置为0

Remarks

  • 设备是否支持终端呼叫参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应终端呼叫参数配置能力集(CallConfiguration)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TERMINAL_CALL_CFG_CAP。
    录播主机V2.1.0仅支持H323.

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_TERMINAL_CALL_INFO

终端呼叫参数结构体。

struct{
  BYTE    byTermianlURL[MAX_URL_LEN];
  DWORD   dwCallRate;
  BYTE    byRes[124];
}NET_DVR_TERMINAL_CALL_INFO, *LPNET_DVR_TERMINAL_CALL_INFO;

Members

byTermianlURL
终端URL
dwCallRate
呼叫速率，范围为：32~6144，单位Kbps (连接速率)
byRes
保留，置为0

See Also

NET_DVR_TERMINAL_DETAIL_CTRL_PARAM NET_DVR_CALL_INFO


NET_DVR_TERMINAL_CONFERENCE_STATUS

终端会议状态信息结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byConferenceState;
  BYTE                    byConferenceType;
  BYTE                    byRes1[2];
  DWORD                   dwInputNo;
  NET_DVR_CALL_INFO       struCallInfo;
  NET_DVR_AUDIO_STATUS    struAudioStatus;
  BYTE                    byRes2[32];
}NET_DVR_TERMINAL_CONFERENCE_STATUS, *LPNET_DVR_TERMINAL_CONFERENCE_STATUS;

Members

dwSize
结构体大小
byConferenceState
会议状态：0- 空闲，1- 忙碌（会议中），2- 呼叫中，3- 被呼叫中
byConferenceType
会议类型：1- 点对点，2- MCU发起会议
byRes1
保留，置为0
dwInputNo
使用的音频输入口号
struCallInfo
会议信息，不同的会议类型对应不同的信息结构
struAudioStatus
音频相关状态
byRes2
保留，置为0

Remarks

  • 设备是否支持终端会议状态查询功能，可以通过设备能力集进行判断，对应终端MCU能力集(VCSCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_VCS_CAP，节点：<isSupportTerminalConferenceStatus>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_TERMINAL_CTRL_PARAM

终端呼叫控制参数结构体。

struct{
  DWORD                                 dwSize;
  BYTE                                  byOperateType;
  BYTE                                  byRes1[3];
  NET_DVR_TERMINAL_DETAIL_CTRL_PARAM    struCtrlParam;
  BYTE                                  byRes2[32];
}NET_DVR_TERMINAL_CTRL_PARAM,*LPNET_DVR_TERMINAL_CTRL_PARAM;

Members

dwSize
结构体大小
byOperateType
操作类型：1-接听，2-拒接，3-呼叫，4-音频调节，5-挂断，6-双流开，7-双流关
byRes1
保留，置为0
struCtrlParam
控制参数，不同的类型对应不同的参数结构，byOperateType为3或者4时有效
byRes2
保留，置为0

Remarks

  • 设备是否支持终端呼叫控制功能或者支持的参数能力，可以通过设备能力集进行判断，对应终端呼叫控制能力集(ControlParam)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TERMINAL_CTRL_CAP。

See Also

NET_DVR_STDControl


NET_DVR_TERMINAL_DETAIL_CTRL_PARAM

终端呼叫控制参数联合体。

union{
  BYTE                           byRes[640];
  NET_DVR_TERMINAL_CALL_INFO     struCallInfo;
  NET_DVR_TERMINAL_AUDIO_CTRL    struAudioCtrl;
}NET_DVR_TERMINAL_DETAIL_CTRL_PARAM,*LPNET_DVR_TERMINAL_DETAIL_CTRL_PARAM;

Members

byRes
联合体大小，640字节
struCallInfo
呼叫参数，byOperateType为3时有效
struAudioCtrl
音频调节参数，byOperateType为4有效

See Also

NET_DVR_TERMINAL_CTRL_PARAM


NET_DVR_TERMINAL_GK_CFG

终端注册GK参数结构体。

struct{
  DWORD             dwSize;
  BYTE              byEnable;
  BYTE              byRegisterState;
  BYTE              byRes1[2];
  NET_DVR_IPADDR    struGKIP;
  WORD              wGKPort;
  BYTE              byRes2[2];
  BYTE              byRegisterName[REGISTER_NAME_LEN];
  BYTE              byRes3[32];
}NET_DVR_TERMINAL_GK_CFG, *LPNET_DVR_TERMINAL_GK_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 否，1- 是
byRegisterState
注册状态（只读）：0- 未注册，1- 已注册
byRes1
保留，置为0
struGKIP
GK服务IP地址
wGKPort
GK服务端口号
byRes2
保留，置为0
byRegisterName
终端注册到GK的名字
byRes3
保留，置为0

Remarks

  • MCU注册了GK服务，在召集会议添加会议成员时就只能召集已注册具有了【终端名称】的终端设备。
  • 设备是否支持终端注册GK参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应终终端注册GK能力集(GkConfig)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TERMINAL_GK_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_TERMINAL_INPUT_CFG

终端视频会议输入参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwInputNo;
  BYTE     byStreamType;
  BYTE     byRes[31];
}NET_DVR_TERMINAL_INPUT_CFG, *LPNET_DVR_TERMINAL_INPUT_CFG;

Members

dwSize
结构体大小
dwInputNo
作为视频会议输入的输入口编号
byStreamType
码流类型：0-主码流，1-子码流，2-三码流
byRes
保留，置为0

Remarks

  • 设备是否支持终端视频会议输入参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应终端视频会议输入参数能力集(InputConfig)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TERMINAL_INPUT_CFG_CAP。
  • 此接口对应ISAPI中的URL：/ISAPI/VCS/terminals/inputConfig。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_TEXTSHOW

显示屏显示控制结构体。

struct{
  DWORD    dwSize;
  BYTE     byShowText;
  BYTE     byRes[35];
}NET_DVR_TEXTSHOW,*LPNET_DVR_TEXTSHOW;

Members

dwSize
结构体大小
byShowText
是否显示文字：0- 显示文字，1- 不显示文字
byRes
保留

See Also

NET_DVR_TextShowCtrl


NET_DVR_TFS_ALARM

违章取证报警信息结构体。

struct{
  DWORD                   dwSize;
  DWORD                   dwRelativeTime;
  DWORD                   dwAbsTime;
  DWORD                   dwIllegalType;
  DWORD                   dwIllegalDuration;
  BYTE                    byMonitoringSiteID[MONITORSITE_ID_LEN];
  BYTE                    byDeviceID[DEVICE_ID_LEN];
  NET_VCA_DEV_INFO        struDevInfo;
  NET_DVR_SCENE_INFO      struSceneInfo;
  NET_DVR_TIME_EX         struBeginRecTime;
  NET_DVR_TIME_EX         struEndRecTime;
  NET_DVR_AID_INFO        struAIDInfo;
  NET_DVR_PLATE_INFO      struPlateInfo;
  NET_DVR_VEHICLE_INFO    struVehicleInfo;
  DWORD                   dwPicNum;
  NET_ITS_PICTURE_INFO    struPicInfo[8];
  BYTE                    bySpecificVehicleType;
  BYTE                    byLaneNo;
  WORD                    wDevInfoIvmsChannelEx;
  NET_DVR_TIME_V30        struTime;
  DWORD                   dwSerialNo;
  BYTE                    byVehicleAttribute;
  BYTE                    byPilotSafebelt;
  BYTE                    byCopilotSafebelt;
  BYTE                    byPilotSunVisor;
  BYTE                    byCopilotSunVisor;
  BYTE                    byPilotCall;
  BYTE                    byRes2[2];
  BYTE                    byIllegalCode[ILLEGAL_LEN];
  WORD                    wCountry;
  BYTE                    byRegion;
  BYTE                    byCrossLine;
  BYTE                    byParkingSerialNO[SERIAL_NO_LEN];
  BYTE                    byCrossSpaces;
  BYTE                    byAngledParking;
  BYTE                    byAlarmValidity;
  BYTE                    byDoorsStatus;
  DWORD                   dwXmlLen;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))  //win64及linux64下指针为8字节
  char                    *pXmlBuf;
  #else //win32及linux32下指针为8字节
  char                    *pXmlBuf;
  BYTE                    byRes3[4];
  #endif
  BYTE                    byVehicleHeadTailStatus;
  BYTE                    byBrokenNetHttp;
  BYTE                    byRes[30];
}NET_DVR_TFS_ALARM, *LPNET_DVR_TFS_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
dwIllegalType
违章类型，采用国标定义，违章代码描述，当dwIllegalType值为0xffffffff时，则使用byIllegalCode
dwIllegalDuration
违法持续时间（单位：秒） = 抓拍最后一张图片的时间 - 抓拍第一张图片的时间
byMonitoringSiteID
监测点编号（路口编号、内部编号）
byDeviceID
设备编号
struDevInfo
前端设备信息
struSceneInfo
场景信息
struBeginRecTime
录像开始时间
struEndRecTime
录像结束时间
struAIDInfo
交通事件信息
struPlateInfo
车牌信息
struVehicleInfo
车辆信息
dwPicNum
图片数量
struPicInfo
图片信息，最多8张
bySpecificVehicleType
具体车辆类型：0- 未知，1- 客车，2- 货车，3- 轿车，4- 面包车，5- 小货车，6- 行人，7- 二轮车，8- 三轮车
byLaneNo
关联车道号
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx。
struTime
手动跟踪定位的当前时间，目前仅取证球机支持，和dwSerialNo一起用于平台录像和手动跟踪取证图片匹配使用
dwSerialNo
抓拍序号，目前仅取证球机支持，和struTime一起用于平台录像和手动跟踪取证图片匹配使用
byVehicleAttribute
车辆属性，0表示无附加属性(普通车辆)，其他取值按位表示，bit1- 黄标车(类似年检的标志)，bit2- 危险品车辆，值：0- 否，1- 是
byPilotSafebelt
主驾驶员是否系安全带：0- 未知，1- 系安全带，2- 未系安全带
byCopilotSafebelt
副驾驶员是否系安全带：0- 未知，1- 系安全带，2- 未系安全带
byPilotSunVisor
主驾驶是否打开遮阳板：0- 未知，1- 未打开遮阳板，2- 打开遮阳板
byCopilotSunVisor
副驾驶是否打开遮阳板：0- 未知，1- 未打开遮阳板，2- 打开遮阳板
byPilotCall
主驾驶员是否在打电话：0- 未知，1- 未打电话，2- 打电话
byRes2
保留
byIllegalCode
违法代码扩展，当dwIllegalType值为0xffffffff时有效，字符串
wCountry
国家和地区索引值，取值定义详见COUNTRY_INDEX
byRegion
区域索引值：0- 保留，1- 欧洲(Europe Region)，2- 俄罗斯(Russian Region)，3- 欧洲&俄罗斯(EU&CIS)，4- 中东(Middle East)，0xff- 所有
byCrossLine
是否压线停车（侧方停车）：0-表示未知，1-不压线，2-压线
byParkingSerialNO
泊车位编号
byCrossSpaces
是否跨泊车位停车（侧方停车）：0-表示未知，1-未跨泊车位停车，2-跨泊车位停车
byAngledParking
是否倾斜停车（侧方停车）：0-表示未知，1-未倾斜停车，2-倾斜停车
byAlarmValidity
报警置信度，可以输出驶入驶出的置信度，取值范围：0~100；置信度越高，事件真实性越高
byDoorsStatus
车门状态：0- 车门关闭，1- 车门开启
dwXmlLen
XML报警信息长度
pXmlBuf
XML报警信息指针，对应内容为<EventNotificationAlert>
byRes3
保留（Win32和Linux32版本时有该参数，因为32位和64位系统下pXmlBuf指针长度不一样）
byVehicleHeadTailStatus
车头车尾状态：0- 保留，1- 车头，2- 车尾
byBrokenNetHttp
断网续传标志位，0-不重传数据，1-重传数据
byRes
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_THERMAL_ALGINFO

热成像相关算法库版本信息结构体。

struct{
  DWORD    dwSize;
  char     sThermometryAlgName[NET_SDK_MAX_THERMOMETRYALGNAME];
  char     sShipsAlgName[NET_SDK_MAX_SHIPSALGNAME];
  char     sFireAlgName[NET_SDK_MAX_FIRESALGNAME];
  BYTE     byRes[768];
}NET_DVR_THERMAL_ALGINFO,*LPNET_DVR_THERMAL_ALGINFO;

Members

dwSize
结构体大小
sThermometryAlgName
测温算法库版本名称
sShipsAlgName
船只算法库版本名称
sFireAlgName
火点检测算法库版本名称
byRes
保留，置为0

Remarks

  • 设备是否支持获取热成像相关算法库版本或者支持的参数能力，可以通过设备能力集进行判断，对应热成像能力集(ThermalCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES，节点：<AlgVersionInfo>。

See Also

NET_DVR_GetSTDConfig


NET_DVR_THERMAL_INTELRULE_DISPLAY

热成像智能规则显示参数结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byFontSizeType;
  BYTE                     byRes1[3];
  NET_DVR_RULESLINE_CFG    struNormalRulesLineCfg;
  NET_DVR_RULESLINE_CFG    struAlertRulesLineCfg;
  NET_DVR_RULESLINE_CFG    struAlarmRulesLineCfg;
  BYTE                     byRes[640];
}NET_DVR_THERMAL_INTELRULE_DISPLAY,*LPNET_DVR_THERMAL_INTELRULE_DISPLAY;

Members

dwSize
结构体大小
byFontSizeType
字体大小倍率：0- 8倍率(小)，1- 12倍率(标准，默认值)，2- 16倍率(大)，3- 20倍率(超大)，4- 24倍率(特大)
播放库会根据该倍率以及预览窗口的宽度动态改变字体的大小，公式为: 具体倍率值/8*(0.01*预览窗口宽度)
byRes1
保留，置为0
struNormalRulesLineCfg
正常规则线相关属性参数
struAlertRulesLineCfg
预警规则线相关属性参数
struAlarmRulesLineCfg
报警规则线相关属性参数
byRes
保留，置为0

Remarks

  • 设备是否支持热成像智能规则显示配置或者支持的参数能力，可以通过设备能力集进行判断，对应热成像智能规则显示配置能力集(IntelRuleDisplay)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_INTELRULEDISPLAY_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMAL_PIP

热成像画中画配置结构体。

struct{
  DWORD              dwSize;
  BYTE               byEnable;
  BYTE               byPipMode;
  BYTE               byOverlapType;
  BYTE               byTransparency;
  NET_VCA_POLYGON    struPipRegion;
  BYTE               byImageFusionRatio;
  BYTE               byBorderFusionRatio;
  BYTE               byRes1[2];
  float               fDistance;
  BYTE               byRes[632];
}NET_DVR_THERMAL_PIP,*LPNET_DVR_THERMAL_PIP;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byPipMode
画中画模式：0- 叠加模式，1- 融合模式，2- 普通模式
byOverlapType
叠加类型，选择画中画叠加模式(byPipMode为0)后生效：0-可见光叠加热成像图片，1-热成像叠加可见光图片
byTransparency
透明度，取值范围：0~100
struPipRegion
画中画区域位置
byImageFusionRatio
图像融合比例（融合模式下生效）取值范围：[0,100]，默认75
byBorderFusionRatio
边缘融合比例（融合模式下生效）取值范围：[0,100]，默认100
byRes1
保留，置为0
fDistance
融合距离,融合模式下生效,范围0.1-4.0米
byRes
保留，置为0

Remarks

  • 设备是否支持热成像画中画配置或者支持的参数能力，可以通过设备能力集进行判断，对应热成像画中画配置能力集(ThermalPip)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_PIP_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMALPOWER_PARAM

相机电源配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byPowerSwitch;
  BYTE     byRes[123];
}NET_DVR_THERMALPOWER_PARAM, *LPNET_DVR_THERMALPOWER_PARAM;

Members

dwSize
结构体大小
byPowerSwitch
开关使能，1为开启，0为关闭
byRes
保留

Remarks

  • 设备是否支持相机电源配置或者支持的参数能力，可以通过设备能力集进行判断，对应电源配置能力集(Power)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMALPOWER_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMINTELL_PARAM

热成像智能互斥配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byIntellType;
  BYTE     byRes[127];
}NET_DVR_THERMINTELL_PARAM,*LPNET_DVR_THERMINTELL_PARAM;

Members

dwSize
结构体大小
byIntellType
智能功能资源配置类型：0- 测温+异常行为识别(默认)，1- 船只检测，2- 火点检测，3- 画中画功能，4- 人脸测温，5- 测温+烟火检测，6- 测温+火点检测，7- 异常行为识别
byRes
保留，置为0

Remarks

  • 设备是否支持热成像智能互斥配置或者支持的参数能力，可以通过设备能力集进行判断，对应热成像智能互斥配置能力集(ThermIntell)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMINTELL_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_AGC

测温AGC参数结构体。

struct{
  BYTE    byMode;
  BYTE    byRes1[3];
  int     iHighTemperature;
  int     iLowTemperature;
  BYTE    byRes[8];
}NET_DVR_THERMOMETRY_AGC, *LPNET_DVR_THERMOMETRY_AGC;

Members

byMode
AGC模式：0- 无效，1- 自动，2- 手动
byRes1
保留，置为0
iHighTemperature
最高温度，取值范围：-273~9999，单位：摄氏度，byMode为1(手动模式)时生效
iLowTemperature
最低温度，取值范围：-273~9999，单位：摄氏度，byMode为1(手动模式)时生效
byRes
保留，置为0

See Also

NET_DVR_CAMERAPARAMCFG_EX


NET_DVR_THERMOMETRY_ALARM

温度报警信息结构体

struct{
  DWORD              dwSize;
  DWORD              dwChannel;
  BYTE               byRuleID;
  BYTE               byThermometryUnit;
  WORD               wPresetNo;
  NET_PTZ_INFO       struPtzInfo;
  BYTE               byAlarmLevel;
  BYTE               byAlarmType;
  BYTE               byAlarmRule;
  BYTE               byRuleCalibType;
  NET_VCA_POINT      struPoint;
  NET_VCA_POLYGON    struRegion;
  float              fRuleTemperature;
  float              fCurrTemperature;
  DWORD              dwPicLen;
  DWORD              dwThermalPicLen;
  DWORD              dwThermalInfoLen;
  char               *pPicBuff;
  char               *pThermalPicBuff;
  char               *pThermalInfoBuff;
  NET_VCA_POINT      struHighestPoint;
  float              fToleranceTemperature;
  DWORD              dwAlertFilteringTime;
  DWORD              dwAlarmFilteringTime;
  DWORD              dwTemperatureSuddenChangeCycle;
  float              fTemperatureSuddenChangeValue;
  BYTE               byPicTransType;
  BYTE               byRes[39];
}NET_DVR_THERMOMETRY_ALARM, *LPNET_DVR_THERMOMETRY_ALARM;

Members

dwSize
结构体大小
dwChannel
通道号
byRuleID
规则ID
byThermometryUnit
测温单位: 0- 摄氏度（℃），1- 华氏度（℉），2- 开尔文(K)
wPresetNo
预置点号
struPtzInfo
PTZ坐标信息
byAlarmLevel
报警等级：0- 预警，1- 报警
byAlarmType
报警类型：0- 最高温度，1- 最低温度，2- 平均温度
byAlarmRule
报警规则：0- 大于，1- 小于
byRuleCalibType
规则标定类型：0- 点，1- 框，2- 线
struPoint
点测温坐标（当规则标定类型为点的时候生效）
struRegion
区域测温坐标（当规则标定类型为框或线的时候生效）
fRuleTemperature
配置规则温度，精确到小数点后一位，取值范围：-40~1000
fCurrTemperature
当前温度，精确到小数点后一位，取值范围：-40~1000
dwPicLen
可见光图片长度
dwThermalPicLen
热成像图片长度
dwThermalInfoLen
热成像附加信息长度
pPicBuff
可见光图片指针，存放可见光图片数据，JPEG格式
pThermalPicBuff
热成像图片指针，存放热成像图片数据，JPEG格式
pThermalInfoBuff
热成像附加信息指针，存放热成像信息
struHighestPoint
线、框测温最高温度位置坐标（当规则标定类型为线、框的时候生效）
fToleranceTemperature
容差温度,精确到小数点后一位(-40-1000),（浮点数+100）
dwAlertFilteringTime
温度预警等待时间，单位：秒，范围为0-200秒，默认为0秒
dwAlarmFilteringTime
温度报警等待时间，单位：秒，范围为0-200秒，默认为0秒
dwAlertFilteringTime
温度突变记录周期，单位：秒
dwAlarmFilteringTime
温度突变值,精确到小数点后一位(大于0)
byPicTransType
图片数据传输方式：0-二进制，1-URL
byRes
保留字节

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_THERMOMETRY_ALARMRULE

预置点测温报警规则配置结构体。

struct{
  DWORD                                  dwSize;
  NET_DVR_THERMOMETRY_ALARMRULE_PARAM    struThermometryAlarmRuleParam[THERMOMETRY_ALARMRULE_NUM];
  BYTE                                   byRes[128];
}NET_DVR_THERMOMETRY_ALARMRULE,*LPNET_DVR_THERMOMETRY_ALARMRULE;

Members

dwSize
结构体大小
struThermometryAlarmRuleParam
预置点测温报警规则参数，每位数组表示一个规则
byRes
保留，置为0

Remarks

  • 设备是否支持预置点测温报警规则配置或者支持的参数能力，可以通过设备能力集进行判断，对应测温报警方式配置能力集(ThermometryAlarmRule)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_ALARMRULE_CAPABILITIES，节点：<ThermometryAlarmModeList>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_ALARMRULE_PARAM

预置点测温报警规则信息结构体。

struct{
  BYTE     byEnabled;
  BYTE     byRuleID;
  BYTE     byRule;
  BYTE     byRes;
  char     szRuleName[NAME_LEN];
  float    fAlert;
  float    fAlarm;
  float    fThreshold;
  DWORD    dwAlertFilteringTime;
  DWORD    dwAlarmFilteringTime;
  BYTE     byRes1[56];
}NET_DVR_THERMOMETRY_ALARMRULE_PARAM,*LPNET_DVR_THERMOMETRY_ALARMRULE_PARAM;

Members

byEnabled
是否使能：0- 否，1- 是
byRuleID
规则ID
byRule
报警温度比较方式：0- 高温大于，1- 高温小于，2- 低温大于，3- 低温小于，4- 平均温大于，5- 平均温小于，6- 温差大于，7- 温差小于
byRes
保留，置为0
szRuleName
规则名称
fAlert
预警温度
fAlarm
报警温度
fThreshold
门限温度（测温的浮动范围，例如设置报警温度为60度，门限温度为5度，则在55到65度之间都会报警）
dwAlertFilteringTime
温度预警等待时间,单位秒
dwAlarmFilteringTime
温度报警等待时间,单位秒
byRes1
保留，置为0

See Also

NET_DVR_THERMOMETRY_ALARMRULE


NET_DVR_THERMOMETRY_BASICPARAM

测温基本参数配置结构体。

struct{
  DWORD                        dwSize;
  BYTE                         byEnabled;
  BYTE                         byStreamOverlay;
  BYTE                         byPictureOverlay;
  BYTE                         byThermometryRange;
  BYTE                         byThermometryUnit;
  BYTE                         byThermometryCurve;
  BYTE                         byFireImageModea;
  BYTE                         byShowTempStripEnable;
  float                        fEmissivity;
  BYTE                         byDistanceUnit;
  BYTE                         byEnviroHumidity;
  BYTE                         byRes2[2];
  NET_DVR_TEMPERATURE_COLOR    struTempColor;
  int                          iEnviroTemperature;
  int                          iCorrectionVolume;
  BYTE                         bySpecialPointThermType;
  BYTE                         byReflectiveEnabled;
  WORD                         wDistance;
  float                        fReflectiveTemperature;
  float                        fAlert;
  float                        fAlarm;
  float                        fThermalOpticalTransmittance;
  float                        fExternalOpticsWindowCorrection;
  BYTE                         byDisplayMaxTemperatureEnabled;
  BYTE                         byDisplayMinTemperatureEnabled;
  BYTE                         byDisplayAverageTemperatureEnabled;
  BYTE                         byThermometryInfoDisplayposition;
  DWORD                        dwAlertFilteringTime;
  DWORD                        dwAlarmFilteringTime;
  BYTE                         byemissivityMode;
  BYTE                         bydisplayTemperatureInOpticalChannelEnabled;
  BYTE                         byDisplayCentreTemperatureEnabled;
  BYTE                         byRes[49];
}NET_DVR_THERMOMETRY_BASICPARAM,*LPNET_DVR_THERMOMETRY_BASICPARAM;

Members

dwSize
结构体大小
byEnabled
使能：0- 不启用，1- 启用
byStreamOverlay
码流是否叠加温度信息：0- 否，1- 是
byPictureOverlay
抓图是否叠加温度信息：0- 否，1- 是
byThermometryRange
测温范围（这里以摄氏度为单位计算，其他单位由上层自行转换）：0- 默认值，1- (-20~150)，2- (0~550)，3- (0~650），4- （-40~150），5-（0~1200），6- （-20-120），0xff- 自动
byThermometryUnit
测温单位（所有测温配置功能中温度参数对应的单位）: 0- 摄氏度（℃），1- 华氏度（℉），2- 开尔文(K)
byThermometryCurve
测温曲线模式显示方式：0- 关闭，1- 模式1(横向温度趋势线模式)，2- 模式2(纵向温度趋势线模式)
byFireImageModea
消防图像模式：0- 保留，1- 黑白模式，2- 热探测模式，3- 火场模式
byShowTempStripEnable
显示温度条使能：0- 否，1- 是
fEmissivity
发射率(即物体向外辐射能量的本领，精确到小数点后两位)，取值范围：[0.01, 1.00]
该值对于不支持规则框以及预置点的设备使用
byDistanceUnit
距离单位: 0- 米(m)，1- 英尺(feet)，2-厘米（cm）
byEnviroHumidity
环境相对湿度，取值范围：0~100%
byRes2
保留，置为0
struTempColor
测温报警颜色
iEnviroTemperature
环境温度，取值范围：-273~10000摄氏度
iCorrectionVolume
测温修正量，取值范围：-100~100
bySpecialPointThermType
特殊测温点显示，按位表示：
bit0-中心点测温：0-不显示，1-显示； bit1-最高点测温：0-不显示，1-显示； bit2-最低点测温：0-不显示，1-显示
byReflectiveEnabled
反射温度使能：0- 否，1- 是
wDistance
距离，单位：米(m)，取值范围：[0,10000]
fReflectiveTemperature
反射温度 精确到小数后一位
fAlert
预警温度阈值，取值范围：-100.0-1000.0摄氏度（精确到小数点后一位）
fAlarm
报警温度阈值，取值范围：-100.0-1000.0摄氏度（精确到小数点后一位）
fThermalOpticalTransmittance
光学透过率，精确到小数点后3位，取值范围：[0.001,1.000]，默认1.000
fExternalOpticsWindowCorrection
外部光学温度，取值范围：-40.0-80.0摄氏度，默认值20℃，实际以界面显示为准
byDisplayMaxTemperatureEnabled
显示最高温：0- 不显示，1- 显示
byDisplayMinTemperatureEnabled
显示最低温：0- 不显示，1- 显示
byDisplayAverageTemperatureEnabled
显示平均温：0- 不显示，1- 显示
byThermometryInfoDisplayposition
测温信息显示位置：0- 保留，1- 跟随规则，2- 屏幕左上角
dwAlertFilteringTime
温度预警等待时间，单位秒
dwAlarmFilteringTime
温度报警等待时间，单位秒
byemissivityMode
发射率配置类型： 1- 粗糙(0.95)，2- 较粗糙(0.80)，3- 较光滑(0.60)，4- 光滑(0.30)，0xff- 自定义(0.01-1.00)
bydisplayTemperatureInOpticalChannelEnabled
可见光显示温度信息使能：0- 不启用，1- 启用
byDisplayCentreTemperatureEnabled
显示中心点温度 0-不显示 1-显示
byRes
保留，置为0

Remarks

  • 该结构体里面测温相关配置在测温模式为普通模式时有效。
  • 设备是否支持测温配置或者支持的参数能力，可以通过设备能力集进行判断，对应测温配置能力集(ThermometryBasicParam)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_COND

测温相关参数配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  WORD     wPresetNo;
  BYTE     byRes[62];
}NET_DVR_THERMOMETRY_COND,*LPNET_DVR_THERMOMETRY_COND;

Members

dwSize
结构体大小
dwChannel
通道号
wPresetNo
预置点号
byRes
保留，置为0

Remarks

测温功能基于预置点来实现，配置测温相关参数前必须先设置预置点，预置点设置相关接口：NET_DVR_PTZPreset_Other。设备支持的测温预置点个数可以通过设备能力集获取，对应PTZ能力集(PTZAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<maxThermometryPresetNum>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_DIFF_ALARM

温差报警信息结构体

struct{
  DWORD              dwSize;
  DWORD              dwChannel;
  BYTE               byAlarmID1;
  BYTE               byAlarmID2;
  WORD               wPresetNo;
  BYTE               byAlarmLevel;
  BYTE               byAlarmType;
  BYTE               byAlarmRule;
  BYTE               byRuleCalibType;
  NET_VCA_POINT      struPoint[2];
  NET_VCA_POLYGON    struRegion[2];
  float              fRuleTemperatureDiff;
  float              fCurTemperatureDiff;
  NET_PTZ_INFO       struPtzInfo;
  DWORD              dwPicLen;
  DWORD              dwThermalPicLen;
  DWORD              dwThermalInfoLen;
  char               *pPicBuff;
  char               *pThermalPicBuff;
  char               *pThermalInfoBuff;
  BYTE               byThermometryUnit;
  BYTE               byRes1[3];
  float              fToleranceTemperature;
  DWORD              dwAlarmFilteringTime;
  BYTE               byRes[52];
}NET_DVR_THERMOMETRY_DIFF_ALARM, *LPNET_DVR_THERMOMETRY_DIFF_ALARM;

Members

dwSize
结构体大小
dwChannel
通道号
byAlarmID1
报警点1
byAlarmID2
报警点2
wPresetNo
预置点号
byAlarmLevel
报警等级：0- 预警，1- 报警
byAlarmType
报警类型：0- 最高温度，1- 最低温度，2- 平均温度
byAlarmRule
报警规则：0- 大于，1- 小于
byRuleCalibType
规则标定类型：0- 点，1- 框，2- 线
struPoint
点测温坐标（当规则标定类型为点的时候生效），数组下标0代表着AlarmID1对应的点坐标，数组下标1代表着AlarmID2对应的点坐标
struRegion
区域测温坐标（当规则标定类型为框或线的时候生效），数组下标0代表着AlarmID1对应的区域坐标，数组下标1代表着AlarmID2对应的区域坐标
fRuleTemperatureDiff
配置规则温差，精确到小数点后一位，取值范围：[-40.0, 1000.0]
fCurTemperatureDiff
当前温差，精确到小数点后一位，取值范围：[-40.0, 1000.0]
struPtzInfo
PTZ坐标信息
dwPicLen
可见光图片长度
dwThermalPicLen
热成像图片长度
dwThermalInfoLen
热成像附加信息长度
pPicBuff
可见光图片指针，存放可见光图片数据，JPEG格式
pThermalPicBuff
热成像图片指针，存放热成像图片数据，JPEG格式
pThermalInfoBuff
热成像附加信息指针，存放热成像信息
byThermometryUnit
测温单位: 0- 摄氏度（℃），1- 华氏度（℉），2- 开尔文(K)
byRes1
保留字节
fToleranceTemperature
容差温度,精确到小数点后一位， 取值范围：[-40.0, 1000.0]
dwAlarmFilteringTime
温度报警等待时间,单位：秒， 范围：0-200秒， 默认为0秒
byRes
保留字节

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_THERMOMETRY_DIFFCOMPARISON

预置点温差报警规则配置结构体。

struct{
  DWORD                                       dwSize;
  NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM    struDiffComparison[MAX_THERMOMETRY_DIFFCOMPARISON_NUM];
  BYTE                                        byRes[64];
}NET_DVR_THERMOMETRY_DIFFCOMPARISON,*LPNET_DVR_THERMOMETRY_DIFFCOMPARISON;

Members

dwSize
结构体大小
struDiffComparison
预置点温差报警规则参数，每位数组表示一个规则
byRes
保留，置为0

Remarks

  • 设备是否支持预置点温差报警规则配置或者支持的参数能力，可以通过设备能力集进行判断，对应测温报警方式配置能力集(ThermometryAlarmRule)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_ALARMRULE_CAPABILITIES，节点：<TemperatureDifferenceComparisonList>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM

预置点温差报警规则信息结构体。

struct{
  BYTE     byEnabled;
  BYTE     byRuleID;
  BYTE     byAlarmID1;
  BYTE     byAlarmID2;
  BYTE     byRule;
  BYTE     byRes[3];
  float    fTemperatureDiff;
  BYTE     byRes1[32];
}NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM,*LPNET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM;

Members

byEnabled
是否使能：0- 否，1- 是
byRuleID
规则ID
byAlarmID1
报警点1
byAlarmID2
报警点2
byRule
报警温度比较方式：0- 高温大于，1- 高温小于，2- 低温大于，3- 低温小于，4- 平均温大于，5- 平均温小于，6- 温差大于，7- 温差小于
byRes
保留，置为0
fTemperatureDiff
温差值
byRes1
保留，置为0

Remarks

温差参数中的byAlarmID1、byAlarmID2对应测温报警参数中的byRuleID，表示指定的两个温度报警规则之间进行比较。

See Also

NET_DVR_THERMOMETRY_DIFFCOMPARISON


NET_DVR_THERMOMETRY_MODE

测温模式参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byMode;
  BYTE     byThermometryROIEnabled;
  BYTE     byRes[62];
}NET_DVR_THERMOMETRY_MODE,*LPNET_DVR_THERMOMETRY_MODE;

Members

dwSize
结构体大小
byMode
测温模式：0- 普通模式，1- 专家模式
byThermometryROIEnabled
测温ROI使能：0-保留 1-不开启 2-开启（基于互斥兼容考虑）
byRes
保留，置为0

Remarks

  • 普通模式：等于全局测温配置，不需要区分规则以及预置点，直接全局测温，先通过该配置修改为普通模式（byMode为0），然后再通过(NET_DVR_THERMOMETRY_BASICPARAM)配置测温基本参数。
    专家模式：区分规则以及预置点进行测温配置，可以配置选择某个区域以及预置点来进行测温，当选择该模式时，需要先设置预置点，然后进行预置点关联测温信息配置、测温报警规则配置和温差报警报警规则配置等操作。详细配置接口调用流程请参考“编程导引”里面“热成像功能模块流程”中的“测温配置”流程。
  • ROI与测温模式mode配置是互斥的，是两套测温独立的测温解决方案，应用于不同场景，ROI主要应用于小型化工业测温。
  • 设备是否支持测温模式配置或者支持的参数能力，可以通过设备能力集进行判断，对应测温模式能力集(ThermometryMode)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_MODE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_PRESETINFO

测温预置点关联配置结构体。

struct{
  DWORD                                   dwSize;
  WORD                                    wPresetNo;
  BYTE                                    byRes[2];
  NET_DVR_THERMOMETRY_PRESETINFO_PARAM    struPresetInfo[MAX_THERMOMETRY_REGION_NUM];
}NET_DVR_THERMOMETRY_PRESETINFO,*LPNET_DVR_THERMOMETRY_PRESETINFO;

Members

dwSize
结构体大小
wPresetNo
场景编号（预置点号）
byRes
保留，置为0
struPresetInfo
预置点关联的测温信息，每位数组表示一种测温信息，目前每个预置点最大支持10个框测温、10个点测温、1条线测温

Remarks

  • 设备是否支持测温预置点关联配置或者支持的参数能力，可以通过设备能力集进行判断，对应测温预置点关联配置能力集(ThermometryScene)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_PRESETINFO_PARAM

预置点关联测温信息结构体。

struct{
  BYTE               byEnabled;
  BYTE               byRuleID;
  WORD               wDistance;
  float              fEmissivity;
  BYTE               byDistanceUnit;
  BYTE               byRes[2];
  BYTE               byReflectiveEnabled;
  float              fReflectiveTemperature;
  char               szRuleName[NAME_LEN];
  BYTE               byRes1[63];
  BYTE               byRuleCalibType;
  NET_VCA_POINT      struPoint;
  NET_VCA_POLYGON    struRegion;
}NET_DVR_THERMOMETRY_PRESETINFO_PARAM,*LPNET_DVR_THERMOMETRY_PRESETINFO_PARAM;

Members

byEnabled
是否使能：0- 否，1- 是
byRuleID
规则ID，从1开始（list内部判断数据有效性），0表示无效
wDistance
距离，单位：m，取值范围：[0, 10000]
fEmissivity
发射率(即物体向外辐射能量的本领，精确到小数点后两位)，取值范围：[0.01, 1.00]
byDistanceUnit
距离单位: 0- 米(m)，1- 英尺(feet)，2-厘米（cm）
byRes
保留，置为0
byReflectiveEnabled
反射温度使能：0- 否，1- 是
fReflectiveTemperature
反射温度，精确到小数后一位
szRuleName
规则名称
byRes1
保留，置为0
byRuleCalibType
规则标定类型：0- 点，1- 框，2- 线
struPoint
点测温坐标（当规则标定类型为"点"的时候生效）
struRegion
区域、线（当规则标定类型为"框"或者"线"的时候生效）

Remarks

  • 框测温显示最高温、最低温、平均温、温差；线测温显示最高温度、最低温度；点测温只显示平均温度。

See Also

NET_DVR_THERMOMETRY_PRESETINFO


NET_DVR_THERMOMETRY_TRIGGER_COND

测温联动配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  DWORD    dwPreset;
  BYTE     byRes[256];
}NET_DVR_THERMOMETRY_TRIGGER_COND,*LPNET_DVR_THERMOMETRY_TRIGGER_COND;

Members

dwSize
结构体大小
dwChan
通道号
dwPreset
预置点号
byRes
保留，置为0

Remarks

  • 测温功能基于预置点来实现，配置测温相关参数前必须先设置预置点，预置点设置相关接口：NET_DVR_PTZPreset_Other。设备支持的测温预置点个数可以通过设备能力集获取，对应PTZ能力集(PTZAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<maxThermometryPresetNum>。
  • 设备是否支持测温联动配置或者支持的参数能力，可以通过设备能力集进行判断，对应事件触发能力集(EventTriggersCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES，节点：<ThermometryCap>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THERMOMETRY_UPLOAD

实时温度信息结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwRelativeTime;
  DWORD                            dwAbsTime;
  char                             szRuleName[NAME_LEN];
  BYTE                             byRuleID;
  BYTE                             byRuleCalibType;
  WORD                             wPresetNo;
  NET_DVR_POINT_THERM_CFG          struPointThermCfg;
  NET_DVR_LINEPOLYGON_THERM_CFG    struLinePolygonThermCfg;
  BYTE                             byThermometryUnit;
  BYTE                             byDataType;
  BYTE                             byRes1;
  BYTE                             bySpecialPointThermType;
  float                             fCenterPointTemperature;
  float                             fHighestPointTemperature;
  float                             fLowestPointTemperature;
  NET_VCA_POINT                    struHighestPoint;
  NET_VCA_POINT                    struLowestPoint;
  BYTE                             byIsFreezedata;
  BYTE                             byFaceSnapThermometryEnabled;
  BYTE                             byRes2[2];
  DWORD                             dwChan;
  NET_VCA_RECT                    struFaceRect;
  DWORD                             dwTimestamp;
  BYTE                             byRes[68];
}NET_DVR_THERMOMETRY_UPLOAD,*LPNET_DVR_THERMOMETRY_UPLOAD;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
szRuleName
规则名称
byRuleID
规则ID号
byRuleCalibType
规则标定类型：0- 点，1- 框，2- 线
wPresetNo
预置点号
struPointThermCfg
点测温信息，byRuleCalibType为0时有效
struLinePolygonThermCfg
框/线测温信息，byRuleCalibType为1或2时有效
byThermometryUnit
测温单位: 0- 摄氏度（℃），1- 华氏度（℉），2- 开尔文(K)
byDataType
数据状态类型：0- 检测中，1- 开始，2- 结束
byRes1
保留，置为0
bySpecialPointThermType
是否支持特殊点测温，按位表示不同类型的特殊点：
bit0-中心点测温：0-不支持，1-支持；
bit1-最高点测温：0-不支持，1-支持；
bit2-最低点测温：0-不支持，1-支持
fCenterPointTemperature
中心点温度（由bySpecialPointThermType取值判断是否支持中心点），精确到小数点后一位
fHighestPointTemperature
最高点温度（由bySpecialPointThermType取值判断是否支持最高点），精确到小数点后一位
fLowestPointTemperature
最低点温度（由bySpecialPointThermType取值判断是否支持最低点），精确到小数点后一位
struHighestPoint
线、框测温最高温度位置坐标（当规则标定类型为线、框的时候生效）
struLowestPoint
线、框测温最低温度位置坐标（当规则标定类型为线、框的时候生效）
byIsFreezedata
是否数据冻结： 0- 否 ；1- 是
byFaceSnapThermometryEnabled
人脸抓拍测温使能 1-开启 0-关闭
byRes2
保留，置为0
dwChan
通道号，查询条件中通道号为0xffffffff时该字段生效
struFaceRect
人脸子图区域
dwTimestamp
DSP时间戳
byRes
保留，置为0

Remarks

  • 设备是否支持实时温度检测功能，可以通过设备能力集进行判断，对应热成像能力集(ThermalCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THERMAL_CAPABILITIES，节点：<ThermalCap>。

    • See Also

    NET_DVR_StartRemoteConfig

    冻结是指设备打挡片、切换档位时，设备内部会把热成像的打挡片（或切换单位）前的裸数据保存记录，并不再更新，持续到打挡片（或切换挡片）结束。 此过程中因为裸数据不在更新，会造成图像，测温信息都不变化。此种状态为冻结状态。


NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO

测温规则温度信息结构体。

struct{
  float              fMaxTemperature;
  float              fMinTemperature;
  float              fAverageTemperature;
  NET_VCA_POINT      struHighestPoint;
  NET_VCA_POLYGON    struLowestPoint;
  BYTE               byIsFreezedata;
  BYTE               byRes[15];
}NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO,*LPNET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO;

Members

fMaxTemperature
最高温，精确到小数点后一位
fMinTemperature
最低温，精确到小数点后一位
fAverageTemperature
平均温，精确到小数点后一位
struHighestPoint
最高温度位置坐标
struLowestPoint
最低温度位置坐标
byIsFreezedata
是否数据冻结： 0- 否 ；1- 是
byRes
保留

Remarks

冻结是指设备打挡片、切换档位时，设备内部会把热成像的打挡片（或切换单位）前的裸数据保存记录，并不再更新，持续到打挡片（或切换挡片）结束。此过程中因为裸数据不在更新，会造成图像，测温信息都不变化。此种状态为冻结状态。

See Also

NET_DVR_THERMOMETRY_PRESETINFO


NET_DVR_THSCREEN

温湿度配置结构体。

struct{
  DWORD            dwSize;
  BYTE             byEnable;
  BYTE             byTHOSDDisplay;
  BYTE             byRes[2];
  NET_VCA_POINT    struTHOSDPoint;
  BYTE             byTimingMode;
  BYTE             byRes1;
  WORD             wInterval;
  BYTE             byRes2[254];
}NET_DVR_THSCREEN,*LPNET_DVR_THSCREEN;

Members

dwSize
结构体大小
byEnable
是否启用定时使能：0- 否，1- 是
byTHOSDDisplay
是否启用温湿度OSD显示：0- 否，1- 是
byRes
保留，置为0
struTHOSDPoint
温湿度OSD显示位置坐标
byTimingMode
校时模式（byEnable为1时有效）：0- 手动，1- 定时
byRes1
保留，置为0
wInterval
校时间隔时间（byTimingMode为1时有效），取值范围：[1,10080]，单位：分钟
byRes2
保留，置为0

Remarks

  • 设备是否支持温湿度配置或者支持的参数能力，可以通过设备能力集进行判断，对应温湿度配置能力集(THScreen)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_THSCREEN_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_THUMBNAILS_COND

按时间段获取缩略图条件参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  BYTE                   bySearchDataType;
  BYTE                   byRes[3];
  NET_DVR_TIME_V30       struStartTime;
  NET_DVR_TIME_V30       struStopTime;
  DWORD                  dwIntervalTime;
  BYTE                   byRes1[512];
}NET_DVR_THUMBNAILS_COND, *LPNET_DVR_THUMBNAILS_COND;

Members

dwSize
结构体大小
struStreamInfo
流信息，流ID或者通道号
bySearchDataType
查找数据类型：0- I帧数据（CVR一路的情况下，1s最多28个I帧），1- 图片数据（JPEG图片）
byRes
保留，置为0
struStartTime
查找开始时间
struStopTime
查找结束时间，若查找结束时间等于查找开始时间表示根据时间点获取缩略图，兼容NET_DVR_GET_FIGURE命令
dwIntervalTime
间隔时间，单位：秒，范围：0~24*60*60，若查找结束时间等于查找开始时间，则填0，填其他值无效
byRes1
保留，置为0

Remarks

  • 设备是否支持按时间段获取缩略图或者支持的参数能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportGetThumbnails>。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_THUMBNAILS_RESULT

按时间段获取缩略图结果信息结构体。

struct{
  BYTE                   byResultDataType;
  BYTE                   byIFrameType;
  BYTE                   byRes1[2];
  NET_DVR_TIME_SEARCH    struTime;
  BYTE                   byRes[252];
  DWORD                  dwFileSize;
  char                   *pBuffer;
}NET_DVR_THUMBNAILS_RESULT, *LPNET_DVR_THUMBNAILS_RESULT;

Members

byResultDataType
查找结果数据类型：0- I帧数据，1- 系统头数据（查找I帧时需要系统头数据进行解码）， 2- 图片数据
byIFrameType
I帧类型，0-数据帧，1-参考帧（本数据只需送入播放库，但是不需要转为图片显示）
byRes1
保留，置为0
struTime
数据时间
byRes
保留，置为0
dwFileSize
数据大小
pBuffer
数据信息，不同的byResultDataType类型对应不同的数据内容

Remarks

  • 设备是否支持按时间段获取缩略图或者支持的参数能力，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，节点：<isSupportGetThumbnails>。
  • 如果查找类型选择的是“I帧数据”，查询结果会先返回40字节系统头数据，然后再返回I帧数据，需要调用播放库SDK接口解码获取解码后的YUV数据，然后转换成图片格式。具体接口调用流程如下图所示，播放库接口参数说明请参考播放库SDK里面的编程指南。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_TIME

时间参数结构体。

struct{
  DWORD    dwYear;
  DWORD    dwMonth;
  DWORD    dwDay;
  DWORD    dwHour;
  DWORD    dwMinute;
  DWORD    dwSecond;
}NET_DVR_TIME, *LPNET_DVR_TIME;

Members

dwYear
年
dwMonth
月
dwDay
日
dwHour
时
dwMinute
分
dwSecond
秒


NET_DVR_TIME_DETECTION

车牌侦测时间参数结构体。

struct{
  NET_DVR_SCHEDTIME    struSchedTime;
  BYTE                 byDetSceneID;
  BYTE                 byRes[15];
}NET_DVR_TIME_DETECTION,*LPNET_DVR_TIME_DETECTION;

Members

struSchedTime
布防时间，开始时间-结束时间
byDetSceneID
检测场景号，0表示无效，其他取值：[1,4]，IPC默认为0
byRes
保留，置为0

See Also

NET_DVR_GUARD_CFG


NET_DVR_TIME_EX

时间参数结构体。

struct{
  WORD    wYear;
  BYTE    byMonth;
  BYTE    byDay;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  BYTE    byRes;
}NET_DVR_TIME_EX, *LPNET_DVR_TIME_EX;

Members

wYear
年
byMonth
月
byDay
日
byHour
时
byMinute
分
bySecond
秒
byRes
保留


NET_DVR_TIME_FORMAT

ATM时间显示格式结构体。

struct{
  BYTE    byTimeForm;
  BYTE    byRes1[23];
  BYTE    byHourMode;
  BYTE    byRes2[3];
  char    chSeprator[4];;
  char    chDisplaySeprator[4];
  BYTE    byDisplayForm;
  BYTE    byRes3[3];
  BYTE    byDisplayHourMode;
  BYTE    byRes4[19];
}NET_DVR_TIME_FORMAT, *LPNET_DVR_TIME_FORMAT;

Members

byTimeForm
时间显示格式，1-HH MM SS；0- HH MM
byRes1
保留
byHourMode
小时格式，0-12；1-24
byRes2
保留
chSeprator
分隔符
chDisplaySeprator
显示分隔符
byDisplayForm
0~5，3个item的排列组合
byRes3
保留
byDisplayHourMode
小时显示格式，0-12；1-24
byRes4
保留

See Also

NET_DVR_ATM_PACKAGE_TIME


NET_DVR_TIME_LOCK

录像段加锁/解锁参数结构体。

struct{
  DWORD              dwSize;
  NET_DVR_TIME       strBeginTime;
  NET_DVR_TIME       strEndTime;
  DWORD              dwChannel;
  DWORD              dwRecordType;
  DWORD              dwLockDuration;
  NET_DVR_TIME_EX    strUnlockTimePoint;
  BYTE               byRes[4];
}NET_DVR_TIME_LOCK,*LPNET_DVR_TIME_LOCK;

Members

dwSize
结构体大小
strBeginTime
开始时间
strEndTime
结束时间
dwChannel
通道号，0xffffffff表示所有通道
dwRecordType
录像类型：0xffffffff- 全部录像，0- 定时录像，1- 移动侦测录像，2- 报警录像，3- 报警或移动侦测录像，4- 报警和移动侦测录像， 5- 命令触发，6- 手动录像，7- 震动报警，8- 环境触发报警，9- 智能报警，10- 回传录像
dwLockDuration
锁定持续时间，单位：秒，0xffffffff- 永久锁定，0- 不锁或解锁
strUnlockTimePoint
加锁时有效，当dwLockDuration不为永久锁定时，锁定持续的时间到此时间点就自动解锁
byRes
保留，置为0

Remarks

dwLockDuration锁定持续时间和strUnlockTimePoint触发解锁时间点是互斥的选项，以dwLockDuration锁定持续时间为首选项，持续时长为0时strUnlockTimePoint触发解锁时间点有效。

See Also

NET_DVR_LockFileByTime NET_DVR_UnLockFileByTime


NET_DVR_TIME_SEARCH

数据时间信息结构体。

struct{
  WORD    wYear;
  BYTE    byMonth;
  BYTE    byDay;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  char    cTimeDifferenceH;
  char    cTimeDifferenceM;
  BYTE    byRes[3];
}NET_DVR_TIME_SEARCH, *LPNET_DVR_TIME_SEARCH;

Members

wYear
年，设备OSD时间
byMonth
月，设备OSD时间
byDay
日，设备OSD时间
byHour
时，设备OSD时间
byMinute
分，设备OSD时间
bySecond
秒，设备OSD时间
cTimeDifferenceH
与国际标准时间的时差（小时），-12 ... +14
cTimeDifferenceM
与国际标准时间的时差（分钟），-30, 0, 30, 45
byRes
保留，置为0

See Also

NET_DVR_THUMBNAILS_RESULT

NET_DVR_FILECOND_V50


NET_DVR_TIME_SEARCH_COND

数据时间搜索条件结构体。

struct{
  WORD    wYear;
  BYTE    byMonth;
  BYTE    byDay;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  BYTE    byLocalOrUTC;
  WORD    wMillisecond;
  char    cTimeDifferenceH;
  char    cTimeDifferenceM;
}NET_DVR_TIME_SEARCH_COND, *LPNET_DVR_TIME_SEARCH_COND;

Members

wYear
年，设备OSD时间
byMonth
月，设备OSD时间
byDay
日，设备OSD时间
byHour
时，设备OSD时间
byMinute
分，设备OSD时间
bySecond
秒，设备OSD时间
byLocalOrUTC
0-设备本地时间，即设备OSD时间；1-UTC时间
wMillisecond
毫秒，精度不够，默认为0
byRes
保留，置为0
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byLocalOrUTC为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 0, 30, 45，+表示东区，byLocalOrUTC为1时有效

See Also

NET_DVR_FILECOND_V50 NET_DVR_ALARM_SEARCH_COND


NET_DVR_TIME_SEGMENT

时间段参数结构体。

struct{
  NET_DVR_SIMPLE_DAYTIME    struBeginTime;
  NET_DVR_SIMPLE_DAYTIME    struEndTime;
}NET_DVR_TIME_SEGMENT,*LPNET_DVR_TIME_SEGMENT;

Members

struBeginTime
开始时间点（时分秒）
struEndTime
开始时间点（时分秒）

See Also

NET_DVR_SINGLE_PLAN_SEGMENT


NET_DVR_TIME_SWITCH_CFG

定时开关机配置结构体。

struct{
  DWORD                        dwSize;
  NET_DVR_SWITCH_DAY_TIME      struSwitchDayTime[MAX_DAYS][MAX_DAY_TIME_POINT];
  NET_DVR_SWITCH_TIME_POINT    struSwitchTimePoint[MAX_TIME_POINT];
  BYTE                         byRes[64];
}NET_DVR_TIME_SWITCH_CFG,*LPNET_DVR_TIME_SWITCH_CFG;

Members

dwSize
结构体大小
struSwitchDayTime
周开关机计划，每周7天，每天最多8个开关机时间点
struSwitchTimePoint
按时间点开关机参数
byRes
保留，置为0

Remarks

目前不支持按墙区域设置定时开关机参数。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_TIME_TASK

定时任务配置结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byTaskEnable;
  BYTE                  byRes[3];
  NET_DVR_SCHEDTASK     struTask[MAX_DAYS][MAX_SCH_TASKS_NUM];
  DWORD                 parkTime;
  BYTE                  byRes1[64];
}NET_DVR_TIME_TASK, *LPNET_DVR_TIME_TASK;

Members

dwSize
结构体大小
byTaskEnable
使能定时任务：1- 开，0- 关
byRes
保留，置为0
struTask
一周7天，每天10时间段
parkTime
任务等待时间，取值范围：5s~720s，默认为5s
byRes1
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TIME_V30

时间参数结构体。

struct{
  WORD    wYear;
  BYTE    byMonth;
  BYTE    byDay;
  BYTE    byHour;
  BYTE    byMinute;
  BYTE    bySecond;
  BYTE    byISO8601;
  WORD    wMilliSec;
  signed char         cTimeDifferenceH;
  signed char         cTimeDifferenceM;
}NET_DVR_TIME_V30, *LPNET_DVR_TIME_V30;

Members

wYear
年
byMonth
月
byDay
日
byHour
时
byMinute
分
bySecond
秒
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
wMilliSec
毫秒
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效


NET_DVR_TIME_V50

时间参数结构体。

struct{
  WORD     wYear;
  BYTE     byMonth;
  BYTE     byDay;
  BYTE     byHour;
  BYTE     byMinute;
  BYTE     bySecond;
  BYTE     byISO8601;
  WORD     wMillisecond;
  char     cTimeDifferenceH;
  char     cTimeDifferenceM;
}NET_DVR_TIME_V50, *LPNET_DVR_TIME_V50;

Members

wYear
年
byMonth
月
byDay
日
byHour
时
byMinute
分
bySecond
秒
byISO8601
是否是8601的时间格式，即时差字段是否有效:0-时差无效，年月日时分秒为设备本地时间，1-时差有效
wMillisecond
毫秒
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-12 ... +14，+表示东区，byISO8601为1时有效


NET_DVR_TIMEPOINT

时间点参数结构体。

struct{
  DWORD    dwMonth;
  DWORD    dwWeekNo;
  DWORD    dwWeekDate;
  DWORD    dwHour;
  DWORD    dwMin;
}NET_DVR_TIMEPOINT, *LPNET_DVR_TIMEPOINT;

Members

dwMonth
月：[0,11]取值分别表示第1个月到第12个月
dwWeekNo
周：0－第1周，1－第2周，2－第3周，3－第4周，4－最后一周
dwWeekDate
星期：0－星期日，1－星期一，2－星期二，3－星期三，4－星期四，5－星期五，6－星期六
dwHour
小时：开始时间0－23，结束时间1－23
dwMin
分：0－59

See Also

NET_DVR_ZONEANDDST


NET_DVR_TIMESIGN_CFG

校时自定义标记配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byCustomSetTimeSign[MAX_TIMESIGN_LEN];
  BYTE     byRes[96];
}NET_DVR_TIMESIGN_CFG,*LPNET_DVR_TIMESIGN_CFG;

Members

dwSize
结构体大小
byCustomSetTimeSign
自定义校时标记
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_TIMING_CAPTURE

定时抓图参数结构体。

struct{
  NET_DVR_JPEGPARA      struJpegPara;
  DWORD                 dwPicInterval;
  BYTE                  byRes[12];
}NET_DVR_TIMING_CAPTURE, *LPNET_DVR_TIMING_CAPTURE;

Members

struJpegPara
定时抓图图片质量
dwPicInterval
定时抓图时间间隔：1-1s，2-2s，3-3s，4-4s，5-5s，6-10m，7-30m，8-1h，9-12h，10-24h
byRes
保留，置为0

See Also

NET_DVR_JPEG_CAPTURE_CFG


NET_DVR_TME_CHARGERULE_COND

车卡收费规则配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  char     szCardNo[32];
  BYTE     byRes[128];
}NET_DVR_TME_CHARGERULE_COND,*LPNET_DVR_TME_CHARGERULE_COND;

Members

dwSize
结构体大小
dwChannel
通道号
szCardNo
卡号
byRes
保留，置为0

Remarks

  • 设备是否支持车卡收费规则配置或者支持的参数能力，可以通过设备能力集进行判断，对应车卡收费信息配置能力集(ChargeRuleInfoList)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TME_CHARGERULE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_TME_VEHICLE_RESULT

TME车辆抓拍上传信息结构体。

struct{
  DWORD                   dwSize;
  WORD                    wLaneid;
  BYTE                    byCamLaneId;
  BYTE                    byRes1;
  DWORD                   dwChanIndex;
  NET_DVR_PLATE_INFO      struPlateInfo;
  NET_DVR_VEHICLE_INFO    struVehicleInfo;
  BYTE                    byMonitoringSiteID[48];
  BYTE                    byDeviceID[48];
  BYTE                    byDir;
  BYTE                    byRes2;
  WORD                    wBackList;
  DWORD                   dwPicNum;
  NET_ITS_PICTURE_INFO    struPicInfo[4];
  BYTE                    byPassVehicleID[32];
  BYTE                    byCardNo[48];
  BYTE                    bySwipeTime[32];
  DWORD                   dwCharge;
  BYTE                    byHistory;
  BYTE                    byLetPass;
  BYTE                    byRes3[186];
}NET_DVR_TME_VEHICLE_RESULT,*LPNET_DVR_TME_VEHICLE_RESULT;

Members

dwSize
结构体大小
wLaneid
车道号，1～32（索引车道号，可以跳跃）
byCamLaneId
相机车道号，1～16（相机配置的车道号，可以跳跃，可以相同）
byRes1
保留，置为0
dwChanIndex
通道号
struPlateInfo
车牌信息结构
struVehicleInfo
车辆信息
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byDir
监测方向：0- 其它，1- 入场，2- 出场
byRes2
保留，置为0
wBackList
标记为是否报警数据：0- 表示为正常过车数据，1- 表示非授权名单
dwPicNum
图片数量（与picGroupNum不同，代表本条信息附带的图片数量）
struPicInfo
图片信息，最多支持4张图片
VehicleID
车辆唯一ID
byCardNo
卡号
bySwipeTime
增加刷卡时间，时间格式为yyyymmddhh24missfff
dwCharge
收费金额，单位：分
byHistory
是否是历史数据：0- 否，1- 是
byLetPass
是否已放行：0- 未放行，1- 放行，2- 未知
byRes3
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_TMEVOICE_CFG

语音参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byVoiceSpeed;
  BYTE     byVoicePitch;
  BYTE     byVoiceVolum;
  BYTE     byRes1;
  DWORD    dwVoiceRole;
  char     sInfo[MAX_TMEVOICE_LEN];
  char     sFileName[MAX_TMEVOICE_LEN];
  BYTE     byRes[64];
}NET_DVR_TMEVOICE_CFG,*LPNET_DVR_TMEVOICE_CFG;

Members

dwSize
结构体大小
byVoiceSpeed
语速，取值范围：0~100
byVoicePitch
语调，取值范围：0~100
byVoiceVolum
音量，取值范围：0~100
byRes1
保留，置为0
dwVoiceRole
声音种类：
3 = Xiaoyan (female, Chinese)
51 = Jiu Xu (male, Chinese)
52 = Duo Xu (male, Chinese)
53 = Xiaoping (female, Chinese)
54 = Donald Duck (male, Chinese)
55 = Baby Xu (child, Chinese)
sInfo
语音播报内容（出入口压线圈播报的语音内容）
sFileName
语音文件名
byRes
保留，置为0

Remarks

  • 设备是否支持语音参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应语音参数配置能力集(TMEVoiceConfiguration)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TMEVOICE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_TPS_ADDINFO

TPS附加信息结构体。

struct{
  NET_DVR_LLPOS_PARAM             struFirstLLPos;
  NET_DVR_LLPOS_PARAM             struLastLLPos;
  char                            sLicense[MAX_LICENSE_LEN];
  NET_DVR_TURN_DIRECTION_PARAM    struTurnDirection;
  NET_DVR_STOP_LINE_PARAM         struStopLine;
  BYTE                            byAddInfoFlag;
  BYTE                            byRes[884];
}NET_DVR_TPS_ADDINFO,*LPNET_DVR_TPS_ADDINFO;

Members

struFirstLLPos
车流量第一辆车的经纬度位置信息(byLaneState=3且byQueueLen>0时才返回
struLastLLPos
车流量最后一辆车的经纬度位置信息(byLaneState=3且byQueueLen>0时才返回
sLicense
车牌号
struTurnDirection
转向流量信息
struStopLine
停止线信息
byRes
保留，置为0


NET_DVR_TPS_ALARM

上传交通统计参数信息。

struct{
  DWORD                 dwSize;
  DWORD                 dwRelativeTime;
  DWORD                 dwAbsTime;
  NET_VCA_DEV_INFO      struDevInfo;
  NET_DVR_TPS_INFO      struTPSInfo;
  BYTE                  byRes1[32];
}NET_DVR_TPS_ALARM, *LPNET_DVR_TPS_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
struTPSInfo
交通参数统计信息
byRes1
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_DVR_TPS_ALARM_V41

交通统计上传报警信息。

struct{
  DWORD                     dwSize;
  DWORD                     dwRelativeTime;
  DWORD                     dwAbsTime;
  NET_VCA_DEV_INFO          struDevInfo;
  NET_DVR_TPS_INFO_V41      struTPSInfo;
  BYTE                      byMonitoringSiteID[MONITORSITE_ID_LEN];
  BYTE                      byDeviceID[DEVICE_ID_LEN];
  DWORD                     dwStartTime;
  DWORD                     dwStopTime;
  BYTE                      byRes[24];
}NET_DVR_TPS_ALARM_V41, *LPNET_DVR_TPS_ALARM_V41;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
struTPSInfo
交通参数统计信息
byMonitoringSiteID
监测点编号（路口编号、内部编号）
byDeviceID
设备编号
dwStartTime
开始统计时间
dwStopTime
结束统计时间
byRes1
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_TPS_ALARMCFG

交通统计报警参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwInterval;
  BYTE     byRes[248];
}NET_DVR_TPS_ALARMCFG,*LPNET_DVR_TPS_ALARMCFG;

Members

dwSize
结构体大小
byEnable
是否启用交通统计报警上传
byRes1
保留
dwInterval
统计间隔时间，单位：分钟
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TPS_INFO

车道统计参数信息结构体。

struct{
  DWORD                 dwLanNum;
  NET_DVR_LANE_PARAM    struLaneParam[MAX_TPS_RULE];
}NET_DVR_TPS_INFO, *LPNET_DVR_TPS_INFO;

Members

dwLanNum
交通参数的车道数目
struLaneParam
车道参数结构体

See Also

NET_DVR_TPS_ALARM


NET_DVR_TPS_INFO_V41

车道统计参数信息结构体。

struct{
  DWORD                     dwLanNum;
  NET_DVR_LANE_PARAM_V41    struLaneParam[MAX_TPS_RULE];
  DWORD                     dwSceneID;
  BYTE                      byRes[28];
}NET_DVR_TPS_INFO_V41, *LPNET_DVR_TPS_INFO_V41;

Members

dwLanNum
交通参数的车道数目
struLaneParam
车道参数
dwSceneID
场景ID，为0时无意义
byRes
保留

See Also

NET_DVR_TPS_ALARM_V41


NET_DVR_TPS_LANE_PARAM

单车道TPS交通统计信息结构体。

struct{
  BYTE     byLane;
  BYTE     bySpeed;
  WORD     wArrivalFlow;
  DWORD    dwLightVehicle;
  DWORD    dwMidVehicle;
  DWORD    dwHeavyVehicle;
  DWORD    dwTimeHeadway;
  DWORD    dwSpaceHeadway;
  float    fSpaceOccupyRation;
  float    fTimeOccupyRation;
  BYTE     byStoppingTimes;
  BYTE     byQueueLen;
  BYTE     byFlag;
  BYTE     byVehicelNum;
  WORD     wDelay;
  BYTE     byRes1[6];
  DWORD    dwNonMotor;
}NET_DVR_TPS_LANE_PARAM, *LPNET_DVR_TPS_LANE_PARAM;

Members

byLane
对应车道号
bySpeed
车道过车平均速度
wArrivalFlow
到达流量
dwLightVehicle
小型车数量
dwMidVehicle
中型车数量
dwHeavyVehicle
重型车数量
dwTimeHeadway
车头时距，以秒计算
dwSpaceHeadway
车头间距，以米来计算
fSpaceOccupyRation
空间占有率，百分比计算
fTimeOccupyRation
时间占有率，百分比计算
byQueueLen
堵塞状态下排队长度（比如50米）
byFlag
上传标识：0-表示T1时间的统计结果，1-表示T2时间的统计
byVehicelNum
区域车辆数
wDelay
平均延误
byRes1
保留
dwNonMotor
非机动车数量

See Also

NET_DVR_TPS_STATISTICS_PARAM


NET_DVR_TPS_PARAM

TPS交通参数信息结构体。

struct{
  BYTE    byStart;
  BYTE    byCMD;
  BYTE    wSpaceHeadway;
  WORD    wDeviceID;
  WORD    wDataLen;
  BYTE    byLane;
  BYTE    bySpeed;
  BYTE    byLaneState;
  BYTE    byQueueLen;
  WORD    wLoopState;
  WORD    wStateMask;
  DWORD   dwDownwordFlow;
  DWORD   dwUpwordFlow;
  BYTE    byJamLevel;
  BYTE    byVehicleDirection;
  BYTE    byJamFlow;
  BYTE    byChannelizationLane;
  BYTE    byVehicleType;
  BYTE    byRes1[5];
  WORD    wTimeHeadway;
}NET_DVR_TPS_PARAM, *LPNET_DVR_TPS_PARAM;

Members

byStart
开始码(串口命令)
byCMD
命令号：01- 进入指令，02- 离开指令，03- 拥堵状态指令(为03时，只有byLaneState和byQueueLen有效)，04-多线圈状态（为04时，wLoopState和wStateMask有效，表示byLane车道上多个线圈的过车状态），05-转向状态（NET_DVR_TPS_ADDINFO中struTurnDirection字段有效），06-停止线信息（NET_DVR_TPS_ADDINFO中struStopLine字段有效）
wSpaceHeadway
车头间距，以米来计算
wDeviceID
设备ID
wDataLen
数据长度(串口信息)
byLane
对应车道号
bySpeed
对应车速，单位：Km/h
byLaneState
车道状态：0- 无状态，1- 畅通，2- 拥挤，3- 堵塞
byQueueLen
堵塞状态下排队长度，单位：米，比如50米
wLoopState
线圈状态，第几位表示几号线圈状态， 线圈编号从镜头由近到远依次增大。状态1-到达， 0-离开，线圈编号从镜头由近到远依次增大，用户在解析时优先解析车道号，再解析线圈号，单个车道的线圈号是唯一的。
wStateMask
线圈状态掩码， 掩码位为1对应wLoopState状态位有效，为0表示无效。
dwDownwordFlow
当前车道 从上到下车流量
dwUpwordFlow
当前车道从下到上车流量
byJamLevel
拥堵等级， 当byLaneState为3时有效，1-轻度，2-中度，3-重度。
byVehicleDirection
0-未知，1-由上而下，2-由下而上
byJamFlow
拥堵新增流量，每新增一辆车就上报一次累计车辆的信息
byChannelizationLane
渠化车道号（渠化表示，车道数量变化的情况，一般为路口车道的数目）
byVehicleType
车型识别：0- 未知，1- 客车(大型)，2- 货车(大型)，3- 轿车(小型)，4- 非机动车（byChannelizationLane、byVehicleType字段仅TPS应用模式参数配置中virtualRegionMode为3多线圈协议时支持）
byRes1
保留
wTimeHeadway
车头时距，以秒计算

See Also

NET_DVR_TPS_REAL_TIME_INFO


NET_DVR_TPS_REAL_TIME_INFO

TPS实时过车数据信息结构体。

struct{
  DWORD                dwSize;
  DWORD                dwChan;
  NET_DVR_TIME_V30     struTime;
  NET_DVR_TPS_PARAM    struTPSRealTimeInfo;
 #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64及linux64下指针为8字节
  BYTE*                *pAddInfoBuffer;
 #else
  BYTE*                *pAddInfoBuffer;
  BYTE                 byRes2[4];
 #endif
  BYTE                 byAddInfoFlag;
  BYTE                 byRes1[3];
  DWORD                dwDeviceIDEx;
  BYTE                 byRes[8];
}NET_DVR_TPS_REAL_TIME_INFO, *LPNET_DVR_TPS_REAL_TIME_INFO;

Members

dwSize
结构体大小
dwChan
通道号
struTime
检测时间
struTPSRealTimeInfo
交通参数实时信息
*pAddInfoBuffer
附加信息指针,指向NET_DVR_TPS_ADDINFO结构体
byRes2
保留
byAddInfoFlag
附加信息标识（即是否有NET_DVR_TPS_ADDINFO结构体）,0-无附加信息, 1-有附加信息。
byRes1
保留
dwDeviceIDEx
设备ID扩展
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_TPS_RULECFG

车道统计参数信息结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_ONE_TPS_RULE    struOneTpsRule[MAX_TPS_RULE];
  BYTE                    byRes2[40];
}NET_DVR_TPS_RULECFG, *LPNET_DVR_TPS_RULECFG;

Members

dwSize
结构体大小
struOneTpsRule
单条交通参数统计规则参数，下标对应交通参数ID
struOneTpsRule
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TPS_RULECFG_V41

车道统计参数信息结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_ONE_TPS_RULE_V41    struOneTpsRule[MAX_TPS_RULE];
  BYTE                        byRes[128];
}NET_DVR_TPS_RULECFG_V41, *LPNET_DVR_TPS_RULECFG_V41;

Members

dwSize
结构体大小
struOneTpsRule
单条交通参数统计规则参数，下标对应交通参数ID
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_TPS_STATISTICS_INFO

TPS统计过车数据信息结构体。

struct{
  DWORD                           dwSize;
  DWORD                           dwChan;
  NET_DVR_TPS_STATISTICS_PARAM    struTPSStatisticsInfo;
  DWORD                           dwJsonLen;
 #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64及linux64下指针为8字节
  BYTE*            		  pJsonBuf;
 #else
  BYTE*            		  pJsonBuf;
  BYTE             		  byRes2[4];
 #endif
  BYTE                            byJsonInfoFlag;
  BYTE                            byRes[115];

}NET_DVR_TPS_STATISTICS_INFO, *LPNET_DVR_TPS_STATISTICS_INFO;

Members

dwSize
结构体大小
dwChan
通道号
struTPSStatisticsInfo
交通参数统计信息
struTPSStatisticsInfo
Json报警信息长度
pJsonBuf
Json报警信息指针,其JSON对应到EventNotificationAlert Json Block
byRes2
保留
byJsonInfoFlag
是否有Json透传数据，0-无，1-有（dwJsonLen、pJsonBuf、byJsonInfoFlag字段仅TPS应用模式参数配置中virtualRegionMode为3多线圈协议时支持）
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_TPS_STATISTICS_PARAM

TPS交通统计信息结构体。

struct{
  BYTE                      byStart;
  BYTE                      byCMD;
  BYTE                      byRes[2];
  WORD                      wDeviceID;
  WORD                      wDataLen;
  BYTE                      byTotalLaneNum;
  BYTE                      byRes2[3];
  DWORD                      dwDeviceIDEx;
  BYTE                      byRes1[8];
  NET_DVR_TIME_V30          struStartTime;
  DWORD                     dwSamplePeriod;
  NET_DVR_TPS_LANE_PARAM    struLaneParam[MAX_TPS_RULE];
}NET_DVR_TPS_STATISTICS_PARAM, *LPNET_DVR_TPS_STATISTICS_PARAM;

Members

byStart
开始码(串口命令)
byCMD
命令号：01- 进入指令，02- 离开指令，03- 拥堵状态指令(为03时，只有byLaneState和byQueueLen有效)
byRes
保留
wDeviceID
设备ID
wDataLen
数据长度(串口信息)
byTotalLaneNum
有效车道总数
byRes2
保留
dwDeviceIDEx
设备ID扩展
byRes1
保留
struStartTime
统计开始时间
dwSamplePeriod
统计时间，单位：秒
struLaneParam
每个车道TPS统计信息

See Also

NET_DVR_TPS_STATISTICS_INFO


NET_DVR_TRACK_CALIBRATION_PARAM

标定参数结构体。

struct{
  BYTE                    byPointNum;
  BYTE                    byRes[3];
  NET_DVR_CB_POINT        struCBPoint[MAX_CALIB_PT];
}NET_DVR_TRACK_CALIBRATION_PARAM, *LPNET_DVR_TRACK_CALIBRATION_PARAM;

Members

byPointNum
有效标定点个数
byRes
保留
struCBPoint
标定点参数

See Also

NET_DVR_TRACK_CFG


NET_DVR_TRACK_CALIBRATION_PARAM_V41

标定参数结构体。

struct{
  BYTE                byPointNum;
  BYTE                byRes[3];
  NET_DVR_CB_POINT    struCBPoint[MAX_CALIB_PT];
  NET_DVR_PTZPOS      struHorizonPtzPos;
  BYTE                byRes2[256];
}NET_DVR_TRACK_CALIBRATION_PARAM_V41, *LPNET_DVR_TRACK_CALIBRATION_PARAM_V41;

Members

byPointNum
有效标定点个数
byRes
保留，置为0
struCBPoint
标定点组
struHorizonPtzPos
球机水平线PTZ坐标
byRes2
保留，置为0

See Also

NET_DVR_TRACK_DEV_PARAM


NET_DVR_TRACK_CFG

双摄像机配置参数结构体。

struct{
  DWORD                              dwSize;
  BYTE                               byEnable;
  BYTE                               byFollowChan;
  BYTE                               byDomeCalibrate;
  BYTE                               byRes;
  NET_DVR_TRACK_CALIBRATION_PARAM    struCalParam;
}NET_DVR_TRACK_CFG, *LPNET_DVR_TRACK_CFG;

Members

dwSize
结构体大小
byEnable
标定使能，是否使从通道球机有效，0-从通道球机无效，1-从通道球机有效
byFollowChan
被控制的从通道的通道号
byDomeCalibrate
是否设置智能跟踪球机标定：0-否，1-是
byRes
保留
struCalParam
标定参数配置

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TRACK_DEV_PARAM

跟踪设备参数结构。

struct{
  DWORD                                  dwSize;
  BYTE                                   byEnable;
  BYTE                                   byTransMode;
  BYTE                                   byRes1[2];
  NET_DVR_CHANNEL                        struTrackDevChan;
  NET_DVR_TRACK_CALIBRATION_PARAM_V41    struCalParam;
  BYTE                                   byRes2[256];
}NET_DVR_TRACK_DEV_PARAM, *LPNET_DVR_TRACK_DEV_PARAM;

Members

dwSize
结构体大小
byEnable
是否启用此跟踪设备：0-不启用，1-启用
byTransMode
通讯方式：0-网络SDK，1-485串口
byRes1
保留，置为0
struTrackDevChan
联动跟踪设备参数
struCalParam
跟踪设备标定参数
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TRACK_INITPOSTION

从摄像机初始跟踪位置控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byID;
  BYTE     byRes[127];
}NET_DVR_TRACK_INITPOSTION,*LPNET_DVR_TRACK_INITPOSTION;

Members

dwSize
结构体大小
dwChannel
通道号
byID
主从跟踪的从摄像机ID编号，取值范围：[1,4]
byRes
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，相关配置是需要先登录主摄像机，然后设置从摄像机初始跟踪位置，智能球在跟踪目标结束后将返回该初始位置。
  • 设备是否支持从摄像机初始跟踪位置设置或者支持的参数能力，可以通过设备能力集进行判断，对应PTZ球机控制能力集(PTZChanelCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_PTZ_CAPABILITIES，节点：<TrackInitPosition>。

See Also

NET_DVR_STDControl


NET_DVR_TRACK_MODE

双摄像机跟踪模式配置参数结构体。

struct{
  DWORD      dwSize;
  BYTE       byTrackMode;
  BYTE       byRuleConfMode;
  BYTE       byRes[2];
  union{
        DWORD                        dwULen[4];
        NET_DVR_MANUAL_CTRL_INFO     struManualCtrl;
       }uModeParam;
}NET_DVR_TRACK_MODE,*LPNET_DVR_TRACK_MODE;

Members

dwSize
结构体大小
byTrackMode
跟踪模式，其定义如下：
enum _TRACK_MODE_{
 MANUAL_CTRL = 0,
 ALARM_TRACK,
}TRACK_MODE
MANUAL_CTRL
手动跟踪
ALARM_TRACK
报警触发跟踪
byRuleConfMode
规则配置跟踪模式：0-本地配置跟踪；1-远程配置跟踪
byRes
保留
dwULen
联合体的长度
struManualCtrl
手动跟踪结构参数

See Also

NET_DVR_GetTrackMode NET_DVR_SetTrackMode


NET_DVR_TRACK_PARAMCFG

球机本地菜单规则参数结构体。

struct{
  BYTE     dwSize;
  WORD     wAlarmDelayTime;
  WORD     wTrackHoldTime;
  BYTE     byTrackMode;
  BYTE     byPreDirection;
  BYTE     byTrackSmooth;
  BYTE     byZoomAdjust;
  BYTE     byMaxTrackZoom;
  BYTE     byStopTrackWhenFindFace;
  BYTE     byStopTrackThreshold;
  BYTE     byRes[9];
}NET_DVR_TRACK_PARAMCFG, *LPNET_DVR_TRACK_PARAMCFG;

Members

dwSize
结构体大小
wAlarmDelayTime
报警延时时间，单位：秒，范围[1,120]
wTrackHoldTime
报警跟踪持续时间，单位：秒，范围[0,300]
byTrackMode
本地跟踪类型，具体定义如下：
enum _IPDOME_TRACK_MODE_{
  NO_TRACK = 0,
  PAMORAMA_TRACK,
  PATROL_TRACK
}IPDOME_TRACK_MODE
NO_TRACK
不启用本地跟踪
PAMORAMA_TRACK
全景跟踪
PATROL_TRACK
巡航跟踪
byPreDirection
跟踪方向预判：0-不启用，1-启用
byTrackSmooth
跟踪连续：0-不启用，1-启用
byZoomAdjust
倍率系数调整
byMaxTrackZoom
最大跟踪倍率系数，具体定义如下：
等级 | 倍率
0（关） | 标定值
1 | 标定值*0.5
2 | 标定值*0.65
3 | 标定值*0.75
4 | 标定值*0.9
5 | 标定值*1.1
6 | 标定值*1.2
7 | 标定值*1.3
byStopTrackWhenFindFace
检测到目标后是否停止跟踪：0- 否，1- 是
byStopTrackThreshold
跟踪终止评分阈值
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TRACK_TARGET_INFO

双摄像机目标跟踪参数结构体。

struct{
  DWORD      dwTargetID;
  BYTE       byRes[8];
}NET_DVR_TRACK_TARGET_INFO,*LPNET_DVR_TRACK_TARGET_INFO;

Members

dwTargetID
跟踪目标的ID
byRes
保留


NET_DVR_TRACKING

主从跟踪功能相机跟踪配置结构体。

struct{
  DWORD              dwSize;
  BYTE               byEnable;
  BYTE               byMode;
  WORD               wTrackingTime;
  NET_VCA_POLYGON    struRegion;
  BYTE               byRes[64];
}NET_DVR_TRACKING,*LPNET_DVR_TRACKING;

Members

dwSize
结构体大小
byEnable
是否启用跟踪：0- 关闭，1- 启用
byMode
跟踪模式：0- 关闭，1- 手动，2- 自动
wTrackingTime
跟踪时间，取值范围：[0,60]，单位：s
struRegion
手动跟踪目标区域范围
byRes
保留，置为0

Remarks

  • 枪机作为主摄像机，球机作为从摄像机，登录主摄像机配置跟踪参数。
  • 设备是否支持跟踪配置或者支持的参数能力，可以通过设备能力集进行判断，对应跟踪配置能力集(Tracking)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_TRACKING_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_TRADEINFO

ATM DVR上传的交易信息结构体。

struct{
  USHORT    m_Year;
  USHORT    m_Month;
  USHORT    m_Day;
  USHORT    m_Hour;
  USHORT    m_Minute;
  USHORT    m_Second;
  BYTE      DeviceName[24];
  DWORD     dwChannelNumer;
  BYTE      CardNumber[32];
  char      cTradeType[12];
  DWORD     dwCash;
}NET_DVR_TRADEINFO, *LPNET_DVR_TRADEINFO;

Members

m_Year
交易时间：年
m_Month
交易时间：月
m_Day
交易时间：日
m_Hour
交易时间：时
m_Minute
交易时间：分
m_Second
交易时间：秒
DeviceName
设备名称
dwChannelNumer
通道号
CardNumber
卡号
cTradeType
交易类型
dwCash
交易金额

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_TRAFFIC_DATA_QUERY_COND

交通数据查询条件结构体。

struct{
  DWORD               dwSize;
  DWORD               dwQueryCond;
  DWORD               dwChannel;
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struEndTime;
  char                sLicense[MAX_LICENSE_LEN];
  DWORD               dwPlateType;
  DWORD               dwPlateColor;
  DWORD               dwVehicleColor;
  DWORD               dwVehicleType;
  DWORD               dwIllegalType;
  DWORD               dwEventType;
  DWORD               dwForensiceType;
  WORD                wVehicleLogoRecog;
  BYTE                byLaneNo;
  BYTE                byDirection;
  WORD                wMinSpeed;
  WORD                wMaxSpeed;
  BYTE                byDataType;
  BYTE                byExecuteCtrl;
  BYTE                byRes[254];
}NET_DVR_TRAFFIC_DATA_QUERY_COND,*LPNET_DVR_TRAFFIC_DATA_QUERY_COND;

Members

dwSize
结构体大小
dwQueryCond
查询条件，按位表示，取值：0- 无效，1- 有效，定义如下所示：
bit0- 通道，bit1- 时间，bit2- 车牌号，bit3- 车牌类型，bit4- 车牌颜色，bit5- 车身颜色，bit6- 车辆类型，bit7- 车辆品牌，bit8- 车道号，bit9- 监测方向，bit10- 最低速度，bit11- 最高速度，bit12- 数据类型，bit13- 布防方式类型，bit14- 违法取证，bit15- 事件类型，bit16- 取证类型
dwChannel
查询通道，按位表示，bit0表示数字通道01（通道号33），bit1表示数字通道02（通道号34），依次类推，取值：0- 无效，1- 有效
例如：
dwChannel&0x1==1表示查询数字通道01
dwChannel&0x8==1表示查询数字通道04
struStartTime
开始时间
struEndTime
结束时间
sLicense
车牌号码，支持模糊查询（通配符是“*”），GB2312编码
dwPlateType
车牌类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 未知（其他），bit1- 标准民用车与军车，bit2- 02式民用车牌，bit3- 武警车，bit4- 警车，bit5- 民用车双行尾牌，bit6- 使馆车牌，bit7- 农用车，bit8- 摩托车
dwPlateColor
车牌颜色，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 未知（其他），bit1- 黄色，bit2- 白色，bit3- 黑色，bit4- 绿色，bit5- 蓝色
dwVehicleColor
车身颜色，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 未知（其他），bit1- 白色，bit2- 银色，bit3- 灰色，bit4- 黑色，bit5- 红色，bit6- 深蓝色，bit7- 蓝色，bit8- 黄色，bit9- 绿色，bit10- 棕色，bit11- 粉色，bit12- 紫色，bit13- 深灰色
dwVehicleType
车辆类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
Bit0- 未知（其他），Bit1- 客车，Bit2- 大货车，Bit3- 轿车，Bit4- 面包车，Bit5- 小货车，Bit6- 行人，Bit7- 二轮车，Bit8- 三轮车，Bit9- SUV/MPV，Bit10- 中型客车
dwIllegalType
违法类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 其他（保留），bit1- 低速，bit2- 超速，bit3- 逆行，bit4- 闯红灯，bit5- 压车道线，bit6- 不按导向，bit7- 路口滞留，bit8- 机占非，bit9- 违法变道，bit10- 不按车道，bit11- 违反禁令，bit12- 路口停车，bit13- 绿灯停车，bit14- 未礼让行人，bit15- 违章停车，bit16- 违章掉头，bit17- 占用应急车道，bit18- 未系安全带
dwEventType
事件类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 其他（保留），bit1- 拥堵，bit2- 停车，bit3- 逆行，bit4- 行人，bit5- 抛洒物，bit6- 烟雾，bit7- 压线，bit8- 非授权名单，bit9- 超速，bit10- 变道，bit11- 掉头，bit12- 机占非，bit13- 加塞
dwForensiceType
取证类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 其他（保留），bit1- 城市公路违法停车，bit2- 高速公路违法停车，bit3- 压线，bit4- 逆行，bit5- 违法变道，bit6- 机占非
wVehicleLogoRecog
车辆主品牌（单选）
byLaneNo
车道号（0~255，0表示车道号未知）
byDirection
监测方向：1- 上行，2- 下行，3- 双向，4- 由东向西，5- 由南向北,6- 由西向东，7- 由北向南
wMinSpeed
最低速度，取值范围：0~999，单位：km/h
wMaxSpeed
最高速度，取值范围：0~999，单位：km/h
byDataType
数据类型（单选）：0- 卡口数据，1- 违法数据，2- 交通事件，3- 取证数据
byExecuteCtrl
布防：0- 授权名单，1- 非授权名单，0xff- 其他
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_TRAFFIC_DATA_QUERY_RESULT

交通数据查询结果结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwChannel;
  char                             sLicense[MAX_LICENSE_LEN];
  DWORD                            dwPlateType;
  DWORD                            dwPlateColor;
  DWORD                            dwVehicleColor;
  DWORD                            dwVehicleType;
  DWORD                            dwIllegalType;
  DWORD                            dwEventType;
  DWORD                            dwForensiceType;
  WORD                             wVehicleLogoRecog;
  BYTE                             byLaneNo;
  BYTE                             byDirection;
  WORD                             wSpeed;
  BYTE                             byDataType;
  BYTE                             byRes[253];
  NET_DVR_TRAFFIC_PICTURE_PARAM    struTrafficPic[MAX_TRAFFIC_PICTURE_NUM];
}NET_DVR_TRAFFIC_DATA_QUERY_RESULT,*LPNET_DVR_TRAFFIC_DATA_QUERY_RESULT;

Members

dwSize
结构体大小
dwChannel
查询通道，按位表示，bit0表示数字通道01（通道号33），bit1表示数字通道02（通道号34），依次类推，取值：0- 无效，1- 有效
例如：
dwChannel&0x1==1表示数字通道01的查询结果
dwChannel&0x8==1表示数字通道04的查询结果
sLicense
车牌号码，GB2312编码
dwPlateType
车牌类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 未知（其他），bit1- 标准民用车与军车，bit2- 02式民用车牌，bit3- 武警车，bit4- 警车，bit5- 民用车双行尾牌，bit6- 使馆车牌，bit7- 农用车，bit8- 摩托车
dwPlateColor
车牌颜色，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 未知（其他），bit1- 黄色，bit2- 白色，bit3- 黑色，bit4- 绿色，bit5- 蓝色
dwVehicleColor
车身颜色，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 未知（其他），bit1- 白色，bit2- 银色，bit3- 灰色，bit4- 黑色，bit5- 红色，bit6- 深蓝色，bit7- 蓝色，bit8- 黄色，bit9- 绿色，bit10- 棕色，bit11- 粉色，bit12- 紫色，bit13- 深灰色
dwVehicleType
车辆类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
Bit0- 未知（其他），Bit1- 客车，Bit2- 大货车，Bit3- 轿车，Bit4- 面包车，Bit5- 小货车，Bit6- 行人，Bit7- 二轮车，Bit8- 三轮车，Bit9- SUV/MPV，Bit10- 中型客车
dwIllegalType
违法类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 其他（保留），bit1- 低速，bit2- 超速，bit3- 逆行，bit4- 闯红灯，bit5- 压车道线，bit6- 不按导向，bit7- 路口滞留，bit8- 机占非，bit9- 违法变道，bit10- 不按车道，bit11- 违反禁令，bit12- 路口停车，bit13- 绿灯停车，bit14- 未礼让行人，bit15- 违章停车，bit16- 违章掉头，bit17- 占用应急车道，bit18- 未系安全带
dwEventType
事件类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 其他（保留），bit1- 拥堵，bit2- 停车，bit3- 逆行，bit4- 行人，bit5- 抛洒物，bit6- 烟雾，bit7- 压线，bit8- 非授权名单，bit9- 超速，bit10- 变道，bit11- 掉头，bit12- 机占非，bit13- 加塞
dwForensiceType
事件类型，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 其他（保留），bit1- 城市公路违法停车，bit2- 高速公路违法停车，bit3- 压线，bit4- 逆行，bit5- 违法变道，bit6- 机占非
wVehicleLogoRecog
车辆主品牌
byLaneNo
车道号（0~255，0表示车道号未知）
byDirection
监测方向：1- 上行，2- 下行，3- 双向，4- 由东向西，5- 由南向北,6- 由西向东，7- 由北向南
wSpeed
速度，取值范围：0~999，单位：km/h
byDataType
数据类型：0- 卡口数据，1- 违法数据，2- 交通事件，3- 取证数据
byRes
保留，置为0
struTrafficPic
交通图片参数

See Also

NET_DVR_StartRemoteConfig


NET_DVR_TRAFFIC_FLOW_QUERY_COND

交通流量查询条件结构体。

struct{
  DWORD               dwSize;
  DWORD               dwQueryCond;
  DWORD               dwChannel;
  DWORD               dwResChan[10];
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struEndTime;
  BYTE                byLaneNo;
  BYTE                byRes[255];
}NET_DVR_TRAFFIC_FLOW_QUERY_COND,*LPNET_DVR_TRAFFIC_FLOW_QUERY_COND;

Members

dwSize
结构体大小
dwQueryCond
查询条件，按位表示，支持复选，取值：0- 无效，1- 有效，定义如下所示：
bit0- 通道，bit1- 时间，bit2- 车道号
dwChannel
查询通道，按位表示，bit0表示数字通道01（通道号33），bit1表示数字通道02（通道号34），依次类推，取值：0- 无效，1- 有效
例如：
dwChannel&0x1==1表示查询数字通道01
dwChannel&0x8==1表示查询数字通道04
dwResChan
预留可扩展的通道号
struStartTime
开始时间
struEndTime
结束时间
byLaneNo
车道号（0~255，0表示车道号未知）
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_TRAFFIC_FLOW_QUERY_RESULT

交通流量查询结果结构体。

struct{
  DWORD               dwSize;
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struEndTime;
  DWORD               dwChannel;
  DWORD               dwFlow;
  BYTE                byLaneNo;
  BYTE                byRes[511];
}NET_DVR_TRAFFIC_FLOW_QUERY_RESULT,*LPNET_DVR_TRAFFIC_FLOW_QUERY_RESULT;

Members

dwSize
结构体大小
struStartTime
开始时间
struEndTime
结束时间
dwChannel
查询通道，按位表示，bit0表示数字通道01（通道号33），bit1表示数字通道02（通道号34），依次类推，取值：0- 无效，1- 有效
例如：
dwChannel&0x1==1表示数字通道01的查询结果
dwChannel&0x8==1表示数字通道04的查询结果
dwFlow
车流量
byLaneNo
车道号（0~255，0表示车道号未知）
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_TRAFFIC_PICTURE_PARAM

交通图片参数结构体。

struct{
  NET_DVR_TIME_V30    struRelativeTime;
  NET_DVR_TIME_V30    struAbsTime;
  char                szPicName[PICTURE_NAME_LEN];
  BYTE                byPicType;
  BYTE                byRes[63];
}NET_DVR_TRAFFIC_PICTURE_PARAM,*LPNET_DVR_TRAFFIC_PICTURE_PARAM;

Members

struRelativeTime
抓拍相对时标
struAbsTime
抓拍绝对时标
szPicName
图片名称
byPicType
图片类型：0- 车牌图，1- 抓拍原图，2- 合成图，3- 特写图
byRes
保留，置为0

Remarks

查找到图片名称之后通过接口NET_DVR_GetPicture_V30进行下载。

See Also

NET_DVR_TRAFFIC_DATA_QUERY_RESULT


NET_DVR_TRANSDEVICE_STATUS

转码器状态信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTotalResource;
  DWORD    dwIdleResource;
  BYTE     byCpuLoad;
  BYTE     byRes[67];
}NET_DVR_TRANSDEVICE_STATUS, *LPNET_DVR_TRANSDEVICE_STATUS;

Members

dwSize
结构体大小
dwTotalResource
全部转码资源，以D1为单位计算
dwIdleResource
剩余转码资源，以D1为单位计算
byCpuLoad
CPU利用率
byRes
保留

See Also

NET_DVR_GetDeviceStatus


NET_DVR_TRANSSTATUS

转码状态信息结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  BYTE                   byMode;
  BYTE                   byLinkNums;
  BYTE                   byPassiveTransMode;
  BYTE                   byRes;
  NET_DVR_IPADDR         struDstIPInfo[MAX_LINK];
  BYTE                   byTransResource;
  BYTE                   byRes1[15];
  NET_DVR_ENCODEINFO     struSrcEncodeInfo;
  NET_DVR_ENCODEINFO     struDstEncodeInfo[MAX_LINK];
  BYTE                   byRes2[36];
}NET_DVR_TRANSSTATUS, *LPNET_DVR_TRANSSTATUS;

Members

dwSize
结构体大小
struStreamInfo
流ID、转码通道信息
byMode
转码模式：1-主动转码，2-被动转码
byLinkNums
连接数
byPassiveTransMode
被动转码模式：0- 无效，1- 实时流，2- 文件流
byRes
保留
byLinkNums
连接数
struDstIPInfo
目标转码IP地址
byTransResource
所使用的转码资源数，按D1计算
byRes1
保留
struSrcEncodeInfo
源编码信息
struDstEncodeInfo
目标编码信息
byRes2
保留

See Also

NET_DVR_GetDeviceStatus


NET_DVR_TRAVERSE_PLANE_SEARCHCOND

越界侦测录像查找条件参数结构体。

struct{
  NET_VCA_TRAVERSE_PLANE        struVcaTraversePlane[MAX_ALERTLINE_NUM];
  DWORD                         dwPreTime;
  DWORD                         dwDelayTime;
  NET_DVR_PTZPOS_INFO           struPTZPosInfo;
  BYTE                          byAdvanceType;
  BYTE                          byRes1[3];
  NET_DVR_ADVANCE_COND_UNION    uAdvanceCond;
  BYTE                          byRes[5604];
}NET_DVR_TRAVERSE_PLANE_SEARCHCOND,*LPNET_DVR_TRAVERSE_PLANE_SEARCHCOND;

Members

struVcaTraversePlane
穿越警戒面参数
dwPreTime
智能报警提前时间，单位：秒
dwDelayTime
智能报警延迟时间，单位：秒
struPTZPosInfo
PTZ坐标信息
byAdvanceType
组合方式：0- 不使用组号，1- 和人体属性组合，2- 与物体颜色占比组合
byRes1
保留，置为0
uAdvanceCond
组合属性
byRes
保留，置为0

See Also

NET_DVR_AREA_SMARTSEARCH_COND_UNION


NET_DVR_TRIAL_HOST_STATUS

庭审主机状态信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwFanSpeed[FAN_NUM];
  WORD     wTemp[MAIN_BOARD];
  BYTE     byTempWarn[FPGA_NUM];
  BYTE     byRes[32];
}NET_DVR_TRIAL_HOST_STATUS,*LPNET_DVR_TRIAL_HOST_STATUS;

Members

dwSize
结构体大小
dwFanSpeed
风扇转速，单位：RPM，具体和FPGA温度有关： FPGA温度40°及以下，风扇不转
FPGA温度40°至50°(包含)，转速为1000~2000转(RPM)
FPGA温度50°至60°(包含)，转速为2000~3000转(RPM)
FPGA温度60°至70°(包含)，转速为3000~4000转(RPM)
FPGA温度70°以上，转速为4000转（全速）
wTemp
数组值表示温度，数组[0]表示主板温度，数组[1]表示FPGA温度
byTempWarn
报警状态
数组[0]表示主板温度（暂无报警状态）
数组[1]表示FPGA温度报警状态：0- 处于无报警状态，1- 处于报警状态
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_TRIAL_MICROPHONE_STATUS

庭审主机系统信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byMicrophoneStatus[MICROPHONE_NUM];
  BYTE     byRes[32];
}NET_DVR_TRIAL_MICROPHONE_STATUS,*LPNET_DVR_TRIAL_MICROPHONE_STATUS;

Members

dwSize
结构体大小
byMicrophoneStatus
麦克风状态下标表示麦克风号，值：0- 不供电，1- 供电
例如：byMicrophoneStatus[i]==1表示麦克风No.(i+1)正常供电
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TRIAL_SYSTEM_INFO

庭审主机系统信息结构体。

struct{
  DWORD                        dwSize;
  BYTE                         byVideoInTypeNum ;
  BYTE                         byRes1[3];
  NET_DVR_VIDEOIN_TYPE_INFO    struVideoIn[MAX_VIDEOIN_TYPE_NUM];
  BYTE                         byRes[512];
}NET_DVR_TRIAL_SYSTEM_INFO,*LPNET_DVR_TRIAL_SYSTEM_INFO;

Members

dwSize
结构体大小
byVideoInTypeNum
视频输入源类型个数
byRes1
保留，置为0
struVideoIn
视频输入源
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_DVR_TRIAL_VERSION_CFG

试用版信息结构体。

struct{
  DWORD    dwSize;
  WORD     wReserveTime;
  BYTE     byRes[62];
}NET_DVR_TRIAL_VERSION_CFG, *LPNET_DVR_TRIAL_VERSION_CFG;

Members

dwSize
结构体大小
wReserveTime
试用期剩余时间，0xffff表示无效，单位：天
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TRIGCOORDINATE

智能交通摄像机线圈位置配置参数结构体。

struct{
  WORD      wTopLeftX;
  WORD      wTopLeftY;
  WORD      wWdith;
  WORD      wHeight;
}NET_DVR_TRIGCOORDINATE, *LPNET_DVR_TRIGCOORDINATE;

Members

wTopLeftX
线圈左上角横坐标（2个字节），默认为160
wTopLeftY
线圈左上角纵坐标（2个字节），默认为210
wWdith
线圈宽度（2个字节），默认为1000
wHeight
线圈高度（2个字节），默认为45

See Also

NET_DVR_VTPARAM


NET_DVR_TRIGGER_COND

触发模式配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwtriggerMode;
  BYTE     byDetSceneID;
  BYTE     byRes[63];
}NET_DVR_TRIGGER_COND,*LPNET_DVR_TRIGGER_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwTriggerMode
触发模式，按位表示，定义详见ITC_TRIGGERMODE_TYPE
byDetSceneID
检测场景号，0表示无效，其他取值：[1,4]
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_TRIGGER_EVENT

事件触发触发器参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwOverallEventTriggerAlarmoutOn;
  DWORD    dwOverallEventTriggerAlarmoutOff;
  DWORD    dwSubSystemEventTriggerAlarmoutOn[MAX_ALARMHOST_SUBSYSTEM];
  DWORD    dwSubSystemEventTriggerAlarmoutOff[MAX_ALARMHOST_SUBSYSTEM];
  BYTE     byRes[128];
}NET_DVR_TRIGGER_EVENT, *LPNET_DVR_TRIGGER_EVENT;

Members

dwSize
结构体大小
dwOverallEventTriggerAlarmoutOn
全局事件触发触发器开启，按位或，bit0-交流电掉电，bit1-电池电压低，bit2-电话线掉线，bit3-有线网络异常，bit4-无线网络异常，bit5-硬盘故障, bit6-3G/4G信号异常, bit7-（模块链接）第三方主机掉线
dwOverallEventTriggerAlarmoutOff
全局事件触发触发器关闭，按位或，bit0-交流电掉电，bit1-电池电压低，bit2-电话线掉线，bit3-有线网络异常，bit4-无线网络异常，bit5-硬盘故障, bit6-3G/4G信号异常, bit7-（模块链接）第三方主机掉线
dwSubSystemEventTriggerAlarmoutOn
子系统事件触发触发器开启，dwSubSystemEventTriggerAlarmoutOn[0]表示子系统1，dwSubSystemEventTriggerAlarmoutOn[1]表示子系统2，依次类推，具体的子系统个数从能力集获取（wSubSystemNum）。每个子系统的事件按位表示，bit0-进入延时，bit1-退出延时，bit2-布防，bit3-撤防，bit4-报警，bit5-消除报警记忆，bit6-报警恢复，bit7-防区防拆，bit8-防区防拆恢复
dwSubSystemEventTriggerAlarmoutOff
子系统事件触发触发器关闭，dwSubSystemEventTriggerAlarmoutOff[0]表示子系统1，dwSubSystemEventTriggerAlarmoutOff[1]表示子系统2，依次类推，具体的子系统个数从能力集获取（wSubSystemNum）。每个子系统的事件按位表示，bit0-进入延时，bit1-退出延时，bit2-布防，bit3-撤防，bit4-报警，bit5-消除报警记忆，bit6-报警恢复，bit7-防区防拆，bit8-防区防拆恢复
byRes
保留

Remarks

  • 是否支持事件触发触发器，请参见能力集NET_DVR_ALARMHOST_ABILITY中参数dwSupport1的bit1和bit2。
  • 设备所支持的事件类型从能力集获取，事件触发触发器开启和事件触发触发器关闭为互斥，不能将开启和关闭选为同一个事件。
  • 事件触发触发器和事件触发防区中不能包含同一个事件，例如，“全局事件触发触发器开启”中选择了交流电断电这个事件，那么“全局事件触发触发器关闭”中就不能再选择交流电断电事件。否则配置失败。
  • DS-19Axx和DS-19Sxx系列主机，子系统处于布防状态、主机处于编程模式或者主机处于步测模式下，不支持设置这些参数。
  • 全局事件：bit0-交流电掉电，bit1-电池电压低，bit2-电话线掉线，bit3-有线网络异常，bit4-无线网络异常，bit5-硬盘故障, bit6-3G/4G信号异常, bit7-（模块链接）第三方主机掉线，bit8- WIFI通信故障，bit9-RF信号干扰故障
  • 子系统事件：bit0-进入延时，bit1-退出延时，bit2-布防，bit3-撤防，bit4-报警，bit5-消除报警记忆，bit6-报警恢复，bit7-防区防拆，bit8-防区防拆恢复

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_TURN_DIRECTION_PARAM

转向流量信息结构体。

struct{
  BYTE                  byLine ;
  BYTE                  byStatus;
  BYTE                  byRes[39] ;
}NET_DVR_TURN_DIRECTION_PARAM,*LPNET_DVR_TURN_DIRECTION_PARAM;

Members

byLine
转向线编号
byStatus
转向线状态，0-未知，1-进入，2-离开
byRes
保留，置为0


NET_DVR_TV_SCREEN_CFG

导播画面停留时间配置结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwPicStayTime;
  BYTE                             byRes[256];
}NET_DVR_TV_SCREEN_CFG, *LPNET_DVR_TV_SCREEN_CFG;

Members

dwSize
结构体大小
dwPicStayTime
画面停留时间 （0~255s）
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_TV_SCREEN_COND

导播画面停留时间配置结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwChannel;
  WORD                            wTVScreenNo;
  BYTE                             byRes[62];
}NET_DVR_TV_SCREEN_COND, *LPNET_DVR_TV_SCREEN_COND;

Members

dwSize
结构体大小
dwChannel
通道号（无效）
wTVScreenNo
导播屏编号， 0-：全部导播屏；1：-一画面；2-：二画面；3-：三画面
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig


NET_DVR_UNATTENDED_BAGGAGE_DETECTION

物品遗留侦测配置结构体。

struct{
  DWORD                                dwSize;
  BYTE                                 byEnabled;
  BYTE                                 byRes1[3];
  NET_DVR_UNATTENDED_BAGGAGE_REGION    struRegion[MAX_REGION_NUM];
  BYTE                                 byRes2[128];
}NET_DVR_UNATTENDED_BAGGAGE_DETECTION,*LPNET_DVR_UNATTENDED_BAGGAGE_DETECTION;

Members

dwSize
结构体大小
byEnabled
是否使能：0- 否，1- 是
byRes1
保留
struRegion
物品遗留侦测区域
byRes2
保留

Remarks

  • 该配置功能对应物品遗留侦测能力集(UnattendedBaggage)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_UNATTENDED_BAGGAGE_CAPABILITIES)。
  • 该配置里的区域参数结构体(struRegion)里所有参数赋值为0时表示清除该区域，如若有不为0的参数时设置struRegion无效（即设置不会修改其区域信息）。物品遗留侦测的区域参数通过NET_DVR_SET_UNATTENDED_BAGGAGE_REGION命令进行配置，每一个区域单独设置。

    • See Also

    NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_UNATTENDED_BAGGAGE_REGION

物品遗留区域配置结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byTimeThreshold;
  WORD               wTimeThreshold;
  BYTE               byTimeThresholdMode;
  BYTE               byRes[59];
}NET_DVR_UNATTENDED_BAGGAGE_REGION,*LPNET_DVR_UNATTENDED_BAGGAGE_REGION;

Members

struRegion
物品遗留区域范围
bySensitivity
灵敏度参数，取值范围：[1,100]
byTimeThreshold
时间阈值（byTimeThresholdMode为0时有效），取值范围：[0,10]，单位：s
wTimeThreshold
时间阈值（byTimeThresholdMode为1时有效），取值范围：[5-3600]，单位：s
byTimeThresholdMode
使用的时间阈值字段类型(只写字段，用于兼容区域)：0- 字段byTimeThreshold生效，1- 字段wTimeThreshold生效
byRes
保留

Remarks

  • 设置时区域中参数为0表示清除该区域。球机获取单个区域时会定位到该区域所在的场景位置。
  • 物品遗留侦测能力集(UnattendedBaggage)中<timeThreshold >字段表示时间阈值范围，在范围“min="5" max="3600"”的情况下，赋值wTimeThreshold，其他情况赋值byTimeThreshold。

See Also

NET_DVR_UNATTENDED_BAGGAGE_DETECTION


NET_DVR_UNLOCK_INFO

解锁参数结构体。

struct{
  DWORD             dwSize;
  BYTE              byUnlockType;
  BYTE              byIPVersion;
  BYTE              byRes1[2];
  NET_DVR_IPADDR    struIPAddr;
  BYTE              byRes2[64];
}NET_DVR_UNLOCK_INFO,*LPNET_DVR_UNLOCK_INFO;

Members

dwSize
结构体大小
byIPType
解锁类型：0- 无效，1- 按IP解锁，2- 解锁所有IP
byIPType
IP类型（byIPType为1时有效）：1- IPV4，2- IPV6
byRes1
保留，置为0
struIPAddr
解锁的IP地址信息（byIPType为1时有效）
byRes2
保留，置为0

Remarks

  • 只有管理员用户（admin）具有这个权限。
  • 设备锁定的是socket通信中的IP地址。

    • See Also

    NET_DVR_RemoteControl


NET_DVR_UNLOCK_RECORD_INFO

可视对讲开锁记录信息结构体。

struct{
  BYTE     byUnlockType;
  BYTE     byRes1[3];
  BYTE     byControlSrc[NAME_LEN];
  DWORD    dwPicDataLen;
  BYTE     *pImage;
  DWORD    dwCardUserID;
  SHORT    nFloorNumber;
  WORD     wRoomNumber;
  WORD     wLockID;
  BYTE     byRes2[2];
  BYTE     byLockName[LOCK_NAME_LEN];
  BYTE     byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN];
  BYTE     byMask;
  BYTE     byRes[135];
}NET_DVR_UNLOCK_RECORD_INFO, *LPNET_DVR_UNLOCK_RECORD_INFO;

Members

byUnlockType
开锁方式，具体定义如下：
enum _UNLOCK_TYPE_ENUM_{
  ENUM_UNLOCK_PASSWORD        = 1,
  ENUM_UNLOCK_HIJACKING       = 2,
  ENUM_UNLOCK_CARD            = 3,
  ENUM_UNLOCK_HOUSEHOLDER     = 4,
  ENUM_UNLOCK_CENTER_PLATFORM = 5
  ENUM_UNLOCK_BLUETOOTH       = 6,
  ENUM_UNLOCK_QR_CODE         = 7,
  ENUM_UNLOCK_FACE     		 = 8,
  ENUM_UNLOCK_FINGERPRINT 	 = 9
}UNLOCK_TYPE_ENUM
ENUM_UNLOCK_PASSWORD
密码开锁
ENUM_UNLOCK_HIJACKING
劫持开锁
ENUM_UNLOCK_CARD
刷卡开锁
ENUM_UNLOCK_HOUSEHOLDER
户主开锁
ENUM_UNLOCK_CENTER_PLATFORM
中心平台开锁
ENUM_UNLOCK_BLUETOOTH
蓝牙开锁
ENUM_UNLOCK_QR_CODE
二维码开锁
ENUM_UNLOCK_FACE
人脸开锁
ENUM_UNLOCK_FINGERPRINT
指纹开锁
byRes1
保留，置为0
byControlSrc
操作发起源信息，刷卡开锁时为卡号，其余情况下为设备编号
dwPicDataLen
图片数据长度
pImage
缓冲区指针，保存图片数据，默认jpeg格式
dwCardUserID
持卡人ID
nFloorNumber
刷卡开锁时有效，为楼层号
wRoomNumber
操作发起源附加信息，刷卡开锁时有效，为房间号
wLockID
（对于门口机，0-表示本机控制器上接的锁、1-表示外接控制器上接的锁）
byRes2
保留，置为0
byLockName
刷卡开锁时有效，锁名称，对应门参数配置中门名称
byEmployeeNo
工号（人员ID）
byMask
是否带口罩：0-保留，1-未知，2-未戴口罩，3-戴口罩
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON


NET_DVR_UPGRADE_IPC_ERR_INFO

IP通道升级错误信息结构体。

struct{
  NET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE    struErrInfoSingle[MAX_CHANNUM_V30];
}NET_DVR_UPGRADE_IPC_ERR_INFO, *LPNET_DVR_UPGRADE_IPC_ERR_INFO;

Members

struStreamInfo
IP通道升级时每个监控点的错误信息，最大64个通道

Remarks

设备通道大于64时，出错状态会回调返回多次，每次对应64个通道的错误信息。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE

错误信息参数结构体。

struct{
  NET_DVR_STREAM_INFO    struStreamInfo;
  WORD                   wErrCode;
  BYTE                   byRes[30];
}NET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE, *LPNET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE;

Members

struStreamInfo
监控点对应流信息
wErrCode
错误号，具体定义如下：
enum _NET_SDK_UPGRADE_IPC_ERR_CODE_{
  NET_SDK_UPGRADE_IPC_INVALID = 0,
  NET_SDK_UPGRADE_IPC_SUCCESS,
  NET_SDK_UPGRADE_IPC_OFFLINE,
  NET_SDK_UPGRADE_IPC_NOT_SUPPORT,
  NET_SDK_UPGRADE_IPC_LANGUAGE_MISMATCH,
  NET_SDK_UPGRADE_IPC_WRITE_FLASH_FAILED,
  NET_SDK_UPGRADE_IPC_OTHER_ERROR
}NET_SDK_UPGRADE_IPC_ERR_CODE
NET_SDK_UPGRADE_IPC_INVALID
无效通道或未选择该通道升级
NET_SDK_UPGRADE_IPC_SUCCESS
升级成功
NET_SDK_UPGRADE_IPC_OFFLINE
IPC不在线
NET_SDK_UPGRADE_IPC_NOT_SUPPORT
IPC不支持升级命令
NET_SDK_UPGRADE_IPC_LANGUAGE_MISMATCH
语言不匹配
NET_SDK_UPGRADE_IPC_WRITE_FLASH_FAILED
写flsh失败
NET_SDK_UPGRADE_IPC_OTHER_ERROR
其他错误
byRes
保留

See Also

NET_DVR_UPGRADE_IPC_ERR_INFO


NET_DVR_UPGRADE_IPC_PARAM

IP通道升级参数结构体。

struct{
  NET_DVR_STREAM_INFO    struStreamInfo[MAX_CHANNUM_V30];
  char                   szFileName[260];
}NET_DVR_UPGRADE_IPC_PARAM, *LPNET_DVR_UPGRADE_IPC_PARAM;

Members

struStreamInfo
监控点对应流信息
szFileName
包括绝对路径的升级文件名

See Also

NET_DVR_StartRemoteConfig


NET_DVR_UPGRADE_PARAM

远程设备升级结构体

typedef struct tagNET_DVR_UPGRADE_PARAM{
  DWORD    dwUpgradeType;
  char     *sFilename;
  void     *pInbuffer;
  DWORD    dwBufferLen;
  char     *pUnitIdList[64];
  BYTE     byRes[112];
}NET_DVR_UPGRADE_PARAM,*LPNET_DVR_UPGRADE_PARAM;

Members

dwUpgradeType
[in] 升级类型，具体定义如下：
enum _ENUM_UPGRADE_TYPE{
  ENUM_UPGRADE_DVR           = 0, //普通设备升级
  ENUM_UPGRADE_ADAPTER       = 1, //DVR适配器升级
  ENUM_UPGRADE_VCALIB        = 2, //智能库升级
  ENUM_UPGRADE_OPTICAL       = 3, //光端机升级
  ENUM_UPGRADE_ACS           = 4, //门禁系统升级
  ENUM_UPGRADE_AUXILIARY_DEV = 5, //辅助设备升级
  ENUM_UPGRADE_INTELLIGENT   = 7  //中心智能设备升级（ISAPI协议登录下有效）
}ENUM_UPGRADE_TYPE
sFileName
[in] 升级的文件路径（包括文件名）。路径长度和操作系统有关，sdk不做限制，windows默认路径长度小于等于256字节（包括文件名在内）。
pInbuffer
[in] 升级条件缓冲区，不同的升级类型对应不同的升级条件，具体如下表所示
dwUpgradeType | 类型值 | pInbuffer
ENUM_UPGRADE_DVR | 0 | NULL
ENUM_UPGRADE_ADAPTER | 1 | NULL
ENUM_UPGRADE_VCALIB | 2 | 4字节通道号
ENUM_UPGRADE_OPTICAL | 3 | NULL
ENUM_UPGRADE_ACS | 4 | 对应4字节设备编号（0为升级主机，1~8为升级设备下挂的对应485地址的读卡器，10001开始为就地控制器（10001表示就地控制器编号1），20001为主通道控制器，20002为从通道控制器，20003-为升级扩展模块，30001开始为智能锁（30001表示智能锁ID为1））
ENUM_UPGRADE_AUXILIARY_DEV | 5 | NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM
ENUM_UPGRADE_INTELLIGENT | 7 | NULL
dwBufferLen
[in] 缓冲区大小
*pUnitIdList
升级单元名称，智能中设备使用
注：该参数为字符串指针数组，无效时设置为NULL，有效时需要指向以\0结束的字符串
byRes
保留，置为0

Remarks

对应的能力集：是否支持为通过能力集可以获取，对应门禁能力集(AcsAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：ACS_ABILITY， ACS_ABILITY中的<smartLockUpgrade>。升级后是否需要重启为DEVICE_SOFTHARDWARE_ABILITY能力集的<SmartLockUpgradeReboot>节点。

See Also

NET_DVR_Upgrade_V50


NET_DVR_UPGRADE_STATE

设备升级状态结构体。

struct{
  DWORD    dwProgress;
  BYTE     byState;
  BYTE     byRes2[31];
}NET_DVR_UPGRADE_STATE,*LPNET_DVR_UPGRADE_STATE;

Members

dwProgress
升级进度：0~100
byState
升级阶段：1-升级完成 2-正在升级 3-升级失败
byRes2
保留

See Also

NET_DVR_StartUpgrade


NET_DVR_UPLOAD_DB_IN

视图库数据上传输入参数结构体。

struct{
  INT64    i64FileLen;
  BYTE     byContinueUpload;
  BYTE     byRes[255];
 }NET_DVR_UPLOAD_DB_IN,*LPNET_DVR_UPLOAD_DB_IN;

Members

i64FileLen
文件总长度，上传新文件时需要给出文件长度，文件续传可以不传长度
byContinueUpload
上传类型：0- 新文件上传，1- 老文件续传
byRes
保留，置为0

Remarks

  • 上传新文件时，需要给出文件总长度，以便设备划分合适的存储空间。然后返回文件ID，供后续查询使用，进行文件的续传，续传文件时可以不传长度但是接口里必须传文件名。因为设备已经预留了整个文件的空间，所以续传的长度加已经上传的长度不能超过最开始上传的文件总长度，否则续传过程中，大于分配的空间时，将出现续传失败。续传过程中出现失败，通过接口返回值进行判断错误类型。续传文件不进行流控，由用户自己控制。

See Also

NET_DVR_UploadFile_V40


NET_DVR_UPLOAD_DB_OUT

视图库数据上传输出参数结构体。

struct{
  char    szFileID[MAX_FILE_ID_LEN];
  BYTE    byRes[256];
 }NET_DVR_UPLOAD_DB_OUT,*LPNET_DVR_UPLOAD_DB_OUT;

Members

szFileID
上传之后设备分配的文件ID，供后续查询或者文件续传时使用
byRes
保留，置为0

See Also

NET_DVR_UploadFile_V40


NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT

图片数据人脸抓拍结果信息结构体。

struct{
  DWORD           dwSize;
  DWORD           dwPID;
  DWORD           dwFaceAnalysisNum;
  NET_VCA_RECT    struVcaRect[NET_DVR_MAX_FACE_ANALYSIS_NUM];
  BYTE            byRes[128];
}NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT,*LPNET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT;

Members

dwSize
结构体大小
dwPID
图片ID
dwFaceAnalysisNum
识别出的人脸区域个数
struVcaRect
识别出来的人脸目标，紧凑排列
byRes
保留，置为0

Remarks

  • 设备是否支持导入图片数据到设备进行人脸抓拍的能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<isSuportAnalysisFace>。

See Also

NET_DVR_GetUploadResult


NET_DVR_UPLOAD_FACE_DATA

导入人脸图片数据到人脸库的条件参数结构体。

struct{
  DWORD    dwSize;
  char     szFDID[NET_SDK_MAX_FDID_LEN];
  BYTE     byFDLibType;
  BYTE     byRes1[3];
  char     szCustomInfo[NET_SDK_FDPIC_CUSTOM_INFO_LEN];
  BYTE     byRes[512];
}NET_DVR_UPLOAD_FACE_DATA,*LPNET_DVR_UPLOAD_FACE_DATA;

Members

dwSize
结构体大小
szFDID
人脸库ID，唯一标识
byFDLibType
人脸库类型：0- 保留，1- 非授权名单，2- 授权名单
byRes1
保留，置为0
szCustomInfo
人脸库图片自定义信息
byRes
保留，置为0

Remarks

  • 设备是否支持导入人脸图片数据到人脸库的能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<FaceAppendData>。

See Also

NET_DVR_UploadFile_V40


NET_DVR_UPLOAD_FACE_DATA_OUT

导入人脸图片数据到人脸库的结果参数结构体。

struct{
  char    szPicID[NET_SDK_MAX_PICID_LEN];
  BYTE    byRes[128];
}NET_DVR_UPLOAD_FACE_DATA_OUT,*LPNET_DVR_UPLOAD_FACE_DATA_OUT;

Members

szPicID
图片ID
byRes
保留，置为0

Remarks

  • 设备是否支持导入人脸图片数据到人脸库的能力，可以通过设备能力集进行判断，对应人脸对比库能力集(FDLibCap)，相关接口：NET_DVR_STDXMLConfig，能力集获取命令：GET /ISAPI/Intelligent/FDLib/capabilities，节点：<FaceAppendData>。

See Also

NET_DVR_GetUploadResult


NET_DVR_UPLOAD_FILE_RET

文件上传结果信息结构体。

struct{
  BYTE    sUrl[MAX_URL_LEN];
  BYTE    byRes[260];
}NET_DVR_UPLOAD_FILE_RET,*LPNET_DVR_UPLOAD_FILE_RET;

Members

sUrl
文件上传返回的URL或者ID
byRes
保留


NET_DVR_UPLOAD_FILEVOLUME_PRARAM

上传文件卷数据文件输入参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byFileType;
  BYTE     byFileVolnumeID;
  BYTE     byRes1[2];
  DWORD    dwFileSize;
  char     szFileName[NET_SDK_MAX_FILE_NAME];
  BYTE     byRes[300];
}NET_DVR_UPLOAD_FILEVOLUME_PRARAM,*LPNET_DVR_UPLOAD_FILEVOLUME_PRARAM;

Members

dwSize
结构体大小
byFileType
文件类型：0-录像，1-音频
byFileVolnumeID
文件卷ID（可通过NET_DVR_GET_HDVOLUME_CFG获取）
byRes1
保留，置为0
dwFileSize
文件大小
szFileName
文件名称
byRes
保留，置为0

See Also

NET_DVR_UploadFile_V40


NET_DVR_UPLOAD_ID_BLOCKLIST_CFG

上传身份证非授权名单配置参数结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_ID_CARD_INFO     struIDCardCfg;
  BYTE                     byBlockListValid;
  BYTE                     byRes[127];
}NET_DVR_UPLOAD_ID_BLOCKLIST_CFG,*LPNET_DVR_UPLOAD_ID_BLOCKLIST_CFG;

Members

dwSize
结构体大小
struIDCardCfg
身份证信息（该结构体中姓名和身份证号码为必填项，其他字段为选填项）
byBlockListValid
身份证非授权名单是否有效：0-无效，1-有效（用于按身份证号码删除身份证非授权名单，该字段为0时代表删除）
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_UPLOAD_ID_BLOCKLIST_COND

上传身份证非授权名单条件参数结构体。

struct{
  DWORD          dwSize;
  DWORD          dwBlockListNum;
  BYTE           byRes[128];
}NET_DVR_UPLOAD_ID_BLOCKLIST_COND, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_COND;

Members

Members

dwSize
结构体大小
dwBlockListNum
非授权名单数量
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS

身份证非授权名单状态。

struct{
  DWORD          dwSize;
  BYTE           byIDNum[MAX_ID_NUM_LEN];
  BYTE           byStatus;
  BYTE           byRes[63];
}NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_STATUS;

Members

Members

dwSize
结构体大小
byIDNum
身份证号码
byStatus
状态：0-无效，，1-处理中，2-上传失败，3-成功
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_UPLOAD_PLATE_INFO

可视对讲车牌信息结构体

struct{
  char    sLicense[MAX_LICENSE_LEN];
  BYTE    byColor;
  BYTE    byRes[239];
}NET_DVR_UPLOAD_PLATE_INFO, *LPNET_DVR_UPLOAD_PLATE_INFO;

Members

sLicense
车牌号码
byAuthType
车牌颜色，参考枚举类型VCA_PLATE_COLOR
byRes
保留, 置为0

See Also

NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON


NET_DVR_UPLOAD_RECORD_INFO

录像上传信息结构体。

struct{
  DWORD              dwSize;
  DWORD              dwRecordType;
  BYTE               sCameraID[MAX_CAMERAID_LEN];
  NET_DVR_TIME_EX    struStartTime;
  NET_DVR_TIME_EX    struStopTime;
  DWORD              dwStoragePoolID;
  BYTE               byFormatType;
  BYTE               byVideoEncType;
  BYTE               byAudioEncType;
   BYTE            byISO8601;
    signed char             cStartTimeDifferenceH;
    signed char             cStartTimeDifferenceM;
    signed char             cStopTimeDifferenceH;
    signed char             cStopTimeDifferenceM;
  BYTE               byRes[120];
}NET_DVR_UPLOAD_RECORD_INFO,*LPNET_DVR_UPLOAD_RECORD_INFO;

Members

dwSize
结构体大小
dwRecordType
录像类型：0- 定时录像，1- 移动侦测录像，2- 报警录像，3- 报警或移动侦测录像，4- 报警和移动侦测录像， 5- 命令触发，6- 手动录像，7- 震动报警，8- 环境触发报警，9- 智能报警，10- 回传录像
sCameraID
摄像机ID
struStartTime
录像开始时间
struStopTime
录像结束时间
dwStoragePoolID
存储池ID
byFormatType
封装类型：1-裸流，2-RTP封装，3-PS封装，4-TS封装，5-私有，6-FLV，7-ASF，8-3GP，9-RTP+PS（国标：GB28181），0xff-无效
byVideoEncType
视频编码类型：0- 私有264，1- 标准h264，2- 标准MPEG4，7- M-JPEG，8- MPEG2，0xfe- 自动（和源一致），0xff- 无效
byAudioEncType
音频编码类型：0- G722，1- G711_U，2- G711_A，5- MP2L2，6- G726，7- AAC，0xfe- 自动（和源一致），0xff- 无效
byISO8601
是否是8601的时间格式，即时差字段是否有效 0-时差无效，年月日时分秒为设备本地时间 1-时差有效
cStartTimeDifferenceH
开始时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStartTimeDifferenceM
开始时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
cStopTimeDifferenceH
结束时间与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cStopTimeDifferenceM
结束时间与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes
保留

Remarks

通过NET_DVR_UploadFile_V40上传录像文件后返回URL，然后调用NET_DVR_PlayBackByName（接口中sPlayBackFileName直接传返回的URL地址）可实现录像文件回放。

See Also

NET_DVR_UploadFile_V40


NET_DVR_UPNP_NAT_STATE

Upnp端口映射状态结构体。

struct{
  NET_DVR_UPNP_PORT_STATE    strUpnpPort[12];
  BYTE                       byRes[200];
}NET_DVR_UPNP_NAT_STATE,*LPNET_DVR_UPNP_NAT_STATE;

Members

strUpnpPort
端口映射状态：数组0- web server端口，数组1- 管理端口，数组2- rtsp端口，数组3 https端口，数组4 SDK over TLS 端口
byRes
保留

See Also

NET_DVR_GetUpnpNatState


NET_DVR_UPNP_PORT_STATE

端口映射状态结构体。

struct{
  DWORD             dwEnabled;
  WORD              wInternalPort;
  WORD              wExternalPort;
  DWORD             dwStatus;
  NET_DVR_IPADDR    struNatExternalIp;
  NET_DVR_IPADDR    struNatInternalIp;
  BYTE              byRes[16];
}NET_DVR_UPNP_PORT_STATE, *LPNET_DVR_UPNP_PORT_STATE;

Members

dwEnabled
该端口是否被使能映射
wInternalPort
映射前的端口
wExternalPort
映射后的端口
dwStatus
端口映射状态：0- 未生效；1- 未生效：映射源端口与目的端口需一致；2- 未生效：映射端口号已被使用；3- 生效
struNatExternalIp
映射后的外部地址
struNatInternalIp
NAT路由器LAN IP地址
byRes
保留

See Also

NET_DVR_UPNP_NAT_STATE


NET_DVR_USB_RS232

USB转串口方式配置结构体。

struct{
  DWORD    dwBaudRate;
  BYTE     byDataBit;
  BYTE     byStopBit;
  BYTE     byParity;
  BYTE     byFlowcontrol;
  BYTE     byVirtualSerialPort;
  BYTE     byRes[3];
}NET_DVR_USB_RS232, *LPNET_DVR_USB_RS232;

Members

dwBaudRate
波特率(bps)，0-50，1-75，2-110，3-150，4-300，5-600，6-1200，7-2400，8-4800，9-9600，10-19200，11-38400，12-57600，13-76800，14-115.2k
byDataBit
数据有几位：0-5位，1-6位，2-7位，3-8位
byStopBit
停止位：0-1位，1-2位
byParity
是否校验：0-无校验，1-奇校验，2-偶校验
byFlowcontrol
是否流控：0-无，1-软流控，2-硬流控
byVirtualSerialPort
虚拟串口编号
byRes
保留，置为0

See Also

NET_DVR_POS_CONNECTMODE_UNION


NET_DVR_USER

用户参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_USER_INFO      struUser[MAX_USERNUM];
}NET_DVR_USER,*LPNET_DVR_USER;

Members

dwSize
结构体大小
struUser
用户信息参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_USER_V30


NET_DVR_USER_COND

用户参数结构体。

struct{
  char    szUserName[NAME_LEN];
  BYTE    byRes[48];
}NET_DVR_USER_COND,*LPNET_DVR_USER_COND;

Members

szUserName
用户名
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_USER_EX

用户参数结构体。

struct{
  DWORD                    dwSize;
  NET_DVR_USER_INFO_EX     struUser[MAX_USERNUM];
}NET_DVR_USER_EX,*LPNET_DVR_USER_EX;

Members

dwSize
结构体大小
struUser
用户信息参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_USER_V30


NET_DVR_USER_INFO

单用户参数结构体。

struct{
  BYTE      sUserName[NAME_LEN];
  BYTE      sPassword[PASSWD_LEN];
  DWORD     dwLocalRight[MAX_RIGHT];
  DWORD     dwRemoteRight[MAX_RIGHT];
  char      sUserIP[16];
  BYTE      byMACAddr[MACADDR_LEN];
}NET_DVR_USER_INFO,*LPNET_DVR_USER_INFO;

Members

sUserName
用户名
sPassword
密码（获取时无效，设置时如果为空表示不修改密码）
dwLocalRight
本地操作权限，参数取值为1表示使能：
数组0－本地控制云台
数组1－本地手动录象
数组2－本地回放
数组3－本地设置参数
数组4－本地查看状态、日志
数组5－本地高级操作(升级，格式化，重启，关机)
dwRemoteRight
远程操作权限，参数取值为1表示使能：
数组0－远程控制云台
数组1－远程手动录象
数组2－远程回放
数组3－远程设置参数
数组4－远程查看状态、日志
数组5－远程高级操作(升级，格式化，重启，关机)
数组6－远程发起语音对讲
数组7－远程预览
数组8－远程请求报警上传、报警输出
数组9－远程控制，本地输出
数组10－远程控制串口
sUserIP
用户IP地址（为0时表示允许任何地址）
byMACAddr
物理地址

See Also

NET_DVR_USER


NET_DVR_USER_INFO_EX

单用户参数结构体。

struct{
  BYTE      sUserName[NAME_LEN];
  BYTE      sPassword[PASSWD_LEN];
  DWORD     dwLocalRight[MAX_RIGHT];
  DWORD     dwLocalPlaybackRight;
  DWORD     dwRemoteRight[MAX_RIGHT];
  DWORD     dwNetPreviewRight;
  DWORD     dwNetPlaybackRight;
  char      sUserIP[16];
  BYTE      byMACAddr[MACADDR_LEN];
}NET_DVR_USER_INFO_EX,*LPNET_DVR_USER_INFO_EX;

Members

sUserName
用户名
sPassword
密码（获取时无效，设置时如果为空表示不修改密码）
dwLocalRight
本地操作权限，参数取值为1表示使能：
数组0－本地控制云台
数组1－本地手动录象
数组2－本地回放
数组3－本地设置参数
数组4－本地查看状态、日志
数组5－本地高级操作(升级，格式化，重启，关机)
dwLocalPlaybackRight
本地可以回放的通道，按位计算（如bit0：表示channel 1）
dwRemoteRight
远程操作权限，参数取值为1表示使能：
数组0－远程控制云台
数组1－远程手动录象
数组2－远程回放
数组3－远程设置参数
数组4－远程查看状态、日志
数组5－远程高级操作(升级，格式化，重启，关机，JPEG抓图)
数组6－远程发起语音对讲
数组7－远程预览
数组8－远程请求报警上传、报警输出
数组9－远程控制，本地输出
数组10－远程控制串口
dwNetPreviewRight
远程可以预览的通道，按位计算（如bit0：表示channel 1）
dwNetPlaybackRight
远程可以回放的通道，按位计算（如bit0：表示channel 1）
sUserIP
用户IP地址（为0时表示允许任何地址）
byMACAddr
物理地址

See Also

NET_DVR_USER_EX


NET_DVR_USER_INFO_V30

单用户参数结构体。

struct{
  BYTE                sUserName[NAME_LEN];
  BYTE                sPassword[PASSWD_LEN];
  BYTE                byLocalRight[MAX_RIGHT];
  BYTE                byRemoteRight[MAX_RIGHT];
  BYTE                byNetPreviewRight[MAX_CHANNUM_V30];
  BYTE                byLocalPlaybackRight[MAX_CHANNUM_V30];
  BYTE                byNetPlaybackRight[MAX_CHANNUM_V30];
  BYTE                byLocalRecordRight[MAX_CHANNUM_V30];
  BYTE                byNetRecordRight[MAX_CHANNUM_V30];
  BYTE                byLocalPTZRight[MAX_CHANNUM_V30];
  BYTE                byNetPTZRight[MAX_CHANNUM_V30];
  BYTE                byLocalBackupRight[MAX_CHANNUM_V30];
  NET_DVR_IPADDR      struUserIP;
  BYTE                byMACAddr[MACADDR_LEN];
  BYTE                byPriority;
  BYTE                byAlarmOnRight;
  BYTE                byAlarmOffRight;
  BYTE                byBypassRight;
  BYTE                byRes[14];
}NET_DVR_USER_INFO_V30,*LPNET_DVR_USER_INFO_V30;

Members

sUserName
用户名
sPassword
密码（获取时无效，设置时如果为空表示不修改密码）
byLocalRight
本地操作权限，参数取值为1表示使能：
数组0－本地控制云台
数组1－本地手动录象
数组2－本地回放
数组3－本地设置参数
数组4－本地查看状态、日志
数组5－本地高级操作（升级，硬盘管理（格式化、设置硬盘属性、设置盘组、阵列扩容、RAID固件升级），重启，关机）
数组6—本地查看参数
数组7—本地管理模拟和IP camera
数组8—本地备份
数组9—本地关机/重启
byRemoteRight
远程操作权限，参数取值为1表示使能：
数组0－远程控制云台
数组1－远程手动录象
数组2－远程回放
数组3－远程设置参数
数组4－远程查看状态、日志
数组5－远程高级操作（升级，硬盘管理（格式化、设置硬盘属性、设置盘组、阵列扩容、RAID固件升级），JPEG抓图，前面板锁定与解锁，重启，关机）
数组6－远程发起语音对讲
数组7－远程预览
数组8－远程请求报警上传、报警输出
数组9－远程控制，本地输出
数组10－远程控制串口
数组11—远程查看参数
数组12—远程管理模拟和IP camera
数组13—远程关机/重启
byNetPreviewRight
远程可以预览的通道：1-有权限，0-无权限
byLocalPlaybackRight
本地可以回放的通道：1-有权限，0-无权限
byNetPlaybackRight
远程可以回放的通道：1-有权限，0-无权限
byLocalRecordRight
本地可以录像的通道：1-有权限，0-无权限
byNetRecordRight
远程可以录像的通道：1-有权限，0-无权限
byLocalPTZRight
本地可以控制PTZ的通道：1-有权限，0-无权限
byNetPTZRight
远程可以控制PTZ的通道：1-有权限，0-无权限
byLocalBackupRight
本地备份权限通道：1-有权限，0-无权限
struUserIP
用户IP地址(为0时表示允许任何地址)
byMACAddr
物理地址
byPriority
优先级：0xff-无，0-低，1-中，2-高
无（表示不支持优先级的设置）
低（默认权限：包括本地和远程回放，本地和远程查看日志和状态，本地和远程关机/重启）
中（包括本地和远程控制云台，本地和远程手动录像，本地和远程回放，语音对讲和远程预览，本地备份，本地/远程关机/重启）
高（管理员）
byAlarmOnRight
报警输入口布防权限
byAlarmOffRight
报警输入口撤防权限
byBypassRight
报警输入口旁路权限
byRes
保留，置为0

See Also

NET_DVR_USER_V30


NET_DVR_USER_INFO_V40

用户信息结构体。

struct{
  BYTE              sUserName[NAME_LEN];
  BYTE              sPassword[PASSWD_LEN];
  BYTE              byLocalRight[MAX_RIGHT];
  BYTE              byRemoteRight[MAX_RIGHT];
  DWORD             dwNetPreviewRight[MAX_CHANNUM_V40];
  DWORD             dwLocalRecordRight[MAX_CHANNUM_V40];
  DWORD             dwNetRecordRight[MAX_CHANNUM_V40];
  DWORD             dwLocalPlaybackRight[MAX_CHANNUM_V40];
  DWORD             dwNetPlaybackRight[MAX_CHANNUM_V40];
  DWORD             dwLocalPTZRight[MAX_CHANNUM_V40];
  DWORD             dwNetPTZRight[MAX_CHANNUM_V40];
  DWORD             dwLocalBackupRight[MAX_CHANNUM_V40];
  NET_DVR_IPADDR    struUserIP;
  BYTE              byMACAddr[MACADDR_LEN];
  BYTE              byPriority;
  BYTE              byAlarmOnRight;
  BYTE              byAlarmOffRight;
  BYTE              byBypassRight;
  BYTE              byRes[118];
}NET_DVR_USER_INFO_V40,*LPNET_DVR_USER_INFO_V40;

Members

sUserName
用户名，只能用16字节
sPassword
密码（获取时无效，设置时如果为空表示不修改密码）
byLocalRight
本地权限，数组取值：0- 无权限，1- 有权限，每位数组表示一种权限：
数组0: 本地控制云台
数组1: 本地手动录象
数组2: 本地回放
数组3: 本地设置参数
数组4: 本地查看状态、日志
数组5: 本地高级操作(升级，格式化，重启，关机)
数组6: 本地查看参数
数组7: 本地管理模拟和IP Camera
数组8: 本地备份
数组9: 本地关机/重启<
byRemoteRight
远程权限，数组取值：0- 无权限，1- 有权限，每位数组表示一种权限：
数组0: 远程控制云台
数组1: 远程手动录象
数组2: 远程回放
数组3: 远程设置参数
数组4: 远程查看状态、日志
数组5: 远程高级操作(升级，格式化，重启，关机)
数组6: 远程发起语音对讲
数组7: 远程预览
数组8: 远程请求报警上传、报警输出
数组9: 远程控制，本地输出
数组10: 远程控制串口
数组11: 远程查看参数
数组12: 远程管理模拟和IP Camera
数组13: 远程关机/重启
dwNetPreviewRight
远程可以预览的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalRecordRight
本地可以录像的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwNetRecordRight
远程可以录像的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalPlaybackRight
本地可以回放的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwNetPlaybackRight
远程可以回放的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalPTZRight
本地可以PTZ的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwNetPTZRight
远程可以PTZ的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalBackupRight
本地备份权限通道，从前往后顺序排列，遇到0xffffffff后续均为无效
struUserIP
用户IP地址绑定(为0时表示允许任何地址)
byMACAddr
物理地址绑定(为00:00:00:00:00:00时表示允许任何地址)
byPriority
优先级：0xff-无，0-低，1-中，2-高
无……表示不支持优先级的设置
低……默认权限：包括本地和远程回放、本地和远程查看日志和状态、本地和远程关机/重启
中……包括本地和远程控制云台、本地和远程手动录像、本地和远程回放、语音对讲和远程预览、本地备份、本地/远程关机/重启
高……管理员（支持所有权限）
byAlarmOnRight
报警输入口布防权限：0-无权限，1-有权限
byAlarmOffRight
报警输入口撤防权限：0-无权限，1-有权限
byBypassRight
报警输入口旁路权限：0-无权限，1-有权限
byRes
保留，置为0

See Also

NET_DVR_USER_V40


NET_DVR_USER_INFO_V51

用户信息结构体。

struct{
  BYTE              sUserName[NAME_LEN];
  BYTE              sPassword[PASSWD_LEN];
  BYTE              byLocalRight[MAX_RIGHT];
  BYTE              byRemoteRight[MAX_RIGHT];
  DWORD             dwNetPreviewRight[MAX_CHANNUM_V40];
  DWORD             dwLocalRecordRight[MAX_CHANNUM_V40];
  DWORD             dwNetRecordRight[MAX_CHANNUM_V40];
  DWORD             dwLocalPlaybackRight[MAX_CHANNUM_V40];
  DWORD             dwNetPlaybackRight[MAX_CHANNUM_V40];
  DWORD             dwLocalPTZRight[MAX_CHANNUM_V40];
  DWORD             dwNetPTZRight[MAX_CHANNUM_V40];
  DWORD             dwLocalBackupRight[MAX_CHANNUM_V40];
  DWORD             dwLocalPreviewRight[MAX_CHANNUM_V40];
  NET_DVR_IPADDR    struUserIP;
  BYTE              byMACAddr[MACADDR_LEN];
  BYTE              byPriority;
  BYTE              byAlarmOnRight;
  BYTE              byAlarmOffRight;
  BYTE              byBypassRight;
  BYTE              byRes1[2];
  BYTE              byPublishRight[MAX_RIGHT];;
  DWORD             dwPasswordValidity;
  BYTE              byKeypadPassword[PASSWD_LEN];
  BYTE              byUserOperateType;
  BYTE              byRes[1007];
}NET_DVR_USER_INFO_V51,*LPNET_DVR_USER_INFO_V51;

Members

sUserName
用户名，只能用16字节
sPassword
密码（获取时无效，设置时如果为空表示不修改密码）
byLocalRight
本地权限，数组取值：0- 无权限，1- 有权限，每位数组表示一种权限：
数组0: 本地控制云台
数组1: 本地手动录象
数组2: 本地回放
数组3: 本地设置参数
数组4: 本地查看状态、日志
数组5: 本地高级操作(升级，格式化，重启，关机)
数组6: 本地查看参数
数组7: 本地管理模拟和IP Camera
数组8: 本地备份
数组9: 本地关机/重启
数组10: 本地预览
byRemoteRight
远程权限，数组取值：0- 无权限，1- 有权限，每位数组表示一种权限：
数组0: 远程控制云台
数组1: 远程手动录象
数组2: 远程回放
数组3: 远程设置参数
数组4: 远程查看状态、日志
数组5: 远程高级操作(升级，格式化，重启，关机)
数组6: 远程发起语音对讲
数组7: 远程预览
数组8: 远程请求报警上传、报警输出
数组9: 远程控制，本地输出
数组10: 远程控制串口
数组11: 远程查看参数
数组12: 远程管理模拟和IP Camera
数组13: 远程关机/重启
dwNetPreviewRight
远程可以预览的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalRecordRight
本地可以录像的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwNetRecordRight
远程可以录像的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalPlaybackRight
本地可以回放的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwNetPlaybackRight
远程可以回放的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalPTZRight
本地可以PTZ的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwNetPTZRight
远程可以PTZ的通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalBackupRight
本地备份权限通道，从前往后顺序排列，遇到0xffffffff后续均为无效
dwLocalPreviewRight
本地预览权限通道，从前往后顺序排列，遇到0xffffffff后续均为无效
struUserIP
用户IP地址绑定(为0时表示允许任何地址)
byMACAddr
物理地址绑定(为00:00:00:00:00:00时表示允许任何地址)
byPriority
优先级：0xff-无，0-低，1-中，2-高
无……表示不支持优先级的设置
低……默认权限：包括本地和远程回放、本地和远程查看日志和状态、本地和远程关机/重启
中……包括本地和远程控制云台、本地和远程手动录像、本地和远程回放、语音对讲和远程预览、本地备份、本地/远程关机/重启
高……管理员（支持所有权限）
byAlarmOnRight
报警输入口布防权限：0-无权限，1-有权限
byAlarmOffRight
报警输入口撤防权限：0-无权限，1-有权限
byBypassRight
报警输入口旁路权限：0-无权限，1-有权限
dwPasswordValidity
密码有效期,仅管理员用户可以修改,单位：天，填0表示永久生效
byKeypadPassword
键盘密码
byUserOperateType
用户操作类型，1-网络用户，2-键盘用户，3-网络用户+键盘用户
byRes1
四字节对齐
byPublishRight
信息发布专有权限：
数组0: 素材审核权限
数组1: 节目审核权限
数组2: 日程审核权
数组3: 上传素材权限
数组4: 新建节目权限
数组5: 新建日程权限
数组6: 信息播放权限
数组7: 终端管理权限
数组8: 商业智能权限
byRes
保留参数，置为0

See Also

NET_DVR_USER_V50

1.当用户配置为网络用户时，sPassword需要填写密码，byKeypadPassword不需要传递，byUserOperateType传递为1或者也可以传递0（默认）；

2.当用户配置为键盘用户时，sPassword不传递，byKeypadPassword需要填写密码，byUserOperateType传递为2；

3.3.当用户配置为即是网络用户又是键盘用户时，sPassword和byKeypadPassword都要填写密码，byUserOperateType传递为3）。


NET_DVR_USER_LOGIN_INFO

用户登录参数结构体。

struct{
  char                    sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN];
  BYTE                    byUseTransport;
  WORD                    wPort;
  char                    sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN];
  char                    sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN];
  fLoginResultCallBack    cbLoginResult;
  void                    *pUser;
  BOOL                    bUseAsynLogin;
  BYTE                    byProxyType;
  BYTE                    byUseUTCTime;
  BYTE                    byLoginMode;
  BYTE                    byHttps;
  LONG                    iProxyID;
  LONG                    byVerifyMode;
  BYTE                    byRes3[119];
}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO;

Members

sDeviceAddress
设备地址，IP 或者普通域名
byUseTransport
是否启用能力集透传：0- 不启用透传，默认；1- 启用透传
wPort
设备端口号，例如：8000
sUserName
登录用户名，例如：admin
sPassword
登录密码，例如：12345
cbLoginResult
登录状态回调函数，bUseAsynLogin 为1时有效
pUser
用户数据
bUseAsynLogin
是否异步登录：0- 否，1- 是
byProxyType
代理服务器类型：0- 不使用代理，1- 使用标准代理，2- 使用EHome代理
byUseUTCTime
是否使用UTC时间：0- 不进行转换，默认；1- 输入输出UTC时间，SDK进行与设备时区的转换；2- 输入输出平台本地时间，SDK进行与设备时区的转换
byLoginMode
登录模式(不同模式具体含义详见“Remarks”说明)：0- SDK私有协议，1- ISAPI协议，2- 自适应（设备支持协议类型未知时使用，一般不建议）
byHttps
ISAPI协议或海康私有协议登录时是否启用TLS(即byLoginMode为0或1均有效)：0-不使用TLS，1-使用TLS 2-自适应（自适应登录时，会对性能有较大影响，自适应时要同时发起HTTP和HTTPS，设备支持协议类型未知时使用，一般不建议。）
iProxyID
代理服务器序号，添加代理服务器信息时相对应的服务器数组下表值
byVerifyMode
认证方式， 0-不认证，1-双向认证（暂不支持），2-单向认证；使用海康私有协议登录且使用TLS链路时有效（即SDK Over TLS，byLoginMode为0且byHttps为1）;选择0时，无需加载CA证书；选择2时，需要调用接口NET_DVR_SetSDKLocalCfg加载CA证书，枚举值为NET_SDK_LOCAL_CFG_CERTIFICATION。
byRes3
保留，置为0

Callback Function

typedef void(CALLBACK *fLoginResultCallBack)(
  LONG                        lUserID,
  DWORD                       dwResult,
  LPNET_DVR_DEVICEINFO_V30    lpDeviceInfo,
  void                        *pUser
);

Callback Function Parameters

lUserID
[out] 用户ID，NET_DVR_Login_V40的返回值
dwResult
[out] 登录状态：0- 异步登录失败，1- 异步登录成功
lpDeviceInfo
[out] 设备信息，设备序列号、通道、能力等参数
pUser
[out] 用户数据

See Also

NET_DVR_GetDeviceConfig NET_DVR_GetLastError

See Also


NET_DVR_USER_RIGHT_CFG

用户权限配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byAddMonitoringPointRight;
  BYTE     byModMonitoringPointRight;
  BYTE     byDelMonitoringPointRight;
  BYTE     bySetRecordPlanRight;
  BYTE     byDelRecordPlanRight;
  BYTE     byEnableOrDisableRecordPlanRight;
  BYTE     byManualRecordRight;
  BYTE     bySetAlarmRecordRight;
  BYTE     byRecordBackupRight;
  BYTE     byRecordDownloadRight;
  BYTE     byRecordDeleteRight;
  BYTE     byDelBackupRecordRight;
  BYTE     bySetBackupVolumeRight;
  BYTE     byRecordPlayBackRight;
  BYTE     byLogDeleteRight;
  BYTE     byLogDownloadRight;
  BYTE     byAddUserRight;
  BYTE     byDelUserRight;
  BYTE     byModUserRight;
  BYTE     byAllocUserRight;
  BYTE     byRes[128];
}NET_DVR_USER_RIGHT_CFG,*LPNET_DVR_USER_RIGHT_CFG;

Members

dwSize
结构体大小
byAddMonitoringPointRight
添加监控点（前端设备）权限：0-无，1-有
byModMonitoringPointRight
修改监控点（前端设备）权限：0-无，1-有
byDelMonitoringPointRight
添加监控点（前端设备）权限：0-无，1-有
bySetRecordPlanRight
制定录像策略权限：0-无，1-有
byDelRecordPlanRight
删除录像策略权限：0-无，1-有
byEnableOrDisableRecordPlanRight
启用和禁用录像计划权限：0-无，1-有
byManualRecordRight
启动和停止手动录像权限：0-无，1-有
bySetAlarmRecordRight
报警录像设定权限：0-无，1-有
byRecordBackupRight
录像存档权限：0-无，1-有
byRecordDownloadRight
录像下载权限：0-无，1-有
byRecordDeleteRight
录像删除权限：0-无，1-有（保留）
byDelBackupRecordRight
删除存档录像权限：0-无，1-有（保留）
bySetBackupVolumeRight
设置存档卷权限：0-无，1-有
byRecordPlayBackRight
录像回放权限：0-无，1-有
byLogDeleteRight
日志清空权限：0-无，1-有（保留）
byLogDownloadRight
日志下载权限：0-无，1-有（保留）
byAddUserRight
添加用户权限：0-无，1-有
byDelUserRight
删除用户权限：0-无，1-有
byModUserRight
修改用户权限：0-无，1-有
byAllocUserRight
用户权限分配权限：0-无，1-有
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_USER_V30

用户参数结构体。

struct{
  DWORD                     dwSize;
  NET_DVR_USER_INFO_V30     struUser[MAX_USERNUM_V30];
}NET_DVR_USER_V30,*LPNET_DVR_USER_V30;

Members

dwSize
结构体大小
struUser
用户信息参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_USER_V40

该结构扩展源于

NET_DVR_USER


NET_DVR_USER_V40

用户参数配置（扩展）结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwMaxUserNum;
  NET_DVR_USER_INFO_V40    struUser[MAX_USERNUM_V30];
}NET_DVR_USER_V40,*LPNET_DVR_USER_V40;

Members

dwSize
结构体大小
dwMaxUserNum
设备支持的最大用户个数（只读）
struUser
用户信息，struUser[0]~struUser[dwMaxUserNum-1]有效

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_USER_V50

该结构扩展源于

NET_DVR_USER_V30


NET_DVR_USER_V50

用户参数配置（扩展）结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwMaxUserNum;
  NET_DVR_USER_INFO_V40    struUser[MAX_USERNUM_V30];
  char                     sloginPassword[PASSWD_LEN];
  BYTE                     byRes[240];
}NET_DVR_USER_V50,*LPNET_DVR_USER_V50;

Members

dwSize
结构体大小
dwMaxUserNum
设备支持的最大用户个数（只读）
struUser
用户信息，struUser[0]~struUser[dwMaxUserNum-1]有效
sloginPassword
登录密码确认（设置时输入，修改密码时对应修改前的原密码，不支持获取）
byRes
保留，置为0

Remarks

  • 设备是否支持用户参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应设备用户管理参数能力集(UserAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_USER_ABILITY。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_USER_V40


NET_DVR_USER_V51

用户参数配置（扩展）结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwMaxUserNum;
  NET_DVR_USER_INFO_V51    struUser[MAX_USERNUM_V30];
  char                     sloginPassword[PASSWD_LEN];
  BYTE                     byRes[240];
}NET_DVR_USER_V51,*LPNET_DVR_USER_V51;

Members

dwSize
结构体大小
dwMaxUserNum
设备支持的最大用户个数（只读）
struUser
用户信息，struUser[0]~struUser[dwMaxUserNum-1]有效
sloginPassword
登录密码确认（设置时输入，修改密码时对应修改前的原密码，不支持获取）
byRes
保留，置为0

Remarks

  • 设备是否支持用户参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应设备用户管理参数能力集(UserAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_USER_ABILITY。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_USER_V50


NET_DVR_USING_SERIALPORT

当前使用串口信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwSerialPort;
  BYTE     byProtocolType;
  BYTE     byRes[31];
}NET_DVR_USING_SERIALPORT, *LPNET_DVR_USING_SERIALPORT;

Members

dwSize
结构体大小
dwSerialPort
当前使用串口号
byProtocolType
串口协议类型：1- LCD-S1，2- LCD-S2，3- LCD-L1，4- LCD-DLP，5- LCD-S3，6- LCD-D20，7- LCD-L2，8- LCD-Z1，9- LCD-D20/D，10- LCD-D20/S，11- LCD-D20/P，12- LCD-D20/T，13- LCD-D20/F，14- LCD-D20/DF，15-LCD-D20/FS，16- LCD-D20/FP，17-LCD-D20/FT，18-LCD-D5022，19-LCD-D5032，20-LCD-D5042+
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VALID_PERIOD_CFG

有效期参数结构体。

struct{
  BYTE               byEnable;
  BYTE               byBeginTimeFlag;
  BYTE               byEnableTimeFlag;
  BYTE               byTimeDurationNo;
  NET_DVR_TIME_EX    struBeginTime;
  NET_DVR_TIME_EX    struEndTime;
  BYTE               byTimeType;
  BYTE               byRes2[31];
}NET_DVR_VALID_PERIOD_CFG,*LPNET_DVR_VALID_PERIOD_CFG;

Members

byEnable
是否启用该有效期：0- 不启用，1- 启用
byBeginTimeFlag
是否限制起始时间的标志，0-不限制，1-限制
byEnableTimeFlag
是否限制终止时间的标志，0-不限制，1-限制
byTimeDurationNo
有效期索引,从0开始（时间段通过SDK设置给锁，后续在制卡时，只需要传递有效期索引即可，以减少数据量
struBeginTime
有效期起始时间
struEndTime
有效期结束时间
byTimeType
时间类型：0-设备本地时间（默认），1-UTC时间（对于struBeginTime，struEndTime字段有效）
byRes2
保留，置为0

See Also

NET_DVR_GROUP_CFG NET_DVR_CARD_CFG


NET_DVR_VANDALPROOF_ALARM

电子罗盘防破坏报警信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  NET_VCA_DEV_INFO    struDevInfo;
  BYTE                byRes[256];
}NET_DVR_VANDALPROOF_ALARM,*LPNET_DVR_VANDALPROOF_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备
byRes
保留，置为0

Remarks

  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)
  • 设备是否支持电子罗盘防破坏报警能力或者支持的参数能力，可以通过设备能力集进行判断，对应电子罗盘能力集(CompassCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_COMPASS_CAPABILITIES，节点：<VandalProofAlarm>。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_SetDVRMessageCallBack_V30


NET_DVR_VANDALPROOFALARM_CFG

电子罗盘防破坏报警参数结构体。

struct{
  DWORD    dwSize;
  BYTE     bySensitivity;
  BYTE     byUploadEnabled;
  BYTE     byVoiceWarningEnabled;
  BYTE     byRes[125];
}NET_DVR_VANDALPROOFALARM_CFG,*LPNET_DVR_VANDALPROOFALARM_CFG;

Members

dwSize
结构体大小
bySensitivity
灵敏度 (支持灵敏度配置：灵敏度值大，越容易触发；值越小，越难触发)，取值范围：[1,100]
byUploadEnabled
启用防破坏报警上传使能：0- 不启用，1- 启用
byVoiceWarningEnabled
启用防破坏报警语音提示使能：0- 不启用，1- 启用
byRes
保留，置为0

Remarks

  • 启用防破坏报警上传使能，可以通过报警布防获取防破坏报警信息，对应报警信息类型：COMM_VANDALPROOF_ALARM。
  • 设备是否支持电子罗盘防破坏报警能力或者支持的参数能力，可以通过设备能力集进行判断，对应电子罗盘能力集(CompassCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_COMPASS_CAPABILITIES，节点：<VandalProofAlarm>。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_VCA_ALARM_CFG

解码器智能报警参数配置结构体。

struct{
  DWORD                         dwSize;
  NET_DVR_DEC_VCA_ALARM_LOGO    struAlarmLogo;
  NET_DVR_DEC_VCA_ALARM_PIC     struAlarmPic;
  BYTE                          byRes[64];
}NET_DVR_VCA_ALARM_CFG,*LPNET_DVR_VCA_ALARM_CFG;

Members

dwSize
结构体大小
struAlarmLogo
智能报警LOGO叠加参数
struAlarmPic
智能报警图片参数
byRes
保留，置为0

Remarks

  • 设备是否支持智能报警配置或者支持的参数能力，可以通过设备能力集进行判断，对应解码器能力集(DecoderAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DECODER_ABILITY，节点：<VcaDec>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VCA_CTRLINFO_CFG

智能控制参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byVCAEnable;
  BYTE     byVCAType;
  BYTE     byStreamWithVCA;
  BYTE     byMode;
  BYTE     byControlType;
  BYTE     byRes1[3];
  WORD     wRelatedChannel[NET_SDK_MAX_RELATED_CHAN_NUM];
  BYTE     byRes[72];
}NET_DVR_VCA_CTRLINFO_CFG, *LPNET_DVR_VCA_CTRLINFO_CFG;

Members

dwSize
结构体大小
byVCAEnable
是否开启智能：0- 否，1- 是
byVCAType
智能能力类型，取值定义详见VCA_CHAN_ABILITY_TYPE
byStreamWithVCA
码流中是否带智能信息：0- 否，1- 是
byMode
模式，跟byVCAEnable取值有关，如下所示，其他智能类型，该参数无效：

byVCAEnable 智能类型 byMode
VCA_BEHAVIOR_FULL 异常行为识别完整版 enum _BEHAVIOR_SCENE_MODE_TYPE_{
BEHAVIOR_SCENE_DEFAULT = 0, //系统默认
BEHAVIOR_SCENE_WALL = 1, //围墙
BEHAVIOR_SCENE_INDOOR = 2 //室内
}BEHAVIOR_SCENE_MODE_TYPE;
VCA_ATM ATM能力 enum _VCA_CHAN_MODE_TYPE_{
VCA_ATM_PANEL = 0, //ATM面板
VCA_ATM_SURROUND = 1, //ATM环境
VCA_ATM_FACE = 2, //ATM人脸
VCA_ATM_SAFETYCABIN = 3 //ATM防护舱
}VCA_CHAN_MODE_TYPE
VCA_BEHAVIOR_PRISON 异常行为识别监狱版(监舍) enum _BEHAVIOR_PRISON_MODE_TYPE_{
BEHAVIOR_PRISON = 0, //监所
BEHAVIOR_HEARING = 1, //审讯室
BEHAVIOR_RECFIELD = 2 //放风场
}BEHAVIOR_PRISON_MODE_TYPE
VCA_ITS ITS(智能交通事件)能力 enum _TRAFFIC_SCENE_MODE_{
FREEWAY = 0, //高速户外场景
TUNNEL = 1, //高速隧道场景
BRIDGE = 2 //高速桥梁场景
}TRAFFIC_SCENE_MODE
VCA_TFS TFS(道路违章取证)能力 enum _TFS_CHAN_MODE_TYPE_{
TFS_CITYROAD = 0, //TFS城市道路
TFS_FREEWAY = 1 //TFS高速道路
}TFS_CHAN_MODE_TYPE
byControlType
控制类型，按位表示：0- 否，1- 是
byControlType &1, 表示是否启用抓拍功能
byControlType &2, 表示是否启用联动前端设备
byRes1
保留，置为0
wRelatedChannel
关联通道号，0表示不关联，当前仅ATM设备使用，当设置通道模式为ATM面板时，可以关联一路ATM人脸通道
byRes
保留，置为0

Remarks

  • 此处的SMART事件包括除音频异常侦测之外的所有类型事件：
  • 普通SMART球机，支持智能能力类型：SMART事件+车辆检测(默认)、SMART事件+混行检测、违章事件，三种模式相互切换均需重启。
  • iDS专业智能球机，支持智能能力类型：异常行为识别(默认)、异常行为识别+人脸抓拍、违章事件、人脸抓拍，切换为违章事件或从违章事件切换为其它模式需要重启。
  • 具体信息可以通过能力集获取：NET_DVR_GetDeviceAbility获取智能通道控制能力集（VcaCtrlAbility，能力集类型：DEVICE_ABILITY_INFO）。


NET_DVR_VCA_CTRLINFO_COND

智能控制条件参数结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struStreamInfo;
  BYTE                   byRes[64];
}NET_DVR_VCA_CTRLINFO_COND, *LPNET_DVR_VCA_CTRLINFO_COND;

Members

dwSize
结构体大小
struStreamInfo
流信息
byRes
保留，置为0


NET_DVR_VCA_DETECTION_CFG_V40

智能侦测参数配置结构体。

struct{
  DWORD                        dwSize;
  BYTE                         byEnable;
  BYTE                         byRes1[3];
  NET_DVR_SCHEDTIME            struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  DWORD                        dwHandleType;
  DWORD                        dwMaxRelAlarmOutChanNum;
  DWORD                        dwRelAlarmOut[MAX_ALARMOUT_V40];
  DWORD                        dwMaxRelRecordChanNum;
  DWORD                        dwRelRecordChan[MAX_CHANNUM_V40];
  DWORD                        dwEnablePresetChanNum;
  NET_DVR_PRESETCHAN_INFO      struPresetChanInfo[MAX_CHANNUM_V40];
  BYTE                         byRes2[516];
  DWORD                        dwEnableCruiseChanNum;
  NET_DVR_CRUISECHAN_INFO      struCruiseChanInfo[MAX_CHANNUM_V40];
  DWORD                        dwEnablePtzTrackChanNum;
  NET_DVR_PTZTRACKCHAN_INFO    struPtzTrackInfo[MAX_CHANNUM_V40];
  NET_DVR_SCHEDTIME            struHolidayTime[MAX_TIMESEGMENT_V30];
  BYTE                         byRes[224];
}NET_DVR_VCA_DETECTION_CFG_V40,*LPNET_DVR_VCA_DETECTION_CFG_V40;

Members

dwSize
结构体大小
byEnable
使能：0- 启用，1- 禁用
byRes1
保留，置为0
struAlarmSched
布防时间，每周7天，每天最多设置8个时间段
dwHandleType
处理方式，各种异常处理方式的"或"结果，异常处理方式：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200：抓图并上传ftp
0x400: 虚焦侦测联动聚焦
0x800: PTZ联动跟踪(球机跟踪目标)
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心。
dwMaxRelAlarmOutChanNum
设备最大支持报警触发的报警输出通道个数（只读）
dwRelAlarmOut
报警实际触发的报警输出通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效。报警输出口号从0开始。
例如：dwRelAlarmOut[8]开始值为0xffffffff，即联动触发第(dwRelAlarmOut[0]+1),...,(dwRelAlarmOut[7]+1)个报警输出口。
dwMaxRecordChanNum
设备最大支持报警触发的录像通道个数（只读）
dwRelRecordChan
报警实际触发的录像通道，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效。通道号从1开始。
例如，dwRelRecordChan[8]开始值为0xffffffff，即联动触发第(dwRelRecordChan[0]),...,(dwRelRecordChan[7])个报警输出口。
dwEnablePresetChanNum
当前已启用预置点的数目
struPresetChanInfo
启用的预置点信息：dwEnablePresetChanNum不为0时，struPresetChanInfo[0]~struPresetChanInfo[dwEnablePresetChanNum-1]有效；dwEnablePresetChanNum为0表示未启用任何预置点。
byRes2
保留，置为0
dwEnableCruiseChanNum
当前已启用巡航的通道数目
struCruiseChanInfo
启用巡航功能通道的信息：dwEnableCruiseChanNum不为0时，struCruiseChanInfo[0]~struCruiseChanInfo[dwEnableCruiseChanNum-1]有效；dwEnableCruiseChanNum为0表示未启用任何巡航。
dwEnablePtzTrackChanNum
当前已启云台花样扫描通道数目
struPtzTrackInfo
调用云台花样扫描的通道信息：dwEnablePtzTrackChanNum不为0时，struPtzTrackInfo[0]~struPtzTrackInfo[dwEnablePresetChanNum-1]有效；dwEnablePtzTrackChanNum为0表示未启用任何路径。
struHolidayTime
假日布防时间
byRes
保留，置为0

Remarks

仅NVR、混合型DVR的IP通道支持该智能侦测配置功能，模拟通道不支持，而且需要前端接入的IPC支持越界侦测、区域入侵、人脸侦测这些智能侦测功能。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_VCA_DETION_CFG

智能侦测参数配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          dwRelRecordChan[MAX_CHANNUM_V30];
  BYTE                           byEnablePreset[MAX_CHANNUM_V30];
  BYTE                           byPresetNo[MAX_CHANNUM_V30];
  BYTE                           byEnableCruise[MAX_CHANNUM_V30];
  BYTE                           byCruiseNo[MAX_CHANNUM_V30];
  BYTE                           byEnablePtzTrack[MAX_CHANNUM_V30];
  BYTE                           byPTZTrack[MAX_CHANNUM_V30];
  NET_DVR_SCHEDTIME              struHolidayTime[MAX_TIMESEGMENT_V30];
  BYTE                           byRes[224];
}NET_DVR_VCA_DETION_CFG,*LPNET_DVR_VCA_DETION_CFG;

Members

dwSize
结构体大小
byEnable
使能：0- 启用，1- 禁用
byRes1
保留，置为0
struAlarmSched
布防时间，每周7天，每天最多设置8个时间段
struHandleException
异常处理方式
dwMaxRelRecordChanNum
设备最大支持报警触发的录像通道个数（只读）
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
dwRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]
byEnablePreset
通道是否启动调用预置点（每个数组对应一个通道）：0-否，1-是
byPresetNo
通道调用的云台预置点序号，一个报警输入可以调用多个通道的云台预置点（每个通道仅限一个预置点）
byEnableCruise
是否调用巡航：0-否，1-是
byCruiseNo
巡航路径
byEnablePtzTrack
是否调用花样扫描：0-否，1-是
byPTZTrack
调用的云台的花样扫描路径序号
struHolidayTime
假日布防时间
byRes
保留，置为0

Remarks

仅NVR、混合型DVR的IP通道支持该智能侦测配置功能，模拟通道不支持，而且需要前端接入的IPC支持越界侦测、区域入侵、人脸侦测这些智能侦测功能。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_VCA_RULE_COLOR_CFG

智能规则关联颜色参数配置结构体。

struct{
  DWORD               dwSize;
  BYTE                byEnable;
  BYTE                byRuleID;
  BYTE                byColorBlockNo;
  BYTE                byRes1;
  NET_DVR_PIC_INFO    struPicInfo;
  BYTE                byRes[64];
}NET_DVR_VCA_RULE_COLOR_CFG, *LPNET_DVR_VCA_RULE_COLOR_CFG;

Members

dwSize
结构体大小
byEnable
是否启用颜色比对：0- 不启用，1- 启用
byRuleID
关联的规则ID，取值范围：1~16
byColorBlockNo
颜色块序号，从1开始
byRes1
保留
struPicInfo
图片颜色信息
byRes
保留

Remarks

  • 设备是否支持智能颜色块配置或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<ColorFilter>。

See Also

SMART智能：NET_DVR_StartRemoteConfig NET_DVR_SetDVRConfig

专业智能：NET_DVR_StartRemoteConfig NET_DVR_SetDVRConfig


NET_DVR_VCA_RULE_COLOR_COND

智能规则关联颜色参数查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRuleID;
  BYTE     byRes[127];
}NET_DVR_VCA_RULE_COLOR_COND, *LPNET_DVR_VCA_RULE_COLOR_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRuleID
关联的规则ID，0表示不关联（查询所有规则关联的颜色参数）
byRes
保留

See Also

SMART智能：NET_DVR_StartRemoteConfig

专业智能：NET_DVR_StartRemoteConfig


NET_DVR_VCA_VERSION

智能库版本参数结构体。

struct{
  WORD    wMajorVersion;
  WORD    wMinorVersion;
  WORD    wRevisionNumber;
  WORD    wBuildNumber;
  WORD    wVersionYear;
  BYTE    byVersionMonth;
  BYTE    byVersionDay;
  BYTE    byType;
  BYTE    byRes[7];
}NET_DVR_VCA_VERSION, *LPNET_DVR_VCA_VERSION;

Members

wMajorVersion
主版本号
wMinorVersion
次版本号
wRevisionNumber
修正号
wBuildNumber
编译号
wVersionYear
版本日期：年
byVersionMonth
版本日期：月
byVersionDay
版本日期：日
byType
算法库类型名称: 0- 保留，1- 人脸属性，2- 异常行为识别，3- 人体属性，4- 人脸抓拍，5- 人脸抓拍，6- 人脸对比，7- 学生站立检测，8- 区域人数统计，9- 人脸评分库，10- 安全帽检测
byRes
保留

See Also

NET_DVR_VCA_VERSION_LIST

NET_DVR_GetVCAVersion


NET_DVR_VCA_VERSION_LIST

算法库版本信息结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_VCA_VERSION    struVcaVersion[NET_SDK_VERSION_LIST_LEN];
  BYTE                   byRes[128];
}NET_DVR_VCA_VERSION_LIST, *LPNET_DVR_VCA_VERSION_LIST;

Members

dwSize
结构体大小
struVcaVersion
算法库版本信息列表，每位数组表示一种类型
byRes
保留

See Also

NET_DVR_GetSTDConfig


NET_DVR_VCS_USER_INFO

用户信息结构体。

struct{
  DWORD                             dwSize;
  BYTE                              sUserName[NAME_LEN];
  BYTE                              sPassWord[PASSWD_LEN];
  NET_DVR_IPADDR                    struUserIP;
  BYTE                              byMacAddr[MACADDR_LEN];
  BYTE                              byPriority;
  BYTE                              byRes1;
  DWORD                             dwRight;
  NET_DVR_ASSOCIATE_INPUT_PARAM     struInputParam[MAX_INPUTNUMS];
  NET_DVR_ASSOCIATE_OUTPUT_PARAM    struOutputParam[MAX_OUTPUTNUMS];
  BYTE                              byRes2[128];
}NET_DVR_VCS_USER_INFO,*LPNET_DVR_VCS_USER_INFO;

Members

dwSize
结构体大小
sUserName
用户名，最大16字节
sPassWord
密码
struUserIP
绑定用户IP地址(为0时表示允许任何地址)
byMacAddr
物理地址绑定(为0时表示允许任何MAC地址)
byPriority
优先级：1-管理员，2-操作员，管理员具有任何权限，操作员没有"管理用户"的权限
byRes1
保留，置为0
dwRight
远程操作权限，按位表示：0-不支持，1-支持，各32位代表的权限类型如下所示：
bit0-获取设置基本参数，bit1-显示屏管理，bit2-窗口管理，bit3-信号源管理，
bit4-布局管理，bit5-预案管理，bit6-底图管理，bit7-OSD管理，bit8-回显权限，
bit9-报警布防，bit10-远程升级，bit11-恢复默认设置，bit12-导入导出配置，
bit13-日志查询，bit14-远程重启，bit15-屏幕区域管理
struInputParam
关联的输入设备
struOutputParam
关联的输出显示屏
byRes2
保留，置为0

Remarks

多屏控制器具有一个ADMIN管理员用户和7个普通用户：管理员登陆时，普通用户不能操作；管理员没有登陆时，几个普通用户可以同时操作。管理员具有所有操作权限（包括屏幕和设备），能够添加、修改、删除普通用户信息。

参数struUserIP、byMacAddr、struInputParam、struOutputParam在集中式多屏控制器V2.1中无效。

设置操作员用户参数时，用户名（sUserName）为空表示删除相应用户。

See Also

LCD拼接屏：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

SDI矩阵：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VD_INFO

单个虚拟磁盘参数结构体。

struct{
  WORD                wSlot;
  BYTE                byStatus;
  BYTE                byRaidMode;
  WORD                wArrayID;
  BYTE                byRepair;
  BYTE                byUsage;
  BYTE                byArrayName[MAX_NAMELEN];
  BYTE                byName[MAX_NAMELEN];
  DWORD               dwHCapacity;
  DWORD               dwLCapacity;
  DWORD               dwHFreeSpace;
  DWORD               dwLFreeSpace;
  NET_DVR_BGA_INFO    struBgaInfo;
  DWORD               dwBlockSize;
  NET_DVR_IPADDR      struWarrantIP;
  char                szArrayGroup[NAME_LEN];
  BYTE                byRes[20];
}NET_DVR_VD_INFO, *LPNET_DVR_VD_INFO;

Members

wSlot
虚拟磁盘槽位
byStatus
虚拟磁盘状态：0-正常，1-降级，2-已删除，3-磁盘丢失，4-下线，5-次正常，6-外来
byRaidMode
RAID方式，具体定义如下：
enum _RAID_MODE_{
  RAID0 = 1,
  RAID1,
  RAID10,
  RAID1E,
  RAID5,
  RAID6,
  RAID50,
  JBOD,
  RAID60
}RAID_MODE
RAID0
RAID0方式
RAID1
RAID1方式
RAID10
RAID10方式
RAID1E
RAID1E方式
RAID5
RAID5方式
RAID6
RAID6方式
RAID50
RAID50方式
JBOD
JBOD方式
RAID60
RAID60方式
wArrayID
所属阵列ID
byRepair
是否需要修复：0-不需要，1-需要
byUsage
LUN卷的使用方式：0- iSCSI，1- FC，2- DVR，3- NAS，4- CVR，5- CVR_WILLBACKUP，6- FREE
byArrayName
阵列名称
byName
虚拟磁盘名称
dwHCapacity
虚拟磁盘容量高32位)
dwLCapacity
虚拟磁盘容量低32位
dwHFreeSpace
虚拟磁盘剩余空间高32位
dwLFreeSpace
虚拟磁盘剩余空间低32位
struBgaInfo
后台任务运行状态
dwBlockSize
最小存储单元块大小
struWarrantIP
授权的DVR网盘IP
szArrayGroup
使用的阵列名称组，多个阵列名称之间以逗号隔开，为空则使用默认阵列
byRes
保留，置为0

See Also

NET_DVR_VD_LIST


NET_DVR_VD_LIST

虚拟磁盘参数结构体。

struct{
  DWORD              dwSize;
  DWORD              dwCount;
  NET_DVR_VD_INFO    struVDInfo[SUPPORT_VD_NUM];
}NET_DVR_VD_LIST, *LPNET_DVR_VD_LIST;

Members

dwSize
结构体大小
dwCount
虚拟磁盘个数
struVDInfo
单个虚拟磁盘信息

See Also

NET_DVR_GetVDList


NET_DVR_VD_SLOT

单个虚拟磁盘阵列分配参数结构体。

struct{
  WORD    wVDSlot;
  BYTE    byAlloc;
  BYTE    byRes[5];
  DWORD   dwHVDSlotSize;
  DWORD   dwLVDSlotSize;
}NET_DVR_VD_SLOT, *LPNET_DVR_VD_SLOT;

Members

wVDSlot
虚拟磁盘槽位号
byAlloc
是否已经分配：0-未分配，1-已分配
byRes
保留
dwHVDSlotSize
虚拟磁盘空间大小高32位
dwLVDSlotSize
虚拟磁盘空间大小低32位

See Also

NET_DVR_ARRAY_SPACE_ALLOC_INFO


NET_DVR_VD_UNION

虚拟磁盘参数联合体。

struct{
  BYTE                        byUnionLen[256];
  NET_DVR_OPERATE_VD_PARAM    struPrivtVDParam;
  NET_DVR_LUN_PARAM           struLunParam;
  NET_DVR_DVR_PARAM           struDvrParam;
}NET_DVR_VD_UNION, *LPNET_DVR_VD_UNION;

Members

byUnionLen
联合体长度，256字节
struPrivtVDParam
厂家私有虚拟磁盘类型
struLunParam
逻辑卷
struDvrParam
DVR网盘

See Also

NET_DVR_OPERATE_VD_PARAM_EX


NET_DVR_VEHICLE_ADDINFO

车辆附加信息结构体。

struct{
  NET_DVR_LLPOS_PARAM    struLLPos;
  char                   sVehicleNo[LEN_64];
  BYTE                   byVehicleMonitorTaskID[64];
  BYTE                   byUUID[LEN_64];
  BYTE                   byRes[832];
}NET_DVR_VEHICLE_ADDINFO, *LPNET_DVR_VEHICLE_ADDINFO;

Members

struLLPos
车辆当前经纬度位置信息
sVehicleNo
上传的车辆唯一标识，最大长度为64
byVehicleMonitorTaskID
车辆智能布防任务ID，64位字符串，创建任务时由上层下发给设备，上层确保ID唯一性
byUUID
通用唯一识别码，64位字符串，设备确保唯一性，用于跨服务器关联同一次抓拍，与vehicleMonitor、manualVehicleMonitor、dailyVehicleMonitor报警中的linkageANPRUUID有关
byRes
保留

See Also

NET_DVR_TFS_ALARM NET_DVR_PLATE_INFO


NET_DVR_VEHICLE_CHECK

非授权名单稽查数据参数结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwChannel;
  NET_DVR_PLATE_INFO    struPlateInfo;
  WORD                  wIllegalType;
  BYTE                  byRes[2];
  char                  sIllegalTypeInfo[128];
  NET_DVR_TIME_V30      struIllegalTime;
  BYTE                  byIllegalVehicleNum;
  BYTE                  byRes1[3];
  char                  sCustomInfo[64];
  BYTE                  byRes2[128];
}NET_DVR_VEHICLE_CHECK,*LPNET_DVR_VEHICLE_CHECK;

Members

dwSize
结构体大小
dwChannel
通道号，0xff表示全部通道（默认是1，代表通道01）
struPlateInfo
车牌信息
wIllegalType
违章类型，采用国标定义
byRes
保留，置为0
sIllegalTypeInfo
违规类型信息
struIllegalTime
违规时间
byIllegalVehicleNum
车辆违法次数
byRes1
保留，置为0
sCustomInfo
自定义信息
byRes2
保留，置为0

See Also

NET_DVR_SendRemoteConfig


NET_DVR_VEHICLE_CONTROL

车辆信息管控参数结构体。

struct{
  BYTE    byGateOperateType;
  BYTE    byRes1;
  WORD    wAlarmOperateType;
  BYTE    byRes2[8];
}NET_DVR_VEHICLE_CONTROL,*LPNET_DVR_VEHICLE_CONTROL;

Members

byGateOperateType
操作类型：0- 无操作，1- 开道闸
byRes1
保留，置为0
wAlarmOperateType
报警处理类型：0- 无操作，bit0- 继电器输出报警，bit1- 布防上传报警，bit3- 告警主机上传，值：0-表示关，1-表示开，可复选
byRes2
保留，置为0

See Also

NET_DVR_ENTRANCE_CFG


NET_DVR_VEHICLE_CONTROL_ALARM

车辆报警（非授权名单）报警信息结构体。

struct{
  DWORD               dwSize;
  BYTE                byListType;
  BYTE                byPlateType;
  BYTE                byPlateColor;
  BYTE                byRes1;
  char                sLicense[MAX_LICENSE_LEN];
  char                sCardNo[MAX_CARDNO_LEN];
  NET_DVR_TIME_V30    struAlarmTime;
  DWORD               dwChannel;
  DWORD               dwPicDataLen;
  BYTE                byPicType;
  BYTE                byRes3[3];
  char                *pPicData;
  BYTE                byRes2[48];
}NET_DVR_VEHICLE_CONTROL_ALARM,*LPNET_DVR_VEHICLE_CONTROL_ALARM;

Members

dwSize
结构体大小
byListType
名单属性（非授权名单）：0- 授权名单，1- 非授权名单，2- 临时名单
byPlateType
车牌类型，取值详见枚举类型：VCA_PLATE_TYPE
byPlateColor
车牌颜色，取值详见枚举类型：VCA_PLATE_COLOR
byRes1
保留，置为0
sLicense
车牌号码
sCardNo
卡号
struAlarmTime
报警时间
dwChannel
设备通道号（如果直连的是IPC，则为IPC通道号；如果连的DVR\NVR，则为DVR\NVR的通道号）
dwPicDataLen
图片数据大小，0表示无图片，不为0是表示后面带图片数据
byPicType
图片类型：0- JPEG，1- BMP，2- PNG
byRes3
保留，置为0
pPicData
图片数据缓冲区，JPEG图片
byRes2
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_VEHICLE_CONTROL_COND

车辆非授权名单信息获取条件结构体。

struct{
  DWORD    dwChannel;
  DWORD    dwOperateType;
  char     sLicense[MAX_LICENSE_LEN];
  char     sCardNo[MAX_CARDNO_LEN];
  BYTE     byListType;
  BYTE     byRes1[3];
  DWORD    dwDataIndex;
  BYTE     byRes[116];
}NET_DVR_VEHICLE_CONTROL_COND,*LPNET_DVR_VEHICLE_CONTROL_COND;

Members

dwChannel
通道号，0xffffffff表示全部通道（ITC 默认是1）
dwOperateType
操作类型（可复选），具体类型如下：
enum _VCA_OPERATE_TYPE_{
  VCA_LICENSE_TYPE       = 0x1,
  VCA_PLATECOLOR_TYPE    = 0x2,
  VCA_CARDNO_TYPE        = 0x4,
  VCA_PLATETYPE_TYPE     = 0x8,
  VCA_LISTTYPE_TYPE      = 0x10,
  VCA_INDEX_TYPE         = 0x20,
  VCA_OPERATE_INDEX_TYPE = 0x40
}VCA_OPERATE_TYPE
VCA_LICENSE_TYPE
车牌号码
VCA_PLATECOLOR_TYPE
车牌颜色
VCA_CARDNO_TYPE
卡号
VCA_PLATETYPE_TYPE
车牌类型
VCA_LISTTYPE_TYPE
车辆名单类型
VCA_INDEX_TYPE
数据流水号
VCA_OPERATE_INDEX_TYPE
操作数
sLicense
车牌号码
sCardNo
卡号
byListType
名单属性（非授权名单）：0- 授权名单，1- 非授权名单，0xff- 全部
byRes1
保留，置为0
dwDataIndex
数据流水号
byRes
保留，置为0

Remarks

同步操作数用来标记平台更新到哪个操作，为同步记录表的流水号，主要是平台进行增量数据同步时使用。数据流水号是具体描述：操作的是平台数据表哪一条记录，因为平台中非授权名单是分开的两个表，前端相机需要根据数据流水号+类型来唯一定位一条数据记录。同步操作数和数据流水号均由平台进行控制，通过这两个字段可以对外提供非授权名单增量更新的功能。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_VEHICLE_CONTROL_DELINFO

非授权名单数据库删除信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDelType;
  char     sLicense[MAX_LICENSE_LEN];
  char     sCardNo[MAX_CARDNO_LEN];
  BYTE     byPlateType;
  BYTE     byPlateColor;
  BYTE     byOperateType;
  BYTE     byListType;
  DWORD    dwDataIndex;
  char     sOperateIndex[MAX_OPERATE_INDEX_LEN];
  BYTE     byRes[24];
}NET_DVR_VEHICLE_CONTROL_DELINFO,*LPNET_DVR_VEHICLE_CONTROL_DELINFO;

Members

dwSize
结构体大小
dwDelType
删除条件类型（可复选，byOperateType为0时有效），具体定义如下：
enum _VCA_OPERATE_TYPE_{
  VCA_LICENSE_TYPE       = 0x1,
  VCA_PLATECOLOR_TYPE    = 0x2,
  VCA_CARDNO_TYPE        = 0x4,
  VCA_PLATETYPE_TYPE     = 0x8,
  VCA_LISTTYPE_TYPE      = 0x10,
  VCA_INDEX_TYPE         = 0x20,
  VCA_OPERATE_INDEX_TYPE = 0x40
}VCA_OPERATE_TYPE
VCA_LICENSE_TYPE
车牌号码
VCA_PLATECOLOR_TYPE
车牌颜色
VCA_CARDNO_TYPE
卡号
VCA_PLATETYPE_TYPE
车牌类型
VCA_LISTTYPE_TYPE
车辆名单类型
VCA_INDEX_TYPE
数据流水号
VCA_OPERATE_INDEX_TYPE
操作数
sLicense
车牌号码
sCardNo
卡号
byPlateType
车牌类型，取值详见枚举类型：VCA_PLATE_TYPE
byPlateColor
车牌颜色，取值详见枚举类型：VCA_PLATE_COLOR
byOperateType
删除操作类型：0- 条件删除，0xff- 删除全部
byListType
名单属性（非授权名单）：0- 授权名单，1- 非授权名单
dwDataIndex
数据流水号（平台非授权名单表和授权名单表的流水号，在这里有可能会重复，要与byListType配合才能唯一确定一条记录）
sOperateIndex
操作数
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_VEHICLE_CONTROL_LIST_DSALARM

非授权名单数据需要同步报警信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDataIndex;
  char     sOperateIndex[MAX_OPERATE_INDEX_LEN];
  BYTE     byRes[32];
}NET_DVR_VEHICLE_CONTROL_LIST_DSALARM,*LPNET_DVR_VEHICLE_CONTROL_LIST_DSALARM;

Members

dwSize
结构体大小
dwDataIndex
数据流水号（这个值返回设备当前接收到的数据的最后一个数据流水号，平台同步的时候从下一个流水号开始同步）
sOperateIndex
操作数（平台同步表流水号不会重复，用于增量更新，代表同步到同步表的某一条记录了，存在相机内存，重启后会清0）
byRes
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_VEHICLE_CONTROL_LIST_INFO

出入口非授权名单的数据同步信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwChannel;
  DWORD               dwDataIndex;
  char                sLicense[MAX_LICENSE_LEN];
  BYTE                byListType;
  BYTE                byPlateType;
  BYTE                byPlateColor;
  BYTE                byRes[21];
  char                sCardNo[MAX_CARDNO_LEN];
  NET_DVR_TIME_V30    struStartTime;
  NET_DVR_TIME_V30    struStopTime;
  char                sOperateIndex[MAX_OPERATE_INDEX_LEN];
  BYTE                byRes1[224];
}NET_DVR_VEHICLE_CONTROL_LIST_INFO,*LPNET_DVR_VEHICLE_CONTROL_LIST_INFO;

Members

dwSize
结构体大小
dwChannel
通道号，0xffffffff表示全部通道（ITC 默认是1）
dwDataIndex
数据流水号（平台维护的数据唯一值，客户端操作的时候，该值不会起效。该值主要用于数据增量同步）
sLicense
车牌号码
byListType
名单属性（非授权名单）：0- 授权名单，1- 非授权名单
byPlateType
车牌类型，取值详见枚举类型：VCA_PLATE_TYPE
byPlateColor
车牌颜色，取值详见枚举类型：VCA_PLATE_COLOR
byRes
保留，置为0
sCardNo
卡号
struStartTime
有效开始时间
struStopTime
有效结束时间
sOperateIndex
同步操作数（平台同步表流水号不会重复，用于增量更新，代表同步到同步表的某一条记录了，存在相机内存，重启后会清0）
byRes2
保留，置为0

Remarks

同步操作数用来标记平台更新到哪个操作，为同步记录表的流水号，主要是平台进行增量数据同步时使用。数据流水号是具体描述：操作的是平台数据表哪一条记录，因为平台中非授权名单是分开的两个表，前端相机需要根据数据流水号+类型来唯一定位一条数据记录。同步操作数和数据流水号均由平台进行控制，通过这两个字段可以对外提供非授权名单增量更新的功能。

See Also

NET_DVR_SendRemoteConfig


NET_DVR_VEHICLE_INFO

车辆信息参数结构体。

struct{
  DWORD    dwIndex;
  BYTE     byVehicleType;
  BYTE     byColorDepth;
  BYTE     byColor;
  BYTE     byRaderState;
  WORD     wSpeed;
  WORD     wLength;
  BYTE     byIllegalType;
  BYTE     byVehicleLogoRecog;
  BYTE     byVehicleSubLogoRecog;
  BYTE     byVehicleModel;
  BYTE     byCustomInfo[16];
  WORD     wVehicleLogoRecog;
  BYTE     byIsParking;
  BYTE     byRes;
  DWORD    dwParkingTime;
  BYTE     byBelieve;
  BYTE     byCurrentWorkerNumber;
  BYTE     byCurrentGoodsLoadingRate;
  BYTE     byDoorsStatus;
  BYTE     byRes3[4];
}NET_DVR_VEHICLE_INFO, *LPNET_DVR_VEHICLE_INFO;

Members

dwIndex
车辆序号
byVehicleType
车辆类型，0-其他车辆，1-小型车，2-大型车，3- 行人触发，4- 二轮车触发，5- 三轮车触发，6- 机动车触发
byColorDepth
车身颜色深浅，0-深色，1-浅色
byColor
车身颜色，0-其他色，1-白色，2-银色，3-灰色，4-黑色，5-红色，6-深蓝，7-蓝色，8-黄色，9-绿色，10-棕色，11-粉色，12-紫色，13-深灰，14-青色，0xff-未进行车身颜色识别
byRaderState
雷达状态：0-雷达正常，1-雷达故障，2-雷达一直发送某一个相同速度值，3-雷达送出数据为0，4-雷达送出的数据过大或过小
wSpeed
车辆速度，单位km/h
wLength
车身长度
byIllegalType
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-吸烟。对于ITS终端服务器，该参数无效，违法类型通过NET_ITS_PLATE_RESULT中的wIllegalType进行判断。
byVehicleLogoRecog
车辆主品牌
byVehicleSubLogoRecog
车辆子品牌，根据不同的主类型，子品牌取值定义不同
byVehicleModel
车辆子品牌年款，根据不同的主类型，子品牌年款取值定义不同
byCustomInfo
自定义信息
wVehicleLogoRecog
车辆主品牌(该字段兼容byVehicleLogoRecog)
byIsParking
是否停车 0-无效，1-停车，2-未停车
byRes
保留字节
dwParkingTime
停车时间，单位：s
byBelieve
byIllegalType置信度，1-100
byCurrentWorkerNumber
当前作业人数
byCurrentGoodsLoadingRate
当前货物装载率 0-空 1-少 2-中 3-多 4-满
byDoorsStatus
车门状态 0-车门关闭 1-车门开启
byRes3
保留

Remarks

车辆主品牌以及对应的子品牌、子品牌年款取值，请参考相应的品牌字典对应关系列表。

See Also

NET_DVR_PLATE_RESULT_V50


NET_DVR_VEHICLE_INFO_CFG

车辆信息查询结果结构体。

struct{
  DWORD              dwSize;
  DWORD              dwIndex;
  BYTE               byDeviceID[DEVICE_ID_LEN];
  BYTE               byBelieve;
  BYTE               byDir;
  BYTE               byLineID;
  BYTE               byRes1;
  NET_DVR_TIME_EX    struSnapTime;
  char               sLicense[MAX_LICENSE_LEN_EX];
  BYTE               byMonitoringSiteID[MONITORSITE_ID_LEN];
  BYTE               byCountry;
  BYTE               byMatchingResult;
  BYTE               byArea;
  BYTE               byPlateType;
  char               sDeviceName[NAME_LEN];
  BYTE               byPlateColor;
  BYTE               byPlateSize;
  BYTE               byRes2[2];
  char               sPlateCategory[MAX_CATEGORY_LEN];
  char               sPlateImageURL[URL_LEN_V40];
  char               sEffectiveTime[ISO_8601_LEN];
  BYTE               byRes[176];
}NET_DVR_VEHICLE_INFO_CFG,*LPNET_DVR_VEHICLE_INFO_CFG;

Members

dwSize
结构体大小
dwIndex
序号
byDeviceID
设备编号
byBelieve
置信度，取值范围：0~100
byDir
方向：0- 无意义，1- 反向，2- 正向，3- 未知
byLineID
车道号
byRes1
保留，置为0
struSnapTime
抓拍时间
sLicense
车牌号码
byMonitoringSiteID
监测点编号
byCountry
国家索引值，取值定义详见COUNTRY_INDEX，不支持0xff(全部)
byMatchingResult
非授权名单匹配结果：0- 保留，1- 授权名单，2- 非授权名单，3- 其他
byArea
区域（省份），各国家内部区域枚举，阿联酋参照 EMI_AREA
byPlateType
车牌类型 参考 VCA_PLATE_TYPE
sDeviceName
设备名称
byPlateColor
车牌颜色 参考 VCA_PLATE_COLOR
byPlateSize
车牌尺寸，0~未知，1~long, 2~short(中东车牌使用)
byRes2
保留，置为0
sPlateCategory
车牌附加信息, 即车牌小字信息，(目前只有中东地区支持)
sPlateImageURL
车牌小图URL
sEffectiveTime
车牌信息有效时间，使用ISO8601 time格式，如：2009-11-14T15:27Z
byRes
保留，置为0

Remarks

  • 设备是否支持车辆信息查询或者支持的参数能力，可以通过设备能力集进行判断，对应车辆信息查询结果能力集(VehicleInfoResultCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_VEHICLLE_RESULT_CAPABILITIES。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_VEHICLE_INFO_COND

车辆信息查询条件参数结构体。

struct{
  DWORD              dwSize;
  NET_DVR_TIME_EX    strStartTime;
  NET_DVR_TIME_EX    strStopTime;
  char               sLicense[MAX_LICENSE_LEN_EX];
  DWORD              dwChannel;
  BYTE               byRegion;
  BYTE               byRes[127];
}NET_DVR_VEHICLE_INFO_COND,*LPNET_DVR_VEHICLE_INFO_COND;

Members

dwSize
结构体大小
strStartTime
开始时间
strStopTime
结束时间
sLicense
车牌号码
dwChannel
通道号
byRegion
区域索引值：0- 保留，1- 欧洲(Europe Region)，2- 俄语区域(Russian Region)，3- 欧洲&俄罗斯(EU&CIS)，0xff- 所有
byRes
保留，置为0

Remarks

  • 设备是否支持车辆信息查询或者支持的参数能力，可以通过设备能力集进行判断，对应车辆信息查询结果能力集(VehicleInfoResultCap)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_VEHICLLE_RESULT_CAPABILITIES。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_VEHICLE_PARA

车辆检测信息结构体。

struct{
  BYTE    sLicense[MAX_LICENSE_LEN];
  BYTE    byCountry;
  BYTE    byRes[239];
}NET_DVR_VEHICLE_PARA, *LPNET_DVR_VEHICLE_PARA;

Members

sLicense
车牌号码
byCountry
国家索引值：0-算法库不支持牌识国家，1-捷克共和国(CZ - Czech Republic)，2-法国(FRA - France)，3-德国(DE - Germany)，4-西班牙(E - Spain)，5-意大利(IT - Italy)，6-荷兰(NL - Netherlands)，7-波兰(PL - Poland)，8-斯洛伐克(SVK - Slovakia)，9-白俄罗斯(BY - Belorussia)，10-摩尔多瓦(MDA - Moldova)，11-俄罗斯(RU - Russia)，12-乌克兰(UA - Ukraine)，169-加拿大(Canada), 172-美国(US), 227-澳大利亚(Australia),0xfe-无法识别
byRes
保留

See Also

NET_DVR_SMARTSEARCH_PIC_UNION


NET_DVR_VEHICLE_RECOG_CFG

车辆二次识别任务配置结构体。

struct{
  DWORD               dwSize;
  char                sDataIndex[64];
  WORD                wTaskNo;
  BYTE                byRes1[2];
  NET_VCA_RECT        struPlateRect;
  char                sLicense[MAX_LICENSE_LEN];
  DWORD               dwRecogOperate;
  DWORD               dwDataUploadType;
  DWORD               dwPostID;
  NET_DVR_TIME_V30    struPostTime;
  DWORD               dwJsonLen;
  DWORD               *pJsonBuffer;
  BYTE                byRes[107];
  BYTE                byPicDataType;
  char                sPicDataPath[256];
}NET_DVR_VEHICLE_RECOG_CFG, *LPNET_DVR_VEHICLE_RECOG_CFG;

Members

dwSize
结构体大小
sDataIndex
数据流水号
wTaskNo
任务处理号
byRes1
保留，置为0
struPlateRect
车牌位置，归一化值，相对于场景图
sLicense
车牌号码
dwRecogOperate
车辆图片二次识别操作，按位表示：
bit0- 车牌识别：0-不启用识别，1-启用识别
bit1- 车辆类型识别：0-不启用识别，1-启用识别
bit2- 车身颜色识别：0-不启用识别，1-启用识别
bit3- 车辆品牌识别：0-不启用识别，1-启用识别
bit4- 遮挡板识别(主驾驶)：0-不启用识别，1-启用识别
bit5- 安全带识别(主驾驶)：0-不启用识别，1-启用识别
bit6- 遮挡板识别(副驾驶)：0-不启用识别，1-启用识别
bit7- 安全带识别(副驾驶)：0-不启用识别，1-启用识别
bit8- 车辆图片叠加使能：0-不启用识别，1-启用识别
bit9- 上传车辆图片使能(通过SDK)：0-不启用识别，1-启用识别
bit10-上传车辆图片使能(通过URL)：0-不启用识别，1-启用识别
dwDataUploadType
车辆图片数据上传，按位表示：
bit0- 车牌图片：0-不上传，1-上传
bit1- 车辆图片：0-不上传，1-上传
bit2- 人脸子图(主驾驶)：0-不上传，1-上传
bit3- 人脸子图(副驾驶)：0-不上传，1-上传
bit4- 安全带子图(主驾驶)：0-不上传，1-上传
bit5- 安全带子图(副驾驶)：0-不上传，1-上传
dwPostID
卡口ID
struPostTime
过车时间
dwJsonLen
Json数据长度
pJsonBuffer
Json数据指针，详细内容请参考车辆识别任务提交Json数据结构
byRes
保留，置为0
byPicDataType
图片数据类型：0- 数据直接上传，1- 云存储服务器URL
sPicDataPath
图片数据：
byPicDataType为0时，表示本地PC上的图片路径，包括文件名的绝对路径，例如："C:/test.jpg"
byPicDataType为1时，表示云存储服务器URL

Remarks

  • 车辆二次识别功能，即可以将图片从本地或者云存储服务器上传到设备，进行二次检测，识别图片里面的车辆、车牌等信息，上传的图片格式需要设备支持，目前设备只支持jpg格式。
  • 如果设备使用报警布防方式，该结构体中的wTaskNo，与布防连接(NET_DVR_SETUPALARM_PARAM)和上传检测结果信息(NET_DVR_VEHICLE_RECOG_RESULT)里面的任务号都是对应的，例如：布防链接中wTaskNo==1，任务A中wTaskNo==1，结果信息回调wTaskNo==1（该信息回调只在布防中wTaskNo为1的链接中回调）。

See Also

NET_DVR_SetDeviceConfigEx NET_DVR_SetDeviceConfig


NET_DVR_VEHICLE_RECOG_COND

车辆二次识别任务提交条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[64];
}NET_DVR_VEHICLE_RECOG_COND, *LPNET_DVR_VEHICLE_RECOG_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRes
保留，置为0

Remarks

  • 设备是否支持车辆二次识别或者支持的参数能力，可以通过设备能力集进行判断，对应车辆二次识别检测能力集(VehicleRecogAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_SetDeviceConfigEx NET_DVR_SetDeviceConfig


NET_DVR_VEHICLE_RECOG_RESULT

车辆二次识别结果信息结构体。

struct{
  DWORD               dwSize;
  char                sDataIndex[DATA_INDEX_LEN];
  WORD                wTaskNo;
  BYTE                byRes[2];
  NET_VCA_RECT        struPlateRect;
  char                sLicense[MAX_LICENSE_LEN];
  BYTE                byVehicleType;
  BYTE                byColorDepth;
  BYTE                byColor;
  BYTE                byVehicleLogoRecog;
  BYTE                byVehicleSubLogoRecog;
  BYTE                byPilotSafebelt;
  BYTE                byCopilotSafebelt;
  BYTE                byPilotSunVisor;
  BYTE                byCopilotSunVisor;
  BYTE                byVehicleModel;
  BYTE                wVehicleLogoRecog;
  BYTE                byRes1[251];
  BYTE                byDataType;
  DWORD               dwPicType;
  BYTE                *pVehicleBuffer;
  DWORD               dwVehicleBufferLen;
  BYTE                *pPlateBuffer;
  DWORD               dwPlateBufferLen;
  BYTE                *pPilotFaceBuffer;
  DWORD               dwPilotFaceBufferLen;
  BYTE                *pCopilotFaceBuffer;
  DWORD               dwCopilotFaceBufferLen;
  BYTE                *pPilotSafebeltBuffer;
  DWORD               dwPilotSafebeltBufferLen;
  BYTE                *pCopilotSafebeltBuffer;
  DWORD               dwCopilotSafebeltBufferLen;
  NET_VCA_RECT        struVehicleRect;
  NET_VCA_RECT        struPilotRect;
  NET_VCA_RECT        struCopilotRect;
  BYTE                *pJsonBuffer;
  DWORD               dwJsonBufferLen;
  DWORD               dwPostID;
  NET_DVR_TIME_V30    struPostTime;
  BYTE                byRes2[56];
}NET_DVR_VEHICLE_RECOG_RESULT, *LPNET_DVR_VEHICLE_RECOG_RESULT;

Members

dwSize
结构体大小
sDataIndex
数据流水号
wTaskNo
任务处理号，与布防连接(NET_DVR_SETUPALARM_PARAM)和车辆二次识别任务提交(NET_DVR_VEHICLE_RECOG_CFG)里面的wTaskNo都是对应的
byRes
保留，置为0
struPlateRect
车牌位置，归一化值，相对于场景图
sLicense
车牌号码
byVehicleType
车型识别：0- 未知，1- 客车(大型)，2- 货车(大型)，3- 轿车(小型)，4- 面包车，5- 小货车，6- 行人，7- 二轮车，8- 三轮车，9- SUV/MPV，10- 中型客车
byColorDepth
车身颜色深浅：0- 深色，1- 浅色
byColor
车身颜色：0-其他色，1-白色，2-银色，3-灰色，4-黑色，5-红色，6-深蓝，7-蓝色，8-黄色，9-绿色，10-棕色，11-粉色，12-紫色，13-深灰，14-青色，0xff-未进行车身颜色识别
byVehicleLogoRecog
车辆主品牌，定义详见VLR_VEHICLE_CLASS
byVehicleSubLogoRecog
车辆子品牌，根据不同的主类型，次类型取值定义不同
byPilotSafebelt
主驾驶员是否系安全带：0- 未知，1- 未系安全带，2- 系安全带
byCopilotSafebelt
副驾驶员是否系安全带(保留，暂不支持)：0- 未知，1- 未系安全带，2- 系安全带
byPilotSunVisor
主驾驶是否打开遮阳板：0- 未知，1- 未打开遮阳板，2- 打开遮阳板
byCopilotSunVisor
副驾驶是否打开遮阳板：0- 未知，1- 未打开遮阳板，2- 打开遮阳板
byVehicleModel
车辆子品牌年款，根据不同的主类型，子品牌年款取值定义不同
wVehicleLogoRecog
车辆主品牌(该字段兼容byVehicleLogoRecog)，定义详见VLR_VEHICLE_CLASS
byRes1
保留，置为0
byDataType
数据上传方式：0-数据直接上传；1-云存储服务器URL（原先的图片数据变成URL数据，图片长度变成URL长度）
dwPicType
上传图片类型信息，0表示无图片信息，其他取值按位表示：
bit0- 车辆图：0- 不上传，1- 上传
bit1- 车牌图：0- 不上传，1- 上传
bit2- 人脸子图(主驾驶)：0- 不上传，1- 上传
bit3- 人脸子图(副驾驶)：0- 不上传，1- 上传
bit4- 安全带识别(主驾驶)：0- 不上传，1- 上传
bit5- 安全带识别(副驾驶)：0- 不上传，1- 上传
pVehicleBuffer
车辆图片数据指针
dwVehicleBufferLen
车辆图片数据长度
pPlateBuffer
车牌图片数据指针
dwPlateBufferLen
车牌图片数据长度
pPilotFaceBuffer
人脸子图(主驾驶)图片数据指针
dwPilotFaceBufferLen
人脸子图(主驾驶)图片数据长度
pCopilotFaceBuffer
人脸子图(副驾驶)图片数据指针
dwCopilotFaceBufferLen
人脸子图(副驾驶)图片数据长度
pPilotSafebeltBuffer
安全带识别(主驾驶)图片数据指针
dwPilotSafebeltBufferLen
安全带识别(主驾驶)图片数据长度
pCopilotSafebeltBuffer
安全带识别(副驾驶)图片数据指针
dwCopilotSafebeltBufferLen
安全带识别(副驾驶)图片数据长度
struVehicleRect
车身矩形坐标
struPilotRect
主驾驶矩形坐标
struCopilotRect
副驾驶矩形坐标
pJsonBuffer
Json数据指针，详细内容请参考车辆识别报警信息Json数据结构
dwJsonBufferLen
Json数据长度
dwPostID
卡口ID
struPostTime
过车时间
byRes2
保留，置为0

Remarks

  • 车辆主品牌对应的子品牌取值，需要相应设备提供品牌对应关系列表。
  • 设备是否支持车辆二次识别能力（包括是否支持Json数据上传），可以通过设备能力集进行判断，对应车辆二次识别检测能力集(VehicleRecogAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_DVR_VEHICLE_RECOG_TASK_COND

车辆二次识别任务信息查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  char     sDataIndex[64];
  WORD     wTaskNo;
  BYTE     byTask;
  BYTE     byRes1;
  char     sDevDataIndex[MAX_DEV_DATAINDEX_LEN];
  BYTE     byRes[60];
}NET_DVR_VEHICLE_RECOG_TASK_COND, *LPNET_DVR_VEHICLE_RECOG_TASK_COND;

Members

dwSize
结构体大小
dwChannel
通道号
sDataIndex
数据流水号，0表示查询全部任务
wTaskNo
任务处理号，0表示查询全部任务
byTask
需要查询的任务状态，按位表示：
bit0- 完成状态的任务：0-不查询，1-查询
bit1- 执行中的任务：0-不查询，1-查询
bit2- 等待中的任务：0-不查询，1-查询
byRes1
保留，置为0
sDevDataIndex
设备数据流水号，每次提交任务后设备会自行生成唯一的流水号（NET_DVR_VEHICLERECOG_TASK_RESULT中sDevDataIndex）
byRes
保留，置为0

Remarks

  • 设备是否支持车辆二次识别或者支持的参数能力，可以通过设备能力集进行判断，对应车辆二次识别检测能力集(VehicleRecogAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • 数据流水号（sDataIndex）是平台在提交任务时自己定义并且下发给设备的，由平台进行管理；设备数据流水号（sDevDataIndex）是平台提交任务给设备之后，设备自动生成返回的，由设备进行管理。使用sDataIndex流水号可以判断区分识别的数据，使用sDevDataIndex可以查询平台提交的识别任务。设备是否支持设备数据流水号（sDevDataIndex）可以通过车辆二次识别检测能力集中的<isSupportVehRecogTaskV50>节点进行判断。

See Also

NET_DVR_StartRemoteConfig


NET_DVR_VEHICLE_RECOG_TASK_INFO

车辆二次识别任务信息结构体。

struct{
  DWORD               dwSize;
  DWORD               dwChannel;
  BYTE                sDataIndex[64];
  WORD                wTaskNo;
  WORD                wTaskProgress;
  BYTE                byTaskState;
  BYTE                byRes1[3];
  DWORD               dwRecogOperate;
  DWORD               dwPostID;
  NET_DVR_TIME_V30    struPostTime;
  DWORD               dwJsonLen;
  BYTE                *pJsonBuffer;
  BYTE                byRes[104];
}NET_DVR_VEHICLE_RECOG_TASK_INFO, *LPNET_DVR_VEHICLE_RECOG_TASK_INFO;

Members

dwSize
结构体大小
dwChannel
通道号
sDataIndex
数据流水号
wTaskNo
任务处理号
wTaskProgress
任务执行进度（实际进度*1000），例如：wTaskProgress为1000时，实际进度为1，也就是进度为100%
byTaskState
任务状态：0- 等待中，1- 执行中，2- 完成
byRes1
保留，置为0
dwRecogOperate
车辆图片二次识别操作，按位表示：
bit0- 车牌识别：0-不启用识别，1-启用识别
bit1- 车辆类型识别：0-不启用识别，1-启用识别
bit2- 车身颜色识别：0-不启用识别，1-启用识别
bit3- 车辆品牌识别：0-不启用识别，1-启用识别
bit4- 遮挡板识别(主驾驶)：0-不启用识别，1-启用识别
bit5- 安全带识别(主驾驶)：0-不启用识别，1-启用识别
bit6- 遮挡板识别(副驾驶)：0-不启用识别，1-启用识别
bit7- 安全带识别(副驾驶)：0-不启用识别，1-启用识别
bit8- 车辆图片叠加使能：0-不启用识别，1-启用识别
bit9- 上传车辆图片使能(通过SDK)：0-不启用识别，1-启用识别
bit10-上传车辆图片使能(通过URL)：0-不启用识别，1-启用识别
dwPostID
卡口ID
struPostTime
过车时间
dwJsonLen
Json数据长度，保留，暂不支持
pJsonBuffer
Json数据指针，保留，暂不支持
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_VEHICLE_WEIGHT_RESULT

车辆二次识别任务提交结果信息结构体。

struct{
  BYTE     byIsOverWeight;
  BYTE     byAxleNum;
  WORD     wAxleModel;
  float    fOverWeight;
  float    fWeight;
  float    fLimitWeight;
  float    fAxleLen;
  char     sDevDescInfo[MAX_DEVDESC_LEN];
  WORD     wAxleWeight[MAX_TRUCK_AXLE_NUM];
  WORD     wAxleDistance[MAX_TRUCK_AXLE_NUM];
  DWORD    dwLength;
  DWORD    dwWidth;
  DWORD    dwHeight;
  BYTE     byTollwayVehicleType;
  BYTE     byRes2[11];
}NET_DVR_VEHICLE_WEIGHT_RESULT, *LPNET_DVR_VEHICLE_WEIGHT_RESULT;

Members

byIsOverWeight
是否超限
byAxleNum
轴数
wAxleModel
参考 TRUCK_AXLE_MODEL,可以根据类型解析出轴的个数
fOverWeight
超限重量(吨)，实际值扩大1000倍传输（实际值精确到小数点后三位）
fWeight
车身重量(吨)，实际值扩大1000倍传输（实际值精确到小数点后三位）
fLimitWeight
限制重量(吨)，实际值扩大1000倍传输（实际值精确到小数点后三位）
fAxleLen
轴距(米)，实际值扩大100倍传输（实际值精确到小数点后两位）
sDevDescInfo
设备描述信息
wAxleWeight
车轴重量，单位千克（kg）第i个元素表示第i个轴重
wAxleDistance
车轴间距，单位毫米(mm).第i个元素表示第i轴和第i+1轴的间距
dwLength
车长，单位cm
dwWidth
车宽，单位cm
dwHeight
车高，单位cm
byTollwayVehicleType
收费公路车型，参考TOOLWAY_VEHICLE_TYPE
byRes2
预留

See Also

NET_DVR_PLATE_RESULT_V50


NET_DVR_VEHICLERECOG_TASK_RESULT

车辆二次识别任务提交结果信息结构体。

struct{
  DWORD    dwSize;
  char     sDevDataIndex[MAX_DEV_DATAINDEX_LEN];
  BYTE     byRes[256];
}NET_DVR_VEHICLERECOG_TASK_RESULT, *LPNET_DVR_VEHICLERECOG_TASK_RESULT;

Members

dwSize
结构体大小
sDevDataIndex
设备数据流水号，每次提交任务后设备会自行生成唯一的流水号
byRes
保留，置为0

See Also

NET_DVR_SetDeviceConfigEx


NET_DVR_VGA_DISP_CHAN_CFG

显示通道参数结构体。

struct{
  DWORD   dwSize;
  BYTE    byAudio;
  BYTE    byAudioWindowIdx;
  BYTE    byVgaResolution;
  BYTE    byVedioFormat;
  DWORD   dwWindowMode;
  BYTE    byJoinDecChan[MAX_WINDOWS];
  BYTE    byEnlargeStatus;
  BYTE    byEnlargeSubWindowIndex;
  BYTE    byJoinDecoderId[MAX_WINDOWS];
  BYTE    byRes[2];
}NET_DVR_VGA_DISP_CHAN_CFG,*LPNET_DVR_VGA_DISP_CHAN_CFG;

Members

dwSize
结构体大小
byAudio
音频是否开启：0-否，1-是
byAudioWindowIdx
音频开启子窗口
byVgaResolution
VGA的分辨率，可以从能力集中获取设备支持的分辨率
byVedioFormat
视频制式，具体定义如下：
enum{
  VS_NON  = 0,
  VS_NTSC = 1,
  VS_PAL  = 2
}VIDEO_STANDARD
VS_NON
无
VS_NTSC
NTSC制式
VS_PAL
PAL制式
dwWindowMode
画面模式，从能力集里获取，0-1；1-2；2-4；3-9；4-16
byJoinDecChan
对于63系列解码器，VGA1可以任意关联其解码通道，其余VGA、BNC只能自显示，具体如下：

对于DS6301，有一个VGA，一个BNC，4个解码通道
VGA和BNC可以任意管理1～4解码通道

对于DS6304，有2个VGA，4个BNC，8个解码通道
VGA1可以关联1～8解码通道
BNC1、BNC2可以关联1～4解码通道
VGA2、BNC3、BNC4可以关联5～8解码通道

对于DS6308，有4个VGA，8个BNC，16个解码通道
VGA1可以关联1～16解码通道
BNC1、BNC2可以关联1～4解码通道
VGA2、BNC3、BNC4可以关联5～8解码通道
VGA3、BNC5、BNC6可以关联9～12解码通道
VGA4、BNC7、BNC8可以关联13～16解码通道
byEnlargeStatus
是否处于放大状态：0-不放大，1-放大
byEnlargeSubWindowIndex
放大的子窗口号
byJoinDecoderId
各个子窗口对应解码通道所对应的解码子系统的槽位号
byRes
保留，置为0

See Also

NET_DVR_MatrixGetDisplayCfg NET_DVR_MatrixSetDisplayCfg


NET_DVR_VGAPARA

VGA参数结构体。

struct{
  WORD       wResolution;
  WORD       wFreq;
  DWORD      dwBrightness;
}NET_DVR_VGAPARA,*LPNET_DVR_VGAPARA;

Members

wResolution
分辨率，保留
wFreq
刷新频率，保留
dwBrightness
亮度

See Also

NET_DVR_VIDEOOUT_V30 NET_DVR_VIDEOOUT


NET_DVR_VIA_LANE_PARAM

VIA视频检测模式车道参数结构体。

struct{
  BYTE                        byLaneNO;
  BYTE                        byRes[63];
  NET_ITC_LANE_LOGIC_PARAM    struLogicParam;
  NET_ITC_LINE                struLaneLine;
  NET_ITC_POLYGON             struPlateRecog;
  BYTE                        byRes1[300];
}NET_DVR_VIA_LANE_PARAM,*LPNET_DVR_VIA_LANE_PARAM;

Members

byLaneNO
关联车道号
byRes
保留
struLogicParam
车道属性参数
struLaneLine
车道线
struPlateRecog
牌识区域参数
byRes1
保留

See Also

NET_DVR_VIA_VTCOIL_PARAM


NET_DVR_VIA_VTCOIL_PARAM

VIA视频检测参数结构体。

struct{
  BYTE                         byEnable;
  BYTE                         byLaneNum;
  BYTE                         byRes[62];
  NET_ITC_LINE                 struLaneBoundaryLine;
  NET_DVR_VIA_LANE_PARAM       struLaneParam[MAX_ITC_LANE_NUM];
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  BYTE                         byRes1[624];
}NET_DVR_VIA_VTCOIL_PARAM,*LPNET_DVR_VIA_VTCOIL_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byLaneNum
识别的车道个数
byRes
保留
struLaneBoundaryLine
车道边界线（最左边车道的左边界线）
struLaneParam
VIA视频检测车道参数
struPlateRecog
车牌识别参数
byRes1
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_DVR_VICOLOR

时间段图像参数结构体。

struct{
  NET_DVR_COLOR        struColor[MAX_TIMESEGMENT_V30];
  NET_DVR_SCHEDTIME    struHandleTime[MAX_TIMESEGMENT_V30];
}NET_DVR_VICOLOR,*LPNET_DVR_VICOLOR;

Members

struColor
图象参数，目前只支持设置亮度(byBrightness)，其他参数保留
struHandleTime
处理时间段，目前不支持，保留

See Also

NET_DVR_PICCFG_V40


NET_DVR_VIDEO_AUDIOIN_CFG

视频的音频输入参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChanNo;
  BYTE     byEnable;
  BYTE     byRes[31];
}NET_DVR_VIDEO_AUDIOIN_CFG, *LPNET_DVR_VIDEO_AUDIOIN_CFG;

Members

dwSize
结构体大小
dwChanNo
绑定语音对讲作为音频输入的通道号，即绑定当前语音对讲通道作为第dwChanNo个通道的音频输入
byEnable
是否启用：0-不启用，1-启用
byRes
保留，置为0

Remarks

语音对讲通道可以绑定到某个视频通道作为其音频输入，绑定启用(byEnable)后，语音对讲的声音就作为了绑定通道的复合流录像时的声音来源。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_CALL_COND

可视对讲信令处理条件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byRes[128];
}NET_DVR_VIDEO_CALL_COND, *LPNET_DVR_VIDEO_CALL_COND;

Members

dwSize
结构体大小
byRes
保留，置为0

See Also

NET_DVR_StartRemoteConfig


NET_DVR_VIDEO_CALL_PARAM

可视对讲信令处理参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwCmdType;
  WORD     wPeriod;
  WORD     wBuildingNumber;
  WORD     wUnitNumber;
  SHORT    wFloorNumber;
  WORD     wRoomNumber;
  BYTE     byRes[118];
}NET_DVR_VIDEO_CALL_PARAM, *LPNET_DVR_VIDEO_CALL_PARAM;

Members

dwSize
结构体大小
dwCmdType
信令类型：0- 请求呼叫，1- 取消本次呼叫，2- 接听本次呼叫，3- 拒绝本地来电呼叫，4- 被叫响铃超时，5- 结束本次通话，6- 设备正在通话中，7- 客户端正在通话中
wPeriod
期号，取值范围：[0,9]
wBuildingNumber
楼号
wUnitNumber
单元号
wFloorNumber
层号
wRoomNumber
房间号
byRes
保留，置为0

Remarks

可视通话能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<VideoCall>。

该长连接配置接口结合报警、预览及对讲接口，可以完成可视通话的功能，具体流程机制如下所示：

  • 客户端主动发起对讲：
    1)当客户端主动发起连接请求后，客户端如果需要建立可视通话，则需要发送通话请求信令（S2），设备侧接收到该请求后，如果无人接听的情况下，30s后设备端会返回响铃超时（R4），此时应用层直接关闭信令链接（S11）即可。
    2)在客户端发送S2请求后，设备未返回R3及R4之前，客户端可以直接发送S3，取消本次呼叫，然后直接调用S7即可。在客户端发送S2请求且设备做了应答后，则无法取消本次呼叫。
    3)在客户端发送S2请求后，如果设备侧如果拒绝接听R3，则客户端直接关闭连接即可。
    4)在客户端发送S2请求后，如果设备接听，则客户端后续打开预览（不播放声音）、对讲即可进行视频通话（S6、S7）；如果中间任何一方想关闭连接，需要先要发送结束本次通话（S8/R5），后续关闭预览、对讲及信令连接即可。
  • 设备侧主动发起对讲：
    1)当客户端主动发起连接请求后，设备段如果需要建立可视通话，则需要发送通话请求信令（R1），客户端接收到该请求后，如果无人接听的情况下，30s后会返回响铃超时（S5），此时应用层直接关闭信令链接（S11）即可。
    2)在设备端发送R1请求后，客户端未返回S4及S5之前，设备端可以直接发送R2，取消本次呼叫，然后直接调用S7即可。在设备端发送R1请求且客户端做了应答后，则无法取消本次呼叫。
    3)在设备端发送R1请求后，如果客户如果拒绝接听R3，则客户端直接关闭连接即可。
    4)在设备侧发送R1请求后，如果客户端接听，则客户端后续打开预览（不播放声音）、对讲即可进行视频通话（S6、S7）；如果中间任何一方想关闭连接，需要先要发送结束本次通话（S8/R5），后续关闭预览、对讲及信令连接即可。

See Also

NET_DVR_StartRemoteConfig NET_DVR_SendRemoteConfig


NET_DVR_VIDEO_EFFECT

视频参数结构体。

struct{
  DWORD   dwBrightValue;
  DWORD   dwContrastValue;
  DWORD   dwSaturationValue;
  DWORD   dwHueValue;
  DWORD   dwSharpness;
  DWORD   dwDenoising;
  DWORD   byRes[12];
}NET_DVR_VIDEO_EFFECT, *LPNET_DVR_VIDEO_EFFECT;

Members

dwBrightValue
亮度，取值范围[0,255]
dwContrastValue
对比度，取值范围[0,255]
dwSaturationValue
饱和度，取值范围[0,255]
dwHueValue
色度，取值范围[0,255]
dwSharpness
锐度，取值范围[0,255]
dwDenoising
去噪，取值范围[0,255]
byRes
保留

See Also

NET_DVR_VIDEO_INPUT_EFFECT NET_DVR_GetDeviceConfig


NET_DVR_VIDEO_IMG_DB_CFG

视图库信息配置结构体。

struct{
  DWORD    dwSize;
  INT64    i64Capacity;
  INT64    i64UsedSpace;
  INT64    i64AvailableSpace;
  BYTE     byRes[256];
 }NET_DVR_VIDEO_IMG_DB_CFG,*LPNET_DVR_VIDEO_IMG_DB_CFG;

Members

dwSize
结构体大小
i64Capacity
视图库总容量，单位：MB
i64UsedSpace
已用空间（只读），单位：MB
i64AvailableSpace
可用空间（只读），单位：MB
byRes
保留，置为0

Remarks

  • 设备支持的配置参数信息对应视图库相关能力集(VideoImgDBCfgCap)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CFG_CAP)。
  • 设备是否支持该配置功能可以通过视图库总能力集(VideoImgDBCap)的节点<isSupportConfig>进行判断，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_VIDEO_IMAGE_DB_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_VIDEO_INPUT_EFFECT

通道视频输入图像参数配置结构体。

struct{
  DWORD                   dwSize;
  WORD                    wEffectMode;
  BYTE                    byRes1[146];
  NET_DVR_VIDEO_EFFECT    struCustomizeMode;
  BYTE                    byRes2[60];
}NET_DVR_VIDEO_INPUT_EFFECT,*LPNET_DVR_VIDEO_INPUT_EFFECT;

Members

dwSize
结构体大小
wEffectMode
模式，0- 标准，1- 预置模式1，2- 预置模式2，3- 预置模式3，255- 自定义
byRes1
保留
struCustomizeMode
自定义模式参数
byRes2
保留

Remarks

调用NET_DVR_ClientSetVideoEffect接口设置视频显示参数时，会将这里的模式改为自定义，然后设置视频参数。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_ALARM

可视对讲报警信息结构体。

struct{
  DWORD                                      dwSize;
  NET_DVR_TIME_EX                            struTime;
  BYTE                                       byDevNumber[MAX_DEV_NUMBER_LEN];
  BYTE                                       byAlarmType;
  BYTE                                       byRes1[3];
  NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION    uAlarmInfo;
  WORD                                       wLockID;
  BYTE                                       byRes2[254];
}NET_DVR_VIDEO_INTERCOM_ALARM, *LPNET_DVR_VIDEO_INTERCOM_ALARM;

Members

dwSize
结构体大小
struTime
报警时间
byDevNumber
设备编号
byAlarmType
报警类型：1- 防区报警，2- 防拆报警，3- 劫持报警，4- 多次密码开锁失败报警，5- 门没开，6- 门没关，7- SOS(呼救报警)，8- 通话对讲，9- 智能锁劫持指纹报警，10- 智能锁劫持密码报警，11- 智能锁撬门报警，12- 智能锁门锁锁定报警，13- 智能锁电量不足报警, 14-非授权名单报警, 15-智能锁掉线, 16-门禁安全模块防拆报警
byRes1
保留，置为0
uAlarmInfo
报警信息，byAlarmType为1时有效
wLockID
锁ID，（0-表示门口机本机控制器上接的锁、1-表示外接控制器上接的锁）（报警类型为5和6时有效）
byRes2
保留，置为0

See Also

NET_DVR_StartListen_V30


NET_DVR_VIDEO_INTERCOM_ALARM_CFG

可视对讲报警事件参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDoorNotCloseAlarm;
  BYTE     byRes[603];
}NET_DVR_VIDEO_INTERCOM_ALARM_CFG, *LPNET_DVR_VIDEO_INTERCOM_ALARM_CFG;

Members

dwSize
结构体大小
byDoorNotCloseAlarm
是否上传门未关报警：0- 不上传，1- 上传
byRes
保留，置为0

Remarks

  • 设备是否支持可视对讲报警事件参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应IP可视对讲主机能力集(IpViewDevAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY，节点：<UploadAlarmCfg>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION

可视对讲报警信息联合体。

union{
  BYTE                       byLen[256];
  NET_DVR_ZONE_ALARM_INFO    struZoneAlarm;
}NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION, *LPNET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION;

Members

byLen
联合体大小，256字节
struZoneAlarm
防区报警信息，报警类型为“1-防区报警”时有效

See Also

NET_DVR_VIDEO_INTERCOM_ALARM


NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG

可视对讲设备编号配置结构体。

struct{
  DWORD                                         dwSize;
  BYTE                                          byUnitType;
  BYTE                                          byIsAutoReg;
  BYTE                                          byRes1[2];
  NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION    uVideoIntercomUnit;
  BYTE                                          byRes2[128];
 }NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG,*LPNET_DVR_VIDEO_INTERCOM_DEVICEID_CFG;

Members

dwSize
结构体大小
byUnitType
设备类型：1- 门口机，2- 管理机，4- 围墙机，5- 别墅门口机，6- 二次确认机，7-门禁智能设备
byIsAutoReg
是否自动注册：0- 否，1- 是
byRes1
保留，置为0
uVideoIntercomUnit
设备编号参数，不同的设备类型对应不同的结构
byRes2
保留，置为0

Remarks

设备编号参数能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<DeviceID>。

二次确认机不配置编号。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_EVENT

可视对讲事件记录信息结构体。

struct{
  DWORD                                      dwSize;
  NET_DVR_TIME_EX                            struTime;
  BYTE                                       byDevNumber[MAX_DEV_NUMBER_LEN];
  BYTE                                       byEventType;
  BYTE                                       byRes1[3];
  NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON    uEventInfo;
  BYTE                                       byRes2[256];
}NET_DVR_VIDEO_INTERCOM_EVENT, *LPNET_DVR_VIDEO_INTERCOM_EVENT;

Members

dwSize
结构体大小
struTime
事件记录时间
byDevNumber
设备编号
byEventType
事件信息类型：1- 开锁记录，2- 公告信息阅读回执，3-认证记录，4-车牌信息上传，5-非法卡刷卡事件，6-门口机发卡记录(需要启动门口机发卡功能，刷卡时才会上传该事件)
byRes1
保留，置为0
uEventInfo
事件信息，不同的类型对应不同的结构
byRes2
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON


NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON

可视对讲事件记录信息联合体。

union{
  BYTE                               byLen[256];
  NET_DVR_UNLOCK_RECORD_INFO         struUnlockRecord;
  NET_DVR_NOTICEDATA_RECEIPT_INFO    struNoticedataReceipt;
  NET_DVR_AUTH_INFO                  struAuthInfo;
  NET_DVR_UPLOAD_PLATE_INFO          struUploadPlateInfo;
  NET_DVR_SEND_CARD_INFO            struSendCardInfo;
}NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON, *LPNET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON;

Members

byLen
联合体大小，256字节
struUnlockRecord
开锁记录，当事件信息类型byEventType为1时有效
struNoticedataReceipt
公告信息阅读回执，当事件信息类型byEventType为2时有效
struAuthInfo
认证记录，当事件信息类型byEventType为3时有效
struUploadPlateInfo
车牌信息上传，当事件信息类型byEventType为4时有效
struSendCardInfo
发送卡信息，当事件信息类型byEventType为5和6时有效

See Also

NET_DVR_VIDEO_INTERCOM_EVENT


NET_DVR_VIDEO_INTERCOM_IOIN_CFG

可视对讲IO输入参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byIOUseType;
  BYTE     byRes[63];
}NET_DVR_VIDEO_INTERCOM_IOIN_CFG, *LPNET_DVR_VIDEO_INTERCOM_IOIN_CFG;

Members

dwSize
结构体大小
byIOUseType
IO输入用途：0- 禁用，1- 开门按钮，2- 门状态，0xff- 自定义
byRes
保留，置为0

Remarks

IO输入参数配置能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<IOIn>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_IOOUT_CFG

可视对讲IO输出参数配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byIOUseType;
  BYTE     byRes[63];
}NET_DVR_VIDEO_INTERCOM_IOOUT_CFG, *LPNET_DVR_VIDEO_INTERCOM_IOOUT_CFG;

Members

dwSize
结构体大小
byIOUseType
IO输出用途：0- 禁用，1- 电锁，0xff- 自定义
byRes
保留，置为0

Remarks

IO输出参数配置能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<IOOut>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG

操作时间配置结构体。

struct{
  DWORD                                          dwSize;
  BYTE                                           byUnitType;
  BYTE                                           byRes1[3];
  NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION    uVideoIntercomUnit;
  BYTE                                           byRes2[128];
}NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG, *LPNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG;

Members

dwSize
结构体大小
byUnitType
设备类型：1- 门口机，2- 管理机，4- 围墙机，5- 别墅门口机，6- 二次确认机
byRes1
保留，置为0
uVideoIntercomUnit
操作时间配置联合体，不同的设备类型对应不同的结构
byRes2
保留，置为0

Remarks

操作时间配置能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<OperationTime>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION

可视对讲操作时间配置联合体。

union{
  BYTE                                       byLen[128];
  NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG    struOutdoorUnit;
  NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG     struManageUnit;
}NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION, *LPNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION;

Members

byLen
联合体大小，128字节
struOutdoorUnit
门口机/围墙机/别墅门口机/二次确认机操作时间配置
struManageUnit
管理机操作时间配置

See Also

NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG


NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG

可视对讲关联网络设备配置结构体。

struct{
  DWORD                                          dwSize;
  BYTE                                           byUnitType;
  BYTE                                           byRes1[3];
  NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION    uVideoIntercomUnit;
  BYTE                                           byRes2[128];
}NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG, *LPNET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG;

Members

dwSize
结构体大小
byUnitType
设备类型：1- 门口机，2- 管理机，4- 围墙机，5- 别墅门口机，6- 二次确认机，7-门禁智能设备
byRes1
保留，置为0
uVideoIntercomUnit
关联网络设备配置联合体，不同的设备类型对应不同的结构
byRes2
保留，置为0

Remarks

关联网络设备配置能力，对应IP可视对讲主机能力集（接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY）中节点<RelateDevice>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION

可视对讲设备编号参数联合体。

union{
  BYTE                              byLen[128];
  NET_DVR_OUTDOOR_UNIT_DEVICEID     struOutdoorUnit;
  NET_DVR_MANAGE_UNIT_DEVICEID      struManageUnit;
  NET_DVR_OUTDOOR_FENCE_DEVICEID    struFenceUnit;
  NET_DVR_OUTDOOR_UNIT_DEVICEID     struVillaOutdoorUnit;
  NET_DVR_OUTDOOR_UNIT_DEVICEID     struAgainConfirmUnit;
}NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION, *LPNET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION;

Members

byLen
联合体大小，128字节
struOutdoorUnit
门口机/门禁智能设备设备编号参数
struManageUnit
管理机设备编号参数
struFenceUnit
围墙机设备编号参数
struVillaOutdoorUnit
别墅门口机设备编号参数
struAgainConfirmUnit
二次确认机设备编号参数

Remarks

设备根据配置信息，生成设备编号字符串，规则如下：
1) 管理机的长号为*00000001XX；*代表期号，001代表管理机，XX代表管理机编号(从01开始，01、02、...，加1递增)。
2) 门口机或者别墅门口机/二次确认机的编号为*XXXXX000$$；*代表期号，XXX代表楼号，XX单元号，000代表门口机，$$代表门口机序号，序号为00则代表主门口机，其他取值则代表副门口机。
3）室内机的编号为*XXXXX$$$$$；*代表期号，XXX代表楼号，XX代表单元号，$$$代表层号，$$代表房间号。 4) 围墙机的长号为*00000002XX；*代表期号，002代表围墙机，XX代表围墙机编号(从01开始，01、02、...，加1递增)。

实际应用时同一管理机可能属于多期楼房，对于此种情况，管理机的期号赋值可以为任何一个存在期号，只要保证期号、管理机序号及其他组合信息生成的设备编号是唯一的即可。

See Also

NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG


NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION

可视对讲关联网络设备配置联合体。

union{
  DWORD                             dwRes[256];
  NET_DVR_INDOOR_UNIT_RELATEDEV    struIndoorUnit;
  NET_DVR_OUTDOOR_UNIT_RELATEDEV    struOutdoorUnit;
  NET_DVR_MANAGE_UNIT_RELATEDEV     struManageUnit;
  NET_DVR_OUTDOOR_UNIT_RELATEDEV    struVillaUnit;
  NET_DVR_AGAIN_RELATEDEV           struAgainUnit;

}NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION, *LPNET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION;

Members

dwRes
联合体大小，256*4共1024字节
struIndoorUnit
室内机
struOutdoorUnit
门口机/围墙机/门禁智能设备
struManageUnit
管理机关联网络设备参数配置
struVillaUnit
别墅门口机关联网络设备参数配置
struAgainUnit
二次确认机关联网络设备参数配置

See Also

NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG


NET_DVR_VIDEO_OUT_CFG

视频参数结构体。

struct{
  BYTE    byDisplayMode;
  BYTE    byBrightnessLevel;
  BYTE    byContrastLevel;
  BYTE    bySharpnessLevel;
  BYTE    bySaturationLevel;
  BYTE    byHueLevel;
  BYTE    byImageMode;
  BYTE    byRes[5];
}NET_DVR_VIDEO_OUT_CFG,*LPNET_DVR_VIDEO_OUT_CFG;

Members

byDisplayMode
显示模式：1-标准，2-冷色，3-暖色，0xff-自定义
byBrightnessLevel
亮度值，取值范围：0~100
byContrastLevel
对比度，取值范围：0~100
bySharpnessLevel
锐度，取值范围：0~100
bySaturationLevel
饱和度，取值范围：0~100
byHueLevel
色调，取值范围：0~100
byImageMode
图像模式：0- 正常模式，1- 夜模式1，2- 夜模式2，3- 夜模式3，4- 日照模式1，5- 日照模式2，6- 日照模式3
byRes
保留，置为0

Remarks

  • byDisplayMode取值为“1-标准”、“2-冷色”或者“3-暖色”时，亮度、对比度、锐度、饱和度、色调这些参数自动调整，不支持设置。
  • 当屏幕信号源为VGA时只配置对比度和亮度两个值。

    • See Also

    NET_DVR_SCREEN_DISPLAY_CFG NET_DVR_MSC_SCREEN_PARAM


NET_DVR_VIDEO_PLATFORM

显示通道配置联合体。

union{
  BYTE             byRes[160];
  struct{
    BYTE           byJoinDecoderId[MAX_WINDOWS_V41];
    BYTE           byDecResolution[MAX_WINDOWS_V41];
    BYTE           byRes[88];
  }struVideoPlatform;
  struct{
    BYTE           byRes[160];
  }struNotVideoPlatform;
}NET_DVR_VIDEO_PLATFORM, *LPNET_DVR_VIDEO_PLATFORM;

Members

byRes
保留
byJoinDecoderId
各个子窗口对应解码通道所对应的解码子系统的槽位号(对于视频综合平台中解码子系统有效)
byDecResolution
显示窗口所解视频分辨率：1- D1，2- 720P，3- 1080P，设备端需要根据此分辨率进行解码通道的分配。如1分屏配置成1080P，则设备会把4个解码通道都分配给此显示窗口。

Remarks

在V41以下的版本中，byDecResolution[MAX_WINDOWS_V41]是byDecResolution，V41版本中改为数组。在低版本向高版本转换时，根据NET_DVR_MATRIX_VOUTCFG中的画面模式dwWindowMode对byDecResolution[MAX_WINDOWS_V41]进行赋值；高版本向低版本转化时用byDecResolution[0]。

See Also

NET_DVR_MATRIX_VOUTCFG


NET_DVR_VIDEO_WALL_AREA

电视墙区域信息结构体。

struct{
  DWORD                 dwSize;
  DWORD                 byWallNo;
  BYTE                  byRes1[3];
  NET_DVR_RECTCFG_EX    struRect;
  BYTE                  byRes2[32];
}NET_DVR_VIDEO_WALL_AREA,*LPNET_DVR_VIDEO_WALL_AREA;

Members

dwSize
结构体大小
byWallNo
电视墙号
byRes1
保留，置为0
struRect
屏幕区域范围
byRes2
保留，置为0

Remarks

目前不支持按墙区域设置定时开关机参数，即struRect无效。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_VIDEO_WALL_INFO

电视墙信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwWindowNo;
  DWORD    dwSceneNo;
  BYTE     byRes[20];
}NET_DVR_VIDEO_WALL_INFO,*LPNET_DVR_VIDEO_WALL_INFO;

Members

dwSize
结构体大小
dwWindowNo
窗口号(组合)：1 字节电视墙号+1 字节保留+2 字节窗口号(保留)，例如：1<<24
dwSceneNo
场景号
byRes
保留，置为0

See Also

NET_DVR_SCENE_CONTROL_INFO


NET_DVR_VIDEOEFFECT

视频参数结构体。

struct{
  BYTE    byBrightnessLevel;
  BYTE    byContrastLevel;
  BYTE    bySharpnessLevel;
  BYTE    bySaturationLevel;
  BYTE    byHueLevel;
  BYTE    byEnableFunc;
  BYTE    byLightInhibitLevel;
  BYTE    byGrayLevel;
}NET_DVR_VIDEOEFFECT, *LPNET_DVR_VIDEOEFFECT;

Members

byBrightnessLevel
亮度，取值范围[0,100]
byContrastLevel
对比度，取值范围[0,100]
bySharpnessLevel
锐度，取值范围[0,100]
bySaturationLevel
饱和度，取值范围[0,100]
byHueLevel
色度，取值范围[0,100]，保留
byEnableFunc
使能，按位表示。bit0-SMART IR(防过曝)，bit1-低照度，bit2-强光抑制使能，值：0-否，1-是，例如byEnableFunc&0x2==1表示使能低照度功能； bit3-锐度类型，值：0-自动，1-手动。
byLightInhibitLevel
强光抑制等级，取值范围：[1,3]
byGrayLevel
灰度值域:0-[0,255]，1-[16,235]

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG NET_DVR_INPUTSTREAMCFG NET_DVR_OUTPUTPARAM


NET_DVR_VIDEOIN_TYPE_INFO

视频输入源信息结构体。

struct{
  WORD    wInType;
  WORD    wInNum;
  WORD    wStartNo;
  BYTE    byRes[6];
}NET_DVR_VIDEOIN_TYPE_INFO,*LPNET_DVR_VIDEOIN_TYPE_INFO;

Members

wInType
输入源类型：0- SDI，1- VGA，2- HDMI，3- IP，4- PIP，5- POE，6- YPBPR
wInNum
支持的输入个数
wStartNo
输入对应的起始号
byRes
保留，置为0

See Also

NET_DVR_TRIAL_SYSTEM_INFO


NET_DVR_VIDEOINTERCOM_STREAM

可视对讲流通道参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byVisDevID[MAX_NAMELEN];
  BYTE     byDeviceName[NAME_LEN];
  BYTE     bySourceType;
  BYTE     byRes[255];
}NET_DVR_VIDEOINTERCOM_STREAM, *LPNET_DVR_VIDEOINTERCOM_STREAM;

Members

dwSize
结构体大小
byVisDevID
可视对讲设备编号，即长号，设备类型为IPC时全部为0
byDeviceName
设备名称
bySourceType
视频源类型：0- 无意义，1- IPC，2- DVR/DVS/NVR，3- 门口机，4- 围墙机，5- 二次确认机
byRes
保留，置为0

Remarks

  • 设备是否支持可视对讲流通道参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应IP可视对讲主机能力集(IpViewDevAbility )，相关接口：NET_DVR_GetDeviceAbility，能力集类型：IP_VIEW_DEV_ABILITY，节点：<VideoIntercomStream>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEOOUT

视频输出参数结构体。

struct{
  DWORD                   dwSize;
  NET_DVR_VOOUT           struVOOut[MAX_VIDEOOUT];
  NET_DVR_VGAPARA         struVGAPara[MAX_VGA];
  NET_DVR_MATRIXPARA      struMatrixPara;
}NET_DVR_VIDEOOUT,*LPNET_DVR_VIDEOOUT;

Members

dwSize
结构体大小
struVOOut
模拟视频BNC输出口参数
struVGAPara
VGA参数
struMatrixPara
MATRIX参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

扩展结构可见

NET_DVR_VIDEOOUT_V30


NET_DVR_VIDEOOUT_RESOLUTION_CFG

视频输出口分辨率配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byResolution;
  BYTE     byRes[63];
 }NET_DVR_VIDEOOUT_RESOLUTION_CFG,*LPNET_DVR_VIDEOOUT_RESOLUTION_CFG;

Members

dwSize
结构体大小
byResolution
视频输出口分辨率：0- 1024x768，1- 1280x720，2-1280x1024，3- 1680x1050，4- 1920x1080，5- 3840*2160
byRes
保留，置为0

See Also

录播主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

庭审主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VIDEOOUT_V30

视频输出参数结构体。

struct{
  DWORD                       dwSize;
  NET_DVR_VOOUT               struVOOut[MAX_VIDEOOUT_V30];
  NET_DVR_VGAPARA             struVGAPara[MAX_VGA_V30];
  NET_DVR_MATRIXPARA_V30      struMatrixPara[MAX_MATRIXOUT];
  BYTE                        byRes[16];
}NET_DVR_VIDEOOUT_V30,*LPNET_DVR_VIDEOOUT_V30;

Members

dwSize
结构体大小
struVOOut
模拟视频BNC输出口参数
struVGAPara
VGA参数
struMatrixPara
MATRIX参数
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

Reference Structure

该结构扩展源于

NET_DVR_VIDEOOUT


NET_DVR_VIDEOPARA_V40

视频效果配置参数结构体。

struct{
  DWORD     dwChannel;
  DWORD     dwVideoParamType;
  DWORD     dwVideoParamValue;
  BYTE      byRes[12];
}NET_DVR_VIDEOPARA_V40,*LPNET_DVR_VIDEOPARA_V40;

Members

dwChannel
通道号
dwVideoParamType
视频参数类型：0- 亮度，1- 对比度，2- 饱和度，3- 色度，4- 锐度，5- 去噪
dwVideoParamValue
对应的视频参数值，范围依据能力集
byRes
保留

See Also

NET_DVR_RemoteControl


NET_DVR_VIDEOWALL_MATERIAL_COND

电视墙素材文件结构体。

struct{
  DWORD              dwSize;
  BYTE              byWallNo;
  BYTE              byWindowType;
  BYTE              byFileType;
  BYTE              byRes1;
  DWORD              dwWindowNo;
  DWORD              dwMaterialNo;
  BYTE               byRes[32];
}NET_DVR_VIDEOWALL_MATERIAL_COND,*LPNET_DVR_VIDEOWALL_MATERIAL_COND;

Members

dwSize
结构体大小
byWallNo
电视墙墙号，从1开始
byWindowType
窗口类型，0-图文窗口,1-字幕窗口
byFileType
文件类型，0-图片
byRes1
保留，置为0
dwWindowNo
窗口编号，从1开始
dwMaterialNo
素材编号，从1开始
byRes
保留，置为0


NET_DVR_VIDEOWALLDISPLAYPOSITION

屏幕位置参数配置结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byEnbale;
  BYTE                  byRes1[3];
  DWORD                 dwVideoWallNo;
  DWORD                 dwDisplayNo;
  NET_DVR_RECTCFG_EX    struScreenBaseInfo;
  BYTE                  byRes2[64];
}NET_DVR_VIDEOWALLDISPLAYPOSITION, *LPNET_DVR_VIDEOWALLDISPLAYPOSITION;

Members

dwSize
结构体大小
byEnbale
使能：0- 不使能，1- 使能
byRes1
保留，置为0
dwVideoWallNo
电视墙号(组合)：1字节电视墙号+3字节保留，例如：1<<24 | 0
dwDisplayNo
屏幕索引号(组合，批量获取全部时有效)：1字节设备号+1字节保留+2字节索引序号，索引序号从1开始，例如：1<<24 | 0<<16 | 1
struScreenBaseInfo
位置坐标，须为基准坐标（通过能力集获取）的整数倍，宽度和高度值不用设置，即为基准值
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_VIDEOWALLWINDOWPOSITION

电视墙窗口信息结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byEnable;
  BYTE                  byRes1[7];
  DWORD                 dwWindowNo;
  DWORD                 dwLayerIndex;
  NET_DVR_RECTCFG_EX    struRect;
  BYTE                  byRes2[64];
}NET_DVR_VIDEOWALLWINDOWPOSITION,*LPNET_DVR_VIDEOWALLWINDOWPOSITION;

Members

dwSize
结构体大小
byEnable
窗口使能：0- 禁用，1- 启用
byRes1
保留，置为0
dwWindowNo
窗口号(组合)，批量获取全部时有效
dwLayerIndex
窗口相对应的图层号，只能获取，不能设置，图层号由设备关联
struRect
目的窗口坐标区域(相对显示墙)
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfigEx


NET_DVR_VILOST

信号丢失报警参数结构体。

struct{
  BYTE                       byEnableHandleVILost;
  NET_DVR_HANDLEEXCEPTION    strVILostHandleType;
  NET_DVR_SCHEDTIME          struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];
}NET_DVR_VILOST, *LPNET_DVR_VILOST;

Members

byEnableHandleVILost
是否处理信号丢失报警：0-不处理，1-处理
strVILostHandleType
处理方式参数
struAlarmTime
布防时间参数

See Also

NET_DVR_PICCFG_EX NET_DVR_PICCFG


NET_DVR_VILOST_V30

信号丢失报警参数结构体。

struct{
  BYTE                           byEnableHandleVILost;
  NET_DVR_HANDLEEXCEPTION_V30    strVILostHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
}NET_DVR_VILOST_V30, *LPNET_DVR_VILOST_V30;

Members

byEnableHandleVILost
是否处理信号丢失报警：0-不处理，1-处理
strVILostHandleType
处理方式参数
struAlarmTime
布防时间参数

See Also

NET_DVR_PICCFG_V30

Reference Structure

扩展结构可见

NET_DVR_VILOST_V40


NET_DVR_VILOST_V40

信号丢失报警参数结构体。

struct{
  DWORD                dwEnableVILostAlarm;
  DWORD                dwHandleType;
  DWORD                dwMaxRelAlarmOutChanNum;
  DWORD                dwRelAlarmOut[MAX_ALARMOUT_V40];
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                 byVILostAlarmThreshold;
  BYTE                 byRes[63];
}NET_DVR_VILOST_V40, *LPNET_DVR_VILOST_V40;

Members

dwEnableVILostAlarm
是否启动信号丢失报警：0-否，1-是
dwHandleType
报警处理方式，各种异常处理方式的"或"结果：
0x00: 无响应
0x01: 监视器上警告
0x02: 声音警告
0x04: 上传中心
0x08: 触发报警输出
0x10: Jpeg抓图并上传EMail
0x20: 无线声光报警器联动
0x40: 联动电子地图(目前仅PCNVR支持)
0x200：抓图并上传ftp
0x1000：抓图上传到云存储
E.g. dwHandleType==0x01|0x04 表示配置报警发生时联动监视器上警告并且将报警信息上传中心。
dwMaxRelAlarmOutChanNum
设备最大支持的触发报警输出通道数（只读）
dwRelAlarmOut
触发报警输出号，按值表示，采用紧凑型排列，从下标0开始顺序读取，中间遇到0xffffffff则后续无效。报警输出口号从0开始。
例如：dwRelAlarmOut[8]开始值为0xffffffff，即联动触发第(dwRelAlarmOut[0]+1),...,(dwRelAlarmOut[7]+1)个报警输出口。
struAlarmTime
布防时间，一周7天，每天可以设置8个时间段
byVILostAlarmThreshold
信号丢失报警阈值，当值低于阈值，认为信号丢失，取值范围：0~99
byRes
保留，置为0

See Also

NET_DVR_PICCFG_V40

Reference Structure

该结构扩展源于

NET_DVR_VILOST_V30


NET_DVR_VIS_REGISTER_INFO

门口机注册信息结构体。

struct{
  DWORD              dwSize;
  DWORD              dwID;
  BYTE               szDevNumber[MAX_DEV_NUMBER_LEN];
  DWORD              byMACAddr[MACADDR_LEN];
  BYTE               byRes1[2];
  DWORD              sSerialNumber[SERIALNO_LEN];
  NET_DVR_IPADDR     struDevIP;
  NET_DVR_TIME_EX    struRegisterTime;
  BYTE               byRegisterType;
  BYTE               byRes[127];
}NET_DVR_VIS_REGISTER_INFO, *LPNET_DVR_VIS_REGISTER_INFO;

Members

dwSize
结构体大小
dwID
注册ID
szDevNumber
设备编号
byMACAddr
Mac地址
byRes1
保留，置为0
sSerialNumber
设备序列号
struDevIP
设备IP地址
struRegisterTime
注册时间
byRegisterType
注册类型：0- 保留，1- 门口机，2- 管理机，4- 围墙机，5- 别墅门口机，6- 二次确认机，7- 8700客户端，8- 4200客户端
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_VOD_DRAWFRAME_PARA

回放抽帧条件参数结构体。

struct{
  NET_DVR_TIME_EX    struTime;
  DWORD              dwDrawType;
  BYTE               byRes[128];
}NET_DVR_VOD_DRAWFRAME_PARA,*LPNET_DVR_VOD_DRAWFRAME_PARA;

Members

struTime
开始抽帧时间
dwDrawType
抽帧方式（需要设备支持才有效果）： 0：只传I帧
1：丢1/2 P帧(只有svc码流支持)
2：丢3/4 P帧(只有svc码流支持)
3：传1/2 I帧(只传I帧，且每2个I帧传一个)
4：传1/4 I振(只传I帧，且每4个I帧传一个)
5：传1/8 I帧(只传I帧，且每8个I帧传一个)
byRes
保留，置为0

Remarks

  • 设备是否支持选择性抽帧回放，可以通过设备能力集进行判断，对应设备软硬件能力集(BasicCapability)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_SOFTHARDWARE_ABILITY，对应节点：<supportChoosePlaybackDrawframe>。

See Also

NET_DVR_PlayBackControl_V40


NET_DVR_VOD_PARA

录像回放结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struIDInfo;
  NET_DVR_TIME           struBeginTime;
  NET_DVR_TIME           struEndTime;
  HWND                   hWnd;
  BYTE                   byDrawFrame;
  BYTE                   byVolumeType;
  BYTE                   byVolumeNum;
  BYTE                   byStreamType;
  DWORD                  dwFileIndex;
  BYTE                   byAudioFile;
  BYTE                   byCourseFile;
  BYTE                   byRes2[22];
}NET_DVR_VOD_PARA,*LPNET_DVR_VOD_PARA;

Members

dwSize
结构体大小
struIDInfo
（ISAPI登录不支持）流信息，流ID或者通道号
struBeginTime
开始时间
struEndTime
结束时间
hWnd
回放的窗口句柄，若置为空，SDK仍能收到码流数据，但不解码显示
byDrawFrame
（ISAPI登录不支持）是否抽帧：0- 不抽帧，1- 抽帧
byVolumeType
（ISAPI登录不支持）0-普通录像卷，1-存档卷，适用于CVR设备，普通卷用于通道录像，存档卷用于备份录像
byVolumeNum
（ISAPI登录不支持）存档卷号
byStreamType
（ISAPI登录不支持）码流类型：0- 主码流，1- 子码流，2- 码流三
dwFileIndex
（ISAPI登录不支持）存档卷上的录像文件索引，搜索存档卷录像时返回的值
byAudioFile
（ISAPI登录不支持）回放音频文件：0- 不回放音频文件，1- 回放音频文件，该功能需要设备支持，启动音频回放后只回放音频文件
byCourseFile
（ISAPI登录不支持） 课程文件：0- 否，1- 是
byRes2
保留，置为0

See Also

NET_DVR_PlayBackByTime_V40


NET_DVR_VOD_PARA_V50

录像回放结构体。

struct{
  DWORD                  dwSize;
  NET_DVR_STREAM_INFO    struIDInfo;
  NET_DVR_TIME_V50       struBeginTime;
  NET_DVR_TIME_V50       struEndTime;
  HWND                   hWnd;
  BYTE                   byDrawFrame;
  BYTE                   byVolumeType;
  BYTE                   byVolumeNum;
  BYTE                   byStreamType;
  DWORD                  dwFileIndex;
  BYTE                   byAudioFile;
  BYTE                   byCourseFile;
  BYTE                   byPlayMode;
  BYTE                   byLinkMode;
  BYTE                   byDownload;
  BYTE                   byOptimalStreamType;
  BYTE                   byDisplayBufNum;
  BYTE                   byNPQMode;
  BYTE                   sUserName[NAME_LEN];
  BYTE                   sPassword[PASSWD_LEN];
  BYTE                   byRemoteFile;
  BYTE                   byRes2[202];
  BYTE                   byHls;
  char                   *pSavedFileName;
}NET_DVR_VOD_PARA_V50,*LPNET_DVR_VOD_PARA_V50;

Members

dwSize
结构体大小
struIDInfo
（ISAPI登录不支持）流信息，流ID或者通道号
struBeginTime
开始时间
struEndTime
结束时间
hWnd
回放的窗口句柄，若置为空，SDK仍能收到码流数据，但不解码显示
byDrawFrame
（ISAPI登录不支持）是否抽帧：0- 不抽帧，1- 抽帧
byVolumeType
（ISAPI登录不支持）0-普通录像卷，1-存档卷，适用于CVR设备，普通卷用于通道录像，存档卷用于备份录像
byVolumeNum
（ISAPI登录不支持）存档卷号
byStreamType
（ISAPI登录不支持）码流类型：0- 主码流，1- 子码流，2- 码流三
dwFileIndex
（ISAPI登录不支持）存档卷上的录像文件索引，搜索存档卷录像时返回的值
byAudioFile
（ISAPI登录不支持）回放音频文件：0- 不回放音频文件，1- 回放音频文件，该功能需要设备支持，启动音频回放后只回放音频文件
byCourseFile
（ISAPI登录不支持） 课程文件：0- 否，1- 是
byPlayMode
（ISAPI登录不支持） 播放方式：0- 正放，1- 倒放
byLinkMode
（ISAPI登录不支持） 连接方式：0- TCP，1- NPQ
byDownload
（ISAPI登录不支持） 是否下载：0- 否，1- 是
byOptimalStreamType
（ISAPI登录不支持） 是否按最优码流类型回放：0- 否，1- 是（对于双码流设备，某一段时间内的录像文件与指定码流类型不同，则返回实际码流类型的录像）
byDisplayBufNum
（ISAPI登录不支持） 设置播放缓冲帧数，当为0时，默认为3帧，hWnd不为空时有效
byNPQMode
（ISAPI登录不支持） NPQ模式：0- 直连模式，1- 过流媒体模式
sUserName
二次认证用户名
sPassword
二次认证密码
byRemoteFile
（ISAPI登录不支持） 回放远程文件：0- 否，1- 是
byRes2
保留，置为0
byHls
HLS回放，0-否，1-是
pSavedFileName
（ISAPI登录不支持） 下载时，保存的录像文件路径，byDownload为1时有效，长度超过256将会被截断

See Also

NET_DVR_PlayBackByTime_V50


NET_DVR_VOICE_PROMPTION_CFG

语音提示配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  BYTE     byCenterBusyFile[NAME_LEN];
  BYTE     byRefusedFile[NAME_LEN];
  BYTE     byHangUpFile[NAME_LEN];
  BYTE     byCallWaittingFile[NAME_LEN];
  BYTE     byConsultWaittingFile[NAME_LEN];
  BYTE     byRes[480];
}NET_DVR_VOICE_PROMPTION_CFG, *LPNET_DVR_VOICE_PROMPTION_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byRes1
保留，置为0
byCenterBusyFile
中心繁忙提示语音文件名，语音文件名可以通过能力集获取
byRefusedFile
拒绝提示语音文件名，语音文件名可以通过能力集获取
byHangUpFile
对讲结束提示语音文件名，语音文件名可以通过能力集获取
byCallWaittingFile
呼叫等候音文件名，语音文件名可以通过能力集获取
byConsultWaittingFile
业务咨询等候音文件名，语音文件名可以通过能力集获取
byRes
保留，置为0

Remarks

  • 设备是否支持语音提示配置或者支持的参数能力，可以通过设备能力集进行判断，对应语音提示配置能力集(VoicePromptionCfg )，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_VOICE_PROMPTION_CFG_CAP。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_VOICEBROADCAST_CFG

语音播报控制参数结构体。

struct{
  DWORD    dwSize;
  char     sInfo[MAX_VOICE_INFO_LEN];
  BYTE     byRes[128];
}NET_DVR_VOICEBROADCAST_CFG,*LPNET_DVR_VOICEBROADCAST_CFG;

Members

dwSize
结构体大小
sInfo
语音播报内容
byRes
保留，置为0

Remarks

  • 设备是否支持语音播报或者支持的参数能力，可以通过设备能力集进行判断，对应语音播报能力集(VoiceBroadcastInfo)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_VOICEBROADCAST_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig


NET_DVR_VOLTAGE

相电压参数结构体。

struct{
  int    iPhaseAVol;
  int    iPhaseBVol;
  int    iPhaseCVol;
  int    iAveragePhaseVol;
}NET_DVR_VOLTAGE,*LPNET_DVR_VOLTAGE;

Members

iPhaseAVol
A相电压，单位：V
iPhaseBVol
B相电压，单位：V
iPhaseCVol
C相电压，单位：V
iAveragePhaseVol
相电压平均值，单位：V

See Also

NET_DVR_ALARMHOST_UPS_STATE NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE

NET_DVR_ALARMHOST_ELECTRICITY_STATE


NET_DVR_VOLUME_CFG

音量调节参数配置结构体。

struct{
  DWORD    dwSize;
  WORD     wVolume[MAX_AUDIOOUT_PRO_TYPE];
  BYTE     byPhantomPowerSupply;
  BYTE     byEnableAEC;
  BYTE     byRes1[2];
  BYTE     byEnableFBC[MAX_AUDIOOUT_PRO_TYPE];
  WORD     wVolumeEx[MAX_AUDIOOUT_PRO_TYPE];
  BYTE     byRes[4];
 }NET_DVR_VOLUME_CFG,*LPNET_DVR_VOLUME_CFG;

Members

dwSize
结构体大小
wVolume
音量大小，数组0表示音频输出，数组1表示音频编码，具体索引代表含义以能力集为准
byPhantomPowerSupply
是否使用幻象电源供电(音频输入通道为MIC时有效)：0- 无意义，1- 不供电，2- 供电
byEnableAEC
是否启用全局的回声消除：0- 不启用，1- 启用
byRes1
保留，置为0
byEnableFBC
是否启用FBC(啸叫抑制)：0- 不启用，1- 启用
wVolumeEx
音量大小扩展，具体索引代表含义以能力集为准
byRes
保留，置为0

See Also

设备支持的音频输入输出口音量调节参数能力以设备返回的能力集为准,对应的能力集：为IP_VIEW_DEV_ABILITY能力集的<inputVolume>节点。

通道号有效，表示音频输出口号。

  • 对于录播主机，音量调节参数能力，对应录播主机能力集(RecordingHostAbility)中节点<AudioInVlome>和<AudioOutVlome>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • 对于庭审主机，音量调节参数能力，对应庭审主机能力集(TrialHostAbility)中<AudioInChanList>和<AudioOutChanList>里的子节点<VolumeChange>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。
  • 对于其他设备，音量调节参数能力，对应设备编码能力集(AudioVideoCompressInfo)中<AudioInVolume>和<audioOutVolumeLevel>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ENCODE_ALL_ABILITY_V20。

See Also

录播主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

庭审主机：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

楼宇可视对讲：NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_VOOUT

模拟视频输出参数结构体。

struct{
  BYTE      byVideoFormat;
  BYTE      byMenuAlphaValue;
  WORD      wScreenSaveTime;
  WORD      wVOffset;
  WORD      wBrightness;
  BYTE      byStartMode;
  BYTE      byEnableScaler;
}NET_DVR_VOOUT,*LPNET_DVR_VOOUT;

Members

byVideoFormat
输出制式：0-PAL，1-NTSC
byMenuAlphaValue
菜单与背景图象对比度
wScreenSaveTime
屏幕保护时间：0-从不，1-1分钟，2-2分钟，3-5分钟，4-10分钟，5-20分钟，6-30分钟
wVOffset
视频输出偏移
wBrightness
视频输出亮度
byStartMode
启动后视频输出模式：0-菜单，1-预览
byEnableScaler
是否启动缩放：0-不启动，1-启动

See Also

NET_DVR_VIDEOOUT_V30 NET_DVR_VIDEOOUT


NET_DVR_VQD_ALARM

VQD诊断报警结构体。

struct{
  DWORD               dwSize;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  NET_VCA_DEV_INFO    struDevInfo;
  DWORD               dwEventType;
  float               fThreshold;
  DWORD               dwPicDataLen;
  BYTE                *pImage;
  BYTE                byRes[128];
}NET_DVR_VQD_ALARM, *LPNET_DVR_VQD_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息
dwEventType
事件类型，具体定义如下：
enum _VQD_EVENT_ENUM_{
  ENUM_VQD_EVENT_BLUR           = 1,
  ENUM_VQD_EVENT_LUMA           = 2,
  ENUM_VQD_EVENT_CHROMA         = 3,
  ENUM_VQD_EVENT_SNOW           = 4,
  ENUM_VQD_EVENT_STREAK         = 5,
  ENUM_VQD_EVENT_FREEZE         = 6,
  ENUM_VQD_EVENT_SIGNAL_LOSS    = 7,
  ENUM_VQD_EVENT_PTZ            = 8,
  ENUM_VQD_EVENT_SCNENE_CHANGE  = 9,
  ENUM_VQD_EVENT_VIDEO_ABNORMAL = 10,
  ENUM_VQD_EVENT_VIDEO_BLOCK    = 11
}VQD_EVENT_ENUM
ENUM_VQD_EVENT_BLUR
图像模糊
ENUM_VQD_EVENT_LUMA
亮度异常
ENUM_VQD_EVENT_CHROMA
图像偏色
ENUM_VQD_EVENT_SNOW
雪花干扰
ENUM_VQD_EVENT_STREAK
条纹干扰
ENUM_VQD_EVENT_FREEZE
画面冻结
ENUM_VQD_EVENT_SIGNAL_LOSS
信号丢失
ENUM_VQD_EVENT_PTZ
云台失控
ENUM_VQD_EVENT_SCNENE_CHANGE
场景突变
ENUM_VQD_EVENT_VIDEO_ABNORMAL
视频异常
ENUM_VQD_EVENT_VIDEO_BLOCK
视频遮挡
fThreshold
报警阈值，取值范围：[0.000,1.000]
dwPicDataLen
图片长度，为0表示没有图片
pImage
指向图片数据的指针（JPEG图片）
byRes
保留，置为0

Remarks

  • 获取该报警信息，需要调用NET_DVR_SetupAlarmChan_V41进行布防且byRetVQDAlarmType设为1。
  • 相对时标暂未使用。从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

    See Also

    NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO

VQD诊断信息结构体。

struct{
  DWORD           dwChannelNO;
  DWORD           dwVQDType;
  NET_DVR_TIME    struDiagnoseTime;
  BYTE            byScoreValue;
  BYTE            byRes[27];
}NET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO,*LPNET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO;

Members

dwChannelNO
设备通道号
dwVQDType
VQD诊断类型，具体定义如下：
enum _VQD_TYPE_{
  VQD_BLUR_FLAG     = 0x00000001,
  VQD_LUMA_FLAG     = 0x00000002,
  VQD_CHROMA_FLAG   = 0x00000004,
  VQD_SNOW_FLAG     = 0x00000008,
  VQD_STREAK_FLAG   = 0x00000010,
  VQD_FREEZE_FLAG   = 0x00000020,
  VQD_SIGLOSE_FLAG  = 0x00000040,
  VQD_PTZ_FLAG      = 0x00000080
}VQD_TYPE
VQD_BLUR_FLAG
图像模糊
VQD_LUMA_FLAG
亮度异常
VQD_CHROMA_FLAG
图像偏色
VQD_SNOW_FLAG
雪花干扰
VQD_STREAK_FLAG
条纹干扰
VQD_FREEZE_FLAG
画面冻结
VQD_SIGLOSE_FLAG
信号丢失
VQD_PTZ_FLAG
云台失控
struDiagnoseTime
诊断时间
byScoreValue
分数值 ，百分制
byRes
保留，置为0

See Also

NET_DVR_VQD_DIAGNOSE_INFO


NET_DVR_VQD_DIAGNOSE_INFO

VQD诊断信息结构体。

struct{
  DWORD                                  dwSize;
  NET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO    struVQDDiagnoseExceptionInfo;
}NET_DVR_VQD_DIAGNOSE_INFO,*LPNET_DVR_VQD_DIAGNOSE_INFO;

Members

dwSize
结构体大小
struVQDDiagnoseExceptionInfo
诊断异常信息结构体

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30

NET_DVR_GetNextRemoteConfig


NET_DVR_VQD_EVENT_COND

VQD事件条件结构体。

struct{
  DWORD    dwChannel;
  DWORD    dwEventType;
  BYTE     byRes[64];
}NET_DVR_VQD_EVENT_COND, *LPNET_DVR_VQD_EVENT_COND;

Members

dwChannel
通道号
dwEventType
VQD事件类型，具体定义如下：
enum _VQD_EVENT_ENUM_{
  ENUM_VQD_EVENT_BLUR           = 1,
  ENUM_VQD_EVENT_LUMA           = 2,
  ENUM_VQD_EVENT_CHROMA         = 3,
  ENUM_VQD_EVENT_SNOW           = 4,
  ENUM_VQD_EVENT_STREAK         = 5,
  ENUM_VQD_EVENT_FREEZE         = 6,
  ENUM_VQD_EVENT_SIGNAL_LOSS    = 7,
  ENUM_VQD_EVENT_PTZ            = 8,
  ENUM_VQD_EVENT_SCNENE_CHANGE  = 9,
  ENUM_VQD_EVENT_VIDEO_ABNORMAL = 10,
  ENUM_VQD_EVENT_VIDEO_BLOCK    = 11
}VQD_EVENT_ENUM
ENUM_VQD_EVENT_BLUR
图像模糊
ENUM_VQD_EVENT_LUMA
亮度异常
ENUM_VQD_EVENT_CHROMA
图像偏色
ENUM_VQD_EVENT_SNOW
雪花干扰
ENUM_VQD_EVENT_STREAK
条纹干扰
ENUM_VQD_EVENT_FREEZE
画面冻结
ENUM_VQD_EVENT_SIGNAL_LOSS
信号丢失
ENUM_VQD_EVENT_PTZ
云台失控
ENUM_VQD_EVENT_SCNENE_CHANGE
场景突变
ENUM_VQD_EVENT_VIDEO_ABNORMAL
视频异常
ENUM_VQD_EVENT_VIDEO_BLOCK
视频遮挡
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig

NET_DVR_StartDownload


NET_DVR_VQD_EVENT_PARAM

VQD事件参数结构体。

struct{
  BYTE     byThreshold;
  BYTE     byTriggerMode;
  BYTE     byUploadPic;
  BYTE     byRes1;
  DWORD    dwTimeInterval;
  BYTE     byRes2[64];
}NET_DVR_VQD_EVENT_PARAM,*LPNET_DVR_VQD_EVENT_PARAM;

Members

byThreshold
报警阈值，取值范围：[0,100]
byTriggerMode
触发方式：1-持续触发，2-单次触发
byUploadPic
是否上传图片：0-不上传图片，1-上传图片。无论是否上传图片，事后都可以通过接口NET_DVR_StartDownload从设备获取该事件所对应最新的一张报警图片
byRes1
保留，置为0
dwTimeInterval
持续触发报警时间间隔，取值范围：[0,3600]，单位：秒
byRes2
保留，置为0

See Also

NET_DVR_VQD_EVENT_RULE


NET_DVR_VQD_EVENT_RULE

VQD事件规则配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  NET_DVR_VQD_EVENT_PARAM        struEventParam;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V30    struHandleType;
  BYTE                           byRelRecordChan[MAX_IVMS_IP_CHANNEL];
  BYTE                           byRes2[128];
}NET_DVR_VQD_EVENT_RULE,*LPNET_DVR_VQD_EVENT_RULE;

Members

dwSize
结构体大小
byEnable
是否启用该规则：0-不启用，1-启用
byRes1
保留，置为0
struEventParam
视频质量诊断事件参数
struAlarmTime
检测时间，一周7天，每天最多8个时间段
struHandleType
事件关联处理方式
byRelRecordChan
报警触发的录象通道，每位数组对应一个通道，数组下标表示通道号，数组值：1- 触发该通道，0- 不触发
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_VQD_LOOP_DIAGNOSE_CFG

环诊断配置参数结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  BYTE                           byVQDTypeEnable[32];
  BYTE                           byThresholdValue[32];
  NET_DVR_HANDLEEXCEPTION_V40    struAlarmHandleType;
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_SCHEDTIME              struHolidayAlarmTime[MAX_TIMESEGMENT_V30];
  BYTE                           byRes[324];
}NET_DVR_VQD_LOOP_DIAGNOSE_CFG,*LPNET_DVR_VQD_LOOP_DIAGNOSE_CFG;

Members

dwSize
结构体大小
byEnable
诊断使能：0- 关闭，1- 开启
byRes1
保留，置为0
byVQDTypeEnable
VQD诊断模式是否启用，数组值：0- 不启用，1- 启用，每位数组对应不同的诊断模式：数组0- 图像模糊，数组1- 亮度异常，数组2- 图像偏色，数组3- 雪花干扰，数组4- 条纹干扰，数组5- 画面冻结，数组6- 信号丢失，数组7- 云台失控
byThresholdValue
阈值，取值范围：0~100，不同诊断模式有各自对应的阈值，每位数组对应不同的诊断模式：数组0- 图像模糊，数组1- 亮度异常，数组2- 图像偏色，数组3- 雪花干扰，数组4- 条纹干扰，数组5- 画面冻结，数组6- 信号丢失，数组7- 云台失控
struAlarmHandleType
报警处理方式
struAlarmTime
布防时间，周一~周日 7天，每天最多8个时间段
struHolidayAlarmTime
假日布防时间
byRes
保留，置为0

Remarks

  • VQD循环诊断，在设备支持且启用的情况下，设备默认3分钟自动诊断一次，不可配置。
  • 通过接口NET_DVR_StartRemoteConfig（命令：NET_DVR_GET_VQD_DIAGNOSE_INFO）可以手动获取诊断信息，手动诊断使用了该循环诊断配置参数中的阈值（byThresholdValue），如果循环诊断没有配置阈值，则手动诊断时使用默认值（通过VQD能力集可获取）。手动诊断是强制对当前的视频流进行诊断，诊断类型是所有的类型。

    • See Also

    NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_VQD_RESULT_INFO

资源图片查询结果结构体。

struct{
  DWORD    dwSize;
  char     sStreamID[32];
  DWORD    dwPicLength;
  BYTE     byStatus;
  BYTE     byRes[31];
  char     *pSnapShot;
}NET_DVR_VQD_RESULT_INFO,*LPNET_DVR_VQD_RESULT_INFO;

Members

dwSize
结构体大小
sStreamID
流ID(监控点ID)，长度小于32个字节
dwPicLength
图片长度
byStatus
查询结果：0-成功，1-数据有误，2-图片不存在，3-获取图片失败
byRes
保留
pSnapShot
诊断抓图，图片缓存数据(700k)

See Also

NET_DVR_GetDeviceConfig


NET_DVR_VTPARAM

虚拟线圈参数结构体。

struct{
  DWORD                       dwSize;
  BYTE                        byEnable;
  BYTE                        byIsDisplay;
  BYTE                        byLoopPos;
  BYTE                        bySnapGain;
  BYTE                        dwSnapShutter;
  NET_DVR_TRIGCOORDINATE      struTrigCoordinate;
  NET_DVR_TRIGCOORDINATE      struRes[MAX_VL_NUM];
  BYTE                        byTotalLaneNum;
  BYTE                        byPolarLenType;
  BYTE                        byDayAuxLightMode;
  BYTE                        byLoopToCalRoadBright;
  BYTE                        byRoadGrayLowTh;
  BYTE                        byRoadGrayHighTh;
  WORD                        wLoopPosBias;
  DWORD                       dwHfrShtterInitValue;
  DWORD                       dwSnapShtterInitValue;
  DWORD                       dwHfrShtterMaxValue;
  DWORD                       dwSnapShtterMaxValue;
  DWORD                       dwHfrShtterNightValue;
  DWORD                       dwSnapShtterNightMinValue;
  DWORD                       dwSnapShtterNightMaxValue;
  DWORD                       dwInitAfe;
  DWORD                       dwMaxAfe;
  WORD                        wResolutionX;
  WORD                        wResolutionY;
  WORD                        dwGainNightValue;
  WORD                        dwSceneMode;
  WORD                        dwRecordMode;
  NET_DVR_GEOGLOCATION        struGeogLocation;
  BYTE                        byTrigFlag[MAX_VL_NUM];
  BYTE                        byTrigSensitive[MAX_VL_NUM];
  BYTE                        byRes2[62];
}NET_DVR_VTPARAM, *LPNET_DVR_VTPARAM;

Members

dwSize
结构体大小
byEnable
是否使能虚拟线圈，0-不使用，1-使用
byIsDisplay
是否显示虚拟线圈，0-不显示，1-显示
byLoopPos
晚间触发线圈的偏向：0-正向，1-负向（保留）
bySnapGain
抓拍增益
dwSnapShutter
抓拍快门速度
struTrigCoordinate
虚拟线圈参数
struRes
保留
byTotalLaneNum
视频触发的车道数
byPolarLenType
偏振镜类型，0：不加偏振镜；1：加施耐德偏振镜
byDayAuxLightMode
白天辅助照明模式，0：无辅助照明；1：LED灯照明；2：闪光灯照明
byLoopToCalRoadBright
用以计算路面亮度的车道(虚拟线圈)
byRoadGrayLowTh
路面亮度低阈值初始化值，默认值为1
byRoadGrayHighTh
路面亮度高阈值初始化值，默认值为140
wLoopPosBias
晚间触发线圈位移，默认值为30
dwHfrShtterInitValue
连续图像曝光时间的初始值，单位us，默认值为2000
dwSnapShtterInitValue
抓拍图像曝光时间的初始值，默认值为500
dwHfrShtterMaxValue
连续图像曝光时间的最大值，默认值为20000
dwSnapShtterMaxValue
抓拍图像曝光时间的最大值，默认值为1500
dwHfrShtterNightValue
晚间连续图像曝光时间的设置值，默认值为3000
dwSnapShtterNightMinValue
晚间抓拍图像曝光时间的最小值，默认值为3000
dwSnapShtterNightMaxValue
晚间抓拍图像曝光时间的最大值，默认值为5000
dwInitAfe
增益的初始值，默认值为200
dwMaxAfe
增益的最大值，默认值为400
wResolutionX
设备当前分辨率宽
wResolutionY
设备当前分辨率高
dwGainNightValue
晚间增益，默认值70
dwSceneMode
场景模式
enum _SCENE_MODE_{
  UNKOWN_SCENE_MODE   = 0,
  HIGHWAY_SCENE_MODE  = 1,
  SUBURBAN_SCENE_MODE = 2,
  URBAN_SCENE_MODE    = 3,
  TUNNEL_SCENE_MODE   = 4
}SCENE_MODE
UNKOWN_SCENE_MODE
未知场景模式
HIGHWAY_SCENE_MODE
高速场景模式
SUBURBAN_SCENE_MODE
郊区场景模式(保留)
URBAN_SCENE_MODE
市区场景模式
TUNNEL_SCENE_MODE
隧道场景模式(保留)
dwRecordMode
录像标志：0-不录像，1-录像
struGeogLocation
地址位置
byTrigFlag
触发标志，0-车头触发；1-车尾触发；2-车头/车尾都触发
byTrigSensitive
触发灵敏度，1-100
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WALL_INDEX

变量元素信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byWallNo;
  BYTE     bySceneNo;
  BYTE     byRes1[2];
  DWORD    dwDeviceID;
  DWORD    dwWindowNo;
  BYTE     byRes2[32];
}NET_DVR_WALL_INDEX, *LPNET_DVR_WALL_INDEX;

fMembers

dwSize
结构体大小
byWallNo
电视墙序号，从1开始
bySceneNo
场景序号
byRes1
保留，置为0
dwDeviceID
分布式子设备ID
dwWindowNo
窗口序号，多屏控制器中该参数表示信号源序号
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_WALL_WIN_STATUS

窗口状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byDecodeStatus;
  BYTE     byStreamType;
  BYTE     byPacketType;
  BYTE     byFpsDecV;
  BYTE     byFpsDecA;
  BYTE     byRes1[7];
  DWORD    dwDecodedV;
  DWORD    dwDecodedA;
  WORD     wImgW;
  WORD     wImgH;
  BYTE     byRes2[32];
}NET_DVR_WALL_WIN_STATUS, *LPNET_DVR_WALL_WIN_STATUS;

Members

dwSize
结构体大小
byDecodeStatus
当前解码状态：0- 未启动，1- 已启动
byStreamType
编码类型，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_ENCODER_UNKOWN | 0 | 未知编码格式
NET_DVR_ENCODER_H264 | 1 | private 264
NET_DVR_ENCODER_S264 | 2 | 标准H264
NET_DVR_ENCODER_MPEG4 | 3 | MPEG4
NET_DVR_ORIGINALSTREAM | 4 | 原始流
NET_DVR_PICTURE | 5 | 智能分析联动的报警图片
NET_DVR_ENCODER_MJPEG | 6 | MJPEG
NET_DVR_ECONDER_MPEG2 | 7 | MPEG2
byPacketType
封装格式，具体定义见下表：
宏定义 | 宏定义值 | 含义
NET_DVR_STREAM_TYPE_UNKOWN | 0 | 未知封装格式
NET_DVR_STREAM_TYPE_PRIVT | 1 | 私有自定义封装格式
NET_DVR_STREAM_TYPE_TS | 7 | TS封装格式
NET_DVR_STREAM_TYPE_PS | 8 | PS封装格式
NET_DVR_STREAM_TYPE_RTP | 9 | RTP封装格式
NET_DVR_STREAM_TYPE_ORIGIN | 10 | 未封装
byFpsDecV
视频解码帧率
byFpsDecA
音频解码帧率
byRes1
保留，置为0
dwDecodedV
解码的视频帧
dwDecodedA
解码的音频帧
wImgW
解码器当前的图像宽度
wImgH
解码器当前的图像高度
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_DVR_WALLSCENECFG

场景信息结构体。

struct{
  DWORD    dwSize;
  BYTE     sSceneName[NAME_LEN];
  BYTE     byEnable;
  BYTE     bySceneIndex;
  BYTE     byRes[78];
}NET_DVR_WALLSCENECFG, *LPNET_DVR_WALLSCENECFG;

Members

dwSize
结构体大小
sSceneName
场景名称
byEnable
场景是否有效：0- 无效，1- 有效
bySceneIndex
场景号，只能获取。获取所有场景时该参数有效。
byRes
保留，置为0

Remarks

对于LCD拼接屏，场景包括信源类型、拼接、边缘屏蔽、画中画、去雾，切换或保存场景时需要对每块屏发送命令。

See Also

解码器：NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig

LCD拼接屏：NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_WALLWIN_INFO

窗口参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwWinNum;
  DWORD    dwSubWinNum;
  BYTE     byRes[16];
}NET_DVR_WALLWIN_INFO, *LPNET_DVR_WALLWIN_INFO;

Members

dwSize
结构体大小
dwWinNum
窗口号
dwSubWinNum
子窗口号
byRes
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_DVR_WALLWINCFG

电视墙中窗口参数结构体。

struct{
  DWORD               dwSize;
  BYTE                byEnable;
  BYTE                byRes1[7];
  DWORD               dwLayerIndex;
  DWORD               dwWinNum;
  NET_DVR_RECTCFG     struWinPosition;
  BYTE                byRes2[20];
}NET_DVR_WALLWINCFG, *LPNET_DVR_WALLWINCFG;

Members

dwSize
结构体大小
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
dwLayerIndex
窗口相对应的图层号
dwWinNum
窗口号
struWinPosition
目的窗口（相对显示墙）
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_WATER_QLT_STATE

通用扩展输出模块控制结构体。

struct{
  DWORD                                        dwSize;
  BYTE                                         byOutPutState1;
  BYTE                                         byOutPutState2;
  BYTE                                         byOutPutState3;
  BYTE                                         byOutPutState4;
  BYTE                                         byOutPutState5;
  BYTE                                         byOutPutState6;
  BYTE                                         byOperateType;
  BYTE                                         byRes[65];
}NET_DVR_WATER_QLT_STATE,*LPNET_DVR_WATER_QLT_STATE;

Members

dwSize
结构体大小
byOutPutState1
输出口1-8
byOutPutState2
输出口9-16
byOutPutState3
输出口17-24
byOutPutState4
输出口25-32
byOutPutState5
输出口33-40
byOutPutState6
输出口41-48
byOperateType
操作类型：0- 无效，1- 开，2- 关
byRes
保留，置为0

See Also

NET_DVR_SetDVRConfig


NET_DVR_WD1_CFG

WD1使能配置结构体。

struct{
  NET_DVR_STRUCTHEAD    struStructHead;
  BYTE                  byWD1Enable;
  BYTE                  byRes[31];
}NET_DVR_WD1_CFG,*LPNET_DVR_WD1_CFG;

Members

struStructHead
结构体的头信息
byWD1Enable
WD1使能开关：0- 关闭，1- 开启
byRes
保留

Remarks

开启WD1使能后，可以配置该通道的编码分辨率为WD1，否则通道不支持WD1编码。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WDR

宽动态参数结构体。

struct{
  BYTE    byWDREnabled;
  BYTE    byWDRLevel1;
  BYTE    byWDRLevel2;
  BYTE    byWDRContrastLevel;
  BYTE    byRes[16];
}NET_DVR_WDR, *LPNET_DVR_WDR;

Members

byWDREnabled
宽动态是否启用，0-不启用，1-启用，2-自动
byWDRLevel1
0-F
byWDRLevel2
0-F
byWDRContrastLevel
0-100
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_WDR_CFG

宽动态参数配置结构体。

struct{
  DWORD          dwSize;
  NET_DVR_WDR    struWDR;
}NET_DVR_WDR_CFG, *LPNET_DVR_WDR_CFG;

Members

dwSize
结构体大小
struWDR
宽动态参数

Remarks

宽动态参数能力，对应通道输入能力集(ChannelInputAbility)中节点<WDR>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WEEK_PLAN_CFG

周计划配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  NET_DVR_SINGLE_PLAN_SEGMENT    struPlanCfg[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRes2[16];
}NET_DVR_WEEK_PLAN_CFG,*LPNET_DVR_WEEK_PLAN_CFG;

Members

dwSize
结构体大小
byEnable
是否使能：0- 否，1- 是
byRes1
保留，置为0
struPlanCfg
周计划参数，一周7天，每天最多8个时间段
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WEEK_PLAN_COND

卡权限周计划配置条件结构体。

struct{
  DWORD   dwSize;
  DWORD   dwWeekPlanNumber;
  WORD    wLocalControllerID;
  BYTE    byRes[106];
}NET_DVR_WEEK_PLAN_COND,*LPNET_DVR_WEEK_PLAN_COND;

Members

dwSize
结构体大小
dwWeekPlanNumber
周计划编号
wLocalControllerID
就地控制器序号[1,64]，0表示门禁主机
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_DVR_WEP_CFG

WEP加密参数结构体。

struct{
  BYTE                   byAuthenticationType;
  BYTE                   byDefaultTransmitKeyIndex;
  BYTE                   byWepKeyLenType;
  BYTE                   byKeyType;
  NET_DVR_WEP_KEY_CFG    struWEPKeyCfg[WEP_KEY_MAX_NUM];
  BYTE                   byRes[128];
}NET_DVR_WEP_CFG,*LPNET_DVR_WEP_CFG;

Members

byAuthenticationType
身份验证类型：0- 开启验证，1- 共享密钥，2- 自动验证
byDefaultTransmitKeyIndex
默认传输密钥个数，1~4个，对应到struEncryptionKeyCfg加密密钥的个数
byWepKeyLenType
密钥长度类型：0- 64位密钥，1- 128位密钥
byKeyType
密钥类型：0- ASCII码，1- 16进制
struWEPKeyCfg
WEP加密密钥，最大支持4个
byRes
保留，置为0

Remarks

当为64位密钥时，ASCII码密钥字符长度为5个；当为128位密钥时，ASCII码密钥字符长度为13个。

See Also

NET_DVR_WIRELESS_SECURITY_CFG


NET_DVR_WEP_KEY_CFG

WEP加密密钥参数结构体。

struct{
  char    csWEPKey[WEP_KEY_MAX_SIZE];
  BYTE    byRes[64];
}NET_DVR_WEP_KEY_CFG,*LPNET_DVR_WEP_KEY_CFG;

Members

csWEPKey
加密密钥
byRes
保留，置为0

Remarks

当为64位密钥时，ASCII码密钥字符长度为5个；当为128位密钥时，ASCII码密钥字符长度为13个。

See Also

NET_DVR_WEP_CFG


NET_DVR_WHITEBALANCE

白平衡参数结构体。

struct{
  BYTE       byWhiteBalanceMode;
  BYTE       byWhiteBalanceModeRGain;
  BYTE       byWhiteBalanceModeBGain;
  BYTE       byRes[5];
}NET_DVR_WHITEBALANCE, *LPNET_DVR_WHITEBALANCE;

Members

byWhiteBalanceMode
0-手动白平衡（MWB），1-自动白平衡1（AWB1，范围小），2-自动白平衡2（AWB2，范围宽，2200K-15000K），3- 锁定白平衡（Locked WB），4-室外，5-室内，6-日光灯，7-钠灯，8-自动跟踪（Auto-Track），9-一次白平衡（One Push），10-室外自动（Auto-Outdoor），11-钠灯自动(Auto-Sodiumlight)，12-水银灯模式(Mercury Lamp)，13-自动白平衡(Auto)，14-白炽灯 (IncandescentLamp)，15-暖光灯(Warm Light Lamp)，16-自然光(Natural Light)
byWhiteBalanceModeRGain
手动白平衡时有效，手动白平衡R增益
byWhiteBalanceModeBGain
手动白平衡时有效，手动白平衡B增益
byRes
保留

See Also

NET_DVR_CAMERAPARAMCFG_EX NET_DVR_CAMERAPARAMCFG


NET_DVR_WIFI_CFG

IP监控设备无线参数结构体。

struct{
  DWORD                 dwSize;
  NET_DVR_WIFI_CFG_EX   struWifiCfg;
}NET_DVR_WIFI_CFG,*LPNET_DVR_WIFI_CFG;

Members

dwSize
结构体大小
struWifiCfg
无线参数结构

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WIFI_CFG_EX

IP监控设备无线参数的子结构体。

struct{
  NET_DVR_WIFIETHERNET   struEtherNet;
  char                   sEssid[IW_ESSID_MAX_SIZE];
  DWORD                  dwMode;
  DWORD                  dwSecurity;
  union{
           struct{
             DWORD   dwAuthentication;
             DWORD   dwKeyLength;
             DWORD   dwKeyType;
             DWORD   dwActive;
             char    sKeyInfo[WIFI_WEP_MAX_KEY_COUNT][WIFI_WEP_MAX_KEY_LENGTH];
           }wep;
           struct{
             DWORD   dwKeyLength;
             char    sKeyInfo[WIFI_WPA_PSK_MAX_KEY_LENGTH];
             BYTE    byEncryptType;
             char    sNewKeyInfo[WIFI_WPA_PSK_MAX_HEXKEY_LENGTH];
             BYTE    byKeyType;
             BYTE    byRes[7];
           }wpa_psk;
           struct{
             BYTE    byEncryptType;
             BYTE    byAuthType;
             BYTE    byRes[2];
             union{
                    struct{
                      BYTE    byEapolVersion;
                      BYTE    byAuthType;
                      BYTE    byRes1[2];
                      BYTE    byAnonyIdentity[NAME_LEN];
                      BYTE    byUserName[NAME_LEN];
                      BYTE    byPassword[NAME_LEN];
                      BYTE    byRes[44];
                    }EAP_TTLS;
                    struct{
                      BYTE    byEapolVersion;
                      BYTE    byAuthType;
                      BYTE    byPeapVersion;
                      BYTE    byPeapLabel;
                      BYTE    byAnonyIdentity[NAME_LEN];
                      BYTE    byUserName[NAME_LEN];
                      BYTE    byPassword[NAME_LEN];
                      BYTE    byRes[44];
                    }EAP_PEAP;
                    struct{
                      BYTE    byEapolVersion;
                      BYTE    byRes1[3];
                      BYTE    byIdentity[NAME_LEN];
                      BYTE    byPrivateKeyPswd[NAME_LEN];
                      BYTE    byRes[76];
                    }EAP_TLS;
                  }auth_param;
           }wpa_wpa2;
  }key;
}NET_DVR_WIFI_CFG_EX,*LPNET_DVR_WIFI_CFG_EX;

Members

struEtherNet
WIFI网口参数
sEssid
SSID
dwMode
工作模式：0-mange 模式，1-ad-hoc模式
dwSecurity
加密模式：0- 不加密，1- WEP加密，2- WPA-personal，3- WPA-enterprise，4- WPA2-personal，5- WPA2-enterprise
wep为WEP加密参数结构体
dwAuthentication
权限类型：0-开放式，1-共享式
dwKeyLength
密钥长度：0-64位；1-128位；2-152位
dwKeyType
密钥类型：0-16进制；1-ASCII
dwActive
激活哪个密钥（值有0、1、2、3），0表示激活第一个，以此类推
sKeyInfo
密钥信息
wpa_psk为WPA-personal/WPA2-personal加密参数结构体
dwKeyLength
字符加密的长度，允许8-63个ASCII字符
sKeyInfo
字符密钥的信息，byKeyType为0时有效
byEncryptType
WPA-personal/WPA2-personal模式下加密类型：0- AES，1- TKIP
sNewKeyInfo
新类型密钥（支持8-63个ASCII字符以及64个十六制字符密钥），byKeyType为1时有效
byKeyType
密钥类型：0- 老密钥类型（只支持8-63个ASCII字符），1- 新密钥类型（支持8-63个ASCII字符以及64个十六制字符密钥）
byRes
保留，置为0
wpa_wpa2为WPA-enterprise/WPA2-enterpris加密参数结构体
byEncryptType
加密类型：0- AES，1- TKIP
sKeyInfo
认证类型：0- EAP_TTLS，1- EAP_PEAP，2- EAP_TLS
byRes
保留，置为0
EAP_TTLS为EAP_TTLS认证参数结构体
byEapolVersion
EAPOL版本：0- 版本1，1- 版本2
byAuthType
内部认证方式：0- PAP，1- MSCHAPV2
byRes1
保留，置为0
byAnonyIdentity
匿名身份
byUserName
用户名
byPassword
密码
byRes
保留，置为0
EAP_PEAP为EAP_PEAP认证参数结构体
byEapolVersion
EAPOL版本：0- 版本1，1- 版本2
byAuthType
内部认证方式：0- GTC，1- MD5，2- MSCHAPV2
byPeapVersion
PEAP版本：0- 版本0，1- 版本1
byPeapLabel
PEAP标签：0- 老标签，1- 新标签
byAnonyIdentity
匿名身份
byUserName
用户名
byPassword
密码
byRes
保留，置为0
EAP_TLS为EAP_TLS认证参数结构体
byEapolVersion
EAPOL版本：0- 版本1，1- 版本2
byRes1
保留，置为0
byIdentity
身份
byPrivateKeyPswd
私钥密码
byRes
保留，置为0

See Also

NET_DVR_WIFI_CFG


NET_DVR_WIFI_CLIENT_INFO

WIFI热点下连接的设备信息结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struAddress;
  BYTE              byMACAddr[MACADDR_LEN];
  WORD              wConnSpeed;
  BYTE              byRSSIValue;
  BYTE              byRes1;
  WORD              wBandwidth;
  BYTE              byRes[32];
 }NET_DVR_WIFI_CLIENT_INFO,*LPNET_DVR_WIFI_CLIENT_INFO;

Members

dwSize
结构体大小
struAddress
设备IP地址
byMACAddr
设备MAC地址
wConnSpeed
连接速度，单位：KB/S
byRSSIValue
接收到的信号强度，取值范围：0~110，单位：-1*dbm，值越靠近0代表信号越强，例如：byRSSIValue=100表示实际信号强度为-100dbm
byRes1
保留，置为0
wBandwidth
网络带宽，单位：KB
byRes
保留，置为0

See Also

  • WIFI热点下连接设备信息能力，对应无线网络能力集(NetworkSetting)中节点<WifiClientListInfo>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETWORK_ABILITY。

See Also

NET_DVR_GetNextRemoteConfig


NET_DVR_WIFI_CONNECT_STATUS

wifi连接状态信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byCurStatus;
  BYTE     byRes1[3];
  DWORD    dwErrorCode;
  BYTE     byRes[244];
}NET_DVR_WIFI_CONNECT_STATUS,*LPNET_DVR_WIFI_CONNECT_STATUS;

Members

dwSize
结构体大小
byCurStatus
wifi连接状态：1-已连接，2-未连接，3-正在连接
byRes1
保留
dwErrorCode
错误号，byCurStatus==2时有效：1-用户名或密码错误，2-无此路由器，3-未知错误
byRes
保留

See Also

NET_DVR_GetDVRConfig


NET_DVR_WIFI_DHCP_ADDR_CFG

WIFI DHCP地址范围配置结构体。

struct{
  DWORD             dwSize;
  NET_DVR_IPADDR    struStartAddr;
  NET_DVR_IPADDR    struEndAddr;
  BYTE              byRes[256];
 }NET_DVR_WIFI_DHCP_ADDR_CFG,*LPNET_DVR_WIFI_DHCP_ADDR_CFG;

Members

dwSize
结构体大小
struStartAddr
开始IP地址
struEndAddr
结束IP地址
byRes
保留，置为0

See Also

  • WIFI DHCP地址范围配置能力，对应无线网络能力集(NetworkSetting)中节点<WifiDHCPAddr>，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_NETWORK_ABILITY。
  • 庭审主机Wifi模块为选配模块，设备配置了wifi模块（dhcp默认均开启）或者能力集返回enable，该地址范围有效。目前庭审主机DHCP只支持配置192.168.254网段。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WIFI_WORKMODE

网口工作模式参数结构体。

struct{
  DWORD   dwSize;
  DWORD   dwNetworkInterfaceMode;
}NET_DVR_WIFI_WORKMODE,*LPNET_DVR_WIFI_WORKMODE;

Members

dwSize
结构体大小
dwNetworkInterfaceMode
网口工作模式：0-自动切换模式；1-有线模式

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WIFIETHERNET

无线网口参数结构体。

struct{
  char    sIpAddress[16];
  char    sIpMask[16];
  BYTE    byMACAddr[MACADDR_LEN];
  BYTE    byCloseWifi;
  BYTE    bRes;
  DWORD   dwEnableDhcp;
  DWORD   dwAutoDns;
  char    sFirstDns[16];
  char    sSecondDns[16];
  char    sGatewayIpAddr[16];
  BYTE    bRes2[8];
}NET_DVR_WIFIETHERNET,*LPNET_DVR_WIFIETHERNET;

Members

sIpAddress
设备IP地址
sIpMask
掩码
byMACAddr
物理地址，仅获取不能设置
byCloseWifi
是否关闭wifi连接：0- 不关闭，1- 关闭
bRes
保留，置为0
dwEnableDhcp
是否启动DHCP：0-不启动，1-启动
dwAutoDns
如果启动DHCP是否自动获取DNS：0-不自动获取 ，1-自动获取；对于有线如果启动DHCP，目前自动获取DNS
sFirstDns
第一个DNS域名
sSecondDns
第二个DNS域名
sGatewayIpAddr
网关地址
bRes2
保留，置为0

See Also

NET_DVR_WIFI_CFG_EX


NET_DVR_WIN_ROAM_SWITCH_CFG

窗口漫游开关参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableRoam;
  BYTE     byRes[31];
}NET_DVR_WIN_ROAM_SWITCH_CFG,*LPNET_DVR_WIN_ROAM_SWITCH_CFG;

Members

dwSize
结构体大小
byEnableRoam
是否允许窗口漫游：0- 否，非0- 是
byRes
保留，置为0

Remarks

  • 开启窗口漫游时，解码器使用拼控接口进行配置，解码器显示通道分屏及解码通道操作相关接口均失效。关闭窗口漫游时，遵循普通解码器接口，以显示通道和解码通道方式操作设备，电视墙漫游相关接口失效。
  • 设备是否支持窗口漫游能力，可以通过设备能力集进行判断，对应解码器能力集(DECODER_ABILITY)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DECODER_ABILITY，节点：<SupportWinRoamSwitch>。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_WIN_ZOOM_STATUS

开机LOGO参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[31];
}NET_DVR_WIN_ZOOM_STATUS,*LPNET_DVR_WIN_ZOOM_STATUS;

Members

dwSize
结构体大小
byEnable
开机是否显示LOGO：0- 不显示，1- 显示
byRes
保留，置为0

See Also

NET_DVR_MSC_SCREEN_PARAM

NET_DVR_GetDVRConfig


NET_DVR_WINCFG

窗口信息结构体。

struct{
  DWORD               dwSize;
  BYTE                byVaild;
  BYTE                byInputIdx;
  BYTE                byLayerIdx;
  BYTE                byTransparency;
  NET_DVR_RECTCFG     struWin;
  WORD                wScreenHeight;
  WORD                wScreenWidth;
  BYTE                byRes[20];
}NET_DVR_WINCFG, *LPNET_DVR_WINCFG;

Members

dwSize
结构体大小
byVaild
是否有效：0－无效，1－有效
byInputIdx
输入源索引：0- video，1- RGB，2- 网络
byLayerIdx
图层，0为最底层
byTransparency
透明度，取值范围：0～100
struWin
目的窗口(相对显示墙)
wScreenHeight
大屏高
wScreenWidth
大屏宽
byRes
保留，置为0


NET_DVR_WINLIST

窗口链表结构体

struct{
  DWORD    dwSize;
  WORD     wScreenSeq;
  BYTE     byRes[10];
  DWORD    dwWinNum;
  BYTE     *pBuffer;
  DWORD    dwBufLen;
}NET_DVR_WINLIST, *LPNET_DVR_WINLIST;

Members

dwSize
结构体大小
wScreenSeq
设备序号
byRes
保留
dwWinNum
设备返回的窗口数量
pBuffer
窗口信息缓冲区，最大为224*sizeof(NET_DVR_SCREEN_WINCFG)
dwBufLen
所分配指针长度

See Also

NET_DVR_SCREEN_WINCFG

NET_DVR_GetAllValidWinInfo


NET_DVR_WIRELESS_ALARM_STUDY_PARAM

无线报警学习参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byIndex;
  BYTE     byRes[15];
}NET_DVR_WIRELESS_ALARM_STUDY_PARAM,*LPNET_DVR_WIRELESS_ALARM_STUDY_PARAM;

Members

dwSize
结构体大小
dwChannel
通道号
byIndex
无线报警序号，取值范围：1~8
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_WIRELESS_SECURITY_CFG

无线安全加密参数结构体。

struct{
  BYTE               bySecurityMode;
  NET_DVR_WEP_CFG    struWEPCfg;
  NET_DVR_WPA_CFG    struWPACfg;
  BYTE               byRes[256];
}NET_DVR_WIRELESS_SECURITY_CFG,*LPNET_DVR_WIRELESS_SECURITY_CFG;

Members

bySecurityMode
安全模式：0- 禁用，1- WEP，2- WPA-personal，3- WPA2-personal
struWEPCfg
WEP加密参数，当安全模式选择为WEP时生效
struWPACfg
WPA加密参数，当安全模式选择为WPA-personal、WPA2-personal时生效/dd>
byRes
保留，置为0

See Also

NET_DVR_WIRELESSSERVER_FULLVERSION_CFG


NET_DVR_WIRELESSDIAL_CFG

无线拨号连接配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnabled;
  BYTE     byDialMode;
  BYTE     byNetworkMode;
  BYTE     byRes1;
  BYTE     byDialNum[MAX_DIALNUM_LENGTH];
  BYTE     byUserName[NAME_LEN];
  BYTE     byPassword[NAME_LEN];
  BYTE     byAPNName[NAME_LEN];
  BYTE     byUIMCardNum[NAME_LEN];
  BYTE     byVerifProtocol;
  BYTE     byRes2;
  WORD     wMTU;
  DWORD    dwOffineTime;
  BYTE     byNetAPN[NAME_LEN];
  BYTE     byRes3[32];
}NET_DVR_WIRELESSDIAL_CFG,*LPNET_DVR_WIRELESSDIAL_CFG;

Members

dwSize
结构体大小
byEnabled
是否启用无线拨号：0-否，1- 是
byDialMode
拨号方式：0-自动（Auto），1-手动（Manual），默认自动，手动模式下可设置拨号计划、下线时间、手动拨号
byNetworkMode
网络模式：0-自动，1-4G优先，2-3G优先，3-手动切换2G，4-手动切换3G，5-手动切换4G，6-有线优先
byRes1
保留参数
byDialNum
拨号号码
byUserName
用户名
byPassword
密码
byAPNName
APN
byUIMCardNum
手机号码
byVerifProtocol
认证协议：0- 自动（Auto），1- CHAP，2- PAP
byRes2
保留
wMTU
MTU值
dwOffineTime
下线时间，取值范围：30~65535，单位：秒，手动模式下有效
byNetAPN
私有专网APN字段配置
byRes3
保留

Remarks

该配置功能对应无线拨号参数能力集(Dial)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_WIRELESSDIAL_CAPABILITIES)。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_WIRELESSDIAL_CONNECT_PARAM

无线拨号连接控制参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwInterface;
  BYTE     byEnableConnect;
  BYTE     byRes[255];
}NET_DVR_WIRELESSDIAL_CONNECT_PARAM,*LPNET_DVR_WIRELESSDIAL_CONNECT_PARAM;

Members

dwSize
结构体大小
dwInterface
网卡编号，如1，2，……
byEnableConnect
是否连网：0- 断网，1- 连网
byRes
保留，置为0

Remarks

进行连网和断网控制后，可以通过接口NET_DVR_GetSTDConfig（命令：NET_DVR_GET_WIRELESSDIAL_STATUS）刷新获取当前状态。

See Also

NET_DVR_STD_CONTROL


NET_DVR_WIRELESSDIAL_SCHEDULE

无线拨号计划结构体。

struct{
  DWORD                dwSize;
  NET_DVR_SCHEDTIME    struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                 byRes[160];
}NET_DVR_WIRELESSDIAL_SCHEDULE,*LPNET_DVR_WIRELESSDIAL_SCHEDULE;

Members

dwSize
结构体大小
struAlarmTime
布防时间，每周7天，每天最多设置8个时间段
byRes
保留

Remarks

该配置功能对应拨号计划能力集(Schedule)，接口：NET_DVR_GetSTDAbility(能力集类型：NET_DVR_GET_WIRELESSDIAL_SCHEDULE_CAPABILITIES)。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_WIRELESSDIAL_STATUS

无线拨号连接状态结构体。

struct{
  DWORD             dwSize;
  BYTE              byRealtimeMode[MAX_LENGTH_32];
  BYTE              byUIMStatus[MAX_LENGTH_32];
  DWORD             dwSignalQuality;
  BYTE              byDialStatus[MAX_LENGTH_32];
  NET_DVR_IPADDR    struIpAddr;
  NET_DVR_IPADDR    struIPMask;
  NET_DVR_IPADDR    struGatewayIPMask;
  NET_DVR_IPADDR    struDnsServerIpAddr;
  BYTE              byRes[256];
}NET_DVR_WIRELESSDIAL_CONNECT_PARAM,*LPNET_DVR_WIRELESSDIAL_CONNECT_PARAM;

Members

dwSize
结构体大小
byRealtimeMode
实时模式(CDMA 1x、EVDO、HYBRID、GSM、GPRS、EDGE、WCDMA、HSDPA、HSUPA、HSPA、TDSCDMA、TD-LTE、FDD-LTE、LTE、UNKNOWN)
byUIMStatus
UIM状态(UNKNOWN,VALID,NOVALID,ROAM,NOEXIST)
dwSignalQuality
信号质量，取值范围：1~100
byDialStatus
拨号状态码
struIpAddr
IP地址
struIPMask
掩码地址
struGatewayIPMask
网关地址
struDnsServerIpAddr
DNS地址
byRes
保留

See Also

NET_DVR_GetSTDConfig


NET_DVR_WIRELESSSERVER

热点服务功能配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byWLanShare;
  BYTE     byBroadcastSSID;
  BYTE     bySecurityMode;
  BYTE     byAlgorithmType;
  char     szSSID[MAX_SSID_LEN];
  char     szPassWord[MAX_WS_PASSWD_LEN];
  BYTE     byDefaultPassword;
  BYTE     byRes[255];
 }NET_DVR_WIRELESSSERVER,*LPNET_DVR_WIRELESSSERVER;

Members

dwSize
结构体大小
byWLanShare
WLan热点使能：0- 关闭，1- 使能
byBroadcastSSID
SSID广播使能：0- 关闭，1- 使能
bySecurityMode
安全模式：0- not-encrypted，1- WPA，2- WPA2(暂时只支持2)
byAlgorithmType
加密模式：1- TKIP，2- AES
szSSID
SSID号信息
szPassWord
密码
byDefaultPassword
是否是默认密码：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 设备是否支持WIFI热点参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应热点功能配置能力集(WirelessServer)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_WIRELESSSERVER_CAPABILITIES。其中能力集中包含<WirelessSecurity>节点表示支持完整版WIFI参数配置，通过NET_DVR_WIRELESSSERVER_FULLVERSION_CFG进行配置。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_WIRELESSSERVER_FULLVERSION_CFG

WIFI热点参数(完整版)配置结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byWifiAPEnabled;
  BYTE                             byBroadcastEnabled;
  BYTE                             byWlanShareEnabled;
  BYTE                             byDHCPEnabled;
  BYTE                             bySSID[IW_ESSID_MAX_SIZE];
  BYTE                             byRes1[11];
  BYTE                             byIPType;
  NET_DVR_IPADDR                   struIPAddr;
  NET_DVR_IPADDR                   struIPMask;
  NET_DVR_IPADDR                   struGatewayIPMask;
  NET_DVR_IPADDR                   struStartIPAddrPool;
  NET_DVR_IPADDR                   struEndIPAddrPool;
  NET_DVR_IPADDR                   struDNSServerIpAddr[MAX_DNS_SERVER_NUM];
  NET_DVR_WIRELESS_SECURITY_CFG    struWirelessSecurityCfg;
  BYTE                             byRes[256];
}NET_DVR_WIRELESSSERVER_FULLVERSION_CFG,*LPNET_DVR_WIRELESSSERVER_FULLVERSION_CFG;

Members

dwSize
结构体大小
byWifiAPEnabled
是否启用无线AP：0- 否，1- 是
byBroadcastEnabled
是否启用广播：0- 否，1- 是
byWlanShareEnabled
是否启用共享：0- 否，1- 是
byDHCPEnabled
是否启用DHCP：0- 否，1- 是
bySSID
SSID
byRes1
保留，置为0
byIPType
IP地址类型：0- IPv4，1- IPv6
struIPAddr
IP地址
struIPMask
掩码地址
struGatewayIPMask
网关地址
struStartIPAddrPool
IP段起始地址
struEndIPAddrPool
IP段结束地址
struDNSServerIpAddr
DNS地址，每位数组表示一个DNS服务器地址
struWirelessSecurityCfg
无线安全加密参数
byRes
保留，置为0

Remarks

  • 设备是否支持WIFI热点参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应热点功能配置能力集(WirelessServer)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_WIRELESSSERVER_CAPABILITIES。其中能力集中包含<WirelessSecurity>节点表示支持该完整版WIFI参数配置，否则WIFI热点参数通过NET_DVR_WIRELESSSERVER进行配置。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_WORKING_DEVICE_INFO

工作机信息结构体。

struct{
  NET_DVR_IPADDR     struIP;
  BYTE               byLinkStatus;
  BYTE               byWorkStatus;
  BYTE               byBacupStatus;
  BYTE               bySyncProgress;
  NET_DVR_TIME_EX    struSyncBeginTime;
  NET_DVR_TIME_EX    struSyncEndTime;
  char               szSerialNumber[SERIALNO_LEN];
  DWORD              dwSoftwareVersion;
  BYTE               byWorkingDeviceGUID[GUID_LEN];
  char               szDevTypeName[DEV_TYPE_NAME_LEN];
  WORD               wDevType;
}NET_DVR_WORKING_DEVICE_INFO, *LPNET_DVR_WORKING_DEVICE_INFO;

Members

struIP
设备IP地址
byLinkStatus
连接状态：0- 连接失败，1- 连接成功
byWorkStatus
工作状态：0- 正常，1- 异常
byBacupStatus
备份状态：0- 不在备份，1- 正在备份
bySyncProgress
录像同步进度，0表示未开始，100表示同步完成
struSyncBeginTime
同步开始时间
struSyncEndTime
同步结束时间
szSerialNumber
设备序列号
dwSoftwareVersion
设备软件版本
byWorkingDeviceGUID
工作机GUID，非字符串，用于备机上搜索工作机录像
szDevTypeName
设备类型名称
wDevType
设备类型值

See Also

NET_DVR_NPO_DEV_INFO_UNION


NET_DVR_WORKSTATE

设备工作状态信息结构体。

struct{
  DWORD                  dwDeviceStatic;
  NET_DVR_DISKSTATE      struHardDiskStatic[MAX_DISKNUM];
  NET_DVR_CHANNELSTATE   struChanStatic[MAX_CHANNUM];
  BYTE                   byAlarmInStatic[MAX_ALARMIN];
  BYTE                   byAlarmOutStatic[MAX_ALARMOUT];
  DWORD                  dwLocalDisplay;
}NET_DVR_WORKSTATE,*LPNET_DVR_WORKSTATE;

Members

dwDeviceStatic
设备的状态：0－正常；1－CPU占用率太高，超过85%；2－硬件错误，例如串口异常
struHardDiskStatic
硬盘状态
struChanStatic
通道状态
byAlarmInHandle
报警输入口的状态：0-没有报警；1-有报警
byAlarmOutStatic
报警输出口的状态：0-没有输出，1-有报警输出
dwLocalDisplay
本地显示状态：0-正常，1-不正常

See Also

NET_DVR_GetDVRWorkState


NET_DVR_WORKSTATE_V30

设备工作状态信息结构体。

struct{
  DWORD                      dwDeviceStatic;
  NET_DVR_DISKSTATE          struHardDiskStatic[MAX_DISKNUM_V30];
  NET_DVR_CHANNELSTATE_V30   struChanStatic[MAX_CHANNUM_V30];
  BYTE                       byAlarmInStatic[MAX_ALARMIN_V30];
  BYTE                       byAlarmOutStatic[MAX_ALARMOUT_V30];
  DWORD                      dwLocalDisplay;
  BYTE                       byAudioChanStatus[MAX_AUDIO_V30];
  BYTE                       byRes[10];
}NET_DVR_WORKSTATE_V30,*LPNET_DVR_WORKSTATE_V30;

Members

dwDeviceStatic
设备的状态：0－正常；1－CPU占用率太高，超过85%；2－硬件错误，例如串口异常
struHardDiskStatic
硬盘状态
struChanStatic
通道状态
byAlarmInStatic
报警输入口的状态：0-没有报警；1-有报警
byAlarmOutStatic
报警输出口的状态：0-没有输出，1-有报警输出
dwLocalDisplay
本地显示状态：0-正常，1-不正常
byAudioChanStatus
表示语音通道的状态：0-未使用，1-使用中，0xff无效
byRes
保留，置为0

See Also

NET_DVR_GetDVRWorkState_V30


NET_DVR_WORKSTATE_V40

设备工作状态信息结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwDeviceStatic;
  NET_DVR_DISKSTATE          struHardDiskStatic[MAX_DISKNUM_V30];
  NET_DVR_CHANNELSTATE_V30   struChanStatic[MAX_CHANNUM_V40];
  DWORD                      dwHasAlarmInStatic[MAX_ALARMIN_V40];
  DWORD                      dwHasAlarmOutStatic[MAX_ALARMOUT_V40];
  DWORD                      dwLocalDisplay;
  BYTE                       byAudioInChanStatus[MAX_AUDIO_V30];
  BYTE                       byRes1[2];
  float                      fHumidity;
  float                      fTemperature;
  BYTE                       byRes[116];
}NET_DVR_WORKSTATE_V40,*LPNET_DVR_WORKSTATE_V40;

Members

dwSize
结构体大小
dwDeviceStatic
设备的状态：0－正常；1－CPU占用率太高，超过85%；2－硬件错误，例如串口异常
struHardDiskStatic
硬盘状态，一次最多只能获取33个硬盘信息
struChanStatic
通道的状态，从前往后顺序排列
byAlarmInStatic
有报警的报警输入口，按值表示（起始通道号为1），按下标值顺序排列，值为0xffffffff时当前及后续值无效
byAlarmOutStatic
有报警输出的报警输出口，按值表示（起始通道号为1），按下标值顺序排列，值为0xffffffff时当前及后续值无效
dwLocalDisplay
本地显示状态：0-正常，1-不正常
byAudioChanStatus
表示语音通道的状态，第0位表示第1个语音通道，第1位表示第2个语音通道，数组元素值：0-未使用，1-使用中，0xff无效
byRes1
保留，置为0
fHumidity
传感器获知的湿度，取值范围：0.0~100.0
fTemperature
传感器获知的温度，取值范围：-20.0~90.0
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig

NET_DVR_CHECK_DEV_STATE


NET_DVR_WPA_CFG

WPA加密参数结构体。

struct{
  BYTE    byAlgorithmType;
  BYTE    byWPAKeyLen;
  BYTE    byDefaultPassword;
  BYTE    byRes1;
  char    csSharedKey[WPA_KEY_MAX_SIZE];
  BYTE    byRes[128];
}NET_DVR_WPA_CFG,*LPNET_DVR_WPA_CFG;

Members

byAlgorithmType
算法类型：0- TKIP，1- AES，2- TKIP/AES
byWPAKeyLen
WPA共享密钥长度，区间为8~63，对应到csSharedKey参数的字符长度
byDefaultPassword
是否启用默认WPA密钥：0- 否，1- 是
byRes1
保留，置为0
csSharedKey
WPA共享密钥，为8~63个ASCII字符
byRes
保留，置为0

See Also

NET_DVR_WIRELESS_SECURITY_CFG


NET_DVR_WPS_CONNECT_PARAM

WPS连接参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byConnectType;
  BYTE     byRes1[3];
  BYTE     byPIN[8];
  BYTE     byEssid[IW_ESSID_MAX_SIZE];
  BYTE     byRes[32];
}NET_DVR_WPS_CONNECT_PARAM, *LPNET_DVR_WPS_CONNECT_PARAM;

Members

dwSize
结构体大小
byConnectType
WPS连接方式：0- PBC，1- AP PIN
byRes1
保留，置为0
byPIN
PIN码（WPS连接方式为AP PIN时有效）
byEssid
ESSID（WPS连接方式为AP PIN时有效）
byRes
保留，置为0

See Also

NET_DVR_RemoteControl


NET_DVR_WPS_PARAM

无线WPS参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnableWps;
  BYTE     byRes[31];
}NET_DVR_WPS_PARAM, *LPNET_DVR_WPS_PARAM;

Members

dwSize
结构体大小
byEnableWps
启用WPS：0- 否，1- 是
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_XML_CONFIG_INPUT

透传接口输入参数结构体。

struct{
  DWORD    dwSize;
  void     *lpRequestUrl;
  DWORD    dwRequestUrlLen;
  void     *lpInBuffer;
  DWORD    dwInBufferSize;
  DWORD    dwRecvTimeOut;
  BYTE     byForceEncrpt;
  BYTE     byRes[31];
}NET_DVR_XML_CONFIG_INPUT,*LPNET_DVR_XML_CONFIG_INPUT;

Members

dwSize
结构体大小
lpRequestUrl
请求信令，字符串格式
dwRequestUrlLen
请求信令长度，字符串长度
lpInBuffer
输入参数缓冲区，XML格式
dwInBufferSize
输入参数缓冲区大小
dwRecvTimeOut
接收超时时间，单位：ms，填0则使用默认超时5s
byForceEncrpt
是否强制加密（启用之后透传的XML报文将加密传输，AES128加密算法）：0- 否，1- 是
byRes
保留，置为0

Remarks

  • 对于不同的协议功能（lpRequestUrl输入的URL命令），lpInBuffer对应不同的内容，详见NET_DVR_STDXMLConfig接口中"Remarks"说明。


NET_DVR_XML_CONFIG_INPUT

透传接口输入参数结构体。

struct{
  DWORD    dwSize;
  void     *lpRequestUrl;
  DWORD    dwRequestUrlLen;
  void     *lpInBuffer;
  DWORD    dwInBufferSize;
  DWORD    dwRecvTimeOut;
  BYTE     byForceEncrpt;
  BYTE     byNumOfMultiPart;
  BYTE     byRes[30];
}NET_DVR_XML_CONFIG_INPUT,*LPNET_DVR_XML_CONFIG_INPUT;

Members

dwSize
结构体大小
lpRequestUrl
请求信令，字符串格式
dwRequestUrlLen
请求信令长度，字符串长度
lpInBuffer
输入参数缓冲区，XML/JSON格式
dwInBufferSize
输入参数缓冲区大小
dwRecvTimeOut
接收超时时间，单位：ms，填0则使用默认超时5s
byNumOfMultiPart
报文分段个数：0- 无效；
其他- lpInBuffer传入NET_DVR_MIME_UNIT结构体指针，该值即代表结构体个数
byRes
保留，置为0

Remarks

  • 对于不同的协议功能（lpRequestUrl输入的URL命令），lpInBuffer对应不同的内容，详见NET_DVR_STDXMLConfig接口中"Remarks"说明。


NET_DVR_XML_CONFIG_OUTPUT

透传接口输出参数结构体。

struct{
  DWORD    dwSize;
  void     *lpOutBuffer;
  DWORD    dwOutBufferSize;
  DWORD    dwReturnedXMLSize;
  void     *lpStatusBuffer;
  DWORD    dwStatusSize;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  void                     *lpDataBuffer;
  #else
  void                     *lpDataBuffer;
  BYTE                     byRes2[4];
  #endif
  BYTE     byNumOfMultiPart;
  BYTE     byRes[23];
}NET_DVR_XML_CONFIG_OUTPUT,*LPNET_DVR_XML_CONFIG_OUTPUT;

Members

dwSize
[in] 结构体大小
lpOutBuffer
[out] 输出参数缓冲区，XML格式，请求信令为“GET”类型时应用层需要事先分配足够大的内存
dwOutBufferSize
[in] 输出参数缓冲区大小(内存大小)
dwReturnedXMLSize
[out] 实际输出的XML内容大小
lpStatusBuffer
[out] 返回的状态参数(XML格式：ResponseStatus)，获取命令成功时不会赋值，如果不需要，可以置NULL
dwStatusSize
[in] 状态缓冲区大小(内存大小)
lpDataBuffer
[out] 当byNumOfMultiPart>0时，配合报文结构体使用，存放透传数据
byNumOfMultiPart
[out] 0-无效，其他值表示报文分段个数，非零时lpInBuffer传入的是NET_DVR_MIME_UNIT结构体数组的指针，该值即代表结构体个数
byRes
[out] 保留，置为0

Remarks

  • 对于不同的协议功能（NET_DVR_XML_CONFIG_INPUT结构体中的lpRequestUrl输入的URL命令），lpOutBuffer对应不同的内容，详见NET_DVR_STDXMLConfig接口中"Remarks"说明。


NET_DVR_XML_CONFIG_OUTPUT

透传接口输出参数结构体。

struct{
  DWORD    dwSize;
  void     *lpOutBuffer;
  DWORD    dwOutBufferSize;
  DWORD    dwReturnedXMLSize;
  void     *lpStatusBuffer;
  DWORD    dwStatusSize;
  BYTE     byRes[32];
}NET_DVR_XML_CONFIG_OUTPUT,*LPNET_DVR_XML_CONFIG_OUTPUT;

Members

dwSize
[in] 结构体大小
lpOutBuffer
[out] 输出参数缓冲区，XML/JSON格式，请求信令为“GET”类型时应用层需要事先分配足够大的内存
dwOutBufferSize
[in] 输出参数缓冲区大小(内存大小)
dwReturnedXMLSize
[out] 实际输出的XML/JSON内容大小
lpStatusBuffer
[out] 返回的状态参数(XML/JSON格式：ResponseStatus)，获取命令成功时不会赋值，如果不需要，可以置NULL
dwStatusSize
[in] 状态缓冲区大小(内存大小)
byRes
[out] 保留，置为0

Remarks

  • 对于不同的协议功能（NET_DVR_XML_CONFIG_INPUT结构体中的lpRequestUrl输入的URL命令），lpOutBuffer对应不同的内容，详见NET_DVR_STDXMLConfig接口中"Remarks"说明。


NET_DVR_ZERO_ZOOMCFG

零通道缩放参数结构体。

struct{
  DWORD           dwSize;
  NET_VCA_POINT   struPoint;
  BYTE            byState;
  BYTE            byPreviewNumber;
  BYTE            byPreviewSeq[MAX_WINDOW_V30];
  BYTE            byRes[30];
}NET_DVR_ZERO_ZOOMCFG,*LPNET_DVR_ZERO_ZOOMCFG;

Members

dwSize
结构体大小
struPoint
画面中的坐标点
byState
现在的状态：0-缩小；1-放大
byPreviewNumber
预览数目：0-1画面，1-4画面，2-9画面，3-16画面（该参数只读）
byPreviewSeq
画面通道信息（该参数只读）
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ZEROCHANCFG

零通道压缩参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes1[3];
  DWORD    dwVideoBitrate;
  DWORD    dwVideoFrameRate;
  BYTE     byRes2[32];
}NET_DVR_ZEROCHANCFG, *LPNET_DVR_ZEROCHANCFG;

Members

dwSize
结构体大小
byEnable
是否启用零通道编码：0-不启用；1-启用
byRes1
保留
dwVideoBitrate
码率：0-保留，1-16K(保留)，2-32K，3-48k，4-64K，5-80K，6-96K，7-128K，8-160k，9-192K，10-224K，11-256K，12-320K，13-384K，14-448K，15-512K，16-640K，17-768K，18-896K，19-1024K，20-1280K，21-1536K，22-1792K，23-2048K。
dwVideoFrameRate
帧率：0-全部，1-1/16，2-1/8，3-1/4，4-1/2，5-1，6-2，7-4，8-6，9-8，10-10，11-12，12-16，13-20，14-15，15-18，16－22
byRes2
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ZONE_ALARM_INFO

防区报警信息结构体。

struct{
  BYTE     byZoneName[NAME_LEN];
  DWORD    dwZonendex;
  BYTE     byZoneType;
  BYTE     byRes[219];
}NET_DVR_ZONE_ALARM_INFO, *LPNET_DVR_ZONE_ALARM_INFO;

Members

byZoneName
防区名称
dwZonendex
防区号
byZoneType
防区类型，参考DETECTOR_TYPE
ENUM_ALARM_ZONE_TYPE_MANUAL
紧急开关报警
ENUM_ALARM_ZONE_TYPE_MAGNETIC
门磁报警
ENUM_ALARM_ZONE_TYPE_SMOKE
烟感报警
ENUM_ALARM_ZONE_TYPE_ACTIVE_INFRARED
主动红外报警
ENUM_ALARM_ZONE_TYPE_PASSIVE_INFRARED
被动红外报警
ENUM_ALARM_ZONE_TYPE_GAS
煤气报警
byRes
保留，置为0

See Also

NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION


NET_DVR_ZONE_CHANNEL_LINKAGE_CFG

防区联动视频通道配置结构体。

struct{
  DWORD                                 dwSize;
  NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG    struLinkChannels[MAX_ZONE_LINKAGE_CHAN_NUM];
  BYTE                                  byRes[256];
}NET_DVR_ZONE_CHANNEL_LINKAGE_CFG,*LPNET_DVR_ZONE_CHANNEL_LINKAGE_CFG;

Members

dwSize
结构体大小
struLinkChannels
联动的视频通道，最多可以配置联动4个通道
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ZONEANDDST

夏令时参数结构体。

struct{
  DWORD                  dwSize;
  DWORD                  dwZoneIndex;
  BYTE                   byRes1[12];
  DWORD                  dwEnableDST;
  BYTE                   byDSTBias;
  BYTE                   byRes2[3];
  NET_DVR_TIMEPOINT      struBeginPoint;
  NET_DVR_TIMEPOINT      struEndPoint;
}NET_DVR_ZONEANDDST,*LPNET_DVR_ZONEANDDST;

Members

dwSize
结构体大小
dwZoneIndex
该参数请赋值为NET_DVR_GetDVRConfig获取的值，设置时区请通过设置NET_DVR_NTPPARA中的cTimeDifferenceH 或cTimeDifferenceM来实现
byRes1
保留，置为0
dwEnableDST
是否启用夏时制：0－不启用，1－启用
byDSTBias
夏令时偏移值（以分钟计）：30min，60min，90min，120min
byRes2
保留，置为0
struBeginPoint
夏时制开始时间
struEndPoint
夏时制停止时间

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_DVR_ZOOMLINKAGE

变倍联动配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byEnable;
  BYTE     byRes[255];
}NET_DVR_ZOOMLINKAGE,*LPNET_DVR_ZOOMLINKAGE;

Members

dwSize
结构体大小
byEnable
变倍联动使能开关：0- 关闭，1- 开启
byRes
保留，置为0

Remarks

  • 设备是否支持变倍联动配置或者支持的参数能力，可以通过设备能力集进行判断，对应变倍联动配置能力集(ZoomLinkage)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_ZOOMLINKAGE_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_DVR_ZOOMRATIOCTRL

跟踪倍率控制结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChan;
  BYTE     byRes[128];
}NET_DVR_ZOOMRATIOCTRL, *LPNET_DVR_ZOOMRATIOCTRL;

Members

dwSize
结构体大小
dwChan
设备通道号
byRes
保留

See Also

NET_DVR_RemoteControl


NET_IPC_AUDIO_LIMIT_ALARM_CFG

声音超限配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  DWORD                          dwDecibelLimit;
  NET_DVR_HANDLEEXCEPTION_V30    struHandleException;
  BYTE                           byRes2[24];
}NET_IPC_AUDIO_LIMIT_ALARM_CFG,*LPNET_IPC_AUDIO_LIMIT_ALARM_CFG;

Members

dwSize
结构体大小
byEnable
使能声音超限报警：0-不使能，1-使能
byRes1
保留，置为0
dwDecibelLimit
分贝告警阀值，取值范围：30~140，单位：db
struHandleException
异常处理方式
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_IPC_AUX_ALARMCFG

辅助（PIR、无线）报警参数结构体。

struct{
  DWORD                          dwSize;
  NET_IPC_SINGLE_AUX_ALARMCFG    struAlarm[MAX_AUX_ALARM_NUM];
  BYTE                           byRes[64];
}NET_IPC_AUX_ALARMCFG,*LPNET_IPC_AUX_ALARMCFG;

Members

dwSize
结构体大小
struAlarm
辅助报警参数
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_IPC_AUX_ALARMCFG_UNION

辅助报警参数联合体。

union{
  DWORD                        uLen[472];
  NET_IPC_PIR_ALARMCFG_EX      struPIRAlarm;
  NET_IPC_WIRELESS_ALARMCFG    struWirelessAlarm;
  NET_IPC_CALLHELP_ALARMCFG    struCallHelpAlarm;
}NET_IPC_AUX_ALARMCFG_UNION,*LPNET_IPC_AUX_ALARMCFG_UNION;

Members

uLen
联合体大小，472*4即1888字节
struPIRAlarm
PIR报警参数
struWirelessAlarm
无线报警参数
struCallHelpAlarm
呼救报警参数

See Also

NET_IPC_SINGLE_AUX_ALARMCFG


NET_IPC_AUXALARM_RESULT

辅助（PIR、无线）报警参数结构体。

struct{
  DWORD                            dwSize;
  DWORD                            dwChannel;
  BYTE                             byAlarmType;
  BYTE                             byRes1[3];
  NET_IPC_AUXALARM_UPLOAD_UNION    struAuxAlarm;
  BYTE                             byRes[64];
}NET_IPC_AUXALARM_RESULT,*LPNET_IPC_AUXALARM_RESULT;

Members

dwSize
结构体大小
dwChannel
通道号
byAlarmType
报警器类型，具体定义如下：
enum _IPC_AUX_ALARM_TYPE_{
  IPC_AUXALARM_UNKNOW   = 0,
  IPC_AUXALARM_PIR      = 1,
  IPC_AUXALARM_WIRELESS = 2,
  IPC_AUXALARM_CALLHELP = 3,
}IPC_AUX_ALARM_TYPE
IPC_AUXALARM_UNKNOW
未知
IPC_AUXALARM_PIR
PIR报警
IPC_AUXALARM_WIRELESS
无线报警
IPC_AUXALARM_CALLHELP
呼救报警
byRes1
保留
struAuxAlarm
报警结果信息
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_IPC_AUXALARM_UPLOAD_UNION

报警结果参数联合体。

union{
  DWORD                               uLen[66];
  NET_IPC_PIR_ALARMCFG                struPIRAlarm;
  NET_IPC_SINGLE_WIRELESS_ALARMCFG    struWirelessAlarm;
  NET_IPC_CALLHELP_ALARMCFG                struCallHelpAlarm;
}NET_IPC_AUXALARM_UPLOAD_UNION,*LPNET_IPC_AUXALARM_UPLOAD_UNION;

Members

uLen
联合体大小
struPIRAlarm
PIR报警参数
struWirelessAlarm
无线报警参数
struCallHelpAlarm
呼救报警参数

See Also

NET_IPC_AUXALARM_RESULT


NET_IPC_BUTTON_DOWN_ALARM_CFG

按钮按下报警配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  NET_DVR_HANDLEEXCEPTION_V30    struHandleException;
  BYTE                           byRes2[24];
}NET_IPC_BUTTON_DOWN_ALARM_CFG,*LPNET_IPC_BUTTON_DOWN_ALARM_CFG;

Members

dwSize
结构体大小
byEnable
使能按钮按下报警：0-不使能，1-使能
byRes1
保留，置为0
struHandleException
异常处理方式
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_IPC_CALLHELP_ALARMCFG

呼救报警配置结构体。

struct{
  BYTE                           byAlarmHandle;
  BYTE                           byRes1[3];
  NET_DVR_HANDLEEXCEPTION_V30    struAlarmHandleType;
  BYTE                           byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                           byRes[64];
}NET_IPC_CALLHELP_ALARMCFG, *LPNET_IPC_CALLHELP_ALARMCFG;

Members

byAlarmHandle
是否处理：0- 不处理，1- 处理
byRes1
保留，置为0
struAlarmHandleType
处理方式
byRelRecordChan
报警触发的录象通道，值为1表示触发该通道。例如：byRelRecordChan[0]==1表示触发通道1录像，byRelRecordChan[1]==1，表示触发通道2录像，依次类推
byRes
保留，置为0

See Also

NET_IPC_AUX_ALARMCFG_UNION NET_IPC_AUXALARM_UPLOAD_UNION


NET_IPC_LANE_HVT_PARAM

IPC混行卡口车道参数结构体。

struct{
  BYTE               byLaneNO;
  BYTE               byCarDriveDirect;
  BYTE               byRes[62];
  NET_ITC_LINE       struLaneLine;
  NET_ITC_POLYGON    struPlateRecog;
  BYTE               byRes1[256];
}NET_IPC_LANE_HVT_PARAM, *LPNET_IPC_LANE_HVT_PARAM;

Members

byLaneNO
车道号
byCarDriveDirect
车辆行驶方向，具体定义如下：
enum _ITC_LANE_CAR_DRIVE_DIRECT_{
  ITC_LANE_DRIVE_UNKNOW      = 0,
  ITC_LANE_DRIVE_UP_TO_DOWN  = 1,
  ITC_LANE_DRIVE_DOWN_TO_UP  = 2
}ITC_LANE_CAR_DRIVE_DIRECT
ITC_LANE_DRIVE_UNKNOW
未知
ITC_LANE_DRIVE_UP_TO_DOWN
从上往下行驶(下行)
ITC_LANE_DRIVE_DOWN_TO_UP
从下往上行驶(上行)
byRes
保留，置为0
struLaneLine
车道线
struPlateRecog
牌识区域
byRes1
保留，置为0

See Also

NET_IPC_POST_HVT_PARAM


NET_IPC_PIR_ALARMCFG

PIR报警参数结构体。

struct{
  BYTE                           byAlarmName[NAME_LEN];
  BYTE                           byAlarmHandle;
  BYTE                           byRes1[3];
  NET_DVR_HANDLEEXCEPTION_V30    struAlarmHandleType;
  BYTE                           byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                           byRes[64];
}NET_IPC_PIR_ALARMCFG,*LPNET_IPC_PIR_ALARMCFG;

Members

byAlarmName
报警名称
byAlarmHandle
是否处理：0- 不处理，1- 处理
byRes1
保留
struAlarmHandleType
处理方式
byRelRecordChan
报警触发的录象通道，按位表示，为1表示触发该通道。例如：byRelRecordChan[0]==1，表示触发通道1录像；byRelRecordChan[1]==1，表示触发通道2录像，依次类推
byRes
保留

See Also

NET_IPC_AUX_ALARMCFG_UNION NET_IPC_AUXALARM_UPLOAD_UNION


NET_IPC_PIR_ALARMCFG_EX

PIR报警参数结构体。

struct{
  BYTE                           byAlarmName[NAME_LEN];
  BYTE                           byAlarmHandle;
  BYTE                           byRes1[3];
  NET_DVR_HANDLEEXCEPTION_V30    struAlarmHandleType;
  BYTE                           byRelRecordChan[MAX_CHANNUM_V30];
  NET_DVR_SCHEDTIME              struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  BYTE                           byRes[1464];
}NET_IPC_PIR_ALARMCFG_EX,*LPNET_IPC_PIR_ALARMCFG_EX;

Members

byAlarmName
报警名称
byAlarmHandle
是否处理：0- 不处理，1- 处理
byRes1
保留
struAlarmHandleType
处理方式
byRelRecordChan
报警触发的录象通道，按位表示，为1表示触发该通道。例如：byRelRecordChan[0]==1，表示触发通道1录像；byRelRecordChan[1]==1，表示触发通道2录像，依次类推
struAlarmTime
布防时间
byRes
保留

See Also

NET_IPC_AUX_ALARMCFG_UNION


NET_IPC_POST_HVT_PARAM

IPC混行卡口触发参数结构体。

struct{
  BYTE                         byEnable;
  BYTE                         byLaneNum;
  BYTE                         byRes[62];
  NET_ITC_LINE                 struLaneBoundaryLine;
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_IPC_LANE_HVT_PARAM       struLaneParam[MAX_ITC_LANE_NUM];
  char                         szSceneName[NAME_LEN];
  NET_VCA_LINE                 struSnapLine;
  BYTE                         byRes1[392];
}NET_IPC_POST_HVT_PARAM,*LPNET_IPC_POST_HVT_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byLaneNum
识别的车道个数
byRes
保留
struLaneBoundaryLine
车道边界线（最左边车道的左边界线）
struPlateRecog
车牌识别参数
struLaneParam
车道参数
szSceneName
场景名称
struSnapLine
抓拍线，抓在相机的架设方式为侧装时配置这个参数生效（即NET_DVR_CAMERA_SETUPCFG结构体中byErectMethod字段为1时）
byRes1
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_IPC_SINGLE_AUX_ALARMCFG

单个辅助报警参数结构体。

struct{
  BYTE                          byAlarmType;
  BYTE                          byRes1[3];
  NET_IPC_AUX_ALARMCFG_UNION    uAlarm;
  BYTE                          byRes[16];
}NET_IPC_SINGLE_AUX_ALARMCFG,*LPNET_IPC_SINGLE_AUX_ALARMCFG;

Members

byAlarmType
报警器类型，定义详见下表
enum _IPC_AUX_ALARM_TYPE_{
  IPC_AUXALARM_UNKNOW   = 0,
  IPC_AUXALARM_PIR      = 1,
  IPC_AUXALARM_WIRELESS = 2,
  IPC_AUXALARM_CALLHELP = 3,
}IPC_AUX_ALARM_TYPE
IPC_AUXALARM_UNKNOW
未知
IPC_AUXALARM_PIR
PIR报警
IPC_AUXALARM_WIRELESS
无线报警
IPC_AUXALARM_CALLHELP
呼救报警
byRes1
保留
struAlarm
报警参数
byRes
保留

See Also

NET_IPC_AUX_ALARMCFG


NET_IPC_SINGLE_WIRELESS_ALARMCFG

单个无线报警参数结构体。

struct{
  BYTE                           byAlarmName[NAME_LEN];
  BYTE                           byAlarmHandle;
  BYTE                           byID;
  BYTE                           byRes1[2];
  NET_DVR_HANDLEEXCEPTION_V30    struAlarmHandleType;
  BYTE                           byRelRecordChan[MAX_CHANNUM_V30];
  BYTE                           byRes[32];
}NET_IPC_SINGLE_WIRELESS_ALARMCFG,*LPNET_IPC_SINGLE_WIRELESS_ALARMCFG;

Members

byAlarmName
报警名称
byAlarmHandle
是否处理：0- 不处理，1- 处理
byID
无线报警ID，取值范围：1~8
byRes1
保留
struAlarmHandleType
处理方式
byRelRecordChan
报警触发的录象通道，按位表示，为1表示触发该通道。例如：byRelRecordChan[0]==1，表示触发通道1录像；byRelRecordChan[1]==1，表示触发通道2录像，依次类推
byRes
保留

See Also

NET_IPC_WIRELESS_ALARMCFG NET_IPC_AUXALARM_UPLOAD_UNION


NET_IPC_WIRELESS_ALARMCFG

无线报警参数结构体。

struct{
  NET_IPC_SINGLE_WIRELESS_ALARMCFG    struWirelessAlarm[MAX_WIRELESS_ALARM_NUM];
  BYTE                                byRes[32];
}NET_IPC_WIRELESS_ALARMCFG,*LPNET_IPC_WIRELESS_ALARMCFG;

Members

struWirelessAlarm
单个无线报警参数
byRes
保留

See Also

NET_IPC_AUX_ALARMCFG_UNION


NET_ITC_ACCESS_DEVINFO_PARAM_UNION

RS485关联接入设备配置联合体。

union{
  BYTE                        uLen[128];
  NET_ITC_RADAR_INFO_PARAM    struRadarInfoParam;
}NET_ITC_ACCESS_DEVINFO_PARAM_UNION, *LPNET_ITC_ACCESS_DEVINFO_PARAM_UNION;

Members

uLen
联合体大小，128字节
struRadarInfoParam
雷达参数配置

See Also

NET_ITC_RS485_ACCESS_CFG


NET_ITC_EPOLICE_IOTL_PARAM

电警IO红绿灯参数结构体。

struct{
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_SINGLE_IOTL_PARAM    struSingleIOTL[MAX_IOSPEED_GROUP_NUM];
  BYTE                         byRes[32];
}NET_ITC_EPOLICE_IOTL_PARAM,*LPNET_ITC_EPOLICE_IOTL_PARAM;

Members

struPlateRecog
牌识参数
struSingleIOTL
单组IO红绿灯参数
byRes
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_EPOLICE_LANE_PARAM

电警RS485车检器触发模式车道参数结构体。

struct{
  BYTE                                byEnable;
  BYTE                                byRelatedDriveWay;
  WORD                                wDistance;
  BYTE                                byRecordEnable;
  BYTE                                byRecordType;
  BYTE                                byPreRecordTime;
  BYTE                                byRecordDelayTime;
  BYTE                                byRecordTimeOut;
  BYTE                                bySignSpeed;
  BYTE                                bySpeedLimit;
  BYTE                                byOverlayDriveWay;
  NET_ITC_SERIAL_INFO                 struSerialInfo;
  BYTE                                byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                                byFlashMode;
  BYTE                                bySerialType;
  BYTE                                byRelatedIOOutEx;
  BYTE                                bySnapPicPreRecord;
  NET_ITC_PLATE_RECOG_REGION_PARAM    struPlateRecog[MAX_LANEAREA_NUM];
  BYTE                                byBigCarSignSpeed;
  BYTE                                byBigCarSpeedLimit;
  BYTE                                byRedTrafficLightChan;
  BYTE                                byYellowTrafficLightChan;
  BYTE                                byRelaLaneDirectionType;
  BYTE                                byRes3[11];
}NET_ITC_EPOLICE_LANE_PARAM,*LPNET_ITC_EPOLICE_LANE_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byRelatedDriveWay
关联的车道号
wDistance
线圈距离（保留），单位：厘米
byRecordEnable
闯红灯周期录像标志：0- 不录像，1- 录像
byRecordType
闯红灯录像类型：0- 预录，1- 延时录像
byPreRecordTime
闯红灯录像片段预录时间（默认0），单位：秒
byRecordDelayTime
闯红灯录像片段延时时间（默认0），单位：秒
byRecordTimeOut
闯红灯周期录像超时时间，单位：秒
bySignSpeed
标志限速(卡式电警模式有效)，单位：km/h
bySpeedLimit
限速值(卡式电警模式有效)，单位：km/h
byOverlayDriveWay
OSD叠加的车道号
struSerialInfo
车检器参数
byRelatedIOOut
关联的IO输出口，可以同时关联多个
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
bySerialType
车检器类型：0-私有车检器，1-私有OEM车检器，2-其他车检器
byRelatedIOOutEx
关联的IO输出口，按位表示输出口号：bit0表示IO输出口1，bit1表示IO输出口2，以此类推。
值：0-不关联，1-关联，最多支持关联到8个IO输出口(兼容byRelatedIOOut字段)
bySnapPicPreRecord
抓拍图片预录时间点：0- 默认值（第二张图片），1- 第一张图片，2- 第二张图片，3- 第三张图片
struPlateRecog
牌识区域参数
byBigCarSignSpeed
大车标志限速，单位：km/h
byBigCarSpeedLimit
大车限速值，单位：km/h
byRedTrafficLightChan
红灯通道号：1～16（红绿灯检测器）
byYellowTrafficLightChan
黄灯通道号：1～16（红绿灯检测器）
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE
byRes3
保留

Remarks

该结构体中的参数byRelatedDriveWay为关联车道号，是和车检器中的车道关联匹配，实现抓拍。byOverlayDriveWay为叠加车道号，为实际车道号。

当bySerialType为0时，struSerialInfo参数有效。

See Also

NET_ITC_EPOLICE_RS485_PARAM


NET_ITC_EPOLICE_RS485_PARAM

电警/卡式电警RS485车检器触发参数结构体。

struct{
  BYTE                          byRelatedLaneNum;
  BYTE                          byTrafficLightSignalSrc;
  BYTE                          byRes1[2];
  NET_ITC_PLATE_RECOG_PARAM     struPlateRecog;
  NET_ITC_EPOLICE_LANE_PARAM    struLane[MAX_ITC_LANE_NUM];
  BYTE                          byRes[32];
}NET_ITC_EPOLICE_RS485_PARAM,*LPNET_ITC_EPOLICE_RS485_PARAM;

Members

byRelatedLaneNum
关联的车道个数
byTrafficLightSignalSrc
交通灯信号来源：0- 车检器，1- 红绿灯检测器
byRes1
保留
struPlateRecog
牌识参数
struLane
关联的车道参数
byRes
保留

Remarks

在交通灯信号来源为红绿灯检测器时，NET_ITC_EPOLICE_LANE_PARAM中关联红灯通道号和关联黄灯通道号有效；在交通灯信号来源为车检器时，关联红灯通道号和关联黄灯通道号无效。

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_EXCEPTION

智能交通摄像机异常参数结构体。

struct{
  DWORD                      dwSize;
  NET_ITC_HANDLEEXCEPTION    struSnapExceptionType[MAX_EXCEPTIONNUM_V30];
}NET_ITC_EXCEPTION,*LPNET_ITC_EXCEPTION;

Members

dwSize
结构体大小
struSnapExceptionType
异常信息处理方式，每位数组表示一种异常：
数组0－硬盘出错
数组1－网线断
数组2－IP 地址冲突
数组3－车检器异常
数组4－信号灯检测器异常

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITC_FLASHOUT_INFO

同步输出参数结构体。

struct{
  BYTE     byFlashOutIndex[MAX_IOOUT_NUM];
  BYTE     byRes[44];
}NET_ITC_FLASHOUT_INFO,*LPNET_ITC_FLASHOUT_INFO;

Members

byFlashOutIndex
同步输出号
byRes
保留

See Also

NET_ITC_STATUS_UNION


NET_ITC_FTP_CFG

智能交通摄像机FTP配置结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byEnable;
  BYTE                    byAddressType;
  WORD                    wFTPPort;
  union{
       struct{
         BYTE             szDomain[MAX_DOMAIN_NAME];
         BYTE             byRes1[80];
       }struDomain;
       struct{
         NET_DVR_IPADDR   struIp;
       }struAddrIP;
  }unionServer;
  BYTE                    szUserName[NAME_LEN];
  BYTE                    szPassWORD[PASSWD_LEN];
  BYTE                    byRes4;
  BYTE                    byDirLevel;
  BYTE                    byIsFilterCarPic;
  BYTE                    byUploadDataType;
  NET_DVR_PICTURE_NAME    struPicNameRule;
  BYTE                    byTopDirMode;
  BYTE                    bySubDirMode;
  BYTE                    byThreeDirMode;
  BYTE                    byFourDirMode;
  BYTE                    szPicNameCustom[MAX_CUSTOMDIR_LEN];
  BYTE                    szTopCustomDir[MAX_CUSTOMDIR_LEN];
  BYTE                    szSubCustomDir[MAX_CUSTOMDIR_LEN];
  BYTE                    szThreeCustomDir[MAX_CUSTOMDIR_LEN];
  BYTE                    szFourCustomDir[MAX_CUSTOMDIR_LEN];
  BYTE                    byRes3[900];
}NET_ITC_FTP_CFG,*LPNET_ITC_FTP_CFG;

Members

dwSize
结构体大小
byEnableFTP
是否启动ftp上传功能：0- 否，1- 是
byAddressType
地址类型：0- 实际ipv4/ipv6地址，1- 域名
wFTPPort
FTP端口号
unionServer为FTP地址联合体
szDomain
服务器地址，域名
byRes1
保留，置为0
struIp
IPv4或者IPv6地址，144字节
szUserName
用户名
szPassWORD
密码
byRes4
保留，置为0
byDirLevel
目录等级：0- 不使用目录结构，直接保存在根目录；1- 使用1级目录；2- 使用2级目录；3- 使用3级目录；4-使用4级目录
byIsFilterCarPic
车牌小图是否上传：0- 上传，1- 不上传
byUploadDataType
上传数据类型：0- 全部，1- 卡口，2- 违章 (单FTP时默认选择全部，双FTP时支持卡口、违章的选择)
struPicNameRule
图片命名规则
byTopDirMode
一级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用时间(年月日)，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 通道名，0xb- 通道号，0xc-车道号，0xff- 自定义
bySubDirMode
二级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用时间(年月日)，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 通道名，0xb- 通道号，0xc-车道号，0xff- 自定义
byThreeDirMode
三级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用时间(年月日)，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 通道名，0xb- 通道号，0xc-车道号，0xff- 自定义
byFourDirMode
四级目录：0x1- 使用设备名，0x2- 使用设备号，0x3- 使用设备ip地址，0x4- 使用监测点，0x5- 使用时间(年月)，0x6- 使用时间(年月日)，0x7- 违规类型，0x8- 方向，0x9- 地点，0xa- 通道名，0xb- 通道号，0xc-车道号，0xff- 自定义
szPicNameCustom
图片命名自定义，当文件命名规则选择PICNAME_ITEM_CUSTOM时生效
szTopCustomDir
自定义一级目录
szSubCustomDir
自定义二级目录
szThreeCustomDir
自定义三级目录
szFourCustomDir
自定义四级目录
byRes3
保留，置为0

See Also

设备是否支持该FTP配置通过能力集NET_DVR_SNAP_ABILITY中的bySupport&0x40进行判断。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_FTP_TYPE_COND

FTP参数配置条件结构体。

struct{
  DWORD    dwChannel;
  BYTE     byWorkMode;
  BYTE     byRes[7];
}NET_ITC_FTP_TYPE_COND,*LPNET_ITC_FTP_TYPE_COND;

Members

dwChannel
设备通道号
byWorkMode
FTP模式：0- FTP1(主FTP)，1- FTP2(备FTP)
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_HANDLEEXCEPTION

智能交通摄像机报警和异常处理结构体。

struct{
  DWORD    dwHandleType;
  BYTE     byEnable;
  BYTE     byRes;
  WORD     wDuration;
  BYTE     byAlarmOutTriggered[MAX_ITC_EXCEPTIONOUT];
  BYTE     byRes1[8];
}NET_ITC_HANDLEEXCEPTION, *LPNET_ITC_HANDLEEXCEPTION;

Members

dwHandleType
处理方式，异常处理方式的"或"结果：
0x04: 上传中心
0x08: 触发报警输出（继电器输出）
byEnable
是否启用异常处理：0- 不启用，1- 启用
byRes
保留
wDuration
持续时间，单位：s
byRelAlarmOut
报警触发的输出通道，数组下标表示通道号，0-不触发，1-触发输出
例如，byRelAlarmOut[0]==1表示触发输出通道1，byRelAlarmOut[1]==1表示触发输出通道2，依次类推
byRes1
保留

Remakrs

触发报警输出功能，目前只有型号带“-K”的智能交通摄像机（例如，DS-2CD9131-KS）支持（支持一个继电器），非-K设备不支持。

See Also

NET_ITC_EXCEPTION


NET_ITC_HVT_EC_PARAM

曝光控制参数结构体。

struct{
  DWORD    dwCapShutter;
  WORD     wCapGain;
  BYTE     byRes[2];
  DWORD    dwDayTimeVideoShutter;
  WORD     wDayTimeVideoGain;
  WORD     wNightVideoGain;
  DWORD    dwNightVideoShutter;
  BYTE     byRes1[108];
}NET_ITC_HVT_EC_PARAM,*LPNET_ITC_HVT_EC_PARAM;

Members

dwCapShutter
抓拍快门，取值范围：0~65535
wCapGain
抓拍增益，取值范围：0~100
byRes
保留
dwDayTimeVideoShutter
白天曝光时间最大值
wDayTimeVideoGain
白天增益最大值
wNightVideoGain
晚上增益最大值
dwNightVideoShutter
晚上曝光时间最大值
byRes1
保留

See Also

NET_ITC_POST_HVT_PARAM


NET_ITC_ICR_ALGAOTOSWITCH_PARAM

ICR算法自动参数结构体。

struct{
  BYTE    byDetectThreshold;
  BYTE    byAbBrightnessThreshold;
  BYTE    byRes[154];
}NET_ITC_ICR_ALGAOTOSWITCH_PARAM, *LPNET_ITC_ICR_ALGAOTOSWITCH_PARAM;

Members

byDetectThreshold
检测阈值（交通灯滤光片切换等级阈值设置，高于阈值打开滤光片），范围：[0,100]，默认：50
byAbBrightnessThreshold
异常亮度阈值（ICR自动切换后前后亮度统计差值，若比该检测阈值大，则认为检测异常；若比该值小，则认为检测正常），范围：[0,100]，默认：12
byRes
保留，置为0

See Also

NET_ITC_ICR_PARAM_UNION


NET_ITC_ICR_AOTOSWITCH_PARAM

ICR自动切换参数结构体。

struct{
  BYTE    byICRPreset[MAX_ICR_NUM];
  BYTE    byICRAutoSwitch;
  BYTE    byRes[147];
}NET_ITC_ICR_AOTOSWITCH_PARAM, *LPNET_ITC_ICR_AOTOSWITCH_PARAM;

Members

byICRPreset
ICR预置点，数组下标表示预置点号（即下标0～7对应1～8，实际支持预置点个数通过能力集获取），取值范围：[0,100]，值越大ICR滤光面积越大
byICRAutoSwitch
ICR自动切换加阈值选项，取值范围：[0,100]
byRes
保留，置为0

Remarks

设备支持的ICR预置点（滤光片偏移点）个数通过能力集NET_DVR_SNAP_ABILITY获取，对应其中参数：byICRPresetNum。

See Also

NET_ITC_ICR_PARAM_UNION


NET_ITC_ICR_MANUALSWITCH_PARAM

ICR手动切换参数结构体。

struct{
  BYTE    byICRPreset[MAX_ICR_NUM];
  BYTE    bySubSwitchMode;
  BYTE    byRes[147];
}NET_ITC_ICR_MANUALSWITCH_PARAM, *LPNET_ITC_ICR_MANUALSWITCH_PARAM;

Members

byICRPreset
ICR预置点，设备支持的ICR预置点个数大于0时有效，数组下标表示预置点号（即下标0～7对应1～8，实际支持预置点个数通过能力集获取），取值范围：[0,100]，值越大ICR滤光面积越大
bySubSwitchMode
1- 白天，2- 晚上，设备支持的ICR预置点个数为0时有效
byRes
保留，置为0

See Also

设备支持的ICR预置点（滤光片偏移点）个数通过能力集NET_DVR_SNAP_ABILITY获取，对应其中参数：byICRPresetNum。

See Also

NET_ITC_ICR_PARAM_UNION


NET_ITC_ICR_PARAM_UNION

ICR切换配置联合体。

struct{
  BYTE                               uLen[156];
  NET_ITC_ICR_AOTOSWITCH_PARAM       struICRAutoSwitch;
  NET_ITC_ICR_MANUALSWITCH_PARAM     struICRManualSwitch;
  NET_ITC_ICR_TIMESWITCH_PARAM       struICRTimeSwitch;
  NET_ITC_ICR_ALGAOTOSWITCH_PARAM    strICRAlgorithmAutoSwitch;
}NET_ITC_ICR_PARAM_UNION, *LPNET_ITC_ICR_PARAM_UNION;

Members

uLen
联合体大小，156字节
struICRAutoSwitch
自动切换参数
struICRManualSwitch
手动切换参数
struICRTimeSwitch
定时切换参数
struICRTimeSwitch
算法自动参数

See Also

NET_ITC_ICRCFG


NET_ITC_ICR_TIMESWITCH_PARAM

ICR定时切换参数结构体。

struct{
  NET_ITC_ICRTIMECFG    struAutoCtrlTime[MAX_TIMESEGMENT_V30];
  BYTE                  byICRPreset[MAX_ICR_NUM];
  BYTE                  byRes[20];
}NET_ITC_ICR_TIMESWITCH_PARAM, *LPNET_ITC_ICR_TIMESWITCH_PARAM;

Members

struAutoCtrlTime
自动切换时间段(现在支持4组，其他4组预留)
byICRPreset
ICR预置点，设备支持的ICR预置点个数大于0时有效，数组下标表示预置点号（即下标0～7对应1～8，实际支持预置点个数通过能力集获取），取值范围：[0,100]，值越大ICR滤光面积越大
byRes
保留，置为0

See Also

设备支持的ICR预置点（滤光片偏移点）个数和支持的ICR的时间段数通过能力集NET_DVR_SNAP_ABILITY获取，分别对应其中参数：byICRPresetNum和byICRTimeSlot。

See Also

NET_ITC_ICR_PARAM_UNION


NET_ITC_ICRCFG

ICR切换配置参数结构体。

struct{
  DWORD                      dwSize;
  BYTE                       bySwitchType;
  BYTE                       byRes[3];
  NET_ITC_ICR_PARAM_UNION    uICRParam;
}NET_ITC_ICRCFG, *LPNET_ITC_ICRCFG;

Members

dwSize
结构体大小
bySwitchType
切换模式：1- 自动切换，2- 手动切换，3- 定时切换，4- 算法自动
byRes
保留，置为0
uICRParam
ICR切换配置联合体

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITC_ICRTIMECFG

ICR定时切换时间参数结构体。

struct{
  NET_DVR_SCHEDTIME    struTime;
  BYTE                 byAssociateRresetNo;
  BYTE                 bySubSwitchMode;
  BYTE                 byRes[10];
}NET_ITC_ICRTIMECFG, *LPNET_ITC_ICRTIMECFG;

Members

struTime
自动切换时间段，XX时XX分至XX时XX分
byAssociateRresetNo
预置点号(设备支持的ICR预置点个数大于0时可设)：1～8，0代表无
bySubSwitchMode
切换模式（设备支持的ICR预置点个数等于0时有效）：0- 无，1- 白天，2- 晚上
byRes
保留，置为0

See Also

NET_ITC_ICR_TIMESWITCH_PARAM


NET_ITC_INTERVAL_PARAM

抓拍间隔参数结构体。

struct{
  BYTE    byIntervalType;
  BYTE    byRes1[3];
  WORD    wInterval[MAX_INTERVAL_NUM];
  BYTE    byRes[8];
}NET_ITC_INTERVAL_PARAM,*LPNET_ITC_INTERVAL_PARAM;

Members

byIntervalType
间隔类型（默认按时间）：0- 时间起效，1- 距离起效
byRes1
保留
wInterval
连拍间隔时间（单位：ms）或连拍间隔距离（单位：分米）。当byIntervalType为0时，表示间隔时间，当byIntervalType为1时，表示距离
byRes
保留

See Also

NET_ITC_LANE_HVT_PARAM_V50 NET_ITC_SINGLEIO_PARAM NET_ITC_LANE_PARAM NET_ITC_VTLANE_PARAM


NET_ITC_IO_LIGHT_PARAM

IO接入信号灯参数结构体。

struct{
  NET_ITC_SINGLE_IO_LIGHT_PARAM    struIOLight[MAX_LIGHT_NUM];
  BYTE                             byRes[8];
}NET_ITC_IO_LIGHT_PARAM,*LPNET_ITC_IO_LIGHT_PARAM;

Members

struIOLight
单个IO接入信号灯参数
byRes
保留

See Also

NET_ITC_LIGHT_ACCESSPARAM_UNION


NET_ITC_IOOUT_PARAM

IO输出配置参数结构体。

struct{
  DWORD   dwSize;
  BYTE    byDefaultStatus;
  BYTE    byIOOutStatus;
  BYTE    byMode;
  BYTE    byIOWorkMode;
  DWORD   dwTimeDelay;
  WORD    wAheadTime;
  BYTE    byFreqMulti;
  BYTE    byDutyRate;
  BYTE    byDetectBrightness;
  BYTE    byBrightnessThreld;
  BYTE    byFlashLightEnable;
  BYTE    byStartHour;
  BYTE    byStartMinute;
  BYTE    byEndHour;
  BYTE    byEndMinute;
  BYTE    byAutoPlateBrightness;
  BYTE    byIncrBrightEnable;
  BYTE    byIncrBrightPercent;
  WORD    wIncrBrightTime;
  BYTE    byBrightness;
  BYTE    byRes[3];
}NET_ITC_IOOUT_PARAM, *LPNET_ITC_IOOUT_PARAM;

Members

dwSize
结构体大小
byDefaultStatus
IO默认状态：0- 低电平，1- 高电平
byIOOutStatus
IO起效时状态：0- 低电平，1- 高电平，2- 脉冲
byMode
闪光灯工作方式，按位表示：bit0-视频，bit1-卡口，bit2-违章，值：0-表示工作，1-表示不工作。
byIOWorkMode
IO输出口工作模式：0- 闪光灯，1- 偏振镜，2- 常亮灯
dwTimeDelay
IO有效持续时间，单位：us
wAheadTime
输出IO提前时间，单位：us
byFreqMulti
倍频，数值范围：[1,15]
byDutyRate
占空比，取值范围：[0,40%]
byDetectBrightness
自动检测亮度使能闪光灯/偏振镜/常亮灯：0- 不检测，1- 检测
byBrightnessThreld
使能闪光灯/偏振镜/常亮灯亮度阈值(byDetectBrightness为1时有效)，范围：[0,100]，高于阈值闪
byFlashLightEnable
设置闪光灯/偏振镜/常亮灯时间使能：0- 关，1- 开
byStartHour
开始时间(byFlashLightEnable为1时有效)：小时，取值范围：[0,23]
byStartMinute
开始时间(byFlashLightEnable为1时有效)：分，取值范围：[0,59]
byEndHour
结束时间(byFlashLightEnable为1时有效)：小时，取值范围：[0,23]
byEndMinute
结束时间(byFlashLightEnable为1时有效)：分，取值范围：[0,59]
byAutoPlateBrightness
车牌亮度自动使能闪光灯：0- 不启用，1- 启用。启用了该功能后，时控和光控都将不起作用。
byIncrBrightEnable
是否启用增亮模式（常亮灯模式下）：0- 不启用，1- 启用
byIncrBrightPercent
增量百分比（启用增亮模式下生效），取值范围：0~100，单位：%
wIncrBrightTime
增亮时间（启用增亮模式下生效），单位：毫秒
byBrightness
亮度值（常亮灯模式下），取值范围：0~100
byRes
保留，置为0

Remarks

各个模式下各个车道配置的关联IO，IO根据byMode参数处于何种工作状态，例如：byMode为0表示视频、卡口、违章情况下都工作。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITC_LANE_HVT_PARAM

混行卡口车道参数结构体。

struct{
  BYTE                        byLaneNO;
  BYTE                        bySignSpeed;
  BYTE                        bySpeedLimit;
  BYTE                        byBigCarSignSpeed;
  BYTE                        byBigCarSpeedLimit;
  BYTE                        bySpeedCapEn;
  BYTE                        byCaptureCount;
  BYTE                        byRelatedIOOut;
  BYTE                        byFlashMode;
  BYTE                        byEnableRadar;
  BYTE                        byChangeLaneEnable;
  BYTE                        byChangeLaneCapNo;
  DWORD                       dwCapTarget;
  NET_ITC_INTERVAL_PARAM      struInterval;
  BYTE                        byRes3[24];
  NET_ITC_LANE_LOGIC_PARAM    struLane;
  NET_ITC_LINE                struLeftLaneLine;
  NET_ITC_LINE                struRightLaneLine;
  NET_ITC_POLYGON             struPlateRecog;
  NET_ITC_POLYGON             struTraceArea;
  NET_VCA_LINE                struForwardTrigLine;
  NET_VCA_LINE                struBackwardTrigLine;
  NET_VCA_LINE                struLeftTrigLine;
  NET_VCA_LINE                struRightTrigLine;
  BYTE                        byRes4[60];
}NET_ITC_LANE_HVT_PARAM,*LPNET_ITC_LANE_HVT_PARAM;

Members

byEnable
是否启用该车道：0- 不启用，1- 启用
byLaneNO
关联的车道号，1~255（用于叠加和上传）
bySignSpeed
标志限速，单位：km/h，取值范围：0～255
bySpeedLimit
限速值，单位：km/h，取值范围：0～255
byBigCarSignSpeed
大车标志限速，单位km/h
byBigCarSpeedLimit
大车限速值，单位km/h
bySpeedCapEn
是否启用超速抓拍：0-否，1-是
byCaptureCount
抓拍张数1～5(正常)
byRelatedIOOut
关联的IO输出口(可以同时关联多个)，按位表示IO输出口（bit0表示IO输出口1，bit1表示IO输出口2，依次类推），值：0-不关联，1-关联
byFlashMode
闪光灯闪烁模式：0-同时闪，1-轮流闪
byEnableRadar
是否启用雷达测速：0-否，1-是
byChangeLaneEnable
违章变道抓拍使能，0-关闭，1-开启
byChangeLaneCapNo
违章变道抓拍张数2-3
dwCapTarget
抓拍类型，按位表示：bit0表示机动车，bit1表示非机动车，bit2表示行人，取值：0表示不选择，1表示选择
struInterval
抓拍间隔参数
byRes3
保留，置为0
struLane
车道属性
struLeftLaneLine
左车道线，线类型为虚线、实线、单黄线和双黄线
struRightLaneLine
右车道线，线类型为虚线、实线、单黄线和双黄线
struPlateRecog
牌识区域参数
struTraceArea
视频触发焦点区域
struForwardTrigLine
正向触发线：一条线段，关心端点位置，目前只支持水平配置，接口按线段的两个端点保存（一般配置为正向车辆的最佳触发位置）
struBackwardTrigLine
背向触发线：一条线段，关心端点位置，目前只支持水平配置，接口按线段的两个端点保存（一般配置为背向车辆的最佳触发位置）
struLeftTrigLine
左边触发线：一条线段，关心端点位置，目前只支持垂直配置，接口按线段的两个端点保存（一般配置为从左边进入车辆的最佳触发位置）
struRightTrigLine
右边触发线：一条线段，关心端点位置，目前只支持垂直配置，接口按线段的两个端点保存（一般配置为从右边进入车辆的最佳触发位置）
byRes4
保留，置为0

See Also

NET_ITC_POST_HVT_PARAM


NET_ITC_LANE_HVT_PARAM_V50

混行卡口车道参数(V50扩展)结构体。

struct{
  BYTE                        byLaneNO;
  BYTE                        byFlashMode;
  BYTE                        bySignSpeed;
  BYTE                        bySpeedLimit;
  BYTE                        bySignLowSpeed;
  BYTE                        byLowSpeedLimit;
  BYTE                        byBigCarSignSpeed;
  BYTE                        byBigCarSpeedLimit;
  BYTE                        byBigCarSignLowSpeed;
  BYTE                        byBigCarLowSpeedLimit;
  BYTE                        bySnapTimes;
  BYTE                        byDriveLineSnapTime;
  BYTE                        byHighSpeedSnapTime;
  BYTE                        byLowSpeedSnapTime;
  BYTE                        byBanSnapTime;
  BYTE                        byReverseSnapTime;
  BYTE                        byRelatedDriveWay;
  BYTE                        byLaneType;
  BYTE                        byRelaLaneDirectionType;
  BYTE                        byRes1[27];
  BYTE                        byChangeLaneEnable;
  BYTE                        byChangeLaneCapNo;
  DWORD                       dwVioDetectType;
  DWORD                       dwRelatedIOOut;
  NET_ITC_LINE                struTrigLine;
  NET_ITC_LINE                struLineLeft;
  NET_ITC_POLYGON             struPlateRecog;
  NET_ITC_LANE_LOGIC_PARAM    struLane;
  NET_ITC_INTERVAL_PARAM      struInterval;
  BYTE                        byRes2[280];
}NET_ITC_LANE_HVT_PARAM_V50,*LPNET_ITC_LANE_HVT_PARAM_V50;

Members

byLaneNO
关联的车道号(用于叠加和上传)，取值范围：1~255
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
bySignSpeed
小车标志限高速，单位：km/h
bySpeedLimit
小车限高速值，单位：km/h
bySignLowSpeed
小车标志限低速，单位：km/h
byLowSpeedLimit
小车限低速值，单位：km/h
byBigCarSignSpeed
大车标志限高速，单位：km/h（新交规）
byBigCarSpeedLimit
大车限高速值，单位：km/h（新交规）
byBigCarSignLowSpeed
大车标志限低速，单位：km/h
byBigCarLowSpeedLimit
大车限低速值，单位：km/h
bySnapTimes
卡口抓拍张数，取值范围：1~3
byDriveLineSnapTime
压线抓拍张数，取值范围：1~3
byHighSpeedSnapTime
超高速抓拍张数，取值范围：1~3
byLowSpeedSnapTime
超低速抓拍张数，取值范围：1~3
byBanSnapTime
违反禁令抓拍张数，取值范围：1~3
byReverseSnapTime
逆行抓拍张数，取值范围：1~3
byRelatedDriveWay
关联车道号，用于匹配车检器
byLaneType
车道类型：0- 未配置，1- 高速公路，2- 城市快速路，0xff- 其他道路
byRelaLaneDirectionType
关联车道方向类型，类型详见ITC_RELA_LANE_DIRECTION_TYPE。该参数为车道方向参数，与关联车道号byRelatedDriveWay对应，确保车道唯一性
byRes1
保留，置为0
byChangeLaneEnable
违章变道抓拍使能，0-关闭，1-开启
byChangeLaneCapNo
违章变道抓拍张数2-3
dwVioDetectType
违规检测类型，按位表示，取值：0-不启用，1-启用参考，类型详见ITC_VIOLATION_DETECT_TYPE
dwRelatedIOOut
关联的IO输出口(可以同时关联多个)，按位表示IO输出口，第0位表示IO输出口1，以此类推，取值：0-不关联，1-关联
struTrigLine
触发线，目前仅使用第一个车道
struLineLeft
左车道线
struPlateRecog
牌识区域
struLane
车道属性，其中byUseageType和byCarDriveDirect有效
struInterval
抓拍间隔参数
byRes2
保留，置为0

See Also

NET_ITC_POST_HVT_PARAM_V50


NET_ITC_LANE_IMT_PARAM

智慧监控车道参数结构体。

struct{
  BYTE            byLaneNO;
  BYTE            byRelaLaneDirectionType;
  BYTE            byRes[146];
  NET_ITC_LINE    struLaneLine;
  BYTE            byRes1[256];
}NET_ITC_LANE_IMT_PARAM,*LPNET_ITC_LANE_IMT_PARAM;

Members

byLaneNO
叠加车道号
byRelaLaneDirectionType
关联车道方向类型，类型详见ITC_RELA_LANE_DIRECTION_TYPE。该参数为车道方向参数，与关联车道号byRelatedDriveWay对应，确保车道唯一性
byRes
保留，置为0
struLaneLine
车道线
byRes1
保留，置为0

See Also

NET_ITC_POST_IMT_PARAM


NET_ITC_LANE_LOGIC_PARAM

车道属性参数结构体。

struct{
  BYTE    byUseageType;
  BYTE    byDirectionType;
  BYTE    byCarDriveDirect;
  BYTE    byRes[33];
}NET_ITC_LANE_LOGIC_PARAM, *LPNET_ITC_LANE_LOGIC_PARAM;

Members

byUseageType
车道用途类型，定义详见ITC_LANE_USEAGE_TYPE
byDirectionType
车道方向类型，定义详见ITC_LANE_DIRECTION_TYPE
byCarDriveDirect
车辆行驶方向，具体定义如下：
enum _ITC_LANE_CAR_DRIVE_DIRECT_{
  ITC_LANE_DRIVE_UNKNOW      = 0,
  ITC_LANE_DRIVE_UP_TO_DOWN  = 1,
  ITC_LANE_DRIVE_DOWN_TO_UP  = 2
}ITC_LANE_CAR_DRIVE_DIRECT
ITC_LANE_DRIVE_UNKNOW
未知
ITC_LANE_DRIVE_UP_TO_DOWN
从上往下行驶(下行)
ITC_LANE_DRIVE_DOWN_TO_UP
从下往上行驶(上行)
byRes
保留，置为0

See Also

NET_ITC_LANE_HVT_PARAM_V50 NET_ITC_LANE_VIDEO_EPOLICE_PARAM


NET_ITC_LANE_MPR_PARAM

多帧检测模式车道参数结构体。

struct{
  BYTE               byLaneNO;
  union{
     BYTE            uLen[4];
     struct{
       BYTE          byIONo;
       BYTE          byTriggerType;
       BYTE          byRes1[2];
     }struIO;
     struct{
       BYTE          byRelateChan;
       BYTE          byRes2[3];
     }struRS485;
  }uTssParamInfo;
  BYTE               byCarDriveDirect;
  BYTE               byRes[58];
  NET_ITC_LINE       struLaneLine;
  NET_ITC_POLYGON    struPlateRecog;
  BYTE               byRelaLaneDirectionType;
  BYTE               byRes1[255];
}NET_ITC_LANE_MPR_PARAM,*LPNET_ITC_LANE_MPR_PARAM;

Members

byLaneNO
车道号
uTssParamInfo为触发参数信息联合体
uLen
联合体大小，4个字节
struIO为IO触发方式相关参数结构体
byIONo
关联的IO号，从1开始
byTriggerType
触发模式：0- 下降沿，1- 上升沿
byRes1
保留，置为0
struRS485为RS485触发方式相关参数结构体
byRelateChan
关联车检器通道号，取值范围：[1,16]
byRes2
保留，置为0
byCarDriveDirect
车辆行驶方向，具体定义如下：
enum _ITC_LANE_CAR_DRIVE_DIRECT_{
  ITC_LANE_DRIVE_UNKNOW      = 0,
  ITC_LANE_DRIVE_UP_TO_DOWN  = 1,
  ITC_LANE_DRIVE_DOWN_TO_UP  = 2
}ITC_LANE_CAR_DRIVE_DIRECT
ITC_LANE_DRIVE_UNKNOW
未知
ITC_LANE_DRIVE_UP_TO_DOWN
从上往下行驶(下行)
ITC_LANE_DRIVE_DOWN_TO_UP
从下往上行驶(上行)
byRes
保留
struLaneLine
车道线
struPlateRecog
牌识区域参数
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE
byRes1
保留

Remarks

NET_ITC_POST_MPR_PARAM中bySourceType为1时联合体uTssParamInfo中struIO有效，bySourceType为2时联合体uTssParamInfo中struRS485有效。

See Also

NET_ITC_POST_MPR_PARAM


NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM

不礼让行人触发模式车道参数结构体。

struct{
  BYTE               byRelatedDriveWay;
  BYTE               byRelaLaneDirectionType;
  BYTE               byPedestriansNum;
  BYTE               byVehicleSpeed;
  DWORD              dwVehicleInterval;
  BYTE               byPedesDetRule;
  BYTE               byRes[3];
  NET_ITC_LINE       struLaneLine;
  NET_ITC_LINE       struStopLine;
  NET_ITC_POLYGON    struPlateRecog;
  BYTE               byRes1[280];
}NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM,*LPNET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM;

Members

byRelatedDriveWay
关联的车道号
byRelaLaneDirectionType
关联车道方向类型
byPedestriansNum
行人数量阈值，取值范围：1~100，默认值：1
byVehicleSpeed
车辆速度阈值，取值范围：1~100，默认值：0
dwVehicleInterval
跟车检测阈值，取值范围：0~65536，默认值：0
byPedesDetRule
行人检测规则，代表行人检测区域中行人行驶方向：0- 向左，1- 向右
byRes
保留，置为0
struLaneLine
车道线
struStopLine
停止线
struPlateRecog
牌识区域
byRes1
保留，置为0

See Also

NET_ITC_NOCOMITY_PEDESTRIAN_PARAM


NET_ITC_LANE_PARAM

车道参数结构体。

struct{
  BYTE                                byEnable;
  BYTE                                byRelatedDriveWay;
  WORD                                wDistance;
  WORD                                wTrigDelayTime;
  BYTE                                byTrigDelayDistance;
  BYTE                                bySpeedCapEn;
  BYTE                                bySignSpeed;
  BYTE                                bySpeedLimit;
  BYTE                                bySnapTimes;
  BYTE                                byOverlayDriveWay;
  NET_ITC_INTERVAL_PARAM              struInterval;
  BYTE                                byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                                byFlashMode;
  BYTE                                byCartSignSpeed;
  BYTE                                byCartSpeedLimit;
  BYTE                                byRelatedIOOutEx;
  NET_ITC_PLATE_RECOG_REGION_PARAM    struPlateRecog[MAX_LANEAREA_NUM];
  BYTE                                byLaneType;
  BYTE                                byUseageType;
  BYTE                                byRelaLaneDirectionType;
  BYTE                                byLowSpeedLimit;
  BYTE                                byBigCarLowSpeedLimit;
  BYTE                                byLowSpeedCapEn;
  BYTE                                byEmergencyCapEn;
  BYTE                                byRes[9];
}NET_ITC_LANE_PARAM,*LPNET_ITC_LANE_PARAM;

Members

byEnable
是否启用该车道：0- 不启用，1- 启用
byRelatedDriveWay
关联的车道号
wDistance
线圈距离，计算速度
wTrigDelayTime
触发延迟时间（默认200），单位：毫秒
byTrigDelayDistance
触发延迟距离（默认0），单位：分米
bySpeedCapEn
是否启用超速抓拍：0- 否，1- 是
bySignSpeed
标志限速，单位：km/h
bySpeedLimit
限速值，单位：km/h
bySnapTimes
抓拍次数（默认1）：0- 不抓拍；非0- 连拍次数，最大5
byOverlayDriveWay
OSD叠加的车道号
struInterval
抓拍间隔参数
byRelatedIOOut
关联的IO输出口，可以同时关联多个
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
byCartSignSpeed
标志限速(大车)，单位：km/h
byCartSpeedLimit
限速值（大车），单位：km/h
byRelatedIOOutEx
关联的IO输出口，按位表示输出口号：bit0表示IO输出口1，bit1表示IO输出口2，以此类推。
值：0-不关联，1-关联，最多支持关联到8个IO输出口(兼容byRelatedIOOut字段)
struPlateRecog
车道牌识区域参数
byLaneType
车道类型：0- 未配置，1- 高速公路，2- 城市快速路，0xff- 其他道路
byUseageType
车道用途类型，定义详见ITC_LANE_USEAGE_TYPE
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE
byLowSpeedLimit
小车限低速值，单位：km/h
byBigCarLowSpeedLimit
大车限低速值，单位：km/h
byLowSpeedCapEn
是否启用低速抓拍：0- 否，1- 是
byEmergencyCapEn
是否启用应急车道抓拍：0- 否，1- 是
byRes
保留

Remarks

该结构体中的参数byRelatedDriveWay为关联车道号，是和车检器中的车道关联匹配，实现抓拍。byOverlayDriveWay为叠加车道号，为实际车道号。原bySignSpeed和bySpeedLimit为小车适用，卡口模式一般使用于高速场景，新增byCartSignSpeed和byCartSpeedLimit为大车适用，电警模式下不需要区分大小车。

See Also

NET_ITC_POST_RS485_PARAM NET_ITC_POST_RS485_RADAR_PARAM


NET_ITC_LANE_PRS_PARAM

视频检测触发模式车道参数结构体。

struct{
  BYTE               byLaneNO;
  union{
           BYTE      uLen[4];
           struct{
           BYTE      byIONo;
           BYTE      byTriggerType;
           BYTE      byRes1[2];
           }struIO;
           struct{
           BYTE      byRelateChan;
           BYTE      byRes2[3];
           }struRS485;
  }uTssParamInfo;
  BYTE               byRes[59];
  NET_ITC_LINE       struLaneLine;
  NET_ITC_POLYGON    struPlateRecog;
  BYTE               byRelaLaneDirectionType;
  BYTE               byRes2[3];
  NET_ITC_LINE       struTrigLine;
  BYTE               byRes1[228];
}NET_ITC_LANE_PRS_PARAM,*LPNET_ITC_LANE_PRS_PARAM;

Members

byLaneNO
车道号
uTssParamInfo为触发参数信息联合体
uLen
联合体大小，4个字节
struIO为IO触发方式相关参数结构体
byIONo
关联的IO号，从1开始
byTriggerType
触发模式：0- 下降沿，1- 上升沿
byRes1
保留，置为0
struRS485为RS485触发方式相关参数结构体
byRelateChan
关联车检器通道号，取值范围：[1,16]
byRes2
保留，置为0
byRes
保留
struLaneLine
车道线
struPlateRecog
牌识区域
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE
byRes2
保留
struTrigLine
触发线
byRes1
保留

See Also

NET_ITC_POST_PRS_PARAM


NET_ITC_LANE_VIDEO_EPOLICE_PARAM

视频电警触发模式车道参数结构体。

struct{
  BYTE                              byLaneNO;
  BYTE                              bySensitivity;
  BYTE                              byEnableRadar;
  BYTE                              byRelaLaneDirectionType;
  NET_ITC_LANE_LOGIC_PARAM          struLane;
  NET_ITC_VIOLATION_DETECT_PARAM    struVioDetect;
  NET_ITC_VIOLATION_DETECT_LINE     struLine;
  NET_ITC_POLYGON                   struPlateRecog;
  BYTE                              byRecordEnable;
  BYTE                              byRecordType;
  BYTE                              byPreRecordTime;
  BYTE                              byRecordDelayTime;
  BYTE                              byRecordTimeOut;
  BYTE                              byCarSpeedLimit;
  BYTE                              byCarSignSpeed;
  BYTE                              bySnapPicPreRecord;
  NET_ITC_INTERVAL_PARAM            struInterval;
  BYTE                              byRes[36];
}NET_ITC_LANE_VIDEO_EPOLICE_PARAM, *LPNET_ITC_LANE_VIDEO_EPOLICE_PARAM;

Members

byLaneNO
关联的车道号
bySensitivity
线圈灵敏度，取值范围：[1,100]
byEnableRadar
启用雷达测试：0- 不启用，1- 启用
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE，与关联车道号对应，确保车道唯一性
struLane
车道参数
struVioDetect
违规检测参数
struLine
违规检测线
struPlateRecog
牌识区域参数
byRecordEnable
闯红灯周期录像标志：0-不录像，1-录像
byRecordType
闯红灯录像类型：0-预录，1-延时录像
byPreRecordTime
闯红灯录像片段预录时间（默认0），单位：秒
byRecordDelayTime
闯红灯录像片段延时时间（默认0），单位：秒
byRecordTimeOut
闯红灯周期录像超时时间，单位：秒
byCarSpeedLimit
车速限制值，单位：km/h
byCarSignSpeed
标志限速，单位：km/h
bySnapPicPreRecord
抓拍图片预录时间点：0- 默认值（第二张图片），1- 第一张图片，2- 第二张图片，3- 第三张图片
struInterval
抓拍间隔参数
byRes
保留，置为0

See Also

NET_ITC_VIDEO_EPOLICE_PARAM


NET_ITC_LIGHT_ACCESSPARAM_UNION

交通信号灯接入参数联合体。

union {
  DWORD                               uLen[122];
  NET_ITC_IO_LIGHT_PARAM              struIOLight;
  NET_ITC_RS485_LIGHT_PARAM           struRS485Light;
  NET_ITC_VIDEO_DETECT_LIGHT_PARAM    struVideoDelectLight;
}NET_ITC_LIGHT_ACCESSPARAM_UNION, *LPNET_ITC_LIGHT_ACCESSPARAM_UNION;

Members

uLen
联合体大小
struIOLight
IO接入信号灯参数
struRS485Light
RS485接入信号灯参数
struRS485Light
视频检测信号灯参数

See Also

NET_ITC_TRAFFIC_LIGHT_PARAM


NET_ITC_LINE

视频电警线结构体。

struct{
  NET_VCA_LINE    struLine;
  BYTE            byLineType;
  BYTE            byRes[7];
}NET_ITC_LINE, *LPNET_ITC_LINE;

Members

struLine
线参数
byLineType
线类型，具体定义如下：
enum _ITC_LINE_TYPE_{
  ITC_LINT_UNKNOW        = 0,
  ITC_LINE_WHITE         = 1,
  ITC_LINE_STOP          = 2,
  ITC_LINE_SINGLE_YELLOW = 3,
  ITC_LINE_DOUBLE_YELLOW = 4,
  ITC_LINE_GUARD_RAIL    = 5,
  ITC_LINE_NO_CROSS      = 6
}ITC_LINE_TYPE
ITC_LINT_UNKNOW
未知
ITC_LINE_WHITE
车道间的白实线
ITC_LINE_STOP
车道停止线
ITC_LINE_SINGLE_YELLOW
单黄线
ITC_LINE_DOUBLE_YELLOW
双黄线
ITC_LINE_GUARD_RAIL
车道线上有护栏
ITC_LINE_NO_CROSS
车辆无法跨越的车道线
byRes
保留，置为0


NET_ITC_NOCOMITY_PEDESTRIAN_PARAM

不礼让行人触发参数结构体。

struct{
  BYTE                                      byEnable;
  BYTE                                      byLaneNum;
  BYTE                                      byRes[74];
  NET_ITC_LINE                              struLaneBoundaryLine;
  NET_ITC_LINE                              struTriggerLine;
  NET_ITC_POLYGON                           struPedesDetRecog;
  NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM    struLaneParam[MAX_ITC_LANE_NUM];
  NET_ITC_PLATE_RECOG_PARAM                 struPlateRecog;
  BYTE                                      byRes1[400];
}NET_ITC_NOCOMITY_PEDESTRIAN_PARAM,*LPNET_ITC_NOCOMITY_PEDESTRIAN_PARAM;

Members

byEnable
使能：0- 禁用，1- 启用
byLaneNum
识别的车道个数，1~3
byRes
保留，置为0
struLaneBoundaryLine
车道边界线（最右边车道的右车道线）
struTriggerLine
不礼让行人触发线
struPedesDetRecog
行人检测区域
struLaneParam
车道参数，每位数组表示一个车道
struPlateRecog
车牌识别参数
byRes1
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_PLATE_RECOG_PARAM

牌识参数结构体。

struct{
  BYTE     byDefaultCHN[MAX_CHJC_NUM];
  BYTE     byEnable;
  DWORD    dwRecogMode;
  BYTE     byVehicleLogoRecog;
  BYTE     byProvince;
  BYTE     byRegion;
  BYTE     byRes1;
  WORD     wPlatePixelWidthMin;
  WORD     wPlatePixelWidthMax;
  BYTE     byRes[24];
}NET_ITC_PLATE_RECOG_PARAM,*LPNET_ITC_PLATE_RECOG_PARAM;

Members

byDefaultCHN
设备运行省份的汉字简写
byEnable
是否启用该区域牌识：0- 否，1- 是
dwRecogMode
识别的类型:
bit0-背向识别：0- 正向车牌识别，1- 背向识别(尾牌识别)
bit1-大车牌识别或小车牌识别：0- 小车牌识别，1- 大车牌识别
bit2-车身颜色识别：0- 不采用车身颜色识别，在背向识别或小车牌识别时禁止启用；1- 车身颜色识别
bit3-农用车识别：0- 不采用农用车识别，1- 农用车识别
bit4-模糊识别：0- 不采用模糊识别，1- 模糊识别
bit5-帧定位或场定位：0- 帧定位，1- 场定位
bit6-帧识别或场识别：0- 帧识别，1- 场识别
bit7-晚上或白天：0- 白天，1- 晚上
bit8-摩托车识别：0- 不采用摩托车识别，1- 摩托车识别
bit9-场景模式：0- 电警/多帧，1- 卡口
bit10-微小车牌：0- 不启用，1- 启用微小车牌识别(像素60～80)
bit12-民航车牌识别: 0-不启用，1-开启民航车牌识别
bit13-车牌过渡倾斜处理: 0-不启用，1-开启过渡倾斜处理（PRS）
bit14-超大车牌识别: 0-不启用，1-开启超大车牌识别（PRS）
bit15-遮阳板检测：0-不启用，1-启用遮阳板检测
bit16-黄标车检测：0-不启用，1-启用黄标车检测
bit17-危险品车辆检测：0-不启用，1-启用危险品车辆检测
bit18-使馆车牌识别：0-不启用，1-启用使馆车牌识别
bit19-车辆子品牌识别：0-不启用，1-启用车辆子品牌识别
byVehicleLogoRecog
汽车品牌识别：0- 不启用，1- 启用
byProvince
省份索引值：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-皖，0xff-全部
byRegion
区域索引值：0- 保留，1- 欧洲(Europe Region)，2- 俄罗斯(Russian Region)，3- 欧洲&俄罗斯(EU&CIS)
byRes1
保留
wPlatePixelWidthMin
车牌像素识别宽度最小值，单位：像素，当前推荐范围：[130,500]
wPlatePixelWidthMax
车牌像素识别宽度最大值，单位：像素，当前推荐范围：[130,500]
byRes
保留

Remarks

  • 摩托车牌识别用于背向识别，也就是说电警车检器、卡警车检器和视频电警会用到，卡口均不使用。
  • Smart IPC是否支持牌识参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应报警事件能力集(EventAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<PlateRecogParam>。


NET_ITC_PLATE_RECOG_REGION_PARAM

牌识区域参数结构体。

struct{
  BYTE    byMode;
  BYTE    byRes1[3];
  union{
           NET_VCA_RECT           struRect;
           NET_ITC_POLYGON        struPolygon;
  }uRegion;
  BYTE    byRes[16];
}NET_ITC_PLATE_RECOG_REGION_PARAM,*LPNET_ITC_PLATE_RECOG_REGION_PARAM;

Members

byMode
区域类型：0- 矩形，1- 多边形
byRes1
保留
struRect
矩形区域
struPolygon
多边形区域
byRes
保留

See Also

NET_ITC_SINGLE_IOSPEED_PARAM NET_ITC_SINGLEIO_PARAM NET_ITC_LANE_PARAM
NET_ITC_VTLANE_PARAM NET_ITC_SINGLE_IOTL_PARAM NET_ITC_EPOLICE_LANE_PARAM


NET_ITC_POLYGON

多边型结构体。

struct{
  DWORD            dwPointNum;
  NET_VCA_POINT    struPos[ITC_MAX_POLYGON_POINT_NUM];
}NET_ITC_POLYGON,*LPNET_ITC_POLYGON;

Members

dwPointNum
有效点，大于等于3，若是3点在一条线上认为是无效区域，线交叉认为是无效区域
struPos
多边形边界点，最多20个


NET_ITC_POST_HVT_PARAM

混行卡口参数结构体。

struct{
  BYTE                         byLaneNum;
  BYTE                         bySceneMode;
  BYTE                         byRoadExpBright;
  BYTE                         byPlateExpBright;
  NET_ITC_POLYGON              struDetectArea;
  NET_ITC_SNAPMODE_PARAM       struCapMode;
  NET_ITC_HVT_EC_PARAM         struEcParam;
  NET_ITC_LANE_HVT_PARAM       struLaneParam[MAX_ITC_LANE_NUM];
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_DVR_GEOGLOCATION         struGeogLocation;
  BYTE                         byRes[324];
}NET_ITC_POST_HVT_PARAM,*LPNET_ITC_POST_HVT_PARAM;

Members

byLaneNum
识别的车道个数，1~6
bySceneMode
场景模式：0-未知，1-城区道路，2-小区出入口
byRoadExpBright
路面期望亮度（视频曝光参数调整的依据之一。在无机动车时，依据此亮度期望值，调整视频曝光参数）
byPlateExpBright
车牌期望亮度（视频曝光参数调整的依据之一。在有机动车通过并识别到车牌时，依据此亮度期望值，对视频曝光参数调整）
struDetectArea
视频检测区域
struCapMode
抓拍模式
struEcParam
曝光控制参数
struLaneParam
单车道属性
struPlateRecog
车牌识别参数
struGeogLocation
地址位置（默认浙江）
byRes
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_HVT_PARAM_V50

混行卡口参数(V50扩展)结构体。

struct{
  BYTE                          byLaneNum;
  BYTE                          byCapType;
  BYTE                          byCapMode;
  BYTE                          bySceneMode;
  BYTE                          bySpeedMode;
  BYTE                          byLineRuleEffect;
  BYTE                          byRes1[78];
  NET_ITC_LINE                  struLeftTrigLine;
  NET_ITC_LINE                  struRigtTrigLine;
  NET_ITC_LINE                  struLaneBoundaryLine;
  NET_ITC_POLYGON               struDetectArea;
  NET_DVR_GEOGLOCATION          struGeogLocation;
  NET_ITC_LANE_HVT_PARAM_V50    struLaneParam[MAX_ITC_LANE_NUM];
  NET_ITC_PLATE_RECOG_PARAM     struPlateRecog;
  BYTE                          byRes2[260];
}NET_ITC_POST_HVT_PARAM_V50,*LPNET_ITC_POST_HVT_PARAM_V50;

Members

byLaneNum
识别的车道个数，1~6
byCapType
抓拍类型：0- 机、非、人（默认），1- 机动车
byCapMode
抓拍方式：0- 视频抽帧，1- 打断抓拍，2- 混合模式
bySceneMode
场景模式：0- 城区道路（默认），1- 小区出入口，2- 高速公路
bySpeedMode
测速模式：0- 无测速，1- 雷达测速，2- 视频测速
byLineRuleEffect
触发规则线有效性，每一位代表一条触发线，取值：0- 无效，1- 有效
bit0- 左触发线
bit1- 右触发线
bit2- 视频检测区域
byRes1
保留，置为0
struLeftTrigLine
左触发线(一条垂直线)
struRigtTrigLine
右触发线(一条垂直线)
struLaneBoundaryLine
车道边界线（最右边车道的右车道线）
struDetectArea
视频检测区域
struGeogLocation
地址位置（默认浙江）
struLaneParam
单车道属性，每位数组表示一个车道信息
struPlateRecog
车牌识别参数
byRes2
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_IMT_PARAM

智慧监控配置参数结构体。

struct{
  BYTE                         byEnable;
  BYTE                         byLaneNum;
  BYTE                         bySnapMode;
  BYTE                         byRes[61];
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_LINE                 struLaneBoundaryLine;
  NET_ITC_LANE_IMT_PARAM       struLaneParam[MAX_ITC_LANE_NUM];
  BYTE                         byRes1[1584];
}NET_ITC_POST_IMT_PARAM,*LPNET_ITC_POST_IMT_PARAM;

Members

byEnable
是否启用智慧监控模式：0- 禁用，1- 启用
byLaneNum
识别的车道个数，1~6
bySnapMode
抓拍类型：0- 机动车，1- 机非人
byRes
保留，置为0
struPlateRecog
车牌识别参数
struLaneBoundaryLine
车道边界线（最左边车道的左边界线）
struLaneParam
单车道属性
byRes1
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_IOSPEED_PARAM

卡口IO测速参数结构体。

struct{
  NET_ITC_PLATE_RECOG_PARAM       struPlateRecog;
  NET_ITC_SINGLE_IOSPEED_PARAM    struSingleIOSpeed[MAX_IOSPEED_GROUP_NUM];
  BYTE                            byRes[32];
}NET_ITC_POST_IOSPEED_PARAM,*LPNET_ITC_POST_IOSPEED_PARAM;

Members

struPlateRecog
牌识参数
struSingleIOSpeed
单个IO测速组参数
byRes
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_MOBILE_PARAM

移动交通触发参数结构体。

struct{
  BYTE     byEnable;
  BYTE     bySceneMode;
  WORD     wExpressWayCapType;
  WORD     wUrbanRoadCapType;
  BYTE     byCapNum;
  BYTE     byRecordEnable;
  DWORD    dwPreRecordTime;
  DWORD    dwOverRecordTime;
  BYTE     byRes[256];
}NET_ITC_POST_MOBILE_PARAM,*LPNET_ITC_POST_MOBILE_PARAM;

Members

byEnable
是否启用：0- 否，1- 是
bySceneMode
场景模式：0- 高速公路，1- 城市道路
wExpressWayCapType
高速公路抓拍类型，按位表示，bit0- 卡口，bit1- 大车占道，bit2- 压硬路肩
wUrbanRoadCapType
城市道路抓拍类型，按位表示，bit0- 卡口，bit1- 机占非，bit2- 占用专用车道
byCapNum
抓拍张数，取值范围：[2,3]
byRecordEnable
违章录像使能：0- 关闭，1- 开启
dwPreRecordTime
录像预录时间，单位：秒(s)
dwOverRecordTime
录像超时时间，单位：秒(s)
byRes
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_MPR_PARAM

卡口多帧检测(MPR)触发参数结构体。

struct{
  BYTE                         byEnable;
  BYTE                         byLaneNum;
  BYTE                         bySourceType;
  BYTE                         byPicUploadType;
  BYTE                         byRoadType;
  BYTE                         byRes2;
  WORD                         wCustomDelayTime;
  BYTE                         byRes[56];
  NET_ITC_LINE                 struLaneBoundaryLine;
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_LANE_MPR_PARAM       struLaneParam[MAX_ITC_LANE_NUM];
  char                         szSceneName[NAME_LEN];
  NET_VCA_LINE                 struSnapLine;
  BYTE                         byRes1[392];
}NET_ITC_POST_MPR_PARAM,*LPNET_ITC_POST_MPR_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byLaneNum
识别的车道个数
bySourceType
信号源类型：0- MPR触发（视频触发），1- 关联IO触发（地感线圈），2- 关联RS485触发
byPicUploadType
图片上传类型：0- 全部上传，1- 正向上传，2- 背向上传
byRoadType
道路模式：0- 出入口，1- 城市道路，2- 自定义，3-报警输入
byRes2
保留
wCustomDelayTime
自定义抓拍延时时间（byRoadType为 “2- 自定义”时有效），取值范围：[0,15000]，单位：ms
byRes
保留
struLaneBoundaryLine
车道边界线（最左边车道的左边界线）
struPlateRecog
车牌识别参数
struLaneParam
多帧检测车道参数
szSceneName
场景名称
struSnapLine
抓拍线，抓在相机的架设方式为侧装时配置这个参数生效（即NET_DVR_CAMERA_SETUPCFG结构体中byErectMethod字段为1时）
byRes1
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_PRS_PARAM

视频检测（PRS）触发参数结构体。

struct{
  BYTE                         byEnable;
  BYTE                         byLaneNum;
  BYTE                         bySourceType;
  BYTE                         bySnapMode;
  BYTE                         byCapMode;
  BYTE                         byNoPlatCarCap;
  BYTE                         bySceneMode;
  BYTE                         byRes[57];
  NET_ITC_LINE                 struLaneBoundaryLine;
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_LANE_PRS_PARAM       struLaneParam[MAX_ITC_LANE_NUM];
  BYTE                         byRes1[440];
}NET_ITC_POST_PRS_PARAM,*LPNET_ITC_POST_PRS_PARAM;

Members

byEnable
是否启用：0- 否，1- 是
byLaneNum
识别的车道个数
bySourceType
信号源类型：0- 视频检测，1- 关联IO触发（地感线圈），2- 关联RS485的触发信号
bySnapMode
抓拍模式：0- 全景图，1- 全景图+特写
byCapMode
bySourceType为0视频检测时使用，0- 频闪模式，1- 爆闪模式
byNoPlatCarCap
是否启用无车牌抓拍：0- 不启用，1- 启用
bySceneMode
场景模式：0- 普通出入口场景，1- 收费站模式场景(车辆停留时间较长)，2- 地下停车场出入口场景(白天黑夜均较暗)
byRes
保留，置为0
struLaneBoundaryLine
车道边界线（最左边车道的左边界线）
struPlateRecog
牌识参数
struLaneParam
车道参数
byRes1
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_RS485_PARAM

卡口RS485车检器触发参数结构体。

struct{
  BYTE                         byRelatedLaneNum;
  BYTE                         byTriggerSpareMode;
  BYTE                         byFaultToleranceTime;
  BYTE                         byRes1;
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_LANE_PARAM           struLane[MAX_ITC_LANE_NUM];
  BYTE                         byRes[32];
}NET_ITC_POST_RS485_PARAM,*LPNET_ITC_POST_RS485_PARAM;

Members

byRelatedLaneNum
关联的车道个数
byTriggerSpareMode
触发备用模式：0- 无，1- 卡口虚拟线圈模式，2- 卡口混合车道模式
byFaultToleranceTime
容错时间(单位:分钟)，用于检测车检器是否正常的最大时间
byRes1
保留
struPlateRecog
牌识参数
struLane
关联的车道参数
byRes
保留

Remarks

byTriggerSpareMode是在线圈触发出现问题后的备用使用虚拟线圈触发模式，建议先配置卡口虚拟线圈触发模式的相关参数。

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_RS485_RADAR_PARAM

卡口RS485雷达触发参数结构体。

struct{
  BYTE                         byRelatedLaneNum;
  BYTE                         byRes1[3];
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_LANE_PARAM           struLane[MAX_ITC_LANE_NUM];
  NET_ITC_RADAR_PARAM          struRadar;
  BYTE                         byRes[32];
}NET_ITC_POST_RS485_RADAR_PARAM,*LPNET_ITC_POST_RS485_RADAR_PARAM;

Members

byRelatedLaneNum
关联的车道个数
byRes1
保留
struPlateRecog
牌识参数
struLane
关联的车道参数
struRadar
雷达参数
byRes
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_SINGLEIO_PARAM

单IO触发参数结构体。

struct{
  NET_ITC_PLATE_RECOG_PARAM     struPlateRecog;
  NET_ITC_SINGLEIO_PARAM        struSingleIO[MAX_IOIN_NUMEX];
}NET_ITC_POST_SINGLEIO_PARAM,*LPNET_ITC_POST_SINGLEIO_PARAM;

Members

struPlateRecog
牌识参数
struSingleIO
单个IO触发参数，数组0表示IO1，数组1表示IO2，依次类推

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_POST_VTCOIL_PARAM

卡口虚拟线圈触发参数结构体。

struct{
  BYTE                         byRelatedLaneNum;
  BYTE                         byIsDisplay;
  BYTE                         byLoopPos;
  BYTE                         byPolarLenType;
  BYTE                         byDayAuxLightMode;
  BYTE                         byVideoLaneNO;
  BYTE                         byVideoLowTh;
  BYTE                         byVideoHighTh;
  BYTE                         byRecordMode;
  BYTE                         bySnapMode;
  BYTE                         bySpeedDetector;
  BYTE                         byRes2;
  WORD                         wResolutionX;
  WORD                         wResolutionY;
  DWORD                        dwDayInitExp;
  DWORD                        dwDayMaxExp;
  DWORD                        dwNightExp;
  DWORD                        dwSnapExp;
  BYTE                         byDayInitGain;
  BYTE                         byDayMaxGain;
  BYTE                         byNightGain;
  BYTE                         bySnapGain;
  DWORD                        dwSceneMode;
  NET_DVR_GEOGLOCATION         struGeogLocation;
  NET_ITC_PLATE_RECOG_PARAM    struPlateRecog;
  NET_ITC_VTCOIL_INFO          struVtCoil[MAX_VL_NUM];
  NET_ITC_RADAR_PARAM          struRadar;
  NET_VCA_LINE                 struLine;
  DWORD                        dwVioDetectType;
  BYTE                         byDebugMode;
  BYTE                         byRes[11];
}NET_ITC_POST_VTCOIL_PARAM,*LPNET_ITC_POST_VTCOIL_PARAM;

Members

byRelatedLaneNum
关联的车道个数
byIsDisplay
视频中是否显示虚拟线圈：0- 不显示，1- 显示
byLoopPos
晚间触发线圈的偏向（默认10）
byPolarLenType
偏振镜类型：0- 不加偏振镜，1- 加施耐德偏振镜
byDayAuxLightMode
白天辅助照明模式：0- 无辅助照明，1- LED灯照明，2- 闪光灯照明
byVideoLaneNO
视频参考亮度的参考车道号
byVideoLowTh
视频参考亮度低阈值初始化值（默认40）
byVideoHighTh
视频参考亮度高阈值初始化值（默认55）
byRecordMode
录像标志：0- 不录像，1- 录像
bySnapMode
抓拍模式：0- 频闪模式，1- 爆闪模式
bySpeedDetector
测速方式：0- 不测速，0x1- 雷达测速，0x2- 视频测速
byRes2
保留
wResolutionX
设备当前分辨率宽
wResolutionY
设备当前分辨率高
dwDayInitExp
视频白天曝光时间的初始值，默认为2000
dwDayMaxExp
视频白天曝光时间的最大值，默认为20000
dwNightExp
晚间视频曝光时间的设置值，默认为3000
dwSnapExp
抓拍曝光时间
byDayInitGain
视频白天增益的初始值，默认为200
byDayMaxGain
视频白天增益的最大值，默认为400
byNightGain
晚间视频增益
bySnapGain
抓拍增益
dwSceneMode
场景模式
enum _SCENE_MODE_{
  UNKOWN_SCENE_MODE   = 0,
  HIGHWAY_SCENE_MODE  = 1,
  SUBURBAN_SCENE_MODE = 2,
  URBAN_SCENE_MODE    = 3,
  TUNNEL_SCENE_MODE   = 4
}SCENE_MODE
UNKOWN_SCENE_MODE
未知场景模式
HIGHWAY_SCENE_MODE
高速场景模式
SUBURBAN_SCENE_MODE
郊区场景模式(保留)
URBAN_SCENE_MODE
市区场景模式
TUNNEL_SCENE_MODE
隧道场景模式(保留)
struGeogLocation
地址位置(默认浙江)
struPlateRecog
牌识参数
struVtCoil
虚拟线圈参数
struRadar
雷达参数
struLine
右车道线
dwVioDetectType
违规检测类型，按位表示，其值：0- 不启用，1- 启用，类型详见ITC_VIOLATION_DETECT_TYPE
byDebugMode
调试模式：0- 不启用，1- 启用
byRes
保留

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_RADAR_INFO_PARAM

RS485关联雷达配置结构体。

struct{
  NET_ITC_RADAR_PARAM    struRadarParam;
  BYTE                   byAssociateLaneNo;
  BYTE                   byRes[103];
}NET_ITC_RADAR_INFO_PARAM, *LPNET_ITC_RADAR_INFO_PARAM;

Members

struRadarParam
雷达参数
byAssociateLaneNo
关联车道号，按位表示车道：bit1-车道1，bit2-车道2，bit3-车道3，bit4-车道4，bit5-车道5，bit6-车道6，值：0- 不关联，1- 关联
byRes
保留，置为0

See Also

NET_ITC_ACCESS_DEVINFO_PARAM_UNION


NET_ITC_RADAR_PARAM

雷达参数结构体。

struct{
  BYTE     byRadarType;
  BYTE     byLevelAngle;
  WORD     wRadarSensitivity;
  WORD     wRadarSpeedValidTime;
  BYTE     byRes1[2];
  float    fLineCorrectParam;
  int      iConstCorrectParam;
  BYTE     byRes2[8];
}NET_ITC_RADAR_PARAM,*LPNET_ITC_RADAR_PARAM;

Members

byRadarType
雷达类型：0- 无雷达，1- 安道雷雷达，2- 奥利维亚，3- 川速微波，4- 雷达接IO扩展盒(此参数在卡口虚拟线圈界面中使用，卡口RS485雷达不使用)，5- 安道雷（无雷达控制器），0xff- 自定义类型
byLevelAngle
与水平线所成角度，默认为25°，取值范围：0~90度
wRadarSensitivity
雷达灵敏度
wRadarSpeedValidTime
雷达速度有效时间，取值范围：(0~2000]，0表示不支持
byRes1
保留
fLineCorrectParam
线性矫正参数(乘操作)，取值范围：[0.0,2.0]
iConstCorrectParam
常量矫正参数(加减操作)，取值范围：[-100,100]
byRes2
保留

Remarks

卡口RS485雷达触发模式下，雷达检测车辆通过时要及时进行触发，速度值和抓拍信号是几乎同时接收，因此该模式下wRadarSpeedValidTime无效。

See Also

NET_ITC_POST_RS485_RADAR_PARAM NET_ITC_POST_VTCOIL_PARAM

NET_ITC_RADAR_INFO_PARAM


NET_ITC_REDLIGHT_PEDESTRIAN_PARAM

行人闯红灯触发参数结构体。

struct{
  BYTE                           byEnable;
  BYTE                           bySnapNumTimes;
  BYTE                           byPedesDir;
  BYTE                           byDelayTime;
  BYTE                           byStackTargetEnble;
  BYTE                           byCalibRecogCtrl;
  BYTE                           byRes1[2];
  NET_ITC_TRAFFIC_LIGHT_PARAM    struTrafficLight;
  NET_ITC_LINE                   struStopLine;
  NET_ITC_POLYGON                struCalibRecog[MAX_CALIB_RECOG_NUM];
  BYTE                           byRes[440];
}NET_ITC_REDLIGHT_PEDESTRIAN_PARAM,*LPNET_ITC_REDLIGHT_PEDESTRIAN_PARAM;

Members

byEnable
使能：0- 禁用，1- 启用
bySnapNumTimes
抓拍张数，取值范围：1~3，默认3张
byPedesDir
行人方向：0- 正向，1- 背向，2- 双向
byDelayTime
延时时间，取值范围：1~5，单位：s（秒）
byStackTargetEnble
叠加目标框（即抓拍第一张图片上框住闯红灯的行人）：0- 不叠加，1- 叠加
struTriggerLine
标定区域控制：0- 移除标定区域，1- 添加标定区域
byRes1
保留，置为0
struTrafficLight
交通信号灯参数
struStopLine
停止线
struCalibRecog
标定区域
byRes
保留，置为0

See Also

NET_ITC_TRIGGER_PARAM_UNION


NET_ITC_RS485_ACCESS_CFG

RS485关联接入设备配置结构体。

struct{
  DWORD                                 dwSize;
  BYTE                                  byModeType;
  BYTE                                  byRes[3];
  NET_ITC_ACCESS_DEVINFO_PARAM_UNION    uITCAccessDevinfoParam;
  BYTE                                  byRes1[12];
}NET_ITC_RS485_ACCESS_CFG, *LPNET_ITC_RS485_ACCESS_CFG;

Members

dwSize
结构体大小
byModeType
接入设备类型：bit0- 预留，bit1- 雷达，bit2- 车检器，bit3- 信号灯检测器，取值：0- 不关联，1-关联，目前只支持雷达
byRes
保留，置为0
uITCAccessDevinfoParam
关联接入设备配置联合体
byRes1
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_RS485_ACCESS_INFO_COND

RS485关联接入设备配置条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwTriggerModeType;
  BYTE     byAssociateRS485No;
  BYTE     byRes[15];
}NET_ITC_RS485_ACCESS_INFO_COND, *LPNET_ITC_RS485_ACCESS_INFO_COND;

Members

dwSize
结构体大小
dwChannel
设备通道号
dwTriggerModeType
触发模式，参见ITC_TRIGGERMODE_TYPE
byAssociateRS485No
关联的RS485号，取值范围：1～5
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_RS485_LIGHT_PARAM

485接入信号灯参数结构体。

struct{
  NET_ITC_SINGLE_RS485_LIGHT_PARAM    struRS485Light[MAX_LIGHT_NUM];
  BYTE                                byRes[8];
}NET_ITC_RS485_LIGHT_PARAM, *LPNET_ITC_RS485_LIGHT_PARAM;

Members

struRS485Light
单个485接入信号灯参数
byRes
保留，置为0

See Also

NET_ITC_LIGHT_ACCESSPARAM_UNION


NET_ITC_SERIAL_CHECKINFO

串口参数结构体。

struct{
  BYTE     bySerialIndex[MAX_ITC_SERIALCHECK_NUM];
  BYTE     byRes[40];
}NET_ITC_SERIAL_CHECKINFO,*LPNET_ITC_SERIAL_CHECKINFO;

Members

bySerialIndex
485串口校验结果：0- 无效，1- 有效，bySerialIndex[0]表示正确的头，bySerialIndex[1]表示正确的尾
byRes
保留

See Also

NET_ITC_STATUS_UNION


NET_ITC_SERIAL_INFO

车检器参数结构体。

struct{
  BYTE     bySerialProtocol;
  BYTE     byIntervalType;
  WORD     wInterval;
  BYTE     byNormalPassProtocol;
  BYTE     byInverseProtocol;
  BYTE     bySpeedProtocol;
  BYTE     byRes[9];
}NET_ITC_SERIAL_INFO,*LPNET_ITC_SERIAL_INFO;

Members

bySerialProtocol
闯红灯违规的逻辑抓拍类型，定义如下所示：
enum _ITC_SERIAL_PROTOCOL_{
  ITC_PROTOCOL_UNKNOW             = 0,
  ITC_SINGLE_COIL_PROTOCOL        = 1,
  ITC_DOUBLE_COIL_PROTOCOL_MODE1  = 2,
  ITC_DOUBLE_COIL_PROTOCOL_MODE2  = 3,
  ITC_DOUBLE_COIL_PROTOCOL_MODE3  = 4,
  ITC_DOUBLE_COIL_PROTOCOL_MODE4  = 5,
  ITC_DOUBLE_COIL_PROTOCOL_MODE5  = 6,
  ITC_DOUBLE_COIL_PROTOCOL_MODE6  = 7,
  ITC_SINGLE_COIL_PROTOCOL1       = 8,
  ITC_OTHER_PROTOCOL              = 0xff
}ITC_SERIAL_PROTOCOL
ITC_PROTOCOL_UNKNOW
未知
ITC_SINGLE_COIL_PROTOCOL
单线圈车检器协议（动态显示：到达、离开、离开延迟抓拍，离开牌识）
ITC_DOUBLE_COIL_PROTOCOL_MODE1
双线圈车检器协议模式1（动态显示：到达一、离开一、离开二抓拍，离开一牌识）
ITC_DOUBLE_COIL_PROTOCOL_MODE2
双线圈车检器协议模式2（动态显示：离开一、离开二、离开二延时抓拍，离开一牌识，默认为延时距离1m）
ITC_DOUBLE_COIL_PROTOCOL_MODE3
双线圈车检器协议模式3（动态显示：进入二、离开一、离开二延时抓拍，离开一牌识，默认为延时距离1m）
ITC_DOUBLE_COIL_PROTOCOL_MODE4
双线圈车检器协议模式4（到达2线圈、离开1线圈、离开2线圈、离开2线圈延迟抓拍，离开1牌识，上传图像到达2、离开2、离开2延迟）
ITC_DOUBLE_COIL_PROTOCOL_MODE5
双线圈车检器协议模式5（到达2线圈、离开1线圈、离开2线圈、离开2线圈延迟抓拍，到达2、离开1牌识，上传图像到达2、离开2、离开2延迟）
ITC_DOUBLE_COIL_PROTOCOL_MODE6
双线圈车检器协议模式6（到达1线圈、到达2线圈、离开1线圈、离开2线圈、离开2线圈延迟抓拍，到达1、离开1牌识，上传图像到达1、离开2、离开2延迟）
ITC_SINGLE_COIL_PROTOCOL1
单线圈模式2（到达线圈、离开线圈、离开线圈延迟抓拍，到达和离开牌识）
ITC_OTHER_PROTOCOL
其它车检器协议
byIntervalType
间隔类型（默认按时间）：0- 时间起效，1- 距离起效
wInterval
连拍间隔时间（单位：ms）或连拍间隔距离（单位：分米）。当byIntervalType为0时，表示间隔时间，当byIntervalType为1时，表示距离
byNormalPassProtocol
正常过车抓拍协议类型，定义如下所示：
enum _ITC_NORMAL_PASS_SERIAL_PROTOCOL_{
  ITC_NORMAL_PASS_SERIAL_UNKNOW   = 0,
  ITC_NORMAL_PASS_PROTOCOL_MODE1  = 1,
  ITC_NORMAL_PASS_PROTOCOL_MODE2  = 2,
  ITC_NORMAL_PASS_PROTOCOL_MODE3  = 3,
  ITC_NORMAL_PASS_PROTOCOL_MODE4  = 4,
  ITC_NORMAL_PASS_PROTOCOL_MODE5  = 5
}ITC_NORMAL_PASS_SERIAL_PROTOCOL
ITC_NORMAL_PASS_SERIAL_UNKNOW
未知
ITC_NORMAL_PASS_PROTOCOL_MODE1
单线圈，离开抓拍，牌识上传（默认）
ITC_NORMAL_PASS_PROTOCOL_MODE2
线圈，到达、离开抓拍，均牌识，仅上传离开车辆图片和置信度高的车牌结果
ITC_NORMAL_PASS_PROTOCOL_MODE3
双线圈，离开1抓拍，牌识上传（默认）
ITC_NORMAL_PASS_PROTOCOL_MODE4
双线圈，到达1、离开1抓拍，均牌识，仅上传离开1车辆图片和置信度高的车牌结果
ITC_NORMAL_PASS_PROTOCOL_MODE5
双线圈，到达2、离开1抓拍，均牌识，仅上传离开1车辆图片和置信度高的车牌结果
byInverseProtocol
逆行抓拍协议类型，定义如下所示：
enum _ITC_INVERSE_SERIAL_PROTOCOL_{
  ITC_INVERSE_SERIAL_UNKNOW   = 0,
  ITC_INVERSE_PROTOCOL_MODE1  = 1,
  ITC_INVERSE_PROTOCOL_MODE2  = 2,
  ITC_INVERSE_PROTOCOL_MODE3  = 3
}ITC_INVERSE_SERIAL_PROTOCOL
ITC_INVERSE_SERIAL_UNKNOW
未知
ITC_INVERSE_PROTOCOL_MODE1
不抓拍
ITC_INVERSE_PROTOCOL_MODE2
到达1连抓2张、离开2抓拍，到达1两张均牌识，上传3张车辆图片和置信度高的车牌结果
ITC_INVERSE_PROTOCOL_MODE3
到达1、离开2抓拍，到达1牌识，上传2张车辆图片和车牌结果
bySpeedProtocol
超速抓拍协议类型，定义如下所示：
enum _ITC_SPEED_SERIAL_PROTOCOL_{
  ITC_SPEED_SERIAL_UNKNOW   = 0,
  ITC_SPEED_PROTOCOL_MODE1  = 1,
  ITC_SPEED_PROTOCOL_MODE2  = 2,
  ITC_SPEED_PROTOCOL_MODE3  = 3
}ITC_SPEED_SERIAL_PROTOCOL
ITC_INVERSE_SERIAL_UNKNOW
未知
ITC_INVERSE_PROTOCOL_MODE1
不抓拍
ITC_INVERSE_PROTOCOL_MODE2
双/三线圈，离开1，离开2，离开2延时抓拍，离开1牌识，上传车辆图片（卡口离开1，超速离开1、离开2、离开2延时）和车牌结果
ITC_INVERSE_PROTOCOL_MODE3
双/三线圈，离开1，离开2，离开2延时抓拍，离开1牌识，上传车辆图片（卡口离开1，超速离开1、离开2）和车牌结果
byRes
保留

Remarks

bySerialProtocol适用于闯红灯违规抓拍，byNormalPassProtocol和bySpeedProtocol适用于卡式电警，byInverseProtocol适用于电警和卡式电警。电警和卡式电警包含闯红灯，若闯红灯违规时逻辑抓拍配了其他车检器，那正常过车、逆行、超速也为其他车检器。

See Also

NET_ITC_EPOLICE_LANE_PARAM


NET_ITC_SINGLE_IO_LIGHT_PARAM

单个IO接入信号灯参数结构体。

struct{
  BYTE     byLightType;
  BYTE     byRelatedIO;
  BYTE     byRedLightState;
  BYTE     byRes[17];
}NET_ITC_SINGLE_IO_LIGHT_PARAM,*LPNET_ITC_SINGLE_IO_LIGHT_PARAM;

Members

byLightType
交通灯导向类型：0- 左转灯，1- 直行灯，2- 右转灯
byRelatedIO
关联的IO口号，1~6
byRedLightState
红灯电平状态：0- 低电平红灯，1- 高电平红灯
byRes
保留

See Also

NET_ITC_IO_LIGHT_PARAM


NET_ITC_SINGLE_IOSPEED_PARAM

单组IO测速参数结构体。

struct{
  BYTE                                byEnable;
  BYTE                                byTrigCoil1;
  BYTE                                byCoil1IOStatus;
  BYTE                                byTrigCoil2;
  BYTE                                byCoil2IOStatus;
  BYTE                                byRelatedDriveWay;
  BYTE                                byTimeOut;
  BYTE                                byRelatedIOOutEx;
  DWORD                               dwDistance;
  BYTE                                byCapSpeed;
  BYTE                                bySpeedLimit;
  BYTE                                bySpeedCapEn;
  BYTE                                bySnapTimes1;
  BYTE                                bySnapTimes2;
  BYTE                                byBigCarSpeedLimit;
  BYTE                                byBigCarSignSpeed;
  BYTE                                byIntervalType;
  WORD                                wInterval1[MAX_INTERVAL_NUM];
  WORD                                wInterval2[MAX_INTERVAL_NUM];
  BYTE                                byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                                byFlashMode;
  BYTE                                byLaneType;
  BYTE                                byCarSignSpeed;
  BYTE                                byUseageType;
  NET_ITC_PLATE_RECOG_REGION_PARAM    struPlateRecog[MAX_LANEAREA_NUM];
  BYTE                                byRelaLaneDirectionType;
  BYTE                                byLowSpeedLimit;
  BYTE                                byBigCarLowSpeedLimit;
  BYTE                                byLowSpeedCapEn;
  BYTE                                byEmergencyCapEn;
  BYTE                                byRes[27];
}NET_ITC_SINGLE_IOSPEED_PARAM,*LPNET_ITC_SINGLE_IOSPEED_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byTrigCoil1
第一线圈关联IO：0- IO1，1- IO2，2- IO3，3- IO4，4- IO5，5- IO6
byCoil1IOStatus
第一线圈IO输入口状态：0- 下降沿（默认），1- 上升沿，2- 上升沿和下降沿，3- 高电平，4- 低电平
byTrigCoil2
第二线圈关联IO：0- IO1，1- IO2，2- IO3，3- IO4，4- IO5，5- IO6
byCoil2IOStatus
第二线圈IO输入口状态：0- 下降沿（默认），1- 上升沿，2- 上升沿和下降沿，3- 高电平，4- 低电平
byRelatedDriveWay
关联的车道号
byTimeOut
超时时间（默认10），单位：s
byRelatedIOOutEx
关联的IO输出口，按位表示输出口号：bit0表示IO输出口1，bit1表示IO输出口2，以此类推。
值：0-不关联，1-关联，最多支持关联到8个IO输出口(兼容byRelatedIOOut字段)
dwDistance
线圈距离（默认1000），单位：厘米
byCapSpeed
起拍速度（默认30），单位：km/h
bySpeedLimit
限速值（默认60），单位：km/h
bySpeedCapEn
是否启用超速抓拍：0- 否，1- 是
bySnapTimes1
线圈1抓拍次数（默认不抓拍）：0- 不抓拍，非0- 连拍次数，最大5次
bySnapTimes2
线圈2抓拍次数（默认1），0- 不抓拍，非0- 连拍次数，最大5次
byBigCarSpeedLimit
大车车速限制值
byBigCarSignSpeed
大车标志限速，单位：km/h
byIntervalType
间隔类型（默认按时间），0- 时间起效，1- 距离起效
wInterval1
线圈1连拍间隔时间（单位：ms）或连拍间隔距离（单位：分米）。 当byIntervalType为0时，表示间隔时间，当byIntervalType为1时，表示距离
wInterval2
线圈2连拍间隔时间（单位：ms）或连拍间隔距离（单位：分米）。 当byIntervalType为0时，表示间隔时间，当byIntervalType为1时，表示距离
byRelatedIOOut
关联的IO输出口(可以同时关联多个)，数组0表示IO输出口1，数组1表示IO输出口2，以此类推，其参数值：0- 不关联，1- 关联
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
byLaneType
车道类型：0- 未配置，1- 高速公路，2- 城市快速路，0xff-其他道路
byCarSignSpeed
小车标志限速，单位：km/h
byUseageType
车道用途类型，定义详见ITC_LANE_USEAGE_TYPE
struPlateRecog
牌识参数(可用牌识区域1个，保留一个)
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE
byLowSpeedLimit
小车限低速值，单位：km/h
byBigCarLowSpeedLimit
大车限低速值，单位：km/h
byLowSpeedCapEn
是否启用低速抓拍：0- 否，1- 是
byEmergencyCapEn
是否启用应急车道抓拍：0- 否，1- 是
byRes
保留

See Also

NET_ITC_POST_IOSPEED_PARAM


NET_ITC_SINGLE_IOTL_PARAM

单组IO红绿灯参数结构体。

struct{
  BYTE                                byEnable;
  BYTE                                byLightIO;
  BYTE                                byTrafficLight;
  BYTE                                byTrigIO;
  BYTE                                byTrigIOStatus;
  BYTE                                byRelatedDriveWay;
  BYTE                                byRecordEnable;
  BYTE                                byRecordType;
  BYTE                                byPreRecordTime;
  BYTE                                byRecordDelayTime;
  BYTE                                byRecordTimeOut;
  BYTE                                byRedSnapTimes;
  BYTE                                byGreenSnapTimes;
  BYTE                                byRelatedIOOutEx;
  BYTE                                byRes1;
  BYTE                                byIntervalType;
  WORD                                wRedInterval[MAX_INTERVAL_NUM];
  WORD                                wGreenInterval[MAX_INTERVAL_NUM];
  BYTE                                byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                                byFlashMode;
  BYTE                                byRes2[3];
  NET_ITC_PLATE_RECOG_REGION_PARAM    struPlateRecog[MAX_LANEAREA_NUM];
  BYTE                                byRes[32];
}NET_ITC_SINGLE_IOTL_PARAM,*LPNET_ITC_SINGLE_IOTL_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byLightIO
红绿灯IO：0- IO1，1- IO2，2- IO3，3- IO4，4- IO5，5- IO6
byTrafficLight
红绿灯有效状态：0- 高电平红灯，低电平绿灯；1- 高电平绿灯，低电平红灯
byTrigIO
触发的IO号：0- IO1，1- IO2，2- IO3，3- IO4，4- IO5，5- IO6
byTrigIOStatus
触发IO口的状态（默认0）：0- 下降沿，1- 上升沿，2- 上升沿和下降沿，3- 高电平，4- 低电平
byRelatedDriveWay
关联的车道号
byRecordEnable
闯红灯周期录像标志：0- 不录像，1- 录像
byRecordType
闯红灯录像类型：0- 预录，1- 延时录像
byPreRecordTime
闯红灯录像片段预录时间（默认0），单位：秒
byRecordDelayTime
闯红灯录像片段延时时间（默认0），单位：秒
byRecordTimeOut
闯红灯周期录像超时时间，单位：秒
byRedSnapTimes
红灯抓拍次数：0- 不抓拍；非0- 连拍次数，最大5次
byGreenSnapTimes
绿灯抓拍次数：0- 不抓拍；非0- 连拍次数，最大5次
byRelatedIOOutEx
关联的IO输出口，按位表示输出口号：bit0表示IO输出口1，bit1表示IO输出口2，以此类推。
值：0-不关联，1-关联，最多支持关联到8个IO输出口(兼容byRelatedIOOut字段)
byRes1
保留
byIntervalType
间隔类型（默认按时间）：0- 时间起效，1- 距离起效
wRedInterval
红灯连拍间隔时间（单位：ms）或连拍间隔距离（单位：分米）。当byIntervalType为0时，表示间隔时间，当byIntervalType为1时，表示距离高
wGreenInterval
绿灯连拍间隔时间（单位：ms）或连拍间隔距离（单位：分米）。当byIntervalType为0时，表示间隔时间，当byIntervalType为1时，表示距离
byRelatedIOOut
关联的IO输出口，可以同时关联多个
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
byRes2
保留
struPlateRecog
牌识区域参数
byRes
保留

See Also

NET_ITC_EPOLICE_IOTL_PARAM


NET_ITC_SINGLE_RS485_LIGHT_PARAM

单个485接入信号灯参数结构体。

struct{
  BYTE    byLightType;
  BYTE    byRelatedLightChan;
  BYTE    byInputLight;
  BYTE    byRelatedYLightChan;
  BYTE    byRes[16];
}NET_ITC_SINGLE_RS485_LIGHT_PARAM, *LPNET_ITC_SINGLE_RS485_LIGHT_PARAM;

Members

byLightType
交通灯导向类型：0- 左转灯，1- 直行灯，2- 右转灯
byRelatedLightChan
红灯关联的红绿灯检测器通道号，0~16，0表示无（即没有该种类型的灯）
byInputLight
接入的信号灯类型：0- 接红灯，1- 接绿灯，智能交通摄像机不使用
byRelatedYLightChan
黄灯关联的红绿灯检测器通道号，0~16，0表示无（即没有该种类型的灯）
byRes
保留，置为0

Remarks

如路口信号灯有两个：左转+直行，右转。需要配置三个数组表示，第一个数组配左转灯，关联检测器通道1；第二组配直行，关联通道1；第三组配右转，关联通道2。

See Also

NET_ITC_RS485_LIGHT_PARAM


NET_ITC_SINGLE_TRIGGERCFG

单个触发参数结构体。

struct{
  BYTE                           byEnable;
  BYTE                           byRes1[3];
  DWORD                          dwTriggerType;
  NET_ITC_TRIGGER_PARAM_UNION    uTriggerParam;
  BYTE                           byRes[64];
}NET_ITC_SINGLE_TRIGGERCFG,*LPNET_ITC_SINGLE_TRIGGERCFG;

Members

byEnable
启用状态：0- 不启用，1- 启用
byRes1
保留
dwTriggerType
触发类型，详见ITC_TRIGGERMODE_TYPE
uTriggerParam
触发参数
byRes
保留

Remarks

  • 设备是否支持触发参数配置或者支持的参数能力，可以通过设备能力集进行判断，对应取抓拍机和智能终端能力集(ITDeviceAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<triggerMode>。

See Also

NET_ITC_TRIGGERCFG


NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM

单组视频检测交通信号灯参数结构体。

struct{
  BYTE             byLightNum;
  BYTE             byStraightLight;
  BYTE             byLeftLight;
  BYTE             byRightLight;
  BYTE             byRedLight;
  BYTE             byGreenLight;
  BYTE             byYellowLight;
  BYTE             byYellowLightTime;
  NET_POS_PARAM    struLightRect;
  BYTE             byRes[24];
}NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM, *LPNET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM;

Members

byLightNum
交通灯个数
byStraightLight
是否有直行标志灯：0- 否，1- 是
byLeftLight
是否有左转标志灯：0- 否，1- 是
byRightLight
是否有右转标志灯：0- 否，1- 是
byRedLight
是否有红灯：0- 否，1- 是
byGreenLight
是否有绿灯：0- 否，1- 是
byYellowLight
是否有黄灯：0- 否，1- 是
byYellowLightTime
黄灯持续时间（用于修正红绿灯识别偏差），取值范围：0～10，单位：s
struLightRect
交通灯区域
byRes
保留，置为0

See Also

NET_ITC_VIDEO_DETECT_LIGHT_PARAM


NET_ITC_SINGLEIO_PARAM

单IO参数结构体。

struct{
  BYTE                                 byDefaultStatus;
  BYTE                                 byRelatedDriveWay;
  BYTE                                 bySnapTimes;
  BYTE                                 byRelatedIOOutEx;
  NET_ITC_INTERVAL_PARAM               struInterval;
  BYTE                                 byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                                 byFlashMode;
  BYTE                                 byEnable;
  BYTE                                 byUseageType;
  BYTE                                 byEmergencyCapEn;
  NET_ITC_PLATE_RECOG_REGION_PARAM     struPlateRecog[MAX_LANEAREA_NUM];
  BYTE                                 byRes[32];
}NET_ITC_SINGLEIO_PARAM,*LPNET_ITC_SINGLEIO_PARAM;

Members

byDefaultStatus
IO触发默认状态：0- 低电平，1- 高电平
byRelatedDriveWay
关联的车道号
bySnapTimes
抓拍次数（默认1）：0- 不抓拍；非0- 连拍次数，最大5
byRelatedIOOutEx
关联的IO输出口，按位表示输出口号：bit0表示IO输出口1，bit1表示IO输出口2，以此类推。
值：0-不关联，1-关联，最多支持关联到8个IO输出口(兼容byRelatedIOOut字段)
struInterval
抓拍间隔参数
byRelatedIOOut
关联的IO输出口，可以同时关联多个
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
byEnable
单IO使能标志：0- 不启用，1- 启用
byUseageType
车道用途类型，具体定义如下：
enum _ITC_LANE_USEAGE_TYPE_{
  ITC_LANE_USEAGE_UNKNOW = 0,
  ITC_LANE_CARRIAGEWAY   = 1,
  ITC_LANE_BUS           = 2,
  ITC_LANE_FAST          = 3,
  ITC_LANE_SLOW          = 4,
  ITC_LANE_MOTOR         = 5,
  ITC_LANE_NONMOTOR      = 6,
  ITC_LANE_REVERSE_LANE  = 7,
  ITC_LANE_BAN_TRUCKS    = 8,
  ITC_LANE_MIX           = 9,
  ITC_LANE_EMERGENCY     = 10
}ITC_LANE_USEAGE_TYPE
ITC_LANE_USEAGE_UNKNOW
未知
ITC_LANE_CARRIAGEWAY
普通车道
ITC_LANE_BUS
公交车专用道
ITC_LANE_FAST
快车道
ITC_LANE_SLOW
慢车道
ITC_LANE_MOTOR
摩托车道
ITC_LANE_NONMOTOR
非机动车道
ITC_LANE_REVERSE_LANE
反向车道
ITC_LANE_BAN_TRUCKS
禁止货车车道
ITC_LANE_MIX
混合车道
ITC_LANE_EMERGENCY
应急车道
byEmergencyCapEn
是否启用应急车道抓拍：0- 否，1- 是
struPlateRecog
牌识区域参数
byRes
保留

See Also

NET_ITC_POST_SINGLEIO_PARAM


NET_ITC_SNAPMODE_PARAM

抓拍模式参数结构体。

struct{
  BYTE    byVehicleCapMode;
  BYTE    byNoVehicleCapMode;
  BYTE    byPasserCapMode;
  BYTE    byRes[29];
}NET_ITC_SNAPMODE_PARAM,*LPNET_ITC_SNAPMODE_PARAM;

Members

byVehicleCapMode
机动车抓拍模式：0-频闪模式，1-爆闪模式
byNoVehicleCapMode
非机动车抓拍模式：0-频闪模式，1-爆闪模式
byPasserCapMode
行人抓拍模式：0-频闪模式，1-爆闪模式
byRes
保留

See Also

NET_ITC_POST_HVT_PARAM


NET_ITC_STATUS_DETECT_RESULT

实时状态检测结果结构体。

struct{
  ITC_STATUS_DETECT_TYPE    dwStatusType;
  NET_ITC_STATUS_UNION      uStatusParam;
  DWORD                     dwHoldTime;
  BYTE                      byRes[32];
}NET_ITC_STATUS_DETECT_RESULT,*LPNET_ITC_STATUS_DETECT_RESULT;

Members

dwStatusType
状态检测类型，定义如下所示：
enum _ITC_STATUS_DETECT_TYPE_{
  ITC_STATUS_DETECT_NULL = 0,
  ITC_STATUS_DETECT_TRIGGERIO,
  ITC_STATUS_DETECT_FLASHOUT,
  ITC_STATUS_DETECT_RS485,
  ITC_STATUS_DETECT_TRIGGERTYPE,
  ITC_STATUS_DETECT_TRAFFICLIGHT_COLOR,
  ITC_STATUS_DETECT_TRAFFICLIGHT_TURN
}ITC_STATUS_DETECT_TYPE
ITC_STATUS_DETECT_NULL
未知
ITC_STATUS_DETECT_TRIGGERIO
触发IO
ITC_STATUS_DETECT_FLASHOUT
同步输出
ITC_STATUS_DETECT_RS485
RS485
ITC_STATUS_DETECT_TRIGGERTYPE
触发类型（保留）
ITC_STATUS_DETECT_TRAFFICLIGHT_COLOR
交通灯（区分颜色）
ITC_STATUS_DETECT_TRAFFICLIGHT_TURN
交通灯（区分转向）
uStatusParam
状态检测结果
dwHoldTime
灯亮持续时间（保留），单位：ms
byRes
保留

See Also

NET_DVR_StartListen_V30


NET_ITC_STATUS_UNION

状态检测结果联合体。

union{
  BYTE                           uLen[48];
  NET_ITC_TRIGGERIO_INFO         struTrigIO;
  NET_ITC_FLASHOUT_INFO          struFlashOut;
  NET_ITC_SERIAL_CHECKINFO       struSerial;
  NET_ITC_TRIGGERTYPE_INFO       struTrigType;
  NET_ITC_TRAFFIC_LIGHT_COLOR    struTrafficLightColor;
  NET_ITC_TRAFFIC_LIGHT_TURN     struTrafficLightTurn;
}NET_ITC_STATUS_UNION,*LPNET_ITC_STATUS_UNION;

Members

uLen
联合体的最大长度
struTrigIO
触发IO口号
struFlashOut
同步输出
struSerial
串口
struTrigType
触发类型（保留）
struTrafficLightColor
交通灯（区分颜色）
struTrafficLightTurn
交通灯（区分转向）

See Also

NET_ITC_STATUS_DETECT_RESULT


NET_ITC_TRAFFIC_LIGHT_COLOR

视频电警交通灯颜色参数结构体。

struct{
  BYTE    byLeftLight;
  BYTE    byRightLight;
  BYTE    byStraightLight;
  BYTE    byRes[45];
}NET_ITC_TRAFFIC_LIGHT_COLOR,*LPNET_ITC_TRAFFIC_LIGHT_COLOR;

Members

byLeftLight
左转灯：0- 无效，1- 红灯，2- 绿灯 3- 黄灯，4- 灯都不亮
byRightLight
右转灯：0- 无效，1- 红灯，2- 绿灯，3- 黄灯，4- 灯都不亮
byStraightLight
直行灯：0- 无效，1- 红灯，2- 绿灯，3- 黄灯，4- 灯都不亮
byRes
保留

See Also

NET_ITC_STATUS_UNION


NET_ITC_TRAFFIC_LIGHT_PARAM

交通信号灯参数结构体。

struct{
  BYTE                               bySource;
  BYTE                               byRes1[3];
  NET_ITC_LIGHT_ACCESSPARAM_UNION    struLightAccess;
  BYTE                               byRes[32];
}NET_ITC_TRAFFIC_LIGHT_PARAM, *LPNET_ITC_TRAFFIC_LIGHT_PARAM;

Members

bySource
交通信号灯接入源：0- IO接入，1- RS485接入，2- 视频检测
byRes1
保留，置为0
struLightAccess
信号灯接入参数
byRes
保留，置为0

See Also

NET_ITC_VIDEO_EPOLICE_PARAM NET_ITC_REDLIGHT_PEDESTRIAN_PARAM


NET_ITC_TRAFFIC_LIGHT_TURN

交通灯转向参数结构体。

struct{
  BYTE    byLightType[MAX_ITC_LANE_NUM];
  BYTE    byRes[42];
}NET_ITC_TRAFFIC_LIGHT_TURN,*LPNET_ITC_TRAFFIC_LIGHT_TURN;

Members

byLightType
每一位数组对应一个车道，数组的值：0- 无效，1- 红灯，2- 绿灯，3- 黄灯，4- 灯都不亮
byRes
保留

See Also

NET_ITC_STATUS_UNION


NET_ITC_TRIGGER_PARAM_UNION

触发参数联合体。

union{
  DWORD                                uLen[1070];
  NET_ITC_POST_IOSPEED_PARAM           struIOSpeed;
  NET_ITC_POST_SINGLEIO_PARAM          struSingleIO;
  NET_ITC_POST_RS485_PARAM             struPostRs485;
  NET_ITC_POST_RS485_RADAR_PARAM       struPostRadar;
  NET_ITC_POST_VTCOIL_PARAM            struVtCoil;
  NET_ITC_POST_HVT_PARAM_V50           struHvtV50;
  NET_ITC_POST_MPR_PARAM               struPostMpr;
  NET_ITC_POST_PRS_PARAM               struPostPrs;
  NET_ITC_EPOLICE_IOTL_PARAM           struIOTL;
  NET_ITC_EPOLICE_RS485_PARAM          struEpoliceRs485;
  NET_ITC_EPOLICE_RS485_PARAM          struPERs485;
  NET_DVR_VIA_VTCOIL_PARAM             struViaVtCoil;
  NET_ITC_POST_IMT_PARAM               struPostImt;
  NET_IPC_POST_HVT_PARAM               struIpcHvt;
  NET_ITC_POST_MOBILE_PARAM            struPostMobile;
  NET_ITC_REDLIGHT_PEDESTRIAN_PARAM    struRedLightPed;
  NET_ITC_NOCOMITY_PEDESTRIAN_PARAM    struNoComityPed;
}NET_ITC_TRIGGER_PARAM_UNION,*LPNET_ITC_TRIGGER_PARAM_UNION;

Members

uLen
联合体长度，1070*4共4280字节
struIOSpeed
（卡口）IO测速参数，触发类型为ITC_POST_IOSPEED_TYPE时有效
struSingleIO
（卡口）单IO参数，触发类型为ITC_POST_SINGLEIO_TYPE时有效
struPostRs485
（卡口）RS485车检器参数，触发类型为ITC_POST_RS485_TYPE时有效
struPostRadar
（卡口）RS485雷达参数，触发类型为ITC_POST_RS485_RADAR_TYPE时有效
struVtCoil
（卡口）虚拟线圈参数，触发类型为ITC_POST_VIRTUALCOIL_TYPE时有效
struHvtV50
（卡口）混行卡口视频触发V50参数，触发类型为ITC_POST_HVT_TYPE_V50时有效
struPostMpr
（卡口）多帧检测触发参数（MPR），触发类型为ITC_POST_MPR_TYPE时有效
struPostPrs
（PRS）视频检测触发，触发类型为ITC_POST_PRS_TYPE时有效
struIOTL
（电警）IO红绿灯参数，触发类型为ITC_EPOLICE_IO_TRAFFICLIGHTS_TYPE时有效
struEpoliceRs485
（电警）RS485车检器触发参数，触发类型为ITC_EPOLICE_RS485_TYPE时有效
struPERs485
（卡式电警）RS485车检器触发参数，触发类型为ITC_PE_RS485_TYPE时有效
struViaVtCoil
（VIA）视频检测参数，触发类型为ITC_VIA_VIRTUALCOIL_TYPE时有效
struPostImt
智慧监控配置参数，触发类型为ITC_POST_IMT_TYPE时有效
struIpcHvt
（IPC）混行卡口参数，触发类型为IPC_POST_HVT_TYPE时有效
struPostMobile
移动交通触发模式，触发类型为ITC_POST_MOBILE_TYPE时有效
struRedLightPed
行人闯红灯触发模式，触发类型为ITC_REDLIGHT_PEDESTRIAN_TYPE时有效
struNoComityPed
不礼让行人触发参数，触发类型为ITC_NOCOMITY_PEDESTRIAN_TYPE时有效

See Also

NET_ITC_SINGLE_TRIGGERCFG


NET_ITC_TRIGGERCFG

触发参数结构体。

struct{
  DWORD                        dwSize;
  NET_ITC_SINGLE_TRIGGERCFG    struTriggerParam;
  BYTE                         byRes[32];
}NET_ITC_TRIGGERCFG,*LPNET_ITC_TRIGGERCFG;

Members

dwSize
结构体大小
struTriggerParam
单个触发参数
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_TRIGGERIO_INFO

触发IO口参数结构体。

struct{
  BYTE     byTriggerIOIndex[MAX_IOIN_NUM];
  BYTE     byRes[40];
}NET_ITC_TRIGGERIO_INFO,*LPNET_ITC_TRIGGERIO_INFO;

Members

byTriggerIOIndex
触发IO号
byRes
保留

See Also

NET_ITC_STATUS_UNION


NET_ITC_TRIGGERMODE_ABILITY

触发模式能力结构体。

struct{
  DWORD    dwSize;
  DWORD    dwTriggerType;
  BYTE     byRes[16];
}NET_ITC_TRIGGERMODE_ABILITY,*LPNET_ITC_TRIGGERMODE_ABILITY;

Members

dwSize
结构体大小
dwTriggerType
触发类型，按位表示，定义详见ITC_TRIGGERMODE_TYPE
byRes
保留

See Also

NET_DVR_GetDeviceAbility


NET_ITC_TRIGGERTYPE_INFO

触发类型参数结构体。

struct{
  BYTE     byTrigTypeIndex;
  BYTE     byRes[47];
}NET_ITC_TRIGGERTYPE_INFO,*LPNET_ITC_TRIGGERTYPE_INFO;

Members

byTrigTypeIndex
触发类型值
byRes
保留

See Also

NET_ITC_STATUS_UNION


NET_ITC_VIDEO_DETECT_LIGHT_PARAM

视频检测交通信号灯参数结构体。

struct{
  NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM    struTrafficLight[MAX_VIDEO_DETECT_LIGHT_NUM];
  BYTE                                       byRes[8];
}NET_ITC_VIDEO_DETECT_LIGHT_PARAM, *LPNET_ITC_VIDEO_DETECT_LIGHT_PARAM;

Members

struRS485Light
单个视频检测信号灯参数
byRes
保留，置为0

See Also

NET_ITC_LIGHT_ACCESSPARAM_UNION


NET_ITC_VIDEO_EPOLICE_PARAM

视频电警触发参数结构体。

struct{
  BYTE                                byEnable;
  BYTE                                byLaneNum;
  BYTE                                byLogicJudge;
  BYTE                                byRes1;
  NET_ITC_PLATE_RECOG_PARAM           struPlateRecog;
  NET_ITC_TRAFFIC_LIGHT_PARAM         struTrafficLight;
  NET_ITC_LANE_VIDEO_EPOLICE_PARAM    struLaneParam[MAX_ITC_LANE_NUM];
  NET_ITC_LINE                        struLaneBoundaryLine;
  NET_ITC_LINE                        struLeftLine;
  NET_ITC_LINE                        struRightLine;
  NET_ITC_LINE                        struTopZebraLine;
  NET_ITC_LINE                        struBotZebraLine;
  BYTE                                byRes[32];
}NET_ITC_VIDEO_EPOLICE_PARAM,*LPNET_ITC_VIDEO_EPOLICE_PARAM;

Members

byEnable
是否启用：0- 不启用，1- 启用
byLaneNum
识别的车道个数，1~6
byLogicJudge
闯红灯违规判断逻辑：0- 按方向，1- 按车道
byRes1
保留
struPlateRecog
牌识参数
struTrafficLight
交通信号灯参数
struLaneParam
单车道参数
struLaneBoundaryLine
车道边界线（最右边车道的边界线）
struLeftLine
左转弯分界线
struRightLine
右转弯分界线
struTopZebraLine
上部斑马线
struBotZebraLine
下部斑马线
byRes
保留

See Also

NET_ITC_VIDEO_TRIGGER_PARAM_UNION


NET_ITC_VIDEO_TRIGGER_COND

视频触发条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwTriggerMode;
  BYTE     byRes[16];
}NET_ITC_VIDEO_TRIGGER_COND, *LPNET_ITC_VIDEO_TRIGGER_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwTriggerMode
视频触发模式类型，详见ITC_TRIGGERMODE_TYPE
byRes
保留，置为0

Remarks

dwTriggerMode为ITC_VIDEO_EPOLICE_TYPE时有效。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_VIDEO_TRIGGER_PARAM

（卡式电警）视频触发参数结构体。

struct{
  DWORD                                dwSize;
  DWORD                                dwMode;
  NET_ITC_VIDEO_TRIGGER_PARAM_UNION    uVideoTrigger;
  BYTE                                 byRes[32];
}NET_ITC_VIDEO_TRIGGER_PARAM, *LPNET_ITC_VIDEO_TRIGGER_PARAM;

Members

dwSize
结构体大小
dwMode
触发模式，详见ITC_TRIGGERMODE_TYPE
uVideoTrigger
触发模式参数
byRes
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITC_VIDEO_TRIGGER_PARAM_UNION

（卡式电警）视频电警触发参数联合体。

union {
  DWORD                          uLen[1150];
  NET_ITC_VIDEO_EPOLICE_PARAM    struVideoEP;
}NET_ITC_VIDEO_TRIGGER_PARAM_UNION, *LPNET_ITC_VIDEO_TRIGGER_PARAM_UNION;

Members

uLen
联合体大小
struVideoEP
视频电警参数

See Also

NET_ITC_VIDEO_TRIGGER_PARAM


NET_ITC_VIOLATION_DETECT_LINE

违规检测线参数结构体。

struct{
  NET_ITC_LINE    struLaneLine;
  NET_ITC_LINE    struStopLine;
  NET_ITC_LINE    struRedLightLine;
  NET_ITC_LINE    struCancelLine;
  NET_ITC_LINE    struWaitLine;
  NET_ITC_LINE    struRes[8];
}NET_ITC_VIOLATION_DETECT_LINE, *LPNET_ITC_VIOLATION_DETECT_LINE;

Members

struLaneLine
车道线参数
struStopLine
停止线参数
struRedLightLine
闯红灯触发线参数
struCancelLine
直行触发位置取消线
struWaitLine
待行区停止线参数
struRes
保留，置为0

See Also

闯红灯触发线是车辆在红灯状态下行驶过该线则判断为闯红灯，一般图像中闯红灯触发线在直行触发线的下方。
直行触发位置取消线是当检测到车辆经过该线后就判定为直行，不会再做左右转的判断，用于车辆不按车道行驶的违章判断。

See Also

NET_ITC_LANE_VIDEO_EPOLICE_PARAM


NET_ITC_VIOLATION_DETECT_PARAM

违规检测参数结构体。

struct{
  DWORD    dwVioDetectType;
  BYTE     byDriveLineSnapTimes;
  BYTE     byReverseSnapTimes;
  WORD     wStayTime;
  BYTE     byNonDriveSnapTimes;
  BYTE     byChangeLaneTimes;
  BYTE     bybanTimes;
  BYTE     byDriveLineSnapSen;
  WORD     wSnapPosFixPixel;
  BYTE     bySpeedTimes;
  BYTE     byTurnAroundEnable;
  BYTE     byThirdPlateRecogTime;
  BYTE     byPostSnapTimes;
  BYTE     byRes1[18];
  WORD     wStopLineDis;
  BYTE     byRes[14];
}NET_ITC_VIOLATION_DETECT_PARAM, *LPNET_ITC_VIOLATION_DETECT_PARAM;

Members

dwVioDetectType
违规检测类型，按位表示，其值：0- 不启用，1- 启用，类型详见ITC_VIOLATION_DETECT_TYPE
byDriveLineSnapTimes
压车道线抓拍张数，2~3
byReverseSnapTimes
逆行抓拍张数，2~3
wStayTime
机占非停留时间（该时间后抓拍），单位：s
byNonDriveSnapTimes
机占非抓拍张数，2~3
byChangeLaneTimes
违法变道抓拍张数，2~3
bybanTimes
违法禁令抓拍张数，2~3
byDriveLineSnapSen
压线灵敏度，取值范围：0~100
wSnapPosFixPixel
第2、3张抓拍位置最小偏移(违反信号灯时起效)，单位：像素
bySpeedTimes
违法超速抓拍张数，2~3
byTurnAroundEnable
违章掉头使能：0- 关闭，1- 开启
byThirdPlateRecogTime
第三张牌识时间，取值范围：0~180，单位：s
byPostSnapTimes
卡口抓拍张数，1~2张
byRes1
保留，置为0
wStopLineDis
电警第2张违规图片与停止线的最短距离，取值范围：[0,300]，单位：像素
byRes
保留，置为0

See Also

NET_ITC_LANE_VIDEO_EPOLICE_PARAM


NET_ITC_VTCOIL_INFO

虚拟线圈结构体。

struct{
  NET_VCA_RECT            struLaneRect;
  BYTE                    byTrigFlag;
  BYTE                    byTrigSensitive;
  BYTE                    byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                    byFlashMode;
  BYTE                    byLaneType;
  BYTE                    byEnableRadar;
  NET_ITC_VTLANE_PARAM    struLane;
  BYTE                    byUseageType;
  BYTE                    byCarDriveDirect;
  BYTE                    byRes[30];
}NET_ITC_VTCOIL_INFO,*LPNET_ITC_VTCOIL_INFO;

Members

struLaneRect
虚拟线圈区域
byTrigFlag
触发标志：0- 车头触发，1- 车尾触发，2- 车头/车尾都触发
byTrigSensitive
触发灵敏度：1~100
byRelatedIOOut
关联的IO输出口(可以同时关联多个)，数组0表示IO输出口1，数组1表示IO输出口2，以此类推，0-不关联，1-关联
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
byLaneType
车道类型：0- 未配置，1- 高速公路，2- 城市快速路，0xff- 其他道路
byEnableRadar
是否启用雷达测速：0- 否，1- 是
struLane
关联的车道参数
byUseageType
车道用途类型，具体定义如下（目前仅1和8两种类型有效）：
enum _ITC_LANE_USEAGE_TYPE_{
  ITC_LANE_USEAGE_UNKNOW = 0,
  ITC_LANE_CARRIAGEWAY   = 1,
  ITC_LANE_BUS           = 2,
  ITC_LANE_FAST          = 3,
  ITC_LANE_SLOW          = 4,
  ITC_LANE_MOTOR         = 5,
  ITC_LANE_NONMOTOR      = 6,
  ITC_LANE_REVERSE_LANE  = 7,
  ITC_LANE_BAN_TRUCKS    = 8,
  ITC_LANE_MIX           = 9,
  ITC_LANE_EMERGENCY     = 10
}ITC_LANE_USEAGE_TYPE
ITC_LANE_USEAGE_UNKNOW
未知
ITC_LANE_CARRIAGEWAY
普通车道
ITC_LANE_BUS
公交车专用道
ITC_LANE_FAST
快车道
ITC_LANE_SLOW
慢车道
ITC_LANE_MOTOR
摩托车道
ITC_LANE_NONMOTOR
非机动车道
ITC_LANE_REVERSE_LANE
反向车道
ITC_LANE_BAN_TRUCKS
禁止货车车道
ITC_LANE_MIX
混合车道
ITC_LANE_EMERGENCY
应急车道
byCarDriveDirect
车辆行驶方向，具体定义如下：
enum _ITC_LANE_CAR_DRIVE_DIRECT_{
  ITC_LANE_DRIVE_UNKNOW      = 0,
  ITC_LANE_DRIVE_UP_TO_DOWN  = 1,
  ITC_LANE_DRIVE_DOWN_TO_UP  = 2
}ITC_LANE_CAR_DRIVE_DIRECT
ITC_LANE_DRIVE_UNKNOW
未知
ITC_LANE_DRIVE_UP_TO_DOWN
从上往下行驶(下行)
ITC_LANE_DRIVE_DOWN_TO_UP
从下往上行驶(上行)
byRes
保留

See Also

NET_ITC_POST_VTCOIL_PARAM


NET_ITC_VTLANE_PARAM

虚拟线圈触发模式车道参数结构体。

struct{
  BYTE                                byRelatedDriveWay;
  BYTE                                bySpeedCapEn;
  BYTE                                bySignSpeed;
  BYTE                                bySpeedLimit;
  BYTE                                bySnapTimes;
  BYTE                                byBigCarSignSpeed;
  BYTE                                byBigCarSpeedLimit;
  BYTE                                byRelatedIOOutEx;
  NET_ITC_INTERVAL_PARAM              struInterval;
  BYTE                                byRelatedIOOut[MAX_IOOUT_NUM];
  BYTE                                byFlashMode;
  BYTE                                byLowSpeedLimit;
  BYTE                                byBigCarLowSpeedLimit;
  BYTE                                byRelaLaneDirectionType;
  NET_ITC_PLATE_RECOG_REGION_PARAM    struPlateRecog[MAX_LANEAREA_NUM];
  NET_VCA_LINE                        struLine;
}NET_ITC_VTLANE_PARAM,*LPNET_ITC_VTLANE_PARAM;

Members

byRelatedDriveWay
关联的车道号
bySpeedCapEn
是否启用超速抓拍：0- 否，1- 是
bySignSpeed
标志限速，单位：km/h
bySpeedLimit
限速值，单位：km/h
bySnapTimes
抓拍次数（默认1）：0- 不抓拍；非0- 连拍次数，最大5
byBigCarSignSpeed
大车标志限速，单位km/h
byBigCarSpeedLimit
大车限速值，单位km/h
byRelatedIOOutEx
关联的IO输出口，按位表示输出口号：bit0表示IO输出口1，bit1表示IO输出口2，以此类推。
值：0-不关联，1-关联，最多支持关联到8个IO输出口(兼容byRelatedIOOut字段)
struInterval
抓拍间隔参数
byRelatedIOOut
关联的IO输出口，可以同时关联多个
byFlashMode
闪光灯闪烁模式：0- 同时闪，1- 轮流闪
byLowSpeedLimit
小车低速限速，单位：km/h
byBigCarLowSpeedLimit
大车低速限速，单位：km/h
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE
struPlateRecog
车道牌识参数
struLine
车道线

See Also

NET_ITC_VTCOIL_INFO


NET_ITS_BASEINFO

终端基本信息结构体

struct{
 DWORD    dwSize;
 BYTE     byMainVer[VERSION_LEN];
 BYTE     byMprVer[VERSION_LEN];
 BYTE     byBvtVer[VERSION_LEN];
 BYTE     byLptVer[VERSION_LEN];
 BYTE     byTvdVer[VERSION_LEN];
 BYTE     byTldVer[VERSION_LEN];
 BYTE     byRes[252];
}NET_ITS_BASEINFO,*LPNET_ITS_BASEINFO;

Members

dwSize
结构体大小
byMainVer
算法主流程版本
byMprVer
多帧识别库版本
byBvtVer
背向视频库版本
byLptVer
视频跟踪库版本
byTvdVer
违章检测库版本
byTldVer
信号灯检测库版本
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig


NET_ITS_ECT_BLOCKLIST

非授权名单报警信息结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwChannel;
  BYTE                  bylogicalLaneNo;
  BYTE                  byRes1[3];
  BYTE                  byLaneName[NAME_LEN];
  NET_DVR_PLATE_INFO    struPlateInfo;
  BYTE                  byRes2[256];
}NET_ITS_ECT_BLOCKLIST, *LPNET_ITS_ECT_BLOCKLIST;

Members

dwSize
结构体大小
dwChannel
通道号
bylogicalLaneNo
逻辑车道号
byRes1
保留，置为0
byLaneName
车道名称
struPlateInfo
车牌信息结构
byRes2
保留，置为0

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_ITS_ECT_CHANNELSTATE

通道状态信息结构体。

struct{
  DWORD            dwSize;
  BYTE             byRecordStatic;
  BYTE             bySignalStatic;
  BYTE             byHardwareStatic;
  BYTE             byChannelArmState;
  DWORD            dwChannel;
  DWORD            dwBitRate;
  DWORD            dwLinkNum;
  NET_DVR_IPADDR   struClientIP[MAX_LINK];
  DWORD            dwIPLinkNum;
  BYTE             byExceedMaxLink;
  BYTE             byRes[139];
}NET_ITS_ECT_CHANNELSTATE,*LPNET_ITS_ECT_CHANNELSTATE;

Members

dwSize
结构体大小
byRecordStatic
通道是否在录像：0－不录像；1－录像
bySignalStatic
连接的信号状态：0－正常，1－信号丢失
byHardwareStatic
通道硬件状态：0－正常，1－异常（例如DSP异常）
byChannelArmState
接入IPC的布防状态
dwChannel
通道号
dwBitRate
实际码率
dwLinkNum
连接的客户端个数
struClientIP
连接的客户端IP地址
dwIPLinkNum
如果该通道为IP接入，表示IP接入当前的连接数
byExceedMaxLink
是否超出了单路128路连接数 0 - 未超出, 1-超出
byRes
保留，置为0

See Also

NET_DVR_GetNextRemoteConfig


NET_ITS_ECT_WORKSTATE_COMMAND

出入口终端工作状态获取的条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  BYTE     byRes[256];
}NET_ITS_ECT_WORKSTATE_COMMAND, *LPNET_ITS_ECT_WORKSTATE_COMMAND;

Members

dwSize
结构体大小
dwChannel
获取出入口终端服务器自身的工作状态时，该通道号设为0xffffffff；如果出入口终端服务器级联，获取下级服务器状态时，为IP通道，通道号从33开始。
byRes
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_ITS_ECTWORKSTATE

出入口终端工作状态信息结构体

struct{
 DWORD                        dwSize;
 BYTE                         byDevName[NAME_LEN];
 DWORD                        dwRunTime;
 NET_ITS_TRAFFIC_DATA_INFO    struTrafficDataInfo[2];
 DWORD                        dwMemoryUsage;
 DWORD                        dwCpuUsage;
 DWORD                        dwDevTemperature;
 DWORD                        dwDeviceStatic;
 NET_DVR_DISKSTATE            struHardDiskStatic[MAX_DISKNUM_V30];
 BYTE                         byAlarmInStatic[MAX_ALARMIN_V30];
 BYTE                         byAlarmOutStatic[MAX_ALARMOUT_V30];
 DWORD                        dwLocalDisplay;
 BYTE                         byRes[256];
}NET_ITS_ECTWORKSTATE,*LPNET_ITS_ECTWORKSTATE;

Members

dwSize
结构体大小
byDevName
设备名称
dwRunTime
系统运行时间，单位：s
struTrafficDataInfo
支持两台主机（数据上传配置的主机）
dwMemoryUsage
内存占用率（如果内存占用率为30%，此处填30）
dwCpuUsage
CPU占用率（如果CPU占用率为30%，此处填30）
dwDevTemperature
本机温度
dwDeviceStatic
设备的状态：0-正常；1-CPU占用率太高，超过85%；2-硬件错误，例如串口死掉
struHardDiskStatic
硬盘状态
byAlarmInStatic
报警输入口的状态：0-没有报警，1-有报警
byAlarmOutStatic
报警输出端口的状态：0-没有输出，1-有报警输出
dwLocalDisplay
本地显示状态：0-正常，1-不正常
byRes
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_ITS_GATE_FACE

出入口人脸抓拍结果结构体。

struct{
  DWORD                      dwSize;
  BYTE                       byGroupNum;
  BYTE                       byPicNo;
  BYTE                       byFeaturePicNo;
  BYTE                       byRes;
  WORD                       wLaneid;
  BYTE                       byCamLaneId;
  BYTE                       byDir;
  DWORD                      dwChanIndex;
  BYTE                       byMonitoringSiteID[MAX_ID_LEN];
  BYTE                       byDeviceID[MAX_ID_LEN];
  NET_VCA_FACESNAP_RESULT    struFaceInfo;
  BYTE                       byRes2[256];
}NET_ITS_GATE_FACE, *LPNET_ITS_GATE_FACE;

Members

dwSize
结构体大小
byGroupNum
图片组数量（一辆过车多台相机抓拍的图片组的总数，用于多相机数据匹配，目前该参数值为1）
byPicNo
连拍的图片序号（接收到图片组数量后，表示接收完成；接收超时不足图片组数量时，根据需要保留或删除）
byFeaturePicNo
连拍时取第几张图作为特写图，0xff-表示不取
byRes
保留，置为0
wLaneid
车道号，1～32（索引车道号，可以跳跃）
byCamLaneId
对应相机车道号1～16（相机配置的车道号，可以跳跃，可以相同）
byDir
监测方向：0- 其他，1- 入场，2- 出场
dwChanIndex
通道号
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
struFaceInfo
人脸抓拍数据
byRes2
保留，置为0

See Also

NET_DVR_StartListen_V30


NET_ITS_GATE_LANE_CFG

车道配置结构体。

struct{
  BYTE    byGateSiteID[MAX_ID_LEN];
  BYTE    byGateInfo[MAX_ID_LEN];
  BYTE    byLaneName[NAME_LEN];
  BYTE    byValid;
  BYTE    byCamLaneId;
  WORD    wLaneid;
  BYTE    byRelativeIoNum;
  BYTE    byDirection;
  BYTE    byLprMode;
  BYTE    byCardMode;
  BYTE    byGateLaneMode;
  BYTE    byCharge;
  BYTE    byChargeMode;
  BYTE    byRes1;
  BYTE    byLedRelativeIndex[MAX_INDEX_LED];
  BYTE    byGateRelativeIndex;
  BYTE    byFarRrRelativeIndex;
  BYTE    byRes[82];
}NET_ITS_GATE_LANE_CFG, *LPNET_ITS_GATE_LANE_CFG;

Members

byGateSiteID
出入口编号
byGateInfo
出入口信息描述
byLaneName
车道名称
byValid
是否启用：0- 未启用，1- 启用
byCamLaneId
对应相机车道号，1～16（相机配置的车道号，可以跳跃，可以相同）
wLaneid
车道号，1～32（索引车道号，可以跳跃，逻辑车道）
byRelativeIoNum
逻辑车道号关联的输出口编号
byDirection
方向编号：0- 其他，1- 入场 ，2- 出场，3- 双向
byLprMode
牌识放行配置：0- 全部进，1- 除非授权名单进，2- 授权名单进
byCardMode
卡片放行配置：0- 全部进，1- 除非授权名单进，2- 授权名单进
byGateLaneMode
出入口放行配置模式：0- 全部进，1- 只有牌识匹配放行，2- 只有刷卡匹配放行，3- 牌识或卡片有一个匹配则放行，4- 牌识且卡片同时匹配则放行，5- 全不进
byCharge
是否收费：0-不收费，1-收费
byChargeMode
收费类型：0-车牌收费，1-卡号收费
byRes1
保留，置为0
byLedRelativeIndex
LED索引（每位数组表示一个LED设备，最大支持8个LED设备），取值范围：1~255，紧凑排列，0表示无效(不解析后面的数据)
byGateRelativeIndex
出入口控制机相对索引
byFarRrRelativeIndex
远距离读卡器相对索引
byRes
保留，置为0

See Also

NET_ITS_IPC_CHAN_LANE_CFG


NET_ITS_GATE_VEHICLE

出入口车辆抓拍数据上传结构体。

struct{
  DWORD                   dwSize;
  DWORD                   dwMatchNo;
  BYTE                    byGroupNum;
  BYTE                    byPicNo;
  BYTE                    bySecondCam;
  BYTE                    byRes;
  WORD                    wLaneid;
  BYTE                    byCamLaneId;
  BYTE                    byRes1;
  BYTE                    byAlarmReason[MAX_ALARMREASON_LEN];
  WORD                    wBackList;
  WORD                    wSpeedLimit;
  DWORD                   dwChanIndex;
  NET_DVR_PLATE_INFO      struPlateInfo;
  NET_DVR_VEHICLE_INFO    struVehicleInfo;
  BYTE                    byMonitoringSiteID[MAX_ID_LEN];
  BYTE                    byDeviceID[MAX_ID_LEN];
  BYTE                    byDir;
  BYTE                    byDetectType;
  BYTE                    byRes2[2];
  BYTE                    byCardNo[MAX_ID_LEN];
  DWORD                   dwPicNum;
  NET_ITS_PICTURE_INFO    struPicInfo[4];
  BYTE                    bySwipeTime[MAX_TIME_LEN];
  BYTE                    byRes3[224];
}NET_ITS_GATE_VEHICLE, *LPNET_ITS_GATE_VEHICLE;

Members

dwSize
结构体大小
dwMatchNo
匹配序号，由(车辆序号、数据类型、车道号)组成匹配码，默认：0
byGroupNum
图片组数量（一辆过车多台相机抓拍的图片组的总数，用于多相机数据匹配，目前该参数值为1）
bySecondCam
是否第二相机抓拍（如远近景抓拍的远景相机，或前后抓拍的后相机，特殊项目中会用到，标示前后相机抓拍图片）：0- 否，1- 是
byRes
保留，置为0
wLaneid
车道号，1～32（索引车道号，可以跳跃）
byCamLaneId
对应相机车道号，1～16（相机配置的车道号，可以跳跃，可以相同）
byRes1
保留，置为0
byAlarmReason
自定义报警类型，默认为中文
wBackList
标记为是否报警数据：0- 正常过车数据，1- 非授权名单
wSpeedLimit
限速上限（超速时有效），单位：km/h
dwChanIndex
通道号
struPlateInfo
车牌信息结构
struVehicleInfo
车辆信息
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byDir
监测方向：0- 其它，1- 入场，2- 出场
byDetectType
检测方式：0- 其他，1- 地感触发，2- 视频触发，3- 多帧识别，4- 雷达触发
byRes2
保留，置为0
byCardNo
卡号
dwPicNum
图片数量（与byGroupNum不同，代表本条信息附带的图片数量）
struPicInfo
图片信息，单张回调，最多4张图，由序号区分
bySwipeTime
增加刷卡时间，时间格式为yyyymmddhh24missfff
byRes3
保留，置为0

See Also

NET_DVR_StartListen_V30


NET_ITS_HANDOVER_INFO

出入口交接班数据信息结构体。

struct{
  DWORD    dwSize;
  BYTE     byOperatorName[MAX_OPERATORNAME_LEN];
  BYTE     byOperatorCard[MAX_CARD_LEN];
  BYTE     byStartTime[MAX_TIME_LEN];
  BYTE     byEndTime[MAX_TIME_LEN];
  float    fTotal_Pay;
  DWORD    dwTotal_Records;
  BYTE     byRes[64];
}NET_ITS_HANDOVER_INFO, *LPNET_ITS_HANDOVER_INFO;

Members

dwSize
结构体大小
byOperatorName
操作人员名称
byOperatorCard
操作人员卡号
byStartTime
上班时间，格式为yyyymmddhh24miss
byEndTime
下班时间，格式为yyyymmddhh24miss
fTotal_Pay
本次上班期间总的收费金额，单位：元
dwTotal_Records
本次上班期间总的过车收费的记录条数
byRes
保留，置为0

See Also

NET_DVR_StartListen_V30


NET_ITS_ILLEGAL_INFO

违法代码字符信息结构体。

struct{
  BYTE    byIllegalInfo[MAX_ILLEGAL_LEN];
  BYTE    byRes[256];
}NET_ITS_ILLEGAL_INFO,*LPNET_ITS_ILLEGAL_INFO;

Members

byIllegalInfo
违章类型信息（字符格式）
byRes
保留，置为0

See Also

NET_ITS_PLATE_RESULT


NET_ITS_IMGMERGE_CFG

图片合成配置参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byIsMerge;
  BYTE     byCloseupProportion;
  BYTE     byRes1[2];
  DWORD    dwOneMergeType;
  DWORD    dwTwoMergeType;
  DWORD    dwThreeMergeType;
  DWORD    dwJpegQuality;
  DWORD    dwCloseupIndex;
  DWORD    dwMerageMaxSize;
  WORD     wCloseupDeviation;
  BYTE     byRes[30];
}NET_ITS_IMGMERGE_CFG, *LPNET_ITS_IMGMERGE_CFG;

Members

dwSize
结构体大小
byIsMerge
是否需要合成：0- 不合成，1- 合成
byCloseupProportion
特写图比例：1- 原始分辨率大小，2- 宽高为原始分辨率两倍，以此类推，取值范围：1～8
byRes1
保留，置为0
dwOneMergeType
抓拍单张图合成方式（保留）
dwTwoMergeType
抓拍两张图合成方式
dwThreeMergeType
抓拍三张图合成方式
dwJpegQuality
压缩质量（0~100）
dwCloseupIndex
特写图抓拍第几张
dwMerageMaxSize
合成图片大小的上限，取值范围：300-10240，单位：KB
wCloseupDeviation
特写图偏移量(50~图片高度)，单位:像素
byRes
保留，置为0

Remarks

wCloseupDeviation是指特写图在抓拍图片中截取的上下偏移量（调整位置）。仅在图片合成启用下才会取特写图。

图片总数 | 合成编码 | 合成方式
2 | 201 | 两张图片上下排列合成，合成后图片宽为单张图的1倍，高为2倍。
 | 202 | 两张图片左右排列合成，合成后图片宽为单张图的2倍，高为1倍。
 | 203 | 上下合成，特写在最上边
 | 204 | 上下合成，特写在最下边
 | 205 | 左右合成，特写在最右边
 | 206 | 左右合成，特写在最左边
 | 207 | 品字合成，特写图在上边
 | 208 | 倒品字合成，特写图在下边
 | 209 | 唱字形，左边1张为特写
 | 210 | 反唱字形，右边1张为特写
3 | 301 | 三张图片上下排列合成，合成后图片宽为单张图的1倍，高为3倍。
 | 302 | 三张图片左右排列合成，合成后图片宽为单张图的3倍，高为1倍。
 | 303 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在右下；合成后图片宽为单张图的2倍，高为2倍。
 | 304 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在右下；合成后图片宽为单张图的1倍，高为1倍。
 | 305 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在左上；合成后图片宽为单张图的2倍，高为2倍。
 | 306 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在左上；压缩图片分辨率，合成后图片宽为单张图的1倍，高为1倍。
 | 307 | 三张图片“品”字型排列合成。
 | 308 | 三张图片倒“品”字型排列合成。
 | 309 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在左下；合成后图片宽为单张图的2倍，高为2倍。
 | 310 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在左下；合成后图片宽为单张图的1倍，高为1倍。
 | 311 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在右上；合成后图片宽为单张图的2倍，高为2倍。
 | 312 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片“田”字型合成，特写在右上；压缩图片分辨率，合成后图片宽为单张图的1倍，高为1倍。
 | 313 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片横“一”字型合成，顺序为：特写图、场景图、场景图、场景图
 | 314 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片横“一”字型合成，顺序为：场景图、特写图、场景图、场景图
 | 315 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片横“一”字型合成，顺序为：场景图、场景图、特写图、场景图
 | 316 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片横“一”字型合成，顺序为：场景图、场景图、场景图、特写图
 | 317 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片竖“1”字型合成，顺序为：特写图、场景图、场景图、场景图
 | 318 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片竖“1”字型合成，顺序为：场景图、特写图、场景图、场景图
 | 319 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片竖“1”字型合成，顺序为：场景图、场景图、特写图、场景图
 | 320 | 从三张图片中取一幅车牌特写区域，组成四张图片；四张图片竖“1”字型合成，顺序为：场景图、场景图、场景图、特写图
其他 | 其他 | 其他

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITS_IPC_CHAN_CFG

IPC监测点信息配置结构体

struct{
 DWORD    dwSize;
 BYTE     byCameraType;
 BYTE     byRes1[3];
 BYTE     byMonitoringSiteID[48];
 BYTE     byDeviceID[48];
 BYTE     byDirectionNo;
 BYTE     byMonitorInfo[48];
 BYTE     byRes2[15];
}NET_ITS_IPC_CHAN_CFG,*LPNET_ITS_IPC_CHAN_CFG;

Members

dwSize
结构体大小
byCameraType
相机种类：0-监控用相机，1-线圈触发相机，2-视频分析用相机，3-一体机
byRes1
保留，置为0
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byDirectionNo
监测方向编号：0-无，1-上行，2-下行，3-双向，4-由东向西，5-由南向北，6-由西向东，7-由北向南，8-其他
byMonitorInfo
监测点信息描述
byRes2
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITS_IPC_CHAN_LANE_CFG

出入口参数配置结构体。

struct{
  DWORD                    dwSize;
  BYTE                     byIpcType;
  BYTE                     byRes[135];
  NET_ITS_GATE_LANE_CFG    struGateLane[4];
}NET_ITS_IPC_CHAN_LANE_CFG, *LPNET_ITS_IPC_CHAN_LANE_CFG;

Members

dwSize
结构体大小
byIpcType
摄像机类型：0- 无，1- 车牌抓拍，2- 人脸抓拍，3- 监控相机
byRes
保留，置为0
struGateLane
车道配置结构体

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITS_OVERLAP_CFG

字符叠加配置结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byEnable;
  BYTE                          byRes1[3];
  NET_ITS_OVERLAP_ITEM_PARAM    struOverLapItem;
  NET_ITS_OVERLAP_INFO_PARAM    struOverLapInfo;
  BYTE                          byRes[32];
}NET_ITS_OVERLAP_CFG,*LPNET_ITS_OVERLAP_CFG;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byRes1
保留
struOverLapItem
字符串参数
struOverLapInfo
字符串内容信息
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITS_OVERLAP_CFG_V50

字符叠加配置(V50扩展)结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byEnable;
  BYTE                              byRes1[3];
  NET_ITS_OVERLAP_ITEM_PARAM_V50    struOverLapItemV50;
  NET_ITS_OVERLAP_INFO_PARAM        struOverLapInfo;
  BYTE                              byRes[120];
}NET_ITS_OVERLAP_CFG_V50,*LPNET_ITS_OVERLAP_CFG_V50;

Members

dwSize
结构体大小
byEnable
是否启用：0- 不启用，1- 启用
byRes1
保留
struOverLapItemV50
字符串参数
struOverLapInfo
字符串内容信息
byRes
保留

Remarks

字符叠加配置能力：NET_DVR_GetDeviceAbility(能力集类型：DEVICE_ABILITY_INFO)，获取抓拍机和智能终端能力(ITDeviceAbility)，对应节点：<imageOverlayStringV50>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITS_OVERLAP_INFO_PARAM

字符叠加内容信息结构体。

struct{
  BYTE    bySite[128];
  BYTE    byRoadNum[32];
  BYTE    byInstrumentNum[32];
  BYTE    byDirection[32];
  BYTE    byDirectionDesc[32];
  BYTE    byLaneDes[32];
  BYTE    byRes1[32];
  BYTE    byMonitoringSite1[44];
  BYTE    byMonitoringSite2[32];
  BYTE    byRes[64];
}NET_ITS_OVERLAP_INFO_PARAM,*LPNET_ITS_OVERLAP_INFO_PARAM;

Members

bySite
地点描述
byRoadNum
路口编号
byInstrumentNum
设备编号
byDirection
方向编号
byDirectionDesc
方向描述
byLaneDes
车道描述
byRes1
保留，置为0
byMonitoringSite1
监测点1信息
byMonitoringSite2
监测点2信息
byRes
保留，置为0

See Also

NET_ITS_OVERLAP_CFG


NET_ITS_OVERLAP_ITEM_PARAM

字符叠加参数配置结构体。

struct{
  NET_ITS_OVERLAP_SINGLE_ITEM_PARAM    struSingleItem[MAX_OVERLAP_ITEM_NUM];
  DWORD                                dwLinePercent;
  DWORD                                dwItemsStlye;
  WORD                                 wStartPosTop;
  WORD                                 wStartPosLeft;
  WORD                                 wCharStyle;
  WORD                                 wCharSize;
  WORD                                 wCharInterval;
  BYTE                                 byRes1[2];
  DWORD                                dwForeClorRGB;
  DWORD                                dwBackClorRGB;
  BYTE                                 byColorAdapt;
  BYTE                                 byParamFillZeroEnble;
  BYTE                                 byPlateLeftCornerEnable;
  BYTE                                 byRes2;
  WORD                                 wStartSPicPosTop;
  WORD                                 wStartSPicPosLeft;
  BYTE                                 byOsdLocate;
  BYTE                                 byRes[23];
}NET_ITS_OVERLAP_ITEM_PARAM,*LPNET_ITS_OVERLAP_ITEM_PARAM;

Members

struSingleItem
单条字符参数
dwLinePercent
叠加行百分比(0~100)，默认：100
dwItemsStlye
叠加方式：0-横排，1-竖排(默认横排)
wStartPosTop
起始上坐标，只对图片内部叠加有效，取值范围：[0~2448]，默认：0
wStartPosLeft
起始左坐标,只对图片内部叠加有效，取值范围：[0~2448]，默认：0
wCharStyle
字体类型：0-宋体，1-魏体(默认)
wCharSize
字符大小：0- 16*16，1- 32*32，2- 48*48，3- 64*64(默认)，4- 128*128
wCharInterval
字符间距，取值范围：[0～16]，可设单位：像素(默认)
byRes1
保留，置为0
dwForeClorRGB
前景色的RGB值，bit0~bit7: B，bit8~bit15: G，bit16~bit23: R，默认：x00FFFFFF-白
dwBackClorRGB
背景色的RGB值，只对图片外叠加有效，bit0~bit7: B，bit8~bit15: G，bit16~bit23: R，默认：x00000000-黑
byColorAdapt
颜色是否自适应：0-否，1-是
byParamFillZeroEnble
参数补零使能：0- 补零，1- 不补零，速度、限速值不足3位时补0
byPlateLeftCornerEnable
车牌小图叠加左上角使能 0-不叠加, 1-叠加
byRes2
保留，置为0
wStartSPicPosTop
起始上坐标，只对图片内部叠加有效，取值范围：[0~2448](默认0)
wStartSPicPosLeft
起始左坐标，只对图片内部叠加有效，取值范围：[0~2448](默认0)
byOsdLocate
OSD叠加位置：0- 图片内，1- 图片上边缘，2- 图片下边缘（合成图专用的是上边缘外）
byRes
保留，置为0

See Also

NET_ITS_OVERLAP_CFG


NET_ITS_OVERLAP_ITEM_PARAM_V50

字符叠加参数配置结构体。

struct{
  NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50    struSingleItem[MAX_OVERLAP_ITEM_NUM];
  DWORD                                    dwLinePercent;
  DWORD                                    dwItemsStlye;
  WORD                                     wStartPosTop;
  WORD                                     wStartPosLeft;
  WORD                                     wCharStyle;
  WORD                                     wCharSize;
  WORD                                     wCharInterval;
  BYTE                                     byRes1[2];
  DWORD                                    dwForeClorRGB;
  DWORD                                    dwBackClorRGB;
  BYTE                                     byColorAdapt;
  BYTE                                     byParamFillZeroEnble;
  BYTE                                     byPlateLeftCornerEnable;
  BYTE                                     byRes2;
  WORD                                     wStartSPicPosTop;
  WORD                                     wStartSPicPosLeft;
  BYTE                                     byOsdLocate;
  BYTE                                     byRes[63];
}NET_ITS_OVERLAP_ITEM_PARAM_V50,*LPNET_ITS_OVERLAP_ITEM_PARAM_V50;

Members

struSingleItem
单条字符参数
dwLinePercent
叠加行百分比(0~100)，默认：100
dwItemsStlye
叠加方式：0-横排，1-竖排(默认横排)
wStartPosTop
起始上坐标，只对图片内部叠加有效，取值范围：[0~2448]，默认：0
wStartPosLeft
起始左坐标,只对图片内部叠加有效，取值范围：[0~2448]，默认：0
wCharStyle
字体类型：0-宋体，1-魏体(默认)
wCharSize
字符大小：0- 16*16，1- 32*32，2- 48*48，3- 64*64(默认)，4- 128*128
wCharInterval
字符间距，取值范围：[0,16]，可设单位：像素(默认)
byRes1
保留，置为0
dwForeClorRGB
前景色的RGB值，bit0~bit7: B，bit8~bit15: G，bit16~bit23: R，默认：x00FFFFFF-白
dwBackClorRGB
背景色的RGB值，只对图片外叠加有效，bit0~bit7: B，bit8~bit15: G，bit16~bit23: R，默认：x00000000-黑
byColorAdapt
颜色是否自适应：0-否，1-是
byParamFillZeroEnble
参数补零使能：0- 补零，1- 不补零，速度、限速值不足3位时补0
byPlateLeftCornerEnable
车牌小图叠加左上角使能 0-不叠加, 1-叠加
byRes2
保留，置为0
wStartSPicPosTop
起始上坐标，只对图片内部叠加有效，取值范围：[0~2448](默认0)
wStartSPicPosLeft
起始左坐标，只对图片内部叠加有效，取值范围：[0~2448](默认0)
byOsdLocate
OSD叠加位置：0- 图片内，1- 图片上边缘，2- 图片下边缘（合成图专用的是上边缘外）
byRes
保留，置为0

See Also

NET_ITS_OVERLAP_CFG_V50


NET_ITS_OVERLAP_SINGLE_ITEM_PARAM

单条字符叠加信息结构体。

struct{
  BYTE     byRes1[2];
  BYTE     byItemType;
  BYTE     byChangeLineNum;
  BYTE     bySpaceNum;
  BYTE     byRes2[2];
  BYTE     byEnablePos;
  WORD     wStartPosTop;
  WORD     wStartPosLeft;
  BYTE     byRes[8];
}NET_ITS_OVERLAP_SINGLE_ITEM_PARAM,*LPNET_ITS_OVERLAP_SINGLE_ITEM_PARAM;

Members

byRes1
保留
byItemType
类型，详见枚举类型：ITS_OVERLAP_ITEM_TYPE
byChangeLineNum
叠加项后的换行数，取值范围：[0,10]，默认：0
bySpaceNum
叠加项后的空格数，取值范围：[0-255]，默认：0
byRes2
保留
byEnablePos
是否启用坐标显示：0- 否，1- 是
wStartPosTop
起始上坐标，只对图片内部叠加有效，取值范围：[0,2448]，默认：0
wStartPosLeft
起始左坐标，只对图片内部叠加有效，取值范围：[0,2448]，默认：0
byRes
保留

See Also

NET_ITS_OVERLAP_ITEM_PARAM


NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50

单条字符叠加信息结构体。

struct{
  BYTE     byRes1[2];
  BYTE     byItemType;
  BYTE     byChangeLineNum;
  BYTE     bySpaceNum;
  BYTE     byRes2[2];
  BYTE     byEnablePos;
  WORD     wStartPosTop;
  WORD     wStartPosLeft;
  BYTE     byItemTypeCustom[32];
  BYTE     byRes[8];
}NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50,*LPNET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50;

Members

byRes1
保留
byItemType
类型，详见枚举类型：ITS_OVERLAP_ITEM_TYPE
byChangeLineNum
叠加项后的换行数，取值范围：[0,10]，默认：0
bySpaceNum
叠加项后的空格数，取值范围：[0-255]，默认：0
byRes2
保留
byEnablePos
是否启用坐标显示：0- 否，1- 是
wStartPosTop
起始上坐标，只对图片内部叠加有效，取值范围：[0,2448]，默认：0
wStartPosLeft
起始左坐标，只对图片内部叠加有效，取值范围：[0,2448]，默认：0
byItemTypeCustom
自定义类型，与byItemType参数对应，可将byItemType参数类型自定义名称。若自定义内容为空，便默认以byItemType参数中的类型命名
byRes
保留

See Also

NET_ITS_OVERLAP_ITEM_PARAM_V50


NET_ITS_OVERLAPCFG_COND

字符叠加配置条件参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwChannel;
  DWORD    dwConfigMode;
  BYTE     byPicModeType;
  BYTE     byRelateType;
  BYTE     byRes[14];
}NET_ITS_OVERLAPCFG_COND,*LPNET_ITS_OVERLAPCFG_COND;

Members

dwSize
结构体大小
dwChannel
通道号
dwConfigMode
配置模式：0- 终端，1- 前端(直连前端或终端接前端)
byPicModeType
图片模式：0- 小图(独立图)，1- 大图(合成图)
byRelateType
0- 关联抓拍MPR模式（多帧触发抓拍IPC使用），1- 关联抓拍HVT模式（混卡IPC使用）
byRes
保留

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_ITS_PARK_VEHICLE

停车场数据信息结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byGroupNum;
  BYTE                    byPicNo;
  BYTE                    byLocationNum;
  BYTE                    byParkError;
  BYTE                    byParkingNo[MAX_PARKNO_LEN];
  BYTE                    byLocationStatus;
  BYTE                    bylogicalLaneNum;
  WORD                    wUpLoadType;
  BYTE                    byRes1[4];
  DWORD                   dwChanIndex;
  NET_DVR_PLATE_INFO      struPlateInfo;
  NET_DVR_VEHICLE_INFO    struVehicleInfo;
  BYTE                    byMonitoringSiteID[MAX_ID_LEN];
  BYTE                    byDeviceID[MAX_ID_LEN];
  DWORD                   dwPicNum;
  NET_ITS_PICTURE_INFO    struPicInfo[2];
  BYTE                    byRes2[256];
}NET_ITS_PARK_VEHICLE, *LPNET_ITS_PARK_VEHICLE;

Members

dwSize
结构体大小
byGroupNum
图片组数量（一辆过车多台相机抓拍的图片组的总数，用于多相机数据匹配，目前该参数值为1）
byPicNo
连拍的图片序号（接收到图片组数量后，表示接收完成；接收超时不足图片组数量时，根据需要保留或删除）
byLocationNum
单张图片所管理的车位数
byParkError
停车异常：0- 正常，1- 异常
byParkingNo
车位编号
byLocationStatus
车位车辆状态：0- 无车，1- 有车
bylogicalLaneNum
逻辑车位号，取值范围：0~3（一个相机最大能管4个车位，0代表最左边，3代表最右边）
wUpLoadType
第零位表示：0- 轮训上传，1- 变化上传
byRes1
保留，置为0
dwChanIndex
通道号（IP通道，起始通道号为33）
struPlateInfo
车牌信息结构
struVehicleInfo
车辆信息
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
dwPicNum
图片数量（与byGroupNum不同，代表本条信息附带的图片数量）
struPicInfo
图片信息，单张回调，最多2张图，由序号区分
byRes2
保留，置为0

See Also

NET_DVR_StartListen_V30


NET_ITS_PASSVEHICLE_COST_ITEM

出入口过车收费明细信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwPassVehicleID;
  BYTE     byIntime[MAX_TIME_LEN];
  BYTE     byOuttime[MAX_TIME_LEN];
  BYTE     byCardNo[MAX_CARD_LEN];
  BYTE     byPlateInfo[MAX_LICENSE_LEN];
  float    fPayCost;
  BYTE     byOperatorName[MAX_OPERATORNAME_LEN];
  BYTE     byVehicleType;
  BYTE     byRes1[3];
  DWORD    dwPayRuleID;
  DWORD    dwFreeRuleID;
  BYTE     byRes2[256];
}NET_ITS_PASSVEHICLE_COST_ITEM, *LPNET_ITS_PASSVEHICLE_COST_ITEM;

Members

dwSize
结构体大小
dwPassVehicleID
过车序号与出入口数据的过车序号相关联
byIntime
入场时间，格式为yyyymmddhh24miss
byOuttime
出场时间，格式为yyyymmddhh24miss
byCardNo
卡号
byPlateInfo
车牌号码
fPayCost
收费金额(单位：元)
byOperatorName
操作人员名称
byVehicleType
车辆类型：0-小型车，2 大型车
byRes1
保留，置为0
dwPayRuleID
收费规则流水号
dwFreeRuleID
减免规则流水号
byRes2
保留，置为0

See Also

NET_DVR_StartListen_V30


NET_ITS_PICTURE_INFO

抓拍图片信息结构体。

struct{
  DWORD           dwDataLen;
  BYTE            byType;
  BYTE            byDataType;
  BYTE            byCloseUpType;
  BYTE            byPicRecogMode;
  DWORD           dwRedLightTime;
  BYTE            byAbsTime[32];
  NET_VCA_RECT    struPlateRect;
  NET_VCA_RECT    struPlateRecgRect;
  BYTE            *pBuffer;
  DWORD           dwUTCTime;
  BYTE            byCompatibleAblity;
  BYTE            byTimeDiffFlag;
  signed char     cTimeDifferenceH;
  signed char     cTimeDifferenceM;
  BYTE            byRes2[4];
}NET_ITS_PICTURE_INFO, *LPNET_ITS_PICTURE_INFO;

Members

dwDataLen
媒体数据长度
byType
数据类型：0-车牌图，1- 场景图，2- 合成图，3- 特写图，4- 二值图，5- 码流，6- 人脸子图(主驾驶)，7- 人脸子图(副驾驶)，8- 非机动车，9- 行人，10- 称重原始裸数据，11- 目标图，12- 主驾驶室图，13- 副驾驶室图，14- 人脸图抠小图
byDataType
数据上传方式：0-数据直接上传; 1-云存储服务器URL(3.7Ver)原先的图片数据变成URL数据，图片长度变成URL长度
byCloseUpType
特写图类型：0- 保留，1- 非机动车，2- 行人
byPicRecogMode
图片背向识别：0- 正向车牌识别，1- 背向识别(尾牌识别)
dwRedLightTime
经过的红灯时间，单位：s
byAbsTime
绝对时间点：yyyymmddhhmmssxxx，e.g.20090810235959999，最后三位为毫秒数
struPlateRect
当byType为1-场景图时，该参数表示车牌位置，用户可根据位置自己截取车牌特写图；
当byType为8-非机动车，9-行人时，该参数表示人体坐标
struPlateRecgRect
牌识区域坐标，当图片类型为12-主驾驶室图13-副驾驶室图是，该坐标为驾驶员坐标。参数中的边界宽fWidth和高fHeight若为0，fX和fY不为0，则(fX,fY)表示牌识的中心点坐标
pBuffer
保存数据的缓冲区
dwUTCTime
UTC时间
byCompatibleAblity
兼容能力字段，按位表示，值：0- 无效，1- 有效
bit0- 表示dwUTCTime字段是否有效
byTimeDiffFlag
时差字段是否有效 0-时差无效， 1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，byISO8601为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byISO8601为1时有效
byRes2
保留

Remarks

  • 如果设备只上传了场景图，用户可以根据牌识区域坐标（struPlateRecgRect）自己从场景图中截取特写图，宽和高可以根据实际情况自己调节。
  • 通过NET_DVR_CLOUDSTORAGE_CFG配置可以启用云存储功能，则上传的图片信息将变成获取图片信息的URL地址，平台通过该URL地址去云存储服务器上获取数据。
  • 图片云存储URL格式：
    http://CVMIP:Port/pic?did=DevID&bid=BlkID&pid=PictureID&ptime=PicTime
    CVMIP：CVM(云存储服务器)的IP地址
    Port: CVM(云存储服务器)对外提供http服务的端口（固定8009）
    DevID: CVS(云存储服务器)中设备ID号
    BlkID：CVS(云存储服务器)中设备的块号
    PictureID：CVS(云存储服务器)为图片生成的编号
    PicTime：图片的时间戳
    示例：
    http://10.192.65.140:8009/pic?did=35b9cbd0-8ffa-1031-87e6-0025903c6a50&bid=387&pid=2952790009&ptime=1378106185

    • See Also

    NET_ITS_PLATE_RESULT NET_DVR_TFS_ALARM NET_ITS_GATE_VEHICLE NET_ITS_PARK_VEHICLE NET_DVR_TME_VEHICLE_RESULT


NET_ITS_PLATE_RESULT

识别结果结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwMatchNo;
  BYTE                     byGroupNum;
  BYTE                     byPicNo;
  BYTE                     bySecondCam;
  BYTE                     byFeaturePicNo;
  BYTE                     byDriveChan;
  BYTE                     byVehicleType;
  BYTE                     byDetSceneID;
  BYTE                     byVehicleAttribute;
  WORD                     wIllegalType;
  BYTE                     byIllegalSubType[8];
  BYTE                     byPostPicNo;
  BYTE                     byChanIndex;
  WORD                     wSpeedLimit;
  BYTE                     byChanIndexEx;
  BYTE                     byRes2;
  NET_DVR_PLATE_INFO       struPlateInfo;
  NET_DVR_VEHICLE_INFO     struVehicleInfo;
  BYTE                     byMonitoringSiteID[48];
  BYTE                     byDeviceID[48];
  BYTE                     byDir;
  BYTE                     byDetectType;
  BYTE                     byRelaLaneDirectionType;
  BYTE                     byCarDirectionType;
  DWORD                    dwCustomIllegalType;
  BYTE                     *pIllegalInfoBuf;
  BYTE                     byIllegalFromatType;
  BYTE                     byPendant;
  BYTE                     byDataAnalysis;
  BYTE                     byYellowLabelCar;
  BYTE                     byDangerousVehicles;
  BYTE                     byPilotSafebelt;
  BYTE                     byCopilotSafebelt;
  BYTE                     byPilotSunVisor;
  BYTE                     byCopilotSunVisor;
  BYTE                     byPilotCall;
  BYTE                     byBarrierGateCtrlType;
  BYTE                     byAlarmDataType;
  NET_DVR_TIME_V30         struSnapFirstPicTime;
  DWORD                    dwIllegalTime;
  DWORD                    dwPicNum;
  NET_ITS_PICTURE_INFO     struPicInfo[6];
}NET_ITS_PLATE_RESULT, *LPNET_ITS_PLATE_RESULT;

Members

dwSize
结构体大小
dwMatchNo
匹配序号，由(车辆序号、数据类型、车道号)组成匹配码
byGroupNum
图片组数量（一辆过车多台相机抓拍的图片组的总数，用于多相机数据匹配，目前该参数值为1）
byPicNo
连拍的图片序号（接收到图片组数量后，表示接收完成；接收超时不足图片组数量时，根据需要保留或删除）
bySecondCam
是否第二相机抓拍（如远近景抓拍的远景相机，或前后抓拍的后相机，特殊项目中会用到）
byFeaturePicNo
闯红灯电警，取第几张图作为特写图，0xff-表示不取
byDriveChan
触发车道号
byVehicleType
车辆类型，定义详见VTR_RESULT
byDetSceneID
检测场景号，0表示无效，其他取值：[1,4]，IPC为0（不支持）
byVehicleAttribute
车辆属性，0表示无附加属性，其他取值按位表示，bit0- 黄标车(类似年检的标志)，bit1- 危险品车辆，值：0- 否，1- 是
wIllegalType
违章类型，采用国标定义(违章代码描述)。wIllegalType为0时违法类型见dwCustomIllegalType，wIllegalType和dwCustomIllegalType都为0时表示正常卡口抓拍
byIllegalSubType
违章子类型
byPostPicNo
违章时取第几张图片作为卡口图，0xff-表示不取
byChanIndex
通道号
wSpeedLimit
限速上限（超速时有效）
byChanIndexEx
byChanIndexEx*256+byChanIndex表示实际通道号。
byRes2
保留
struPlateInfo
车牌信息结构
struVehicleInfo
车辆信息
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byDir
监测方向：1-上行（反向），2-下行(正向)，3-双向，4-由东向西，5-由南向北，6-由西向东，7-由北向南，8-其它
byDetectType
检测方式：0-车辆检测(不区分具体的车辆检测算法)，1-地感触发，2-视频触发，3-多帧识别，4-雷达触发，5-混行检测
byRelaLaneDirectionType
关联车道方向类型，定义详见ITC_RELA_LANE_DIRECTION_TYPE，与关联车道号对应，确保车道唯一性
byCarDirectionType
车辆具体行驶的方向：0- 从上往下，1- 从下往上
dwCustomIllegalType
违章类型定义(用户自定义)：当wIllegalType参数为0时，使用该参数；若wIllegalType参数不为0时，以wIllegalType参数为准，该参数无效
pIllegalInfoBuf
违法代码字符信息，byIllegalFromatType为1时有效（此时数字格式的国标违章代码参数wIllegalType、dwCustomIllegalType仍有效），字符信息指针指向结构体NET_ITS_ILLEGAL_INFO
byIllegalFromatType
违章信息格式类型： 0- 数字格式，1- 字符格式
byPendant
车窗是否有悬挂物：0- 未知，1- 车窗有悬挂物，2- 车窗无悬挂物
byDataAnalysis
数据是否已分析：0- 数据未分析, 1- 数据已分析
byYellowLabelCar
是否黄标车：0-表示未知，1- 非黄标车，2- 黄标车
byDangerousVehicles
是否危险品车：0-表示未知，1- 非危险品车，2- 危险品车
byPilotSafebelt
主驾驶员是否系安全带：0- 未知，1- 系安全带，2- 未系安全带
byCopilotSafebelt
副驾驶员是否系安全带：0- 未知，1- 系安全带，2- 未系安全带
byPilotSunVisor
主驾驶是否打开遮阳板：0- 未知，1- 未打开遮阳板，2- 打开遮阳板
byCopilotSunVisor
副驾驶是否打开遮阳板：0- 未知，1- 未打开遮阳板，2- 打开遮阳板
byPilotCall
主驾驶员是否在打电话：0- 未知，1- 未打电话，2- 打电话
byBarrierGateCtrlType
道闸控制类型：0- 开闸，1- 未开闸 (专用于历史数据中相机根据非授权名单匹配后是否开闸成功的标志)
byAlarmDataType
报警数据类型：0- 实时数据，1- 历史数据
struSnapFirstPicTime
端点时间(ms)（抓拍第一张图片的时间）
dwIllegalTime
违法持续时间（ms）=抓拍最后一张图片的时间-抓拍第一张图片的时间
dwPicNum
图片数量（与byGroupNum不同，代表本条信息附带的图片数量）
struPicInfo
图片信息，单张回调，最多6张图，由序号区分

Remarks

  • 一般情况下车辆类型以NET_ITS_PLATE_RESULT结构体中的byVehicleType字段为准；若该字段为0时，则以NET_DVR_VEHICLE_INFO结构体中的byVehicleType字段为准，此时设备侧可以至少保证给出大车、小车类型。

See Also

NET_DVR_SetDVRMessageCallBack_V31

NET_DVR_StartListen_V30


NET_ITS_REMOTE_COMMAND

远程控制命令结构体。

struct{
  WORD     wLaneid;
  BYTE     byCamLaneId;
  BYTE     byRes;
  DWORD    dwCode;
  BYTE     byRes1[128];
}NET_ITS_REMOTE_COMMAND, *LPNET_ITS_REMOTE_COMMAND;

Members

wLaneid
车道号，1～32（索引车道号，可以跳跃）
byCamLaneId
对应相机车道号，1～16（相机配置的车道号，可以跳跃，可以相同）
byRes
保留，置为0
dwCode
命令码：0x0- 开闸，0x1- 关闸
byRes1
保留，置为0

See Also

NET_ITS_REMOTE_CONTROL


NET_ITS_REMOTE_CONTROL

远程控制结构体。

struct{
  DWORD                     dwSize;
  NET_ITS_REMOTE_COMMAND    struRemoteCommand;
}NET_ITS_REMOTE_CONTROL, *LPNET_ITS_REMOTE_CONTROL;

Members

dwSize
结构体大小
struRemoteCommand
远程命令结构

See Also

NET_DVR_SetDVRConfig


NET_ITS_REUPLOAD_CFG

数据重传配置参数结构体

struct{
 DWORD                   dwSize;
 NET_DVR_IPADDR          struHostAddr;
 NET_DVR_SYSTEM_TIME     struStartTime;
 NET_DVR_SYSTEM_TIME     struEndTime;
 BYTE                    byRes[4];
}NET_ITS_REUPLOAD_CFG,*LPNET_ITS_REUPLOAD_CFG;

Members

dwSize
结构体大小
struHostAddr
远程主机IP地址
struStartTime
重置上传数据的起始时间
struEndTime
重置上传数据的结束时间
byRes
保留，置为0

Remarks

重传IP必须是数据上传配置(NET_ITS_UPLOAD_CFG)中的主机IP，端口也与其一致。

See Also

NET_DVR_GetDVRConfig


NET_ITS_ROADINFO

路口设备异常报警信息结构体

struct{
 DWORD                         dwSize;
 DWORD                         dwChannel;
 BYTE                          bytriggerMode;
 BYTE                          byRes1[3];
 DWORD                         dwDeviceNum;
 BYTE                          byMonitoringSiteID[48];
 BYTE                          byRoadInfo[48];
 NET_ITS_SINGLE_DEVICE_INFO    struSingleDevice[ITS_MAX_DEVICE_NUM];
 BYTE                          byRes[16];
}NET_ITS_ROADINFO,*LPNET_ITS_ROADINFO;

Members

dwSize
结构体大小
dwChannel
通道号，0xffffffff表示终端，其它表示对应的相机
bytriggerMode
触发模式：0-线圈触发，1-视频触发
byRes1
保留，置为0
dwDeviceNum
实际设备个数
byMonitoringSiteID
监测点编号
byRoadInfo
监测点信息
struSingleDevice
路口设备信息
byRes
保留，置为0

See Also

NET_DVR_StartListen_V30 NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_GetDVRConfig


NET_ITS_SINGLE_DEVICE_INFO

路口设备信息结构体

struct{
 DWORD               dwDeviceType;
 DWORD               dwDirID;
 DWORD               dwLaneID;
 DWORD               dwDeviceState;
 BYTE                byDeviceName[32];
 BYTE                byDeviceID[48];
 NET_DVR_TIME_V30    struTriggerTime;
 BYTE                byRelateChan;
 BYTE                byRes[3];
}NET_ITS_SINGLE_DEVICE_INFO,*LPNET_ITS_SINGLE_DEVICE_INFO;

Members

dwDeviceType
设备类型：0-终端，1-相机，2-补光灯，3-车检器，4-线圈1，5-线圈2，6-线圈3，7-红绿灯检测器，8-机柜，9-雷达，10-道闸，11-出入口控制机(票箱)，12-LED显示屏，13-远距离读卡器，14-近距离读卡器，15-红外扫描枪，16-票据打印机，17-节点管理器(诱导服务器相关)，18-机柜检测仪
dwDirID
方向编号：1-上行，2-下行，3-双向，4-由东向西，5-由南向北，6-由西向东，7-由北向南，8-其他
dwLaneID
车道编号
dwDeviceState
设备状态：0-正常，非0-异常（参考设备异常代码表）
byDeviceName
设备名称
byDeviceID
设备编号，一般用序列号，车检器用地址
struTriggerTime
触发时间
byRelateChan
关联通道号（传感器：1~8，AC端子：1~4，AC插座：1~2）
byRes
保留

Remarks

设备异常代码表如下所示：

设备名称 | 异常代码 | 异常说明
机柜 | 0101 | 机柜温度异常
 | 0102 | 机柜湿度异常
 | 0103 | 机柜门状态异常
 | 0104 | 机柜异常震动
 | 0105 | 其他异常
抓拍单元 | 0201 | 抓拍单元温度异常
 | 0202 | 抓拍单元湿度异常
 | 0203 | 摄像机DSP负载率异常
 | 0204 | 摄像机内存使用率异常
 | 0205 | 摄像机参数配置异常
 | 0206 | 摄像机布防异常
 | 0207 | 抓拍单元故障
 | 0208 | 其他异常
补光灯 | 0301 | 补光灯故障
雷达 | 0401 | 雷达故障
 | 0402 | 雷达一直发送某一个相同速度值
 | 0403 | 雷达送出数据为0
 | 0404 | 雷达送出数据过大或者过小
车辆检测处理器 | 0501 | 车检卡异常
 | 0502 | 地感线圈异常
 | 0503 | 车辆检测处理器异常
 | 0504 | 其他异常
交通信号灯检测器 | 0601 | 信号灯电信号异常
 | 0602 | 交通信号灯检测器异常
终端服务器 | 0701 | 终端服务器温度异常
 | 0702 | 终端服务器CPU使用率异常
 | 0703 | 终端服务器内存使用率异常
 | 0704 | 终端服务器存储空间异常
 | 0705 | 终端服务器软件异常
 | 0706 | 其他异常
 | 0707 | 终端服务器异常
视频分析记录仪 | 0801 | 视频分析记录仪温度异常
 | 0802 | 视频分析记录仪CPU使用率异常
 | 0803 | 视频分析记录仪内存使用率异常
 | 0804 | 视频分析记录仪存储空间异常
 | 0805 | 视频分析记录仪软件异常
 | 0806 | 其他异常
 | 0807 | 视频分析记录仪异常
牌识处理单元 | 0901 | 视频输入异常
 | 0902 | 牌识处理单元异常
出入口控制终端 | 1001 | 出入口控制终端温度异常
 | 1002 | 出入口控制终端CPU使用率异常
 | 1003 | 出入口控制终端内存使用率异常
 | 1004 | 出入口控制终端存储空间异常
 | 1005 | 出入口控制终端软件异常
 | 1006 | 其他异常
 | 1007 | 出入口控制终端异常
LED诱导屏 | 1101 | LED诱导屏异常
串口控制器 | 1201 | 串口控制器异常
机柜检测仪 | 1301 | 交流供电电子异常
 | 1302 | 交流供电插座异常
 | 1303 | 传感器异常
 | 1304 | 12V智能机柜主板断电

See Also

NET_ITS_ROADINFO


NET_ITS_TRAFFIC_COLLECT

交通统计数据结构体。

struct{
  DWORD                         dwSize;
  BYTE                          byMonitoringSiteID[48];
  BYTE                          byDeviceID[48];
  BYTE                          byLaneNum;
  BYTE                          byDir;
  BYTE                          byDetectType;
  BYTE                          byRes1;
  DWORD                         dwChannel;
  NET_DVR_SYSTEM_TIME           struStartTime;
  DWORD                         dwSamplePeriod;
  NET_ITS_TRAFFIC_DRIVE_CHAN    struDriveChan[6];
  BYTE                          byRes2[24];
}NET_ITS_TRAFFIC_COLLECT,*LPNET_ITS_TRAFFIC_COLLECT;

Members

dwSize
结构体大小
byMonitoringSiteID
监测点编号
byDeviceID
设备编号
byLaneNum
车道总数
byDir
监测方向：1-上行，2-下行，3-双向，4-由东向西，5-由南向北，6-由西向东，7-由北向南，8-其它
byDetectType
检测方式：1-地感线圈，2-视频触发，3-多帧识别，4-雷达触发
byRes1
保留
dwChannel
通道号
struStartTime
统计开始时间
dwSamplePeriod
统计时间，单位：秒
struDriveChan
交通流量数据，每个相机支持6个车道
byRes
保留

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_ITS_TRAFFIC_DATA_HOST

接收交通数据主机信息结构体

struct{
 NET_DVR_IPADDR    struHostAddr;
 WORD              wHostPort;
 BYTE              byRes1[2];
 DWORD             dwDataType;
 BYTE              bySuspendUpload;
 BYTE              byUploadStrategy;
 WORD              wUploadInterval;
 DWORD             dwUploadTimeOut;
 BYTE              byRes[24];
}NET_ITS_TRAFFIC_DATA_HOST,*LPNET_ITS_TRAFFIC_DATA_HOST;

Members

struHostAddr
远程主机IP地址
wHostPort
远程主机端口号
byRes1
保留，置为0
dwDataType
上传远程主机的数据类型，按位表示，0代表全部不上传，0xffffffff代表全部上传，不同的类型需上传则对应的数值取或，定义如下：
违章代码 | 违章描述 | 数值
0 | 普通卡口数据 | 0x01
1018 | 机动车不在机动车道内行驶的(车道禁行) | 0x01 << 1
1019 | 机动车违反规定使用专用车道的(预留) | 0x01 << 2
1208 | 不按导向标志行驶（违章左转、违章直行、违章右转等） | 0x01 << 3
1211 | 通过路口遇停止信号时，停在停止线以内或路口内的(压停止线) | 0x01 << 4
1229 | 违反禁令标志(预留，目前没有提供此类违章代码) | 0x01 << 5
1230 | 机动车禁止标线指示（压车道线等） | 0x01 << 6
1301 | 逆行 | 0x01 << 7
1302 | 违反信号灯（闯红灯） | 0x01 << 8
1042 | 机动车不按规定车道行驶 | 0x01 << 9
1303 | 机动车行驶超过规定时速50%以下 | 0x01 << 10
1603 | 机动车行驶超过规定时速50% | 0x01 << 11
bySuspendUpload
是否暂停数据上传：0-正常上传，1-暂停上传
byUploadStrategy
上传策略：0-最新数据优先上传，1-按照通行时间上传
wUploadInterval
上传间隔时间，单位：ms，取值范围：1~2000，该参数只对历史数据有效
dwUploadTimeOut
上传超时时间
byRes
保留，置为0

See Also

NET_ITS_UPLOAD_CFG


NET_ITS_TRAFFIC_DATA_INFO

交通数据信息结构体

struct{
 DWORD                   dwDataQuantity;
 DWORD                   dwDataRsendQuantity;
 NET_DVR_SYSTEM_TIME     struStartTime;
 NET_DVR_SYSTEM_TIME     struEndTime;
 NET_DVR_IPADDR          struDataHost;
}NET_ITS_TRAFFIC_DATA_INFO,*LPNET_ITS_TRAFFIC_DATA_INFO;

Members

dwDataQuantity
数据总量
dwDataRsendQuantity
未发送数量（需要上传交通数据主机的）
struStartTime
未发送数据的最早时间
struEndTime
未发送数据的最晚时间
struDataHost
接收交通数据主机地址

See Also

NET_ITS_WORKSTATE


NET_ITS_TRAFFIC_DRIVE_CHAN

单个车道路况信息结构体。

struct{
  BYTE     byDriveChan;
  BYTE     byRes1[3];
  WORD     wCarFlux;
  WORD     wPasserbyFlux;
  WORD     wShayFlux;
  float    fAverOccpancy;
  WORD     wAverSpeed;
  WORD     wAverCarDis;
  BYTE     byRes2[16];
}NET_ITS_TRAFFIC_DRIVE_CHAN,*LPNET_ITS_TRAFFIC_DRIVE_CHAN;

Members

byDriveChan
车道号
byRes1
保留
wCarFlux
汽车流量数
wPasserbyFlux
行客流量数
wShayFlux
二轮车流量数
fAverOccpancy
平均车道占有率百分比，单位：%，例如12.6表示占有率为12.6%
wAverSpeed
平均车速(km/h)
wAverCarDis
平均车头时距，单位：毫秒
byRes2
保留

See Also

NET_ITS_TRAFFIC_COLLECT


NET_ITS_UPLOAD_CFG

数据上传配置结构体

struct{
 DWORD                         dwSize;
 NET_ITS_TRAFFIC_DATA_HOST     struRemoteDataHost1;
 NET_ITS_TRAFFIC_DATA_HOST     struRemoteDataHost2;
}NET_ITS_UPLOAD_CFG,*LPNET_ITS_UPLOAD_CFG;

Members

dwSize
结构体大小
struRemoteDataHost1
接收交通数据主机1
struRemoteDataHost2
接收交通数据主机2

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_ITS_WORKSTATE

终端工作状态信息结构体

struct{
 DWORD                        dwSize;
 BYTE                         byDevName[32];
 DWORD                        dwRunTime;
 NET_ITS_TRAFFIC_DATA_INFO    struTrafficDataInfo[2];
 DWORD                        dwMemoryUsage;
 DWORD                        dwCpuUsage;
 DWORD                        dwDevTemperature;
 DWORD                        dwDeviceStatic;
 NET_DVR_DISKSTATE            struHardDiskStatic[MAX_DISKNUM_V30];
 NET_DVR_CHANNELSTATE_V30     struChanStatic[MAX_CHANNUM_V30];
 BYTE                         byAlarmInStatic[MAX_ALARMIN_V30];
 BYTE                         byAlarmOutStatic[MAX_ALARMOUT_V30];
 DWORD                        dwLocalDisplay;
 BYTE                         byAudioInChanStatus[8];
 BYTE                         byRes[36];
}NET_ITS_WORKSTATE,*LPNET_ITS_WORKSTATE;

Members

dwSize
结构体大小
byDevName
设备名称
dwRunTime
系统运行时间，单位：s
struTrafficDataInfo
支持两台主机（数据上传配置的主机）
dwMemoryUsage
内存占用率（如果内存占用率为30%，此处填30）
dwCpuUsage
CPU占用率（如果CPU占用率为30%，此处填30）
dwDevTemperature
本机温度
dwDeviceStatic
设备的状态：0-正常；1-CPU占用率太高，超过85%；2-硬件错误，例如串口死掉
struHardDiskStatic
硬盘状态
struChanStatic
通道的状态
byAlarmInStatic
报警输入口的状态：0-没有报警，1-有报警
byAlarmOutStatic
报警输出端口的状态：0-没有输出，1-有报警输出
dwLocalDisplay
本地显示状态：0-正常，1-不正常
byAudioInChanStatus
表示语音通道的状态：0-未使用；1-使用中，数组0表示第1个语音通道
byRes
保留，置为0

See Also

NET_DVR_GetDeviceStatus


NET_VCA_RULECFG

设备网络SDK开发使用手册

NET_IVMS_BEHAVIORCFG

智能分析仪异常行为识别参数结构体。

struct{
  DWORD               dwSize;
  BYTE                byPicProType;
  BYTE                byRes[3];
  NET_DVR_JPEGPARA    struPictureParam;
  NET_IVMS_RULECFG    struRuleCfg[MAX_DAYS][MAX_TIMESEGMENT];
}NET_IVMS_BEHAVIORCFG, *LPNET_IVMS_BEHAVIORCFG;

Members

dwSize
结构体大小
byPicProType
报警时图片处理方式：0-不处理；非0-处理
byRes
保留，置为0
struPictureParam
图片规格结构
struRuleCfg
按时间段设置的规则参数列表

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_IVMS_DEVSCHED

智能分析仪取流计划子结构。

struct{
  NET_DVR_SCHEDTIME          struTime;
  NET_DVR_PU_STREAM_CFG      struPUStream;
}NET_IVMS_DEVSCHED, *LPNET_IVMS_DEVSCHED;

Members

struTime
取流时间参数
struPUStream
前端取流配置参数

See Also

NET_IVMS_STREAMCFG


NET_IVMS_ENTER_REGION

智能分析仪ATM进入区域参数结构体。

struct{
  DWORD                      dwSize;
  NET_VCA_ENTER_REGION       struEnter[MAX_DAYS][MAX_TIMESEGMENT];
}NET_IVMS_ENTER_REGION, *LPNET_IVMS_ENTER_REGION;

Members

dwSize
结构体大小
struEnter
按时间段设置的进入区域参数

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_IVMS_MASK_REGION_LIST

IVMS屏蔽区域链表结构体。

struct{
  DWORD                      dwSize;
  NET_VCA_MASK_REGION_LIST   struList[MAX_DAYS][MAX_TIMESEGMENT];
}NET_IVMS_MASK_REGION_LIST, *LPNET_IVMS_MASK_REGION_LIST;

Members

dwSize
结构体大小
struList
屏蔽区域列表

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_IVMS_ONE_RULE

智能分析仪单条规则结构体。

struct{
  BYTE                        byActive;
  BYTE                        byRes1[7];
  BYTE                        byRuleName[NAME_LEN];
  DWORD                       dwEventType;
  NET_VCA_EVENT_UNION         uEventParam;
  NET_VCA_SIZE_FILTER         struSizeFilter;
  BYTE                        byRes2[68];
}NET_IVMS_ONE_RULE, *LPNET_IVMS_ONE_RULE;

Members

byActive
是否激活规则：0-否，非0-是
byRes1
保留
byRuleName
规则名称
dwEventType
异常行为识别事件类型，具体定义见VCA_EVENT_TYPE
uEventParam
异常行为识别事件参数
struSizeFilter
尺寸过滤器
byRes2
保留

See Also

NET_IVMS_RULECFG


NET_IVMS_RULECFG

智能分析仪规则结构体。

struct{
  NET_IVMS_ONE_RULE   struRule[MAX_RULE_NUM];
}NET_IVMS_RULECFG, *LPNET_IVMS_RULECFG;

Members

struRule
规则数组

See Also

NET_IVMS_BEHAVIORCFG


NET_IVMS_STREAMCFG

智能分析仪参数配置结构体。

struct{
  DWORD                dwSize;
  NET_IVMS_DEVSCHED    struDevSched[MAX_DAYS][MAX_TIMESEGMENT];
}NET_IVMS_STREAMCFG,*LPNET_IVMS_STREAMCFG;

Members

dwSize
结构体大小
struDevSched
按时间段配置前端取流以及规则信息

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_MATRIX_ANALOGMATRIX

模拟矩阵参数结构体。

struct{
  BYTE                    bySerPortNum;
  BYTE                    byMatrixSerPortType;
  BYTE                    byRes1[2];
  NET_DVR_SINGLE_RS232    struRS232;
  BYTE                    byRes2[200];
}NET_MATRIX_ANALOGMATRIX, *LPNET_MATRIX_ANALOGMATRIX;

Members

bySerPortNum
连接的串口号，0xff表示环通接入
byMatrixSerPortType
该参数对于多屏控制器无效，置为 0
byRes1
保留，置为 0
struRS232
RS232串口参数，环通接入时此参数无效
byRes2
保留，置为 0

See Also

NET_MATRIX_UNION


NET_MATRIX_DIGITALMATRIX

数字矩阵参数结构体。

struct{
  NET_DVR_IPADDR    struAddress;
  WORD              wPort;
  BYTE              byNicNum;
  BYTE              byRes[69];
}NET_MATRIX_DIGITALMATRIX, *LPNET_MATRIX_DIGITALMATRIX;

Members

struAddress
设备为数字设备时的 IP 信息
wPort
端口号
byNicNum
绑定的网口：0 - eth0，1 - eth1，考虑双网口如何通信加入绑定的网口
byRes
保留，置为 0

See Also

NET_MATRIX_UNION


NET_MATRIX_UNION

矩阵参数联合体。

union{
  NET_MATRIX_DIGITALMATRIX    struDigitalMatrix;
  NET_MATRIX_ANALOGMATRIX     struAnalogMatrix;
}NET_MATRIX_UNION,*LPNET_MATRIX_UNION;

Members

struDigitalMatrix
数字矩阵信息
struAnalogMatrix
模拟矩阵信息

See Also

NET_DVR_EXTERNAL_MATRIX_CFG


NET_POS_PARAM

区域参数结构体。

struct{
  WORD    wLeft;
  WORD    wTop;
  WORD    wRight;
  WORD    wBottom;
}NET_POS_PARAM, *LPNET_POS_PARAM;

Members

wLeft
边界框左上角X轴坐标，取值范围：[1,1000]
wTop
边界框左上角Y轴坐标，取值范围：[1,1000]
wRight
边界框右下角X轴坐标，取值范围：[1,1000]
wBottom
边界框右下角Y轴坐标，取值范围：[1,1000]

See Also

NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM


NET_PTZ_INFO

PTZ参数结构体，热成像相机位置信息。

struct{
  float    fPan;
  float    fTilt;
  float    fZoom;
  DWORD    dwFocus;
  BYTE     byRes[4];
}NET_PTZ_INFO, *LPNET_PTZ_INFO;

Members

fPan
P参数（水平参数），精确到小数点后3位，范围：0 – 36.000
fTilt
T参数（垂直参数），精确到小数点后3位，范围：-90.000 – 270.000
fZoom
Z参数（变倍参数），精确到小数点后3位，范围：0-100000
dwFocus
聚焦参数，聚焦范围：归一化0-100000
byRes
保留

See Also

NET_DVR_CALIB_PARAM NET_DVR_GIS_INFO


NET_SDK_AREASCAN_CFG

区域扫描配置结构体。

struct{
  DWORD    dwSize;
  BYTE     byScanState;
  BYTE     byRes[259];
}NET_SDK_AREASCAN_CFG, *LPNET_SDK_AREASCAN_CFG;

Members

dwSize
结构体大小
byScanState
区域扫描当前设置状态，0为未设置，1为已设置（只读）
byRes
保留，置为0

Remarks

  • 设备是否支持区域扫描或支持的参数能力，可以通过设备能力集进行判断，对应区域扫描能力集(AreaScan)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_AREASCAN_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig


NET_SDK_FIRESHIELDMASK_CFG

火点屏蔽区域配置结构体。

struct{
  DWORD                            dwSize;
  BYTE                             byEnabled;
  BYTE                             byShieldAreaTransparency;
  BYTE                             byDisplayShieldAreaEnabled;
  BYTE                             byRes1[1];
  NET_SDK_FIRESHIELDMASK_REGION    struMaskRegion[MAX_FIRESHIELDMASK_REGION];
  BYTE                             byRes[256];
}NET_SDK_FIRESHIELDMASK_CFG, *LPNET_SDK_FIRESHIELDMASK_CFG;

Members

dwSize
结构体大小
byEnabled
火点区域屏蔽使能：0- 不启用，1- 启用
byShieldAreaTransparency
屏蔽区域透明度：0- 不透明，1- 透明，2- 半透明
byDisplayShieldAreaEnabled
码流叠加屏蔽区域使能：0- 不启用，1- 启用
byRes1
保留，置为0
struMaskRegion
火点屏蔽区域，最大支持24个区域，每位数组表示一个区域
byRes
保留，置为0

Remarks

  • 设备是否支持火点区域屏蔽功能或者支持的参数能力，可以通过设备能力集进行判断，对应火点区域屏蔽能力集(FireShieldMask)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_SDK_FIRESHIELDMASK_COND

火点屏蔽区域配置条件结构体。

struct{
  DWORD            dwSize;
  DWORD            dwChannel;
  BYTE             byRegionID;
  BYTE             byRes[127];
}NET_SDK_FIRESHIELDMASK_COND, *LPNET_SDK_FIRESHIELDMASK_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRegionID
区域ID，1~24
byRes
保留，置为0

See Also

NET_DVR_STDControl


NET_SDK_FIRESHIELDMASK_REGION

火点屏蔽区域结构体。

struct{
  DWORD              dwSize;
  BYTE               byMaskID;
  BYTE               byEnabled;
  BYTE               byShieldZoom;
  BYTE               byMaskType;
  BYTE               byRegionType;
  BYTE               byShowEnabled;
  BYTE               byRes1[2];
  char               szMaskName[NAME_LEN];
  NET_VCA_POLYGON    struRegion;
  BYTE               byRes[32];
}NET_SDK_FIRESHIELDMASK_REGION,*LPNET_SDK_FIRESHIELDMASK_REGION;

Members

dwSize
结构体大小
byMaskID
区域ID变化，取值范围：1~24，最多支持24个区域
byEnabled
单个火点屏蔽区域使能：0- 不启用，1- 启用
byShieldZoom
屏蔽倍率，取值范围：0~32倍，屏蔽大于等于该值的光学变倍
byMaskType
屏蔽区域颜色类型：0- 灰色，1- 红色，2- 黄色，3- 蓝色，4- 橙色，5- 绿色，6- 透明，7- 半透明，8- 马赛克
byRegionType
区域类型：0- 四边形
byShowEnabled
区域显示使能(该参数为只读，若该使能为0则上层不显示该区域相关信息，为1则显示该区域相关信息)：0- 不启用，1- 启用
byRes1
保留，置为0
szMaskName
屏蔽区域名称
struRegion
屏蔽区域坐标
byRes
保留，置为0

See Also

NET_SDK_FIRESHIELDMASK_CFG


NET_SDK_MANUAL_THERMOMETRY

手动测温规则配置结构体。

struct{
  DWORD                       dwSize;
  DWORD                       dwChannel;
  DWORD                       dwRelativeTime;
  DWORD                       dwAbsTime;
  BYTE                        byThermometryUnit;
  BYTE                        byDataType;
  BYTE                        byRes1[6];
  NET_SDK_MANUALTHERM_RULE    struRuleInfo;
  BYTE                        byRes[512];
}NET_SDK_MANUAL_THERMOMETRY,*LPNET_SDK_MANUAL_THERMOMETRY;

Members

dwSize
结构体大小
dwChannel
通道号
dwRelativeTime
相对时标（只读）
dwAbsTime
绝对时标（只读）
byThermometryUnit
测温单位: 0-摄氏度（℃），1-华氏度（℉），2-开尔文(K)
byDataType
数据状态类型:0-检测中，1-开始，2-结束（只读）
byRes1
保留，置为0
struRuleInfo
手动测温规则
byRes
保留，置为0

Remarks

  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)
  • 设备是否支持手动测温配置、是否支持手动测温实时数据获取或者支持的参数能力，可以通过设备能力集进行判断，对应手动测温配置能力集(ManualThermometry)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MANUALTHERM_CAPABILITIES。

See Also

NET_DVR_SetSTDConfig NET_DVR_StartRemoteConfig


NET_SDK_MANUALTHERM_ BASICPARAM

设备网络SDK开发使用手册

NET_SDK_MANUALTHERM_BASICPARAM

手动测温基本参数配置结构体。

struct{
  DWORD    dwSize;
  WORD     wDistance;
  BYTE     byDistanceUnit;
  BYTE     byRes1[1];
  float    fEmissivity;
  BYTE     byRes[64];
}NET_SDK_MANUALTHERM_BASICPARAM, *LPNET_SDK_MANUALTHERM_BASICPARAM;

Members

dwSize
结构体大小
wDistance
距离(m)[0, 10000]
byDistanceUnit
距离单位: 0- 米(m)，1- 英尺(feet)，2-厘米（cm）
byRes1
保留，置为0
fEmissivity
发射率(发射率 精确到小数点后两位)[0.01, 1.00](即：物体向外辐射能量的本领)
byRes
保留，置为0

Remarks

  • 设备是否支持手动测温基本参数配置功能或者支持的参数能力，可以通过设备能力集进行判断，对应手动测温基本参数配置能力集(ManualThermBasic)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_MANUALTHERM_BASIC_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_SDK_MANUALTHERM_RULE

手动测温规则结构体。

struct{
  BYTE                        byRuleID;
  BYTE                        byEnable;
  BYTE                        byRes1[2];
  char                        szRuleName[NAME_LEN];
  BYTE                        byRuleCalibType;
  BYTE                        byRes2[3];
  NET_SDK_POINT_THERMOMETRY   struPointTherm;
  NET_SDK_REGION_THERMOMETRY  struRegionTherm;
  BYTE                        byRes[512];
}NET_SDK_MANUALTHERM_RULE,*LPNET_SDK_MANUALTHERM_RULE;

Members

byRuleID
规则ID，0-表示无效，从1开始
byEnable
是否启用：0-否，1-是
byRes1
保留，置为0
szRuleName
规则名称
byRuleCalibType
规则标定类型：0-点，1-框，2-线
byRes2
保留，置为0
struPointTherm
点测温，当标定类型为0-点时生效
struRegionTherm
区域测温，当标定类型为1-框、2-线时生效
byRes
保留，置为0

See Also

NET_SDK_MANUAL_THERMOMETRY


NET_SDK_POINT_THERMOMETRY

点测温结构体。

struct{
  float                       fPointTemperature;
  NET_VCA_POINT               struPoint;
  BYTE                        byRes[20];
}NET_SDK_POINT_THERMOMETRY,*LPNET_SDK_POINT_THERMOMETRY;

Members

fPointTemperature
点测温当前温度, 当标定类型为0-点时生效。精确到小数点后一位(-40-1000℃),（浮点数+100）*10
struPoint
点测温坐标（当规则标定类型为“0-点”的时候生效）
byRes
保留，置为0

See Also

NET_SDK_MANUALTHERM_RULE


NET_SDK_REGION_THERMOMETRY

区域测温结构体。

struct{
  float                       fMaxTemperature;
  float                       fMinTemperature;
  float                       fAverageTemperature;
  float                       fTemperatureDiff;
  NET_VCA_POLYGON             struRegion;
  BYTE                        byRes[20];
}NET_SDK_REGION_THERMOMETRY,*LPNET_SDK_REGION_THERMOMETRY;

Members

fMaxTemperature
最高温度，精确到小数点后一位(-40-1000℃)，（浮点数+100）*10
fMinTemperature
最低温度，精确到小数点后一位(-40-1000℃)，（浮点数+100）*10
fAverageTemperature
平均温度，精确到小数点后一位(-40-1000℃)，（浮点数+100）*10
fTemperatureDiff
温差，精确到小数点后一位(-40-1000℃)，（浮点数+100）*10
struRegion
区域、线（当规则标定类型为“1-框”或者“2-线”的时候生效）
byRes
保留，置为0

See Also

NET_SDK_MANUALTHERM_RULE


NET_SDK_SMOKESHIELDMASK_CFG

烟雾区域屏蔽配置结构体。

struct{
  DWORD                             dwSize;
  BYTE                              byEnabled;
  BYTE                              byShieldAreaTransparency;
  BYTE                              byDisplayShieldAreaEnabled;
  BYTE                              byRes1[1];
  NET_SDK_SMOKESHIELDMASK_REGION    struMaskRegion[MAX_SMOKESHIELDMASK_REGION];
  BYTE                              byRes[256];
}NET_SDK_SMOKESHIELDMASK_CFG, *LPNET_SDK_SMOKESHIELDMASK_CFG;

Members

dwSize
结构体大小
byEnabled
烟雾区域屏蔽使能：0-不启用，1-启用
byShieldAreaTransparency
屏蔽区域透明度：0- 不透明，1- 透明，2- 半透明
byDisplayShieldAreaEnabled
码流叠加屏蔽区域使能：0-不启用，1-启用
byRes1
保留，置为0
struMaskRegion
烟雾屏蔽区域，最大支持24个区域，每位数组表示一个区域
byRes
保留，置为0

Remarks

  • 设备是否支持烟雾区域屏蔽功能或者支持的参数能力，可以通过设备能力集进行判断，对应烟雾区域屏蔽能力集(SmokeShieldMask)，相关接口：NET_DVR_GetSTDAbility，能力集类型：NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES。

See Also

NET_DVR_GetSTDConfig NET_DVR_SetSTDConfig


NET_SDK_SMOKESHIELDMASK_COND

火点屏蔽区域配置条件结构体。

struct{
  DWORD            dwSize;
  DWORD            dwChannel;
  BYTE             byRegionID;
  BYTE             byRes[127];
}NET_SDK_SMOKESHIELDMASK_COND, *LPNET_SDK_SMOKESHIELDMASK_COND;

Members

dwSize
结构体大小
dwChannel
通道号
byRegionID
区域ID，1~24
byRes
保留，置为0

See Also

NET_DVR_STDControl


NET_SDK_SMOKESHIELDMASK_REGION

烟雾屏蔽区域结构体。

struct{
  DWORD              dwSize;
  BYTE               byMaskID;
  BYTE               byEnabled;
  BYTE               byShieldZoom;
  BYTE               byMaskType;
  BYTE               byRegionType;
  BYTE               byShowEnabled;
  BYTE               byRes1[2];
  char               szMaskName[NAME_LEN];
  NET_VCA_POLYGON    struRegion;
  BYTE               byRes[32];
}NET_SDK_SMOKESHIELDMASK_REGION,*LPNET_SDK_SMOKESHIELDMASK_REGION;

Members

dwSize
结构体大小
byMaskID
区域ID，取值范围：1~24，最多支持24个区域
byEnabled
单个烟雾屏蔽区域使能：0- 不启用，1- 启用
byShieldZoom
屏蔽倍率，取值范围：0~32倍。屏蔽大于等于该值的光学变倍。
byMaskType
屏蔽区域颜色类型：0-灰色，1-红色，2-黄色，3-蓝色，4-橙色，5-绿色，6-透明，7-半透明，8-马赛克
byRegionType
区域类型：0- 四边形
byShowEnabled
区域显示使能（该参数为只读，若该使能为0则上层不显示该区域相关信息，为1则显示该区域相关信息）：0- 不启用，1- 启用
byRes1
保留，置为0
szMaskName
屏蔽区域名称
struRegion
屏蔽区域坐标
byRes
保留，置为0

See Also

NET_SDK_SMOKESHIELDMASK_CFG


NET_VCA_ADV_REACH_HEIGHT

折线攀高参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  DWORD               dwCrossDirection;
  BYTE                byRes[4];
}NET_VCA_ADV_REACH_HEIGHT, *LPNET_VCA_ADV_REACH_HEIGHT;

Members

struRegion
区域范围
dwCrossDirection
跨越方向，具体定义见下表：
enum _VCA_CROSS_DIRECTION_{
  VCA_BOTH_DIRECTION  = 0,
  VCA_LEFT_GO_RIGHT   = 1,
  VCA_RIGHT_GO_LEFT   = 2
}VCA_CROSS_DIRECTION
VCA_BOTH_DIRECTION
双向
VCA_LEFT_GO_RIGHT
由左至右
VCA_RIGHT_GO_LEFT
由右至左
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_ADV_TRAVERSE_PLANE

折线警戒面参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  DWORD               dwCrossDirection;
  BYTE                bySensitivity;
  BYTE                byRes[3];
}NET_VCA_ADV_TRAVERSE_PLANE, *LPNET_VCA_ADV_TRAVERSE_PLANE;

Members

struRegion
折线警戒面
dwCrossDirection
跨越方向，具体定义见下表：
enum _VCA_CROSS_DIRECTION_{
  VCA_BOTH_DIRECTION  = 0,
  VCA_LEFT_GO_RIGHT   = 1,
  VCA_RIGHT_GO_LEFT   = 2
}VCA_CROSS_DIRECTION
VCA_BOTH_DIRECTION
双向
VCA_LEFT_GO_RIGHT
由左至右
VCA_RIGHT_GO_LEFT
由右至左
bySensitivity
灵敏度，取值范围：[1,5]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_ADVANCE_FIND

高级检索参数结构体。

struct{
  DWORD    dwFacePicID;
  BYTE     byRes[36];
}NET_VCA_ADVANCE_FIND, *LPNET_VCA_ADVANCE_FIND;

Members

dwFacePicID
人脸图片ID
byRes
保留

See Also

NET_VCA_FIND_SNAPPIC_UNION


NET_VCA_ADVANCE_SEARCH_DATABASE_COND

高级检索条件结构体。

struct{
  DWORD    dwDataBaseType;
  DWORD    dwDataBaseID;
  DWORD    dwFacePicID;
  BYTE     byRes[36];
}NET_VCA_ADVANCE_SEARCH_DATABASE_COND, *LPNET_VCA_ADVANCE_SEARCH_DATABASE_COND;

Members

dwDataBaseType
数据库类型，具体定义见下表：
enum _VCA_DATABASE_TYPE_{
  DATABASE_NULL  = 0,
  DATABASE_SNAP,
  DATABASE_FACE
}VCA_DATABASE_TYPE
DATABASE_NULL
未知
DATABASE_SNAP
抓拍数据库
DATABASE_SNAP
人脸数据库
dwDataBaseID
数据库ID
dwFacePicID
人脸图片ID
byRes
保留

See Also

NET_VCA_SEARCH_DATABASE_COND_UNION


NET_VCA_ANSWER

回答问题参数结构体。

struct{
  NET_VCA_POLYGON               struRegion;
  BYTE                          bySensitivity;
  BYTE                          byAlarmState;
  BYTE                          byZoomOver;
  BYTE                          byAnswerStudent;
  BYTE                          byRes[4];
}NET_VCA_ANSWER,*LPNET_VCA_ANSWER;

Members

struRegion
区域范围
bySensitivity
灵敏度参数，范围[1-100]
byAlarmState
只读字段界面不显示；0-保留,1-报警开始,2-报警结束
byZoomOver
0-保留,,1-变倍到位(3，特写)(C报警始终置为0)(报警上传录播主机，作为切换画面判断依据)
byAnswerStudent
0-保留 1-无学生起立，2-单个学生，3-多个学生（C，全景）
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_APPEND_INFO

异常行为识别附加信息结构体。

struct{
  DWORD    dwSize;
  DWORD    dwAppendPicLen;
  BYTE     *pAppendPicBuff;
  BYTE     byAppendPicType;
  BYTE     byUID[64];
  BYTE     byRes1[3];
  DWORD    dwTargetSpeed;
  DWORD    dwTargetDistance;
  BYTE     byAlarmType;
  BYTE     byRadarChannel;
  BYTE     byRes2;
  BYTE     byAppendChannelType;
  DWORD     dwAppendChannel;
  BYTE     byRes[44];
}NET_VCA_APPEND_INFO,*LPNET_VCA_APPEND_INFO;

Members

dwSize
结构体大小
dwAppendPicLen
附加图片长度
pAppendPicBuff
附加图片指针
byAppendPicType
附加图片类型：0-保留，1-可见光图片，2-热成像图片
byUID
设备报警UID
dwTargetSpeed
雷达检测到目标速度，单位：km/h
dwTargetDistance
雷达检测到目标距离，单位：m/米
byAlarmType
报警类型：0- 视频， 1- 雷达
byRadarChannel
雷达通道，从1开始累加
byRes2
保留，置为0
byAppendChannelType
附加通道类型：0-保留;1-可见光通道;2-热成像通道;
dwAppendChannel
附加通道通道号
byRes
保留，置为0

See Also

NET_VCA_RULE_ALARM


NET_VCA_AREA

进入/离开区域参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               bySensitivity;
  BYTE               byDetectionTarget;
  BYTE               byRes[6];
}NET_VCA_AREA,*LPNET_VCA_AREA;

Members

struRegion
区域范围
bySensitivity
灵敏度参数，取值范围：[1,5]
byDetectionTarget
检测目标，0表示所有目标（表示不锁定检测目标，所有目标都将进行检测），其他取值按位表示不同的检测目标：0x01-人，0x02-车
支持多选，例如：0x3表示同时检测车和人的目标类型
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_AUDIO_ABNORMAL

声强陡升侦测参数结构体。

struct{
  WORD    wDecibel;
  BYTE    bySensitivity;
  BYTE    byAudioMode;
  BYTE    byEnable;
  BYTE    byThreshold;
  BYTE    byRes[54];
}NET_VCA_AUDIO_ABNORMAL,*LPNET_VCA_AUDIO_ABNORMAL;

Members

wDecibel
声音强度，保留
bySensitivity
灵敏度参数，取值范围：[1,100]
byAudioMode
声音检测模式：0- 启用灵敏度检测，1- 启用分贝阈值检测，2- 都启用
byEnable
是否开启声强陡升侦测功能：0- 否，1- 是
byThreshold
声音强度阈值，取值范围：[1,100]
byRes
保留，置为0

Remarks

  • 声强陡升侦测功能的参数取值范围具体可以通过能力集获取：NET_DVR_GetDeviceAbility（报警事件处理能力EventAbility）。

    • See Also

    NET_DVR_AUDIO_EXCEPTION NET_VCA_EVENT_UNION


NET_VCA_BEHAVIOR_ABILITY

异常行为识别能力输出参数结构体。

struct{
  DWORD   dwSize;
  DWORD   dwAbilityType;
  BYTE    byMaxRuleNum;
  BYTE    byMaxTargetNum;
  BYTE    bySupport;
  BYTE    byRes[5];
  DWORD   dwAbilityTypeEx;
}NET_VCA_BEHAVIOR_ABILITY,*LPNET_VCA_BEHAVIOR_ABILITY;

Members

dwSize
结构体大小
dwAbilityType
支持的异常行为识别能力类型，按位表示，具体定义如下：
enum _VCA_ABILITY_TYPE_{
  TRAVERSE_PLANE_ABILITY     = 0x01,
  ENTER_AREA_ABILITY         = 0x02,
  EXIT_AREA_ABILITY          = 0x04,
  INTRUSION_ABILITY          = 0x08,
  LOITER_ABILITY             = 0x10,
  LEFT_TAKE_ABILITY          = 0x20,
  PARKING_ABILITY            = 0x40,
  RUN_ABILITY                = 0x80,
  HIGH_DENSITY_ABILITY       = 0x100,
  LF_TRACK_ABILITY           = 0x200,
  VIOLENT_MOTION_ABILITY     = 0x400,
  REACH_HIGHT_ABILITY        = 0x800,
  GET_UP_ABILITY             = 0x1000,
  LEFT_ABILITY               = 0x2000,
  TAKE_ABILITY               = 0x4000,
  LEAVE_POSITION             = 0x8000,
  TRAIL_ABILITY              = 0x10000,
  KEY_PERSON_GET_UP_ABILITY  = 0x20000,
  STANDUP_ABILITY            = 0x40000,
  FALL_DOWN_ABILITY          = 0x80000,
  AUDIO_ABNORMAL_ABILITY     = 0x100000,
  ADV_REACH_HEIGHT_ABILITY   = 0x200000,
  TOILET_TARRY_ABILITY       = 0x400000,
  YARD_TARRY_ABILITY         = 0x800000,
  ADV_TRAVERSE_PLANE_ABILITY = 0x1000000,
  HUMAN_ENTER_ABILITY        = 0x10000000,
  OVER_TIME_ABILITY          = 0x20000000,
  STICK_UP_ABILITY           = 0x40000000,
  INSTALL_SCANNER_ABILITY    = 0x80000000
}VCA_ABILITY_TYPE
TRAVERSE_PLANE_ABILITY
穿越警戒面
ENTER_AREA_ABILITY
进入区域
EXIT_AREA_ABILITY
离开区域
INTRUSION_ABILITY
入侵
LOITER_ABILITY
徘徊
LEFT_TAKE_ABILITY
丢包捡包
PARKING_ABILITY
停车
RUN_ABILITY
奔跑
HIGH_DENSITY_ABILITY
区域内人员密度
LF_TRACK_ABILITY
球机跟踪
VIOLENT_MOTION_ABILITY
剧烈运动检测
REACH_HIGHT_ABILITY
攀高检测
GET_UP_ABILITY
起身检测
LEFT_ABILITY
丢包检测
TAKE_ABILITY
捡包检测
LEAVE_POSITION
离岗
TRAIL_ABILITY
尾随
KEY_PERSON_GET_UP_ABILITY
重点人员起身检测
STANDUP_ABILITY
起立
FALL_DOWN_ABILITY
倒地
AUDIO_ABNORMAL_ABILITY
声强突变
ADV_REACH_HEIGHT_ABILITY
折线攀高
TOILET_TARRY_ABILITY
如厕超时
YARD_TARRY_ABILITY
放风场滞留
ADV_TRAVERSE_PLANE_ABILITY
折线警戒面
HUMAN_ENTER_ABILITY
人靠近ATM，只在ATM_PANEL模式下支持
OVER_TIME_ABILITY
操作超时，只在ATM_PANEL模式下支持
STICK_UP_ABILITY
贴纸条,支持区域规则
INSTALL_SCANNER_ABILITY
安装读卡器,支持区域规则
byMaxRuleNum
最大规则数
byMaxTargetNum
最大目标数
bySupport
支持的功能类型，按位表示。
bySupport & 0x01 支持标定功能
byRes
保留，置为0
dwAbilityTypeEx
支持的异常行为识别能力类型，按位表示，具体定义如下：
enum _VCA_ABILITY_TYPE_EX_{
  PEOPLENUM_CHANGE_ABILITY   = 0x00000002,
  SPACING_CHANGE_ABILITY     = 0x00000004,
  EVENT_COMBINED_ABILITY     = 0x00000008,
  EVENT_SIT_QUIETLY          = 0x00000010,
  EVENT_TEACHER_WRITING      = 0x00000100
}VCA_ABILITY_TYPE_EX
PEOPLENUM_CHANGE_ABILITY
人数变化检测
SPACING_CHANGE_ABILITY
间距变化检测
EVENT_COMBINED_ABILITY
组合规则事件
EVENT_SIT_QUIETLY
一动不动事件
EVENT_TEACHER_WRITING
板书

Remarks

获取设备具体支持的行为事件类型时，需同时对字段dwAbilityType和dwAbilityTypeEx进行解析。

See Also

NET_DVR_GetDeviceAbility


NET_VCA_BLACKBOARD_WRITE

板书信息配置结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  BYTE               byTeacherState;
  BYTE               byWritingState;
  BYTE               byWritingArea;
  BYTE               byRes[5];
 }NET_VCA_BLACKBOARD_WRITE,*LPNET_VCA_BLACKBOARD_WRITE;

Members

struRegion
区域范围（配置区域，报警中不含有该区域）
byTeacherState
教师状态（报警上传时生效）；0~教师特写，1~教师全景，2~讲台无人状态
byWritingState
板书状态（报警上传时生效）；0~板书开始，1~板书结束
byWritingArea
板书区域（报警上传时生效）；0~整个板书，1~板书左边，2~板书右边
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_BLOCKLIST_COND

非授权名单信息查询条件结构体。

struct{
  LONG                       lChannel;
  DWORD                      dwGroupNo;
  BYTE                       byType;
  BYTE                       byLevel;
  BYTE                       byRes1[2];
  NET_VCA_HUMAN_ATTRIBUTE    struAttribute;
  BYTE                       byRes[20];
}NET_VCA_BLOCKLIST_COND, *LPNET_VCA_BLOCKLIST_COND;

Members

lChannel
通道号
dwGroupNo
分组号
byType
非授权名单标志：0- 全部，1- 授权名单，2- 非授权名单
byLevel
非授权名单等级，0- 全部，1- 低，2- 中，3- 高
byRes1
保留
struAttribute
人员信息
byRes
保留

See Also

NET_DVR_FindBlockList


NET_VCA_BLOCKLIST_FASTREGISTER_PARA

非授权名单注册信息结构体。

struct{
  DWORD                     dwSize;
  NET_VCA_BLOCKLIST_INFO    struBlockListInfo;
  DWORD                     dwImageLen;
  BYTE                      byRes[124];
  BYTE                      *pImage;
}NET_VCA_BLOCKLIST_FASTREGISTER_PARA, *LPNET_VCA_BLOCKLIST_FASTREGISTER_PARA;

Members

dwSize
结构体大小
struBlockListInfo
非授权名单基本参数
dwImageLen
图像数据长度
byRes
保留
pImage
图像数据

See Also

NET_DVR_FastAddBlockList


NET_VCA_BLOCKLIST_INFO

非授权名单信息结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwRegisterID;
  DWORD                      dwGroupNo;
  BYTE                       byType;
  BYTE                       byLevel;
  BYTE                       byRes1[2];
  NET_VCA_HUMAN_ATTRIBUTE    struAttribute;
  BYTE                       byRemark[NAME_LEN];
  DWORD                      dwFDDescriptionLen;
  BYTE                       *pFDDescriptionBuffer;
  DWORD                      dwFCAdditionInfoLen;
  BYTE                       *pFCAdditionInfoBuffer;
  DWORD                       dwThermalDataLen;
}NET_VCA_BLOCKLIST_INFO, *LPNET_VCA_BLOCKLIST_INFO;

Members

dwSize
结构体大小
dwRegisterID
名单注册ID号（只读）
dwGroupNo
分组号
byType
非授权名单标志：0- 全部，1- 授权名单(陌生人报警)，2- 非授权名单(人脸比对报警)
byLevel
非授权名单等级：0- 全部，1- 低，2- 中，3- 高
byRes1
保留
struAttribute
人员信息
byRemark
备注信息
dwFDDescriptionLen
人脸库描述数据长度
pFDDescriptionBuffer
人脸库描述数据指针，对应XML数据结构：FDDescription
dwFCAdditionInfoLen
抓拍库附加信息长度
pFCAdditionInfoBuffer
抓拍库附加信息数据指针，对应XML数据结构：FCAdditionInfo
dwThermalDataLen
热成像图片长度，对应struAttribute字段中的pThermalData热成像图片数据长度，仅人脸比对事件上报支持

Remarks

注册非授权名单时分组号有效：指定非授权名单注册到哪个分组，多个分组可以有相同的非授权名单。
修改非授权名单时分组号无效，修改当前非授权名单时会把所有分组中的该非授权名单修改。
删除非授权名单时分组号有效，删除该分组下的全部非授权名单。

byLevel参数越高越容易报警。

See Also

NET_VCA_BLOCKLIST_INFO_ALARM NET_VCA_BLOCKLIST_PARA
NET_VCA_BLOCKLIST_INFO_ALARM_LOG NET_VCA_BLOCKLIST_FASTREGISTER_PARA


NET_VCA_BLOCKLIST_INFO_ALARM

非授权名单报警信息结构体。

struct{
  NET_VCA_BLOCKLIST_INFO       struBlockListInfo;
  DWORD                        dwBlockListPicLen;
  DWORD                        dwFDIDLen;
  BYTE                         *pFDID;
  DWORD                        dwPIDLen;
  BYTE                         *pPID;
  WORD                         wThresholdValue;
  BYTE                         byRes[2];
  BYTE                         *pBuffer1;
}NET_VCA_BLOCKLIST_INFO_ALARM, *LPNET_VCA_BLOCKLIST_INFO_ALARM;

Members

struBlockListInfo
非授权名单基本信息
dwBlockListPicLen
非授权名单人脸子图的长度，为0表示没有图片，大于0表示有图片
dwFDIDLen
人脸库ID长度
pFDID
人脸库ID数据缓冲区指针
dwPIDLen
人脸库图片ID长度
pPID
人脸库图片ID指针
wThresholdValue
人脸库阈值，取值范围：[0,100]
byRes
保留
pBuffer1
非授权名单人脸子图的图片数据

See Also

NET_VCA_FACESNAP_MATCH_ALARM


NET_VCA_BLOCKLIST_INFO_ALARM_LOG

非授权名单信息结构体。

struct{
  NET_VCA_BLOCKLIST_INFO       struBlockListInfo;
  DWORD                        dwBlockListPicID;
  BYTE                         byRes[20];
}NET_VCA_BLOCKLIST_INFO_ALARM_LOG, *LPNET_VCA_BLOCKLIST_INFO_ALARM_LOG;

Members

struBlockListInfo
非授权名单基本信息
dwBlockListPicID
非授权名单人脸子图ID，用于查找图片
byRes
保留

See Also

NET_VCA_FACESNAP_MATCH_ALARM_LOG


NET_VCA_BLOCKLIST_PARA

非授权名单信息结构体。

struct{
  DWORD                       dwSize;
  NET_VCA_BLOCKLIST_INFO      struBlockListInfo;
  DWORD                       dwRegisterPicNum;
  NET_VCA_PICMODEL_RESULT     struRegisterPic[MAX_HUMAN_PICTURE_NUM];
  BYTE                        byRes[40];
}NET_VCA_BLOCKLIST_PARA, *LPNET_VCA_BLOCKLIST_PARA;

Members

dwSize
结构体大小
struBlockListInfo
非授权名单基本参数
dwRegisterPicNum
非授权名单图个数
struRegisterPic
非授权名单图片信息
byRes
保留

See Also

NET_DVR_AddBlockList NET_DVR_UpdateBlockList


NET_VCA_CHAN_IN_PARAM

智能设备通道能力输入参数。

struct{
  BYTE   byVCAType;
  BYTE   byMode;
  BYTE   byRes[2];
}NET_VCA_CHAN_IN_PARAM,*LPNET_VCA_CHAN_IN_PARAM;

Members

byVCAType
智能设备类型，取值定义详见VCA_CHAN_ABILITY_TYPE
byMode
模式，跟byVCAEnable取值有关，如下所示，其他智能类型，该参数无效：

byVCAEnable 智能类型 byMode
VCA_BEHAVIOR_FULL 异常行为识别完整版 enum _BEHAVIOR_SCENE_MODE_TYPE_{
BEHAVIOR_SCENE_DEFAULT = 0, //系统默认
BEHAVIOR_SCENE_WALL = 1, //围墙
BEHAVIOR_SCENE_INDOOR = 2 //室内
}BEHAVIOR_SCENE_MODE_TYPE;
VCA_ATM ATM能力 enum _VCA_CHAN_MODE_TYPE_{
VCA_ATM_PANEL = 0, //ATM面板
VCA_ATM_SURROUND = 1, //ATM环境
VCA_ATM_FACE = 2, //ATM人脸
VCA_ATM_SAFETYCABIN = 3 //ATM防护舱
}VCA_CHAN_MODE_TYPE
VCA_ITS ITS(智能交通事件)能力 enum _TRAFFIC_SCENE_MODE_{
FREEWAY = 0, //高速户外场景
TUNNEL, //高速隧道场景
BRIDGE //高速桥梁场景
}TRAFFIC_SCENE_MODE
VCA_TFS TFS(道路违章取证)能力 enum _TFS_CHAN_MODE_TYPE_{
TFS_CITYROAD = 0, //TFS城市道路
TFS_FREEWAY = 1 //TFS高速道路
}TFS_CHAN_MODE_TYPE
byRes
保留，置为0

See Also

NET_DVR_GetDeviceAbility


NET_VCA_COMBINED_RULE

组合规则参数结构体。

struct{
  BYTE                          byRuleSequence;
  BYTE                          byRes[7];
  DWORD                         dwMinInterval;
  DWORD                         dwMaxInterval;
  NET_VCA_RELATE_RULE_PARAM     struRule1Raram;
  NET_VCA_RELATE_RULE_PARAM     struRule2Raram;
  BYTE                          byRes1[36];
}NET_VCA_COMBINED_RULE,*LPNET_VCA_COMBINED_RULE;

Members

byRuleSequence
规则触发顺序：0- 顺序或逆序触发，1- 顺序触发
byRes
保留，置为0
dwMinInterval
最小时间间隔，单位：秒
dwMaxInterval
最大时间间隔，单位：秒
struRule1Raram
规则1
struRule2Raram
规则2
byRes1
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_CTRLCFG

智能控制信息结构体。

struct{
  DWORD              dwSize;
  NET_VCA_CTRLINFO   struCtrlInfo[MAX_VCA_CHAN];
  BYTE               byRes[16];
}NET_VCA_CTRLCFG,*LPNET_VCA_CTRLCFG;

Members

dwSize
结构体大小
struCtrlInfo
智能通道控制信息
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_VCA_CTRLINFO

智能通道控制信息结构体。

struct{
  BYTE   byVCAEnable;
  BYTE   byVCAType;
  BYTE   byStreamWithVCA;
  BYTE   byMode;
  BYTE   byControlType;
  BYTE   byRes[3];
}NET_VCA_CTRLINFO,*LPNET_VCA_CTRLINFO;

Members

byVCAEnable
是否开启智能：0-否，非0-是
byVCAType
智能通道类型，取值定义详见VCA_CHAN_ABILITY_TYPE
byStreamWithVCA
码流中是否带智能信息：0-否，非0-是
byMode
模式，跟byVCAEnable取值有关，如下所示，其他智能类型，该参数无效：

byVCAEnable 智能类型 byMode
VCA_BEHAVIOR_FULL 异常行为识别完整版 enum _BEHAVIOR_SCENE_MODE_TYPE_{
BEHAVIOR_SCENE_DEFAULT = 0, //系统默认
BEHAVIOR_SCENE_WALL = 1, //围墙
BEHAVIOR_SCENE_INDOOR = 2 //室内
}BEHAVIOR_SCENE_MODE_TYPE;
VCA_ATM ATM能力 enum _VCA_CHAN_MODE_TYPE_{
VCA_ATM_PANEL = 0, //ATM面板
VCA_ATM_SURROUND = 1, //ATM环境
VCA_ATM_FACE = 2, //ATM人脸
VCA_ATM_SAFETYCABIN = 3 //ATM防护舱
}VCA_CHAN_MODE_TYPE
VCA_BEHAVIOR_PRISON 异常行为识别监狱版(监舍) enum _BEHAVIOR_PRISON_MODE_TYPE_{
BEHAVIOR_PRISON = 0, //监所
BEHAVIOR_HEARING = 1, //审讯室
BEHAVIOR_RECFIELD = 2 //放风场
}BEHAVIOR_PRISON_MODE_TYPE
VCA_ITS ITS(智能交通事件)能力 enum _TRAFFIC_SCENE_MODE_{
FREEWAY = 0, //高速户外场景
TUNNEL, //高速隧道场景
BRIDGE //高速桥梁场景
}TRAFFIC_SCENE_MODE
VCA_TFS TFS(道路违章取证)能力 enum _TFS_CHAN_MODE_TYPE_{
TFS_CITYROAD = 0, //TFS城市道路
TFS_FREEWAY = 1 //TFS高速道路
}TFS_CHAN_MODE_TYPE
byControlType
控制类型，按位表示：0-否，1-是
byControlType &1，表示是否启用抓拍功能
byRes
保留，置为0

See Also

NET_VCA_CTRLCFG


NET_VCA_DATABASE_PARAM

数据库参数结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDataBaseID;
  DWORD    dwDataBaseType;
  BYTE     byDataBaseName[NAME_LEN];
  BYTE     byAttribute[64];
  BYTE     byRes[20];
}NET_VCA_DATABASE_PARAM, *LPNET_VCA_DATABASE_PARAM;

Members

dwSize
结构体大小
dwDataBaseID
数据库ID（设备生成，添加时无效，修改和删除时有效）
dwDataBaseType
数据库类型具体见如下定义：
enum _VCA_DATABASE_TYPE_{
  DATABASE_NULL = 0,
  DATABASE_SNAP,
  DATABASE_FACE
}VCA_DATABASE_TYPE
DATABASE_NULL
未知
DATABASE_SNAP
抓拍数据库
DATABASE_FACE
人脸数据库
byDataBaseName
数据库名称
byAttribute
数据库属性
byRes
保留

See Also

NET_DVR_AddDataBase NET_DVR_UpdateDataBase NET_DVR_FindNextDataBase


NET_VCA_DATARECORD_COND

人脸库记录查询条件结构体。

struct{
  DWORD                          dwDataBaseID;
  NET_VCA_HUMANATTRIBUTE_COND    struAttribute;
  BYTE                           byRes[80];
}NET_VCA_DATARECORD_COND, *LPNET_VCA_DATARECORD_COND;

Members

dwDataBaseID
数据库ID
struAttribute
人员信息
byRes
保留

See Also

NET_DVR_InquireFaceDBRecord


NET_VCA_DATARECORD_INFO

数据库记录信息结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwRecordID;
  NET_VCA_HUMAN_ATTRIBUTE    struAttribute;
  NET_VCA_REGISTER_PIC       struRegisterPic;
  BYTE                       byRemark1[NAME_LEN];
  BYTE                       byRemark2[64];
  BYTE                       byRes[32];
}NET_VCA_DATARECORD_INFO, *LPNET_VCA_DATARECORD_INFO;

Members

dwSize
结构体大小
dwRecordID
记录ID（由数据库生成），添加时无效，修改时有效
struAttribute
人员信息
struRegisterPic
人员图片信息
byRemark1
备注信息1
byRemark2
备注信息2
byRes
保留

Remarks

图片信息必须通过检测（NET_DVR_DetectImage）。备注信息即为用户数据信息。

See Also

NET_DVR_AddFaceDBRecord NET_DVR_UpdateFaceDBRecord


NET_VCA_DEFOCUSPARAM

虚焦侦测配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           bySensitiveLevel;
  BYTE                           byRes1[2];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  BYTE                           byRes2[24];
}NET_VCA_DEFOCUSPARAM,*LPNET_VCA_DEFOCUSPARAM;

Members

dwSize
结构体大小
byEnable
使能虚焦侦测功能：0- 否，1- 是
bySensitiveLevel
灵敏度，取值范围：1~100，默认：50。灵敏度越高，越容易报警
byRes1
保留，置为0
struHandleException
异常处理方式
byRes2
保留，置为0

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_VCA_DELETE_DATABASE_COND

数据库删除条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDataBaseType;
  DWORD    dwDataBaseID;
  BYTE     byRes[64];
}NET_VCA_DELETE_DATABASE_COND, *LPNET_VCA_DELETE_DATABASE_COND;

Members

dwSize
结构体大小
dwDataBaseType
数据库类型，具体见如下定义：
enum _VCA_DATABASE_TYPE_{
  DATABASE_NULL = 0,
  DATABASE_SNAP,
  DATABASE_FACE
}VCA_DATABASE_TYPE
DATABASE_NULL
未知
DATABASE_SNAP
抓拍数据库
DATABASE_FACE
人脸数据库
dwDataBaseID
数据库ID
byRes
保留

See Also

NET_DVR_DeleteDataBase


NET_VCA_DELETE_RECORD_COND

人脸库记录删除条件结构体。

struct{
  DWORD                               dwDeleteType;
  NET_VCA_DELETE_RECORD_COND_UNION    uDeleteCond;
  BYTE                                byRes[40];
}NET_VCA_DELETE_RECORD_COND, *LPNET_VCA_DELETE_RECORD_COND;

Members

dwDeleteType
删除记录类型，具体定义见下表：
enum _VCA_DELETE_RECORD_TYPE_{
  DELETE_RECORD_SINGLE  = 0,
  DELETE_RECORD_BATCH
}VCA_DELETE_RECORD_TYPE
DELETE_RECORD_SINGLE
单条删除
DELETE_RECORD_BATCH
批量删除
uDeleteCond
删除参数
byRes
保留

See Also

NET_DVR_DeleteFaceDBRecord


NET_VCA_DELETE_RECORD_COND_UNION

删除参数联合体。

union{
  NET_VCA_HUMANATTRIBUTE_COND    struAttribute;
  DWORD                          dwRecordID;
}NET_VCA_DELETE_RECORD_COND_UNION, *LPNET_VCA_DELETE_RECORD_COND_UNION;

Members

struAttribute
人员信息（批量删除条件参数）
dwRecordID
记录ID（单条删除条件参数)

See Also

NET_VCA_DELETE_RECORD_COND


NET_VCA_DELETE_SNAPRECORD_COND

抓拍数据库记录删除条件结构体。

struct{
  DWORD                                   dwDeleteType;
  NET_VCA_DELETE_SNAPRECORD_COND_UNION    uDeleteCond;
  BYTE                                    byRes[40];
}NET_VCA_DELETE_SNAPRECORD_COND, *LPNET_VCA_DELETE_SNAPRECORD_COND;

Members

dwDeleteType
删除记录类型，具体定义见下表：
enum _VCA_DELETE_RECORD_TYPE_{
  DELETE_RECORD_SINGLE  = 0,
  DELETE_RECORD_BATCH
}VCA_DELETE_RECORD_TYPE
DELETE_RECORD_SINGLE
单条删除
DELETE_RECORD_BATCH
批量删除
uDeleteCond
删除参数
byRes
保留

See Also

NET_DVR_DeleteSnapDBRecord


NET_VCA_DELETE_SNAPRECORD_COND_UNION

抓拍库删除参数联合体。

union{
  NET_VCA_INQUIRE_SNAPDB_COND    struAttribute;
  DWORD                          dwRecordID;
}NET_VCA_DELETE_SNAPRECORD_COND_UNION, *LPNET_VCA_DELETE_SNAPRECORD_COND_UNION;

Members

struAttribute
批量删除条件参数
dwRecordID
单条删除条件参数（记录ID）

See Also

NET_VCA_DELETE_SNAPRECORD_COND


NET_VCA_DEV_ABILITY

智能设备能力集结构体。

struct{
  DWORD   dwSize;
  BYTE    byVCAChanNum;
  BYTE    byPlateChanNum;
  BYTE    byBBaseChanNum;
  BYTE    byBAdvanceChanNum;
  BYTE    byBFullChanNum;
  BYTE    byATMChanNum;
  BYTE    byPDCChanNum;
  BYTE    byITSChanNum;
  BYTE    byBPrisonChanNum;
  BYTE    byFSnapChanNum;
  BYTE    byFSnapRecogChanNum;
  BYTE    byFRetrievalChanNum;
  BYTE    bySupport;
  BYTE    byFRecogChanNum;
  BYTE    byBPPerimeterChanNum;
  BYTE    byTPSChanNum;
  BYTE    byTFSChanNum;
  BYTE    byFSnapBFullChanNum;
  BYTE    byHeatMapChanNum;
  BYTE    bySmartVehicleNum;
  BYTE    bySmartHVTNum;
  BYTE    bySmartNum;
  BYTE    byVehicleNum;
  BYTE    bySmartRoadDetectionNum;
  BYTE    bySmartFaceDetectionNum;
  BYTE    bySmartHeatMapNum;
  BYTE    byHumanRecognitionNum;
  BYTE    byEdcationStudentNum;
  BYTE    byRoadDetectionNum;
  BYTE    byPersonDensityDetection;
  BYTE    bySafetyHelmetDetection;
  BYTE    byRes[9];
}NET_VCA_DEV_ABILITY,*LPNET_VCA_DEV_ABILITY;

Members

dwSize
结构体大小
byVCAChanNum
智能通道个数
byPlateChanNum
车牌通道个数
byBBaseChanNum
行为基本版个数
byBAdvanceChanNum
行为高级版个数
byBFullChanNum
行为完整版个数
byATMChanNum
智能ATM通道个数
byPDCChanNum
人数统计通道个数
byITSChanNum
交通事件通道个数
byBPrisonChanNum
行为监狱版(监舍)通道个数
byFSnapChanNum
人脸抓拍通道个数
byFSnapRecogChanNum
人脸抓拍和识别通道个数
byFRetrievalChanNum
人脸后检索个数
bySupport
能力，位与结果为0表示不支持，1表示支持
bySupport&0x1，表示是否支持智能跟踪
bySupport&0x2，表示是否支持128路取流扩展
byFRecogChanNum
人脸抓拍通道个数
byBPPerimeterChanNum
行为监狱版(周界)通道个数
byTPSChanNum
交通诱导通道个数
byTFSChanNum
道路违章取证（违章事件）通道个数
byFSnapBFullChanNum
人脸抓拍和异常行为识别通道个数
byHeatMapChanNum
热度图通道个数
bySmartVehicleNum
SMART事件+车辆检测通道个数
bySmartHVTNum
SMART事件+混行检测通道个数
bySmartNum
SMART事件个数
byVehicleNum
车辆检测通道个数
bySmartRoadDetectionNum
SMART事件+道路监控通道个数
bySmartFaceDetectionNum
SMART事件+人脸侦测通道个数
bySmartHeatMapNum
SMART事件+热度图通道个数
byHumanRecognitionNum
人体目标识别通道个数
byEdcationStudentNum
教育录播（学生起来检测&&学生人数统计）支持的通道数
byRoadDetectionNum
道路监控通道个数
byPersonDensityDetection
人员密度检测通道个数
bySafetyHelmetDetection
安全帽检测通道个数
byRes
保留，置为0

Remarks

此处的SMART事件包括除音频异常侦测之外的所有类型事件：

See Also

NET_DVR_GetDeviceAbility


NET_VCA_DEV_INFO

前端设备信息结构体。

struct{
  NET_DVR_IPADDR   struDevIP;
  WORD             wPort;
  BYTE             byChannel;
  BYTE             byIvmsChannel;
}NET_VCA_DEV_INFO,*LPNET_VCA_DEV_INFO;

Members

struDevIP
报警通道对应设备的IP地址
wPort
报警通道对应设备的端口号
byChannel
报警通道对应设备的通道号，参数值即表示通道号。比如，byChannel=1，表示通道1。
byIvmsChannel
SDK接入设备的通道号

Remarks

如下图所示，我们SDK对接设备A。

  • 当接入设备(IPC/DVR/DVS/IVMS等)的模拟通道报警时，struDevIP、wPort为接入设备的IP地址和端口号，byChannel、byIvmsChannel均为报警对应模拟通道的通道号。
  • 当接入设备(HDVR/NVR/IVMS)的数字通道（IP通道）报警时，struDevIP、wPort、byChannel表示数字通道前端接入设备的IP、端口和通道号，byIvmsChannel为数字通道。如图，B1设备通道1和B2设备的通道1、2分别接入A作为通道1、2、3。则struDevIP、wPort、byChannel表示的是B1或者B2的IP地址、端口号和通道号，byIvmsChannel表示A设备自己的数字通道号。比如B2设备的通道2发生了异常行为识别报警信息，则SDK接收到的报警信息中，则struDevIP=192.168.0.12，wPort=8002，byChannel=2，byIvmsChannel=3。


NET_VCA_DRAW_MODE

智能叠加模式参数结构体。

struct{
  DWORD    dwSize;
  BYTE     byDspAddTarget;
  BYTE     byDspAddRule;
  BYTE     byDspPicAddTarget;
  BYTE     byDspPicAddRule;
  BYTE     byRes[4];
}NET_VCA_DRAW_MODE, *LPNET_VCA_DRAW_MODE;

Members

dwSize
结构体大小
byDspAddTarget
编码是否叠加目标：0-不叠加，非0-叠加
byDspAddRule
编码是否叠加规则：0-不叠加，非0-叠加
byDspPicAddTarget
抓图是否叠加目标：0-不叠加，非0-叠加
byDspPicAddRule
抓图是否叠加规则：0-不叠加，非0-叠加
byRes
保留，置为0

See Also

NET_DVR_GetVCADrawMode NET_DVR_SetVCADrawMode


NET_VCA_ENTER_REGION

ATM进入区域参数结构体。

struct{
  DWORD             dwSize;
  BYTE              byEnable;
  BYTE              byRes1[3];
  NET_VCA_POLYGON   struPolygon;
  BYTE              byRes2[16];
}NET_VCA_ENTER_REGION, * LPNET_VCA_ENTER_REGION;

Members

dwSize
结构体大小
byEnable
是否激活, 0-否，非0-是
byRes1
保留，置为0
struPolygon
进入区域参数
byRes2
保留，置为0

See Also

NET_IVMS_ENTER_REGION


NET_VCA_EVENT_UNION

警戒规则参数结构体。

union{
  DWORD                          uLen[23];
  NET_VCA_TRAVERSE_PLANE         struTraversePlane;
  NET_VCA_AREA                   struArea;
  NET_VCA_INTRUSION              struIntrusion;
  NET_VCA_LOITER                 struLoiter;
  NET_VCA_TAKE_LEFT              struTakeTeft;
  NET_VCA_PARKING                struParking;
  NET_VCA_RUN                    struRun;
  NET_VCA_HIGH_DENSITY           struHighDensity;
  NET_VCA_VIOLENT_MOTION         struViolentMotion;
  NET_VCA_REACH_HIGHT            struReachHight;
  NET_VCA_GET_UP                 struGetUp;
  NET_VCA_LEFT                   struLeft;
  NET_VCA_TAKE                   struTake;
  NET_VCA_HUMAN_ENTER            struHumanEnter;
  NET_VCA_OVER_TIME              struOvertime;
  NET_VCA_STICK_UP               struStickUp;
  NET_VCA_SCANNER                struScanner;
  NET_VCA_LEAVE_POSITION         struLeavePos;
  NET_VCA_TRAIL                  struTrail;
  NET_VCA_FALL_DOWN              struFallDown;
  NET_VCA_AUDIO_ABNORMAL         struAudioAbnormal;
  NET_VCA_ADV_REACH_HEIGHT       struAdvReachHeight;
  NET_VCA_TOILET_TARRY           struToiletTarry;
  NET_VCA_YARD_TARRY             struYardTarry;
  NET_VCA_ADV_TRAVERSE_PLANE     struAdvTraversePlane;
  NET_VCA_LECTURE                struLecture;
  NET_VCA_ANSWER                 struAnswer;
  NET_VCA_STANDUP                struStandUp;
  NET_VCA_PEOPLENUM_CHANGE       struPeopleNumChange;
  NET_VCA_SPACING_CHANGE         struSpacingChange;
  NET_VCA_COMBINED_RULE          struCombinedRule;
  NET_VCA_SIT_QUIETLY            struSitQuietly;
  NET_VCA_HIGH_DENSITY_STATUS    struHighDensityStatus;
  NET_VCA_RUNNING                struRunning;
  NET_VCA_RETENTION              struRetention;
  NET_VCA_BLACKBOARD_WRITE       struBlackboardWrite;
  NET_VCA_PLAY_CELLPHONE       struPlayCellphone;
  NET_VCA_DURATION       struDruation;
}NET_VCA_EVENT_UNION,*LPNET_VCA_EVENT_UNION;

Members

uLen
联合体大小，4*23共92字节
struTraversePlane
穿越警戒面参数
struArea
进入/离开区域参数
struIntrusion
入侵参数
struLoiter
徘徊参数
struTakeTeft
丢包/捡包参数
struParking
停车参数
struRun
奔跑参数
struHighDensity
人员聚集参数，人员聚集度超过设置的阈值时设备上传报警信息
struViolentMotion
剧烈运动
struReachHight
攀高
struGetUp
起身（重点人员起身）
struLeft
丢包
struTake
捡包
struHumanEnter
人员进入
struOvertime
操作超时
struStickUp
贴纸条(异物粘贴)
struScanner
读卡器参数
struLeavePos
离岗参数
struTrail
尾随参数
struFallDown
倒地参数
struAudioAbnormal
声强突变参数
struAdvReachHeight
折线攀高参数
struToiletTarry
如厕超时参数
struYardTarry
放风场滞留参数
struAdvTraversePlane
折线警戒面参数
struLecture
授课事件参数
struAnswer
回答问题事件参数
struStandUp
起立参数
struPeopleNumChange
人数变化参数
struSpacingChange
间距变化参数
struCombinedRule
组合规则参数
struSitQuietly
一动不动事件参数
struHighDensityStatus
人员聚集状态，设备按照设置的时间间隔上传实时的人员聚集状态信息，该时间间隔不支持通过SDK配置，需要通过服务器的配置文件来修改，默认：10s
struRunning
人员奔跑检测
struRetention
人员滞留检测
struBlackboardWrite
板书参数
struPlayCellphone
玩手机检测参数
struDruation
持续报警参数

See Also

NET_DVR_SEARCH_EVENT_RET NET_IVMS_ONE_RULE NET_VCA_ONE_RULE NET_VCA_ONE_RULE_V42 NET_VCA_RULE_INFO


NET_VCA_FACEMATCH_PICCOND

非授权名单比对图片查询条件。

struct{
  DWORD    dwSize;
  DWORD    dwSnapFaceID;
  DWORD    dwBlockListID;
  DWORD    dwBlockListFaceID;
  BYTE     byRes[20];
}NET_VCA_FACEMATCH_PICCOND, *LPNET_VCA_FACEMATCH_PICCOND;

Members

dwSize
结构体大小
dwSnapFaceID
抓拍人脸子图ID
dwBlockListID
匹配的非授权名单ID
dwBlockListFaceID
比对的非授权名单人脸子图ID
byRes
保留

Remarks

搜索条件中的抓拍人脸子图ID(dwSnapFacePicID)、匹配的非授权名单ID(dwRegisterID)和比对的非授权名单人脸子图ID（dwBlockListPicID）可从查询结果 (NET_DVR_FindNextFaceMatchAlarm)中获得，且三个条件缺一不可，否则返回失败，无法查询。

See Also

NET_DVR_GetFaceMatchPic


NET_VCA_FACEMATCH_PICTURE

非授权名单比对查找图片结果。

struct{
  DWORD    dwSize;
  DWORD    dwSnapFaceLen;
  DWORD    dwBlockListFaceLen;
  BYTE     byRes[20];
  DWORD    *pSnapFace;
  BYTE     *pBlockListFace;
}NET_VCA_FACEMATCH_PICTURE, *LPNET_VCA_FACEMATCH_PICTURE;

Members

dwSize
结构体大小
dwSnapFaceLen
抓拍人脸子图长度
dwBlockListFaceLen
比对的非授权名单人脸子图长度
byRes
保留
pSnapFace
抓拍人脸子图的图片数据
pBlockListFace
比对的非授权名单人脸子图数据

See Also

NET_DVR_GetFaceMatchPic


NET_VCA_FACESNAP_ADDINFO

人脸抓拍附加信息结构体

struct{
  NET_VCA_RECT           struFacePicRect;
  int                    iSwingAngle;
  int                    iTiltAngle;
  DWORD                  dwPupilDistance;
  BYTE                   byBlockingState;
  BYTE                   byFaceSnapThermometryEnabled;
  BYTE                   byIsAbnomalTemperature;
  BYTE                   byThermometryUnit;
  NET_DVR_TIME_EX        struEnterTime;
  NET_DVR_TIME_EX        struExitTime;
  float                  fFaceTemperature;
  float                  fAlarmTemperature;
  DWORD                  dwThermalPicLen;
  BYTE                   *pThermalPicBuff;
  BYTE                   szCustomChanID[65];
  BYTE                   byRes1[3];
  NET_DVR_LLPOS_PARAM    struLLPos;
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  char*                  pEventNotificationAlertBuff;
  #else
  char*                  pEventNotificationAlertBuff;
  BYTE                   byRes2[4];
  #endif
  DWORD                  dwEventNotificationAlertLen;
  BYTE                   byRes[340];
}NET_VCA_FACESNAP_ADDINFO, *LPNET_VCA_FACESNAP_ADDINFO;

Members

struFacePicRect
人脸矩形框，该坐标为人脸小图(头肩照)中人脸的坐标
iSwingAngle
旋转角, 取值范围：-90~90度
iTiltAngle
俯仰角, 取值范围：-90~90度
dwPupilDistance
瞳距，范围为：最小值为10像素，最大值为当前分辨率宽度/1.6
byBlockingState
目标遮挡状态：0-表示“未知”（算法不支持），1-无遮挡，2-瞬时轻度遮挡，3-持续轻度遮挡，4-严重遮挡
byFaceSnapThermometryEnabled
人脸抓拍测温使能：1-开启，0-关闭
byIsAbnomalTemperature
人脸抓拍测温是否温度异常：1-是，0-否
byThermometryUnit
测温单位: 0-摄氏度（℃），1-华氏度（℉），2-开尔文(K)
struEnterTime
最佳抓拍下进入时间
struExitTime
最佳抓拍下离开时间
fFaceTemperature
人脸温度（-20.0℃~150.0℃，精确到小数点后1位）
fAlarmTemperature
测温报警警阈值（精确到小数点后1位）
dwThermalPicLen
热成像图片长度
pThermalPicBuff
热成像图片指针
szCustomChanID
自定义监控点通道号
byRes1
保留字节
struLLPos
设备经纬度位置信息
pEventNotificationAlertBuff
对应报警事件JSON报文("eventType"为"faceCapture")
byRes2
保留字节。Win64及Linux64下指针为8字节，无此参数
dwEventNotificationAlertLen
报警事件JSON报文数据长度
byRes
保留字节

See Also

NET_VCA_FACESNAP_RESULT


NET_VCA_FACESNAP_INFO_ALARM

人脸抓拍信息结构体。

struct{
  DWORD             dwRelativeTime;
  DWORD             dwAbsTime;
  DWORD             dwSnapFacePicID;
  DWORD             dwSnapFacePicLen;
  NET_VCA_DEV_INFO  struDevInfo;
  BYTE              byFaceScore;
  BYTE              bySex;
  BYTE              byGlasses;
  BYTE              byAge;
  BYTE              byAgeDeviation;
  BYTE              byAgeGroup;
  BYTE              byFacePicQuality;
  BYTE              byRes;
  DWORD             dwUIDLen;
  BYTE              *pUIDBuffer;
  float             fStayDuration;
  BYTE              *pBuffer1;
}NET_VCA_FACESNAP_INFO_ALARM, *LPNET_VCA_FACESNAP_INFO_ALARM;

Members

dwRelativeTime
相对时标
dwAbsTime
绝对时标
dwSnapFacePicID
抓拍人脸图ID
dwSnapFacePicLen
抓拍人脸子图的长度，为0表示没有图片，大于0表示有图片
struDevInfo
前端设备信息
byFaceScore
人脸评分，指人脸子图的质量的评分，取值范围：0~100
bySex
性别：0- 未知，1- 男，2- 女
byGlasses
是否带眼镜：0- 未知，1- 是，2- 否
byAge
年龄
byAgeDeviation
年龄误差值，如byAge为15且byAgeDeviation为1，则表示实际人脸图片年龄的为14~16之间
byAgeGroup
年龄段，详见枚举类型：HUMAN_AGE_GROUP_ENUM
byFacePicQuality
脸子图图片质量评估等级：0-低等质量，1-中等质量，2-高等质量，该质量评估算法仅针对人脸子图单张图片，具体是通过姿态、清晰度、遮挡情况、光照情况等可影响人脸抓拍性能的因素综合评估的结果
byRes
保留
dwUIDLen
上传报警的标识长度
pUIDBuffer
缓冲区指针，存放上传报警的标识信息，信息相同表示同一次报警上传的结果
fStayDuration
停留画面中时间(单位：秒)
pBuffer1
抓拍人脸子图的图片数据

Remarks

  • 人脸比对的匹配图片有多张的时候，多次回调分配获取每一张图片，通过该结构体里面的dwUIDLen和pUIDBuffer判断是否是同一次比对结果，当接收到同一个pUIDbuffer的报警匹配图片的张数等于byMatchPicNum(NET_VCA_FACESNAP_MATCH_ALARM结构体中的参数)时，表示这个报警的匹配图片信息接收结束。如果在一段时间内接收到的匹配图片的张数不等于byMatchPicNum时，上层应该设置一个超时时间，不再继续等待这个报警后续的匹配信息，建议超时时间1分钟。dwUIDLen为0时则不做匹配处理。
  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_VCA_FACESNAP_MATCH_ALARM


NET_VCA_FACESNAP_INFO_ALARM_LOG

人脸抓拍信息结构体。

struct{
  DWORD             dwRelativeTime;
  DWORD             dwAbsTime;
  DWORD             dwSnapFacePicID;
  NET_VCA_DEV_INFO  struDevInfo;
  BYTE              byRes[20];
}NET_VCA_FACESNAP_INFO_ALARM_LOG, *LPNET_VCA_FACESNAP_INFO_ALARM_LOG;

Members

dwRelativeTime
相对时标
dwAbsTime
绝对时标
dwSnapFacePicID
抓拍人脸图ID
struDevInfo
前端设备信息
byRes
保留

Remarks

从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
#define GET_YEAR(_time_) (((_time_)>>26) + 2000)
#define GET_MONTH(_time_) (((_time_)>>22) & 15)
#define GET_DAY(_time_) (((_time_)>>17) & 31)
#define GET_HOUR(_time_) (((_time_)>>12) & 31)
#define GET_MINUTE(_time_) (((_time_)>>6) & 63)
#define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_VCA_FACESNAP_MATCH_ALARM_LOG


NET_VCA_FACESNAP_MATCH_ALARM

人脸比对结果报警上传结构体。

struct{
  DWORD                          dwSize;
  float                          fSimilarity;
  NET_VCA_FACESNAP_INFO_ALARM    struSnapInfo;
  NET_VCA_BLOCKLIST_INFO_ALARM   struBlockListInfo;
  char                           sStorageIP[16];
  WORD                           wStoragePort;
  BYTE                           byMatchPicNum;
  BYTE                           byPicTransType;
  DWORD                          dwSnapPicLen;
  BYTE                           *pSnapPicBuffer;
  NET_VCA_RECT                   struRegion;
  DWORD                          dwModelDataLen;
  BYTE                           *pModelDataBuffer;
  BYTE                           byModelingStatus;
  BYTE                           byLivenessDetectionStatus;
  char                           cTimeDifferenceH;
  char                           cTimeDifferenceM;
  BYTE                           byMask;
  BYTE                           bySmile;
  BYTE                           byContrastStatus;
  BYTE                           byBrokenNetHttp;
}NET_VCA_FACESNAP_MATCH_ALARM, *LPNET_VCA_FACESNAP_MATCH_ALARM;

Members

dwSize
结构体大小
fSimilarity
相似度，取值范围：[0.001,1]
struSnapInfo
人脸抓拍上传信息
struBlockListInfo
人脸比对报警信息
sStorageIP
存储服务IP地址
wStoragePort
存储服务端口号
byMatchPicNum
匹配图片的数量，0是保留值（不支持该字段的设备，该值默认为0；支持该字段的设备，该值为0时表示后续没有匹配的图片信息）
byPicTransType
图片数据传输方式: 0- 二进制，1- URL路径(HTTP协议的图片URL)
dwSnapPicLen
设备识别抓拍图片长度
pSnapPicBuffer
设备识别抓拍图片指针
struRegion
设备识别抓拍图片中人脸子图坐标，可以根据该坐标从抓拍图片上抠取人脸小图片
dwModelDataLen
建模数据长度
pModelDataBuffer
建模数据指针
byModelingStatus
建模状态
byLivenessDetectionStatus
活体检测状态：0-保留，1-未知（检测失败），2-非真人人脸，3-真人人脸，4-未开启活体检测
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区，0xff无效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，0xff无效
byMask
抓拍图是否戴口罩，0-保留，1-未知，2-不戴口罩，3-戴口罩
bySmile
抓拍图是否微笑，0-保留，1-未知，2-不微笑，3-微笑
byContrastStatus
比对结果，0-保留，1-比对成功，2-比对失败
byBrokenNetHttp
断网续传标志位：0- 不是重传数据，1- 重传数据

Remarks

  • 实时抓拍与人脸名单中的图片进行比对，同时输出抓拍信息和人脸名单相关信息（包括比对出的相似度最高的人脸图片）。
  • 人脸比对的匹配图片有多张的时候，多次回调分配获取每一张图片，通过struSnapInfo中的dwUIDLen和pUIDBuffer判断是否是同一次比对结果，当接收到同一个pUIDbuffer的报警匹配图片的张数等于byMatchPicNum时，表示这个报警的匹配图片信息接收结束。如果在一段时间内接收到的匹配图片的张数不等于byMatchPicNum时，上层应该设置一个超时时间，不再继续等待这个报警后续的匹配信息，建议超时时间1分钟。
  • dwUIDLen为0的情况，上层则不做匹配信息的流程处理，则认为是老设备上传的报警按照以前的处理流程接口报警信息。
  • 这个结构体扩展的时差，是对应NET_VCA_FACESNAP_INFO_ALARM中的绝对时标

See Also

NET_DVR_SetDVRMessageCallBack_V31


NET_VCA_FACESNAP_MATCH_ALARM_LOG

人脸比对报警结果信息。

struct{
  DWORD                               dwSize;
  float                               fSimilarity;
  NET_VCA_FACESNAP_INFO_ALARM_LOG     struSnapInfoLog;
  NET_VCA_BLOCKLIST_INFO_ALARM_LOG    struBlockListInfoLog;
  BYTE                                byRes[60];
}NET_VCA_FACESNAP_MATCH_ALARM_LOG, *LPNET_VCA_FACESNAP_MATCH_ALARM_LOG;

Members

dwSize
结构体大小
fSimilarity
相似度，取值范围：[0.001,1]
struSnapInfoLog
人脸抓拍信息
struBlockListInfoLog
人脸名单信息
byRes
保留

See Also

NET_DVR_FindNextFaceMatchAlarm


NET_VCA_FACESNAP_RAWDATA_ALARM

人脸比对报警上传（Json透传方式）结构体。

struct{
  DWORD               dwSize;
  DWORD               dwRelativeTime;
  DWORD               dwAbsTime;
  NET_VCA_DEV_INFO    struDevInfo;
  DWORD               dwJsonDataLen;
  BYTE                *pJsonBuff;
  BYTE                byRes[256];
}NET_VCA_FACESNAP_RAWDATA_ALARM, *LPNET_VCA_FACESNAP_RAWDATA_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
struDevInfo
前端设备信息，包括设备IP、端口、通道号等
dwJsonDataLen
json数据定义信息长度，0表示没有数据
pJsonBuff
json数据指针，存放上传的报警信息数据，具体结构请参见人脸比对报警信息Json数据结构
byRes
保留

Remarks

  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_StartListen_V30


NET_VCA_FACESNAP_RESULT

人脸抓拍结果结构体。

struct{
  DWORD                    dwSize;
  DWORD                    dwRelativeTime;
  DWORD                    dwAbsTime;
  DWORD                    dwFacePicID;
  DWORD                    dwFaceScore;
  NET_VCA_TARGET_INFO      struTargetInfo;
  NET_VCA_RECT             struRect;
  NET_VCA_DEV_INFO         struDevInfo;
  DWORD                    dwFacePicLen;
  DWORD                    dwBackgroundPicLen;
  BYTE                     bySmart;
  BYTE                     byAlarmEndMark;
  BYTE                     byRepeatTimes;
  BYTE                     byUploadEventDataType;
  NET_VCA_HUMAN_FEATURE    struFeature;
  float                    fStayDuration;
  char                     sStorageIP[16];
  WORD                     wStoragePort;
  WORD                     wDevInfoIvmsChannelEx;
  BYTE                     byFacePicQuality;
  BYTE                     byUIDLen;
  BYTE                     byLivenessDetectionStatus;
  BYTE                     byAddInfo;
  BYTE                     *pUIDBuffer;
  BYTE                     *pAddInfoBuffer;
  BYTE                     byTimeDiffFlag;
  char                     cTimeDifferenceH;
  char                     cTimeDifferenceM;
  BYTE                     byBrokenNetHttp;
  BYTE                     *pBuffer1;
  BYTE                     *pBuffer2;
}NET_VCA_FACESNAP_RESULT, *LPNET_VCA_FACESNAP_RESULT;

Members

dwSize
结构体大小
dwRelativeTime
相对时标
dwAbsTime
绝对时标
dwFacePicID
人脸图ID
dwFaceScore
人脸评分，范围：0~100
struTargetInfo
报警目标信息
struRect
人脸子图区域
struDevInfo
前端设备信息
dwFacePicLen
人脸子图的长度，为0表示没有图片，大于0表示有图片
dwBackgroundPicLen
背景图的长度，为0表示没有图片，大于0表示有图片(保留)
bySmart
0- iDS设备返回（默认值），1- SMART设备返回
byAlarmEndMark
报警结束标记：0- 保留，1- 结束标记（该字段结合人脸ID字段使用，表示该ID对应的下报警结束，用于判断报警结束，提取识别图片数据中，清晰度最高的图片）
byRepeatTimes
重复报警次数：0-无意义
byUploadEventDataType
人脸图片数据长传方式：0-二进制数据，1-URL
struFeature
人体属性
fStayDuration
停留画面中时间（单位：秒）
sStorageIP
存储服务IP地址
wStoragePort
存储服务端口号
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byFacePicQuality
人脸子图图片质量评估等级，0-低等质量，1-中等质量，2-高等质量；
byUIDLen
上传报警的标识长度
byLivenessDetectionStatus
活体检测状态: 0-保留，1-未知(检测失败)，2-非真人人脸
byAddInfo
附加信息标识位：0-无附加信息，1-有附加信息
pUIDBuffer
标识指针，byUIDLen为1时有效，通过byUIDLen和pUIDBuffer的内容判断是否是同一次抓拍结果
pAddInfoBuffer
附加信息指针，byAddInfo为1时有效，指向NET_VCA_FACESNAP_ADDINFO结构体，指针指向内存大小为固定大小即NET_VCA_FACESNAP_ADDINFO结构体的大小
byTimeDiffFlag
时差字段是否有效：0-时差无效，1-时差有效
cTimeDifferenceH
与UTC的时差（小时），-12 ... +14，+表示东区,，byTimeDiffFlag为1时有效
cTimeDifferenceM
与UTC的时差（分钟），-30, 30, 45，+表示东区，byTimeDiffFlag为1时有效
byBrokenNetHttp
断网续传标志位：0-非重传数据，1-重传数据
*pBuffer1
人脸子图的图片数据
*pBuffer2
背景图的图片数据

Remarks

  • 人脸抓拍摄像机一般只上传背景图（dwBackgroundPicLen、pBuffer2）和人脸子图区域（struRect），人脸子图需要应用层根据区域从背景图截取。而人脸分析仪(iVMS6200/F)一般只上传人脸子图（dwFacePicLen、pBuffer1）和人脸子图ID（dwFacePicID），背景图需要根据人脸子图ID通过接口NET_DVR_FindBackgroundPic获取。
  • 新增人脸抓拍质量评分机制与原有的人脸评分区别： 原有的人脸评分是在人脸抓拍中实现，目的是确保一次人脸抓拍中获取最好的图像效果，是一个相对图像质量的评分；新增人脸抓拍质量评分机制是针对已经抓拍完成的人脸图片，使用图像算法对图像中人脸，人眼，肩宽等相对重要的信息进行分析，按照统一的标准对人脸图片效果质量进行评分。
  • 从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

    • See Also

    NET_DVR_SetDVRMessageCallBack_V30 NET_DVR_StartListen_V30


NET_VCA_FACESNAPCFG

人脸抓拍规则参数结构体。

struct{
  DWORD                        dwSize;
  BYTE                         bySnapTime;
  BYTE                         bySnapInterval;
  BYTE                         bySnapThreshold;
  BYTE                         byGenerateRate;
  BYTE                         bySensitive;
  BYTE                         byReferenceBright;
  BYTE                         byMatchType;
  BYTE                         byMatchThreshold;
  NET_DVR_JPEGPARA             struPictureParam;
  NET_VCA_SINGLE_FACESNAPCFG   struRule[MAX_RULE_NUM];
  WORD                         wFaceExposureMinDuration;
  BYTE                         byFaceExposureMode;
  BYTE                         byBackgroundPic;
  DWORD                        dwValidFaceTime;
  DWORD                        dwUploadInterval;
  DWORD                        dwFaceFilteringTime;
  BYTE                         byRes2[84];
}NET_VCA_FACESNAPCFG, *LPNET_VCA_FACESNAPCFG;

Members

dwSize
结构体大小
bySnapTime
单个目标人脸的抓拍次数，取值范围：0~10，上传评分最高的一张
bySnapInterval
抓拍间隔，单位：帧
bySnapThreshold
抓拍阈值，取值范围：0-100
byGenerateRate
目标生成速度，取值范围：[1, 5]
bySensitive
目标检测灵敏度，取值范围：[1, 5]
byReferenceBright
参考亮度，取值范围：[0,100]
byMatchType
比对报警模式：0-目标消失后报警，1-实时报警
byMatchThreshold
实时比对阈值，取值范围：0~100
struPictureParam
图片规格结构（图片分辨率和图片质量）
struRule
人脸抓拍规则
wFaceExposureMinDuration
人脸曝光最短持续时间，单位：秒，范围：1~3600，默认：60
byFaceExposureMode
人脸曝光使能：1- 关闭，2- 开启，0- 自动（根据人脸判断）
byBackgroundPic
背景图上传使能：0- 默认值（开启），1- 禁止
dwValidFaceTime
有效人脸最短持续时间，单位：秒
dwUploadInterval
人脸抓拍统计数据上传间隔时间，单位：秒，默认为900秒
dwFaceFilteringTime
人脸停留时间过滤，取值范围：0~100，单位：秒，默认为5秒，0秒表示不过滤
byRes2
保留

Remarks

  • 评分大于抓拍阈值时，才进行抓拍。
  • 设备是否支持人脸抓拍规则配置或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<FaceSnap>。
  • 人脸抓拍结果通过报警布防或者报警监听方式获取，对应报警信息类型：COMM_UPLOAD_FACESNAP_RESULT，报警信息结构体：NET_VCA_FACESNAP_RESULT。

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_VCA_FALL_DOWN

倒地参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  WORD                wDuration;
  BYTE                bySensitivity;
  BYTE                byHeightThreshold;
  BYTE                byRes[4];
}NET_VCA_FALL_DOWN, *LPNET_VCA_FALL_DOWN;

Members

struRegion
区域范围
wDuration
触发事件阈值，单位：秒，取值范围：[1,3600]
bySensitivity
灵敏度，取值范围：[1,5]
byHeightThreshold
高度阈值，取值范围：[0,250]，默认：90，单位：厘米
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_FAST_DATARECORD_INFO

数据库记录(快速添加)信息结构体。

struct{
  DWORD                      dwSize;
  NET_VCA_HUMAN_ATTRIBUTE    struAttribute;
  BYTE                       byRemark1[NAME_LEN];
  BYTE                       byRemark2[64];
  DWORD                      dwImageLen;
  BYTE                       byRes[80];
  BYTE                       *pImage;
}NET_VCA_FAST_DATARECORD_INFO, *LPNET_VCA_FAST_DATARECORD_INFO;

Members

dwSize
结构体大小
struAttribute
人员信息
byRemark1
备注信息1
byRemark2
备注信息2
dwImageLen
图像数据长度
byRes
保留
pImage
图像数据

Remarks

图片信息无需通过检测。

See Also

NET_DVR_FastAddFaceDBRecord


NET_VCA_FD_IMAGE_CFG

图片信息结构体。

struct{
  DWORD    dwWidth;
  DWORD    dwHeight;
  DWORD    dwImageLen;
  BYTE     byRes[20];
  BYTE     *pImage;
}NET_VCA_FD_IMAGE_CFG, *LPNET_VCA_FD_IMAGE_CFG;

Members

dwWidth
图像宽度
dwHeight
图像高度
dwImageLen
图像数据长度
byRes
保留
pImage
保存图像数据的缓冲区，JPEG或者BMP图片

See Also

NET_VCA_FD_PROCIMG_CFG


NET_VCA_FD_PROCIMG_CFG

图片检测条件结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byEnable;
  BYTE                   bySensitivity;
  BYTE                   byRes1[22];
  NET_VCA_SIZE_FILTER    struSizeFilter;
  NET_VCA_POLYGON        struPolygon;
  NET_VCA_FD_IMAGE_CFG   struFDImage;
  BYTE                   byRes2[20];
}NET_VCA_FD_PROCIMG_CFG, *LPNET_VCA_FD_PROCIMG_CFG;

Members

dwSize
结构体大小
byEnable
是否激活规则：0- 否， 1- 是
bySensitivity
检测灵敏度，取值范围：[0,5]
byRes1
保留
struSizeFilter
尺寸过滤器
struPolygon
多边形
struFDImage
图片信息
byRes2
保留

See Also

NET_DVR_DetectImage


NET_VCA_FD_PROCIMG_RESULT

单张图片检测结果。

struct{
  DWORD                 dwSize;
  DWORD                 dwImageId;
  BYTE                  byRes[20];
  DWORD                 dwSubImageNum;
  NET_VCA_SUB_PROCIMG   struProcImg[MAX_TARGET_NUM];
}NET_VCA_FD_PROCIMG_RESULT, *LPNET_VCA_FD_PROCIMG_RESULT;

Members

dwSize
结构体大小
dwImageId
大图ID
byRes
保留
dwSubImageNum
人脸子图张数
struProcImg
单张子图信息

See Also

NET_DVR_DetectImage


NET_VCA_FIELDDETECION

区域入侵侦测配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byEnableDualVca;
  BYTE                           byEnableHumanMisinfoFilter;
  BYTE                           byEnableVehicleMisinfoFilter;
  NET_VCA_INTRUSION              struIntrusion[MAX_INTRUSIONREGION_NUM];
  NET_DVR_SCHEDTIME              struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          byRelRecordChan[MAX_CHANNUM_V30];
  NET_DVR_SCHEDTIME              struHolidayTime[MAX_TIMESEGMENT_V30];
  BYTE                           byRes2[100];
}NET_VCA_FIELDDETECION,*LPNET_VCA_FIELDDETECION;

Members

dwSize
结构体大小
byEnable
使能区域入侵侦测功能：0- 否，1- 是
byEnableDualVca
启用支持智能后检索：0- 不启用，1- 启用
byEnableHumanMisinfoFilter
是否启用人体去误报：0- 不启用，1- 启用
byEnableVehicleMisinfoFilter
是否启用车辆去误报：0- 不启用，1- 启用
struIntrusion
区域参数
struAlarmSched
布防时间，每周7天，每天最多设置8个时间段
struHandleException
异常处理方式
dwMaxRelRecordChanNum
触发的录像通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
byRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：byRelRecordChan[0]~byRelRecordChan[4]。
struHolidayTime
假日布防时间，最多设置8个时间段
byRes2
保留，置为0

Remarks

  • dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。
  • 如果开启人体去误报过滤功能，则设备将会把认为是误报的报警过滤掉，不进行实时上传，但会在本地存储以供查询。
  • 设备是否支持区域入侵侦测或者支持的参数能力，可以通过设备能力集进行判断，对应事件能力集(EventAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<FieldDetection>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_VCA_FILTER_STRATEGY

尺寸过滤策略结构体。

struct{
  BYTE    byStrategy;
  BYTE    byRes[11];
}NET_VCA_FILTER_STRATEGY, *LPNET_VCA_FILTER_STRATEGY;

Members

byStrategy
尺寸过滤策略：0- 不启用，1- 高度和宽度过滤，2- 面积过滤
byRes
保留

See Also

NET_VCA_ONE_RULE_V41


NET_VCA_FIND_DATABASE_COND

数据库查询条件结构体。

struct{
  DWORD    dwDataBaseType;
  BYTE     byRes[12];
}NET_VCA_FIND_DATABASE_COND, *LPNET_VCA_FIND_DATABASE_COND;

Members

dwDataBaseType
数据库类型，具体见如下定义：
enum _VCA_DATABASE_TYPE_{
  DATABASE_NULL = 0,
  DATABASE_SNAP,
  DATABASE_FACE
}VCA_DATABASE_TYPE
DATABASE_NULL
未知
DATABASE_SNAP
抓拍数据库
DATABASE_FACE
人脸数据库
byRes
保留

See Also

NET_DVR_FindDataBase


NET_VCA_FIND_MATCHPIC_COND

背景图查询条件结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDataBaseType;
  DWORD    dwDataBaseID;
  DWORD    dwRecordID;
  BYTE     byRes[64];
}NET_VCA_FIND_MATCHPIC_COND, *LPNET_VCA_FIND_MATCHPIC_COND;

Members

dwSize
结构体大小
dwDataBaseType
数据库类型，具体见如下定义：
enum _VCA_DATABASE_TYPE_{
  DATABASE_NULL = 0,
  DATABASE_SNAP,
  DATABASE_FACE
}VCA_DATABASE_TYPE
DATABASE_NULL
未知
DATABASE_SNAP
抓拍数据库
DATABASE_FACE
人脸数据库
dwDataBaseID
数据库ID
dwRecordID
记录ID
byRes
保留

See Also

NET_DVR_FindMatchPicture


NET_VCA_FIND_MATCHPIC_RESULT

背景图查询结果结构体。

struct{
  DWORD    dwSize;
  DWORD    dwDataBaseType;
  DWORD    dwDataBaseID;
  DWORD    dwRecordID;
  DWORD    dwPicLen;
  BYTE     byRes[64];
  BYTE     *pPicBuffer;
}NET_VCA_FIND_MATCHPIC_RESULT, *LPNET_VCA_FIND_MATCHPIC_RESULT;

Members

dwSize
结构体大小
dwDataBaseType
数据库类型，具体见如下定义：
enum _VCA_DATABASE_TYPE_{
  DATABASE_NULL = 0,
  DATABASE_SNAP,
  DATABASE_FACE
}VCA_DATABASE_TYPE
DATABASE_NULL
未知
DATABASE_SNAP
抓拍数据库
DATABASE_FACE
人脸数据库
dwDataBaseID
数据库ID
dwRecordID
记录ID
dwPicLen
图片长度
byRes
保留
dwRecordID
图片数据指针(需要申请大于等于图片大小的缓冲区用于保存图片数据，一般2M左右)

See Also

NET_DVR_FindMatchPicture


NET_VCA_FIND_PICTURECOND

非授权名单比对报警结构查询条件。

struct{
  LONG               lChannel;
  NET_DVR_TIME       struStartTime;
  NET_DVR_TIME       struStopTime;
  BYTE               byRes[12];
}NET_VCA_FIND_PICTURECOND, *LPNET_VCA_FIND_PICTURECOND;

Members

lChannel
通道号
struStartTime
开始时间
struStopTime
结束时间
byRes
保留

See Also

NET_DVR_FindFaceMatchAlarm


NET_VCA_FIND_PICTURECOND_ADVANCE

事后检索条件结构体。

struct{
  LONG                            lChannel;
  NET_DVR_TIME                    struStartTime;
  NET_DVR_TIME                    struStopTime;
  BYTE                            byThreshold;
  BYTE                            byRes[23];
  DWORD                           dwFindType;
  NET_VCA_FIND_SNAPPIC_UNION      uFindParam;
}NET_VCA_FIND_PICTURECOND_ADVANCE, *LPNET_VCA_FIND_PICTURECOND_ADVANCE;

Members

lChannel
通道号
struStartTime
开始时间
struStopTime
结束时间
byThreshold
阈值，取值范围：0~100
byRes
保留
dwFindType
检索类型，详见：
enum _VCA_FIND_SNAPPIC_TYPE_{
  VCA_NORMAL_FIND  = 0x00000000,
  VCA_ADVANCE_FIND = 0x00000001
}VCA_FIND_SNAPPIC_TYPE
VCA_NORMAL_FIND
普通检索
VCA_ADVANCE_FIND
高级检索
uFindParam
检索参数

See Also

NET_DVR_AdvanceFindSnapPicture


NET_VCA_FIND_SNAPPIC_UNION

事后检索参数联合体。

union{
  NET_VCA_NORMAL_FIND        struNormalFind;
  NET_VCA_ADVANCE_FIND       struAdvanceFind;
}NET_VCA_FIND_SNAPPIC_UNION, *LPNET_VCA_FIND_SNAPPIC_UNION;

Members

struNormalFind
普通检索（与抓拍库比对）
struAdvanceFind
高级检索（与抓拍库比对）

Remarks

普通检索就是可以输出单张检测的结果与抓拍数据库比对，输出与该输入的人脸条件相符合的结果，此时的输入条件是大图ID、人脸评分、人脸子图区域。

高级检索是通过事后查询或者普通检索获得的结果（人脸子图ID）与抓拍数据库比对，输出与条件符合的结果，此时只需要输入人脸子图ID即可。

See Also

NET_VCA_FIND_PICTURECOND_ADVANCE


NET_VCA_GET_UP

起身参数结构体。

struct{
  NET_VCA_POLYGON      struRegion;
  WORD                 wDuration;
  BYTE                 byMode;
  BYTE                 bySensitivity;
  BYTE                 byRes[4];
}NET_VCA_GET_UP, *LPNET_VCA_GET_UP;

Members

struRegion
区域范围
wDuration
触发事件阈值，取值范围：1~100秒
byMode
起身检测模式：0-大床通铺模式，1-高低铺模式，2-大床通铺坐立起身模式
bySensitivity
灵敏度参数，取值范围：[1,100]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_HIGH_DENSITY

人员聚集参数结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  float             fDensity;
  BYTE              bySensitivity;
  BYTE              byRes;
  WORD              wDuration;
}NET_VCA_HIGH_DENSITY,*LPNET_VCA_HIGH_DENSITY;

Members

struRegion
区域范围
fDensity
密度比率，取值范围：[0.1,1.0]
bySensitivity
灵敏度参数，取值范围：[1,5]
byRes
保留，置为0
wDuration
触发人员聚集参数报警阈值，20~360s

See Also

NET_VCA_EVENT_UNION


NET_VCA_HIGH_DENSITY_STATUS

人员聚集状态信息结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  float             fDensity;
  BYTE              bySensitivity;
  BYTE              byRes[3];
}NET_VCA_HIGH_DENSITY_STATUS,*LPNET_VCA_HIGH_DENSITY_STATUS;

Members

struRegion
区域范围
fDensity
密度比率，取值范围[0.1,1.0]
bySensitivity
灵敏度参数，范围：[0,100]
byRes
保留，置为0

Remarks

  • 设备是否支持人员聚集状态上传或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<HighDensityStatus>。

See Also

NET_VCA_EVENT_UNION


NET_VCA_HUMAN_ATTRIBUTE

人员信息结构体。

struct{
  BYTE                   bySex;
  BYTE                   byCertificateType;
  BYTE                   byBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE                   byName[NAME_LEN];
  NET_DVR_AREAINFOCFG    struNativePlace;
  BYTE                   byCertificateNumber[NAME_LEN];
  DWORD                  dwPersonInfoExtendLen;
  BYTE                   *pPersonInfoExtend;
  BYTE                   byAgeGroup;
  BYTE                   byRes2[3];
  #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))
  BYTE            *pThermalData;
  #else
  BYTE            *pThermalData;
  BYTE                   byRes3[4];
  #endif
}NET_VCA_HUMAN_ATTRIBUTE, *LPNET_VCA_HUMAN_ATTRIBUTE;

Members

bySex
性别：0- 男，1- 女，0xff- 未知
byCertificateType
证件类型：0- 身份证，1- 警官证，3- 护照，4- 其他，0xff- 未知
byBirthDate
出生年月，如：201106
byName
姓名
struNativePlace
籍贯
byCertificateNumber
证件号
dwPersonInfoExtendLen
人员标签信息扩展长度
pPersonInfoExtend
人员标签信息扩展信息，对应XML数据结构：PersonInfoExtendList，该标签信息可以通过接口(NET_DVR_STDXMLConfig)导入，设备端不做处理，直接在比对上传的时候透传携带该数据信息
byAgeGroup
年龄段，详见枚举类型：HUMAN_AGE_GROUP_ENUM
byRes2
保留
pThermalData
热成像图片指针
byRes3
保留

See Also

NET_VCA_BLOCKLIST_INFO NET_VCA_BLOCKLIST_COND NET_VCA_INQUIRE_DATARECORD_RESULT

NET_VCA_DATARECORD_INFO NET_VCA_FAST_DATARECORD_INFO

NET_VCA_SEARCH_DATARECORD_RESULT


NET_VCA_HUMAN_ENTER

人员进入参数结构体。

struct{
  DWORD    dwRes[23];
}NET_VCA_HUMAN_ENTER, *LPNET_VCA_HUMAN_ENTER;

Members

dwRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_HUMAN_FEATURE

人体属性参数结构体。

struct{
  BYTE    byAgeGroup;
  BYTE    bySex;
  BYTE    byEyeGlass;
  BYTE    byAge;
  BYTE    byAgeDeviation;
  BYTE    byRes0;
  BYTE    byMask;
  BYTE    bySmile;
  BYTE    byFaceExpression;
  BYTE    byRes1;
  BYTE    byRes2;
  BYTE    byHat;
  BYTE    byRes[4];
}NET_VCA_HUMAN_FEATURE, *LPNET_VCA_HUMAN_FEATURE;

Members

byAgeGroup
年龄段，0xffffffff表示全部（不关注年龄段），详见枚举类型：HUMAN_AGE_GROUP_ENUM
bySex
性别：1- 男，2- 女
byEyeGlass
是否戴眼镜：1- 不戴，2- 戴
byAge
年龄
byAgeDeviation
年龄误差值，如byAge为15、byAgeDeviation为1，表示实际人脸图片年龄的为14~16之间
byRes0
保留
byMask
是否戴口罩：0-表示“未知”（算法不支持）；1- 不戴口罩；2-戴口罩；0xff-算法支持，但是没有识别出来
bySmile
是否微笑：0-表示“未知”（算法不支持）；1- 不微笑；2- 微笑；0xff-算法支持，但是没有识别出来
byFaceExpression
保留
byRes2
保留
byRes2
保留
byHat
帽子：0- 不支持；1- 不戴帽子；2- 戴帽子；0xff- 未知,算法支持未检出
byRes
保留

See Also

NET_VCA_FACESNAP_RESULT NET_DVR_SMARTSEARCH_PIC_UNION


NET_VCA_HUMANATTRIBUTE_COND

数据库查询人员信息条件结构体。

struct{
  BYTE                   bySex;
  BYTE                   byCertificateType;
  BYTE                   byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE                   byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE                   byName[NAME_LEN];
  NET_DVR_AREAINFOCFG    struNativePlace;
  BYTE                   byCertificateNumber[NAME_LEN];
  BYTE                   byRes[20];
}NET_VCA_HUMANATTRIBUTE_COND, *LPNET_VCA_HUMANATTRIBUTE_COND;

Members

bySex
性别：0-不启用，1-男，2-女
byCertificateType
证件类型：0-不启用，1-身份证，2-警官证
byStartBirthDate
起始出生年月，如：201106
byEndBirthDate
截止出生年月，如201106
byName
姓名
struNativePlace
籍贯参数
byCertificateNumber
证件号
byRes
保留

See Also

NET_VCA_DATARECORD_COND NET_VCA_DELETE_RECORD_COND_UNION NET_VCA_SEARCH_FACEDB_COND


NET_VCA_INQUIRE_DATARECORD_RESULT

人脸数据库检索结果结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwDataBaseID;
  DWORD                      dwRecordID;
  NET_VCA_HUMAN_ATTRIBUTE    struAttribute;
  BYTE                       byRemark1[NAME_LEN];
  BYTE                       byRemark2[64];
  DWORD                      dwFacePicID;
  DWORD                      dwFacePicLen;
  BYTE                       byRes[80];
  BYTE                       *pFacePic;
}NET_VCA_INQUIRE_DATARECORD_RESULT, *LPNET_VCA_INQUIRE_DATARECORD_RESULT;

Members

dwSize
结构体大小
dwDataBaseID
数据库ID
dwRecordID
记录ID
struAttribute
人员信息
byRemark1
备注信息1
byRemark2
备注信息2
dwFacePicID
人脸图ID
dwFacePicLen
人脸图数据长度
byRes
保留
pFacePic
人脸图数据

See Also

NET_DVR_InquireFaceDBRecord


NET_VCA_INQUIRE_SNAPDB_COND

抓拍数据库查询条件结构体。

struct{
  DWORD           dwChannel;
  NET_DVR_TIME    struStartTime;
  NET_DVR_TIME    struStopTime;
  BYTE            bySex;
  BYTE            byRes1[3];
  BYTE            byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE            byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE            byAttribute1[NAME_LEN];
  BYTE            byAttribute2[NAME_LEN];
  BYTE            byRes[12];
}NET_VCA_INQUIRE_SNAPDB_COND, *LPNET_VCA_INQUIRE_SNAPDB_COND;

Members

dwChannel
通道号
struStartTime
开始时间
struStopTime
结束时间
bySex
性别：0- 不启用，1- 男，2- 女
byRes1
保留
byStartBirthDate
起始出生年月，如：201106
byEndBirthDate
截止出生年月，如201106
byAttribute1
属性1
byAttribute2
属性2
byRes
保留

See Also

NET_VCA_DELETE_SNAPRECORD_COND_UNION

NET_DVR_InquireSnapDBRecord


NET_VCA_INQUIRE_SNAPRECORD_RESULT

抓拍数据库检索结果结构体。

struct{
  DWORD           dwSize;
  DWORD           dwDataBaseID;
  DWORD           dwRecordID;
  NET_DVR_TIME    struSnapTime;
  BYTE            bySex;
  BYTE            byRes1[3];
  BYTE            byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE            byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE            byAttribute1[NAME_LEN];
  BYTE            byAttribute2[NAME_LEN];
  DWORD           dwFacePicID;
  DWORD           dwFacePicLen;
  BYTE            byRes[80];
  BYTE            *pFacePic;
}NET_VCA_INQUIRE_SNAPRECORD_RESULT, *LPNET_VCA_INQUIRE_SNAPRECORD_RESULT;

Members

dwSize
结构体大小
dwDataBaseID
数据库ID
dwRecordID
记录ID
struSnapTime
抓拍时间
bySex
性别：0- 不启用，1- 男，2- 女
byRes1
保留
byStartBirthDate
起始出生年月，如：201106
byEndBirthDate
截止出生年月，如201106
byAttribute1
属性1
byAttribute2
属性2
dwFacePicID
人脸图ID
dwFacePicLen
人脸图数据长度
byRes
保留
pFacePic
人脸图数据

See Also

NET_DVR_InquireSnapDBRecord


NET_VCA_INTRUSION

入侵参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  WORD               wDuration;
  BYTE               bySensitivity;
  BYTE               byRate;
  BYTE               byDetectionTarget;
  BYTE               byPriority;
  BYTE               byAlarmConfidence;
  BYTE               byRecordConfidence;
}NET_VCA_INTRUSION,*LPNET_VCA_INTRUSION;

Members

struRegion
区域范围
wDuration
行为事件触发时间阈值，判断有效报警的时间。不同的设备取值范围不同，智能服务器为1~120秒（默认：5秒），ATM设备为1~1200秒，Smart IPC为1～100秒
bySensitivity
灵敏度参数，取值范围：[1,100]
byRate
占比：区域内所有未报警目标尺寸目标占区域面积的比重，归一化为1~100
byDetectionTarget
检测目标，0表示所有目标（表示不锁定检测目标，所有目标都将进行检测），其他取值按位表示不同的检测目标：0x01-人，0x02-车
支持多选，例如：0x3表示同时检测车和人的目标类型
byPriority
优先级：0-低, 1-中, 2-高
byAlarmConfidence
报警置信度：0-低, 1-较低, 2-较高, 3-高
byRecordConfidence
录像置信度：0-低, 1-较低, 2-较高, 3-高

Remarks

对于不同设备，以上参数的取值范围可能不同。对于Smart IPC，可以调用NET_DVR_GetDeviceAbility获取报警事件处理能力集（EventAbility，能力集类型：DEVICE_ABILITY_INFO）而得到实际取值范围（节点：<FieldDetection>）；对于iDS智能设备，可以调用NET_DVR_GetDeviceAbility获取智能通道分析能力集（VcaChanAbility，能力集类型：DEVICE_ABILITY_INFO）而得到实际取值范围（节点：<Intrusion>）。

See Also

NET_VCA_EVENT_UNION NET_VCA_FIELDDETECION NET_DVR_INTRUSION_SEARCHCOND


NET_VCA_LEAVE_POSITION

离岗事件参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  WORD               wLeaveDelay;
  WORD               wStaticDelay;
  BYTE               byMode;
  BYTE               byPersonType;
  BYTE               byOnPosition;
  BYTE               bySensitivity;
}NET_VCA_LEAVE_POSITION, *LPNET_VCA_LEAVE_POSITION;

Members

struRegion
区域范围
wLeaveDelay
无人报警时间，单位：秒，取值范围：1~1800
wStaticDelay
睡觉报警时间，单位：秒，取值范围：1~1800
byMode
模式：0- 离岗事件，1- 睡岗事件，2- 离岗睡岗事件
byPersonType
值岗人数类型：0-单人值岗，1-双人值岗
byOnPosition
在岗人数，取值范围：1-10，默认1
bySensitivity
灵敏度参数，取值范围：1~5

See Also

NET_VCA_EVENT_UNION


NET_VCA_LECTURE

授课参数结构体。

struct{
  NET_VCA_POLYGON               struRegion;
  WORD                          wDuration;
  BYTE                          bySensitivity;
  BYTE                          byAlarmState;
  BYTE                          byTrackingMode;
  BYTE                          byZoomMode;
  BYTE                          byZoomOver;
  BYTE                          byTrackStatus;
}NET_VCA_LECTURE,*LPNET_VCA_LECTURE;

Members

struRegion
区域范围
wDuration
行为事件触发时间阈值: 1-10秒，建议1秒，判断是有效报警的时间
bySensitivity
灵敏度参数，范围[1-100]
byAlarmState
只读字段界面不显示；0-保留,1-报警开始,2-报警结束
byTrackingMode
跟踪模式，0-自动(默认) , 1-水平, 2-垂直
byZoomMode
变倍模式, 0-固定(默认), 1-自动
byZoomOver
0-保留,1-变倍到位(报警上传录播主机，作为切换画面判断依据)
byTrackStatus
跟踪状态：0-保留，1-开始授课（A，全景） 2-正在跟踪（2,特写），3 -跟踪丢失（2,全景）

See Also

NET_VCA_EVENT_UNION


NET_VCA_LEFT

丢包参数结构体。

struct{
  NET_VCA_POLYGON      struRegion;
  WORD                 wDuration;
  BYTE                 bySensitivity;
  BYTE                 byRes[5];
}NET_VCA_LEFT, *LPNET_VCA_LEFT;

Members

struRegion
区域范围
wDuration
触发事件阈值，10~100秒
bySensitivity
灵敏度，取值范围：[1,5]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_LINE

线结构参数结构体。

struct{
  NET_VCA_POINT    struStart;
  NET_VCA_POINT    struEnd;
}NET_VCA_LINE,*LPNET_VCA_LINE;

Members

struStart
起点
struEnd
终点


NET_VCA_LOITER

徘徊参数结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  WORD              wDuration;
  BYTE              byRes[6];
}NET_VCA_LOITER,*LPNET_VCA_LOITER;

Members

struRegion
区域范围
wDuration
触发徘徊报警的持续时间：1-120秒，建议10秒
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_MASK_REGION

屏蔽区域结构体。

struct{
  BYTE              byEnable;
  BYTE              byRes[3];
  NET_VCA_POLYGON   struPolygon;
}NET_VCA_MASK_REGION, *LPNET_VCA_MASK_REGION;

Members

byEnable
是否激活, 0-否，非0-是
byRes
保留，置为0
struPolygon
屏蔽多边形

See Also

NET_VCA_MASK_REGION_LIST


NET_VCA_MASK_REGION_LIST

屏蔽区域链表结构体。

struct{
  DWORD                 dwSize;
  BYTE                  byRes[4];
  NET_VCA_MASK_REGION   struMask[MAX_MASK_REGION_NUM];
}NET_VCA_MASK_REGION_LIST, *LPNET_VCA_MASK_REGION_LIST;

Members

dwSize
结构体大小
byRes
保留，置为0
struMask
屏蔽区域数组

See Also

NET_IVMS_MASK_REGION_LIST


NET_VCA_NORMAL_FIND

普通检索参数结构体。

struct{
  DWORD           dwImageID;
  DWORD           dwFaceScore;
  NET_VCA_RECT    struVcaRect;
  BYTE            byRes[20];
}NET_VCA_NORMAL_FIND, *LPNET_VCA_NORMAL_FIND;

Members

dwImageID
大图ID
dwFaceScore
人脸评分
struVcaRect
人脸子图区域
byRes
保留

See Also

NET_VCA_FIND_SNAPPIC_UNION


NET_VCA_ONE_RULE

警戒规则参数结构体。

struct{
  BYTE                          byActive;
  BYTE                          byRes[7];
  BYTE                          byRuleName[NAME_LEN];
  DWORD                         dwEventType;
  NET_VCA_EVENT_UNION           uEventParam;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRelRecordChan[MAX_CHANNUM_V30];
}NET_VCA_ONE_RULE,*LPNET_VCA_ONE_RULE;

Members

byActive
是否激活规则：0-否；非0-是
byRes
保留，置为0
byRuleName
规则名称
dwEventType
异常行为识别事件类型，具体定义见VCA_EVENT_TYPE
uEventParam
异常行为识别事件参数
struSizeFilter
尺寸过滤器
struAlarmTime
布防时间
struHandleType
处理方式
byRelRecordChan
报警触发的录象通道：1表示触发该通道；0表示不触发

See Also

NET_VCA_RULECFG


NET_VCA_ONE_RULE_V41

警戒规则参数结构体。

struct{
  BYTE                          byActive;
  BYTE                          byRes1[4];
  BYTE                          byEventTypeFlag;
  WORD                          wEventTypeEx;
  BYTE                          byRuleName[NAME_LEN];
  DWORD                         dwEventType;
  NET_VCA_EVENT_UNION           uEventParam;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V30   struHandleType;
  BYTE                          byRelRecordChan[MAX_CHANNUM_V30];
  WORD                          wAlarmDelay;
  BYTE                          byRes2[2];
  NET_VCA_FILTER_STRATEGY       struFilterStrategy;
  NET_VCA_RULE_TRIGGER_PARAM    struTriggerParam;
  BYTE                          byRes[32];
}NET_VCA_ONE_RULE_V41,*LPNET_VCA_ONE_RULE_V41;

Members

byActive
是否激活规则：0-否；非0-是
byRes1
保留，置为0
byEventTypeFlag
标志行为事件类型字段的有效性：0- dwEventType有效，1- wEventTypeEx有效
wEventTypeEx
行为事件类型扩展，用于代替字段dwEventType，参考VCA_RULE_EVENT_TYPE_EX
byRuleName
规则名称
dwEventType
异常行为识别事件类型，具体定义见VCA_EVENT_TYPE
uEventParam
异常行为识别事件参数
struSizeFilter
尺寸过滤器
struAlarmTime
布防时间
struHandleType
处理方式
byRelRecordChan
报警触发的录象通道，1表示触发该通道，0表示不触发。按位表示通道，例如：byRelRecordChan[0]==1表示触发通道1录像，byRelRecordChan[1]==1表示触发通道2录像，依次类推
wAlarmDelay
智能报警延时：0- 5s，1- 10，2- 30s，3- 60s，4- 120s，5- 300s，6- 600s
byRes2
保留，置为0
struFilterStrategy
尺寸过滤策略
struTriggerParam
规则触发参数
byRes
保留，置为0

Remarks

上传的行为报警事件，建议事件类型按wEventTypeEx的值定义进行区分，兼容参数dwEventType。byEventTypeFlag这个字段只在设置参数时有效，从设备获取参数时，可直接从wEventTypeEx获取事件类型，无需再判断此字段的值。

See Also

NET_VCA_RULECFG_V41


NET_VCA_ONE_RULE_V42

警戒规则参数结构体。

struct{
  BYTE                          byActive;
  BYTE                          byEventPriority;
  BYTE                          byBackgroundSuppression;
  BYTE                          byRes1[3];
  WORD                          wEventType;
  BYTE                          byRuleName[NAME_LEN];
  NET_VCA_EVENT_UNION           uEventParam;
  NET_VCA_SIZE_FILTER           struSizeFilter;
  NET_DVR_SCHEDTIME             struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40   struAlarmHandleType;
  DWORD                         dwRelRecordChan[MAX_CHANNUM_V30];
  WORD                          wAlarmDelay;
  BYTE                          byRes2[2];
  NET_VCA_FILTER_STRATEGY       struFilterStrategy;
  NET_VCA_RULE_TRIGGER_PARAM    struTriggerParam;
  BYTE                          byRes[32];
}NET_VCA_ONE_RULE_V42,*LPNET_VCA_ONE_RULE_V42;

Members

byActive
是否激活规则：0-否；非0-是
byEventPriority
事件优先级：0- 低，1- 中，2- 高
byBackgroundSuppression
背景干扰抑制：0- 关闭，1- 开启，2- 自适应
byRes1
保留，置为0
wEventType
行为事件类型，参考VCA_RULE_EVENT_TYPE_EX
byRuleName
规则名称
uEventParam
异常行为识别事件参数
struSizeFilter
尺寸过滤器
struAlarmTime
布防时间
struHandleType
处理方式
dwRelRecordChan
报警触发的录像通道，关联的录像通道号与组号绑定，即：组号为0时，表示关联的通道号范围为1~64；当组号为1时，表示关联的通道号范围为65~128，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效
wAlarmDelay
智能报警延时：0- 5s，1- 10，2- 30s，3- 60s，4- 120s，5- 300s，6- 600s
byRes2
保留，置为0
struFilterStrategy
尺寸过滤策略
struTriggerParam
规则触发参数
byRes
保留，置为0

Remarks

  • dwRelRecordChan关联的录像通道号与组号绑定，每组64个通道。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。

See Also

NET_VCA_RULECFG_V42


NET_VCA_OVER_TIME

操作超时结构体。

struct{
  NET_VCA_POLYGON      struRegion;
  WORD                 wDuration;
  BYTE                 byRes[6];
}NET_VCA_OVER_TIME, *LPNET_VCA_OVER_TIME;

Members

struRegion
区域范围
wDuration
操作报警时间阈值
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_PARKING

停车参数结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  WORD              wDuration;
  BYTE              byRes[6];
}NET_VCA_PARKING,*LPNET_VCA_PARKING;

Members

struRegion
区域范围
wDuration
触发停车报警的持续时间：1-120秒，建议10秒
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_PEOPLENUM_CHANGE

人数变化参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  BYTE                bySensitivity;
  BYTE                byPeopleNumThreshold;
  BYTE                byDetectMode;
  BYTE                byNoneStateEffective;
  WORD                wDuration;
  BYTE                byRes[2];
}NET_VCA_PEOPLENUM_CHANGE, *LPNET_VCA_PEOPLENUM_CHANGE;

Members

struRegion
区域范围
bySensitivity
灵敏度，取值范围：[1,100]
byPeopleNumThreshold
人数阈值，取值范围：[0,5]，默认：1
byDetectMode
检测方式，与人数阈值相比较：1- 大于，2- 小于，3- 等于，4- 不等于
byNoneStateEffective
无人状态是否有效：0- 无效，1- 有效
wDuration
触发事件阈值，单位：秒，取值范围：1~3600，默认：2
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_PICMODEL_RESULT

单张图片的模型结果结构体。

struct{
  DWORD    dwImageLen;
  DWORD    dwModelLen;
  BYTE     byRes[20];
  BYTE     *pImage;
  BYTE     *pModel;
}NET_VCA_PICMODEL_RESULT, *LPNET_VCA_PICMODEL_RESULT;

Members

dwImageLen
图片数据长度
dwModelLen
模型数据长度
byRes
保留
pImage
人脸图片数据指针
pModel
模型数据指针

See Also

NET_DVR_GetPictureModel NET_VCA_BLOCKLIST_PARA


NET_VCA_PLAY_CELLPHONE

玩手机信息结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  WORD                      wDuration;
  BYTE                       byRes[6];
}NET_VCA_PLAY_CELLPHONE, *LPNET_VCA_PLAY_CELLPHONE;

Members

struRegion
区域范围
wDuration
玩手机超时时间[1,600]秒, 默认20秒
byRes
保留字节

Remarks

注册非授权名单时分组号有效：指定非授权名单注册到哪个分组，多个分组可以有相同的非授权名单。
修改非授权名单时分组号无效，修改当前非授权名单时会把所有分组中的该非授权名单修改。
删除非授权名单时分组号有效，删除该分组下的全部非授权名单。

byLevel参数越高越容易报警。

See Also

NET_VCA_BLOCKLIST_INFO_ALARM NET_VCA_BLOCKLIST_PARA
NET_VCA_BLOCKLIST_INFO_ALARM_LOG NET_VCA_BLOCKLIST_FASTREGISTER_PARA


NET_VCA_POINT

点坐标参数结构体。

struct{
  float  fX;
  float  fY;
}NET_VCA_POINT,*LPNET_VCA_POINT;

Members

fX
X轴坐标，取值范围[0.001,1]
fY
Y轴坐标，取值范围[0.001,1]


NET_VCA_POLYGON

多边形结构体。

struct{
  DWORD           dwPointNum;
  NET_VCA_POINT   struPos[VCA_MAX_POLYGON_POINT_NUM];
}NET_VCA_POLYGON,*LPNET_VCA_POLYGON;

Members

dwPointNum
有效点（大于等于3），若是3点在一条线上认为是无效区域，线交叉认为是无效区域
struPos
多边形边界点，最大值为10


NET_VCA_POLYLINE

折线参数结构体。

struct{
  NET_VCA_POINT    struPoint[4];
}NET_VCA_POLYLINE,*LPNET_VCA_POLYLINE;

Members

struPoint
折线点坐标

See Also

NET_DVR_PDC_RULE_CFG_V42


NET_VCA_REACH_HIGHT

攀高参数结构体。

struct{
  NET_VCA_LINE    struVcaLine;
  WORD            wDuration;
  BYTE            byRes[6];
}NET_VCA_REACH_HIGHT, *LPNET_VCA_REACH_HIGHT;

Members

struVcaLine
攀高警戒面
wDuration
触发事件阈值，1-100秒
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_RECT

区域框参数结构体。

struct{
  float   fX;
  float   fY;
  float   fWidth;
  float   fHeight;
}NET_VCA_RECT,*LPNET_VCA_RECT;

Members

fX
边界框左上角点的X轴坐标，取值范围[0.000,1]
fY
边界框左上角点的Y轴坐标，取值范围[0.000,1]
fWidth
边界框的宽度，取值范围[0.000,1]
fHeight
边界框的高度，取值范围[0.000,1]


NET_VCA_REGISTER_PIC

非授权名单图片信息结构体。

struct{
  DWORD          dwImageID;
  DWORD          dwFaceScore;
  NET_VCA_RECT   struVcaRect;
  BYTE           byRes[20];
}NET_VCA_REGISTER_PIC, *LPNET_VCA_REGISTER_PIC;

Members

dwImageID
大图ID
dwFaceScore
人脸评分，取值范围：0-100
struVcaRect
人脸子图区域
byRes
保留

See Also

NET_VCA_BLOCKLIST_PARA NET_VCA_SEARCH_DATABASE_COND_UNION

NET_DVR_GetPictureModel


NET_VCA_RELATE_RULE_PARAM

关联规则结构体。

struct{
  BYTE    byRuleID;
  BYTE    byRes;
  WORD    wEventType;
}NET_VCA_RELATE_RULE_PARAM,*LPNET_VCA_RELATE_RULE_PARAM;

Members

byRuleID
规则序号，0表示无
byRes
保留，置为0
wEventType
行为事件类型，参考VCA_RULE_EVENT_TYPE_EX

See Also

NET_VCA_COMBINED_RULE


NET_VCA_RETENTION

人员滞留检测结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  WORD               wDuration;
  BYTE               byRes[6];
 }NET_VCA_RETENTION,*LPNET_VCA_RETENTION;

Members

struRegion
区域范围（配置区域）
wDuration
触发滞留报警阈值时间，取值范围: 60~3600，单位：秒，默认为1800秒
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_RULE_ALARM

异常行为识别报警结构体。

struct{
  DWORD                 dwSize;
  DWORD                 dwRelativeTime;
  DWORD                 dwAbsTime;
  NET_VCA_RULE_INFO     struRuleInfo;
  NET_VCA_TARGET_INFO   struTargetInfo;
  NET_VCA_DEV_INFO      struDevInfo;
  DWORD                 dwPicDataLen;
  BYTE                  byPicType;
  BYTE                  byRelAlarmPicNum;
  BYTE                  bySmart;
  BYTE                  byPicTransType;
  DWORD                 dwAlarmID;
  WORD                  wDevInfoIvmsChannelEx;
  BYTE                  byRelativeTimeFlag;
  BYTE                  byAppendInfoUploadEnabled;
  BYTE                  *pAppendInfo;
  BYTE                  *pImage;
}NET_VCA_RULE_ALARM,*LPNET_VCA_RULE_ALARM;

Members

dwSize
结构体大小
dwRelativeTime
相对时标，历史原因，实际没用，本版本用起来，当byRelativeTimeFlag为1时，表示为UTC的时间
dwAbsTime
绝对时标 历史原因，这里实际为OSD 时间
struRuleInfo
事件规则信息
struTargetInfo
报警目标信息
struDevInfo
前端设备信息
dwPicDataLen
返回图片的长度。为0表示没有图片，大于0表示该结构后面紧跟图片数据
byPicType
0- 普通图片，1- 对比图片
byRelAlarmPicNum
关联通道报警图片数量
bySmart
0- iDS专业智能设备返回，1- Smart设备返回
byPicTransType
图片数据传输方式: 0-二进制；1-url
dwAlarmID
报警ID，用以标识通道间关联产生的组合报警，0表示无效
wDevInfoIvmsChannelEx
与NET_VCA_DEV_INFO里的byIvmsChannel含义相同，能表示更大的值。老客户端用byIvmsChannel能继续兼容，但是最大到255。新客户端版本请使用wDevInfoIvmsChannelEx
byRelativeTimeFlag
dwRelativeTime字段是否有效 0-无效， 1-有效，dwRelativeTime表示UTC时间
byAppendInfoUploadEnabled
附加信息上传使能： 0-不上传 1-上传
pAppendInfo
指向附加信息NET_VCA_APPEND_INFO的指针，byAppendInfoUploadEnabled为1时有效
pImage
指向图片的指针

Remarks

  • 如当前报警通道存在关联通道时，针对同一报警事件，会对关联通道进行抓图并上传，这些图片数据分多次上传，其中报警事件信息一致。可通过字段dwAlarmID对这些报警进行区分组合，由byRelAlarmPicNum获取关联通道的抓拍图片数量，其中报警图片总数量为byRelAlarmPicNum + 1，从而得到当前报警事件的多张图片。
  • 相对时标暂未使用。从绝对时标dwAbsTime解析得到“年月日时分秒”的算法如下所示：
    #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
    #define GET_MONTH(_time_) (((_time_)>>22) & 15)
    #define GET_DAY(_time_) (((_time_)>>17) & 31)
    #define GET_HOUR(_time_) (((_time_)>>12) & 31)
    #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
    #define GET_SECOND(_time_) (((_time_)>>0) & 63)

See Also

NET_DVR_SetDVRMessageCallBack_V31 NET_DVR_StartListen_V30


NET_VCA_RULE_INFO

事件规则信息结构体。

struct{
  BYTE                  byRuleID;
  BYTE                  byRes;
  WORD                  wEventTypeEx;
  BYTE                  byRuleName[NAME_LEN];
  DWORD                 dwEventType;
  NET_VCA_EVENT_UNION   uEventParam;
}NET_VCA_RULE_INFO,*LPNET_VCA_RULE_INFO;

Members

byRuleID
规则序号，为规则配置结构下标，0-7
byRes
保留，置为0
wEventTypeEx
行为事件类型扩展，用于代替字段dwEventType，参考VCA_RULE_EVENT_TYPE_EX
byRuleName
规则名称
dwEventType
警戒事件类型，具体定义见VCA_EVENT_TYPE
uEventParam
事件参数

Remarks

上传的行为报警事件，建议事件类型按wEventTypeEx的值定义进行区分，兼容参数dwEventType。

See Also

NET_VCA_RULE_ALARM


NET_VCA_RULE_TRIGGER_PARAM

规则触发参数结构体。

struct{
  BYTE     byTriggerMode;
  BYTE     byTriggerPoint;
  BYTE     byRes1[2];
  float    fTriggerArea;
  BYTE     byRes2[4];
}NET_VCA_RULE_TRIGGER_PARAM, *LPNET_VCA_RULE_TRIGGER_PARAM;

Members

byTriggerMode
规则的触发方式：0- 不启用，1- 路径点，2- 目标面积
byTriggerPoint
触发点，触发方式为路径点时有效：0- 中，1- 上，2- 下
byRes1
保留
fTriggerArea
触发目标面积百分比，取值范围：[0,100]，触发方式为目标面积时有效
byRes2
保留

See Also

NET_VCA_ONE_RULE_V41


NET_VCA_RULECFG

异常行为识别参数结构体。

struct{
  DWORD              dwSize;
  BYTE               byPicProType;
  BYTE               byUpLastAlarm;
  BYTE               byPicRecordEnable;
  BYTE               byRes;
  NET_DVR_JPEGPARA   struPictureParam;
  NET_VCA_ONE_RULE   struRule[MAX_RULE_NUM];
}NET_VCA_RULECFG,*LPNET_VCA_RULECFG;

Members

dwSize
结构体大小
byPicProType
报警时图片处理方式：0-不处理；非0-处理
byUpLastAlarm
是否先上传最近一次的报警，0-否，1-是
byPicRecordEnable
是否启用图片存储：0- 不启用，1- 启用
byRes
保留，置为0
struPictureParam
图片规格结构
struRule
规则数组

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_VCA_RULECFG_V41

异常行为识别参数结构体。

struct{
  DWORD                  dwSize;
  BYTE                   byPicProType;
  BYTE                   byUpLastAlarm;
  BYTE                   byPicRecordEnable;
  BYTE                   byRes1;
  NET_DVR_JPEGPARA       struPictureParam;
  NET_VCA_ONE_RULE_V41   struRule[MAX_RULE_NUM];
  WORD                   wRelSnapChan[MAX_REL_SNAPCHAN_NUM];
  BYTE                   byRes[26];
}NET_VCA_RULECFG_V41,*LPNET_VCA_RULECFG_V41;

Members

dwSize
结构体大小
byPicProType
报警时图片处理方式：0-不处理；非0-上传
byUpLastAlarm
是否先上传最近一次的报警，0-否，1-是
byPicRecordEnable
是否启用图片存储：0- 不启用，1- 启用
byRes1
保留，置为0
struPictureParam
图片规格结构
struRule
规则数组
wRelSnapChan
关联抓图通道(当主通道报警时，同时会上传关联通道的抓拍图片)：0表示不关联，其他值为关联通道号
byRes
保留，置为0

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_VCA_RULECFG_V42

异常行为识别参数结构体。

struct{
  DWORD                   dwSize;
  BYTE                    byPicProType;
  BYTE                    byUpLastAlarm;
  BYTE                    byPicRecordEnable;
  BYTE                    byRes1;
  NET_DVR_JPEGPARA        struPicParam;
  NET_VCA_ONE_RULE_V42    struRule[MAX_RULE_NUM_V42];
  WORD                    wRelSnapChan[MAX_REL_SNAPCHAN_NUM];
  BYTE                    byTrackEnable;
  BYTE                    byRes2;
  NET_DVR_PTZ_POSITION    struPTZPosition;
  WORD                    wTrackDuration;
  BYTE                    byRes[62];
}NET_VCA_RULECFG_V42,*LPNET_VCA_RULECFG_V42;

Members

dwSize
结构体大小
byPicProType
报警时图片处理方式：0-不处理；非0-处理
byUpLastAlarm
是否先上传最近一次的报警，0-否，1-是
byPicRecordEnable
是否启用图片存储：0- 不启用，1- 启用
byRes1
保留，置为0
struPictureParam
图片规格结构
struRule
规则数组，每位数组表示一种事件类型的规则配置
wRelSnapChan
关联抓图通道(当主通道报警时，同时会上传关联通道的抓拍图片)：0表示不关联，其他值为关联通道号
byTrackEnable
是否启用跟踪：0- 不启用，1- 启用
byRes2
保留，置为0
struPTZPosition
场景位置信息
wTrackDuration
跟踪持续时间，单位：s
byRes
保留，置为0

Remarks

  • 设备是否支持异常行为识别配置或者支持的参数能力，可以通过设备能力集进行判断，对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<Behavior>。
  • 根据条件结构NET_DVR_CHANNEL_GROUP （第一次组号为1或0）获取（设置）配置结构 NET_VCA_RULECFG_V42; 一次只允许配置一条，该功能对应能力为智能通道分析能力中的节点：对应智能通道分析能力集(VcaChanAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<Behavior>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_VCA_RUN

快速移动参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  float              fRunDistance;
  BYTE               bySensitivity;
  BYTE               byMode;
  BYTE               byDetectionTarget;
  BYTE               byRes;
}NET_VCA_RUN,*LPNET_VCA_RUN;

Members

struRegion
区域范围
fRunDistance
人奔跑最大距离，像素模式取值范围：[0.1,1.00]，实际模式取值范围：(1,20)m/s：
bySensitivity
灵敏度参数，取值范围：[1,5]
byMode
距离模式：0- 像素模式，1- 实际模式
byDetectionTarget
检测目标，0表示所有目标（表示不锁定检测目标，所有目标都将进行检测），其他取值按位表示不同的检测目标：0x01-人，0x02-车
支持多选，例如：0x3表示同时检测车和人的目标类型
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_RUNNING

人员奔跑检测结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  DWORD              dwSpeed;
  BYTE               byRes[4];
 }NET_VCA_RUNNING,*LPNET_VCA_RUNNING;

Members

struRegion
区域范围（配置区域）
dwSpeed
奔跑速度，取值范围：[1,10]
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_SAVE_PATH_CFG

设备存储信息结构体。

struct{
  DWORD                    dwSize;
  NET_VCA_SINGLE_PATH      struPathInfo[MAX_DISKNUM_V30];
  BYTE                     byRes[40];
}NET_VCA_SAVE_PATH_CFG, *LPNET_VCA_SAVE_PATH_CFG;

Members

dwSize
结构体大小
struPathInfo
单个分区信息
byRes
保留

See Also

NET_DVR_GetDVRConfig NET_DVR_SetDVRConfig


NET_VCA_SCANNER

读卡器参数结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  WORD              wDuration;
  BYTE              bySensitivity;
  BYTE              byRes[5];
}NET_VCA_SCANNER,*LPNET_VCA_SCANNER;

Members

struRegion
区域范围
wDuration
读卡持续时间：4-60秒，建议10s秒
bySensitivity
灵敏度参数，范围[1,5]
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_SEARCH_DATABASE_COND_UNION

抓拍库检索参数联合体。

union{
  DWORD                                   uLen[25];
  NET_VCA_REGISTER_PIC                    struNormalFind;
  NET_VCA_ADVANCE_SEARCH_DATABASE_COND    struAdvanceFind;
}NET_VCA_SEARCH_DATABASE_COND_UNION, *LPNET_VCA_SEARCH_DATABASE_COND_UNION;

Members

uLen
联合体大小，25*4共100字节
struNormalFind
普通检索条件参数
struAdvanceFind
高级检索条件参数

Remarks

普通检索就是可以输出单张检测的结果与抓拍数据库比对，输出与该输入的人脸条件相符合的结果，此时的输入条件是大图ID、人脸评分、人脸子图区域。

高级检索是通过事后查询或者普通检索获得的结果（人脸子图ID）与抓拍数据库比对，输出与条件符合的结果，此时只需要输入人脸子图ID即可。

See Also

NET_VCA_SEARCH_DATABASE_PARAM


NET_VCA_SEARCH_DATABASE_PARAM

数据库检索参数结构体。

struct{
  DWORD                                 dwSearchType;
  NET_VCA_SEARCH_DATABASE_COND_UNION    uSearchCond;
  BYTE                                  byRes[16];
}NET_VCA_SEARCH_DATABASE_PARAM, *LPNET_VCA_SEARCH_DATABASE_PARAM;

Members

dwSearchType
检索类型，具体定义见下表：
enum _VCA_SEARCH_DATABASE_TYPE_{
  VCA_NORMAL_SEARCH_DATABASE  = 0x00000000,
  VCA_ADVANCE_SEARCH_DATABASE = 0x00000001
}VCA_SEARCH_DATABASE_TYPE
VCA_NORMAL_SEARCH_DATABASE
普通检索
VCA_ADVANCE_SEARCH_DATABASE
高级检索
uSearchCond
检索参数
byRes
保留

See Also

NET_VCA_SEARCH_SNAPDB_COND NET_VCA_SEARCH_FACEDB_COND


NET_VCA_SEARCH_DATARECORD_RESULT

人脸数据库检索结果结构体。

struct{
  DWORD                      dwSize;
  DWORD                      dwDataBaseID;
  DWORD                      dwRecordID;
  NET_VCA_HUMAN_ATTRIBUTE    struAttribute;
  BYTE                       byRemark1[NAME_LEN];
  BYTE                       byRemark2[64];
  float                      fSimilarity;
  DWORD                      dwFacePicID;
  DWORD                      dwFacePicLen;
  BYTE                       byRes[80];
  BYTE                       *pFacePic;
}NET_VCA_SEARCH_DATARECORD_RESULT, *LPNET_VCA_SEARCH_DATARECORD_RESULT;

Members

dwSize
结构体大小
dwDataBaseID
数据库ID
dwRecordID
记录ID
struAttribute
人员信息
byRemark1
备注信息1
byRemark2
备注信息2
fSimilarity
相似度，取值范围：[0.001,1]
dwFacePicID
人脸图ID
dwFacePicLen
人脸图数据长度
byRes
保留
pFacePic
人脸图数据

See Also

NET_DVR_SearchFaceDB


NET_VCA_SEARCH_FACEDB_COND

人脸数据库检索条件结构体。

struct{
  DWORD                            dwDataBaseID;
  NET_VCA_HUMANATTRIBUTE_COND      struAttribute;
  NET_VCA_SEARCH_DATABASE_PARAM    struSearchParam;
  DWORD                            dwMaxSearchNum;
  WORD                             wThreshold;
  BYTE                             byRes[78];
}NET_VCA_SEARCH_FACEDB_COND, *LPNET_VCA_SEARCH_FACEDB_COND;

Members

dwDataBaseID
数据库ID
struAttribute
人员信息
struSearchParam
检索参数
dwMaxSearchNum
最大检索条数
wThreshold
阈值，取值范围：0~100
byRes
保留

See Also

NET_DVR_SearchFaceDB


NET_VCA_SEARCH_SNAPDB_COND

抓拍数据库查询条件结构体。

struct{
  DWORD                            dwChannel;
  DWORD                            dwDataBaseID;
  NET_DVR_TIME                     struStartTime;
  NET_DVR_TIME                     struStopTime;
  BYTE                             bySex;
  BYTE                             byRes1[3];
  BYTE                             byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE                             byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE                             byAttribute1[NAME_LEN];
  BYTE                             byAttribute2[NAME_LEN];
  NET_VCA_SEARCH_DATABASE_PARAM    struSearchParam;
  DWORD                            dwMaxSearchNum;
  WORD                             wThreshold;
  BYTE                             byRes[78];
}NET_VCA_SEARCH_SNAPDB_COND, *LPNET_VCA_SEARCH_SNAPDB_COND;

Members

dwChannel
通道号
dwDataBaseID
数据库ID
struStartTime
开始时间
struStopTime
结束时间
bySex
性别：0- 不启用，1- 男，2- 女
byRes1
保留
byStartBirthDate
起始出生年月，如：201106
byEndBirthDate
截止出生年月，如201106
byAttribute1
属性1
byAttribute2
属性2
struSearchParam
检索参数
dwMaxSearchNum
最大检索条数
wThreshold
阈值，取值范围：0~100
byRes
保留

See Also

NET_DVR_SearchSnapDB


NET_VCA_SEARCH_SNAPRECORD_RESULT

抓拍数据库检索结果结构体。

struct{
  DWORD           dwSize;
  DWORD           dwDataBaseID;
  DWORD           dwRecordID;
  NET_DVR_TIME    struSnapTime;
  BYTE            bySex;
  BYTE            byRes1[3];
  BYTE            byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE            byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN];
  BYTE            byAttribute1[NAME_LEN];
  BYTE            byAttribute2[NAME_LEN];
  float           fSimilarity;
  DWORD           dwFacePicID;
  DWORD           dwFacePicLen;
  BYTE            byRes[80];
  BYTE            *pFacePic;
}NET_VCA_SEARCH_SNAPRECORD_RESULT, *LPNET_VCA_SEARCH_SNAPRECORD_RESULT;

Members

dwSize
结构体大小
dwDataBaseID
数据库ID
dwRecordID
记录ID
struSnapTime
抓拍时间
bySex
性别：0- 不启用，1- 男，2- 女
byRes1
保留
byStartBirthDate
起始出生年月，如：201106
byEndBirthDate
截止出生年月，如201106
byAttribute1
属性1
byAttribute2
属性2
fSimilarity
相似度，取值范围：[0.001,1]
dwFacePicID
人脸图ID
dwFacePicLen
人脸图数据长度
byRes
保留
pFacePic
人脸图数据

See Also

NET_DVR_SearchSnapDB


NET_VCA_SINGLE_FACESNAPCFG

人脸抓拍规则参数（单条）结构体。

struct{
  BYTE                    byActive;
  BYTE                    byAutoROIEnable;
  BYTE                    byRes[2];
  NET_VCA_SIZE_FILTER     struSizeFilter;
  NET_VCA_POLYGON         struVcaPolygon;
}NET_VCA_SINGLE_FACESNAPCFG, *LPNET_VCA_SINGLE_FACESNAPCFG;

Members

byActive
是否激活规则：0- 否，1- 是
byAutoROIEnable
人脸自动ROI开关使能：0- 关闭，1- 开启
byRes
保留
struSizeFilter
尺寸过滤器
struVcaPolygon
人脸抓拍区域

See Also

NET_VCA_FACESNAPCFG


NET_VCA_SINGLE_PATH

单个分区配置结构体。

struct{
  BYTE     byActive;
  BYTE     byType;
  BYTE     bySaveAlarmPic;
  BYTE     byRes1[5];
  DWORD    dwDiskDriver;
  DWORD    dwLeftSpace;
  BYTE     byRes2[8];
}NET_VCA_SINGLE_PATH, *LPNET_VCA_SINGLE_PATH;

Members

byActive
是否可用：0- 否，1- 是
byType
0- 存储抓拍，1- 存储非授权名单比对报警，2- 存储抓拍和非授权名单比对报警
bySaveAlarmPic
是否用于保存断网的报警图片：0- 否，1- 是
byRes1
保留
dwDiskDriver
盘符号，从0开始
dwLeftSpace
预留容量，单位为G
byRes2
保留

See Also

NET_VCA_SAVE_PATH_CFG


NET_VCA_SIT_QUIETLY

一动不动事件参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  DWORD              dwDuration;
  BYTE               byRes[4];
}NET_VCA_SIT_QUIETLY,*LPNET_VCA_SIT_QUIETLY;

Members

struRegion
区域范围
dwDuration
持续时间，单位：s，取值范围：1~3600
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_SIZE_FILTER

尺寸过滤器参数结构体。

struct{
  BYTE           byActive;
  BYTE           byMode;
  BYTE           byRes[2];
  NET_VCA_RECT   struMiniRect;
  NET_VCA_RECT   struMaxRect;
}NET_VCA_SIZE_FILTER,*LPNET_VCA_SIZE_FILTER;

Members

byActive
是否激活尺寸过滤器，0-否 ，非0-是
byMode
过滤器模式，具体定义如下：
enum _VCA_SIZE_FILTER_MODE_{
  IMAGE_PIX_MODE,
  REAL_WORLD_MODE,
  DEFAULT_MODE
}SIZE_FILTER_MODE
IMAGE_PIX_MODE
根据像素大小设置
REAL_WORLD_MODE
根据实际大小设置
DEFAULT_MODE
默认模式(目前ATM支持)
byRes
保留，置为0
struMiniRect
最小目标框，全0表示不设置（瞳距）。实际模式时取值范围为0~50，单位为m。
struMaxRect
最大目标框，全0表示不设置


NET_VCA_SPACING_CHANGE

间距变化参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  float               fSpacingThreshold;
  BYTE                bySensitivity;
  BYTE                byDetectMode;
  WORD                wDuration;
}NET_VCA_SPACING_CHANGE, *LPNET_VCA_SPACING_CHANGE;

Members

struRegion
区域范围
fSpacingThreshold
间距阈值，取值范围：[0,10.0]，默认：1.0，单位：米
bySensitivity
灵敏度，取值范围：[1,100]
byDetectMode
检测方式，与人数阈值相比较：1- 大于，2- 小于
wDuration
触发事件阈值，单位：秒，取值范围：1~3600，默认：2

See Also

NET_VCA_EVENT_UNION


NET_VCA_STANDUP

起立参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  BYTE                bySensitivity;
  BYTE                byHeightThreshold;
  WORD                wDuration;
  BYTE                byRes[4];
}NET_VCA_STANDUP, *LPNET_VCA_STANDUP;

Members

struRegion
区域范围
bySensitivity
灵敏度，取值范围：[1,100]
byHeightThreshold
高度阈值，取值范围：[0,250]，默认：130，单位：厘米
wDuration
触发事件阈值，单位：秒，取值范围：1~3600，默认：2
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_STICK_UP

贴纸条(异物粘贴)参数结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  WORD              wDuration;
  BYTE              bySensitivity;
  BYTE              byRes[5];
}NET_VCA_STICK_UP,*LPNET_VCA_STICK_UP;

Members

struRegion
区域范围
wDuration
触发时间阈值：4-60秒，建议10秒
bySensitivity
灵敏度参数，范围[1,5]
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_SUB_PROCIMG

单张子图信息结构体。

struct{
  DWORD              dwImageLen;
  DWORD              dwFaceScore;
  NET_VCA_RECT       struVcaRect;
  BYTE               byRes[20];
  BYTE               *pImage;
}NET_VCA_SUB_PROCIMG, *LPNET_VCA_SUB_PROCIMG;

Members

dwImageLen
图片数据长度
dwFaceScore
人脸评分，取值范围：0~100
struVcaRect
人脸子图区域
byRes
保留
pImage
图片数据

See Also

NET_VCA_FD_PROCIMG_RESULT


NET_VCA_SUB_SNAPPIC_DATA

人脸图片结构体。

struct{
  DWORD           dwFacePicID;
  DWORD           dwFacePicLen;
  NET_DVR_TIME    struSnapTime;
  DWORD           dwSimilarity;
  BYTE            byRes[16];
  char            sPicBuf[MAX_FACE_PIC_LEN];
}NET_VCA_SUB_SNAPPIC_DATA, *LPNET_VCA_SUB_SNAPPIC_DATA;

Members

dwFacePicID
人脸图ID
dwFacePicLen
人脸图数据长度
struSnapTime
抓拍时间
dwSimilarity
相似度
byRes
保留
sPicBuf
图片数据

Remarks

此处的图片ID可供后面事后检索用。

See Also

NET_DVR_FindNextSnapPic


NET_VCA_TAKE

捡包参数结构体。

struct{
  NET_VCA_POLYGON      struRegion;
  WORD                 wDuration;
  BYTE                 bySensitivity;
  BYTE                 byRes[5];
}NET_VCA_TAKE, *LPNET_VCA_TAKE;

Members

struRegion
区域范围
wDuration
触发捡包报警阈值，10~100秒
bySensitivity
灵敏度，取值范围：[1,5]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_TAKE_LEFT

丢包/捡包参数结构体。

struct{
  NET_VCA_POLYGON   struRegion;
  WORD              wDuration;
  BYTE              byRes[6];
}NET_VCA_TAKE_LEFT,*LPNET_VCA_TAKE_LEFT;

Members

struRegion
区域范围
wDuration
触发丢包/捡包报警的持续时间：1-120秒，建议10秒（如果ATM设备，时间为4-60秒）
byRes
保留，置为0

See Also

NET_VCA_EVENT_UNION


NET_VCA_TARGET_INFO

报警目标信息结构体。

struct{
  DWORD          dwID;
  NET_VCA_RECT   struRect;
  BYTE           byRes[4];
}NET_VCA_TARGET_INFO,*LPNET_VCA_TARGET_INFO;

Members

dwID
目标ID，人员密度过高报警时为0
struRect
目标边界框
byRes
保留，置为0

See Also

NET_DVR_FACEDETECT_ALARM NET_VCA_FACESNAP_RESULT NET_VCA_RULE_ALARM


NET_VCA_TOILET_TARRY

如厕超时参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  WORD                wDelay;
  BYTE                byRes[6];
}NET_VCA_TOILET_TARRY, *LPNET_VCA_TOILET_TARRY;

Members

struRegion
区域范围
wDelay
如厕超时时间，单位：秒，取值范围：[1,3600]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_TRAIL

尾随参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  WORD                wRes;
  BYTE                bySensitivity;
  BYTE                byRes[5];
}NET_VCA_TRAIL, *LPNET_VCA_TRAIL;

Members

struRegion
区域范围
wRes
保留
bySensitivity
灵敏度，取值范围：[1,5]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_TRAVERSE_PLANE

穿越警戒面参数结构体。

struct{
  NET_VCA_LINE    struPlaneBottom;
  DWORD           dwCrossDirection;
  BYTE            bySensitivity;
  BYTE            byPlaneHeight;
  BYTE            byDetectionTarget;
  BYTE            byPriority;
  BYTE            byAlarmConfidence;
  BYTE            byRecordConfidence;
  BYTE            byRes2[34];
}NET_VCA_TRAVERSE_PLANE,*LPNET_VCA_TRAVERSE_PLANE;

Members

struPlaneBottom
警戒面底边
dwCrossDirection
穿越方向，具体定义见下表：
enum _VCA_CROSS_DIRECTION_{
  VCA_BOTH_DIRECTION  = 0,
  VCA_LEFT_GO_RIGHT   = 1,
  VCA_RIGHT_GO_LEFT   = 2
}VCA_CROSS_DIRECTION
VCA_BOTH_DIRECTION
双向
VCA_LEFT_GO_RIGHT
由左至右
VCA_RIGHT_GO_LEFT
由右至左
bySensitivity
灵敏度，取值范围：[1,5] （对于Smart IPC，取值范围为[1,100]）
byPlaneHeight
警戒面高度（网络摄像机不支持该参数设置）
byDetectionTarget
检测目标，0表示所有目标（表示不锁定检测目标，所有目标都将进行检测），其他取值按位表示不同的检测目标：0x01-人，0x02-车
支持多选，例如：0x3表示同时检测车和人的目标类型
byPriority
优先级,0~低,1~中,2~高
byAlarmConfidence
报警置信度, 0-低,1-较低,2-较高,3-高
byRecordConfidence
录像置信度, 0-低,1-较低,2-较高,3-高
byRes2
保留，置为0

Remarks

对于不同设备，以上参数的取值范围可能不同。对于Smart IPC，可以调用NET_DVR_GetDeviceAbility获取报警事件处理能力集（EventAbility，能力集类型：DEVICE_ABILITY_INFO）而得到实际取值范围（节点：<TraversingVirtualPlane>）；对于iDS智能设备，可以调用NET_DVR_GetDeviceAbility获取智能通道分析能力集（VcaChanAbility，能力集类型：DEVICE_ABILITY_INFO）而得到实际取值范围（节点：<TraversePlane>）。

See Also

NET_VCA_EVENT_UNION NET_VCA_TRAVERSE_PLANE_DETECTION NET_DVR_TRAVERSE_PLANE_SEARCHCOND


NET_VCA_TRAVERSE_PLANE_DETECTION

越界侦测配置结构体。

struct{
  DWORD                          dwSize;
  BYTE                           byEnable;
  BYTE                           byEnableDualVca;
  BYTE                           byEnableHumanMisinfoFilter;
  BYTE                           byEnableVehicleMisinfoFilter;
  NET_VCA_TRAVERSE_PLANE         struAlertParam[MAX_ALERTLINE_NUM];
  NET_DVR_SCHEDTIME              struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30];
  NET_DVR_HANDLEEXCEPTION_V40    struHandleException;
  DWORD                          dwMaxRelRecordChanNum;
  DWORD                          dwRelRecordChanNum;
  DWORD                          byRelRecordChan[MAX_CHANNUM_V30];
  NET_DVR_SCHEDTIME              struHolidayTime[MAX_TIMESEGMENT_V30];
  BYTE                           byRes2[100];
}NET_VCA_TRAVERSE_PLANE_DETECTION,*LPNET_VCA_TRAVERSE_PLANE_DETECTION;

Members

dwSize
结构体大小
byEnable
使能越界侦测功能：0- 否，1- 是
byEnableDualVca
是否启用智能后检索：0- 不启用，1- 启用
byEnableHumanMisinfoFilter
是否启用人体去误报：0- 不启用，1- 启用
byEnableVehicleMisinfoFilter
是否启用车辆去误报：0- 不启用，1- 启用
struAlertParam
警戒线参数
struAlarmSched
布防时间，每周7天，每天最多设置8个时间段
struHandleException
异常处理方式
dwMaxRelRecordChanNum
触发的录像通道数（只读）最大支持数量
dwRelRecordChanNum
报警触发的录像通道数实际支持数，即当前组包含的通道个数
byRelRecordChan
报警触发的录像通道，取数组前dwRelRecordChanNum个值，其值表示录像通道号。例如，dwRelRecordChanNum=5，则可以配置触发录像的通道：dwRelRecordChan[0]~dwRelRecordChan[4]。
struHolidayTime
假日布防时间，最多设置8个时间段
byRes2
保留，置为0

Remarks

  • 当dwMaxRelRecordChanNum字段大于64的时候，区分组号（dwGroup，从0开始），一组最大64路。根据条件结构NET_DVR_CHANNEL_GROUP（第一次组号为0）获取（设置）配置结构，如果组数大于1，则组号设为1，再次发送配置条件获取（设置）下一组配置信息，多组的话，组号依次递增。
  • 关联的录像通道号与组号绑定，即：组号为0时，表示通道号范围为1~64；当组号为1时，表示关联通道号范围为65~128；依次类推，且是组内紧凑排列，如果遇到0xffffffff表示本组当前的及组内后续的关联通道号无效。
  • 如果开启人体去误报过滤功能，则设备将会把认为是误报的报警过滤掉，不进行实时上传，但会在本地存储以供查询。
  • 设备是否支持越界侦测或者支持的参数能力，可以通过设备能力集进行判断，对应事件能力集(EventAbility)，相关接口：NET_DVR_GetDeviceAbility，能力集类型：DEVICE_ABILITY_INFO，节点：<TraversingVirtualPlane>。

See Also

NET_DVR_GetDeviceConfig NET_DVR_SetDeviceConfig


NET_VCA_VIOLENT_MOTION

剧烈运动参数结构体。

struct{
  NET_VCA_POLYGON    struRegion;
  WORD               wDuration;
  BYTE               bySensitivity;
  BYTE               byMode;
  BYTE               byRes[4];
}NET_VCA_VIOLENT_MOTION, *LPNET_VCA_VIOLENT_MOTION;

Members

struRegion
区域范围
wDuration
触发事件阈值，1-50秒
bySensitivity
灵敏度参区域范围数，取值范围：[1,100]
byMode
0-纯视频模式，1-音视频联合模式，2-纯音频模式
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VCA_YARD_TARRY

放风场滞留参数结构体。

struct{
  NET_VCA_POLYGON     struRegion;
  WORD                wDelay;
  BYTE                byRes[6];
}NET_VCA_YARD_TARRY, *LPNET_VCA_YARD_TARRY;

Members

struRegion
区域范围
wDelay
放风场滞留时间，单位：秒，取值范围：[1,120]
byRes
保留

See Also

NET_VCA_EVENT_UNION


NET_VPD_SHUTTER

快门参数结构体。

struct{
  DWORD      dwCommmand;
  DWORD      dwCode;
  BYTE       byRes[60];
}NET_VPD_SHUTTER,*LPNET_VPD_SHUTTER;

Members

dwCommmand
命令：0-不控制，1-调亮，2-调暗，3-保持，4-直接输入快门值
dwCode
快门值。当参数dwCommmand为4，该参数不能为空
byRes
保留，置为0

See Also

NET_VPD_SetShutter


PROVINCE_CITY_IDX

省份枚举类型。

enum _PROVINCE_CITY_IDX_{
  ANHUI_PROVINCE             = 0,
  AOMEN_PROVINCE             = 1,
  BEIJING_PROVINCE           = 2,
  CHONGQING_PROVINCE         = 3,
  FUJIAN_PROVINCE            = 4,
  GANSU_PROVINCE             = 5,
  GUANGDONG_PROVINCE         = 6,
  GUANGXI_PROVINCE           = 7,
  GUIZHOU_PROVINCE           = 8,
  HAINAN_PROVINCE            = 9,
  HEBEI_PROVINCE             = 10,
  HENAN_PROVINCE             = 11,
  HEILONGJIANG_PROVINCE      = 12,
  HUBEI_PROVINCE             = 13,
  HUNAN_PROVINCE             = 14,
  JILIN_PROVINCE             = 15,
  JIANGSU_PROVINCE           = 16,
  JIANGXI_PROVINCE           = 17,
  LIAONING_PROVINCE          = 18,
  NEIMENGGU_PROVINCE         = 19,
  NINGXIA_PROVINCE           = 20,
  QINGHAI_PROVINCE           = 21,
  SHANDONG_PROVINCE          = 22,
  SHANXI_JIN_PROVINCE        = 23,
  SHANXI_SHAN_PROVINCE       = 24,
  SHANGHAI_PROVINCE          = 25,
  SICHUAN_PROVINCE           = 26,
  TAIWAN_PROVINCE            = 27,
  TIANJIN_PROVINCE           = 28,
  XIZANG_PROVINCE            = 29,
  XIANGGANG_PROVINCE         = 30,
  XINJIANG_PROVINCE          = 31,
  YUNNAN_PROVINCE            = 32,
  ZHEJIANG_PROVINCE          = 33
}PROVINCE_CITY_IDX
ANHUI_PROVINCE
0- 安徽
AOMEN_PROVINCE
1- 澳门
BEIJING_PROVINCE
2- 北京
CHONGQING_PROVINCE
3- 重庆
FUJIAN_PROVINCE
4- 福建
GANSU_PROVINCE
5- 甘肃
GUANGDONG_PROVINCE
6- 广东
GUANGXI_PROVINCE
7- 广西
GUIZHOU_PROVINCE
8- 贵州
HAINAN_PROVINCE
9- 海南
HEBEI_PROVINCE
10- 河北
HENAN_PROVINCE
11- 河南
HEILONGJIANG_PROVINCE
12- 黑龙江
HUBEI_PROVINCE
13- 湖北
HUNAN_PROVINCE
14- 湖南
JILIN_PROVINCE
15- 吉林
JIANGSU_PROVINCE
16- 江苏
JIANGXI_PROVINCE
17- 江西
LIAONING_PROVINCE
18- 辽宁
NEIMENGGU_PROVINCE
19- 内蒙古
NINGXIA_PROVINCE
20- 宁夏
QINGHAI_PROVINCE
21- 青海
SHANDONG_PROVINCE
22- 山东
SHANXI_JIN_PROVINCE
23- 山西
SHANXI_SHAN_PROVINCE
24- 陕西
SHANGHAI_PROVINCE
25- 上海
SICHUAN_PROVINCE
26- 四川
TAIWAN_PROVINCE
27- 台湾
TIANJIN_PROVINCE
28- 天津
XIZANG_PROVINCE
29- 西藏
XIANGGANG_PROVINCE
30- 香港
XINJIANG_PROVINCE
31- 新疆
YUNNAN_PROVINCE
32- 云南
ZHEJIANG_PROVINCE
33- 浙江

See Also

NET_DVR_GEOGLOCATION NET_DVR_AREAINFOCFG


TOOLWAY_VEHICLE_TYPE

收费公路车辆通行费车型分类

enum _TOOLWAY_VEHICLE_TYPE{
  TOOLWAY_RESULT_OTHER = 0,                       //未知
  TOOLWAY_PASSENGER_VEHICLE_CLASS_1_MINI = 1,     //1类客车微型
  TOOLWAY_PASSENGER_VEHICLE_CLASS_1_SMALL = 2,    //1类客车小型
  TOOLWAY_PASSENGER_VEHICLE_CLASS_2_MIDDLE = 3,   //2类客车中型
  TOOLWAY_PASSENGER_VEHICLE_CLASS_2_TRAILER = 4,  //2类客车乘用车列车
  TOOLWAY_PASSENGER_VEHICLE_CLASS_3_LARGR = 5,    //3类客车大型
  TOOLWAY_PASSENGER_VEHICLE_CLASS_4_LARGR = 6,    //4类客车大型
  TOOLWAY_GOODS_VEHICLE_CLASS_1 = 7,              //1类货车2轴
  TOOLWAY_GOODS_VEHICLE_CLASS_2 = 8,              //2类货车2轴
  TOOLWAY_GOODS_VEHICLE_CLASS_3 = 9,              //3类货车3轴
  TOOLWAY_GOODS_VEHICLE_CLASS_4 = 10,             //4类货车4轴
  TOOLWAY_GOODS_VEHICLE_CLASS_5 = 11,             //5类货车5轴
  TOOLWAY_GOODS_VEHICLE_CLASS_6 = 12,             //6类货车6轴
  TOOLWAY_MOTOR_VEHICLE_CLASS_1 = 13,             //1类作业车2轴
  TOOLWAY_MOTOR_VEHICLE_CLASS_2 = 14,             //2类作业车2轴
  TOOLWAY_MOTOR_VEHICLE_CLASS_3 = 15,             //3类作业车3轴
  TOOLWAY_MOTOR_VEHICLE_CLASS_4 = 16,             //4类作业车4轴
  TOOLWAY_MOTOR_VEHICLE_CLASS_5 = 17,             //5类作业车5轴
  TOOLWAY_MOTOR_VEHICLE_CLASS_6 = 18,             //6类作业车大于等于6轴
}TOOLWAY_VEHICLE_TYPE


TRAFFIC_AID_TYPE

交通事件类型。

enum _TRAFFIC_AID_TYPE_{
  CONGESTION                   = 0x1,
  PARKING                      = 0x2,
  INVERSE                      = 0x4,
  PEDESTRIAN                   = 0x8,
  DEBRIS                       = 0x10,
  SMOKE                        = 0x20,
  OVERLINE                     = 0x40,
  VEHICLE_CONTROL_LIST         = 0x80,
  SPEED                        = 0x100,
  LANECHANGE                   = 0x200,
  TURNAROUND                   = 0x400,
  VEHICLE_OCCUPANCY_NONVEHICLE = 0x800,
  GASSER                       = 0x1000,
  ROADBLOCK                    = 0x2000,
  CONSTRUCTION                 = 0x4000,
  TRAFFIC_ACCIDENT             = 0x8000,
  PARALLEL_PARKING             = 0x10000
  FOG_DETECTION                = 0x20000
}TRAFFIC_AID_TYPE
CONGESTION
0x1- 拥堵
PARKING
0x2- 停车
INVERSE
0x4- 逆行
PEDESTRIAN
0x8- 行人
DEBRIS
0x10- 遗留物，抛洒物碎片
SMOKE
0x20- 烟雾
OVERLINE
0x40- 压线
VEHICLE_CONTROL_LIST
0x80- 非授权名单数据
SPEED
0x100- 超速
LANECHANGE
0x200- 变道
TURNAROUND
0x400- 掉头
VEHICLE_OCCUPANCY_NONVEHICLE
0x800- 机动车占用非机动车位
GASSER
0x1000- 加塞
ROADBLOCK
0x2000- 路障
CONSTRUCTION
0x4000- 施工
TRAFFIC_ACCIDENT
0x8000- 交通事故检测（交通事故目前先做车车事故，追尾、剐蹭等算法判断车与车之间路径有交叉，其他车辆绕行则报警）
PARALLEL_PARKING
0x10000- 侧方位停车检测
FOG_DETECTION
0x20000- 浓雾检测

See Also

NET_DVR_AID_INFO


TRAFFIC_AID_TYPE_EX

交通事件类型。

enum tagTRAFFIC_AID_TYPE_EX{
      ENUM_AID_TYPE_CONGESTION = 1,
      ENUM_AID_TYPE_PARKING = 2,
      ENUM_AID_TYPE_INVERSE = 3,
      ENUM_AID_TYPE_PEDESTRIAN = 4,
      ENUM_AID_TYPE_DEBRIS = 5,
      ENUM_AID_TYPE_SMOKE = 6,
      ENUM_AID_TYPE_OVERLINE = 7,
      ENUM_AID_TYPE_VEHICLE_CONTROL_LIST = 8,
      ENUM_AID_TYPE_SPEED = 9,
      ENUM_AID_TYPE_LANECHANGE = 10,
      ENUM_AID_TYPE_TURNAROUND = 11,
      ENUM_AID_TYPE_VEHICLE_OCCUPANCY_NONVEHICLE = 12,
      ENUM_AID_TYPE_GASSER = 13,
      ENUM_AID_TYPE_ROADBLOCK = 14,
      ENUM_AID_TYPE_CONSTRUCTION = 15,
      ENUM_AID_TYPE_TRAFFIC_ACCIDENT = 16,
      ENUM_AID_TYPE_PARALLEL_PARKING = 17,
      ENUM_AID_TYPE_FOG_DETECTION = 18,
      ENUM_AID_TYPE_OCCUPY_EMERGENCY_LANE = 19,
      ENUM_AID_TYPE_CONFLAGRATION = 20,
      ENUM_AID_TYPE_TFS_MANUAL_TRIGGER = 21,
      ENUM_AID_TYPE_LOADING_DOCK_TRIGGER_UPLOAD = 22,
      ENUM_AID_TYPE_OCCUPY_OVERTAKING_LANE = 23,
      ENUM_AID_TYPE_PROHIBITION_MARK_VIOLATION = 24,
      ENUM_AID_TYPE_CHECK_POINT = 25,
      ENUM_AID_TYPE_SUDDEN_SPEED_DROP = 26,
      ENUM_AID_TYPE_SLOW_MOVING = 27,
      ENUM_AID_TYPE_NOT_KEEP_DISTANCE = 28,
      ENUM_AID_TYPE_NOT_SLOW_ZEBRA_CROSSING = 29,
      ENUM_AID_TYPE_OVER_TAKE_RIGHT_SIDE = 30,
      ENUM_AID_TYPE_LOW_SPEED = 31,
      ENUM_AID_TYPE_DRAG_RACING = 32,
      ENUM_AID_TYPE_CHANGE_LANE_CONTINUOUSLY = 33,
      ENUM_AID_TYPE_S_SHARP_DRIVING = 34,
      ENUM_AID_TYPE_LARGE_VEHICLE_OCCUPY_LINE = 35
      ENUM_AID_TYPE_OBSTACLE = 36
}TRAFFIC_AID_TYPE_EX
ENUM_AID_TYPE_CONGESTION
1-拥堵
ENUM_AID_TYPE_PARKING
2-停车
ENUM_AID_TYPE_INVERSE
3-逆行
ENUM_AID_TYPE_PEDESTRIAN
4-行人
ENUM_AID_TYPE_DEBRIS
5-遗留物 抛洒物碎片
ENUM_AID_TYPE_SMOKE
6-烟雾
ENUM_AID_TYPE_OVERLINE
7-压线
ENUM_AID_TYPE_VEHICLE_CONTROL_LIST
8-非授权名单数据
ENUM_AID_TYPE_SPEED
9-超速
ENUM_AID_TYPE_LANECHANGE
10-变道
ENUM_AID_TYPE_TURNAROUND
11-掉头
ENUM_AID_TYPE_VEHICLE_OCCUPANCY_NONVEHICLE
12-机动车占用非机动车位
ENUM_AID_TYPE_GASSER
13-加塞
ENUM_AID_TYPE_ROADBLOCK
14-路障
ENUM_AID_TYPE_CONSTRUCTION
15-施工
ENUM_AID_TYPE_TRAFFIC_ACCIDENT
16-交通事故检测（交通事故目前先做车车事故，追尾、剐蹭等算法判断车与车之间路径有交叉，其他车辆绕行则报警）
ENUM_AID_TYPE_PARALLEL_PARKING
17-侧方位停车检测
ENUM_AID_TYPE_FOG_DETECTION
18-浓雾检测
ENUM_AID_TYPE_OCCUPY_EMERGENCY_LANE
19-占用紧急车道
ENUM_AID_TYPE_CONFLAGRATION
20-火灾
ENUM_AID_TYPE_TFS_MANUAL_TRIGGER
21-手动违章取证事件
ENUM_AID_TYPE_LOADING_DOCK_TRIGGER_UPLOAD
22-月台触发上传
ENUM_AID_TYPE_OCCUPY_OVERTAKING_LANE
23-占用超车道
ENUM_AID_TYPE_PROHIBITION_MARK_VIOLATION
24-违反禁令标志
ENUM_AID_TYPE_CHECK_POINT
25-卡口
ENUM_AID_TYPE_SUDDEN_SPEED_DROP
26-速度骤降
ENUM_AID_TYPE_SLOW_MOVING
27-车辆缓行
ENUM_AID_TYPE_NOT_KEEP_DISTANCE
28-未保持车距
ENUM_AID_TYPE_NOT_SLOW_ZEBRA_CROSSING
29-斑马线未减速
ENUM_AID_TYPE_OVER_TAKE_RIGHT_SIDE
30-右侧超车
ENUM_AID_TYPE_LOW_SPEED
31-机动车低速行驶
ENUM_AID_TYPE_DRAG_RACING
32-飙车
ENUM_AID_TYPE_CHANGE_LANE_CONTINUOUSLY
33-连续变道
ENUM_AID_TYPE_S_SHARP_DRIVING
34-蛇形行驶
ENUM_AID_TYPE_LARGE_VEHICLE_OCCUPY_LINE
35-大车占道
ENUM_AID_TYPE_OBSTACLE
36-障碍物

See Also

NET_DVR_AID_INFO


TRUCK_AXLE_MODEL

公路货车轴型定义 参照《2016治超分类1133.xlsx》

enum _TRUCK_AXLE_MODEL{
  AXLE_TYPE_UNKNOWN = 0x0000,      //未知
  AXLE_TYPE_2AXLE_12 = 0x0200,     //2轴载货汽车
  AXLE_TYPE_3AXLE_122_1 = 0x0300,  //3轴中置轴挂车列车
  AXLE_TYPE_3AXLE_122_2,           //3轴铰接列车
  AXLE_TYPE_3AXLE_15,              //3轴载货汽车
  AXLE_TYPE_3AXLE_112,             //3轴载货汽车
  AXLE_TYPE_4AXLE_125_1 = 0x0400,  //4轴中置轴挂车列车
  AXLE_TYPE_4AXLE_152,             //4轴中置轴挂车列车
  AXLE_TYPE_4AXLE_125_2,           //4轴铰接列车
  AXLE_TYPE_4AXLE_1222,            //4轴全挂汽车列车
  AXLE_TYPE_4AXLE_115,             //4轴载货汽车
  AXLE_TYPE_5AXLE_155_1 = 0x0500,  //5轴中置轴挂车列车
  AXLE_TYPE_5AXLE_1125_1,          //5轴中置轴挂车列车
  AXLE_TYPE_5AXLE_155_2,           //5轴铰链列车
  AXLE_TYPE_5AXLE_1125_2,          //5轴铰链列车
  AXLE_TYPE_5AXLE_129,             //5轴铰链列车
  AXLE_TYPE_5AXLE_1522,            //5轴全挂汽车列车
  AXLE_TYPE_5AXLE_11222,           //5轴全挂汽车列车
  AXLE_TYPE_6AXLE_159_1 = 0x0600,  //6轴中置轴挂车列车
  AXLE_TYPE_6AXLE_159_2,           //6轴中置轴挂车列车
  AXLE_TYPE_6AXLE_1155_1,          //6轴中置轴挂车列车
  AXLE_TYPE_6AXLE_1155_2,          //6轴中置轴挂车列车
  AXLE_TYPE_6AXLE_159_3,           //6轴铰链列车
  AXLE_TYPE_6AXLE_159_4,           //6轴铰链列车
  AXLE_TYPE_6AXLE_1129,            //6轴铰链列车
  AXLE_TYPE_6AXLE_11522_1,         //6轴全挂车
  AXLE_TYPE_6AXLE_11522_2,         //6轴全挂车
}TRUCK_AXLE_MODEL


TTY_CONFIG

串口参数结构体。

struct{
  BYTE    baudrate;
  BYTE    databits;
  BYTE    stopbits;
  BYTE    parity;
  BYTE    flowcontrol;
  BYTE    res[3];
}TTY_CONFIG,*LPTTY_CONFIG;

Members

baudrate
波特率
databits
数据位
stopbits
停止位
parity
奇偶校验位
flowcontrol
流控
res
保留，置为0


VBR_BUICK_CLASS

别克品牌次类型。

enum _VBR_BUICK_CLASS_{
  VBR_BUICK_OTHER        = 0,   //其他（保留）
  VBR_BUICK_ENCORE       = 1,   //昂科拉
  VBR_BUICK_GL8          = 2,   //GL8
  VBR_BUICK_LEGAL        = 3,   //君威
  VBR_BUICK_LACROSS      = 4,   //君越
  VBR_BUICK_EXCELLE      = 5,   //凯越
  VBR_BUICK_EXCELLEGT    = 6,   //英朗GT
  VBR_BUICK_WXCELLEXT    = 7,   //英朗XT
  VBR_BUICK_ENCLAVE      = 8,   //昂科雷
  VBR_BUICK_ROYAUM       = 9,   //荣御
  VBR_BUICK_SAIL         = 10,  //别克赛欧
  VBR_BUICK_EXCELLEHRV   = 11,  //凯越HRV
  VBR_BUICK_PARKAVENUE   = 12,  //林荫大道
  VBR_BUICK_CENTURY      = 13,  //新世纪
  VBR_BUICK_GL8_1        = 14,  //别克-GL8-2004,2003
  VBR_BUICK_GL8_2        = 15,  //别克-GL8-2007,2006,2005
  VBR_BUICK_GL8_3        = 16,  //别克-GL8-2010_2008_2006_2005陆尊
  VBR_BUICK_GL8_4        = 17,  //别克-GL8-2014,2013,2012,2011
  VBR_BUICK_GL8_5        = 18,  //别克-GL8-2014_2013_2011豪华版
  VBR_BUICK_ENCORE_1     = 19,  //别克-昂科拉-2014,2013
  VBR_BUICK_ENCLAVE_1    = 20,  //别克-昂科雷-2013,2010,2009
  VBR_BUICK_LEGAL_1      = 21,  //别克-君威-2001,2000,1999
  VBR_BUICK_LEGAL_2      = 22,  //别克-君威-2008,2006,2005,2004,2002
  VBR_BUICK_LEGAL_3      = 23,  //别克-君威-2013,2012,2011,2010,2009
  VBR_BUICK_LEGAL_4      = 24,  //别克-君威-2013_2012_2011运动版
  VBR_BUICK_LEGAL_5      = 25,  //别克-君威-2014
  VBR_BUICK_LEGAL_6      = 26,  //别克-君威-2014运动版
  VBR_BUICK_LACROSS_1    = 27,  //别克-君越-2008,2007,2006
  VBR_BUICK_LACROSS_2    = 28,  //别克-君越-2012,2011,2010,2009
  VBR_BUICK_LACROSS_3    = 29,  //别克-君越-2013
  VBR_BUICK_EXCELLE_1    = 30,  //别克-凯越-2006,2005,2004
  VBR_BUICK_EXCELLE_2    = 31,  //别克-凯越-2008_2006_2005_2004HRV
  VBR_BUICK_EXCELLE_3    = 32,  //别克-凯越-2011,2009,2008
  VBR_BUICK_EXCELLE_4    = 33,  //别克-凯越-2013
  VBR_BUICK_PARKAVENUE_1 = 34,  //别克-林荫大道-2011,2010,2009,2008,2007
  VBR_BUICK_SAIL_1       = 35,  //别克-赛欧-2004,2003
  VBR_BUICK_EXCELLEGT_1  = 36,  //别克-英朗GT-2013,2012,2011,2010
  VBR_BUICK_WXCELLEXT_1  = 37,  //别克-英朗XT-2014,2013,2012,2010
  VBR_BUICK_CENTURY_1    = 38,  //别克-新世纪-2000
  VBR_BUICK_RONGYU_1     = 39   //别克-荣御-2005,2004
}VBR_BUICK_CLASS

See Also

NET_DVR_VEHICLE_INFO


VCA_CHAN_ABILITY_TYPE

智能通道能力类型。

enum _VCA_CHAN_ABILITY_TYPE_{
  VCA_BEHAVIOR_BASE						 = 1,
  VCA_BEHAVIOR_ADVANCE					 = 2,
  VCA_BEHAVIOR_FULL						 = 3,
  VCA_PLATE								 = 4,
  VCA_ATM							     = 5,
  VCA_PDC							     = 6
  VCA_ITS								 = 7,
  VCA_BEHAVIOR_PRISON					 = 8,
  VCA_FACE_SNAP							 = 9,
  VCA_FACE_SNAPRECOG						 = 10,
  VCA_FACE_RETRIEVAL						 = 11,
  VCA_FACE_RECOG							 = 12,
  VCA_BEHAVIOR_PRISON_PERIMETER			 = 13,
  VCA_TPS								 = 14,
  VCA_TFS								 = 15,
  VCA_BEHAVIOR_FACESNAP					 = 16,
  VCA_HEATMAP							 = 17,
  VCA_SMART_VEHICLE_DETECTION			 = 18,
  VCA_SMART_HVT_DETECTION				 = 19,
  VCA_SMART_EVENT						 = 20,
  VCA_VEHICLE_DETECTION					 = 21,
  VCA_SMART_ROAD_DETECTION				 = 22,
  VCA_SMART_FACE_DETECTION			     = 23,
  VCA_SMART_HEATMAP						 = 24,
  VCA_HUMAN_RECOGNITION					 = 25
  VCA_EDUCATION_STUDENT_DETECTION         = 26
  VCA_ROAD_DETECTION						 = 27
  VCA_PERSON_DENSITY_DETECTION			 = 28
  VCA_SAFETY_HELMET_DETECTION			 = 30
}VCA_CHAN_ABILITY_TYPE
VCA_BEHAVIOR_BASE
1-异常行为识别基本版
VCA_BEHAVIOR_ADVANCE
2-异常行为识别高级版
VCA_BEHAVIOR_FULL
3-异常行为识别完整版
VCA_PLATE
4-车牌能力
VCA_ATM
5-ATM能力
VCA_PDC
6-客流量统计能力
VCA_ITS
7-智能交通事件
VCA_BEHAVIOR_PRISON
8-异常行为识别监狱版(监舍)
VCA_FACE_SNAP
9-人脸抓拍能力
VCA_FACE_SNAPRECOG
10-人脸抓拍和识别能力
VCA_FACE_RETRIEVAL
11-人脸后检索能力
VCA_FACE_RECOG
12-人脸抓拍能力
VCA_BEHAVIOR_PRISON_PERIMETER
13-异常行为识别监狱版 (周界)
VCA_TPS
14-交通诱导
VCA_TFS
15-道路违章取证（违章事件）
VCA_BEHAVIOR_FACESNAP
16-人脸抓拍和异常行为识别能力
VCA_HEATMAP
17-热度图功能
VCA_SMART_VEHICLE_DETECTION
18-SMART事件+车辆检测
VCA_SMART_HVT_DETECTION
19-SMART事件+混行检测
VCA_SMART_EVENT
20-SMART事件
VCA_VEHICLE_DETECTION
21-车辆检测
VCA_SMART_ROAD_DETECTION
22-SMART事件+道路监控
VCA_SMART_FACE_DETECTION
23-SMART事件+人脸侦测
VCA_SMART_HEATMAP
24-SMART事件+热度图
VCA_HUMAN_RECOGNITION
25-人体目标识别
VCA_EDUCATION_STUDENT_DETECTION
26- 教育录播（学生起来检测&&学生人数统计）
VCA_ROAD_DETECTION
27- 道路监控
VCA_PERSON_DENSITY_DETECTION
28- 人员密度检测
VCA_SAFETY_HELMET_DETECTION
30- 安全帽检测

See Also

NET_DVR_VCA_CTRLINFO_CFG


VCA_EVENT_TYPE

异常行为识别事件类型枚举。

enum _VCA_EVENT_TYPE_{
  VCA_TRAVERSE_PLANE     = 0x1,
  VCA_ENTER_AREA         = 0x2,
  VCA_EXIT_AREA          = 0x4,
  VCA_INTRUSION          = 0x8,
  VCA_LOITER             = 0x10,
  VCA_LEFT_TAKE          = 0x20,
  VCA_PARKING            = 0x40,
  VCA_RUN                = 0x80,
  VCA_HIGH_DENSITY       = 0x100,
  VCA_VIOLENT_MOTION     = 0x200,
  VCA_REACH_HIGHT        = 0x400,
  VCA_GET_UP             = 0x800,
  VCA_LEFT               = 0x1000,
  VCA_TAKE               = 0x2000,
  VCA_LEAVE_POSITION     = 0x4000,
  VCA_TRAIL              = 0x8000,
  VCA_KEY_PERSON_GET_UP  = 0x10000,
  VCA_STANDUP            = 0x20000,
  VCA_FALL_DOWN          = 0x80000,
  VCA_AUDIO_ABNORMAL     = 0x100000,
  VCA_ADV_REACH_HEIGHT   = 0x200000,
  VCA_TOILET_TARRY       = 0x400000,
  VCA_YARD_TARRY         = 0x800000,
  VCA_ADV_TRAVERSE_PLANE = 0x1000000,
  VCA_HUMAN_ENTER        = 0x10000000,
  VCA_OVER_TIME          = 0x20000000,
  VCA_STICK_UP           = 0x40000000,
  VCA_INSTALL_SCANNER    = 0x80000000
}VCA_EVENT_TYPE
VCA_TRAVERSE_PLANE
穿越警戒面
VCA_ENTER_AREA
目标进入区域，支持区域规则
VCA_EXIT_AREA
目标离开区域，支持区域规则
VCA_INTRUSION
周界入侵，支持区域规则
VCA_LOITER
徘徊，支持区域规则
VCA_LEFT_TAKE
丢包捡包，支持区域规则
VCA_PARKING
停车，支持区域规则
VCA_RUN
奔跑，支持区域规则
VCA_HIGH_DENSITY
区域内人员密度，支持区域规则
VCA_VIOLENT_MOTION
剧烈运动检测
VCA_REACH_HIGHT
攀高检测
VCA_GET_UP
起身检测
VCA_LEFT
丢包
VCA_TAKE
捡包
VCA_LEAVE_POSITION
离岗
VCA_TRAIL
尾随
VCA_KEY_PERSON_GET_UP
重点人员起身检测
VCA_STANDUP
起立检测
VCA_FALL_DOWN
倒地检测
VCA_AUDIO_ABNORMAL
声强突变检测
VCA_ADV_REACH_HEIGHT
折线攀高
VCA_TOILET_TARRY
如厕超时
VCA_YARD_TARRY
放风场滞留
VCA_ADV_TRAVERSE_PLANE
折线警戒面
VCA_HUMAN_ENTER
人靠近ATM（仅在ATM_PANEL模式下支持）
VCA_OVER_TIME
操作超时（仅在ATM_PANEL模式下支持）
VCA_STICK_UP
贴纸条,支持区域规则
VCA_INSTALL_SCANNER
安装读卡器,支持区域规则

See Also

NET_DVR_EVENT_INFO NET_IVMS_ONE_RULE NET_VCA_ONE_RULE

NET_VCA_ONE_RULE_V41 NET_VCA_RULE_INFO


VCA_PLATE_COLOR

车牌类型枚举类型。

enum _VCA_PLATE_COLOR_{
  VCA_BLUE_PLATE  = 0,
  VCA_YELLOW_PLATE,
  VCA_WHITE_PLATE,
  VCA_BLACK_PLATE,
  VCA_GREEN_PLATE,
  VCA_BKAIR_PLATE,
  VCA_OTHER = 0xff
}VCA_PLATE_COLOR
VCA_BLUE_PLATE
0- 蓝色车牌
VCA_YELLOW_PLATE
1- 黄色车牌
VCA_WHITE_PLATE
2- 白色车牌
VCA_BLACK_PLATE
3- 黑色车牌
VCA_GREEN_PLATE
4- 绿色车牌
VCA_BKAIR_PLATE
5- 民航黑色车牌
VCA_OTHER = 0xff
0xff- 其他


VCA_PLATE_TYPE

车牌类型枚举类型。

enum _VCA_PLATE_TYPE_{
  VCA_STANDARD92_PLATE = 0,
  VCA_STANDARD02_PLATE,
  VCA_WJPOLICE_PLATE,
  VCA_JINGCHE_PLATE,
  STANDARD92_BACK_PLATE,
  VCA_SHIGUAN_PLATE,
  VCA_NONGYONG_PLATE,
  VCA_MOTO_PLATE,
  NEW_ENERGY_PLATE,
  VCA_CONSULATE_PLATE = 9,
  VCA_EMERGENCY_PLATE = 10,
  TRANSPORT_PLATE = 0x20,
  COMMERCIAL_PLATE,
  PRIVATE_PLATE,
  LEARNING_PLATE,
  CD_PLATE,
  CC_PLATE,
  ARMY_PLATE,
  PROTOCOL_PLATE,
  GOVERNMENT_PLATE,
  EXPORT_PLATE,
  TAXI_PLATE,
  TESTING_PLATE,
  TRANSFER_PLATE,
  TRUCK_PLATE,
  BUS_PLATE,
  PUBLIC_PLATE,
  PUB_TRANS_PLATE,
  PRI_TRANS_PLATE,
  UNKNOWN_PLATE = 0xff,
}VCA_PLATE_TYPE
VCA_STANDARD92_PLATE
0- 标准民用车与军车车牌
VCA_STANDARD02_PLATE
1- 02式民用车牌
VCA_WJPOLICE_PLATE
2- 武警车车牌
VCA_JINGCHE_PLATE
3- 警车车牌
STANDARD92_BACK_PLATE
4- 民用车双行尾牌
VCA_SHIGUAN_PLATE
5- 使馆车牌
VCA_NONGYONG_PLATE
6- 农用车车牌
VCA_MOTO_PLATE
7- 摩托车车牌
NEW_ENERGY_PLATE
8- 新能源车牌
VCA_CONSULATE_PLATE
9- 领事馆车牌
VCA_EMERGENCY_PLATE
10- 应急车牌
TRANSPORT_PLATE
0x20- 运输车
COMMERCIAL_PLATE
0x21- 商用车
PRIVATE_PLATE
0x22- 私家车
LEARNING_PLATE
0x23- 教练车
CD_PLATE
0x24- 使馆车
CC_PLATE
0x25- 使馆车
ARMY_PLATE
0x26- 军车
PROTOCOL_PLATE
0x27- PROTOCOL
GOVERNMENT_PLATE
0x28- 政府车
EXPORT_PLATE
0x29- EXPORT
TAXI_PLATE
0x2A- 出租车
TESTING_PLATE
0x2B- TESTING
TRANSFER_PLATE
0x2C- TRANSFER
TRUCK_PLATE
0x2D- 货车
BUS_PLATE
0x2E- 公交车
PUBLIC_PLATE
0x2F- PUBLIC
PUB_TRANS_PLATE
0x30- PUBLIC TRANSFER
PRI_TRANS_PLATE
0x31- PRIVATE TRANSPORT
UNKNOWN_PLATE
0xff- 未知（未识别）

See Also

NET_DVR_PLATE_INFO NET_DVR_VEHICLE_CONTROL_ALARM NET_DVR_VEHICLE_CONTROL_DELINFO NET_DVR_VEHICLE_CONTROL_LIST_INFO


VCA_RULE_EVENT_TYPE_EX

异常行为识别事件类型枚举。

enum _VCA_RULE_EVENT_TYPE_EX_{
  ENUM_VCA_EVENT_TRAVERSE_PLANE      = 1,
  ENUM_VCA_EVENT_ENTER_AREA          = 2,
  ENUM_VCA_EVENT_EXIT_AREA           = 3,
  ENUM_VCA_EVENT_INTRUSION           = 4,
  ENUM_VCA_EVENT_LOITER              = 5,
  ENUM_VCA_EVENT_LEFT_TAKE           = 6,
  ENUM_VCA_EVENT_PARKING             = 7,
  ENUM_VCA_EVENT_RUN                 = 8,
  ENUM_VCA_EVENT_HIGH_DENSITY        = 9,
  ENUM_VCA_EVENT_VIOLENT_MOTION      = 10,
  ENUM_VCA_EVENT_REACH_HIGHT         = 11,
  ENUM_VCA_EVENT_GET_UP              = 12,
  ENUM_VCA_EVENT_LEFT                = 13,
  ENUM_VCA_EVENT_TAKE                = 14,
  ENUM_VCA_EVENT_LEAVE_POSITION      = 15,
  ENUM_VCA_EVENT_TRAIL               = 16,
  ENUM_VCA_EVENT_KEY_PERSON_GET_UP   = 17,
  ENUM_VCA_EVENT_STANDUP             = 18,
  ENUM_VCA_EVENT_FALL_DOWN           = 20,
  ENUM_VCA_EVENT_AUDIO_ABNORMAL      = 21,
  ENUM_VCA_EVENT_ADV_REACH_HEIGHT    = 22,
  ENUM_VCA_EVENT_TOILET_TARRY        = 23,
  ENUM_VCA_EVENT_YARD_TARRY          = 24,
  ENUM_VCA_EVENT_ADV_TRAVERSE_PLANE  = 25,
  ENUM_VCA_EVENT_LECTURE             = 26,
  ENUM_VCA_EVENT_ANSWER              = 27,
  ENUM_VCA_EVENT_HUMAN_ENTER         = 29,
  ENUM_VCA_EVENT_OVER_TIME           = 30,
  ENUM_VCA_EVENT_STICK_UP            = 31,
  ENUM_VCA_EVENT_INSTALL_SCANNER     = 32,
  ENUM_VCA_EVENT_PEOPLENUM_CHANGE    = 35,
  ENUM_VCA_EVENT_SPACING_CHANGE      = 36,
  ENUM_VCA_EVENT_COMBINED_RULE       = 37,
  ENUM_VCA_EVENT_SIT_QUIETLY         = 38,
  ENUM_VCA_EVENT_HIGH_DENSITY_STATUS = 39,
  ENUM_VCA_EVENT_RUNNING             = 40,
  ENUM_VCA_EVENT_RETENTION           = 41,
  ENUM_VCA_EVENT_BLACKBOARD_WRITE   = 42,
  ENUM_VCA_EVENT_PLAY_CELLPHONE   = 44,
  ENUM_VCA_EVENT_DURATION = 45
}VCA_RULE_EVENT_TYPE_EX
ENUM_VCA_EVENT_TRAVERSE_PLANE
1-穿越警戒面（越界侦测）
ENUM_VCA_EVENT_ENTER_AREA
2-目标进入区域，支持区域规则
ENUM_VCA_EVENT_EXIT_AREA
3-目标离开区域，支持区域规则
ENUM_VCA_EVENT_INTRUSION
4-周界入侵（区域入侵侦测），支持区域规则
ENUM_VCA_EVENT_LOITER
5-徘徊，支持区域规则
ENUM_VCA_EVENT_LEFT_TAKE
6-丢包捡包，支持区域规则
ENUM_VCA_EVENT_PARKING
7-停车，支持区域规则
ENUM_VCA_EVENT_RUN
8-快速移动(奔跑)，支持区域规则
ENUM_VCA_EVENT_HIGH_DENSITY
9-区域内人员密度，支持区域规则，人员聚集度超过设置的阈值时设备上传报警信息
ENUM_VCA_EVENT_VIOLENT_MOTION
10-剧烈运动检测
ENUM_VCA_EVENT_REACH_HIGHT
11-攀高检测
ENUM_VCA_EVENT_GET_UP
12-起身检测
ENUM_VCA_EVENT_LEFT
13-物品遗留
ENUM_VCA_EVENT_TAKE
14-物品拿取
ENUM_VCA_EVENT_LEAVE_POSITION
15-离岗
ENUM_VCA_EVENT_TRAIL
16-尾随
ENUM_VCA_EVENT_KEY_PERSON_GET_UP
17-重点人员起身检测
ENUM_VCA_EVENT_STANDUP
18-起立检测
ENUM_VCA_EVENT_FALL_DOWN
20-倒地检测
ENUM_VCA_EVENT_AUDIO_ABNORMAL
21-声强突变检测
ENUM_VCA_EVENT_ADV_REACH_HEIGHT
22-折线攀高
ENUM_VCA_EVENT_TOILET_TARRY
23-如厕超时
ENUM_VCA_EVENT_YARD_TARRY
24-放风场滞留
ENUM_VCA_EVENT_ADV_TRAVERSE_PLANE
25-折线警戒面
ENUM_VCA_EVENT_LECTURE
26-授课(文教)
ENUM_VCA_EVENT_ANSWER
27-回答问题(文教)
ENUM_VCA_EVENT_HUMAN_ENTER
29-人靠近ATM（仅在ATM_PANEL模式下支持）
ENUM_VCA_EVENT_OVER_TIME
30-操作超时（仅在ATM_PANEL模式下支持）
ENUM_VCA_EVENT_STICK_UP
31-贴纸条,支持区域规则
ENUM_VCA_EVENT_INSTALL_SCANNER
32-安装读卡器,支持区域规则
ENUM_VCA_EVENT_PEOPLENUM_CHANGE
35-人数变化事件
ENUM_VCA_EVENT_SPACING_CHANGE
36-间距变化事件
ENUM_VCA_EVENT_COMBINED_RULE
37-组合规则事件
ENUM_VCA_EVENT_SIT_QUIETLY
38-一动不动事件
ENUM_VCA_EVENT_HIGH_DENSITY_STATUS
39-区域内人员聚集状态，设备按照设置的时间间隔上传实时的人员聚集状态信息，该时间间隔不支持通过SDK配置，需要通过服务器的配置文件来修改，默认：10s
ENUM_VCA_EVENT_RUNNING
40-奔跑检测
ENUM_VCA_EVENT_RETENTION
41-滞留检测
ENUM_VCA_EVENT_BLACKBOARD_WRITE
42-板书
ENUM_VCA_EVENT_PLAY_CELLPHONE
44-玩手机检测
ENUM_VCA_EVENT_DURATION
45-持续报警

See Also

NET_VCA_ONE_RULE_V41 NET_VCA_RULE_INFO


VLR_VEHICLE_CLASS

汽车品牌枚举类型。

enum _VLR_VEHICLE_CLASS_{
  VLR_OTHER           = 0,    //其它
  VLR_VOLKSWAGEN      = 1,    //大众
  VLR_BUICK           = 2,    //别克
  VLR_BMW             = 3,    //宝马
  VLR_HONDA           = 4,    //本田
  VLR_PEUGEOT         = 5,    //标致
  VLR_TOYOTA          = 6,    //丰田
  VLR_FORD            = 7,    //福特
  VLR_NISSAN          = 8,    //日产
  VLR_AUDI            = 9,    //奥迪
  VLR_MAZDA           = 10,   //马自达
  VLR_CHEVROLET       = 11,   //雪佛兰
  VLR_CITROEN         = 12,   //雪铁龙
  VLR_HYUNDAI         = 13,   //现代
  VLR_CHERY           = 14,   //奇瑞
  VLR_KIA             = 15,   //起亚
  VLR_ROEWE           = 16,   //荣威
  VLR_MITSUBISHI      = 17,   //三菱
  VLR_SKODA           = 18,   //斯柯达
  VLR_GEELY           = 19,   //吉利
  VLR_ZHONGHUA        = 20,   //中华
  VLR_VOLVO           = 21,   //沃尔沃
  VLR_LEXUS           = 22,   //雷克萨斯
  VLR_FIAT            = 23,   //菲亚特
  VLR_EMGRAND         = 24,   //帝豪
  VLR_DONGFENG        = 25,   //东风
  VLR_BYD             = 26,   //比亚迪
  VLR_SUZUKI          = 27,   //铃木
  VLR_JINBEI          = 28,   //金杯
  VLR_HAIMA           = 29,   //海马
  VLR_SGMW            = 30,   //五菱
  VLR_JAC             = 31,   //江淮
  VLR_SUBARU          = 32,   //斯巴鲁
  VLR_ENGLON          = 33,   //英伦
  VLR_GREATWALL       = 34,   //长城
  VLR_HAFEI           = 35,   //哈飞
  VLR_ISUZU           = 36,   //五十铃
  VLR_SOUEAST         = 37,   //东南
  VLR_CHANA           = 38,   //长安
  VLR_FOTON           = 39,   //福田
  VLR_XIALI           = 40,   //夏利
  VLR_BENZ            = 41,   //奔驰
  VLR_FAW             = 42,   //一汽
  VLR_NAVECO          = 43,   //依维柯
  VLR_LIFAN           = 44,   //力帆
  VLR_BESTURN         = 45,   //一汽奔腾
  VLR_CROWN           = 46,   //皇冠
  VLR_RENAULT         = 47,   //雷诺
  VLR_JMC             = 48,   //JMC
  VLR_MG              = 49,   //MG名爵
  VLR_KAMA            = 50,   //凯马
  VLR_ZOTYE           = 51,   //众泰
  VLR_CHANGHE         = 52,   //昌河
  VLR_XMKINGLONG      = 53,   //厦门金龙
  VLR_HUIZHONG        = 54,   //上海汇众
  VLR_SZKINGLONG      = 55,   //苏州金龙
  VLR_HIGER           = 56,   //海格
  VLR_YUTONG          = 57,   //宇通
  VLR_CNHTC           = 58,   //中国重汽
  VLR_BEIBEN          = 59,   //北奔重卡
  VLR_XINGMA          = 60,   //华菱星马
  VLR_YUEJIN          = 61,   //跃进
  VLR_HUANGHAI        = 62,    //黄海
  VLR_OLDWALL         = 63,    //老款长城
  VLR_CHANACOMMERCIAL = 64,    //长安商用
  VLR_PORSCHE         = 65,    //保时捷
  VLR_CADILLAC        = 66,    //凯迪拉克
  VLR_INFINITI        = 67,    //英菲尼迪
  VLR_GLEAGLE         = 68,    //吉利全球鹰
  VLR_JEEP            = 69,    //JEEP
  VLR_LANDROVER       = 70,    //路虎
  VLR_CHANGFENG       = 71,    //长丰
  VLR_BENNI           = 72,    //长安奔奔
  VLR_ERA             = 73,    //福田时代
  VLR_TAURUS          = 74,    //长安金牛星
  VLR_EADO            = 75,    //长安逸动
  VLR_SHANQI          = 76,    //陕汽
  VLR_HONGYAN         = 77,    //红岩汽车
  VLR_DRAGON          = 78,    //霸龙汽车
  VLR_JACTEXT         = 79,    //江淮JAC
  VLR_JACBUS          = 80,    //江淮现代客车
  VLR_ANKAI           = 81,    //安凯客车
  VLR_SHENLONG        = 82,    //申龙客车
  VLR_DAEWOO          = 83,    //大宇客车
  VLR_WUZHENG         = 84,    //五征汽车
  VLR_MAN             = 85,    //MAN汽车
  VLR_ZHONGTONG       = 86,    //中通客车
  VLR_BAOJUN          = 87,    //宝骏
  VLR_BQWEIWANG       = 88,    //北汽威旺
  VLR_TRUMPCHE        = 89,    //传祺
  VLR_LUFENG          = 90,    //陆风
  VLR_HMZHENGZHOU     = 91,    //海马郑州
  VLR_BEIJING         = 92,    //北京汽车
  VLR_ZHONGSHUN       = 93,    //中顺
  VLR_WEILIN          = 94,    //威麟汽车
  VLR_OPEL            = 95,    //欧宝
  VLR_KARRY           = 96,    //开瑞
  VLR_SMA             = 97,    //华普汽车
  VLR_SMATEXT         = 98,    //华普汽车文字SMA
  VLR_YUWIN           = 99,    //江铃驭胜
  VLR_MINI            = 100,    //宝马MINI
  VLR_MARK            = 101,    //丰田MARKX
  VLR_HAVAL           = 102,    //哈弗HAVAL
  VLR_OGA             = 103,    //讴歌
  VLR_VENUCIA         = 104,    //启辰
  VLR_BYD2            = 105,    //比亚迪样式2
  VLR_SMART           = 106,    //奔驰SMART
  VLR_BAW             = 107,    //北京汽车制造厂BAW
  VLR_LUXGEN          = 108,    //纳智捷
  VLR_YEMA            = 109,    //野马
  VLR_ZTE             = 110,    //中兴
  VLR_EVERUS          = 111,    //理念
  VLR_CHRYSLER        = 112,    //克莱斯勒
  VLR_GONOW           = 113,    //吉奥汽车
  VLR_SHJIANG         = 114,    //松花江
  VLR_RUILIN          = 115,    //瑞麟
  VLR_FORTA           = 116,    //福达
  VLR_GAGUAR          = 117,    //捷豹
  VLR_HEIBAO          = 118,    //黑豹
  VLR_TKING           = 119,    //唐骏
  VLR_TKINGTEXT       = 120,    //唐骏文字
  VLR_FODAY           = 121,    //福迪
  VLR_LOTUS           = 122,    //莲花汽车
  VLR_NANJUN          = 123,    //南骏
  VLR_SHUANGHUAN      = 124,    //双环汽车
  VLR_SAIBAO          = 125,    //哈飞赛豹
  VLR_HAWTAI          = 126,    //华泰
  VLR_LIFO            = 127,    //永源飞碟
  VLR_JONWAY          = 128,    //永源汽车
  VLR_FULONGMA        = 129,    //福龙马
  VLR_WEILI           = 130,    //潍力
  VLR_ANCHI           = 131,    //江淮安驰
  VLR_PAIXI           = 132,    //派喜
  VLR_HIGERTEXT       = 133,    //海格HIGER文字
  VLR_RIYECAR         = 134,    //广汽日野轻卡
  VLR_RIYETRUCK       = 135,    //广汽日野重卡
  VLR_JIANGNAN        = 136,    //江南
  VLR_OLDZOTYE        = 137,    //老款众泰
  VLR_OLDXIALI        = 138,    //老款夏利
  VLR_NEWAOCHI        = 139,    //新奥驰
  VLR_CDW             = 140,    //王牌重汽
  VLR_CDWTEXT         = 141,    //王牌重汽文字
  VLR_CIIMO           = 142,    //本田思铭
  VLR_CHANADS         = 143,    //长安谛艾仕
  VLR_DS              = 144,    //道奇
  VLR_ROHENS          = 145,    //现代劳恩斯酷派
  VLR_YANTAI          = 146,    //燕台
  VLR_SHUANGLONG      = 147,    //双龙
  VLR_FENGLING        = 148,    //时代风菱
  VLR_XINKAI          = 149,    //新凯
  VLR_GMC             = 150,    //GMC
  VLR_DATONG          = 151,    //上汽大通
  VLR_BQYINXIANG      = 152,    //北汽银翔
  VLR_NEWCHERY        = 153,    //新奇瑞
  VLR_MUDAN           = 154,    //牡丹
  VLR_DAYUN           = 155,    //大运汽车
  VLR_DONGWO          = 156,    //东沃汽车
  VLR_UNION           = 157,    //联合汽车
  VLR_CHUNZHOU        = 158,    //春洲客车
  VLR_SANY            = 159,    //三一重工
  VLR_YAXING          = 160,    //亚星客车
  VLR_HENGTONG        = 161,    //恒通客车
  VLR_SHAOLIN         = 162,    //少林客车
  VLR_YOUNG           = 163,    //青年客车
  VLR_STOM            = 164,    //十通
  VLR_SANHUAN         = 165,    //三环
  VLR_XUGONG          = 166,    //徐工
  VLR_BEIFANG         = 167,    //北方汽车
  VLR_JIANGHUAN       = 168,    //江环货车
  VLR_BJFARM          = 169,    //北京农用
  VLR_NEWDADI         = 170,    //新大地汽车
  VLR_SUNWIN          = 171,    //申沃客车
  VLR_YINGTIAN        = 172,    //英田
  VLR_QINGQI          = 173,    //轻骑
  VLR_CHUFENG         = 174,    //楚风汽车
  VLR_SCANIA          = 175,    //斯堪尼亚
  VLR_JIULONG         = 176,    //九龙客车
  VLR_YOUYI           = 177,    //友谊客车
  VLR_SHANGRAO        = 178,    //上饶客车
  VLR_JIJIANG         = 179,    //吉江
  VLR_YANGZI          = 180,    //扬子客车
  VLR_XIWO            = 181,    //西沃客车
  VLR_CHANGJIANG      = 182,    //长江客车
  VLR_WUYI            = 183,    //武夷
  VLR_CHENGDU         = 184,    //成都客车
  VLR_TIANMA          = 185,    //天马
  VLR_BAOLONG         = 186,    //宝龙
  VLR_NEWYATU         = 187,    //新雅途
  VLR_BARUI           = 188,    //起亚霸锐
  VLR_GUANZHI         = 189,    //观致
  VLR_XIYATE          = 190,    //西雅特
  VLR_BINLI           = 191,    //宾利
  VLR_DADI            = 192,    //大迪
  VLR_FUQI            = 193,    //富奇
  VLR_HANGTIAN        = 194,    //航天汽车
  VLR_HENGTIAN        = 195,    //恒天汽车
  VLR_JMCCAR          = 196,    //江铃轻汽
  VLR_KAERSEN         = 197,    //卡尔森汽车
  VLR_KAWEI           = 198,    //卡威汽车
  VLR_LANBOJINI       = 199,    //兰博基尼
  VLR_MASHALADI       = 200,    //玛莎拉蒂
  VLR_SHUCHI          = 201,    //舒驰客车
  VLR_SHILI           = 202,    //实力客车
  VLR_HUABEI          = 203,    //中客华北
  VLR_YIZHENG         = 204,    //上汽仪征
  VLR_CHUNLAN         = 205,    //春兰汽车
  VLR_DAFA            = 206,    //大发汽车
  VLR_SHENYE          = 207,    //神野汽车
  VLR_FALALI          = 208,    //法拉利汽车
  VLR_FUXING          = 209,    //福星汽车
  VLR_ANYUAN          = 210,    //安源客车
  VLR_JINGHUA         = 211,    //京华客车
  VLR_TAIHU           = 212,    //太湖客车
  VLR_WUZHOULONG      = 213,    //五洲龙
  VLR_CHANGLONG       = 214,    //常隆客车
  VLR_YUEXI           = 215,    //悦西客车
  VLR_SHENMA          = 216,    //神马客车
  VLR_LUSHAN          = 217,    //庐山牌
  VLR_WANFENG         = 218,    //万丰牌
  VLR_GZYUNBAO        = 219,    //广州云豹
  VLR_ZHONGDA         = 220,    //中大汽车
  VLR_THREEWHEEL      = 221,    //三轮车
  VLR_TWOWHEEL        = 222,    //二轮车
  VLR_JBC             = 223,    //金杯JBC
  VLR_YZJIANG         = 224,    //扬子江客车
  VLR_CNJ             = 225,    //南骏CNJ
  VLR_FORLAND         = 226,    //福田时代文字
  VLR_FARMCAR         = 227,    //农用车
  VLR_DONGFANGHONG    = 228,    //东方红
  VLR_STEYR           = 229,    //斯太尔汽车
  VLR_HONGQI          = 230     //红旗
}VLR_VEHICLE_CLASS

See Also

NET_DVR_FIND_PICTURE NET_DVR_VEHICLE_INFO NET_DVR_PARKLAMP_INFOCFG


VTR_RESULT

车型识别结果枚举类型。

enum _VTR_RESULT_{
    VTR_RESULT_OTHER                = 0,    //未知
 VTR_RESULT_BUS                  = 1,    //客车
 VTR_RESULT_TRUCK                = 2,    //货车
 VTR_RESULT_CAR                  = 3,    //轿车
 VTR_RESULT_MINIBUS              = 4,    //面包车
 VTR_RESULT_SMALLTRUCK           = 5,	//小货车
 VTR_RESULT_HUMAN                = 6,	//行人
 VTR_RESULT_TUMBREL              = 7,    //二轮车
 VTR_RESULT_TRIKE                = 8,    //三轮车
 VTR_RESULT_SUV_MPV              = 9,    //SUV/MPV
 VTR_RESULT_MEDIUM_BUS           = 10,   //中型客车
 VTR_RESULT_MOTOR_VEHICLE        = 11,   //机动车
 VTR_RESULT_NON_MOTOR_VEHICLE    = 12,   //非机动车
 VTR_RESULT_SMALLCAR             = 13,   //小型轿车
 VTR_RESULT_MICROCAR             = 14,   //微型轿车
 VTR_RESULT_PICKUP               = 15,   //皮卡车
 VTR_RESULT_CONTAINER_TRUCK      = 16,   // 集装箱卡车
 VTR_RESULT_MINI_TRUCK           = 17,   // 微卡，栏板卡
 VTR_RESULT_SLAG_CAR             = 18,   // 渣土车
 VTR_RESULT_CRANE                = 19,   // 吊车，工程车
 VTR_RESULT_OIL_TANK_TRUCK       = 20,   // 油罐车
 VTR_RESULT_CONCRETE_MIXER       = 21,   // 混凝土搅拌车
 VTR_RESULT_PLATFORM_TRAILER     = 22,   // 平板拖车
 VTR_RESULT_HATCHBACK            = 23,   // 两厢轿车
 VTR_RESULT_SALOON               = 24,   // 三厢轿车
 VTR_RESULT_SPORT_SEDAN          = 25,   // 轿跑
 VTR_RESULT_SMALL_BUS          = 26      // 小型客车
}VTR_RESULT

See Also

NET_DVR_PLATE_RESULT


国家和地区编号

中文 | English | 地区编号
欧洲 | Europe | 100
安道尔 | Andorra | 101
奥地利 | Austria | 102
阿尔巴尼亚 | Albania | 103
爱尔兰 | Ireland | 104
爱沙尼亚 | Estonia | 105
冰岛 | Iceland | 106
白俄罗斯 | Belarus | 107
保加利亚 | Bulgaria | 108
波兰 | Poland | 109
波斯尼亚和黑塞哥维那 | Bosnia | 110
比利时 | Belgium | 111
德国 | Germany | 112
丹麦 | Denmark | 113
俄罗斯联邦 | Russia | 114
法国 | France | 115
芬兰 | Finland | 116
荷兰 | Holland | 117
捷克 | Czech | 118
克罗地亚 | Croatia | 119
拉脱维亚 | Latvia | 120
立陶宛 | Lithuania | 121
列支敦士登 | Liechtenstein | 122
罗马尼亚 | Romania | 123
马其顿 | Macedonia | 124
马耳他 | Malta | 125
卢森堡 | Luxembourg | 126
摩纳哥 | Monaco | 127
摩尔多瓦 | Moldova | 128
挪威 | Norway | 129
塞尔维亚和黑山共和国 | Serbia | 130
葡萄牙 | Portugal | 131
瑞典 | Sweden | 132
瑞士 | Switzerland | 133
斯洛伐克 | Slovak | 134
斯洛文尼亚 | Slovenia | 135
圣马力诺 | San marino | 136
乌克兰 | Ukraine | 137
西班牙 | Spain | 138
希腊 | Greece | 139
匈牙利 | Hungary | 140
意大利 | Italy | 141
英国 | United Kingdom | 142
欧洲其他 | Europe Other | 143
亚洲国家和地区列表 | Asia | 200
阿富汗 | Afghanistan | 201
阿拉伯联合酋长国 | United Arab Emirates | 202
阿曼 | Oman | 203
阿塞拜疆共和国 | Azerbaijan | 204
巴基斯坦 | Pakistan | 205
巴勒斯坦 | Palestine | 206
巴林 | Bahrain | 207
不丹 | Bhutan | 208
朝鲜 | North Korea | 209
东帝汶 | Timor | 210
菲律宾 | Philippines | 211
格鲁吉亚 | Georgia | 212
哈萨克斯坦 | Kazakhstan | 213
韩国 | Korea | 214
吉尔吉斯共和国 | Kirgizstan | 215
柬埔寨 | Cambodia | 216
卡塔尔 | Qatar | 217
科威特 | Kuwait | 218
老挝 | Laos | 219
黎巴嫩 | Lebanon | 220
马尔代夫 | Maldives | 221
马来西亚 | Malaysia | 222
蒙古 | Mongolia | 223
孟加拉国 | Bangladesh | 224
缅甸 | Myanmar | 225
尼泊尔 | Nepal | 226
日本 | Japan | 227
塞浦路斯 | Cyprus | 228
沙特阿拉伯 | Saudi Arabia | 229
斯里兰卡 | Srilanka | 230
塔吉克斯坦 | Tajikistan | 231
泰国 | Thailand | 232
土耳其 | Turkey | 233
土库曼斯坦 | Turkmenistan | 234
文莱 | Brunei | 235
乌兹别克斯坦 | Uzbekistan | 236
新加坡 | Singapore | 237
叙利亚 | Syria | 238
亚美尼亚共和国 | Armenia | 239
也门 | Yemen | 240
伊朗 | Iran | 241
伊拉克 | Iraq | 242
以色列 | Israel | 243
印度 | India | 244
印度尼西亚 | Indonesia | 245
约旦 | Jordan | 246
越南 | Vietnam | 247
中国 | China | 248
亚洲其他 | Asia Other | 249
美洲国家和地区列表 | America | 300
阿根廷 | Argentina | 301
安提瓜和巴布达 | Antigua and Barbuda | 302
巴巴多斯 | Barbados | 303
玻利维亚 | Bolivia | 304
巴西 | Brazil | 305
多米尼克 | Dominica | 306
厄瓜多尔 | Ecuador | 307
古巴共和国 | Cuba | 308
哥伦比亚 | Colombia | 309
格林纳达 | Grenada | 310
圭亚那 | Guyana | 311
加拿大 | Canada | 312
秘鲁 | Peru | 313
美国 | United States | 314
墨西哥 | Mexico | 315
苏里南 | Surinam | 316
圣卢西亚 | Saint-Lucia | 317
特立尼达和多巴哥 | Trinidad and Tobago | 318
乌拉圭 | Uruguay | 319
委内瑞拉 | Venezuela | 320
牙买加 | Jamaica | 321
智利 | Chile | 322
巴哈马 | Bahamas | 323
美洲其他 | America Other | 324
巴拉圭 | Paraguay | 325
海地 | Haiti | 326
荷属安的列斯岛 | Netherlands Antilles | 327
萨尔瓦多 | El Salvador | 328
巴拿马 | Panama | 329
危地马拉 | Guatemala | 330
尼加拉瓜 | Nicaragua | 331
洪都拉斯 | Honduras | 332
哥斯达黎加 | Costa Rica | 333
阿鲁巴岛 | Aruba | 334
伯利兹 | Belize | 335
开曼群岛 | Cayman Islands | 336
库拉索岛 | Curaçao | 337
多米尼加共和国 | Dominican Republic | 338
马提尼克 | Martinique | 339
波多黎各 | Puerto Rico | 340
非洲国家和地区列表 | Africa | 400
阿尔及利亚 | Algeria | 401
埃及 | Egypt | 402
埃塞俄比亚 | Ethiopia | 403
安哥拉 | Angola | 404
贝宁 | Benin | 405
博茨瓦纳 | Botswana | 406
布基纳法索 | Burkina Faso | 407
布隆迪 | Burundi | 408
赤道几内亚 | Equatorial Guinea | 409
多哥 | Togo | 410
厄立特里亚 | Eritrea | 411
佛得角 | Verde | 412
冈比亚 | Gambia | 413
刚果（布） | Congo | 414
刚果（金） | Congo-Kinshasa | 415
吉布提 | Djibouti | 416
几内亚 | Guinea | 417
几内亚比绍 | Guinea-Bissau | 418
加蓬 | Gabon | 419
加纳 | Ghana | 420
津巴布韦 | Zimbabwe | 421
喀麦隆 | Cameroon | 422
科摩罗 | Comoros | 423
科特迪瓦 | Cote d'Ivoire | 424
肯尼亚 | Kenya | 425
莱索托 | Lesotho | 426
利比里亚 | Liberia | 427
利比亚 | Libya | 428
卢旺达 | Rwanda | 429
马达加斯加 | Madagascar | 430
马里 | Mali | 431
毛里求斯 | Mauritius | 432
毛里塔尼亚 | Mauritania | 433
摩洛哥 | Morocco | 434
莫桑比克 | Mozambique | 435
纳米比亚 | Namibia | 436
南非 | South Africa | 437
尼日尔 | Niger | 438
尼日利亚 | Nigeria | 439
塞拉利昂 | Sierra Leone | 440
塞内加尔 | Senegal | 441
塞舌尔 | Seychelles | 442
圣多美和普林西比 | Sao Tome and Principe | 443
苏丹 | Sudan | 444
索马里 | Somali | 445
坦桑尼亚 | Tanzania | 446
突尼斯 | Tunisia | 447
乌干达 | Uganda | 448
赞比亚 | Zambia | 449
乍得 | Chad | 450
中非共和国 | Central African Republic | 451
非洲其他 | Africa Other | 452
大洋洲国家和地区列表 | Oceania | 500
澳大利亚 | Australia | 501
巴布亚新几内亚 | Papua New Guinea | 502
斐济 | Fiji | 503
库克群岛 | Cook Islands | 504
美属萨摩亚 | Samoa | 505
密克罗尼西亚联邦 | Micronesia | 506
瑙鲁 | Nauru | 507
汤加 | Tonga | 508
瓦努阿图 | Vanuatu | 509
新西兰 | New Zealand | 510
大洋洲其他 | Oceania Other | 511


宏定义

宏定义 | 宏定义值 | 含义
MAX_NAMELEN | 16 | 设备登录用户名长度
MAX_RIGHT | 32 | 设备支持的权限（1~12表示本地权限，13~32表示远程权限）
NAME_LEN | 32 | 用户名长度
PASSWD_LEN | 16 | 密码长度
SERIALNO_LEN | 48 | 序列号长度
MACADDR_LEN | 6 | MAC地址长度
MAX_ETHERNET | 2 | 设备可配以太网络
MAX_NETWORK_CARD | 4 | 设备可配最大网卡数目
MAX_BOND_NUM | 2 | 设备可配BONDING网卡数
PATHNAME_LEN | 128 | 路径长度
MAX_TIMESEGMENT_V30 | 8 | V3.0以上版本支持的设备的最大时间段数
MAX_TIMESEGMENT | 4 | V3.0以下版本支持的设备的最大时间段数
MAX_SHELTERNUM | 4 | V3.0以下版本支持的设备的最大遮挡区域数
MAX_DAYS | 7 | 每周的天数
PHONENUMBER_LEN | 32 | PPPoE拨号号码最大长度
MAX_DISK_NUM | 128 | 设备支持的最大硬盘数（扩展）
MAX_DISKNUM_V30 | 33 | V3.0以上版本支持的设备的最大硬盘数，最多33个硬盘(包括16个内置SATA硬盘、1个eSATA硬盘和16个NFS盘)
MAX_DISKNUM | 16 | V3.0以下版本支持的设备的最大硬盘数
MAX_DISKNUM_V10 | 8 | 1.2版本之前版本
MAX_WINDOW_V40 | 64 | 设备最大支持的本地显示播放窗口数(扩展)
MAX_WINDOW_V30 | 32 | V3.0以上版本支持的设备的本地显示最大播放窗口数
MAX_WINDOW | 16 | V3.0以下版本支持的设备的本地显示最大播放窗口数
MAX_VGA_V30 | 4 | V3.0以上版本支持的设备的最大可接VGA数
MAX_VGA | 1 | V3.0以下版本支持的设备的最大可接VGA数
MAX_USERNUM_V30 | 32 | V3.0以上版本支持的设备的最大用户数
MAX_USERNUM | 16 | V3.0以下版本支持的设备的最大用户数
MAX_EXCEPTIONNUM_V30 | 32 | V3.0以上版本支持的设备的最大异常处理数
MAX_EXCEPTIONNUM | 16 | V3.0以下版本支持的设备的最大异常处理数
MAX_LINK | 6 | V3.0以下版本支持的设备的单通道最大视频流连接数
MAX_LINK_V30 | 128 | V3.0以上版本支持的设备的单通道最大视频流连接数
MAX_DECPOOLNUM | 4 | 单路解码器每个解码通道最大可循环解码数
MAX_DECNUM | 4 | 单路解码器的最大解码通道数（实际只有一个，其他三个保留）
MAX_TRANSPARENTNUM | 2 | 单路解码器可配置最大透明通道数
MAX_CYCLE_CHAN | 16 | 单路解码器最大轮巡通道数
MAX_CYCLE_CHAN_V30 | 64 | 最大轮巡通道数（扩展）
MAX_DIRNAME_LENGTH | 80 | 最大目录长度
MAX_CUSTOM_DIR | 64 | 自定义目录最大长度
MAX_WINDOWS | 16 | 最大窗口数
MAX_WINDOWS_V41 | 16 | 最大窗口数(v4.1版本SDK)
MAX_STRINGNUM_V30 | 8 | V3.0以上版本支持的设备的最大OSD字符行数
MAX_STRINGNUM | 4 | V3.0以下版本支持的设备的最大OSD字符行数
MAX_AUXOUT | 4 | V3.0以下版本支持的设备的最大辅助输出数
MAX_HD_GROUP | 16 | V3.0以上版本支持的设备的最大硬盘组数
MAX_NFS_DISK | 8 | V3.0以下版本支持的设备的最大NFS硬盘数
IW_ESSID_MAX_SIZE | 32 | WIFI的SSID号长度
IW_ENCODING_TOKEN_MAX | 32 | WIFI密钥最大字节数
MAX_SERIAL_NUM | 64 | 最多支持的透明通道路数
MAX_DDNS_NUMS | 10 | V3.0以上版本支持的设备最大可配DDNS数
MAX_DOMAIN_NAME | 64 | 最大域名长度
MAXPROGRESS | 100 | 回放时的最大百分率
MAX_SERIALNUM | 2 | 设备支持的串口数：1-232，2-485
CARDNUM_LEN | 20 | 卡号长度
MAX_VIDEOOUT_V30 | 4 | V3.0以上版本支持的设备的视频输出数
MAX_VIDEOOUT | 2 | V3.0以下版本支持的设备的视频输出数
MAX_EMAIL_ADDR_LEN | 48 | 最大EMAIL地址长度
MAX_EMAIL_PWD_LEN | 32 | 最大EMAIL密码长度
MAX_PRESET_V30 | 256 | V3.0以上版本支持的设备支持的云台预置点数
MAX_TRACK_V30 | 256 | V3.0以上版本支持的设备支持的云台花样扫描数
MAX_CRUISE_V30 | 256 | V3.0以上版本支持的设备支持的云台巡航数
MAX_PRESET | 128 | V3.0以下版本支持的设备支持的云台预置点数
MAX_TRACK | 128 | V3.0以下版本支持的设备支持的云台花样扫描数
MAX_CRUISE | 128 | V3.0以下版本支持的设备支持的云台巡航数
CRUISE_MAX_PRESET_NUMS | 32 | 一条巡航最多的巡航点
MAX_PTZCRUISE_POINT_NUM | 32 | 最大支持巡航点个数
MAX_SERIAL_PORT | 8 | V3.0以上版本支持的设备支持232串口数
MAX_PREVIEW_MODE | 8 | 设备支持最大预览模式数目 1画面,4画面,9画面,16画面....
MAX_MATRIXOUT | 16 | 最大模拟矩阵输出个数
LOG_INFO_LEN | 11840 | 日志附加信息长度
DESC_LEN | 16 | 云台描述字符串长度
DESC_LEN_64 | 64 | 描述字符串长度
PTZ_PROTOCOL_NUM | 200 | V3.0以上版本支持的设备最大支持的云台协议数
MAX_AUDIO | 1 | V3.0以下版本支持的设备的语音对讲通道数
MAX_AUDIO_V30 | 2 | V3.0以上版本支持的设备的语音对讲通道数
MAX_CHANNUM | 16 | V3.0以下版本支持的设备的最大通道数
MAX_ALARMIN | 16 | V3.0以下版本支持的设备的最大报警输入数
MAX_ALARMOUT | 4 | V3.0以下版本支持的设备的最大报警输出数
MAX_ANALOG_CHANNUM | 32 | 最大32个模拟通道
MAX_ANALOG_ALARMOUT | 32 | 最大32路模拟报警输出
MAX_ANALOG_ALARMIN | 32 | 最大32路模拟报警输入
MAX_IP_DEVICE | 32 | 允许接入的最大IP设备数
MAX_IP_DEVICE_V40 | 64 | 允许接入的最大IP设备数
MAX_IP_CHANNEL | 32 | 允许加入的最多IP通道数
MAX_IP_ALARMIN | 128 | 允许加入的最多报警输入数
MAX_IP_ALARMOUT | 64 | 允许加入的最多报警输出数
MAX_IP_ALARMOUT_V40 | 4096 | 允许加入的最多报警输出数(扩展)
MAX_CHANNUM_V30 | 64 | (MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL)
MAX_CHANNUM_V40 | 512 | 最大通道个数
MAX_ALARMOUT_V30 | 96 | (MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT)
MAX_ALARMOUT_V40 | 4128 | (MAX_IP_ALARMOUT_V40 + MAX_ANALOG_ALARMOUT)
MAX_ALARMIN_V30 | 160 | (MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN)
MAX_MULTI_AREA_NUM | 24 | 最大移动侦测区域个数
MAX_RULE_NUM | 8 | 最大规则条数
MAX_RULE_NUM_4 | 4 | 最大规则数
MAX_TIMESEGMENT_2 | 2 | 最大时间段数
VCA_MAX_POLYGON_POINT_NUM | 10 | 检测区域最多支持10个点的多边形
MAX_TARGET_NUM | 30 | 最大目标个数
MAX_VCA_CHAN | 16 | 最大智能通道数
IW_ESSID_MAX_SIZE | 32 | SSID的长度
WIFI_WEP_MAX_KEY_COUNT | 4 | 最大密钥个数
WIFI_WEP_MAX_KEY_LENGTH | 33 | 最大密钥长度
WIFI_WPA_PSK_MAX_KEY_LENGTH | 63 | 加密字符的最大长度
WIFI_WPA_PSK_MIN_KEY_LENGTH | 8 | 加密字符的最小长度
WIFI_MAX_AP_COUNT | 20 | 无线AP的最大个数
NET_DVR_MAX_DISPREGION | 16 | 每个显示通道最多可以显示的窗口
MAX_DECODECHANNUM | 32 | 多路解码器最大解码通道数
MAX_DISPCHANNUM | 24 | 多路解码器最大显示通道数
MAX_NET_DISK | 16 | 最大网络硬盘数
MAX_ATM_PROTOCOL_NUM | 256 | ATM最大协议数
ATM_PROTOCOL_SORT | 4 | ATM协议段数
ATM_DESC_LEN | 32 | ATM描述字符串长度
MAX_ACTION_TYPE | 12 | ATM自定义协议叠加交易行为最大行为个数
SEARCH_EVENT_INFO_LEN | 300 | 事件信息长度
MAX_MASK_REGION_NUM | 4 | 最大屏蔽区域个数
MAX_CALIB_PT | 6 | 最大标定点个数
MAX_RECT_NUM | 6 | 最大矩形框个数
MAX_RESOLUTIONNUM | 64 | 支持的最大分辨率数目
MAX_LOOPPLANNUM | 16 | 最大计划切换组数
DECODE_TIMESEGMENT | 4 | 计划解码每天时间段数
MAX_RECORD_FILE_NUM | 20 | 一次操作文件( 备份、删除或刻录)的最大数目
DESC_LEN_32 | 32 | 描述字长度
MAX_NODE_NUM | 256 | 节点个数
MAX_ABILITYTYPE_NUM | 12 | 最大能力项
IPC_PROTOCOL_NUM | 50 | IPC协议最大个数
MAX_SADP_NUM | 256 | 搜索到设备最大数目
SOFTWARE_VERSION_LEN | 48 | 软件版本号长度
MAX_REDAREA_NUM | 6 | 最大红绿灯区域个数
MAX_LANERECT_NUM | 5 | 最大车牌识别区域数
MAX_LICENSE_LEN | 16 | 车牌号最大长度
MAX_FORTIFY_NUM | 10 | 最大布防个数
MAX_INTERVAL_NUM | 4 | 最大时间间隔个数
MAX_CHJC_NUM | 3 | 最大车辆省份简称字符个数
MAX_VL_NUM | 5 | 最大虚拟线圈个数
MAX_DRIVECHAN_NUM | 16 | 最大车道数
MAX_COIL_NUM | 3 | 最大线圈个数
MAX_IOSPEED_GROUP_NUM | 4 | IO测速组个数
MAX_IOOUT_NUM | 4 | 最大IO输出口个数
MAX_IOIN_NUM | 8 | 最大IO输入口个数
MAX_IOIN_NUMEX | 10 | 最大IO输入口个数(扩展)
MAX_ITC_LANE_NUM | 6 | 最大车道个数
MAX_LIGHT_NUM | 6 | 最大交通灯数
MAX_VIDEO_DETECT_LIGHT_NUM | 12 | 最大视频检测信号灯个数
MAX_VIDEO_INTERVAL_NUM | 2 | 最大抓拍间隔数
PICNAME_MAXITEM | 2 | 图片命令最多元素个数
MAX_LANEAREA_NUM | 2 | 单车道最大区域个数
MAX_ICR_NUM | 8 | 抓拍机红外滤光片预置点数
MAX_PARKNO_LEN | 16 | 车位编号长度
MAX_CUSTOMDIR_LEN | 32 | 自定义目录长度
MAX_ITC_EXCEPTIONOUT | 32 | 抓拍机最大报警输出个数
MAX_ITS_SCENE_NUM | 16 | 最大场景数量
MAX_SCENE_TIMESEG_NUM | 16 | 最大场景时间段数量
DEVICE_ID_LEN | 48 | 设备编号长度
MONITORSITE_ID_LEN | 48 | 监测点编号长度
MAX_SCH_TASKS_NUM | 10 | 定时任务最大个数
ITC_MAX_POLYGON_POINT_NUM | 20 | 检测区域最多支持20个点的多边形
MAX_ITC_SERIALCHECK_NUM | 8 | 串口校验类型个数
MAX_LINE_SEG_NUM | 8 | 最大样本线个数
MAX_SAMPLE_NUM | 5 | 最大样本个数
MAX_SAMPLE_NUM_EX | 7 | 样本标定个数扩展
MAX_SIGNALLIGHT_NUM | 6 | 最大信号灯个数
SUPPORT_PD_NUM | 16 | 最大支持的物理磁盘个数
SUPPORT_ARRAY_NUM | 8 | 最大支持的阵列个数
SUPPORT_VD_NUM | 128 | 最大支持的虚拟磁盘个数
LABEL_NAME_LEN | 40 | 录像标签名称的长度
LABEL_IDENTIFY_LEN | 64 | 标签标识的长度
MAX_DEL_LABEL_IDENTIFY | 20 | 删除的最大标签标识个数
MAX_PIC_EVENT_NUM | 32 | 事件抓图的事件类型个数
MAX_ALARMIN_CAPTURE | 16 | 事件抓图报警输入个数
CARDNUM_LEN_V30 | 40 | 卡号的长度
PICTURE_NAME_LEN | 64 | 图片名称的长度
MAX_RECORD_PICTURE_NUM | 50 | 最大备份图片张数
CALIB_PT_NUM | 4 | 智能交通事件标定个数
MAX_REGION_NUM | 8 | 区域列表最大数目
MAX_LANE_NUM | 8 | 最大车道数目
MAX_AID_RULE | 8 | 最大事件规则数目
MAX_TPS_RULE | 8 | 最大参数规则数目
INQUEST_MESSAGE_LEN | 44 | 审讯重点标记信息长度
INQUEST_MAX_ROOM_NUM | 2 | 最大审讯室个数
MAX_RESUME_SEGMENT | 2 | 支持同时恢复的片段数目
MAX_ALARMHOST_SUBSYSTEM | 32 | 网络报警主机子系统个数
MAX_ALARMHOST_ALARMIN_NUM | 512 | 网络报警主机最大报警输入口数
MAX_ALARMHOST_ALARMOUT_NUM | 512 | 网络报警主机最大报警输出口数
ALARMHOST_MAX_AUDIOOUT_NUM | 32 | 网络报警主机最大语音输出数
ALARMHOST_MAX_ELECTROLOCK_NUM | 32 | 网络报警主机最大电锁数
ALARMHOST_MAX_MOBILEGATE_NUM | 32 | 网络报警主机最大移动门数
ALARMHOST_MAX_SIREN_NUM | 8 | 网络报警主机最大警号数目
MAX_DEVICE_PROTO_NUM | 256 | 网络报警主机协议类型个数
MAX_DEVICE_TYPE_NUM | 256 | 网络报警主机设备类型个数
MAX_CENTERNUM | 4 | 网络报警主机支持的最大中心个数
MAX_PHONE_NUM | 32 | 拨号号码长度
MAX_CONTENT_LEN | 512 | LED屏显内容最大长度
LED_TIMER_NUM | 3 | LED开关机时间组数
TIME_SEGMENT_A_DAY | 48 | 时间段个数，一天24小时，半小时一个段
MAX_SUPPORT_RES | 32 | 最多支持的分辨率类型个数
MAX_DISPNUM_V41 | 32 | 最大显示通道个数
MAX_BIGSCREENNUM | 100 | 最多大屏拼接子屏数
MAX_WIN_COUNT | 224 | 大屏支持最大的开窗个数
MAX_WINDOWSMODE | 12 | 最多支持的画面分割类型个数
MAX_HUMAN_BIRTHDATE_LEN | 10 | 最大出生年月长度
MAX_HUMAN_PICTURE_NUM | 10 | 最大图片数
MAX_FACE_PIC_LEN | 6144 | 最大人脸图片数据长度
MAX_OSDCHAR_NUM | 256 | 虚拟LED字符数
STREAM_ID_LEN | 32 | 流ID标识长度
MAX_AUX_ALARM_NUM | 8 | 最大辅助报警个数
MAX_WIRELESS_ALARM_NUM | 8 | 最大无线报警个数
MAX_PRO_PATH | 256 | 最大协议路径长度
DEVICEID_LEN | 32 | 设备ID号长度
DVCS_DEVICEID_LEN | 16 | 设备ID标识符长度
MAX_ROIDETECT_NUM | 8 | ROI检测区域个数
MAX_CABINET_COUNT | 8 | 最大机柜个数
ITS_MAX_DEVICE_NUM | 32 | 最大设备个数
MAX_ALERTLINE_NUM | 8 | 最大警戒线条数
MAX_INTRUSIONREGION_NUM | 8 | 最大区域个数
MAX_PARKING_NUM | 4 | 一个通道最大车位个数
MAX_PARKING_STATUS | 8 | 车位状态个数
MAX_ID_LEN | 48 | 编号最大长度
MAX_ALARMREASON_LEN | 32 | 报警类型描述最大长度
MAX_SERVERID_LEN | 64 | 最大服务器ID的长度
MAX_SERVERDOMAIN_LEN | 128 | 服务器域名最大长度
MAX_AUTHENTICATEID_LEN | 64 | 认证ID最大长度
MAX_AUTHENTICATEPASSWD_LEN | 32 | 认证密码最大长度
MAX_SERVERNAME_LEN | 64 | 最大服务器用户名
MAX_COMPRESSIONID_LEN | 64 | 编码ID的最大长度
MAX_SIPSERVER_ADDRESS_LEN | 128 | SIP服务器地址支持域名和IP地址
MATRIX_MAX_OUTPUT_NUM | 256 | 矩阵最大输出通道个数
CLOUD_NAME_LEN | 48 | 云存储服务器用户名长度
CLOUD_PASSWD_LEN | 48 | 云存储服务器密码长度
MAX_URL_LEN | 240 | URL最大长度
MAX_OPERATE_INDEX_LEN | 32 | 操作数最大长度
MAX_FACE_PIC_NUM | 30 | 人脸子图最大个数
CHAN_NO_LEN | 24 | 通道编号最大长度
GUID_LEN | 16 | GUID长度


设备RAID能力XML描述

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_RAID_ABILITY | 获取设备RAID能力 | 无 | 设备RAID能力XML描述

  • 输出参数XML格式：
    • <RAID version=”2.0”>

    <RaidType>
      <!--req, RAID类型，1-MARVELL RAID卡，2-软RAID-->
      <Range>1,2</Range>
    </RaidType>

    <RaidAutoRebuild>
      <!--req, 是否支持配置RAID自动重建，1-支持，不支持无此项-->
      <Range>1</Range>
    </RaidAutoRebuild>

    <AdapterUpgrade>
      <!--req, 是否支持固件升级，1-支持，不支持无此项-->
      <Range>1</Range>
    </AdapterUpgrade>

    <MaxPdCount>
      <!--req, 最大物理磁盘个数-->
      <Value>1</Value>
    </MaxPdCount>

    <MaxArrayCount>
      <!--req, 最大阵列个数-->
      <Value>1</Value>
    </MaxArrayCount>

    <MaxVdCount>
      <!--req, 最大可显示虚拟磁盘个数-->
      <Value>1</Value>
    </MaxVdCount>

    <MaxCreateVdCount>
      <!--req, 最大可创建虚拟磁盘个数-->
      <Value>1</Value>
    </MaxCreateVdCount>

    <SpareType>
      <!--req, 热备类型，1-全局热备，2-指定阵列热备 -->
      <Range>1,2</Range>
    </SpareType>

    <RaidMode>
      <!--req, 阵列模式: 1-RAID0,2-RAID1,3-RAID10,4-RAID1E,5-RAID5,6-RAID6,7-RAID50,8-JBOD,9-RAID60-->
      <Range>1,2,3,4,5,6,7,8,9</Range>
    </RaidMode>

    <RebuildArray>
      <!--req, 是否支持阵列重建，1-支持，不支持无此项-->
      <Range>1</Range>
    </RebuildArray>

    <MigrateArray>
      <!--req, 是否支持阵列迁移，1-支持，不支持无此项-->
      <Range>1</Range>
    </MigrateArray>

    <MigrateArrayType>
      <!--req, 支持阵列迁移类型，不支持阵列迁移无此项-->
      <!--req, 1-RAID0,2-RAID1,3-RAID10,4-RAID1E,5-RAID5,6-RAID6,7-RAID50,8-JBOD,9-RAID60-->

      <RAID0> <!--req, 迁移前阵列类型-->
        <Range>2,3,4,5,6,7,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID0>

      <RAID1> <!--req, 迁移前阵列类型-->
        <Range>1,3,4,5,6,7,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID1>

      <RAID10> <!--req, 迁移前阵列类型-->
        <Range>1,2,4,5,6,7,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID10>

      <RAID1E> <!--req, 迁移前阵列类型-->
        <Range>1,2,3,5,6,7,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID1E>

      <RAID5> <!--req, 迁移前阵列类型-->
        <Range>1,2,3,4,6,7,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID5>

      <RAID6> <!--req, 迁移前阵列类型-->
        <Range>1,2,3,4,5,7,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID6>

      <RAID50> <!--req, 迁移前阵列类型-->
        <Range>1,2,3,4,5,6,8,9</Range> <!--req, 迁移后阵列类型-->
      </RAID50>

      <JBOD> <!--req, 迁移前阵列类型-->
        <Range>1,2,3,5,4,6,7,9</Range> <!--req, 迁移后阵列类型-->
      </JBOD>

      <RAID60> <!--req, 迁移前阵列类型-->
        <Range>1,2,3,4,5,6,7,8</Range> <!--req, 迁移后阵列类型-->
      </RAID60>

    </MigrateArrayType>

    <ScanArray>
      <!--req, 是否支持重新扫描阵列，1-支持，不支持无此项-->
      <Range>1</Range>
    </ScanArray>

    <StopArray>
      <!--req, 是否支持阵列停止，1-支持，不支持无此项-->
      <Range>1</Range>
    </StopArray>

    <ArrayInitType>
      <!--req, 阵列初始化类型，0-快速初始化，1-完全初始化（前台），2-完全初始化（后台），3-不初始化-->
      <Range>0,1,2,3</Range>
    </ArrayInitType>

    <VdInitType>
      <!--req, 虚拟磁盘初始化类型，0-快速初始化，1-完全初始化（前台），2-完全初始化（后台），3-不初始化-->
      <Range>0,1,2,3</Range>
    </VdInitType>

    <MinVdSize>
      <!--req, 虚拟磁盘最小容量，单位：MB-->
      <Value>1</Value>
    </MinVdSize>

</RAID>


设备全部能力XML描述

设备全部能力包括软硬件能力、网络能力、编码能力和当前编码能力等。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ALL_ABILITY | 获取设备全部能力 | 当前编码类型和分辨率XML描述 | 设备全部能力XML描述

  • 输入参数XML格式：
    • <CurrentCompressInfo>
    <VideoEncodeType>
    <!--req, 0：private 264;1: STD_MPEG4; 2 ：STD_H264-->
    </VideoEncodeType>

    <VideoResolution>
    <!--req, 0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF，16-VGA，17-UXGA，18-SVGA，19-HD720p，20-XVGA，21-HD900p，27-HD1080i，-->
    <!--req, 28-2560*1920，29-1600*304，30-2048*1536，31-2448*2048-->
    </VideoResolution>

</CurrentCompressInfo>
  • 输出参数XML格式：
    • <DeviceCapability>

   <!--req, 硬件支持信息总体介绍-->
   <HardwareCapability>
       <HardwareVersion>
       <!--req,  前面板版本,高16位是主版本,低16位是次版本 -->
       </HardwareVersion>

       <AlarmInPortNum>
       <!--req,  DVR报警输入个数 -->
       </AlarmInPortNum>

       <AlarmOutPortNum>
       <!--req,  DVR报警输出个数 -->
       </AlarmOutPortNum>

       <RS232Num>
       <!--req,  DVR 232串口个数 -->
       </RS232Num>

       <RS485Num>
       <!--req,  DVR 485串口个数 -->
       </RS485Num>

       <NetworkPortNum>
       <!--req,  网络口个数 -->
       </NetworkPortNum>

       <USBNum>
       <!--req,  USB口的个数 -->
       </USBNum>

       <FlashSize>
       <!--req, Flash大小（单位K）-->
       </ FlashSize >

       <RamSize>
       <!--req, Ram大小（单位K）-->
       </RamSize>

       <USBVersion>
       <!--req, USB版本-->
       </USBVersion>

       <SDNum>
       <!--req, SD卡个数-->
       </SDNum>

       <VideoInNum>
       <!--req, VIN个数-->
       </VideoInNum>

       <AudoInNum>
       <!--req, AIN个数-->
       </AudioInNum>

       <VideoOutNum>
       <!--req, VOUT个数-->
       </VideoOutNum>

       <AudioOutNum>
       <!--req, AOUT个数-->
       </AudioOutNum>

       <SDSupport>
       <!--req, 是否支持SD卡-->
       </SDSupport>

       <WiFiSupport>
       <!--req, 是否支持WiFi- 0：不支持，1：支持-->
       </WiFiSupport>

       <POESupport>
       <!--req, 是否支持POE- 0：不支持，1：支持-->
       </POESupport>

       <IRSupport>
       <!--req, 是否支持红外 - 0：不支持，1：支持-->
       </IRSupport >

       <VideoOutSupport>
       <!--req, 是否支持本地输出- 0：不支持，1：支持-->
       </VideoOutSupport>

       <ResetSupport>
       <!--req, 是否支持恢复出厂设置- 0：不支持，1：支持-->
       </ResetSupport>

   </HardwareCapability>

   <!--req, 软件能力支持信息总体介绍-->
   <SoftwareCapability >

       <NasSupport>
       <!--req, 是否支持nas存储功能：0：不支持，1：支持-->
       </ NasSupport>

       <RtspSupport>
       <!--req, 是否支持rtsp网络传输功能0：不支持，1：支持-->
       </ RtspSupport>

       <NtpSupport>
       <!--req, 是否支持NTP校时- 0：不支持，1：支持-->
       </NtpSupport>

       <EptzSupport>
       <!--req, 是否支持电子云台 - 0：不支持，1：支持-->
       </EptzSupport>

       <DDNSSupport>
       <!--req, 是否支持DDNS - 0：不支持，1：支持-->
       </DDNSSupport>

       <UPNPSupport>
       <!--req, 是否支持UPNP- 0：不支持，1：支持-->
       </UPNPSupport>

       <Ipv6Support>
       <!--req, 是否支持ipv6- 0：不支持，1：支持-->
       </Ipv6Support>

       <VCASupport>
       <!--req, 是否支持智能- 0：不支持，1：支持-->
       </VCASupport>

   </SoftwareCapability>

<!--req, 具体的每一项能力描述-->
…………
</DeviceCapability>


设备前端参数XML描述

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
IPC_FRONT_PARAMETER | 获取设备前端参数能力 | 无 | 设备前端参数XML描述

  • 输出参数XML格式：
    • <CAMERAPARA>

    <PowerLineFrequencyMode>
    <!--req, 0-50HZ; 1-60HZ-->
    <Range>0,1</Range>>
    </PowerLineFrequencyMode>

    <WhiteBalance>

        <WhiteBalanceMode>
        <!--req, 0 USERSET, 1 AWB1, 2 AWB2; 2 AWB3-->
        <Range>0,1</Range>
        </WhiteBalanceMode>

        <WhiteBalanceModeRGain>
            <Min>0</Min> <!--req, 最小值-->
            <Max>255</Max> <!--req, 最大值-->
        </WhiteBalanceModeRGain>

        <WhiteBalanceModeBGain>
            <Min>0</Min> <!--req, 最小值-->
            <Max>255</Max> <!--req, 最大值-->
        </WhiteBalanceModeBGain>
    </WhiteBalance>

    <Exposure>
        <ExposureMode>
        <!--req, 0 手动曝光 1自动曝光-->
        <Range>0,1</Range>
        </ExposureMode>

        <ExposureSet>
        <!--req,  0-自动*8、1-自动*5、2 -自动*4、3 -自动*2、4 -1/25、5 -1/50、6 -1/100、7 -1/250、8 -1/500、9 -1/750、10-1/1000、11-1/2000、12-1/4000、13-1/10,000、14-1/100,000 -->
        <Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14</Range>
        </ExposureSet>

        <exposureUSERSET>
        <!--req, 自动自定义曝光时间-->
            <Min>0</Min> <!--req, 最小值-->
            <Max>2000000</Max> <!--req, 最大值-->
        </exposureUSERSET>

        <ExposureTarget>
        <!--req, 手动曝光时间，单位微妙-->
            <Min>0</Min> <!--req, 最小值-->
            <Max>2000000</Max> <!--req, 最大值-->
        </ExposureTarget>
    </Exposure>

    <IrisMode>
        <!--req, 0 自动曝光 1手动曝光-->
        <Range>0,1</Range>
    </IrisMode>

    <!--req, 自动光圈灵敏度-->
    <AutoApertureLevel>
           <Min>0</Min><!--req, 最小值-->
            <Max>15</Max><!--req, 最大值-->
            <Default>7</Default><!--req, 默认值-->
    </AutoApertureLevel>

    <FocusMode>
        <!--req, 0手动聚焦;1自动聚焦; 2自动被焦-->
        <Range>0,1,2</Range>
    </FocusMode>

    <GainLevel>
        <Min>0</Min>
        <Max>100</Max>
    </GainLevel>

    <BrightnessLevel>
        <Min>0</Min>
        <Max>100</Max>
    </BrightnessLevel>

    <ContrastLevel>
        <Min>0</Min>
        <Max>100</Max>
    </ContrastLevel>

    <SharpnessLevel>
        <Min>0</Min>
        <Max>100</Max>
    </SharpnessLevel>

    <SaturationLevel>
        <Min>0</Min>
        <Max>100</Max>
    </SaturationLevel>

    <HueLevel>
        <Min>0</Min>
        <Max>100</Max>
    </HueLevel>

    <GammaCorrection>
        <GammaCorrectionEnabled>
        <!--req, 0 dsibale  1 enable-->
        <Range>0,1</Range>
        </GammaCorrectionEnabled>

        <GammaCorrectionLevel>
            <Min>0</Min>
            <Max>100</Max>
        </GammaCorrectionLevel>
    </GammaCorrection>

    <WDR>
        <WDREnabled>
        <!--req, 0 dsibale  1 enable 2 Auto-->
        <Range>0,1,2</Range>
        </WDREnabled>

        <WDRLevel1>
            <Min>0</Min>
            <Max>0xf</Max>
        </WDRLevel1>

        <WDRLevel2>
            <Min>0</Min>
            <Max>0xf</Max>
        </WDRLevel2>

        <WDRContrastLevel >
            <Min>0</Min>
            <Max>0xf</Max>
        </WDRContrastLevel >
    </WDR>

    <DayNightFilter>
        <DayNightFilterType>
        <!--req, 0  day,1 night,2 auto-->
        <Range>0,1,2</Range>
        </DayNightFilterType>

        <SwitchSchedule>
            <SwitchScheduleEnabled>
            <!--req, 0 dsibale  1 enable-->
            <Range>0,1</Range>
            </SwitchScheduleEnabled>

            <DayToNightFilterLevel>
                <Range>0,1,2,3,4,5,6,7</Range>
            </DayToNightFilterLevel>

            <NightToDayFilterLevel>
                <Range>0,1,2,3,4,5,6,7</Range>
            </NightToDayFilterLevel>

            <DayNightFilterTime>
                <Min>0</Min>
                <Max>120</Max>
            </DayNightFilterTime>

        </SwitchSchedule>
    </DayNightFilter>

    <Backlight>
        <BacklightMode>
        <!--req, 0 USERSET、 1UP、2 DOWN、3 LEFT、4 RIGHT、5 MIDDLE、6 自定义-->
        <Range>0,1,2,3,4,5,6</Range>
        </BacklightMode>

        <BacklightLevel>
            <Min>0</Min>
            <Max>0xf</Max>
        </BacklightLevel>
    </Backlight>

    <Mirror>
    <!--req, 0-off，1-leftright，2-updown，3-center-->
    <Range>0,1,2,3</Range>
    </Mirror>

    <EPTZ>
    <!--req, 0-不启用电子云台，1-启用电子云台-->
    <Range>0,1</Range>
    </EPTZ>

    <LOCALOUTPUT>
    <!--req, 0-不支持，1-支持-->
    <!--req, 365: 迷你球，卡片机不支持本地输出;9p031前端设备暂不支持本地输出-->
    <!--req, 6467:BNC—0,1 ; HDMI—0:不支持,20:HDMI_720P50,20:HDMI_720P60, 22 : HDMI_1080I60,-->
    <!--req, 23 : HDMI_1080I50, 24 : HDMI_1080P24, 25 : HDMI_1080P25,-->
    <!--req, 26:HDMI_1080P30, 27 : HDMI_1080P50, 28 : HDMI_1080P60-->
    <Range>0,1</Range>
    </LOCALOUTPUT>

    <DigitalNoiseReduction>
        <DigitalNoiseReductionEnable>
        <!--req, 0-关闭，1-普通模式，2专家模式-->
        <Range>0,1,2</Range>
        </DigitalNoiseReductionEnable>

        <!--req, 普通模式下数字降噪级别-->
        <DigitalNoiseReductionLevel>
            <!--req, 0-100-->
            <Min>0</Min>
            <Max>100</Max>
        </DigitalNoiseReductionLevel>

        <!--req, 专家模式下空域数字降噪级别-->
        <DigitalNoiseSpectralLevel>
            <!--req, 0-100-->
            <Min>0</Min>
            <Max>100</Max>
        </DigitalNoiseSpectralLevel>

        <!--req, 专家模式下时域数字降噪级别-->
        <DigitalNoiseTemporalLevel>
            <!--req, 0-100-->
            <Min>0</Min>
            <Max>100</Max>
        </DigitalNoiseTemporalLevel>
    </DigitalNoiseReduction>

    <!--req, 色阶范围-->
    <ColorRange>
      <!--req, 0:16-235，1:0-255-->
      <Range>0,1</Range>
    </ColorRange>

    <DigitalZoom>
      <!--req,  数字倍率，热成像设备用到 -->
      <!--req,  数字倍率:0-关闭，1-×2，2-×4 -->
      <Range>0,1,2</Range>
    </DigitalZoom>

    <DeadPixelDetect>
      <!--req, 0 dsibale  1 enable-->
      <Range>0,1</Range>
    </DeadPixelDetect>

    <!--req, 行编码能力项-->
    <LINEENCODE>
      <!--req, 0 dsibale  1 enable-->
      <Range>0,1</Range>
    </LINEENCODE>

</CAMERAPARA>


设备当前编码能力XML描述

由于主码流编码类型、主码流的分辨率能够影响主码流编码帧率、子码流分辨率和子码流的帧率；如果这些信息都在编码参数中描述，编码参数xml描述会十分复杂并且数据量很大。用户可以查询特定编码方式和主码流分辨率情况下主码流编码帧率，子码流分辨率和子码流帧率。

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ENCODE_CURRENT | 获取设备当前编码能力 | 当前编码类型和分辨率XML描述 | 设备当前编码能力XML描述

  • 输入参数XML格式：
    • <CurrentCompressInfo>
    <VideoEncodeType>
    <!--req, 0：private 264;1: STD_MPEG4; 2 ：STD_H264-->
    </VideoEncodeType>

    <VideoResolution>
    <!--req, 0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF，16-VGA，17-UXGA，18-SVGA，19-HD720p，20-XVGA，21-HD900p，27-HD1080i-->
    <!--req, 28-2560*1920，29-1600*304，30-2048*1536，31-2448*2048-->
    </VideoResolution>

</CurrentCompressInfo>
  • 输出参数XML格式：
    • <CurrentCompressInfo>

    <VideoEncodeType>
    <!--req, 0：private 264;1: STD_MPEG4; 2 ：STD_H264*/
    <Range>1,2</Range>>
    </VideoEncodeType>

    <VideoResolution>
    <!--req, 0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF，16-VGA，17-UXGA，18-SVGA，19-HD720p，20-XVGA，21-HD900p，27-HD1080i，-->
    <!--req, 28-2560*1920，29-1600*304，30-2048*1536，31-2448*2048-->
    </VideoResolution>

    <VideoFrameRate>
    <!--req, 0:全帧率;1:1/16;2:1/8;3:1/4;4:1/2;5:1;6:2;7:4;8:6;9:8;10:10;11:12;12:16;13:20;14:15;15:18;16:22-->
    <Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
    </VideoFrameRate>

    <!--req, 当前编码分辨率和当前帧率情况下，子主码流支持的分辨率和帧率-->
    <SubChannelList>
    <SubChannelEntry>
    <index>1</index><!--req, 子通道索引-->

        <VideoResolutionList>

            <VideoResolutionEntry>
            <!--req, CIF*/
                <Index>1</Index>
                <VideoFrameRate>
                <!--req, 0:全帧率;1:1/16;2:1/8;3:1/4;4:1/2;5:1;6:2;7:4;8:6;9:8;10:10;11:12;12:16;13:20;14:15;15:18;16:22-->
                <Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
                </VideoFrameRate>
            </VideoResolutionEntry>

            <VideoResolutionEntry>
            <!--req, QCIF*/
                <Index>2</Index>
                <VideoFrameRate >
                <!--req, 0:全帧率;1:1/16;2:1/8;3:1/4;4:1/2;5:1;6:2;7:4;8:6;9:8;10:10;11:12;12:16;13:20;14:15;15:18;16:22-->
                <Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
                </VideoFrameRate >
            </VideoResolutionEntry>
        </VideoResolutionList>

     </SubChannelEntry>
     </SubChannelList>

</CurrentCompressInfo>


设备所有能力XML描述

设备网络SDK开发使用手册

设备所有编码能力XML描述

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ENCODE_ALL_ABILITY | 获取设备所有编码能力 | 无 | 设备所有编码能力XML描述

  • 输出参数XML格式：
    • <AudioVideoCompressInfo>
<AudioCompressInfo>
    <AudioEncodeType>
    <!--req, 0:G722_1; 1:G711_MU; 2:G711_A; 3: G723;4: MP1L2;5 MP2L2;99: RAW-->
    <Range>0,1,2,3,4,5,99</Range>
    </AudioEncodeType>

    <VoiceTalkEncodeType>
    <!--req, 0:G722_1; 1:G711_MU; 2:G711_A; 3: G723;4: MP1L2;5 MP2L2;99: RAW-->
    <Range>0,1,2,3,4,5,99</Range>
    <VoiceTalkEncodeType>
</AudioCompressInfo>

<VideoCompressInfo>

    <ChannelList>

        <ChannelEntry>
            <!--req, 通道号-->
            <ChannelNumber>1</ChannelNumber>
            <MainChannel>

            <VideoEncodeType>
            <!--req, 0：private 264;1: STD_H264; 2：STD_MPEG4;7:STD_RTPMJPEG-->
            <Range>1,2</Range>
            </VideoEncodeType>

            <VideoResolutionList>
            <!--req, 分辨率：0-DCIF，1-CIF，2-QCIF，3-4CIF，4-2CIF，16-VGA，17-UXGA，18-SVGA，19-HD720p，20-XVGA，21-HD900p，-->
            <!--req, 27-HD1080i，28-2560*1920，29-1600*304，30-2048*1536，31-2448*2048-->
                <VideoResolutionEntry>
                <!--req, DCIF-->
                <Index>0</Index>
                <Name>DCIF</Name>
                <Resolution>528*384</Resolution>
                </VideoResolutionEntry>

                <VideoResolutionEntry>
                <!--req, CIF-->
                <Index>1</Index>
                <Name>CIF</Name>
                <Resolution>352*288</Resolution>
                </VideoResolutionEntry>

                <VideoResolutionEntry>
                <!--req, QCIF-->
                <Index>2</Index>
                <Name>QCIF</Name>
                <Resolution>176*144</Resolution>
                </VideoResolutionEntry>

                <VideoResolutionEntry>
                <!--req, 4CIF-->
                <Index>3</Index>
                <Name>4CIF</Name>
                <Resolution>704*576</Resolution>
                </VideoResolutionEntry>

                <VideoResolutionEntry>
                <!--req, 2CIF-->
                <Index>4</Index>
                <Name>2CIF</Name>
                <Resolution>704*288</Resolution>
                </VideoResolutionEntry>

                <VideoResolutionEntry>
                <!--req, QVGA-->
                <Index>6</Index>
                <Name>QVGA</Name>
                <Resolution>320*240</Resolution>
                </VideoResolutionEntry>

                …………

                <VideoResolutionEntry>
                <!--req, UXGA-->
                <Index>17</Index>
                <Name>UXGA</Name>
                <Resolution>1600*1200</Resolution>
                </VideoResolutionEntry>

                <!--req, 其他分辨率以此类推-->
                …………
            </VideoResolutionList>

            <VideoFrameRate>
            <!--req, 0:全帧率;1:1/16;2:1/8;3:1/4;4:1/2;5:1;6:2;7:4;8:6;9:8;10:10;11:12;12:16;13:20;14:15;15:18;16:22-->
            <Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16</Range>
            </VideoFrameRate>

            <VideoBitrate>
            <!--req, 编码码率-->
            <Min>16</Min><!--req, 最小玛率(单位Kb)-->
            <Max>16384K</Max><!--req, 最大玛率(单位Kb)-->
            </VideoBitrate>

            <IntervalBPFrame>
            <!--req, 0-BBP帧; 1-BP帧;2单P帧-->
            <Range>0,1,2</Range>
            </IntervalBPFrame>

            <!--req, E帧最大编码能力-->
            <EFrame>0</EFrame>
            </MainChannel>

            <SubChannelList>
                <SubChannelEntry>
                <index>1</index><!--req, 子通道索引-->

                <VideoEncodeType>
                <!--req, 0：private 264;1: STD_H264; 2 ：STD_MPEG4;7:STD_RTPMJPEG-->
                <Range>1,2</Range>
                </VideoEncodeType>

                <VideoResolutionList>

                    <VideoResolutionEntry>
                    <!--req, CIF-->
                    <Index>1</Index>
                    <Name>CIF</Name>
                    <Resolution>352*288</Resolution>
                    </VideoResolutionEntry>

                    <VideoResolutionEntry>
                    <!--req, QCIF-->
                    <Index>2</Index>
                    <Name>QCIF</Name>
                    <Resolution>176*144</Resolution>
                    </VideoResolutionEntry>

                    <VideoResolutionEntry>
                    <!--req, QVGA-->
                    <Index>6</Index>
                    <Name>QVGA</Name>
                    <Resolution>320*240</Resolution>
                    </VideoResolutionEntry>
                    </VideoResolutionList>

               <VideoFrameRate>
               <Range>0,1,2,3,4,5,6,7,8,9,10,11,12,13</Range>
               </VideoFrameRate>

               <VideoBitrate>
               <!--req, 编码码率-->
               <Min>16</Min><!--req, 最小玛率(单位Kb)-->
               <Max>16384</Max><!--req, 最大玛率(单位Kb)-->
               </VideoBitrate>

               <IntervalBPFrame>
               <!--req, 0-BBP帧; 1-BP帧;2单P帧-->
               <Range>0,1,2</Range>
               </IntervalBPFrame>

               <EFrame>0</EFrame><!--req, E帧最大编码能力-->

               <SubChannelEntry>
           </SubChannelList>

        <ChannelEntry>
    <ChannelList>>

</VideoCompressInfo>
</AudioVideoCompressInfo>


设备报警能力XML描述

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_ALARM_ABILITY | 获取设备报警能力 | 设备报警能力XML描述 | 设备报警能力XML描述

  • 输入参数XML格式：
    • <AlarmAbility version="2.0">
  <channelID><!-- req, 通道号 --></channelID>
</AlarmAbility>
  • 输出参数XML格式：
    • <AlarmAbility version="2.0">
  <channelEntry>

   <channelID><!—req,通道号--></channelID>

   <PIRAlarm>
    <enabled opt="true,false"><!-- req,是否启用PIR报警--></enabled>
    <alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight"></alarmHandleType>
   </PIRAlarm>

   <wirelessAlarm>
    <enabled opt="true,false"><!-- req,是否启用无线报警--></enabled>
    <wirelessAlarmID min="1" max="8"><!—req,支持的无线报警个数 --></wirelessAlarmID>
    <alarmHandleType opt="monitor,audio,center,alarmout,picture,wirelesslight"></alarmHandleType>
   </wirelessAlarm>

  </channelEntry>
</AlarmAbility>

    See Also

    NET_DVR_GetDeviceAbility


设备网络能力XML描述

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_NETWORK_ABILITY | 获取设备网络能力 | 无 | 设备网络能力XML描述

  • 输出参数XML格式：
    • <NetworkSetting>
    <!--req, wifi能力描述-->
    <WirelessSetting>

        <InterfaceMode>
        <!--req, 0自动切换; 1有线模式-->
        <Range>0,1</Range>
        </InterfaceMode>

        <NetworkMode>
        <!--req, 0 managed; 1 ad-hoc-->
        <Range>0,1</Range>>
        </NetworMode>

        <SecurityMode>
        <NONE></NONE>
        <WEP>
           <AuthenticationType>
           <!--req, 0开放式; 1共享式-->
           <Range>0,1</Range>>
           </AuthenticationType>

           <WEPKeyLength>
           <!--req, 0:64位; 1 :128位; 3 :152位-->
           <Range>0,1,2</Range>
           </WEPKeyLength>
        </WEP>

        <WPA_PSK>
           <WPA_PSK KeyLength>
           <Min>8</Min>
           <Max>63</Max>
           </WPA_PSK KeyLength>
        </WPA_PSK>
        </SecurityMode>

    </WirelessSetting>

</NetworkSetting>


设备软硬件能力XML描述

能力类型宏定义 | 能力类型说明 | pInBuf | pOutBuf
DEVICE_SOFTHARDWARE_ABILITY | 获取设备软硬件能力 | 无 | 设备软硬件能力XML描述

  • 输出参数XML格式：
    • <BasicCapability>
   <!--req, 硬件支持信息总体介绍-->
   <HardwareCapability>
       <HardwareVersion>
       <!--req,  前面板版本,高16位是主版本,低16位是次版本 -->
       </HardwareVersion>

       <AlarmInPortNum>
       <!--req,  DVR报警输入个数 -->
       </AlarmInPortNum>

       <AlarmOutPortNum>
       <!--req,  DVR报警输出个数 -->
       </AlarmOutPortNum>

       <RS232Num>
       <!--req,  DVR 232串口个数 -->
       </RS232Num>

       <RS485Num>
       <!--req,  DVR 485串口个数 -->
       </RS485Num>

       <NetworkPortNum>
       <!--req,  网络口个数 -->
       </NetworkPortNum>

       <USBNum>
       <!--req,  USB口的个数 -->
       </USBNum>

       <FlashSize>
       <!--req, Flash大小（单位K）-->
       </ FlashSize >

       <RamSize>
       <!--req, Ram大小（单位K）-->
       </RamSize>

       <USBVersion>
       <!--req, USB版本-->
       </USBVersion>

       <SDNum>
       <!--req, SD卡个数-->
       </SDNum>

       <VideoInNum>
       <!--req, VIN个数-->
       </VideoInNum>

       <AudioInNum>
       <!--req, AIN个数-->
       </AudioInNum>

       <VideoOutNum>
       <!--req, VOUT个数-->
       </VideoOutNum>

       <AudioOutNum>
       <!--req, AOUT个数-->
       </AudioOutNum>

       <SDSupport>
       <!--req, 是否支持SD卡-->
       </SDSupport>

       <WiFiSupport>
       <!--req, 是否支持WiFi- 0：不支持，1：支持-->
       </WiFiSupport>

       <POESupport>
       <!--req, 是否支持POE- 0：不支持，1：支持-->
       </POESupport>

       <IRSupport>
       <!--req, 是否支持红外 - 0：不支持，1：支持-->
       </IRSupport >

       <VideoOutSupport>
       <!--req, 是否支持本地输出- 0：不支持，1：支持-->
       </VideoOutSupport>

       <ResetSupport>
       <!--req, 是否支持恢复出厂设置- 0：不支持，1：支持-->
       </ResetSupport>

   </HardwareCapability>

   <!--req, 软件能力支持信息总体介绍-->
   <SoftwareCapability >

       <NasSupport>
       <!--req, 是否支持nas存储功能：0：不支持，1：支持-->
       </ NasSupport>

       <RtspSupport>
       <!--req, 是否支持rtsp网络传输功能0：不支持，1：支持-->
       </ RtspSupport>

       <NtpSupport>
       <!--req, 是否支持NTP校时- 0：不支持，1：支持-->
       </NtpSupport>

       <EptzSupport>
       <!--req, 是否支持电子云台 - 0：不支持，1：支持-->
       </EptzSupport>

       <PtzSupport>
       <!--req, 是否支持云台控制 - 0：不支持，1：支持-->
       </PtzSupport>

       <DDNSSupport>
       <!--req, 是否支持DDNS - 0：不支持，1：支持-->
       </DDNSSupport>

       <UPNPSupport>
       <!--req, 是否支持UPNP- 0：不支持，1：支持-->
       </UPNPSupport>

       <Ipv6Support>
       <!--req, 是否支持ipv6- 0：不支持，1：支持-->
       </Ipv6Support>

       <VCASupport>
       <!--req, 是否支持智能- 0：不支持，1：支持-->
       </VCASupport>

       <MultipleStreamSupport>
       <!--req, 是否支持复合流-0：不支持，1：支持-->
       </MultipleStreamSupport>

       <SubStreamSupport>
       <!--req, 是否支持子码流-0：不支持，1：支持-->
       </SubStreamSupport>

   </SoftwareCapability>
</BasicCapability>


违章代码

以下为部分违章代码的国标定义，仅供参考：

违章代码 | 违章描述 | 简称 | 补充说明
1349 | 驾驶中型以上载客汽车在高速公路、城市快速路以外的道路上行驶超过规定时速10%未达20%的 | 超速行驶 |
1350 | 驾驶中型以上载货汽车在高速公路、城市快速路以外的道路上行驶超过规定时速10%未达20%的 | 超速行驶 |
1352 | 驾驶中型以上载客载货汽车、危险物品运输车辆以外的其他机动车行驶超过规定时速10%未达20%的 | 超速行驶 |
1632 | 驾驶中型以上载客汽车在高速公路、城市快速路以外的道路上行驶超过规定时速20%以上未达到50%的 | 超速行驶 |
1633 | 驾驶中型以上载货汽车在高速公路、城市快速路以外的道路上行驶超过规定时速20%以上未达到50%的 | 超速行驶 |
1634 | 驾驶校车在高速公路、城市快速路以外的道路上行驶超过规定时速20%以上未达到50%的 | 超速行驶 |
1636 | 驾驶中型以上载客载货汽车、校车、危险物品运输车辆以外的其他机动车行驶超过规定时速20%以上未达到50%的 | 超速行驶 |
1628 | 驾驶中型以上载客汽车在城市快速路上行驶超过规定时速未达20％的 | 超速行驶 |
1629 | 驾驶中型以上载货汽车在城市快速路上行驶超过规定时速未达20％的 | 超速行驶 |
1630 | 驾驶校车在城市快速路上行驶超过规定时速未达20％的 | 超速行驶 |
1631 | 驾驶危险物品运输车辆在城市快速路上行驶超过规定时速未达20％的 | 超速行驶 |
1722 | 驾驶中型以上载客汽车在城市快速路上行驶超过规定时速20％以上未达50%的 | 超速行驶 |
1723 | 驾驶中型以上载货汽车在城市快速路上行驶超过规定时速20％以上未达50%的 | 超速行驶 |
1724 | 驾驶校车在城市快速路上行驶超过规定时速20％以上未达50%的 | 超速行驶 |
1721 | 驾驶中型以上载客载货汽车、校车、危险物品运输车辆以外的机动车行驶超过规定时速50%以上的 | 超速行驶 |
1726 | 驾驶中型以上载客汽车在高速公路以外的道路上行驶超过规定时速50%的 | 超速行驶 |
1727 | 驾驶中型以上载货汽车在高速公路以外的道路上行驶超过规定时速50%的 | 超速行驶 |
1728 | 驾驶校车在高速公路以外的道路上行驶超过规定时速50%的 | 超速行驶 |
4710 | 驾驶中型以上载客汽车在高速公路上行驶超过规定时速50％的 | 超速行驶 |
4711 | 驾驶中型以上载货汽车在高速公路上行驶超过规定时速50％的 | 超速行驶 |
4712 | 驾驶校车在高速公路上行驶超过规定时速50％的 | 超速行驶 |
4713 | 驾驶危险物品运输车辆在高速公路上行驶超过规定时速50％的 | 超速行驶 |
4609 | 驾驶中型以上载客汽车在高速公路上行驶超过规定时速未达20％的 | 超速行驶 |
4610 | 驾驶中型以上载货汽车在高速公路上行驶超过规定时速未达20％的 | 超速行驶 |
4706 | 驾驶中型以上载客汽车在高速公路上行驶超过规定时速20％以上未达50%的 | 超速行驶 |
4707 | 驾驶中型以上载货汽车在高速公路上行驶超过规定时速20％以上未达50%的 | 超速行驶 |
1018 | 机动车不在机动车道内行驶的 | 机占非 |
1019 | 机动车违反规定使用专用车道的 | 占用专用车道 |
1039 | 机动车未在规定地点停放 | 城市违停 |
1208 | 机动车通过有灯控路口时，不按所需行进方向驶入导向车道的 | 不按导向车道行驶 |
1211 | 通过路口遇停止信号时，停在停止线以内或路口内的 | 路口停车 |
1228 | 路口遇有交通阻塞时未依次等候的 | 路口滞留 |
1240 | 驾驶人未按规定使用安全带的 | 未系安全带 |
1301 | 机动车逆向行驶的 | 逆行 |
1344 | 机动车违反禁令标志指示的 | 违反禁令标志 |
1357 | 遇行人正在通过人行横道时未停车让行的 | 未礼让行人 |
1625 | 驾驶机动车违反道路交通信号灯通行的 | 违反信号灯 |
4306 | 驾驶机动车在高速公路上正常情况下行驶速度低于规定最低时速20%以上的 | 低速行驶 |
4613 | 高速公路违法停车 | 违法停车 |
4615 | 低能见度气象条件下，驾驶机动车在高速公路上不按规定行驶的 | 不按规定行驶 |
4701 | 违法倒车 | 违法倒车 |
13451 | 机动车违反禁止标线指示的 | 压线 |
13453 | 机动车违反禁止标线指示的 | 违法变道 |
16251 | 信号灯为绿灯信号时，车辆未通过路口停车 | 绿灯停车 |
4016 | 驾驶机动车在高速公路上行驶低于规定时速20%以下的 | 低速行驶 | 行政处罚：警告
6046 | 驾驶机动车在限速低于60公里/小时的公路上超过规定车速50%以下的 | 超速行驶
6047 | 驾驶中型以上载客汽车在高速公路、城市快速路以外的道路上超过规定时速10%以下的 | 超速行驶
6048 | 驾驶中型以上载货汽车在高速公路、城市快速路以外的道路上超过规定时速10%以下的 | 超速行驶
6050 | 驾驶中型以上载客载货汽车、危险物品运输车辆以外的机动车超过规定时速10%以下的 | 超速行驶

Remarks

1）对道路设置属性：
高速公路/城市快速路/其他道路；

2）基于车型识别区分车辆类型：
黄牌货车=中型以上载货车；
黄牌客车=中型以上载客车；
校车暂不能识别，归类为客车；
危险品车辆暂不能识别，归类为货车；
其他车辆=“中型以上载客载货汽车、校车、危险物品运输车辆以外的”